JPH06501805A - 複数型レジスタ・セットを採用したriscマイクロプロセッサ・アーキテクチャ - Google Patents
複数型レジスタ・セットを採用したriscマイクロプロセッサ・アーキテクチャInfo
- Publication number
- JPH06501805A JPH06501805A JP5502403A JP50240392A JPH06501805A JP H06501805 A JPH06501805 A JP H06501805A JP 5502403 A JP5502403 A JP 5502403A JP 50240392 A JP50240392 A JP 50240392A JP H06501805 A JPH06501805 A JP H06501805A
- Authority
- JP
- Japan
- Prior art keywords
- register
- boolean
- instruction
- integer
- given
- 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
Links
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。
Description
【発明の詳細な説明】
複数型レジスタ・セットを採用した
RISCマイクロプロセッサ・アーキテクチャ発明の背景
発明の分野
本発明は一般的にはマイクロプロセッサに関し、さらに具体的には、複数の対称
レジスタ・セットを備えたRISCマイクロプロセッサに関する。
以下に列挙した米国特許出願は本件特許出願と同時に米国特許出願され、係属中
のものであるが、これらの米国特許出願に開示されており、かつそれぞれに対応
して出願された日本での特許出願に開示されている事項は、その出願番号を本明
細書で引用することにより本明細書の一部を構成するものとする。
1、発明の名称「高性能RIS(:マイクロプロセッサ・アーキテクチ’FJ
(High−Performance RISCMicroprocessor
Architecture) SC/5erialNo、07/727,00
6.1991年7月8日出願、発明者Le T、Nguyen他、およびこれに
対応する特願平−号。
2、発明の名称「拡張可能RISCマイクロプロセッサ・アーキテクチャJ (
Extensible RISCMicroprocessorArchite
cture) SC/5erial No、07/727,058 、 199
1年7月8日出願、発明者Le T、Nguyen他、およびこれに対応する特
願平−号。
3、[アーキテクチャ上の依存関係を隔離したRISCマイクロプロセッサ・ア
ーキテクチャJ (RISCMicroprocessor Architec
ture with l5olatedArchitectural Depe
ndenciesl SC/5erialNo、07/726,744 、19
91年7月8日出願、発明者Le T、 Nguyen他、およびこれに対応す
る特願平−号。
4、発明の名称「高速トラップと例外状態をインプリメントしたRISCマイク
ロプロセッサ・アーキテクチャJ (RISCMicroprocessor
ArchitectureImplementing Fast Trap a
nd Exception 5tate)SC/5erial No、07/7
26,942 、1991年7月8日出願、発明者Le T、Nguyen他、
およびこれに対応する特願平−号。
5、発明の名称「シングル・チップ・ページ・プリンタ・コントローラJ (S
ingle Chip Page Pr1nterController) S
C/5eial No、07/726,929.1991年7月8日出願、発明
者Derek J、Lentz他、およびこれに対応する特願平−号。
6、発明の名称「複数の異種プロセッサをサポートすることのできるマイクロプ
ロセッサ・アーキテクチャJ (Microprocessor Archit
ecture Capable ofSupporting Mutliple
Heterogeneous Processors)SC/5erial
No、07/726,893.1991年7月8日出願、発明者Derek J
、Lentz他、およびこれに対応する特願平−号。
なお、本明細書の記述は本件出願の優先権の基礎たる米国特許出願07/726
.773号の明細書の記載に基づくものであって、当該米国特許出願の番号を参
照することによって当該米国特許出願の明細書の記載内容が本明細書の一部分を
構成するものとする。
背景の説明
マイクロプロセッサをベースとするコンピュータ・システムは、主メモリ記憶装
置および補助永続記憶装置の通常の補強に加えて、1つまたは2つ以上の汎用デ
ータ・レジスタ、1つまたは2つ以上のアドレス・レジスタ、および1つまたは
2つ以上のステータス(状況)フラグをも備えているのが代表的である。従来の
システムには、整数データを格納してお(ための整数レジスタと浮動小数点デー
タを格納しておくための浮動小数点レジスタを備えているものもある。ステータ
ス・フラグは、最近に実行されたオペレーションの結果としてのある種の条件を
示すために使用されているのが代表的である。一般的には、ステータス・フラグ
としては、前のオペレーションにおいて、キャリー(桁上げ)が生じたか否か、
負数が生じたか否か、および/またはゼロが生じたか否かを示すものがある。
これらのフラグは、プログラム制御のフロー(流れ)内の条件付きブランチ(分
岐)の結果を判定する際に役立っている。例えば、1番目の数を2番目の数と比
較し、これらの2つの数が等しいことを条件として、あるサブルーチンへブラン
チしたい場合には、マイクロプロセッサは他方から一方を減算し、該当する条件
フラグをセットまたはクリアすることによって2つの数を比較することができる
。減算の結果の数値はストアしておく必要はない。そのあと、ゼロ・フラグのス
テータスを条件として、条件付きブランチ命令を実行させることができる。この
方式は簡単に実現できるが、柔軟性と威力に欠けている。いったん比較が行われ
ると、該当のフラグに基づく条件付きブランチを行う前に、それ以後の数値その
他のオペレーションを行うことができない。もし行うと、比較の結果得た条件フ
ラグ値を途中に置かれた命令が重ね書きするので、正しくないブランチが行われ
ることになる。この方式は、上に示した単純な等価比較例とは異なり、もっと複
雑なブランチ・テストを行うことが望ましい場合には、さらに複雑になる。
例えば、1番目の数が2番目の数より大で、3番目の数が4番目の数より小で、
5番目の数が6番目の数と等しい、という条件が満たされたときだけ、プログラ
ムをサブルーチンにブランチさせる場合を考えてみる。この場合、従来のマイク
ロプロセッサでは、条件付きブランチが途中に大量に配置された長い比較の列を
実行する必要がある。比較とブランチがシリアルになったこの方式の特に望まし
くない特徴は、命令がバイブライン化したどのマイクロプロセッサにも観察され
ている。
バイブライン方式マイクロプロセッサでは、どの時点においても2つ以上の命令
が実行されており、複数の命令がどの瞬時においても異なる実行ステージに置か
れている。これにより、スルーブツトが大幅に向上している。代表的なバイブラ
イン方式マイクロプロセッサでは、パイプライン・ステージは、(a)命令のフ
ェッチ、(b)命令のデコード、(C)命令のオペランドの取得、(d)命令の
実行、(e)結果のストアからなっている。問題が起こるのは、条件付きブラン
チ命令がフェッチされるときである。そのようなケースとして、オペランドをま
だパイプラインに残っているオペレーションから得るものとする場合に、オペラ
ンドがまだ計算されていないので、条件付きブランチの条件がまだテストできな
い場合がある。この結果、「パイプライン停止J (pipeline 5ta
ll)が起こり、プロセッサの速度が大幅に低下することになる。
従来のマイクロプロセッサ・ベースのシステムのもう1つの欠点は、いかなるデ
ータ・タイプ(データ型)であっても、レジスタ・セットが1つしか備わってい
ないことである。従来のアーキテクチャでは、どのデータ・タイプにおいても、
レジスタの個数を増やすことが望ましいために、どのタイプのレジスタ・セット
の場合であっても、そのセットを大きくすることだけが解決策であった。この結
果、アドレス指定上の問題、アクセス衝突という問題、および対称上の問題が起
こり得る。
同じように注目すべきことは、従来のアーキテクチャでは、どのレジスタ・セッ
トの場合も、数値データ・タイプが1つに限定されていることである。種々の従
来システムでは、汎用レジスタに格納できるのは、数値データかアドレス「デー
タ」のどちらかである。しかし、本明細書で用いている「データ」の用語にはア
ドレスは含まれていない。そのようにした意図を理解しやすくするために、2つ
の従来システムを参照して説明する。インテル8085マイクロプロセツサは、
数値データの2バイトか1個の2バイト・アドレスのどちらかを格納するために
使用できるレジスタ・ベア“HL“を備λている。本発明による改善はこの問題
を対象にしていない。もう1つはインテル80486マイクロプロセツサであり
、これは整数データ型の汎用レジスタ・セットと浮動小数点レジスタ・セットを
備えているが、各セットはそれぞれのデータ・タイプが限定されており、少な(
とも算術論理演算ユニットが直接にレジスタを使用することを目的としている。
このことは、マイクロプロセッサが両方のデータ・タイプと係わりがないオペレ
ーション(演算)を実行するときは、使用可能なチップ・エリアなどの、マイク
ロプロセッサの資源を無駄に消費することになる。
例えば、ユーザ・アプリケーションは専ら整数型オペレーションと係わりがある
ことが多く、浮動小数点型オペレーションを実行することはまったくない。この
種のユーザ・アプリケーションが浮動小数点レジスタを備えた従来のマイクロプ
ロセッサ(80486など)で実行されるときは、これらの浮動小数点レジスタ
はその全実行期間中遊んだままになっている。
従来のマイクロプロセッサのレジスタ・セット・アーキテクチャのもう1つの問
題は、ユーザ・アプリケーションとオペレーティング・システム・カーネルのよ
うにアクセス特権レベルが高いエンティティとの間でコンテキスト・スイッチン
グまたはステート・スイッチングを行うときに観察されている。マイクロプロセ
ッサ内の制御がコンテキスト、モード、またはステートをスイッチするとき1.
制御が渡されたオペレーティング・システム・カーネル(1<ernel)また
は他のエンティティは、ユーザ・アプリケーションがオペレーションに使用した
のと同じデータについてオペレーションしないのが普通である。従って、データ
・レジスタには、制御を受け取った新しいエンティティには無用なデータ値が格
納されるが、その値はユーザ・アプリケーションに制御が返されるまで残してお
かなければならないのが普通である。カーネルは、一般的には、独自に使用する
レジスタをもっていなければならないが、どのレジスタが現在ユーザ・アプリケ
ーションによって使用中であるかをカーネルに知らせる方法がない。自身のデー
タ用にスペースを確保するためには、カーネルはスワップ・アウトするか、さも
なければ、レジスタのあらかじめ定めたサブセットの内容をストアしなければな
らない。この結果、特に、カーネルが制御を繰返し要求し、制御を保持している
期間が短時間の場合には、オーバヘッドとして負担すべき処理時間の損失が膨大
なものとなる。
上記に関連して注目すべきことは、従来のマイクロプロセッサでは、「大規模な
」コンテキスト・スイッチを行う必要があるとき、マイクロプロセッサが一般的
に大多数の処理サイクルを含めて、さらに大量の処理資源を拡張し、全データと
ステート情報をセーブしてからスイッチを行う必要があったことである。コンテ
キストをスイッチ・バックするときは、システムを以前の状態に復元するために
、パフォーマンスを犠牲にするという代価を払わなければならなかった。例えば
、マイクロプロセッサが2つのユーザ・アプリケーションを実行する場合、各ア
プリケーションが各データ・タイプのレジスタの完全な補強を必要とし、しかも
条件設定オペレーションや数値計算の種々のステージに置かれていると、一方の
ユーザ・アプリケーションから他方ヘスイッチするたびに、スワツピングを行う
か、さもなければシステム内のすべてのデータ・レジスタとステート・フラグの
内容をセーブしておく必要がある。この結果、オペレーションに伴うオーバヘッ
ドが大量に発生することは明らかであり、特に、レジスタをセーブしてお(必要
のある主記憶装置や補助記憶装置がマイクロプロセッサ自体よりも著しく低速の
場合には、大幅な性能低下をもたらすことになる。
以上の事実から明らかになったことは、複合条件(complex condi
tior+)を構成する各種条件を途中に条件付きブランチを介在させないで計
算することを可能にする、改良型マイクロプロセッサ・アーキテクチャを開発す
ることが望ましいことである。さらに、明らかになったことは、多数の単純な条
件を並列に計算できるようにすることが望ましく、そうすれば、マイクロプロセ
ッサのスルーブツトが向上することである。
また、明らかになったことは、どのデータ・タイプの場合も、レジスタ・セット
を複数にすることが望ましいことである。
さらに、望ましいことは、使用可能な整数レジスタが必要とする整数データ量を
最適に格納するのに不十分であった場合に、マイクロプロセッサの浮動小数点レ
ジスタを整数レジスタとして使用できるようにすることである。特に、明らかに
なったことは、このようなタイプ変更をユーザ・アプリケーションには完全に見
えない(transparent)ようにすることが望ましいことである。
また、非電に望ましいことは、ユーザ・レジスタのサブセットを使用するのでは
なく、カーネルが使用するために予約した専用レジスタ・サブセットを備えたマ
イクロプロセッサを開発し、この新しいレジスタ・セットを、これらのレジスタ
によって代用されたレジスタ・サブセットと全く同じようにアドレス指定できる
ようにすることであり、そうすれば、カーネルがユーザ・アプリケーションと同
じレジスタ・アドレス指定方式を使用できることである。さらに明らかになった
ことは、マイクロプロセッサの資源を最大限に利用するためには、2つのレジス
タ・サブセット間の切替えをマイクロプロセッサのオーバヘッドとなるサイクル
を必要としないで行うことが望ましい。
もう1つ明らかになったことは、「大規模な」コンテキスト・スイッチを最小の
オーバヘッドで行えるようにするマイクロプロセッサ・アーキテクチャにするこ
とが望ましいことである。これに関連して望ましいことは、各タイプのレジスタ
・セットのバンクを複数にすることを可能にするアーキテクチャにすることであ
り、そうすれば、2つまたはそれ以上のユーザ・アプリケーションをマルチタス
キング環境で、あるいはその他の「同時実行」モードで、稼働させることができ
、各ユーザ・アプリケーションは少な(ともレジスタの1バンク全体に独占的に
アクセスできることである。また、明らかになったことは、レジスタ・アドレス
指定方式を、レジスタ・バンク間ではなく、ユーザ・アプリケーション間で同じ
にすることが望ましく、そうすれば、ユーザ・アプリケーションを可能な限り単
純化することができ、また、レジスタ・バンク間の切替えをハードウェアでサポ
ートしたシステムにすれば、ユーザ・アプリケーションは現在使用中のレジスタ
・バンクがどれであるかを意識しないで済み、また他のレジスタ・バンクや他の
ユーザ・アプリケーションの存在さえも意識しないで済むことである。
本発明の上記およびその他の利点は、添付図面を参照して詳述する本発明の説明
および請求の範囲から理解されるはずである。
発明の概要
本発明によるレジスタ・ファイル・システムは、整数レジスタの第1サブセツト
と第2サブセツトおよびシャドウ・サブセット(shadow 5ubset)
を含む整数レジスタ・セット、整数レジスタまたは浮動小数点レジスタとして個
別的に使用できるタイプ変更可能(re−typable)なレジスタ・セット
および個別的にアドレス可能なプール・レジスタのセットを備えている。
本発明は整数機能ユニット(integer functionalunit)
と浮動小数点機能ユニット(floating pointfunctiona
l unit)を備え、これらのユニットは整数レジスタ・セットをアクセスす
る整数命令を実行し、複数のモードで動作する。どのモードにおいても、命令は
、整数レジスタの第1サブセツトへの通常アクセス権が許可されている。第1モ
ードでは、命令は、第2サブセツトへの通常アクセス権が許可されている。しか
し、第2モードでは、第2サブセツトへのをアクセスを試みる命令には、第2サ
ブセツトではな(、シャドウ−サブセットをアクセスする許可が与えられる。
これは、命令には見えない(transparent)形で行われる。従って、
どのモードで実行されるかを意識しないでルーチンを書(ことができ、システム
・ルーチン(これは第2モードで実行される)は、少なくとも第2サブセツトを
見かけ上自由に使用することができるので、第2サブセツトの内容(第1モード
で実行されているユーザ・プロセスが使用中の場合がある)をセーブするときに
生じるオーバヘッドを負担しないで済む。
本発明によれば、さらに複数の整数レジスタ・セットが用意されている。これら
のレジスタ・セットは、命令中のフィールドで指定されるようにして、個別的に
アドレス指定が可能である。レジスタ・セットは読取りボートと書込みボートを
含んでおり、これらはマルチプレクサによってアクセスされる。この場合、マル
チプレクサはレジスタ・セットの内容、つまり、命令中のフィールドの指定によ
って制御される。
これらの整数レジスタ・セットの1つは、浮動小数点レジスタ・セットとしても
使用可能である。本発明の1実施例では、このセットは倍精度浮動小数点データ
を収容するために64ビツト幅になっているが、下位の32ビツトだけが整数命
令によって使用される。
本発明によれば、プール演算を実行するための機能ユニットが備わっており、さ
らに、プール演算の結果を保持しておくためのプール・レジスタ・セットが用意
されているので、専用の固定ロケーション・ステータス・フラグが不要になって
いる。整数機能ユニットと浮動小数点機能ユニットは数値比較命令を実行し、こ
れらの命令は比較の結果を収めておくプール・レジスタをそれぞれ指定している
。プール機能ユニットはプール組合せ命令(Boolean combinat
ionalinstruction)を実行し、そのソースと宛先はプール・レ
ジスタ・セットの中の指定されたレジスタになっている。従って、本発明によれ
ば、複合(complex)プール機能の1つの結果だけで条件付きブランチを
実行できるので、複合プール機能の基本的部分間に条件付きブランチを介在させ
る必要がな(、データ・プロセッサにおけるパイプライン混乱(pipelin
e disruption)を最小にすることができる。
二接に、システムには複数の同種レジスタ・バンクが設けられている。バンクは
どのプロセスまたはルーチンにも割り振ることができるので、ルーチン内の命令
はどのバンクで実行されるかを指定しないで、済むようになっている。
図面の簡単な説明
第1図は、本発明のマイクロプロセッサの命令実行ユニットを示すブロック図で
あり、レジスタ・ファイルの要素を示している。
第2図〜第4図は、それぞれ第1図に示した命令実行ユニットの浮動小数点、整
数およびプール部分を示す簡略ブロック図である。
第5図〜第6図は、それぞれ浮動小数点および整数部分を示す詳細図であり、レ
ジスタ・セット間の選択手段を示している。
第7図は、第1図に示した命令実行ユニットによって実行可能なマイクロプロセ
ッサ命令ワード例のフィールドを示す図である。
好適実施例の詳細な説明
■、レジスタ・ファイル
第1図は、本発明によるRISC(縮小命令セット計算)の命令実行ユニット(
IEL+) 10の基本構成要素を示す図である。IEU 10はレジスタ・フ
ァイル12と実行エンジン14を備えている。レジスタ・ファイル12は1つま
たは2つ以上のレジスタ・バンク16−0〜16−nを含んでいる。明らかなよ
うに、各レジスタ・バンク16は他のレジスタ・バンク16のすべてと同一構造
になっている。従って、以下では、レジスタ・バンク16−0だけを説明するこ
とにする。レジスタ・バンクはレジスタ・セットA 18、レジスタ・セットF
B 20 、およびレジスタ・セットC22を含んでいる。
一般的には、Cl5C(複合命令セット計算)命令をCl5Cプロセツサが実行
するには、従来のレジスタ・ファイルを使用すれば十分であるのに対し、本発明
によるRIS(:マイクロプロセッサは、RISC命令を実行する際に使用する
のに最適に構成されたレジスタ・ファイルを備えたことを特徴としている。レジ
スタ・ファイルを特別に適応したものにすると、マイクロプロセッサのIEUの
実行エンジン(execution engine)は、資源利用効率とロー・
スルーブツト(raw throughput)の面で性能を向上させることが
できる。一般的考え方はレジスタ・セットをRISC命令に合わせてチェーン(
調整)することであるが、実施例によっては、アーキテクチャのどのレジスタ・
セットでも対象とすることができる。
A、レジスタ・セットA
レジスタ・セットA 1gは整数レジスタ24(RA[31:Olを含んでおり
、その各々は整数値のデータを収めるように適応化されている。1実施例によれ
ば、各整数は32ビット幅になっている。RA []整数レジスタ24は複数の
第1整数レジスタ26 (RA[23:0])と複数の第2整数レジスタ28
(RA[31:24]1から構成されている。RA[]整数レジスタ24は各々
が同一構成になっており、整数レジスタ・セット24内の固有アドレス(uni
que address)による場合でも、各々が同じ方法でアドレス可能にな
っている。例えば、第1整数レジスタ30(R,A[0])は整数レジスタ・セ
ット24内のゼロ・オフセットにアドレス指定することが可能である。
RA[Olは常に値がゼロになっている。これは、ユーザ・アプリケーションや
他のプログラムは他の定数値よりも定数値ゼロを使用することが多いことが観察
されてきたためである。従って、クリア、比較その他の目的のために、ゼロがい
つでも即時に使用できるようになっていることが望ましい。特定の値に関係なく
、任意のレジスタに一定の配線(hard−wired) シた値を入れておく
と得られるもう1つの利点は、その任意のレジスタを、結果をセーブしておく必
要のない命令の宛先として使用できることである。
また、このことは、固定レジスタ(fixed register)はデータに
依存する遅延の原因となることがないことも意味する。データ依存関係が起こる
のは、「スレーブ」命令がそのオペランドの1つまたは2つ以上のために、「マ
スタ」命令の結果を必要とするときである。パイプライン方式プロセッサでは、
これはバイブラインを停止(stall)させる原因となる。例えば、マスク命
令は、コード列の中にスレーブ命令よりも早(現れる場合であっても、実行時間
が著しく長(なることがある。このことから容易に理解されるように、スレーブ
の「インクリメントとストア」命令がマスクの「4倍ワード整数除算」命令の結
果データに基づいて実行される場合は、スレーブ命令がフェッチされ、デコード
されたあと、マスク命令が実行を終えるまで、多数のクロック・サイクルの間、
実行を待たされることになる。しかし、状況によっては、マスク命令の数値結果
は必要とされず、マスク命令は条件コード・フラグをセットするといった、他の
目的に実行される場合もある。マスク命令の宛先がRA[0]ならば、数値結果
は事実上破棄されることになる。IEU 10のデータ依存関係チェッカ(図示
せず)は、マスク命令の最終結果、つまり、ゼロはすでに分がっているので、ス
レーブ命令を遅延させる原因とはならない。
整数レジスタ・セットA 24はシャドウ・レジスタ・セット32 (RT[3
1:24])も備えている。各シャドウ・レジスタは整数値を保持することがで
き、l実施例では、32ビット幅にもなっている。各シャドウ・レジスタは、各
整数レジスタがアドレス指定できるのと同じように、オフセットとしてアドレス
指定することができる。
最後に、レジスタ・セットAはIEUモード整数スイッチ(mode inte
ger 5w1tch)34を備えている。このスイッチ34は、他の同種の要
素と同じように、対応する論理的機能がレジスタ・セット内に用意されている限
り、物理的にスイッチとして実現する必要はない。
IEUモード整数スイッチ34はライン36を介して整数レジスタの第1サブセ
ツト26に接続され、ライン38を介して整数レジスタの第2サブセツト28に
、ライン40を介してシャドウ・レジスタ32に接続されている。レジスタ・セ
ットA1gへのアクセスはすべてライン42上のIEUモード整数スイッチ34
を通して行われる。第1サブセツトRA[23:Ol内のレジスタを読み書きす
るためのアクセス要求はIEUモード整数スイッチ34を通して自動的に渡され
る。しかし、第1サブセツトRA[23:Olの外側のオフセットを使用した整
数レジスタへのアクセスは、実行エンジン14の動作モードに応じて第2サブセ
ツトRA[31:24]に向けられるか、シャドウ・レジスタRT[31:24
] に向けられる。
IEUモード整数スイッチ34は実行エンジン14内のモード制御ユニット44
の制御を受けて動作する。モード制御ユニット44はIEU 10に関する該当
ステートまたはモード情報を、ライン46経由でIEUモード整数スイッチ34
へ送る。実行エンジンがカーネル(kernel)・モードへの移行といったコ
ンテキスト・スイッチを実行すると、モード制御ユニット44はIEUモード整
数スイッチ34を次のように制御する。つまり、第2サブセツトRA[31:2
4]への要求は、整数セット内で要求した同じオフセットを使用してシャドウR
T[31:24]ヘリダイレクト(re−directed)される。従って、
オペレーティング・システム・カーネルやそのとき実行中の他のエンティティは
、見五立一旦第2サブセットR,A[31:24]をアクセスすることができる
ので、第2サブセツトRA[31:24]の内容を主メモリにスワップ・アウト
したり、第2サブセツトRA[31:24] をスタック上にブッシニしたりす
るとき生じるオーバヘッドがな(なり、また他の従来のレジスタ格納手法を使用
しないで済むことができる。
実行エンジン14が通常ユーザ・モードに戻って、制御が当初に実行中のユーザ
・アプリケーションに渡されると、モード制御ユニット44は、アクセスが再び
第2サブセツトRA[31:241に向けられるようにIEUモード整数スイッ
チ34を制御する。一実施例では、モード制御ユニット44は、IEU 10に
おける割込み許可の現在の状態に応じて動作するようになっている。また、−実
施例では、実行エンジン14はプロセッサ・ステータス・レジスタ(PSR)
(図示せず)を備えており、このレジスタは、割込みが許可されているか、禁止
されているかを示した1ビツト・フラグ(PSR[7] )をもっている。従っ
て、IEUモード整数スイッチ34とPSR内の割込み許可フラグとは、ライン
46で結合するだけでよい。割込みが禁止されている間は、IEU 10は整数
RA[23:0]へのアクセス権を保持しているので、ユーザ・アプリケーショ
ンの各種データの分析を行うことができる。これにより、デバッグ、エラー報告
、またはシステム・パフォーマンス分析を向上させることができる。
B、レジスタ・セットFB
タイプ変更可能な(re−typable)レジスタ・セットFB 20とは、
浮動小数点レジスタ48 (RF[31:Ol)および/または整数レジスタ5
0 (RB[31:Ol)を含んでいるものと考えてよい。いずれかのデータ・
タイプの場合も、一方が他方を除外することを意味しないときは、本明細書では
、RFB [] という用語を用いることにする。一実施例では、浮動小数点レ
ジスタRF []は、整数レジスタRB[]と同じ物理的シリコン・スペースを
占めている。また、一実施例では、浮動小数点レジスタRF[]は64ビット幅
に、整数レジスタRB[]は32ビット幅になっている。このことから理解され
るように、倍精度浮動小数、点数が必要でなければ、レジスタ・セットRFB
[]を32ビット幅の構成にすると、各浮動小数点レジスタの余分の32ビツト
用に必要になるシリコンの面積を節約できるという利点がある。
レジスタ・セットRFB []中の個々のレジスタの各々は、浮動小数点値と整
数値のいずれかを保持することができる。レジスタ・セットRFB [1には、
オプションとして、浮動小数点値が整数値であるものとして、あるいは整数値が
浮動小数点値であるものとして、誤ってアクセスされるのを防止するハードウェ
アを設けることが可能である。しかし、一実施例では、レジスタ・セットRFB
[1を単純化するために、個々のレジスタが誤った使い方をされるのを防止す
ることは、ソフトウェア設計者に任すようにしている。従って、実行エンジン1
4は、レジスタ・セットRFB[] までのオオフセラを指定して、ライン52
上にアクセス要求を出すだけであり、あるオフセットに置かれたレジスタが浮動
小数点レジスタとして使用されるものか、整数レジスタとして使用されるものか
は指定しない。実行エンジン14内では、各種エンティティはレジスタ・セット
RFB []に用意されている64ビット全部を使用することも、例えば、整数
演算や単精度浮動小数点演算において、下位32ビツトだけを使用することもで
きる。
最初のレジスタRFB[Ol 51は、RB[0]が32ビツト整数のゼロ(0
000,、、)となり、RF[Olが64ビット浮動小数点のゼロ(00000
000,、、、)となる形式で、定数値のゼロを格納する。このようにすると、
RA [0]に対して上述したのと同じ利点が得られる。
C,レジスタ・セットC
レジスタ・セットC22は、複数のプール・レジスタ(RC: [31:0]
)から構成されている。RC[]は「条件ステータス・レジスタJ (CSR)
とも呼ばれている。プール・レジスタはいずれも構造とアドレス指定方式が同じ
になっている。ただし、各レジスタはRC[]内の固有アドレスまたはオフセッ
トに個別的にアドレスすることが可能である。
一実施例では、レジスタ・セットCはさらに「旧条件ステータス・レジスタJ
fPcsR) 60を含んでおり、レジスタ・セットCはC3Rセレクタ・ユニ
ット62も備えている。このユニットはモード制御ユニット44に応答して、C
3R54とPC3R60を交互に選択する。この実施例では、C3Rは割込みが
許可されているとき使用され、PC3Rは割込みが禁止されているとき使用され
る。
CR5とPC5Rは他の点ではすべて同じである。また、この実施例では、割込
み禁止とセットされると、CSRセレクタ・ユニット62はCBSの内容をブツ
シュしてPC3Rに入れ、PC3Rの旧内容に重ね書きする。割込みが再び許可
されると、C3Rセレクタ・ユニット62はPC5Rの内容をポツプしてCSR
に戻す。他の実施例では、RA[31:4]およびRT[31:24] で行わ
れるのと同じように、CSRとPC5Rの間でアクセスを交互に行うことが望ま
しい場合がある。いずれの場合も、PC3Rは常に32ピツト「特殊レジスタ」
として使用することが可能である。
プール・レジスタは、従来公知のマイクロプロセッサにおけるプール・レジスタ
と異なり、いずれも専用条件フラグになっていない。つまり、C3R54は、専
用キャリー・フラグも、専用マイナス・フラグも、比較が一致したことまたは減
算結果がゼロであることを示す専用フラグも含んでいない。その代わりに、どの
プール・レジスタも任意のプール・オペレーションのプール結果の宛先となるこ
とができる。他のレジスタ・セットの場合と同じように、最初の、プール・レジ
スタ58 (RC[Olは常に値ゼロが入るので、RA[0] で上述したのと
同じ利点が得られる。好適実施例では、各プール・レジスタは1ビツト幅で、1
つのプール値を示すようになっている。
Il、実行エンジン
実行エンジン14は1つまたは2つ以上の整数機能ユニット66.1つまたは2
つ以上の浮動小数点機能ユニット68、および1つまたは2つ以上のプール機能
ユニット70を備えている。これらの機能ユニットは、以下に説明するように命
令を実行する。バス72.73.75はIEU 10の種々エレメントを結んで
おり、それぞれはデータ経路、アドレス経路、および制御経路を表しているもの
とする。
A、命令の形式
第7図は、実行エンジン14に実行させることができる整数命令の形式(フォー
マット)を示す一例である。理解されるように、すべての命令が図示の形式に厳
密に従う必要はな(、データ処理システムには命令フエツチャとデコード(図示
せず)が含まれており、これらは形式の異なる命令を処理するように構成されて
いる。第7図には、理解を容易にするために、1つの例だけが示されてい゛る。
本明細書全体を通して、符号[]は命令の各ビットを示すために用いられている
。
I [31:30]は、実行エンジン14の将来の実装に備えて予約されている
。I[29:26]は特定の命令の命令クラスを示している。表1は、本発明に
よって実行される命令の各種クラスを示すものである。
(以下余白)
本発明で特に重要な命令クラスは、クラス0−3のレジスタ間命令とクラス13
のプール・オペレーションである。他のクラスの命令もレジスタ・ファイル12
を処理するが、これらのクラスを詳しく説明しな(でも、本発明を十分に理解で
きると思われるので、説明を省略する。
I [25]はBOと名付けられ、これは宛先レジスタがレジスタ・セットAに
あるか、レジスタ・セットBにあるかを示している。I[24:22]は、ある
命令クラス内でどの特定機能を実行すべきかを指定した命令コード(opcod
e)である。例λば、レジスタ間命令クラス内では、命令コードは「加算」を指
定することができる。
I [21]は、命令の実行時に使用すべきアドレス指定モード(addres
sing mode) 、つまり、レジスタ・ソースのアドレス指定または即値
ソース (immediates o u r c e )のアドレス指定を指
定している。I[20:16]は、宛先レジスタをBOで指定したレジスタ・セ
ット内のオフセットとして指定している。I[15]はBlと名付けられ、これ
は第1オペランドがレジスタ・セットAから得られるか、またはレジスタ・セッ
トBから得られるかを示している。I[14:10]は、第1オペランドを得る
ときのレジスタがどれだけオフセットしているかを措定している。I[9:8]
は命令コードI[24:22]の延長部分であり、機能の選択を指定している。
I[7:6]は予備である。■[5]はB2と名付けられ、命令の第2オペラン
ドがレジスタ・セットAから得られるか、またはレジスタ・セットBから得られ
るかを指定している。最後に、I[4:0]は、第2オペランドを得るときのレ
ジスタがどれだけオフセットしているかを指定している。
第1図に示すように、整数機能ユニット66と浮動小数点機能ユニット68はそ
れぞれ整数比較命令と浮動小数点比較命令を実行する機能を備えている。比較命
令の命令形式は第7図に示されているものとほぼ同じであるが、各フィールドは
多少異なる名前を付けて区別しておくと便利である。I[20:16Jは結果を
ストアしておくべき宛先レジスタを指定しているが、アドレス指定モード・フィ
ールドr [21]はレジスタ・セットAとBとの間の選択を行わない。その代
わりに、アドレス指定モード・フィールドは比較の第2ソースがレジスタに入っ
ているか、即値データ(immediate data)であるかを示している
。比較はプール型命令であるので、宛先レジスタは常にレジスタ・セットCに置
かれている。他のフィールドの働きは第7図に示されている。
整数および浮動小数点機能ユニットでプール・オペレーションを実行するとき、
命令コードと機能選択フィールドは2オペランドを比較する際にどのプール条件
をテストするかを指定している。整数および浮動小数点機能ユニットは数値比較
に関するIEEE標準を完全にサポートしている。
IEU 10はロード/ストア・マシン(load/storemachne)
である。つまり、あるレジスタの内容がメモリにストアされるか、またはメモリ
から読み出されるとき、どのメモリ・ロケーションをストアまたはロードのソー
スまたは宛先とするかを判断するためにアドレス計算をしなければならない。そ
のような場合には、宛先レジスタ・フィールドI[20:16]はロードまたは
ストアの宛先またはソースとなるレジスタを指定している。ソース・レジスタ1
フイールドI[14:10]は、メモリ・ロケーションのベース・アドレスを収
めているレジスタがセットAのものか、あるいはセットBのものかを指定してい
る。一実施例では、ソース・レジスタ2フイールドI[4:O]はインデックス
またはベースからのオフセットを収めているレジスタがセットAのものか、また
はセットBのものかを指定している。
ロード/ストア・アドレスはベースにインデックスを加えるとまる。別のモード
では、I[7:O]はインデックスとしてベースに加えるべき即値データを収め
ている。
B、命令実行ユニットとレジスタ・セットのオペレーション
この分野に精通したものならば理解されるように、整数機能ユニット66、浮動
小数点機能ユニット68、およびプール機能ユニット70は、実行しようとする
現命令の命令クラス・フィールド、命令コード・フィールド、および機能選択フ
ィールドの内容に応じて動作する。
1、整数オペレーション
例えば、命令クラス、命令コード、および機能選択が整数レジスタ間加算を実行
することを示しているときは、整数機能ユニットはそれを受けて指示されたオペ
レーションを実行するのに対し、浮動小数点機能ユニットとプール機能ユニット
はそれを受けてもそのオペレーションを実行しない。しかし、本件特許出願と同
時に出願された係属中の米国特許出願(冒頭に列挙)から理解されるように、浮
動小数点機能ユニット68は、浮動小数点と整数の両方のオペレーションを実行
する機能を備えている。また、これらの機能ユニットはいずれも2つ以上の命令
を同時に実行する構成になっている。
整数機能ユニット66は整数演算機能だけを備えている。整数演算を行うには、
一般的に、第1ソース、第2ソース、および宛先が必要になる。どの整数型命令
も、実行すべき特定のオペレーションを1つまたは2つ以上のソース・オペラン
ドで指定し、整数オペレーションの結果を特定の宛先にストアすることを指定す
る。ロード/ストア・オペレーションで使用されるアドレス計算のような、ある
種の命令では、ソースはベースおよびインデックスとして使用される。整数機能
ユニット66は第1バスに接続され、このバスを介して整数機能ユニット66は
スイッチングとマルチブレクシング制御Il (SMC)ユニットA 74およ
びSMCユニット876に接続されている。整数機能ユニット66によって実行
される各整数型命令はそのソースと宛先がレジスタ・セットAに置かれているか
、レジスタ・セットBに置かれているかを指定する。
以下では、IEU 10が整数型レジスタ間加算を実行する命令を機能フェッチ
・ユニット(図示せず)から受け取った場合を想定して説明する。各種実施例に
おいて、この命令はレジスタ・バンクを指定することができ、各ソースと宛先ご
とに別のバンクを指定することもできる。一実施例では、命令I[]は長さが3
2ビツトまでに制限されているので、どのレジスタ・バンク16−0〜16−n
が命令に関係しているかを示す標識は収められない。その代わりに、バック・セ
レクタ・ユニット78がどのレジスタ・バンクが現在アクティブであるかを制御
する。一実施例では、バンク・セレクタ・ユニット78は、IEU 10内のス
テータス・ワード(図示せず)中の1または2つ以上のバンク選択ビットに応答
して動作する。
整数型加算命令を実行するために、整数機能ユニット66は第1および第2ソー
ス・レジスタのI[14:10]およびr(4:Ol内のID(識別)に応動す
る。整数機能ユニット66は第1および第2ソース・レジスタのIDをそれぞれ
ボートS1およびS2から出力し、SMCユニットA 74とSMCユニットB
76に接続された整数機能ユニット・バス72上に送出する。一実施例では、
SMCユニットAとBはそれぞれ命令1[]からBO−2を受け取るように接続
されている。一実施例では、それぞれのBnに入っているゼロはレジスタ・セッ
トAを示し、1はレジスタ・セットBを示している。ロード/ストア・オペレー
ション時には、整数と浮動小数点機能ユニット66および68のソース・ボート
は、それぞれ、ベース・ボートBおよびインデックス・ボートエとして使用され
る。
指示されたレジスタ・セットから第1および第2オペランドをバス72上に得る
と、上述するように、整数機能ユニット66はこれらのオペランドについて指示
されたオペレーションを実行し、その結果をボートDから出力し、整数機能ユニ
ット・バス72上に送出する。
SMCユニットAとBはBOに応答して、その結果を該当するレジスタ・セット
AまたはBあてに送る。
SMCユニットBはさらに命令クラス、命令コード、および機能選択に応答し、
オペランドを浮動小数点レジスタRF []から読み取るか、整数レジスタRB
[]から読み取るか(あるいか結果をそのどちらにストアするか)を制御する。
上述したように、一実施例では、レジスタRF [1は64ビツト幅にできるの
に対し、レジスタRB []はわずか32ビット幅である。従って、SMCユニ
ットBはレジスタ・セットRFB []にワードを書くが、またはダブル・ワー
ドを書(かを制御する。SMCユニットAには、バス42上のデータ転送の幅を
制御する手段を設ける必要はない。
バス42上のすべてのデータは32ビツト幅であるが、レジスタ・セットAには
他の種類の複雑さが存在する。IEU 10は実行エンジン14のモード制御ユ
ニット44の制御に応答し、バス42上のデータをバス42経由でバス36、バ
ス38またはバス40に接続するかどうか、およびその逆に接続するかどうかを
制御する。
IEUモード整数スイッチ34はさらにI[20:16]、I[14:101、
およびI[4:Olに応答する。指示されたある宛先またはソースがRA[23
:Olにあれば、IEUモード整数スイッチ34は自動的にデータをライン42
と36との間に結合する。しかし、レジスタRA[31:24] に対しては、
IEUモード整数スイッチ24はライン42上のデータがライン38またはライ
ン40に接続されているかどうか、およびその逆に接続されているかどうかを判
断する。割込みが許可されているときは、IEUモード整数スイッチ34はSM
CユニットAを整数レジスタRA [31:24]の第2サブセツト28に接続
する0割込みが禁止されているときは、IEUモード整数スイッチ34はSMC
ユニットAをシャドウ・レジスタRT[31:24] に接続する。従って、整
数機能ユニット66内で実行される命令は、RA[31:24]をアドレス指定
すべきか、またはRT[31:24] をアドレス指定すべきかを意識する必要
はない。このことから理解されるように、SMCユニットAは、それが整数機能
ユニット66によってアクセスされるか、または浮動小数点機能ユニット68に
よってアクセスされるかに関係なく、同じように動作できるいう利点がある。
2、浮動小数点オペレーション
浮動小数点機能ユニット68は、命令のクラス、命令コード、および機能選択フ
ィールドを受けて動作し、浮動小数点オペレーションを実行する。Sl、 S2
、およびDボートは整数機能ユニット66で上述したように動作する。SMCユ
ニットBは、バス52経由で浮動小数点レジスタRF[]からの浮動小数点オペ
ランドに応答し、そして数値浮動小数点結果を浮動小数点レジスタRF[]に書
き込む。
3、プール・オペレーション
SMCユニットC80は命令I[]の命令クラス、命令コード、および機能選択
フィールドを受けて動作する。SMCユニットCは、比較オペレーションが数値
機能ユニット66または68の一方によって実行されたことを検出すると、SM
CユニットCはその比較を実行した機能ユニットのDボートにおいて示されたプ
ール・レジスタにバス56を介してプール・オペレーション結果を書き込む。
プール機能ユニット70は、整数および浮動小数点機能ユニット66と68とは
異なり、比較命令を実行しない。その代わりに、プール機能ユニット70は、プ
ール・レジスタ内容のビット単位の論理的組合せを、表2に列挙されたプール機
能に従って実行するのに使用されるだけである。
複数の同種プール・レジスタを用意し、その各々が個別的にプール・オペレーシ
ョンの宛先としてアドレス指定できるようにすると得られる本発明の利点につい
て、表3〜5を参照して説明する。表3は、条件付きブランチを複合(comp
lex)プール機能に基づいて実行するコード・セグメントの例を示すものであ
る。複合プール機能は論理和(OR)がとられる3つの部分からなっている。最
初の部分はさらに2つの部分からなり、これらは論理積(AND)がとられる。
表4は、従来マイクロプロセッサが表3の機能を実行するときの1つの類似方法
を疑似アセンブリ形式で示すものである。表4のコードは、表3のコードを処理
する少なくとも通常インテリジェント機能をもつコンパイラによって生成される
ものとして嘗がれている。つまり、コンパイラは、3部分のいずれがが真である
と、表3の2行目から4行目に表されている条件が渡されることを認識する。
表3の1行目の割当ては表4の1行目の「即値ロード」ステートメントによって
実行される0表3の2行目に表されている複合プール条件の最初の部分は表の4
の2行目〜5行目のステートメントで表される。
RA [2]がRA[3]に等しいかどうかをテストするには、表4の2行目の
比較ステートメントは、どのようにコーディングしたかに応じて、RA[3]か
らRA[2] を減算することあるいはその逆を実行し、減算の結果をストアす
る場合とストアしない場合がある。比較ステートメントによって実行される重要
な機能は、ゼロ、マイナス、およびキャリー・フラグがその結果に応じてセット
またはクリアされることである。
表4の3行目の条件付きブランチ・ステートメントは、RA [2]がRA[3
] と等しくなかったことを条件として、コードの後続部分へブランチする。2
つが等しくないと、ゼロ・フラグがクリアされるので、2番目のサブ部分を実行
する必要がない。表4の3行目に条件付きブランチ・ステートメントが存在する
ので、2行目の比較結果が分かるまでは、表4の後続ステートメントのフェッチ
、デコードおよび実行が禁止されるために、バイブライン停止(pipelin
e 5tall)が起こることになる。最初の部分(TESTI)の最初のサブ
部分が渡されると、表4の4行目の第2サブ部分はRA [4]をRA [5]
と比較するので、この場合も、該当ステータス・フラグがセットまたはクリア
されることになる。
RA[2] がRA [3] と等しく、RA [4)がRA [5] より大
きければ、複合プール機能の中の残りの2部分(TEST2とTEST3)をテ
ストする必要がな(、表4の5行目のステートメントは条件付きでラベルDOj
Fへブランチし、表4の”IF”の内側のオペレーションが実行される。しかし
、テストの最初の部分が失敗すると、”IF”と”ELSE”部分のどちらを実
行させるかを判定するために追加の処理が必要になる。
プール機能の第2部分は表4の6行目でRA[6]をRA (7) と比較する
ものであり、この場合も、該当ステータス・フラグがセットまたはクリアされる
。「より小さい」の条件がステータス・フラグによって指示されていると、複合
プール機能が渡され、その実行は即時にDOjFラベルへブランチすることがで
きる。従来の各種マイクロプロセッサでは、「より小さい」条件はマイナス・フ
ラグを検査することでテストすることが可能になっている。RA [7]がRA
[6] より小でなかったときは、テストの第3部分を実行する必要がある。表
4の8行目のステートメントはRA [8]をRA [9]と比較する。この比
較が失敗したときは、”ELSE”コードを実行させる必要がある。そうでなけ
れば、実行は表4の10行目の”IF”コードへフォールスルー(fallth
rough)するだけであり、そのあと”ELSE”コードの前後で別のジャン
プが行われることになる。表4の3.5.7および9行目の条件付きブランチは
それぞれが別々のパイプライン停止を引き起こすので、この複合プール機能を処
理するために必要な処理時間が大幅に増加することになる。
本発明のプール・レジスタ・セットCを採用するとスルーブツトが大幅に向上す
ることは、表5を特に参照すれば容易に理解されるはずである。
特に表5の2行目〜5行目に示すように、プール・レジスタ・セットCを使用す
ると、マイクロプロセッサは、途中にブランチを介在しないで3つのテスト部分
を連続して実行することができる。各プール比較は2つのオペランド、宛先、お
よびテストすべきプール条件を指定している。例えば、表5の2行目の比較はR
A[2]の内容をRA[3]の内容と比較し、その内容が等しいかをテストし、
比較結果のプール値をRC[11]にストアしている。表5に示すように、プー
ル機能の各比較はそれぞれの中間結集を別々のプール・レジスタにストアしてい
る。冒頭に列挙した関連特許出願から理解されるように、IELI 10はこれ
らの比較を2つ以上同時に実行する機能を備えている。
表5の2行目〜3行目の最初の2つの比較が完了すると、2つの各中間結果の論
理積(AND)が表3の6行目に示すようにとられる。その後、テストの最初の
部分の結果がRC[5]に格納される。プール機能の第2と第3サブ部分の結果
の論理和(OR)が表5の7行目に示すようにとられる。理解されるように、デ
ータ依存関係がないので、6行目のAND (論理積)と7行目のOR(論理和
)は並列に実行することができる。最後に、これら2つのオペレーションの結果
の論理和が表5の8行目に示すようがとられる。
表から理解されるように、表3の複合プール機能全体が真であるか、偽であるか
を示すプール値がRC[17]に収められる。その後、表5の9行目に示すよう
に、単純条件付きブランチを実行することが可能である。
表5に示すモードでは、プール・レジスタRC[1月がクリアで、複合機能が失
敗したことを示していると、”ELSE”コードへブランチする。コードの残余
部分は、表4に示すようなプール・レジスタがない場合と同じにすることができ
る。
プール機能ユニット70は他の機能ユニットと同じように、命令クラス、命令コ
ード、および機能選択フィールドに応動する。従って、この場合も、表5から理
解されるように、整数機能ユニットおよび/または浮動小数点機能ユニットは、
1行目〜5行目と133行目命令を実行し、プール機能ユニット70は6行目〜
8行目のプール・ビット単位結合命令 (Booleanbitwise co
mbination 1nstruction)を実行する。9行目〜12行目
の制御フローとブランチ命令はIEU 10のエレメント(第1図には示されて
いない)によって実行される。
IIl、データ経路
第2図〜第5図は、それぞれ、IEUの浮動小数点、整数、およびプール演算部
分内のデータ経路を示す詳細図である。
A、浮動小数点部分のデータ経路
第2図に示すように、レジスタ・セットFB 20はマルチボート・レジスタ・
セットである。一実施例では、レジスタ・セットFB 20は2つの書込みボー
トWFBO−1と2つの読取りボートRDFBO−4をもっている。第1図の浮
動小数点機能ユニット68は第2図のAlI3102、FALU 104、MO
LT 106、およびNULL 108から構成されている。レジスタ・セット
20とエレメント102〜108を除く第2図のすべてのエレメントは第1図の
SMCユニットBを構成している。
外部双方向データ・バスEX、、、DATA [1はデータを浮動小数点ロード
/ストア・ユニット122へ送る。即値浮動小数点データ・バスLFDjMED
[]は「即値ロード」命令からのデータを送る。他の即値浮動小数点データは
「即値加算」命令で必要となるものと同じバスRFFjIMEDおよびRFF2
−IMDE上を送られる。
データは「特殊レジスタ移動」命令を受けると、バスEJSR−DT []上に
も送られる。データは第3図に示す整数部分からバス114と120上を送られ
て(ることもある。
浮動小数点レジスタ・セットの2つの書込みボートWFBOとWFBIは、それ
ぞれ書込みマルチプレクサ110−0と110−1に結合されている。書込みマ
ルチプレクサ110は第3図の整数部分のALUOまたは5HFO; FALU
;!+1ULT 、 AlI3 : EXjJDT[]またはLDF−IME
D[] ;およびEX−o+vrA[] からデータを受け取る。当業者なら理
解されるように、各ボートからどの入力が選択されるかは制御信号(図示せず)
から判断され、入力データをどのレジスタに書くかはアドレス信号(図示せず)
から判断される。マルチプレクサの制御とアドレス指定は公知であるので、ここ
では、マルチプレクサまたはレジスタ・セットに関する詳しい説明は省略する。
浮動小数点レジスタ・セットの5つの読取りボートRDFBO〜RDFB4は、
それぞれ読取りマルチプレクサ112−0〜112−4に結合されている。読取
りマルチプレクサは、それぞれ、即値ロード・バイパス・バス126上のEXJ
R−DT [1またはLDF−IMED [] ;外部ロード・データをレジス
タ・セットFBをスキップさせる外部ロード・データ・バイパス・バス127;
非乗算整数オペレーションを実行するAlI3102の出カニ非乗算浮動小数点
オペレーションを実行するFALU 104.乗算オペレーションを実行するM
OLT 106 、それぞれ非乗算整数オペレーションとシフト・オペレーショ
ンを実行する第3図の整数部分のALUO140または5HFO144からもデ
ータを受け取る。読取りマルチプレクサ112−1と112−3はそれぞれRF
FI−IMED [1とRFF2−IMED []からもデータを受け取る。
浮動小数点部分内の各算術演算型ユニット102〜106は、第1および第2ソ
ース・マルチプレクサS1と52のそれぞれのセットから2つの入力を受け取る
。各ユニットALU2、FALUおよびMULTの最初のソースは読取りマルチ
プレクサ112−1または112−2の出力から得られ、2番目のソースは読取
りマルチプレクサ112−1または112−3の出力から得られる。 FALU
とMOLTのソースはバス114経由で第3図の整数部分からも得られる。
AlO2、FALU、およびMOLTの結果は書込みマルチプレクサllOへ送
り返されて浮動小数点レジスタRF[]にストアされ、読取りマルチプレクサ1
12へも送り返されて以後のオペレーションのオペランドとして再使用される。
FALUは浮動小数点比較オペレーションのプール結果を示す信号FALUJD
をも出力する。
FALUJDはFALUの内部ゼロ・フラグと符号フラグから1接に計算される
。
空白(null)バイト・テスタNULL 10gは、あるモードにあるとき、
AlO2の第1ソース・マルチプレクサからのオペランドについて空白バイト・
テスト操作を行う。NULL 108は、32ビツトの最初のソース・オペラン
ドに値がゼロのバイトが含まれているかどうかを示したプール信号NULLBJ
Dを出力する。
読取りマルチプレクサ112−0.112−1および112−4の出力はバス1
18経由で(第3図の)整数部分へ送られる。読取りマルチプレクサ112−4
の出力は、5TDT−FP [] ストア・データとして浮動小数点ロード/ス
トア・ユニット122へも送られる。
第5図はSlと52マルチプレクサのコントロールを示す詳細図である。図示の
ように、一実施例では、各S1マルチプレクサは命令I[]のビットB1を受け
て動作し、各32マルチプレクサは命令I[]のビットB2を受けて動作する。
Slと32マルチプレクサは各種機能ユニット用のソースを選択する。ソース
はレジスタ・ファイルのどちらかから得ることができ、これは命令自体の81と
82ビツトによって制御される。さらに、各レジスタ・ファイルは2つの読取り
ボートを備え、そこからソースを得ることもできるが、その制御は図示していな
いハードウェアで行われる。
B、整数部分のデータ経路
第3図に示すように、レジスタ・セットA 1gもマルチボートになっている。
一実施例では、レジスタ・セットA Illは2つの書込みボートWAO−1と
5つの読取りボートRDAO−4を備えている。第1図の整数機能ユニット66
は、第3図のALUO140、ALUI 142.5HFO144、およびNU
LL 146から構成されている。レジスタ・セットA 1gおよびエレメント
140−146を除(第3図のすべてのエレメントは第1図のSMCユニットA
を構成している。
外部データ・バスEX−DATA [1はデータを整数ロード/ストア・ユニッ
ト152へ送る。バスLDI−IMED [1上の即値整数データは「即値ロー
ド」命令を受けて送られる。他の即値整数データは「即値加算」などの非即値ロ
ード命令を受けてバスRFA1jMEDとRFA2−IMED上受けてバスEX
−3R−DT [1上にも送出される。データはバス116と118経由で浮動
小数点部分(第2図に図示)から送られてくる場合もある。
整数レジスタ・セットの2つの書込みボートWAOとWAIはそれぞれ書込みボ
ート148−0と148−1に結合されている。書込みマルチプレクサ148は
、(第2図の)浮動小数点部分のFALUまたはMOLT 、 ALUO。
ALUI : 5HFO; EX−SR−DT[]またはLDI−IMED [
] ;およびEX−DATA [1からデータを受け取る。
整数レジスタ・セットの5つの読取りボートRDAO〜RDA4はそれぞれ読取
りマルチプレクサ150−0〜150−4に結合されている。各読取りマルチプ
レクサは即値ロード・バイパス・バス160上のEXJR−0丁[1またはLD
I−IMED[] ;外部ロード・データがレジスタ・セットAをスキップする
ことを可能にするロード外部データ・バイパス・バス154 ; ALUO;
ALUI : 5HFO;および(第2図の)浮動小数点部分のFALUまたは
MOLTからもデータを受け取る。読取りマルチプレクサ150−1と150−
3はそれぞれRFAI−IMED [] とRFA2jMED []からもデー
タを受け取る。
整数部分内の各算術演算型ユニット140−144は第1および第2ソース・マ
ルチプレクサSLと32のそれぞれのセットから2つの入力を受け取る。ALU
Oの第1ソースは読取りマルチプレクサ150−2の出力、または32ビツト幅
の定数ゼロ(oooo、、、) 、または浮動小数点読取りマルチプレクサ11
2−4のいずれかから得られる。
ALUOの第2のソースは読取りマルチプレクサ150−3または浮動小数点読
取りマルチプレクサ112−1のいずれかから得られる。ALUIの第1ソース
は読取りマルチプレクサ150−0またはIF−PC[]のいずれかから得られ
る。IJPC[]は、IEUが命令を順序外(out−of−order)の順
序で実行できる機能を備えているために、命令フェッチ・ユニット(図示せず)
が必要とするリターン・アドレスを計算する際に使用される。ALUIの第2ソ
ースは読取りマルチプレクサ150−1または(:FJFFSET []のいず
れかから得られる。CF−OFFSET [1は、同じ(順序外で実行できるた
めに、CALL命令のリターン・アドレスを計算する際に使用される。
シフタ5HFO144の第1ソースは、浮動小数点読取りマルチプレクサ112
−0または112−4またはいずれかの整数読取りマルチプレクサ150から得
られる。5HFOの第2ソースは、浮動小数点読取りマルチプレクサ112−0
または112−4 ;または整数読取りマルチプレクサ150−0.150−2
、または150−4から得られる。5HFOは第3の入力をシフト量(shif
t amount −SA)マルチプレクサから得る。第3の入力はどれだけシ
フトさせるかを制御するもので、SAマルチプレクサによって浮動小数点読取り
マルチプレクサ112−1 、整数読取りマルチプレクサ150−1または15
0−3または5ビット幅定数32(11111□または31 + o)から取得
される。シフタSHFOはサイズ・マルチプレクサ(S)から第4の入力を要求
する。第4の入力はどれだけのデータをシフトさせるかを制御するもので、Sマ
ルチプレクサによって読取りマルチプレクサ150−1 、読取りマルチプレク
サ150−3 、または5ビット幅定数16(10000□または16、。)か
ら取得される。
ALUO5ALUI、および5HFOの結果は書込みマルチプレクサ148へ送
り返されて整数レジスタRA []にストアされ、および読取りマルチプレクサ
150へも送り返されて以後の演算のオベラ゛ンドとして再使用される。ALU
Oまたは5HFOのいずれの出力はバス120を経由して第3図の浮動小数点部
分へ送られる。ALUOおよびALUIは、それぞれ、整数比較オペレーション
のプール結果を示した信号ALUOJDおよびALUI−BDをも出力する。
ALUOJDとALUI−BDはそれぞれの機能ユニットのゼロ・フラグと符号
フラグから直接に計算される。 ALUOは信号EXJADR[1およびEX−
VM−ADRをも出力t6゜EXJADR[1は絶対ブランチ命令に対する生成
されたターゲット・アドレスであり、ターゲット命令をフェッチするためにIF
U (図示せず)へ送られる。
EXノM−ADH[]は、メモリからロードし、メモリへストアするとき使用さ
れる仮想メモリであり、アドレス変換のためにVMU (図示せず)へ送られる
。
空白バイト・テスタNULL 146は、第1ソース・マルチプレクサからのオ
ペランドについて空白バイト・テスト操作を行う、一実施例では、このオペラン
ドはALUOから得られる。 NULL 146は、32ビツトの第1ソース・
オペランドに値がゼロのバイトが含まれているかどうかを示したプール信号NU
LLAJDを出力する。
読取りマルチプレクサ150−0および150−1の出力はバス114を経由し
て(第2図の)浮動小数点部分へ送られる。また、読取りマルチプレクサ150
−4の出力は、5TDTjNT [3ストアデータとして整数ロード/ストア・
ユニットへ送られる。
制御ビットPSR[7]はレジスタ・セットA 1gへ送られる。第1図におい
て、モード制御ユニット44からライン46上をIEUモード整数スイッチ34
へ送られるのは、この信号である。IEUモード整数スイッチは第3図に示すよ
うにレジスタ・セットA 18の内部に置かれている。
第6図はSlおよびS2マルチプレクサのコントロールの詳細を示した図である
。信号ALUOJDC,プール部分のデータ経路
第4図に示すように、レジスタ・セットC22もマルチボートを備えている。一
実施例では、レジスタ・セットC22は2つの書込みボートWCO−1と5つの
読取りボートRDAO−4を備えている。レジスタ・セット22とプール組合せ
ユニット(Boolean combinational unit)70を除
(第4図のすべてのエレメントは第1図のSMCユニットCを構成している。
プール・レジスタ・セットの2つの書込みボートWCOおよびWCIは、それぞ
れ、書込みマルチプレクサ170−0および170−1に結合されている。書込
みマルチプレクサ170はプール組合せオペレーションのプール結果を示してい
るプール組合せユニット70の出力;整数比較のプール結果を示している第3図
の整数部分からのALUO−BD ;浮動小数点比較のプール結果を示している
第2図の浮動小数点部分からのFALUJD 。
ALUIにおける比較命令の結果を示しているALUIからのALUI−BD−
Pまたは整数部分における空白バイトを示しているNULL 146からのNU
LLAJD 、およびAlO2における比較オペレーションの結果を示している
AlO2からのA L U 2− B D −Pまたは浮動小数点部分における
比較オペレーションの結果を示しているNULL 108からのNULLBJD
からデータを受け取る。あるひとつのモードでは、ALUOJD、 ALUIJ
D、 ALU2JD 、およびFALU−BD倍信号データ経路から受け取られ
ないで、PSR内のゼロ・フラグ、マイナス・フラグ、キャリー・フラグ、その
他の条件フラグに応じて計算される。1実施モードでは、どの瞬時においても最
大8命令までがIEUで実行できるので、IEUは最大8個のPSRを維持して
いる。
プール・レジスタ・セットCはバスEX−5R−DT []にも結合されて、「
特殊レジスタ移動」命令で使用される。CSRは、1つの32ビツト・レジスタ
であるかのように全体として読み書きされる。この結果、ある種の重大なシステ
ム・エラーが起こったときや、ある種の大規模なコンテキスト・スイッチングを
行ったとき、必要に応じて、マシン・ステート情報を高速にセーブし復元するこ
とができる。
プール・レジスタ・セットの5つの読取りボートRDCO〜RDC3はそれぞれ
読取りマルチプレクサ172−0〜170−4に結合されている。読取りマルチ
プレクサ172は書込みマルチプレクサ170が受け取るのと同じセットの入力
を受け取る。プール組合せユニット70は、読取りマルチプレクサ170−0と
170−1から入力を受け取る。読取りマルチプレクサ172−2およびB 1
72−3は、それぞれ、信号BLBjCPORTおよびBLBP−DPORTを
圧力する。BLBP−CPORTはIEUで条件付きブランチ命令の基礎として
使用される。BLBPJPORTは「プールによる加算」命令で使用され、Aま
たはBセットの中の整数レジスタを、Cセットの中のレジスタの内容に応じて、
ゼロか1(先行ゼロ付き)にセットする。読取りボートRDC4は現時点では未
使用であり、IEUのプール演算機能を将来強化する場合に備えて予約されてい
る。
IV、結論
本発明の特徴および利点を、本発明の特定実施例を参照して種々説明してきたが
、本発明は上述した実施例に限定されるものではない、本発明の範囲は請求の範
囲に明確化されている通りである。
FIG、1
へ
、、1mlムN+ PCT/US 92105720フロントベージの続き
(72)発明者 レンツ、デレク ジェイ。
アメリカ合衆国 95032 カリフォルニア州 ロス ゲイトス フィリップ
ス アヴエニュ−17400
(72)発明者 ゲニン、し トロン
アメリカ合衆国 95030 カリフォルニア州 モンテ セレノ ダニエル
ブレイス(72)発明者 チェン、ショ ロン
アメリカ合衆国 95070 カリフォルニア州 サラトガ キード ロード
14411
Claims (30)
- 1.1組の命令セットを実行する装置であって、その命令は1つまたは2つ以上 のフィールドを含み、所与の命令のフィールドはその所与の命令のオペランドの ソースまたはその所与の命令の結果の宛先を指定する装置において、該装置は、 命令を実行するための処理手段と、 処理手段に結合され、命令のオペランドと結果をストアするためのレジスタ・フ ァイルとを備え、前記レジスタ・ファイルは複数のレジスタ・セットを含み、 前記レジスタ・ファイルは所与の命令の中のフィールドの1つまたは2つ以上に 応動して、所与の命令の中の1つまたは2つ以上のフィールドによって指定され た通りに、レジスタ・セットのうちの所与のレジスタ・セットの中の所与のレジ スタから所与の命令のオペランドを取り出し、あるいは所与の命令の結果を該所 与のレジスタにストアすることを特徴とする装置。
- 2.請求の範囲第1項に記載の装置において、前記命令は、それぞれ、1つまた は2つ以上のブール・オペランドに対してオペレーションを行って、ブール結果 を生成するブール組合せ命令を含み、各ブール組合せ命令は各オペランドと結果 のロケーションを指定する1つまたは2つ以上のブール・フィールドを含み、前 記処理手段はブール組合せ命令を実行するためのブール実行手段を含み、 前記レジスタ・ファイルはブール・レジスタからなるブール・レジスタ・セット を含み、各ブール・レジスタは前記ブール・オペランドまたはブール結果のひと つを保持し、および 前記レジスタ・ファイルは、どのブール組合せオペレーションが所与のブール命 令によって指定されているかに関係なく、所与のブール組合せ命令の中の前記ブ ール・フィールドの各々に応動することを特徴とする装置。
- 3.請求の範囲第2項に記載の装置において、前記命令は、それぞれ、1つまた は2つ以上のオペランドに対してオペレーションを行って、ブール結果を生成す るブール比較命令を含み、各ブール比較命令はブール結果のブール・レジスタ・ セット内のロケーションを指定するブール結果フィールドを含み、前記処理手段 はブール比較命令を実行するための比較手段を含み、および 前記レジスタ・ファイルは、どのブール比較オペレーションが所与のブール比較 命令によって指定されているかに関係なく、所与のブール命令の中のブール結果 フィールドに応動することを特徴とする装置。
- 4.請求の範囲第1項に記載の装置において、前記命令は、それぞれ、1つまた は2つ以上の整数オペランドに対してオペレーションを行って、整数結果を生成 する整数命令を含み、各整数命令は各オペランドと結果のロケーションを指定す る1つまたは2つ以上の整数フィールドを含み、 前記処理手段は整数命令を実行するための整数実行手段を含み、 前記レジスタ・ファイルは整数レジスタからなる整数レジスタ・セットを含み、 各整数レジスタは前記整数オペランドまたは整数結果のひとつを保持することを 特徴とする装置。
- 5.請求の範囲第4項に記載の装置において、前記レジスタ・ファイルはさらに 複数の整数レジスタ・セットを有することを特徴とする装置。
- 6.請求の範囲第1項に記載の装置において、前記命令は、それぞれ、1つまた は2つ以上のオペランドに対してオペレーションを行って、浮動小数点結果を生 成する浮動小数点命令を含み、各浮動小数点命令は各オペランドと結果のロケー ションを指定する1つまたは2つ以上のフィールドを含み、 前記処理手段は浮動小数点命令を実行するための浮動小数点実行手段を含み、お よび 前記レジスタ・ファイルは浮動小数点レジスタからなる浮動小数点レジスタ・セ ットを含み、各浮動小数点レジスタは前記浮動小数点オペランドまたは浮動小数 点結果のひとつを保持することを特徴とする装置。
- 7.ブール命令を実行するための手段であって、ブール命令はオペランドに対し てブール・オペレーションを実行してブール結果を生成し、各ブール命令はブー ル命令のブール結果をストアするための宛先を指示する手段と、 各々がブール値を保持するための複数のブール・レジスタ手段と、 前記実行するための手段による所与のブール命令の実行に応答して、当該所与の ブール命令のブール結果を前記ブール・レジスタ手段の1つにストアするための 手段であって、該1つのブール・レジスタ手段は当該所与のブール命令によって そのブール結果の宛先として指定されている手段とを備えたことを特徴とする装 置。
- 8.請求の範囲第7項に記載の装置において、前記ブール命令を実行するための 手段は、 数値比較命令を実行して、2つの複数ピット数値オペランドを比較し、その比較 結果に応じて単ビット・ブール値結果を出力するための数値実行手段を備えたこ とを特徴とする装置。
- 9.請求の範囲第8項に記載の装置において、前記数値実行手段は、 2つの複数ビット整数オペランドを比較するための整数実行手段を備えたことを 特徴とする装置。
- 10.請求の範囲第8項に記載の装置において、前記数値実行手段は、 2つの複数ビット浮動小数点オペランドを比較するための浮動小数点実行手段を 備えたことを特徴とする装置。
- 11.請求の範囲第10項に記載の装置において、前記数値実行手段は、 2つの複数ビット整数オペランドを比較するための整数実行手段をさらに備えた ことを特徴とする装置。
- 12.請求の範囲第7項に記載の装置において、前記ブール命令を実行するため の手段は、 ブール組合せ命令を実行して、2つのブール値オペランドを結合し、その結果に 応じて単ビット・ブール値結果を出力するためのブール実行手段を備えたことを 特徴とする装置。
- 13.請求の範囲第12項に記載の装置において、前記ブール命令を実行するた めの手段は、 数値比較命令を実行して、2つの複数ビット数値オペランドを比較し、その比較 結果に応じて単ビット・ブール値結果を出力するための数値実行手段をさらに備 えたことを特徴とする装置。
- 14.請求の範囲第13項に記載の装置において、前記数値実行手段は、 2つの複数ビット整数オペランドを比較するための整数実行手段と、 2つの複数ビット浮動小数点オペランドを比較するための浮動小数点実行手段と を備えたことを特徴とする装置。
- 15.請求の範囲第7項に記載の装置において、整数および浮動小数点値を保持 するための数値レジスタ手段と、 数値比較命令を実行するための数値実行手段であって、各所与の数値比較命令を 実行するために、i)所与の数値比較命令によって指定された通りに、それぞれ の数値レジスタ手段から2つまたはそれ以上の複数ビット数値オペランドを取り 出し、 ii)所与の数値比較命令によって指定された条件に従って2つまたはそれ以上 の数値オペランドを比較し、 iii)前記条件に従って第1の単ビット・ブール値結果を出力し、および iv)所与の数値比較命令によって指定された通りに、第1のブール値結果を前 記ブール・レジスタ手段の所与の1つにストアし、 i)2つの複数ビット整数オペランドを比較するための整数実行手段と、 ii)2つの複数ビット浮動小数点オペランドを比較するための浮動小数点実行 手段とを含む数値実行手段と、 ブール組合せ命令を実行するためのブール実行手段であって、各所与のブール組 合せ命令を実行するために、 i)所与のブール組合せ命令によって指定された通りに、それぞれのブール・レ ジスタ手段から1つまたは2つ以上のブール値オペランドを取り出し、 ii)所与のブール組合せ命令によって指定されたオペレーションに従って1つ または2つ以上のブール値オペランドを結合し、 iii)前記オペレーションに従って第2の単ビット値結果を出力し、および iv)所与のブール組合せ命令によって指定された通りに、第2のブール結果値 を前記ブール・レジスタ手段の所与の1つにストアするブール実行手段と をさらに備えたことを特徴と検る装置。
- 16.請求の範囲第7項に記載の装置において、前記複数のブール・レジスタ手 段は、 i)第1のブール・レジスタ・セットと、ii1第2のブール・レジスタ・セッ トとを含んでおり、該装置は、 前記複数のブール・レジスタ手段に結合され、前記第1または第2ブール・レジ スタ・セットを現在アクティブなセットとして選択するための手段をさらに備え 、 前記ストアするための手段は前記選択するための手段に応動して、結果を現在ア クティブなセット内だけのブール・レジスタにストアすることを特徴とする装置 。
- 17.データ処理システムで使用されるための装置であって、データ処理システ ムはブール命令を実行するための手段を含み、各ブール命令は2つまたはそれ以 上のオペランドに対して所与のブール・オペレーションを実行して、1ビットの ブール結果を生成するようにした装置において、 複数の個別的にアドレス可能な1ビット・レジスタを含んでいるブール・レジス タ・セットと、所与のブール命令の1ビット結果を前記1ピット・レジスタの1 つに書き込むための制御手段であって、該1つの1ビット・レジスタは所与のブ ール命令の内容によって指定されるようにした制御手段とを備えたことを特徴と 検る装置。
- 18.請求の範囲第17項に記載の装置において、前記ブール命令はブール組合 せ命令を含み、各ブール組合せ命令は第1および第2オペランドに対して実行さ れて結果を生成すべきブール・オペレーションを指定すると共に、第1オペラン ドの第1アドレスと、第2オペランドの第2アドレスと宛先の第3アドレスをそ の結果に対して指定しており、および 前記制御手段はさらに、第1および第2アドレスにおいて第1および第2オペラ ンドをブール・レジスタ・セットからそれぞれ読み取るように動作し、前記1つ の1ビット・レジスタは第3のアドレスで指定されることを特徴とする装置。
- 19.請求の範囲第18項に記載の装置において、実行するための手段は、複数 のブール命令を並列に実行するための手段を含み、複数のブール命令において、 1つまたは2つ以上のスレーブ命令とマスタ命令との間にデータ依存関係が存在 することを許容し、各スレーブ命令には、マスタ命令の結果が生成されるまでス レーブ命令を実行できない形で、マスタ命令の結果がオペランドとして渡され、 前記実行するための手段はさらに、依存データを渡す命令が完了し、その結果が 生成されるまでデータに依存する命令の実行を遅延させるための手段を含み、 1ビット・レジスタの事前に指定された定数ブール・レジスタは、前記制御手段 が事前に指定された定数ブール・レジスタに別の値を書いたとき変更されない所 定の定数データ値をもち、および 前記制御手段はその宛先が事前に指定された定数ブール・レジスタであるマスタ 命令に応答して、所定の定数データ値を即時に読み取ってスレーブ命令に引き渡 し、前記実行するための手段はマスタ命令の結果が生成される前にスレーブ命令 を実行することを可能にしたことを特徴とする装置。
- 20.命令を実行するための実行手段であって、命令はオペランドに対してオペ レーションを実行して結果を生成し、各命令は各オペランドのそれぞれのソース ・アドレスと命令の結果の宛先アドレスを指定しており、各アドレスはレジスタ ・セットとオフセットを指定するようにした実行手段と、 各々が第1データ・タイプの値をストアするための複数の個別的にアドレス可能 なレジスタを含んでいる第1レジスタ・セットと、 該第1レジスタ・セットとの間で値を読み書きするための第1アクセス手段であ って、 i)前記第1レジスタ・セットを所与の命令のオペランドのソースとして指定し ている所与のソース・アドレスをもつ所与の命令に応動して、所与のソース・ア ドレスによって指定されたオフセットにおいてオペランドの値を前記第1レジス タ・セットから読み取るための第1読取り手段と、 ii)前記第1レジスタ・セットを所与の命令の結果の宛先として指定している 所与の宛先アドレスをもつ所与の命令に応動して、所与の宛先アドレスによって 指定されたオフセットにおいて結果の値を前記第1レジスタ・セットに書き込む ための第1書込み手段とを備えた第1アクセス手段と、 各々が第1データ・タイプの値をストアするための複数の個別的にアドレス可能 なレジスタを含んでいる第2レジスタ・セットと、 所与の命令に従って、前記第2レジスタ・セットとの間で値を読み書きするため の第2アクセス手段であって、 i)前記第2レジスタ・セットを所与の命令のオペランドのソースとして指定し ている所与のソース・アドレスをもつ所与の命令に応動して、所与のソース・ア ドレスによって指定されたオフセットにおいてオペランドの値を第2レジスタ・ セットから読み取るための前記第2読取り手段と、 ii)前記第2レジスタ・セットを所与の命令の結果の宛先として指定している 所与の宛先アドレスをもつ所与の命令に応動して、所与の宛先アドレスによって 指定されたオフセットにおいて結果の値を前記第2レジスタ・セットに書き込む ための第2書込み手段とを備えた第1アクセス手段と を備えたことを特徴とする装置。
- 21.請求の範囲第20項に記載の装置において、所与の命令は第1および第2 アドレスと宛先アドレスを指定することができ、各アドレスは、所与の命令が両 方のレジスタ・セットヘのアクセスを要求するような形で第1または第2アドレ スのいずれかを指定しており、および 前記第1および第2アクセス手段は、命令が前記第1と第2の両方のレジスタ・ セットを並行してアクセスできるように同時に動作することを特徴とする装置。
- 22.命命令に従ってオペレーションを実行する中央処理ユニット(CPU)を 備えたデータ処理システムであって、オペレーションは第1データ・タイプのデ ータに対して動作検るようにしたデータ処理システムにおいて、 各々が第1データ・タイプのデータを保持するための複数の第1レジスタを含み 、命令に応答して第1レジスタをアクセス検るための手段を含んでいる第1レジ スタ・セットと、 各々が第1データ・タイプのデータを保持するための複数の第2レジスタを含み 、命令に応答して第2レジスタをアクセスするための手段を含んでいる第2レジ スタ・セットと を備えたことを特徴とするデータ・レジスタ・システム。
- 23.請求の範囲第22項に記載のデータ・レジスタ・システムにおいて、前記 命令は、その命令に応答して前記第1および第2レジスタ・セットのいずれをア クセスすべきかを指定検るフィールドを含み、該データ・レジスタ・システムは 、 フィールドに応答し、そのフィールドに指定されている通りに前記第1レジスタ ・セットまたは前記第2レジスタ・セットをアクセスするための手段をさらに備 えたことを特徴とするデータ・レジスタ・システム。
- 24.整数命令を実行するための整数実行手段であって、各整数命令は1つまた は2つ以上の整数値オペランドに対して整数オペレーションを実行して、整数値 結果を生成するようにした整数実行手段と、浮動小数点命令を実行するための浮 動小数点実行手段であって、各浮動小数点命令は1つまたは2つ以上の浮動小数 点オペランドに対して浮動小数点オペレーションを実行して、浮動小数点結果を 生成するようにした浮動小数点実行手段と、 ここで、各命令は1つまたは2つ以上のオペランドを取り出すべき1つまたは2 つ以上のソースを指定し、さらに、その結果をストアすべき宛先を指定しており 、また各オペレーションは任意的に整数値のベースと整数値のインデックスを指 定し、 i)複数の第1レジスタを有し、整数値と浮動小数点値を保持するための第1レ ジスタ・セット手段を含んでいるレジスタ・バンクと、 第1レジスタ・セット手段と双方の実行手段とに結合されたアクセス手段であっ て、 i)整数実行手段のための整数値オペランド、浮動小数点実行手段のための浮動 小数点オペランド、またはいずれかの実行手段のための整数値のベースまたはイ ンデックスを、命令によって指示された通りにいずれかひとつの第1レジスタか ら取り出し、および ii)整数値結果を整数実行手段からまたは浮動小数点結果を浮動小数点実行手 段から、命令によって指示された通りにいずれか1つの第1レジスタにストアす るためのアクセス手段とを備えたことを特徴とする装置。
- 25.請求の範囲第24項に記載の装置において、前記レジスタ・バンクは複数 の第2レジスタをもち、整数値を保持するための第2レジスタ・セットをさらに 備え、 前記アクセス手段は、さらに、 i)整数実行手段のための整数値オペランドまたはいずれかの実行手段のための 整数値のペースまたはインデックスを、命令によって指示された通りに、いずれ か1つの第2レジスタから取り出し、および ii)整数実行手段からの整数値結果を命令によって指示された通りに、いずれ か1つの第2レジスタにストアするように動作する ことを特徴とする装置。
- 26.請求の範囲第25項に記載の装置において、ブール組合せ命令を実行する ためのブール実行手段であって、各ブール組合せ命令は1つまたは2つ以上のブ ール値オペランドに対してブール組合せオペレーションを実行して、ブール値結 果を生成するようにしたブール実行手段をさらに備え、 前記レジスタ・バンクは、複数の第3レジスタをもち、ブール値を保持するため の第3レジスタ・セット手段をさらに備え、 前記アクセス手段は、さらに、 i)ブール実行手段のためのブール値オペランドをブール組合せ命令によって指 示された通りに、いずれか1つの第3レジスタから取り出し、および ii)ブール実行手段からのブール値結果をブール組合せ命令によって指示され た通りに、いずれか1つの第3レジスタにストアするように動作する ことを特徴とする装置。
- 27.第1データ・タイプと第1データ幅のデータ値に対しておよび第2データ ・タイプと第1データ幅と異なる第2データ幅のデータ値に対して読取りオペレ ーションと書込みオペレーションを実行するデータ処理システムで使用されるた めの装置であって、前記データ処理システムは各読取りのための読取りアドレス とデータ・タイプおよび各書込みのための書込みアドレスとデータ内容を指定す るようにした装置において、 複数の個別的にアドレス可能なレジスタを含むレジスタ・セットであって、各レ ジスタはいずれかのデータ幅の値を保持するのに十分な幅になっているレジスタ ・セットと、 前記データ処理システムが所与の読取りオペレーションを実行するのに応動して 、前記レジスタ・セットにアクセスして、所与の読取りオペレーションで指定さ れた読取りアドレスに個別的にアドレスされた所与のレジスタのデータ内容を取 り出し、取り出したデータ内容のうち、読取りオペレーションのデータ・タイプ が指定している部分を前記データ処理システムへ渡すための読取りアクセス手段 と、 前記データ処理システムが所与の書込みオペレーションを実行するのに応動して 、前記レジスタ・セットにアクセスして、所与の書込みオペレーションで指定さ れたアドレスに個別的にアドレスされた所与のレジスタに、書込みオペレーショ ンによって指定されたデータ内容をストアするための書込みアクセス手段と を備えたことを特徴とする装置。
- 28.請求の範囲第27項に記載の装置において、前記第1データ・タイプは浮 動小数点であり、第1データ幅は64ビットであり、前記第2データ・タイプは 整数であり、第2データ幅は32ビットであり、前記レジスタ・セットは54ビ ット幅であり、前記読取りおよび書込みアクセス手段は、前記データ処理システ ムが浮動小数点オペレーションを実行するのに応動して、64ビットを取り出し てストアし、および前記データ処理システムが整数オペレーションを実行するの に応動して、32ビットを取り出してストアすることを特徴とする装置。
- 29.命令を実行するデータ処理システムで使用されるための装置であって、各 命令は1つまたは2つ以上のオペランドに対してオペレーションを実行して結果 を生成し、ここで、各命令はその1つまたは2つ以上のオペランドを取り出すべ き1つまたは2つ以上のソースを指定すると共に、その結果をストアすべき宛先 を指定しており、前記データ処理システムは複数のモードで動作するようにした 装置において、各々がオペランドまたは結果を保持するための複数の第1レジス タ手段と、 各々がオペランドまたは結果を保持するための複数の第2レジスタ手段と、 前記データ処理システムのモードに応じて動作して、前記データ処理システムが 第1モードで動作しているときは、前記データ処理システムが前記複数の第1レ ジスタ手段だけをアクセスできるようにし、および前記データ処理システムが第 2モードで動作しているときは、前記データ処理システムが前記複数の第1レジ スタ手段の第1サブセットのみおよび前記複数の第2レジスタ手段をアクセスで きるようにするスイッチ手段と を備えたことを特徴とする装置。
- 30.命令を実行するための実行手段を含んでいる装置であって、各命令は1つ または2つ以上のオペランドに対してオペレーションを実行して結果を生成し、 各命令はその1つまたは2つ以上のオペランドを読み取るためにアクセスすべき 1つまたは2つ以上のソースとその結果を書くためにアクセスすべき宛先を指定 するようにした装置において、 複数のレジスタ・バンクであって、各レジスタ・バンクは複数のレジスタ手段を 含んでおり、各レジスタ手段はオペランドまたは結果をストアするためのもであ り、各レジスタ・バンク内の複数のレジスタ手段は、所与のレジスタ・バンク内 のどの所与のレジスタ手段も所与のレジスタ・バンクまでのオフセットとしてア クセスできるような順番に配列されており、所与の命令のソースと宛先はオフセ ットとして指定される複数のレジスタ・バンクと、 所与の命令のソースと宛先のオフセットが適用される所与のレジスタ・バンクを 選択するためのレジスタ・バンク・セレクタ手段であって、所与の命令のとの内 容とも関係なく動作するレジスタ・バンク・セレクタ手段と を備えたことを特徴とする装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US72673391A | 1991-07-02 | 1991-07-02 | |
US726,773 | 1991-07-08 | ||
PCT/US1992/005720 WO1993001543A1 (en) | 1991-07-08 | 1992-07-08 | Risc microprocessor architecture implementing multiple typed register sets |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06501805A true JPH06501805A (ja) | 1994-02-24 |
Family
ID=24919784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5502403A Granted JPH06501805A (ja) | 1991-07-08 | 1992-07-08 | 複数型レジスタ・セットを採用したriscマイクロプロセッサ・アーキテクチャ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06501805A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282630B1 (en) | 1991-07-08 | 2001-08-28 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution and concurrent results distribution |
-
1992
- 1992-07-08 JP JP5502403A patent/JPH06501805A/ja active Granted
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282630B1 (en) | 1991-07-08 | 2001-08-28 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution and concurrent results distribution |
US7028161B2 (en) | 1991-07-08 | 2006-04-11 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution and concurrent results distribution |
US7555632B2 (en) | 1991-07-08 | 2009-06-30 | Seiko Epson Corporation | High-performance superscalar-based computer system with out-of-order instruction execution and concurrent results distribution |
US7941635B2 (en) | 1991-07-08 | 2011-05-10 | Seiko-Epson Corporation | High-performance superscalar-based computer system with out-of order instruction execution and concurrent results distribution |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100294964B1 (ko) | 다수형태의레지스터세트를구현한알.아이.에스.씨마이크로프로세서구조 | |
US5185872A (en) | System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy | |
US7882332B1 (en) | Memory mapped register file | |
EP0871108B1 (en) | Backward-compatible computer architecture with extended word size and address space | |
US6002881A (en) | Coprocessor data access control | |
EP2524303B1 (en) | Mapping between registers used by multiple instruction sets | |
US5881257A (en) | Data processing system register control | |
US5675758A (en) | Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations | |
JPH09311786A (ja) | データ処理装置 | |
US5881259A (en) | Input operand size and hi/low word selection control in data processing systems | |
EP1261914B1 (en) | Processing architecture having an array bounds check capability | |
US20040193838A1 (en) | Vector instructions composed from scalar instructions | |
US6253299B1 (en) | Virtual cache registers with selectable width for accommodating different precision data formats | |
EP1499956B1 (en) | Method and apparatus for swapping the contents of address registers | |
JPH06501805A (ja) | 複数型レジスタ・セットを採用したriscマイクロプロセッサ・アーキテクチャ | |
KR100278136B1 (ko) | 데이타처리장치 및 데이타처리방법 | |
EP1050800A1 (en) | A pipelined execution unit | |
GB2269924A (en) | Register scoreboarding in a pipelined microprocessor |