1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-06-15 22:46:32 +08:00

Update 4-central-processing-unit.md

This commit is contained in:
Didnelpsun
2021-05-27 23:40:18 +08:00
parent 8c9c484c97
commit edd2e8339d

View File

@@ -330,6 +330,8 @@ CU的设计包括硬布线和微程序两种微程序比较重要硬布线
### 硬布线
微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,即时产生。
#### 设计步骤
1. 分析每个阶段的微操作序列。
@@ -350,6 +352,9 @@ CU的设计包括硬布线和微程序两种微程序比较重要硬布线
2. 尽量安排在一个节拍内完成占用时间较短的微操作。
3. 尽量安排在一个节拍内完成并允许有先后顺序。
4. 电路设计。
1. 列出操作时间表。
2. 写出微操作命令的最简表达式。
3. 画出逻辑图。
#### 指令类别
@@ -367,6 +372,42 @@ CU的设计包括硬布线和微程序两种微程序比较重要硬布线
1. JMPjump无条件转移。
2. BANbranch ACC Negative条件转移。
#### 基本微操作时序
首先对于取址周期,基本上的流程如下:
1. PC→MAR将PC地址交给MAR。
2. 1→R主存发出读命令。只需要存储器空闲就能发出。
3. M(MAR)→MDR将地址指向指令交给MDR。要MAR准备好在1的后面。
4. MDR→IR将指令交给IR。把MDR有指令在3后面。
5. OP(IR)→ID编译指令。IR中要有指令在4后面。
6. (PC)+1→PCPC自加1。因为操作完就可以更新所以在1后面就可以了。
所以没有依赖的可以尽量往前放顺序可以变为123645。
因为12没有相互依赖所以可以都安排在T0时间36在1的后面且36之间用到的设备不一样从而不会冲突所以都安排在T1而4和5时间都较短所以可以都安排在T2。
然后是间址周期:
1. Ad(IR)→MAR获取IR指令中的地址交给MAR。
2. 1→R主存发出读命令。
3. M(MAR)→MDR取出对应的值放到MDR中。
4. MDR→Ad(IR)将MDR的地址值放入IR的指令中。
与取址周期一致2可以跟1一起而34都依赖于1所以12是T03是T14是T2。
执行周期省略最后是中断周期假设中断时要保存的地址为a
1. a→MAR将a保存到MAR中。
2. 1→W主存发出写命令。存储器空闲就可以。
3. 0→EINT硬件关中断。安排在第一个周期就可以。
4. (PC)→MDR将当前程序计数器保存的位置暂存到MDR等待后期恢复。内部数据通路空闲就可以。
5. MDR→M(MAR)将MDR的数据保存到a这个地址。在4之后。
6. 向量地址→PC将PC送到中断服务地址。只用PC改好就可以在4之后。
1、2、3都在T0而456依次为T1、T2、T3。
这些操作由中断隐指令完成。中断隐指令不是一条指令,而是指一条指令的中断周期由硬件完成的一系列操作
### 微程序