メモリインタリーブ(memory interleaving)
主記憶を複数の区画に分け、連続した番地を別々の区画に置いて同時に読み出す高速化の工夫。
もう少し詳しい説明
メモリインタリーブは、主記憶(いま使うプログラムとデータを置いておく記憶装置)を複数の区画に分け、連続した番地を別々の区画に置くことで、読み出しを同時に行えるようにする工夫です。区画のことをバンクと呼びます。
番地は、主記憶(いま使うプログラムとデータを置いておく記憶装置)の中の置き場所に付けられた通し番号です。マンションの部屋番号にあたります。
何が困っているのか
プロセッサは、主記憶よりずっと速く動きます。そのためプロセッサは、主記憶からデータが届くのを待っている時間が長いのです。
さらに主記憶には、1回読んだあと、次に読めるようになるまで少し間があるという性質があります。1回の読み出しが終わってすぐ次を頼んでも、同じバンクはまだ受け付けられません。
ここで、置き場所を分散させておけばどうなるか。これがインタリーブの発想です。
連続した番地を散らして置く
4つのバンクに分け、番地を1つずつ順番に振り分けます。番地0はバンク0、番地1はバンク1、番地2はバンク2、番地3はバンク3、番地4はまたバンク0へ戻る——という置き方です。番地をバンク数で割った余りがバンク番号になります。上記の図ではバンク数が4つなので番地7のバンク番号は3になります。
こうしておくと、連続した4つの番地は必ず別々のバンクに入ります。バンクは独立に動けるので、4つまとめて同時に読み出せます。1つずつ順番に読むのに比べ、理屈の上では最大でバンク数ぶん(この例では4倍)速くなります。
スーパーのレジに例えると分かりやすいです。 レジが1台しかなければ、客は1人ずつ順番に待ちます。レジを4台に増やし、客を1人ずつ別のレジに振り分ければ、4人を同時にさばけます。番地を振り分けるというのは、この「客を別のレジに回す」ことにあたります。
なぜ「連続した番地」でよいのか
散らして置くのが効くのは、プログラムが実際に連続した番地を読むからです。
- 命令は主記憶の番地の順に並んでいて、上から順に取り出される
- 配列の要素は連続した番地に並んでいて、先頭から順に処理されることが多い
つまりたまたまではなく、構造的に連続読み出しが多い。そのため、「連続した番地を散らす」という割り切った置き方が効きます。
逆に、同じ番地を繰り返し読む場合は効きません。バンクが1つしか使われないからです。そちらが得意なのはキャッシュメモリです。
キャッシュメモリとの違い
どちらも「主記憶が遅い」ことへの対策ですが、攻めている方向が違います。
| キャッシュメモリ | メモリインタリーブ | |
|---|---|---|
| やること | よく使うデータを手元の速い入れ物に置く | 主記憶を分割して同時に読み出す |
| 効く場面 | 同じデータを繰り返し使うとき | 連続した番地を続けて読むとき |
| 主記憶の遅さは | 避ける(見に行かない) | 分担する(同時に見に行く) |
| 追加する部品 | 速くて高いメモリ(データを置いておく部品) | 速いメモリは不要(分けるだけ) |
キャッシュは「主記憶を見に行かずに済ませる」、インタリーブは「主記憶を見に行くのを速くする」。 目的が重ならないので、実際のコンピュータは両方を併用しています。
バンク数を増やせばよいわけでもない
バンクを増やすほど同時に読める数は増えますが、そのぶん制御が複雑になり、部品も増えます。
また、プログラムが連続した番地を読まない場面では効果が出ません。同じバンクに当たると、結局待たされます(バンク競合)。バンク数は2・4・8のように2のべき乗(2を何回か掛けた数)にするのが普通です。2進数(0と1の2種類だけで数を書く書き方)で書いたときの下のほうのビット(0か1のどちらかを入れる1けた)を見るだけで、割った余りが分かるためです。
試験ではこう出る
科目A(旧・午前)では、説明文を読んで用語を選ぶ形がいちばん多いです。「主記憶を複数の区画に分け、連続する番地を異なる区画に割り当てて並行してアクセスする」という文がそのままインタリーブです。
キャッシュメモリとの使い分けを問う形もあります。「連続した番地」と書いてあればインタリーブ、「よく使うデータ」「ヒット率」と書いてあればキャッシュです。
計算として出る場合は、バンク数から同時に読み出せる語数や、理論上の速度向上を求める形です。バンク数がそのまま上限になります。
応用情報では、バンク競合が起きる条件(アクセスする番地の間隔がバンク数の倍数になっている場合など)まで踏み込んで問われることがあります。
関連する用語
- 主記憶
- プログラムとデータを置く場所。これを複数の区画に分けるのがインタリーブ
- キャッシュメモリの割付方式
- キャッシュ側から待ち時間を縮める工夫。インタリーブは主記憶側から縮める
- キャッシュメモリ
- よく使うデータを手元に置く。同じデータを繰り返し使うときに効く
- プロセッサ
- 命令を実行する部品。主記憶の読み出しを待っている時間を減らしたい
ミニクイズ
メモリインタリーブによって、とくに高速化が期待できるのはどのような場合か。
正解は 1番:連続した番地のデータを続けて読み出す場合
インタリーブは連続した番地を別々のバンクに振り分けて置くので、連続した番地を続けて読むときに複数のバンクを同時に動かせます。同じ番地を繰り返す場合はバンクが1つしか使われないので効果がなく、これはキャッシュメモリが得意とする場面です。順序なく読む場合は同じバンクに当たることがあり、効果は不確実です。命令は番地の順に並んでいるので、実際のプログラムではこの「連続して読む」が多く起こります。
この分野をまとめて解く → コンピュータ構成要素とハードウェアのミニテスト(全33問)
最終更新:2026-10-12