写在前面:
- 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
- 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili
一、CPU(控制器)的功能
1、取指令
控制器必须具备能自动地从存储器中取出指令的功能,为此,要求控制器能自动形成指令的地址,并能发出取指令的命令,将对应此地址的指令取到控制器中。第一条指令的地址可以人为指定,也可由系统设定。
2、分析指令
分析指令包括两部分内容:其一,分析此指令要完成什么操作,即控制器需发出什么操作命令;其二,分析参与这次操作的操作数地址,即操作数的有效地址。
3、执行指令
执行指令就是根据分析指令产生的"操作命令"和"操作数地址"的要求,形成操作控制信号序列(不同的指令有不同的操作控制信号序列),通过对运算器、存储器以及I/O设备的操作,执行每条指令。
4、其它功能
控制器还必须能控制程序的输入和运算结果的输出(即控制主机与I/O设备交换信息)以及对总线的管理,甚至能处理机器运行过程中出现的异常情况(如掉电)和特殊请求(如打印机请求打印一行字符),即处理中断的能力。
总之,CPU必须具有控制程序的顺序执行(称指令控制)、产生完成每条指令所需的控制命令(称操作控制)、对各种操作加以时间上的控制(称时间控制)、对数据进行算术运算和逻辑运算(数据加工)以及处理中断等功能。
二、CPU的结构框图
1、CPU的内部结构
要取指令,必须有一个寄存器专用于存放当前指令的地址;要分析指令,必须有存放当前指令的寄存器和对指令操作码进行译码的部件;要执行指令,必须有个能发出各种操作命令序列的控制部件CU;要完成算术运算和逻辑运算,必须有存放操作数的寄存器和实现算逻运算的部件ALU(ALU部件实际上只对CPU内部寄存器的数据进行操作);为了处理异常情况和特殊请求,还必须有中断系统。可见CPU可由四大部分组成,如下图所示(左图是简图,右图是对左图的细化)。
2、运算器的基本结构
(1)算术逻辑单元:主要功能是进行算术/逻辑运算。
(2)通用寄存器组:如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
(3)暂存寄存器:用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容。(比如两个操作数分别来自主存和,最后结果存回,那么从主存中取来的操作数直接放入暂存器,就不会破坏运算前的内容)
(4)累加寄存器:它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。
(5)程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。
(6)移位器:对运算结果进行移位运算。
(7)计数器:控制乘除运算的操作步数。
3、控制器的基本结构
(1)程序计数器:用于指出下一条指令在主存中的存放地址。CPU就是根据PC的内容去主存中取指令的,因程序中指令(通常)是顺序执行的,所以PC有自增功能。
(2)指令寄存器:用于保存当前正在执行的那条指令。
(3)指令译码器:仅对操作码字段进行译码,问控制器提供特定的操作信号。
(4)微操作信号发生器:根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
(5)时序系统:用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到。
(6)存储器地址寄存器:用于存放所要访问的主存单元的地址。
(7)存储器数据寄存器:用于存放向主存写入的信息或从主存中读出的信息。
三、CPU的寄存器
1、用户可见的寄存器
(1)通常CPU执行机器语言访问的寄存器为用户可见寄存器。
(2)用户可见寄存器分为以下几类:
①通用寄存器:通用寄存器可由程序设计者指定许多功能,可用于存放操作数,也可作为满足某种寻址方式所需的寄存器,例如基址寻址所需的基址寄存器、变址寻址所需的变址寄存器和堆栈寻址所需的栈指针,都可用通用寄存器代替。
②数据寄存器:数据寄存器用于存放操作数,其位数应满足多数数据类型的数值范围,有些机器允许使用两个连读的寄存器存放双倍字长的值。
③地址寄存器:地址寄存器用于存放地址,其本身可以具有通用性,也可用于特殊的寻址方式,如用于基址寻址的段指针(存放基地址)、用于变址寻址的变址寄存器和用于堆栈寻址的栈指针,另外地址寄存器的位数必须足够长,以满足最大的地址范围。
④条件码寄存器:条件码寄存器用于存放条件码,它们对用户来说是部分透明的。条件码是CPU根据运算结果由硬件设置的位,例如算术运算会产生正、负、零或溢出等结果。条件码可被测试,作为分支运算的依据。此外,有些条件码也可被设置,例如,对于最高位进位标志C,可用指令对它置位和复位。将条件码放到一个或多个寄存器中,就构成了条件码寄存器。
2、控制和状态寄存器
(1)CPU中还有一类寄存器用于控制CPU的操作或运算,在一些机器里,大部分这类寄存器对用户是透明的(即用户不可见)。
(2)如以下四种寄存器在指令执行过程中起重要作用:
①MAR:存储器地址寄存器,用于存放将被访问的存储单元的地址。
②MDR:存储器数据寄存器,用于存放欲存入存储器中的数据或最近从存储器中读出的数据。
③PC:程序计数器,存放现行指令的地址,通常具有计数功能,当遇到转移类指令时PC的值可被修改。(PC寄存器对用户可见)
④IR:指令寄存器,存放当前欲执行的指令。
(3)通过上述4个寄存器,CPU和主存可交换信息。例如,将现行指令地址从PC送至MAR,启动存储器做读操作,存储器就可将指定地址单元内的指令读至MDR,再由MDR送至IR。
(4)在CPU内部必须给ALU提供数据,因此ALU必须可直接访问MDR和用户可见寄存器ALU的外围还可以有另一些寄存器,这些寄存器用于ALU的输入输出以及用于和MDR及用户可见寄存器交换数据。
(5)在CPU的控制和状态寄存器中,还有用来存放程序状态字PSW的寄存器,该寄存器用来存放条件码和其它状态信息。在具有中断系统的机器中还有中断标记寄存器。
四、控制单元和中断系统
控制单元(CU)是提供完成计算机全部指令操作的微操作命令序列部件。现代计算机中微操作命令序列的形成方法有两种:一种是组合逻辑设计方法,为硬连线逻辑;另一种是微程序设计方法,为存储逻辑。
中断系统主要用于处理计算机的各种中断。