mirror of
https://github.com/handsomezhuzhu/2025-yatcpu.git
synced 2026-02-21 04:20:14 +00:00
48 lines
2.1 KiB
Markdown
48 lines
2.1 KiB
Markdown
好~我把(3)和(4)都整理成**流水线时序表**(5 级:IF/ID/EX/M/WB),空白表示该拍无操作。
|
||
|
||
# (3) 指令:
|
||
|
||
I1: LOAD R1,[a]
|
||
I2: LOAD R2,[b]
|
||
I3: ADD R1,R2 (结果写回 R2)
|
||
I4: STORE R2,[x]
|
||
|
||
### 时序表(到 14 拍)
|
||
|
||
| 指令 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
|
||
| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
|
||
| I1 | IF | ID | EX | M | WB | | | | | | | | | |
|
||
| I2 | | IF | ID | EX | M | WB | | | | | | | | |
|
||
| I3 | | | IF | ID | ID | ID | ID | EX | M | WB | | | | |
|
||
| I4 | | | | | | | IF | ID | ID | ID | ID | EX | M | |
|
||
|
||
> 说明:I3 在 ID 等待到 R1@5、R2@6 写回后才在第 7 拍完成读寄存器;I4 受 I3 占据 ID 反压,IF 被阻塞到第 7 拍开始;又因需等 R2@10 写回,ID 等到第 11 拍才读到新 R2,随后 EX→M 结束。
|
||
|
||
---
|
||
|
||
# (4) 指令(提示给定):
|
||
|
||
I1: LOAD R1,[x]
|
||
I2: LOAD R2,[a]
|
||
I3: SHL R1 (x*2)
|
||
I4: ADD R1,R2 (写回 R2)
|
||
I5: STORE R2,[x]
|
||
|
||
### 时序表(到 16 拍)
|
||
|
||
| 指令 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
|
||
| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
|
||
| I1 | IF | ID | EX | M | WB | | | | | | | | | | | |
|
||
| I2 | | IF | ID | EX | M | WB | | | | | | | | | | |
|
||
| I3 | | | IF | ID | ID | ID | EX | M | WB | | | | | | | |
|
||
| I4 | | | | | | | IF | ID | ID | ID | EX | M | WB | | | |
|
||
| I5 | | | | | | | | | | IF | ID | ID | ID | ID | EX | M |
|
||
|
||
* 关键等待:
|
||
|
||
* I3 需等 R1@5 写回,故在 ID 等到第 6 拍读寄存器→7 EX→9 WB;
|
||
* I4 需等 I3 的 R1 在第 9 拍写回,故在第 10 拍读寄存器→11 EX→13 WB;
|
||
* I5 需等 R2 在第 13 拍写回,于第 14 拍读寄存器→15 EX→16 M(STORE 在 M 完成写内存)。
|
||
|
||
如果你想把这两张表导成可打印的 Word/Excel,我也可以直接帮你生成文件。
|