JPH063583B2 - 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法 - Google Patents

命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法

Info

Publication number
JPH063583B2
JPH063583B2 JP2323416A JP32341690A JPH063583B2 JP H063583 B2 JPH063583 B2 JP H063583B2 JP 2323416 A JP2323416 A JP 2323416A JP 32341690 A JP32341690 A JP 32341690A JP H063583 B2 JPH063583 B2 JP H063583B2
Authority
JP
Japan
Prior art keywords
instruction
address
current
register
risc
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
Application number
JP2323416A
Other languages
English (en)
Other versions
JPH03216735A (ja
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 JPH03216735A publication Critical patent/JPH03216735A/ja
Publication of JPH063583B2 publication Critical patent/JPH063583B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、縮小命令セット・コンピュータ(RISC)
のプロセッサ内で行なわれるパイプライン式命令処理で
使用するのに特に適した、RISC命令処理のデコード
・サイクル中にアドレスを生成することにより、これま
ではこの処理中に発生するアドレス生成セイクルによっ
て頻繁に引き起こされていたウェイト・ステートをほぼ
除去するための装置及びそれに付随する方法に関するも
のである。
B.従来の技術 歴史的に言えば、ほとんどのコンピュータが複合命令を
利用してきた。多くの単一命令、特にメインフレーム・
コンピュータで使用される単一命令は、通常1つだけで
複数のメモリ・アクセスを生じ、同時に2個または3個
など複数のデータに作用した。複合命令の使用の基礎と
なる主な理由は、コア・メモリでは過去のあるときには
1ビット当り1.5ドルにも達したように、歴史的に大
容量メモリの価格が高かったことと、このメモリへのア
クセス速度が相対的に遅かったことである。その結果、
過去にはますますコンパクトな機械コードを生成するこ
とが何にもまして求められていた。この必要を満たすた
め、ますます複雑な命令を含む命令セットを用いるコン
ピュータ・プロセッサが発展してきた。このようなセッ
ト中の互いに対応する命令が、ますます多くの異なる動
作を同時に呼び出すことができるようになった。このよ
うな命令の使用によって、プログラムを格納のために必
要なメモリの容量が大きく減少し、それによって、その
プログラムを実行するのに必要なコンピュータ・システ
ムのコストが大幅に低下した。さらに、同時に多数のデ
ータを得るために1個の命令でますます多数のメモリ・
アクセスを呼び出すことによって、そうしなければ発生
していたはずの、連続した命令(マシン)サイクルの間
に1回ずつメモリ・アクセスを行なって前記のデータを
それぞれ別々に得る必要がずっと減り、それによってプ
ログラムの実行速度が明らかに増大した。このような複
合命令を用いるコンピュータ・プロセッサは、いわゆる
「CISC」(複合命令セット・コンピュータ)として
知られるようになった。
個々の命令をさらに精巧にするには、ますます複雑な多
層式の命令デコードを用いる必要があった。一見したと
ころ、各命令が、その精巧さがどの程度であれ、メモリ
・アクセスに必要な時間よりも短い時間で完全にデコー
ドできる限り(初期のコンピュータ技術では実際にそう
だった)、CISCプロセッサで複合命令を用いること
による性能の損失は、仮にあったとしてもわずかであ
る。不幸なことに、その後コンピュータ技術が発展する
につれて、コンパイルの性質により上記のような結果に
はならなかった。さらに、アクセス時間を大幅に減少さ
せるメモリ技術が当技術分野で出現したため、この損失
はますます問題になってきた。
詳細に言えば、過去においても現在においても、コンパ
イラは、相対的に高水準のプログラムを、それに対応す
る、後でコンピュータ上で実行すべき命令(低水準の機
械コード)のシーケンスに変換するために使用されてき
た。実行速度を改善するためには、コンパイルされた機
械コードはできる限り効率的でなければならない。すな
わち、無駄な動作を呼び出してはならない。無駄な動作
は、処理時間またはコンピュータ資源を不必要に消費す
る。不幸なことに、多くの場合、CISC機械コードを
生成するコンパイラは、高水準プログラムの所与のステ
ートメントに対する効率的なCISC命令のシーケンス
を生成しないことがしばしばである。これはCISC命
令セットの性質の結果として発生する。詳細に言えば、
多くのタイプのアルゴリズムでは、CISCプロセッサ
内で使用される命令処理パイプラインを活用する、効率
的なCISC命令のシーケンスは不可能である。これ
は、CISC命令の相対的に粒度が粗いという性質の直
接の結果である。基本的に、CISC命令はそれぞれ、
2個以上のより単純なRISC様の命令を組み合わせた
ものである。しかし、このより単純な命令のうち特定の
組合せしか、実際にCISCプロセッサのアーキテクチ
ャによってサポートされない。したがって、より単純な
RISC様の命令の最適の組合せは、たとえ完璧なコン
パイラを用いたとしても、すべての場合に可能なわけで
はない。しかし、RISC用の命令セットのような、粒
度のより細かい命令セットを用いる場合、その命令セッ
ト用の機械コードを発生するコンパイラは、ジョブがよ
り容易になり、したがって、CISC機械コードを生成
するコンパイラよりも、その命令セットを実行するプロ
セッサ内で使用される特定の命令処理パイプラインに合
わせた最適な動作のシーケンスを生成する機会が多くな
る。
さらに、ますます大きな記憶容量をずっと低いビット単
価(現在ではしばしば100分の1セントまたは100
0分の1セント単位で測定される)で提供する、ますま
す高速のメモリ、例えば半導体のランダム・アクセス・
メモリ(RAM)などが、過去10年の間に容易に入手
可能になってきた。現在、メモリ・アクセス時間はかな
り減少して、しばしば1マシン・サイクルで1回のアク
セスが実行可能な状態にまで達している。したがって、
多層式命令デコードに費やされる処理時間は、完了まで
に数マシン・サイクルを要する可能性があるが、これが
現在、命令処理速度に対する重大な制限になっている。
マイクロプロセッサ命令セットの開発と引き続く発展
は、メインフレーム・コンピュータのそれと歴史的に並
行しているが、複合命令セットも、それを使用する理
由、すなわちメモリ空間の保存とコストが相当以前に消
滅したにも関わらず、市販の大多数のマイクロプロセッ
サで現在も使用されている。したがって、マイクロプロ
セッサ・システムは、精巧な多層式命令デコードを用い
ることによって引き起こされる、メインフレーム・コン
ピュータで見られるのと同様の処理速度の制限を受けて
いる。コンピュータ支援設計/エンジニアリング・タス
クや複雑な数値解析やグラフィック処理など、マイクロ
コンピュータを用いた精巧なリアルタイム・アプリケー
ション処理の増加に伴なって、マイクロコンピュータに
基くシステムの処理速度を上げることがますます強く求
めれらてきている。
このことを念願に置いたうえで、プロセッサの命令セッ
トを大幅に単純化することによって処理速度が大幅に向
上することが、当技術分野で認識された。したがって、
いわゆる「縮小命令セット・コンピュータ」(RIS
C)が当技術分野で開発されてきた。RISCプロセッ
サは、CISCプロセッサで使用された命令数よりも劇
的に少ない数の命令を使用する。CISCプロセッサが
200個以上の異なる命令を使用し、その多くが複数の
処理動作を呼び出すのに対して、RISCプロセッサは
100個以下の別々の命令しか含まず、そのそれぞれが
ただ1つの動作を呼び出す。RISCプロセッサ用に書
かれたプログラムの機械コードは通常、CISCプロセ
ッサ用に書かれたと同じプログラムよりもわずかに多い
命令を必要とし、したがってわずかに多いメモリ空間を
必要とする。しかし、利用可能なメモリ空間がコンピュ
ータ設計に加える制約は、従来よりもはるかに少なくな
っている。特に、大容量で相対的に安価なメモリ、例え
ば現在入手可能な費用効果の高い256Kビットまたは
1MビットのRAM回路を使用して組み立てられたメモ
リをマイクロコンピュータ・システムに組み込むことに
よって、大量の安価なメモリ位置がプログラム格納用に
利用可能になっている。したがって、メモリ位置を保存
するためにプログラム・サイズを縮小する必要は現在、
仮に存在するとしてもごくわずかである。さらに、効率
的な機械コードを生成する、高速で相対的に小さな最適
化コンパイラは、CISC命令用よりもRISC命令用
の方が容易に作成できる。さらに、RISC命令はCI
SC命令よりもはるかにデコードが容易であり、多層式
デコードを特に必要とはしない。CISC命令は、完全
にデコードするのに複数の、恐らくは3以上の連続する
マシン・サイクルが必要なのに対して、RISC命令セ
ットの実際上すべての命令は、ただ1つのマシン・サイ
クルでデコード可能なはずである。したがって、同等の
クロック速度のRISCプロセッサとCISCプロセッ
サを用いて同一の機能をもたらすプログラムを実行する
場合、命令デコードでマシン・サイクルが節約されるた
め、RISCプロセッサはCISCプロセッサよりもし
ばしばはるかに高速となり、したがって性能も大幅に上
回る。したがって、余分なメモリ・サイズやコストな
ど、RISCプログラムのサイズがCISCの同等品よ
りも増加したために生じるどんな不利益よりも、RIS
Cプロセッサのプログラム処理速度が同等のCISCプ
ロセッサよりも大きく増大することの利益のほうが、明
らかに大きくなる傾向がある。
RISCプロセッサの魅力はそれとして、RISCプロ
セッサの速度を制限する不利な欠点も存在する。具体的
に言うと、RISCプロセッサはパイプライン式命令処
理を用いて、複数の命令をパイプライン内で互いにずれ
て重なりあった状態で同時に処理する。パイプライン
は、命令デコード、アドレス生成、メモリ・アクセス及
びレジスタ・ロード用の別々のステージを含んでいる。
異なる命令が、パイプライン内の異なるステージを同時
に占める。どのRISC命令もパイプラインを完全に伝
播して完全に処理されるのに複数のマシン・サイクルを
必要とするが、新しい命令は理想的には、平均して、連
続するマシン・サイクルごとに次々にパイプラインに入
るべきである。しかし、あるRISC命令が処理できる
前に、この命令がその直前の命令の結果を必要とするこ
とがある。ところがパイプライン式処理の性質のせい
で、前のRISC命令が完全に処理されておらず、現命
令がデコードする準備ができている時にその結果が利用
できないことがある。したがって、前の命令の結果が利
用できるようになるまで、現命令の処理、特にその命令
デコードを、1マシン・サイクル、または多くの場合に
は複数のマシン・サイクルだけ(相当するウェイト・ス
テートを挿入することによって)遅らせなければならな
い。前述のように、新しいRISC命令は理想的には、
平均して、RISCプロセッサの連続する各マシン・サ
イクルの間に次々に処理すべきであるので、たとえ1サ
イクルの遅延(1ウェイト・ステート)であっても、そ
れがRISCプロセッサ内で充分頻繁に発生するなら
ば、そのプロセッサのスループットが大幅に低下する可
能性がある。詳細に言えば、このような遅延を必要とす
るRISC命令は、条件付き分岐及び無条件分岐の分岐
命令を含むものである。これらの分岐命令は、平均し
て、プロセッサ上で実行される命令6個ごとに1個あ
る。したがって、これらのウェイト・ステート遅延は、
実際にプログラム中で充分頻繁に発生して、その処理速
度に悪影響を及ぼす。
C.発明が解決しようとする課題 したがって、当技術分野では、RISCプロセッサでの
使用に特に適した、RISC命令のパイプライン式処理
中に発生するウェイト・ステートの数を減少することに
よって、プロセッサの速度を増大させる技術が求められ
ている。さらに、この技術は、比較的簡単で実施しやす
いものであるべきである。
D.課題を解決するための手段 RISC命令のパイプライン式処理中に非常に頻繁に発
生するウェイト・ステートの1つ、すなわち別個のアド
レス生成サイクル中にアドレスを生成することに関連す
るウェイト・ステートをなくして、RISCの処理速度
を大幅に増大させることができることが判明した。
したがって、当技術に固有であり、特にこの1つのウェ
イト・ステートの発生に帰因する欠陥は、本発明の教示
によれば、別個のアドレス生成サイクルではなく、パイ
プライン式RISC命令処理内で発生するデコード・サ
イクル中にアドレスを生成することによって、ほとんど
除去される。
本発明の教示に従って命令デコード・サイクル中にメモ
リ・アドレスを提供するには、1つのRISC命令の完
全なデコードと事前デコードの双方を並列して行なう。
事前デコードは、命令から変位フィールドを取り出し、
現RISC命令用の適当なベース・アドレスを選択し、
フォーマット動作と連動して変位フィールドを適当に位
置合せするために用いる。これらはすべて現デコード・
サイクル内で行なわれる。次に、ベース・アドレス及び
位置合せ済みの変位アドレスが、アドレス加算機構の別
々の入力に供給される。完全な命令デコードの結果、現
RISC命令がアドレスの計算を必要とすることが確認
された場合は、加算機構の出力が、デコード・サイクル
中にメモリ・アドレスとしてアドレス・レジスタを介し
て出力に伝播される。そうでない場合は、このデコード
・サイクル中に加算機構によって生成された計算済みの
アドレスは、単に無視されて、後続のRISC命令のデ
コード・サイクル中に重ね書きされる。
本発明の詳細な教示によれば、本発明の技法では、まず
現RISC命令が当初はメモリ・アドレスを必要とする
(可能性がある)と思われる(例えば、LOADまたは
STORE命令または分岐命令)ならば、現命令を完全
にデコードした際に、実際にそのようなアドレスを生成
する必要があるか否かに関わらず、現RISC命令用の
アドレスを生成する必要があると仮定する。この仮定の
下で、事前デコード回路が、現命令の命令コードを事前
デコードして、まずそこから変位アドレス・フィールド
を取り出し、次に適当にビット位置を合わせて変位アド
レス・フィールドをフォーマットし、最後に位置合せ済
みの変位アドレス・フィールドを2進加算機構の対応す
る入力に送って、アドレスを生成する。これと並行し
て、事前デコート回路は、現RISC命令用のベース・
アドレスの適当な供給源を、例えばメモリ・アドレスの
生成を必要とする分岐タイプのRISC命令の場合には
命令アドレス・レジスタ(IAR)の内容を、またメモ
リ・アドレスの生成を必要とするLOADまたはSTO
RE(LOAD/STORE)タイプのRISC命令の
場合にはGPRアレイ内の汎用レジスタRC(正確なレ
ジスタは現命令自体に含まれるフィールドで指定され
る)を選択する。ベース・アドレス・フィールド及び変
位アドレス・フィールドの両方を並行して処理し、2進
加算機構の当該の複数ビット入力に供給するのが好都合
である。現RISC命令がアドレスの生成を必要とする
ものである場合には、その命令が完全にデコードされた
後に、2進加算機構によって生成されたアドレスが単に
アドレス・レジスタにラッチされ、それを介して出力に
供給される。一方、完全な命令デコードの結果、現RI
SC命令がアドレスの生成を必要としないものであると
判明した場合には、2進加算機構によって生成されたア
ドレスは、次のサイクルの間には使用されず、後続のR
ISC命令の命令デコード・サイクル中に単に重ね書き
される。本発明では並行処理が行なわれるため、アドレ
スを生成するのに必要なすべての動作が、有利なことに
ただ1つのマシン・サイクルで発生する。このようにし
て、別個のアドレス生成サイクルも、それに関連するウ
ェイト・ステートも不要となり、有利なことにRISC
コンピュータの処理速度が大幅に増大する。
さらに、本発明の特徴によれば、演算論理機構(AL
U)の加算パスではなくて別個の2進加算機構を用いて
アドレスが計算されるので、これらのアドレスが、AL
Uを用いる場合よりも短い時間で、特にパス遅延がより
少ない状態で計算できる。
E.実施例 以下の説明を読み終えたならば、本発明は縮小命令セッ
ト・コンピュータ(RISC)プロセッサ内での使用を
対象としているにも関わらず、本発明の技法が、単純で
あれ複雑であれ、他の多くのプロセッサの命令処理にも
同様に使用できることを、当業者は明らかに理解される
であろう。したがって、以下では、RISCプロセッサ
内での使用に関して本発明の技法を論ずることにする。
さらに、理解を容易にするため、特定の例示的RISC
プロセッサ、すなわちIBM PC/RTコンピュータ
内で使用されているRISCプロセッサでの使用に関し
て本発明を論ずる。(“IBM”は、本出願人であり、
商標“PC/RT”の所有者でもある、米国ニューヨー
ク州アーモンクのインターナショナル・ビジネス・マシ
ーンズ・コーポレーションの登録商標である。) 本発明を完全に理解するために、以下の議論は3つの段
階を追って進めることにする。まず、当技術分野で既知
のRISCプロセッサ内で、パイプライン式命令処理、
特にアドレス生成が通常はどのように行なわれるかを全
般的に説明する。その後に、当技術分野で行なわれるパ
イプライン式RISC命令処理の説明を前提にして、処
理の遅延、特に、しばしばこの処理の一環となるアドレ
ス生成サイクルの結果として頻繁に生じるウェイト・ス
テートを伴なう遅延について説明する。次に、このウェ
イト・ステートを有利に除去し、RISCプロセッサの
処理速度を大幅に向上させる、RISC命令処理のデコ
ード・サイクル中にアドレス生成を実行するための、本
発明の技法について詳細に説明して結びとする。
具体的に言うと、第1図は、その処理の一環としてアド
レスの生成を必要とする、代表的なRISC命令10を
示す図である。このアドレスは主に、分岐アドレスか、
データをメモリに書き込むまたはメモリから読み取るメ
モリ位置のアドレスかのいずれかである。このアドレス
は通常、アドレス変位値と所与のレジスタの現内容の和
として計算される。前記のレジスタと変位値は共に命令
内で指定されている。命令10の一例は、STORE命
令、STO[R1],[R2]+nである。この命令を
実行すると、汎用レジスタR1の内容が、メモリの、汎
用レジスタR2の内容(「ベース」アドレス)とアドレ
ス変位値“n”の和によって与えられるメモリ位置にス
トアされる。変位値は、一般に指標(インデックス)ま
たはオフセット値とも称する。第1図に示すように、こ
のRISC命令は、命令コード・フィールド13、2つ
のレジスタ・フィールド15と17、及び変位フィール
ド19を含んでいる。命令コード・フィールドは、この
命令によって呼び出される特定のデータ処理動作を指定
する適当なビットを含んでいる。レジスタ・フィールド
15及び17は、RISC命令処理中に使用される汎用
レジスタの1グループの一部を形成する、R1及びR2
で表される2個のレジスタを識別する。アドレス変位フ
ィールド19は、アドレス変位値“n”を含んでいる。
命令10を正しく実行するには、このRISC命令の処
理中にメモリにアクセスする以前に、メモリ・アドレス
を計算しなければならない。このアドレスは計算する必
要があるが、本発明の広義の目的はそれではなくて、R
ISCプロセッサの処理速度を向上させるには、RIS
C命令の複数サイクル・パイプライン式処理の関のどこ
でどのようにしてアドレスを計算すべきかということで
ある。
第2図は、当技術分野で、RISC命令、特に第1図に
示した、アドレスの生成を必要とするSTORE命令の
場合に行なわれる、代表的な複数サイクル処理を示す図
である。命令処理は、全体として一連の連続するマシン
・サイクルにわたる複数の処理サイクルで行なわれる。
個々の処理サイクルが、それぞれちょうど1マシン・サ
イクル以内で完全に発生するのが理想である。一般に、
当技術分野で周知のように、これらの処理サイクルは全
体として、命令デコード・サイクルと、その後のアドレ
ス生成サイクルと、それに続くメモリ・アクセス・サイ
クルと、レジスタ内にデータをストアする命令の場合に
はさらに、レジスタ・ロード・サイクルを含む。したが
って、RISC命令は通常、3個または4個の連続する
マシン・サイクルを必要とし、そのサイクル数はそれぞ
れの命令によって決まる。
議論を始めるにあたって、STORE命令が周知のメモ
リ・アクセス回路(図示せず)によって取り出され、現
在は命令レジスタ200内に存在するものと仮定する。
命令処理が始まるとデコード・サイクル21でこの命令
がデコードされる。デコード・サイクルの間にこの命令
の命令コード・ビットがデコードされ、その結果、レジ
スタ・フィールドR1及びR2の内容が、線205及び
207で示されるように、汎用レジスタ(GPR)アレ
イ210(GPR210)内にある対応するレジスタ2
13及び215にロードされる。この例では、GPR2
10は、16個の異なるレジスタを含む。この命令か
ら、ベース・アドレスがレジスタ213にロードされ、
同時にメモリ内にストアすべきデータ値がレジスタ21
5にロードされる。これらのレジスタがロードされた後
に、アドレス生成サイクル25が発生する。このサイク
ルの間に、レジスタR1の内容が、線225で示される
ように、オペランド・レジスタ235にロードされる。
それと同時に、現在GPR210内のレジスタR2にあ
るベース・アドレスが、線223で示されるように、ベ
ース・アドレス・レジスタ231にロードされる。これ
が発生すると、ベース・アドレス・レジスタ231の内
容が、線243で示されるように、加算機構250に1
入力として供給される。命令レジスタ200に含まれて
いる変位値“n”が、線207で示されるように、この
加算機構のもう1つの入力に供給される。RISCプロ
セッサの演算論理機構(ALU)を用いて、加算機構2
50によって表される加算機能を実行する。加算機構2
50は、ベース・アドレスと変位値の単純な2進加算を
行なって、メモリ・アドレスを生成する。アドレス生成
サイクルの最後に、加算機構250の生成したアドレス
が、アドレス・レジスタ260にロードされる。このア
ドレスがアドレス・レジスタにロードされると、命令処
理はメモリ・アクセス・サイクル29に進む。このサイ
クルの間に、アドレス・レジスタ260に含まれるアド
レスが、線265で示されるように、メモリ280のア
ドレス入力に供給される。メモリ280は、通常キャッ
シュまたは主記憶装置である。アドレスをメモリ280
に供給するのと並行して、データ値が、線275で示さ
れるように、メモリ280のデータ入力に供給される。
アドレスとデータ値がメモリに供給されると、メモリは
書込み動作を始め、その中にデータ値をストアする。メ
モリ書込み動作が終了すると、STORE命令は完全に
処理を終り、この時点ですでに命令レジスタ200内に
存在している次のRISC命令の処理が始まる。このR
ISC命令が、STORE命令ではなくLOAD命令
(図示せず)であり、レジスタR2の内容と変位値の和
によって指定されるメモリ位置の内容などアドレスの生
成を必要とし、それに続いて、このメモリ位置の内容を
指定されたレジスタR1にロードする場合には、メモリ
・アクセス・サイクル29は、メモリ書込み動作ではな
く、メモリ読取り動作を行ない、その後にレジスタ・ロ
ード・サイクル(図示せず)が続く。このレジスタ・ロ
ード・サイクルの間に、メモリ280内のアドレスされ
た位置の内容が、指定された汎用レジスタR1に書き込
まれる。同様のアドレス計算及び複数サイクル命令処理
は、RISC分岐命令の処理中にも行なわれる。
処理速度を増加させるためには、当技術分野で既知のR
ISCプロセッサは、パイプライン式命令処理を用い
て、複数の命令をパイプライン内で互いにずれて重なり
あった状態で同時に処理する。パイプラインは、異なる
命令処理サイクルごとに別々のハードウェア・ステージ
を含んでいる。すなわち、命令デコード・ステージ、ア
ドレス生成ステージ、メモリ・アクセス・ステージ及び
レジスタ・ロード・ステージである。このパイプライン
式アーキテクチャのおかげで、異なるRISC命令が、
パイプライン内の異なるステージを同時に占めることが
できる。1つのRISC命令がパイプライン内を完全に
通過して、それによって完全に処理されるには、複数の
マシン・サイクルを必要とすることがあるが、RISC
パイプライン命令プロセッサの周知の複数サイクル(通
常2サイクル)の起動遅延が発生した後に、新しい命令
が、理想的には、平均して連続する各マシン・サイクル
ごとにパイプラインに入るべきである。平均して1マシ
ン・サイクルごとに1つの新しいRISC命令というこ
の目標が満足できるのは、連続する命令が互いに独立で
ある、すなわち、後続の命令が直前の命令が完全に処理
されて生じる結果を必要としない場合に限られる。この
場合には、パイプラインのどのステージにあるどの命令
の結果も、パイプラインの他のステージにある他の命令
の処理に影響しない。したがって、デコード、アドレス
生成及びメモリ・アクセス、さらに当該の場合にはレジ
スタ・ロードの各サイクルが、パイプライン内の様々な
ステージにある異なるRISC命令に対して、同時に並
行して発生することになる。
不幸なことに、これから処理されるRISC命令の多く
は、処理が行なわれる前に、その直前の命令の結果をし
ばしば必要とする。条件付き分岐は、これらの命令グル
ープの一例である。これらの命令は条件によって実行さ
れる動作が異なるという性質をもつため、対応する条件
付き分岐命令を完全に処理できる前に、特に正しい分岐
アドレスを計算できる前に、条件が満足されるか否かを
決定する先行命令の結果が利用可能になっていなければ
ならない。したがって、先行する命令の結果が利用可能
になるまで、現命令の処理、特にその命令デコードを、
1マシン・サイクルまたはしばしば複数のマシン・サイ
クルだけ、遅延させなければならない。さらに、条件付
き分岐とは別に、2つの汎用レジスタの内容同士を加算
するADD命令など、汎用レジスタの1つを用いる非分
岐命令の前に、LOADなどそれらのレジスタの1つの
内容に影響を与える命令がくることがある。この加算動
作は、前記の1つのレジスタに適当な内容がロードされ
るまで先に進めない。その結果、このような命令が発生
する場合には、先行する命令の処理が完了するまで、適
当な数のウェイト・ステートを挿入して、後続の命令の
処理を停止させる。不都合なことに、このウェイト・ス
テート遅延は、それが充分頻繁に起こる場合、RISC
プロセッサ上でのプログラム実行を著しく遅くする可能
性がある。
このウェイト・ステート遅延を、第3A図に図式的に示
す。詳細に言えば、第3A図は、当技術分野で見られ
る、第1の命令があるレジスタの内容を変更し、その内
容が第2の命令によって使用される。2つの連続するR
ISC命令を処理する際の、パイプライン式RISC命
令処理に関連する典型的な複数サイクルのタイミングを
図式的に示したものである。第1の命令は、例えばLO
AD命令、具体的にはLOAD[R1],[R2]+n
であり、汎用レジスタR1に、レジスタR2の内容と変
位値“n”の和によって指定されるメモリ内の位置にス
トアされた値をロードする。この命令の後に、例えば加
算命令、具体的にはADD[R1],[R3]が続き、
汎用レジスタR1及びR3の内容を加算して、その結果
をアキュムレータに置く。
パイプライン式RISC命令処理を用いる場合、LOA
D命令がパイプラインのデコード・ステージに入り、そ
のデコードがマシン・サイクルT1の間に行なわれる。
このサイクルの間に、線310で示されるLOAD命令
のデコード・サイクルが発生する。詳細に言えば、LO
AD命令の命令コードがデコードされ、汎用レジスタR
1及びR2の内容が、この命令に含まれるアドレス値を
用いて適当なアクセスされる。次のマシン・サイクル、
すなわちサイクルT2の間に、LOAD命令の処理はパ
イプラインのアドレス生成ステージに移る。ここでは、
線320で示されるLOAD命令のアドレス生成サイク
ルが発生する。このステージの間に、汎用レジスタR2
の内容と変位値“n”を加算して、メモリ・アドレスを
形成する。その後、マシン・サイクルT3の間に、LO
AD命令の処理はパイプラインのメモリ・アクセス・ス
テージに移る。ここでは、線330で示されるように、
アドレスされたメモリ位置にアクセスするLOAD命令
のメモリ・アクセス・サイクルが始まる。命令処理は次
にレジスタ・ロード・ステージに進む。ここでは通常、
マシン・サイクルT4の間に、線340で示されるLO
AD命令のレジスタ・ロード・サイクルが発生し、アク
セスされたメモリ位置の内容を汎用レジスタR1にロー
ドする。
前述のように、連続するRISC命令は、連続するマシ
ン・サイクルの間に命令処理パイプラインに入るべきで
ある。したがって、ADD命令の処理は、理想的には、
LOAD命令に対するRISC命令処理と、その先頭か
らちょうど1マシン・サイクルだけ一時的にオフセット
されて重なるべきである。したがって、マシン・サイク
ルT2の間に、ADD命令がデコード・ステージに供給
される。不幸なことに、このADD命令は、汎用レジス
タR1の内容を必要とするが、それは、不幸なことにこ
のサイクル中にはまだ先行するLOAD命令の実行によ
ってロードされていない。このレジスタは、マシン・サ
イクルT2の間、LOAD命令の実行によってロックさ
れているので、この間に他の命令がこのレジスタを利用
することはできない。したがって、マシン・サイクルT
2の間にADD命令のデコードが試みられるが、このデ
コードは、このサイクルの間有効に抑止され、その結
果、線325で示されるように、1サイクルのウェイト
・ステートがADD命令の処理に挿入される。レジスタ
R1は、マシン・サイクルT3の間も、まだ並行するL
OAD命令の処理によって充填されていないので、ロッ
クされたままであり、このため、線335で表されるよ
うに、別のウェイト・ステートがADD命令の処理に挿
入される。LOAD命令によって汎用レジスタR1がメ
モリからロードされるマシン・サイクルT4で、ADD
命令の処理にさらに別のウェイト・ステートを挿入し、
続いてADD命令のデコード中にオペランド・レジスタ
に読み込む必要をなくすために、周知のレジスタ・バイ
パス動作が実行される。この場合、特に第3B図に示す
ように、メモリ280のアドレスされた位置からのデー
タが、線381で示すように汎用レジスタR1に書き込
まれ、また線385で示すように、同時にオペランド・
レジスタ235にも書き込まれる。その結果、ADD命
令のデコードは、次のマシン・サイクルT5(図示せ
ず)ではなく、第3A図に線345で示すように、マシ
ン・サイクルT4の間に行なわれるようになる。
RISCプロセッサ内でのパイプライン式命令処理を隙
間のない状態に保つために、GPR210は、GPRア
レイ内のレジスタのうち2個が同時に読取り可能であ
り、それと同時にこのアレイ内の別の2個のレジスタが
同時に書込み可能である。すなわち合計4個のレジスタ
動作が同時に行なえることが必要である。この程度の並
行動作が可能なGPRアレイは、回路面積、必要電力及
び処理速度の点で、不都合なほど複雑かつ高価になりが
ちである。
より重要なことであるが、第3A図を見るとわかるよう
に、LOAD命令の処理中にアドレスを生成してからメ
モリにアクセスする必要があるため、ADD命令のパイ
プライン式処理に2サイクルの遅延が挿入される。直前
のRISC命令を処理して生成される結果を必要とする
他のRISC命令の処理中にも、レジスタのロックとデ
コード・サイクルの抑止による同様の処理遅延が発生す
る。
どのRISC命令についても命令デコード・サイクルと
メモリ・アクセス・サイクルは順次実行する必要がある
が、広い意味での本発明の教示によれば、RISCプロ
セッサに関して、別個のアドレス生成サイクルをRIS
Cプロセッサで用いていたためにこれまで発生していた
ウェイト・ステートをなくするために、アドレス・デコ
ード・サイクル中にアドレスを生成できることが認識さ
れた。別個のアドレス生成サイクルとそれに付随するウ
ェイト・ステートを除去することによって、好都合にも
RISCプロセッサの速度が、したがってそのスループ
ットもかなり増大する可能性が高い。また、デコード・
サイクル中にアドレス生成を実行することにより、他に
もいくつかの利点が得られることが判明した。詳細に言
えば、これまでアドレス生成サイクル中にウェイト・ス
テートを挿入するために必要であったインターロック回
路はもはや不要となり、したがってパイプライン制御回
路は、回路の複雑さが軽減され、サイズと必要電力が減
少して、単純化された。さらに、GPRアレイは、2つ
の読取り動作と2つの書込み動作ではなく、2つの読取
り動作と1つの書込み動作を同時に行なうことができる
だけで充分であり、そのため、GPRも、やはり回路の
複雑さが軽減され、サイズと必要電力が減少して、単純
化された。加えて、命令事前取出しバッファが空である
間に(デコード済みの)LOADまたはSTORE命令
が発生したときは、このLOADまたはSTORE命令
が優先されるが、別個のアドレス生成サイクルを使用す
る場合のように2マシン・サイクルではなく、1マシン
・サイクルしか損失がない。
本発明の詳細な教示によれば、本発明の技法はまず、各
LOADまたはSTORE命令または各分岐命令の最中
にアドレスを生成する必要があるものと仮定する。この
仮定の下に、デコード・サイクル中に事前デコード回路
によってアドレス生成が行なわれる。この事前デコード
回路は、これらの各命令に対する命令コードを事前デコ
ードして、まずそこから変位アドレス・フィールドを取
り出し、次に変位アドレス・フィールドをフォーマット
して適当にビット位置合わせ、最後に位置合せ済みの変
位アドレス・フィールドを、ALUではなく、別個の2
進加算機構の対応する入力に送って、アドレスを生成す
る。これと並行して、事前デコード回路は、現RISC
命令用のベース・アドレスの適当な供給源をも選択す
る。これは、メモリ・アドレスの生成を必要とする分岐
タイプのRISC命令の場合には、命令アドレス・レジ
スタ(IAR)の内容であり、メモリ・アドレスの生成
を必要とするLOADまたはSTOREタイプのRIS
C命令(LOAD/STOREと総称する)の場合に
は、(現命令自体によって指定される)GPRアレイ内
の汎用レジスタRCの内容である。ベース・アドレス及
び変位アドレス・フィールドを並行して処理し、2進加
算機構の当該の複数ビット入力に供給するのが好都合で
ある。現RISC命令がアドレスの生成を必要とするも
のである場合には、その命令が完全にデコードされた後
に、2進加算機構によって生成されたアドレスが単にア
ドレス・レジスタにラッチされ、それを介してその出力
に与えられる。一方、完全な命令デコードの結果、現命
令が、命令レジスタ内または直接GPR内に絶対アドレ
スを有する無条件分岐命令など、アドレスの生成を必要
としないものであることが判明した場合には、2進加算
機構によって生成されたアドレスは次のサイクルで使用
されず、後続のRISC命令の命令デコード・サイクル
中に重ね書きされるだけである。本発明では並行処理が
可能なため、アドレスを生成するのに必要な動作はすべ
て、有利なことにただ1つのマシン・サイクルで行なわ
れる。
さらに、別個の2進加算機構は、ALUの加算部分より
も単純で、それよりもかなり高速である。その結果、当
技術分野で行なわれているRISCプロセッサ内のAL
U(ならびに直列に接続されたビット・フォーマット機
構)ではなく、このような加算機構を用いてアドレスを
生成すると、アドレス生成の速度がさらに向上する。さ
らに、この2進加算機構の出力はアドレス・レジスタだ
けに供給されるので、この加算機構は相対的に小さな駆
動負荷を有する。これとは対照的に、ALUがアドレス
・レジスタを駆動する場合には、その出力がGPRアレ
イ、アドレス・レジスタその他を含めて多数の位置に送
られるので、ALUはより大きな負荷を受ける。その結
果、別個の2進アドレス加算機構の使用に伴うパス遅延
は、有利なことに、アドレス加算機構としてALUを使
用する場合よりもかなり短くなる可能性が高い。
パイプライン式RISC命令処理のデコード・サイクル
中にアドレスを生成するための本発明の技法を完全に理
解するために、次に、前述のように、例えばIBM P
C/RTコンピュータで用いられているRISCプロセ
ッサ内で実行される命令セットと共に本技法を使用する
場合について、特にこの命令セット内のアドレス生成を
必要とする種々の命令のフォーマットについて説明を行
なう。第4図は、IBM PC/RT命令セット用の異
なるRISC命令フオーマットを詳細に示す図である。
図のように、アドレスの生成を必要とするIBM PC
/RTのRISC命令フォーマット400は、非分岐命
令と分岐命令の両方を含んでいる。非分岐命令に関して
は、これらの命令フォーマットとしては、8ビットの命
令コード・フイールド401とそれぞれ4ビットのオペ
ランド(RB)レジスタ・フィールド402及びベース
・アドレス(RC)レジスタ・フィールド403を含む
Rタイプの命令フォーマット405や、8ビットの命令
コード・フィールド407とそれに続く4ビットのオペ
ランド・レジスタ・フィールド408及び4ビットの増
分(I)フィールド409を含むR’タイプの命令フォ
ーマット410や、4ビットの命令コード・フィールド
411と4ビットの(ショート)増分(Is)フィール
ド412と4ビットのオペランド・レジスタ・フィール
ド413と4ビットのベース・レジスタ・フィールド4
14を含むDショート命令フォーマット415や、4ビ
ットの命令コード・フィールド416と4ビットの結果
(RA)レジスタ・フィールド417と4ビットのオペ
ランド・レジスタ・フィールド418と4ビットのベー
ス・レジスタ・フィールド419を含むXタイプの命令
フォーマット420や、8ビットの命令コード・フィー
ルド421と4ビットのオペランド・レジスタ・フィー
ルド422と4ビットのベース・レジスタ・フィールド
423と16ビットの増分フィールド424を含むDタ
イプの命令フォーマット425がある。分岐命令用のフ
ォーマットとしては、8ビットの命令コード・フィール
ド451とそれに続くそれぞれ4ビットのオペランド・
レジスタ・フィールド452及びベース・アドレス・レ
ジスタ・フィールド453を含むRタイプの(無条件分
岐)フォーマット455や、8ビットの命令コード・フ
ィールド457とそれに続く4ビットの条件ビット番号
(N)フィールド458及び4ビットのベース・レジス
タ・フィールド459を含むR″タイプの(条件付き分
岐)フォーマット460や、4ビットの命令コード・フ
ィールド461とそれに続く4ビットの条件ビット番号
フィールド462及び8ビットの即時ジャンプ(JI)
アドレス・フィールド463を含むJIタイプの(条件
付き分岐)フォーマット465や、8ビットの命令コー
ド・フィールド467と4ビットの条件ビット番号フィ
ールド468と20ビットの即時分岐(BI)アドレス
・フィールド469を含むBI’タイプの(条件付き分
岐)フォーマット470や、8ビットの命令コード・フ
ィールド471と4ビットのオペランド・レジスタ・フ
ィールド472と20ビットの即時分岐(BI)アドレ
ス・フィールド473を含むBIタイプの(無条件分
岐)フォーマット475や、8ビットの命令コード・フ
ィールド477とそれに続く24ビットの絶対分岐アド
レス(BA)フィールド478を含むBAタイプの(無
条件分岐)フォーマット480がある。
第5図は、本発明の教示を実施した、例えば32ビット
のRISC命令に対するRISC命令処理のデコード・
サイクル中にアドレスを生成するための装置の高水準ブ
ロック図である。詳細に言えば、図のように、処理すべ
き現RISC命令は、32ビット形式で、ビットa0な
いしa31として命令レジスタ200にストアされてい
る。デコード・サイクルの始めに、この命令の命令デコ
ードが、完全デコード回路510と命令事前デコード回
路520への入力として、読取り線505を介して並列
に送られる。組合せ論理回路によって形成される周知の
完全デコード回路510が、この命令を完全にデコード
し、デコードされた命令コードと命令のタイプに基い
て、読取り線515のうちの対応する1本の読取り線に
パルスを供給する。読取り線515は、一連のフリツプ
・フロツプ(1ビット・ラッチ)560のセット入力に
接続されている。各フリツプ・フロツプは、その対応す
るセット入力にパルスが現れた場合に、1の状態にセッ
トされる。詳細に言えば、デコードされた命令が、実際
に分岐する分岐(SBR)命令、すなわち無条件分岐命
令または条件が満足されている条件付き分岐命令である
場合は、フリツプ・フロツプ563がセットされ、デコ
ードされた命令がLOAD命令である場合にはフリツプ
・フロツプ565がセットされ、デコードされた命令が
STORE命令である場合にはフリツプ・フロツプ56
7がセットされる。完全にデコードされ、実行されるR
ISC命令の他のすべてのタイプに適応するための追加
のフリツプ・フロツプ(図示せず)が、フリツプ・フロ
ツプ560内に存在することになる。フリツプ・フロツ
プ560の出力は、周知の制御/命令実行回路(特に図
示せず)に一団となって送られる。さらに、アドレス生
成を必要とする命令タイプに関連する個々のフリツプ・
フロツプの出力が読取り線570を介して送られ、以下
で詳細に説明する別々のイネーブル信号をメモリ・アド
レス・レジスタ550に提供する。現命令が完全に実行
された後に、制御/実行回路は、フリツプ・フロツプ5
60のうちの対応するフリツプ・フロツプを0の状態に
リセットする。
回路510によって実行される完全デコード動作と並行
して、命令事前デコード回路520は、まず、現命令の
命令コードが、例えばLOAD、STOREまたは分岐
タイプの命令など、アドレスの生成を必要とする命令フ
ォーマットの命令コードのいずれかと一致するか否かを
判定する。命令事前デコード回路520は、当業者には
自明の簡単な組合せ論理回路を用いて実施される。この
論理回路を第9A図ないし第9D図に示し、以下で詳細
に論ずる。現命令がアドレスを必要とする可能性のある
ものである場合には、第5図に示した事前デコード回路
520は、アドレス・フォーマット回路530への読取
り線525上に適当な制御信号を発生する。回路530
に、読取り線507を介して命令レジスタ200から現
命令が供給される。回路530は、入力データに対して
複数ビット並列の多重化解除動作及びシフト動作を実行
するための、当技術分野で周知の組合せマルチプレクサ
を含んでいる。この場合、アドレス・フォーマット回路
は、読取り線525上に現れる制御信号に応答して、現
命令からの変位アドレス・フィールドを解析し、そこに
含まれる変位フィールドのビットを、必要な場合には符
号拡張を使用することも含めて適当に位置合せし、その
結果、一般にアドレス生成を必要とするすべての命令タ
イプからの変位アドレス・フィールドが、正しいビット
位置で、読取り線535を介してアドレス加算機構54
0の共通32ビット入力に供給されるようにする。この
加算機構は、RISCプロセッサ内で使用される演算論
理機構の加算パスとは別の簡単な32ビット2進加算機
構として実施される。読取り線535に変位アドレスを
供給するのと並行して、ベース・アドレスが、読取り線
537を介して加算機構540のもう一方の32ビット
入力に供給される。ベース・アドレスは、命令事前デコ
ード回路520による選択に応じて、汎用レジスタか
ら、または命令アドレス・レジスタ(IAR)(RIS
Cプロセッサ内に含まれるが、周知であり、特に図示し
ない)を介して供給される。この選択動作は破線523
によって表されている。加算機構540は、ベース・ア
ドレスと変位アドレスの和を形成し、その結果を、読取
り線545を介してメモリ・アドレス・レジスタ550
のデータ入力に並列に供給する。アドレス・レジスタ5
50は、マスタ部分553とスレーブ部分557を有す
る2サイクル・レジスタとして実施されている。入力ア
ドレス情報は、読取り線545を介してマスタ部分にロ
ードされ、イネーブル信号がスレーブ部分に供給される
場合だけ、マスタ部分からスレーブ部分に転送される。
このイネーブル信号は読取り線570上に現れる。した
がって、完全なデコードの結果、加算機構540によっ
て生成されたアドレスが、アドレスの生成を必要とする
命令用のものであることが判明した場合は、そのアドレ
スがマスタ部分553にロードされてからわずか後に、
適当なイネーブル・パルスが読取り線570上に現れ
る。このイネーブル・パルスは、そのアドレスをスレー
ブ部分557に転送させ、そこから出力読取り線575
上にメモリ・アドレスとして転送させる。逆に、完全な
デコードの結果、現命令がアドレスの生成を必要としな
いものであることが判明した場合には、このようなイネ
ーブル・パルスは読取り線570上に現れない。したが
って、マスタ部分553にロードされたばかりの計算済
みのアドレスは、後続のRISC命令のデコード中に重
ね書きされるだけで、メモリ・アドレス出力読取り線5
75上には現れない。アドレスを生成して、そのアドレ
スが不要な場合にはレジスタ550内でそれを重ね書き
するというこの処理は、当初及び一般にアドレスの生成
が必要であると仮定される後続のRISC命令のそれぞ
れについて繰り返される。計算済みのアドレスを出力読
取り線575に供給することも含めて、回路500内で
行なわれるすべての処理は、有利なことに命令デコード
・サイクル中に行なわれる。
本発明の技法の前述の一般的な説明を念頭に置いて、第
6A図及び第6B図は、2枚合わせて、第4図に示した
フォーマット、すなわちIBM PC/RTコンピュー
タで実行されるRISC命令に特有のフォーマットを有
するRISC命令を処理する際に、デコード・サイクル
中にアドレスを生成するための本発明の方法の流れ図を
示す。第6図は、第6A図と第6B図の正しい位置合せ
を示す図である。流れ図とそれに付随する議論を簡単に
するために、完全デコード回路510とフリツプ・フロ
ツプ560(第5図参照)に関連するステップ、すなわ
ち完全な命令デコード、アドレス・レジスタ・イネーブ
ル信号の生成、及びアドレス・レジスタを介したアドレ
スの選択的転送は、すべて上述した通りであり、本発明
の方法の一部分を形成するが、第6A図及び第6B図と
それに関連する議論では省略する。
図のように、方法600は、命令事前デコード動作60
1及びアドレス・フォーマット動作630と、それに続
くアドレス計算ステップ650及びアドレス・ロード・
ステップ690を含んでいる。方法600による命令処
理が開始すると、まず判断ステップ605に進む。この
判断ステップでは、現命令の命令コード中の第1文字の
内容から、現命令が、アドレスの生成を必要とする可能
性のあるLOAD/STORE命令に関連するフォーマ
ットであるか、それともアドレスの生成を必要とする可
能性のある分岐命令に関連するフォーマットであるかを
決定する。第1文字が値“0”または“8”のいずれか
に等しい場合には、その命令は、アドレスの生成を必要
とする可能性のある分岐命令に関連するフォーマットを
もつ命令である。したがって、経路609を経由して、
判断ステップ610へ、及びステップ645からステッ
プ650へと並行して進む。判断ステップ610では、
命令コード中の第1文字の第1ビットの値に基いて、現
在事前デコードされつつある分岐命令のタイプ、すなわ
ちその命令がBIまたはBI’タイプであるのか、それ
ともJIタイプであるのかを決定する。それと同時に、
命令アドレス・レジスタ(IAR)に現在ストアされて
いる内容が、ステップ650への適当なイネーブル信号
の生成によって、ベース・アドレスとして選択される。
その結果、ステップ645で示すように、ベース・アド
レスがIARから読み取られ、ベース・アドレスとして
経路647を介して加算ステップ650への一方の(ベ
ース)アドレス入力に供給される。
分岐命令のタイプに基いて、JIタイプの分岐命令(ビ
ットa0=“0”の場合)では経路613を経てステッ
プ633に進み、BIまたはBI’タイプの分岐命令
(ビットa0=“1”)では経路611を経てステップ
635に進む。ステップ633を実行すると、アドレス
・フォーマット回路530(第5図参照)を用いて、現
命令からJIアドレス・フィールドを取り出し、正しく
位置合せする。またステップ635(第6A図及び第6
B図参照)を実行すると、アドレス・フォーマット回路
530(第5図参照)を用いて、現命令からBIアドレ
ス・フィールドを取り出し、正しく位置合せする。取り
出され位置合せされたアドレス・フィールドは、次に、
第6A図及び第6B図に示す経路637を経て、加算ス
テップ650の第2の(変位)アドレス入力に変位アド
レスとして供給される。次に、加算ステップ650で、
ベース・アドレスと変位アドレスを加算して、結果のア
ドレスを生成する。この結果のアドレスは、次のステッ
プ690が実行されると、現RISC命令処理のメモリ
・アクセス・サイクルで用いられる適当なアドレス・レ
ジスタにロードされる。ステップ690が実行される
と、この命令について方法600は完了する。
そうではなくて、事前デコードされつつある現命令が、
分岐タイプの命令フォーマットではなく、アドレスの生
成を必要とする可能性のあるLOAD/STORE命令
に関連するフォーマットをもつ場合には、NO経路60
7を経て、ステップ650、判断ステップ620及びス
テップ615に並行して進む。したがって、命令アドレ
ス・レジスタではなく、汎用レジスタRCに現在ストア
されている内容が、ステップ650への適当なイネーブ
ル信号の生成によって、ベース・アドレスとして選択さ
れる。その結果、ステップ615で、ベース・アドレス
がレジスタRCから読み取られ、ベース・アドレスとし
て経路617から加算ステップ650のベース・アドレ
ス入力に供給される。
判断ステップ620では、事前デコードされつつある現
命令の命令コードの第1文字の第1ビットの値に基い
て、この命令がDタイプかそれともDショート・フォー
マットを有するタイプのものか判定する。この第1ビッ
ト(a0)が1に等しい場合、現命令はDタイプ・フォ
ーマットを有する。この場合は、経路621を経てステ
ップ625に進む。ステップ625を実行すると、アド
レス・フォーマット回路530を用いて、事前デコード
されている現命令からI変位アドレス・フィールドを取
り出し、このフィールドの符号を適当なビット位置の数
だけ適当に拡張して、正しく位置合せされた変位アドレ
スを形成する。その結果得られる位置合せ済みの変位ア
ドレスは、経路637を経て、加算ステップ650の変
位アドレス入力に供給される。
そうではなくて、この命令コードの第1ビット(a0)
が0に等しい場合、現命令は、Dショート・タイプのフ
ォーマットを有する。この場合は、経路623を経てス
テップ655に進む。ステップ655を実行すると、ア
ドレス・フォーマット回路530を用いて、事前デコー
ドされつつある現命令からIs変位アドレス・フィール
ドを取り出す。ところが、Dショート・タイプ命令フォ
ーマット用の特定の命令コードに基いて、正しくビット
位置が合わせられた変位アドレスを生成するには、Is
フィールドは、シフトが不要なことも、1ビットまたは
2ビットだけ左シフトする必要があることもある。命令
コードの値とIsアドレス・フィールドの必要なシフト
数の間の具体的な関係は、第7図に示す論理表に記述さ
れている。詳細に言えば、命令コードのビットa0、a
1、a2、a3が16進数の“1”または“4”である
場合には、シフトは不要である。“2”または“5”の
場合は、ビット位置1つだけ左シフトが必要である。
“3”または“7”の場合は、ビット位置2つだけ左シ
フトが必要である。必要なシフト量を素早く決定するた
めに、3つの制御ビットS0、S1、S2が、命令コー
ドのビットa1、a2、a3の特定の論理的な組合せに
基いて組み立てられ、その後テストされる。これらのビ
ットを組み立てるための組合せ論理回路800が第8図
に示されている。図中、ORゲート810、820、8
30は、以下の論理式に従って、それぞれ制御ビットS
0、S1、S2を形成する。
S0=(a1 not*a2 not*a3)+(a1
*a2 not*a3 not) S1=(a1 not*a2*a3 not)+(a1
*a2 not*a3) S2=(a1 not*a2*a3)+(a1*a2*
a3) 詳細に言えば、ステップ655を実行した後に、判断ス
テップ660を実行して、制御ビットS0の値が1であ
るか否かを決定する。この制御ビットが1に等しい場合
は、判断ステップ660から出るYES経路を経てステ
ップ665に進む。ステップ665で実行すると、取り
出されたIsフィールドが、追加的なシフトを行なわず
に、位置合せ済みの変位アドレスとして、経路637を
経て加算ステップ650の変位アドレス入力に供給され
る。そうではなくて、制御ビットS0の値が1でない場
合は、判断ステップ660から出るNO経路を経て、判
断ステップ670に進む。判断ステップ670を実行す
ると、制御ビットS1の値が1であるか否かが判定され
る。この制御ビットが1に等しい場合は、判断ステップ
670から出るYES経路を経て、ステップ675に進
む。ステップ675を実行すると、アドレス・フォーマ
ット回路530(第5図参照)を用いて、取り出された
Isフィールドがビット位置1つだけ左シフトされ、そ
の後、第6A図及び第6B図に示すように、シフトされ
た結果のIsフィールドが、経路637を経て加算ステ
ップ650の変位アドレス入力に供給される。そうでは
なくて、制御ビットS1の値が1でない場合は、判断ス
テップ670から出るNO経路を経て、判断ステップ6
80に進む。判断ステップ680を実行すると、制御ビ
ットS2の値が1であるか否かが判定される。この制御
ビットが1に等しい場合は、判断ステップ680から出
るYES経路を経て、ステップ685に進む。ステップ
685を実行すると、アドレス・フォーマット回路53
0(第5図参照)を用いて、取り出されたIsフィール
ドがビット位置2つだけ左シフトされ、その後、第6A
図及び第6B図に示すように、シフトされた結果のIs
フィールドが、経路637を経て、加算ステップ650
の変位アドレス入力に供給される。制御ビットS2の値
が1でない場合は、判断ステップ680から出るNO経
路を経てステップ665に進む。ステップ665では、
取り出されたIsフィールドが、ビット・シフトを行な
わずに、位置合せ済みの変位アドレスとして、加算ステ
ップ650に供給される。図示及び理解を容易にするた
め、判断ステップ660、670及び680は、方法6
00内で順次実行されるものとて示してあるが、これら
の判断ステップは、実際には、第9A図ないし第9D図
に詳細に示すハードウェア内で、同時に実行することが
好ましい。
第9A図ないし第9D図は、4枚合わせて、第4図に示
したRISC命令フォーマットの処理に関して使用され
る、本発明、特に第6A図及び第6B図に示した方法を
実施した、第5図に示した本発明の装置の詳細なブロッ
ク図である。第9図は、第9A図ないし第9D図の正し
い位置合せを示す図である。図示しやすくするため、一
部の論理ゲート、例えばゲート968及び982は、複
数ビット例えば32ビットのデータに作用する1個のゲ
ートとして示してあるが、実際には、当業者には自明な
ように、これらのゲートは複数の物理的ゲート回路を用
いて実施される。
図のように、命令事前デコード回路520は、命令コー
ド・ビットa0、a1、a2、a3とそれらの真の補数
(a0 notないしa3 not)に応答して、現命
令のフォーマットを指定する種々の制御信号を発生す
る、論理ゲート903、905、907、909、91
2、915から形成されている。詳細に言えば、ゲート
903は、現命令がBIまたはBI’フォーマットを有
する場合に、その出力に“1”レベルの信号を発生し、
ゲート905は、JIタイプのフォーマットの場合に、
“1”レベルの信号を発生する。ゲート909は、現命
令がLOAD/STORE用のフォーマットを有する場
合に、アドレスの生成を必要とするか否かに関わらず、
その出力に“1”レベルを発生する。ゲート912は現
命令がDタイプ・フォーマットである場合に、ゲート9
15は現命令がDショート・タイプ・フォーマットであ
る場合に、それぞれの出力に“1”レべルを発生する。
アドレス・フォーマット回路530は、ゲート回路93
0、レジスタ940、組合せマルチプレクサ960、及
びゲート965、968を含む。ゲート回路930は全
体として、前述の制御ビットS0、S1及びS2を発生
する。これらの制御ビットと、事前デコード・ゲート9
03、905、912の出力は、共に組合せマルチプレ
クサ960への個別のイネーブル(E)信号として用い
られて、特定の複数ビット符号拡張またはシフト動作を
呼び出す。ゲート903、905、912、915によ
って発生された信号は、全体でレジスタ940を形成す
るレジスタ942、944、946、948のそれぞれ
にイネーブル信号として供給される。現命令のフォーマ
ットが、これらのゲートのいずれかによって事前デコー
ドされたものと一致する場合、それによって生成された
イネーブル信号に応答して、それぞれレジスタ942、
944、946または948に、現命令に含まれるI
s、JI、BIまたはIフィールドが並列にロードされ
る。これらのレジスタの出力は、ORゲート952を介
して、組合せマルチプレクサ960にデータ入力として
並列に供給される。組合せマルチプレクサ960に供給
される複数のイネーブル信号のうちの特定の1つによっ
て指定される、現命令のタイプに基づいて、マルチプレ
クサ960は、特定の複数ビットの符号拡張またはシフ
ト動作を始め、その結果得られる位置合せ済みの変位ア
ドレス・フィールドを、ANDゲート968の32ビッ
ト入力の1つに供給する。これと並行して、組合せマル
チプレクサに供給されるイネーブル信号も、入力として
ORゲート965に供給される。ORゲート965は、
ANDゲート968への第2の入力としてイネーブル信
号を発生し、マルチプレクサ960によって生成された
データを、アドレス加算機構540の32ビット変位ア
ドレス入力にゲートする。
ベース・アドレスに関しては、このアドレスは2つの供
給源のうちの1つから発生する。前述のように、ベース
・アドレスは、図にIAR975として示されている命
令アドレス・レジスタ(IAR)、またはGPRアレイ
210に含まれる汎用レジスタRCからロードすること
ができる。ベース・アドレスを得るためにどのレジスタ
にアクセスするかの選択は、上述のように、現命令が、
分岐命令に関連するフォーマットを有する(したがっ
て、分岐命令である可能性がある)か、それともLOA
D/STORE命令に関連するフォーマットを有する
(したがって、LOAD/STORE命令である可能性
がある)かによって決まる。現命令が分岐命令である可
能性のある場合には、ゲート907は、その出力に
“1”レベルを発生する。この出力は、例えば個別のA
NDゲート(そのうちの1ゲートだけを示す)から形成
されるマルチプレクサ978の制御入力に供給されたと
き、IAR975に含まれるアドレスを、アドレス加算
機構540のベース・アドレス入力へゲートする。そう
ではなくて、現命令がLOAD/STOREタイプの命
令でる可能性がある場合には、ゲート907ではなく、
ゲート909が、その出力に“1”レベルを発生する。
この出力は、ANDゲート982の制御入力に供給され
たとき、GPRアレイ210内の汎用レジスタRCに含
まれるアドレスを、アドレス加算機構540のベース・
アドレス入力へゲートする。GPRアレイ210内の汎
用レジスタRB及びRCに含まれるベース・アドレス及
びオペランドも、AIレジスタ988に並列に供給さ
れ、後の処理のために、BIレジスタ986及びフォー
マッタ992を直列に通過して、RISCプロセッサ内
の演算論理機構に供給される。ただし、この後続処理
は、加算機構540によって生成されるアドレスとは独
立である。アドレス加算機構540によって生成された
32ビット2進出力は、入力としてアドレス・レジスタ
550に供給される。このレジスタは、具体的にはアド
レス生成レジスタ兼分岐アドレス・レジスタ(AGR−
BAR)550として図示されており、それによって、
このレジスタが、ロード/ストア・アドレスまたは分岐
アドレスのいずれかを保持できることを示している。
アドレス使用イネーブル回路985は、完全デコード回
路510、イネーブル・フリツプ・フロツプ560(第
5図に詳細に示す)及び関連する周知の制御回路を含
み、アドレス・レジスタ550への適当なイネーブル信
号を発生する。これらのイネーブル信号は、第5図に関
して上述したように、レジスタ550にロードされたア
ドレスを使用するか、すなわち第9A図ないし第9D図
に示すようにこれをメモリ・アドレス出力読取り線57
5に伝えるか、それともこれを使用しないかを示す。使
用しない場合は、このアドレスはレジスタ550内で重
ね書きされるだけである。
事前デコード、具体的にはゲート909によって、現命
令が、アドレス生成の必要の有無には無関係に、LOA
D/STORE命令である可能性があると判明するとす
ぐに、GPRアレイのチップ選択(CS)入力がイネー
ブルされ、その結果、ベース・アドレスが、即座に汎用
レジスタRCからアクセス可能になり、そこからアドレ
ス加算機構540及びALUへ転送可能になる。4つの
命令コード・ビットa12ないしa15は、例えばGP
Rアレイ210内でベース・アドレス・レジスタRCと
して用いられる、特定の汎用レジスタを選択するために
使用される。
RISC命令フォーマットの特定のセットの処理、すな
わちIBM PC/RTコンピュータ内で行なわれる処
理に関して本発明の技法を具体的に示し説明してきた
が、本発明が、他のRISC命令フォーマットのセット
の処理に関しても容易に利用できることは、当業者には
すぐに明白に理解されよう。具体的に言うと、組合せマ
ルチプレクサを含む命令事前デコード機構及びアドレス
・フォーマット回路用の組合せ論理回路は、この論理回
路で新しいRISC命令のセットに関連するフォーマッ
トが処理できるように、適当に変更する必要がある。こ
れらの変更は当業者にはすぐに明白であるが、それによ
り、事前デコード回路内の論理回路が、当初アドレス生
成を必要とすると思われた(すなわち、その可能性があ
る)新しい命令のフォーマットに関連する命令コードを
正しく認識し、つぎにそれらの各命令からの変位アドレ
ス・フィールドを正しく解析し、適当なベース・アドレ
スを選択し、獲得することができるようになる。また、
これらの変更によって、アドレス・フォーマット回路
が、変位アドレス・フィールドを正しく位置合せし、必
要なら適当なビット数だけ符号拡張を行なうことが可能
になる。このようにアドレス・フォーマット回路を変更
すると、変位アドレスのすべてが同様に、それが新しい
セットのRISC命令内のどこに位置するかには無関係
に、正しいビット位置でアドレス加算機構の共通変位ア
ドレス入力に供給されることが保証される。
F.発明の効果 本発明によれば、比較的簡単で実施しやすい技術でもあ
って、RISC命令のパイプライン式処理中に発生する
ウェイト・ステートの数を減少させ、プロセッサの速度
を増大させることが可能になる。
【図面の簡単な説明】
第1図は、その処理の一環としてアドレスの生成を必要
とする代表的なRISC命令を示す図である。 第2図は、当技術分野で、アドレスの生成を必要とする
RISC命令、特にSTORE命令の場合に発生する、
代表的な複数サイクル処理を示す図である。 第3A図は、当技術分野で、第2の命令がその処理のた
めに第1の命令によって生成される結果を必要とする、
例示的な2つの連続するRISC命令を処理する場合に
発生する、パイプライン式RISC命令処理に関連する
代表的な複数サイクルのタイミングを図式的に示す図で
ある。 第3B図は、第3A図に示したパイプライン式命令処理
と共に使用される、従来技術のレジスタ・バイパス動作
を図式的に示す図である。 第4図は、第4A図と第4B図の位置関係を示す図であ
る。第4A図及び第4B図は、アドレスの生成を必要と
し、当技術分野で既知の例示的なRISCプロセッサ内
で実行される共通命令セット内に存在する、RISC命
令の様々なフォーマットを示す図である。 第5図は、本発明の教示を実施した、RISC命令処理
のデコード・サイクル中にアドレスを生成するための装
置の高水準ブロック図である。 第6図は、第6A図と第6B図の正しい位置合せを示す
図である。 第6A図及び第6B図は、2図合わせて、第4図に示し
た例示的フォーマットを有するRISC命令を処理する
際にデコード・サイクル中にアドレスを生成するための
本発明の方法の流れ図を示す図である。 第7図は、実際の命令コードの値が与えられているもの
として、第4図に示したDショート命令フォーマットで
発生するIsフイールドを位置合せするのに必要なシフ
トの数を指定する論理表である。 第8図は、第6A図及び第6B図に示した流れ図で用い
られるシフト・ビットS0、S1及びS2を生成するた
めに第7図に示した表を実施するのに使用できる、組合
せ論理回路のブロック図である。 第9図は、第9A図ないし第9D図の正しい位置合せを
示す図である。 第9A図ないし第9D図は、4図合わせて、第4図に示
した例示的RISC命令フォーマットの処理と共に使用
するために、本発明、特に第6A図及び第6B図に示し
た方法を実施した、第5図に示した本発明の装置の詳細
なブロック図である。 200‥‥命令レジスタ、210‥‥汎用レジスタ(G
PR)アレイ、260‥‥アドレス・レジスタ、280
‥‥メモリ、510‥‥完全デコード回路、520‥‥
命令事前デコード回路、530‥‥アドレス・フォーマ
ット回路、540‥‥アドレス加算機構、550‥‥メ
モリ・アドレス・レジスタ、960‥‥組合せマルチプ
レクサ。
フロントページの続き (72)発明者 リチヤード・エドワード・マテイツク アメリカ合衆国ニユーヨーク州ピークスキ ル、レイクビユー・アベニユー14番地 (56)参考文献 特開 昭62−224828(JP,A) 特開 昭63−113634(JP,A)

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】命令コード・フィールドおよびアドレス・
    フィールドを有する現命令をストアするための命令レジ
    スタ手段と、 前記命令レジスタ手段に接続され、前記命令コード・フ
    ィールドに応答して前記命令をデコードし、この命令が
    アドレス生成を必要とする命令である場合にイネーブル
    信号を出す命令デコード手段と、 前記命令レジスタ手段に接続され、前記命令デコード手
    段によるデコード・サイクル中に該命令コードの特定ビ
    ットを調べることによりメモリ・アドレスを必要とする
    可能性のある命令のタイプを判定し、その結果を示す制
    御信号を発生する命令事前デコード手段と、 前記現命令レジスタに接続され、前記制御信号に応答し
    て、現命令から変位アドレスを取り出し、位置合わせ済
    みの変位アドレスを生成するアドレス・フォーマット手
    段と、 現命令用のベース・アドレスと前記位置合わせ済みの変
    位アドレスとを加算して計算済みのアドレスを形成する
    手段と、 前記イネーブル信号に応答して、前記計算済みのアドレ
    スを、前記デコード・サイクル内に現命令用のメモリ・
    アドレスとして出力するアドレス・レジスタ手段と、 を備え、命令のデコード・サイクル内にその命令が必要
    とするメモリ・アドレスを生成するようにしたデジタル
    ・コンピュータ。
  2. 【請求項2】前記命令事前デコード手段が、現命令用の
    ベース・アドレスを提供するためのアドレス供給源を選
    択する選択信号を出すことを特徴とする請求項1に記載
    のデジタル・コンピュータ。
  3. 【請求項3】前記アドレス供給源が汎用レジスタと命令
    アドレス・レジスタとを含み、現命令がロードまたはス
    トア・タイプの命令である可能性のあるときは汎用レジ
    スタを選択し、分岐タイプの命令である可能性のあると
    きは命令アドレス・レジスタを選択する請求項2に記載
    のデジタル・コンピュータ。
  4. 【請求項4】縮小命令セット・コンピュータ(RIS
    C)であって、 命令コード・フィールドとアドレス・フィールドとを有
    する現RISC命令を処理のためにストアする命令レジ
    スタ手段と、 前記命令レジスタ手段に接続され、デコード・サイクル
    中に現RISC命令内の命令コード・フィールドに応答
    して、前記RISC命令をデコードし、前記現RISC
    命令がアドレス生成を必要とする命令である場合には第
    1のイネーブル信号を出す命令デコード手段と、 前記命令レジスタ手段に接続され、デコード・サイクル
    中に現RISC命令内の命令コードに応答して、現RI
    SC命令から変位アドレスを取り出し、変位アドレスの
    ビットを所定の量だけ位置合わせして、位置合わせ済み
    の変位アドレスを形成する命令事前デコード兼アドレス
    ・フォーマット手段と、 現RISC命令用のベース・アドレスと前記位置合わせ
    済みの変位アドレスとを加算して、計算済みのアドレス
    を形成する手段と、 前記第1のイネーブル信号に応答して、前記計算済みの
    アドレスをデコード・サイクル中に現RISC命令用の
    メモリ・アドレスとして出力するアドレス・レジスタ手
    段と、 を備える、RISC命令処理のデコード・サイクル中に
    現RISC命令用のメモリ・アドレスを生成するように
    した縮小命令セット・コンピュータ。
  5. 【請求項5】前記命令事前デコード兼アドレス・フォー
    マット手段が、前記命令コードに応答して選択信号を出
    す手段を有し、前記縮小命令セット・コンピュータは、
    前記選択信号に応答して現命令用のベース・アドレスを
    提供するアドレス供給源を選択する手段を備える請求項
    4に記載の縮小命令セット・コンピュータ。
  6. 【請求項6】前記ベース・アドレス供給源が汎用レジス
    タと命令アドレス・レジスタとを含み、前記選択手段
    が、前記選択信号に応答して、現命令がロードまたはス
    トア・タイプの命令である可能性のあるときは汎用レジ
    スタを選択し、現命令が分岐タイプの命令である可能性
    のあるときは命令アドレス・レジスタを選択して、前記
    ベース・アドレスを発生するようにした請求項5に記載
    の縮小命令セット・コンピュータ。
  7. 【請求項7】前記命令事前デコード兼アドレス・フォー
    マット手段が、 前記命令レジスタ手段に接続され、デコード・サイクル
    中に命令コードに応答して、前記選択信号、および現命
    令用のフォーマットに基づく第2のイネーブル信号を生
    成する命令事前デコード手段と、 前記命令レジスタに接続され、前記第2のイネーブル信
    号に応答して、現命令から変位アドレスを取り出し、該
    変位アドレスのビットを前記第2イネーブル信号によっ
    て決められる量だけ位置合わせして位置合わせ済みの変
    位アドレスを生成するアドレス・フォーマット手段と、 を備える請求項4に記載の縮小命令セット・コンピュー
    タ。
  8. 【請求項8】命令コード・フィールドおよびアドレス・
    フィールドを有する現命令を命令レジスタにストアする
    ステップと、 前記命令コード・フィールドに応答して、前記命令コー
    ドをデコードし、この命令がアドレス生成を必要とする
    命令である場合にイネーブル信号を出すステップと、 前記命令デコード手段によるデコード・サイクル中に前
    記命令コードに応答して、現命令がメモリ・アドレスを
    必要とする可能性のあるものであるか否かを判定し可能
    性のあるとき、制御信号を発生するステップと、 前記制御信号に応答して、現命令から変位アドレスを取
    り出し、位置合わせ済みの変位アドレスを生成するステ
    ップと、 現命令用のベース・アドレスと前記位置合わせ済みの変
    位アドレスとを加算して計算済みのアドレスを形成する
    ステップと、 前記イネーブル信号に応答して、前記計算済みのアドレ
    スを、前記デコード・サイクル内に現命令用のメモリ・
    アドレスとして出力するステップと、 を含み、命令のデコード・サイクル内にその命令が必要
    とするメモリ・アドレスを生成する方法。
  9. 【請求項9】縮小命令セット・コンピュータ(RIS
    C)でにおいて、 命令コード・フィールドとアドレス・フィールドとを有
    する現RISC命令を処理のために命令レジスタにスト
    アするステップと、 デコード・サイクル中に現RISC命令内の命令コード
    ・フィールドに応答して、前記RISC命令をデコード
    し、前記現RISC命令がアドレス生成を必要とする命
    令である場合には第1のイネーブル信号を出すステップ
    と、 デコード・サイクル中に現RISC命令内の命令コード
    に応答して、現RISC命令から変位アドレスを取り出
    し、変位アドレスのビットを所定の量だけ位置合わせし
    て、位置合わせ済みの変位アドレスを形成するステップ
    と、 現RISC命令用のベース・アドレスと前記位置合わせ
    済みの変位アドレスとを加算して、計算済みのアドレス
    を形成するステップと、 前記第1のイネーブル信号に応答して、前記計算済みの
    アドレスをデコード・サイクル中に現RISC命令用の
    メモリ・アドレスとして出力するステップと、 を含み、RISC命令処理のデコード・サイクル中に現
    RISC命令用のメモリ・アドレスを生成する方法。
JP2323416A 1990-01-11 1990-11-28 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法 Expired - Lifetime JPH063583B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US46364190A 1990-01-11 1990-01-11
US463641 1990-01-11

Publications (2)

Publication Number Publication Date
JPH03216735A JPH03216735A (ja) 1991-09-24
JPH063583B2 true JPH063583B2 (ja) 1994-01-12

Family

ID=23840814

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2323416A Expired - Lifetime JPH063583B2 (ja) 1990-01-11 1990-11-28 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法

Country Status (2)

Country Link
EP (1) EP0440908A3 (ja)
JP (1) JPH063583B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2984463B2 (ja) 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
EP0636256B1 (en) * 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
US5754819A (en) * 1994-07-28 1998-05-19 Sun Microsystems, Inc. Low-latency memory indexing method and structure
US9875107B2 (en) 2015-01-19 2018-01-23 International Business Machines Corporation Accelerated execution of execute instruction target

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59174948A (ja) * 1983-03-25 1984-10-03 Toshiba Corp 情報処理装置
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor

Also Published As

Publication number Publication date
EP0440908A3 (en) 1992-11-19
EP0440908A2 (en) 1991-08-14
JPH03216735A (ja) 1991-09-24

Similar Documents

Publication Publication Date Title
US5649145A (en) Data processor processing a jump instruction
US6256726B1 (en) Data processor for the parallel processing of a plurality of instructions
US5337415A (en) Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5163139A (en) Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
EP0427245B1 (en) Data processor capable of simultaneously executing two instructions
US5398321A (en) Microcode generation for a scalable compound instruction set machine
US8555041B2 (en) Method for performing a return operation in parallel with setting status flags based on a return value register test
JP5565228B2 (ja) プロセッサ
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
JPH1165839A (ja) プロセッサの命令制御機構
JP3736866B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット
US6115730A (en) Reloadable floating point unit
US6065110A (en) Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue
US7134000B2 (en) Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
JPH063583B2 (ja) 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法
US5363490A (en) Apparatus for and method of conditionally aborting an instruction within a pipelined architecture
US5644741A (en) Processor with single clock decode architecture employing single microROM
JPH06214785A (ja) マイクロプロセッサ
JPH06131180A (ja) 命令処理方式および命令処理装置
WO1998006039A1 (en) Disambiguation memory circuit and operating method