Samsung LPDDR5X-PIM: Processing-in-Memory 架構與實作
Samsung 的 Processing-in-Memory (PIM) LPDDR5X 晶片實作,允許運算直接在記憶體內進行,繞過外部匯流排瓶頸,從而實現 614 GB/s 的內部頻寬。
這種架構旨在透過將乘加 (MAC) 單元置於 DRAM bank 中來加速 AI 與機器學習工作負載,使晶片能夠在保持與標準記憶體控制器相容性的同時,發揮受限的 SIMD 處理器功能。
硬體架構與吞吐量
Samsung 的 LPDDR5X-PIM 將 PIM 模組整合至 LPDDR5X-9600 晶片的 16 個 bank 中。透過內部存取 DRAM bank,這些模組避開了晶片外部介面的限制,該介面通常最高僅為 76.8 GB/s。
MAC 單元規格
每個 PIM 模組包含一個 MAC tree、暫存器檔 (register files) 與控制邏輯:
- Instruction Register File: 1024-bit,可容納多達 64 個 16-bit 指令。
- Source Register File: 4 kbit,用於啟動向量 (activation vectors)。
- Scale Register: 2 kbit,用於在運算前對模型權重進行縮放。
- Data Flow: 模型權重儲存在附屬的 DRAM block 中,而啟動向量則透過 source register 提供。
運算效能
MAC 陣列支援低精度格式,包括 INT8 與 FP8。單個 PIM 模組在每個資料時鐘週期內可維持四個 INT8 或 FP8 MAC 運算(每個週期八個)。使用 4-bit 輸入權重時,吞吐量會翻倍,從而實現 2.4 TOPS 的封裝級運算吞吐量。為了達到典型 NPU (例如 Intel 的 Meteor Lake) 的效能,系統需要大約八顆 LPDDR5X-PIM 晶片,總計 128 GB 的系統記憶體。
協定整合與控制
LPDDR5X-PIM 透過將特定的 row address 作為 Memory-Mapped I/O (MMIO) 觸發器來切換操作模式,從而保持與標準 LPDDR5X 協定的相容性。
模式切換
- Single-Bank Mode: 標準操作模式,用於一般的 DRAM 存取。
- Multi-Bank Mode: 同時對所有 16 個 bank 施加指令,以利用內部頻寬。
- PIM Registers Activated Mode: 由特殊的 per-bank rows 觸發,此模式會將讀寫指令重定向至 PIM 暫存器,而非 DRAM bank 內容。
SIMD 執行流程
在 multi-bank mode 下,晶片運作如同一台 SIMD 處理器。單個寫入指令會廣播至所有 16 個 bank,確保整個晶片應用相同的運算、縮放因子與 source operand。為了防止記憶體控制器重新排序 (reordering) 造成的問題,Samsung 使用了 Address Align Mode (AAM),允許指令從被存取的 column address 推斷其 source register index。
關鍵軟體與系統挑戰
儘管硬體效率極高,但將 PIM 整合至現代運算環境中會引入嚴重的架構衝突,特別是關於 CPU 如何處理記憶體。
快取一致性與投機執行
由於 PIM 運算會修改記憶體內容與暫存器狀態,這會破壞 CPU 快取層級結構的基本假設:
- Uncacheable Memory: Samsung 建議將 PIM 記憶體映射為 uncacheable。這會消除 CPU 快取的優勢,顯著增加延遲並導致核心停頓 (stalling)。
- Speculative Execution: 現代 CPU 使用預取器 (prefetchers) 與分支預測來投機性地載入資料。在 PIM 系統中,投機性讀取並非被動操作——它會觸發運算,進而修改 P_PIM Vector Register File (VRF),可能導致實際程式的狀態損壞。
多工處理與作業系統整合
PIM 模式切換對記憶體通道而言是全域狀態變更。這對多工作業系統會造成重大障礙:
- Thread Isolation: 如果一個執行緒使用 PIM,而另一個執行緒進行一般的記憶體存取,非 PIM 執行緒可能會在無意中觸發 PIM 運算,或將 VRF 資料寫入錯誤的位址。
- Context Switching: 中斷 PIM 執行緒需要作業系統將通道切換回非 PIM 模式,並手動儲存所有 bank 之間指令、source、scale 與 vector register files 的狀態。
- Memory Interleaving: 為了隔離 PIM 區域,系統可能需要禁用跨通道的位址址址碼交錯 (address interleaving),這會降低非 PIM 應用程式的整體記憶體頻寬。
技術觀點與替代方案
業界討論指出,雖然 PIM 解決了「Von Neumann 瓶頸」,但它對資料放置施加了嚴格限制。正如社群貢獻者所言:
"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."
為了解決這些問題,作者建議更可行的路徑需要系統性的硬體變更,例如:擴展 DRAM 介面以支援專用運算指令、實作一個能作為快取一致性對等 CPU 核心的記憶體控制器 (使用 Read-For-Ownership 請求),以及引入透明的 CPU 指令 (例如假設性的 rep macb) 以將 PIM 硬體從軟體層抽象化。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch