JPH0214731B2 - - Google Patents
Info
- Publication number
- JPH0214731B2 JPH0214731B2 JP61055200A JP5520086A JPH0214731B2 JP H0214731 B2 JPH0214731 B2 JP H0214731B2 JP 61055200 A JP61055200 A JP 61055200A JP 5520086 A JP5520086 A JP 5520086A JP H0214731 B2 JPH0214731 B2 JP H0214731B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- bit
- bits
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
下記の順序で本発明を説明する。
A 産業上の利用分野
B 従来技術
C 発明が解決しようとする問題点
D 問題点を解決するための手段
E 実施例
E−1 用語集
E−2 プロセツサのハードウエア機構
E−3 割込みアーキテクチヤ
E−4 命令セツト
E−5 付加的なプロセツサ機構
E−6 付 表
A 産業上の利用分野
本発明は一般的にはデータ処理システム、特に
フーリエ変速、デイジタル・フイルタ、圧縮符号
化等の高速の、反復的な計算を行なうのに適合し
たデイジタル信号処理コンピユータに関する。 B 従来技術 従来、種々の高速信号プロセツサが存在してい
る。例えば米国特許第4041461号は、そのような
設計の1つを説明している。それは、信号処理ア
ルゴリズムを実行できるだけでなく、後処理及び
表示フオーマツテイング機能を行なう事もできる
汎用の高速プロセツサである。このプロセツサ
は、パイプライン方式のアーキテクチヤを用いて
設計され、バルク記憶装置、作業用記憶装置及び
算術演算要素制御記憶装置に接続された別個の記
憶装置、制御装置を用いている。算術演算プロセ
ツサに加えて余分の制御プロセツサを付加すると
良い特性が得られるが、単一の回路チツプ上に容
易に収容できるよりも多くのスペース及び複雑性
を必要とする可能性がある。また、コスト及び相
互接続の複雑さを、好ましくない程度にまで上昇
させる。 もう1つの従来技術は、米国特許第4438488号
(特公昭58−40214号)である。ここでデータ処理
システムは、ホストCPU及びホスト主記憶に接
続されたスレーブ・コンピユータを有しており、
2つのコンピユータはホスト主記憶のDMAを通
じてインターフエースされる。2台の別個のコン
ピユータを使用する事は、信号源における直接的
な処理が望ましい多くの例の下での信号処理に役
立たない。 もう1つの従来技術は、米国特許第4393468号
(特表昭58−500424号)である。ここでは複数の
並列なパイプライン方式のプロセツサ及び特に5
つの独立にプログラム可能なサブシステムが、同
時的動作のために設計されている。それが半導体
の1つのチツプの上に集積可能であるにもかかわ
らず、付加的な複雑さ及びコストは、それをより
望ましくないものにしている。また5つの同時的
に可能な機能は、より汎用的な割込み駆動の機械
及び割込み駆動の機械に伴なうプログラム可能に
制御できる機能に役立たない。 もう1つの従来技術は、米国特許第4270181号
(特公昭60−24985号)である。ここでは別個のパ
イプラインがアーキテクチヤ的に含まれていて、
それらは条件付データ以外のデータに対して、一
連の動作を行なうための主パイプライン及び条件
付データを処理するための第2パイプラインより
成り、2つのパイプラインは同期的に動作する。 最後に、米国特許第4025771号は別の型のパイ
プライン式アーキテクチヤを説明している。ここ
では算術演算ユニツトにおける命令実行のオーバ
ーラツプが、カスケード式に接続された複数のレ
ジスタに一連の命令をステツプ式に移動させ、1
つ以上のデータ処理経路中の対応する段階の制御
のために、レジスタ中の各命令を別々にデコード
する事によつて行われている。各段階は、制御さ
れるパイプライン中に1つのレジスタを外見上有
し、各段階毎に別個のデコーデイング・レジスタ
が存在する。これはデータのブロツク又は配列に
対する高度に反復的で構造化された動作を促進す
るが、割込み駆動式の機械又は望ましいコストの
削減や単純化には役立たない。 各々の制御レベルが対応する処理レベルに結合
された、直列に結合された制御レベルという基本
的概念も米国特許第3875391号に示されている。
これはプログラム可能な算術演算制御装置及び制
御装置により制御されるパイプライン式算術演算
ユニツトを含む。2つの別個の制御装置、即ち算
術演算制御装置及び処理制御装置は、複雑であ
り、割込み処理機械を容易にしない。 C 発明が解決しようとする問題点 従来技術の前述の欠点を考慮すると、本発明の
目的は、単一の装置が割込み駆動モードで、完全
にパイプライン化された命令及びデータ・フロー
を制御する事のできる改良された信号プロセツサ
を提供する事である。 本発明の他の目的は、割込みが発生した時に処
理されていた命令のアドレスを実行するように、
機械を回復させるためのインターロツクを割込み
制御論理が備えた、改良されたパイプライン式信
号プロセツサを提供する事である。 本発明の他の目的は、エラーが発生した時に実
行されていた実際の命令についての適当な記録が
通常は取られないままになるような、複合命令に
おいて生じたエラーから回復するための手段が設
けられた、改良された割込み駆動パイプライン式
信号プロセツサを提供する事である。 D 問題点を解決するための手段 信号プロセツサは、多数の反復的な信号処理機
能に適合した新しいアーキテクチヤを、特別な単
一チツプとして実現したものである。このデバイ
スは、本質的には、信号処理に共通に関係したあ
る種のタスクを、能率的に処理する事を可能にす
るアーキテクチヤ上の特徴を備えた高速、新規な
単一チツプ・マイクロプロセツサである。特に、
順次的な乗算−累算動作は非常に効率的に行なう
事ができる。 プロセツサのアーキテクチヤ及び命令セツト
は、プロセツサが典型的な信号処理のタスク、例
えばフイルタリング及び相関、並びにより一般的
なハウスキーピング及び算術演算のタスクを効率
的に実行できるように設計されている。使用され
る命令セツトのサブセツトは、信号処理に関係し
たタスクに特に役立ち(下記の「複合」命令)、
一方他の命令即ち、より普通の命令はその性質上
より汎用的な傾向がある。 これらの改良を与えるための、本発明の良好な
実施例は、2つの領域でパイプライン化されたプ
ロセツサである。即ち、命令は一般に3相のパイ
プライン(取り出し、デコード及び実行)を通
り、乗算器は2相のパイプラインを使用する。デ
ータ・フローは並列であり、全体的に16ビツト幅
である。命令記憶装置はデータ記憶装置とは分離
している。しかしながら、プロセツサは、それ自
身の命令記憶装置を2つの間接プログラム・アク
セス(IPA)命令、IPA読取り及びIPA書込みに
よつて、読み書きするための機構が設けられてい
る。このプロセツサのいくつかの命令は、複数の
実行動作を起こさせる。これらの「並行」又は
「複合」命令は、例えば同時的な転送動作(記憶
装置又はI/Oからスタツクへ又はその逆)及び
データ・フローの別個の領域での計算動作を起こ
させる事ができる。従つて、ロード(又は記憶)
及び計算動作が、単一の複合命令で指定できる。 プロセツサの算術演算機構には、乗算器と
ALUの両方が含まれている。乗算器によつて形
成された積はALUの入力オペランドとして選択
する事ができ、従つて積をアキユムレータに合計
する事が非常に効率的なプロセスになる。 このプロセツサは、割込み駆動式に設計されて
いる。その割込み機構は、最大限の柔軟性を可能
にしながら、最小限のハードウエアを用いて実現
されるように設計されている。2つの直後メモ
リ・アクセス(DMA)モードが、この設計で許
されている「ストツプ・モード」DMAでは、プ
ロセツサは停止する事を要求され、その命令記憶
装置及びデータ記憶装置のインターフエースを外
部装置に譲る。「サイクル・スチール」DMAモ
ードでは、プロセツサはデータ・メモリを、必要
としない時を示すインターフエース信号を与え
る。この信号は外部装置がデータ・メモリにアク
セスする事を可能にする。 このプロセツサは、ユーザにより機械制御レジ
スタ(MCR)を介して、起動できる広範な診断
能力を有している。それに含まれているのは、命
令メモリ、データ・メモリ及びI/O転送に対す
るパリテイ検査並びにALU及び乗算器の動作に
対するオーバーフローの検出である。診断能力
は、パイプライン・フローの範囲内で、エラーの
トレース可能性を保証する命令リンク制御
(ILC)によつて拡張される。プロセツサ中のス
テータス・レジスタは、ALUの状態、割込みの
ステータス及びパリテイ・エラーや算術演算オー
バーフローのような機械の検査についての、最新
の情報を、含んでいる。プロセツサは間接プログ
ラム・アクセス(IPA)読取り/書込み命令を用
いて、それ自身の命令記憶装置を読取り及び書込
みできるので、(ローカル又はリモートの)ホス
トから応用プログラムを取得し、それらを実行さ
せるために、命令記憶装置に置くためにそれ自身
の資源を利用する事ができる。 E 実施例 第1図に示すように、プロセツサの全体的な構
造は、2つの一般的な領域、即ち主データ・フロ
ー並びに、順序づけ及び制御論理に分割されるも
のと考えられる。主データ・フローは、種々のデ
ータの処理及び操作の要素を含むものと考えられ
る。これは第1B図のブロツク図の部分から成つ
ている。順序づけ及び制御の論理は、命令アドレ
ス・レジスタ(IAP)、命令デコード・レジスタ
(IDR)、アドレス生成(ADD GEN)加算器、
それに付属する共通アドレス・バス・レジスタ
(CABR)、インデツクス・レジスタ選択経路、
及び命令デコード論理を含み、第1A図の大部分
を構成している。 E−1 用語集 本明細書中では、多くの特殊な名前や省略語を
使用する。それらを、便宜のためここに要約し
た。 ハードウエアに関する用語及び省略語 バス: CDB=共通3状態データ・バス BMUXバス=ALUの「B」側の加数選
択バス CMUXバス=スタツクの「C」出力、
MCR、PSR選択バス LMUXバス=左4レジスタ・スタツク群
に関する入力選択バス RMUXバス=右4レジスタ・スタツク群
に関する入力選択バス IAB=命令アドレスプログラム記
憶装置に供給するアドレス・バス CAB=RAM及びI/Oアドレス
を供給する共通アドレス・バス レジスタ: R0〜R3=「左」群のスタツク・レジ
スタ R4〜R7=「右」群のスタツク・レジ
スタ MCRH=機械制御レジスタの上位16
ビツト(第8A図参照) MCRL=機械制御レジスタの下位16
ビツト(第8B図参照) PSRH=機械ステータス・レジスタ
の上位16ビツト(第9A図参照) PSRL=機械ステータス・レジスタ
の下位16ビツト(第9B図参照) IDR=命令デコード・レジスタ EXR=命令実行レジスタ CABR=RAM、I/O又はCDBに
宛てられた即値オペランド又は計算されたアド
レス用の保持レジスタ IAR=命令アドレス・レジスタ ILR=割込み処理中に戻り先アド
レスを保持するレジスタ IRWC=インターフエース読取り/
書込み制御レジスタ(表7参照) RPP=部分積パイプライン・レジ
スタ(乗算器中) RP=積レジスタ(乗算器中) (注) 下記の3つの「レジスタ」は物理的な
レジスタではなく、積レジスタRPから選択
された16ビツトの部分である。 RPL=RPから選択された下位の
積の値 RPM=RPから選択された中位の
積の値 RPH=RPから選択された上位の
積の値 他のハードウエア要素: ADD GEN加算器=即値オペランド、RAMア
ドレス又はI/Oアドレスを形成するのに使わ
れる加算器 ALU=算術論理演算ユニツト RAM=読取り/書込み可変記憶装
置(16ビツト・ワード) 命令フオーマツトに関する用語 種々の制御フラグ: IX=インデクシング制御フイールド(表3参
照) FUN=ALU機能制御フイールド(表5参照) (注) 下記のフラグ・ビツトの使用法に関し
ては、第5図を参照されたい。 RXL=乗数(「X」)値選択制御フラグ LPH=下位積クロツク制御フラグ UE=アンクロツクALU条件エネーブル・フ
ラグ II=割込み禁止フラグ SI=ALU結果−スタツク禁止フラグ AI=ALU A入力エネーブル・フラグ CIE=ALUキヤリー入力エネーブル・フラグ ME=乗算器サイクル・エネーブル・フラグ RE=レジスタ選択拡張フラグ スタツク入力/出力選択フイールド: SA=スタツク「A」出力選択フイールド及び
ALU結果宛先選択フイールド(スタツクから
ALU「A」入力へ;ALU出力からスタツクへ) SC=スタツク出力選択フイールド(スタツク
からCMUXバスへ) SD=スタツク・ロード宛先選択フイールド
(CDBからスタツクへ) 分岐制御フイールド: BT:=分岐型フイールド(第5図及び第6A図
〜第6D図参照) BCS=分岐条件選択コード(第5図及び表4参
照) 種々の規約及び用語 記号の規約: <……>=……の内容 (……)=……により特定される R@……=……により特定されるレジスタ |……|=……の大きさ =論理的否定(ビツト反転) E−2 プロセツサのハードウエア機構 主なデータ・フローは、「スタツク」レジス
タ・フアイル1、ALU2、乗算器3及びそれらの
要素を接続する種々のバスより成る。これらの要
素は本明細書の、下記の小見出しを付けた節で
各々解説される。なお、表1〜表7は「発明の詳
細な説明」の末尾にまとめられている。 共通データ・バス(CDB) プロセツサの主なデータ・フローは、16ビツト
の共通データ・バス4(CDB)の周囲で組織化
される。CDBは、16ビツトのデータ・ワードを
信号プロセツサの種々の要素の間並びに外部デー
タ・メモリ及びI/Oへ、又はそれらから転送す
るのに役立つ。 CDBは2つの別々の部分より成る。1つはチ
ツプ上の部分であり、もう1つはチツプ外の部分
である。その区別は名前の通りである。データが
チツプ内でCDB上を移動される時、CDBの外部
部分は付勢されない。従つて、例えばもし即値オ
ペランドが共通バス・アドレス保持レジスタか
ら、レジスタ・フアイル1の入力へ内部CDBを
経由して移動されたとすると、外部CDBは高イ
ンピーダンス状態のままである。CDBの外部部
分(内部部分に加えて)は、データ記憶装置
(RAM)又はメモリ・マツプI/Oへのアクセ
スが必要になる毎に使用される。ロード
(LOAD)及び記憶(STORE)のような命令の
実行は、データがレジスタ・フアイル(チツプ
上)とデータ・メモリ(RAM)又はメモリ・マ
ツプトI/Oとの間で移動される事を必要とす
る。 18本のCDB信号線(16本のデータ・ビツト及
び2本のパリテイ・ビツト)が、RAM(データ
記憶装置)及びメモリ・マツプトI/O
(MMIO)装置の接続のための、外部CDBチツ
プ・インターフエース中に設けられている。単純
なメモリ構成が第1図に概略を示されている。 Cマルチプレツクス式バス(CMUXバス) CMUXバス6は、レジスタ・スタツク1の
「C」出力又はMCRレジスタ8又はPSRレジスタ
9から、変数を演算装置(ALU2又は乗算器3)
へ又は共通データ・バス(CDB)4へ移動させ
るための、データ経路を提供する3状態バスであ
る。 Bマルチプレツクス式バス(BMUXバス) BMUXバス10は、ALU2の「B」入力への
データ経路を与える。BMUXバス10へ可能な
入力は乗算器3、CMUXバス6の内容又は符号
拡張データ(PSRH9のビツト06から)からの選
択された積部分である。 左マルチプレツクス式バス(LMUXバス)及び
右マルチプレツクス式バス(RMUXバス) LMUXバス11及びRMUX12は、レジス
タ・スタツク1の左及び右の入力ポートにデータ
を供給する。これらのマルチプレクスへの入力
は、CDB4及びALU2の出力から来る。データ
はCDB4から、真数形式及びバイト反転形式の
両方の形で取り出すことができる。バイト反転経
路は、バイトのロード/挿入命令(LIBY)を実
現する手段を提供する。 レジスタ・スタツク レジスタ・「スタツク」1は、算術演算フロー
経路中に位置する、R0〜R7の番号を付けられ
た、8個の16ビツトのレジスタのランダム・アク
セス・フアイルである。スタツク・レジスタのう
ち3つは、下記に示すような特別に割り当てられ
た機能を有している。他の5つは汎用レジスタで
ある。 R0−インデツクス・レジスタとしても使用さ
れるスタツク・レジスタ R4−第2のインデツクス・レジスタとしても
使用されるスタツク・レジスタ R5−現在の乗数(「X」)の値を含すためにも
使われるスタツク・レジスタ R1,R2,R3,R6,R7−特に定義された付加
的なハードウエア機能を持たないスタツク・
レジスタ 第1図に示すように、レジスタ・スタツクは2
つの入力ポートを有し、その各々は4つのレジス
タの群に入力経路を提供する。このレジスタ群は
本明細書中を通じて左群及び右群と呼ばれる。ス
タツクの入力は、共通データ・バス(CDB)4
又はALU2の出力(オーバーフローの場合に、
強制的な飽和値のために)から、到来しうる事に
注意されたい。各々の4レジスタ群の中の1つの
レジスタは、1つのソースから同時に入力を受け
取る事ができる。 スタツク1には2つの出力ポートも設けられて
いる。その各々は8個のスタツク・レジスタの1
つに同時にアクセスする事ができる。それらのポ
ートの1つ、「A」ポートは、データをALU2の
「A」入力に与え、他の「C」ポート7は、3状
態ドライバ13を経由してCMUXバス6に接続
されている。(他に多数の3状態ドライバが存在
するが、便宜上全て参照番号13を付け、特定のド
ライバはその入力に従つて名付ける事にする。 インデツクス・レジスタ(R0及びR4)は、ア
ドレス生成(ADD GEN)加算器14に入力を
与えるマルチプレクサに、直接接続されている。
また、レジスタR5は乗算器3の「X」入力に直
結されているので、常に乗数値として使用される
数値を含んでいる。被乗数は後述するように、
CMUXバス6を経由して供給される。 乗算器 12ビツトの数を16ビツトの数に掛けることので
きる乗算器3がプロセツサ中に設けられている。
本明細書中では、12ビツトの数を「乗数」値又は
「X」と呼び、16ビツトの数を「被乗数」値又は
「Y」と呼ぶ。16ビツトのR5スタツク・レジスタ
から、12ビツトの乗数値(「X」)として、上位12
ビツト(13番目のビツトを丸めたもの又は丸めな
いもの)、下位12ビツト、又は下位4ビツト(先
行するゼロを付加したもの)を、所望により選択
できる。乗算器は、2の補数の符号付き2進数の
みを取り扱うように設計されている。 乗算器は28個の積ビツトを発生する。これには
0〜27の番号が付けられ、上位、下位及び中位と
呼ばれる3つの選択可能な16ビツトの積部分
(RPH、RPL及びRPM)に分割される。各部分
を構成する実際のビツトは、乗数値が(乗算器パ
イプライン中のMSビツトによつてフラグされる
ように)乗算のために基準化(位取り)される方
式、及び機械制御レジスタ8中の中位積選択制御
ビツトMMM(MCRHのビツト10)の状態に依
存する。 種々の全ての条件の下での各積部分に含まれる
実際のビツトが、第10A図〜第10C図で要約
されていた。第10A図は乗数値「X」に関する
4つの可能な選択肢を示している。 積部分は各々、ALU2の「B」側に入力され
る。積部分の選択は、(記憶及び計算命令におけ
るように)命令の中に含まれるALU機能制御フ
イールド(FUN)によつて与えられるか、又は
(種々の計算命令におけるように)明示的に指定
される。 乗算器の動作は次の通りである。一般に、乗算
器によつて形成される全ての積ビツトは、被乗数
値が選択された後に2番目のサイクルに同時に現
れる。複合(又は並行)命令(OPコード=
1XXX)が、正規モード(MCRHビツト08=0)
で実行されている時、乗算器のパイプライン全
体、積レジスタ及び部分積レジスタの両者が、乗
算機能(機能コード1XXXX)が指定される毎に
移動する。また、下位積部分(RPL)がアクセ
スされる時にのみ、乗算器パイプラインのレジス
タが変化する事が許されるような第2モード
(MCRHビツト08=1)が提供される。この構成
は、ある倍精度の乗算/累算計算を1つ少ないス
タツク・レジスタを用いてプログラムする事を可
能にする。計算(C)命令は、積パイプラインのクロ
ツキングを制御するための2つの特別のビツトを
含んでいる。即ちビツト21、MEビツトは積パ
イプラインの全体的な制御を与え、ビツト5、
「LPH」ビツトはパイプラインのクロツキングを
部分的に禁止する事を可能にする。従つて以前の
部分積及び積の情報は、割込みに続いて回復でき
る。 割込み時の乗算器の保存−回復 高い性能を得るために、乗算器3はその回路ア
レイ中に中間パイプライン・レジスタを採用して
いる。これは第15図に示されている。パイプラ
イン・レジスタRPP及び積レジスタRPの内容
は、もし割込みルーチン中で乗算器3が使用され
るならば、プロセツサが割込みを受けた時に保存
し、そして回復しなければならない。さらに、乗
算器3の動作の状態を定義する別の因子が存在す
る。例えばMY中の乗数キヤリー及び乗数(X)
基準化情報等がそれであり、これも割込み時に保
存し回復しなければならない。それらの因子を定
義するビツトは、プログラム・ステータス・レジ
スタ(PSR)9中に含まれている。PSRを保存
し回復する事は、標準的な命令シーケンスを用い
て行なわれる。RP及びRPPレジスタを保存し回
復するには、特別の動作が必要である。 RP及びRPPの保存 前節で述べたように、乗算器3への乗数(X)
入力は、データ・フローの左側12ビツト又は右側
12ビツトのいずれかから選択できる。左又は右の
選択は、以前に説明したように乗算命令中のX入
力を識別するために使われる乗数ニーモニツクに
よつて定義される。この選択はPSR9中のZSビ
ツトとしてパイプラインを伝播し、MSビツト
(やはりPSR中の)として乗算器出力に現れる。
MSは、指定された乗数(X)の基準化を反映す
るように、積のビツト重みを調整するために使わ
れる。PSRをセツトする事によつて直接ZSを制
御する能力は、RPP及びRPの内容を保存し回復
するための戦略の鍵である。 RPの内容は、それを2つの部分RP1及びRP
2に分解する事によつて保存される。RP1は右
X基準化に関するRPの下位16ビツトであり、RP
2は左X基準化に関するRPの上位16ビツトであ
る。基準化の制御は、PSR9中でビツトを直接
セツトする事で行なわれる。RPの下位16ビツト
は右基準化によつて選択され、RPの上位16ビツ
トは左基準化によつて選択される。 RP1をレジスタに移すためにRPLが使われる
時、MYは使用されない。というのは、PSRが回
復される時にMYは直接に回復されるからであ
る。上記手続きが完了すると、乗算器3はRPM
の内容をRPへ移動するように制御され、この手
続きはRPPの以前の内容をRPP1及びRPP2と
して保存するために反復される。 RP及びRPPの回復 乗算器レジスタの内容を回復するための戦略
は、被乗数(Y)として保存された変数RP1+
RP1,RP2及びRPP2を、乗数(X)としての
適当な変数と共に使用して、変数が組み合された
時に適当なビツト重みを与える事である。例え
ば、積RPはRP1とRP2×2R12(即ち、左へ12
ビツト、シフトされたRP2)とをORした結果で
ある。 この動作を行なう時に2つの問題が生じる。第
1は、下位項RP1が(1を掛ける事によつて)
乗算器3に入れられる時に、それは第2の積が形
成される間に、不変のままでなければならない。
この問題は特殊な乗算命令、下位ホールド乗算命
令(MHRD)、命令中の下位積ホールド・ビツト
によつて解決される。これは計算命令の第5ビツ
トである。この命令はRPP及びRPレジスタの下
位ビツトへのクロツクをデケードし、上位ビツト
に第2の積が入る時に、その内容を固定したまま
に保つ。 第2の問題は、RPフイールドにおいて12ビツ
ト上にRP2を位置付けるという要求から生じる。
これは最初にRP2を2倍にし、次に211を掛ける
事によつて行なわれる。この後者の動作は、12ビ
ツトに丸めた時に211を与える(X′7FF8′のよう
な)正のXを用いる事によつて達成される。Xに
関するそのような値は、ALU2にMYキヤリー
を発生しない事に注意されたい。この事は重要で
ある。というのは、以前に注意したように、割込
み前のパイプライン中のMYキヤリーの値は、
PSR9が回復された時に、回復されるからであ
る。問題はRP2を2倍にする時に生じる。符号
エラーを生じ得るような、オーバーフローが起き
る事がある。これを避けるために、2*RP2の
符号である(PSR中に記憶された)キヤリーAY
が、乗算器アレイによつて計算された符号を、オ
ーバーライドするために使われる。これは、特殊
な命令MHRDによつて実行される付加的な機能
である。要約すると、MHRDは、乗算器のレジ
スタの内容を回復するための鍵となる2つの動作
を行なう。 1 乗算を行なうためにX選択から13番目の即ち
丸めビツトが使われる時、RPのRPLフイール
ド(及び右基準化を行なつたRPPに関する等
価なビツト)より成るビツトは変更されない。 2 PSR9中のキヤリー・ビツトAYが、乗算器
3中の符号生成をオーバーライドするために使
われる。 ALU 16ビツトのALU2によつて実行される機能の
制御は、計算(C)、「記憶及び計算」(STC)、並び
に「ロード及計算」(LXC)の型の命令の5ビツ
トの機能制御フイールド(FUNフイールド)に
よつて行なわれる。FUNフイールドは、実行さ
れる算術又は論理ALU動作を指定し、ある程度
まで使用されるALUオペランドを暗示する。表
5Aは、スタツク・レジスタがALUの「B」入力
として指定された時の、可能なALU動作を要約
している。表5Bは、ALUの「B」入力として積
レジスタが選択された時のALUの動作を示して
いる。 ALU2はその「A」入力として、8つのスタ
ツク・レジスタ1の1つの内容(又はゼロ)を取
り、その「B」入力として、BMUXバス10の
内容を取る。生じたALU2の出力は通常、「A」
入力を供給したスタツク・レジスタ1に返され
る。計算命令(C)において、SIビツト(表1参照)
は、ALUの結果がスタツクに書き戻されるのを
禁止する能力を与える。条件付き分岐は、ALU
で生じた計算結果によつてトリガされる。 機械制御レジスタ及びステータス・レジスタ 上位及び下位の機械制御レジスタ8(MCRH
及びMCRL)は各々、特別な機械の性能を制御
又は変更する16ビツトを含んでいる。上位及び下
位の機械ステータス・レジスタ9(PSRH及び
PSRL)は、機械の動作のある面の現在のステー
タスを反映するビツトを含む。 上位機械制御レジスタ(MCRH) MCRH8の16の利用可能なビツトのうち、12
ビツトは機能が割り当てられ、残りの4ビツト
(ビツト0〜3)は予備である。 MCRHビツトに割り当てられた制御機能は、
第8A図に要約したように、下記のような4つの
一般的なカテゴリーに入る。 MCRHのビツト4及び5、命令リンク制御フ
イールド(ILC)は、特別な動作モードをエネー
ブルし、それによつて分岐に続いてパリテイ検査
又はオーバーフローが起きた時に、命令リンク・
レジスタ15(ILR)及び命令アドレス・レジス
タ16(IAR)のクロツキングを禁止させる。こ
れらのモードの目的は、分岐の時点、即ちILR1
5が故障の場所を識別するために普通は使えない
時に、エラーのトレーシングを可能にする事であ
る。 MCRH8のビツト6及び7は、飽和制御モー
ド選択フイールド(SCS)を構成する。これらの
制御の目的は、スタツク又は積レジスタ・オペラ
ンドのいずれかに関係した動作のために、飽和さ
れた算術演算が呼び出される事を可能にするため
である。飽和が呼び出されるFUNコードは、表
5A及び5表に示されている。 MCRL8のビツト8〜12は、特殊な乗算器制
御ビツトである。それらの機能は第7A図に定義
されている。 MCRL8のビツト13〜15は、アドレス生成
(ADD GEN)加算器14内のキヤリーが禁止さ
れる場所を定義する選択フイールドを構成する。 命令が機械のデータ・フローの中に読込まれた
時、その命令の上位バイトはMCRH8のビツト
8〜15中に置かれ、3つの命令パリテイ・ビツト
はMCRH8のビツト5、6及びに行く。この移
動を行なう経路は、主データ・フローの概略(第
1図)中に示されている。 下位機械制御レジスタ(MCRL) MCRL8の16個のビツト(第8B図に要約)
は、下記のように5つの異なつた機能を制御す
る。 MCRL8のビツト0は、線型拡張アドレシン
グ機構(LEAF)の選択を可能にするフラグ・ビ
ツトである。このビツトがオン(ビツト=1)の
時、IRWCビツトの動作は、プロセツサ外部の
LEAFアダプタ論理の制御を容易化するように変
更される。 MCRL8のビツト1及び2は、共にプロセツ
サのデータ・アドレス空間内のI/Oアドレスと
データ・メモリ・アドレスとの間の境界を選択す
る手段を提供する。IOSの設定によつて指定され
た境界に関するアドレスの位置は、適当なIRWC
の組み合せ(表7参照)を経てインターフエース
に反映される。 MCRL8のビツト3、4及び5は、データ
RAM又はI/Oへの又はそれらからの(CDBを
経由する)データの移動及び到来する命令に対す
るパリテイ検査を禁止する事を可能にする。 MCRL8のビツト6及び7は、ALU2又は乗算
器3のオーバーフローが起きた時に、プロセツ
サ・リセツト(PROR)が開始されるか否かを制
御するために使われる。 MCRL8の最後の8ビツト、ビツト8〜15は、
各々レベル0〜7の割込みのサービスを禁止する
ために使われる。任意のレベルの未処理の割込み
は、対応するサービス禁止フラグがリセツトされ
ている(フラグ=0)場合にだけサービスされ
る。 上位機械ステータス・レジスタ(PSRH) PSRH9は、最後の機械サイクルの終了時の論
理回路のある部分の状態を反映する15個のビツト
(PSRH9の1つのビツト、ビツト5は割り当て
られていない)を含んでいる。特に、PSRH9
は、パリテイ検査がおこなわれる特定のバイト、
最後のALU2の動作によつて生成された条件、
並びに以前の2つの積に関する乗算器3(「X」)
の基準化及び積のキヤリーを示している。 全てのPSRHビツトが、第9A図に要約されて
いる。この要約から下記の事に注意されたい。 3つの命令バイト及び2つのCDBバイトに関
するパリテイ検査の状態が別々にPSRH9中に置
かれる。パリテイ検査が行なわれた時、そのバイ
トにエラーが生じたかをPSRH9から判定する事
ができる。 乗算で使われる「X」の値は、16ビツトのレジ
スタ(R5)から選択された12ビツトなので、乗
数基準化(MS)フラグは、PSRH9のビツト7
及び9を経由して伝播され、従つて得られた積は
適切に解釈される。ビツト9(ZS)は、部分積基
準化フラグであり、一方ビツト7(MS)は積基
準化フラグである。 PSRH8のビツト8及び10は、部分積の形成に
関係した未処理のキヤリー・ビツトを含んでい
る。ALU動作において「下位」の積部分がオペ
ランドとして選択される時、MYはALUのキヤ
リー入力として選択される。ALUは積が使われ
る時、このようにして下位積を完成させる。 PSRH8のビツト11〜15は、ビツト6と共に最
後のALU動作に関係した情報を含んでいる。
PSRH8のビツト6(BS)は、最後のALUの
「B」オペランドの符号を含んでいる。一方、ビ
ツト11〜15はALU2によつて行なわれた最後の
計算の結果(最後の結果の符号ビツト、最後の出
力=000……0、等)を反映している。 下位機械ステータス・レジスタ(PSRL) 第9B図に示すように、PSRL9のビツトに割
り当てられた意味は、PSRL9が読取られている
か又は書込まれ(ロードされ)ているかに依存す
る。実際、PSRL9は直接読取る事ができる(そ
の内容はスタツク・レジスタに移される)が、あ
るかなり複雑な論理を経由してのみロードする事
ができる8ビツトのレジスタと考える事ができ
る。 PSRL9と呼ばれる8ビツトのレジスタは、実
際には8つの割込みメモリ・ラツチの組である。
これらのラツチの各々は、特定の割込み信号が検
出された事を記憶し、通常その信号に関するサー
ビスが始まるまでセツト状態を保つ。割込みラツ
チは、対応する割込みエントリー・アドレスが、
命令アドレス・レジスタ16(IAR)にロードさ
れる時に(通常)リセツトされる。割込みメモ
リ・ラツチは、下記に概略を示すPSRL書込み命
令を用いてセツト又はリセツトする事もできる。
PSRL9が読取られる時、それはハードウエア中
で未処理の(又はプログラミングによつて未処理
の事もある)全ての割込みを反映する。 PSRL9がロードされる(書込まれる)時、実
際に起きる事はCDB4の内容が割込み制御論理
17への入力として受け取られ、第8B図の下方
に示したように解釈される事である。PSRLの書
込み形式は、16ビツトが2つの8ビツト制御バイ
トとみなされる事を要求する。それらは、4つの
割込み信号の群の各々に相当する。これら2群
は、2つの時分割割込み信号入力18で受信され
る信号に関する制御を含んでいる。 各群の制御バイト中で、最後の4ビツトは各ア
ドレス・ビツトとして役立ち、最初の3ビツトは
群の中の1つ以上のものに発行されるコマンドを
表わす。PSRL書込み形式のビツト3及び11は
「POWR」及び「PROR」リセツトが見い出され
る事を可能にする。発行できる3つのコマンド
は、下記のようにビツトによつて示される。 「CLR」(クリア)ビツトは、4つのアドレ
ス・ビツトによつて指定された割込みメモリ・ラ
ツチをリセツトさせる。PRORと一緒に使われる
群1のCLRは、「電源」又は「プロセツサ」のリ
セツト状態から機械を脱出させる。 「FRC」(強制)ビツトは、4つのアドレス・
ビツトによつて指定された割込みメモリ・ラツチ
をセツトさせる。群0及び群1のFRCコマン
ド・ビツトは、各々「電源」又は「プロセツサ」
リセツト条件を開始するために、POWR及び
PRORと共に使用される。 「TST+」(割込み信号の極性が+レベルかテ
ストする)ビツトは、割込み信号の極性が正であ
れば、4つのアドレス・ビツトで指定された割込
みメモリ・ラツチをセツトさせる。TST+コマ
ンドが実行されている時、それは実行時にインタ
ーフエース走査クロツクによつて走査されている
アドレスにのみ影響を与える事ができる。一時に
4つの割込み信号のうち1つだけしか走査されな
いので、単一の特別な割込み信号の極性をテスト
するためには(同じ1つのアドレス・ビツトの組
を有する)4つの連続したTST+コマンドを実
行する必要がある。 もし3つのコマンド・ビツトのうち2つ以上が
同じ群にセツトされていれば、下記の事が起きる
であろう。 他のコマンド・ビツトが何にセツトされている
かに無関係に、CLRコマンド・ビツトが常にク
リア動作を起こさせ、且つFRCコマンド・ビツ
トがTST+コマンドをオーバーライドする。 命令のパイプライン及び順序付けの制御 一般的な用語「順序付け及び制御の論理」は、
ここでは、順序に命令にアクセスし、分岐及び割
込みを起こさせ、そしてアクセスされた命令をデ
コードし実行するために使われる論理回路を示す
ために使う。順序付けの複雑さをある程度理解す
るために、最初にプロセツサ中の命令のパイプラ
インについて理解する必要がある。従つて、最初
にこれを説明する。 命令パイプライン 良好な実施例は、3相の命令パイプライン(第
11図に概略を図示)を利用している。即ち、任
意の与えられた時間に、1つの命令が命令記憶装
置から取り出され、一方以前に取り出された命令
は実行のためにデコードされ(且つそれに関係し
たオペランド又はアドレスが、もしあれば形成さ
れ)、そして以前にデコードされた命令は実行さ
れている。従つて、全ての命令(分岐命令を除
く)は、取り出し、デコード及び実行のための3
つの機械クロツク・サイクルを必要とするが、実
行速度は機械サイクル当り1命令である。 パイプラインのアーキテクチヤは、取り出され
る命令が機械の制御論理に対して「可視的」でな
いようなものである。命令は、それが取り出しサ
イクルの終了時に命令デコード・レジスタ
(IDR)19中に置かれた後でのみ、可視的にな
る。プログラム記憶装置20から取り出された各
命令は、最初に命令デコード・レジスタ(IDR)
19中に置かれ、新しい命令は各クロツク(立ち
上り)時にIDRにロードされる。 IDR中の命令は、後続する機械サイクル中にデ
コーダ論理21でデコードされ、その結果は次の
クロツク(立ち上り)時に実行レジスタ22
(EXR)にロードされる。 分岐命令も命令取り出しのために1機械サイク
ルを必要とし、2番目の機械サイクル中にデコー
ドされるが、IAR16は(分岐が行なわれると仮
定すると)2番目のサイクルの終了時に分岐先ア
ドレスをロードされる。分岐命令の3番目のサイ
クルには、通常何の付加的ハードウエア動作も起
きない。 アドレス/オペランドの形成 IDR19中の命令がデコーダ21でデコードさ
れている間、その命令のオペランド部分は、もし
存在すれば、アドレス生成(ADD GEN)加算
器14によつて操作される。この加算器14への
入力は、(表3に示すように)デコードされてい
る(IDR中の)命令から選択されたオペランド・
ビツト及び指定されたインデツクス・レジスタ
(R0、R4又はILR)の内容又は強制的ゼロであ
る。この加算の結果は、分岐命令の場合のように
即座に使用されるか、又はそれに関係したデコー
ド命令が実行レジスタ22(EXR)にロードさ
れるのと同時に、共通アドレス・バス・レジスタ
(CABR)5にロードされる。次に、CABR5の
内容は、EXR22の命令の実行中にCDB4にゲ
ートされる事も又共通アドレス・バス23を経て
RAM24にアクセスするためアドレスとして使
用される事もある。RAM24の内容は、CDB4
に置かれる。 ADD GEN加算器14がアドレスを形成する
ために使われる時、加算は、MCRH8のビツト
12、14及び15によつて制御される8つの選択され
た境界の1つの上で巡回するようにさせる事がで
きる(第8A図参照)。巡回インデクシングを実
現するためのこの方式は、ADD GEN加算器1
4中のキヤリー伝播を選択的に禁止する事に関連
している。キヤリヤー伝播は下記の表に示すよう
に、次の点で禁止する事ができる。
フーリエ変速、デイジタル・フイルタ、圧縮符号
化等の高速の、反復的な計算を行なうのに適合し
たデイジタル信号処理コンピユータに関する。 B 従来技術 従来、種々の高速信号プロセツサが存在してい
る。例えば米国特許第4041461号は、そのような
設計の1つを説明している。それは、信号処理ア
ルゴリズムを実行できるだけでなく、後処理及び
表示フオーマツテイング機能を行なう事もできる
汎用の高速プロセツサである。このプロセツサ
は、パイプライン方式のアーキテクチヤを用いて
設計され、バルク記憶装置、作業用記憶装置及び
算術演算要素制御記憶装置に接続された別個の記
憶装置、制御装置を用いている。算術演算プロセ
ツサに加えて余分の制御プロセツサを付加すると
良い特性が得られるが、単一の回路チツプ上に容
易に収容できるよりも多くのスペース及び複雑性
を必要とする可能性がある。また、コスト及び相
互接続の複雑さを、好ましくない程度にまで上昇
させる。 もう1つの従来技術は、米国特許第4438488号
(特公昭58−40214号)である。ここでデータ処理
システムは、ホストCPU及びホスト主記憶に接
続されたスレーブ・コンピユータを有しており、
2つのコンピユータはホスト主記憶のDMAを通
じてインターフエースされる。2台の別個のコン
ピユータを使用する事は、信号源における直接的
な処理が望ましい多くの例の下での信号処理に役
立たない。 もう1つの従来技術は、米国特許第4393468号
(特表昭58−500424号)である。ここでは複数の
並列なパイプライン方式のプロセツサ及び特に5
つの独立にプログラム可能なサブシステムが、同
時的動作のために設計されている。それが半導体
の1つのチツプの上に集積可能であるにもかかわ
らず、付加的な複雑さ及びコストは、それをより
望ましくないものにしている。また5つの同時的
に可能な機能は、より汎用的な割込み駆動の機械
及び割込み駆動の機械に伴なうプログラム可能に
制御できる機能に役立たない。 もう1つの従来技術は、米国特許第4270181号
(特公昭60−24985号)である。ここでは別個のパ
イプラインがアーキテクチヤ的に含まれていて、
それらは条件付データ以外のデータに対して、一
連の動作を行なうための主パイプライン及び条件
付データを処理するための第2パイプラインより
成り、2つのパイプラインは同期的に動作する。 最後に、米国特許第4025771号は別の型のパイ
プライン式アーキテクチヤを説明している。ここ
では算術演算ユニツトにおける命令実行のオーバ
ーラツプが、カスケード式に接続された複数のレ
ジスタに一連の命令をステツプ式に移動させ、1
つ以上のデータ処理経路中の対応する段階の制御
のために、レジスタ中の各命令を別々にデコード
する事によつて行われている。各段階は、制御さ
れるパイプライン中に1つのレジスタを外見上有
し、各段階毎に別個のデコーデイング・レジスタ
が存在する。これはデータのブロツク又は配列に
対する高度に反復的で構造化された動作を促進す
るが、割込み駆動式の機械又は望ましいコストの
削減や単純化には役立たない。 各々の制御レベルが対応する処理レベルに結合
された、直列に結合された制御レベルという基本
的概念も米国特許第3875391号に示されている。
これはプログラム可能な算術演算制御装置及び制
御装置により制御されるパイプライン式算術演算
ユニツトを含む。2つの別個の制御装置、即ち算
術演算制御装置及び処理制御装置は、複雑であ
り、割込み処理機械を容易にしない。 C 発明が解決しようとする問題点 従来技術の前述の欠点を考慮すると、本発明の
目的は、単一の装置が割込み駆動モードで、完全
にパイプライン化された命令及びデータ・フロー
を制御する事のできる改良された信号プロセツサ
を提供する事である。 本発明の他の目的は、割込みが発生した時に処
理されていた命令のアドレスを実行するように、
機械を回復させるためのインターロツクを割込み
制御論理が備えた、改良されたパイプライン式信
号プロセツサを提供する事である。 本発明の他の目的は、エラーが発生した時に実
行されていた実際の命令についての適当な記録が
通常は取られないままになるような、複合命令に
おいて生じたエラーから回復するための手段が設
けられた、改良された割込み駆動パイプライン式
信号プロセツサを提供する事である。 D 問題点を解決するための手段 信号プロセツサは、多数の反復的な信号処理機
能に適合した新しいアーキテクチヤを、特別な単
一チツプとして実現したものである。このデバイ
スは、本質的には、信号処理に共通に関係したあ
る種のタスクを、能率的に処理する事を可能にす
るアーキテクチヤ上の特徴を備えた高速、新規な
単一チツプ・マイクロプロセツサである。特に、
順次的な乗算−累算動作は非常に効率的に行なう
事ができる。 プロセツサのアーキテクチヤ及び命令セツト
は、プロセツサが典型的な信号処理のタスク、例
えばフイルタリング及び相関、並びにより一般的
なハウスキーピング及び算術演算のタスクを効率
的に実行できるように設計されている。使用され
る命令セツトのサブセツトは、信号処理に関係し
たタスクに特に役立ち(下記の「複合」命令)、
一方他の命令即ち、より普通の命令はその性質上
より汎用的な傾向がある。 これらの改良を与えるための、本発明の良好な
実施例は、2つの領域でパイプライン化されたプ
ロセツサである。即ち、命令は一般に3相のパイ
プライン(取り出し、デコード及び実行)を通
り、乗算器は2相のパイプラインを使用する。デ
ータ・フローは並列であり、全体的に16ビツト幅
である。命令記憶装置はデータ記憶装置とは分離
している。しかしながら、プロセツサは、それ自
身の命令記憶装置を2つの間接プログラム・アク
セス(IPA)命令、IPA読取り及びIPA書込みに
よつて、読み書きするための機構が設けられてい
る。このプロセツサのいくつかの命令は、複数の
実行動作を起こさせる。これらの「並行」又は
「複合」命令は、例えば同時的な転送動作(記憶
装置又はI/Oからスタツクへ又はその逆)及び
データ・フローの別個の領域での計算動作を起こ
させる事ができる。従つて、ロード(又は記憶)
及び計算動作が、単一の複合命令で指定できる。 プロセツサの算術演算機構には、乗算器と
ALUの両方が含まれている。乗算器によつて形
成された積はALUの入力オペランドとして選択
する事ができ、従つて積をアキユムレータに合計
する事が非常に効率的なプロセスになる。 このプロセツサは、割込み駆動式に設計されて
いる。その割込み機構は、最大限の柔軟性を可能
にしながら、最小限のハードウエアを用いて実現
されるように設計されている。2つの直後メモ
リ・アクセス(DMA)モードが、この設計で許
されている「ストツプ・モード」DMAでは、プ
ロセツサは停止する事を要求され、その命令記憶
装置及びデータ記憶装置のインターフエースを外
部装置に譲る。「サイクル・スチール」DMAモ
ードでは、プロセツサはデータ・メモリを、必要
としない時を示すインターフエース信号を与え
る。この信号は外部装置がデータ・メモリにアク
セスする事を可能にする。 このプロセツサは、ユーザにより機械制御レジ
スタ(MCR)を介して、起動できる広範な診断
能力を有している。それに含まれているのは、命
令メモリ、データ・メモリ及びI/O転送に対す
るパリテイ検査並びにALU及び乗算器の動作に
対するオーバーフローの検出である。診断能力
は、パイプライン・フローの範囲内で、エラーの
トレース可能性を保証する命令リンク制御
(ILC)によつて拡張される。プロセツサ中のス
テータス・レジスタは、ALUの状態、割込みの
ステータス及びパリテイ・エラーや算術演算オー
バーフローのような機械の検査についての、最新
の情報を、含んでいる。プロセツサは間接プログ
ラム・アクセス(IPA)読取り/書込み命令を用
いて、それ自身の命令記憶装置を読取り及び書込
みできるので、(ローカル又はリモートの)ホス
トから応用プログラムを取得し、それらを実行さ
せるために、命令記憶装置に置くためにそれ自身
の資源を利用する事ができる。 E 実施例 第1図に示すように、プロセツサの全体的な構
造は、2つの一般的な領域、即ち主データ・フロ
ー並びに、順序づけ及び制御論理に分割されるも
のと考えられる。主データ・フローは、種々のデ
ータの処理及び操作の要素を含むものと考えられ
る。これは第1B図のブロツク図の部分から成つ
ている。順序づけ及び制御の論理は、命令アドレ
ス・レジスタ(IAP)、命令デコード・レジスタ
(IDR)、アドレス生成(ADD GEN)加算器、
それに付属する共通アドレス・バス・レジスタ
(CABR)、インデツクス・レジスタ選択経路、
及び命令デコード論理を含み、第1A図の大部分
を構成している。 E−1 用語集 本明細書中では、多くの特殊な名前や省略語を
使用する。それらを、便宜のためここに要約し
た。 ハードウエアに関する用語及び省略語 バス: CDB=共通3状態データ・バス BMUXバス=ALUの「B」側の加数選
択バス CMUXバス=スタツクの「C」出力、
MCR、PSR選択バス LMUXバス=左4レジスタ・スタツク群
に関する入力選択バス RMUXバス=右4レジスタ・スタツク群
に関する入力選択バス IAB=命令アドレスプログラム記
憶装置に供給するアドレス・バス CAB=RAM及びI/Oアドレス
を供給する共通アドレス・バス レジスタ: R0〜R3=「左」群のスタツク・レジ
スタ R4〜R7=「右」群のスタツク・レジ
スタ MCRH=機械制御レジスタの上位16
ビツト(第8A図参照) MCRL=機械制御レジスタの下位16
ビツト(第8B図参照) PSRH=機械ステータス・レジスタ
の上位16ビツト(第9A図参照) PSRL=機械ステータス・レジスタ
の下位16ビツト(第9B図参照) IDR=命令デコード・レジスタ EXR=命令実行レジスタ CABR=RAM、I/O又はCDBに
宛てられた即値オペランド又は計算されたアド
レス用の保持レジスタ IAR=命令アドレス・レジスタ ILR=割込み処理中に戻り先アド
レスを保持するレジスタ IRWC=インターフエース読取り/
書込み制御レジスタ(表7参照) RPP=部分積パイプライン・レジ
スタ(乗算器中) RP=積レジスタ(乗算器中) (注) 下記の3つの「レジスタ」は物理的な
レジスタではなく、積レジスタRPから選択
された16ビツトの部分である。 RPL=RPから選択された下位の
積の値 RPM=RPから選択された中位の
積の値 RPH=RPから選択された上位の
積の値 他のハードウエア要素: ADD GEN加算器=即値オペランド、RAMア
ドレス又はI/Oアドレスを形成するのに使わ
れる加算器 ALU=算術論理演算ユニツト RAM=読取り/書込み可変記憶装
置(16ビツト・ワード) 命令フオーマツトに関する用語 種々の制御フラグ: IX=インデクシング制御フイールド(表3参
照) FUN=ALU機能制御フイールド(表5参照) (注) 下記のフラグ・ビツトの使用法に関し
ては、第5図を参照されたい。 RXL=乗数(「X」)値選択制御フラグ LPH=下位積クロツク制御フラグ UE=アンクロツクALU条件エネーブル・フ
ラグ II=割込み禁止フラグ SI=ALU結果−スタツク禁止フラグ AI=ALU A入力エネーブル・フラグ CIE=ALUキヤリー入力エネーブル・フラグ ME=乗算器サイクル・エネーブル・フラグ RE=レジスタ選択拡張フラグ スタツク入力/出力選択フイールド: SA=スタツク「A」出力選択フイールド及び
ALU結果宛先選択フイールド(スタツクから
ALU「A」入力へ;ALU出力からスタツクへ) SC=スタツク出力選択フイールド(スタツク
からCMUXバスへ) SD=スタツク・ロード宛先選択フイールド
(CDBからスタツクへ) 分岐制御フイールド: BT:=分岐型フイールド(第5図及び第6A図
〜第6D図参照) BCS=分岐条件選択コード(第5図及び表4参
照) 種々の規約及び用語 記号の規約: <……>=……の内容 (……)=……により特定される R@……=……により特定されるレジスタ |……|=……の大きさ =論理的否定(ビツト反転) E−2 プロセツサのハードウエア機構 主なデータ・フローは、「スタツク」レジス
タ・フアイル1、ALU2、乗算器3及びそれらの
要素を接続する種々のバスより成る。これらの要
素は本明細書の、下記の小見出しを付けた節で
各々解説される。なお、表1〜表7は「発明の詳
細な説明」の末尾にまとめられている。 共通データ・バス(CDB) プロセツサの主なデータ・フローは、16ビツト
の共通データ・バス4(CDB)の周囲で組織化
される。CDBは、16ビツトのデータ・ワードを
信号プロセツサの種々の要素の間並びに外部デー
タ・メモリ及びI/Oへ、又はそれらから転送す
るのに役立つ。 CDBは2つの別々の部分より成る。1つはチ
ツプ上の部分であり、もう1つはチツプ外の部分
である。その区別は名前の通りである。データが
チツプ内でCDB上を移動される時、CDBの外部
部分は付勢されない。従つて、例えばもし即値オ
ペランドが共通バス・アドレス保持レジスタか
ら、レジスタ・フアイル1の入力へ内部CDBを
経由して移動されたとすると、外部CDBは高イ
ンピーダンス状態のままである。CDBの外部部
分(内部部分に加えて)は、データ記憶装置
(RAM)又はメモリ・マツプI/Oへのアクセ
スが必要になる毎に使用される。ロード
(LOAD)及び記憶(STORE)のような命令の
実行は、データがレジスタ・フアイル(チツプ
上)とデータ・メモリ(RAM)又はメモリ・マ
ツプトI/Oとの間で移動される事を必要とす
る。 18本のCDB信号線(16本のデータ・ビツト及
び2本のパリテイ・ビツト)が、RAM(データ
記憶装置)及びメモリ・マツプトI/O
(MMIO)装置の接続のための、外部CDBチツ
プ・インターフエース中に設けられている。単純
なメモリ構成が第1図に概略を示されている。 Cマルチプレツクス式バス(CMUXバス) CMUXバス6は、レジスタ・スタツク1の
「C」出力又はMCRレジスタ8又はPSRレジスタ
9から、変数を演算装置(ALU2又は乗算器3)
へ又は共通データ・バス(CDB)4へ移動させ
るための、データ経路を提供する3状態バスであ
る。 Bマルチプレツクス式バス(BMUXバス) BMUXバス10は、ALU2の「B」入力への
データ経路を与える。BMUXバス10へ可能な
入力は乗算器3、CMUXバス6の内容又は符号
拡張データ(PSRH9のビツト06から)からの選
択された積部分である。 左マルチプレツクス式バス(LMUXバス)及び
右マルチプレツクス式バス(RMUXバス) LMUXバス11及びRMUX12は、レジス
タ・スタツク1の左及び右の入力ポートにデータ
を供給する。これらのマルチプレクスへの入力
は、CDB4及びALU2の出力から来る。データ
はCDB4から、真数形式及びバイト反転形式の
両方の形で取り出すことができる。バイト反転経
路は、バイトのロード/挿入命令(LIBY)を実
現する手段を提供する。 レジスタ・スタツク レジスタ・「スタツク」1は、算術演算フロー
経路中に位置する、R0〜R7の番号を付けられ
た、8個の16ビツトのレジスタのランダム・アク
セス・フアイルである。スタツク・レジスタのう
ち3つは、下記に示すような特別に割り当てられ
た機能を有している。他の5つは汎用レジスタで
ある。 R0−インデツクス・レジスタとしても使用さ
れるスタツク・レジスタ R4−第2のインデツクス・レジスタとしても
使用されるスタツク・レジスタ R5−現在の乗数(「X」)の値を含すためにも
使われるスタツク・レジスタ R1,R2,R3,R6,R7−特に定義された付加
的なハードウエア機能を持たないスタツク・
レジスタ 第1図に示すように、レジスタ・スタツクは2
つの入力ポートを有し、その各々は4つのレジス
タの群に入力経路を提供する。このレジスタ群は
本明細書中を通じて左群及び右群と呼ばれる。ス
タツクの入力は、共通データ・バス(CDB)4
又はALU2の出力(オーバーフローの場合に、
強制的な飽和値のために)から、到来しうる事に
注意されたい。各々の4レジスタ群の中の1つの
レジスタは、1つのソースから同時に入力を受け
取る事ができる。 スタツク1には2つの出力ポートも設けられて
いる。その各々は8個のスタツク・レジスタの1
つに同時にアクセスする事ができる。それらのポ
ートの1つ、「A」ポートは、データをALU2の
「A」入力に与え、他の「C」ポート7は、3状
態ドライバ13を経由してCMUXバス6に接続
されている。(他に多数の3状態ドライバが存在
するが、便宜上全て参照番号13を付け、特定のド
ライバはその入力に従つて名付ける事にする。 インデツクス・レジスタ(R0及びR4)は、ア
ドレス生成(ADD GEN)加算器14に入力を
与えるマルチプレクサに、直接接続されている。
また、レジスタR5は乗算器3の「X」入力に直
結されているので、常に乗数値として使用される
数値を含んでいる。被乗数は後述するように、
CMUXバス6を経由して供給される。 乗算器 12ビツトの数を16ビツトの数に掛けることので
きる乗算器3がプロセツサ中に設けられている。
本明細書中では、12ビツトの数を「乗数」値又は
「X」と呼び、16ビツトの数を「被乗数」値又は
「Y」と呼ぶ。16ビツトのR5スタツク・レジスタ
から、12ビツトの乗数値(「X」)として、上位12
ビツト(13番目のビツトを丸めたもの又は丸めな
いもの)、下位12ビツト、又は下位4ビツト(先
行するゼロを付加したもの)を、所望により選択
できる。乗算器は、2の補数の符号付き2進数の
みを取り扱うように設計されている。 乗算器は28個の積ビツトを発生する。これには
0〜27の番号が付けられ、上位、下位及び中位と
呼ばれる3つの選択可能な16ビツトの積部分
(RPH、RPL及びRPM)に分割される。各部分
を構成する実際のビツトは、乗数値が(乗算器パ
イプライン中のMSビツトによつてフラグされる
ように)乗算のために基準化(位取り)される方
式、及び機械制御レジスタ8中の中位積選択制御
ビツトMMM(MCRHのビツト10)の状態に依
存する。 種々の全ての条件の下での各積部分に含まれる
実際のビツトが、第10A図〜第10C図で要約
されていた。第10A図は乗数値「X」に関する
4つの可能な選択肢を示している。 積部分は各々、ALU2の「B」側に入力され
る。積部分の選択は、(記憶及び計算命令におけ
るように)命令の中に含まれるALU機能制御フ
イールド(FUN)によつて与えられるか、又は
(種々の計算命令におけるように)明示的に指定
される。 乗算器の動作は次の通りである。一般に、乗算
器によつて形成される全ての積ビツトは、被乗数
値が選択された後に2番目のサイクルに同時に現
れる。複合(又は並行)命令(OPコード=
1XXX)が、正規モード(MCRHビツト08=0)
で実行されている時、乗算器のパイプライン全
体、積レジスタ及び部分積レジスタの両者が、乗
算機能(機能コード1XXXX)が指定される毎に
移動する。また、下位積部分(RPL)がアクセ
スされる時にのみ、乗算器パイプラインのレジス
タが変化する事が許されるような第2モード
(MCRHビツト08=1)が提供される。この構成
は、ある倍精度の乗算/累算計算を1つ少ないス
タツク・レジスタを用いてプログラムする事を可
能にする。計算(C)命令は、積パイプラインのクロ
ツキングを制御するための2つの特別のビツトを
含んでいる。即ちビツト21、MEビツトは積パ
イプラインの全体的な制御を与え、ビツト5、
「LPH」ビツトはパイプラインのクロツキングを
部分的に禁止する事を可能にする。従つて以前の
部分積及び積の情報は、割込みに続いて回復でき
る。 割込み時の乗算器の保存−回復 高い性能を得るために、乗算器3はその回路ア
レイ中に中間パイプライン・レジスタを採用して
いる。これは第15図に示されている。パイプラ
イン・レジスタRPP及び積レジスタRPの内容
は、もし割込みルーチン中で乗算器3が使用され
るならば、プロセツサが割込みを受けた時に保存
し、そして回復しなければならない。さらに、乗
算器3の動作の状態を定義する別の因子が存在す
る。例えばMY中の乗数キヤリー及び乗数(X)
基準化情報等がそれであり、これも割込み時に保
存し回復しなければならない。それらの因子を定
義するビツトは、プログラム・ステータス・レジ
スタ(PSR)9中に含まれている。PSRを保存
し回復する事は、標準的な命令シーケンスを用い
て行なわれる。RP及びRPPレジスタを保存し回
復するには、特別の動作が必要である。 RP及びRPPの保存 前節で述べたように、乗算器3への乗数(X)
入力は、データ・フローの左側12ビツト又は右側
12ビツトのいずれかから選択できる。左又は右の
選択は、以前に説明したように乗算命令中のX入
力を識別するために使われる乗数ニーモニツクに
よつて定義される。この選択はPSR9中のZSビ
ツトとしてパイプラインを伝播し、MSビツト
(やはりPSR中の)として乗算器出力に現れる。
MSは、指定された乗数(X)の基準化を反映す
るように、積のビツト重みを調整するために使わ
れる。PSRをセツトする事によつて直接ZSを制
御する能力は、RPP及びRPの内容を保存し回復
するための戦略の鍵である。 RPの内容は、それを2つの部分RP1及びRP
2に分解する事によつて保存される。RP1は右
X基準化に関するRPの下位16ビツトであり、RP
2は左X基準化に関するRPの上位16ビツトであ
る。基準化の制御は、PSR9中でビツトを直接
セツトする事で行なわれる。RPの下位16ビツト
は右基準化によつて選択され、RPの上位16ビツ
トは左基準化によつて選択される。 RP1をレジスタに移すためにRPLが使われる
時、MYは使用されない。というのは、PSRが回
復される時にMYは直接に回復されるからであ
る。上記手続きが完了すると、乗算器3はRPM
の内容をRPへ移動するように制御され、この手
続きはRPPの以前の内容をRPP1及びRPP2と
して保存するために反復される。 RP及びRPPの回復 乗算器レジスタの内容を回復するための戦略
は、被乗数(Y)として保存された変数RP1+
RP1,RP2及びRPP2を、乗数(X)としての
適当な変数と共に使用して、変数が組み合された
時に適当なビツト重みを与える事である。例え
ば、積RPはRP1とRP2×2R12(即ち、左へ12
ビツト、シフトされたRP2)とをORした結果で
ある。 この動作を行なう時に2つの問題が生じる。第
1は、下位項RP1が(1を掛ける事によつて)
乗算器3に入れられる時に、それは第2の積が形
成される間に、不変のままでなければならない。
この問題は特殊な乗算命令、下位ホールド乗算命
令(MHRD)、命令中の下位積ホールド・ビツト
によつて解決される。これは計算命令の第5ビツ
トである。この命令はRPP及びRPレジスタの下
位ビツトへのクロツクをデケードし、上位ビツト
に第2の積が入る時に、その内容を固定したまま
に保つ。 第2の問題は、RPフイールドにおいて12ビツ
ト上にRP2を位置付けるという要求から生じる。
これは最初にRP2を2倍にし、次に211を掛ける
事によつて行なわれる。この後者の動作は、12ビ
ツトに丸めた時に211を与える(X′7FF8′のよう
な)正のXを用いる事によつて達成される。Xに
関するそのような値は、ALU2にMYキヤリー
を発生しない事に注意されたい。この事は重要で
ある。というのは、以前に注意したように、割込
み前のパイプライン中のMYキヤリーの値は、
PSR9が回復された時に、回復されるからであ
る。問題はRP2を2倍にする時に生じる。符号
エラーを生じ得るような、オーバーフローが起き
る事がある。これを避けるために、2*RP2の
符号である(PSR中に記憶された)キヤリーAY
が、乗算器アレイによつて計算された符号を、オ
ーバーライドするために使われる。これは、特殊
な命令MHRDによつて実行される付加的な機能
である。要約すると、MHRDは、乗算器のレジ
スタの内容を回復するための鍵となる2つの動作
を行なう。 1 乗算を行なうためにX選択から13番目の即ち
丸めビツトが使われる時、RPのRPLフイール
ド(及び右基準化を行なつたRPPに関する等
価なビツト)より成るビツトは変更されない。 2 PSR9中のキヤリー・ビツトAYが、乗算器
3中の符号生成をオーバーライドするために使
われる。 ALU 16ビツトのALU2によつて実行される機能の
制御は、計算(C)、「記憶及び計算」(STC)、並び
に「ロード及計算」(LXC)の型の命令の5ビツ
トの機能制御フイールド(FUNフイールド)に
よつて行なわれる。FUNフイールドは、実行さ
れる算術又は論理ALU動作を指定し、ある程度
まで使用されるALUオペランドを暗示する。表
5Aは、スタツク・レジスタがALUの「B」入力
として指定された時の、可能なALU動作を要約
している。表5Bは、ALUの「B」入力として積
レジスタが選択された時のALUの動作を示して
いる。 ALU2はその「A」入力として、8つのスタ
ツク・レジスタ1の1つの内容(又はゼロ)を取
り、その「B」入力として、BMUXバス10の
内容を取る。生じたALU2の出力は通常、「A」
入力を供給したスタツク・レジスタ1に返され
る。計算命令(C)において、SIビツト(表1参照)
は、ALUの結果がスタツクに書き戻されるのを
禁止する能力を与える。条件付き分岐は、ALU
で生じた計算結果によつてトリガされる。 機械制御レジスタ及びステータス・レジスタ 上位及び下位の機械制御レジスタ8(MCRH
及びMCRL)は各々、特別な機械の性能を制御
又は変更する16ビツトを含んでいる。上位及び下
位の機械ステータス・レジスタ9(PSRH及び
PSRL)は、機械の動作のある面の現在のステー
タスを反映するビツトを含む。 上位機械制御レジスタ(MCRH) MCRH8の16の利用可能なビツトのうち、12
ビツトは機能が割り当てられ、残りの4ビツト
(ビツト0〜3)は予備である。 MCRHビツトに割り当てられた制御機能は、
第8A図に要約したように、下記のような4つの
一般的なカテゴリーに入る。 MCRHのビツト4及び5、命令リンク制御フ
イールド(ILC)は、特別な動作モードをエネー
ブルし、それによつて分岐に続いてパリテイ検査
又はオーバーフローが起きた時に、命令リンク・
レジスタ15(ILR)及び命令アドレス・レジス
タ16(IAR)のクロツキングを禁止させる。こ
れらのモードの目的は、分岐の時点、即ちILR1
5が故障の場所を識別するために普通は使えない
時に、エラーのトレーシングを可能にする事であ
る。 MCRH8のビツト6及び7は、飽和制御モー
ド選択フイールド(SCS)を構成する。これらの
制御の目的は、スタツク又は積レジスタ・オペラ
ンドのいずれかに関係した動作のために、飽和さ
れた算術演算が呼び出される事を可能にするため
である。飽和が呼び出されるFUNコードは、表
5A及び5表に示されている。 MCRL8のビツト8〜12は、特殊な乗算器制
御ビツトである。それらの機能は第7A図に定義
されている。 MCRL8のビツト13〜15は、アドレス生成
(ADD GEN)加算器14内のキヤリーが禁止さ
れる場所を定義する選択フイールドを構成する。 命令が機械のデータ・フローの中に読込まれた
時、その命令の上位バイトはMCRH8のビツト
8〜15中に置かれ、3つの命令パリテイ・ビツト
はMCRH8のビツト5、6及びに行く。この移
動を行なう経路は、主データ・フローの概略(第
1図)中に示されている。 下位機械制御レジスタ(MCRL) MCRL8の16個のビツト(第8B図に要約)
は、下記のように5つの異なつた機能を制御す
る。 MCRL8のビツト0は、線型拡張アドレシン
グ機構(LEAF)の選択を可能にするフラグ・ビ
ツトである。このビツトがオン(ビツト=1)の
時、IRWCビツトの動作は、プロセツサ外部の
LEAFアダプタ論理の制御を容易化するように変
更される。 MCRL8のビツト1及び2は、共にプロセツ
サのデータ・アドレス空間内のI/Oアドレスと
データ・メモリ・アドレスとの間の境界を選択す
る手段を提供する。IOSの設定によつて指定され
た境界に関するアドレスの位置は、適当なIRWC
の組み合せ(表7参照)を経てインターフエース
に反映される。 MCRL8のビツト3、4及び5は、データ
RAM又はI/Oへの又はそれらからの(CDBを
経由する)データの移動及び到来する命令に対す
るパリテイ検査を禁止する事を可能にする。 MCRL8のビツト6及び7は、ALU2又は乗算
器3のオーバーフローが起きた時に、プロセツ
サ・リセツト(PROR)が開始されるか否かを制
御するために使われる。 MCRL8の最後の8ビツト、ビツト8〜15は、
各々レベル0〜7の割込みのサービスを禁止する
ために使われる。任意のレベルの未処理の割込み
は、対応するサービス禁止フラグがリセツトされ
ている(フラグ=0)場合にだけサービスされ
る。 上位機械ステータス・レジスタ(PSRH) PSRH9は、最後の機械サイクルの終了時の論
理回路のある部分の状態を反映する15個のビツト
(PSRH9の1つのビツト、ビツト5は割り当て
られていない)を含んでいる。特に、PSRH9
は、パリテイ検査がおこなわれる特定のバイト、
最後のALU2の動作によつて生成された条件、
並びに以前の2つの積に関する乗算器3(「X」)
の基準化及び積のキヤリーを示している。 全てのPSRHビツトが、第9A図に要約されて
いる。この要約から下記の事に注意されたい。 3つの命令バイト及び2つのCDBバイトに関
するパリテイ検査の状態が別々にPSRH9中に置
かれる。パリテイ検査が行なわれた時、そのバイ
トにエラーが生じたかをPSRH9から判定する事
ができる。 乗算で使われる「X」の値は、16ビツトのレジ
スタ(R5)から選択された12ビツトなので、乗
数基準化(MS)フラグは、PSRH9のビツト7
及び9を経由して伝播され、従つて得られた積は
適切に解釈される。ビツト9(ZS)は、部分積基
準化フラグであり、一方ビツト7(MS)は積基
準化フラグである。 PSRH8のビツト8及び10は、部分積の形成に
関係した未処理のキヤリー・ビツトを含んでい
る。ALU動作において「下位」の積部分がオペ
ランドとして選択される時、MYはALUのキヤ
リー入力として選択される。ALUは積が使われ
る時、このようにして下位積を完成させる。 PSRH8のビツト11〜15は、ビツト6と共に最
後のALU動作に関係した情報を含んでいる。
PSRH8のビツト6(BS)は、最後のALUの
「B」オペランドの符号を含んでいる。一方、ビ
ツト11〜15はALU2によつて行なわれた最後の
計算の結果(最後の結果の符号ビツト、最後の出
力=000……0、等)を反映している。 下位機械ステータス・レジスタ(PSRL) 第9B図に示すように、PSRL9のビツトに割
り当てられた意味は、PSRL9が読取られている
か又は書込まれ(ロードされ)ているかに依存す
る。実際、PSRL9は直接読取る事ができる(そ
の内容はスタツク・レジスタに移される)が、あ
るかなり複雑な論理を経由してのみロードする事
ができる8ビツトのレジスタと考える事ができ
る。 PSRL9と呼ばれる8ビツトのレジスタは、実
際には8つの割込みメモリ・ラツチの組である。
これらのラツチの各々は、特定の割込み信号が検
出された事を記憶し、通常その信号に関するサー
ビスが始まるまでセツト状態を保つ。割込みラツ
チは、対応する割込みエントリー・アドレスが、
命令アドレス・レジスタ16(IAR)にロードさ
れる時に(通常)リセツトされる。割込みメモ
リ・ラツチは、下記に概略を示すPSRL書込み命
令を用いてセツト又はリセツトする事もできる。
PSRL9が読取られる時、それはハードウエア中
で未処理の(又はプログラミングによつて未処理
の事もある)全ての割込みを反映する。 PSRL9がロードされる(書込まれる)時、実
際に起きる事はCDB4の内容が割込み制御論理
17への入力として受け取られ、第8B図の下方
に示したように解釈される事である。PSRLの書
込み形式は、16ビツトが2つの8ビツト制御バイ
トとみなされる事を要求する。それらは、4つの
割込み信号の群の各々に相当する。これら2群
は、2つの時分割割込み信号入力18で受信され
る信号に関する制御を含んでいる。 各群の制御バイト中で、最後の4ビツトは各ア
ドレス・ビツトとして役立ち、最初の3ビツトは
群の中の1つ以上のものに発行されるコマンドを
表わす。PSRL書込み形式のビツト3及び11は
「POWR」及び「PROR」リセツトが見い出され
る事を可能にする。発行できる3つのコマンド
は、下記のようにビツトによつて示される。 「CLR」(クリア)ビツトは、4つのアドレ
ス・ビツトによつて指定された割込みメモリ・ラ
ツチをリセツトさせる。PRORと一緒に使われる
群1のCLRは、「電源」又は「プロセツサ」のリ
セツト状態から機械を脱出させる。 「FRC」(強制)ビツトは、4つのアドレス・
ビツトによつて指定された割込みメモリ・ラツチ
をセツトさせる。群0及び群1のFRCコマン
ド・ビツトは、各々「電源」又は「プロセツサ」
リセツト条件を開始するために、POWR及び
PRORと共に使用される。 「TST+」(割込み信号の極性が+レベルかテ
ストする)ビツトは、割込み信号の極性が正であ
れば、4つのアドレス・ビツトで指定された割込
みメモリ・ラツチをセツトさせる。TST+コマ
ンドが実行されている時、それは実行時にインタ
ーフエース走査クロツクによつて走査されている
アドレスにのみ影響を与える事ができる。一時に
4つの割込み信号のうち1つだけしか走査されな
いので、単一の特別な割込み信号の極性をテスト
するためには(同じ1つのアドレス・ビツトの組
を有する)4つの連続したTST+コマンドを実
行する必要がある。 もし3つのコマンド・ビツトのうち2つ以上が
同じ群にセツトされていれば、下記の事が起きる
であろう。 他のコマンド・ビツトが何にセツトされている
かに無関係に、CLRコマンド・ビツトが常にク
リア動作を起こさせ、且つFRCコマンド・ビツ
トがTST+コマンドをオーバーライドする。 命令のパイプライン及び順序付けの制御 一般的な用語「順序付け及び制御の論理」は、
ここでは、順序に命令にアクセスし、分岐及び割
込みを起こさせ、そしてアクセスされた命令をデ
コードし実行するために使われる論理回路を示す
ために使う。順序付けの複雑さをある程度理解す
るために、最初にプロセツサ中の命令のパイプラ
インについて理解する必要がある。従つて、最初
にこれを説明する。 命令パイプライン 良好な実施例は、3相の命令パイプライン(第
11図に概略を図示)を利用している。即ち、任
意の与えられた時間に、1つの命令が命令記憶装
置から取り出され、一方以前に取り出された命令
は実行のためにデコードされ(且つそれに関係し
たオペランド又はアドレスが、もしあれば形成さ
れ)、そして以前にデコードされた命令は実行さ
れている。従つて、全ての命令(分岐命令を除
く)は、取り出し、デコード及び実行のための3
つの機械クロツク・サイクルを必要とするが、実
行速度は機械サイクル当り1命令である。 パイプラインのアーキテクチヤは、取り出され
る命令が機械の制御論理に対して「可視的」でな
いようなものである。命令は、それが取り出しサ
イクルの終了時に命令デコード・レジスタ
(IDR)19中に置かれた後でのみ、可視的にな
る。プログラム記憶装置20から取り出された各
命令は、最初に命令デコード・レジスタ(IDR)
19中に置かれ、新しい命令は各クロツク(立ち
上り)時にIDRにロードされる。 IDR中の命令は、後続する機械サイクル中にデ
コーダ論理21でデコードされ、その結果は次の
クロツク(立ち上り)時に実行レジスタ22
(EXR)にロードされる。 分岐命令も命令取り出しのために1機械サイク
ルを必要とし、2番目の機械サイクル中にデコー
ドされるが、IAR16は(分岐が行なわれると仮
定すると)2番目のサイクルの終了時に分岐先ア
ドレスをロードされる。分岐命令の3番目のサイ
クルには、通常何の付加的ハードウエア動作も起
きない。 アドレス/オペランドの形成 IDR19中の命令がデコーダ21でデコードさ
れている間、その命令のオペランド部分は、もし
存在すれば、アドレス生成(ADD GEN)加算
器14によつて操作される。この加算器14への
入力は、(表3に示すように)デコードされてい
る(IDR中の)命令から選択されたオペランド・
ビツト及び指定されたインデツクス・レジスタ
(R0、R4又はILR)の内容又は強制的ゼロであ
る。この加算の結果は、分岐命令の場合のように
即座に使用されるか、又はそれに関係したデコー
ド命令が実行レジスタ22(EXR)にロードさ
れるのと同時に、共通アドレス・バス・レジスタ
(CABR)5にロードされる。次に、CABR5の
内容は、EXR22の命令の実行中にCDB4にゲ
ートされる事も又共通アドレス・バス23を経て
RAM24にアクセスするためアドレスとして使
用される事もある。RAM24の内容は、CDB4
に置かれる。 ADD GEN加算器14がアドレスを形成する
ために使われる時、加算は、MCRH8のビツト
12、14及び15によつて制御される8つの選択され
た境界の1つの上で巡回するようにさせる事がで
きる(第8A図参照)。巡回インデクシングを実
現するためのこの方式は、ADD GEN加算器1
4中のキヤリー伝播を選択的に禁止する事に関連
している。キヤリヤー伝播は下記の表に示すよう
に、次の点で禁止する事ができる。
【表】
すべての場合に、命令のインデツクス制御フイ
ールド(IX)はインデツクス動作を指定する
(表3参照)。インデツクス制御論理はIXをデコ
ードし、適当なキヤリー禁止信号を発生する。さ
らにこの論理回路は、R0、R4、ILRレジスタの
内容又はゼロをオペランド値への加数として選択
させる。 命令順序付け論理 良好な実施例において、取り出されるべき命令
のアドレスは、常に命令アドレス・レジスタ
(IAR)16に含まれている。ブロツク図(第1
図)に示されるように、IAR16は次の命令アド
レスを決定するための4つの選択可能な入力を有
する。 「+1」加算器25の出力(この加算器は常に
最後のIAR16の内容に1を加算したものに等し
いアドレスを生成する)は、次の命令がプログラ
ム記憶装置20から取り出されるべき時に、次の
IAR16の入力として選択される。 アドレス生成加算器14の出力が、直接分岐が
実行される時はIAR16の入力として選択され
る。 共通データバス(CDB)4の内容が、間接分
岐が実行される時はIAR16の入力として選択さ
れる。 割込みサービス・ルーチンが開始される時、割
込み制御論理17は、IAR16に置かれるべき適
当な割込みエントリー・アドレスを提供する。そ
れはまた、「電源」及び「プロセツサ」リセツ
ト・ルーチンに関する正しいエントリー・アドレ
スも発生する。 順序付け論理の正規の、非分岐、非割込み動作
において、命令アドレス・レジスタ(IAR)16
の内容は、命令アドレス・バス(IAB)に置か
れ、そこでプログラム記憶装置20及び同時に+
1加算器25によつて使用される。次に、命令N
がプログラム記憶装置20から取り出される時、
値N+1が+1加算器25によつて形成される。
最後に、クロツク時に命令Nが命令デコード・レ
ジスタ(IDR)19にロードされる時、新しい命
令の計数値N+1がIAR16にロードされる。 分岐の場合、IAR16はクロツク時にCDB4
の内容又はADD GEN加算器14の出力のいず
れかをロードされる。その選択は分岐が、直接型
か又は間接型かによつて制御される。 プロセツサのブロツク図(第1図)に示される
命令リンク・レジスタ15(ILR)は、IAR16
から入力を受け取る。これはILR15が動作して
いる間、それは常に最後の取り出された命令
(IDR19中の命令)のアドレスを含んでいる事
を意味する。ILR15を駆動するクロツクは、プ
ロセツサが割込みにサービスするために「前景
(フオアグラウンド)」状態に切り換わつた時に、
ロツクするように制御される。従つて、割込みが
サービスされる時、ILR15は停止し、分岐先と
して使用できる適当な戻りアドレスを含んでい
る。また、2種類の「長い」分岐命令(第5図参
照)は「前景」状態を強制的に取らせ、そして
ILR15は割込み以外の条件の下で、戻りアドレ
スを保持するために使用できる。ILR15は、そ
れがインデツクス・レジスタとしてアクセスされ
る毎にアンロツクされる。 E−3 割込みアーキテクチヤ 良好な実施例の割込み論理は、2つの特別な属
性を考慮して設計された。最初に、種々の割込み
構造を実現するためのユーザのプログラミングの
柔軟性が提供される。もし、例えば6レベルのピ
ラミツド型の割込み構造が望ましければ、それは
プログラミングによつて達成できる。第2に、割
込みを実現するために必要な論理回路の総量は、
比較的小さく保つ事が意図された。 固有の割込み構造及びその要素 良好な実施例は、「背景」及び「前景」と呼ば
れる2つの割込みレベルを提供するいくつかの部
分より成る固有の割込み構造を具現している。
各々の割込みは外部的に発生した信号によつてト
リガされ、割込み論理内のラツチに記憶される。
未処理の割込みは、エネーブルされたならば、優
先度の順にサービスされる(表6参照)。どれか
の割込みに関する割込みサービスが開始すると、
処理レベルは「背景」から「前景」に切り換わ
り、IAR16はサービスされるべき割込みレベル
に対応した割込みエントリー・アドレスにセツト
される。割込みを行なう直前に取り出された命令
は、命令パイプラインの影響を補償するために
NOPとして実行するように強制される。これに
ついては後述する。 プロセツサ内の論理回路の種々の部分が、固有
の割込みアーキテクチヤをサポートするものとし
て、第1図において識別できる。それには次のも
のが含まれる。 1 割込みメモリ・ラツチは、未処理の割込みを
記憶するためにPSRL9のビツト08〜15で実現
される。割込みがサービスされる時、サービス
されるレベルに対応するラツチはリセツトされ
る。割込みがあるレベルで未処理のままの時、
そのレベルの他の割込みは認識され得ない事に
注意されたい。 2 MCRL8のビツト08〜15に含まれている割
込みマスク・ビツトは、個々の未処理の割込み
を選択的に禁止するのに役立つ。8つの割込み
レベルの任意の組み合せを禁止する事ができ
る。MCRL8のビツトは、プログラミングに
より任意にセツト及びリセツトできる。 3 割込み制御論理17は、割込みサービスが開
始する時に、適当な割込みエントリー・アドレ
スをIAR16に挿入させる。この理論17は
又、「NOP強制」フラグ・ラツチ29(第1
図)のセツテイングも制御する。このラツチは
割込みの直前の命令をNOPとして実行させる。 固有の割込みサービスの優先度 割込み信号をプロセツサへ伝えるために、2本
のマルチプレクス式割込み信号線18が、プロセ
ツサ・モジユール・インターフエース論理17中
に設けられる。これらの信号線18の各々は、4
つまでの時間マルチプレクス式割込み信号を伝え
る事ができる。割込み信号は、2ビツトの走査ク
ロツク27、すなわちISCC0及びISCC1の制御
の下に、2つの割込み入力ポートでサンプリング
される。 8つの可能な割込み信号及び2つのリセツト信
号の各々は、割込みサービスが開始された時にそ
こでタスク処理が始まる、プログラム記憶装置2
0中の特別な固定したエントリー位置を有してい
る。これらのエントリー・アドレスは、表6に示
すように配列されている。割込み1〜7及び2つ
のリセツトに関するエントリー・アドレスは、各
レベルのために割込みサービス処理を行うか、又
は命令記憶装置20中の他の場所にあるより精巧
な割込みルーチンに分岐するために32(16進数で
は20)個の命令が利用可能なように分布してい
る。任意の長さの割込みサービス・ルーチンを、
最高の優先度の割込みであるレベル0の割込みの
エントリー・アドレスに隣接して配置する事がで
きる。 また、未処理の割込みを記憶するPSRL9より
成るラツチは、割込みエントリー・アドレスが
IAR16中に置かれた時に、個々にリセツトされ
る事にも注意されたい。 割込み信号 割込みの割込み信号は、論理ゼロから1への遷
移より成り、これはマルチプレクスされた割込み
信号の現在のサンプルと、前回のサンプルとを比
較する事によつて検出される。そのような信号が
検出されると、ラツチがその事象を記憶するため
にセツトされる。このラツチはPSRL9を読取る
事によつて調べる事ができる。もし発生した特定
の割込みに関して、MCRL8により割込みサー
ビスが禁止されていなければ、割込み開始シーケ
ンスが始まる事ができる。MCRLのビツト8〜
15は、セツトされた(=1)時、各々割込み信号
0〜7に関するサービスを、個々に禁止する事を
思い出していただきたい。もし割込みサービスが
禁止されれば、個々の割込みメモリ・ラツチはセ
ツト状態にとどまり、適当なMCRL8のビツト
がリセツトされて、サービスを可能にする時に順
序付け論理に現れる。 割込みメモリ・ラツチは、所定の時刻に未処理
(係属中)の1つ以上の割込みを表示する事がで
きる。事象の途中に割込み処理の開始が可能にな
る時、実際にサービスを受ける割込みは、マス
ク・オフされていない割込みの固有の優先度によ
つて決定される。言いかえると、2つ以上の割込
みが未処理の時、最高の優先度を持つ。マスクさ
れていない割込みが最初にサービスされ、他の低
い優先度の要求は、優先度の順に後にサービスさ
れるように、ハードウエアによつて保持され続け
る。 固有割込みの開始動作の要約 背景状態でプロセツサによつて実行され始めた
命令のストリームが、未処理の割込みにサービス
するために中断される毎に、下記の事象のシーケ
ンスが起きる。 1 最初、命令デコード・レジスタ19(IDR)
中の「可視的な」命令が割込み保護されていれ
ば、割込みの開始は起き得ない。いくつかの命
令は常に保護され、あるものは決して保護され
ず、そしてあるものは選択的に保護されている
事に注意されたい。表1はどの命令が保護さ
れ、一般にどのようにして保護が行なわれるか
を示している。 2 デコードされた命令に関して保護の指示がな
ければ、そして割込みが未処理であれば、割込
みエントリー・アドレスが命令アドレス・レジ
スタ(IAR)16に入れられる。同時に、命令
記憶装置から以前に取り出された命令がIDR1
9に置かれる。しかし、割込みが許されたの
で、この時、IDR19にロードされた命令を無
視させるフラグ29もセツトされる。即ち、
IDR19にロードされた命令は21でデコード
され、その後NOPとして実行される。NOPを
実行した結果として、機械は状態を変化させな
い。 3 割込みエントリー・アドレスがIAR16にロ
ードされる時、対応する割込みメモリ・ラツチ
はリセツトされ、命令リンク・レジスタ
(ILR)15の内容は、ちようど取り出された
命令のアドレスに変更される。これは実行され
ない命令に関するものである。ILR15はこの
時点で凍結され、そこに含まれるアドレスがア
クセスされるまで凍結されたままである。従つ
て、割込みサービス・ルーチンの終了時に、単
純にILR15の内容によつて指定されるアドレ
スに分岐して、正規の命令の順序を正確に再開
する事ができる。 前述の一連の動作の最終的な効果は、割込み
がサービスされる毎に1つの余分の命令NOP
が実行される事である。この方式の利点は、割
込みシーケンスが開始された時に取り出され
た、保護された命令をどのように取り扱うかと
いう問題を除去している事である。従つてこの
機械の命令に関する割込み保護の要求は単純化
される。 いくつかの可能な割込み方式 プロセツサの固有の割込み構造は充分に柔軟な
ので、ユーザーが種々の割込み取り扱い方式を実
現する事が可能である。いくつかの例を下記に示
す。 1 最初に、プロセツサの固有割込み構造をその
まま使用する事ができる。即ち、割込みが発生
した時、それは最初、待機中になり、次に固有
割込み制御論理によつて確立された優先度の順
に正規の方式でサービスされる。割込みサービ
スが開始すると、プロセツサは前景状態に切り
換わる。サービスが終了した後、レベル出口付
き分岐(BLEX)命令が、割込まれたプログラ
ムに制御を戻し(元々NOPで置きかえられた
命令でスタートする)、プロセツサを背景状態
に切り換える。 2 割込みのサービスを行なう正規の、本来の方
式の単純な変型では、割込みサービスはスタツ
クに入れる事ができる。この方式では、割込み
は発生した時にはサービスされず、それが発生
したという事実が(ソフトウエアによつて)保
存される。この方式では、プロセツサは、割込
みがスタツクに保存される短かい時間の間だけ
前景状態にとどまり、次に普通のように背景状
態に戻る。後に、便利な時にスタツクされた割
込みは背景状態で調査され、ユーザーが望む任
意の順序でサービスされる。 3 真の割込みは計画されていない分岐のような
ものである。しかしながら、固有プロセツサの
割込み構造の設計は、通常は割込み制御回路に
よつて行なわれるハードウエア動作をオーバー
ライドし、完全にソフトウエアによつて実行す
る事を可能にしている。これは、全ての割込み
をマスキング又は禁止し、その代りに保留中の
割込みの状態をPSRL9を読取る事によつて、
周期的に調査する事によつて達成される。保留
中である事が判明した割込みは、ユーザーの望
み通りの順序でサービスする事ができ、又所望
によりスタツクに保存する事ができる。もしこ
の技術を使つた場合は、割込みメモリ・ラツチ
はプログラミングによつてリセツトしなければ
ならない。これは、PSRL9に書込みを行なう
命令によつて提供される機構を用いれば可能で
ある。 E−4 命令セツト この節では、各命令のデコード及び実行の動作
の概略を説明し、各命令中の種々の制御フイール
ドの目的について述べる。 命令フオーマツト及びニーモニツク 全ての機械語命令は、24個のビツト00〜23から
成る。各命令の最初の4ビツト(ビツト00〜13)
は、命令のフオーマツト及び機能を指定するのに
役立つオペレーシヨン・コード(OPコード)よ
り成る。全ての型の命令のフオーマツトは、表1
(「発明の詳細な説明」の末尾)に要約されてい
る。各OPコードのデコード及び実行の動作は表
2に要約されている。 種々の表及び図は、命令の型を1組のニーモニ
ツクによつて参照している。これらの「ハードウ
エア・ニーモニツク」はここで便宜上使用してい
るが、アセンブラ言語のプログラムを書く時に使
うソフトウエア・ニーモニツクと混同すべきでな
い。 インデツクス制御フイールド 多くの命令のビツト4及び5(表1参照)は、
インデツクス制御フイールド(IX)を含んでい
る。このフイールドは、インデツクス・レジスタ
の値(R0、R4又はILRの内容)又はゼロ(イン
デツクス・レジスタは選択されない)を選択する
ため、及び命令中のオペランドを変型して、アド
レス又は即値を形成するために、その選択された
値がどのように使用されるかを指定するための両
者に役立つ。IXフイールドの組み合わせに割り
当てられた意味は、命令のOPコードに依存する。
表3は全ての命令型についてIXフイールドの作
用を要約している。 選択されたインデツクス・レジスタを命令のオ
ペランドに(ADD GEN加算器14で)加算す
る事によつて得られる値は、共通アドレス・バ
ス・レジスタ5(CABR)に置かれる。ここで
それはアドレスとして、又は即値オペランドとし
て使用される。一般に、CABR5の内容をアド
レスとして使用するか又は即値オペランドとして
使用するかは、OPコードによつて決定される。
分岐命令の型の場合、ADD GEN加算器14の
出力は直接の分岐先アドレスとして使用し得る。
もしそうであれば、ADD GEN加算器14の出
力はCABR5以外にIAR16へもロードされる。 命令実行動作 表2に示すように、各々の命令は、転送作用、
計算作用又はその両者を有している。上位のOP
コード・ビツトが1であるような全ての命令(複
合命令)は、転送作用及び計算作用の両者を有し
ている。命令実行動作及び種々の命令型のフオー
マツトを下記において説明する。 即値ロード命令(LIL、LIR) LIL及びLIR命令(各々OPコード、0000及び
0001)は、スタツク1の左側又は右側のレジスタ
に即値オペランドをロードさせる。命令のフオー
マツト(第2A図参照)は、2ビツトのインデツ
クス制御フイールド(IX)、2ビツトのスタツ
ク・レジスタ宛先フイールド(SD)及び16ビツ
トのオペランド・フイールドを含んでいる。 IXフイールドは、即値データを形成するため
に16ビツトの命令オペランド・フイールドに、命
令レジスタ1(R0又はR4)、インデツクス・リ
ンク・レジスタ(ILR)又はゼロのうちどれを加
算するかを決定する。加算の結果は、命令のデコ
ード段階の終りにCABR5にロードされる。次
にCABR5の内容は実行段階中にCDB4に出力
され、実行段階のクロツク・パルスの終了時には
適当な宛先レジスタ1にロードされる。 3ビツトのSDフイールドは、IXフイールドの
制御の下で形成される即値オペランドの(スタツ
ク1内の)宛先レジスタを決定する。即値ロード
型の命令の場合、SDの1及び2ビツト(命令ビ
ツト6及び7)は、通常はOPコード・ビツトで
ある命令ビツト3(SD0)によつて延長され、必
要な3ビツトの宛先レジスタ・アドレスを生じ
る。ビツトSD1及びSD2は、スタツク1の左側
又は右側の4つのレジスタのどれが宛先かを決定
し、ビツトSD0は左側又は右側のレジスタ群を選
択する。 ロード命令(L) ロード(L)命令(OPコード0010)(第2B図
参照)のフオーマツトは、オペランド・フイール
ドが16ビツトではなく15ビツトを含んでいる事を
除けば、上記の「LI(R又はL)」型の命令に類
似している。命令のビツト23、フオーマツト中の
下位オペランド・ビツトは、ロード命令中のSD
フイールドの上位ビツト(SD0)として使用さ
れ、スタツク1の左側又は右側の宛先レジスタを
完全に指定することを可能にする。 ロード命令のオペランドは、次のようにして
RAMアドレスを形成するのに使われる。即ち、
15ビツトのオペランド・フイールド及び追加され
たゼロ(0)が、第2B図に示すように、16ビツ
トの選択されたインデツクス・レジスタ(IXフ
イールドによつて指定されるようにR0、R4又は
ゼロ)に加算され、結果がCABR5に置かれる。
この動作は命令のデコード段階中に起きる。 ロード命令の実行動作においては、CABR5
の内容がCABに出力されるので、これは即値オ
ペランドとしてではなくRAM24又はメモリ・
マツプトI/O(MMIO)によつてアドレスとし
て使用できる。このアドレスからのデータは、実
行段階中にCDB4に置かれ、そして実行段階終
了のクロツク遷移において宛先スタツク・レジス
タ中にロードされる(命令のSDフイールドがレ
ジスタ・アドレスを指定する)。 記憶命令(ST) 記憶命令(OPコード0011)は、任意のスタツ
ク・レジスタの内容を、指定されたRAM24の
記憶位置に移動する事を可能にしている。第2C
図に示すように、この命令のフオーマツトはロー
ド命令のフオーマツトに非常によく似ている。相
違点は、ロード命令のSDフイールドが、記憶命
令のフオーマツトではSCフイールドになつてい
る事である。SCフイールドは、内容を記憶すべ
き8つのスタツク・レジスタの1つを選択するの
に役立つ。 記憶命令のデコード動作は、ロード命令のそれ
に似ている。即ち、15ビツトのオペランド・フイ
ールドの内容及び追加されたゼロ(0)は、命令
中のIXビツトによつて指定されたインデツク
ス・フイールドにADD GEN加算器で加算され、
その結果はデコード段階の終了時にCABR5の
中に置かれる。 実行段階中に、CABR5の内容は共通アドレ
ス・バス(CAB)23上に置かれ、そこでRAM
24又はI/Oデバイスによつてアドレスとして
使用される。記憶されるべきデータは、命令の
SCフイールドによつて指定されるスタツク・レ
ジスタから取り出される。指定されたレジスタの
内容は、CMUXバス6に出力され、次にドライ
バ13(第1図参照)を経由してCDB4に供給
される。実行段階を終了するクロツク遷移におい
て、CDB4の内容は、CAB23上に存在する宛
先アドレスにロードされる。 条件付分岐命令(BC) 条件付分岐命令(OPコード0100)のフオーマ
ツトは、第4A図に示すように、12ビツトのオペ
ランド・フイールドを有している。残りの12ビツ
トはOPコードに加えて、2ビツトのIXフイール
ド、2ビツトの分岐型(BT)フイールド及び4
ビツトの分岐条件選択(BCS)フイールドを含
んでいる。インデツクス(IX)フイールドの制
御動作は表3に、BCSのコードは表4に、そし
て分岐型は第4A図に要約されている。 分岐命令は、他の全ての型の命令とは異なり、
他の命令の場合のデコード・サイクルの終了時に
実行される。即ち、分岐命令は、2番目の機械サ
イクルの間にデコードされ、そのサイクルの終り
のクロツク遷移の時に実行される。 表4に説明されている種々の分岐条件信号は、
分岐命令が実行されている時のALU2の条件か
ら生じるか、又はビツト依存分岐の場合は、
CDB上の個々のビツトの状態に基づいて生じる。
分岐するか又は否かの判定は、バツフアされた条
件ではなく、分岐命令の第2サイクルの間に機械
内に存在する「ホツト」な条件に基づいている。
従つて、使用される分岐条件は、分岐命令が第2
サイクル中にある時に第3(実行)サイクルにあ
る命令の結果でなければならない。 条件付き分岐命令の実行動作は、直接又は間接
のいずれかでありうる。この機械の場合、直接分
岐はADD GEN加算器14の出力を直接的に
IAR16にロードする事と定義される。間接分岐
はCDB4の内容をIAR16にロードする事と定
義される。もちろん、命令のBCSフイールドに
よつて指定される分岐条件が満足されなければ、
次の順序の命令アドレスがIAR16にロードされ
る。 分岐の実行動作は第2段階の終りに起きるの
で、(第3段階で)実行中の命令との直接的な時
間の重なりが存在する。従つて、(例えば)ALU
2を利用した計算動作は分岐の実行と同時に起
き、ホツトな分岐条件を提供する事が可能であ
る。一般に、ALU2によつて形成される分岐条
件は直接的にしか使われないので、有効な分岐条
件を提供するために、このようにして任意の条件
付き分岐をオーバーラツプさせる事ができる。ま
た、間接的分岐(CDB4の内容がIAR16にロ
ードされる)が望まれるならば、分岐命令が実行
されている間に転送動作がCDB4上に正しい分
岐先アドレスを置くようにする事が必要である。
複合命令(STC及びLXCN)及び計算(C)命令は、
分岐が実行されている間にALU2及びCDB4の
両者を付勢する事ができる。(計算命令は実行時
にCMUXバス6の内容をCDB4上に出力させ
る。) バイト・ロード/挿入命令(LIBY) バイトのロード/挿入命令は、プロセツサがあ
る種のバイト操作動作を行なえるようにするため
に設計された。特に、LIBYは、CDB4の上位バ
イト又は下位バイトを8つのスタツク1のレジス
タの任意のものの上位バイト又は下位バイト位置
にロードする事を可能にする。宛先のスタツク・
レジスタの影響を受けないバイトは、その過程で
ゼロにされても又不変のままでもよい。 LIBYのフオーマツトは、第3図に示すよう
に、(4ビツトのOPコードに加えて)2ビツトの
IXフイールド、2ビツトの宛先バイト選択
(DBS)フイールド、宛先レジスタを指定するた
めの3ビツトのアドレス・フイールド、及びゼ
ロ/挿入選択(ZIS)フラグ・ビツトを含んでい
る。またLIBY命令には、12ビツトのオペラン
ド・フイールドも存在する。DBS及びZISビツト
によつて定義される動作は、第3図に要約されて
いる。 LIBYのデコード段階(第2サイクル5の間に
起きる動作は、アドレスの形成がいくらか違つて
いる点以外は通常のロード命令と同じである。
LIBYの場合、12ビツトのオペランド・ビツト
(表3に示すように、上位ビツトが拡張された4
つの場所を有する)が、IXフイールドによつて
指定されたインデツクス値に加算される。この加
算結果は、デコード段階の終了時にCABR5に
ロードされ、実行サイクル中にアドレスとして使
われる。実際は、CABR5の上位15ビツトだけ
がRAM又はI/Oのアドレスとして使われ、下
位ビツトなCDB4のどのバイトが宛先レジスタ
にゲートされるかを決定する。 LIBY命令に関して起きる実行動作は次の通り
である。 1 CABR5の内容が共通アドレス・バス23
(CAB)にゲートされ、所望のRAM24又は
I/Oデータをアドレスするために使われる。
アクセスされたデータは共通データ・バス4
(CDB)上に置かれる。 2 CABR5の下位ビツトは、3ビツトの宛先
アドレス・フイールドによつて指定されるレジ
スタ1の入力にゲートされるCDB4の1つの
バイトを決定する。同時にこのレジスタの現在
の内容も、「A」スタツク1の出力ポートを経
由して選択され、ALU2へゲートされる。
ALU2は、命令中のZISフラグ(ビツト11)の
状態に依存して、「A」入力を出力に与えるか
又は全部ゼロの出力を与える。 3 ALU2の出力の1バイト、CDB4から取り
出されなかつたもの、はCDB4からのバイト
として同じ宛先スタツク・レジスタの入力にゲ
ートされる。従つて、宛先スタツク・レジスタ
が実行サイクルの終了時にクロツクされる時、
16ビツト、CDB4からの半分及びALU2の出
力からの半分がそれにロードされる。 以上の動作を要約すると、下記の通りである。 デコード: 1 <IDR>デコード→EXR 2 (オペランド+ゼロOR<R0>OR<R4>)
→CABR(→CAB) 実行: 1 <RAM(CABR)>→CDB 2 <CDB(S)>→R(ABC、(MN)) 3 <R(ABC)>又は000……0→ALU「A」入
力 (注) ZISビツト(P)はALU入力の選択を
決定する。 4 ALU出力→R(ABC、(MN)) 無条件長分岐命令(BLU) 無条件長分岐命令は、65536個の命令を含む、
固有のアドレシング範囲内の任意の命令に即座に
分岐する手段をプロセツサに提供する。このため
に、第5図に示すフオーマツトは、16ビツトのオ
ペランドを含んでいる。BLU命令の型は無条件
分岐だけに関するものである。 第5図から、命令フオーマツトは、2ビツトの
IXフイールド及び2ビツトの分岐型(BT)フイ
ールドを、OPコード(=0110)及びオペラン
ド・フイールドに加えて含んでいる。インデツク
ス選択(IX)オプシヨンは表3に、分岐型
(BT)は第5図に要約されている。 条件付き分岐命令(BC)と同様、BLU命令は
2番目の機械サイクル中にデコードされ、そのサ
イクルを終了させるクロツク遷移の起きる時に実
行される。 BLUのデコード動作では、表3に示すように、
命令の16ビツトのオペランドに、選択されたイン
デツクス・レジスタの内容(又はゼロ)を加算す
る事によつて、分岐先アドレスを求めている。 条件付き分岐におけるように、第2(デコード)
サイクルの終了時に、ADD GEN加算器14の
出力又はCDB4が選択され、IAR16にロード
される。従つて、長分岐命令は条件付き分岐のよ
うに、直接分岐又は間接分岐のいずれも可能であ
る。直接又は間接分岐の決定は、命令のBTフイ
ールドによつて制御される。 計算命令(C) 計算命令(C)は、一般的な計算のために使用さ
れ、転送動作を伴なわない。転送動作が存在しな
いので、計算命令はIXフイールド又はオペラン
ドを必要としない。他の命令でインデツクス制御
及びオペランドのために使用されているビツト
は、代わりに実行される算術演算の特別な側面を
制御するために利用されている。この命令の種々
の制御ビツト、及びそれらが従うオプシヨンは、
第6A図〜第6D図に要約されている。これらの
「個々の制御ビツト」の用途は、下記の命令フオ
ーマツトの説明において詳述される。 第6A図に示されている「X」選択制御ビツト
(ビツト4)、RXCビツトは、スタツク1のレジ
スタR5からの乗数3(「X」)の基準化選択を制
御するために、RE、FUN0及びFUN1ビツト
(ビツト22、11及び12)と共に使用される。「X」
の基準化選択の詳細は第6A図に示されている。 計算命令のビツト5は、MEビツト(ビツト
21)がオンである事によつて、乗算器のクロツキ
ングが一般にエネーブルされている場合でも、下
位の16ビツトの積ビツト及び対応する部分積ビツ
トへのクロツキングを選択的に禁止する事を可能
にする。この制御は、以前に保存された積及び部
分積を乗算器3のパイプラインに回復させる時に
使われる。 命令ビツト6、7及び23は共にSCフイールド
を構成する。このフイールドは主に、内容が
CMUXバス6にゲートされるレジスタをアドレ
スするのに役立つ。REビツト(ビツト22)がオ
ンの時、SCフイールドは積レジスタ・セグメン
ト(第6C図参照)又はMCR8又はPSR9の内
容(第6D図参照)を選択して、CMUXバス6
の上に出力するために使われる。 計算命令のビツト8、9及び10はSAフイール
ドを構成する。このフイールドは、内容をALU
の「A」入力に供給すべきレジスタをアドレスす
るために使われる。またこれは、ALU2の出力
がスタツク1に書き戻されるべき時にその出力の
宛先を指定するのに役立つ。 5つの命令ビツト11〜15は、ALU機能選択
(FUN)フイールを構成する。このフイールドの
ビツト11(FUN0)は、積又はレジスタの情報
がALU2の「B」側に供給されるべきか否かを
指定でき、且つ使用されるALU2の機能の組を
決定できるという点で、実行される動作を変更す
る。表5A及び5Bは各々FUN0=0及びFUN0=
1の場合のALUの機能を示している。(計算命令
だけのために)選択された機能の特定の組はレジ
スタ拡張ビツトREとFUN0との組み合わせによ
つて決定される事に注意されたい。第6B図、第
6C図及び第6D図は、各々の場合にどのALU
機能選択コードが使用されるかを示している。 計算命令のビツト16〜22は、特殊な制御オプシ
ヨンの組を提供する。それらは下記の通りであ
る。 ビツト16、アンロツク・エネーブル(UE)ビ
ツトは、それがオン(1)の時、命令の実行中に
ALU2によつて生成された条件がPSRH9のビ
ツト6及び11〜15中に保存される事を可能にす
る。このビツトがオフ(0)の時、PSRH9は、
計算が実行される時に変更される事は許されな
い。 ビツト17、割込み禁止(II)フラグは、計算命
令に続く任意の命令に関する割込み保護を提供す
る。即ち、もしIIがオン(ビツト=1)であれ
ば、次に引き続いてアクセスされる命令は、たと
え割込みが保留中であつても実行される。この機
構は、保護された計算命令の直後に置かれた分岐
命令が、割込みの機会を与える事なく、計算命令
によつて生成された条件に基いて実行される事を
可能にする。 スタツク禁止(SI)フラグ(ビツト18)は、計
算命令によつて生成されたALUの結果がスタツ
ク1に書き戻される事を禁止する事を可能にす
る。書き戻しはビツトがオン(1)の時に禁止され
る。 ビツト19、「A」禁止(AI)フラグは、ALU
の「A」入力を全てゼロにするために使用でき
る。表5A及び5Bが特にAI=0(「A」は禁止され
ていない)の場合の動作を示している事に注意さ
れたい。AI=1の時、表5A及び5B中の項RSAは
0で置きかえなければならない。 ALUのキヤリー入力の選択は、表5A及び5Bに
示すようにFUNフイールドによつて示される。
しかしながら、計算命令において、キヤリー入力
エネーブル(CIE)フラグ(ビツト20)が選択さ
れたキヤリー入力を禁止する手段を提供する。も
しエネーブルされていなければ(CIE=0)、
ALUの実際のキヤリー入力はゼロになる。表5A
及び5BはCIE=1の時に実行されるALU動作を
示している事に注意されたい。 乗算器3のパイプラインは、計算命令が実行さ
れる時、乗算器エネーブル(ME)フラグ(ビツ
ト21)を1にセツトする事によつて、それがエネ
ーブルされている時にのみサイクルする。種々の
ALU機能制御コードは、計算を実行している時
に乗算器のパイプラインを移動させるか否かを決
定しない事に注意されたい。MEビツトのみがそ
の制御を提供している。 レジスタ拡張フラグ(ビツト22)は、ALUの
「B」側への入力として選択できるソースの数を
拡張するために使用される。RE及びFUN0は共
に、ALUの「B」入力を決定し、(表5A、5Bに
示すように)ALUの機能制御を選択する。 付加的な注意事項: 1 CMUXバス6の内容は、計算命令の実行中
にCDB4上に置かれる。従つて、間接分岐命
令が計算命令の直後に置かれるならば、それは
間接分岐先アドレスとして使用できる。 2 計算命令はオペランド・フイールドを持たな
いので、デコード段階の終りにCABR5に置
かれる数値は無意味である。 記憶及び計算命令(STC) 形式1XXXのOPコードを有する全ての命令は、
フオーマツトがいくらか類似している(第7図参
照)。これらは、データ転送と計算の両方の動作
を行なうので、複合命令又は並行命令と呼ばれて
いる。形式1000の1つのOPコードは、記憶及び
計算(STC)命令を表わしている。残りの7つ
のOPコード(下記に示す)の命令はロード、被
乗数選択及び計算(LXC)命令である。 第7A図に示すように、STC命令は、8つの
スタツク・レジスタのうちどれがアクセスされ、
その内容がRAM24に移動され得るかを指定す
るためのSCフイールド(ビツト4、6及び7)
を含んでいる。通常はIX0である、命令ビツト04
はSC0として使用される。従つてインデツクス制
御オプシヨンは、IX1ビツト(命令ビツト05)の
みによつて選択される。2つのインデツクス制御
オプシヨンが、表3に示すように許されている。
STC命令の残りのビツトは、3ビツトのSAフイ
ールド、5ビツトのFUNフイールド、5ビツト
のFUNフイールド及び8ビツトのオペランドを
構成する。SA及びFUNフイールドは以前に計算
(C)命令に関して定義したのと同一の性質を有して
いる。 他の命令型の多くがそうであるように、STC
命令に関するデコード動作は、アドレスの形成を
含んでいる。STC命令において、これは命令か
ら得られた8ビツトのオペランド・フイールド
を、表3に示すような方法で、選択されたインデ
ツクス・レジスタ(R0又はR4)の内容に加算す
るステツプを含んでいる。この加算を行なう時、
下位のオペランド・ビツトが上位オペランド・ビ
ツトの直前の位置に置換され、従つてそれは(実
行中に)アドレスとして使われる結果の上位15ビ
ツトの形成に関与する。デコード・サイルの終り
のクロツク遷移の時に、デコードされた命令は
EXR22にロードされ、形成されたアドレスは
CABR5にロードされる。 上記のように、STCは転送と計算の両方の実
行動作を有する。転送動作は下記のように行なわ
れる。 1 実行サイクル中、SC(命令ビツト1、2及び
3)によつて指定されたスタツク・レジスタの
内容がCMUXバス6及びCDB4にゲートさ
れ、CABR5中のアドレスもCAB23上に置
かれる。 2 実行サイクルの終りのクロツク遷移におい
て、CDB4の内容は、CAB23(CABR5の
内容)によつて指定されたRAM24又はI/
Oのアドレスに書込まれる。 同時に、下記の計算動作が行なわれる。 1 実行サイクル中、FUN0(ビツト11)、即ち
FUNフイールド(命令のビツト11〜15)の上
位ビツトは、CMUXバス6の内容又は積セグ
メントのどちらがALUの「B」入力のゲート
されるかを決定する。同時に命令のSAフイー
ルドによつて指定されるレジスタが、ALUの
「A」入力にゲートされる。 2 次に、やはり実行サイクル中に、ALUが
FUNフイールドの下位4ビツトによつて決定
されるように結果を形成する(表5A及び5B参
照)。 3 実行サイクルの終りのクロツク遷移の時に、
ALUの結果が、FUNフイールドによつて指定
される通りに配置される。即ち、それはSAフ
イールドによつて指定されるスタツク・レジス
タ中に書込まれるか又はされないかである。 以上の動作を要約すると下記の通りである。 デコード動作: 1 <IDR>デコード→EXR 2 (オペランド+<R0>又は<R4>)→
CABR(→CAB) 実行動作: 1 <R(DEF)>→CMUX→CDB、(及び被乗
数;MCRの制御の下で) 2 <CDB>→RAM(CABR)、 3 <CMUX>(FUN0=0の時)又は<RP>
(FUN0=1の時)→BMUX 4 <BMUX>*<R(ABC)→R(ABC) STCに関する付加的なコメント: 1 計算命令と違つて、複合命令は乗算器3のパ
イプラインのサイクル動作を制御するための特
別なビツトを含まない。STC命令の場合、乗
算器のパイプラインのサイクル動作は、
MCRH8のビツト09(第9A図参照)、MSFビ
ツトによつて制御される。MSFビツトがオフ
の時、STC命令が実行されても乗算器パイプ
ラインは決して動かない。MSFがオンの時、
パイプラインはSTC命令の実行時に常に動く。 2 CMUXバス6上に置かれた、選択されたレ
ジスタ内容は、乗算器パイプラインがクロツク
されれば、乗算器3に関する被乗数入力として
扱われる。 ロード及び計算命令(LXC) 形式1XXX(但しXXXは000ではない)のOPコ
ードを有する全ての命令は、ロード、被乗数選択
及び計算命令(LXCo、但しn=1〜7)であ
る。STC命令同様に、これらも転送(RAM24
からスタツク・レジスタへ)動作及び計算動作の
両者を起こさせるので、複合命令である。(第7
B図参照) LXC命令の下位2バイトは、上記STC命令と
同一のSAフイールド、FUNフイールド及びオペ
ランドを含んでいる。上位バイトは4ビツトの
OPコード・フイールド、2ビツトのIXフイール
ド及び2ビツトのSDフイールドを含む。LXCの
SDフイールド(ビツト6及び7)は、RAM24
からCDB4を経由して来るデータを受け取るた
めの宛先レジスタを指定するのに必要なアドレス
の一部を形成する。上位SDビツト、即ち左又は
右の4レジスタ群を選択するビツトは、単にSA
フイールドの上位ビツトの反転である。SAフイ
ールドはALUによつて形成された結果に関する
宛先レジスタを指定するので、RAM24から
(CDBを経由して)スタツク・レジスタに行くデ
ータは、ALUの結果によつて使用されていない
スタツクの入力ポートに入らなければならない。
言い換えると、ALUの結果はSAによつて指定さ
れたスタツク入力ポートを使用し、一方CDB4
からスタツク1へ行くデータは、常に不使用中の
入力ポートに指向される。 LXC命令のビツト1、2及び3は共に、実行
時に内容がアクセスされCMUXバス6にゲート
されるスタツク・レジスタのアドレスを構成して
いる。これら3ビツトは実際はOPコード・フイ
ールドの一部分であり、組み合せ000(これは
STC命令に関するものである)を含み得ない。
従つて、スタツク・レジスタ1、2、3、4、
5、6又は7だけが、LXC命令でスタツクの
「C」出力ポートを経由してアクセスできる。表
2Bから明らかなように、7つのLXC命令の各々
は、1つの特別なレジスタがCMUXバス6に対
して選択される事を前提としている。その他の点
では7つの命令は全て同一である。 CMUXバス6上に置かれた、選択されたレジ
スタの内容は、もしもFUNフイールドによつて
乗算が指定されていれば(FUN0=1)、乗算器
3に関する被乗数入力としても扱われる。STC
命令と同様に、LXC命令は乗算器パイプライン
のサイクル動作を制御するための特別のビツトを
持たない。その代りに、乗算器パイプラインの制
御は、FUNフイールドの上位ビツト(FUN0)
によつて指定されるALU制御機能によつて与え
られる。従つて、形式1XXXXのALU機能制御
コードのみがLXC命令中に乗算器パイプライン
を移動させる。 LXC命令に関するデコード動作は、可能なイ
ンデツクス制御オプシヨンがより広範である事を
除けば、STCと同一である。表3に示すように、
IXフイールドの組み合わせ00及び01は即値ロー
ド実行動作を指定し、一方組み合わせ10及び11は
ロード実行動作を指定する。即値データを形成す
る工程は、アドレスを形成する工程とは異なると
いう点で、デコード時に相違が見られる。これら
の工程の各々は表3に定義されている。IXフイ
ールド値がどのようなものであつても、インデツ
クス加算の結果はデコード・サイクルの終りのク
ロツク遷移の時にCABR5に置かれ、同時にデ
コードされた命令はEXR22にロードされる。 STC命令と同様に、LXC命令の実行サイクル
中に転送動作及び計算動作が起きる。2つの可能
な転送動作のうち1つがLXCの実行時に起き得
る。 1 もし転送が即値ロード動作であれば、実行サ
イクル中に、CABR5の内容は共通データ・
バス4(CAB)及び宛先レジスタ(SD及び
SA0によつて定義される)にゲートされる。こ
れらのデータは、実行サイクルの終りのクロツ
ク遷移の時に宛先レジスタにロードされる。 2 転送がロード動作であれば、CABR5の内
容が共通レジスタ・バス(CAB)にゲートさ
れ、RAM24又はI/Oによつてレジスタと
して使われる。そのアドレスに存在するデータ
は、次にCDB4上に置かれ、指定された宛先
レジスタにゲートされる。再び、実行サイクル
の終りのクロツク遷移がデータを宛先レジスタ
にロードする。 LXC命令に関する計算動作は、一般に上記
のSTCに関して定義したものと同一である。
1つの相違点は、乗算器パイプラインのクロツ
ク動作がMCRH8ビツトではなく、上位FUN
ビツト(FUN0)によつて制御される事であ
る。 以上の動作を要約すると次の通りである。 デコード動作: 1 <IDR>デコード→EXR 2 (オペランド+0又は<R0>又は<R4>)
→CABR(→CDB) 実行動作: 1 <RAM(CABR)>→CDB→R(A、
HD);IX0=1の時 又は(CABR)→CDB→R(A、HD);
IX0=0の時 2 <B(DEF)>→CMUX(及び被乗数;FUN0
=1の時) 3 <CMUX>(FUN0=0の時)又は<RP>
(FUN0=1の時)→BMUX 4 <BMUX>*<R(ABC)>→R(ABC) 複合命令に関する一般的なコメントが必要であ
る。即ち、複合命令STC及びLXCは、計算命令
が有している各制御ビツトを全て有しているわけ
ではない。従つて、複合命令に関して多くの可能
な制御オプシヨンの全てを指定するために、個々
の制御の状態はALU2の機能制御コード、FUN
コードによつて暗黙に指示される。言いかえる
と、種々の個々の制御のデフオールト値が、複合
命令中の各々の異なつたFUNコードの組み合わ
せ毎に、ある値に設定されている。各FUNコー
ド毎の各個の制御のデフオールトは、表5A及び
表5Bに定義されている。表を読む時、特定の
FUNコードに関して定義される動作が正しく解
釈できるように、どの型の命令が考察されている
かを正しく意識する必要がある。 E−5 付加的なプロセツサ機構 前述の2つの章では、パイプライン動作及び命
令セツトを含めて、プロセツサの基本部分につい
て説明した。この章は、以上説明しなかつた機械
の特殊な機構を取り扱い、さらに特殊なインター
フエースについて説明する。 線型拡張アドレシング機構(LEAF) 線型拡張アドレシング機構(LEAF)はオプシ
ヨンの機構であり、MCRL8のビツト0、LEA
ビツト(第8B図参照)によつて起動される。こ
れは、プロセツサによる命令記憶装置及びデータ
記憶装置の両者へのアドレス能力を、付加的に8
ビツト拡張する事を可能にする。この拡張を行な
う論理回路は、プロセツサによつて制御される外
部のLEAFアダプタ中に殆んど含まれている。プ
ロセツサとLEAFアダプタ27との間のインター
フエースは第12図に示されている。 LEAFアダプタ及びインターフエース 拡張されたアドレス動作は、LEAFアダプタと
一緒にプロセツサによつて次のように行なわれ
る。 LEAFアダプタは、プロセツサの4個のアドレ
シング関係レジスタIAR、ILR、R0及びR4の、
各々8ビツトまでの拡張部を含んでいる。プロセ
ツサのADD GEN加算器14及び+1加算器2
5からのキヤリー(LEAFインターフエース信号
は各々GY及びLEAY)は、データ及び命令のア
ドレス計算が外部レジスタにまで拡張できるよう
に、アダプタに供給される。 命令型、使用されるアドレシング・レジスタ
(なし、R0、R4、ILR)、分岐型及び変位の信号
を含む、取り出された命令の上位13ビツトから直
接LEAFアダプタ27によつてデコードされた情
報は、LEAFアダプタがプロセツサと同期して8
ビツトのデータ及び命令のアドレスの拡張部の完
全な計算を行なう事を可能にするために、アドレ
スのキヤリーLEAY及びGYと共に使用される。 LEAFの動作のための流れの制御は、下記のイ
ンターフエース信号によつてLEAFアダプタ27
に供給される(第13図参照)。 1 ILREはILRホールド・ラツチの状態を定義
する。 2 FBACは前景−背景ラツチの状態を与える。 3 3つのIRWC(インターフエース読取/書込
制御)ビツトは、現在の命令が順次的なものか
又は分岐が起きたかを示すためにデコードされ
る。IRWC制御ビツトはLEAFモードでは、少
し違つたようにデコードされる(表1参照)。 LEAFの動作 LEAFモード(MCRL8のビツト0がオン)の
時、ロード(L)及び長分岐(BLU)のような
命令はLEAFアダプタ27中の拡張レジスタがプ
ロセツサからロードされる事を必要とする。拡張
レジスタをロードするために使われる方式は、ロ
ード命令とそれに続く特別な条件の間接分岐命令
より成る2命令系列の実行を必要とする。上記系
列を実行すると、拡張されたワードの3番目のバ
イトが、間接分岐命令の3番目の段階の間に共通
アドレス・バス23を経由して、選択されたアダ
プタ・レジスタに伝達される。この系列の一般的
な形式は、下記の通りである。 ロード 条件付き間接分岐 2つの型の拡張アドレス命令に関するプロセツ
サとアダプタとの間の信号のフローが第13図に
示されている。両方の場合、ロード命令が最初に
アドレスの下位2バイトをCDB4に移動させる。
次に後続する特別な条件付き分岐命令(OPコー
ド=0110、BT=01)が2つの動作を引き起こ
す。 1 最初に、先行するロード命令からのALUの
デフオルト条件に一致させるように、分岐条件
選択(BCS)コードの選択に基いて分岐が起
きたり又起きなかつたりする。 2 拡張アドレスの3番目の(上位)バイトが、
共通アドレス・バス(CAB)23を経由して、
LEAFアダプタ27に供給される。 第13図に示すように、分岐が起きなかつた場
合のロード/BCの系列は、外部インデツクス・
レジスタをロードするために使用される。ロー
ド/BCI(記憶禁止の条件付き分岐;OPコード=
0100、BT=11)系列が実行されると、BCの動
作に加えて、スタツク・レジスタの実際のロード
が禁止される。ロード/BCI系列は、拡張アドレ
ングを伴なつた直接分岐又はGOTOを実現する
ために使用される。ここでBCSコードは分岐が
起きるように選択される。 もし実行される2命令系列がロード/BALI
(分岐及びリンク間接;OPコード=0110、BT=
11)であれば、BCIの動作に加えて、分岐に関す
る戻りアドレスを保存するためにILR15がロツ
クされる。BALIに続く命令に関しては、NOPが
強制的に実行される。ロード/BALI系列は、拡
張アドレシングを用いたアプリケーシヨンに対す
る分岐及びリンクの可能性を提供するために使わ
れる。 一般に、分岐の間にCAB23を使用する事は
LEAFモードの動作に特有である。これはサイク
ル・スチール(DMA)のメモリ・アクセスが拡
張アドレス動作と一緒には使用し得ない事を意味
している。 間接プログラム・アクセス(IPA) 間接プログラム・アクセス(IPA)機構は、プ
ロセツサがそれ自身の命令記憶装置を読取り、且
つ書込む事を可能にする。従つて、(常駐の制御
プログラムを用いて)I/O装置を経由して受け
取つたアプリケーシヨン又は診断プログラムを命
令記憶装置に書込む事が可能になる。この型の動
作を可能にする制御プログラムは、命令記憶装置
20の中にあるか又はROSの形で含まれている。
そのような常駐のI/O制御プログラムは、ロー
カル又はリモートのホストと共に動作するのに必
要なプロトコル及びエラー検査を全て提供するよ
うに設計できる。第14図はIPAに関するフロー
経路のブロツク図である。 IPA機能は、2つの特別な分岐命令の変種
BIPAR(分岐、IPA読取)及びBIPAW(分岐、
IPA書込)を用いて、プロセツサにおいて実現さ
れる。BIPAR命令は、命令記憶装置20から命
令をプロセツサの内部レジスタ(R5及びMCRH
8)に読取り、そこでデータとして操作する事を
可能にする。BIPAW命令は、プロセツサ内の1
対のスタツク・レジスタ(R0又はR4及びR5)か
らのデータを命令として、特別な命令記憶装置2
0の記憶位置に書込む事を可能にする。 IPA読取動作 IPA読取命令BIPARは、第4B図に示される
特別な実行動作を起こさせる。BIPAR命令は、
命令読取動作を起こさせるために次のように用い
られる。
ールド(IX)はインデツクス動作を指定する
(表3参照)。インデツクス制御論理はIXをデコ
ードし、適当なキヤリー禁止信号を発生する。さ
らにこの論理回路は、R0、R4、ILRレジスタの
内容又はゼロをオペランド値への加数として選択
させる。 命令順序付け論理 良好な実施例において、取り出されるべき命令
のアドレスは、常に命令アドレス・レジスタ
(IAR)16に含まれている。ブロツク図(第1
図)に示されるように、IAR16は次の命令アド
レスを決定するための4つの選択可能な入力を有
する。 「+1」加算器25の出力(この加算器は常に
最後のIAR16の内容に1を加算したものに等し
いアドレスを生成する)は、次の命令がプログラ
ム記憶装置20から取り出されるべき時に、次の
IAR16の入力として選択される。 アドレス生成加算器14の出力が、直接分岐が
実行される時はIAR16の入力として選択され
る。 共通データバス(CDB)4の内容が、間接分
岐が実行される時はIAR16の入力として選択さ
れる。 割込みサービス・ルーチンが開始される時、割
込み制御論理17は、IAR16に置かれるべき適
当な割込みエントリー・アドレスを提供する。そ
れはまた、「電源」及び「プロセツサ」リセツ
ト・ルーチンに関する正しいエントリー・アドレ
スも発生する。 順序付け論理の正規の、非分岐、非割込み動作
において、命令アドレス・レジスタ(IAR)16
の内容は、命令アドレス・バス(IAB)に置か
れ、そこでプログラム記憶装置20及び同時に+
1加算器25によつて使用される。次に、命令N
がプログラム記憶装置20から取り出される時、
値N+1が+1加算器25によつて形成される。
最後に、クロツク時に命令Nが命令デコード・レ
ジスタ(IDR)19にロードされる時、新しい命
令の計数値N+1がIAR16にロードされる。 分岐の場合、IAR16はクロツク時にCDB4
の内容又はADD GEN加算器14の出力のいず
れかをロードされる。その選択は分岐が、直接型
か又は間接型かによつて制御される。 プロセツサのブロツク図(第1図)に示される
命令リンク・レジスタ15(ILR)は、IAR16
から入力を受け取る。これはILR15が動作して
いる間、それは常に最後の取り出された命令
(IDR19中の命令)のアドレスを含んでいる事
を意味する。ILR15を駆動するクロツクは、プ
ロセツサが割込みにサービスするために「前景
(フオアグラウンド)」状態に切り換わつた時に、
ロツクするように制御される。従つて、割込みが
サービスされる時、ILR15は停止し、分岐先と
して使用できる適当な戻りアドレスを含んでい
る。また、2種類の「長い」分岐命令(第5図参
照)は「前景」状態を強制的に取らせ、そして
ILR15は割込み以外の条件の下で、戻りアドレ
スを保持するために使用できる。ILR15は、そ
れがインデツクス・レジスタとしてアクセスされ
る毎にアンロツクされる。 E−3 割込みアーキテクチヤ 良好な実施例の割込み論理は、2つの特別な属
性を考慮して設計された。最初に、種々の割込み
構造を実現するためのユーザのプログラミングの
柔軟性が提供される。もし、例えば6レベルのピ
ラミツド型の割込み構造が望ましければ、それは
プログラミングによつて達成できる。第2に、割
込みを実現するために必要な論理回路の総量は、
比較的小さく保つ事が意図された。 固有の割込み構造及びその要素 良好な実施例は、「背景」及び「前景」と呼ば
れる2つの割込みレベルを提供するいくつかの部
分より成る固有の割込み構造を具現している。
各々の割込みは外部的に発生した信号によつてト
リガされ、割込み論理内のラツチに記憶される。
未処理の割込みは、エネーブルされたならば、優
先度の順にサービスされる(表6参照)。どれか
の割込みに関する割込みサービスが開始すると、
処理レベルは「背景」から「前景」に切り換わ
り、IAR16はサービスされるべき割込みレベル
に対応した割込みエントリー・アドレスにセツト
される。割込みを行なう直前に取り出された命令
は、命令パイプラインの影響を補償するために
NOPとして実行するように強制される。これに
ついては後述する。 プロセツサ内の論理回路の種々の部分が、固有
の割込みアーキテクチヤをサポートするものとし
て、第1図において識別できる。それには次のも
のが含まれる。 1 割込みメモリ・ラツチは、未処理の割込みを
記憶するためにPSRL9のビツト08〜15で実現
される。割込みがサービスされる時、サービス
されるレベルに対応するラツチはリセツトされ
る。割込みがあるレベルで未処理のままの時、
そのレベルの他の割込みは認識され得ない事に
注意されたい。 2 MCRL8のビツト08〜15に含まれている割
込みマスク・ビツトは、個々の未処理の割込み
を選択的に禁止するのに役立つ。8つの割込み
レベルの任意の組み合せを禁止する事ができ
る。MCRL8のビツトは、プログラミングに
より任意にセツト及びリセツトできる。 3 割込み制御論理17は、割込みサービスが開
始する時に、適当な割込みエントリー・アドレ
スをIAR16に挿入させる。この理論17は
又、「NOP強制」フラグ・ラツチ29(第1
図)のセツテイングも制御する。このラツチは
割込みの直前の命令をNOPとして実行させる。 固有の割込みサービスの優先度 割込み信号をプロセツサへ伝えるために、2本
のマルチプレクス式割込み信号線18が、プロセ
ツサ・モジユール・インターフエース論理17中
に設けられる。これらの信号線18の各々は、4
つまでの時間マルチプレクス式割込み信号を伝え
る事ができる。割込み信号は、2ビツトの走査ク
ロツク27、すなわちISCC0及びISCC1の制御
の下に、2つの割込み入力ポートでサンプリング
される。 8つの可能な割込み信号及び2つのリセツト信
号の各々は、割込みサービスが開始された時にそ
こでタスク処理が始まる、プログラム記憶装置2
0中の特別な固定したエントリー位置を有してい
る。これらのエントリー・アドレスは、表6に示
すように配列されている。割込み1〜7及び2つ
のリセツトに関するエントリー・アドレスは、各
レベルのために割込みサービス処理を行うか、又
は命令記憶装置20中の他の場所にあるより精巧
な割込みルーチンに分岐するために32(16進数で
は20)個の命令が利用可能なように分布してい
る。任意の長さの割込みサービス・ルーチンを、
最高の優先度の割込みであるレベル0の割込みの
エントリー・アドレスに隣接して配置する事がで
きる。 また、未処理の割込みを記憶するPSRL9より
成るラツチは、割込みエントリー・アドレスが
IAR16中に置かれた時に、個々にリセツトされ
る事にも注意されたい。 割込み信号 割込みの割込み信号は、論理ゼロから1への遷
移より成り、これはマルチプレクスされた割込み
信号の現在のサンプルと、前回のサンプルとを比
較する事によつて検出される。そのような信号が
検出されると、ラツチがその事象を記憶するため
にセツトされる。このラツチはPSRL9を読取る
事によつて調べる事ができる。もし発生した特定
の割込みに関して、MCRL8により割込みサー
ビスが禁止されていなければ、割込み開始シーケ
ンスが始まる事ができる。MCRLのビツト8〜
15は、セツトされた(=1)時、各々割込み信号
0〜7に関するサービスを、個々に禁止する事を
思い出していただきたい。もし割込みサービスが
禁止されれば、個々の割込みメモリ・ラツチはセ
ツト状態にとどまり、適当なMCRL8のビツト
がリセツトされて、サービスを可能にする時に順
序付け論理に現れる。 割込みメモリ・ラツチは、所定の時刻に未処理
(係属中)の1つ以上の割込みを表示する事がで
きる。事象の途中に割込み処理の開始が可能にな
る時、実際にサービスを受ける割込みは、マス
ク・オフされていない割込みの固有の優先度によ
つて決定される。言いかえると、2つ以上の割込
みが未処理の時、最高の優先度を持つ。マスクさ
れていない割込みが最初にサービスされ、他の低
い優先度の要求は、優先度の順に後にサービスさ
れるように、ハードウエアによつて保持され続け
る。 固有割込みの開始動作の要約 背景状態でプロセツサによつて実行され始めた
命令のストリームが、未処理の割込みにサービス
するために中断される毎に、下記の事象のシーケ
ンスが起きる。 1 最初、命令デコード・レジスタ19(IDR)
中の「可視的な」命令が割込み保護されていれ
ば、割込みの開始は起き得ない。いくつかの命
令は常に保護され、あるものは決して保護され
ず、そしてあるものは選択的に保護されている
事に注意されたい。表1はどの命令が保護さ
れ、一般にどのようにして保護が行なわれるか
を示している。 2 デコードされた命令に関して保護の指示がな
ければ、そして割込みが未処理であれば、割込
みエントリー・アドレスが命令アドレス・レジ
スタ(IAR)16に入れられる。同時に、命令
記憶装置から以前に取り出された命令がIDR1
9に置かれる。しかし、割込みが許されたの
で、この時、IDR19にロードされた命令を無
視させるフラグ29もセツトされる。即ち、
IDR19にロードされた命令は21でデコード
され、その後NOPとして実行される。NOPを
実行した結果として、機械は状態を変化させな
い。 3 割込みエントリー・アドレスがIAR16にロ
ードされる時、対応する割込みメモリ・ラツチ
はリセツトされ、命令リンク・レジスタ
(ILR)15の内容は、ちようど取り出された
命令のアドレスに変更される。これは実行され
ない命令に関するものである。ILR15はこの
時点で凍結され、そこに含まれるアドレスがア
クセスされるまで凍結されたままである。従つ
て、割込みサービス・ルーチンの終了時に、単
純にILR15の内容によつて指定されるアドレ
スに分岐して、正規の命令の順序を正確に再開
する事ができる。 前述の一連の動作の最終的な効果は、割込み
がサービスされる毎に1つの余分の命令NOP
が実行される事である。この方式の利点は、割
込みシーケンスが開始された時に取り出され
た、保護された命令をどのように取り扱うかと
いう問題を除去している事である。従つてこの
機械の命令に関する割込み保護の要求は単純化
される。 いくつかの可能な割込み方式 プロセツサの固有の割込み構造は充分に柔軟な
ので、ユーザーが種々の割込み取り扱い方式を実
現する事が可能である。いくつかの例を下記に示
す。 1 最初に、プロセツサの固有割込み構造をその
まま使用する事ができる。即ち、割込みが発生
した時、それは最初、待機中になり、次に固有
割込み制御論理によつて確立された優先度の順
に正規の方式でサービスされる。割込みサービ
スが開始すると、プロセツサは前景状態に切り
換わる。サービスが終了した後、レベル出口付
き分岐(BLEX)命令が、割込まれたプログラ
ムに制御を戻し(元々NOPで置きかえられた
命令でスタートする)、プロセツサを背景状態
に切り換える。 2 割込みのサービスを行なう正規の、本来の方
式の単純な変型では、割込みサービスはスタツ
クに入れる事ができる。この方式では、割込み
は発生した時にはサービスされず、それが発生
したという事実が(ソフトウエアによつて)保
存される。この方式では、プロセツサは、割込
みがスタツクに保存される短かい時間の間だけ
前景状態にとどまり、次に普通のように背景状
態に戻る。後に、便利な時にスタツクされた割
込みは背景状態で調査され、ユーザーが望む任
意の順序でサービスされる。 3 真の割込みは計画されていない分岐のような
ものである。しかしながら、固有プロセツサの
割込み構造の設計は、通常は割込み制御回路に
よつて行なわれるハードウエア動作をオーバー
ライドし、完全にソフトウエアによつて実行す
る事を可能にしている。これは、全ての割込み
をマスキング又は禁止し、その代りに保留中の
割込みの状態をPSRL9を読取る事によつて、
周期的に調査する事によつて達成される。保留
中である事が判明した割込みは、ユーザーの望
み通りの順序でサービスする事ができ、又所望
によりスタツクに保存する事ができる。もしこ
の技術を使つた場合は、割込みメモリ・ラツチ
はプログラミングによつてリセツトしなければ
ならない。これは、PSRL9に書込みを行なう
命令によつて提供される機構を用いれば可能で
ある。 E−4 命令セツト この節では、各命令のデコード及び実行の動作
の概略を説明し、各命令中の種々の制御フイール
ドの目的について述べる。 命令フオーマツト及びニーモニツク 全ての機械語命令は、24個のビツト00〜23から
成る。各命令の最初の4ビツト(ビツト00〜13)
は、命令のフオーマツト及び機能を指定するのに
役立つオペレーシヨン・コード(OPコード)よ
り成る。全ての型の命令のフオーマツトは、表1
(「発明の詳細な説明」の末尾)に要約されてい
る。各OPコードのデコード及び実行の動作は表
2に要約されている。 種々の表及び図は、命令の型を1組のニーモニ
ツクによつて参照している。これらの「ハードウ
エア・ニーモニツク」はここで便宜上使用してい
るが、アセンブラ言語のプログラムを書く時に使
うソフトウエア・ニーモニツクと混同すべきでな
い。 インデツクス制御フイールド 多くの命令のビツト4及び5(表1参照)は、
インデツクス制御フイールド(IX)を含んでい
る。このフイールドは、インデツクス・レジスタ
の値(R0、R4又はILRの内容)又はゼロ(イン
デツクス・レジスタは選択されない)を選択する
ため、及び命令中のオペランドを変型して、アド
レス又は即値を形成するために、その選択された
値がどのように使用されるかを指定するための両
者に役立つ。IXフイールドの組み合わせに割り
当てられた意味は、命令のOPコードに依存する。
表3は全ての命令型についてIXフイールドの作
用を要約している。 選択されたインデツクス・レジスタを命令のオ
ペランドに(ADD GEN加算器14で)加算す
る事によつて得られる値は、共通アドレス・バ
ス・レジスタ5(CABR)に置かれる。ここで
それはアドレスとして、又は即値オペランドとし
て使用される。一般に、CABR5の内容をアド
レスとして使用するか又は即値オペランドとして
使用するかは、OPコードによつて決定される。
分岐命令の型の場合、ADD GEN加算器14の
出力は直接の分岐先アドレスとして使用し得る。
もしそうであれば、ADD GEN加算器14の出
力はCABR5以外にIAR16へもロードされる。 命令実行動作 表2に示すように、各々の命令は、転送作用、
計算作用又はその両者を有している。上位のOP
コード・ビツトが1であるような全ての命令(複
合命令)は、転送作用及び計算作用の両者を有し
ている。命令実行動作及び種々の命令型のフオー
マツトを下記において説明する。 即値ロード命令(LIL、LIR) LIL及びLIR命令(各々OPコード、0000及び
0001)は、スタツク1の左側又は右側のレジスタ
に即値オペランドをロードさせる。命令のフオー
マツト(第2A図参照)は、2ビツトのインデツ
クス制御フイールド(IX)、2ビツトのスタツ
ク・レジスタ宛先フイールド(SD)及び16ビツ
トのオペランド・フイールドを含んでいる。 IXフイールドは、即値データを形成するため
に16ビツトの命令オペランド・フイールドに、命
令レジスタ1(R0又はR4)、インデツクス・リ
ンク・レジスタ(ILR)又はゼロのうちどれを加
算するかを決定する。加算の結果は、命令のデコ
ード段階の終りにCABR5にロードされる。次
にCABR5の内容は実行段階中にCDB4に出力
され、実行段階のクロツク・パルスの終了時には
適当な宛先レジスタ1にロードされる。 3ビツトのSDフイールドは、IXフイールドの
制御の下で形成される即値オペランドの(スタツ
ク1内の)宛先レジスタを決定する。即値ロード
型の命令の場合、SDの1及び2ビツト(命令ビ
ツト6及び7)は、通常はOPコード・ビツトで
ある命令ビツト3(SD0)によつて延長され、必
要な3ビツトの宛先レジスタ・アドレスを生じ
る。ビツトSD1及びSD2は、スタツク1の左側
又は右側の4つのレジスタのどれが宛先かを決定
し、ビツトSD0は左側又は右側のレジスタ群を選
択する。 ロード命令(L) ロード(L)命令(OPコード0010)(第2B図
参照)のフオーマツトは、オペランド・フイール
ドが16ビツトではなく15ビツトを含んでいる事を
除けば、上記の「LI(R又はL)」型の命令に類
似している。命令のビツト23、フオーマツト中の
下位オペランド・ビツトは、ロード命令中のSD
フイールドの上位ビツト(SD0)として使用さ
れ、スタツク1の左側又は右側の宛先レジスタを
完全に指定することを可能にする。 ロード命令のオペランドは、次のようにして
RAMアドレスを形成するのに使われる。即ち、
15ビツトのオペランド・フイールド及び追加され
たゼロ(0)が、第2B図に示すように、16ビツ
トの選択されたインデツクス・レジスタ(IXフ
イールドによつて指定されるようにR0、R4又は
ゼロ)に加算され、結果がCABR5に置かれる。
この動作は命令のデコード段階中に起きる。 ロード命令の実行動作においては、CABR5
の内容がCABに出力されるので、これは即値オ
ペランドとしてではなくRAM24又はメモリ・
マツプトI/O(MMIO)によつてアドレスとし
て使用できる。このアドレスからのデータは、実
行段階中にCDB4に置かれ、そして実行段階終
了のクロツク遷移において宛先スタツク・レジス
タ中にロードされる(命令のSDフイールドがレ
ジスタ・アドレスを指定する)。 記憶命令(ST) 記憶命令(OPコード0011)は、任意のスタツ
ク・レジスタの内容を、指定されたRAM24の
記憶位置に移動する事を可能にしている。第2C
図に示すように、この命令のフオーマツトはロー
ド命令のフオーマツトに非常によく似ている。相
違点は、ロード命令のSDフイールドが、記憶命
令のフオーマツトではSCフイールドになつてい
る事である。SCフイールドは、内容を記憶すべ
き8つのスタツク・レジスタの1つを選択するの
に役立つ。 記憶命令のデコード動作は、ロード命令のそれ
に似ている。即ち、15ビツトのオペランド・フイ
ールドの内容及び追加されたゼロ(0)は、命令
中のIXビツトによつて指定されたインデツク
ス・フイールドにADD GEN加算器で加算され、
その結果はデコード段階の終了時にCABR5の
中に置かれる。 実行段階中に、CABR5の内容は共通アドレ
ス・バス(CAB)23上に置かれ、そこでRAM
24又はI/Oデバイスによつてアドレスとして
使用される。記憶されるべきデータは、命令の
SCフイールドによつて指定されるスタツク・レ
ジスタから取り出される。指定されたレジスタの
内容は、CMUXバス6に出力され、次にドライ
バ13(第1図参照)を経由してCDB4に供給
される。実行段階を終了するクロツク遷移におい
て、CDB4の内容は、CAB23上に存在する宛
先アドレスにロードされる。 条件付分岐命令(BC) 条件付分岐命令(OPコード0100)のフオーマ
ツトは、第4A図に示すように、12ビツトのオペ
ランド・フイールドを有している。残りの12ビツ
トはOPコードに加えて、2ビツトのIXフイール
ド、2ビツトの分岐型(BT)フイールド及び4
ビツトの分岐条件選択(BCS)フイールドを含
んでいる。インデツクス(IX)フイールドの制
御動作は表3に、BCSのコードは表4に、そし
て分岐型は第4A図に要約されている。 分岐命令は、他の全ての型の命令とは異なり、
他の命令の場合のデコード・サイクルの終了時に
実行される。即ち、分岐命令は、2番目の機械サ
イクルの間にデコードされ、そのサイクルの終り
のクロツク遷移の時に実行される。 表4に説明されている種々の分岐条件信号は、
分岐命令が実行されている時のALU2の条件か
ら生じるか、又はビツト依存分岐の場合は、
CDB上の個々のビツトの状態に基づいて生じる。
分岐するか又は否かの判定は、バツフアされた条
件ではなく、分岐命令の第2サイクルの間に機械
内に存在する「ホツト」な条件に基づいている。
従つて、使用される分岐条件は、分岐命令が第2
サイクル中にある時に第3(実行)サイクルにあ
る命令の結果でなければならない。 条件付き分岐命令の実行動作は、直接又は間接
のいずれかでありうる。この機械の場合、直接分
岐はADD GEN加算器14の出力を直接的に
IAR16にロードする事と定義される。間接分岐
はCDB4の内容をIAR16にロードする事と定
義される。もちろん、命令のBCSフイールドに
よつて指定される分岐条件が満足されなければ、
次の順序の命令アドレスがIAR16にロードされ
る。 分岐の実行動作は第2段階の終りに起きるの
で、(第3段階で)実行中の命令との直接的な時
間の重なりが存在する。従つて、(例えば)ALU
2を利用した計算動作は分岐の実行と同時に起
き、ホツトな分岐条件を提供する事が可能であ
る。一般に、ALU2によつて形成される分岐条
件は直接的にしか使われないので、有効な分岐条
件を提供するために、このようにして任意の条件
付き分岐をオーバーラツプさせる事ができる。ま
た、間接的分岐(CDB4の内容がIAR16にロ
ードされる)が望まれるならば、分岐命令が実行
されている間に転送動作がCDB4上に正しい分
岐先アドレスを置くようにする事が必要である。
複合命令(STC及びLXCN)及び計算(C)命令は、
分岐が実行されている間にALU2及びCDB4の
両者を付勢する事ができる。(計算命令は実行時
にCMUXバス6の内容をCDB4上に出力させ
る。) バイト・ロード/挿入命令(LIBY) バイトのロード/挿入命令は、プロセツサがあ
る種のバイト操作動作を行なえるようにするため
に設計された。特に、LIBYは、CDB4の上位バ
イト又は下位バイトを8つのスタツク1のレジス
タの任意のものの上位バイト又は下位バイト位置
にロードする事を可能にする。宛先のスタツク・
レジスタの影響を受けないバイトは、その過程で
ゼロにされても又不変のままでもよい。 LIBYのフオーマツトは、第3図に示すよう
に、(4ビツトのOPコードに加えて)2ビツトの
IXフイールド、2ビツトの宛先バイト選択
(DBS)フイールド、宛先レジスタを指定するた
めの3ビツトのアドレス・フイールド、及びゼ
ロ/挿入選択(ZIS)フラグ・ビツトを含んでい
る。またLIBY命令には、12ビツトのオペラン
ド・フイールドも存在する。DBS及びZISビツト
によつて定義される動作は、第3図に要約されて
いる。 LIBYのデコード段階(第2サイクル5の間に
起きる動作は、アドレスの形成がいくらか違つて
いる点以外は通常のロード命令と同じである。
LIBYの場合、12ビツトのオペランド・ビツト
(表3に示すように、上位ビツトが拡張された4
つの場所を有する)が、IXフイールドによつて
指定されたインデツクス値に加算される。この加
算結果は、デコード段階の終了時にCABR5に
ロードされ、実行サイクル中にアドレスとして使
われる。実際は、CABR5の上位15ビツトだけ
がRAM又はI/Oのアドレスとして使われ、下
位ビツトなCDB4のどのバイトが宛先レジスタ
にゲートされるかを決定する。 LIBY命令に関して起きる実行動作は次の通り
である。 1 CABR5の内容が共通アドレス・バス23
(CAB)にゲートされ、所望のRAM24又は
I/Oデータをアドレスするために使われる。
アクセスされたデータは共通データ・バス4
(CDB)上に置かれる。 2 CABR5の下位ビツトは、3ビツトの宛先
アドレス・フイールドによつて指定されるレジ
スタ1の入力にゲートされるCDB4の1つの
バイトを決定する。同時にこのレジスタの現在
の内容も、「A」スタツク1の出力ポートを経
由して選択され、ALU2へゲートされる。
ALU2は、命令中のZISフラグ(ビツト11)の
状態に依存して、「A」入力を出力に与えるか
又は全部ゼロの出力を与える。 3 ALU2の出力の1バイト、CDB4から取り
出されなかつたもの、はCDB4からのバイト
として同じ宛先スタツク・レジスタの入力にゲ
ートされる。従つて、宛先スタツク・レジスタ
が実行サイクルの終了時にクロツクされる時、
16ビツト、CDB4からの半分及びALU2の出
力からの半分がそれにロードされる。 以上の動作を要約すると、下記の通りである。 デコード: 1 <IDR>デコード→EXR 2 (オペランド+ゼロOR<R0>OR<R4>)
→CABR(→CAB) 実行: 1 <RAM(CABR)>→CDB 2 <CDB(S)>→R(ABC、(MN)) 3 <R(ABC)>又は000……0→ALU「A」入
力 (注) ZISビツト(P)はALU入力の選択を
決定する。 4 ALU出力→R(ABC、(MN)) 無条件長分岐命令(BLU) 無条件長分岐命令は、65536個の命令を含む、
固有のアドレシング範囲内の任意の命令に即座に
分岐する手段をプロセツサに提供する。このため
に、第5図に示すフオーマツトは、16ビツトのオ
ペランドを含んでいる。BLU命令の型は無条件
分岐だけに関するものである。 第5図から、命令フオーマツトは、2ビツトの
IXフイールド及び2ビツトの分岐型(BT)フイ
ールドを、OPコード(=0110)及びオペラン
ド・フイールドに加えて含んでいる。インデツク
ス選択(IX)オプシヨンは表3に、分岐型
(BT)は第5図に要約されている。 条件付き分岐命令(BC)と同様、BLU命令は
2番目の機械サイクル中にデコードされ、そのサ
イクルを終了させるクロツク遷移の起きる時に実
行される。 BLUのデコード動作では、表3に示すように、
命令の16ビツトのオペランドに、選択されたイン
デツクス・レジスタの内容(又はゼロ)を加算す
る事によつて、分岐先アドレスを求めている。 条件付き分岐におけるように、第2(デコード)
サイクルの終了時に、ADD GEN加算器14の
出力又はCDB4が選択され、IAR16にロード
される。従つて、長分岐命令は条件付き分岐のよ
うに、直接分岐又は間接分岐のいずれも可能であ
る。直接又は間接分岐の決定は、命令のBTフイ
ールドによつて制御される。 計算命令(C) 計算命令(C)は、一般的な計算のために使用さ
れ、転送動作を伴なわない。転送動作が存在しな
いので、計算命令はIXフイールド又はオペラン
ドを必要としない。他の命令でインデツクス制御
及びオペランドのために使用されているビツト
は、代わりに実行される算術演算の特別な側面を
制御するために利用されている。この命令の種々
の制御ビツト、及びそれらが従うオプシヨンは、
第6A図〜第6D図に要約されている。これらの
「個々の制御ビツト」の用途は、下記の命令フオ
ーマツトの説明において詳述される。 第6A図に示されている「X」選択制御ビツト
(ビツト4)、RXCビツトは、スタツク1のレジ
スタR5からの乗数3(「X」)の基準化選択を制
御するために、RE、FUN0及びFUN1ビツト
(ビツト22、11及び12)と共に使用される。「X」
の基準化選択の詳細は第6A図に示されている。 計算命令のビツト5は、MEビツト(ビツト
21)がオンである事によつて、乗算器のクロツキ
ングが一般にエネーブルされている場合でも、下
位の16ビツトの積ビツト及び対応する部分積ビツ
トへのクロツキングを選択的に禁止する事を可能
にする。この制御は、以前に保存された積及び部
分積を乗算器3のパイプラインに回復させる時に
使われる。 命令ビツト6、7及び23は共にSCフイールド
を構成する。このフイールドは主に、内容が
CMUXバス6にゲートされるレジスタをアドレ
スするのに役立つ。REビツト(ビツト22)がオ
ンの時、SCフイールドは積レジスタ・セグメン
ト(第6C図参照)又はMCR8又はPSR9の内
容(第6D図参照)を選択して、CMUXバス6
の上に出力するために使われる。 計算命令のビツト8、9及び10はSAフイール
ドを構成する。このフイールドは、内容をALU
の「A」入力に供給すべきレジスタをアドレスす
るために使われる。またこれは、ALU2の出力
がスタツク1に書き戻されるべき時にその出力の
宛先を指定するのに役立つ。 5つの命令ビツト11〜15は、ALU機能選択
(FUN)フイールを構成する。このフイールドの
ビツト11(FUN0)は、積又はレジスタの情報
がALU2の「B」側に供給されるべきか否かを
指定でき、且つ使用されるALU2の機能の組を
決定できるという点で、実行される動作を変更す
る。表5A及び5Bは各々FUN0=0及びFUN0=
1の場合のALUの機能を示している。(計算命令
だけのために)選択された機能の特定の組はレジ
スタ拡張ビツトREとFUN0との組み合わせによ
つて決定される事に注意されたい。第6B図、第
6C図及び第6D図は、各々の場合にどのALU
機能選択コードが使用されるかを示している。 計算命令のビツト16〜22は、特殊な制御オプシ
ヨンの組を提供する。それらは下記の通りであ
る。 ビツト16、アンロツク・エネーブル(UE)ビ
ツトは、それがオン(1)の時、命令の実行中に
ALU2によつて生成された条件がPSRH9のビ
ツト6及び11〜15中に保存される事を可能にす
る。このビツトがオフ(0)の時、PSRH9は、
計算が実行される時に変更される事は許されな
い。 ビツト17、割込み禁止(II)フラグは、計算命
令に続く任意の命令に関する割込み保護を提供す
る。即ち、もしIIがオン(ビツト=1)であれ
ば、次に引き続いてアクセスされる命令は、たと
え割込みが保留中であつても実行される。この機
構は、保護された計算命令の直後に置かれた分岐
命令が、割込みの機会を与える事なく、計算命令
によつて生成された条件に基いて実行される事を
可能にする。 スタツク禁止(SI)フラグ(ビツト18)は、計
算命令によつて生成されたALUの結果がスタツ
ク1に書き戻される事を禁止する事を可能にす
る。書き戻しはビツトがオン(1)の時に禁止され
る。 ビツト19、「A」禁止(AI)フラグは、ALU
の「A」入力を全てゼロにするために使用でき
る。表5A及び5Bが特にAI=0(「A」は禁止され
ていない)の場合の動作を示している事に注意さ
れたい。AI=1の時、表5A及び5B中の項RSAは
0で置きかえなければならない。 ALUのキヤリー入力の選択は、表5A及び5Bに
示すようにFUNフイールドによつて示される。
しかしながら、計算命令において、キヤリー入力
エネーブル(CIE)フラグ(ビツト20)が選択さ
れたキヤリー入力を禁止する手段を提供する。も
しエネーブルされていなければ(CIE=0)、
ALUの実際のキヤリー入力はゼロになる。表5A
及び5BはCIE=1の時に実行されるALU動作を
示している事に注意されたい。 乗算器3のパイプラインは、計算命令が実行さ
れる時、乗算器エネーブル(ME)フラグ(ビツ
ト21)を1にセツトする事によつて、それがエネ
ーブルされている時にのみサイクルする。種々の
ALU機能制御コードは、計算を実行している時
に乗算器のパイプラインを移動させるか否かを決
定しない事に注意されたい。MEビツトのみがそ
の制御を提供している。 レジスタ拡張フラグ(ビツト22)は、ALUの
「B」側への入力として選択できるソースの数を
拡張するために使用される。RE及びFUN0は共
に、ALUの「B」入力を決定し、(表5A、5Bに
示すように)ALUの機能制御を選択する。 付加的な注意事項: 1 CMUXバス6の内容は、計算命令の実行中
にCDB4上に置かれる。従つて、間接分岐命
令が計算命令の直後に置かれるならば、それは
間接分岐先アドレスとして使用できる。 2 計算命令はオペランド・フイールドを持たな
いので、デコード段階の終りにCABR5に置
かれる数値は無意味である。 記憶及び計算命令(STC) 形式1XXXのOPコードを有する全ての命令は、
フオーマツトがいくらか類似している(第7図参
照)。これらは、データ転送と計算の両方の動作
を行なうので、複合命令又は並行命令と呼ばれて
いる。形式1000の1つのOPコードは、記憶及び
計算(STC)命令を表わしている。残りの7つ
のOPコード(下記に示す)の命令はロード、被
乗数選択及び計算(LXC)命令である。 第7A図に示すように、STC命令は、8つの
スタツク・レジスタのうちどれがアクセスされ、
その内容がRAM24に移動され得るかを指定す
るためのSCフイールド(ビツト4、6及び7)
を含んでいる。通常はIX0である、命令ビツト04
はSC0として使用される。従つてインデツクス制
御オプシヨンは、IX1ビツト(命令ビツト05)の
みによつて選択される。2つのインデツクス制御
オプシヨンが、表3に示すように許されている。
STC命令の残りのビツトは、3ビツトのSAフイ
ールド、5ビツトのFUNフイールド、5ビツト
のFUNフイールド及び8ビツトのオペランドを
構成する。SA及びFUNフイールドは以前に計算
(C)命令に関して定義したのと同一の性質を有して
いる。 他の命令型の多くがそうであるように、STC
命令に関するデコード動作は、アドレスの形成を
含んでいる。STC命令において、これは命令か
ら得られた8ビツトのオペランド・フイールド
を、表3に示すような方法で、選択されたインデ
ツクス・レジスタ(R0又はR4)の内容に加算す
るステツプを含んでいる。この加算を行なう時、
下位のオペランド・ビツトが上位オペランド・ビ
ツトの直前の位置に置換され、従つてそれは(実
行中に)アドレスとして使われる結果の上位15ビ
ツトの形成に関与する。デコード・サイルの終り
のクロツク遷移の時に、デコードされた命令は
EXR22にロードされ、形成されたアドレスは
CABR5にロードされる。 上記のように、STCは転送と計算の両方の実
行動作を有する。転送動作は下記のように行なわ
れる。 1 実行サイクル中、SC(命令ビツト1、2及び
3)によつて指定されたスタツク・レジスタの
内容がCMUXバス6及びCDB4にゲートさ
れ、CABR5中のアドレスもCAB23上に置
かれる。 2 実行サイクルの終りのクロツク遷移におい
て、CDB4の内容は、CAB23(CABR5の
内容)によつて指定されたRAM24又はI/
Oのアドレスに書込まれる。 同時に、下記の計算動作が行なわれる。 1 実行サイクル中、FUN0(ビツト11)、即ち
FUNフイールド(命令のビツト11〜15)の上
位ビツトは、CMUXバス6の内容又は積セグ
メントのどちらがALUの「B」入力のゲート
されるかを決定する。同時に命令のSAフイー
ルドによつて指定されるレジスタが、ALUの
「A」入力にゲートされる。 2 次に、やはり実行サイクル中に、ALUが
FUNフイールドの下位4ビツトによつて決定
されるように結果を形成する(表5A及び5B参
照)。 3 実行サイクルの終りのクロツク遷移の時に、
ALUの結果が、FUNフイールドによつて指定
される通りに配置される。即ち、それはSAフ
イールドによつて指定されるスタツク・レジス
タ中に書込まれるか又はされないかである。 以上の動作を要約すると下記の通りである。 デコード動作: 1 <IDR>デコード→EXR 2 (オペランド+<R0>又は<R4>)→
CABR(→CAB) 実行動作: 1 <R(DEF)>→CMUX→CDB、(及び被乗
数;MCRの制御の下で) 2 <CDB>→RAM(CABR)、 3 <CMUX>(FUN0=0の時)又は<RP>
(FUN0=1の時)→BMUX 4 <BMUX>*<R(ABC)→R(ABC) STCに関する付加的なコメント: 1 計算命令と違つて、複合命令は乗算器3のパ
イプラインのサイクル動作を制御するための特
別なビツトを含まない。STC命令の場合、乗
算器のパイプラインのサイクル動作は、
MCRH8のビツト09(第9A図参照)、MSFビ
ツトによつて制御される。MSFビツトがオフ
の時、STC命令が実行されても乗算器パイプ
ラインは決して動かない。MSFがオンの時、
パイプラインはSTC命令の実行時に常に動く。 2 CMUXバス6上に置かれた、選択されたレ
ジスタ内容は、乗算器パイプラインがクロツク
されれば、乗算器3に関する被乗数入力として
扱われる。 ロード及び計算命令(LXC) 形式1XXX(但しXXXは000ではない)のOPコ
ードを有する全ての命令は、ロード、被乗数選択
及び計算命令(LXCo、但しn=1〜7)であ
る。STC命令同様に、これらも転送(RAM24
からスタツク・レジスタへ)動作及び計算動作の
両者を起こさせるので、複合命令である。(第7
B図参照) LXC命令の下位2バイトは、上記STC命令と
同一のSAフイールド、FUNフイールド及びオペ
ランドを含んでいる。上位バイトは4ビツトの
OPコード・フイールド、2ビツトのIXフイール
ド及び2ビツトのSDフイールドを含む。LXCの
SDフイールド(ビツト6及び7)は、RAM24
からCDB4を経由して来るデータを受け取るた
めの宛先レジスタを指定するのに必要なアドレス
の一部を形成する。上位SDビツト、即ち左又は
右の4レジスタ群を選択するビツトは、単にSA
フイールドの上位ビツトの反転である。SAフイ
ールドはALUによつて形成された結果に関する
宛先レジスタを指定するので、RAM24から
(CDBを経由して)スタツク・レジスタに行くデ
ータは、ALUの結果によつて使用されていない
スタツクの入力ポートに入らなければならない。
言い換えると、ALUの結果はSAによつて指定さ
れたスタツク入力ポートを使用し、一方CDB4
からスタツク1へ行くデータは、常に不使用中の
入力ポートに指向される。 LXC命令のビツト1、2及び3は共に、実行
時に内容がアクセスされCMUXバス6にゲート
されるスタツク・レジスタのアドレスを構成して
いる。これら3ビツトは実際はOPコード・フイ
ールドの一部分であり、組み合せ000(これは
STC命令に関するものである)を含み得ない。
従つて、スタツク・レジスタ1、2、3、4、
5、6又は7だけが、LXC命令でスタツクの
「C」出力ポートを経由してアクセスできる。表
2Bから明らかなように、7つのLXC命令の各々
は、1つの特別なレジスタがCMUXバス6に対
して選択される事を前提としている。その他の点
では7つの命令は全て同一である。 CMUXバス6上に置かれた、選択されたレジ
スタの内容は、もしもFUNフイールドによつて
乗算が指定されていれば(FUN0=1)、乗算器
3に関する被乗数入力としても扱われる。STC
命令と同様に、LXC命令は乗算器パイプライン
のサイクル動作を制御するための特別のビツトを
持たない。その代りに、乗算器パイプラインの制
御は、FUNフイールドの上位ビツト(FUN0)
によつて指定されるALU制御機能によつて与え
られる。従つて、形式1XXXXのALU機能制御
コードのみがLXC命令中に乗算器パイプライン
を移動させる。 LXC命令に関するデコード動作は、可能なイ
ンデツクス制御オプシヨンがより広範である事を
除けば、STCと同一である。表3に示すように、
IXフイールドの組み合わせ00及び01は即値ロー
ド実行動作を指定し、一方組み合わせ10及び11は
ロード実行動作を指定する。即値データを形成す
る工程は、アドレスを形成する工程とは異なると
いう点で、デコード時に相違が見られる。これら
の工程の各々は表3に定義されている。IXフイ
ールド値がどのようなものであつても、インデツ
クス加算の結果はデコード・サイクルの終りのク
ロツク遷移の時にCABR5に置かれ、同時にデ
コードされた命令はEXR22にロードされる。 STC命令と同様に、LXC命令の実行サイクル
中に転送動作及び計算動作が起きる。2つの可能
な転送動作のうち1つがLXCの実行時に起き得
る。 1 もし転送が即値ロード動作であれば、実行サ
イクル中に、CABR5の内容は共通データ・
バス4(CAB)及び宛先レジスタ(SD及び
SA0によつて定義される)にゲートされる。こ
れらのデータは、実行サイクルの終りのクロツ
ク遷移の時に宛先レジスタにロードされる。 2 転送がロード動作であれば、CABR5の内
容が共通レジスタ・バス(CAB)にゲートさ
れ、RAM24又はI/Oによつてレジスタと
して使われる。そのアドレスに存在するデータ
は、次にCDB4上に置かれ、指定された宛先
レジスタにゲートされる。再び、実行サイクル
の終りのクロツク遷移がデータを宛先レジスタ
にロードする。 LXC命令に関する計算動作は、一般に上記
のSTCに関して定義したものと同一である。
1つの相違点は、乗算器パイプラインのクロツ
ク動作がMCRH8ビツトではなく、上位FUN
ビツト(FUN0)によつて制御される事であ
る。 以上の動作を要約すると次の通りである。 デコード動作: 1 <IDR>デコード→EXR 2 (オペランド+0又は<R0>又は<R4>)
→CABR(→CDB) 実行動作: 1 <RAM(CABR)>→CDB→R(A、
HD);IX0=1の時 又は(CABR)→CDB→R(A、HD);
IX0=0の時 2 <B(DEF)>→CMUX(及び被乗数;FUN0
=1の時) 3 <CMUX>(FUN0=0の時)又は<RP>
(FUN0=1の時)→BMUX 4 <BMUX>*<R(ABC)>→R(ABC) 複合命令に関する一般的なコメントが必要であ
る。即ち、複合命令STC及びLXCは、計算命令
が有している各制御ビツトを全て有しているわけ
ではない。従つて、複合命令に関して多くの可能
な制御オプシヨンの全てを指定するために、個々
の制御の状態はALU2の機能制御コード、FUN
コードによつて暗黙に指示される。言いかえる
と、種々の個々の制御のデフオールト値が、複合
命令中の各々の異なつたFUNコードの組み合わ
せ毎に、ある値に設定されている。各FUNコー
ド毎の各個の制御のデフオールトは、表5A及び
表5Bに定義されている。表を読む時、特定の
FUNコードに関して定義される動作が正しく解
釈できるように、どの型の命令が考察されている
かを正しく意識する必要がある。 E−5 付加的なプロセツサ機構 前述の2つの章では、パイプライン動作及び命
令セツトを含めて、プロセツサの基本部分につい
て説明した。この章は、以上説明しなかつた機械
の特殊な機構を取り扱い、さらに特殊なインター
フエースについて説明する。 線型拡張アドレシング機構(LEAF) 線型拡張アドレシング機構(LEAF)はオプシ
ヨンの機構であり、MCRL8のビツト0、LEA
ビツト(第8B図参照)によつて起動される。こ
れは、プロセツサによる命令記憶装置及びデータ
記憶装置の両者へのアドレス能力を、付加的に8
ビツト拡張する事を可能にする。この拡張を行な
う論理回路は、プロセツサによつて制御される外
部のLEAFアダプタ中に殆んど含まれている。プ
ロセツサとLEAFアダプタ27との間のインター
フエースは第12図に示されている。 LEAFアダプタ及びインターフエース 拡張されたアドレス動作は、LEAFアダプタと
一緒にプロセツサによつて次のように行なわれ
る。 LEAFアダプタは、プロセツサの4個のアドレ
シング関係レジスタIAR、ILR、R0及びR4の、
各々8ビツトまでの拡張部を含んでいる。プロセ
ツサのADD GEN加算器14及び+1加算器2
5からのキヤリー(LEAFインターフエース信号
は各々GY及びLEAY)は、データ及び命令のア
ドレス計算が外部レジスタにまで拡張できるよう
に、アダプタに供給される。 命令型、使用されるアドレシング・レジスタ
(なし、R0、R4、ILR)、分岐型及び変位の信号
を含む、取り出された命令の上位13ビツトから直
接LEAFアダプタ27によつてデコードされた情
報は、LEAFアダプタがプロセツサと同期して8
ビツトのデータ及び命令のアドレスの拡張部の完
全な計算を行なう事を可能にするために、アドレ
スのキヤリーLEAY及びGYと共に使用される。 LEAFの動作のための流れの制御は、下記のイ
ンターフエース信号によつてLEAFアダプタ27
に供給される(第13図参照)。 1 ILREはILRホールド・ラツチの状態を定義
する。 2 FBACは前景−背景ラツチの状態を与える。 3 3つのIRWC(インターフエース読取/書込
制御)ビツトは、現在の命令が順次的なものか
又は分岐が起きたかを示すためにデコードされ
る。IRWC制御ビツトはLEAFモードでは、少
し違つたようにデコードされる(表1参照)。 LEAFの動作 LEAFモード(MCRL8のビツト0がオン)の
時、ロード(L)及び長分岐(BLU)のような
命令はLEAFアダプタ27中の拡張レジスタがプ
ロセツサからロードされる事を必要とする。拡張
レジスタをロードするために使われる方式は、ロ
ード命令とそれに続く特別な条件の間接分岐命令
より成る2命令系列の実行を必要とする。上記系
列を実行すると、拡張されたワードの3番目のバ
イトが、間接分岐命令の3番目の段階の間に共通
アドレス・バス23を経由して、選択されたアダ
プタ・レジスタに伝達される。この系列の一般的
な形式は、下記の通りである。 ロード 条件付き間接分岐 2つの型の拡張アドレス命令に関するプロセツ
サとアダプタとの間の信号のフローが第13図に
示されている。両方の場合、ロード命令が最初に
アドレスの下位2バイトをCDB4に移動させる。
次に後続する特別な条件付き分岐命令(OPコー
ド=0110、BT=01)が2つの動作を引き起こ
す。 1 最初に、先行するロード命令からのALUの
デフオルト条件に一致させるように、分岐条件
選択(BCS)コードの選択に基いて分岐が起
きたり又起きなかつたりする。 2 拡張アドレスの3番目の(上位)バイトが、
共通アドレス・バス(CAB)23を経由して、
LEAFアダプタ27に供給される。 第13図に示すように、分岐が起きなかつた場
合のロード/BCの系列は、外部インデツクス・
レジスタをロードするために使用される。ロー
ド/BCI(記憶禁止の条件付き分岐;OPコード=
0100、BT=11)系列が実行されると、BCの動
作に加えて、スタツク・レジスタの実際のロード
が禁止される。ロード/BCI系列は、拡張アドレ
ングを伴なつた直接分岐又はGOTOを実現する
ために使用される。ここでBCSコードは分岐が
起きるように選択される。 もし実行される2命令系列がロード/BALI
(分岐及びリンク間接;OPコード=0110、BT=
11)であれば、BCIの動作に加えて、分岐に関す
る戻りアドレスを保存するためにILR15がロツ
クされる。BALIに続く命令に関しては、NOPが
強制的に実行される。ロード/BALI系列は、拡
張アドレシングを用いたアプリケーシヨンに対す
る分岐及びリンクの可能性を提供するために使わ
れる。 一般に、分岐の間にCAB23を使用する事は
LEAFモードの動作に特有である。これはサイク
ル・スチール(DMA)のメモリ・アクセスが拡
張アドレス動作と一緒には使用し得ない事を意味
している。 間接プログラム・アクセス(IPA) 間接プログラム・アクセス(IPA)機構は、プ
ロセツサがそれ自身の命令記憶装置を読取り、且
つ書込む事を可能にする。従つて、(常駐の制御
プログラムを用いて)I/O装置を経由して受け
取つたアプリケーシヨン又は診断プログラムを命
令記憶装置に書込む事が可能になる。この型の動
作を可能にする制御プログラムは、命令記憶装置
20の中にあるか又はROSの形で含まれている。
そのような常駐のI/O制御プログラムは、ロー
カル又はリモートのホストと共に動作するのに必
要なプロトコル及びエラー検査を全て提供するよ
うに設計できる。第14図はIPAに関するフロー
経路のブロツク図である。 IPA機能は、2つの特別な分岐命令の変種
BIPAR(分岐、IPA読取)及びBIPAW(分岐、
IPA書込)を用いて、プロセツサにおいて実現さ
れる。BIPAR命令は、命令記憶装置20から命
令をプロセツサの内部レジスタ(R5及びMCRH
8)に読取り、そこでデータとして操作する事を
可能にする。BIPAW命令は、プロセツサ内の1
対のスタツク・レジスタ(R0又はR4及びR5)か
らのデータを命令として、特別な命令記憶装置2
0の記憶位置に書込む事を可能にする。 IPA読取動作 IPA読取命令BIPARは、第4B図に示される
特別な実行動作を起こさせる。BIPAR命令は、
命令読取動作を起こさせるために次のように用い
られる。
【表】
アドレスである。
BIPARは、その実行の3段階において、下記
の2つの特別な動作を起こさせる種々の条件付き
分岐命令(OPコード=0100、BT=00、BCSコ
ード=1111、第4B図参照)である。 1 (ADDRESSへの分岐によつて)
ADDRESSから取り出された命令は、強制的
にレジスタR5への即値ロード命令としてデコ
ードされる。これは、その命令の下位2バイト
を次のサイクルにR5へ移動させる。 2 命令デコード・レジスタ19(IDR)と
MCRH8との間の特別なデータ信号経路が活
性化され(第1図参照)、読取られた命令の上
位バイト及びその3個のパリテイ・ビツトが
MCRH8のビツト5〜15に転送される。 これらの動作は、読取られた命令及びそのパリ
テイを、IDR19からMCRH8及びR5に転送さ
れる。そこでそれは通常のレジスタ・データとし
て取り扱われる。読取られた命令は、全ての他の
命令同様にIDR19を通過するが、デコード又は
実行されず、それは単にプロセツサのデータ・レ
ジスタ空間に移動されるだけである。 IPA書込み動作 IPA書込み機能は、BIPAW命令によつて提供
される。これは特殊な間接分岐命令(OPコード
=0100、BT=01、BCSコード=1111)であつ
て、その分岐特性に加えて、その実行の第3段階
にレジスタR5の内容を、共通データ・バス4
(CDB)上に出力させる(あたかも分岐命令がR5
記憶命令であるかのように)。BIPAW命令の動
作は、全て第4C図に要約されている。 BIPAW命令を使用するために、最初に命令ビ
ツトをスタツク・レジスタR0又はR4及びR5に記
憶させる必要がある。書込まれる命令の下位ビツ
トはレジスタR5の中置かれる。上位の命令ビツ
ト及びパリテイ・ビツトは、レジスタR0又はR4
中に置かれる。BIPAW及びBIPARを含む命令
系列は、スタツク1からCAB23及びCDB4を
経由して、命令記憶装置へ命令ビツトを書込むた
めに使われる。IPA書込み動作に関する命令系列
は次のように与えられる。
BIPARは、その実行の3段階において、下記
の2つの特別な動作を起こさせる種々の条件付き
分岐命令(OPコード=0100、BT=00、BCSコ
ード=1111、第4B図参照)である。 1 (ADDRESSへの分岐によつて)
ADDRESSから取り出された命令は、強制的
にレジスタR5への即値ロード命令としてデコ
ードされる。これは、その命令の下位2バイト
を次のサイクルにR5へ移動させる。 2 命令デコード・レジスタ19(IDR)と
MCRH8との間の特別なデータ信号経路が活
性化され(第1図参照)、読取られた命令の上
位バイト及びその3個のパリテイ・ビツトが
MCRH8のビツト5〜15に転送される。 これらの動作は、読取られた命令及びそのパリ
テイを、IDR19からMCRH8及びR5に転送さ
れる。そこでそれは通常のレジスタ・データとし
て取り扱われる。読取られた命令は、全ての他の
命令同様にIDR19を通過するが、デコード又は
実行されず、それは単にプロセツサのデータ・レ
ジスタ空間に移動されるだけである。 IPA書込み動作 IPA書込み機能は、BIPAW命令によつて提供
される。これは特殊な間接分岐命令(OPコード
=0100、BT=01、BCSコード=1111)であつ
て、その分岐特性に加えて、その実行の第3段階
にレジスタR5の内容を、共通データ・バス4
(CDB)上に出力させる(あたかも分岐命令がR5
記憶命令であるかのように)。BIPAW命令の動
作は、全て第4C図に要約されている。 BIPAW命令を使用するために、最初に命令ビ
ツトをスタツク・レジスタR0又はR4及びR5に記
憶させる必要がある。書込まれる命令の下位ビツ
トはレジスタR5の中置かれる。上位の命令ビツ
ト及びパリテイ・ビツトは、レジスタR0又はR4
中に置かれる。BIPAW及びBIPARを含む命令
系列は、スタツク1からCAB23及びCDB4を
経由して、命令記憶装置へ命令ビツトを書込むた
めに使われる。IPA書込み動作に関する命令系列
は次のように与えられる。
【表】
リ位置である。
上記系列中で、LOAD命令はADDRESSの内
容を共通データ・バス4へ移動させる。ここでそ
れは間接分岐BIPAWのためのアドレスを与え
る。BIPAWに関するアドレス源はCDB4なの
で、命令実行の第3段階において、ADD GEN
加算器14は、R0又はR4の内容(プラス変位、
表3参照)を、CAB23を経由して与えるため
に使用する事ができる。また、BIPAWはこの命
令実行段階中に、R5の内容をCDB4に出力する。
従つてパリテイを含めて、書込まれるべき命令全
体がプロセツサの出力に(下位2バイトはR5か
らCDB4を経由して、上位バイト及びパリテイは
R0又はR4からCAB23を経由して)並列に現れ
る。インターフエース読取/書込制御(IRWC)
信号は、IPA書込みが可能である事を外部メモリ
に通知する。 書込み系列中のBIPAR命令は、命令記憶装置
20に書込まれる命令が、IDR19にロードされ
る時に実行されるのを阻止する。命令はプロセツ
サに入り、IPA読取り動作で述べたようにMCR
8及びR5に書込まれる。 IPA読取り及び書込み動作は、選択された拡張
アドレシング機構(LEAF)で使用する事ができ
る。 診 断 プロセツサは、エラー条件の場合に、あるハー
ドウエア及びアプリケーシヨンのパラメータをモ
ニタする事を許している。それらのパラメータは
下記の通りである。 1 アプリケーシヨン・パラメータ: a ALUオーバーフロー、AV b 乗算器オーバーフロー、MV 2 ハードウエア・パラメータ: a 命令のパリテイ、ISP(3ビツト) b データ記憶装置のパリテイ、DSP(2ビツ
ト) c I/Oパリテイ、IOP(2ビツト) 上記パラメータのいずれも、MCRLに適当な
禁止ビツト(ビツト3〜7、第8B図参照)をセ
ツトする事によつてエラー検査を行なわないよう
にできる。 有効な(禁止されていない)エラー検査が行な
われると、侵犯情報がPSRH9のビツト0〜4
(パリテイ侵犯フラグ)及びビツト13(ALUオー
バーフロー・フラグ)に記憶される。乗算器オー
バーフロー・フラグは、積レジスタRP28に記
憶されたビツトから導き出される。いかなる侵犯
もPSR9をロツクさせ、且つプロセツサを強制
的にリセツト(PROR)させる。 PRORが開始されると、プロセツサは0020
(hex)で始まる命令の実行を開始させられる。
またプロセツサ・リセツトは命令リンク・レジス
タ15(ILR)もロツクするので、PRORプログ
ラム中にある診断ルーチンが、ILR15からエラ
ーを起こした命令の記憶位置及びPAR9の内容
を調べる事によつて、問題は何であつたかを決定
する事が可能になる。またPRORは、特殊な
PSRL9ロード命令によつても、強制的に起こす
ことができる。 パリテイ プロセツサにおけるパリテイ検査は、パイプラ
インの影響によつて複雑化しているので、特別な
考慮が必要である。パリテイは奇であると仮定さ
れ、情報バイト当り1パリテイ・ビツトによつて
妥当にされる。パリテイは命令が読取られる時
に、命令記憶装置に関して検査される(3パリテ
イ・ビツト)。データ記憶装置及びI/Oのパリ
テイ(2パリテイ・ビツト)は、ロード命令に関
して(データ記憶が読取られる時)検査され、記
憶命令に関して(データ記憶が書込まれる時)生
成される。パリテイはプロセツサ内で参照パリテ
イを発生させ、それを外部ソースから供給された
パリテイ・ビツトと比較する事によつて、妥当性
を検査される。 データ・パリテイの侵犯は、ロード動作に関し
てPSRH9のビツト3及び4に記憶される。全て
の非ロード命令(プロセツサ・インターフエース
上のCDB4を使用しないもの)の場合、内部デ
ータ・バスのパリテイ発生器の出力(これは通
常、ロード情報の妥当性検査及び記憶動作のため
のパリテイの発生のために使用される)が、
PSRH9のビツト3及び4に記憶される。PSRH
9に参照パリテイ発生器の出力を保存する事は、
プロセツサの算術ユニツトを使つて、論理の妥当
性検査が行なわれる事を可能にする。 PRORが起きる時、PSRH9に記憶された結果
を適切に解釈するために、診断プログラムは最初
にMCRL8に質問しなければならない。次に検
査ビツト(PSRH9のビツト3及び4、第9A
図)が、参照パリテイ・ビツト又はデータ・パリ
テイ侵犯を表わしているかどうかを判定するため
に、消去の過程が用いられなければならない。 命令パリテイ検査は、MCRL8のビツト3に
よつてエネーブルされ、独立に動作する。例えば
PSRH9は、MCRL8の制御ビツト3〜5(第8
B図)によつて指定される命令及びデータの両者
のパリテイ検査の結果を常に反映する。内部命令
パリテイ発生器は、前述の間接プログラム・アク
セス(IPA)機構を用いて、パリテイに疑問のあ
る命令をプロセツサの主データ経路に転送し、そ
こで算術演算機構を用いて独立にパリテイを検査
する事によつて、妥当性を検査する事ができる。 下記の2つの表は、MCRL8の制御及び命令
型の全ての組み合わせに関して、PSRH9のビツ
ト0〜4に置かれる情報を要約している。
上記系列中で、LOAD命令はADDRESSの内
容を共通データ・バス4へ移動させる。ここでそ
れは間接分岐BIPAWのためのアドレスを与え
る。BIPAWに関するアドレス源はCDB4なの
で、命令実行の第3段階において、ADD GEN
加算器14は、R0又はR4の内容(プラス変位、
表3参照)を、CAB23を経由して与えるため
に使用する事ができる。また、BIPAWはこの命
令実行段階中に、R5の内容をCDB4に出力する。
従つてパリテイを含めて、書込まれるべき命令全
体がプロセツサの出力に(下位2バイトはR5か
らCDB4を経由して、上位バイト及びパリテイは
R0又はR4からCAB23を経由して)並列に現れ
る。インターフエース読取/書込制御(IRWC)
信号は、IPA書込みが可能である事を外部メモリ
に通知する。 書込み系列中のBIPAR命令は、命令記憶装置
20に書込まれる命令が、IDR19にロードされ
る時に実行されるのを阻止する。命令はプロセツ
サに入り、IPA読取り動作で述べたようにMCR
8及びR5に書込まれる。 IPA読取り及び書込み動作は、選択された拡張
アドレシング機構(LEAF)で使用する事ができ
る。 診 断 プロセツサは、エラー条件の場合に、あるハー
ドウエア及びアプリケーシヨンのパラメータをモ
ニタする事を許している。それらのパラメータは
下記の通りである。 1 アプリケーシヨン・パラメータ: a ALUオーバーフロー、AV b 乗算器オーバーフロー、MV 2 ハードウエア・パラメータ: a 命令のパリテイ、ISP(3ビツト) b データ記憶装置のパリテイ、DSP(2ビツ
ト) c I/Oパリテイ、IOP(2ビツト) 上記パラメータのいずれも、MCRLに適当な
禁止ビツト(ビツト3〜7、第8B図参照)をセ
ツトする事によつてエラー検査を行なわないよう
にできる。 有効な(禁止されていない)エラー検査が行な
われると、侵犯情報がPSRH9のビツト0〜4
(パリテイ侵犯フラグ)及びビツト13(ALUオー
バーフロー・フラグ)に記憶される。乗算器オー
バーフロー・フラグは、積レジスタRP28に記
憶されたビツトから導き出される。いかなる侵犯
もPSR9をロツクさせ、且つプロセツサを強制
的にリセツト(PROR)させる。 PRORが開始されると、プロセツサは0020
(hex)で始まる命令の実行を開始させられる。
またプロセツサ・リセツトは命令リンク・レジス
タ15(ILR)もロツクするので、PRORプログ
ラム中にある診断ルーチンが、ILR15からエラ
ーを起こした命令の記憶位置及びPAR9の内容
を調べる事によつて、問題は何であつたかを決定
する事が可能になる。またPRORは、特殊な
PSRL9ロード命令によつても、強制的に起こす
ことができる。 パリテイ プロセツサにおけるパリテイ検査は、パイプラ
インの影響によつて複雑化しているので、特別な
考慮が必要である。パリテイは奇であると仮定さ
れ、情報バイト当り1パリテイ・ビツトによつて
妥当にされる。パリテイは命令が読取られる時
に、命令記憶装置に関して検査される(3パリテ
イ・ビツト)。データ記憶装置及びI/Oのパリ
テイ(2パリテイ・ビツト)は、ロード命令に関
して(データ記憶が読取られる時)検査され、記
憶命令に関して(データ記憶が書込まれる時)生
成される。パリテイはプロセツサ内で参照パリテ
イを発生させ、それを外部ソースから供給された
パリテイ・ビツトと比較する事によつて、妥当性
を検査される。 データ・パリテイの侵犯は、ロード動作に関し
てPSRH9のビツト3及び4に記憶される。全て
の非ロード命令(プロセツサ・インターフエース
上のCDB4を使用しないもの)の場合、内部デ
ータ・バスのパリテイ発生器の出力(これは通
常、ロード情報の妥当性検査及び記憶動作のため
のパリテイの発生のために使用される)が、
PSRH9のビツト3及び4に記憶される。PSRH
9に参照パリテイ発生器の出力を保存する事は、
プロセツサの算術ユニツトを使つて、論理の妥当
性検査が行なわれる事を可能にする。 PRORが起きる時、PSRH9に記憶された結果
を適切に解釈するために、診断プログラムは最初
にMCRL8に質問しなければならない。次に検
査ビツト(PSRH9のビツト3及び4、第9A
図)が、参照パリテイ・ビツト又はデータ・パリ
テイ侵犯を表わしているかどうかを判定するため
に、消去の過程が用いられなければならない。 命令パリテイ検査は、MCRL8のビツト3に
よつてエネーブルされ、独立に動作する。例えば
PSRH9は、MCRL8の制御ビツト3〜5(第8
B図)によつて指定される命令及びデータの両者
のパリテイ検査の結果を常に反映する。内部命令
パリテイ発生器は、前述の間接プログラム・アク
セス(IPA)機構を用いて、パリテイに疑問のあ
る命令をプロセツサの主データ経路に転送し、そ
こで算術演算機構を用いて独立にパリテイを検査
する事によつて、妥当性を検査する事ができる。 下記の2つの表は、MCRL8の制御及び命令
型の全ての組み合わせに関して、PSRH9のビツ
ト0〜4に置かれる情報を要約している。
【表】
【表】
パイプラインの影響
パイプラインの動作及びエラー解析時の相違に
より、エラー・パラメータは所定の命令と同じ時
間には検査又は記録されない。従つて、リセツト
が起きた時にILR15にロツクされたアドレス
は、エラーの型に依存して可変な大きさだけ、エ
ラーの生じた命令のアドレスから変位する事にな
る。下記に、エラーの発生した命令がアドレスN
にあつたと仮定して、この現象を説明する。
より、エラー・パラメータは所定の命令と同じ時
間には検査又は記録されない。従つて、リセツト
が起きた時にILR15にロツクされたアドレス
は、エラーの型に依存して可変な大きさだけ、エ
ラーの生じた命令のアドレスから変位する事にな
る。下記に、エラーの発生した命令がアドレスN
にあつたと仮定して、この現象を説明する。
【表】
順次的命令(分岐なし)の場合、エラーの発生
した命令のアドレスは、PSR9からエラーの性
質がわかれば、ILR15の値を減らす事によつて
導き出す事ができる。 命令リンク制御 エラーの発生した命令のアドレスに対するILR
15の変位は、分岐が関係している場合は問題を
生じる。例えば、分岐/ロード又は分岐/計算の
系列において、ロード又は計算の命令でエラーが
発生すると、ILR15中のアドレスは、分岐スト
リーム中のアドレスを含んだままである。この
ILR15の内容から、エラーの発生したアドレス
を決定する事は不可能である。 そのような場合に、エラーの発生したアドレス
までエラーをトレースできるようにするために、
プロセツサは命令リンク制御(ICL)と呼ばれる
選択可能な機構を有している。ILCは、分岐/ロ
ード又は分岐/計算の命令系列が検出されると、
2個のNOPを挿入する事によつてエラーのトレ
ース可能性を与えている。挿入結果は下記のよう
になる。 分岐/ロード/NOP/NOP、及び 分岐/計算/NOP/NOP 従つてILR15がロツクされた時、それがエラ
ーの発生した命令のアドレスを含む事が保証され
る。ILCはMCRH8のビツト4及び5(ILCL及び
ILCC)によつて、分岐/ロード及び分岐/計算
の命令系列毎に起動される。 分岐命令がロード命令又は計算命令に続く上記
の型とは、順序が反転した命令系列は問題を生じ
ない事に注意されたい。これは分岐命令の3番目
のフエースで、プロセツサ・リセツトが起きる時
にILR15がラツチされるからである。これは、
分岐経路に先行する順次アドレスが、ILR15に
セツトされる事を保証する。これはILR15の制
御の通常の機能であり、MCR8中のILCビツト
とは無関係である。 間接プログラム・アクセス(IPA)の診断アプリ
ケーシヨン 以前に説明した間接プログラム・アクセス機構
は、プロセツサによつて命令記憶装置がロードさ
れ且つ読取られる事を可能にする。これは、プロ
セツサの算術演算機構を用いて、命令記憶装置2
0中のプログラムに対して(CRC等の)診断検
査を行なう事を可能にする。 データ・メモリ及びI/Oのインターフエース データ・メモリ及びI/O装置は、外部CDB
4を経由してプロセツサに取り付けられ、CAB
23によつてアドレスされる。I/O装置は、デ
ータ・メモリと同じアドレス空間中にあると考え
られる。I/Oアドレス空間は、MCRL8(第
8B図参照)のISOフイールドによつて、4つの
可能なアドレス範囲(0〜31、63、127又は255)
のうち1つにわたるように選択される。 装置選択及び読取/書込の制御は、インターフ
エース読取書込制御(IRWC)信号によつて与え
られる。データ・メモリ及びI/Oの制御に加え
て、IRWCは、拡張アドレシングが使用される時
にLEAFアダプタに、分岐及びリセツトの指示等
の流れの制御も与える。 I/Oアドレスは記憶位置0で始まり、ISOフ
イールド(第8B図参照)によつて指定される限
界まで存在する。GPSP−16内の論理回路が
CABをモニタし、I/Oがアドレスされている
時を判定する。その時、インターフエース内の
IRWC線は適当な状態を取る(表7参照)。 CABビツト00〜14だけが、I/Oアドレス・
バスを構成する(CAB15はアドレシングのた
めには使用されない)。その結果、各I/Oアド
レスは常に偶数と考えられる。従つて(例えば)
IOS=0の場合に、選択される32のアドレスは
0000から003E(HEX)までの全ての偶数アドレ
スを含んでいる。 直接メモリ・アクセス 命令記憶装置20及びデータ記憶装置1の両者
は、直接メモリ・アクセス(DMA)インターフ
エース制御を通じて、外部装置によつてアクセス
できる。外部装置からのDMA要求は、次のサイ
クル境界において内部クロツクをデイスエーブル
させる。この時、DMA承認信号が外部装置に与
えられ、プロセツサのオフ・チツプ・ドライバは
高インピーダンス状態にされ、外部装置はメモ
リ・バスの制御を取得する事が可能になる。この
状態はDMARコマンドが終了するまで維持され
る。次にDMAAがリセツトされ、プロセツサは
次のクロツク境界で正規のタスクを再開する。 DMA予期(DMAC) DMA予期は、データ・メモリ・バス(CDB、
CAB、IRWC)が使われていない時に、外部装
置がそれらを制御する事を可能にする。これは
「DMAサイクル・スチール」モードの動作であ
る。DMACインターフエース信号は、デコード
されている命令がロード命令でも又記憶命令でも
なく、従つて次のサイクルにデータ・バスがプロ
セツサによつて使用される事はなく、利用可能で
あろうという事を外部装置に通報する。 外部リセツト(POWR) 外部的に生成された信号としての外部リセツト
(又は電源リセツト)は、記憶位置0000(hex)で
始まる命令をプロセツサに実行し始めるようにす
る。命令記憶装置のこの領域は、機械をクリアす
るために設計されたプログラムを含んでいる。
POWRの動作は、POWR信号が他の全ての条件
をオーバーライドする事を除けば、通常の割込み
と非常に類似している。POWRは特別なPSLロ
ード命令を実行する事によつても開始できる。 E−6 付表
した命令のアドレスは、PSR9からエラーの性
質がわかれば、ILR15の値を減らす事によつて
導き出す事ができる。 命令リンク制御 エラーの発生した命令のアドレスに対するILR
15の変位は、分岐が関係している場合は問題を
生じる。例えば、分岐/ロード又は分岐/計算の
系列において、ロード又は計算の命令でエラーが
発生すると、ILR15中のアドレスは、分岐スト
リーム中のアドレスを含んだままである。この
ILR15の内容から、エラーの発生したアドレス
を決定する事は不可能である。 そのような場合に、エラーの発生したアドレス
までエラーをトレースできるようにするために、
プロセツサは命令リンク制御(ICL)と呼ばれる
選択可能な機構を有している。ILCは、分岐/ロ
ード又は分岐/計算の命令系列が検出されると、
2個のNOPを挿入する事によつてエラーのトレ
ース可能性を与えている。挿入結果は下記のよう
になる。 分岐/ロード/NOP/NOP、及び 分岐/計算/NOP/NOP 従つてILR15がロツクされた時、それがエラ
ーの発生した命令のアドレスを含む事が保証され
る。ILCはMCRH8のビツト4及び5(ILCL及び
ILCC)によつて、分岐/ロード及び分岐/計算
の命令系列毎に起動される。 分岐命令がロード命令又は計算命令に続く上記
の型とは、順序が反転した命令系列は問題を生じ
ない事に注意されたい。これは分岐命令の3番目
のフエースで、プロセツサ・リセツトが起きる時
にILR15がラツチされるからである。これは、
分岐経路に先行する順次アドレスが、ILR15に
セツトされる事を保証する。これはILR15の制
御の通常の機能であり、MCR8中のILCビツト
とは無関係である。 間接プログラム・アクセス(IPA)の診断アプリ
ケーシヨン 以前に説明した間接プログラム・アクセス機構
は、プロセツサによつて命令記憶装置がロードさ
れ且つ読取られる事を可能にする。これは、プロ
セツサの算術演算機構を用いて、命令記憶装置2
0中のプログラムに対して(CRC等の)診断検
査を行なう事を可能にする。 データ・メモリ及びI/Oのインターフエース データ・メモリ及びI/O装置は、外部CDB
4を経由してプロセツサに取り付けられ、CAB
23によつてアドレスされる。I/O装置は、デ
ータ・メモリと同じアドレス空間中にあると考え
られる。I/Oアドレス空間は、MCRL8(第
8B図参照)のISOフイールドによつて、4つの
可能なアドレス範囲(0〜31、63、127又は255)
のうち1つにわたるように選択される。 装置選択及び読取/書込の制御は、インターフ
エース読取書込制御(IRWC)信号によつて与え
られる。データ・メモリ及びI/Oの制御に加え
て、IRWCは、拡張アドレシングが使用される時
にLEAFアダプタに、分岐及びリセツトの指示等
の流れの制御も与える。 I/Oアドレスは記憶位置0で始まり、ISOフ
イールド(第8B図参照)によつて指定される限
界まで存在する。GPSP−16内の論理回路が
CABをモニタし、I/Oがアドレスされている
時を判定する。その時、インターフエース内の
IRWC線は適当な状態を取る(表7参照)。 CABビツト00〜14だけが、I/Oアドレス・
バスを構成する(CAB15はアドレシングのた
めには使用されない)。その結果、各I/Oアド
レスは常に偶数と考えられる。従つて(例えば)
IOS=0の場合に、選択される32のアドレスは
0000から003E(HEX)までの全ての偶数アドレ
スを含んでいる。 直接メモリ・アクセス 命令記憶装置20及びデータ記憶装置1の両者
は、直接メモリ・アクセス(DMA)インターフ
エース制御を通じて、外部装置によつてアクセス
できる。外部装置からのDMA要求は、次のサイ
クル境界において内部クロツクをデイスエーブル
させる。この時、DMA承認信号が外部装置に与
えられ、プロセツサのオフ・チツプ・ドライバは
高インピーダンス状態にされ、外部装置はメモ
リ・バスの制御を取得する事が可能になる。この
状態はDMARコマンドが終了するまで維持され
る。次にDMAAがリセツトされ、プロセツサは
次のクロツク境界で正規のタスクを再開する。 DMA予期(DMAC) DMA予期は、データ・メモリ・バス(CDB、
CAB、IRWC)が使われていない時に、外部装
置がそれらを制御する事を可能にする。これは
「DMAサイクル・スチール」モードの動作であ
る。DMACインターフエース信号は、デコード
されている命令がロード命令でも又記憶命令でも
なく、従つて次のサイクルにデータ・バスがプロ
セツサによつて使用される事はなく、利用可能で
あろうという事を外部装置に通報する。 外部リセツト(POWR) 外部的に生成された信号としての外部リセツト
(又は電源リセツト)は、記憶位置0000(hex)で
始まる命令をプロセツサに実行し始めるようにす
る。命令記憶装置のこの領域は、機械をクリアす
るために設計されたプログラムを含んでいる。
POWRの動作は、POWR信号が他の全ての条件
をオーバーライドする事を除けば、通常の割込み
と非常に類似している。POWRは特別なPSLロ
ード命令を実行する事によつても開始できる。 E−6 付表
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
第1図は第1A図及び第1B図の関係を示す
図、第1A図、第1B図は本発明の良好な実施例
の信号プロセツサの概略図、第2A図は即値ロー
ド命令のフオーマツトを示す図、第2B図はロー
ド命令のフオーマツトを示す図、第2C図は記憶
命令のフオーマツトを示す図、第3図はバイト・
ロード/挿入命令のフオーマツト図、第4A図は
条件付き分岐命令のフオーマツトを示す図、第4
B図はIPA読取命令のフオーマツトを示す図、第
4C図はIPA書込命令のフオーマツトを示す図、
第5図は無条件分岐命令のフオーマツトを示す
図、第6A図〜第6D図は計算命令のフオーマツ
トを示す、第7A図及び第7B図は複合命令のフ
オーマツトを示す図、第8A図はMCRHの構成
を示す図、第8B図はMCRLの構成を示す図、
第9A図はPSRHの構成を示す図、第9B図は
PSRLの構成を示す図、第10A図は乗算器の入
力基準化ビツト・フオーマツトを示す図、第10
B図は上位積及び下位積の分割制御フオーマツト
を示す図、第10C図は中位積分割フオーマツト
を示す図、第11図はパイプライン動作の取り出
し、デコード及び実行に関するデータ・フローを
示す図、第12図は拡張アドレシング・インター
フエース機構の概略を示す図、第13図は直接分
岐及びインデツクス・レジスタのロードに関する
拡張アドレス動作を説明する図、第14図は間接
プログラム・アクセス機能に関するデータ・フロ
ーを示す図、第15図は乗算器及び積保存回復回
路を示す図である。
図、第1A図、第1B図は本発明の良好な実施例
の信号プロセツサの概略図、第2A図は即値ロー
ド命令のフオーマツトを示す図、第2B図はロー
ド命令のフオーマツトを示す図、第2C図は記憶
命令のフオーマツトを示す図、第3図はバイト・
ロード/挿入命令のフオーマツト図、第4A図は
条件付き分岐命令のフオーマツトを示す図、第4
B図はIPA読取命令のフオーマツトを示す図、第
4C図はIPA書込命令のフオーマツトを示す図、
第5図は無条件分岐命令のフオーマツトを示す
図、第6A図〜第6D図は計算命令のフオーマツ
トを示す、第7A図及び第7B図は複合命令のフ
オーマツトを示す図、第8A図はMCRHの構成
を示す図、第8B図はMCRLの構成を示す図、
第9A図はPSRHの構成を示す図、第9B図は
PSRLの構成を示す図、第10A図は乗算器の入
力基準化ビツト・フオーマツトを示す図、第10
B図は上位積及び下位積の分割制御フオーマツト
を示す図、第10C図は中位積分割フオーマツト
を示す図、第11図はパイプライン動作の取り出
し、デコード及び実行に関するデータ・フローを
示す図、第12図は拡張アドレシング・インター
フエース機構の概略を示す図、第13図は直接分
岐及びインデツクス・レジスタのロードに関する
拡張アドレス動作を説明する図、第14図は間接
プログラム・アクセス機能に関するデータ・フロ
ーを示す図、第15図は乗算器及び積保存回復回
路を示す図である。
Claims (1)
- 【特許請求の範囲】 1 命令記憶装置と、 前記命令記憶装置をアクセスするためのアドレ
スを保持する命令アドレス・レジスタと、 前記命令記憶装置から取出された命令を保持す
る命令デコード・レジスタと、 前記命令デコード・レジスタに取出された命令
のアドレスを前記命令アドレス・レジスタから受
取り、割込み又は特定の分岐があるとロツクされ
る命令リンク・レジスタと、 前記命令デコード・レジスタに保持されている
命令をデコードして、該命令を実行するための実
行制御信号を発生する命令デコーダと、 複数の作業用レジスタを含むレジスタ・スタツ
クと、 前記実行制御信号の制御のもとに所定の演算を
実行する乗算器及び算術論理演算装置と、 前記レジスタ・スタツク、前記乗算器、及び前
記算術論理演算装置を相互に接続するバスと、 前記実行制御信号による命令の実行、前記命令
デコーダにおける該命令に続く第2の命令のデコ
ード、及び前記命令記憶装置から前記命令デコー
ド・レジスタへの該第2の命令に続く第3の命令
の取出しを同期的に行わせるクロツク手段とを具
備し、 パイプラインの各サイクルにおいて、前記レジ
スタ・スタツクの入力は前記バス又は前記算術論
理演算装置の出力に選択的に接続され、前記レジ
スタ・スタツクの出力は前記バス、前記乗算器の
入力、又は前記算術論理演算装置の入力に選択的
に接続されることを特徴とするパイプライン式プ
ロセツサ。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US06/723,991 US4794517A (en) | 1985-04-15 | 1985-04-15 | Three phased pipelined signal processor |
| US723991 | 2000-11-28 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS61241832A JPS61241832A (ja) | 1986-10-28 |
| JPH0214731B2 true JPH0214731B2 (ja) | 1990-04-09 |
Family
ID=24908505
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP61055200A Granted JPS61241832A (ja) | 1985-04-15 | 1986-03-14 | パイプライン式プロセツサ |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US4794517A (ja) |
| EP (1) | EP0198216B1 (ja) |
| JP (1) | JPS61241832A (ja) |
| CA (1) | CA1248638A (ja) |
| DE (1) | DE3689923T2 (ja) |
| HK (1) | HK7595A (ja) |
Families Citing this family (45)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4577282A (en) | 1982-02-22 | 1986-03-18 | Texas Instruments Incorporated | Microcomputer system for digital signal processing |
| DE3751503T2 (de) * | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
| US5007020A (en) * | 1987-03-18 | 1991-04-09 | Hayes Microcomputer Products, Inc. | Method for memory addressing and control with reversal of higher and lower address |
| US5297263A (en) * | 1987-07-17 | 1994-03-22 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor with pipeline system having exception processing features |
| US5019967A (en) * | 1988-07-20 | 1991-05-28 | Digital Equipment Corporation | Pipeline bubble compression in a computer system |
| US4991169A (en) * | 1988-08-02 | 1991-02-05 | International Business Machines Corporation | Real-time digital signal processing relative to multiple digital communication channels |
| US4996661A (en) * | 1988-10-05 | 1991-02-26 | United Technologies Corporation | Single chip complex floating point numeric processor |
| JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
| US5123095A (en) * | 1989-01-17 | 1992-06-16 | Ergo Computing, Inc. | Integrated scalar and vector processors with vector addressing by the scalar processor |
| US5187795A (en) * | 1989-01-27 | 1993-02-16 | Hughes Aircraft Company | Pipelined signal processor having a plurality of bidirectional configurable parallel ports that are configurable as individual ports or as coupled pair of ports |
| US5109497A (en) * | 1989-01-27 | 1992-04-28 | Hughes Aircraft Company | Arithmetic element controller for controlling data, control and micro store memories |
| CA2016068C (en) * | 1989-05-24 | 2000-04-04 | Robert W. Horst | Multiple instruction issue computer architecture |
| EP0407911B1 (en) * | 1989-07-07 | 1998-12-09 | Hitachi, Ltd. | Parallel processing apparatus and parallel processing method |
| EP0429733B1 (en) * | 1989-11-17 | 1999-04-28 | Texas Instruments Incorporated | Multiprocessor with crossbar between processors and memories |
| US5204962A (en) * | 1989-11-30 | 1993-04-20 | Mitsubishi Denki Kabushiki Kaisha | Processor with preceding operation circuit connected to output of data register |
| JPH063583B2 (ja) * | 1990-01-11 | 1994-01-12 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法 |
| US5768613A (en) * | 1990-07-06 | 1998-06-16 | Advanced Micro Devices, Inc. | Computing apparatus configured for partitioned processing |
| US6230255B1 (en) | 1990-07-06 | 2001-05-08 | Advanced Micro Devices, Inc. | Communications processor for voice band telecommunications |
| US5163139A (en) * | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
| JPH04260929A (ja) * | 1991-01-21 | 1992-09-16 | Mitsubishi Electric Corp | データ処理装置 |
| US5349676A (en) * | 1991-02-11 | 1994-09-20 | General Electric Company | Data acquisition systems with programmable bit-serial digital signal processors |
| US5421028A (en) * | 1991-03-15 | 1995-05-30 | Hewlett-Packard Company | Processing commands and data in a common pipeline path in a high-speed computer graphics system |
| CA2060555A1 (en) * | 1991-04-24 | 1992-10-25 | Robert J. Bullions, Iii | System and method for draining an instruction pipeline |
| JP3644959B2 (ja) * | 1992-09-29 | 2005-05-11 | セイコーエプソン株式会社 | マイクロプロセッサシステム |
| US6735685B1 (en) * | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
| US5701450A (en) * | 1994-02-25 | 1997-12-23 | Seagate Technology, Inc. | System including ATA sequencer microprocessor which executes sequencer instructions to handle plurality of real-time events allowing to perform all operations without local microprocessor intervention |
| US6145071A (en) * | 1994-03-03 | 2000-11-07 | The George Washington University | Multi-layer multi-processor information conveyor with periodic transferring of processors' states for on-the-fly transformation of continuous information flows and operating method therefor |
| US5442789A (en) * | 1994-03-31 | 1995-08-15 | International Business Machines Corporation | System and method for efficiently loading and removing selected functions on digital signal processors without interrupting execution of other functions on the digital signal processors |
| JP3658420B2 (ja) * | 1994-04-14 | 2005-06-08 | 株式会社日立製作所 | 分散処理システム |
| US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
| US6546442B1 (en) | 1995-10-30 | 2003-04-08 | International Business Machines Corporation | Communications adapter having analog and digital interfaces for communications with remote systems |
| US5949762A (en) * | 1996-01-24 | 1999-09-07 | Telebit Corporation | Apparatus and method for processing multiple telephone calls |
| US5924128A (en) * | 1996-06-20 | 1999-07-13 | International Business Machines Corporation | Pseudo zero cycle address generator and fast memory access |
| US5872910A (en) * | 1996-12-27 | 1999-02-16 | Unisys Corporation | Parity-error injection system for an instruction processor |
| US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
| US6684323B2 (en) * | 1998-10-27 | 2004-01-27 | Stmicroelectronics, Inc. | Virtual condition codes |
| KR100322277B1 (ko) * | 1998-11-20 | 2002-03-08 | 권 기 홍 | 확장 명령어를 가진 중앙처리장치 |
| US20030046516A1 (en) * | 1999-01-27 | 2003-03-06 | Cho Kyung Youn | Method and apparatus for extending instructions with extension data of an extension register |
| US6721875B1 (en) * | 2000-02-22 | 2004-04-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form |
| US6665795B1 (en) | 2000-10-06 | 2003-12-16 | Intel Corporation | Resetting a programmable processor |
| JP2002149396A (ja) * | 2000-11-07 | 2002-05-24 | Hitachi Ltd | データプロセッサ、半導体集積回路及びcpu |
| US7028129B2 (en) * | 2001-12-28 | 2006-04-11 | Intel Corporation | Method and apparatus for converting an external memory access into a local memory access in a processor core |
| US20050071830A1 (en) * | 2003-09-30 | 2005-03-31 | Starcore, Llc | Method and system for processing a sequence of instructions |
| US7555703B2 (en) * | 2004-06-17 | 2009-06-30 | Intel Corporation | Method and apparatus for reducing false error detection in a microprocessor |
| US7386756B2 (en) * | 2004-06-17 | 2008-06-10 | Intel Corporation | Reducing false error detection in a microprocessor by tracking instructions neutral to errors |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4179734A (en) * | 1976-07-02 | 1979-12-18 | Floating Point Systems, Inc. | Floating point data processor having fast access memory means |
| US4310879A (en) * | 1979-03-08 | 1982-01-12 | Pandeya Arun K | Parallel processor having central processor memory extension |
| US4279016A (en) * | 1979-06-21 | 1981-07-14 | International Business Machines Corporation | Instruction pre-fetch microprocessor interrupt system |
| US4598358A (en) * | 1980-02-11 | 1986-07-01 | At&T Bell Laboratories | Pipelined digital signal processor using a common data and control bus |
| US4399507A (en) * | 1981-06-30 | 1983-08-16 | Ibm Corporation | Instruction address stack in the data memory of an instruction-pipelined processor |
| JPS58168151A (ja) * | 1982-03-30 | 1983-10-04 | Nec Corp | パイプライン制御形情報処理装置 |
| JPS58214948A (ja) * | 1982-06-09 | 1983-12-14 | Toshiba Corp | パイプライン演算装置 |
| US4498136A (en) * | 1982-12-15 | 1985-02-05 | Ibm Corporation | Interrupt processor |
-
1985
- 1985-04-15 US US06/723,991 patent/US4794517A/en not_active Expired - Lifetime
-
1986
- 1986-02-10 CA CA000501494A patent/CA1248638A/en not_active Expired
- 1986-03-11 EP EP86103214A patent/EP0198216B1/en not_active Expired - Lifetime
- 1986-03-11 DE DE3689923T patent/DE3689923T2/de not_active Expired - Lifetime
- 1986-03-14 JP JP61055200A patent/JPS61241832A/ja active Granted
-
1995
- 1995-01-19 HK HK7595A patent/HK7595A/en not_active IP Right Cessation
Also Published As
| Publication number | Publication date |
|---|---|
| CA1248638A (en) | 1989-01-10 |
| DE3689923T2 (de) | 1995-01-05 |
| EP0198216B1 (en) | 1994-06-22 |
| DE3689923D1 (de) | 1994-07-28 |
| JPS61241832A (ja) | 1986-10-28 |
| EP0198216A2 (en) | 1986-10-22 |
| HK7595A (en) | 1995-01-27 |
| EP0198216A3 (en) | 1989-12-06 |
| US4794517A (en) | 1988-12-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0214731B2 (ja) | ||
| US5081574A (en) | Branch control in a three phase pipelined signal processor | |
| US5872987A (en) | Massively parallel computer including auxiliary vector processor | |
| US4648034A (en) | Busy signal interface between master and slave processors in a computer system | |
| EP0057788B1 (en) | Data processing system with external microcode control unit | |
| EP0473420A2 (en) | Virtual long instruction word memory architecture for digital signal processor | |
| EP0286354B1 (en) | A method and apparatus for modifying micro-instructions using a macro-instruction pipeline | |
| KR100462951B1 (ko) | Risc 구조를 갖는 8 비트 마이크로콘트롤러 | |
| US5440702A (en) | Data processing system with condition code architecture for executing single instruction range checking and limiting operations | |
| WO1985000453A1 (en) | Data processing system | |
| JPS5834862B2 (ja) | アレイ・プロセツサ | |
| US4539635A (en) | Pipelined digital processor arranged for conditional operation | |
| US4373182A (en) | Indirect address computation circuit | |
| EP2267597A2 (en) | Digital signal processor having a pipeline structure | |
| US5742842A (en) | Data processing apparatus for executing a vector operation under control of a master processor | |
| US6453410B1 (en) | Computer system having a cache memory and a tracing function | |
| JP2760808B2 (ja) | データ処理装置 | |
| US11080054B2 (en) | Data processing apparatus and method for generating a status flag using predicate indicators | |
| JPH0378083A (ja) | 倍精度演算方式及び積和演算装置 | |
| JP2636821B2 (ja) | 並列処理装置 | |
| JP2894854B2 (ja) | 中央演算処理装置 | |
| EP0186668A1 (en) | Three word instruction pipeline | |
| JP2924004B2 (ja) | 命令コード転送方式 | |
| JP2785820B2 (ja) | 並列処理装置 | |
| JP2927281B2 (ja) | 並列処理装置 |