バンク切り換えの欠点
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/01/29 14:40 UTC 版)
「バンク切り換え」の記事における「バンク切り換えの欠点」の解説
バンク切り換えでは、CPUのアドレスの他にページ切り換え用のレジスタが必要である。このレジスタは、少なくとも論理的(ソフトウェア的)にはCPUの外にあるのが一般的である(HD64180のようにCPUチップの中にこのページ切り換え用のレジスタを持っているチップも存在したが、プログラミング上は、CPU内部のレジスタとして扱われていなかった)。 このことはアドレスをCPU内部のレジスタとページ切り換え用のレジスタの2箇所で別々に管理することを意味する。それはCPU内部のレジスタからページレジスタへの桁上がり等のハードウェアが実装されていないことになるため、配列等がページサイズより大きい場合等はソフトウェアでページを管理する必要が生じた。 これはソフトウェアの処理が必要な分、1次元アドレス管理より速度が低下し、またソフトウェアを必要とするということは、そのソフトウェアにバグが潜む可能性が生じるということであり、システムの信頼性の低下が起こった。 このようなバグの例として、一塊のデータがページ境界に配置される場合が挙げられる、これは大きさが2nバイトではない構造体の配列が、全体としてページサイズを超えた場合等に起こる。 また、大量のデータをメモリ間で転送する場合に、バンク切り換えを行いながら転送する処理が必要になるが、この処理はかなり煩雑になった。 バンク切り換え用のレジスタの仕様(接続されているI/Oアドレス等)は、たとえCPUが同一であっても、一般論として機種毎に異なっていたために、同一CPUでありながら非互換となる原因の一つとなった。 また、必ずしもその空間がCPUが持つアドレス空間内に無いため、単純なバンク切り替えの場合、その実行コードの場所が限定された。例えば、VRAMが出現するアドレスに描画を伴う処理をおくことは、VRAMが排他的にそのアドレスのメインメモリの代わりにその場所に出現することになるので、不可能となる。同様に、バンク切り替えで実装されたROMのルーチンをコールするためには、それを呼び出すプログラム自身が存在している場所以外のページに、該当する処理のあるROMを接続の上、処理する必要がある。
※この「バンク切り換えの欠点」の解説は、「バンク切り換え」の解説の一部です。
「バンク切り換えの欠点」を含む「バンク切り換え」の記事については、「バンク切り換え」の概要を参照ください。
- バンク切り換えの欠点のページへのリンク