Samsung LPDDR5X-PIM: Processing-in-Memory Architecture and Challenges
Samsung LPDDR5X-PIM Increases Internal Memory Bandwidth
Samsungは、Multiply-Accumulate (MAC) ユニットをLPDDR5Xチップに直接統合することで、Processing-in-Memory (PIM) を実装しています。このアーキテクチャにより、計算操作をメモリチップ内で行うことが可能になり、より高い内部帯域幅を活用し、DRAMと従来の計算コア間の高レイテンシパスを回避できます。
標準的なLPDDR5X-9600チップは、外部インターフェースによって最大76.8 GB/sに制限されますが、LPDDR5X-PIMは16個の各バンクにPIMブロックを利用します。外部バスの制約なしにこれらのバンクにアクセスすることで、チップは614 GB/sの内部帯域幅を達成します。
Hardware Architecture and Compute Throughput
各PIMブロックは、レジスタファイルと制御ロジックによってサポートされるMACツリーで構成されています。このアーキテクチャは、操作を管理するために特定のレジスタ構造を使用します:
- Instruction Register File: 1024ビットのファイルで、最大64個の16ビット命令を保持します。
- Source Register File: アクティベーションベクター用の4 kbitファイルで、1つのソースオペランドを提供します。
- Scale Register: モデルの重みをスケーリングするための2 kbitレジスタです。
- DRAM Bank: MACアレイに2番目のオペランド(モデルの重み)を直接供給します。
Performance Metrics
MACアレイは低精度フォーマットをサポートしています。各PIMブロックは、データクロックごとに4つのINT8またはFP8 MAC操作を維持できます(ダブルデータレートを除外した1サイクルあたり8つ)。4ビット入力重みの場合、スループットは倍増します。単一のチップは、パッケージ全体で2.4 TOPSの計算スループットを提供します。比較として、8個のLPDDR5Xチップの構成では9.6 INT8 TOPSが得られ、これはIntelのMeteor Lakeに見られるNPU性能にほぼ一致します。
Protocol Integration and Mode Switching
Samsungは、特別な行アドレスをMemory-Mapped I/O (MMIO) アドレスとして再利用することで、標準的なLPDDR5Xプロトコルとの互換性を維持するようにLPDDR5X-PIMを設計しました。チップは主に2つのモードで動作します:
- Single-Bank Mode: 通常のDRAMアクセス用の標準的な動作モード。
- Multi-Bank Mode: 内部帯域幅を活用するために、全16個のバンクに同時にコマンドを適用します。
PIM操作を実行するために、ソフトウェアはチップをマルチバンクモードに切り替え、「PIM Registers Activated」モードに入ります。この状態では、読み取りおよび書き込みコマンドはDRAMの内容ではなくPIMレジスタにアクセスします。チップがマルチバンクモードであるため、レジスタへの書き込みは全16個のバンクにブロードキャストされ、実質的に制約のあるSIMDプロセッサとして機能します。
Addressing and Reordering
メモリコントローラによる並べ替え(reordering)によって引き起こされる問題を防止するため、Samsungは Address Align Mode (AAM) を実装しました。AAMは、各命令がアクセスされる列アドレスからソースレジスタインデックスを推論し、メモリコントローラがアクセスを発行する順序に関係なく、操作の正しいシーケンスを維持することを保証します。
Software and System Integration Challenges
ハードウェアの機能性にもかかわらず、LPDDR5X-PIMを現代のコンピューティング環境に統合するには、メモリ一貫性(memory consistency)とOSのマルチタスクに関する深刻な課題があります。
Memory Isolation and Multitasking
PIMモードはDRAMコマンドの根本的な意味を変更するため、PIMと通常のメモリ操作は同時に発生することはできません。これにより、いくつかの衝突が発生します:
- Thread Interference: PIMではないスレッドが読み取りを実行すると、意図しない計算がトリガーされたり、PIM Vector Register File (VRF) の結果が破損したりする可能性があります。
- OS Scheduling: PIMスレッドをプリエンプト(中断)する場合、OSは全バンクにわたるPIMの状態(命令、ソース、スケール、およびVRF)をすべて保存する必要があります。これは計算コストが高い作業です。
- Memory Interleaving: PIM領域を分離するためには、システムはチャネル間のアドレス・インターリービングを無効にする必要がある可能性が高く、その結果、非PIMアプリケーションに利用可能な全体的な帯域幅が減少します。
Cache and Speculation Conflicts
標準的なCPUの最適化技術は、PIM operations とは互換性がありません:
Caching: Samsungは、PIMメモリをuncacheable(キャッシュ不可)としてマッピングすることを推奨しています。もしCPUがPIMをトリガーする読み取りをキャッシュしてしまうと、計算がDRAMに到達しない可能性があります。逆に、DRAMで生成された値がCPUキャッシュに反映されない可能性があります。
Speculative Execution: 現代のCPUは、プリフェッチャと分岐予測を使用して、必要になる前にロードを開始します。PIMシステムにおいて、投機的読み取り(speculative read)は無害な操作ではありません。それはMAC計算をトリガーし、PIM VRFを修正するため、プログラムの状態を不正に修正してしまいます。
Community Perspectives and Analysis
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 all times. Most problems do not fit this pattern very well. AI, gaming and crypto being the most obvious exceptions."
批判的な意見を持つ人々は、また、乗算と加算は、行列の乗算のために行列を整列させるために必要なデータ移動量よりもエネルギー消費が少ないとも指摘しています。PIMは実用的なものにするために、メモリ・サブシステムを根本的に再設計 redesign し、以下を含める必要があると示唆されています:
- DRAMインターフェースを拡張して、モード切り替えを避けるための専用の計算コマンドを含めること。
- メモリコントローラがピアCPUコアとして機能し、Read-for-Ownership (RFO) リクエストを使用してデータ一貫性を確保するキャッシュ・コヒーレンシ・プロトコルを実装すること。
- 透明なCPU命令(例:仮説的な
rep macb)を導入し、ハードウェアがデータサイズと場所に基づいて、キャッシュ内かメモリ内で計算するかを決定できるようにすること。
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch