寄存器分类

image.png

  • 用户:特指编程人员
  • 可见:通过编程语言访问
  • 状态寄存器:没有必要让编程人员访问,也不应该可见
    • 会导致不安全的情况
    • 程序出现漏洞的风险也会增高
    • 指令集的复杂度也会增加,效率降低

用户可见寄存器

image.png
条件码寄存器不是必须的。缺点:硬件复杂性增加

设计出发点

image.png

保存和恢复

image.png

控制和状态寄存器

image.png

PC是可见的

image.png


image.png

设计出发点

image.png

8086

通用寄存器

image.png

段寄存器

image.png

标志寄存器

image.png

指令指针寄存器

image.png

为什么是

微操作

image.png

分组原则

通过放在前后的时间周期内,让时间的流动顺序恰当
对同一个寄存器进行读写,不能放在同一个时间周期内
image.png

取指周期

image.png
t1:数据通过MAR传给地址总线
t2:对应两个微操作

  • 取出指令放到数据总线上
  • PC+”1” 要当心同步、异步 — 发送在同一个时间单位内

每一个t表示一个时间单位,表示微操作发送在哪一个时间单位内。
image.png
调整了pc + 1的位置

间址周期

将间接地址转换成有效地址
image.png

  1. IR中存了取到的指令,将指令中的地址部分放到MAR中
  2. 将地址对应的内容从存储器中放到MBR中
  3. 替换IR的地址部分

执行周期

image.png

  1. 送地址后才能取到内容,所以t1和t2不能合并
  2. t2是写MBRt3是读MBR,所以不能合并

转移并保存:保存PC地址,并跳转到一个新的地址

  1. 将IR中的地址送到MAR中,告诉MAR,PC要存到哪里,该地址是PC要保存到的地址。把PC的内容送到MBR中。这俩个步骤互相独立,可以存放在同一个时间周期内。
  2. 把MBR的内容写到主存中,把新的地址存到PC中。只有PC保存了,才能更新PC;只有写入了MBR,才能继续读MBR
  3. PC+1

中断周期?

image.png
只需要两个时间单位

指令周期代码 ICC

取指、间址、中断周期各有一个微操作序列,执行周期则对于每个操作码有一个微操作序列
image.png

取指周期

image.png

间址周期

image.png

执行周期

image.png

中断周期

image.png

CPU内部总线

image.png

控制器

功能需求

image.png

控制器的输入

操作码影响执行周期
寻址方式影响间址周期
控制器也会收到控制信号:中断请求
image.png

控制器的输出

image.png

控制信号

image.png


image.png(图有点小问题)

控制器的最小特性

image.png
实现上尽可能地简洁

控制器实现

image.png

硬布线实现

控制器输入

时钟、标志、控制总线的输入、指令寄存器

image.png

操作码通过译码器转化为微操作序列

image.png

控制器逻辑

image.png
缺点:太过复杂

微程序实现?

和硬布线实现有什么不同

基本概念和思路

  • 微程序(固件)介于硬件与软件之间
  • 设计固件比设计硬件容易,但写固件程序比软件程序困难·微指令序列
  • 微指令∶每行描述一个时间内出现的一组微操作

基本思路

  • 对于每个微操作,控制器的任务是产生一组控制信号,即控制器发出的每根控制线或开或关(每根控制线由一个二进制数字表示)·构造一个控制字,每位代表一根控制线,这样每个微操作能用控制字中的不同的0和1的样式来表示
  • 将这些控制字串在一起,可以表示控制器需要完成的微操作序列

image.png

微程序执行?

取指、间接、中断的微操作序列是一样的,都可以用相同的微指令** ? 为什么是一样的**
相同的操作码可以用相同的微指令序列
image.png

任务

image.png

定序

下一个指令的地址在哪?
image.png
双地址:指令太长,成本上升
地址选择有不同的方式。

构成

image.png

工作流程??

image.png

下面这张图什么意思?

image.png

  • 操作码在指令寄存器中,需要进行译码器译码

优缺点

image.png

总结

image.png