メモリインターリーブとは
インターリーブとは何かを差しはさむという意味。つまりメモリインターリーブとはメモリーの差し挟みという意味である。
コンピュータアーキテクチャにおいては、メモリアクセスのデータレートを向上させるために用いられる技術である。
仕組みとしてはコンピュータ内のメモリの物理的な位置を、連続したデータが異なるメモリバンクに格納されるように配置する。
こうすることで同時アクセスを可能にしデータ転送速度を高速化するわけだ。
なぜそれで高速化するのか?
同じところにまとまってあった方が早いのではと思った方もいるかもしれません。
コンピュータでは、中央演算処理装置(CPU)がデータバスを介してメモリと通信しています。このバスは通常、一度に1ワードのデータを扱うことができます。そしてこの一回の取り扱いにはレイテンシーという遅延時間がかかるのです。
そしてこのレイテンシーが積み重なることでかなりの無駄な時間がかかるわけです。この一つ一つの無駄な時間を活かすのがメモリインターリーブです。
このシステムがないものと比較すると、
ノン・インターリーブのメモリシステム
連続したワードはメモリ内の連続した場所に格納されます。
つまり、CPUがメモリからデータブロックを読み出す場合、次のワードを送信する前に各ワードの転送を待つ必要があります。
インターリーブのメモリシステム
連続する単語が複数のメモリバンクに分散して配置されます。
これにより、CPUは現在のワードを転送している間に、次のバンクから次のワードの読み取りを開始することができ、データレートを効果的に向上させることができるのです。
具体的にどう使用されている?
次に、メモリインターリーブの具体的な例と応用例を見てみましょう。
企業の昔のものや研究機関のもの
メモリインターリーブはもちろん同じメモリを揃えるなど少し注意をすれば個人のパソコンで行うことも可能な技術です。
しかし歴史的には、サーバーやデータベース、そしてメインフレームやスーパーコンピュータなど、高いデータ転送速度が重要な高性能システムでよく使われてきた技術です。
例えば、科学技術計算では大きなデータのブロックをメモリから読み出したり、メモリに書き込んだりする必要があることがよくある。
一方パーソナルなレベルでは、もちろん高精細の映画や、特にゲームなどでのリアルタイムの3Dグラフィックス処理などにも使われる。
ということで、メモリインターリーブを使用することにより、これらの処理をより高速に実行することができシステム全体のパフォーマンスを向上させることが可能になります。
実装法
ハードウェアの実装では、メモリインタリーブはいくつかの方法で実現できます。最も単純なのは2ウェイ・インターリーブで、2つの異なるメモリバンクに交互にワードが格納されます。
これを4ウェイや8ウェイに拡張することで、さらに高いデータレートを実現することができます。
また、インターリーブ方式の選択は、システムの特定の要件と使用するメモリデバイスの特性に依存する。
トレードオフ
メモリインタリーブのトレードオフについて。
インターリーブは比較的低いコストでデータ転送速度を大幅に向上させることができる反面、メモリサブシステムを複雑化させます。
例えばメモリコントローラは異なるメモリバンクにまたがるデータの分配を処理できなければなりません。こうした複雑化で故障率もあがります。
またある種の作業負荷に対してはそれほど大きな利益をもたらさない場合があります。例えば、プログラムがランダムなパターンで頻繁にデータにアクセスする場合、メモリインターリーブの利点はもちろん減少する訳です。

