
5.1 CPU的功能和基本结构
5.1.1 CPU的功能

- 指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
- 操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPu管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件从而控制这些部件按指令的要求进行动作。
- 时间控制。对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
- 数据加工。对数据进行算术和逻辑运算。
- 中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。
以上功能都是CPU应该具有的功能,相应的分摊到CPU的两个部分。
运算器负责对数据进行加工
控制器负责协调并控制计算机各种部件执行程序的指令序列,基本功能包括取指令,分析指令,执行指令
- 取指令:自动形成指令地址;自动发出取指令的命令。
- 分析指令:操作码译码(分析本条指令要完成什么操作);
产生操作数的有效地址。- 执行指令:根据分析指令得到的“操作命令”和“操作数地址”,
形成操作信号控制序列,控制运算器、存储器以及I/O设备完成相应的操作。- 中断处理:管理总线及输入输出;处理异常情况(如掉电)和特殊请
求(如打印机请求打印一行字符)。
5.1.2 运算器的基本结构
-
算数逻辑单元:主要功能是进行算数逻辑运算
根据传过来的操作指令,对输入数据AB进行运算。(组合逻辑电路)
-
通用寄存器组:如AX、BX、CX、DX、SP等。用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
左边为一般理解上的寄存器组,右边也是寄存器组,知识表示不同,这种表示了解就行AH表示寄存器高字节,AL表示寄存器低字节,AX表示整个寄存器
ALU和GPRs之间的线路控制
数据需要从通用寄存器传输到ALU,每一个寄存器都可能给ALU两个操作数传输数据,因此每一个寄存器都需要和ALU两个操作数取得联系。具体有专用数据通路方式和单总线方式两种。
-
专用数据通路方式:基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现。 具体又有两种实现方式
方法一:使用多路选择器,根据控制信号选哪一个寄存器给ALU传输数据
方式二:使用三态门
每一个寄存器都通过一个三态门链接ALU,每一个三态门上都有一个控制信号,控制线路是否通路(1通),通过每一个信号协同工作就能实现将目标寄存器数据传输到ALU
-
单总线方式:结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低。
将寄存器数据传输都经过CPU内部总线,所以每一个寄存器都和总线有一组读写线,每一个寄存器对应两个读写控制信号,控制该时刻寄存器是否写入,是否读出。
接下来如何将总线数据传输给ALU?
如果是这种模式,那么ALU的两个操作数都是一样的,解决方式是,增加暂存寄存器,先将数据总线的数据存放在暂存寄存器中,接着将另外一个数据传输给B,暂存寄存器传输给A
有时候需要将ALU计算出来的数据写回寄存器,怎么实现?
如果是这样,那么ALU接收完AB两个操作数,由于是组合逻辑电路,ALU直接生成计算结果,返回总线,计算结果沿着总线又到ALU操作数,总线上的数据未来得及写入就被改变了,解决方法是使用暂存寄存器,并且通过三态门控制是否将数据传到总线
常见的累加运算还会再总线上挂上累加寄存器ACC,用于存放ALU运算的结果信息
此外对于ALU计算结果的溢出判断,是否等于零,可以通过程序状态寄存器(PSW)来实现。程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。
并且程序状态寄存器是可以直接访问位的,而其他寄存器则每次只能读取出一个机器字(机器字长:计算机能直接处理的二进制数据的位数),或者说是字节的整数倍。
此外像移位器,可以直接再暂存寄存器上进行功能扩展,也就是移位寄存器。计数器,控制乘除运算的操作步数。
5.1.3 控制器的基本结构
-
程序计数器:用于指出下一条指令在主存中的存放地址。CPU就是根据PC的内容去主存中取指令的。因程序中指令(通常)是顺序执行的,所以PC有自增功能。
-
指令寄存器IR:用于保存当前正在执行的那条指令。分位操作码和地址码。指令由总线传入。地址码需要传回总线进行寻址,操作码传给指令译码器ID
-
指令译码器:仅对操作码字段进行译码,向控制器提供特定的操作信号。传出的信号并非直接传给各个部件,因为部件不仅需要控制内容,还要控制顺序,所以要将移码结果传给位操作信号发生器
-
微操作信号发生器:根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
-
时序系统:用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到。
-
存储器地址寄存器:用于存放所要访问的主存单元的地址。
-
存储器数据寄存器:用于存放向主存写入的信息或从主存中读出的信息。
MAR和MDR是CPU和主存进行交流的中介,属于存储器,单硬件上是寄存器,放在CPU内部
5.1.4 CPU基本结构

可以发现CPU内部都是由寄存器来存储数据,其中橙色部分为用户可见的。而灰色部分则是用户不可见的寄存器,由系统自动完成这些寄存器的读写。
CPU可以看成由这四部分构成(CU为控制系统,中断系统还没有画出)
