uPD3301

NECのuPD3301はCRTに文字表示を行うためのLSIです。
特徴的なのはメモリアクセスを自分が行う手段を持たず、外部のDMACにメモリアクセス要求を出し、表示すべき文字データを取得するという構造になっていることです。そのため、DMACの設定次第でメインメモリの任意の部分を表示バッファに使用することができます。
表示のたびにメインメモリにDMA要求を行うと、CPUがプログラム遂行のためにメモリにアクセスする時間が相当減ってしまい、処理が遅くなるのではないかと懸念されるかもしれませんが、文字表示のためのコントローラのため、それほど悪影響を及ぼしません。文字というのは、たとえば5×7ドットくらいで表され、1行表示のために走査線8本くらいは使用しますから、その8本の走査線の分は同じ文字コードを繰り返し使用することになります。1行80文字とすると、80文字分のバッファをLSI内部に保持すれば、走査線7本分の時間はDMAを行わなくてすみます。走査線1本の時間を63.5 usとすれば、8本で約0.5 msになり、この間に80回、1 usずつDMAサイクルに使用したとすれば、バスサイクルの16 %の時間がDMAに使用されます。
実際にはuPD3301の中はダブルバッファ構造になっていて、一方の行バッファからCRT表示を行っている最中に、別のバッファへとDMAで文字データを読み込めるようになっています。文字データとしては、文字コードの他に色などの属性データが1行につき最大40 Byte分含まれるため、上の性能評価で想定したのよりは多いデータを読み込むことになって現実にはもう少し性能が下がります。

uPD3301
PC-8001のCRT表示回路に使用されていました。上はセラミックパッケージのuPD3301-2で高速版。下はプラスチックパッケージの上に改良版であるuPD3301A-2です。

専用の表示用バッファメモリを持つタイプよりDMAの分だけ性能が低下しますが、メモリの有効利用を行いやすいですし、DMAコントローラのDMA開始アドレスを1行分だけずらしてやることでハードウェアスクロールを簡単に実現できるという長所もあります。

Return to IC Collection