JPH0778737B2 - キャッシュに対する複合化プリプロセッサ方式 - Google Patents

キャッシュに対する複合化プリプロセッサ方式

Info

Publication number
JPH0778737B2
JPH0778737B2 JP3096097A JP9609791A JPH0778737B2 JP H0778737 B2 JPH0778737 B2 JP H0778737B2 JP 3096097 A JP3096097 A JP 3096097A JP 9609791 A JP9609791 A JP 9609791A JP H0778737 B2 JPH0778737 B2 JP H0778737B2
Authority
JP
Japan
Prior art keywords
instructions
instruction
cache
parallel
series
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 - Fee Related
Application number
JP3096097A
Other languages
English (en)
Other versions
JPH0683623A (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
Priority claimed from US07/522,291 external-priority patent/US5214763A/en
Priority claimed from US07/642,011 external-priority patent/US5295249A/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0683623A publication Critical patent/JPH0683623A/ja
Publication of JPH0778737B2 publication Critical patent/JPH0778737B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、デジタル・コンピュ
ータおよびデジタル・データ・プロセッサに関するもの
であり、特に、2個またはそれよりも多くの命令を並列
に処理することができるデジタル・コンピュータおよび
データ・プロセッサに関するものである。
【0002】
【従来の技術】一時に1個の命令を逐次的な態様で実施
する従来のコンピュータの実行能力は、これまでは、回
路技術の改善によって相当な改良がなされている。この
ような一時に1個の命令を実施するコンピュータは、”
スカラー(scalar)”コンピュータまたはプロセ
ッサと呼ばれることがある。その回路技術が限界まで押
し込まれるにつれて、顕著な実行能力の改良を獲得する
ためには、コンピュータの設計者は別の手段を研究せね
ばならなくなっている。
【0003】最近に至り、単一の命令ストリームからの
命令を一時に2個以上実行することによる実行能力の増
大を試行するために、いわゆる”スーパー・スカラー”
コンピュータが提案されてきている。このように提案さ
れているスーパー・スカラー・マシンは、代表的には、
所与の個数の命令が並列的に実行できるかどうかが命令
実行時点において決定される。このような決定は、命令
の動作コード(OPコード)および隣接する命令間に存
在し得るデータの依存性に基づいている。命令の各々が
使用される特定のハードウエア構成部はOPコードによ
って決定される。そして、一般的には、2個またはそれ
よりも多くの命令を、同じ時点において同じハードウエ
ア構成部で使用することは不可能であり、また、先行す
る命令の結果に依存する命令(データの依存性)を同時
に実行することも不可能である。これらのハードウエア
およびデータの依存性により、ある種の命令の並列的な
組み合せの実行が妨げられる。この場合においては、命
令自体による代替的な実行が非並列的な態様でなされ
る。勿論、このことのために、スーパー・スカラー・マ
シンの実行能力は減退する。
【0004】
【発明が解決しようとする課題】提案されたスーパー・
スカラー・コンピュータによればある程度の実行能力の
改善がもたらされるけれども、最小限にしようと所望す
る不利益点もある。その一事としては、いずれの命令が
並列に実行できるかを命令実行時点において決定するこ
とは相当に多くの時間を要するものであって、それを他
の通常のマシン動作とオーバラップさせることでマスク
することは容易にできることではない。命令セットのア
ーキテクチュアの複雑性が増大するにつれて、この不利
益点は更に明確なものになる。その他の不利益点は、同
じ命令が2回以上実行される度毎に、その決定動作をそ
れだけ繰り返さねばならないことである。
【0005】
【課題を解決するための手段】SCISM(Scala
ble Compound InstructionSe
t Machine)により実行の時点に先立つ並列的
な実行の決定をする。SCISMアーキテクチュアにお
いては、並列的な実行の決定は、全体的な命令を扱う処
理のより早期の時点でなされる。例えば、その決定をす
ることは、命令バッファまたは命令スタックを備えたそ
れらのマシンにおける命令バッファに先だってなされ
る。別の例によれば、その決定をすることは、命令がキ
ャッシュ・ユニットを通して流れるそれらのマシンにお
ける命令キャッシュに先だってなされる。
【0006】SCISMによる別の寄与は、並列的な実
行の決定動作についての決定を記録して、同じ命令が2
回以上用いられるときに、このような結果を利用可能に
することである。なお、SCISMの利用については、
同時出願の米国特許出願No.07/519、382に
も記載されている。
【0007】この発明の一実施例においては、ある1個
の命令ストリームにおける個別の命令に随伴するタグの
形式での情報の発生によって、並列的な実行の決定動作
についての記録の達成がなされる。これらのタグによっ
て告知されることは、命令の実行が並列的にできるかど
うか、または、それらの命令が一時になされることを必
要とするかどうかということである。ここでは、これら
の命令のタグ付け処理は”複合化”として参照されるこ
とがある。それで実際に作用することは、並列的な処理
の目的をもって、少なくとも2個の命令を単一の複合命
令に組み合わせることである。
【0008】この発明のある特定の利益がある実施例に
おいては、コンピュータはキャッシュ蓄積機構を含んで
いるものであり、このキャッシュ蓄積機構は、コンピュ
ータの高レベルの蓄積ユニットから該コンピュータの命
令実行ユニットまでのマシン命令の行程において、該マ
シン命令を一時的に蓄積するためのものである。高レベ
ルの蓄積ユニットとキャッシュ蓄積機構との中間で複合
化の処理が実行されて、命令および複合化情報の双方が
キャッシュ蓄積機構に蓄積されるようにする。良好に設
計されたキャッシュ蓄積機構を用いることにより、コン
ピュータの全体的な実行能力を改善する作用がなされ
る。更に、複合化情報をキャッシュ蓄積機構に蓄積する
ことにより、関係のある命令がキャッシュ蓄積機構に残
留している限りは、該情報を何回も反復して用いること
が可能にされる。命令が2回以上用いられるのに十分で
あるように、該命令がキャッシュ内に長く残留すること
が多い。
【0009】
【実施例】命令の複合化 図面の中の図1を参照すると、この発明に従って構成さ
れたデジタル・コンピュータ・システムまたはデジタル
・データ処理システムの一部を表す実施例が示されてい
る。例示されたコンピュータ・システムは、2個または
それよりも多くの命令を並列的に実行できるものであ
る。このシステムに含まれていることは、並列的な実行
のために命令を複合化する能力である。この点に関し
て、複合化の処理として参照されることは、並列的な実
行のために、スカラー命令のシーケンスにおける複数の
命令をグループ化することである。ここに、グループ化
のサイズは1からNまでスカラー化できる(scala
ble)ものである。好適には、スカラー命令のシーケ
ンスは、IBMシステム/370の製品において用いら
れているような、実存するスカラー命令のセットから記
述される。ここで説明される複合化の処理においては、
複合化された命令のオブジェクト・コードは変更されず
に残されており、これによって、先に実施されたコンピ
ュータ・システムとの互換性が維持される。
【0010】N個までの命令のグループの並列的な実行
を支持するために、コンピュータ・システムには、並列
的かつ同時的な態様で動作する複数の命令実行ユニット
が含まれている。
【0011】図1に概略的に示されているように、命令
複合化ユニット20は、2進スカラー命令21のストリ
ームを取り込んで、並列的な実行のために、隣接するス
カラー命令のあるもの(そうでないときには、これらは
単独で実行されることになる)を選択的にグループ化さ
せる。このために、結果として複合化された命令のスト
リーム22においては、単独で実行されるべきスカラー
命令が生成されるか、または、並列的に実行されるべき
スカラー命令のグループによって形成される複合化命令
での生成がなされる。ある1個のスカラー命令が命令処
理ユニット24に与えられると、この命令は、直列的な
実行のために複数の実行ユニットの適当なものに送られ
る。複合化された命令が命令処理ユニット24に与えら
れると、そのスカラー構成分の各々が、互いに同時的で
並列的な実行のために適切な実行ユニットに送られる。
代表的な実行ユニットに含まれているものは、限定的な
ものではないが、2個のオペランドに応答してある1個
の命令を実行するための演算論理ユニット(ALU)2
6、浮動小数点演算ユニット(FP)30、蓄積アドレ
ス発生ユニット(AU)32、および、データ依存性崩
壊(collapsing)ALU28を挙げることが
できる。データ依存性崩壊ユニットの詳細な例は、19
90年4月4日付けでともに出願された 米国特許出願
No. 07/504,910 に開示されている。
【0012】この発明が依存する複合化の手順は、複数
の実行ユニットを備えたユニプロセッサの環境において
実行できるものであり、ここに、それぞれの実行ユニッ
トは、ある1個のスカラー命令の実行をするか、または
これに代えて、ある1個の複合化されたスカラー命令の
実行をするものである。更に、ある種の他のコンピュー
タ・システム構成のものにおいては、複合化された命令
を並列的に実行することができる。例えば、複合化の動
作はマルチプロセッサの環境において利用できるもので
あり、ここに、ある1個の複合化の命令は、複数のCP
U(中央処理ユニット)の中の一つによる実行のための
単一の単位(unit)として扱われる。
【0013】複合化された命令を扱うために好適に適合
できるコンピュータ・アーキテクチュアは、各マシン・
サイクルにおける実行のために多くのスカラー命令を発
することができる、IBMシステム/370の命令レベ
ルのアーキテクチュアである。これに関連して、システ
ム/370のパイプライン式のコンピュータ・アーキテ
クチュアにおいては、ある1個のマシン・サイクルで包
含されるものは、ある1個のスカラー命令を実行するた
めに必要とされる全てのパイプライン・ステップまたは
ステージである。
【0014】システム/370、システム/370拡張
アーキテクチュア(370−XA)、および、システム
/370エンタプライズ・システム・アーキテクチュア
(370−ESA)のような、種々のIBMシステム/
370アーキテクチュアに対する命令のセットはよく知
られている。これらのアーキテクチュアに関連してここ
で参照されるものは、IBMシステム/370の動作原
理(Principles of Operation)
(刊行物 #GA22−7000−10, 1987)、
および、IBMエンタプライズ・システム・アーキテク
チュアの動作原理(Principles of Ope
ration)(刊行物 #GA22−7200−0,
1988)である。また、有用な刊行物としては、IB
M 370 Assembly Language wit
h ASSIST: Structured Conce
pts in Advanced Topics,( C.
J. Kacmer著, Prentice Hall
社, 1988年発行)という表題のものがある。
【0015】概略的にいえば、命令複合化の設備は、並
列的に実行できる命令のクラスを探索して、ハードウエ
アによっては扱うことができないインタロックが複合化
命令のメンバ間には存在しないことを確認する。適合可
能な命令のシーケンスが見出されたときには、それらの
命令が複合化される。
【0016】これに関連して、同じ実行資源に対するア
クセスが同時に実行されている命令によって要求され、
また、その同時アクセスを可能にするハードウエア手段
が備えられていないときには、並列的な実行におけるイ
ンタロックが生起する。資源からオペランド・データを
取得するためのアクセスが要求されたときには、他の命
令による読み取りまたは書き込みいずれかに先だって、
一つの命令によるデータの書き込みをせねばならないと
きに、データ依存性のインタロックが存在する。命令の
一つの実行によって生成されているデータが、アドレス
計算のために同時に実行される命令によって要求された
ときには、アドレス発生のインタロックが存在する。
【0017】同時的な実行のための他の命令との適合が
できる既知の命令セットの中の命令を識別するために、
記述されている命令からのセットは、命令セットにおけ
る全ての命令を実行するコンピュータ・システム構成の
ものにおいて並列的に実行できる命令のカテゴリに分割
される。これらのカテゴリのあるものの中における命令
は、同じカテゴリ内の命令または別のある種のカテゴリ
内の命令との複合化がなされる。例えば、システム/3
70の命令のセットは、図2Aと図2Bで例示された1
〜17のカテゴリに区分することができる。このカテゴ
リ化に対する理論的な根拠は、システム/370の命令
についての機能的な要求、および、代表的なシステム/
370のコンピュータ・システム構成におけるそれらの
ハードウエアの使用に基づいている。命令のセットは、
この例示的な実施例における複合化のために特に考慮さ
れてはいない。このことは、この発明の技術によって複
合化されることから、それらの命令のセットを排除する
ものではない。
【0018】例えば、カテゴリ1に含まれている命令で
あって、次の命令シーケンスにおける同じカテゴリから
の命令と複合化された命令を考えてみる。 AR R1, R2 SR R3, R4 このシーケンスはデータ依存性のインタロックからはフ
リーであって、2個の独立したシステム/370の命令
を含む次の結果が生じる。 R1 = R1 + R2 R3 = R3 − R4 このようなシーケンスを実行するのには、命令レベルの
アーキテクチュアに対して設計された、2個の独立して
おり並列的な2対1(two−to−one)のALU
が必要とされる。このために理解されることは、2個の
このようなALUを備えたコンピュータ・システム構成
のものにおける複合命令を形成するように、これら2個
の命令をグループ化できるということである。スカラー
命令を複合化するこの例は、データに依存するインタロ
ック、ハードウエアに依存するインタロック、および、
アドレス発生のインタロックからフリーであるような、
全ての命令シーケンスのペアに対して一般化される。
【0019】図3におけるフロー図には、カスタム化さ
れた複合化のルールのセットに従って、オブジェクト・
コード・プログラムから複合化命令セットのプログラム
を発生させることが示されている。ここでの複合化のル
ール36は、システム/370のシステムおよびハード
ウエア・アーキテクチュアの双方の複合体ととともに、
図2A、図2Bにおけるカテゴリを反映するものであ
る。オブジェクト・コード命令の連続的なブロック3
3、34、35は、複合化された命令33C,34C,
35Cを生成する複合化設備37に対して入力されるバ
イト・ストリームとして生成される。所定の長さを有す
るバイト・ストリームにおける命令の連続的なブロック
は、複合化設備37によって解析される。複合化のため
に一緒に考慮される命令のグループに含まれたバイト・
ストリームにおける各ブロック33、34、35の長さ
は、複合化設備の複雑性に依存している。
【0020】図3で例示された特定の複合化設備37
は、各ブロックにおける”m”個の命令に対するツー・
ウエイ(two−way)の複合化を考慮するように設
計されている。複合化設備37においては、各ブロック
における命令のペア毎に考慮するように、2命令幅(t
wo−instruction−wide)のウインド
ウが用いられている。
【0021】この例示的なツー・ウエイの複合化のスキ
ームにおいては、テキストの2バイト毎に1ビットの複
合化情報が、命令ストリームに対して付加される。一般
的にいえば、タグTを含むコントロール情報は、複合化
されたバイト・ストリームにおける各命令に対して生成
することができる。即ち、ペア、トリプル、または、こ
れよりも大きく複合化されたグループに含まれている各
複合化されたスカラー命令と同様に、各複合化されてい
ないスカラー命令に対して生成することができる。この
一般的なアプローチはこの発明の例において用いられて
いる。これに関連して、ブロックにおいて残留している
複合化されていないスカラー命令から、複合化されたグ
ループを形成する複合化されたスカラー命令が、タグに
よって特別に識別され、区別される。複合化されていな
いスカラー命令はブロック内に残留しており、フェッチ
されたときにはそれだけで実行される。
【0022】せいぜい2個の命令を複合化する場合に
は、複合命令を形成するためにスカラー命令の最小のグ
ループ化がなされて、複合化の情報に対する次のような
好適なコード化の手順が用いられる。システム/370
の全ての命令は、2バイト、4バイトまたは6バイトの
いずれかの長さをもってハーフ・ワード(2バイト)に
整列されていることから、ハーフ・ワード毎に1ビット
だけの複合化情報を用意することが必要とされる。これ
から後は、複合化情報を含むビットを”タグ・ビット”
または”Cビット”と呼ぶことにする。この例におい
て、タグ・ビットの値が”1”であることは、考慮され
ているバイトにおいて始まる命令が、追従する命令と複
合化されることを指示するものであり、これに対して、
タグ・ビットの値が”0”であることは、考慮されてい
るバイトにおいて始まる命令が、追従する命令とは複合
化されないことを指示するものである。命令の第1バイ
トを含まないハーフ・ワードと関連しているタグ・ビッ
トは無視される。ある1個の複合化されたペアが実行の
ためにフェッチされたときには、複合化されたペアの第
2の命令の第1バイトに対するタグ・ビットも無視され
る。その結果として、このコード化の手順において必要
とされるものは、命令の実行の間に、CPUに対する複
合化された命令を識別するための1ビットの情報だけで
ある。
【0023】ここで理解されるように、ある1個の複合
化した命令を形成するために2個より多くのスカラー命
令をグループ化できるときには、付加的なタグ・ビット
を要求することができる。実際に複合化したスカラー命
令の特定の数を指示するために必要なタグ・ビットの最
小数は、ある1個の複合化した命令を形成するためにグ
ループ化できるスカラー命令の最大数の、2を基数とす
る対数(最も近い整数に丸められる)である。例えば、
最大数が2であるときには、各複合化命令に対して1個
のタグ・ビットが必要とされる。最大数が3または4で
あるときには、各複合化命令に対して2個のタグ・ビッ
トが必要とされる。以下、同様なことになる。
【0024】この発明においては、ある特定のコンピュ
ータ・システム構成のものに対する命令ストリームの複
合化が必要とされるのは1回だけであって、その後で
は、複合化された命令のいかなるフェッチでも、それに
関連したタグ・ビットのフェッチの原因となる。いわゆ
るスーパー・スカラー・マシンにおける実行のために同
じ命令または異なる命令がフェッチされる度に繰り返し
て生じるような、並列的な実行に対する所定のスカラー
命令の選択の際の不十分な最後の瞬間での決定をする必
要性が、これによって回避される。
【0025】オブジェクト・コードの命令ストリームを
複合化する利点にも拘らず、バイト・ストリームにおけ
る命令の境界を決定するための技術が発達しない限り
は、ある所定のコンピュータ・アーキテクチュアにおけ
る手順の実施は困難になる。可変長の命令が許容される
ときには、このような選択は複雑なものであり、データ
と命令とが同じバイト・ストリーム内で混合できるとき
には、これは更に複雑になる。勿論、適切な実行を許容
するためには、実行の時点における命令の境界が知られ
ねばならない。しかしながら、命令の実行の時点よりも
十分前に複合化がなされるのが好ましいことから、命令
が始まる位置についての知識がなく、いずれのバイトが
データであるかの知識もなしで命令の複合化をするため
の技術が必要とされる。この発明の例において、最悪の
場合を想定することにする。即ち、該当の命令の長さが
可変であること、複合化されているバイト・ストリーム
の中でデータが命令と混合されていること、および、バ
イト・ストリームにおいて命令の識別をするためには参
照点を利用できないこと、という最悪の場合を想定する
ことにする。ここで理解されるように、複合化をするた
めには、命令の開始を識別するための参照点の不存在に
より次のような不確実性が生じる。即ち、そうではない
ときに必要とされるよりも遥かに多いタグ・ビットが複
合化ユニットによって発生されるという点での不確実性
が生じる。それにも拘らず、この発明における固有の技
術は、固定長の命令または可変長の命令のいずれにおい
ても良好な動作をする。命令の開始が一旦知られると
(仮定されると)、命令のワン・ウエイ(one wa
y)または他のいずれかの場所において、その長さを常
に見出すことができる。システム/370の命令におい
ては、OPコードの始めの2ビットにおいてその長さが
コード化される。それ以外のシステムにおいては、その
長さをオペランド内でコード化することが可能であり、
または、全ての命令の長さが同じであるときには絶対的
なものになる。
【0026】動作的な環境 図4を参照すると、この発明に従って構成されたデジタ
ル・コンピュータ・システムまたはデジタル・データ処
理システムの一部を表す実施例が示されている。このコ
ンピュータ・システムは、2個またはそれよりも多くの
命令を並列的に処理できるものである。それに含まれて
いる第1の蓄積機構は処理されるべき命令およびデータ
を蓄積するためのものである。この蓄積機構は高レベル
蓄積部36として識別される。この蓄積部36(”メイ
ン・メモリ”でもある)は、大容量で高速の蓄積機構で
あって、例えば、大容量システムの蓄積ユニット、また
は、包括的な階層構造の蓄積システムの下位部分等であ
ることができる。
【0027】図4のコンピュータ・システムは、高レベ
ル蓄積部36からの命令を受け入れて、これらの命令の
いずれが互いに並列的に処理可能であるかを指示するよ
うなタグ形式の複合化情報を、これらの命令と関連させ
るための命令複合化機構を含んでいる。この命令複合化
機構は命令複合化ユニット37によって表されている。
この命令複合化ユニット37によって、いずれの命令が
並列的に実行できるかを決定するために、入力される命
令の解析がなされる。更に、この命令複合化ユニット3
7によれば、これらの解析された命令に対するタグ・ビ
ットTが生成されて、いずれの命令が互いに並列的に実
行可能であるか、および、いずれの命令が互いに並列的
に実行不可能であるかの指示がなされる。
【0028】図4のシステムは、解析された命令および
それらに関連のタグ・フィールドを受け入れて蓄積する
ために、命令複合化機構37に結合された第2の蓄積機
構を含んでいる。この第2の蓄積機構(または更に別の
蓄積機構)は、複合命令キャッシュ38によって表され
ている。このキャッシュ38は小容量、高速の蓄積機構
であり、低速の蓄積機構36をアクセスする頻度を減少
することによって、コンピュータ・システムの実行能力
の比率を改善するために普通に用いられているものであ
る。
【0029】図4のシステムは更に、互いに並列に動作
する複数の機能的な命令処理ユニットを含んでいる。こ
れらの機能的な命令処理ユニットは、機能的ユニット3
9、40、41等によって表されている。これらの機能
的ユニット39−41は、同時的な態様をもって並列的
に動作するものであり、また、その各々はそれ自体で1
個またはそれより多くのタイプのマシン・レベルの命令
を処理することができる。使用できる機能的ユニットと
しては次の諸例を挙げることができる。即ち、汎用の演
算論理ユニット(ALU)、アドレス発生タイプのAL
U、データ依存性の崩壊式ALU(同時に出願された
米国特許出願No. 071/504,910 に開示
有)、ブランチ命令処理ユニット、データ・シフタ・ユ
ニット、浮動小数点処理ユニット等を挙げることができ
る。ある所与のコンピュータ・システムは、これらのタ
イプの機能的ユニットの中のあるものを2個またはそれ
よりも多く含むことができる。例えば、ある所与のコン
ピュータ・システムは、2個またはそれよりも多くの汎
用ALUを含むことができる。また、いずれの所与のコ
ンピュータ・システムでも、これらの異なるタイプの機
能的ユニットを1個ずつ含む必要はない。機能的ユニッ
トの特定の構成は、考慮されている特定のコンピュータ
・システムの性質に依存している。
【0030】これも図4のコンピュータ・システムに含
まれている命令のフェッチ/発行機構は、複合命令キャ
ッシュ38に結合されている。そして、命令タグ・ビッ
トによって命令の並列処理が可能であると指示されたと
きには、機能的な命令処理ユニット39−41の異なる
ものに対して、キャッシュ38に蓄積されている隣接の
命令を供給するようにされる。それらのタグ・ビットに
よって命令の並列処理が不可能であると指示されたとき
には、この機構も個別の機能的ユニットに対して単一の
命令を付与するようにされる。この機構は命令フェッチ
/発行ユニット42によって表されている。フェッチ/
発行ユニット42によってキャッシュ38からの命令が
フェッチされ、そのタグ・ビットおよび命令オペレーシ
ョン・コード(OP コード)フィールドが検査され、
そして、このような検査に基づいて、機能的ユニット3
9−41の中の適切なものに対して命令が送られる。
【0031】命令のストリームは既知の手段によって補
助蓄積デバイスから取り込まれて、メイン・メモリ36
内の”ページ”と呼ばれるブロックに蓄積される。”ラ
イン”と呼ばれる連続的な命令のセットは、メイン・メ
モリ36から複合命令キャッシュ38に動かされて、命
令フェッチ/発行ユニット42による処理に対する高速
の参照のために利用可能にされる。キャッシュからフェ
ッチされた命令は、42において発行され、デコードさ
れてから、実行のために機能的ユニット39−41に対
して送られる。
【0032】動作している間にプログラム内の命令に対
する参照がなされると、その命令のアドレスがキャッシ
ュ管理ユニット44に付与される。そして、ここではそ
のアドレスを用い、アドレスされた命令を含む2個また
はそれよりも多くの命令を命令キャッシュ38からフェ
ッチして、ユニット42内でのキュー(待ち行列)に加
える。アドレスされた命令がキャッシュ内にあるときに
は、キャッシュの”ヒット(hit)”が生じる。そう
でないときには、キャッシュの”ミス(miss)”が
生じる。キャッシュ・ミスが生じると、キャッシュ管理
ユニット44は、メモリ管理ユニット45として集合的
に例示されている蓄積管理機能部のグループに対して、
要求された命令のライン・アドレスを送る。これらの機
能部においては、キャッシュ管理ユニット44によって
付与されたライン・アドレスを用いて、命令のライ
ン(”キャッシュ・ライン”)を複合命令キャッシュ3
8に対して送る。
【0033】SCISMアーキテクチュアに関連して、
各キャッシュ・ラインの複合化が複合命令キャッシュ3
8に対する入力において生じることができるように、キ
ャッシュ内での命令の複合化は命令複合化ユニット37
によってもたらされる。このようにして、各キャッシュ
・ラインがメイン・メモリ36からキャッシュ38へと
フェッチされるのにつれて、ユニット37内での複合化
のためにラインの解析がなされ、複合化情報とともに通
過して、複合命令キャッシュ38内に蓄積される。
【0034】キャッシュ操作に先だって、タグ・ビット
のセットを発生する命令複合化ユニット37においてラ
インの複合化がなされる。これらのタグ・ビットは、関
連のある命令に対して直接付加することができるか、ま
たは、該当の命令に並列して設けることができる。いず
れの場合にしても、それらのビットが設けられるのは、
キャッシュ38内の命令のそれらのラインとともに蓄積
するためである。必要があるときには、キャッシュ38
内の複合化された命令が、それらのタグ・ビットととも
に、命令フェッチ/発行ユニット42によってフェッチ
される。フェッチ/発行ユニット42によって命令が受
け入れられると、それらのタグ・ビットが検査されて、
それらが並列的に処理できるかどうかの決定がなされ、
また、それらのオペレーション・コード(OP コー
ド)フィールドが検査されて、どの利用可能な機能的ユ
ニットがそれらの処理のために最も適当であるかの決定
がなされる。2個またはそれよりも多くの命令が並列的
な処理のためには適当であることがタグ・ビットによっ
て指示されたときには、それらの命令のOP コード・
フィールドのコード(内容)に従って、それらの命令は
機能的ユニットにおける適当なものに対して送られる。
これに次いで、このような命令は、それらのそれぞれの
機能的ユニットによって、互いに同時に処理される。
【0035】ある1個の命令が並列的な処理のためには
不適当であるときには、その命令はOP コードによっ
て決定されるような適当な機能的ユニットに送られ、そ
の選択された機能的ユニットにおいて、単独にそしてそ
の命令自体による処理がなされる。
【0036】複数の命令が常に並列的に処理されるよう
な最も完全な場合におけるコンピュータ・システムの命
令の実行比率は、一時に1個の命令が実施される場合の
N倍に相当することになる。ここで、Nなる数は、並列
に処理されているグループにおける命令の個数である。
【0037】命令フォーマット 図5に例示されているものは、キャッシュ・ラインの一
部(その残りは示されていない)を形成するカッドワー
ド(quadword)50である。このカッドワード
50には、WORD 0−WORD 3で表示された4
個のワードが含まれている。各ワードには1ペアのハー
フ・ワードが含まれており、また、各ハーフ・ワードに
は2バイトのデータが含まれている。各バイトには16
ビット含まれている。ビット位置のナンバ付けは、ビッ
ト0からビット127まで、カッドワードに対して下降
する順番にされている。
【0038】WORD 0における第1のハーフ・ワー
ドには、システム/370のために設定された命令にお
いて見出されるような、通常の2バイト命令が含まれて
いるものとする。ハーフ・ワードの命令52に含まれて
いる16ビットの中の、第1の8ビット0−7はOP
コードを形成している。このOP コードにおいて、ビ
ット0およびビット1によって長さフィールド・コード
が生成されている。システム/370の命令において、
0なるコード値で指示されることは、命令が1ハーフ・
ワード長であることであり、コード01および10で示
すことは、ダブル・ハーフ・ワード(4バイト)の命令
であることであり、そして、コード11で示すことは、
命令には3ハーフ・ワード(6バイト)が含まれている
ことである。2バイトの命令フォーマットに含まれてい
る指示は、ビット位置8−11にあるものは第1のオペ
ランドであり、ビット位置12−15にあるものは第2
のオペランドであるということである。これらのオペラ
ンド・フィールドによって、命令に対するオペランドが
蓄積されるような、汎用レジスタのセットの中のレジス
タが識別される。
【0039】図5における参照数字54によって、ダブ
ル・ハーフ・ワード(4バイト)の命令に対するフォー
マットが示されている。このダブル・ハーフ・ワードの
命令において、第1の8ビット(バイト0)には、01
または10なる長さフィールド・コードを有するOP
コードが含まれている。ダブル・ワードにおける第2バ
イト(バイト1)の第1の4ビットで識別されるもの
は、汎用レジスタにおけるレジスタ(R)の形式での、
命令に対する第1のオペランドである。ダブル・ハーフ
・ワードにおけるバイト1の第2の4ビットで識別され
るものは、汎用レジスタにおけるアドレス・インデック
ス・レジスタ(RX)である。これに対して、バイト2
の第1の4ビットで識別されるものはベース・アドレス
・レジスタ(RB)である。知られているように、RX
レジスタおよびRBレジスタはオペランドのアドレス計
算のために用いられるものである。
【0040】命令複合化ユニット 以下の命令複合化ユニットの説明を理解する目的のため
に、QW0−QW7で示されるような、8カッドワード
のブロックからなるキャッシュ・ラインに命令が用意さ
れている。図6Aと図6Bにより詳細に示されているよ
うに、この命令複合化ユニットは、キャッシュ・ライン
を複合化するために、図1における命令複合化ユニット
37として用いるようにすることが適当である。図6
A、図6Bの命令複合化ユニットは、次のような一般的
な場合のために設計されている。即ち、命令の長さは2
バイト、4バイトまたは6バイトであることが可能であ
り、データがキャッシュ・ライン内に散在することが可
能であり、そして、第1の命令が始まることを指示する
ための参照点は設けられていないというような、一般的
な場合のために設計されている。図6A,図6Bの命令
複合化ユニットは、最大で8個の命令を同時に複合化す
るものであって、並列的な実行のためには、一時に2個
の命令を複合化するものである。この場合において、ラ
インの各ハーフ・ワードに対して発生される1個の複合
化ビットとともに、1ビットの複合化信号が発生され
る。その結果として、各キャッシュ・ラインに対して6
4個の複合化ビット(Cビット)が発生されることにな
る。
【0041】図6A、図6Bにおける命令複合化ユニッ
トの動作を理解するために、ここで実施される複合化の
ルールについて考察する。いま、2個の命令ijおよび
ik(ここで、jおよびkは命令カテゴリ・ナンバを表
している)に対する依存性関数(dependency
function)がdであるとすると、ijは第1の
命令または左側(left)命令として参照され、これ
に対して、ik第2の命令または右側(right)命
令として参照される。依存性関数dは、セット[A,
E,φ]に複合化される2個の命令間での依存性をマッ
ピングするものである。ここに、Aはアドレス発生の依
存性、Eは実行ユニット(データ)の依存性、そして、
φは依存性がないこと、即ち独立した実行であることを
表している。
【0042】ここで、複合化されている2個の命令に対
する複合化関数(compounding funct
ion)Cについて考察する。各命令に対するハードウ
エア上の要求とともに、これら2個の命令のためのdに
対する値が与えられるが、ここでのCは2進関数であっ
て、次のように簡単に定義される。即ち、C = 1は命
令の複合化が可能であることを意味しており、また、C
= 0は命令の複合化が不可能であることを意味してい
る。
【0043】例えば、次のコード・シーケンスについて
考察する。 (1) AR 2,3 (2) SR 4,2 (3) AR 2,3 (4) SR 4,5 (5) SRL 6,1(0) (6) AR 6,5 (7) AR 2,6 (8) L 1,0(0,2) 命令(1)および命令(2)は、2個の実行ユニット
(EU2およびEU3)を用いて、R2 = R2 + R
3 および R4 = R4 − (R2 + R3)を計算す
るために複合化することができる。これに関連して、実
行ユニットとしてのEU2は、3対1(3−to−1)
の複合化操作を実行することによって、命令間のインタ
ロックを崩壊させる。このような実行ユニットについて
は、ともに出願された US Patent Appli
cation Serial No. 07/504,9
10 において教示されている。命令(1)および命令
(2)において、C = 1 であり、また、d = E で
ある。
【0044】命令(3)および命令(4)は、EU2お
よびEU3を用いることによって、R2 = R2 + R
3 および R4 = R4 − R5を計算するために複合
化することができる。命令間には依存性がなく、従っ
て、C = 1 であり、また、d = φ である。
【0045】命令(5)および命令(6)については、
d = E であるが、C = 0 である。その理由は、命
令(6)の実行ユニットのハードウエアが定義されてい
ることから、インタロックの崩壊が不可能であるためで
ある。命令(7)および命令(8)は、アドレス発生の
依存性を表すものである。図6における命令複合化ユニ
ットによって実施される複合化ルールによれば、d =
A であることから、C = 0 である。
【0046】次の記号表現は、2個の潜在的に複合化が
可能な命令を考察するために用いられるものである。 op1 r1,r2 ;第1または左側命令 op2 r3,r4,(r5);第2または右側命令 この記号表現において、opなる指示は各命令の第1バ
イトにおいて見出されるOP コードを対象とするもの
であり、これに対して、r1,r2なる指示は第1命令
のレジスタ・フィールドにおけるレジスタである。ま
た、r3,r4(および、できればr5)なる指示は、
第2命令の第2(および、できれば第3)バイトのフィ
ールドにおけるレジスタである。
【0047】ここで、上述された記号表示について考え
ると、例えばシステム/370の命令セットのBCTR
命令およびBCR命令において、アドレス操作用のオペ
ランドとしてr4が用いられるときには、r1 = r4
はアドレス発生の依存性があるものと考えられる。o
p1およびop2なる指示は、それらが任意のフォーマ
ットの命令を対象とすることで一般的(generi
c)なものである。rフィ−ルドは、通常、周知のフォ
ーマットの2バイトまたは4バイトの命令に対して付加
される。
【0048】複合化のルール システム/370の命令セットのような例示的な命令セ
ットにおける、カテゴリ1の命令を複合化するためのル
ールは以下のようにして与えられる。これらのルールは
図6A、図6Bの複合化ユニットにおいて実施されるも
のであって、固定小数点命令と固定小数点命令との複合
化、および、固定小数点命令と浮動小数点命令との複合
化が許容される。ここでのカテゴリは図2で指定される
ものである。 カテゴリ1のルール 1. カテゴリ1および1 C = 1 例外 C = 0(次に対して) 1. op1 = 任意,op2 = 任意,および r1 = r3 = r4 2. op1 = {AR,SR,ALR,SLR}, op2 = {LPR,LNR},および r1 = r4 2. カテゴリ1および2 C = 1(d = φ のとき);C = 0(そうでない
とき) 3. カテゴリ1および3 1.op2 = {BCT,BCTR}のとき,d =
{E,φ}であれば,C = 1;C = 0(そうでない
とき) 2.op2 = {BXH,BXLE}のとき,d = φ
であれば,C = 1 4. カテゴリ1および4 C = 0 5. カテゴリ1および5 C = 0 例外 1. op1 = 任意であり,op2 = {BASR}
のときには,d = {E,φ}φであれば,C = 1;
C = 0(そうでないとき) 2. op1 = 任意であり,op2 = {BAS}の
ときには,d = {A}Cであれば,C = 0;C =
1(そうでないとき) 6. カテゴリ1および6 C = 1(d = φ のとき);C = 0(そうでない
とき) 7. カテゴリ1および7 C = 0(d = A のとき);C = 1(そうでない
とき) 8. カテゴリ1および8 C = 0(d = A のとき);C = 1(そうでない
とき) 9. カテゴリ1および9 C = 0(d = A のとき);C = 1(そうでない
とき) 10. カテゴリ1および10 C = 0(d = A のとき);C = 1(そうでない
とき) 11. カテゴリ1および11 C = 1 12. カテゴリ1および12 C = 1 13. カテゴリ1および13 C = 1 14. カテゴリ1および14 C = 0(d = A のとき);C = 1(そうでない
とき) 15. カテゴリ1および15 C = 0(d = A のとき);C = 1(そうでない
とき) 16. カテゴリ1および16 C = 0(d = A のとき);C = 1(そうでない
とき) 17. カテゴリ1および17 C = 0(d = A のとき);C = 1(そうでない
とき)
【0049】上記で与えられたルールは、ペアの第1の
命令がカテゴリ1の命令であるときには、ある1個の命
令ペアを複合化するのには完全なものである。ルールの
余すところがない(exhaustive)セットには
全てのカテゴリが含まれており、また、上で検討された
互換性およびインタロックの解析に従って構成されるも
のである。
【0050】図6A、図6Bにおいて例示されているよ
うな命令複合化ユニットは、一般的な場合に対する複合
化ルールの完全なセットを実施するものである。例示の
目的のために、上述のように与えられたカテゴリ1の例
示的なルールが用いられる2命令複合化に関連して、図
6A、図6Bにおける命令複合化ユニットの動作が提示
されている。
【0051】命令複合化ユニットの詳細な説明 図6Aの命令複合化ユニットに含まれている60バイト
・バス60は図4における蓄積バスに対応している。こ
の蓄積バスは、メイン・メモリ36から命令キャッシュ
38に向けて、カッドワード単位(quadword−
by−quadword)でキャッシュ・ラインを伝送
するものである。バス60における各カッドワードはス
テージ・ユニット(staging unit)61に
ラッチされている。バス60ににおける現在のカッドワ
ードをラッチすると、ステージ・ユニット61において
も、先行のカッドワードの上位2ワードおよび第1のカ
ッドワードの上位2ワードを残留させる。命令のカテゴ
リ化、データ依存性の決定、および、アドレス発生の依
存性の決定を含む複合化の解析は、上記で与えられた複
合化のルールが適用されるルール・ベース・ユニット6
2において実行される。ルール・ベース・ユニット62
は、ステージ・ユニット61に現存する1個のカッドワ
ードにおける8個のハーフ・ワードの各々に対するCビ
ットを発生させる。複合化タグ・レジスタ64に含まれ
ている16個の個別の4ビット・レジスタは、複合命令
キャッシュに対して伝送されているキャッシュ・ライン
における8個のカッドワードに対して生成された64個
のCビットを蓄積するためのものである。ラッチされた
Cビットは複合化タグ・レジスタ64から並列的に取得
されて、伝送されているキャッシュ・ラインに対する複
合化ビット・ベクトル、即ち、Cベクトルを形成するよ
うにされる。命令複合化ユニット有限状態マシン(IC
U FSM)66は、図6A、図6Bにおける命令複合
化ユニットの動作を同期化するためのコントロール信号
を発生する。
【0052】図6Aにおいて、ステージ・ユニット61
には4個のレジスタ75、76、77および78が含ま
れている。これらのレジスタの各々は1個のカッドワー
ドの半分を蓄積することができる。即ち、64ビットの
1個のダブル・ワードを蓄積することができる。バス6
0またはレジスタ78の出力のいずれかからのレジスタ
76に対する充填が、マルチプレクサ74によってなさ
れる。レジスタ76および77は、それぞれに、L2L
OレジスタおよびL2HIレジスタとして指示されてい
る。これに対して、レジスタ75および78は、S1レ
ジスタおよびS2レジスタとして示されている。好適に
は、カッドワードはレジスタ76および77からキャッ
シュに向けて送られる。
【0053】バス60上の各カッドワードは、L2LO
レジスタ(76)へのビット0−63およびL2HIレ
ジスタ(77)へのビット64−127におけるダブル
・ワードをもって、レジスタ76および77にロードさ
れる。レジスタ76および77に対する第1のカッドワ
ードのロード操作に次いで、先行のカッドワードの最後
のダブル・ワードがL2HIレジスタからS1レジスタ
75にロードされる。ラインにおける第2のカッドワー
ドがロードされると、第1のカッドワードのビット位置
0−63におけるダブル・ワードが、L2LOレジスタ
からS2レジスタ78にロードされる。8カッドワード
・ラインの最後のカッドワードがレジスタ76および7
7にロードされるまで、このダブル・ワードはS2レジ
スタ78内に留まる。現在のラインにおける最後のカッ
ドワードのロード操作に続く、カッドワードの伝送のた
めに次に利用可能なサイクルにおいて、S2レジスタ7
8から、マルチプレクサ74を通して、L2LOレジス
タ76にダブル・ワードが伝送される。
【0054】図6A、図6Bにおける命令複合化ユニッ
トによる複合化処理の進行を理解するために、ここで図
7が参照される。カッドワードiのビット64:127
は、S1レジスタ75のビット位置0:63に保持され
ている。これに関連して、これらの位置を占有するもの
は、ワード82を形成する2個のハーフ・ワード80と
81、および、ワード86を形成するハーフ・ワード8
4と85である。カッドワードi+1のビット位置0:
63は、L2LOレジスタ76の対応するビット位置に
ある。ビット位置0:31は、フル・ワード89を形成
するハーフ・ワード87および88によって占有されて
いる。
【0055】最悪の場合としての複合化処理において
は、ある1個の命令バイト・ストリームにおける各ハー
フ・ワードに対するCビットの発生が必要とされること
が想起される。このために、図7において部分的に示さ
れているような、カッドワードにおけるハーフ・ワード
の各々に対する複合化ビットが、図6A、図6Bにおけ
る命令複合化ユニットによって発生される。Cビットの
発生の際には、各ハーフ・ワードは潜在的には2バイト
命令または4バイト命令のいずれかであると仮定され
る。(発明者の考えによれば任意のサイズの命令の複合
化が可能であるけれども、この例においては、6バイト
命令は複合化されない。)ルール・ベース・ユニット6
2(図6A)における複合化ボックス(CBOX)62
aによって、S1レジスタ75内のビット位置0:15
を占有するハーフ・ワード80に対するCビットが発生
される。このハーフ・ワードに対するCビットは、上記
で与えられた複合化ルールの(CBOX 62aにおけ
る)適用によって発生される。かくして、CBOX 6
2aにおいて第1にせねばならないことは、2バイト命
令の全部または4バイト命令の第1の半分がハーフ・ワ
ード80に含まれているかどうかを決定することであ
る。CBOX 62aは、また、各命令が他の命令と複
合化できるカテゴリ内にあるかどうかを決定するため
に、ハーフ・ワード80において始まる命令のオペラン
ドを後続の命令と比較せねばならない。更に、データの
依存性またはアドレス発生での危険性という形式で、2
個の命令の間に何等かのインタロックがあるかどうかを
決定せねばならない。このために、CBOXは、2個の
命令における命令のOP コードとオペランドおよびア
ドレス操作・レジスタの比較をせねばならない。
【0056】CBOX 62aにおいては、ハーフ・ワ
ード80における命令が始まるものとする。図5におい
て上記のように例示された命令フォーマットを想起する
と、ハーフ・ワード80の始めの12ビットで生成され
るものは、命令のOPコード、命令の長さコード・フィ
ールドおよびr1である。ハーフ・ワード80における
命令の長さフィールドのコードが2バイト命令にデコー
ドされるときには、次の命令がハーフ・ワード81をも
って始まることがCBOX 62aによって仮定され
る。ハーフ・ワード81において始まる命令が、ハーフ
・ワード80における命令と複合化できるかどうかを決
定するために、CBOX 62aは、ハーフ・ワード8
1において始まる20ビットをアクセスして、ハーフ・
ワード84における始めの4ビットまで伸長させねばな
らない。ハーフ・ワード81において始まる命令が4バ
イト長である場合に、これらの20ビットが必要とされ
る。この場合において、第1のバイトには命令のOPコ
ードが含まれており、第2のバイトはr3およびr4の
指示をするものであり、また、次に続くハーフ・バイト
は(可能であれば)レジスタr5の指示をするものであ
る。
【0057】ハーフ・ワード80における命令は2バイ
ト命令であるという仮定を続行すると、CBOX 62
aは、入力I1においてハーフ・ワード80のビット
0:11を受け入れ、また、入力I21においてハーフ
・ワード81で始まるビット16:35を受け入れて、
命令のサイズ、OP コードの互換性、および、何等か
のインタロックを決定するために十分な情報とするよう
にされる。
【0058】ハーフ・ワード80のビット0:1におけ
る長さフィールドのコードにより、命令が4バイト長の
ものであることが指示されたとすると、ハーフ・ワード
81がハーフ・ワード80において始まる命令に含まれ
ていることから、CBOX62aは、ハーフ・ワード8
4で始まる20ビットのアクセスをせねばならない。こ
れらの20ビットは、ハーフ・ワード85の第1の4ビ
ットにおいてハーフ・ワード84の全てを包含するよう
な、S1レジスタのレジスタ位置32:51から取得さ
れる。ある1個の4バイト命令に続く第2の命令に対す
る20ビットは、CBOXのI22において加えられ
る。
【0059】ここで注意が喚起されることは、ハーフ・
ワード81で始まる命令と次に続く命令との複合化の可
能性の決定には、ハーフ・ワード84において始まる2
0ビットに対するアクセスと、ハーフ・ワード85にお
いて始まる20ビットに対するアクセスとが必要とされ
るということである。しかしながら、上記で説明された
ように、ハーフ・ワード85において始まる20ビット
には、レジスタ76におけるハーフ・ワード87の第1
の4ビットが含まれている。従って、ハーフ・ワード8
1に対する複合化ビット値を決定するCBOXへの入力
は、そのI22入力において、S1レジスタ75内のビ
ット48:63を含む20ビット、および、L2LOレ
ジスタ76のビット0:15に蓄積されているハーフ・
ワード87におけるビット0:3を受け入れる。
【0060】図6Aの命令複合化ユニットに戻ると、8
個のCBOX回路80−87が示されている。これらの
CBOX回路では、命令ストリームがデータと混合され
た可変長の命令を有しており、キャッシュ・ラインの第
1の命令がある場所を指示する基準がないという、最悪
のシナリオに従う実際の複合化の解析が実行される。シ
ステム/370の例においては、全ての命令がハーフ・
ワードの境界上に整列されていることから、命令に対す
る開始点が仮定されて、当該基準点はキャッシュ・ライ
ンにおいて受け入れた第1のカッドワードのビット位置
0に対応するようにされる。
【0061】CBOX80−87の各々は、S1レジス
タ75およびL2LOレジスタ76に含まれている8個
のハーフ・ワードのそれぞれ1個に対するCビットを発
生する。それぞれのボックスは、そのI1入力において
ハーフ・ワードのそれぞれ1個の第1の12ビットを受
け入れ、また、そのI21入力およびI22入力におい
て、I1入力を生成するものに従う第1および第2のハ
ーフ・ワードで始まる第1の20ビットを受け入れる。
このために、例えば、CBOX80は図7のCBOX
62aに対応しており、これが受け入れるものは、その
I1入力における、S1レジスタ内の第1のハーフ・ワ
ードにおける第1の12ビット、そのI21入力におけ
る、S1レジスタ内の第2のハーフ・ワードで始まる2
0ビット、および、そのI22入力における、S1レジ
スタ内の第3のハーフ・ワードで始まる20ビットであ
る。これに応答して、CBOX 80は、S1レジスタ
の第1のハーフ・ワードに対するCビットを発生する。
【0062】CBOX 81は、S1レジスタの第2の
ハーフ・ワードに対するCビットを発生する。ここで注
意されることは、CBOX 81の入力I22において
はS1レジスタ(ビット48:63)の最後のハーフ・
ワードで始まり、L2LOレジスタ76における第1の
ハーフ・ワードの第1の4ビットに続くような20ビッ
トを受け入れる。同様にして、CBOX 82および8
3により、S1レジスタ内の第3および第4のハーフ・
ワードに対するCビットが発生され、これに対して、C
BOX 84−87によれば、L2LOレジスタ76内
の第1、第2、第3および第4のハーフ・ワードに対す
るCビットが発生される。
【0063】レジスタ64については、図6Bで例示さ
れるように、16個の分離した4入力、4出力のDレジ
スタ100−115が示されている。ここで、偶数ナン
バのレジスタの各々はCBOX 84−87の各々から
の入力を受け入れ、これに対して、奇数ナンバのレジス
タの各々はCBOX 80−83の各々からの入力を受
け入れる。図6Aにおいて、CBOX 81、82およ
び83からのCビットは、それぞれに、打ち切り(tr
uncation)要素90、91および92を通して
用意される。FSM 66による TRUNCATE 信
号出力がロー(low)である限りは、回路要素90、
91および92に対するCビット入力は、それらの要素
を通して、レジスタ64における奇数ナンバのラッチに
向けて送られる。
【0064】図6A、図6Bにおける命令複合化ユニッ
トは、次の諸条件を守りながら、任意に回転される(r
otated)キャッシュ・ラインに対する複合化を正
確に実行するように設計されている。 1. キャッシュ・ラインを越えて複合化が生じること
はない。即ち、キャッシュ・ラインのQW7における最
後の命令が、次に続くキャッシュ・ラインのQW0にお
ける第1の命令と複合化することはない; 2. ラインに対する最後から3番目のCビットまで、
即ち、QW7の最後から3番目のハーフ・ワードに対す
るCビットまで、条件(1)に鑑みて、0に強制される
ことによって打ち切りがなされる;そして 3. QW0以外のカッドワードが第1に受け入れられ
るようにキャッシュ・ラインが回転されると、受け入れ
られた最後のカッドワードと第1のカッドワードとの間
の境界にある命令に対する複合化の解析が実行される。
【0065】回転されたキャッシュ・ラインの最後のカ
ッドワードと第1のカッドワードとの間での複合化のた
めに、S2レジスタ78はバス60よりロードされた第
1のカッドワードから始めより4個のハーフ・ワードを
受け入れて、最後のカッドワードが受け入れられるまで
それらを残留させ、その該当の時点において、S2レジ
スタ78がマルチプレクサ74を通してL2LOレジス
タ76にゲートされる。
【0066】コントロール有限状態マシン66は、通常
の設計のものであって、次のような入力信号に応答す
る。 FIRSTQW:キャッシュ・ラインにおける第1のカ
ッドワードがバス60上に配置されるときに出されるも
のである; LASTQW:キャッシュ・ラインにおける最後のカッ
ドワードがバス60上にあるときに出されるものであ
る; EOL(エンド・オブ・ライン):QW7がバス60上
にあるときに出されるものである;および NUMFQW:バス上を伝送される第1のカッドワード
のナンバ(0ないし7)であって、FIRSTQW =
1のときに有効なものである。 キャッシュ・ミスに応答して高レベル蓄積部36から複
合命令キャッシュ38にキャッシュ・ライン伝送のコン
トロールをするプロトコルの過程において、これらの信
号はキャッシュ管理ユニット44(図4)によって生成
される。
【0067】図6Bにおいて、命令複合化ユニットをコ
ントロールする有限状態マシン66は、次の信号を生成
する。 LD L2:L2LOレジスタおよびL2HIレジスタ
にロードすることを意味する信号である; LD S1:S1レジスタにロードすることを意味する
信号である; LD S2:S2レジスタにロードすることを意味する
信号である; GT S2 L2LO:S2レジスタの内容をL2LO
レジスタにゲートすることを意味する信号である; LD CVR(0:15):Cベクトル・レジスタ64
をロードすることを意味する信号である。この信号の各
ビットによって、対応する4信号レジスタのロードをす
る。即ち、LD CVR(0) = 1であるときには、
レジスタ100がロードされる。また、LD CVR
(1) = 1であるときには、レジスタ101がロード
される。好適には、図6Bで例示されている設計におい
て、2本のLD CVRラインを同時に出すことができ
る;および TRUNCATE:QW7の第6、第7および第8のハ
ーフ・ワードにおける命令に対するCビットを0にする
ために活性化される。
【0068】命令複合化ユニットのタイミング 図8A−8Cには、入力されるキャッシュ・ラインにお
ける3個の代表的な回転について、図6A,図6Bの命
令複合化ユニットのタイミングが示されている。このユ
ニットは10周期(period)のサイクルで動作す
るものである。これらの図においては、バス60上での
8個の連続的なサイクルにおいて1度に1カッドワード
であるように、8個のカッドワード・ラインが伝送され
る。ライン上での現在のカッドワードはQWNとして指
定される。ここに、N = 0,1, ・・・, 7であ
る。カッドワードが登録されるときには、それらはQW
NLまたはQWNHとして指定される。ここに、”L”
はカッドワードQWNのビット0:63を意味してお
り、これに対して、”H”はカッドワードQWNのビッ
ト64:127を意味している。
【0069】ここで図8Aを参照して、回転されないキ
ャッシュ・ラインの複合化について説明する。この図8
Aにおいて、キャッシュ・ラインの8個のカッドワード
は、キャッシュ内での蓄積のために、バス60上を逐次
に伝送される。伝送する第1のカッドワードの存在は、
信号FIRST QWによって表される。この信号は、
QW0がバス60上にあるときには、サイクル周期0の
間に出されるものであり、また、QW1がバス上にある
ときには、周期1の始まりから僅かに過ぎてから下降す
るようにされる。信号FIRST QWが有効である間
に、FSM66によってNUMFQW信号がゲート・イ
ンされる。このNUMFQW信号によって、9状態サイ
クリング・カウンタが初期化されて、バス上での第1の
カッドワードのナンバを表す状態にされる。図8Aにお
いて、NUMFQWは(10進で)0なる値を有してお
り、カッドワード QW0がバス上にあることが指示さ
れている。信号FIRST QWおよびNUMFQWに
応答して、バス60からのカッドワードをその到着の順
序でL2LOレジスタ76およびL2HIレジスタ77
にロードさせるようなLD L2信号が、FSM 66
によって活性化される。
【0070】第2サイクル周期のおそくに、第3サイク
ル周期におけるL2LOレジスタ76内のHIダブル・
ワードをS1レジスタ75にロードさせるようなLD
S1信号が、FSM 66によって上昇される。その後
で、それぞれの残りのサイクル周期において、LD S
1信号が下降するまでの先行のサイクル周期の間に、S
1レジスタ75は、L2HIレジスタ77にロードされ
ていたハーフ・ワードを受け入れる。第2のサイクル周
期においては、FSM 66はLD S2信号をもパル
ス化させて、L2バス60上で受け入れられている第1
のカッドワードの低位のダブル・ワードを、S2レジス
タにロードするようにされる。最後のカッドワードがL
2バス60上に配置されているときには、FSM 66
に対するLASTQW信号の入力が活性化される。これ
に応答してFSMはGT S2L2LO信号を発生し
て、第10のサイクル周期において、S2レジスタの内
容をL2LOレジスタ78にゲート・インする。ライン
の最後のカッドワード(即ち、QW7)は、EOL信号
によってFSM 66に対して示される。この信号は、
FSMに内在するEOLLTH信号によって表される1
周期にわたり、FSM 66によってラッチされる。次
のEOLLTH信号のサイクル周期において、FSM
66はTRUNCATE信号を活性化させ、また、LD
L2信号およびLD S1信号を不活性化させる。
【0071】従って、回転されないキャッシュ・ライン
については、8個のサイクル周期のシーケンスの各々に
おいて、カッドワードがバス60上に配置される。10
個のサイクル周期を全体として規定されるものは、キャ
ッシュ・ラインのカッドワードをラッチして、ライン内
のハーフ・ワード毎のCビットを発生するシーケンスで
ある。始めのサイクル周期0においては、QW0がL2
バス60上に配置される。サイクル周期1においては、
QW0はステージ・ユニット61内にラッチされる。こ
のとき、その低位のダブル・ワードQW0LはL2LO
レジスタ77内にあり、その高位のダブル・ワードQW
0HはL2HIレジスタ76内にあるようにされる。サ
イクル周期2においては、ダブル・ワードQW0LはS
2レジスタ78にラッチされて、サイクル周期8まで保
持される。これと同時に、次のカッドワードQW1がレ
ジスタ76および77にラッチされ、また、L2HIレ
ジスタ76の内容がS1レジスタ75に伝送される。カ
ッドワードをレジスタ76および77に入力して、先行
のワードの高位のダブル・ワードをレジスタ75に伝送
するシーケンスは、サイクル周期3−8にわたって繰り
返される。最後のサイクル周期においては、レジスタ7
8の内容がレジスタ76に戻るように伝送され、また、
先行のサイクルの高位のダブル・ワードがレジスタ75
に伝送される。
【0072】Cビットは複合化ユニット62により発生
され、サイクル周期1−9において、CVRレジスタ6
4にラッチされる。サイクル周期1においては、レジス
タ76における4個のハーフ・ワードに対してだけCビ
ットが発生される。また、サイクル周期2−8において
は、レジスタ75および76におけるハーフ・ワードに
対して、Cビットの発生およびラッチがなされる。サイ
クル周期9においては、S1レジスタ75に対してだけ
Cビットが発生される。TRUNCATE信号の活性化
により、QW7H内の最後の3個のハーフ・ワードに対
するCビットが0になるように強制される。
【0073】上述されたシーケンスにおいて発生された
Cビットのラッチ操作は、図8AにおけるLDCVR信
号およびNUMFQW信号を参照することによって理解
することができる。NUMFQW信号は3ビット信号で
あって、FIRST QW信号が活性である間は有効で
ある。信号のデジット(digit)によって表されて
いる10進値は、伝送されている第1のカッドワードの
ナンバに対応するものである。図8Aにおける回転され
ないラインに対する値は(10進の)0である。FSM
66においては、NUMFQWの値を用いて、9個の
状態を備えた状態シーケンスの初期化がなされる。シー
ケンスの第1の状態および第9の状態においては、1個
だけのLDCVR信号が発生される。また、他の7個の
状態においては、2個のLDCVR信号が発生される。
図8Aにおいて、LDCVR信号は、16ビットのLD
CVR信号の16進による表現として与えられる。16
進のデジットのそれぞれは、LDCVR信号の4個の連
続的なビットを表している。その第1の16進のデジッ
トはLDCVRのビット0−3を、第2のデジットはビ
ット4−7を、第3のデジットはビット8−11を、そ
して、第4のデジットはビット12−15を表してい
る。LDCVR信号のビットの各々は、対応のナンバが
付された4ビットのCVRレジスタにロードされてい
る。このために、例えば、LDCVR0が活性であると
きには4ビットのCVRレジスタ100にロードされ、
また、LDCVR11が活性であるときには4ビットの
CVRレジスタ111にロードされる。図8Aのサイク
ル周期1において、LDCVR信号の16進による表現
は8000である。これの意味することは、第1の16
進デジットの値が”1000”であるということであ
る。このために、4ビットのレジスタ100に対するロ
ード信号は活性であって、その意味することは、L2L
Oレジスタ76におけるハーフ・ワードに対するCビッ
トがCVRレジスタにラッチされているということであ
る。サイクル周期2において、16進ナンバの第1のデ
ジットは”6”であり、また、他の全てのデジットは”
0”である。第1のデジットをデコードすることによっ
て、2進ナンバ”0110”が与えられる。これに関連
して、4ビットのレジスタ101および102に対する
ロード信号は活性である。4ビットのレジスタ101
は、S1レジスタ75(サイクル周期2においてはQW
0H)内のハーフ・ワードのためにCBOX 80−8
3によって発生されたCビットを受け入れる。同様にし
て、4ビットのレジスタ102には、QW1Lのために
CBOX 84−87によって発生されたCビットがロ
ードされている。図8Aにおけるシーケンスはサイクル
周期3−8を通して進行して、4ビットのCVRレジス
タの適当なペアにおいて捕獲されているS1レジスタ7
5およびL2LOレジスタ76内のカッドワードに対す
る複合化によるCビットの発生をさせる。サイクル周期
9においては、LDCVR信号の最後の16進デジット
の値は”1”であって、”0001”なる2進値に対応
しており、キャッシュ・ラインに対する最後の4個のC
ビットとともに、4ビットのCVRレジスタ115にロ
ードされている。
【0074】図8Bに例示されているものは、キャッシ
ュにおけるカッドワードのロード操作およびCビットの
発生サイクルであり、ここに、キャッシュ・ラインは最
後のカッドワードであるQW7をバス60上に第1に配
置するように回転している。この場合において、EOL
信号はFIRST QW信号と共存している。この結果
として、EOLLTH信号はFSM 66に対して内在
的に発生されて、EOL信号を1サイクル周期だけ遅ら
せ、サイクル周期2の間にTRUNCATE信号が生じ
るということになる。このTRUNCATE信号によ
り、いずれの命令についても、QW7Hにおける最後の
3個のハーフ・ワードの複合化が妨げられる。後述され
るように、このような複合化は、QW7Hにおける最後
の3個のハーフ・ワードに対するCビットを0に強制す
ることによって妨げられる。しかしながら、QW7にお
ける低位のダブル・ワード(即ち、QW7L)は、QW
6Hにおける命令との複合化のために(QW7Lが)L
2LOレジスタ76に入力されているときには、サイク
ル周期9までS2レジスタ78内に留まることになる。
NUMFQWの初期値は、LDCVR信号の発生を回転
するキャッシュ・ラインの順序と同期させている。
【0075】図8Cに例示されているものは、第1のカ
ッドワードがQW0でもQW7でもないときの、回転す
るキャッシュ・ラインを複合化するための10周期サイ
クルである。
【0076】図9Aと図9B(以後は”図9”)には、
CBOXに対する部分的な設計が示されている。ここで
の設計は、カテゴリ1に対する複合化のルールだけが示
されているという点で部分的なものである。カテゴリ1
は最悪の場合のカテゴリであり、CBOXの設計の複雑
性に上限があることから、このような複合化は啓蒙的な
ものである。当業者であれば、カテゴリ2−12に対す
る複合化のルールを実施するための、対応するロジック
を導出することができる。
【0077】CBOXに対する入力はI1(0:11)
であって、命令のペアにおける第1のハーフ・ワードの
第1の12ビットである。これに従って、このハーフ・
ワードは”命令1”として参照される。図7に関連して
上述されたように、これらのビットに含まれているもの
は、複合化のために考慮されているハーフ・ワードのO
P コードおよびr1フィールドである。命令1は2バ
イト命令または4バイト命令のいずれかであることか
ら、第2の命令(I2)に対して2個の選択をすること
が可能である。命令1が単一のハーフ・ワードであると
きには(ビット0:1 = ”00”)、命令2は、命令
1に続く次のハーフ・ワードからくることになる。これ
は入力I21(0:19)に対応している。上述された
ように、命令2は4バイト命令であることができる。そ
して、この場合においては、命令テキストの第1の20
ビットが複合化の解析のために必要とされる。ビット
0:1 が、I1 = ”01”,”10”,または”1
1”のものであるときには、命令2は入力I22(0:
19)からくることになる。これらは命令1に続く第2
のハーフ・ワードにおける第1の20ビットである。
【0078】命令1における命令の長さが一旦決定され
ると、命令1および命令2は必要に応じてデコード・ブ
ロック(DEC)によってデコードされる。これに関連
して、前記のデコード・ブロックは、命令のOP コー
ドを単にデコードするだけであって、該OP コードが
デコード・ブロックによって採用されたある所定のOP
コードのパターンに対応しているときにのみ、活性の出
力を生成するものである。これと同時に、命令1におけ
る第1のオペランドが、命令2における潜在的なオペラ
ンドおよびアドレス・レジスタ・フィールドと比較され
て、データまたはアドレス発生のインタロックが存在す
るかどうかを決定するようにされる。依存性の指示は、
上記のように与えられた複合化ルールを実施する態様で
デコードされるOP コードと組み合わされている。図
9のロジック(”カテゴリ1”ロジックと呼ばれる)に
よって発生される信号はCMP C1なる信号であっ
て、命令1がカテゴリ1におけるものであり、命令2と
ともに複合化可能であるときに出されるものである。こ
の信号が組み合わされるものは、カテゴリ2から17ま
での中にある、命令1に対応する信号CMP C2から
CMP C17までである。その最終的な結果としての
Cビット出力は、命令1が命令2と複合化するときに出
されるものである。
【0079】ここで図9に戻って、”I1”としての命
令1および”I2”としての命令2を参照すると、I1
における第1の12ビットが入力A5で受け入れられ
る。I1におけるビット0:1は、これらのビットのい
ずれかがセットされたときにその出力が活性化するよう
な、ORゲート200の入力に供給される。セットされ
ているいずれのビットでも、I1には2バイト以上含ま
れていることを意味している。ORゲート200の不活
性出力は、I1が2バイト命令であることを意味してい
る。ORゲート200の出力によってマルチプレクサ2
01がコントロールされる。ORゲート200の出力が
不活性であるときには、入力A3がマルチプレクサ20
1によって出力される。A3における入力は、I1にた
だちに追従するハーフ・ワードからのビット0:19を
構成するI21入力である。そうではなくて、ORゲー
ト200の出力が活性化しているときには、A4におけ
る入力がマルチプレクサ201によって選択される。例
示されているように、A4における入力はI22であっ
て、I1の後の第2のハーフ・ワードの第1の20ビッ
ト(0:19)を構成している。I1のOPコード部分
(ビット0:7)は、3個のデコーダ210a、210
bおよび210cによってデコードされる。これらのデ
コーダの全てはカテゴリ1の命令をデコードするもので
ある。更に、デコーダ210bはAR命令またはALR
命令をデコードするものであり、また、デコーダ210
cはSR命令またはSLR命令をデコードするものであ
る。
【0080】マルチプレクサ201によって選択された
ハーフ・ワードのOP コードは、デコード・ブロック
212aおよび212bのバンクに供給される。OP
コードがブロックの一方のデコード条件を満たすときに
は、そのデコード・ブロックが活性化される。デコード
されるブロックの条件はテーブル1でリストにされてい
る。例えば、I2が有するOP コードがブランチ・オ
ン・カウント(branch on count)として
デコードされるときには、I = BCTRとして指示さ
れるデコーダがその出力を活性化することになる。 テーブル1 I = C1 命令はカテゴリ1 I = AXR 命令はAR,またはALR I = SXR 命令はSR,またはSLR I = LXR 命令はLPR,またはLNR I = C2 命令はカテゴリ2 I = BCT 命令はカテゴリBCT I = BCTR 命令はカテゴリBCTR I = BAXR 命令はカテゴリBASR I = BAX 命令はカテゴリBAS I = C6 命令はカテゴリ6 I = C7 命令はカテゴリ7 I = C8 命令はカテゴリ8 I = C9 命令はカテゴリ9 I = C10 命令はカテゴリ10 I = C11 命令はカテゴリ11 I = C12 命令はカテゴリ12 I = C13 命令はカテゴリ13 I = C14 命令はカテゴリ14 I = C15 命令はカテゴリ15 I = C16 命令はカテゴリ16 I = C17 命令はカテゴリ17
【0081】I1およびI2に対するレジスタ・フィー
ルドの比較は、比較(CMP)ブロック214−217
によって実行される。これらの比較は、インタロックを
構成する可能性がある依存性を識別することを目的とす
るものではない。これらのブロックの各々においては、
I1のビット8:11において識別されたレジスタr1
と、I2のレジスタ・フィールド位置での内容との比較
がなされる。比較された値が等しくないときには、CM
P ブロックの出力が活性になる。これに対して、等し
いときにはその出力が不活性になる。これに関連して、
I2のビット8:11はレジスタr3に対応し、ビット
12:15はレジスタr4に対応し、そして、ビット1
6:19はレジスタr4に対応している。比較ブロック
217においては、比較レジスタr1に対して、I2の
r4レジスタ・フィールドにおける第1の3ビットだけ
が付与される。この比較は、I1とBXH命令またはB
XLE命令との間での実行の依存性を検出するために用
いられる。ここで、ビット12:15によって偶数レジ
スタの識別がなされるけれども、命令で用意されること
は奇数ナンバをもつ隣接のレジスタと比較をすることで
ある。この場合において、I1のビット8:10とI2
のビット12:14との等価性は、レジスタr1と、I
2のr4フィールドにおいて指定される奇数レジスタま
たは偶数レジスタのいずれかとの等価性を意味すること
になる。勿論、これによって実行のインタロックが指示
される。
【0082】図9において、ORゲート251を含むま
での残りのロジックは、レジスタ・フィールドの比較を
OP コードの指示と組み合わせて、I1命令およびI
2命令が複合化できるかどうかを決定するために設けら
れている。複合化できるときには、ORゲート251の
出力が生じて、I1として識別されたハーフ・ワードに
対するCビットの活性化がもたらされる。
【0083】上記で与えられている複合化のルールを参
照しながら、図9におけるロジックの残りについて説明
する。第1のルールにおいては、2個の例外を除いて、
カテゴリ1の命令は別のカテゴリ1の命令との複合化が
可能である。その第1の例外は、r1がr3およびr4
の双方に等しいときのことである。この条件はORゲー
ト220においてテストされて、比較ブロック214お
よび215に接続される。ORゲート220の出力は、
デコーダ210aおよび I = C1 をデコードするデ
コーダ・バンク212内のデコーダの出力とともに、A
NDゲート221に加えられる。条件での例外に合致し
ないときには、ANDゲート221の出力が生じて、2
個のカテゴリにおける各1個の命令を複合化すること
(thecompounding of two cat
egory one instructions)に対す
る第1の例外は適用されないことを指示するようにされ
る。上記のようなリストにされた第2の例外が生じるの
は、I1のOPコードによりAR命令、SR命令、AL
R命令またはSLR命令が識別され、I2のOPコード
によりLPR命令またはLNR命令が識別され、そし
て、r1 = r4が成り立つときである。この命令に対
するI1のOPコードはORゲート222によってテス
トされ、また、I1およびI2のOPコードに対する例
外の生起はANDゲート223でテストされる。このた
めに、ANDゲート223の出力が生じたときには、I
1およびI2に対するOPコードによって、それぞれの
例外のクラスにおける命令が指示される。ANDゲート
223の出力は、ANDゲート224において、比較ブ
ロック215の出力と組み合わされる。r1=r4であ
るときには、このブロックの出力は不活性であるが、こ
れによりANDゲート224の出力が不活性に維持され
る。比較ブロック215が活性であってレジスタの不等
性を指示しているときには、ANDゲート224の出力
が活性になって、例外の条件が合致しなかったことを指
示することになる。ANDゲート221および224の
出力は、ORゲート(225)を通って、ORゲート2
52に向けて送出される。
【0084】ANDゲート227においては、複合化ル
ールにおけるルール2に従うテストがなされる。このた
めに、I1のOP コードがカテゴリ1にあり、I2の
OP コードがカテゴリ2にあり、そして、r1がr3
に等しくないときには、該ゲートが活性にされる。
【0085】ORゲート233には2個の例外を有する
ルール3が適用される。これに関連して、I2のOP
コードがBCTRにデコードされるときには、アドレス
発生の依存性が明瞭にされねばならない。このBCTR
命令に対してこのような依存性が生じるのは、r1 =
r4 のときである。この例外はANDゲート231に
よって評価される。I1がカテゴリ1の命令であり、ま
た、I2がBCT命令であるときには、アドレス発生の
依存性に対するチェックがANDゲート230によって
なされる。I2がBCT命令であるときにアドレス発生
の依存性が生じるのは、r1 = r4のとき、または、
r1 = r5のときである。この依存性を検出するため
に、ANDゲート230は比較ブロック215および2
16からの入力を受け入れる。複合化のルール3の最後
の例外の生成は、ANDゲート229によって検出され
る。この例外が生じるのは、I2がBXH命令またはB
XLE命令であるときである。この場合において、アド
レス発生の依存性が生じるのは、r1 = r5のときで
あり、また、実行の依存性が生じるのは、r1= r3
のとき、r1 = r4のとき、または、r1がr4フィ
ールドにおける奇数レジスタまたは偶数レジスタに等し
いときである。かくして、I1がカテゴリ1の命令であ
り、I2がカテゴリ3の命令であり、そして、ルール3
に対する例外が生じないときには、ORゲート233の
出力が活性になる。
【0086】カテゴリ1および4の命令は複合化されな
い。I1がカテゴリ1の命令であり、I2がカテゴリ4
の命令であるときには、ORゲート252の出力は不活
性に留まる。
【0087】ルール5はORゲート239によって実施
されるが、このルール5に対する2個の例外のテスト
は、それぞれに、ANDゲート236および237によ
ってなされる。
【0088】ルール6、7、8および9は、それぞれ
に、ANDゲート241、242、245および246
によってなされる。
【0089】ルール10およびルール14−17に対す
る例外のテストは、ANDゲート247、248、24
9、250および251によってなされる。ルール11
−13に対する例外は存在しない。ORゲート253で
受け入れるものは、ANDゲート247−250および
251の出力、および、カテゴリ11−13に対するデ
コーダ210aからの出力である。ORゲート253の
出力はANDゲート254においてデコーダ210aの
出力と組み合わされて、ルール10−17に従う複合化
のためのテストをするようにされる。ANDゲート25
4の出力はORゲート252に加えられる。
【0090】ORゲート252においては、カテゴリ1
のルールに従うI1およびI2のテストの結果が収集さ
れる。ORゲート252の出力と組み合わされるものは
CBOX ロジックの出力群である。このCBOXロジ
ック群はI1がカテゴリ2−17のいずれか一つにある
場合に対する、適切なルールのカテゴリ化を適用する。
全てのカテゴリのルールについてのロジックの出力CM
P-C1〜C17は、ORゲート256、257及びO
Rゲート258において収集される。そしてその出力が
B1(259)において、I1として識別されたハーフ
・ワードに対するCビットを生成する。
【0091】打ち切り(Truncation) ここで図6A、図6B、図8Aおよび図8Bを参照しな
がら、QW7における最後の3個のハーフ・ワードに対
する複合化の打ち切りについて説明する。図6Aにおい
て、打ち切り構成部90、91および92は、CBOX
81、82および83によりレジスタS1内の最後の3
個のハーフ・ワードに対して生成されたCビットの受け
入れをする。これらの要素の各々はANDゲート回路で
あって、非反転のCビットおよび反転検知されるTRU
NCATE信号の受け入れをする。このTRUNCAT
E信号が不活性であるときには、CBOXのC出力が、
それぞれに、ANDゲート90、91および92を通さ
れる。TRUNCATE信号(図8A−8Bを参照)の
活性化が生じるのは、ビット64−127を含むQW7
の最後のダブル・ワードがS1レジスタ75内に存在す
るときである。この点において、S1レジスタ内の最後
のハーフ・ワードと、L2LOレジスタ76内の第1ま
たは第2のハーフ・ワードとの複合化を決定すること
が、CBOX83によって試行される。しかしながら、
TRUNCATE信号の活性化したものは、ANDゲー
トに対する入力において反転され、当該ゲートの出力が
不活性にされて、CBOX 83のI1入力におけるハ
ーフ・ワードに対するCビットを0に強制するようにさ
れる。WQ7の最後のもののすぐ前の(next−to
−last)ハーフ・ワードおよび最後のハーフ・ワー
ドは、それぞれに、ANDゲート91および90によっ
て、同じ態様で打ち切られる。
【0092】スカラー化可能な複合化命令セット・マシ
ン・アーキテクチュア 図10を参照すると、オブジェクト・コードによるコン
ピュータ命令の並列的な処理をするための、この発明に
おける複合化タグを用いてなるコンピュータ・システム
の構成のし方について詳細な例示がなされている。図1
0において用いられている命令複合化ユニット420
は、各命令に対して1ビットのタグを発生させるよう
な、図6において説明されたタイプのものであると仮定
される。これらのタグは、命令のいずれのペアが並列に
処理できるかを識別するために用いられる。これらの命
令およびそれらのタグは、複合命令キャッシュ412に
加えられて、蓄積される。フェッチ/発行ユニット46
0は、必要に応じて、命令およびそれらのタグをキャッ
シュ412からフェッチして、複数個の機能的な命令処
理ユニット461、462、463および464の1個
または複数個の適当なものにより、それらの処理のため
の整列をする。このフェッチ/発行ユニット460は、
フェッチされた命令のタグおよびOP コード・フィー
ルドの検査をする。2個の連続した命令が並列的に処理
可能であることがタグによって指示されたときには、フ
ェッチ/発行ユニット460は、それらの命令のOP
コードによって定まるように、それらの命令を機能的ユ
ニット461−464の適当なものに割り当てる。そし
て、それらの命令は、選択された機能的ユニットによっ
て並列的に処理される。ある特定の命令が単一で(非並
列的な態様で)処理されるべきであることがタグによっ
て指示されたときには、フェッチ/発行ユニット460
は、そのOP コードによって定まるように該当の命令
をある特定の機能的ユニットに割り当てる。そして、前
記の命令はそれ自体での処理または実行がなされる。
【0093】第1の機能的ユニット461は、ブランチ
・タイプの命令を処理するためのブランチ命令処理ユニ
ットである。第2の機能的ユニット462は、3入力の
アドレス発生用の演算論理ユニット(ALU)であっ
て、蓄積部との間でオペランドを伝送する命令のための
アドレスを計算するために用いられる。第3の機能的ユ
ニット463は、汎用の演算論理ユニット(ALU)で
あって、数学的および論理的なタイプの(演算)動作を
実行するために用いられる。この発明の例における第4
の機能的ユニット464は、先に参照されている、とも
に出願されたUS Application Seria
l No. 07/504,910 において説明された
タイプの、データ依存性崩壊用のALUである。この依
存性崩壊用のALU464は、単一のマシン・サイクル
において2個の演算/論理動作を実行することができる
3入力のALUである。
【0094】また、図10におけるコンピュータ・シス
テムの実施例には、幾つかのマシン・レベルの命令を実
行するときに用いられる汎用レジスタ465のセットも
含まれている。これらの汎用レジスタ465は、代表的
には、データ・オペランドおよびアドレス・オペランド
を一時的に蓄積するために用いられたり、または、カウ
ンタとしてもしくは他のデータ処理の目的を果たすもの
として用いられたりする。代表的なコンピュータ・シス
テムにおいては、16個のこのような汎用レジスタが設
けられている。この実施例において、汎用レジスタ46
5としては、2個またはそれよりも多くのレジスタを同
時にアクセスできるような、マルチポート・タイプのも
のが想定されている。
【0095】図10におけるコンピュータ・システムの
実施例には、更に、高レベルの蓄積ユニット(図示され
ない)から取得したデータ・オペランドを蓄積するため
の、高速のデータ・キャッシュ蓄積機構466が含まれ
ている。キャッシュ466内のデータも高レベルの蓄積
ユニットに戻るように伝送されることができる。キャッ
シュ管理ユニットは、コントロール・ユニット460か
らの命令アドレスを受け入れて、アドレスされた命令お
よびそのタグを該ユニットに移動させるか、または、ミ
スの検出をして、キャッシュ・ラインをキャッシュに移
動させることを開始する。
【0096】タグが随伴している複合化された命令をキ
ャッシュ466に蓄積するための特定のモードは、任意
になされる設計的な事項である。多くの相互に参照され
た出願においては、複合化された命令のストリーム中に
タグが挿入されていて、各々のタグ・ビットはそれが発
生されたハーフ・ワードに対して付加されている。例示
の目的のために、タグ・ビットを生成し、蓄積しておい
て、キャッシュ・ラインとともに用いるための技術が、
図11に示されている。この図11で示されているよう
に、命令は6バイト、4バイトまたは2バイトを占有す
ることができる。この発明における例のために、複合化
のルールが適用されるのは、2バイト長または4バイト
長の命令だけにされている。6バイト長の命令は複合化
されていない。しかしながら、タグは、キャッシュ・ラ
インにおけるハーフ・ワード毎に発生される。図11で
例示されているように、タグ・ビットは好適にはCベク
トルにアセンブルされるものであり、また、ここでのC
ビットは複合化されたキャッシュ・ラインから分離して
いる。この図11において、カッドワードQWIおよび
QWI+1を含むキャッシュ・ラインの一部は390で
指示されており、また、随伴のタグはCベクトルの形式
で示されている。当業者にとっては明白であるように、
図6BのCVR 64に登録されたCビットの並列的な
抽出によって前記のCベクトルを形成することができ
る。図11で例示されているようにベクトル化された複
合化ビットについては、それらをキャッシュに蓄積させ
るための多くのやり方がある。図12Aおよび図12B
には、2個のこのようなやり方が例示されている。図1
2Aおよび図12Bの双方においては、図6Aのバス6
0に適合したカッドワード幅のバスに対して、命令複合
化ユニットとタグに対する複合命令キャッシュとの間に
特別のラインが付加されたものとされている。更に、先
に説明された例との関係を保持しながら、キャッシュ・
ラインは8カッドワード長のものであって、命令複合化
ユニットはキャッシュ・ラインにおける2バイトのテキ
スト毎に1個の複合化ビットを発生するものとされてい
る。かくして、複合キャッシュ・ライン毎に64個の複
合化ビットが発生される。これらのビットはキャッシュ
・アーキテクチュア内で適合されて、該複合化ビットが
それらのそれぞれのハーフ・ワードと関連するようにさ
れねばならない。
【0097】図12Aにおいて例示されているように、
関連したキャッシュ・ラインについてのキャッシュ複合
化ビットに対する最も簡単な実施によって認められるこ
とは、キャッシュと命令フェッチ/発行ユニットとの間
のプロセッサの内部的なワード・サイズ増大するという
ことである。これに包含されることは、複合化ビットが
カッドワードに付加されるか、または、ハーフ・ワード
毎に命令ストリームに対して挿入されるということであ
る。図12Aにおいて例示されているものは、8個の蓄
積位置に組成されたキャッシュ・ラインである。複合化
することなしで、それぞれの位置は8バイト幅である。
8個の位置について、16ビットのキャッシュ・ライン
が蓄積されている。ハーフ・ワード毎に1個の複合化タ
グおよびツー・ウエイの複合化について、命令テキスト
のハーフ・ワード毎に最小でも特別な1ビットの蓄積が
必要とされる。このために、16バイト毎に8個の複合
化ビット位置が必要とされる。これに包含されること
は、キャッシュ・ワードのサイズが128ビットから1
36ビットに伸長されねばならないということである。
図12Aに例示されているものは、ツー・ウエイの複合
化およびカッドワード幅のキャッシュ・バスのためのキ
ャッシュ構成である。キャッシュ・バスおよび内部的な
ワード・サイズは136ビットに伸長される。このスキ
ームの欠点は、例えば、より大きいワードに対するエラ
ー訂正のような、新規なメモりの設計が必要とされるこ
とである。
【0098】図12Bに例示されている第2のアプロー
チで用いられているタグ・キャッシュは、命令キャッシ
ュからは分離されているけれども、これと並列に動作す
るようにされている。この構成に含まれたタグは、命令
テキストからは切り離されている。しかしながら、図1
2Aについてのように、タグをそれぞれの命令に随伴さ
せるという要求ののために、キャッシュと命令フェッチ
/発行ユニットとの間のバスを伸長させることが必要に
なる。この場合においては、内部的なキャッシュ・ワー
ドのサイズは変更されないけれども、キャッシュと命令
フェッチ/発行ユニットとの間のバスのサイズについて
は、タグ・キャッシュの並列的な動作に適合するように
増大させねばならない。図12Bの設計はハードウエア
化させることができる。代替的に、分離したタグ・キャ
ッシュ管理ユニットを設けることができる。
【0099】SCISM動作の例 図13には、図10におけるコンピュータ・システムに
よる処理が可能な複合化された命令シーケンス500が
例示されている。この図13における例は、次のような
シーケンスによる次のような命令からなるものである。
即ち、ロード(Load)、加算(Add)、比較(C
ompare)、条件付きブランチ(Branch o
n Condition)、および、蓄積(Stor
e)なる命令からなるものである。これらは、それぞれ
に、命令I1−I5として識別される。これらの命令に
対するタグは、それぞれに、0,1,0,1および0で
ある。これらのタグは、命令500に随伴するCベクト
ル502内で配列されている。図10において示されて
いるマシンの構成のために、ロード命令はそれ自体によ
る単独の態様をもって処理される。加算命令および比較
命令は複合化命令として扱われるものであって、互いに
並列に処理される。ブランチ命令および蓄積命令も複合
化命令として扱われるものであって、これらも互いに並
列に処理される。これらの命令が命令フェッチ/発行ユ
ニットに与えられたときには、Cベクトル502がそれ
らに随伴する。
【0100】図14のテーブルには、図13における命
令の各々に対する情報が要約されている。図14のR/
Mコラムには、各命令における第1フィールドの内容が
示されている。上述されたように、このフィールドは、
代表的には、第1オペランドを含む汎用レジスタのある
特定の一つを識別するために用いられる。例外的な場合
は、条件付きブランチ命令の場合であって、ここでのR
/Mフィールドには条件コード・マスクが含まれてい
る。図14のR/Xコラムは、第2オペランド・レジス
タを識別する2バイト命令におけるフィールドの内容を
指示するものであり、また、4バイトの命令においては
アドレス・インデックス値を含んでいるレジスタを識別
するものである。図14のBコラムは、ベース・レジス
タを識別する4バイトの命令におけるレジスタ・フィー
ルドの内容を指示するものである。システム/370の
命令については通常であるように、Bコラムにおける0
によって指示されることは、Bフィールドが存在しない
こと、または、Bフィールドにおける対応のアドレス成
分が存在しないことである。図14のDフィールドは、
アドレス発生の目的で用いられるときに、アドレス変移
(displacement)値を含むような各命令に
おける更に別のフィールドの内容を指示するものであ
る。このDコラムにおける0が指示できるものも、考え
られている特定の命令における対応のフィールドが存在
しないこと、または、代替的に、0なるアドレス変移値
である。
【0101】ここで、図13におけるロード命令の処理
について考えると、このロード命令に対するタグからフ
ェッチ/発行コントロール・ユニット460で決定され
ることは、該ロード命令がそれ自体によって単独な態様
で処理されるべきであるということである。このロード
命令によって処理されるべき動作(action)は、
蓄積部(この場合には、データ・キャッシュ466)か
らオペランドをフェッチして、このようなオペランドを
R2汎用レジスタに配置することである。このオペラン
ドがフェッチされるべき蓄積アドレスは、レジスタX内
のインデックス値、レジスタB内のベース値、および、
変移値を一緒に加算することによって決定される。この
アドレス発生操作は、フェッチ/発行コントロール・ユ
ニット460によって、アドレス発生用ALU462に
割り当てられる。この場合にALU462において一緒
に加算されるものは、レジスタX内のアドレス・インデ
ックス値(この例においては0なる値)、汎用レジスタ
R7内に含まれているベース・アドレス値、および、命
令自体に含まれている変移アドレス値(この例において
は0なる値)である。ALU462の出力に現れる計算
された結果としての蓄積アドレスは、所望のオペランド
をアクセスするために、データ・キャッシュ466のア
ドレス入力に加えられる。このアクセスされたオペラン
ドが、レジスタ・セット465におけるR2汎用レジス
タにロードされる。
【0102】ここで加算命令および比較命令について考
えると、これらの命令およびそれらのタグは、フェッチ
/発行コントロール・ユニット460によってフェッチ
される。これら2個の命令に対するタグが、コントロー
ル・ユニット460により検査されて、それらが並列に
実行できるかどうかの注意がなされる。図14から認め
られるように、R3の比較ができるのに先だって加算が
完了していなければならないことから、比較命令が加算
命令に対してデータの依存性があることは明白である。
しかしながら、この依存性はデータ依存性崩壊用ALU
464によって扱うことができる。その結果として、こ
れら2個の命令は、図11の構成において並列に処理す
ることができる。特に、コントロール・ユニット460
によって、加算命令の処理はALU 463に割り当て
られ、また、比較命令の処理は依存性崩壊用ALU 4
64に割り当てられる。
【0103】ALU 463においては、R2汎用レジ
スタの内容とR3汎用レジスタの内容とが加算されて、
この加算の結果がR3汎用レジスタに戻るように配置さ
れる。これと同時に、依存性崩壊用ALU 464によ
って次のような数学的操作がなされる。 R3 + R2 − R4
【0104】この操作の結果に対する条件コードは、ブ
ランチ・ユニット461に配置された条件コード・レジ
スタに伝送される。実際には、ALU 464におい
て、R3 + R2なる和の計算を行い、これに次いでこ
の和をR4と比較してその条件コードを決定することか
ら、データの依存性が崩壊する。この態様においては、
ALU 464は、加算命令を実行するALU 463か
らの結果を待つ必要はない。この特別な場合において、
ALU 464によって計算されて、ALU 464の出
力に現れる数字的な結果は、汎用レジスタ465には供
給されない。この場合においては、ALU 464には
条件コードがセットされるだけである。
【0105】ここで、図13に示されているブランチ命
令および蓄積命令の処理操作について考えると、これら
の命令およびそれらのタグが、フェッチ/発行コントロ
ール・ユニット460によって複合命令キャッシュ41
2からフェッチされる。コントロール・ユニット460
により、これらの命令に対するタグから、これらの命令
が互いに並列に処理できることが決定される。このコン
トロール・ユニット460により、更に、2個の命令の
OP コードから、ブランチ命令がブランチ・ユニット
461によって処理されるべきであること、および、蓄
積命令がアドレス発生ALU 462によって処理され
るべきであることが決定される。この決定に従って、ブ
ランチ命令のマスク・フィールドMおよび変移フィール
ドDがブランチ・ユニット461に対して加えられる。
これと同様にして、このブランチ命令に対するレジスタ
X内のアドレス・インデックス値、および、レジスタB
内のアドレス・ベース値が汎用レジスタ465から取得
されて、ブランチ・ユニット641に加えられる。この
例において、X値は0であり、また、ベース値はR7汎
用レジスタから得られる。変移値Dは16進の20であ
り、これに対して、マスク・フィールドMの有するマス
ク位置の値は8である。
【0106】ブランチ・ユニット641は潜在的なブラ
ンチ・アドレス(0 + R7 +20)の計算を開始
し、これと同時に、先行の比較命令から得られた条件コ
ードと条件コード・マスクMとの比較をする。条件コー
ド値がマスク・コード値に等しいときには、必要なブラ
ンチ条件が合致し、その結果として、ブランチ・ユニッ
ト641で計算されたブランチ・アドレスがコントロー
ル・ユニット460内の命令カウンタにロードされる。
この命令カウンタは、複合命令キャッシュ412からの
命令のフェッチ操作をコントロールするものである。こ
れに対して、条件が合致しないときには(即ち、先行の
命令によってセットされた条件コードの値が8ではない
ときには)、ブランチが生じることはなく、ブランチ・
アドレスがコントロール・ユニット460内の命令カウ
ンタに加えられることはない。
【0107】ブランチ・ユニット641がブランチ命令
に対するその処理を実行するのにビジーであるのと同時
に、アドレス発生ALU 462は蓄積命令に対するア
ドレス計算(0 + R7 + 0)をするためにビジーで
ある。ALU 462によって計算されたアドレスはデ
ータ・キャッシュ466に加えられる。ブランチ・ユニ
ット641によるブランチが生じないときには、蓄積命
令が操作されて、R3汎用レジスタ内のオペランドを、
ALU 462によって計算されたアドレスでデータ・
キャッシュ466に蓄積するようにされる。これに対し
て、ブランチ条件が合致してブランチが生じたときに
は、R3汎用レジスタの内容がデータ・キャッシュ46
6に蓄積されることはない。
【0108】図13について前述された命令シーケンス
は単なる例として意図されたものである。図12A、図
12Bにおけるコンピュータ・システムの実施例は、等
しく、種々の他の命令シーケンスを処理することができ
る。しかしながら、図13の例で明示されていること
は、命令のいずれのペアが互いに並列に処理可能である
かを決定する際に複合命令の情報を用いることである。
【0109】産業的な適用についての考察 上述された検討においては、並列的な実行のための複合
化命令に対するハードウエアによる実施がもたらされ
る。ここで明言されることは、この解決策はそれが具体
化されるマシンのサイクル・タイムと妥協するものでは
ないということである。図12A−14の例で示されて
いるように、多くの機能的ユニットのコントロールをむ
しろ簡単に支持することができる。図6A−11に示さ
れているように、命令複合化ユニット、キャッシュ構
成、および、結果としての命令処理アーキテクチュア
は、いずれも容易に実施することができる。
【0110】この複合命令キャッシュ・アーキテクチュ
アにより、この発明の産業的な適用において多くの個別
の利点がもたらされる。第1に、ソフトウエアによる複
合化の機能に対する必要性が除去されて、現存の命令の
オブジェクト・コードの形式を修正することなく、この
発明を現存の命令に適用することが許容され、また、将
来のコードに適合できるようにされており、これによっ
てコンパイラまたはアセンブラに対する修正が回避され
る。次に、複合化命令の蓄積のために必要とされるオー
バヘッドが、複合命令キャッシュに限定される。メモり
の階層構造においてキャッシュの上位にあるどのような
蓄積手段にもオーバヘッドが押し付けられることはな
い。半導体メモり(メイン・メモり)、ダイレクト・ア
クセス・デバイス式の蓄積部、または、他の部位につい
ても同様である。更に、逐次的ではない操作に対する実
行能力に不利益が生じる唯一の時点は、該操作のために
必要とされる目標の命令がキャッシュ内に存在しないと
きだけである。ブランチの場合においては、このような
ことが生じる可能性は、キャッシュのミス比率に直接関
連している。十分なサイズの複合命令キャッシュにとっ
て完全に可能性のあることは、複合命令についての完全
なプログラム・ループを包含して、ブランチの不利益を
無視できるようにすることである。このアーキテクチュ
アの別の利点は、複合命令ストリームに対する書き込み
のトラップ操作を行い、書き込みがなされるキャッシュ
・ラインを無効にし、メモりの階層構造における上位レ
ベルからの更新されたラインを要求し、そして、該ライ
ンの再複合化をすることにより、簡単に取り扱われるべ
き自己修正コードについての可能性である。最後に、提
案されたアーキテクチュアによっては、ある特定のレベ
ルの複合化(および、そのための並列化)を達成するた
めに実行されねばならない解析の量および時間に変化が
なかったとしても、その解析が実行されるのはキャッシ
ュ・ミスが生じた時だけであって、規定としてなされる
ことは余りない。どのような設計者であっても、ミス比
率の高い命令キャッシュを高い実行能力のコンピュータ
に意図的に組み込むことはないだろう。この複合化の解
析により、実行される解析の程度にだいたい比例して、
キャッシュ・ミスのサービス・タイムが増大することに
なろう。
【0111】この発明について産業的な適用を展開する
ときの第1の設計上の考慮は、図6Aを参照することに
よって評価することができる。ステージ・ユニット61
によって、ある1個の完全なカッドワードの有効な複合
化が許容されるが、このカッドワードは、メイン・メモ
りと複合命令キャッシュとの間の正確な伝送単位(un
it of transfer)である。キャッシュに対
するこの伝送単位のサイズをマッチングさせるために、
複合化の処理の過程において、命令がキャッシュ内での
蓄積のために提示されたときに、利用可能な全ての命令
のペアに対する考慮を払うことができる。これによっ
て、ツー・ウエイの複合化に対する時間的な不利益が削
減される。一般的な場合において、ステージ・ユニット
のサイズは、単一の複合命令を構成する命令の個数、お
よび、複合化のための解析の範囲の関数である。ある場
合においては、ある所定の値を越えてステージ・ユニッ
トのサイズを増大させることが、その利点を減少させる
結果をもたらすことがある。
【0112】命令複合化ユニットの複雑性により、達成
が意図される複合化の目標点が変動することがある。こ
のことに関連して、図6A、図6Bの命令複合化ユニッ
トによれば、最大で2個だけの命令を複合化するスキー
ムにおいて、17カテゴリの命令に対する複合化のルー
ルが用いられる。例えば、3個またはそれよりも多くの
命令に対するより複雑な複合化は、図9で例示されたC
BOXの基本的な設計に外挿される複合化区分を備えて
いる複合化ユニットによって達成することができる。こ
のような設計の結果としてタグが更に複雑になり、コン
トロール情報、複合化情報、スティアリング・ビット
(steering bit)、および、代表的には水
平マイクロコードと関連しているタイプの他の情報を含
むようにされる。複合化情報の生成およびタグに入れら
れる意味事項は、設計上のサイズの制限、および、キャ
ッシュ・ミスのサービス操作に起因する時間的な不利益
だけで制限されるものである。これに関連して、タグ
は、時間およびスペースで許容される程度に最小限また
は最大限にすることができる。例えば、条件付き命令
(Branch on Condition)(BC)が
追従するマスク下テスト(Test Under Mas
k)(TM)のような、極めて頻度の高いシステム/3
70の命令ペアについて考えてみる。高い頻度の命令ペ
アが与えられると、並列的な実行のためにそれだけを複
合化させることで、プロセッサの実行能力を改善するこ
とができる。設計者が複合化のためにこのペアだけを選
択したとすると、複合化ユニットに対する基本的なルー
ルは1個だけになり、CBOXおよび複合化ユニットは
殆ど不要になる(become trivial)。そ
れ以外の極端な点においては、基本的なルールに含まれ
るものとして、サブセットに対するものではあるが、完
全な命令セットのアーキテクチュアの重要な部分に対す
るものがある。機能的ユニットの物理的な特性に属する
更に別の情報を含ませることも可能であり、コントロー
ル情報をタグ内に入れ込むことが容易にされる。基本的
なルールはハード・ワイアード式のランダム・ロジック
において実施できるものではあるが、ある種の形式の高
速アクセス式のプログラマブル蓄積部で実施することが
可能であり、これによって、機能的ユニットの付加また
は除去、所望される複合化の多少のいかん、または、演
算の環境の変化があるかどうかについてさえも、その柔
軟性が許容される。これに関連して、ある所定の複合化
は、科学技術的な環境よりも商業的な環境において更に
有益なものである。また、これの逆の場合もある。これ
い含まれる基本的なルールはプログラマブルなものであ
って、そのルールの決定はマシン構成タイムにおいてな
される。従って、発明者の考慮によれば、ハード・ワイ
アード式になされるのに代えて、命令複合化ユニットに
おけるCBOXの機能を、マシンが製造される時点にお
いて所望のルールのセットをもってプログラマブルであ
るような、高速アクセスのマルチポート式メモりで実施
することができる。
【0113】キャッシュ・ミスを待つことなくキャッシ
ュ・ラインをプリフェッチすることにより、キャッシュ
・ミスを減少させるための提案がなされている。キャッ
シュ管理ユニットが、命令の次に続く逐次的なラインを
プリフェッチするように設計されたものであれば、複合
化のために命令複合化ユニットによって必要とされる多
くの時間をしまい込む(hide)ことができる。しま
い込まれている全てのライン複合化の断片(fract
ion)は、この場合には、複合命令キャッシュに対す
る組成とともに、プログラムによる命令フェッチ操作の
態様(behavior)によって決定される。
【0114】例を示す目的のために、ある特定の設計に
対する決定が、上述された決定の中に組み込まれてい
る。このために、この発明においては、各ハーフ・ワー
ドの境界において、Cビットを命令ストリームに対して
直接的に組み込むことによる実施が可能である。更に、
複合命令については、バッファまたはスタックを備えた
命令フェッチ/発行コントロール・ユニットを用いるよ
りも、キャッシュから簡単にかつ直接的に発行すること
ができる。また、キャッシュ・ミスおよび後続のライン
のフェッチが生じたときには、その実行能力の観点から
利益があることは、複合化のためにラインが解析されて
いるときに機能的ユニットを停止(stall)させて
おくよりも、実行のためにアドレスされた命令をスカラ
ー・レートでの実行のために機能的ユニットに対して直
接的に移行させることである。
【0115】
【発明の効果】この発明によって、従来からの問題点す
なわち、命令実行の時点において、いずれの命令を並列
に実行できるかを決定する際に、相当な時間を必要とし
て、それを他の通常のマシン操作でオーバラップするこ
とでは容易にマスクすることができなかった点が、解決
された。また、この発明によれば、命令のセットの複雑
性が増大するという従来の不利益点も解消された。
【EN90049M】
【図面の簡単な説明】
【図1】スカラー命令のストリームにおけるこの発明の
位置を例示するものである。
【図2A】例示的な命令のセットにおける命令のカテゴ
リ化を例示するものである。
【図2B】例示的な命令のセットにおける命令のカテゴ
リ化を図2Aと共に例示するものである。
【図3】いずれのカテゴリのいずれの命令が他のカテゴ
リの命令とともに並列に実行できるかを設定するルール
のセットに従って、命令のストリームが解析されるやり
方を例示するものである。
【図4】この発明の動作的な環境および実施例における
この発明の位置を例示するものである。
【図5】この発明による並列的な実行のために解析され
る命令のフォーマットを例示するものである。
【図6A】ルールのセットに従って並列的な実行のため
の命令の解析をして、その解析の結果を指示する情報を
発生するような、この発明による複合化ユニットを例示
するブロック図である。
【図6B】この発明による複合化ユニットを図6Aと共
に例示するブロック図である。
【図7】図6における命令複合化ユニットによる2個の
命令の解析のやり方を例示する部分的なブロック図であ
る。
【図8A】種々の条件に従うこの発明の動作を例示する
タイミング図である。
【図8B】この発明の動作を図8Aと共に例示するタイ
ミング図である。
【図8C】この発明の動作を図8A、図8Bと共に例示
するタイミング図である。
【図9A】図6A、図6Bにおける命令複合化ユニット
のルールに基づく解析の構成要素をより詳細に例示する
ロジック図である。
【図9B】ルールに基づく解析の構成要素を図9Aと共
に、より詳細に例示するロジック図である。
【図10】この発明の産業上の適用を示すブロック図で
ある。
【図11】解析の結果を指示する情報ベクトルととも
に、図6A、図6Bにおける命令複合化ユニットによっ
て解析される命令のブロックを表す図である。
【図12A】命令ブロックおよび随伴の複合化情報のキ
ャッシュへの蓄積を例示する概略図である。
【図12B】命令ブロックおよび随伴の複合化情報のキ
ャッシュへの蓄積を図12Aと共に例示する概略図であ
る。
【図13】解析の結果を含む随伴の情報ベクトルととも
に、この発明によって解析される命令ストリームの断片
を例示するものである。
【図14】図13における命令が随伴の解析情報に応答
して実行されるやり方を例示するチャートである。
【符号の説明】
36 高レベル蓄積部 37 命令複合化ユニット 38 複合命令キャッシュ 39 機能的ユニット 40 機能的ユニット 41 機能的ユニット 42 命令フェッチ/発行ユニット 44 キャッシュ管理ユニット 45 メモリ管理ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スタマチス・バシリアディス アメリカ合衆国、ニューヨーク州・ベスタ ル・ベスタル・ロード717番地 (72)発明者 ジェームズ・エドワード・フィリップ アメリカ合衆国ニューヨーク州ビンガト ン・クラリー・アベニュー138番地 (56)参考文献 特開 昭63−12029(JP,A) 特開 昭61−245239(JP,A)

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】2個またはそれよりも多くの命令を並列に
    処理することができるデジタル・コンピュータ・システ
    ムにおいて、 処理されるべき前記命令を蓄積するための大容量、低速
    の蓄積機構と、 前記命令を関連のタグ情報とともに蓄積するための小容
    量、高速の蓄積機構および前記低速の蓄積機構からの命
    令を受け入れるために、これらの命令を解析して、いず
    れの命令が互いに並列に処理できるかを指示するタグ情
    報を生成し、これらの命令および関連のタグ情報をその
    中で蓄積するように前記高速の蓄積機構に供給するため
    に、前記低速の蓄積機構と前記高速の蓄積機構との間に
    結合されている命令複合化機構、 とを含んでなるデジタル・コンピュータ・システム。
  2. 【請求項2】前記高速の蓄積機構はキャッシュ蓄積機構
    である、請求項1に記載のデジタル・コンピュータ・シ
    ステム。
  3. 【請求項3】前記タグ情報は複数のタグからなり、その
    異なるものは前記命令複合化機構によって解析される前
    記各命令に関連している、請求項1に記載のデジタル・
    コンピュータ・システム。
  4. 【請求項4】コンピュータ・システムに含まれている複
    数の機能的命令処理ユニットが互いに並列に動作し、前
    記高速の蓄積機構から機能的ユニットの異なるものに対
    して2個またはそれよりも多くの命令を発行するために
    タグ情報が用いられる、請求項1に記載のデジタル・コ
    ンピュータ・システム。
  5. 【請求項5】前記命令複合化機構には、 前記低速の蓄積機構から複数の連続的な命令を受け入れ
    るための、複数命令の命令レジスタ、 その各々が前記命令レジスタ内で並んでいる命令の異な
    るペアを解析して、そのペア内の2個の命令が並列に処
    理できるか否かを指示する複合化可能信号を生成する、
    複数のルールに基づく命令解析機構および前記複合化可
    能信号に応答して、前記命令レジスタ内の異なる命令に
    対する個別のタグを発生するためのタグ発生機構、 が含まれている、請求項3に記載のデジタル・コンピュ
    ータ・システム。
  6. 【請求項6】コンピュータ・システムはある特定の命令
    処理構成を備えており、また前記各命令解析機構に含ま
    れているルールを実施するためのロジック回路が、コン
    ピュータ・システムに対して用いられる前記特定の命令
    処理構成における並列的な実行のためにいずれのタイプ
    の命令が適合するかを規定するものであって、このよう
    なロジック回路は該当の前記命令解析機構に対する前記
    複合化可能信号を生成するものである、 請求項5に記載のデジタル・コンピュータ・システム。
  7. 【請求項7】2個またはそれよりも多くの命令を並列に
    処理することができるデジタル・コンピュータ・システ
    ムにおいて、 処理されるべき命令を蓄積するための第1の蓄積機構、 前記第1の蓄積機構からの前記命令を受け入れて、これ
    らの命令のいずれが互いに並列に処理できるかを指示す
    るこれらの命令複合化情報と関連させるための命令複合
    化機構、 前記命令とそれに関連する前記複合化情報とを受け入れ
    て蓄積するための、前記命令複合化機構に結合されてい
    る更に別の蓄積機構、 互いに並列に動作する複数の機能的命令処理ユニットお
    よび対応の前記複合化情報により並列処理できることが
    指示されているときに、その中に蓄積されている隣接の
    命令を前記機能的命令処理ユニットの異なるものに対し
    て供給するために、更に別の蓄積機構に結合されている
    命令発行機構、 を含んでなるデジタル・コンピュータ・システム。
  8. 【請求項8】前記更に別の蓄積機構は小容量、高速のキ
    ャッシュ蓄積機構である、請求項7に記載のデジタル・
    コンピュータ・システム。
  9. 【請求項9】2個またはそれよりも多くの命令を実行す
    るための手段、および、該命令を蓄積するためのメイン
    ・メモリおよびキャッシュが含まれているデジタル・コ
    ンピュータ・システムにおける並列的な実行のための命
    令を処理する方法であって、 複数の前記命令をメイン・メモリに蓄積するステップ、 実行のために前記メイン・メモリから一連の命令を取得
    するステップ、 前記一連の命令に応答して、該一連の命令における少な
    くとも2個の命令の並列処理を意味する複合化情報を発
    生するステップおよび前記一連の命令および前記複合化
    情報を前記キャッシュに蓄積するステップ、 を含んでなるデジタル・コンピュータ・システムにおけ
    る並列的な実行のための命令を処理する方法。
  10. 【請求項10】前記複数の命令はオブジェクト・コード
    ・フォーマットにされており、前記発生のステップに
    は、前記一連の命令のオブジェクト・コード・フォーマ
    ットを変更することなく前記複合化情報を発生するステ
    ップが含まれている、請求項9に記載のデジタル・コン
    ピュータ・システムにおける並列的な実行のための命令
    を処理する方法。
  11. 【請求項11】前記キャッシュへの蓄積のステップに
    は、前記複合化情報を前記キャッシュだけに蓄積するス
    テップが含まれている、請求項9に記載のデジタル・コ
    ンピュータ・システムにおける並列的な実行のための命
    令を処理する方法。
  12. 【請求項12】前記デジタル・コンピュータ・システム
    には、処理されるべき命令が前記キャッシュ内に存在し
    ないときに該キャッシュ・ミス信号を生成するための手
    段が含まれており、該キャッシュ・ミスが生じるまで、
    (1)前記一連の命令における少なくとも2個の命令を
    該2個の命令に対する前記複合化情報とともに前記キャ
    ッシュから取得すること、および、(2)該複合化情報
    に応答して少なくとも2個の命令を並列に処理するこ
    と、を反復するステップが更に含まれている、請求項9
    に記載のデジタル・コンピュータ・システムにおける並
    列的な実行のための命令を処理する方法。
  13. 【請求項13】前記キャッシュ・ミスが生じたときに、
    前記一連の命令を取得するステップを実行し、前記複合
    化情報を発生し、そして、前記一連の命令および前記複
    合化情報を前記キャッシュに蓄積するステップが更に含
    まれている、請求項12に記載のデジタル・コンピュー
    タ・システムにおける並列的な実行のための命令を処理
    する方法。
  14. 【請求項14】前記デジタル・コンピュータ・システム
    には、処理されるべき前記命令がキャッシュ内に存在し
    ないときにキャッシュ・ミス信号を生成するための手段
    が含まれており、取得のステップには、前記キャッシュ
    ・ミス信号に応答して命令シーケンスのフェッチをする
    ステップが含まれている、請求項9に記載のデジタル・
    コンピュータ・システムにおける並列的な実行のための
    命令を処理する方法。
  15. 【請求項15】前記一連の命令を前記メイン・メモリか
    らプリフェッチするステップ、 前記プリフェッチされた一連の命令に応答して、該プリ
    フェッチされた一連の命令における少なくとも2個の隣
    接する命令の並列的な実行を意味する前記複合化情報を
    発生するステップおよび第2の前記一連の命令と前記複
    合化情報とを前記キャッシュに蓄積するステップ、 が更に含まれている、請求項14に記載のデジタル・コ
    ンピュータ・システムにおける並列的な実行のための命
    令を処理する方法。
  16. 【請求項16】前記発生のステップと同時に前記一連の
    命令の中の1個の命令を実行するステップ;が更に含ま
    れている、請求項9に記載のデジタル・コンピュータ・
    システムにおける並列的な実行のための命令を処理する
    方法。
  17. 【請求項17】前記一連の命令の中の1個の命令を実行
    するステップ;前記命令の実行の結果として前記一連の
    命令を変更するステップ;前記変更された一連の命令を
    取得するステップ;および前記発生のステップおよび前
    記蓄積のステップを反復するステップ;が更に含まれて
    いる、請求項9に記載のデジタル・コンピュータ・シス
    テムにおける並列的な実行のための命令を処理する方
    法。
  18. 【請求項18】並列的な実行のための一連のコンパイル
    された命令の処理装置であって、 前記一連のコンパイルされた命令を受け入れるためのバ
    ッファ手段、 前記一連のコンパイルされた命令に応答して、2個また
    はそれよりも多くの命令が所定のカテゴリの命令に属し
    ているかどうかを決定し、該2個またはそれよりも多く
    の命令が属する所定のカテゴリを指示するように条件付
    けられた第1の信号を生成するためのカテゴリ化手段、 前記一連のコンパイルされた命令に応答して、前記2個
    またはそれよりも多くの命令の間にインタロックがある
    かどうかを指示するように条件付けられた第2の信号を
    生成するためのインタロック手段、 前記カテゴリ化手段および前記インタロック手段に接続
    されており、前記第1の信号および前記第2の信号に応
    答して、少なくとも2個の命令が、並列的な実行のため
    に適合された命令カテゴリに属しているかどうか、それ
    らがインタロック・フリーであるかどうかを指示するよ
    うに条件付けられた複合化信号を生成するための複合化
    信号手段および、 前記複合化信号手段が動作している間に、一連の前記命
    令に対する複数の前記複合化信号を受け入れるための、
    複合化信号手段に接続されている蓄積手段、 とを含んでなる、並列的な実行のための一連のコンパイ
    ルされた命令の処理装置。
  19. 【請求項19】前記複合化信号手段に含まれているルー
    ル手段は、第1および第2の命令に応答して、 ルールのセットに従って前記第1および第2の命令の条
    件をテストするものであって、該ルールのセットは、い
    ずれのカテゴリの命令が並列的に実行可能であるかを設
    定し、前記インタロックからもたらされるそれらのルー
    ルに対する例外を設定するものである、 請求項18に記載の並列的な実行のための一連のコンパ
    イルされた命令の処理装置。
  20. 【請求項20】前記一連の命令にはキャッシュ・ライン
    の一部が含まれている、請求項18に記載の並列的な実
    行のための一連のコンパイルされた命令の処理装置。
  21. 【請求項21】前記カテゴリ化手段には前記命令をデコ
    ードするための手段が含まれている、請求項18に記載
    の並列的な実行のための一連のコンパイルされた命令の
    処理装置。
  22. 【請求項22】前記複合化信号手段には、前記ルールの
    セットに従って前記第1および第2の信号をテストする
    ために選択的にプログラムされるプログラマブル・デバ
    イスが含まれている、請求項19に記載の並列的な実行
    のための一連のコンパイルされた命令の処理装置。
  23. 【請求項23】実行のための前記一連のコンパイルされ
    た命令および前記複合化信号を蓄積する高速の命令メモ
    リ手段が更に含まれている、請求項19に記載の並列的
    な実行のための一連のコンパイルされた命令の処理装
    置。
  24. 【請求項24】単独におよび並列的に命令を実行する複
    数の実行ユニットを含んでなるコンピュータ・システム
    における、並列的な実行のために命令を処理する方法で
    あって、 実行のための一連の命令を発生するステップ、 前記一連の命令の実行に先だって、該一連の命令の中の
    少なくとも2個の命令が並列的に実行可能であることを
    指示する情報信号を発生するステップ、 前記一連の命令および情報信号を、実行のための迅速な
    アクセスをするための蓄積デバイスに蓄積するステップ
    および前記一連の命令を実行するステップ、 を含んでなる並列的な実行のために命令を処理する方
    法。
  25. 【請求項25】前記実行のステップの間およびその後
    で、前記一連の命令および情報信号を前記蓄積デバイス
    に残留させるステップ;が更に含まれている、請求項2
    4に記載の並列的な実行のために命令を処理する方法。
  26. 【請求項26】単独におよび並列的に命令を実行するた
    めの手段、および、緊急的な実行のための一連の命令を
    受け入れるためのメモリ手段を備えたコンピュータ・シ
    ステムにおける、命令の並列的な実行に対する命令の条
    件を設定するルールのセットに従って、並列的な実行の
    ための一連の命令を処理するための組み合わせであっ
    て、 コンピュータ・プログラムの一部を形成する前記一連の
    命令を受け入れるための受け入れ手段、 前記受け入れ手段に接続されたルール・ベース手段であ
    って、 前記一連の命令内の命令のグループを比較して、該命令
    のグループにおける命令が前記ルールのセットにおける
    ルールを満足するものであるかどうかを決定し、並列的
    に実行できる命令のグループにおける命令であることを
    指示する複合化信号を発生するための前記ルール・ベー
    ス手段および前記メモリ手段への蓄積のための複数の前
    記複合化信号を一連の命令とともに累積するために、前
    記ルール・ベース手段および前記メモリ手段に接続され
    ている蓄積手段、 を含んでなるコンピュータ・システムにおける並列的な
    実行のための一連の命令を処理する装置。
JP3096097A 1990-05-10 1991-04-03 キャッシュに対する複合化プリプロセッサ方式 Expired - Fee Related JPH0778737B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US07/522,291 US5214763A (en) 1990-05-10 1990-05-10 Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US07/642,011 US5295249A (en) 1990-05-04 1991-01-15 Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
US522291 1991-01-16
US642011 1991-01-16

Publications (2)

Publication Number Publication Date
JPH0683623A JPH0683623A (ja) 1994-03-25
JPH0778737B2 true JPH0778737B2 (ja) 1995-08-23

Family

ID=27060767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3096097A Expired - Fee Related JPH0778737B2 (ja) 1990-05-10 1991-04-03 キャッシュに対する複合化プリプロセッサ方式

Country Status (1)

Country Link
JP (1) JPH0778737B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61245239A (ja) * 1985-04-23 1986-10-31 Toshiba Corp 論理回路方式
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.

Also Published As

Publication number Publication date
JPH0683623A (ja) 1994-03-25

Similar Documents

Publication Publication Date Title
US6029240A (en) Method for processing instructions for parallel execution including storing instruction sequences along with compounding information in cache
KR0185988B1 (ko) 멀티프로세서 또는 파이프 라인식 프로세서 시스템에서 데이타의 보존을 확실히 하는 방법
US5067069A (en) Control of multiple functional units with parallel operation in a microcoded execution unit
KR100230105B1 (ko) 간략화된 명령 세트 프로세서의 성능 개선 방법 및 그 프로세서 시스템
JP3969895B2 (ja) データ型によるコプロセッサの操作コードの分割
KR100190252B1 (ko) 고속 프로세서에서의 브랜치 처리 방법 및 장치
US5355460A (en) In-memory preprocessor for compounding a sequence of instructions for parallel computer system execution
KR100218572B1 (ko) 고성능 프로세서의 번역버퍼에 대해 세분성 힌트를 이용하는 프로세서 동작 방법 및 장치
US5233694A (en) Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously
US8255665B2 (en) SIMD processor with register addressing, buffer stall and methods
US5337415A (en) Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
KR100563220B1 (ko) 재순환 레지스터 파일
US5504932A (en) System for executing scalar instructions in parallel based on control bits appended by compounding decoder
CA1324671C (en) Decoding multiple specifiers in a variable length instruction architecture
EP0473420A2 (en) Virtual long instruction word memory architecture for digital signal processor
JP3828677B2 (ja) レジスタとメモリとの間のデータ転送
EP0381469A2 (en) Method and data processing unit for pipeline processing of register and register modifying specifiers within the same instruction
JPH04230528A (ja) ディジタルコンピュータシステム
JP2834292B2 (ja) データ・プロセッサ
EP1570373A1 (en) Cellular engine for a data processing system
JP2000029866A (ja) ベクトル命令の処理の間に生じる例外の処理
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
JPH0778737B2 (ja) キャッシュに対する複合化プリプロセッサ方式
CA2040637C (en) Compounding preprocessor for cache

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080616

Year of fee payment: 8

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 9

Free format text: PAYMENT UNTIL: 20090616

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 10

Free format text: PAYMENT UNTIL: 20100616

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110616

Year of fee payment: 11

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110616

Year of fee payment: 11

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120616

Year of fee payment: 12

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120616

Year of fee payment: 12

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130616

Year of fee payment: 13

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250