このページではMCS-4のRAMである4002について説明します.4001の説明ページと同様に全体の概要を述べたのち,パッケージとピン,ブロック図による内部構造について説明します.
概要
4002はMSC-4の主記憶装置として使われていました.MCS-4では現在のCPUのようにキャッシュと主記憶装置が分かれているのではなく,データを記憶できるのはこの4002しかありませんでした.
4002には20個4[bit](80[bit])で構成されるRAMアレイが4個あり,合計で320[bit]の記憶容量があります.これをMCS-4では16個接続可能であるので合計で5120[bit]の記憶容量でした.後ほど説明しますが,4004からRAMを指定する方法が ROMと異なりますので注意が必要です.
パッケージとピン
パッケージはMSC-4で共通のDIP16です.下にピンアサインを示します.なお,MCS-4で共通的に使われる端子(D0~D3,VDD,VSS,Φ1,Φ2,SYNC,RESETについてはこちらをご覧ください.
チップセレクト用端子P0とチップ選択端子CM
これら端子を説明するには,4002と4004の接続方法を知る必要がありますのでそれについて説明します.4002を16個接続可能であることは既に説明しました.ではこの16個がどのように接続しているのでしょうか?.実は4002には,4002-1と4002-2の2種類あり,さらにP0に接続先がVDDかVSSに分かれているため,都合4種類に分けることができます.そして,この4種類を1つのCM-RAMxに接続し,1グループを形成します.4004にはCM-RAM0~CM-RAM3があるので4グループまで対応できることになります.最終的に4種類×4グループ=16個の4002を識別できるようになるわけです.下に4002と4004の接続について示します.
出力端子O0~O3
4002には出力専用端子が備わっています.4001のように入出力が決められるような仕組みにはなっていませんので注意してください.
下に4002のブロック図を示します.この図を使って4002の内部について説明します.
タイミングとデータバスI/Oバッファについては4001などと同様です.詳しくはこちらをご覧ください.
次にリフレッシュカウンタ,アドレスマルチプレクサおよびアドレスレジスタについてまとめて説明します.一言でいえば,これらはすべて4002の記憶方法がダイナミックRAMであるために必要な回路です.ダイナミックRAMではコンデンサに貯められる電荷の有無で0と1を表現していますが,電荷は時間がたつと漏れていってしまう性質がり,それを回避するため定期的にリフレッシュしなければなりません.そこで,リフレッシュを一定周期に行うため,タイミングからのクロックをカウントするのです.これがリフレッシュカウンタの役割です.さらにアドレスレジスタで指示されたコンデンサの電荷をチャージするようになっており,そのアドレスを指し示すRAMの場所に対してリフレッシュを行うようにするためにアドレスマルチプレクサが必要なのです.
次に出力ポートです.あらかじめSRC命令で指定された4002にある出力ポートから,WMP命令でデータを出力することができます.
最後に命令デコーダ・制御回路,マルチプレクサそしてRAMアレイの説明をします.SRC命令ではX2およびX3のタイミングで4[bit]ずつ,計8[bit]の情報をRAMに送ります.この情報には下の表で示す内容が含まれています.
X2 | X3 | ||||||
D3 | D2 | D1 | D0 | D3 | D2 | D1 | D0 |
チップ番号 | RAMアレイ番号 | メインメモリ文字番号 | |||||
(0~3) | (0~3) | (0~15) |
まず,X2は上位2[bit]と下位2[bit]に分けられ,上位2[bit]によりチップ番号,下位2[bit]により4002のRAMアレイ番号が指定されます.そしてX3の4[bit]によりメインメモリ文字番号を表しています.チップ番号とP0および4002の種類の関係を下表で説明します.なお,D3とD2はともにX2のときのものです.例えばD3=1,D2=0のときには4002-2かつP0=VSSのものが選ばれます.
チップ番号 | 4002の種類 | P0 | D3 | D2 |
0 | 4002-1 | VSS | 0 | 0 |
1 | 4002-1 | VDD | 0 | 1 |
2 | 4002-2 | VSS | 1 | 0 |
3 | 4002-2 | VDD | 1 | 1 |
以上のように,SRCのX2およびX3で送られてくる情報をデコードします.さらにそれだけでなく,M1サブサイクルのとき,4001から4004に送られるオペコードが1110(入出力命令)のとき,4004はCM-RAMxをM2(オペラランドを送っているサブサイクル)のときアサートし,4002はそのオペランドをデコードします.例えば,WRM(メインメモリに4004のアキュムレータの値を書き込む)とWMP(4002の出力端子から4004のアキュムレータの値を出力する)を区別するために,4002ではオペランドをデコードしています.
レジスタ番号とメインメモリ文字番号については下の図をご覧ください.下図は1個の4002に含まれるRAMアレイです.このように4個のレジスタが入っています.各レジスタには20個の4[bit]RAMがあり,そのうち16個がメインメモリ文字です.0~15までの番号が振られています.
このように,SRC命令でどのRAMの,どのレジスタのどのメインメモリ文字に対して読み書きするか指定することができます.しかしこのままではどのグループかまでは指定していません.これを行うのがDCL命令です.この命令によりCM-RAM0~3のいずれかをHighにすることができます.従いまして,RAMにアクセスする前段階ではSRC命令とDCL命令を行う必要があると言えます.ここまでお膳立てしたのち,WRM命令でメインメモリ文字にデータを書き込むことができ,RDM命令でデータを読み込むことができるのです.