Samsung LPDDR5X-PIM: 處理器內記憶體架構與挑戰
Samsung LPDDR5X-PIM 提升內部記憶體頻寬
Samsung 正透過將乘累加 (MAC) 單元直接整合到 LPDDR5X 晶片中來實現處理器內記憶體 (PIM) 技術。這種架構允許運算發生在記憶體晶片內部,利用更高的內部頻寬,並避免 DRAM 與傳統運算核心之間的高延遲路徑。
雖然標準的 LPDDR5X-9600 晶片受限於其外部介面,最大頻寬僅為 76.8 GB/s,但 LPDDR5X-PIM 利用其 16 個 bank 的每個 bank 中的 PIM 區塊。透過在不受外部匯流排限制的情況下存取這些 bank,該晶片可實現 614 GB/s 的內部頻寬。
硬體架構與運算吞吐量
每個 PIM 區塊由一個由暫存器檔案 (register files) 和控制邏輯支援的 MAC tree 組成。該架構使用特定的暫存器結構來管理運算:
- Instruction Register File: 一個 1024-bit 的檔案,可容納多達 64 個 16-bit 指令。
- Source Register File: 一個 4 kbit 的檔案,用於啟動向量 (activation vectors),提供一個來源操作數。
- Scale Register: 一個 2 kbit 的暫存器,用於縮放模型權重。
- DRAM Bank: 直接向 MAC array 提供第二個操作數 (模型權重)。
效能指標
MAC array 支援低精度格式。每個 PIM 區塊在每個資料時鐘週期內可維持四個 INT8 或 FP8 MAC 運算 (不考慮雙倍資料速率時為每個週期八個)。對於 4-bit 輸入權重,吞吐量會翻倍。單個晶片可提供整個封裝範圍內的 2.4 TOPS 運算吞吐量。作為比較,八個 LPDDR5X 晶片的配置將產生 9.6 INT8 TOPS,大約相當於 Intel 的 Meteor Lake 中所發現的 NPU 效能。
協定整合與模式切換
Samsung 設計 LPDDR5X-PIM 以保持與標準 LPDDR5X 協定相容,方法是將特殊的列地址 (row addresses) 重新利用為記憶體映射 I/O (MMIO) 地址。 該晶片以兩種主要模式運作:
- Single-Bank Mode: 標準的 DRAM 存取模式。
- Multi-Bank Mode: 同時對所有 16 個 bank 施加指令,以利用內部頻寬。
要執行 PIM 運算,軟體會將晶片切換至 multi-bank mode 並進入 "PIM Registers Activated" 模式。在此狀態下,讀取和寫入指令會存取 PIM 暫存器而非 DRAM 內容。由於晶片處於 multi-bank mode,暫存器寫入會廣播到所有 16 個 bank,有效地發揮如受限 SIMD 處理器的功能。
定址與重排序
為了防止由記憶體控制器重排序引起的問題,Samsung 實施了 Address Align Mode (AAM)。AAM 確保每個指令能從正在存取的列地址中推斷出其來源暫存器索引,無論記憶體控制器發出存取的順序如何,都能維持正確的運算序列。
軟體與系統整合挑戰
儘管具備硬體能力,將 LPDDR5X-PIM 整合到現代運算環境中,在記憶體一致性與 OS 多工處理方面面臨著嚴峻的挑戰。
記憶體隔離與多工處理
由於 PIM 模式會改變 DRAM 指令的基本含義,PIM 與一般記憶體存取無法同時發生。這會造成幾種衝突:
- Thread Interference: 非 PIM 執行緒會執行讀取操作,可能觸發非預期的運算或損壞 PIM Vector Register File (VRF) 結果。
- OS Scheduling: 搶佔 PIM 執行緒將需要 OS 在所有 bank 之間儲存整個 PIM 狀態 (指令、來源、縮放與 VRF),這在運算上是非常昂貴的的。
- Memory Interleaving: 為了隔離 PIM 區域,系統可能需要禁用跨通道的地址交錯 (address interleaving),從這會降低非 PIM 應用程式的可用的總體頻寬。
快取與投機執行衝突
標準 CPU 優化技術與 PIM PIM 運算不相容:
Caching: Samsung 建議將 PIM 記憶體映射為不可快取 (uncacheable)。如果 CPU 快取了觸發 PIM 的讀取,運算可能永遠不會到達 DRAM;反之,DRAM 生成的數值可能不會反映在 CPU 快取中。
Speculative Execution: 現代 CPU 使用預取器 (prefetchers) 著與分支預測來啟動載入,在 PIM 系統中,投機性讀取並非良性操作——它會觸發 MAC 運算,進而修改 PIM VRF,導致程式狀態錯誤。
社群觀點與分析
圍繞 LPDDR5X-PIM 的技術討論揭示了在沒有更廣泛的架構變革之前,對其實際採用上的懷疑態度。
"The tradeoff with putting the compute in the memory is that you have to know exactly where the dependent information will be at all times. Most problems do not fit this pattern very well. AI, gaming and crypto being the most obvious exceptions."
批評者也指出,乘法與加法比對齊矩陣以進行乘法所需的資料移動更耗能。有些人建議,為了讓 PIM imply 成為可行,記憶體子系統需要進行根本性的重新設計,包括:
- 擴展 DRAM 介面以包含專用的運算指令,以避免模式切換。
- 實施一個快取一致性協定 (cache-coherency protocol),讓記憶體控制器充當與 CPU 核心同等的地位,使用 Read-for-Ownership (RFO) 請求來確保資料一致性。
-n引入透明的 CPU 指令 (例如,假設性的
rep macb),讓硬體能根據資料大小與位置來決定是在快取中運算或是在記憶體中運算。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch