ICDロゴ

メモリ・インターリーブ (memory interleave)

最終更新日: 2002/08/15

 コンピュータのメモリ・サブシステムを高速化させる技法の1種。複数のメモリ・バンクに対してほぼ同時にアクセスすることで、メモリ・サブシステムのデータ転送レートを高める、というもの。サーバやワークステーションなど、性能重視のコンピュータ・システムによく実装される。

 メモリ・インターリーブの狙いは、メモリ・チップの速度のボトルネックとなるレイテンシをなるべく隠蔽することで、連続アクセス時の転送レート(帯域幅)を高めることだ。ここでいうレイテンシとは、メモリ・チップに対してアクセス要求を行ってから、実際にデータが読み書きできるようにメモリ・チップ側の準備ができるまでの時間である。もちろんレイテンシが長いほど、性能は低くなるので、短い方が望ましい。しかし、レイテンシの短いメモリ・チップは高価なので、そう簡単には採用できない。そこで、長いレイテンシのメモリ・チップでも性能を高める技法が必要となるわけだ。

 メモリ・インターリーブで重要なのは、「メモリ・アクセスの局所性」だ。これは、コンピュータ・システムでのメモリ・アクセスが、ある短い時間内では、狭いアドレス空間に集中しがちであるという特性がある。つまり、連続したアドレスのメモリをアクセスすることが多いということだ。

 通常のメモリ・サブシステムでは、プロセッサなどからアクセス要求が生じた場合、1バンクごとにアクセス要求を発行してからデータの読み書きが完了し、後処理が終わってから次のメモリ・アクセスの処理に移る。一方、メモリ・インターリーブでは、あらかじめ複数のメモリ・バンク(通常は2/4/8……)に対し、下図のように連続したアドレスを交互に割り当てておく。そしてメモリ・アクセス時には、バンク#1へアクセス要求を発行したら、短いタイムラグのあとにすぐにバンク#2へもアクセス要求を発行する(まったく同時に発行する場合もある)。すると、各バンクでメモリ・アクセスの処理が並列に進行し、バンク#1でデータが読み書きできるようになると、すぐそのあとでバンク#2でもデータの準備ができる。メモリ・サブシステム全体でみると、ほぼ1バンク分のレイテンシだけで、並列にアクセスしたバンク数分のデータがアクセスできるわけだ。つまり、単位時間あたりのデータ転送量、すなわちデータ転送レートがバンクの数だけほぼ倍増することになる。

メモリ・インターリーブの仕組み
メモリ・インターリーブの仕組み
これは1.6Gbytes/sの帯域幅を持つ2つのメモリ・バンクを例としている。各メモリ・バンクに対しては、連続したアドレスを交互に割り振っておく。例えばプロセッサがデータ#1、#2、#3…という具合に連続してアクセスする場合、メモリ・コントローラは2つのバンクに対してほぼ同時にアクセスすることで、通常時(1.6Gbytes/s)の約2倍の性能(約3.2Gbytes/s)が得られる。

 実際にはオーバーヘッドなどにより、バンクの数だけ転送レートがきっちり倍増することはない。また、連続しないアドレスへのアクセス(例えば上図ではデータ#1→#3→#5といったアクセス)では、メモリ・インターリーブの効果はない。とはいえ、前述のメモリ・アクセスの局所性により、メモリ・インターリーブは実際に高い効果を発揮することが多い。

 メモリ・インターリーブの欠点は、メモリ・サブシステムが複雑になりコストが高く付くということだ。また、増設単位となるメモリ・モジュールの枚数も多くなるため、保守も難しくなりがちだ。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ