CPU组成结构

简介: CPU组成结构

CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元


这三部分由CPU内部总线连接起来。如下图



1. 控制单元

控制单元是整个CPU的指挥控制中心,包括指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)、时序发生器和程序计数器等部件,对协调整个电脑有序工作极为重要。


它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。


1.1 程序计数器(Program Counter,PC):用户可见

又称指令计数器,用来确定下一条指令的地址。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存的那样地址送入PC,因此PC的内容及是从内存提取的第一条指令的地址。


当执行指令时,CPU将自动修改PC内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令是顺序执行,所以修改的过程通才只是简单的对PC加一个1,但是遇到跳转指令时,那么后续的指令地址必须从指令的地址段取得,由跳转指定来规定。


1.2 指令寄存器(Instruction Register,IR):用户不可见

用来保存当前正在执行的指令。当执行一条指令时,先把他从内存取到缓冲寄存器中,然后在传送到指令寄存器


1.3 指令译码器(Instruction Decoder,ID)

分析和执行当前指令的部件。为了执行给定的指令,必须对操作码进行测试,以便识别所要求的操作。操作码一经译码后,即可向操作控制器发出具体的操作的信号。


1.4 操作控制器(Operation Controller,OC)

用来产生各种操作控制信号。CPU内的每个功能部件都完成一定的特定功能。


然而信息怎样才能在各部件之间传送呢?也就是说,数据的流动是由什么部件控制的呢?


通常把许多数字部件之间传送信息的通路称为“数据通路”。信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传到哪个寄存器,都要加以控制。在各寄存器之间建立数据通路的任务,是由称为“操作控制器”的部件来完成的。操作控制器的功能就是根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。


1.5 时序发生器(Timing Generator,TG)

CPU中一个类似“作息时间”的东西,使计算机可以准确、迅速、有条不紊地工作。


机器一旦被启动,即CPU开始取指令并执行指令时,操作控制器就利用定时脉冲的顺序和不同的脉冲间隔,有条理、有节奏地指挥机器的动作,规定在这个脉冲到来时做什么,在那个脉冲到来时又做什么,给计算机各部分提供工作所需的时间标志。


为此,需要采用多级时序体制。


从时间上来说,取指令事件发生在指令周期的第一个CPU周期中,即发生在“取指令”阶段,而取数据事件发生在指令周期的后面几个CPU周期中,即发生在“执行指令”阶段。


从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。由此可见,时间控制对计算机来说是太重要了。


控制器的主要组成部分是微命令形成电路, 以及3个控制寄存器和时序逻辑部件.


●程序状态字(Program Status Word,PSW): 存放结果状态和标志


●程序计数器(Program Counter,PC): 记录下一条指令的内存地址


●指令寄存器(Instruction Register,IR): 寄存正在执行的指令


为了与系统总线交互设置单向地址寄存器AR和双向数据寄存器DR.


CPU为了IO等功能还设置了外部中断INT,直接内存访问(Direct Memory Access,DMA)等部件.

现代CPU通常还集成了高速缓存(Cache)和流水线等组件.


2. 运算单元

是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。由算术运算逻辑单元(ALU)、累加器、数据缓冲寄存器、状态寄存器和通用寄存器组组成,它是数据加工处理部件。


2.1 算术运行单元(Arithmetic Logic Unit,ALU)

实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行整数的二位元的算术运算,如加减乘(不包括整数除法)。


2.2 累加器(Accumulator,ACC)

当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。暂时存放运算结果信息。


目前CPU中的有多达16个、32个、甚至更多的累加器


2.3 数据缓冲寄存器 DR

用来暂时存放由内存读出的指令或数据,反之,当向内存存入指令或数据时,也暂时将它们存放在DR中。


作为CPU和内存及外部设备间信息传送的中专站。


2.4 状态寄存器(PSW):用户可见

保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,如运算结果进位标志、溢出标志,为零标志、为负标志等。


2.5 通用寄存器组:用户可见

通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。


除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。


3. 存储单元

包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。


•采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。


•寄存器组可分为专用寄存器和通用寄存器。


       •专用寄存器的作用是固定的,分别寄存相应的数据。


       •通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。


       以x86为例



通用寄存器分为前加上字母E表示32位寄存器,普通的32位寄存器分为高16位和低16位,低16位通用寄存器有具体名称,分别叫做AX、BX、CX、DX、SI(源指针寄存器)、DI、(目的指针寄存器)、SP 、BP。


关于各寄存器的功能可看:各寄存器功能


4.可见/不可见寄存器

●对所有用户可见:PSW,PC,通用寄存器:

       •PSW (条件转移需要用到,程序员使用CMP指令的时候也需要用到所以是对用户可见)


       •PC (跳转指令需要使用PC+n ,所以对用户可见)


       •通用寄存器 (程序员写指令可以使用到通用寄存器R)


●对所有用户不可见(透明):MAR,MDR,IR,Cache、微程序的结构和功能(辅助cpu工作,所以是透明的)

●应用程序员透明:暂存寄存器、虚拟存储器

●汇编程序员可见:PC

●系统程序员可见:虚拟存储器


5.CPU的运作原理

1.初始化PC


由程序计数器(PC)指定指令在存储器的位置。(程序计数器保存供识别程序位置的数值。换言之,程序计数器记录了CPU在程序里的踪迹)


2.取指令(Fetch)


CPU 从内存中取出下一条要执行的指令。

•程序计数器(PC)寄存器保存着当前指令的地址。

•控制单元发出读取内存请求,并将 PC 中的地址发送给内存控制器。

•内存控制器根据 PC 中的地址,从内存中读取指令,并将其发送给指令寄存器(IR)。

•IR 寄存器暂时存储着已取得的指令,这时程序计数器PC自动加一,从而确定了下一条指令的地址。



3.解码指令(Decode)


CPU 解析取出的指令,确定需要执行的操作和操作数。

•控制单元分析指令的类型和格式,并确定执行所需的操作。

•操作数寻址单元计算出指令中指定的操作数在哪个寄存器或内存位置,并将这些操作数放入相应的寄存器。


4.执行操作(Execute)


根据解码后的指令,CPU 执行相应的操作。

•控制单元根据指令的类型,选择合适的执行单元来处理指令,例如算术逻辑单元(ALU)、浮点运算单元(FPU)等。

•执行单元根据指令要求进行相应的计算、逻辑操作等,并将结果保存到中间寄存器。


例如,要求一个加法运算,算术逻辑单元(ALU,ArithmeTIc Logic Unit)将会连接到一组输入和一组输出。输入提供了要相加的数值,而输出将含有总和的结果。


ALU内含电路系统,易于输出端完成简单的普通运算和逻辑运算(比如加法和位元运算)。如果加法运算产生一个对该CPU处理而言过大的结果,在标志暂存器里可能会设置运算溢出(ArithmeTIc Overflow)标志。


5.访存(Memory Access)


如果指令需要访问内存中的数据,CPU 将在这一步进行内存读取或写入操作。

•控制单元发出内存读写请求,将访存地址和数据发送给内存控制器。

•内存控制器根据请求进行相应的读取或写入操作,并将返回的数据存储到中间寄存器中。


6.写回(Write Back)


如果执行的操作有结果需要写入寄存器或内存,则将结果写回到相应的位置。

•控制单元对于需要将结果写回的指令,将结果从中间寄存器转移到目标寄存器或内存位置。


在其它案例中,运算结果可能写进速度较慢。但容量较大且较便宜的主记忆体中,某些类型的指令会操作程序计数器,而不直接产生结果。


这些一般称作“跳转”(Jumps),并在程式中带来循环行为、条件性执行(透过条件跳转)和函式。许多指令会改变标志暂存器的状态位元。这些标志可用来影响程式行为,由于它们时常显出各种运算结果。例如,以一个“比较”指令判断两个值大小,根据比较结果在标志暂存器上设置一个数值。这个标志可由随后跳转指令来决定程式动向。在执行指令并写回结果之后,程序计数器值会递增,反复整个过程,下一个指令周期正常的提取下一个顺序指令。

7.更新PC


根据指令代码和分支标志,从前面步骤得出的结果,生成下一条指令的地址放到PC里。

目录
相关文章
|
7月前
|
开发者 芯片 内存技术
|
7月前
|
存储 Ruby 内存技术
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
275 1
|
2月前
|
存储 缓存
CPU运算器的工作原理基于其内部结构,通过执行算术和逻辑操作来完成各种任务
CPU运算器的工作原理基于其内部结构,通过执行算术和逻辑操作来完成各种任务
93 3
|
2月前
CPU的工作原理基于其内部结构,通过执行指令来完成各种任务
CPU的工作原理基于其内部结构,通过执行指令来完成各种任务
74 2
|
1月前
|
缓存 Linux
揭秘Linux内核:探索CPU拓扑结构
【10月更文挑战第26天】
52 1
|
1月前
|
缓存 运维 Linux
深入探索Linux内核:CPU拓扑结构探测
【10月更文挑战第18天】在现代计算机系统中,CPU的拓扑结构对性能优化和资源管理至关重要。了解CPU的核心、线程、NUMA节点等信息,可以帮助开发者和系统管理员更好地调优应用程序和系统配置。本文将深入探讨如何在Linux内核中探测CPU拓扑结构,介绍相关工具和方法。
32 0
|
7月前
|
存储
计算机组成原理(5)----CPU的基本结构
计算机组成原理(5)----CPU的基本结构
212 0
|
存储 缓存 编译器
从CPU缓存结构到原子操作-2
从CPU缓存结构到原子操作
132 0
|
存储 缓存 算法
从CPU缓存结构到原子操作-1
从CPU缓存结构到原子操作
161 0
|
存储 缓存 算法
详解微处理器CPU的系统结构
CPU的主要性能参数: 1. CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed)。时钟频率速度是指同步电路中时钟的基础频率,它以“若干次周期每秒”来度量,量度单位采用SI单位赫兹(Hz)。 2. 外频,是CPU外部的工作频率,是由主板提供的基准时钟频率。 3. FSB频率,是连接CPU和主板芯片组中的北桥芯片的前端总线(Front Side Bus)上的数据传输频率。 4. CPU的主频和外频间存在这样的关系:主频=外频×倍频. 指令顺序控制 控制 程序中指令的执行顺序。
691 0
详解微处理器CPU的系统结构