`
小杨学JAVA
  • 浏览: 900727 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

寄存器和内存的关系

 
阅读更多

转:http://blog.sina.com.cn/s/blog_53542b7101009qdr.html

中央处理器(CPU)由两个主要部分———控制器及运算器组成。其中程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器等组成了控制器。它是对计算机发布命令的“决策机构”,协调和指挥整个计算机系统的操作,因此,它处于CPU中极其重要的位置。

 

在CPU中,除算术逻辑单元(ALU)及累加器外,尚有下列逻辑部件:

 

(1)缓冲寄存器(DR)

缓冲寄存器用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在这里。缓冲寄存器的作用是:①作为CPU和内存、外部设备之间信息传送的中转站;②补偿CPU和内存、外部设备之间在操作速度上的差别;

③在单累加器结构的运算器中,缓冲寄存器还可兼作为操作数寄存器。

 

(2)指令寄存器(IR)指令寄存器用来保存当前正在执行的一条指令。指令划分为操作码和地址码字段,它们由二进制数字组成。为执行任何给定的指令,必须对操作码进行译码,以便指出所要求的操作。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发生具体操作的特定信号。

 

(3)程序计数器(PC)

为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器(PC)正是起到这种作用,所以通常又称其为指令计数器。

 

(4)地址寄存器(AR)

地址寄存器用来保存当前CPU所要访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。

 

(5)累加寄存器(AC)

累加寄存器AC通常简称为累加器。它的功能是:当运算器的算术/逻辑单元(ALU)执行全部算术和逻辑运算时,为ALU提供一个工作区。例如,在执行一个加法前,先将一个操作数暂时存放在AC中,再从存放中取出另一个操作数,然后同AC的内容相加,所得结果送回AC中,而AC中原有的内容随即被破坏。顾名思义,累加寄存器用来暂时存放ALU运算的结果信息。显然,运算器中至少要有一个累加器寄存器。

由于运算器的结构不同,可采用多个累加寄存器。

 

(6)状态寄存器(SR)

状态寄存器保存由算术指令和逻辑指令运行或测试结果建立的各种状态码内容。

 

(7)操作控制器

操作控制器的功能,就是根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。

根据设计方法不同,操作控制器可分为组合逻辑型、存储逻辑型、组合逻辑与存储逻辑结合型三种。第一种称为常规控制器,它是采用组合逻辑技术来实现的;第二种称为微程序控制器,它是采用存储逻辑来实现的;第三种称为PLA控制器,它是吸收前两种的设计思想来实现的。

 

(8)时序产生器

CPU中除了操作控制器外,还必须有时序产生器,因为计算机高速地进行工作,每一动作的时间是非常严格的,不能有任何差错。时序产生器的作用,就是对各种操作实施时间上的控制。

 

2.控制器的组成

运算器包括ALU、累加器、数据缓冲寄存器和状态寄存器,而控制器的核心是操作控制器,围绕它的有程序计数器(PC)、指令寄存器(IR)、指令译码器(ID)和时序产生器。

 

一、CPU的内核

从结构上讲CPU内核分为两部分:运算器和控制器。

 

(一) 运算器

 

1、 算术逻辑运算单元ALU(Arithmetic and Logic Unit)

 

ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。在某些CPU中还有专门用于处理移位操作的移位器。

 

通常ALU由两个输入端和一个输出端。整数单元有时也称为IEU(Integer Execution Unit)。我们通常所说的“CPU是XX位的”就是指ALU所能处理的数据的位数。

 

2、 浮点运算单元FPU(Floating Point Unit)

 

FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。

 

3、 通用寄存器组

 

通用寄存器组是一组最快的存储器,用来保存参加运算的操作数和中间结果。

 

对于x86指令集只支持8个通用寄存器的缺点,Intel最新CPU采用了一种叫做“寄存器重命名”的技术,这种技术使x86CPU的寄存器可以突破8个的限制,达到32个甚至更多。

 

4、 专用寄存器

 

专用寄存器通常是一些状态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。

(二) 控制器

 

运算器只能完成运算,而控制器用于控制着整个CPU的工作。

 

1、 指令控制器

 

指令控制器是控制器中相当重要的部分,它要完成取指令、分析指令等操作,然后交给执行单元(ALU或FPU)来执行,同时还要形成下一条指令的地址。

 

2、 时序控制器

 

时序控制器的作用是为每条指令按时间顺序提供控制信号。时序控制器包括时钟发生器和倍频定义单元,其中时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,就是CPU的主频;而倍频定义单元则定义了CPU主频是存储器频率(总线频率)的几倍。

 

3、 总线控制器

 

总线控制器主要用于控制CPU的内外部总线,包括地址总线、数据总线、控制总线等等。

 

4、中断控制器

 

中断控制器用于控制各种各样的中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。

二、CPU的外核

 

1、解码器(Decode Unit)

 

这是x86CPU特有的设备,它的作用是把长度不定的x86指令转换为长度固定的指令,并交由内核处理。解码分为硬件解码和微解码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。好在这些复杂指令很少会用到。

 

2、一级缓存和二级缓存(Cache)

 

一级缓存和二级缓存是为了缓解较快的CPU与较慢的存储器之间的矛盾而产生的,以及缓存通常集成在CPU内核,而二级缓存则是以OnDie或OnBoard的方式以较快于存储器的速度运行。对于一些大数据交换量的工作,CPU的Cache显得尤为重要。

 

三、指令系统

 

要讲CPU,还要了解一下指令系统。指令系统指的是一个CPU所能够处理的全部指令的集合,是一个CPU的根本属性,因为指令系统决定了一个CPU能够运行什么样的程序。我们常说的CPU都是X86系列及兼容CPU ,所谓X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天的Pentium4系列,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源(如Windows系列),Intel公司所生产的所有CPU仍然继续使用X86指令集。 另外除Intel 公司之外,AMD和Cyrix等厂家也相继生产出能使用X86指令集的CPU,由于这些CPU能运行所有的为Intel CPU所开发的各种软件,所以电脑业内人士就将这些CPU列为Intel的CPU兼容产品。

 

四、CPU主要技术浅析

 

1、流水线技术

 

流水线(pipeline)是 InteI首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5~6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5~6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,从而提高了CPU的运算速度。

 

2、超流水线和超标量技术

 

超流水线是指某些CPU内部的流水线超过通常的5~6步以上,例如Intel Pentium 4的流水线就长达20步。将流水线设计的步(级)数越多,其完成一条指令的速度越快,因此才能适应工作主频更高的CPU。超标量(supe rscalar)是指在 CPU中有一条以上的流水线,并且每时钟周期内可以完成一条以上的指令,这种设计就叫超标量技术。

 

3、乱序执行技术

 

乱序执行(out-of-orderexecution)是指CPU采用了允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。比方说程序某一段有7条指令,此时CPU将根据各单元电路的空闹状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令立即发送给相应电路执行。当然在各单元不按规定顺序执行完指令后还必须由相应电路再将运算结果重新按原来程序指定的指令顺序排列后才能返回程序。这种将各条指令不按顺序拆散后执行的运行方式就叫乱序执行(也有叫错序执行)技术。采用乱序执行技术的目的是为了使CPU内部电路满负荷运转并相应提高了CP U的运行程序的速度。

 

4、分技预溯和推测执行技术

 

分枝预测(branch prediction)和推测执行(speculatlon execution) 是CPU动态执行技术中的主要内容,动态执行是目前CPU主要采用的先进技术之一。采用分枝预测和动态执行的主要目的是为了提高CPU的运算速度。推测执行是依托于分枝预测基础上的,在分枝预测程序是否分枝后所进行的处理也就是推测执行.

5、指令特殊扩展技术

 

自最简单的计算机开始,指令序列便能取得运算对象,并对它们执行计算。对大多数计算机而言,这些指令同时只能执行一次计算。如需完成一些并行操作,就要连续执行多次计算。此类计算机采用的是“单指令单数据”(SISD)处理器。在介绍CPU性能中还经常提到“扩展指令”或“特殊扩展”一说,这都是指该CPU是否具有对X86指令集进行指令扩展而言。扩展指令中最早出现的是InteI公司的“MMX”,然后是Pentium III中的“SSE”,以及现在Pentium 4中的SSE2指令集。

 

五、CPU的构架和封装方式

(一) CPU的构架

 

CPU架构是按CPU的安装插座类型和规格确定的。目前常用的CPU按其安装插座规范可分为Socket x和Slot x两大架构。

 

以Intel处理器为例,Socket 架构的CPU中分为Socket 370、Socket 423和Socket 478三种,分别对应Intel PIII/Celeron处理器、P4 Socket 423处理器和P4 Socket 478处理器。Slot x架构的CPU中可分为Slot 1、Slot 2两种,分别使用对应规格的Slot槽进行安装。其中Slot 1是早期Intel PII、PIII和Celeron处理器采取的构架方式,Slot 2是尺寸较大的插槽,专门用于安装PⅡ和P Ⅲ序列中的Xeon。Xeon是一种专用于工作组服务器上的CPU。

 

(二) CPU的封装方式

所谓封装是指安装半导体集成电路芯片用的外壳,通过芯片上的接点用导线连接到封装外壳的引脚上,这些引脚又通过印刷电路板上的插槽与其他器件相连接。它起着安装、固定、密封、保护芯片及增强电热性能等方面的作用。

 

CPU的封装方式取决于CPU安装形式,通常采用Socket插座安装的CPU使用PGA(栅格阵列)的形式进行封装,而采用Slot X槽安装的CPU则全部采用SEC(单边接插盒)的形式进行封装。

 

1. PGA(Pin Grid Arrax)引脚网格阵列封装

目前CPU的封装方式基本上是采用PGA封装,在芯片下方围着多层方阵形的插针,每个方阵形插针是沿芯片的四周,间隔一定距离进行排列的。它的引脚看上去呈针状,是用插件的方式和电路板相结合。安装时,将芯片插入专门的PGA插座。PGA封装具有插拔操作更方便,可靠性高的优点,缺点是耗电量较大。PGA也衍生出多种封装方式,最早的PGA封装适用于Intel Pentium、Intel Pentium PRO和Cxrix/IBM 6x86处理器; CPGA(Ceramic Pin Grid Arrax,陶瓷针形栅格阵列)封装,适用于Intel Pentium MMX、AMD K6、AMD K6-2、AMD K6 Ⅲ、VIA Cxrix Ⅲ处理器;PPGA(Plastic Pin Grid Arrax,塑料针状矩阵)封装,适用于Intel Celeron处理器(Socket 370);FC-PGA(Flip Chip Pin Grid Arrax,反转芯片针脚栅格阵列)封装,适用于Coppermine系列Pentium Ⅲ、Celeron Ⅱ和Pentium4处理器。

 

2. SEC(单边接插卡盒)封装

Slot X架构的CPU不再用陶瓷封装,而是采用了一块带金属外壳的印刷电路板,该印刷电路板集成了处理器部件。SEC卡的塑料封装外壳称为SEC(Single Edgecontact Cartridge)单边接插卡盒。这种SEC卡设计是插到Slot X(尺寸大约相当于一个ISA插槽那么大)插槽中。所有的Slot X主板都有一个由两个塑料支架组成的固定机构,一个SEC卡可以从两个塑料支架之间插入Slot X槽中。

 

其中,Intel Celeron处理器(Slot 1)是采用(SEPP)单边处理器封装;Intel的PentiumⅡ是采用SECC(Single Edge Contact Connector,单边接触连接)的封装;Intel的PentiumⅢ是采用SECC2封装

分享到:
评论

相关推荐

    汇编基础有关寄存器和数据传送指令

    5. **取段寄存器指令**:用于从内存中读取低字并存入16位寄存器,高字存入对应的段寄存器,如DS、ES、CS和SS。 汇编语言中的寄存器和数据传送指令是程序员控制计算机硬件执行任务的关键工具。理解这些概念对于编写...

    汇编语言教程-段寄存器的说明语句

    在汇编语言的程序中,可以通过定义多个内存段,并与段寄存器建立对应关系来操作不同的数据和代码。要建立这种对应关系,我们需要使用ASSUME语句。ASSUME语句用于指定某个段寄存器指向一个特定的段名。它的基本格式...

    原子例程-寄存器

    由于访问寄存器的速度远高于访问内存,所以在设计原子例程时,尽可能地将关键数据存储在寄存器中可以提高执行效率。 原子操作通常包括读取、修改和写回寄存器的过程。在多核或多处理器系统中,为了确保多个处理器对...

    计算机软考初级程序员-计算机基础-CPU-寄存器

    五、寄存器和Cache的关系 寄存器和Cache都是CPU中的高速存储组件,但是它们的作用不同。寄存器是CPU内部的一种高速存储单元,而Cache是 CPU和内存之间的一层高速缓存。寄存器和Cache的访问速度顺序为:寄存器→...

    wince 中的寄存器读写程序

    在Windows CE(简称WinCE)操作...总的来说,WinCE中的寄存器读写涉及了驱动开发、注册表配置、API调用和内存映射等多个层面。MEMMgr.exe这样的工具则为开发者提供了一个方便的界面,简化了这一过程,提高了开发效率。

    图染色法寄存器分配

    - **最小化被抛出代码**:由于寄存器资源有限,有时不得不将部分数据暂存至内存中,增加了额外的加载和存储指令,从而影响代码质量和执行效率。优秀的染色算法与充足的寄存器资源有助于减少这种情况的发生。 #### ...

    STM32L152寄存器手册

    由于提供的内容是STM32L152寄存器手册的一部分,因此需要根据给定的描述、标签和部分内容生成关于STM32L152微控制器的技术知识点。 1. STM32L152微控制器概述: STM32L152属于STM32L系列,是一组基于ARM® Cortex®...

    STM8S和STM8AF寄存器描述中文

    CPU寄存器包括了状态寄存器、指令指针寄存器等,这些寄存器的描述和映射关系对于理解和编程STM8S至关重要。全局配置寄存器(CFG_GCR)是一个重要的寄存器,它可以设置系统的工作模式,如激活级别、禁用写入中断标志...

    Compiler-Register-Allocator-master_寄存器分配C图着色_warm7a5_

    为了优化,算法可能还包含冲突解决策略、 spilled(将寄存器中的变量存储回内存)和reload(重新从内存加载到寄存器)的处理等。 在实际应用中,编译器会根据变量的使用频率、生存期等信息来决定哪些变量更值得分配...

    Exynos4412特殊功能寄存器的封装

    这种方式更利于管理和理解一组相关寄存器的功能和关系。 在实际应用中,封装后的SFR可以通过以下方式使用: - 对于一对一宏定义封装,我们可以直接对`GPA0CON`赋值或读取,例如设置GPIO引脚功能:`GPA0CON = (GPA0...

    cj125a手册 内部含详细的寄存器说明

    1. 寄存器概述:CJ125A中的寄存器分为通用寄存器和专用寄存器两大类。通用寄存器可以用于存储各种类型的数据,而专用寄存器则有特定的功能,如控制寄存器、状态寄存器等,它们负责管理和监测CPU的操作状态。 2. ...

    微机系统与接口:第四章 半导体存储器.ppt

    寄存器、内存和外存之间存在一定的关系,寄存器可以访问内存和外存,内存可以访问外存。 五、寄存器、内存、外存的关系 寄存器、内存和外存是微机系统中的三个重要组件。寄存器是微机系统中的高速存储器,内存是...

    Stm32寄存器与库函数概览(摘自固件库使用手册

    三、STM32库函数与寄存器的关系 库函数通常是在寄存器操作的基础上封装的。例如,当调用HAL_GPIO_WritePin()函数写入GPIO引脚时,函数内部会通过指针直接操作相应的GPIO寄存器,完成数据的写入。这样做的好处是代码...

    基于STM32F407单片机(寄存器版)实验例程源码之-D 内存管理实验.rar

    理解这种映射关系能帮助我们有效地访问和控制硬件资源。 3. **堆与栈**:在C语言编程中,内存分为堆和栈两部分。栈用于存储局部变量和函数调用信息,由编译器自动管理;而堆则用于动态内存分配,由程序员手动管理。...

    程序分析与优化 - 8 寄存器分配.doc

    8.1.3 寄存器分配与生命周期管理的关系:最小寄存器需求应等于最大生命周期变量集合。然而,分配策略需要考虑变量的生命周期和使用频率,以确保最少的寄存器转移和指令插入。 8.1.4 寄存器分配问题的复杂性:由于其...

    《汇编语言》 第2章 寄存器(CPU工作原理).ppt

    本资源摘要信息涵盖了汇编语言第2章寄存器(CPU工作原理)的知识点,涉及寄存器的基本概念、寄存器的类型、寄存器的存储结构、寄存器的应用、CPU的工作原理、物理地址的概念、段地址和偏移地址的关系等内容。...

    PCI配置寄存器读写Winows驱动及测试用应用程

    3. **PCI配置寄存器读写**:在Windows中,通常使用`IoInvalidateDeviceRelations`和`IoReadConfigSpace` / `IoWriteConfigSpace` API来刷新设备关系并读写配置寄存器。这些API会处理底层的总线主控和总线事务,使得...

    指令系统和寄存器组

    - 其他信号如`FSTC`和`FCLC`设置进位标志,`MAREN`和`MAROE`管理地址寄存器(MAR)和地址总线的关系,`RRD`和`RWR`处理寄存器组的读写等。 4. **指令执行流程**: - 取指令是所有指令执行的起点,由PC提供地址,...

    计算机组成原理逻辑门和数字电路寄存器和存储器CPUISA流水线处理中断和异常处理.zip

    计算机组成原理是理解计算机系统运行基础的关键领域,它涵盖了从基本的逻辑门到复杂的处理器设计,以及内存系统和中断处理等多个方面。以下是这些主题的详细解释: 1. **逻辑门**:逻辑门是数字电子学的基础,它们...

    C语言和内存(极其重要)1

    内存按照速度和容量分为不同的层次:CPU寄存器、高速缓存(L1、L2、L3缓存)和主内存。寄存器是最快的存储部件,但容量有限,通常用于存储运算中的临时数据和指令指针。例如,EIP寄存器记录下一条要执行的指令地址,...

Global site tag (gtag.js) - Google Analytics