计算机的控制器
控制器负责协调和控制计算机运行。

程序计数器
主要提供给其他控制单元当前需要执行的指令的地址的。
程序计数器用来存储下一条指令的地址,CPU工作时会循环不断的从程序计数器中拿出指令的地址。当指令被拿出时,程序计数器又会指向下一条指令。
时序发生器
时序发生器属于电气工程领域,主要作用是发送时序脉冲,CPU根据不同的时序脉冲有节奏的进行工作。
指令译码器
指令译码器是控制器的主要部件之一,计算机的指令由操作码和地址码组成,指令译码器负责翻译操作码对应的操作以及控制传输地址码对应的数据。
指令寄存器
指令寄存器是控制器的主要部件之一,主要用于从高速缓存或主存取机器指令
主存地址寄存器
保存当前CPU正要访问的内存单元地址,使用地址总线与主存通信。
主存数据寄存器
保存当前CPU正要读或写的主存数据,使用数据总线与主存通信。
通用寄存器
通用寄存器的容量比一般专用寄存器大,用于 暂时存放或传送 数据或指令。
也可以用于保存算术逻辑单元(ALU)的运算中间结果。
计算机的运算器
运算器主要用来进行数据的运算加工的。

数据缓冲器
分为输入缓冲和输出缓冲
输入缓冲负责暂时存放外设送过来的数据,输出缓冲负责暂时存放送往外设的数据。
ALU算术逻辑单元
ALU是运算器的主要组成,负责完成一些常见的位运算(左右移、与或非)以及一些常见的算术运算(加减乘除)
状态字寄存器
存放运算状态(条件码、进位、溢出、结果正负等)
存放运算控制信息(调试跟踪标记为位、允许中断位)
通用寄存器
通用寄存器的容量比一般专用寄存器大,用于 暂时存放或传送 数据或指令。
也可以用于保存算术逻辑单元(ALU)的运算中间结果。
计算机指令的执行过程
指令的执行过程

取指令
从缓存中取出指令,送到指令寄存器。
分析指令
从指令寄存器中取出指令,送到指令译码器译码,指令译码器发出相关控制信号,程序计数器+1,指向下一条指令的地址。
执行指令
装载数据到寄存器
ALU处理数据记录运算状态
将进位或者溢出记录到状态寄存器中
送出运算结果
CPU的流水线设计
取指令和分析指令主要是由控制器完成,执行指令主要由运算器完成。
运算器和控制器不能同时工作,导致CPU的综合利用率不高。
因此需要改进指令执行的过程来提高CPU的利用率。
改进思路类似于工厂的装配线,工厂的装配线使得多个产品可以同时被加工,在同一个时刻,不同产品均位于不同的加工阶段。
假设CPU是串行执行

使用流水线设计的话

流水线设计的效率
串行执行m条指令: T1 = 3t x m
流水线执行m条指令: T2 = t x (m+2)
H = T2 / T1 = 1/3 + 1/3m m很大时,1/3m就可以忽略不计。
网友评论