Berkeley BOOM 微架構互動分析

Berkeley BOOM 微架構互動分析

Berkeley BOOM 微架構

一個互動式的指南,帶您深入了解 Berkeley Out-of-Order Machine (BOOM) 的設計,這是一款基於 RISC-V 的開源、可參數化、高效能亂序執行處理器。

🚀 亂序執行 (OoO)

BOOM 的核心特性。允許指令在相依性允許的情況下,不依照程式順序執行,以最大化並行性並隱藏延遲。

🛠️ 可參數化設計

使用 Chisel HDL 編寫,BOOM 允許研究人員輕鬆調整管線寬度、佇列大小、功能單元數量等,以探索設計空間。

🌍 開源 RISC-V

基於開放的 RISC-V 指令集架構,BOOM 是學術界和工業界研究下一代處理器架構的重要平台。

BOOM 互動管線

BOOM 採用一個複雜的深度管線來實現亂序執行。點擊下方的任何一個階段,以深入了解其在管線中的角色和功能。

1. 擷取 (Fetch)
→
2. 解碼 (Decode)
→
3. 重新命名 (Rename)
→
4. 分派 (Dispatch)
→
5. 發布 (Issue)
→
6. 執行 (Execute)
→
7. 寫回 (Writeback)
→
8. 提交 (Commit)

1. 擷取 (Fetch)

此階段負責從指令快取 (I-Cache) 中讀取指令。它包含一個複雜的分支預測單元 (BPU),如 TAGE,以猜測分支指令的走向,確保管線能持續填滿。擷取到的指令會被放入擷取緩衝區。

亂序執行的關鍵組件

BOOM 的亂序執行能力依賴於幾個複雜的硬體結構。點擊下方的組件以了解它們各自扮演的關鍵角色。

📦 重新排序緩衝區 (ROB)

追蹤所有飛行中的指令,確保它們依序提交,並處理例外和分支預測錯誤。

⏳ 發布佇列 (IQ) / 保留站 (RS)

存放已分派但尚未執行的指令,等待其運算元準備就緒後再發布到執行單元。

📋 實體暫存器檔案 (PRF)

一個大型的暫存器檔案,存放所有已重新命名的暫存器值,是暫存器重新命名的核心。

💾 載入/儲存單元 (LSU)

負責處理所有記憶體存取。它必須處理亂序的載入和儲存,同時確保記憶體一致性。

📦 重新排序緩衝區 (ROB)

ROB 是一個環形緩衝區,是確保依序提交 (in-order commit) 的關鍵。當指令被分派時,它會在 ROB 中獲得一個條目。ROB 會依程式順序追蹤指令的狀態(例如:是否執行完畢、是否有例外)。只有當指令位於 ROB 的頭部(即最舊的未提交指令)並且已完成執行時,它才能被提交。如果發生分支預測錯誤或例外,ROB 會協助清空管線中在錯誤指令之後的所有指令,並恢復到正確的狀態。

效能與配置探索

BOOM 的最大優勢之一是其可參數化性。不同的配置(例如,管線寬度、ROB大小)會對效能 (IPC) 和晶片面積(資源使用)產生重大影響。選擇一個配置來觀察這些權衡。

效能比較 (IPC)

中型配置在 CoreMark 和 SPECint 上提供了均衡的效能。

相對資源使用 (晶片面積)

中型配置在發布/重新命名和執行單元之間有著平衡的資源分配。

這是一個基於 Berkeley BOOM 公開研究的互動式學習工具。

留言

這個網誌中的熱門文章

量子電腦分類