バンクメモリ

読み:バンクメモリ
外語:bank memory
品詞:名詞

バンク切り替えによって容量を拡張するメモリのこと。

基礎

例えば、アドレスバスの幅が決まっているが、その範囲ではメモリ容量が足りないような場合、あるアドレスの範囲を二次元的に拡張する方法が取られる。これがバンクメモリである。

CPUから見れば同じアドレスのある範囲を、スイッチにより複数のメモリページを切り替えて割り当てる。こうすれば、そのページ数の分だけ、メモリ容量は拡張できることになる。

技術

例えば4Miバイトのメモリを新たに追加するとする。これを小さな領域に分割する。例えば16Kiバイトごとに、256分割するとする。

この時、CPUからアクセス可能なアドレス範囲の「どこか」に、16Kiバイト分の「窓」を用意し、ここに拡張されたメモリの一部(1ページ)を覗かせる。この時、必要に応じて覗かせるページの番号を256種類から選択できるようにする。

かくして、窓の大きさだけどこかに用意できれば、都合、窓の大きさ×バンク数のメモリを(使いにくいが)扱うことが可能となるわけである。

PIC

例えばPICを例とする。

PICの内蔵メモリ用のポインタは7ビットしかなく、最大で128バイトしか使えない。しかし、2または4ページでバンク切り替えすることで2倍または4倍のメモリを扱えるようにした製品がある。

またプログラム領域も同様である。製品によって異なるが、よくある製品ではポインタが10ビットしかないため、容量は1Kiワードに制限される。しかし同様にバンク切り替えで2倍、4倍などに拡張した製品がある。

MS-DOS

MS-DOSは16ビットOSであり、最大でも1Miバイトまでしかメモリが使えない。しかも全領域にメモリがあるわけではなく、実質はコンベンショナルメモリの容量、つまり640Kiバイトの制限がある。

しかしこれではメモリ容量が不足したため、様々な拡張方法が模索された。代表的な成功例が、次の二つである。

特によく使われたのは後者EMSである。