FM-77シリーズのメモリ管理

FM-7シリーズで使用されているCPU(モトローラ的にはMPUか)・モトローラMC68B091はアドレスバスが16ビットで、メモリ空間は64kBになるんだけど、FM-77(+400ラインセット)とAVシリーズはMMR2を用いることでそれ以上のメモリを使うことができるようになっている。

MMRの構成については、6809用MMU(Memory Management Unit)考察(by はせりん)に詳説されているが、電子工作に疎い自分では理解が追いつかなかった。ということで色々調べてなんとか自分的に納得できる所まで来たので以下メモ。

1

実際に積んであるのは富士通版のMBL68B09、という公称だったけど昔持ってたFM-7に入ってたのはモトローラ版だった。日立版の6809が乗ったロットもある模様

2

Memory Mapping Register。Oh!FM第2号によれば、メモリ管理ユニット(MMU。6809用のものはMC6829)ではないけど似たような機能を実現するしくみ、とのこと。

FMシリーズのMMRに使われているのは富士通のMB8149というもので、これはナショナルセミコンダクタのMM2114と互換性のあるSRAM。アドレスバスは10ビットでデータバスは4ビット。MMRではこれを2つ使って8ビット×2^10→1024バイトのメモリとしている。

CPUのアドレスバスのうち下位12ビットは、18又は20ビット(AV40シリーズ)のアドレス空間を持つメモリコントローラの下位12ビットにつながっている。で、CPUのアドレスバス上位4ビットは、MB8149のアドレスバスにつながっている。で、MB8149のデータバスは、メモリコントローラの下位13ビット目以降につながっている。

そうすると、CPUがメモリにアクセスしようとすると、実際にメモリコントローラに渡されるアドレスは、CPUのアドレスバス下位12ビットと、MB8149のデータバスから出力される8ビットとを組み合わせた最大20ビットのものとなる。12ビットのアドレスは4kBなので、CPUがアクセスできる64キロバイトの空間を4kB毎に16分割して3、そのそれぞれに20ビットのアドレスを4kB毎に分割したものを割り当てることが出来る、ということ。メモリの割当の変更(つまりMB8149に記憶されている内容の書き換え)はI/O経由で行う。

つまり、SRAMを一種のアドレス変換テーブルとして使っているということ。

もひとつ。「タスク」という考え。MB8149のアドレスバスの下位5,6ビット目(AV40系と20EXは7ビット目も)には、I/Oで設定された「セグメントレジスタ」の値が入力されるようになっている。つまり、MB8149は上記の64kB分のメモリ割当のセットをAV40系と20EXは8セット、それ以外の機種は4セット保持することができる。64kB分のメモリの割当にはI/Oに16回アクセスする必要があるけど、タスク毎にあらかじめメモリを割り当てておけば、1回のI/Oアクセスでメモリ割当を切り替えることができる。OS-9みたいなマルチタスクOSでは重要な機能らしい。

しかし上記リンク先でも言及されているけど、MB8149(×2)の1kBの記憶領域のうち使用されるのはAV40系+20EXでも128バイト、それ以外の機種に至ってはわずか64バイト。非常にもったいない。

3

厳密にいうと(I/OやサブCPUとの共有メモリがマッピングされている)0xFC00以降のアドレスはメモリ割当の対象とはならないのでMMRで切り替えられるのは63kB。

コメント(0)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。