目录
CPU内部结构,以模型机为例:
一、运算部件
结构图:
运算部件以算术逻辑运算部件(ALU)为核心,还包括输入逻辑和输出逻辑:
- 输入逻辑:ALU输入端设置两个多路选择器,它们都具有8选1功能,选择数据来源。
- 输出逻辑:ALU输出端设置一个移位器,其逻辑结构也是一个多路选择器。
运算部件的设置
- 只设置一个ALU,因而通过硬件只能实现基本的定点加、减运算和逻辑运算,依靠软件子程序实现定点乘除运算、浮点运算;
- 设置一个ALU,同时在硬件级实现定点乘除运算,如设置专门的阵列乘法器和除法器;
- 设置一个ALU,并将定点乘除部件和浮点部件作为基本配置;
- 设置多个运算部件,以实现流水处理,完成复杂的运算操作。
二、CPU内部的数据通路结构
1. 单组内总线、分立寄存器结构
ALU只能把数据送入CPU内部总线中,ALU的数据来源由寄存器组提供。
实际问题:
- 选择哪个寄存器的数据 —— 多路选择器
- 运算结果存入哪个寄存器中 —— 只对需要的寄存器发出上升沿脉冲
2. 单组内总线、集成寄存器结构
用译码器来选择需要的寄存器。
3. 多组内总线结构
CPU内部设置多组总线,用于传输不同类别的信息,比如:地址、数据、指令信息等分别用不同的总线进行传送。
如 Pentium 处理器的内部结构:
三、寄存器组
1. 通用寄存器组
- 这类寄存器具有提供操作数、存放运算结果、作地址指针、作计数器、作变址寄存器等多种功能,故称为通用寄存器。
- 是可编程访问的寄存器,在指令系统中为这组寄存器分配了各自的编号。
有编号我们才能编程访问,但是有些有编号的寄存器我们仍然是不能访问的(专用寄存器)。
2. 程序计数器PC
程序计数器(PC)又称指令计数器或指令指针,用来指示指令在存储器中的存放位置。
- 当程序顺序执行时,从主存取出一条指令后PC内容将增量计数,PC指向下一条指令。
- 当程序进行转移时,将转移地址送入PC,PC指向新指令。
因此,当现行指令执行完时,PC中存放的总是 后续指令/下一条指令的地址。
教材P109:CPU在主存中取指令时,每读取一次主存,PC的内容会自动加 n,以便在指令执行结束后,PC刚好能指向下一条指令。这里的 n 的取值是多少,完全取决于指令的长度和存储器的编址单元。如果指令字长 32 位,存储器按字节编址,那么 1 条指令将占用 4 个存储单元,此时 n = 4。
3. 程序状态字寄存器PSW
功能:记录现行程序的运行状态和指示程序的工作方式。
又称标志位,用来反映当前程序的执行状态。指令执行后,CPU根据执行结果设置相应的特征位,作为决定程序流向的判断依据,常见有5种。另有编程设定位。
PSW中某些位或字段由CPU编程设定,以决定程序的调试、对中断的响应、程序的工作方式等。
4. 堆栈指针SP
在主存储器中划出一段区间作为堆栈区,这是一种按“后进先出”的存取顺序进行存储的结构。
- 作为起点的一端是固定的,称为栈底;浮动端称为栈顶。
- 设置一个具有加减计数功能的寄存器作为堆栈指针 SP,SP 中的内容就是栈顶单元地址。
采用自底向上的存储模式:
压栈:SP = SP - 1,存入数据
出栈:读取数据,SP = SP + 1
当存储单元位宽与操作数字长相同时才是 +1 和 -1。
5. 暂存器C和D
设置暂存器的目的是暂存某些中间过程产生的信息。
与通用寄存器不同,暂存器没有编号,,只能是CPU内部专用。
不能被编程访问:防止数据被覆盖从而导致数据丢失。
模型机中,在需要暂存时:
- 若从主存或者I/O端口中读取源操作数地址或者源操作数,则使用暂存器C。
- 若从主存或者I/O端口中读取目的操作数地址或者目的操作数,则使用暂存器D。
因为寄存器R0和R1在CPU内部,所以不需要暂存。
因为是寄存器间接寻址,会访问主存,所以需要暂存。
6. 指令寄存器IR
指令寄存器IR用于存放正在执行的指令,它的输出内容包括操作码信息、地址码信息等,是产生微命令(控制信号)的主要逻辑依据。
- IR里面存放的不是指令的地址,而是指令本身。
- 指令放入IR后,由控制器进行译码。
7. 地址寄存器MAR
CPU访问主存时,首先要找到需要访问的存储单元,因此设置地址寄存器来存放被访问单元的地址。
工作示意图:
注:地址总线、数据总线、控制总线都在CPU外部。
8. 数据缓冲寄存器MDR
数据缓冲寄存器MDR用于存放CPU与主存之间交换的数据。无论是从主存读出的数据,还是写入主存的数据,都要经过MDR。
“无论是从主存读出的数据,还是写入主存的数据,都要经过MDR。”
这是设计时约定的,对于数据的读写,数据总线DB只与MDR相连。
工作示意图:
R —— 读指令、W —— 写指令
四、控制器
控制部件的功能主要是负责对指令进行译码,并且发出为完成每条指令所要执行的各种操作的控制信号 —— 微命令。
根据指令产生相应的控制信号。
CPU工作过程中所需的控制信号,既可以单独由组合逻辑电路的方式来产生,也可以单独由微程序的方式来产生,或者综合运用。
因此,有两种控制部件:组合逻辑控制器和微程序控制器。
组合逻辑控制器示例:
EN给低电平 —— 线路导通
EN给高电平 —— 线路中断(高阻)
组合逻辑控制器是由纯硬件实现的。
五、时序系统
1. 指令周期
CPU每取出一条指令并执行这条指令,都要完成一系列的操作。这一系列操作所需要的时间通常叫做一个指令周期。而指令周期是取出一条指令并执行完这条指令的时间。由于各条指令的操作功能不同,因此各种指令的指令周期是不尽相同的。
指令周期:是指取出一条指令并执行完这条指令的时间。
2. 节拍/时钟周期
一个指令周期包含许多长度固定的时间段,一个时间段就是一个节拍,又称时钟周期。
每个节拍完成一步的操作,而这一步操作又由计算机中各执行部件完成的微操作组成。
六、时序控制方式
1. 同步控制
同步控制方式是指各项操作由统一的时序信号进行同步控制,这就意味着各个微操作必须在规定的时间内或固定时刻完成。
特点:
- 时钟周期时间长度固定
- 各步操作的衔接、各部件之间的数据传送受同步时钟严格的定时控制
工作示例:
在第一个上升沿打入地址,等待地址在地址总线上稳定后,再读出数据。
这样做可以适配CPU快、主存慢的情况;CPU内部部件使用的是同步控制,并且由于这些部件速度相近,所以它们之间不需要等待。
2. 异步控制
各项操作按各自不同的需要来安排时间,不受统一时序的控制。
特点:无统一时钟周期划分,各操作间的衔接以及部件之间的信息交换采用应答方式。
工作示例:
应答控制信号 —— CPU有对应的管脚来标定这个状态信号
CPU与外部低速设备之间的交互用异步控制来实现;但是用得少。
3. 扩展同步控制
向同步控制方式中引入应答机制。
T3上升沿不再是读取数据,而是读取应答信号 —— 确认数据是否准备好。如果没有准备好,就等若干个周期(可以是一个也可以是多个),再去读取应答信号。如果准备好了,就读取数据;如果等了很久都没有准备好,那么给出“超时”提醒。
是时钟周期的整数倍。(√)
CPU的工作原理
CPU的工作过程:从主存或缓存中读取指令,将指令放入指令寄存器IR,然后对指令进行译码。把指令分解成一系列的微操作,再发出各种相应的控制命令,控制各功能部件执行相关的操作,从而完成一条指令的执行,实现对应的功能。