研究室用マイクロコンピュータ
システムの開発
(昭和49年8月31日受理)
Development of Micro Computer System
for a Laboratory use
小堀研一
伊藤誠
KenichiKOBORI MakotoITO Abstract Recently, great development of IC technique leads to practical use of LSI, and a single chip CPU begins to be available co皿nercially. This is a micro computer system which皿akes use of a single chip CPU. This system, which is easy to use, is similar to a mini computer system in its ability except for operating time. We adopt Computer.aided imple皿entation system for the development of this system.はじめに
最近のめざましいIC技術の発達によって,ますますICのLSI化が進み, CPUの機能標準化とあい
まって,1チップCPUが簡単に入手できるように
なった。そこでインテル社の1チップCPU8008を
使用し,研究室用のマイクロコンピュータシステム IDL−1を設計,製作したので,その構成,特徴につ いて報告する。1)なお,このシステムの製作は研究室 で,すでに開発されている設計自動化システム2)を用 いており,その実用化試験の意味も持っている。 1.ハードウェア・システムの構成 1.1 システム構成 システムは,図一1に示すよう,①バスコント ローラ,②パネル,③CPU,④メモリ,⑤タイ プライタ読み取りインタフェース,⑥タイプライ タ書き込みインタフユースを構成する6種類のユ ニットと,それらを結合するバスライソから構成 される。①∼⑥の各ユニットは1枚の基板で実装 され,IC40∼60個で構成される。 1.2 バスライン バスラインは,バスコントP一ラにより制御される, ユニット間のデータ転送線路である。 各ユニットはバスラインに対してすべて同じ形式で 情報の転送を行う。情報の転送を要求するユニットを マスタ,情報の転送を要求されるユニットをスレーブ という。またスレーブは固有のアドレスを持つ。 たとえば,マスタがスレーブに情報を伝送するには, スレーブのアドレスと伝送すべきデータをバスに送 る。スレーブは常にバスを監視しており,自分のアド レスが指定されたとき,そのデータをバスより“取り 込む”。この“取り込む”動作は各ユニットにより異 ユ ニ バ ス り一ド ヲ ト Cンタ㌃スインタフェーヌ巨当
CPU 言 惹 テレタイプ 装 置匿㌃
図一1システムブロック図なり,メモリユニットなら指定されたアドレスにデー タを記1[意し,タイプライタユニットならばその値を印 字/パンチする。すなわち,マスタはアドレスの値を 変更するのみでメモリの記Jl意,タイプライタの印字等 の機能を行うことができる。また,スレーブのデバイ スも特定のユニットのみとデータ転送するのでないか ら,複数個のユニットからの要求を満たすことができ る。 1.3バス接続ユニット 各ユニットの詳細は2節以後で説明するが,ここで は簡単に各ユニットの機能を紹介する。 1.3.ユ バスコントロt−一・ラ/パネル ユニット バスは1本しかないから,同時には一組のマスター スレーブ間の情報転送しかできない3)。複数個のマス タが同時にバスを使用しないようにバスをコントロー ルするのがこのユニットの役目である。また,パネル ユニットはバス内のデータ/アドレスを表示すると共 にスイッチ群による手動のマスタ動作を行う。したが ってメモリの手動による読み取り/書き込みはもちろ ん,タイプライタの読み取り/印字の指定も可能であ る。 1.3.2 CPUユニット このユニットの中心的役割を果すのは,1チップC PUと言われるLSI(8008インテル社)である4)。
本ユニットはCPUチップの機能をバックアップし
て,CPUチップの行う外部デバイス(メモリ/タイ プライタ)の転送要求よりバス・ラインをドライブす る。また,CPUチップは割り込み機能が貧弱なので この機能を強化する拡張命令をハードウユア化してい る。 る。 2.バス構成とバス・シーケンス 1.3.3 メモリユニット メモリにもスタティックLSIメモリを採用した。1つのLSIは256ビットであり,これを8×4個配
列して1Kバイトのメモリを実現している。このユ ニットはバスに対してスレーブの役目を持ち,マスタ から0∼1024のアドレス指定に対し,データの記憶/ 送出を行う。 1.3.4 タイプライタユニット このユニットは読み取り/書き込みユニットからな り,各ユニットは2つのアドレスを持つ。たとえば, 16進3FF8番地は,書き込みデータのバッファ・レジ スタのアドレスであり,このレジスタにバスよりデー タが転送されると,書き込みインタフユースはタイプ ライタ(テレタイプ社,モデルASR38)の仕様に従 った信号を生成し,タイプタイタに印字を開始させ 2.1 バス構成 バスラインは大きく分けて,制御線,アドレス線,データ線,FUNCTION線,割り込み線の5種類か
ら成っている。 制御線はバス要求,バス割り当てなどに関する線で あるが,これは2.3節で説明する。 アドレス線は14本あり,これによりアドレスの指定 を行う。各デバイスは固有のアドレスを持ち,各メモ リデバイスの他に入出力機器等のステイタスおよびバ ッファ・レジスタにも,アドレスが割り当てられる (表一1参照)。 データ線はパリティを含む18本から成っているが, 現在,扱うデータがバイトであるため,9本を使って データの転送を行っている。 割り込み線は割り込み要求(IRRQ)と割り込み認知(IRRN)の2つがある。 IRRQはバスに接続さ
れている他のデバイスからの割り込みの要求をCPU 表一1 アドレスー覧表 アドレス 名 前 機 能 0000 ∼07FF
3FFC
3FFB
3FFA
3FF9
3FF8
3FF4
3FF3
3FF2
3FF1
3FFO
メモリENT
TRS
TRB
TWS
TWB
OT
OS
DST
DES
DMA
パネルデータスイッチ タイプ入力ステイタス タイプ入力バッファ タイプ出力ステイタス タイプ出力バッファ ディスク・トラック ディスク・セクタ ディスク・ステイタス ディスク・エラー・ステイタス ディスク・メモリ・アドレス 表一2 バス構成表 名前 機 能1名
E 前 機 能BUSRQO
BUSRQl
BUSRQ2
BUSGRO
BUSGRl
BUSGR2
BUSBSY
RESPON
ADSYN
バス要求 バス割当BUS使用中
スレーブ応答 マスタ・同期 BAO(・13 BDO(ノ7BPL
BD8∼15
BPH
FUNO
FUNl
IRRQ
IRRN
アドレス データ BDO∼7のパリテ イ データ BD8∼15のパリテ ィ 通常R/Wの指定 割り込み要求 割り込み認知に知らせるラインであり,割り込みを要求したデバイ スに割り込みを受けつけたこと知らせるラインがIR
RNである。
FUNCTION線はデータの読み出しであるか書き
込みであるかの指定,およびデータの大きさが1バイ トか2バイトであるかの指定を行う。 2.2 バスコントローラの機能マスタデバイスより要求(BUSRQ)が出された
時,これを受け取り,許可(BUSGR)を決定するのが バスコントP一ラである。マスタになりたいデバイス はバスコントローラ1こBUSRQを出し,コソトロー ラはその要求に対しBUSGRを出すことができる。 許可信号を与えられたデバイスはバス使用宣言(BUS BSY)をした後,バスの使用を開始する。 BUSRQ信号はBUSRQO, BUSRQ1, BUSRQ2の3本あり,
この順の優先順位をもつ。したがって,BUSGR信号も各BUSRQ信号に対して1本ずつある。現在,
BUSRQOはディスクのDMAに, BUSRQ1はパネ
ルにBUSRQ2はCPUに割り当てられている.
2.3 バス・シーケンス あるデバイスがマスタとなり,データの収集・伝送 を行い,終了後バスを放棄する過程をバス・シーケソ スと呼ぶ。シーケンスは次の順序で行われる。 ① バス要求(マスタ→コントP一ラ) BUSRQ信号によりバスコントPt・一ラにバス割り 当て要求を出す(BUSRQには3レベルある)。 ②バス許可(コソトローラ→マスタ) コントローラは,バスが使用中でなければ,BU SGR信号によりバスを割り当てる (この信号も 3レベルある)。あるレベルでの使用中,優先レベルのBUSRQ信号がきてもBUSGR信号は
バスの使用が終わるまで待たされる。 ③スレーブの指定(マスタ→スレーブ) バス許可が与えられたらマスタは,まず,BUSB SYを宣言してバスを使用することを示す。つぎ にバスのアドレス線にスレーブのアドレスを送出 する。データ送信ならばバスのデータ線にデータ を送出する。 ④同期(マスタ→スレーブ) マスタはアドレス送出後,ADSYN(同期)信号 を宣言する。各デバイスは,ADSYN信号でアド レスをサンプルしてマスタからの指示を知る。 ⑤ スレーブ応答(スレーブ→マスタ) マスタからのアドレス指定でスレーブになったデ バイスは,RESPON(応答)信号を送出する。 信号 送信側 ・−aRQ−
l一一一L_マスタ捌ス
ーBGR−・U・ント・一う
一舶SY「〕「一一一一一マスタデ・縮
一RESP・rL_一一スレイrr…(x
−BUSBS〒L___」「マスタ翔ス
図一2バスコントP一ル・タイムチャート 図一3バスーデバイス接続図 BUSR鳥 BVS(}RBUSBSY
ADSYN
RESIPON また,マスタの要求がデータ収集なら指定アドレ スのデータをバスに転送する。逆に,マスタから のデータ送信ならバスのデータを指定アドレスに 記憶する。 ⑥バスの放棄(マスタ→コントローラ,スレーブ)マスタは,動作が終わるとBUSBSYの送出を
終了することにより,バスの使用終了を宣言す る。これに伴いスレーブはデータの送出を停止 し,コントローラは次のバス割り当てを行う。 図一2にこのタイムチャートを,図一3にバスコン トローラ,マスタデバイス,スレイブデバイスとユニ バスとの結合および信号線の出入りを示す。 3. バスコントロール/パネルユニット 本節以後で各ユニットの機能を紹介する。バスコソ トロール/パネルユニットは次の機能を持つ。 3.1 バスコントロP−−eル バスコントロ 一一ラの動作は次の2つである。 ①バスが解放されているとき,その時点で最優先 の要求に対し許可が決定される。 ②バスが使用中であれば使用中のデバイスの使用 が終了するのを待ち,バスが解放された後許可を 決定する。3.2手動バス制御機能 パネル上のスイッチにしたがって,バスに接続する 任意のメモリ・レジスタとの情報交換を行う。したが ってパネルから直接メモリや入出力機器にアクセスで きる。たとえばメモリのリード/ライトならば,パネ ル上のアドレススイッチによって読み出し/書き込み のアドレスを指定し(書き込みならデータスイッチに
よってデータを指定し),さらにREAD/WRITE
切替スイッチを設定した後,R/Wスタートボタンに よりバス上にデータが送出される。 3.3 CPUモード制御CPUはRUN, SINGLE, ADDRESS STOPの
3つのモードで制御される。①RUN
連続したプログラムの処理を行う。②SINGLE STEP
プログラムを1マシンサイクルずつ実行する。つまり1マシン実行ごとにCPUのREADYラ
インを0にし,WAIT状態にする。パネルの
STARTボタンにより次のマシンサイクルが実
行される。③ADDRESS STOP
バス上のアドレスとコンソールパネル上のアドレススイッチの値が一致した時,CPUをWAIT
状態にする。この機能も,アドレスー致がとれたときCPUのREADYラインを0にすること
により実現している。CPUの始動は, CPUがWAITのときはREA
DYを1に, HALT状態のときは割り込み信号を生
成して行う。この始動は,パネル上のSTARTボタ
ンによる。またパネル上のSTOPボタンによりCP
UはWAIT状態に入る。
3.4 バス内容表示 ・ミスのBUSBSY線が立ち上がった瞬間,バスの データ線とアドレス線の内容をサンプル/表示する。 これによりバスの内容をモニタできる。 4. CPIJユニ:ット4.1 1チップCPU
このCPUユニットは外部メモリより命令を取り
出し,実行する機能を持つが,①外部デバイスと情報 転送を行うにはユニバスとの整合(インタフェース) をとる必要がある,②割り込み機能が貧弱であるの で,ハードウーエアで拡張命令を実行できるようにす る必要がある,の2点を補なうため,30程度のMSI /SSI ICを補強する必要がある。4.1.1 1チップCPUの命令群
参考のため1チップCPU(以後CPUと略する)
の命令を簡単に述べる。 A.転送命令CPUには内部レジスタが7つあり,それらを
A,B, C, D, E, H, Lと略記する。これらの内部レジスタ間のデータ転送を行うのがMOVE
命令であり,アセンブラではMV rs rd と記 述する。この命令により,rsレジスタ(以後レ ジと略する)より,rdレジに値が転送される。 外部とのデータ転送には,MV rs M, MVMrd命令を用いる.前者はrsレジの値を外
部に伝達し,後者は外部の値をrdレジに読み込 む。外部の値は,HレジとLレジの連結した値を アドレスにもつユニットにより決定される。たとえば,(H.L)=100と設定した後,MVAM
の命令を実行させると,アドレス100番地のユニ ット(この場合メモリ)にAレジの値が転送(記 憶)される。また,(H.L)ニ3FFAと設定し,MVMBを実行するとタイプライタより読
み取った値がBレジに転送される(tc −1参 照)。 B.演算命令2項演算は,すべてAOPr→Aの形で行われ
る。1オペランド指定形式である演算として,2 進加減算,論理演算等16種類ある。その他に単項 演算としてシフト,インクレメント/デクレメン ト命令も用意されている。 C.制御/リンク命令 制御条件としては,C(carry), S(sign), P (parity), Z(zero)の4種類のフラグがあり,こ れらのフラグの条件によって任意のアドレスにブ ランチすることができる。サブルーチンリンクの ためにはコール/リターン命令があり,CPU内 部の7重のスタックを利用してリンクしている。 したがって,7重以上にネストしたサブルーチン リンクはできない。表一3は以上の命令の一覧表 である。 4.1.2割り込み機能の強化 CPUの割り込み機能は,割り込みがあったとき, 割り込み信号を受け付けたことを後述するT、1状態 で知らせた後,外部から命令を読み取るだけである。 割り込みを行うには,①割り込み命令の生成,②割り 込みマスクのセット/リセット,③割り込み時のCP・転送命令
表一3命令一覧表
MV rs・dll1DDDSSS l(rs)→・d
MVI r
DATA
BBBBBBBB
00DDD110
DATA→r
・演算命令INC r
100DDDOOO l(・)+1→rrキA
DCR r
100DDDOOI l(・)−1→rrキA
AD r
[・0000SSS](A)+(・)→A
ADI
DATA
AC r
ACI
DATA
SU r
SUI
DATA
SB r
SBI
DATA
ND r
NDI
DATA
XR r
XRI
DATA
OR r
ORI
DATA
CP r
CPI
DATA
00000100
BBBBBBBB
10001SSS
00001100
BBBBBBBB
(A)十DATA→A
(A)十(r)十Carry→A(A)十DATA十Carry→A
10010SSS
[(A)一(・)→A00001010
BBBBBBBB
10011SSS
00011100
BBBBBBBB
10100SSS
00100100
BBBBBBBB
10101SSS
00101100
BBBBBBBB
10110SSS
00110100
BBBBBBBB
10111SSS
00111100
BBBBBBBB
(A)−DATA→A
{(A)一(・)−B・rr・w→A(A)−DATA−Borrow→A
(A)Ar→A(A)ADATA→A
!(A)㊤(・)→A(A)㊥DATA→A
1(A)V(・)→A(A)VDATA→A
(A)一(r) (A)と(r)を比較し てコンデションFFをセット(A)−DATA (A)とDATA
を比較してコンデンションFF をセットRL
100000010
1ビット左回転RR
100001010
1ビツト右回転RLC
RRC
00010010
00011010
キャリーFFを通して1ビット 左回転 キャリーFFを通して1ビット 右回転 。制御/リンク命令JMP c
Address L Address HCAL c
Address L Address HRET c
RST
01CCCUOO
BBBBBBBB
BBBBBBBB
01CCCU10
BBBBBBBB
XXBBBBBB
lOOCCCU11
1・・AAA…
コンデションCによりメモリア ドレス(H−L)にジャンプ コンデションCによりメモリア ドレス(H−L)のサブルーチンをCALLする
1コンデショ∠cによりリターン メモリアドレスAAAOOOのサフルーチンをCALLする
HLT
111111111 1計算を停止
r:レジスタ名 SSS:転送するレジスタ DDD:転送されるレジスタ XXX:Don,t careU=1:無条件JUMP, CALL, RETURN
U=・O:条件付JUMP, CALL, RETURN
Uの状態の退避が必要であるが,これらの機能はCPUに含まれ
ていない。CPUユニットでは, これらの機能を実行するハードウ ェアを装備した。これらの命令はCPUの INPUT/OUTPUT
命令を利用した。 4.1.3 CPUの制御線と動作このCPUには表一4に示す
よ うに, PCI (InstructionFe tch), PCR(Data Reading), PCW(Data Writing), PCC(1/OOperation)の4つのサイクル
が定義されている。PCIは命令
のフェッチを行うサイクルで,す べての命令に共通であり,このあ とに続くサイクルは命令によって 異なる。1つのサイクルは通常, T1, T2, T3, T、, T、の5つの状 態から成る(T4, T5が命令によ り省略される)。1バイト命令の場 合T、で外部メモリに対するアドレ スの下位8ビットを送出し,T2で 上位6ビットを送出する。T3にお いてバスより命令をフェッチし, T、,T,で命令の実行を行う。サ イクル終了後,割り込みの有無を調べ,あればTIIの割り込み状
態に移行する。2(3)バイト命 令の場合は2(3)マシンサイク ルが必要であり,第1マシソサイ クルで命令の取り出し,第2,3 で外部ユニットとの情報転送を行 う。 8008は図一5に示すような2相 のクロックψi,φ2と,これらの前後に区別するSYNC信号で動
くため,1つのステイトはφ11, φ、2,φ21,φ22の4相クロツクで構成される。MVMr命令を例
にとってステイト,サイクル,ク ロックのシーケンスを説明する。この命令はPCIとPCRの2つ
のサイクルを必要とする。図一6に示すようにPCIサイクルで命
揚曳
割り込み命令 は完全に実行され たか 命令は完全に実 行されたか 割り込みが このサイクル中 にあ⇔たか 図一48008のステイトとその状態遷移図表一4 CPUサイクル
CCO CC・1サイク・レ1
動 作 0 0 PCI l命令の第1・・イトフェ・チ 0 1PCR
2, 3バイト命令での2バイト,3バイト目のフェ ッチ,メモリ読み出し命令の実行 1 0PCC
入出力命令の実行 1 1PCW
メモリにデータ書き込み φ、 φ2SYNCゴー一「L_∫
図一58008マシンサイクル 令のフェッチを行う5)。この場合のPCIサイクルは T1, T、, T3の3つのステイトで構成されている。つ ぎにPCRサイクルに移行し, T1, T、でLレジ, H レジに記憶されているアドレス情報を送出する。つぎ に,T3でバスからデータを読み, T5でレジスタへ 転送する。ここでbレジはテンポラリレジスタとして 使用している。また各状態はφ1、からφ22の4クロックで動作し,たとえば,PCIのT2でアドレスが
CPUから送出されるのはφ22のタイミングである。 またPCRのT3で, CPUはφ、2のタイミングでデー タを取り込むから,この時点までにバスにデータが読 み出されている必要がある。 以上,述ぺてきたステイトやサイクルを外部に知ら せるラインがあり,これらを調べることによりCPU
の内部状態を知ることがで きる。ステイトは,表一5に示すようなCPUのステ
イタス信号(S。,S、, S、) をデコードすることによっ て,サイクルは,T2のタ イミングでアドレスの上位 6ビットといっしょに出力 されるサイクル制御ビット (CCO, CC1)1こよって判別できる。またCPUから
出力されるSYNC信号
とφ1,あるいはφ2との ANDをとることにより, φ11からψ22までのクロッ クの区別がなされる。CPUにはREADY線
があり,これを0にするとCPUはT、, T,の次に
WAIT状態に入り, REA
DY線が1になるとT3に
推移する。このREADY
線によりCPUの処理を一時中断させることができ
る(図一4参照) 4.2 CPUとバスの結合 CPUとバスの接続において,これを制御する回路 を図一7のように付加しなければならない。 Hレジ,Lレジは,それぞれT1, T2のタイミン T3 T1 T2 φ・・φ12φ瓢φ田 バス←プログラム バス←フVグラム インストラクシ,ン カウンターe位アドレス カウンタ上位アドVス Vジ←バス PCl サイクル アドvス(H)(L)繊
T1 T2 パス←(L)バス←(H) T3 b←パス PCR サイクル T4 T5 r・一(b) 図一6命令のステイトとサイクル表一5ステイトコントロールの符号化 SoSIS2 ステイト 0 1 0 T1 0 1 1 TII 0 0 1 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 T2