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

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

Info

Publication number
JPH03216735A
JPH03216735A JP2323416A JP32341690A JPH03216735A JP H03216735 A JPH03216735 A JP H03216735A JP 2323416 A JP2323416 A JP 2323416A JP 32341690 A JP32341690 A JP 32341690A JP H03216735 A JPH03216735 A JP H03216735A
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.)
Granted
Application number
JP2323416A
Other languages
English (en)
Other versions
JPH063583B2 (ja
Inventor
Chiao-Mei Chuang
チヤオ・メイ・チユアン
Daniel Tajen Ling
ダニエル・タージエン・リン
Richard Edward Matick
リチヤード・エドワード・マテイツク
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 or 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、縮小命令セット・コンピュータ(RISC)
のプロセッサ内で行なわれるパイプライン式命令処理で
使用するのに特に適した、RISC命令処理のデコード
・サイクル中にアドレスを生成することにより、これま
ではこの処理中に発生するアドレス生成サイクルによっ
て頻繁に引き起こされていたウェイト・ステートをほぼ
除去するだめの装置及びそれに付随する方法に関するも
のである。
B.従来の技術 歴史的に言えば、ほとんどのコンピュータが複合命令を
利用してきた。多くの単一命令、特にメインフレーム・
コンピュータで使用される単一命令は、通常1つだけで
複数のメモリ・アクセスを生じ、同時に2個または3個
など複数のデータに作用した。複合命令の使用の基礎と
なる主な理由は、コア・メモリでは過去のあるときには
1ビット当り1.5ドルにも達したように、歴史的に大
容量メモリの価格が高かったことと、このメモリへのア
クセス速度が相対的に遅かったことである。
その結果、過去にはますますコンパクトな機械コードを
生成することが何にもまして求められていた。
この必要を満たすため、ますます複雑な命令を含む命令
セットを用いるコンピュータ・プロセッサが発展してき
た。このようなセット中の互いに対応する命令が、ます
ます多くの異なる動作を同時に呼び出すことができるよ
うになった。このような命令の使用によって、プログラ
ムを格納のために必要なメモリの量が大きく減少し、そ
れによって、そのプログラムを実行するのに必要なコン
ピュータ・システムのコストが大幅に低下した。
さらに、同時に多数のデータを得るために1個の命令で
ますます多数のメモリ・アクセスを呼び出すことによっ
て、そうしなければ発生していたはずの、連続した命令
(マシン)サイクルの間に1回ずつメモリ・アクセスを
行なって前記のデータをそれぞれ別々に得る必要がずっ
と減り、それによってプログラムの実行速度が明らかに
増大した。
このような複合命令を用いるコンピュータ・プロセッサ
は、いわゆるrcIscJ  (複合命令セット・コン
ピュータ)として知られるようになった。
個々の命令をさらに精巧にするには、ますます複雑な多
層式の命令デコードを用いる必要があった。一見したと
ころ、各命令が、その精巧さがどの程度であれ、メモリ
・アクセスに必要な時間よりも短い時間で完全にデコー
ドできる限り(初期のコンピュータ技術では実際にそう
だった)、CISOプロセッサで複合命令を用いること
による性能の損失は、仮にあったとしてもわずかである
不幸なことに、その後コンピュータ技術が発展するにつ
れて、コンパイルの性質により上記のような結果にはな
らなかった。さらに、アクセス時間を大幅に減少させる
メモリ技術が当技術分野で出現したため、この損失はま
すます問題になってきた。
詳細に言えば、過去においても現在においても、コンパ
イラは、相対的に高水準のプログラムを、それに対応す
る、後でコンピュータ上で実行すべき命令(低水準の機
械コード)のシーケンスに変換するために使用されてき
た。実行速度を改善するためには、コンパイルされた機
械コードはできる限り効率的でなければならない。すな
わち、無駄な動作を呼び出してはならない。無駄な動作
は、処理時間またはコンピュータ資源を不必要に消費す
る。不幸なことに、多くの場合、CISC機械コードを
生成するコンパイラは、高水準プログラムの所与のステ
ートメントに対する効率的なCISC命令のシーケンス
を生成しないことがしばしばである。これはCISC命
令セットの性質の結果として発生する。詳細に言えば、
多くのタイプのアルゴリズムでは、CISCプロセッサ
内で使用される命令処理パイプラインを活用する、効率
的なCISC命令のシーケンスは不可能である。
これは、C工SC命令の相対的に粒度が粗いという性質
の直接の結果である。基本的に、CISC命令はそれぞ
れ、2個以上のより単純なRISC様の命令を組み合わ
せたものである。しかし、このより単純な命令のうち特
定の組合せしか、実際にCISCプロセッサのアーキテ
クチャによってサポートされない。したがって、より単
純なRISC様の命令の最適の組合せは、たとえ完璧な
コンパイラを用いたとしても、すべての場合に可能なわ
けではない。しかし、RISC用の命令セットのような
、粒度のより細かい命令セットを用いる場合、その命令
セット用の機械コードを発生するコンパイラは、ジョブ
がより容易になり、したがって、CISC機械コードを
生成するコンパイラよりも、その命令セットを実行する
プロセッサ内で使用される特定の命令処理パイプライン
に合わせた最適な動作のシーケンスを生成する機会が多
くなる。
さらに、ますます大きな記憶容量をずっと低いビット単
価(現在ではしばしば100分の1セントまたは100
0分の1セント単位で測定される)で提供する、ますま
す高速のメモリ、例えば半導体のランダム・アクセス・
メモリ(RAM)などが、過去10年の間に容易に入手
可能になってきた。現在、メモリ・アクセス時間はかな
り減少して、しばしば1マシン・サイクノレで1回のア
クセスが実行可能な状態にまで達している。したがって
、多層式命令デコードに費やされる処理時間は、完了ま
でに数マシン・サイクルを要する可能性があるが、これ
が現在、命令処理速度に対する重大な制限になっている
マイクロプロセッサ命令セットの開発と引き続く発展は
、メインフレーム・コンピュータのそれと歴史的に並行
しているが、複合命令セットも、それを使用する理由、
すなわちメモリ空間の保存とコストが相当以前に消滅し
たにも関わらず、市販の大多数のマイクロプロセッサで
現在も使用されている。したがって、マイクロプロセッ
サ・システムは、精巧な多層式命令デコードを用いるこ
とによって引き起こされる、メインフレーム・コンピュ
ータで見られるのと同様の処理速度の制限を受けている
。コンピュータ支援設計/エンジニアリング・タスクや
複雑な数値解析やグラフィック処理など、マイクロコン
ピュータを用いた精巧なリアルタイム・アプリケーショ
ン処理の増加に伴なって、マイクロコンピュータに基く
システムの処理速度を上げることがますます強く求めれ
らてきている。
このことを念頭に置いたうえで、プロセッサの命令セッ
トを大幅に単純化することによって処理速度が大幅に向
上することが、当技術分野で認識された。したがって、
いわゆる「縮小命令セット・コンピュータJ  (RI
SG)が当技術分野で開発されてきた。RI SCプロ
セッサは、CISCプロセッサで使用された命令数より
も劇的に少ない数の命令を使用する。CISCプロセッ
サが200個以上の異なる命令を使用し、その多くが複
数の処理動作を呼び出すのに対して、RISCプロセッ
サは100個以下の別々の命令しか含まず、そのそれぞ
れがただ1つの動作を呼び出す。RISCプロセッサ用
に書かれたプログラムの機械コードは通常、CISCプ
ロセッサ用に書かれた同じプログラムよりもわずかに多
い命令を必要とし、したがってわずかに多いメモリ空間
を必要とする。
しかし、利用可能なメモリ空間がコンピュータ設計に加
える制約は、従来よりもはるかに少なくなっている。特
に、大容量で相対的に安価なメモリ、例えば現在入手可
能な費用効果の高い256KビットまたはIMビットの
RAM回路を使用して組み立てられたメモリをマイクロ
コンピュータ・システムに組み込むことによって、大量
の安価なメモリ位置がプログラム格納用に利用可能にな
っている。したがって、メモリ位置を保存するためにプ
ログラム・サイズを縮小する必要は現在、仮に存在する
としてもごくわずかである。さらに、効率的な機械コー
ドを生成する、高速で相対的に小さな最適化コンパイラ
は、CISC命令用よりもRISC命令用の方が容易に
作成できる。さらに、RISC命令はCISC命令より
もはるかにデコードが容易であり、多層式デコードを特
に必要とはしない。CISG命令は、完全にデコードす
るのに複数の、恐らくは3以上の連続するマシン・サイ
クルが必要なのに対して、RISG命令セットの実際上
すべての命令は、ただ1つのマシン・サイクルでデコー
ド可能なはずである。したがって、同等のクロック速度
のRISCプロセッサとCISCプロセッサを用いて同
一の機能をもたらすプログラムを実行する場合、命令デ
コードでマシン・サイクルが節約されるため、RISC
プロセッサはCISCプロセッサよりもしばしばはるか
に高速となり、したがって性能も大幅に上回る。したが
って、余分なメモリ・サイズやコストなど、RISCプ
ログラムのサイズがCISCの同等品よりも増加したた
めに生じるどんな不利益よりも、RISCプロセッサの
プログラム処理速度が同等のCISCプロセッサよりも
大きく増大することの利益のほうが、明らかに大きくな
る傾向がある。
RISCプロセッサの魅力はそれとして、RISCプロ
セッサの速度を制限する不利な欠点も存在する。具体的
に言うと、RISGプロセッサはパイプライン式命令処
理を用いて、複数の命令をパイプライン内で互いにずれ
て重なりあった状態で同時に処理する。パイプラインは
、命令デコード、アドレス生成、メモリ・アクセス及び
レジスタ・ロード用の別々のステージを含んでいる。異
なる命令が、パイプライン内の異なるステージを同時に
占める。とのRISC命令もパイプラインを完全に伝播
して完全に処理されるのに複数のマシン・サイクルを必
要とするが、新しい命令は理想的には、平均して、連続
するマシン・サイクルごとに次々にパイプラインに入る
べきである。しかし、あるRISC命令が処理できる前
に、この命令がその直前の命令の結果を必要とすること
がある。ところがパイプライン式処理の性質のせいで、
前のRISC命令が完全に処理されておらず、現命令が
デコードする準備ができている時にその結果が利用でき
ないことがある。したがって、前の命令の結果が利用で
きるようになるまで、現命令の処理、特にその命令デコ
ードを、1マシン・サイクル、または多くの場合には複
数のマシン・サイクルだけ(相当するウェイト・ステー
トを挿入することによって)遅らせなければならない。
前述のように、新しいRISC命令は理想的には、平均
して、RISCプロセッサの連続する各マシン・サイク
ルの間に次々に処理すべきであるので、たとえ1サイク
ルの遅延(1ウェイト・ステート)であっても、それが
RISCプロセッサ内で充分頚繁に発生するならば、そ
のプロセッサのスループットが大幅に低下する可能性が
ある。詳細に言えば、このような遅延を必要とするRI
SC命令は、条件付き分岐及び無条件分岐の分岐命令を
含むものである。これらの分岐命令は、平均して、プロ
セッサ上で実行される命令6個ごとに1個ある。したが
って、これらのウェイト・ステート遅延は、実際にプロ
グラム中で充分頻繁に発生して、その処理速度に悪影響
を及ぼす。
C.発明が解決しようとする課題 したがって、当技術分野では、RISCプロセッサでの
使用に特に適した、RISC命令のパイプライン式処理
中に発生するウェイト・ステートの数を減少することに
よって、プロセッサの速度を増大させる技術が求められ
ている。さらに、この技術は、比較的簡単で実施しゃす
いものであるべきである。
D.課題を解決するための手段 RISC命令のパイプライン式処理中に非常に頚繁に発
生するウェイト・ステートの1つ、すなわち別個のアド
レス生成サイクル中にアドレスを生成することに関連す
るウェイト・ステートをなくして、RISCの処理速度
を大幅に増大させることができることが判明した。
したがって、当技術に固有であり、特にこの1つのウェ
イト・ステートの発生に帰因する欠陥は、本発明の教示
によれば、別個のアドレス生成サイクルではなく、パイ
プライン式RISC命令処理内で発生するデコード・サ
イクル中にアドレスを生成することによって、ほとんど
除去される。
本発明の教示に従って命令デコード・サイクル中にメモ
リ・アドレスを提供するには、1つのRISC命令の完
全なデコードと事前デコードの双方を並行して行なう。
事前デコードは、命令から変位フィールドを取り出し、
現RISC命令用の適当なベース・アドレスを選択し、
フォーマット動作と連動して変位フィールドを適当に位
置合せする′ために用いる。これらはすべて現デコード
・サイクル内で行なわれる。次に、ベース・アドレス及
び位置合せ済みの変位アドレスが、アドレス加算機構の
別々の入力に供給される。完全な命令デコードの結果、
現RISC命令がアドレスの計算を必要とすることが確
認された場合は、加算機構の出力が、デコード・サイク
ル中にメモリ・アドレスとしてアドレス・レジスタを介
して出力に伝播される。そうでない場合は、このデコー
ド・サイクル中に加算機構によって生成された計算済み
のアドレスは、単に無視されて、後続のRISC命令の
デコード・サイクル中に重ね書きされる。
本発明の詳細な教示によれば、本発明の技法では、まず
現RISC命令が当初はメモリ・アドレスを必要とする
(可能性がある)と思われる(例えば、LOADまたは
STORE命令または分岐命令)ならば、現命令を完全
にデコードした際に、実際にそのようなアドレスを生成
する必要があるか否かに関わらず、現RISG命令用の
アドレスを生成する必要があると仮定する。この仮定の
下で、事前デコード回路が、現命令の命令コードを事前
デコードして、まずそこから変位アドレス・フィールド
を取り出し、次に適当にビット位置を合わせて変位アド
レス・フィールドをフォーマットシ、最後に位置合せ済
みの変位アドレス・フィールドを2進加算機構の対応す
る入力に送って、アドレスを生成する。これと並行して
、事前デコード回路は、現RISC命令用のベース・ア
ドレスの適当な供給源を、例えばメモリ・アドレスの生
成を必要とする分岐タイプのRISC命令の場合には命
令アドレス・レジスタ(IAR)の内容を、またメモリ
・アドレスの生成を必要とするLOADまたはSTOR
E (LOAD/STORE)タイプのRISC命令の
場合にはGPRアレイ内の汎用レジスタRC(正確なレ
ジスタは現命令自体に含まれるフィールドで指定される
)を選択する。
ベース・アドレス・フィールド及び変位アドレス・フィ
ールドの両方を並行して処理し、2進加算機構の当該の
複数ビット入力に供給するのが好都合である。現RIS
C命令がアドレスの生成を必要とするものである場合に
は、その命令が完全にデコードされた後に、2進加算機
構によって生成されたアドレスが単にアドレス・レジス
タにラッチされ、それを介して出力に供給される。一方
、完全な命令デコードの結果、現RISC命令がアドレ
スの生成を必要としないものであると判明した場合には
、2進加算機構によって生成されたアドレスは、次のサ
イクルの間には使用されず、後続のRI SC命令の命
令デコード・サイクル中に単に重ね書きされる。本発明
では並行処理が行なわれるため、アドレスを生成するの
に必要なすべての動作が、有利なことにただ1つのマシ
ン・サイクルで発生する。このようにして、別個のアド
レス生成サイクルも、それに関連するウェイト・ステー
トも不要となり、有利なことにRISCコンピュータの
処理速度が大幅に増大する。
さらに、本発明の特徴によれば、演算論理機構(ALU
)の加算パスではなくて別個の2進加算機構を用いてア
ドレスが計算されるので、これらのアドレスが、ALU
を用いる場合よりも短い時間で、特にパス遅延がより少
ない吠態で計算できる。
E.実施例 以下の説明を読み終えたならば、本発明は縮小命令セッ
ト・コンピュータ(RISC)プロセッサ内での使用を
対象としているにも関わらず、本発明の技法が、単純で
あれ複雑であれ、他の多くのプロセッサの命令処理−に
も同様に使用できることを、当業者は明らかに理解され
るであろう。したがって、以下では、RISCプロセッ
サ内での使用に関して本発明の技法を論ずることにする
さらに、理解を容易にするため、特定の例示的RISC
ブCl セ−) ?、すなわちIBM Pc/RTコン
ピュータ内で使用されているRISCプロセッサでの使
用に関して本発明を論ずる。(″IBM″は、本出願人
であり、商標”PC/RT″の所有者でもある、米国ニ
ューヨーク州アーモンクのインターナシデナノレ拳ビジ
ネスeマシーンズ拳コーポレーションの登録商標である
。) 本発明を完全に理解するために、以下の議論は3つの段
階を追って進めることにする。まず、当技術分野で既知
のRISGプロセッサ内で、パイプライン式命令処理、
特にアドレス生成が通常はどのように行なわれるかを全
般的に説明する。その後に、当技術分野で行なわれるパ
イプライン式RISC命令処理の説明を前提にして、処
理の遅延、特に、しばしばこの処理の一環となるアドレ
ス生成サイクルの結果として頻繁に生じるウェイト・ス
テートを伴なう遅延について説明する。次に、このウェ
イト・ステートを有利に除去し、RISOプロセッサの
処理速度を大幅に向上させる、RISC命令処理のデコ
ード・サイクル中にアドレス生成を実行するための、本
発明の技法について詳細に説明して結びとする。
具体的に言うと、第1図は、その処理の一環としてアド
レスの生成を必要とする、代表的なRISC命令10を
示す図である。このアドレスは主に、分岐アドレスか、
データをメモリに書き込むまたはメモリから読み取るメ
モリ位置のアドレスかのいずれかである。このアドレス
は通常、アドレス変位値と所与のレジスタの現内容の和
として計算される。前記のレジスタと変位値は共に命令
内で指定されている。命令10の一例は、STORE命
令、STO [R11 ,[R2] +nである。
この命令を実行すると、汎用レジスタR1の内容が、メ
モリの、汎用レジスタR2の内容(「ペース」アドレス
)とアドレス変位値″n″の和によって与えられるメモ
リ位置にストアされる、。変位値は、一般に指標(イン
デックス)またはオフセット値とも称する。第1図に示
すように、このRISC命令は、命令コード・フィール
ド13、2つのレジスタ・フィールド15と17、及び
変位フィールド19を含んでいる。命令コード・フィー
ルドは、この命令によって呼び出される特定のデータ処
理動作を指定する適当なビットを含んでいる。
レジスタ・フィールド15及び17は、RISC命令処
理中に使用される汎用レジスタの1グループの一部を形
成する、R1及びR2で表される2個のレジスタを識別
する。アドレス変位フィールド19は、アドレス変位値
″n″を含んでいる。
命令10を正しく実行するには、このRI SC命令の
処理中にメモリにアクセスする以前に、メモリ・アドレ
スを計算しなければならない。このアドレスは計算する
必要があるが、本発明の広義の目的はそれではなくて、
RISCプロセッサの処理速度を向上させるには、RI
SC命令の複数サイクル・パイプライン式処理の間のど
こでどのようにしてアドレスを計算すべきかということ
である。
第2図は、当技術分野で、RISC命令、特に第1図に
示した、アドレスの生成を必要とするSTORE命令の
場合に行なわれる、代表的な複数サイクル処理を示す図
である。命令処理は、全体として一連の連続するマシン
・サイクルにわたる複数の処理サイクルで行なわれる。
個々の処理サイクノレが、それぞれちょうど1マシン・
サイクノレ以内で完全に発生するのが理想である。一般
に、当技術分野で周知のように、これらの処理サイクル
は全体として、命令デコード・サイクルと、その後のア
ドレス生成サイクルと、それに続くメモリ・アクセス・
サイクルと、レジスタ内にデータをストアする命令の場
合にはさらに、レジスタ・ロード・サイクルを含む。し
たがって、RISC命令は通常、3個または4個の連続
するマシン・サイクルを必要とし、そのサイクル数はそ
れぞれの命令によって決まる。
議論を始めるにあたって、STORE命令が周知のメモ
リ・アクセス回路(図示せず)によって取り出され、現
在は命令レジスタ200内に存在するものと仮定する。
命令処理が始まるとデコード・サイクル2lでこの命令
がデコードされる。
デコード・サイクルの間にこの命令の命令コード・ビッ
トがデコードされ、その結果、レジスタ・フィールドR
1及びR2の内容が、線205及び207で示されるよ
うに、汎用レジスタ(GPR)アレイ2 1 0 CG
PR2 1 0)内にある対応するレジスタ213及び
215にロードされる。この例では、GPR210は、
16個の異なるレジスタを含む。この命令から、ベース
・アドレスがレジスタ213にロードされ、同時にメモ
リ内にストアすべきデータ値がレジスタ215にロード
される。これらのレジスタがロードされた後に、アドレ
ス生成サイクル26が発生する。このサイクルの間に、
レジスタR1の内容が、,1!225で示されるように
、オペランド・レジスタ235にロードされる。それと
同時に、現在GPR2 10内のレジスタR2にあるベ
ース・アドレスが、線223で示されるように、ベース
・アドレス・レジスタ231にロードされる。これが発
生すると、ベース・アドレス・レジスタ231の内容が
、線243で示されるように、加算機構250に1人力
として供給される。命令レジスタ200に含まれている
変位値?′n”が、線207で示されるように、この加
算機構のもう1つの入力に供給される。RISCプロセ
ッサの演算論理機構(ALU)を用いて、加算機構25
0によって表される加算機能を実行する。加算機構25
0は、ベース・アドレスと変位値の単純な2進加算を行
なって、メモリ・アドレスを生成する。アドレス生成サ
イクルの最後に、加算機構250の生成したアドレスが
、アドレス・レジスタ260にロードされる。このアド
レスがアドレス●レジスタにロードされると、命令処理
はメモリ・アクセス・サイクル29に進む。このサイク
ルの間に、アドレス・レジスタ260に含まれるアドレ
スが、線265で示されるように、メモリ280のアド
レス入力に供給される。メモリ280は、通常キャッシ
ュまたは主記憶装置である。アドレスをメモリ280に
供給するのと並行して、データ値が、線275で示され
るように、メモリ280のデータ入力に供給される。ア
ドレスとデータ値がメモリに供給されると、メモリは書
込み動作を始め、その中にデータ値をストアする。メモ
リ書込み動作が終了すると、STORE命令は完全に処
理を終り、この時点ですでに命令レジスタ200内に存
在している次のRISG命令の処理が始まる。このRI
 SC命令が、STORE命令ではな<LOAD命令(
図示せず)であり、レジスタR2の内容と変位値の和に
よって指定されるメモリ位置の内容などアドレスの生成
を必要とし、それに続いて、このメモリ位置の内容を指
定されたレジスタR1にロードする場合には、メモリ・
アクセス・サイクル29は、メモリ書込み動作ではなく
、メモリ読取り動作を行ない、その後にレジスタ・ロー
ド・サイクル(図示せず)が続く。このレジスタ・ロー
ド・サイクルの間に、メモリ280内のアドレスされた
位置の内容が、指定された汎用レジスタR1に書き込ま
れる。同様のアドレス計算及び複数サイクル命令処理は
、RISG分岐命令の処理中にも行なわれる。
処理速度を増加させるために、当技術分野で既知のRI
SCプロセッサは、パイプライン式命令処理を用いて、
複数の命令をパイプライン内で互いにずれて重なりあっ
た状態で同時に処理する。
パイプラインは、異なる命令処理サイクルごとに別々の
ハードウェア・ステージを含んでいる。すなわち、命令
デコード・ステージ、アドレス生成ステージ、メモリ・
アクセス・ステージ及びレジスタ・ロード・ステージで
ある。このパイプライン式アーキテクチャのおかげで、
異なるRISC命令が、パイプライン内の異なるステー
ジを同時に占めることができる。1つのRISC命令が
バイブライン内を完全に通過して、それによって完全に
処理されるには、複数のマシン・サイクルを必要とする
ことがあるが、RISCパイプライン命令プロセッサの
周知の複数サイクル(通常2サイクル)の起動遅延が発
生した後に、新しい命令が、理想的には、平均して連続
する各マシン・サイクルごとにパイプラインに入るべき
である。平均して1マシン・サイクルごとに1つの新し
いRISG命令というこの目標が構足できるのは、連続
する命令が互いに独立である、すなわち、後続の命令が
直前の命令が完全に処理されて生じる結果を必要としな
い場合に限られる。この場合には、パイプラインのどの
ステージにあるどの命令の結果も、パイプラインの他の
ステージにある他の命令の処理に影響しない。したがっ
て、デコード、アドレス生成及びメモリ・アクセス、さ
らに当該の場合にはレジスタ・ロードの各サイクルが、
パイプライン内の様々なステージにある異なるRISC
命令に対して、同時に並行して発生することになる。
不幸なことに、これから処理されるRISC命令の多く
は、処理が行なわれる前に、その直前の命令の結果をし
ばしば必要とする。条件付き分岐は、これらの命令グル
ープの一例である。これらの命令は条件によって実行さ
れる動作が異なるという性質をもつため、対応する条件
付き分岐命令を完全に処理できる前に、特に正しい分岐
アドレスを計算できる前に、条件が満足されるか否かを
決定する先行命令の結果が利用可能になっていなければ
ならない。したがって、先行する命令の結果が利用可能
になるまで、現命令の処理、特にその命令デコードを、
1マシン・サイクルまたはしばしば複数のマシン・サイ
クルだけ、遅延させなければならない。さらに、条件付
き分岐とは別に、2つの汎用レジスタの内容同士を加算
するADD命令など、汎用レジスタの1つを用いる非分
岐命令の前に、LOADなどそれらのレジスタの1つの
内容に影響を与える命令がくることがある。この加算動
作は、前記の1つのレジスタに適当な内容がロードされ
るまで先に進めない。その結果、このような命令が発生
する場合には、先行する命令の処理が完了するまで、適
当な数のウェイト・ステートを挿入して、後続の命令の
処理を停止させる。不都合なことに、このウェイト・ス
テート遅延は、それが充分頻繁に起こる場合、R工SC
プロセッサ上でのプログラム実行を著しく遅くする可能
性がある。
このウェイト・ステート遅延を、第3A図に図式的に示
す。詳細に言えば、第3A図は、当技術分野で見られる
、第1の命令があるレジスタの内容を変更し、その内容
が第2の命令によって使用される、2つの連続するRI
SC命令を処理する際の、パイプライン式RISC命令
処理に関連する典型的な複数サイクルのタイミングを図
式的に示したものである。第1の命令は、例えばLOA
D命令、具体的にはLOAD [R1コ.[R2]+n
であり、汎用レジスタR1に、レジスタR2の内容と変
位値”n ftの和によって指定されるメモリ内の位置
にストアされた値をロードする。この命令の後に、例え
ば加算命令、具体的には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で
示されるLOAD命令のレジスタ・ロード・サイクルが
発生し、アクセスされたメモリ位置の内容を汎用レジス
タR1にロードする。
前述のように、連続するRISC命令は、連続するマシ
ン・サイクルの間に命令処理パイプラインに入るべきで
ある。したがって、ADD命令の処理は、理想的には、
LOAD命令に対するRISC命令処理と、その先頭か
らちょうど1マシン・サイクルだけ一時的にオフセット
されて重なるべきである。したがって、マシン・サイク
ルT2の間に、ADD命令がデフード・ステージに供給
される。不幸なことに、このADD命令は、汎用レジス
タR1の内容を必要とするが、それは、不幸なことにこ
のサイクル中にはまだ先行するLOAD命令の実行によ
ってロードされていない。このレジスタは、マシン・サ
イクルT2の間、LOAD命令の実行によってロックさ
れているので、この間に他の命令がこのレジスタを利用
することはできない。したがって、マシン・サイクルT
2の間にADD命令のデコードが試みられるが、このデ
コードは、このサイクルの間有効に抑止され、その結果
、線325で示されるように、1サイクルのウェイト・
ステートがADD命令の処理に挿入される。レジスタR
1は、マシン・サイクルT3の間も、まだ並行するLO
AD命令の処理によって充填されていないので、ロック
されたままであり、このため、線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進加算機構の対応する入力に送って、アドレスを生成
する。これと並行して、事前デコード回路は、現RIS
C命令用のベース・アドレスの適当な供給源をも選択す
る。これは、メモリ・アドレスの生成を必要とする分岐
タイプのRISC命令の場合には、命令アドレス・レジ
スタ(IAR)の内容であり、メモリ・アドレスの生成
を必要とするLOADまたはSTOREタイプのRIS
C命令(LOAD/STOREと総称する)の場合には
、(現命令自体によって指定される)GPRアレイ内の
汎用レジスタRCの内容である。ベース●アドレス及び
変位アドレス・フィールドを並行して処理し、2進加算
機構の当該の複数ビット入力に供給するのが好都合であ
る。
現RISC命令がアドレスの生成を必要とするものであ
る場合には、その命令が完全にデコードされた後に、2
進加算機構によって生成されたアドレスが単にアドレス
・レジスタにラッチされ、それを介してその出力に与え
られる。一方、完全な命令デコードの結果、現命令が、
命令レジスタ内または直接GPR内に絶対アドレスを存
する無条件分岐向令など、アドレスの生成を必要としな
いものであることが判明した場合には、2進加算機構に
よって生成されたアドレスは次のサイクルで使用されず
、後続のRI SC命令の命令デコード・サイクル中に
重ね書きされるだけである。本発明では並行処理が可能
なため、アドレスを生成するのに必要な動作はすべて、
有利なことにただ1つのマシン・サイクルで行なわれる
さらに、別個の2進加算機構は、ALUの加算部分より
も単純で、それよりもかなり高速である。
その結果、当技術分野で行なわれているRISCプロセ
ッサ内のALU (ならびに直列に接続されたビット拳
フォーマット機構)ではなく、このような加算機構を用
いてアドレスを生成すると、アドレス生成の速度がさら
に向上する。さらに、この2進加算機構の出力はアドレ
ス・レジスタだけに供給されるので、この加算機構は相
対的に小さな駆動負荷を有する。これとは対照的に、A
LUがアドレス・レジスタを駆動する場合には、その出
力がGPRアレイ、アドレス・レジスタその他を含めて
多数の位置に送られるので、ALUはより大きな負荷を
受ける。その結果、別個の2進アドレス加算機構の使用
に伴うバス遅延は、有利なことに、アドレス加算機構と
してALUを使用する場合よりもかなり短くなる可能性
が高い。
パイプライン式RISC命令処理のデコード・サイクル
中にアドレスを生成するための本発明の技法を完全に理
解するために、次に、前述のように、例えばIBM  
PC/RTコンピュータで用いられているRISCプロ
セッサ内で実行される命令セットと共に本技法を使用す
る場合について、特にこの命令セット内のアドレス生成
を必要とする種々の命令のフォーマットについて説明を
行なう。第4図は、IBM  PC/RT命令セット用
の異なるRISC命令フォーマットを詳細に示す図であ
る。
図のように、アドレスの生成を必要とするIBM  P
C/RTのRISC命令フォーマット40Oは、非分岐
命令と分岐命令の両方を含んでいる。
非分岐命令に関しては、これらの命令フォーマットとし
ては、8ビットの命令コード・フィールド401とそれ
ぞれ4ビットのオペランド(RB)レジスタ・フィール
ド402及びベース・アドレス(RC)レジスタ・フィ
ールド403を含むRタイプの命令フォーマット405
や、8ビットの命令コード・フィールド407とそれに
続く4ビットのオペランド・レジスタ・フィールド40
8及び4ビットの増分(1)フィールド409を含むR
′タイプの命令フォーマット410や、4ビットの命令
コード・フィールド411と4ビットの(シロート)増
分(Is)フィールド412と4ビットのオペランド・
レジスタ・フイーノレド413と4ビットのベース・レ
ジスタ・フィールド414を含むDシa}命令フォーマ
ット415や、4ビットの命令コード●フィールド41
6と4ビットの結果(RA)レジスタ・フィールド41
7と4ビットのオペランド・レジスタ・フィールド41
8と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 j
 jタイプの(条件付き分岐)フォーマット460や、
4ビ、ットの命令コード・フィールド461とそれに続
く4ビットの条件ビット番号フィールド462及び8ビ
ットの即時ジャンプ(J I)アドレス・フィールド4
63を含むJlタイプの(条件付き分岐)フォーマット
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ビット形式で、ビットaOな
いしa31として命令レジスタ200にストアされてい
る。
デコード・サイクルの始めに、この命令の命令コードが
、完全デコード回路510と命令事前デコード回路52
0への入力として、読取り線505を介して並列に送ら
れる。組合せ論理回路によって形成される周知の完全デ
コード回路510が、この命令を完全にデコードし、デ
コードされた命令コードと命令のタイプに基いて、読取
り線515のうちの対応する1本の読取り線にパルスを
供給する。読取り線515は、一連のフリップ・フロッ
プ(1ビット・ラッチ)560のセット入力に接続され
ている。各フリップ・フロップは、その対応するセット
入力にパルスが現れた場合に、1の状態にセットされる
。詳細に言えば、デコードされた命令が、実際に分岐す
る分岐(SBR)命令、すなわち無条件分岐命令または
条件が構足されている条件付き分岐命令である場合は、
フリップ・フロップ563がセットされ、デコードされ
た命令がLOAD命令である場合にはフリップ・フロッ
プ565がセットされ、デコードされた命令がSTOR
E命令である場合にはフリップ・フロップ567がセッ
トされる。完全にデコードされ、実行されるRISC命
令の他のすべてのタイプに適応するための追加のフリッ
プ・フロップ(図示せず)が、フリップ・フロップ56
0内に存在することになる。フリップ・フロップ560
の出力は、周知の制御/命令実行回路(特に図示せず)
に一団となって送られる。さらに、アドレス生成を必要
とする命令タイプに関連する個々のフリップ・フロップ
の出力が読取り線570を介して送られ、以下で詳細に
説明する別々のイネーブル信号をメモリ・アドレス・レ
ジスタ650に提供する。現命令が完全に実行された後
に、制御/実行回路は、フリップ・フロップ560のう
ちの対応するフリップ・フロップを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)(RISCプロセッサ内に含まれ
るが、周知であり、特に図示しない)を介して供給され
る。
この選択動作は破線523によって表されている。
加算機構540は、ベース・アドレスと変位アドレスの
和を形成し、その結果を、読取り線545を介してメモ
リ番アドレス・レジスタ550のデータ入力に並列に供
給する。アドレス・レジスタ550は、マスク部分55
3とスレーブ部分557を有する2サイクル・レジスタ
として実施されている。入力アドレス情報は、読取り線
545を介してマスク部分にロードされ、イネーブル信
号がスレーブ部分に供給される場合だけ、マスク部分か
らスレーブ部分に転送される。このイネーブル信号は読
取り線570上に現れる。したがって、完全なデコード
の結果、加算機構540によって生成されたアドレスが
、アドレスの生成を必要とする命令用のものであること
が判明した場合は、そのアドレスがマスク部分553に
ロードされてからわずか後に、適当なイネーブル・パル
スが読取り線570上に現れる。このイネーブル・パル
スは、そのアドレスをスレーブ部分557に転送させ、
そこから出力読取り線575上にメモリ・アドレスとし
て転送させる。逆に、完全なデコードの結果、現命令が
アドレスの生成を必要としないものであることが判明し
た場合には、このようなイネーブル・パルスは読取り線
570上に現れない。したがって、マスク部分553に
ロードされたばかりの計算済みのアドレスは、後続のR
ISC命令のデコード中に重ね書きされるだけで、メモ
リ・アドレス出力読取り線575上には現れない。アド
レスを生成して、そのアドレスが不要な場合にはレジス
タ550内でそれを重ね書きするというこの処理は、当
初及び一般にアドレスの生成が必要であると仮定される
後続のRISC命令のそれぞれについて繰り返される。
計算済みのアドレスを出力読取り線575に供給するこ
とも含めて、回路500内で行なわれるすべての処理は
、有利なことに命令デコード・サイクル中に行なわれる
本発明の技法の前述の一般的な説明を念頭に置いて、第
6A図及び第6B図は、2枚合わせて、第4図に示した
フォーマッと、すなわちIBMPC/RTコンピュータ
で実行されるRISC命令に特有のフォーマットを有す
るRISC命令を処理する際に、デコード・サイクル中
にアドレスを生成するための本発明の方法の流れ図を示
す。
第6図は、第6A図と第6B図の正しい位置合せを示す
図である。流れ図とそれに付随する議論を簡単にするた
めに、完全デコード回路510とフリップ・フロップ5
60(第5図参照)に関連するステップ、すなわち完全
な命令デコード、アドレス・レジスタ・イネーブル信号
の生成、及びアドレス・レジスタを介したアドレスの選
択的転送は、すべて上述した通りであり、本発明の方法
の一部分を形成するが、第6A図及び第6B図とそれに
関連する議論では省略する。
図のように、方法600は、命令事前デコード動作60
1及びアドレス・フォーマット動作630と、それに続
くアドレス計算ステップ650及びアドレス・ロード・
ステップ690を含んでいる。方法e00による命令処
理が開始すると、まず判断ステップ605に進む。この
判断ステ・ソブでは、現命令の命令コード中の第1文字
の内容から、現命令が、アドレスの生成を必要とする可
能性のあるLOAD/STORE命令に関連するフォー
マットであるか、それともアドレスの生成を必要とする
可能性のある分岐命令に関連するフォーマットであるか
を決定する。第1文字が値″O″または″8″のいずれ
かに等しい場合には、その命令は、アドレスの生成を必
要とする可能性のある分岐命令に関連するフォーマット
をもつ命令である。したがって、経路809を経由して
、判断ステップ610へ、及びステップ845からステ
ップ650へと並行して進む。判断ステップ810では
、命令コード中の第1文字の第1ビットの値に基いて、
現在事前デコードされつつある分岐命令のタイプ、すな
わちその命令がBIまたはBI’ タイプであるのか、
それともJIタイプであるのかを決定する。それと同時
に、命令アドレス・レジスタ(IAR)に現在ストアさ
れている内容が、ステップ650への適当なイネーブル
信号の生成によって、ベース・アドレスとして選択され
る。その結果、ステップ645で示すように、ベース・
アドレスがIARから読み取られ、ベース・アドレスと
して経路647を介して加算ステップ650への一方の
(ベース)アドレス入力に供給される。
分岐命令のタイプに基いて、JIタイプの分岐命令(ビ
ッ}aO=″0″の場合)では経路613を経てステッ
プ633に進み、BIまたはBI’タイプの分岐命令(
ビットaO=″1″)では経路611を経てステップ6
35に進む。ステップ633を実行すると、アドレス・
フォーマット回路530(第5図参照)を用いて、現命
令からJIアドレス・フィールドを取り出し、正しく位
置合せする。またステップ635(第6A図及び第6B
図参照)を実行すると、アドレス・フォーマット回路5
30(第5図参照)を用いて、現命令からBIアドレス
・フィールドを取り出し、正しく位置合せする。取り出
され位置合せされたアドレス・フィールドは、次に、第
8A図及び第6B図に示す経路837を経て、加算ステ
ップ650の第2の(変位)アドレス入力に変位アドレ
スとして供給される。次に、加算ステップ650で、ベ
ース・アドレスと変位アドレスを加算して、結果のアド
レスを生成する。この結果のアドレスは、次のステップ
690が実行されると、現RISC命令処理のメモリ・
アクセス・サイクルで用いられる適当なアドレス・レジ
スタにロードされる。ステップ890が実行されると、
この命令について方法600は完了する。
そうではなくて、事前デコードされつつある現命令が、
分岐タイプの命令フォーマットではなく、アドレスの生
成を必要とする可能性のあるLOAD/STORE命令
に関連するフォーマットをもつ場合には、NO経路60
7を経て、ステップ650,判断ステップ620及びス
テップ615に並行して進む。したがって、命令アドレ
ス・レジスタではなく、汎用レジスタRCに現在ストア
されている内容が、ステップ650への適当なイネーブ
ル信号の生成によって、ベース・アドレスとして選択さ
れる。その結果、ステップ615で、ベース・アドレス
がレジスタRCから読み取られ、ベース・アドレスとし
て経路617から加算ステップ850のベース・アドレ
ス入力に供給される。
判断ステップ620では、事前デコードされつつある現
命令の命令コードの第1文字の第1ビットの値に基いて
、この命令がDタイプかそれともDシゴート・フォーマ
ットを有するタイプのものか判定する。この第1ビット
(aO)が1に等しい場合、現命令はDタイプ・フt−
マットを有する。この場合は、経路621を経てステッ
プ625に進む。ステップ625を実行すると、アドレ
ス・フォーマット回路530を用いて、事前デコードさ
れている現命令から工変位アドレス・フィールドを取り
出し、このフィールドの符号を適当なビット位置の数だ
け適当に拡張して、正しく位置合せされた変位アドレス
を形成する。その結果得られる位置合せ済みの変位アド
レスは、経路637を経て、加算ステップ850の変位
アドレス入力に供給される。
そうではなくて、この命令コードの第1ビット(aO)
が0に等しい場合、現命令は、D7ii−ト・タイプの
フォーマットを有する。この場合は、経路623を経て
ステップ655に進む。ステップ655を実行すると、
アドレス・フォーマット回路530を用いて、事前デコ
ードされつつある現命令からIs変位アドレス・フィー
ルドを取り出す。ところが、Dショート・タイプ命令フ
ォーマット用の特定の命令コードに基いて、正しくビッ
ト位置が合わせられた変位アドレスを生成するには、I
sフィールドは、シフトが不要なことも、1ビットまた
は2ビットだけ左シフトする必要があることもある。命
令コードの値とIsアドレス・フィールドの必要なシフ
ト数の間の具体的な関係は、第7図に示す論理表に記述
されている。詳細に言えば、命令コードのビッ・}ao
1af1 a2ta3が16進数の?′1″または″4
”である場合には、シフトは不要である。″2″または
′5″の場合は、ビット位置1つだけ左シフトが必要で
ある。″3”または″7”の場合は、ビット位置2つだ
け左シフトが必要である。必要なシフト量を素早く決定
するために、3つの制御ビットSO、S1、S2が、命
令コードのビットa1、a2、a3の特定の論理的な組
合せに基いて組み立てられ、その後テストされる。これ
らのビットを組み立てるための組合せ論理回路800が
第8図に示されている。図中、ORゲート810、82
0、830は、以下の論理式に従って、それぞれ制御ビ
ットSO、S1、S2を形成する。
So = (al not * a2 not * a
3) + (al * a2 not零a3 not) Sl = (al not tp a2 零a3 no
t) +(al * a2 notネa3) S2 =(al not * a2 * a3) + 
(al * a2 * a3)詳細に言えば、ステップ
655を実行した後に、判断ステップ660を実行して
、制御ビットSOの値が1であるか否かを決定する。こ
の制御ビットが1に等しい場合は、判断ステップ660
から出るYES経路を経てステップ665に進む。ステ
ップ665を実行すると、取り出されたIsフィールド
が、追加的なシフトを行なわずに、位置合せ済みの変位
アドレスとして、経路637を経て加算ステップ650
の変位アドレス入力に供給される。そうではなくて、制
御ビットSOの値が1でない場合は、判断スデップ66
0から出るNo経路を経て、判断ステップ670に進む
。判断ステップ670を実行すると、制御ビットS1の
値が1であるか否かが判定される。この制御ビットが1
に等しい場合は、判断ステップ870から出るYES経
路を経て、ステップ675に進む。
ステップ875を実行すると、アドレス・フォーマット
回路530(第6図参照)を用いて、取り出されたIs
フィールドがビット位置1つだけ左シフトされ、その後
、第6A図及び第6B図に示すように、シフトされた結
果のIsフィールドが、経路637を経て加算ステップ
850の変位アドレス入力に供給される。そうではなく
て、制御ビットS1の値が1でない場合は、判断ステッ
プe70から出るNo経路を経て、判断ステップ680
に進む。判断ステップ880を実行すると、制御ビット
S2の値が1であるか否かが判定される。
この制御ビットが1に等しい場合は、判断ステップθ8
0から出るYES経路を経て、ステップ685に進む。
ステップθ85を実行すると、アドレス・フォーマット
回路530(第5図参照)を用いて、取り出されたIs
フィールドがビット位置2つだけ左シフトされ、その後
、第6A図及び第6B図に示すように、シフトされた結
果のIsフィールドが、経路837を経て、加算ステッ
プ850の変位アドレス入力に供給される。制御ビット
S2の値が1でない場合は、判断ステップ680から出
るNO経路を経てステップ865に進む。
ステップe65では、取り出されたIsフィールドが、
ビット・シフトを行なわずに、位置合せ済みの変位アド
レスとして、加算ステップ850に供給される。図示及
び理解を容易にするため、判断ステップ8801870
及び880は、方法600内で順次実行されるものとし
て示してあるが、これらの判断ステップは、実際には、
第9A図ないし第9D図に詳細に示すハードウェア内で
、同時に実行することが好ましい。
第9八図ないし第9D図は、4枚合わせて、第4図に示
したRISC命令フォーマットの処理に関して使用され
る、本発明、特に第6A図及び第6B図に示した方法を
実施した、第5図に示した本発明の装置の詳細なブロッ
ク図である。第9図は、第9八図ないし第9D図の正し
い位置合せを示す図である。図示しやすくするため、一
部の論理ゲーと、例えばゲート968及び982は、複
数ビット例えば32ビットのデータに作用する1個のゲ
ートとして示してあるが、実際には、当業者には自明な
ように、これらのゲートは複数の物理的ゲート回路を用
いて実施される。
図のように、命令事前デコード回路520は、命令コー
ド・ビットao1al、a2、a3とそれらの真の補数
(ao  notないしa3  not)に応答して、
現命令のフォーマットを指定する種々の制御信号を発生
する、論理ゲート903、905、907、909、9
12、915から形成されている。詳細に言えば、ゲー
}903は、現命令がBIまたはBI’フォーマットを
有する場合に、その出力に”1″レベルの信号を発生し
、ゲート905は、JIタイプのフォーマットの場合に
、”1″′レベルの信号を発生する。ゲート909は、
現命令がLOAD/STORE用のフォーマットを有す
る場合に、アドレスの生成を必要とするか否かに関わら
ず、その出力に″1′″レベルを発生する。ゲート91
2は現命令がDタイプ・フォーマットである場合に、ゲ
ート915は現命令がDシ口−ト・タイプ・フォーマッ
トである場合に、それぞれの出力に″1″レベルを発生
する。
アドレス・フォーマット回路530は、ゲート回路93
01レジスタθ40,組合せマルチブレクサ960、及
びゲー}985、988を含む。
ゲート回路930は全体として、前述の制御ビットSO
、S1及びS2を発生する。これらの制御ビットと、事
前デコード・ゲート903、905、812の出力は、
共に組合せマルチプレクサ960への個別のイネーブル
(E)信号として用いられて、特定の複数ビット符号拡
張またはシフト動作を呼び出す。ゲー}903、905
、912、915によって発生された信号は、全体でレ
ジスタ940を形成するレジスタ942、944、94
B、948のそれぞれにイネーブル信号として供給され
る。現命令のフォーマットが、これらのゲートのいずれ
かによって事前デコードされたものと一致する場合、そ
れによって生成されたイネーブル信号に応答して、それ
ぞれレジスタ942、944、94Bまたは948に、
現命令に含まれるI8%JI、BIまたは■フィールド
が並列にロードされる。これらのレジスタの出力は、O
Rゲート952を介して、組合せマルチプレクサ960
にデータ入力として並列に供給される。組合せマルチプ
レクサ960に供給される複数のイネーブル信号のうち
の特定の1つによって指定される、現命令のタイプに基
づいて、マルチプレクサ960は、特定の複数ビットの
符号拡張またはシフト動作を始め、その結果得られる位
置合せ済みの変位アドレス・フィールドを、ANDゲー
ト968の32ビット入力の1つに供給する。これと並
行して、組合せマルチプレクサに供給されるイネーブル
信号も、入力としてORゲート965に供給される。O
Rゲート965は、ANDゲート968への第2の入力
としてイネーブル信号を発生し、マルチプレクサ980
によって生成されたデータを、アドレス加算機構540
の32ビット変位アドレス入力にゲートする。
ベース・アドレスに関しては、このアドレスは2つの供
給源のうちの1つから発生する。前述のように、ベース
・アドレスは、図にIAR975として示されている命
令アドレス・レジスタ(■AR) 、またはGPRアレ
イ210に含まれる汎用レジスタRCからロードするこ
とができる。ベース・アドレスを得るためにどのレジス
タにアクセスするかの選択は、上述のように、現命令が
、分岐命令に関連するフォーマットを有する(したがっ
て、分岐命令である可能性がある)か、それともLOA
D/STORE命令に関連するフォーマットを有する(
したがって、LOAD/STORE命令である可能性が
ある)かによって決まる。現命令が分岐命令である可能
性のある場合には、ゲート907は、その出力に+vl
nレベルを発生する。
この出力は、例えば個別のANDゲート(そのうちの1
ゲートだけを示す)から形成されるマルチプレクサ87
8の制御入力に供給されたとき、■AR975に含まれ
るアドレスを、アドレス加算機構540のベース・アド
レス入力ヘゲートする。
そうではなくて、現命令がLOAD/STOREタイプ
の命令である可能性がある場合には、ゲート907では
なく、ゲート909が、その出力にfltl?レベルを
発生する。この出力は、ANDゲート882の制御入力
に供給されたとき、GPRアレイ210内の汎用レジス
タRCに含まれるアドレスを、アドレス加算機構540
のベース・アドレス入力ヘゲートする。GPRアレイ2
10内の汎用レジスタRB及びRCに含まれるベース・
アドレス及びオペランドも、AIレジスタ988に並列
に供給され、後の処理のために、BIレジスタ986及
びフォーマッタ992を直列に通過して、RISGプロ
セッサ内の演算論理機構に供給される。ただし、この後
続処理は、加算機構540によって生成されるアドレス
とは独立である。
アドレス加算機構540によって生成された32ビット
2進出力は、入力としてアドレス・レジスタ550に供
給される。このレジスタは、具体的にはアドレス生成レ
ジスタ兼分岐アドレス・レジスタ(AGR−BAR)5
50として図示されており、それによって、このレジス
タが、ロード/ストア・アドレスまたは分岐アドレスの
いずれかを保持できることを示している。
アドレス使用イネーブル回路985は、完全デコード回
路5101イネーブル・フリップ・フロップ560(第
5図に詳細を示す)及び関連する周知の制御回路を含み
、アドレス・レジスタ550への適当なイネーブル信号
を発生する。これらのイネーブル信号は、第5図に関し
て上述したように、レジスタ550にロードされたアド
レスを使用するか、すなわち第9八図ないし第9D図に
示すようにこれをメモリ・アドレス出力読取り線575
に伝えるか、それともこれを使用しないかを示す。使用
しない場合は、このアドレスはレジスタ550内で重ね
書きされるだけである。
事前デフード、具体的にはゲート909によって、現命
令が、アドレス生成の必要の有無には無関係に、LOA
D/STORE命令である可能性があると判明するとす
ぐに、GPRアレイのヂップ選択(CS)入力がイネー
ブルされ、その結果、ベース・アドレスが、即座に汎用
レジスタRCからアクセス可能になり、そこからアドレ
ス加算機構540及びALUへ転送可能になる。4つの
命令コード・ビットal2ないしal5は、例えば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図に示したバイブライン式命令処理
と共に使用される、従来技術のレジスタ・分野で既知の
例示的なRISCプロセッサ内で実行される共通命令セ
ット内に存在する、RISC命令の様々なフォーマット
を示す図である。 第5図は、本発明の教示を実施した、RISC命令処理
のデコード・サイクル中にアドレスを生成するための装
置の高水準ブロック図である。 第6図は、第6A図と第6B図の正しい位置合せを示す
図である。 第6A図及び第6B図は、2図合わせて、第4図に示し
た例示的フォーマットを有するRISC命令を処理する
際にデコード・サイクル中にアドレスを生成するための
本発明の方法の流れ図を示す図である。 第7図は、実際の命令コードの値が与えられているもの
として、第4図に示したDショート命令フォーマットで
発生するIsフィールドを位置合せするのに必要なシフ
トの数を指定する論理表である。 第8図は、第6A図及び第6B図に示した流れ図で用い
られるシフト・ビットSO,S1及びS2を生成するた
めに第7図に示した表を実施するのに使用できる、組合
せ論理回路のブロック図である。 第9図は、第9A図ないし第9D図の正しい位置合せを
示す図である。 第9A図ないし第9D図は、4図合わせて、第4図に示
した例示的RISC命令フォーマットの処理と共に使用
するために、本発明、特に第6A図及び第6B図に示し
た方法を実施した、第5図に示した本発明の装置の詳細
なブロック図である。 200・・・・命令レジスタ、210・・・・汎用レジ
スタ(GPR)アレイ、260・・・・アドレス・レジ
スタ、280・・・・メモリ、510・・・・完全デコ
ード回路、520・・・・命令事前デコード回路、53
0・・・・アドレス・フォーマット回路、540・・・
・アドレス加算機構、550・・・・メモリ・アドレス
・レジスタ、960・・・・組合せマルチプレクサ。

Claims (1)

  1. 【特許請求の範囲】 (1)命令を処理するためのデジタル・コンピュータに
    おいて、命令処理のデコード・サイクル中に現命令用の
    メモリ・アドレスを生成するための装置であって、 命令コード・フィールドとアドレス・フィールドとを有
    する現命令を処理のためにストアする命令レジスタ手段
    と、 前記の命令レジスタ手段に接続され、デコード・サイク
    ル中に現命令内の命令コード・フィールドに応答して、
    前記の命令をデコードし、前記の現命令がアドレス生成
    を必要とする命令である場合に第1のイネーブル信号を
    提供する命令デコード手段と、 前記の命令レジスタ手段に接続され、デコード・サイク
    ル中に現命令内の命令コードに応答して、現命令から変
    位アドレスを取り出し、変位アドレスのビットを所定の
    量だけ位置合せして位置合せ済みの変位アドレスを形成
    する、命令事前デコード兼アドレス・フォーマット手段
    と、 現命令用のベース・アドレスと位置合せ済みの変位アド
    レスとを加算して、計算済みのアドレスを形成する手段
    と、 前記の第1イネーブル信号に応答して、計算済みのアド
    レスを、デコード・サイクル中に現命令用のメモリ・ア
    ドレスとして出力に供給するアドレス・レジスタ手段と
    、 を含むことを特徴とする装置。 (2)請求項1に記載の装置であって、前記の命令事前
    デコード兼アドレス・フォーマット手段がさらに、前記
    の命令コードに応答して選択信号を提供する手段を含み
    、前記の装置がさらに、前記の選択信号に応答して、現
    命令用のベース・アドレスを提供するために複数のアド
    レス供給源のうちの1つを選択する手段を含むことを特
    徴とする装置。 (3)請求項2に記載の装置であって、前記のベース・
    アドレス供給源が、汎用レジスタと命令アドレス・レジ
    スタとを含み、前記の選択手段が、前記の選択信号に応
    答して、現命令がロードまたはストア・タイプの命令で
    ある可能性のあるときは汎用レジスタを選択し、また現
    命令が分岐タイプの命令である可能性のあるときは命令
    アドレス・レジスタを選択して、現命令用の前記のベー
    ス・アドレスを発生する手段を含むことを特徴とする装
    置。 (4)請求項3に記載の装置であって、さらに複数のレ
    ジスタからなる汎用レジスタ・アレイを含み、汎用レジ
    スタが、現命令内の対応するフィールドによって指定さ
    れる、前記のアレイ内の特定のレジスタであることを特
    徴とする装置。 (5)請求項1に記載の装置であって、前記の命令事前
    デコード兼アドレス・フォーマット手段がさらに、 前記の命令レジスタ手段に接続され、デコード・サイク
    ル中に命令コードに応答して、前記の選択信号と、現命
    令のフォーマットに基づく第2のイネーブル信号とを生
    成する命令事前デコード手段と、 前記の命令レジスタに接続され、前記の第2イネーブル
    信号に応答して、現命令から変位アドレスを取り出し、
    かつ変位アドレスのビットを前記の第2イネーブル信号
    によって決定される量だけ位置合せして、位置合せ済み
    の変位アドレスを生成するアドレス・フォーマット手段
    と を含むことを特徴とする装置。 (6)請求項5に記載の装置であって、前記のアドレス
    ・フォーマット手段が、変位アドレスのビットに対して
    ビット・シフトと符号拡張を実行するための手段を含む
    ことを特徴とする装置。 (7)請求項6に記載の装置であって、前記の実行手段
    が、組合せマルチプレクサを含むことを特徴とする装置
    。 (8)請求項1に記載の装置であって、現命令が縮小命
    令セット・コンピュータ命令であることを特徴とする装
    置。 (9)請求項1に記載の装置であって、前記の命令デコ
    ード手段がさらに、 前記の命令コードに応答して、制御信号を生成する手段
    と、 ラッチ出力を有し、前記の制御信号に応答して、ラッチ
    出力をある状態にセットして前記の第1イネーブル信号
    を発生し、かつ前記の現命令の後続の処理の間に発生す
    るリセット信号に応答して、ラッチ出力を第2の状態に
    リセットして前記の第1イネーブル信号を消去するラッ
    チ手段と を含むことを特徴とする装置。 (10)縮小命令セット・コンピュータ命令を処理する
    ための縮小命令セット・コンピュータ(RISC)にお
    いて、RISC命令処理のデコード・サイクル中に現R
    ISC命令用のメモリ・アドレスを生成するための装置
    であって、 命令コード・フィールドとアドレス・フィールドとを有
    する現RISC命令を処理のためにストアする命令レジ
    スタ手段と、 前記の命令レジスタ手段に接続され、デコード・サイク
    ル中に現RISC命令内の命令コード・フィールドに応
    答して、前記のRISC命令をデコードし、前記の現R
    ISC命令がアドレス生成を必要とする命令である場合
    には第1のイネーブル信号を提供する命令デコード手段
    と、 前記の命令レジスタ手段に接続され、デコードサイクル
    中に現RISC命令内の命令コードに応答して、現RI
    SC命令から変位アドレスを取り出し、変位アドレスの
    ビットを所定の量だけ位置合せして、位置合せ済みの変
    位アドレスを形成する命令事前デコード兼アドレス・フ
    ォーマット手段と、 現RISC命令用のベース・アドレスと位置合せ済みの
    変位アドレスとを加算して、計算済みのアドレスを形成
    する手段と、 前記の第1イネーブル信号に応答して、計算済みのアド
    レスをデコード・サイクル中に現RISC命令用のメモ
    リ・アドレスとして出力に供給するアドレス・レジスタ
    手段と を含むことを特徴とする装置。 (11)請求項10に記載の装置であって、前記の命令
    事前デコード兼アドレス・フォーマット手段がさらに、
    前記の命令コードに応答して、選択信号を提供する手段
    を含み、前記の装置がさらに、前記の選択信号に応答し
    て、現命令用のベース・アドレスを提供するために複数
    のアドレス供給源のうちの1つを選択する手段を含むこ
    とを特徴とする装置。(12)請求項11に記載の装置
    であって、前記のベース・アドレス供給源が汎用レジス
    タと命令アドレス・レジスタとを含み、前記の選択手段
    が、前記の選択信号に応答して、現命令がロードまたは
    ストア・タイプの命令である可能性のあるときは汎用レ
    ジスタを選択し、また現命令が分岐タイプの命令である
    可能性のあるときは命令アドレス・レジスタを選択して
    、現命令用の前記のベース・アドレスを発生する手段を
    含むことを特徴とする装置。 (13)請求項10に記載の装置であって、前記の命令
    事前デコード兼アドレス・フォーマット手段がさらに、 前記の命令レジスタ手段に接続され、デコード・サイク
    ル中に命令コードに応答して、前記の選択信号と、現命
    令のフォーマットに基づく第2のイネーブル信号とを生
    成する命令事前デコード手段と、 前記の命令レジスタに接続され、前記の第2イネーブル
    信号に応答して、現命令から変位アドレスを取り出し、
    かつ変位アドレスのビットを前記の第2イネーブル信号
    によって決定される量だけ位置合せして、位置合せ済み
    の変位アドレスを生成するアドレス・フォーマット手段
    と を含むことを特徴とする装置。 (14)請求項13に記載の装置であって、前記のアド
    レス・フォーマット手段が、変位アドレスのビットに対
    してビット・シフトと符号拡張を実行するための手段を
    含むことを特徴とする装置。 (15)請求項10に記載の装置であって、前記の命令
    デコード手段がさらに、 前記の命令コードに応答して、制御信号を発生する手段
    と、 ラッチ出力を有し、前記の制御信号に応答して、ラッチ
    出力をある状態にセットして前記の第1イネーブル信号
    を発生し、また前記の現命令の後続の処理の間に発生す
    るリセット信号に応答して、ラッチ出力を第2の状態に
    リセットして前記の第1イネーブル信号を消去するため
    のラッチ手段とを含むことを特徴とする装置。 (16)命令を処理するためのデジタル・コンピュータ
    において、命令処理のデコード・サイクル中に現命令用
    のメモリ・アドレスを生成するための方法であって、 命令コード・フィールドとアドレス・フィールドとを有
    する現命令を処理のために命令レジスタにストアするス
    テップと、 デコード・サイクル中に、現命令内の命令コード・フィ
    ールドに応答して、前記の命令をデコードし、前記の現
    命令がアドレス生成を必要とする命令である場合には第
    1のイネーブル信号を提供するステップと、 デコード・サイクル中に、現命令内の命令コードに応答
    して、現命令から変位アドレスを取り出し、変位アドレ
    スのビットを所定の量だけ位置合せして、位置合せ済み
    の変位アドレスを形成するステップと、 現命令用のベース・アドレスと位置合せ済みの変位アド
    レスとを加算して、計算済みのアドレスを形成するステ
    ップと、 前記の第1イネーブル信号に応答して、計算済みのアド
    レスを、デコード・サイクル中に現命令用のメモリ・ア
    ドレスとして出力に供給するステップと を含むことを特徴とする方法。 (17)請求項16に記載の方法であって、前記の取出
    し及び位置合せのステップがさらに、前記の命令コード
    に応答して選択信号を提供するステップを含み、前記の
    方法がさらに、前記の選択信号に応答して、現命令用の
    ベース・アドレスを提供するために複数のアドレス供給
    源のうちの1つを選択するステップを含むことを特徴と
    する方法。 (18)請求項17に記載の方法であって、前記のベー
    ス・アドレス供給源が、汎用レジスタと命令アドレス・
    レジスタとを含み、前記の選択ステップが、前記の選択
    信号に応答して、現命令がロードまたはストア・タイプ
    の命令である可能性のあるときは汎用レジスタを選択し
    、また現命令が分岐タイプの命令である可能性のあると
    きは命令アドレス・レジスタを選択して、現命令用の前
    記のベース・アドレスを発生することを特徴とする方法
    。 (19)請求項16に記載の方法であって、前記の取出
    し及び位置合せのステップがさらに、 デコード・サイクル中に、命令コードに応答して、前記
    の選択信号と、現命令のフォーマットに基づく第2イネ
    ーブル信号とを発生するステップと、 前記の第2イネーブル信号に応答して、現命令から変位
    アドレスを取り出し、かつ変位アドレスのビットを前記
    の第2イネーブル信号によって決定される量だけ位置合
    せして、位置合せ済みの変位アドレスを生成するステッ
    プと を含むことを特徴とする方法。 (20)請求項19に記載の方法であって、さらに、変
    位アドレスのビットに対してビット・シフトと符号拡張
    を実行するステップを含むことを特徴とする方法。 (21)請求項16に記載の方法であって、現命令が縮
    小命令セット・コンピュータ命令であることを特徴とす
    る方法。 (22)請求項16に記載の方法であって、前記のデコ
    ード及び提供のステップがさらに、 前記の命令コードに応答して、制御信号を発生するステ
    ップと、 前記の制御信号に応答して、ラッチの出力をある状態に
    セットして前記の第1イネーブル信号を発生し、また前
    記の現命令の後続の処理の間に発生するリセット信号に
    応答して、ラッチ出力を第2の状態にリセットして前記
    の第1イネーブル信号を消去するステップとを含むこと
    を特徴とする方法。 (23)縮小命令セット・コンピュータ命令を処理する
    ための縮小命令セット・コンピュータ(RISC)にお
    いて、RISC命令処理のデコード・サイクル中に現R
    ISC命令用のメモリ・アドレスを生成するための方法
    であって、 命令コード、フィールドとアドレス・フィールドとを有
    する現RISC命令を処理のために命令レジスタにスト
    アするステップと、 デコード・サイクル中に、現RISC命令内の命令コー
    ド・フィールドに応答して、前記のRISC命令をデコ
    ードし、前記の現RISC命令がアドレス生成を必要と
    する命令である場合には第1のイネーブル信号を提供す
    るステップと、デコード・サイクル中に、現RISC命
    令内の命令コードに応答して、現RISC命令から変位
    アドレスを取り出し、かつ変位アドレスのビットを所定
    の量だけ位置合せして、位置合せ済みの変位アドレスを
    形成するステップと、 現RISC命令用のベース・アドレスと位置合せ済みの
    変位アドレスとを加算して、計算済みのアドレスを形成
    するステップと、 前記の第1イネーブル信号に応答して、計算済みのアド
    レスを、デコード・サイクル中に、現RISC命令用の
    メモリ・アドレスとして出力に供給するステップと を含むことを特徴とする方法。 (24)請求項23に記載の方法であって、前記の取出
    し及び位置合せのステップがさらに、前記の命令コード
    に応答して、選択信号を提供するステップを含み、前記
    の方法がさらに、前記の選択信号に応答して、現RIS
    C命令用のベース・アドレスを提供するために複数のア
    ドレス供給源のうちから1つを選択するステップを含む
    ことを特徴とする方法。 (25)請求項24に記載の方法であって、前記のベー
    ス・アドレス供給源が、汎用レジスタと命令アドレス・
    レジスタとを含み、前記の選択ステップが、前記の選択
    信号に応答して、現RISC命令がロードまたはストア
    ・タイプのRISC命令である可能性のあるときは汎用
    レジスタを選択し、また現RISC命令が分岐タイプの
    RISC命令である可能性のあるときは命令アドレス・
    レジスタを選択して、前記の現RISC命令用のベース
    ・アドレスを発生することを特徴とする方法。 (26)請求項23に記載の方法であって、前記の取出
    し及び位置合せのステップがさらに、 デコード・サイクル中に、命令コードに応答して、前記
    の選択信号と、現命令のフォーマットに基づく第2イネ
    ーブル信号とを生成するステップと、 前記の第2イネーブル信号に応答して、現命令から変位
    アドレスを取り出し、かつ変位アドレスのビットを、前
    記の第2信号によって決定される量だけ位置合せして、
    位置合せ済みの変位アドレスを生成するステップと を含むことを特徴とする方法。 (27)請求項26に記載の方法であって、さらに、変
    位アドレスのビットに対してビット・シフトと符号拡張
    を実行するステップを含むことを特徴とする方法。 (28)請求項23に記載の方法であって、前記のデコ
    ード及び提供のステップがさらに、 前記の命令コードに応答して、制御信号を発生するステ
    ップと、 前記の制御信号に応答して、ラッチの出力をある状態に
    セットして前記の第1イネーブル信号を発生し、かつ前
    記のRISC命令の後続の処理中に発生するリセット信
    号に応答して、ラッチ出力を第2の状態にリセットして
    前記の第1イネーブル信号を消去するステップと を含むことを特徴とする方法。
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 true JPH03216735A (ja) 1991-09-24
JPH063583B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100371927B1 (ja) * 1992-03-31 2003-02-12

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100371927B1 (ja) * 1992-03-31 2003-02-12

Also Published As

Publication number Publication date
EP0440908A3 (en) 1992-11-19
EP0440908A2 (en) 1991-08-14
JPH063583B2 (ja) 1994-01-12

Similar Documents

Publication Publication Date Title
US4777594A (en) Data processing apparatus and method employing instruction flow prediction
US6647489B1 (en) Compare branch instruction pairing within a single integer pipeline
JP2810211B2 (ja) データプロセッサの命令処理システム
US5287465A (en) Parallel processing apparatus and method capable of switching parallel and successive processing modes
US5649145A (en) Data processor processing a jump instruction
EP0689128B1 (en) Computer instruction compression
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
AU618142B2 (en) Tightly coupled multiprocessor instruction synchronization
US7473293B2 (en) Processor for executing instructions containing either single operation or packed plurality of operations dependent upon instruction status indicator
US5006980A (en) Pipelined digital CPU with deadlock resolution
US6061780A (en) Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
US5867684A (en) Method and processor that permit concurrent execution of a store multiple instruction and a dependent instruction
US4587632A (en) Lookahead stack oriented computer
US6449710B1 (en) Stitching parcels
US20060236080A1 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US20140075157A1 (en) Methods and Apparatus for Adapting Pipeline Stage Latency Based on Instruction Type
JPH03116235A (ja) 分岐処理方法及び分岐処理装置
JPH03116236A (ja) 例外処理方法及び例外処理装置
US5812809A (en) Data processing system capable of execution of plural instructions in parallel
US8671266B2 (en) Staging register file for use with multi-stage execution units
US4739470A (en) Data processing system
US6615339B1 (en) VLIW processor accepting branching to any instruction in an instruction word set to be executed consecutively
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
US5771366A (en) Method and system for interchanging operands during complex instruction execution in a data processing system
US6662298B2 (en) Method and apparatus for manipulation of non-general purpose registers for use during computer boot-up procedures