JPS6014338A - 計算機システムにおける分岐機構 - Google Patents

計算機システムにおける分岐機構

Info

Publication number
JPS6014338A
JPS6014338A JP59078784A JP7878484A JPS6014338A JP S6014338 A JPS6014338 A JP S6014338A JP 59078784 A JP59078784 A JP 59078784A JP 7878484 A JP7878484 A JP 7878484A JP S6014338 A JPS6014338 A JP S6014338A
Authority
JP
Japan
Prior art keywords
instruction
branch
register
instructions
bit
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.)
Pending
Application number
JP59078784A
Other languages
English (en)
Inventor
マ−ク・アラン・オ−スランダ−
シ−・タング・ハオ
マ−チン・エドワ−ド・ホプキンス
ピ−タ−・ウイリ−・マ−クスタイン
ジヨ−ジ・ラデイン
ウイリアム・スペンサ−・ウオ−リイ・ジユニア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS6014338A publication Critical patent/JPS6014338A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [産業−1−の利用分野] 本発明は、計算機システムにおける勿岐機構に係る。
[従来技術] 最近のVLSI技術の発達により、マイクロプロセッサ
の設計に関しては、相反する2つのアプローチが可能に
なってきた。第1のアプローチは、VT、SIを十二分
に利用して、これまではソフトウェアで実現されていた
機能をハードウェアで実現させるものである。当然の結
果として、マイクロプロセッサの物理的な構成は複雑に
なる。これに対して第2のアプローチは、これまでより
多くの機能をソフトウェアで実現させることによって、
簡単で且つ高速のマイクロプロセッサを構成しようとす
るものである。後者のアプローチの代表的な例が下記の
文献に記載されている。
(]) George Radjn“The 801 
Mjnicomputer”A CM S T G P
 L A N N OT T CES、第17巻、第4
吟、1982年4月、39〜47頁(2) Pat;1
;erson、5equj、n “RISCI−: a
Reduced In5truct;、ion Set
; VLSI Computer”IEEECompu
ter、1.982年9月、8−20頁第1のアプロー
チは、ラフl−ウェアの開発費用及びその実行速度を考
えた場合、年ごとに安くなっているVT、、、SI回路
を用いてシステムを構成した方が全体として価格性能比
を上げることができる、という考えに基いている。従っ
て、第1のアプローチをとるシステム設計者は、VLS
I回路の潜在能力に合わせてアーキテクチャをより複雑
にしている。これは、最近の計算機とその前の計算機、
例えばVAXIIとFDP−1,1、iBMシヌシステ
ム8とIBMシステム/3、インテルA P 1.−4
32と8086、などを比較してみれば明らかである。
ただし、アーキテクチャが複雑になると、それだけシス
テム設計に要する時間が長くなり、設計ミスの可能性も
増える。この型のシステムは大規模命令セラ1−H1算
機システム、略してCl5Cシステムと呼ばれている。
これに対して、前記の文献に記載されているような第2
のアプローチに従って構成されたシステムは小規模命令
セットR1算機(RISC)システムあるいは基本命令
セラhrtl算機システム(以下、PRTSMシステ1
1という)と呼ばれる。I】R13Mシステムの中心1
:i: CP Uである。システム設計の大部分け、ユ
ーザに刻してCRT、Jの基本能力を使用可能にする。
ということに向1.−Jられている。
全体的な構成は従来のCI” Uとは幾分異なっている
以下、前記の分献に記載されているC PUの設計原理
及び従来のCP Uとの違いについて少し詳しく説明す
る。
小型ないし中型の汎用用算機システムにおける通常のC
PUば、アーキテクチャを“解釈”する配線マイクロプ
ロセッサで構成さ、lしている。このようなCP Uで
は、1つのCP U命令を実行するために、制御記憶装
置1C,Iにある幾つかのマイクロ命令が実行される。
1つの平均的なCPU命令を実行するのに必要なマイク
ロ命令(マシンサイクル)の数は、使用されているマイ
ク[1プロセツザの能3− 力(従って価格)CPUアーキテクチャの複雑さ、及び
実行中のアプリケーション(即ち命令ミックス)によっ
て左右される。例えば、IBMシステム/370モデル
168は1つのシステム/370命令当り3〜6サイク
ルを要し、モデル148は]O〜15サイクルを要し、
システム/360モデル30は30サイクル以」二にな
る。
CPUの設計によっては、ルックアヘッド、並列処理及
び分岐の記録といった技術を用いることにより、1命令
当りのマシンサイクル数を1−に近づけることができる
アプリケーションによる相違については、例えば一般に
科学技術計算は浮動小数点命令を使用するが、1「務N
i算は]O進演算を使用する。ところが、アプリケーシ
ョンコードの代りに走行システム全体を追跡してみると
、最も@繁に使用される命令に顕著な類似性があること
がわかる。これらの命令はロード、記憶、分岐、比較、
整数演算、論理桁送りといった比較的簡単な命令であり
、基礎となるマイクロプロセッサの命令セットにもこ4
− れらと同じ機能を持った命令がある。従って、マイクロ
プロセッサのアーキテクチャがCP Hのアーキテクチ
ャと正確には一致しない場合であっても、そのような機
能についてまでCP Uアーキテクチャをマイクロプロ
セッサで11解釈”することは無駄であると考えられた
従って、P RI S Mシステムのために設計された
基本命令セラ1−はハードウェアで直接実行することが
できる。即ち、各々の基本命令は」マシンサイクルしか
必要としない。複雑な機能は、通常のCPUの場合と同
じく、マイクロコードで実現される。ただし、P RI
 S Mシステムにお【づるマイクロコードは正にコー
ドであって、関連する機能は基本命令セラl−上で走行
するラフ1−ウェアサブルーチンによって実現される。
高速の制御記憶装置に記憶されていることから生じるマ
イクロコードの利点は、キャッシュをデータ用と命令用
とに分けた記憶階層では、事実上消滅する。命令キャッ
シュは″ページ可能″制御記憶装置として働らく。通常
のCPUでは、全てのアプリケーションにわたってどの
機能が最も頻繁に使用されるかは、設計者が前もって決
める。
従って、例えば倍精度の浮動小数点除算命令は常に高速
の制御記憶装置にあるが、第ルベル割込みハンドラは主
記憶装置にある。命令キャッシュ任用いた場合は、最近
の使用状況によって、どの機能がより速く使用できるか
が決まる。
このアプローチによれば、特定のジョブを実行するのに
要するサイクル数は、最悪の場合であっても、複鮒な命
令がマイクロプログラムされている通常の小型ないし中
型CPUにおしづるサイクル数以下である。更に、基本
命令の定義づけをうまく行えば、必要なサイクル数がよ
り少なくなることがわかった。
大部分の命令ミックスによれば、データの書込みまたは
読取りに関する命令が全体の20〜40%を占め、分岐
命令が1,5〜30%を占めている。
更に、多くのアプリケーションにおいては、記憶装置帯
域幅のかなりの部分がIloのためにさかれている。記
憶装置アクセスのためにCP Uが多くのザイクルにわ
たって待ち状態へ強制されるど、その間の処理時間が無
駄になる。
従って、PRISMシステムの第2の目的は、記憶装置
アクセスに起因するC P Uの遊休時間をできるだけ
短くするように記憶階層及びシステムアーキテクチャを
構築することであった。まず、CPUのマシンサイクル
に匹敵するアクセス時間を持ったキャッシュが必要なこ
とは明らかである。
次に、記憶命令が出されても直ちに主記憶装置への記憶
を行なわなくてもよいということから、ストアイン方式
のキャッシュが採用された。かりに1つのワードを記憶
するのに10ザイクルを要し、旧つ命令全体の1.0 
%が記憶命令であるとすると、記憶命令及びそれに続く
命令を並行して実行できない限り、CI) TJの遊休
時間は全体の約半分に達する。
しかし、ザイクルごとに新しい命令を必要とし、月つ2
ザイクルおきにデータをアクセスするcPU構成におい
ては、ザイクルごとにワードを供給する通常のキャッシ
ュを用いると、性能が低下す7− る。従って、キャッシュはデータを含む部分と、命令を
含む部分とに分けられた。このようにしてキャッシュへ
の帯域幅は実質的に倍にされ、外部記憶装置からの命令
及びデータの非同期的取出しが可能になった。
通常のアーキテクチャでは、データの記憶は命令を変更
することによって行なわれるため、2つのキャッシュが
適切に同期していることをハードウェアが保証しなけれ
ばならない。これはコスト高になり、また性能の低下に
もつながる。命令先取り機構でさえ、記憶有効アドレス
と命令アドレスレジスタの内容を比較しなければならな
いので、複雑になる。
ところが指標レジスタが計算機に導入されるようになっ
て、命令を変更する頻度が大幅に減少され、今日に至る
まで事実」二命令が変更されることはなくなった。従っ
てPRISMアーキテクチャは、上述のようなハードウ
ェア回報通信を必要としない。その代りに勺割キャッシ
ュの存在がソフトウェアに対して明示され、必要なとき
にキャラ−9−1+In1 8− シュを同期さぜるための命令がラフ1〜ウエアに与えら
れた。同期が必要なのは、例えばプログラム取出しのよ
うな特別の機能の場合だけである。
同様に、キャッシュの存在がソフトウェア側からはわか
らない通常のシステムによりいては、I10オペレーシ
ョンもキャッシュを介して行なう必要がある。その間C
I)TJは待機していなければならず、またT10オペ
1ノージヨンが終了した後のキャッシュの内容ti、実
行中のプロセスの実効ベージセラ1−ではなくなるので
、キャッシュを強制的に一部モードへ戻さなければなら
ない。高価なシステムにおいてすら、ディレクトりを重
複して設けると性能の低下を招く。
現在のシステムでは、■/○オペレーションを開始する
責任は、サブシステム・バッファとユーザ領域との間で
固定ブロック転送を行なうシステムアクセス方式(IM
S、VSAM、VTAM、ページングなど)に移ってき
ている。これは、アクセス方式がバッファの位置及び範
囲だ【プでなく、I10転送が処理される時も知ってい
ることを意10− 味する。従って、このソフトウェアはキャッシュを適切
に同期させることができ、チャネル(PRTSMシステ
ムにおける直接メモリアダプタ)は外部記憶装置との間
で直接転送を行なうことができる。この結果、記憶装后
帯域幅の半分がIloのために使用中であっても、CP
Uの性能が低下することはない。
これまでの説明でいえることは、実現させるのに費用が
かかるか、または低速のシステム機能があり、且つソフ
トウェアが頻繁に生じる性能低下要因を認識できる(あ
るいは機能全体を走行時間からコンパイル時間へ移すこ
とができる)場合には、その機能はハードウェアからソ
フトウェアへ移され、それによってニスト低減及び性能
改善が達成される、ということである。
次に本発明の主題である分岐について説明する。
これまでにも様々な分岐命令が考え出されているが、そ
れらは分岐の条件に特徴がある。ところが、レジスタR
及びその中のビットBを指定し、ピッI−r3が例えば
111 IIのときに分岐するという機能を実現させよ
うとすると、従来のやり方では少なくとも2つの命令が
必要であった。システム/370の命令を例にとると、
もしレジスタRの内容を保存する必要がなければ、次の
2つの命令が実行される。
命令]、:N R,MASK 命令2:BNZ WHERE 命令1はレジスタRの内容と、ビットBのところだけが
“1″で残りは全てrto”のマスクとの論理積製計算
するAND命令であり、命令2は命令1の結果が非ゼロ
のときに’WIIERE’″へ分岐する条件分岐命令で
ある。その命令シーケンスは、命令を2個必要とする外
に、マスクのためにメモリ参照を必要とする。メモリ参
照を避けるなら、次のような命令シーケンスになる。
命令1:sLR,B 命令2:T、TRR,R 命令3:BM WHFRE 命令1は、ピッI−Bが符号位置にくるまでレジスタR
の内容を左へ桁送りする左指送り命令であ11− リ、命令2はRの符号を表示するように条件レジスタを
設定するロード・テスト命令であり、命令3はRの符号
が負(ピッI−B = 1 ) のときにIIWI−T
 E RE ”へ分岐する条件分岐命令である。この命
令シーケンスではメモリ参照は不要であるが、前のシー
ケンスに比べて命令が1つ増えている。
レジスタRの内容を保存する必要があり、且つ別のレジ
スタSを使用できるのであれば、」1記の命令シーケン
スのいずれかを実行する前に、レジスタRの内容をレジ
スタSへ移すロード命令11LR8,R”を実行しなけ
ればならない。
最後に、レジスタRの内容を保存する必要があり、且つ
他のレジスタを使用できなければ、一般に次の命令シー
ケンスが使用される。
命令1.:ST R,TEMP 命令2:TM TEMP+B/8、M 命令3:BNZ WHERE 命令]。はレジスタRの内容をメモリの指定された記憶
位置TEMPに記憶する記憶命令であり、命令2はビッ
トBに対応する位置だけが111 IIで=12− 残りが全て10”であるマスク(8ビツト)を用いて、
記憶位置TEMPにある1ノジスタRのビットBをテス
トするマスク・テスI・命令である。このシーケンスは
2回のメモリ参照を必要とする。
[発明が解決しようとする問題点] これらの命令シーケンスは少なくとも2つの命令を必要
とすることの外に、コンパイルの面でも問題がある。と
いうのは、上記の各命令シーケンスはその前提条件がい
ずれも異なっているが、コンパイラはそのような前提条
件を区別できない場合が多く、従って最も一般的な最後
の命令シーケンスを選択してしまう。これは多くの場合
、最適のシーケンスではない。
従って本発明の目的は、任意のレジスタ中の任意のピッ
1〜の値を分岐条件とする分岐命令(以下、レジスタ・
ビット分岐命令という)を単一マシン・サイクルで実行
できるようにすることである。
[問題点を解決するための手段] 本発明で使用されるレジスタ・ピッ1ル分岐命令は、分
岐条件をテストされるべきビットを指定する第1フイー
ルド(BT)、このビットを含むレジスタを指定する第
2フイールド(RA)、及び分岐先の目標アドレスを生
成するための第3フイールド(DまたはRB)を含んで
いる。更に、レジスタ・ビット分岐命令がロードされる
命令レジスタと、第1フイールド及び第2フイールドの
内容に応じてレジスタ・ピッ1ル分岐命令のサイクル内
で分岐条件にテス1へし分岐するか否かを判断する分岐
判断手段と、第3フイールドの内容に応じて同じサイク
ル内で目標アドレスを生成する目標アト1ノス生成手段
とが設けられる。これにより、単一マシンサイクル内で
分岐の判断及び目標アドレスの生成を終らせることがで
きる。
[実施例] 以下、本発明を文献(1)のPRISMシステムに適用
した例について説明する。
−(Δ)PRI±−rl−アーキテクチャの概要前述の
ように、PRISMシステムの中心はCP TJである
が、PRISMシステムはCPUの他に、主記憶装置、
キャッシュ機構、母線ユニット及びシステム1.10を
含んでいる(第1図参照)。
キャッシュ機構はデータ部と命令部に分かれている。
CPUアーキテクチャは従来のものに比べて非常に簡単
である。本1)RISMシステムの特徴として、各々の
命令はハードウェアにより単一マシンサイクルで実行さ
れる。このような命令を基本命令という。基本命令は記
憶装置アクセス(普通は並行処理される)を除くと、マ
シンサイクルを1つしか必要としない。ここで“基本”
という語は、簡単さというよりもむしろ時間、即ち単一
マシンサイクルに関係している。基本命令自体は単一マ
シンサイクル内で実行可能であるが、それに伴う実際の
機能は複雑なことがある。
“単一マシンサイクル”という語も幾つかの定義が可能
である。例えば、ql−マシンサイクルは″継続的に繰
返される基本システムクロックの期間であって、その間
に基本システムオペレーションが遂行されるもの”であ
る。もし少し別のいい方をすれば、単一マシンサイクル
は″基本クロッ15− り期間に含まれる全てのクロックパルスをシステムが1
回完全に使用するのに必要な時間″である。
従って、単一マシンサイクル内でCPUの全てのデータ
フロー機構を18回使用することができる。
本発明に従うレジスタ・ビット分岐命令も単一マシンサ
イクルで実行できる基本命令であり、分岐の判断に要す
る時間を短縮することを意図している。本発明に従えば
、分岐の判断及び分岐先の目標アドレスの計算を単一マ
シンサイクルで終らせることができる。
PRISMシステムのアーキテクチャ及びその命令セラ
1へは下記の3つを達成するものである。
(1)命令当り1サイクルの高速CPUをコンパイルに
適した命令セットを用いて定義する。
(2)記憶階層、Ilo、割振及びソフトウェアの活動
がCPUでの命令実行と並行して行なわれる。これによ
り待ち時間が短くなる。
(3) 全てのプログラムをうまくコンパイルできるコ
ードを生成する最適化コンパイラを開発する。
16− 単一マシンサイクルで実行可能であるということに加え
て、命令に関する重要なテーマにその規則性がある。こ
れはハードウェアによる実施を容易にしていた。例えば
、全てのオペランドは自分の大きさに合った境界を持っ
ていなければならない(半ワードの場合は半ワード境界
、ワードの場合はワード境界)。命令は全てフルワード
であり、従ってその境界もフルワード境界である。
レジスタ名フィールドはシステム/370の4ビツトに
刻し、1ピッl−増えて5ピツ1、である。
これによりレジスタを32個まで装備できる。従って、
PRISMシステムを用いて、例えばシステム/370
のように16個の汎用レジスタを備えた他のアーキテク
チャをエミュレートすることができる。システム/37
0の命令セラI−における基本命令サブセットを用いて
複雑な命令をエミュレートする場合は、レジスタ名フィ
ールドの長さく4ビツト)がネックになる。
更に、命令の長さが4バイトあるので、各命令で使用さ
れるレジスタを明示指定することができ、従って入力オ
ペランドを壊す必要はない。これは一般に、′3アドレ
ス″形と呼ばれている。
P R、r S Mシステムは真の32ピツ1〜アーギ
テクチヤであり、16ビツ1ヘアーキテクチヤに拡張レ
ジスタを加えたものではない。アドレスは32ビツト長
であり、算術演算には32ビツトの2の補数が使用され
、論理命令及び桁送り命令は32ピツ1へのワードを取
扱う。桁送りは31ビツトまで可能である。
P RI’ S Mシステ11のCP Uの主構成要素
は、A、 L U、汎用レジスタファイル(32ビツト
の汎用レジスタを32個含む)、ならびに32ピツhの
条件Iノシフタを含む条件論理である。条件レジスタは
オペレーションに関する種々の条件を示すもので、検査
及び分岐を可能にする。条件レジスタの各ビットの意味
は下記の表1のとおりである。
宍、 1(条」牛↓仁ン−7、乞]− OSo 合H1あふれ 1 ’ OV あふれ 2 丁、T より小さい、負値 3 (3T より大きい、正値 4 E Q 等しい、ゼロ値 5 LT、、 論理的により小さい 6 LG 論理的により大きい 7 CA ピッl〜0からの桁−にげ 8 C4ビット4からの桁」−げ 9 C8ピッl〜8からの桁上げ 1.0 C1,2ピッ1−12からの桁−トげ11 C
1,6ピッ1−16からの桁」;げ1.2 C20ビッ
ト20からの41I3−にげ1.3 C24ピッ1〜2
4からの桁−」:げ14 C28ピッ1−28からの桁
上げ19− 15 ’CD 任意の4ビツトニブルからの桁上げ 16 PZ 常時ゼロ 17〜25(将来の使用に備えて予約)26 E CO
外部条件0 27 E C1−外部条件1 28 E C2外部条件2 29 1’: C3外部条件3 30 8B 母線使用中 (条件付き母線オペレーシ ョン用) 3] HO半ワードあふれ (下位16ビツ1−からのあ ふれ) 条(1川ノジスタの各ビットは命令によって変更させな
い限り、前の値を保つ。
一イ1トーQ−(−$−9−L−は合計あふれビットで
、次のあふれビットが命令によってセラ1〜されるとき
は常に“1″にセラI−される。除算ステップにおけ2
0− る特別の標識としてあふれを使用する場合は、合計あふ
れは変更されない。
Iff ”/−トL工qN)−はあふれピッ1へで、命
令実行中にあふれが生じたときにセラ1−される。あふ
れビットは、加算及び減算においてピッl−0からの桁
−にげとピッ1−1からの桁上げとが異なっていると1
11”にセラ1〜され、さもなければII O+1にセ
ラ1〜される。これは除算ステップのための専用標識と
しても使用される。ただし比較命令によって変更される
ことはない。
□くクー!−2〜」は実行された命令の計算結果(大オ
ペランドを2の補数形式の符号付き整数と考えてセット
され、旦り一ト5ユL r−)及び□(遥仁ドη−’(
LG)−は、2つのオペラン1〜を32ピツ1〜の無符
号整数と考えてセラ1〜される。ピッl〜2〜6は比較
及び論理命令によってもセラ1〜される。
Myドア〜1町はし)ずれも桁−1=、げピッ1〜であ
る。
いてピッ1−〇からの桁上げがあると11111にセラ
1〜され、さもなければII O”にセラI〜される。
これは除算及び乗算命令のための専用標識としても使用
されるが、比較命令に31、って変更されることはない
。これに対して、−!ぐソ斗−8二1−矢はA T−U
tこJ柵する各ニブルの桁−にげを示す。例えば−47
−トー43(−C4)−はピッ1〜4からの桁」―げが
あると“1”にセラ1−され、さもなければLL OI
Iにセットされる。、(ツードーリ:1」−も同様であ
る。これらの桁上げは]0進演算で使用される。(スト
15(CD>−は任意の4ビツトニブルにおいて桁上げ
が生じるとN I II bこセラ1−され、さもなけ
れば+1011にセラ1〜される。これを利用すれば、
10進デイジツ1〜の有効性を検証することができる。
−ζ−ソー1Σ、i、6.(PZ)−は常時ゼロビット
であって、rr i uにセラ1〜されることはない。
これは、常時ゼロピッ1−を参照する分岐命令による無
条件分岐を可能にする。
一!ξ−/hl’7−ζ可は予約ビットである。これら
は本実施例では使用されないが、将来の使用に備えて設
けられている。
旦り−ド虜ユリ1鼾q−工肝C刈ご−Eq3つ=は外部
条件ビットであり、外部条件が有効なときにCPUへの
対応する外部条件入力の値にセラ1−される。
旦Z芥po(−BB)は母線使用中ビットであり、母線
ユニットが使用中のためにそこで母線オペ1ノージヨン
に関する命令を実行できないときに111”にセラ1−
され、さもなければ0”にセラ1〜される。
g〉りぢ3−1.工用qルは半ワードあふれビットであ
り、下位の16ビツ1−のあふれ状態を示す。これは、
加算及び減算においてピッ1〜]−5及び16の桁」二
げが異なっているとLL I IIにセラ1〜され、さ
もなければII OL+にセラ1−される。このピッ1
へは比較命令によって変更されることはない。
なお、条件レジスタの各ビットかどのようにしたセット
されるかの詳細は本発明とは無関係であるから、ここで
は省略する。
前述のように、命令は全て4バーで1・長である。
PRISMシステムテtit: 、 D形式、T、J 
L形式、M23− 形式及びX形式の命令がイ吏用される。これらの命令形
式を下記の表2に示す。
萩−2 D形式、U L形式 0 6 H1,631 061,1,162131 24− X形式 %式%] 命令中の各フィールドの意味は次の通りである。
0PCD (0〜5):命令の○Pコード。
RT(6〜10):命令の実行結果を受取る目的レジス
タの名前。
R5(6〜10):命令実行のためのソースレジスタの
名前 RA (11−15) :第1オペランドレジスタ、ま
たは回転命令の場合は目的レジスタとして 使用されるレジスタの名前。
RB(16〜20);第2オペランドレジスタの名前。
BI(6〜]0): レジスタビットまたは1−ラップ
マスクを指定する即値フィールド。
Sl+(16〜20):シフ1〜量を指定する即値フィ
ールド。
D(16〜31):16ビツトの符号付き整数を2の補
数形式で指定する即値フィールド。
拡張のため32ピツ1〜の長さを持っ た別のフィールドと組合わせて使用 することができる。
MA!J(21〜3]、) : ” O”によって囲ま
れたtr I ItのサブスI・リングまたは“]”に
よっ て囲まれた770”のサブストリング から成る32ビツトのマスクを指定 する即値フィールド。ビット2]−が “OITであれば前者のサブストリン グが指定され、It I IIであれば後者のサブス1
へリングが指定される。ビ ット22〜26はサブストリングの 左端ビットへのインデックス、ピッ 1〜27〜31はサブス1へリングの右端ビットへのイ
ンデックスである。
“10000011111”のマス クフィールドは全て110 ++のマスクを発生し、”
 OOOOOO1,11−11−”のマスクフィールド
は全てrr I ++のマスク髪発生する。
EO(21〜31):拡張opコード。
(的 レジ不j二くマ」Σ分」唆−命令P R,I S
 Mシステムにおいては、命令は全てフルワード(4バ
イト)であるから、生成された分岐目標アドレスのピッ
1−30及び31は無視される。目標アドレスは分岐命
令のアドレスに定数を加算するか、または絶対アドレス
を指定することによって計算される。アト1ノス計算に
命令の即値フィールド(D)を使用する場合は、即値フ
ィールドは32ピツ1〜へ符号拡張される。
分岐命令には、実行形と非実行形がある。実行形の分岐
命令では、分岐の判断の外に、たとえ分岐が行なわれる
としても、後続の命令(物理的に次の命令)が無条件に
実行される。この後続の命令を実行形分岐におけるザブ
ジエクト命令という。
ただしどのような命令でもザブジエクト命令になれるわ
けではなく、分岐命令、I−ラップ命令、S27− VC命令、命令アドレス加算命令、及び割込み戻り命令
はサブジエン1〜命令になり得ない。
非実行形の分岐命令では1分岐条件が満たされている場
合、分岐の判断時点から分岐先の命令を取出してくるま
での間に幾らかの時間がある。実行形の分岐命令は、こ
の時間を有効に利用してサブジエクト命令を実行させる
ものである。
本発明におけるレジスタ・ピッ1ル分岐命令と従来の分
岐命令との違いは、任意のレジスタ中の任意のビットの
値を分岐条件とする分岐のテストが単一マシンサイクル
で行なわれることである。前述のシステム/370命令
の表記法を用いると、本発明では1つのレジスタ・ビッ
ト分岐命令“BT B、V、WHERE” (ビットB
がオンノときに分岐)、または”BF B、R,WHE
RE”(ピッl−13がオフのときに分岐)をコード化
することだけが必要である。これは従来の命令シーケン
スに比べて短く、従って実行時間が速く、しかもコンパ
イルの面でもコード選択に関する問題はない。
28− レジスタRのビットBがオンのときに” W I丁ER
E″へ分岐するBT命令(BRANCT−丁 1゛RU
E)及びレジスタRのピッl−Bがオフのときに“WH
ERE”へ分岐するB F命令(B RA N CHF
ALSE)はいずれも実行形と非実行形があり、命令形
式はD形式及びX形式である。従ってレジスタ・ビット
分岐命令は全部で8種類ある。
いずれにおいても、]ノレジスタはRAフィールド(ピ
ッ1へ]]〜15)によって指定され、ピッ1−BはB
Iフィールド(ビット6〜10)によって指定される。
RAがゼロのときは前述の条件レジスタが指定され、非
ゼロのときは汎用レジスタが指定される。
分岐先の命令のアドレス計算は、D形式とX形式とでは
異なっている。1〕形式の場合は、現分岐命令のアドレ
スに符号拡張されたDフィールドの内容が加算され、X
形式の場合はRBフィールド(ビット16〜20)によ
って指定された汎用レジスタの内容が目標アドレスどし
て使用される。
勿論、BT命令においてピッI−Bがオフのとき、また
は13F命令においてピッ1〜Bがオンのときは、分岐
は行なわれない。実行型のレジスタ・ピッ1ル分岐命令
の場合は、ピッl−Bの値とは無関係にサブジエクト命
令が実行される。
なお、レジスタ・ピッ1ル分岐命令の実行によって前述
の条件レジスタの内容が変更されることはない。
胆ルA二」Σ文四1− 代表的なP RI S Mシステムの構成を第1図に示
す。システムの内部毎a10には、CP U 1−2、
複数の母線ユニット14、]6(浮動小数点ユニツ1−
など)、命令キャッシュ機構18、データキャッシュ機
構20、及びシステム母線ユニツl−22が接続されて
いる。キャッシュ機構18.2゜はいずれもキャッシュ
、ディレクトリ及び変換索引緩衝機構(TLB)を含ん
でいる。システム母線ユニツ1−22は主としてI10
オペレーションを制御するもので、主記憶装置24にも
接続されている。主記憶装置24と命令キャッシュ機構
18及びデータキャッシュ機構20との間では命令及び
データが別々にやりとりされる。命令は命令キャッシュ
機構18から命令母線26を介してCPU12へ取出さ
れる。
CPU]、2の種々の構成要素のうち、レジスタ・ビッ
ト分岐命令の実行に関グ、するものを第2図に示す。図
示さ九ていないものには命令解読器などがあるが、そわ
ら目従来のシステムで使用されている公知のものである
本発明に関する限り、レジスタ・ビット分岐命令によっ
てテストされるべきピッ1〜がどのような条件のもとて
如何にして設定されたかは重要ではない。レジスタ・ピ
ッ1ル分岐命令で指定された汎用レジスタの内容は、先
行命令の結果として保管された条件レジスタの内容であ
ってもよい。また第2図では32ビットの条件レジスタ
50が使用されているが、もつと少ないピッ1〜数の条
件レジスタを含むシステ11であっても、本発明を適用
することができる。
第2図の例では、命令Iノシフタ32はD形式のレジス
タ・ピッ1ル分岐命令を含んでいる。この命31− 令は命令アドレスレジスタ(IAR)34によって命令
キャッシュ機構18(第1図)から取出されたものであ
る。
まず○Pコード(ビット0〜5)が命令解読器(図示せ
ず)で解読され、それによりBT命令またはBF命令を
示す信号が発生されて、ビット選択器60へ供給される
。ビット選択器60は命令レジスタ32からテストされ
るべきピッ1〜Bl指定するBIフィールド(ピッ1〜
6〜10)の内容を受取り、BT命令の場合はBIフィ
ールドによって指定された位置だけがIt 171で残
りが全て“OIIである32ピッ1−の出力を生成し、
BF命令の場合はBIフィールドによって指定された位
置だけが“0″で残りが全て“1″である32ビツトの
出力を生成する。
命令レジスタ32にあるRAフィールド(ピッl〜11
〜15)は、32個の汎用レジスタを含む汎用レジスタ
ファイル30ヘアドレスとして供給される。その結果、
1つの汎用レジスタが選択されて、その内容(RA、)
が線60へ並列に続出さ32− れる。各汎用レジスタは32ビツト幅であるから、線6
0も32ビツト幅である。線62はANDゲー1−66
に接続されCいる。もう一方のA N Dゲ−l−64
は条件レジスタ50からの32ピッ1−を受取る。
図には示していないが、R八ツイールドは全ゼロか否か
を検査する回路にも供給される。この回路は、RAが全
ゼロでなければA、 N DゲーI〜66を条件付けて
、線62へ読出された汎用レジスタの内容(R八)をO
Rアゲ−へ68の方へ通過させ。
RAが全ゼロであればANDゲート64を条件づけて、
条件レジスタ50の32ビツトをORゲート68の方へ
通過させる。ORゲート68を通過した32ビツトは線
74を介してANDマスク回路70へ供給される。
ANDマスク回路70はこの外に、BIフィールドによ
って指定されたビット位置だけがII I II(BT
命令)または”O”(BF命令)で、残りが全て0”ま
たはII 1. IIのマスクとして働く32ビツトを
ビット選択器60から線72を介して受取る。従ってA
、 N Dマスク回路70は、BT命令の解読に応答し
てRAフィールドによって指定されたレジスタR(汎用
レジスタまたは条件レジスタ)中のピッl−Bが1″′
のときに分岐を行なわせる回路と、BF命命の解読に応
答してレジスタRのピッl−Bが“O”のときに分岐を
行なわせる回路とを備えていなければならない。これは
例えば、線72及び74上の32ピツ1〜を各々一方及
び他方の入力に受取る32個の2人力AND回路と、同
じく線72及び74」二の32ビツトを各々一方及び他
方の入力に受取る32個の2人力NOR回路と、32人
力のOR回路と、BT命令の場合は32個のAND回路
の出力を32人力のOR回路へ通し、BF命令の場合は
32個のNOR回路の出力を32人力のOR回路へ通ず
ゲート回路とで構成することができる。勿論これは一例
に過ぎず、同様な機能を持った別の回路構成でもよい。
ANDマスク回路70によって分岐が示されたときの目
標アドレスはD形式の場合はA L U 4−2から与
えられる。A L U 42は命令レジスタ32にある
Dフィールドの内容と、IAR34にある現分岐命令の
アドレスとを加算することによって目標アドレスを生成
する。X形式の命令の場合は、RBフィールド(ピッ1
〜16〜20)にJ:つて指定された汎用Iノシフタの
内容(RB)が「1標アドレスとして使用される。
第3図は、単一マシンサイクルで実行可能な1ノジスタ
・ビット分岐命令の実行中に生じる動作のタイミングを
示したものである。” CR設定++は先行命令の実行
結果に応じて条件レジスタ(CR)50が設定される期
間を表わしている。先行命令によっては条件レジスタ5
0が変更されない場合もある。” G P R”はRA
フィールドによって指定された汎用レジスタ(GPR)
の内容がi!?昌“I″1される期間であり、この期間
の中頃に線62へ読出される。このときピッ1へ選択器
60が活動化されて、32ピッ1−のマスク仕線72へ
出力する。更に、ANDゲー1−64または66が条件
イζJ(づられて、条件レジスタ50からの32ピツ1
へまたは汎35− 用レジスタファイル30から線62へ読出された32ピ
ッI−を通過させ、これによりANDマスク回路70で
分岐の判断がなされる。
[1標アドレスの計算も、マスク生成及び分岐の判断と
並行して、レジスタ・ピッ1ル分岐命令サイクル内に行
なわれる。前述のように、目標アドレスはD形式の場合
はA、T、U42で計算され、X形式の場合はRBフィ
ールドによって指定された汎用lノシフタの内容が使用
される。かくて、レジスタ・ピッ1ル分岐命令ザイクル
の終了時には、分岐が行なわれるか否かには関係なく、
目標アドレスが得られている。従って、分岐を行なうの
であれば、次のサイクルで直ちに目標命令を取出すこと
ができる。なお、レジスタ・ピッ1ル分岐命令が実行形
であった場合は、目標命令の取出しと並行してサブジエ
ク1〜命令を実行することができる。また分岐が不要で
あれば、IAR34の内容に4を加算した命令アドレス
によって、レジスタ・ビット分岐命令の次に位置してい
る命令が取出されて実行されるが、この次命令の取出し
をレジスタ・36− ビット分岐命令の実行と並行して行なうか、または次の
サイクルで行なうかは自由である。
[発明の効果コ 本発明によれば、レジスタ・ピッ1へ分岐命令の実行の
ためにCP Uにm甲なハードウェアを追加するだけで
、分岐命令の主機能即ち分岐の判断及び目標アドレスの
RI算を11t−マシンサイクル内で終らせることがで
きる。分岐を行なうのであれば、目標命令を取出ずため
の余分のサイクルを必要とするが、この取出はレジスタ
・ビット分岐命令サイクルに続いて直ちに開始すること
ができる。
【図面の簡単な説明】
第1図は本発明を適用し得るPRISMシステムの代表
的な構成を示ずブロック図。 第2図はレジスタ・ビット分岐命令を実行するためのハ
ードウェアを示すブロック図。 第3図はレジスタ・ビット分岐命令の実行タイミングを
示す図。 タイン アメリカ合衆国ニューヨーク州 ヨークタウン・ハイツ・リッジ ・ストリート2127番地 72)発 明 者 ジョージ・ラブインアメリカ合衆国
ニューヨーク州 ビアモン1〜・フランクリン26番 地 、72溌 明 者 ウィリアム・スペンサー・ウオーリ
イ・ジュニア アメリカ合衆国カリフォルニア 州サラトガ・ファルマウス・コ ート19316番地

Claims (1)

  1. 【特許請求の範囲】 分岐条件をテスI・されるべきピッ]〜を指定する第1
    フイールド、該第1フイールドにJ:って指定されたピ
    ッ1−を含むレジスタを指定する第2フイールド、およ
    び分岐先の目標アドレスを生成するための第3フイール
    ドを含む分岐命令を準備し。 該分岐命令がロードされる命令レジスタと、該命令レジ
    スタにロードされた分岐命令の前記第1フイールドおよ
    び前記第2フイールドの内容に応じて前記分岐命令のサ
    イクル内で指定された1ノジスタ中の指定されたビット
    をテストし分岐するか否かを判断する分岐判断手段と、
    前記第3フイールドの内容に応じて前記サイクル内で前
    記目標アドレスを生成する目標アドレス生成手段とを備
    えたことを特徴とする計算機システムにおける分岐方式
JP59078784A 1983-06-30 1984-04-20 計算機システムにおける分岐機構 Pending JPS6014338A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US50973483A 1983-06-30 1983-06-30
US509734 1995-08-01

Publications (1)

Publication Number Publication Date
JPS6014338A true JPS6014338A (ja) 1985-01-24

Family

ID=24027883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP59078784A Pending JPS6014338A (ja) 1983-06-30 1984-04-20 計算機システムにおける分岐機構

Country Status (2)

Country Link
EP (1) EP0130381A3 (ja)
JP (1) JPS6014338A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006525583A (ja) * 2003-04-29 2006-11-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
JP2015007993A (ja) * 2006-09-21 2015-01-15 インテル コーポレイション 論理比較動作を実行するための装置

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278840A (en) * 1987-07-01 1994-01-11 Digital Equipment Corporation Apparatus and method for data induced condition signalling
IN169637B (ja) * 1987-07-01 1991-11-23 Digital Equipment Corp
US4888722A (en) * 1987-07-02 1989-12-19 General Datacomm, Inc. Parallel arithmetic-logic unit for as an element of digital signal processor
US4972342A (en) * 1988-10-07 1990-11-20 International Business Machines Corporation Programmable priority branch circuit
US7421572B1 (en) * 1999-09-01 2008-09-02 Intel Corporation Branch instruction for processor with branching dependent on a specified bit in a register
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7861071B2 (en) * 2001-06-11 2010-12-28 Broadcom Corporation Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US7127593B2 (en) 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US6986025B2 (en) 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
US7434036B1 (en) * 2002-08-30 2008-10-07 Verisilicon Holdings Co. Ltd. System and method for executing software program instructions using a condition specified within a conditional execution instruction
US7299343B2 (en) * 2002-09-27 2007-11-20 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for cooperative execution of multiple branching instructions in a processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5036337A (ja) * 1973-06-22 1975-04-05
JPS5588140A (en) * 1978-12-27 1980-07-03 Hitachi Ltd Address branch system of microprogram controller
JPS5837746A (ja) * 1981-08-31 1983-03-05 Nippon Telegr & Teleph Corp <Ntt> 条件判定処理装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4334268A (en) * 1979-05-01 1982-06-08 Motorola, Inc. Microcomputer with branch on bit set/clear instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5036337A (ja) * 1973-06-22 1975-04-05
JPS5588140A (en) * 1978-12-27 1980-07-03 Hitachi Ltd Address branch system of microprogram controller
JPS5837746A (ja) * 1981-08-31 1983-03-05 Nippon Telegr & Teleph Corp <Ntt> 条件判定処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006525583A (ja) * 2003-04-29 2006-11-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
JP2015007993A (ja) * 2006-09-21 2015-01-15 インテル コーポレイション 論理比較動作を実行するための装置
JP2017079083A (ja) * 2006-09-21 2017-04-27 インテル コーポレイション 論理比較動作を実行するための装置

Also Published As

Publication number Publication date
EP0130381A3 (en) 1987-11-19
EP0130381A2 (en) 1985-01-09

Similar Documents

Publication Publication Date Title
US4589087A (en) Condition register architecture for a primitive instruction set machine
US4569016A (en) Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US5675758A (en) Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
CN107077321B (zh) 用于执行融合的单个周期递增-比较-跳转的指令和逻辑
RU2292581C2 (ru) Команды загрузки/перемещения и копирования для процессора
US5619664A (en) Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
JPH0926878A (ja) データ処理装置
US4713750A (en) Microprocessor with compact mapped programmable logic array
JPS6014341A (ja) 基本命令セツト計算機システムにおけるトラツプ割込み方式
JPS6339931B2 (ja)
JPH0831032B2 (ja) データ処理装置
US5832258A (en) Digital signal processor and associated method for conditional data operation with no condition code update
JPS6014338A (ja) 計算機システムにおける分岐機構
EP0954791B1 (en) Eight-bit microcontroller having a risc architecture
US6061781A (en) Concurrent execution of divide microinstructions in floating point unit and overflow detection microinstructions in integer unit for integer divide
JPH07120284B2 (ja) データ処理装置
JP4073721B2 (ja) データ処理装置
US5655139A (en) Execution unit architecture to support X86 instruction set and X86 segmented addressing
US5754460A (en) Method for performing signed division
US5822786A (en) Apparatus and method for determining if an operand lies within an expand up or expand down segment
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
JP2520882B2 (ja) デ−タ処理装置およびデ−タ処理方法
JP2636821B2 (ja) 並列処理装置
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JP2785820B2 (ja) 並列処理装置