CPU的功能
运算器
- 数据加工:对数据进行算术和逻辑运算。
控制器
协调并控制计算机各部件执行程序的指令序列
- 指令控制:完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
- 取指令:自动形成指令地址(PC+1),自动发出取指令的命令。
- 分析指令:操作码译码、产生操作数的有效地址。
- 执行指令:根据分析指令得到的“操作命令”和“操作数地址”,形成操作信号以控制序列,控制运算器、存储器以及I/O设备完成相应的操作。
- 操作控制:一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
- 时间控制:对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
- 中断处理:对计算机运行过程中出现的异常情况(如掉电)和特殊请求(如打印机请求打印一行字符)进行处理。
- 外部设备造成中断处理:用鼠标停止某项下载任务
- 内部指令造成中断处理:在除法中给出的除数为0
运算器的基本结构
-
算术逻辑单元ALU:主要功能是进行算术/逻辑运算。
-
通用寄存器组:用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。
- 如R0、R1、AX、BX、CX、DX、SP等
- 其中AX,BX等都可以向下划分为:高字节部分AH,BH、低字节部分AL,BL
-
堆栈寄存器SP:用于指示栈顶的地址。
-
累加寄存器ACC:它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。
-
程序状态字寄存器PSW:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息。PSW中的这些位参与并决定微操作的形成。
- 如溢出标志(OP)、符号标志(SF:正负标志)、零标志(ZF)、进位标志(CF)等。
-
暂存寄存器
-
移位寄存器:对运算结果进行移位运算
- 之前也可以是个暂存寄存器,增加对运算结果的移位功能—>移位寄存器
-
计数器:控制乘除运算的操作步数
运算器的数据通路方式
1、专用数据通路方式
- 根据指令执行过程中的数据和地址的流动方向安排连接线路。
- 如图,每个寄存器都要与ALU有各自的通路,图中R0和ALU的连线是简化的。
特点
- 性能较高,基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现。
- 为什么说连通复杂?例如当R是16bit的时候,要和A、B分别连16根线,
问:一次可以传入ALU很多数字,但如何选择需要的那个?
如果直接用导线连接,相当于多个寄存器同时并且一直向ALU传输数据
解决方法1:使用多路选择器MUX根据控制信号选择一路输出
- 通过在MUX上选定信号是00、01,来决定选择来自R0、R1寄存器的数据
解决方法2:使用三态门来控制每一条路是否输出
- 图中小三角就是三态门,默认情况下不导通
2、内部单总线方式
- 将所有寄存器的输入端和输出端都连接到一条公共的通路上。
特点
- 结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低。
前提
- 暂存寄存器:用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容
- 如:两个操作数分别来自主存和R0,最后结果存回R0,那么从主存中取来的操作数直接放入暂存器,就不会破坏运算前R0的内容。
举例:ADD R0 R1
如果同时运输2数,无法确定两个分别是哪个
- 让R0out导通 沿着线路A 放到暂存器中
- 让R0out关闭
- 让R1out导通 沿着线路B到ALU
如果在两次连续的计算中 R0给的信号和ALU给的结果产生信号可能冲突,如何解决?——在结果处增加一个暂存寄存器
- ALU计算结果先放在暂存寄存器中,此时,三态门不导通,先存着
- 让 R0out导通,先传输数据,再让暂存寄存器这边导通,就不会再产生矛盾
控制器的基本结构
- 程序计数器PC:用于指出下一条指令在主存中的存放地址。CPU就是根据PC的内容去主存中取指令的。因程序中指令(通常)是顺序执行的,所以PC有自增功能。
- 指令寄存器IR:用于保存当前正在执行的那条指令。
- 控制单元CU:
- 指令译码器ID:仅对操作码字段进行译码,向控制器提供特定的操作信号。
- 微操作信号发生器:根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号。其结构有组合逻辑型和存储逻辑型两种。
- 时序系统:用于产生各种时序信号,它们都是由统一时钟(CLOcK)分频得到。
- 存储器地址寄存器MAR:用于存放所要访问的主存单元的地址。
- 这里得到地址就要去访问
- 存储器数据寄存器MDR:
- MAR与MDR被集成在CU了的
- 这里的E是外部的意思。
- 有无E的区别:是去往外界(数据总线)还是去往CPU内部总线。