メモリバンク(メモリバンク)とは | 意味や読み方など丁寧でわかりやすい用語解説
メモリバンク(メモリバンク)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
メモリバンク (メモリバンク)
英語表記
memory bank (メモリーバンク)
用語解説
メモリバンクとは、DRAM(Dynamic Random Access Memory)チップ内部を論理的または物理的に分割した独立した領域のことだ。この分割により、メモリは複数の並列なデータ格納・処理単位として機能し、メモリコントローラはこれらのバンクを同時に、あるいは非常に短い間隔で切り替えながら操作できる。これにより、メモリ全体のデータ読み書き性能が飛躍的に向上する。
DRAMは、非常に小さなコンデンサとトランジスタで構成されたメモリセルにデータを格納する。これらのメモリセルは通常、行と列のマトリックス状に配置されており、特定のデータにアクセスするには、まず行アドレスを指定し、次に列アドレスを指定する必要がある。しかし、DRAMの行アクセスには比較的長い時間がかかり、一つの行を開いてデータを読み書きしている間、そのチップ全体がビジー状態となり、他のデータへのアクセスがブロックされてしまうという課題があった。この非効率性を解消し、メモリの帯域幅と応答性を向上させるために導入されたのがメモリバンクという概念である。
DRAMチップは、非常に多くのメモリセルを内蔵しているが、これらのセルすべてに同時にアクセスすることは現実的に不可能であり、また電力消費も膨大になる。そのため、一つのDRAMチップは内部的に複数の独立したバンクに分割されている。例えば、一般的なDDR SDRAMモジュールでは、一つのDRAMチップが4、8、あるいはそれ以上のバンクを持つ構成が主流だ。それぞれのバンクは、アドレス空間の一部を担当し、独立した行デコーダやセンスアンプなどの回路を持つ。これにより、各バンクは独立して行のアクティブ化(データの準備)やプリチャージ(次のアクセスへの準備)を実行できる。
この独立性がメモリ性能向上に大きく貢献する。例えば、メモリコントローラがあるバンクAに対してデータの読み出しを指示し、バンクAがそのデータの準備(行のアクティブ化)を行っている間に、別のバンクBに対して次のデータの読み出し要求を発行できる。バンクAでの処理が完了し、データの転送が開始される頃には、バンクBでもデータの準備が整い、すぐにデータ転送を開始できる。このように、複数のバンクを並列に動作させることで、一つのバンクが行アクセスに費やす時間を他のバンクの処理で「隠蔽」することが可能になる。これを「インターリーブ」と呼び、メモリのレイテンシ(遅延)を効果的に隠し、実効的なデータ転送速度を向上させる。
もしメモリにバンクが存在せず、単一の大きな領域として構成されていた場合、CPUがデータ要求を出すたびに、その領域全体がアクティブ化とプリチャージのサイクルを待たなければならず、連続するデータへのアクセスが非常に非効率になる。バンクの存在によって、メモリコントローラは複数の要求を異なるバンクに分散させ、それぞれのバンクが独立して処理を進めることで、全体としてより多くのデータを単位時間あたりに処理できるようになる。これは、高速なCPUが常にデータを待つことなく、効率的に動作するために不可欠な仕組みだ。
また、メモリコントローラは、どのバンクが現在アクティブな行を保持しているか、どのバンクがプリチャージを終えて次のアクセスに対応可能かといった状態を管理している。これにより、最適なタイミングで各バンクにコマンドを発行し、最大限の並列性を引き出す。ただし、同じバンク内の異なる行に連続してアクセスしようとすると、一度アクティブな行を閉じ、新しい行をアクティブにするというプロセスが必要になり、この際に「バンクコンフリクト」と呼ばれる性能低下が生じる場合がある。しかし、適切にデータを配置し、アクセスパターンを最適化することで、この影響は最小限に抑えられる。
システム全体として見ると、物理的なメモリモジュール(DIMMやSODIMM)上には複数のDRAMチップが搭載されている。これらの各DRAMチップがそれぞれ複数のバンクを持っているため、メモリコントローラはこれらチップ内の多数のバンクを総合的に管理し、システムの要求に応じて最適なデータアクセスを実現している。これにより、プログラムの実行速度向上や、大量のデータを扱うアプリケーションのパフォーマンス維持に不可欠な高速なメモリアクセスが実現されているのだ。メモリバンクは、現代の高性能コンピューティングにおいて、メモリの潜在能力を最大限に引き出し、システム全体の処理能力を支える基盤技術の一つであると言える。