cpu有哪些功能?
对应这些功能都设计了什么结构?
cpu功能:
指令控制 : 存取指令,分析指令,执行指令
操作控制 : 操作信号的送达
时间控制 :
数据加工 : 数据加工 逻辑运算
中断处理 :中断处理
算术逻辑单元 ALU : 数据的运算
通用寄存器组:存放操作数 , 或者被指定成其他功能寄存器 // 简化写成R0,R1,R2
ACC累加器
PSW程序状态字寄存器:存放六个标志位
移位器
每个寄存器都与ALU相连 - 专用数据通路方式
存在问题: 使用导线,相当于多个寄存器同时和ALU交换数据,并且一直传输,很容易造成错乱
所有寄存器输出端和出入端都连接到一条公路上
缺点:容易造成数据冲突
因为不能让A和B都输入同样的数据,所以加入暂存寄存器,形成一种时间差
暂存寄存器: 也用于暂存来自主存的数据,避免数据存入通用寄存器破坏原有数据
运算的结果也输出到数据总线中,
这个时候增加一个暂存寄存器避免输出结果对原有输入的干扰和破坏
取指令: 存储器中取出指令
分析指令: 分析这个指令是要干啥,并找到对应数据的地址
执行指令: 根据指令调用运算器,存储器 I/O设备
终端管理
取指令: 从存储器中取出指令*, 自动发出取指令命令
分析指令: 分析指令要完成什么操作 - 操作码译码
分析参与这次操作的操作数地址
执行指令: 根据操作命令和操作数地址,形成操作信号控制序列
控制运算器,存储器,I/O设备完成响应的操作
指令周期 = 取指周期 + 执行周期
取指: 取指令和分析指令
时钟周期: 一个上下,基本单位,节拍 - 机器周期的基本单位
机器周期包含若干时钟周期
指令周期包含若干机器周期
指令周期 > 机器周期 > 时钟周期
指令周期的机器周期 数可以不同
取指周期 = n个机器指令
执行周期 = m个机器指令
间址周期 = x个机器指令 - 去主存中找数据的行为
主要强调不同阶段的序列
IR 存储最终结果
PC :下一指令地址 常+1
CU 控制单元
MAR : 数据地址
MDR: 数据
信息从哪里开始 ?经过哪些部件 ?最后传到哪里?
数据通路是怎么建立的 : 控制组件的控制信号
内部总线: CPU连接各寄存器以及运算单元的总线
系统总线:CPU,内存,和各类I/O接口的总线
R0寄存器存的是数据 , (R0) R0存的是地址
ADD (R0) , R1
从R0中取地址,该地址的数据 + R1存的数据 然后存入R0中
更容易理解,没有总线,根据数据流向设计电路图
C0C1C2… C4是译码,一般默认自动完成
() 等价于 解引用 *
控制器是如何指挥整个系统工作的?
怎么样判别,地址总线是访问CPU内存的 还是 输入输出设备的(I/O设备)?
地址总线(接收信号): CPU和I/O设备通过地址总线接收地址信息
控制总线(接收信号): CPU内存和I/O设备都是通过控制总线得到控制信号
数据总线(双向): CPU 内存和I/O设备交换数据
接口: I/O设备通过接口 与 总线相连
微操作先后顺序不更改
被控对象不同尽量在同一节拍内完成操作
占时间短的微操作尽量在同一个节拍内完成
控制指令事先存好,放到控制存储器中,按照取指的方法使用对应的控制指令
电路设计不可更改,∴引入了微程序
微命令 : 控制信号 (微指令)
相容性微命令 / 互斥性微命令
微操作: 微命令的执行过程
微程序 :多个微指令
机器指令 对应 一个微程序 对应 多个微指令
微指令的最后一条指令 对应的 位地址码字段 对应取指周期的第一条微指令
间址周期的最后 跳转到执行周期
执行周期的最后 跳转到取指周期
n个机器指令 , 最少需要n+1个微程序 , 至少存在一个公共的取指周期微程序
本质是 并行工作 :最大程度的调用硬件资源,使其不空闲
为什么引入流水线的结构 - 为了提升CPU工作效率
有哪些结构?
会产生什么问题?
k: 一个任务划分k个阶段
△t : 每个任务时间需要△t时间完成
首部 k△t + 尾部(n-1)△t
锁存器 = 缓冲寄存器,用来缓存每一段流水的数据
fetch v取,拿来
decode v 解码 破译
EXecute v 处理,执行 处决
memory n 记忆,存储
writeback v 回写,写回
本质矛盾:
调用了相同的硬件资源
解决办法:
这一条指令的输入是上一条指令输出的结果
上一条指令没有结果,就会造成下一条指令的冲突
解决办法:
按序发射,按序完成 : 不能改变顺序
转发技术 : 数据旁路技术
同一寄存器的读和写不能在同一时间周期内完成 : 没有采用多个寄存器 , 多个硬件资源
补充:
RAW 倒着看 写后读 冲突