CPU

  1. I instruction
  2. A address
  3. R register
  4. D data
  5. C counter
  6. P program
  7. S status
  8. 状态寄存器 PSW
  9. 操作控制器:建立数据通路,即从哪流向哪,
    1. 时序逻辑型:硬布线控制器,就是通过设计电路硬做
    2. 存储逻辑型:微程序控制器,像程序一样读出一个一个的开关的状态进行操作
  10. 数据通路:寄存器到寄存器,寄存器由时钟控制,而寄存器到寄存器间可能有各种结构,ALU,MEM等等,中间的却不受时间周期影响
  11. 指令周期:取指令到执行完指令的时间
  12. CPU周期:即访问一次内存的时间 主频:CPU周期的倒数
  13. T周期:访问一次寄存器的时间,每一次都可以打开一条数据通路
  14. 取指令必须要占用一次CPU周期
  15. 执行指令则另外花费CPU周期,一个CPU周期可能包含多个T周期,个数不确定
  16. 如mov,add就是1+2T,进dr,然后再进
  17. lad则需要3个,放地址+取
  18. jmp 2个,改
  19. 方框代表cpu周期,菱形:判断,箭头表示方向,虚线表示阶段,每个方框内写内容即T周期内容,最后加上一个波浪线
  20. 时序产生器,告诉CPU处在哪一个CPU或T周期
  21. 硬布线控制器:主状态周期(指令周期)—节拍电位(CPU周期)—节拍脉冲(T周期)
  22. 而微程序控制器只有:节拍电位(CPU周期)—节拍脉冲(T周期)
  23. 产生很多信号,如T1,T2,T3,T4,分别在其对应时间是高电平,如T1,就在第一个T周期高电平
  24. 有一个时钟源(晶振),用来产生固定的频率,环形来产生顺序,从0-》2^n/其他数字,译码译成对应的T,RD和WE是针对存储器的,暂时可以忽略,启停控制逻辑控制什么时候真正开始计数

  1. 控制方式:同步控制(统一的机器周期,不定长(CPU周期不同)机器周期)/异步控制(每个指令爱执行多久执行多久)
  2. 微程序控制器:微指令存放在控制存储器中,微操作有的是相容的,有的是互斥的,即不能同时打开开关,有的是相容的,可以同时打开,必须各占一位?
  3. 一般一条微指令分为两部分,操作和顺序控制字段,控制下面一条执行的微指令
  4. 微命令就是一个开关的10,微操作就是对应这个微命令
  5. 微指令组合起来就是微程序
  6. 顺序控制字段中还包括p1,p2这种可能判断要不要跳转的字段
  7. 微程序控制存储器(μCM),存储微程序,只取里面的操作码,并进行一些地址转移逻辑,并放到微地址寄存器中并传入进行译码,找到这个操作码对应的微程序

在微程序中可能有条件判断,就通过p2来判断,如果满足则跳到后面的地址+1否则+1

  1. 微命令编码
    1. 直接编码:直接表示1和0,开和关,速度最快,但长度最长
    2. 编码表示法:分成若干个小段,每个小段用最短表示法,每个小段里的都是互斥的,最短,但慢
    3. 混合表示
  2. 微地址的形成方法
    1. 入口地址
    2. 计数器,跳转,但假如说有多条分支,就会很慢
    3. 多路转移,当且仅当p1为1,直接通过状态位或寄存器来直接更改微地址寄存器的某几位

微指令格式:

  1. 水平型:一次性打开所有开关,快但长
  2. 垂直型:非一次性,按顺序,可能在一个T周期中,也可能不在,垂直短但慢

现在的都是动态的微程序,而以前是静态的

CPU流水线:

比如,一条指令分成取指(IF),译指(ID),读取(EX),写回(WB),那么就是一个4级流水线,如果没有冲突的话,那么加速比就是四级。

不分更多级是因为会冲突。

冲突

  1. 资源冲突
  2. 数据相关
  3. 控制相关,比如碰到条件,就不知道取哪一个

CPU
https://lhish.github.io/project/hide/CPU/
作者
lhy
发布于
2024年6月30日
许可协议