iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0

昨天的指令故意寫得得比較有懸念,留在今天才講

test case 改動的點在於讓 WAW 的指令變得更近
原本 agent 寫的版本差太多道指令
前一道指令都已經 retire 了
字面上的確有 dependency,但沒有太大的意義
像這種也是目前語言模型的弱點
如果這種 CPU 驗證的 test case 沒有人類好好檢查的話,很容易有問題

話又說回來
到底一個 out of order cpu 是怎麼解決 dependency 的問題
讓後面的指令可以優先執行呢?
這就要說到 registre renaming 了
其中的關鍵就是 David Wheeler 說的:
「計算機科學中的任何問題,都可以透過增加一個抽象層來解決。」

白話文就是我們用 x0~x31 的 architecture register 去存取
背後墊了一層維護 physical register 的邏輯
讓指令可以存取到不同版本(被複寫)的 register 內容
舉個例子

addi x1, x0, 1
addi x2, x0, 2
mul x3, x1, x2
add x4, x3, x1
addi x3, x0, 5
addi x5, x3, 6

第四道指令(add)存取到的 x3 和第六道指令(addi)存取到的 x3 是不同的
Out of Order 中第五道指令(addi)比第三道(mul)先執行完,並寫繼續執行第六道(addi)
但它並不會影響到第四道指令(add)讀到的 x3
就是 register renaming 的精妙之處


上一篇
RAR, RAW, WAR, WAW in Out of Order CPU
下一篇
Out of Order CPU Renaming Breakdown
系列文
猴子都寫得出來的 RISC-V OoO CPU 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言