パッケージとピン

4004は当時としては標準的だったDIPの16ピンでした.現在のCPUでは1000ピンを越えるものも珍しくなくなってきていることを考えると,ものすごく少ないですね.このように少ないピンでRAMやROMと接続するにはどうしたらいいと思いますか?これまで皆さんが使ったことのあるマイコンを想像してください.データバスとアドレスバスがあり,SRAMが接続されていましたはずです.この場合,かなりのピン数が必要になってしまいますよね.そこで,これをひとつにまとめてしまいましょう.つまり,データバスとアドレスバスを一緒にし,データとアドレスを交互に入出力します.このように時間によって通信内容を変えることを時分割と言います.4004では,4個の端子をバスに割り当ててあるため,4ビット入出力となります.これに対し,アドレス空間が12ビット,命令のデータ幅が8ビット,命令を実行するときに必要なオペランド(命令の引数)の最大が12ビットとなっているため,それぞれ3サイクル,2サイクル,3サイクル必要うとなります.ここで「サイクル」とは,クロック信号の1周期のことであり,4004では4ビットバスですので,1サイクルで4ビットを送受信できます.従って,1個の命令をこなすのに8サイクルかかります.「CPUの最大動作周波数」という言葉をよく聞くと思います.この周波数はクロックのものであり,速ければ速いほど素早く処理を行えます.そしてその逆数が最小周期となります.4004ではクロックの最小周期が1.35[μs]でしたので,1命令こなすのにはその8倍の1.35×8=10.4[μs]かかったことになります.周期の逆数は周波数ですので,1秒間におよそ92[kHz]であったと言えます.最近のパソコンに入っているCPUだと3[GHz]位でも特段速いとは言えなくなってきています.また,パイプライン処理がついているため1サイクル1命令を行えますし,さらにマルチコアだと単純計算でコア数倍速くなります.例えばクワッドコア(4個)の場合,12[GHz]となりますので,およそ13万倍のスピードと言えます.

4004PinAssign

データバス,電源,クロック信号およびリセット信号はMSC-4で共通ですのでこちらをご覧下さい.ただし,SYNC信号は4004が出力になっており,他の4001や4002が入力となっています.

TEST端子

この端子名だけみると,4004が正しく動いているのか確かめるための端子のように感じますよね.実はこの信号の状態次第で分岐をするかを変えることができるピンなのです.従いまして,入力端子となっています.

CM-ROM

 この端子は4001(ROM)からインストラクションをフェッチしようとするとアサート(High)されます.そして,この端子は4001のCMに接続されます.4004は自動的にこのような動作をします.何のためにこの端子があるのかというと,4001のグループ(バンクといいます)を切り替えるときに用いられます.1バンクには16個の4001があり,最大で2バンク接続することができます.どのように使うかというと,バンクAとバンクBがあるとして,バンクAのCMはCM-ROMをそのまま接続し,バンクBのCMはNOTを介してCM-ROMを接続します.こうすることで,4001のバンクを切り替えられます.

CM-RAM0~CM-RAM3

 この端子は4002(RAM)にあるデータを読んだり,逆に書き込んだりするときにアサート(High)されます.4本の端子があり,それぞれRAMのグループに対応しています.