サイクルスチールが実装されてないときのVRAMの挙動ってどうなんだろう
- 公開日: 2015/12/26(土) 14:01[JST]
ふと気になったので分かる範囲で調べてみた次第。とりあえず手元にある資料が「FM-7 ユーザーズマニュアルシステム仕様」なんでそこを当たってみる。
FM-7の場合、VRAMはサブCPUのアドレス空間に配置されている。実際のVRAMは富士通のMB8116というメモリを24個使って48kB分のメモリとしている、ということのようだ。
MB8116についてぐぐってみると、アドレスバスが7本、データバスが入力/出力それぞれ1本ずつという構成の所謂デュアルポートRAMというもののようだ。このメモリのアドレス空間は内部的には14ビットで、上位7bit、下位7ビットを続けてアドレスバスに入力するようになっている。つまり1チップあたり2^14ビット=2048オクテットの容量。
(2017/3/30追記)コメントで指摘されたように、MB8116はデュアルポートメモリではなかった。(追記終わり)
で、FM-7の場合、水平同期周波数が15.75kHzで、1/15750秒が1024ピクセル分に相当するとのこと。つまり、1ピクセルにつき1/16.128M秒。ビデオ回路はVRAMを読み出す際に24個のMB8116全てから同時に読み出すことができるのであれば、一回のアクセスで8ピクセル分のデータを読み出せるので、1/2.016M秒ごとにアクセスできればいいということになる。データシートによれば、データを読み出す際のメモリ側のアクセス時間は最小で375nsということなので、アドレスバスをサブCPU側とビデオコントローラ側で共用する以上、走査を行っている期間(つまり垂直・水平帰線期間以外)はCPUはVRAMにアクセスできない(サブCPU側からアクセスしようとすると帰線期間までウエイトがかかる)、という解釈でいいのだろうか。
サブシステムのVRAMアクセスフラグとなずけられたI/O、$D409がハードウェア的にはどう機能してるのか知りたいと思います。
入力ポート1つ、出力ポート1つというのは
普通のシングルポートのD-RAMじゃないですか。
デュアルポートメモリが載ってたらCPUが待つ
必要ないですよ。
ご指摘ありがとうございます。言われてみれば確かに入力/出力ポートそれぞれ一つだとデュアルポートにはなりませんね