最近では、プロセサの性能の向上に伴い、メモリのリードライトを行うバンド幅が不足してきており、メモリDIMMの転送速度の向上に加えて、PC用のプロセサでも2本のメモリバスを持ち、2バンク構成を採ることが一般化している。さらに、IntelのNehalem(デスクトップ向けの商品の名称はCore i7)プロセサではオンチップのプロセサコア数の増加に伴い、3~4本のメモリバスを持ち、メモリインタリーブを行っている。

話が少し横道にそれるが、Core i7のように2のべき乗でない3バンクのインタリーブをどのように行うかは面白い問題である。

メモリのアクセスにあたり、バンク数が2のべき乗である場合は、剰余は下位ビット、商は上位ビットを取り出すだけで良いが、3バンクの場合、どのラインがどのバンクにあるのかを知るのに(キャッシュライン単位の)アドレスを3で割り、剰余をバンク番号、商をバンクアドレスとする必要がある。Core i7が3バンクのインタリーブをどのように処理しているのか公表された情報は無いが、データシートでは3バンクのインタリーブで使用するモードでは、メモリアクセスに追加のパイプラインが入る(したがって、ある程度、アクセス時間が延びる)と書かれており、真面目に割り算器を使って商と剰余を計算している可能性もある。

例えば、40ビットのメモリアドレスで、キャッシュラインサイズを64バイトとすると、34ビットの上位アドレスを3で割るので、Core 2の整数割り算器のように1サイクルに4ビットの商を生成する割り算器を使えば9サイクル必要となるが、2GHzクロックとしても4.5nsであり、これはDIMMのアクセス時間の1/10程度であるので、遅延時間は大きな問題ではない。ただし、CPUチップとしては、割り算器の面積と消費電力が増えることになるが、それでも3バンクを均等に使うためには、ペイするという考え方はあり得る。

一方、IBMのPOWER4では、2個のプロセサコアが3バンクの2次キャッシュを共用している。キャッシュの場合には、メインメモリのDIMMアクセスに比べて高速なアクセスが要求されるので、割り算器を使って商と剰余を求めるのは時間が掛かり過ぎて実用的ではない。POWER4システムのSPECmarkの測定データでは2次キャッシュ容量は1440KBと書かれており、これは各バンクに32KBのブロックが15個あるという計算となる。(32KB分の下位15ビットのアドレスを除いて、その上の)4ビットのアドレスの0~15を15個のブロックに対応させると、どれか1つのブロックは2倍の量のメモリを分担することになってしまうが、例えば、8ビットアドレスの0~255を15個のブロックに対応させると、1つのブロックは18アドレスを担当し、その他の各ブロックは17アドレスを分担するということになり、それほど大きな不公平はないので、キャッシュのヒット率という点でもほぼ均等になる。この場合は、8ビットのアドレスから7ビットの商と2ビットの剰余を求めればよいので、簡単なROMや論理合成で計算でき、処理時間は殆ど問題にならない簡単なロジックで実現できる。

一般的には2のべき乗の数のバンクを設けてインタリーブを行うが、これらの例のように工夫すると、奇数のバンク数でも全部のバンクを効率よく動かすことが出来る。

以上述べたように、バンクインタリーブを行うことによりメモリバンド幅を向上させることができるが、複数のプロセサからのアクセスが同一のバンクに重なってしまうと並列には処理できず、順番に処理することになるので、実効的なメモリバンド幅はバンク数に比例して増加するわけではない。しかし、インタリーブの構造を理解して、バンクのぶつかりが発生しないようにプログラムを作れば、バンク数に比例したメモリバンド幅を享受することが可能となる。