mirror of
https://github.com/handsomezhuzhu/2025-yatcpu.git
synced 2026-02-20 20:10:14 +00:00
2.1 KiB
2.1 KiB
好~我把(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,我也可以直接帮你生成文件。