メモリインターリーブ 【memory interleaving】
概要
メモリインターリーブ(memory interleaving)とは、コンピュータのメインメモリ(RAM)へのアクセスを高速化する手法の一つで、複数のメモリ装置(メモリバンク/メモリモジュール)をまたぐようにメモリアドレスを割り当て、読み書き動作を同時並行に行う方式。CPUがメモリへアクセス要求を行ってから実際にデータが送られてくる(あるいは書き込みが完了する)までにはレイテンシ(latency:遅延)と呼ばれる時間差が生じる。CPU内部の処理に比べメモリの読み書きは非常に時間がかかるため、コンピュータの処理速度はこの「待ち時間」に常に足を引っ張られている。レイテンシを短縮する試みは常に行われているが、CPU内の記憶素子との差は埋めがたく、また、低レイテンシのメモリは高価である。
一方、メモリへのアクセス要求は短期的には局所性が極めて強く、連続した領域に順番に読み書きを行うことが多い。この特徴を利用して、複数のメモリバンクにまたがって連続したアドレスを交互に振っておき、あるデータにアクセスする遅延時間の最中に次のアドレスへアクセス要求を発行して時間を有効利用するのがメモリインターリーブである。
バンクの数を増やせばその分高速にアクセスできるようになり、2つのバンクを用意すれば2倍、4つで4倍の高速化を図ることができる。ただし、実際にはコントローラのオーバーヘッドや、不連続なアドレスへのアクセスがあるため、バンクの数だけ線形に性能が向上するわけではない。
安価な高レイテンシのメモリで高い性能を得られる反面、メモリコントローラが複雑になり高価になることや、部品点数が増えて故障率が上がってしまうという欠点もある。もともと高い性能が要求されるサーバなどで使われてきた技術だが、近年ではパソコンでも同じ仕様・容量のメモリモジュールを2枚単位でメモリスロットに装着することでメモリインターリーブを利用できるものがある。
(2018.9.19更新)