JPH05303492A - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JPH05303492A JPH05303492A JP3318815A JP31881591A JPH05303492A JP H05303492 A JPH05303492 A JP H05303492A JP 3318815 A JP3318815 A JP 3318815A JP 31881591 A JP31881591 A JP 31881591A JP H05303492 A JPH05303492 A JP H05303492A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- data
- decoding
- serialization
- cache
- 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
- 238000012544 monitoring process Methods 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 42
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000008569 process Effects 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 2
- 230000004044 response Effects 0.000 claims 4
- 230000000977 initiatory effect Effects 0.000 claims 2
- 208000024891 symptom Diseases 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 35
- 230000003993 interaction Effects 0.000 abstract description 4
- 239000000872 buffer Substances 0.000 description 71
- 230000009471 action Effects 0.000 description 11
- 238000011084 recovery Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000013256 coordination polymer Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
Abstract
(57)【要約】
【目的】それが許されるとアーキテクチャが規定しない
うちに、CPUが直列化点を越えて動作を続行すること
のできるシステム及び方法。 【構成】正しい処理結果が直列化点の後で達成されるか
否かが確認される。この結果の確度に疑問があれば、C
PUは直列化点での状況に戻され、処理が繰り返され
る。この結果の確度は、CPU間の対話はメモリへの参
照に限定されている事実に左右される監視機構によって
決定される。必要とされる正しい動作であることの保証
は、論理的には直列化動作より後にあるが取出しの再開
が許される時点以前に実行される命令のために取出しが
実行される記憶位置を監視することによって得られる。
うちに、CPUが直列化点を越えて動作を続行すること
のできるシステム及び方法。 【構成】正しい処理結果が直列化点の後で達成されるか
否かが確認される。この結果の確度に疑問があれば、C
PUは直列化点での状況に戻され、処理が繰り返され
る。この結果の確度は、CPU間の対話はメモリへの参
照に限定されている事実に左右される監視機構によって
決定される。必要とされる正しい動作であることの保証
は、論理的には直列化動作より後にあるが取出しの再開
が許される時点以前に実行される命令のために取出しが
実行される記憶位置を監視することによって得られる。
Description
【0001】
【産業上の利用分野】本発明は、電子計算機システムの
直列化命令の処理に関する。
直列化命令の処理に関する。
【0002】
【従来の技術】1940年代、及び1950年代初期に
初期のコンピュータが製作されたとき、コンピュータは
各命令を完了してから次の命令を取り出す単純な機械で
あった。コンピュータがその方式で製作されたのは、そ
れが現況技術であり、当時の技術能力であったからであ
る。この単純な動作のために、プログラマはコンピュー
タの内部動作の詳細を理解する必要なしに、コンピュー
タがすることを簡単に理解することができ、そのためプ
ログラムの作成が容易になった。
初期のコンピュータが製作されたとき、コンピュータは
各命令を完了してから次の命令を取り出す単純な機械で
あった。コンピュータがその方式で製作されたのは、そ
れが現況技術であり、当時の技術能力であったからであ
る。この単純な動作のために、プログラマはコンピュー
タの内部動作の詳細を理解する必要なしに、コンピュー
タがすることを簡単に理解することができ、そのためプ
ログラムの作成が容易になった。
【0003】CPU(コンピュータの中央処理部)をど
う構築するかについてわかってくるにつれて、CPU同
士を「オーバーラップ」させる、すなわち、CPUが前
の命令処理を完了する前に、次の命令の処理を開始する
ように構築すると好都合なことが明らかになった。これ
は、単に命令を予め取り出して、前の命令が完了し次
第、次の命令がすぐに検査できるようにすることもあ
り、またプログラムが要求する順序とは異なる順序で命
令を実行することを含めて、複雑な複数の命令を予め処
理することもある。これはまた、キャッシュを含む。こ
のキャッシュは、あるデータがいずれ必要になることを
予期して、主記憶装置からそのデータを予め取り出しC
PU内に保持する機構と考えることができる。使用され
る機構は多種多様であり、かつ複雑であった。
う構築するかについてわかってくるにつれて、CPU同
士を「オーバーラップ」させる、すなわち、CPUが前
の命令処理を完了する前に、次の命令の処理を開始する
ように構築すると好都合なことが明らかになった。これ
は、単に命令を予め取り出して、前の命令が完了し次
第、次の命令がすぐに検査できるようにすることもあ
り、またプログラムが要求する順序とは異なる順序で命
令を実行することを含めて、複雑な複数の命令を予め処
理することもある。これはまた、キャッシュを含む。こ
のキャッシュは、あるデータがいずれ必要になることを
予期して、主記憶装置からそのデータを予め取り出しC
PU内に保持する機構と考えることができる。使用され
る機構は多種多様であり、かつ複雑であった。
【0004】CPU設計のこれらの変化にもかかわら
ず、CPUが各命令を完全に実行してから次の命令に進
むように動作するという概念は、主として保持されてき
た。この概念が保持されてきたのは、主として、そうす
るとCPUの動作が簡単に理解でき、プログラミングが
余り困難でなくなるからであり、また、前の世代と互換
性のある新世代のコンピュータの製作が容易になるから
である。この概念を維持するためには、ある命令によっ
て生成されたデータの一部が後続の命令によって使用さ
れる状況を検出し、その後続の命令が、同じレジスタま
たは記憶位置にあった古い値ではなく、新しく生成され
た値を使用して実行されることを確認する必要がある。
この検出は、一般には、いくつか(ときには多数)の比
較回路によって実行され、正しい値が使用されることを
確認する動作は、特別のデータパス回路によって、また
は必要な値が得られるまで機械のある(たぶん大きな)
部分の動作を遅延させるような制御回路の変化によっ
て、あるいはその両方によって実施される。CPUの動
作のこの単純な順次的概念を維持するのに必要な検出・
訂正論理回路の実施態様は、これらのオーバーラップ機
構を設計する際の中心的な問題である。
ず、CPUが各命令を完全に実行してから次の命令に進
むように動作するという概念は、主として保持されてき
た。この概念が保持されてきたのは、主として、そうす
るとCPUの動作が簡単に理解でき、プログラミングが
余り困難でなくなるからであり、また、前の世代と互換
性のある新世代のコンピュータの製作が容易になるから
である。この概念を維持するためには、ある命令によっ
て生成されたデータの一部が後続の命令によって使用さ
れる状況を検出し、その後続の命令が、同じレジスタま
たは記憶位置にあった古い値ではなく、新しく生成され
た値を使用して実行されることを確認する必要がある。
この検出は、一般には、いくつか(ときには多数)の比
較回路によって実行され、正しい値が使用されることを
確認する動作は、特別のデータパス回路によって、また
は必要な値が得られるまで機械のある(たぶん大きな)
部分の動作を遅延させるような制御回路の変化によっ
て、あるいはその両方によって実施される。CPUの動
作のこの単純な順次的概念を維持するのに必要な検出・
訂正論理回路の実施態様は、これらのオーバーラップ機
構を設計する際の中心的な問題である。
【0005】この単純な概念は現代のCPUで大抵は維
持されてきているが、例外もある。インターロックから
利益が得られるCPUプログラムが書かれる見込みのな
い分野、及びそれを実施するとコストが高くつく分野で
は、CPUアーキテクチャ(正しい動作の定義)は予期
できない結果を許容するように書かれる。IBMシステ
ム/370(商標)アーキテクチャなどかなり以前から
存在しているアーキテクチャでは、このような定義は稀
であり、主としてアーキテクチャへの新しい追加に限ら
れる。より新しい、より専用のアーキテクチャでは、単
純な順次的動作概念は一般に維持されるけれども、予期
できない結果を生ずることを許容するのがより有力であ
る。
持されてきているが、例外もある。インターロックから
利益が得られるCPUプログラムが書かれる見込みのな
い分野、及びそれを実施するとコストが高くつく分野で
は、CPUアーキテクチャ(正しい動作の定義)は予期
できない結果を許容するように書かれる。IBMシステ
ム/370(商標)アーキテクチャなどかなり以前から
存在しているアーキテクチャでは、このような定義は稀
であり、主としてアーキテクチャへの新しい追加に限ら
れる。より新しい、より専用のアーキテクチャでは、単
純な順次的動作概念は一般に維持されるけれども、予期
できない結果を生ずることを許容するのがより有力であ
る。
【0006】CPU動作の順次的概念に影響を与えるも
う1つの複雑な問題は多重処理である。多重処理システ
ムでは、2つ以上のCPUは単一の主記憶装置に接続さ
れ、その主記憶装置の内容に対し同時に作動する。そう
するのは、ある1組の問題を扱うのに、単一のCPUを
使って達成できるよりもより大きな処理能力が使用でき
るようにするためである。大抵のマルチプロセッサはし
ばしばマルチプログラミングシステムと共に使用され
る。
う1つの複雑な問題は多重処理である。多重処理システ
ムでは、2つ以上のCPUは単一の主記憶装置に接続さ
れ、その主記憶装置の内容に対し同時に作動する。そう
するのは、ある1組の問題を扱うのに、単一のCPUを
使って達成できるよりもより大きな処理能力が使用でき
るようにするためである。大抵のマルチプロセッサはし
ばしばマルチプログラミングシステムと共に使用され
る。
【0007】マルチプログラミングシステムは、多数の
別々のユーザプログラムが実行するために提示され、オ
ペレーティングシステムと呼ばれるプログラムは別々の
ユーザプログラムの実行を制御して、各ユーザプログラ
ムはCPU上で実行するため公平な機会を得るようにす
るプログラミングのシステムである。このようなシステ
ムでは、これらのCPUは所定の瞬間に異なるユーザプ
ログラムに割り当てられる。したがって、使用可能なC
PU数は、全作業負荷を処理するために使用可能な処理
能力の総量を増加させるが、単一のユーザプログラムに
は集中されない。各CPUは大抵の瞬間に記憶装置の異
なる部分にある異なるユーザプログラムを処理するの
で、多くの点でそれらのCPUは大部分の時間完全に別
々のシステムとして作動する。それにもかかわらず、い
つでもそういえるわけではない。
別々のユーザプログラムが実行するために提示され、オ
ペレーティングシステムと呼ばれるプログラムは別々の
ユーザプログラムの実行を制御して、各ユーザプログラ
ムはCPU上で実行するため公平な機会を得るようにす
るプログラミングのシステムである。このようなシステ
ムでは、これらのCPUは所定の瞬間に異なるユーザプ
ログラムに割り当てられる。したがって、使用可能なC
PU数は、全作業負荷を処理するために使用可能な処理
能力の総量を増加させるが、単一のユーザプログラムに
は集中されない。各CPUは大抵の瞬間に記憶装置の異
なる部分にある異なるユーザプログラムを処理するの
で、多くの点でそれらのCPUは大部分の時間完全に別
々のシステムとして作動する。それにもかかわらず、い
つでもそういえるわけではない。
【0008】オペレーティングシステムには、各種のプ
ログラムに対するCPU及びその他の物理的資源の割当
てを制御するデータ領域がある。オペレーティングシス
テムが特定のCPU上で走っている場合、オペレーティ
ングシステムはしばしばこれらのデータ領域の1つまた
は複数を取出し、かつ記憶を行う。オペレーティングシ
ステムが同時に2つのCPU上で走っている場合、それ
らのCPUは共に同じデータ領域に取出し、かつ記憶を
行う。これは大部分の時間動作モードではないけれど
も、この動作モードは毎秒何百回または何千回も起こる
ことがあり、起こった場合は、特別の問題が生ずる。
ログラムに対するCPU及びその他の物理的資源の割当
てを制御するデータ領域がある。オペレーティングシス
テムが特定のCPU上で走っている場合、オペレーティ
ングシステムはしばしばこれらのデータ領域の1つまた
は複数を取出し、かつ記憶を行う。オペレーティングシ
ステムが同時に2つのCPU上で走っている場合、それ
らのCPUは共に同じデータ領域に取出し、かつ記憶を
行う。これは大部分の時間動作モードではないけれど
も、この動作モードは毎秒何百回または何千回も起こる
ことがあり、起こった場合は、特別の問題が生ずる。
【0009】同時に同一データを実行する2つの異なる
CPU上で走ることができるような方法でオペレーティ
ングシステムをプログラミングすることは、興味のある
プログラミングの問題である。同じデータで作動される
2つのCPUによって記憶位置が更新されることができ
る様々な順序を注意深く考慮しなければならない。2つ
のCPUは非同期的に稼働するため、各CPUが単純な
順次モデルに従って動作する場合でも、それらのCPU
が対話することができる様々な方法がある。これらのC
PUが単純な順次モデルからはずれることが可能な限
り、可能な対話はより複雑かつ非直観的になり、これら
のCPUが維持しなければならない順序性の度合に制限
がなければ、このプログラミング問題は手に負えなくな
る。
CPU上で走ることができるような方法でオペレーティ
ングシステムをプログラミングすることは、興味のある
プログラミングの問題である。同じデータで作動される
2つのCPUによって記憶位置が更新されることができ
る様々な順序を注意深く考慮しなければならない。2つ
のCPUは非同期的に稼働するため、各CPUが単純な
順次モデルに従って動作する場合でも、それらのCPU
が対話することができる様々な方法がある。これらのC
PUが単純な順次モデルからはずれることが可能な限
り、可能な対話はより複雑かつ非直観的になり、これら
のCPUが維持しなければならない順序性の度合に制限
がなければ、このプログラミング問題は手に負えなくな
る。
【0010】これらのことを考慮すると、プログラミン
グ可能性のために順次動作に必要な競合と、ハードウェ
アの実施に関する実際的考慮間で何らかの妥協点を見つ
けることが必要になる。順次性の必要は、時間の点で
も、影響を受けるプログラムコード量の点でも制限され
るので、ある妥協点が可能なことがわかる。問題は、影
響を受けるコード量の点で制限されるのは、それが、す
べてのCPUによって参照されるデータに作動するオペ
レーティングシステムのコードの特別の部分に制限され
るからである。ハードウェアで特別のことを行う必要が
あるのは、このコードの特別の部分が実行しているとき
だけだからであるため、この問題は時間の点で制限され
る。これは、この問題がプログラムの書き方に関する要
件によって処理されることができることを意味する。こ
れらの要件は、制限されたコード量にだけ影響を与え、
これらのCPUに構築された機構を使用することができ
る。これらの機構は、より一般的な状況で必要な同一の
性能のレベルを有する必要はない。
グ可能性のために順次動作に必要な競合と、ハードウェ
アの実施に関する実際的考慮間で何らかの妥協点を見つ
けることが必要になる。順次性の必要は、時間の点で
も、影響を受けるプログラムコード量の点でも制限され
るので、ある妥協点が可能なことがわかる。問題は、影
響を受けるコード量の点で制限されるのは、それが、す
べてのCPUによって参照されるデータに作動するオペ
レーティングシステムのコードの特別の部分に制限され
るからである。ハードウェアで特別のことを行う必要が
あるのは、このコードの特別の部分が実行しているとき
だけだからであるため、この問題は時間の点で制限され
る。これは、この問題がプログラムの書き方に関する要
件によって処理されることができることを意味する。こ
れらの要件は、制限されたコード量にだけ影響を与え、
これらのCPUに構築された機構を使用することができ
る。これらの機構は、より一般的な状況で必要な同一の
性能のレベルを有する必要はない。
【0011】システム/370アーキテクチャでは、こ
れらの問題を処理するためにいくつかのことが行われて
きた。まず第1に、2つのCPUの対話に明らかである
非順次動作のための余地をなお残しているけれども、順
次動作に関するいくつかの要件が課せられる。さらに、
このアーキテクチャは、直列化点と呼ばれる点を規定す
る。
れらの問題を処理するためにいくつかのことが行われて
きた。まず第1に、2つのCPUの対話に明らかである
非順次動作のための余地をなお残しているけれども、順
次動作に関するいくつかの要件が課せられる。さらに、
このアーキテクチャは、直列化点と呼ばれる点を規定す
る。
【0012】直列化点で、CPUは、概念的にその点よ
り後にある記憶動作を実行する前に、概念的にその点よ
り前のすべての記憶参照を完了しなければならない。す
なわち、これらの点で、CPUは単純な順次動作モード
に戻る。このアーキテクチャは、すべての割込みに対し
て、また直列化命令と呼ばれる(限られた)命令のサブ
セットに対して直列化点が発生することを規定する。ほ
とんどの直列化命令では、2つの直列化点があり、1つ
は実行を開始する前にあり、もう1つは実行を完了した
後にある。システム/370アーキテクチャでのこのよ
うな直列化命令の1例は、“COMPARE AND
SWAP”(比較し交換する命令)である。
り後にある記憶動作を実行する前に、概念的にその点よ
り前のすべての記憶参照を完了しなければならない。す
なわち、これらの点で、CPUは単純な順次動作モード
に戻る。このアーキテクチャは、すべての割込みに対し
て、また直列化命令と呼ばれる(限られた)命令のサブ
セットに対して直列化点が発生することを規定する。ほ
とんどの直列化命令では、2つの直列化点があり、1つ
は実行を開始する前にあり、もう1つは実行を完了した
後にある。システム/370アーキテクチャでのこのよ
うな直列化命令の1例は、“COMPARE AND
SWAP”(比較し交換する命令)である。
【0013】本発明以前には、IBMのCPUは単純な
方法で直列化を実施していた。すなわち、実際に動作を
停止し、以前の記憶がすべて完了するのを待った後、次
の命令の取出しを開始することによって動作を再開して
いた。これは明らかにこのアーキテクチャを実施する最
も単純な方法であるが、性能が最低の実施態様でもあ
る。これらの事象の発生頻度は、この実施態様が、完全
に受入れ可能ではないまでも、許容できるほどのもので
あった。
方法で直列化を実施していた。すなわち、実際に動作を
停止し、以前の記憶がすべて完了するのを待った後、次
の命令の取出しを開始することによって動作を再開して
いた。これは明らかにこのアーキテクチャを実施する最
も単純な方法であるが、性能が最低の実施態様でもあ
る。これらの事象の発生頻度は、この実施態様が、完全
に受入れ可能ではないまでも、許容できるほどのもので
あった。
【0014】
【課題を解決するための手段】このシステム・アーキテ
クチャは、CPUがどのように実施されるかは規定せ
ず、達成される必要のある結果だけを規定する。特に、
このアーキテクチャは、CPUが直列化点で停止し、先
に進む前に記憶の完了を待たなければならないことを規
定しても、これは正しい結果が何であるかの規定にすぎ
ない。同じ結果を達成するどの実施態様も正しい。
クチャは、CPUがどのように実施されるかは規定せ
ず、達成される必要のある結果だけを規定する。特に、
このアーキテクチャは、CPUが直列化点で停止し、先
に進む前に記憶の完了を待たなければならないことを規
定しても、これは正しい結果が何であるかの規定にすぎ
ない。同じ結果を達成するどの実施態様も正しい。
【0015】本発明は、それが許されるとアーキテクチ
ャが規定しないうちに、直列化点を越えて動作を続行す
ることのできるシステム及び方法を提供する。本発明に
よれば、直列化点の後で正しい結果が達成されているか
どうかが確認される。結果が正しいかどうか疑問が生じ
た場合、プロセッサはその直列化点より前の状況に戻
り、処理が繰り返される。
ャが規定しないうちに、直列化点を越えて動作を続行す
ることのできるシステム及び方法を提供する。本発明に
よれば、直列化点の後で正しい結果が達成されているか
どうかが確認される。結果が正しいかどうか疑問が生じ
た場合、プロセッサはその直列化点より前の状況に戻
り、処理が繰り返される。
【0016】好ましい実施例では、結果が正しいかどう
かは、監視機構によって決定される。この機構は、CP
U間の対話が記憶装置への参照に制限されることによ
る。開示された機構では、アーキテクチャが許す時点以
前に実行される動作は、記憶位置を変更しない動作だけ
に制限される。すなわち、CPUは、この処理中に記憶
位置を変更することを許されない。
かは、監視機構によって決定される。この機構は、CP
U間の対話が記憶装置への参照に制限されることによ
る。開示された機構では、アーキテクチャが許す時点以
前に実行される動作は、記憶位置を変更しない動作だけ
に制限される。すなわち、CPUは、この処理中に記憶
位置を変更することを許されない。
【0017】必要とされる正しい動作であることの保証
は、論理的には直列化動作より後にあるが取出しの再開
が許される時点以前に実行される命令のために取出しが
実行される記憶位置を監視することによって得られる。
記憶位置の1つから最初のこのような取出しが実際に実
行された時点から、取出しの再開が許される時点までの
間にそれらの記憶位置が変更されない場合、(これらの
取出しに基づいて)CPUによって実行された処理の結
果は、それらの取出しが許される瞬間にすべての取出し
及びすべての処理が実行された場合と全く同じでなけれ
ばならない。後者はアーキテクチャ要件に合致するの
で、前者も合致するはずである。
は、論理的には直列化動作より後にあるが取出しの再開
が許される時点以前に実行される命令のために取出しが
実行される記憶位置を監視することによって得られる。
記憶位置の1つから最初のこのような取出しが実際に実
行された時点から、取出しの再開が許される時点までの
間にそれらの記憶位置が変更されない場合、(これらの
取出しに基づいて)CPUによって実行された処理の結
果は、それらの取出しが許される瞬間にすべての取出し
及びすべての処理が実行された場合と全く同じでなけれ
ばならない。後者はアーキテクチャ要件に合致するの
で、前者も合致するはずである。
【0018】この監視機構は、記憶位置が修正されなか
ったことを検出したとき、アーキテクチャ上の要件が満
たされたという必要な保証を提供する。記憶位置が修正
されたことを監視機構が検出したとき、CPUを直列化
点の直後の内部動作点に復元する機構を呼び出し、その
点から動作を再開させる。
ったことを検出したとき、アーキテクチャ上の要件が満
たされたという必要な保証を提供する。記憶位置が修正
されたことを監視機構が検出したとき、CPUを直列化
点の直後の内部動作点に復元する機構を呼び出し、その
点から動作を再開させる。
【0019】
【実施例】本発明は、それが許されるとアーキテクチャ
が規定する前にCPUが直列化点を越えて動作を続行で
きるシステム及び方法を提供する。本発明によれば、直
列化点の後で正しい結果が達成されつつあるかどうかが
確認される。結果が正しいかどうか疑問が生じた場合、
プロセッサはその直列化点より前の状況に戻り、処理が
繰り返される。好ましい実施例では、結果が正しいかど
うかは監視機構によって決定される。
が規定する前にCPUが直列化点を越えて動作を続行で
きるシステム及び方法を提供する。本発明によれば、直
列化点の後で正しい結果が達成されつつあるかどうかが
確認される。結果が正しいかどうか疑問が生じた場合、
プロセッサはその直列化点より前の状況に戻り、処理が
繰り返される。好ましい実施例では、結果が正しいかど
うかは監視機構によって決定される。
【0020】最初に、監視機構がどのように機能するか
を図6〜図9を参照して検討する。好ましい実施例で
は、監視機構の動作は、システムのキャッシュの存在、
及びその動作方法に依存するので、キャッシュの構造及
び動作を説明することによって監視機構の説明を始める
必要がある。好ましい実施例では、キャッシュはスプリ
ットキャッシュである。これは本質的には2つの別々の
キャッシュであり、1つは命令キャッシュ(Iキャッシ
ュ)、もう1つはデータキャッシュ(Dキャッシュ)で
ある。すべての命令取出しは命令キャッシュに送られ、
すべてのオペランド取出し及び記憶はデータキャッシュ
に送られる。動作の途中、命令取出しの対象となるこれ
らの記憶位置は命令キャッシュにロードされ、オペラン
ド参照が行われるこれらの記憶位置はデータキャッシュ
にロードされる。オペランド参照は通常異なる場所に対
して行われるので、同一キャッシュ行が両キャッシュに
ある可能性も確かにあるけれども、各キャッシュには一
般にデータがある。
を図6〜図9を参照して検討する。好ましい実施例で
は、監視機構の動作は、システムのキャッシュの存在、
及びその動作方法に依存するので、キャッシュの構造及
び動作を説明することによって監視機構の説明を始める
必要がある。好ましい実施例では、キャッシュはスプリ
ットキャッシュである。これは本質的には2つの別々の
キャッシュであり、1つは命令キャッシュ(Iキャッシ
ュ)、もう1つはデータキャッシュ(Dキャッシュ)で
ある。すべての命令取出しは命令キャッシュに送られ、
すべてのオペランド取出し及び記憶はデータキャッシュ
に送られる。動作の途中、命令取出しの対象となるこれ
らの記憶位置は命令キャッシュにロードされ、オペラン
ド参照が行われるこれらの記憶位置はデータキャッシュ
にロードされる。オペランド参照は通常異なる場所に対
して行われるので、同一キャッシュ行が両キャッシュに
ある可能性も確かにあるけれども、各キャッシュには一
般にデータがある。
【0021】監視機構の動作でもう1つ考慮すべき点
は、キャッシュで記憶が処理される方法である。データ
キャッシュは、ある行に記憶するとき、その行の排他的
制御を必要とするキャッシュである。すなわち、記憶が
行われる時点で、その行はシステムの他のキャッシュに
は存在しない。CPUが、記憶位置に記憶する必要があ
ることを発見したとき、CPUが最初に行うことは、そ
の行の排他的制御で、CPUがその行をロードしたかど
うかを見るためにデータキャッシュを調べることであ
る。ロードしていない場合、その行のアドレスはシステ
ムの他のすべてのCPUに送られ、その行のコピーを有
するCPUに、そのキャッシュでそのコピーを無効にす
ることを要求する。また、ある行が(取出しだけのため
に)記憶装置からロードされたとき、他のCPUが排他
的制御を有する自分のキャッシュにその行を有さないこ
とを確実にするためにそのアドレスは同報通信される。
アドレスを同報通信するこのプロセスは相互無効化とし
て公知であり、それが完了後のみCPUは得られた行の
使用を開始することができる。
は、キャッシュで記憶が処理される方法である。データ
キャッシュは、ある行に記憶するとき、その行の排他的
制御を必要とするキャッシュである。すなわち、記憶が
行われる時点で、その行はシステムの他のキャッシュに
は存在しない。CPUが、記憶位置に記憶する必要があ
ることを発見したとき、CPUが最初に行うことは、そ
の行の排他的制御で、CPUがその行をロードしたかど
うかを見るためにデータキャッシュを調べることであ
る。ロードしていない場合、その行のアドレスはシステ
ムの他のすべてのCPUに送られ、その行のコピーを有
するCPUに、そのキャッシュでそのコピーを無効にす
ることを要求する。また、ある行が(取出しだけのため
に)記憶装置からロードされたとき、他のCPUが排他
的制御を有する自分のキャッシュにその行を有さないこ
とを確実にするためにそのアドレスは同報通信される。
アドレスを同報通信するこのプロセスは相互無効化とし
て公知であり、それが完了後のみCPUは得られた行の
使用を開始することができる。
【0022】このプロセスについて引き出すことのでき
る論理的結論は、排他的制御で、または排他的制御なし
のいずれかでキャッシュが行を含む場合、システムの他
のどのCPUもその行を変更しないと確信することであ
る。何らかの理由で、すなわち、他のCPUから要求が
あったために、または通常のエージングのために無効化
された結果、ある行がそのキャッシュに残っているなら
ば、もはや他のCPUがその行を変更しないとは確信で
きない。
る論理的結論は、排他的制御で、または排他的制御なし
のいずれかでキャッシュが行を含む場合、システムの他
のどのCPUもその行を変更しないと確信することであ
る。何らかの理由で、すなわち、他のCPUから要求が
あったために、または通常のエージングのために無効化
された結果、ある行がそのキャッシュに残っているなら
ば、もはや他のCPUがその行を変更しないとは確信で
きない。
【0023】命令キャッシュは決してCPUによって記
憶されることはなく、決して排他的制御で行を保持しな
い。CPUがそのアドレスをシステムの他のすべてのC
PUに同報通信することによって、行の排他的制御を得
ると、それ自身の命令キャッシュはこのプロセスに参加
しないが、その行のコピーを保持することはできる。後
にCPUがその行をデータキャッシュに実際に記憶する
と、この行のアドレスは命令キャッシュに送られ、その
時その行は命令キャッシュで無効にされる。その行が命
令取出しのためにまだ必要な場合は、その行から次の命
令取出しが行われると、主記憶装置からそれが再ロード
され、CPUが再びそこに記憶する場合、その行は再び
命令キャッシュで無効にされる。
憶されることはなく、決して排他的制御で行を保持しな
い。CPUがそのアドレスをシステムの他のすべてのC
PUに同報通信することによって、行の排他的制御を得
ると、それ自身の命令キャッシュはこのプロセスに参加
しないが、その行のコピーを保持することはできる。後
にCPUがその行をデータキャッシュに実際に記憶する
と、この行のアドレスは命令キャッシュに送られ、その
時その行は命令キャッシュで無効にされる。その行が命
令取出しのためにまだ必要な場合は、その行から次の命
令取出しが行われると、主記憶装置からそれが再ロード
され、CPUが再びそこに記憶する場合、その行は再び
命令キャッシュで無効にされる。
【0024】これで、監視機構の基礎となる基本的概念
が容易に理解できる。まず第1に、取出しが行われる
と、取り出されたデータはキャッシュにあることがわか
っている。なぜなら、すべてのデータはキャッシュを介
して取り出され、取出しの直後にキャッシュに存在する
からである。論理的に直列化点より後にある情報の最初
の取出し時点から、その取出しが許される時点までの間
にキャッシュから行が除去されない場合、それらの取出
しが行われた位置は他のCPUによって変更されること
はできない。すなわち、正しい結果を得たという必要な
保証が得られた。冗長的に言うと、必要な保証を得るた
めには、キャッシュを監視するだけでよく、監視してい
る間中にキャッシュから行が除去されない場合、必要と
される保証を有する。
が容易に理解できる。まず第1に、取出しが行われる
と、取り出されたデータはキャッシュにあることがわか
っている。なぜなら、すべてのデータはキャッシュを介
して取り出され、取出しの直後にキャッシュに存在する
からである。論理的に直列化点より後にある情報の最初
の取出し時点から、その取出しが許される時点までの間
にキャッシュから行が除去されない場合、それらの取出
しが行われた位置は他のCPUによって変更されること
はできない。すなわち、正しい結果を得たという必要な
保証が得られた。冗長的に言うと、必要な保証を得るた
めには、キャッシュを監視するだけでよく、監視してい
る間中にキャッシュから行が除去されない場合、必要と
される保証を有する。
【0025】これで基礎となる概念は明らかとなった
が、まだ処理しなければならない問題、及び説明しなけ
ればならない設計上の選択がある。設計上の選択は、取
出しの実行を許した後で、それらの取出しがアーキテク
チャ上の命令取出し及びオペランド取出しの両方から構
成されることを許すか、それとも命令取出しを制限する
かである。両タイプの取出しの実行を許すことの利点
は、取出しが許される時点より前に実行されることがで
きる処理量が増大することである。その欠点は、そのと
き両方のキャッシュを監視する必要があること、及び行
が除去されたことがわかって、直列化点より後の命令に
戻って処理を再度開始することが必要になる確率が増大
することである。
が、まだ処理しなければならない問題、及び説明しなけ
ればならない設計上の選択がある。設計上の選択は、取
出しの実行を許した後で、それらの取出しがアーキテク
チャ上の命令取出し及びオペランド取出しの両方から構
成されることを許すか、それとも命令取出しを制限する
かである。両タイプの取出しの実行を許すことの利点
は、取出しが許される時点より前に実行されることがで
きる処理量が増大することである。その欠点は、そのと
き両方のキャッシュを監視する必要があること、及び行
が除去されたことがわかって、直列化点より後の命令に
戻って処理を再度開始することが必要になる確率が増大
することである。
【0026】この設計上の選択を解決する2つの所見が
得られた。第1の所見は、命令取出しだけが許される場
合、アドレスを計算し、取出し要求を取出し要求待ち行
列(これは物理的にデータキャッシュの近くに構築され
る)に送る時点まで、取り出された命令を処理すること
がなお可能である。取出しが許されると、取出し要求の
リストは処理されることを待ち、即座に処理されること
ができる。こうすると、この期間中に実行したい処理の
大部分が行えるように見える。第2の所見は、データキ
ャッシュで相互照会ヒットの確率が命令キャッシュでそ
うなる確率より大きく、したがってデータキャッシュ及
び命令キャッシュを監視すると、行がキャッシュから除
去される確率が(直観的に)2倍以上に増加することで
ある。したがって、好ましい実施例では、命令取出しだ
けを許し、命令キャッシュだけを監視することに決定し
た。
得られた。第1の所見は、命令取出しだけが許される場
合、アドレスを計算し、取出し要求を取出し要求待ち行
列(これは物理的にデータキャッシュの近くに構築され
る)に送る時点まで、取り出された命令を処理すること
がなお可能である。取出しが許されると、取出し要求の
リストは処理されることを待ち、即座に処理されること
ができる。こうすると、この期間中に実行したい処理の
大部分が行えるように見える。第2の所見は、データキ
ャッシュで相互照会ヒットの確率が命令キャッシュでそ
うなる確率より大きく、したがってデータキャッシュ及
び命令キャッシュを監視すると、行がキャッシュから除
去される確率が(直観的に)2倍以上に増加することで
ある。したがって、好ましい実施例では、命令取出しだ
けを許し、命令キャッシュだけを監視することに決定し
た。
【0027】まだ処理しなければならない問題は、命令
キャッシュの監視をいつ開始すべきかを決定する問題で
ある。この問題について説明する前に、望ましい実施態
様は、命令の処理が通常は直列化点を通り過ぎて滑らか
に継続するものであることに留意されたい。すなわち、
命令がアーキテクチャ上許されている点に達するまでそ
のオペランド取出しが取出し待ち行列に保持されること
を除き、直列化点を含む直列化点までの命令が完全な通
常のオーバーラップで処理され、後続の命令がそのよう
なオーバーラップで中断なく処理される実施態様が求め
られる。
キャッシュの監視をいつ開始すべきかを決定する問題で
ある。この問題について説明する前に、望ましい実施態
様は、命令の処理が通常は直列化点を通り過ぎて滑らか
に継続するものであることに留意されたい。すなわち、
命令がアーキテクチャ上許されている点に達するまでそ
のオペランド取出しが取出し待ち行列に保持されること
を除き、直列化点を含む直列化点までの命令が完全な通
常のオーバーラップで処理され、後続の命令がそのよう
なオーバーラップで中断なく処理される実施態様が求め
られる。
【0028】この目的を理解すれば、監視をいつ開始す
べきかを規定されることができる。すなわち、直列化点
より後の最初の命令のための取出しが実行され次第、監
視を開始すべきである。残念ながら、我々が希望する種
類のオーバーラップを用いる場合、この命令取出しは、
直列化命令が命令レジスタに届く前に、すなわち直列化
命令の存在がわかる前に起こる(可能性が強い)。どう
すれば監視する必要があることがわかる前に監視を開始
できるかを考えてみよう。
べきかを規定されることができる。すなわち、直列化点
より後の最初の命令のための取出しが実行され次第、監
視を開始すべきである。残念ながら、我々が希望する種
類のオーバーラップを用いる場合、この命令取出しは、
直列化命令が命令レジスタに届く前に、すなわち直列化
命令の存在がわかる前に起こる(可能性が強い)。どう
すれば監視する必要があることがわかる前に監視を開始
できるかを考えてみよう。
【0029】その回答は、常時監視し、必要な情報で命
令のダブルワードにタグ付けして、直列化命令の処理で
あることがわかった時点で必要な情報が得られるように
することである。この情報は、各ダブルワードに対し
て、そのダブルワードがまだIキャッシュにあるかどう
かを示す単一のビットから構成される。これは“sti
ll in I−cache”(まだIキャッシュにあ
る)の意味であるSIICビットと呼ばれる。
令のダブルワードにタグ付けして、直列化命令の処理で
あることがわかった時点で必要な情報が得られるように
することである。この情報は、各ダブルワードに対し
て、そのダブルワードがまだIキャッシュにあるかどう
かを示す単一のビットから構成される。これは“sti
ll in I−cache”(まだIキャッシュにあ
る)の意味であるSIICビットと呼ばれる。
【0030】SIICビットは、命令先取り処理中にセ
ット(オンに)される(図6)。ダブルワード命令がI
キャッシュから取り出されるとき(602)、それは命
令バッファ(Iバッファ)に記憶され、その対応するS
IICタグビットがオンになる(604)。SIICビ
ットはダブルワードと共に運ばれ、命令キャッシュから
行が除去されると、リセット(オフに)される。従来の
ように、命令レジスタ(Iレジスタ)が使用可能になっ
たとき、中央プロセッサは命令を命令バッファからIレ
ジスタに移動する。各命令がIバッファからIレジスタ
に送られると、その関連するバッファは、Iキャッシュ
からの他の命令を保持するように使用可能にされる。
ット(オンに)される(図6)。ダブルワード命令がI
キャッシュから取り出されるとき(602)、それは命
令バッファ(Iバッファ)に記憶され、その対応するS
IICタグビットがオンになる(604)。SIICビ
ットはダブルワードと共に運ばれ、命令キャッシュから
行が除去されると、リセット(オフに)される。従来の
ように、命令レジスタ(Iレジスタ)が使用可能になっ
たとき、中央プロセッサは命令を命令バッファからIレ
ジスタに移動する。各命令がIバッファからIレジスタ
に送られると、その関連するバッファは、Iキャッシュ
からの他の命令を保持するように使用可能にされる。
【0031】SIICビットのリセットは、Iキャッシ
ュ監視処理によって制御される(図8)。Iキャッシュ
から行が除去されるときはいつでも(802)、CPU
のすべてのSIICビットはオフにされる(804)。
したがって、命令が復号論理回路に到達するとそのSI
ICビットがオンならば、それが取り出されて以降、い
かなる行もIキャッシュから除去されなかったことを意
味する。
ュ監視処理によって制御される(図8)。Iキャッシュ
から行が除去されるときはいつでも(802)、CPU
のすべてのSIICビットはオフにされる(804)。
したがって、命令が復号論理回路に到達するとそのSI
ICビットがオンならば、それが取り出されて以降、い
かなる行もIキャッシュから除去されなかったことを意
味する。
【0032】命令復号/SIIC監視プロセスは図7に
示される。先取り後、命令バッファからの命令は命令レ
ジスタにゲートされる(702)。これらの命令は、順
番に復号される(704)。直列化命令が復号されたこ
とが検出されると(706)、以後の直列化命令の復号
が禁止され(718)、データキャッシュ取出し処理は
制限され(720)、CPUのレジスタの内容のバック
アップコピーは作成され(708)、SIIC監視プロ
セスは開始される(710)。一旦、SIIC監視プロ
セスが開始すると(712で判定される)、次の命令は
検査され、そのSIICビットがオンであるかどうかを
調べる(714)。オンの場合は処理を続行するが、オ
フの場合は、復号を停止し、その命令及び他の先取り命
令を捨て、命令ストリームを再取出しする(716)。
直ちに、または再取出しが行えるようになるかのいずれ
かになり次第、命令復号が続行される。
示される。先取り後、命令バッファからの命令は命令レ
ジスタにゲートされる(702)。これらの命令は、順
番に復号される(704)。直列化命令が復号されたこ
とが検出されると(706)、以後の直列化命令の復号
が禁止され(718)、データキャッシュ取出し処理は
制限され(720)、CPUのレジスタの内容のバック
アップコピーは作成され(708)、SIIC監視プロ
セスは開始される(710)。一旦、SIIC監視プロ
セスが開始すると(712で判定される)、次の命令は
検査され、そのSIICビットがオンであるかどうかを
調べる(714)。オンの場合は処理を続行するが、オ
フの場合は、復号を停止し、その命令及び他の先取り命
令を捨て、命令ストリームを再取出しする(716)。
直ちに、または再取出しが行えるようになるかのいずれ
かになり次第、命令復号が続行される。
【0033】前述の説明から明らかなように、直列化命
令が処理されている時間中CPUの動作はいくつかの点
で異なる。第1に、以後の直列化命令の復号が禁止され
る(718)。言い替えると、以後の直列化命令の復号
は許されない。第2に、取出し待ち行列の動作が制限さ
れる(720)。一旦、直列化命令後の命令が復号され
ると(SIICビットがオンであると仮定して)、Iキ
ャッシュの直接監視が開始され(722)、SIICビ
ットの監視は終了される。以後の直列化命令の復号を禁
止するための制御、及び取出し待ち行列の動作を制限す
るための制御は、後述する。
令が処理されている時間中CPUの動作はいくつかの点
で異なる。第1に、以後の直列化命令の復号が禁止され
る(718)。言い替えると、以後の直列化命令の復号
は許されない。第2に、取出し待ち行列の動作が制限さ
れる(720)。一旦、直列化命令後の命令が復号され
ると(SIICビットがオンであると仮定して)、Iキ
ャッシュの直接監視が開始され(722)、SIICビ
ットの監視は終了される。以後の直列化命令の復号を禁
止するための制御、及び取出し待ち行列の動作を制限す
るための制御は、後述する。
【0034】一旦、直接Iキャッシュ監視が開始される
と、Iキャッシュからの行の除去によって、CPUは直
列化命令の復号直後の状況にリセットされ(716)、
直列化点の直後から再取出しを開始する。Iキャッシュ
監視処理は図8に示されている。Iキャッシュからの行
の除去は、ブロック806で発生される信号によって指
示される。
と、Iキャッシュからの行の除去によって、CPUは直
列化命令の復号直後の状況にリセットされ(716)、
直列化点の直後から再取出しを開始する。Iキャッシュ
監視処理は図8に示されている。Iキャッシュからの行
の除去は、ブロック806で発生される信号によって指
示される。
【0035】直列化命令より前の命令に関連する要求が
取出し待ち行列に送られるや否や、図9を参照して以下
に説明するように、取出し待ち行列処理は制限される。
直列化命令に関連するすべての命令は、取出し待ち行列
に送られ、待ち行列に加えられる(904)。取出し待
ち行列は、直列化命令にすべての要求が実行されたこと
を通知される。次に、直列化命令の後のすべての命令の
要求は、取出し待ち行列に送られ、待ち行列に加えられ
る。上述の処理の結果、取出し待ち行列は通常のように
これらの要求を受け取るが、これらの要求を3つのグル
ープに分割することができる。すなわち、直列化命令よ
り前の要求、直列化命令の要求、及び直列化命令より後
の命令の要求である。
取出し待ち行列に送られるや否や、図9を参照して以下
に説明するように、取出し待ち行列処理は制限される。
直列化命令に関連するすべての命令は、取出し待ち行列
に送られ、待ち行列に加えられる(904)。取出し待
ち行列は、直列化命令にすべての要求が実行されたこと
を通知される。次に、直列化命令の後のすべての命令の
要求は、取出し待ち行列に送られ、待ち行列に加えられ
る。上述の処理の結果、取出し待ち行列は通常のように
これらの要求を受け取るが、これらの要求を3つのグル
ープに分割することができる。すなわち、直列化命令よ
り前の要求、直列化命令の要求、及び直列化命令より後
の命令の要求である。
【0036】これらの3つの命令グループ間の2つの点
(908、914)で、取出し待ち行列は以前のすべて
の記憶が完了するのを待ち、その後で始めて、以後の要
求が処理されるのを許す。いくつかの直列化命令では要
求は必要でなく、それらの命令では、取出し待ち行列が
記憶の完了を待つ2点が合体して1点になる(90
8)。これらの2点のうちの第2の点(または唯一の
点)を通過したとき、プロセッサの動作は通常に戻り
(916)、他の直列化命令が復号できるようになる。
(908、914)で、取出し待ち行列は以前のすべて
の記憶が完了するのを待ち、その後で始めて、以後の要
求が処理されるのを許す。いくつかの直列化命令では要
求は必要でなく、それらの命令では、取出し待ち行列が
記憶の完了を待つ2点が合体して1点になる(90
8)。これらの2点のうちの第2の点(または唯一の
点)を通過したとき、プロセッサの動作は通常に戻り
(916)、他の直列化命令が復号できるようになる。
【0037】この期間中にIキャッシュから行が除去さ
れたことが検出された場合(802、808)、直列化
点より後のすべての命令は捨てられ、再取出しされ、再
処理される(716)。このことを実行するために、C
PUの内部状況を直列化動作を通過した直後の点まで戻
すことのできる機構が必要である。これは本質的には
(CPUが条件付きで分岐を通過して処理できる能力を
含むとき)誤った推測でとった分岐から回復するのに必
要な能力と同じ能力であり、この能力を提供する機構の
設計は、主としてCPUの動作方式によって決まる。
れたことが検出された場合(802、808)、直列化
点より後のすべての命令は捨てられ、再取出しされ、再
処理される(716)。このことを実行するために、C
PUの内部状況を直列化動作を通過した直後の点まで戻
すことのできる機構が必要である。これは本質的には
(CPUが条件付きで分岐を通過して処理できる能力を
含むとき)誤った推測でとった分岐から回復するのに必
要な能力と同じ能力であり、この能力を提供する機構の
設計は、主としてCPUの動作方式によって決まる。
【0038】本発明は、CPUが実施される方式に適し
たどんな分岐回復機構でも利用することができる。好ま
しい実施例では、本発明の出願人に譲渡された米国特許
第4901233号に詳述されているバックアップレジ
スタ割当てリスト型の機構が設けられる。
たどんな分岐回復機構でも利用することができる。好ま
しい実施例では、本発明の出願人に譲渡された米国特許
第4901233号に詳述されているバックアップレジ
スタ割当てリスト型の機構が設けられる。
【0039】分岐動作及び直列化動作の処理方法の間に
はいくつかの相違がある。分岐の場合には、回復後の新
しい処理は異なるアドレスからであるが、直列化命令の
場合には、回復後の処理は取り消された命令ストリーム
と同じアドレスで始まる。また分岐の場合には、条件付
き処理はこの回復が完了すると終わるが、直列化命令の
場合には、CPUは、アーキテクチャ上動作の再開を許
されるまでの間、依然として動作しているので、回復後
に処理される新しい命令は依然として条件付きモードに
ある。直列化動作の場合には、Iキャッシュから他の行
が除去された場合、他の回復動作(分岐では起こり得な
い動作)が起こる。アーキテクチャ上処理が許される点
に達したことが検出されたとき、条件付き処理は終了す
る。これは、分岐が正確に推測されたことが検出された
ときにとられる動作と同じ動作である。
はいくつかの相違がある。分岐の場合には、回復後の新
しい処理は異なるアドレスからであるが、直列化命令の
場合には、回復後の処理は取り消された命令ストリーム
と同じアドレスで始まる。また分岐の場合には、条件付
き処理はこの回復が完了すると終わるが、直列化命令の
場合には、CPUは、アーキテクチャ上動作の再開を許
されるまでの間、依然として動作しているので、回復後
に処理される新しい命令は依然として条件付きモードに
ある。直列化動作の場合には、Iキャッシュから他の行
が除去された場合、他の回復動作(分岐では起こり得な
い動作)が起こる。アーキテクチャ上処理が許される点
に達したことが検出されたとき、条件付き処理は終了す
る。これは、分岐が正確に推測されたことが検出された
ときにとられる動作と同じ動作である。
【0040】次に、図1〜図5を参照して、本発明の好
ましい実施例による装置について説明する。
ましい実施例による装置について説明する。
【0041】図1はマルチプロセッサシステムを示す。
このシステムの中心部分はシステム制御要素6であり、
これはいくつかのCPU1、2、3、システムの入出力
部7、及び主記憶装置8を一緒に接続する。システム制
御要素6は、これらの要素間で必要なすべての通信経路
を提供し、データ、アドレス、及び制御信号を必要に応
じて緩衝記憶し、キャッシュを含むこともある。各CP
Uは、このシステムのために書かれたプログラムを実行
するのに必要なすべての動作を独立して実行することが
でき、通常は性能向上のためにキャッシュを含む。好ま
しい実施例の場合では、各CPUは、2つのキャッシ
ュ、すなわち命令行を緩衝記憶するためのIキャッシ
ュ、及びオペランド行を緩衝記憶するためのDキャッシ
ュを含む。一連のアドレスバスとデータバス、CPUと
システム制御要素6の間を走行する制御信号9、10、
11、システムの入出力7部分とシステム制御要素6の
間を走行する他の制御信号16、及び主記憶装置8とシ
ステム制御要素6の間を走行するさらに別の制御信号1
8がある。これら各組の通信経路は、多数の信号を含
み、システム制御要素6に接続された特定のタイプの要
素の必要に適合するように設計されている。
このシステムの中心部分はシステム制御要素6であり、
これはいくつかのCPU1、2、3、システムの入出力
部7、及び主記憶装置8を一緒に接続する。システム制
御要素6は、これらの要素間で必要なすべての通信経路
を提供し、データ、アドレス、及び制御信号を必要に応
じて緩衝記憶し、キャッシュを含むこともある。各CP
Uは、このシステムのために書かれたプログラムを実行
するのに必要なすべての動作を独立して実行することが
でき、通常は性能向上のためにキャッシュを含む。好ま
しい実施例の場合では、各CPUは、2つのキャッシ
ュ、すなわち命令行を緩衝記憶するためのIキャッシ
ュ、及びオペランド行を緩衝記憶するためのDキャッシ
ュを含む。一連のアドレスバスとデータバス、CPUと
システム制御要素6の間を走行する制御信号9、10、
11、システムの入出力7部分とシステム制御要素6の
間を走行する他の制御信号16、及び主記憶装置8とシ
ステム制御要素6の間を走行するさらに別の制御信号1
8がある。これら各組の通信経路は、多数の信号を含
み、システム制御要素6に接続された特定のタイプの要
素の必要に適合するように設計されている。
【0042】図2は、CPUの命令緩衝記憶部及び命令
復号部を示す。この部分は、取り出されて復号を待って
いる命令を保持する多数の命令バッファ(Iバッファ)
を含む。これらは、Iバッファ1、2、3(それぞれ参
照番号19、20、21)によって表されている。Iバ
ッファ19〜21は、バス22を介してIキャッシュか
ら直接そのデータを受け取ることができ、またはIバッ
ファ3(21)の場合、互いにそのデータを受け取るこ
とができる。このIバッファ3は、バス23を介してI
バッファ2(20)からデータを受け取る。Iバッファ
19〜21は、単一のサイクルでIキャッシュから供給
されるデータ量に等しいサイズであることが好ましく、
システム/370アーキテクチャを実施したCPUで
は、一般にダブルワードである。
復号部を示す。この部分は、取り出されて復号を待って
いる命令を保持する多数の命令バッファ(Iバッファ)
を含む。これらは、Iバッファ1、2、3(それぞれ参
照番号19、20、21)によって表されている。Iバ
ッファ19〜21は、バス22を介してIキャッシュか
ら直接そのデータを受け取ることができ、またはIバッ
ファ3(21)の場合、互いにそのデータを受け取るこ
とができる。このIバッファ3は、バス23を介してI
バッファ2(20)からデータを受け取る。Iバッファ
19〜21は、単一のサイクルでIキャッシュから供給
されるデータ量に等しいサイズであることが好ましく、
システム/370アーキテクチャを実施したCPUで
は、一般にダブルワードである。
【0043】Iバッファ19〜21へのゲートインは、
Iバッファにどんなデータがあるかを追跡し、必要に応
じてIキャッシュから追加のデータを要求し、何の途中
かを記憶し、どの命令が復号のためにIレジスタによっ
て取られているかを追跡する1組の制御回路24によっ
て制御される。この制御回路24は、1組の制御信号2
9、30、31でIバッファへのゲートインを制御す
る。制御回路24は、1組の制御線25を介してIキャ
ッシュと通信する。これらの制御線25は、要求を出
し、求められているデータのアドレスを送り、要求の進
行に関する情報を受け取るために使用される。制御回路
24はまた、Iレジスタ33に送られるべきデータを選
択する1組のゲート32を制御し、1組の信号27によ
って復号/Iレジスタ制御回路34と通信する。ゲーテ
ィング論理回路から命令を受け取る命令レジスタ(Iレ
ジスタ)33は、復号/Iレジスタ制御回路34に提示
される1つまたは複数の命令を含み、これらの命令は検
査され、実行のために実行論理回路の適当な部分に渡さ
れる。この論理回路の全体は、設計されつつある特定の
CPUの必要に適した形で構造化されている。
Iバッファにどんなデータがあるかを追跡し、必要に応
じてIキャッシュから追加のデータを要求し、何の途中
かを記憶し、どの命令が復号のためにIレジスタによっ
て取られているかを追跡する1組の制御回路24によっ
て制御される。この制御回路24は、1組の制御信号2
9、30、31でIバッファへのゲートインを制御す
る。制御回路24は、1組の制御線25を介してIキャ
ッシュと通信する。これらの制御線25は、要求を出
し、求められているデータのアドレスを送り、要求の進
行に関する情報を受け取るために使用される。制御回路
24はまた、Iレジスタ33に送られるべきデータを選
択する1組のゲート32を制御し、1組の信号27によ
って復号/Iレジスタ制御回路34と通信する。ゲーテ
ィング論理回路から命令を受け取る命令レジスタ(Iレ
ジスタ)33は、復号/Iレジスタ制御回路34に提示
される1つまたは複数の命令を含み、これらの命令は検
査され、実行のために実行論理回路の適当な部分に渡さ
れる。この論理回路の全体は、設計されつつある特定の
CPUの必要に適した形で構造化されている。
【0044】各Iバッファ及びIレジスタに対して、S
IICビットと呼ばれるビット35、36、37、38
が付随している。このビットは、Iバッファ及びIレジ
スタへのゲートインを制御する信号と同じ信号29、3
0、31、39によって制御される。Iキャッシュから
のデータが、Iバッファ1(19)のようなIバッファ
の1つにゲートインされるときは必ず、関連するSII
Cビット35が1にセットされる。データが、Iバッフ
ァ2(20)からIバッファ3(21)へのようなバッ
ファへ一方のIバッファから他方のIバッファにゲート
インされるときは必ず、発生源Iバッファ36に関連す
るSIICビットは、宛先Iバッファ37に関連するS
IICビットにゲートされる。データがIバッファの1
つ(または複数)からIレジスタにゲートされるときは
必ず、データの第1バイトの発生源Iバッファに関連す
るSIICビットは、Iレジスタ38に関連するSII
Cビットにゲートされる。
IICビットと呼ばれるビット35、36、37、38
が付随している。このビットは、Iバッファ及びIレジ
スタへのゲートインを制御する信号と同じ信号29、3
0、31、39によって制御される。Iキャッシュから
のデータが、Iバッファ1(19)のようなIバッファ
の1つにゲートインされるときは必ず、関連するSII
Cビット35が1にセットされる。データが、Iバッフ
ァ2(20)からIバッファ3(21)へのようなバッ
ファへ一方のIバッファから他方のIバッファにゲート
インされるときは必ず、発生源Iバッファ36に関連す
るSIICビットは、宛先Iバッファ37に関連するS
IICビットにゲートされる。データがIバッファの1
つ(または複数)からIレジスタにゲートされるときは
必ず、データの第1バイトの発生源Iバッファに関連す
るSIICビットは、Iレジスタ38に関連するSII
Cビットにゲートされる。
【0045】何らかの理由でIキャッシュから行が除去
されたときは必ず活動状態であるIキャッシュからの信
号40がある。この信号40は、SIICビット35、
36、37、38のそれぞれに行き、それらのそれぞれ
を0にセットする。この効果として、命令がIレジスタ
33に達するときにそのSIICビット38がまだ1の
場合、その命令が取り出されて以来Iキャッシュから行
が全く除去されなかった、すなわち、その命令がまだI
キャッシュになければならないことがわかる。
されたときは必ず活動状態であるIキャッシュからの信
号40がある。この信号40は、SIICビット35、
36、37、38のそれぞれに行き、それらのそれぞれ
を0にセットする。この効果として、命令がIレジスタ
33に達するときにそのSIICビット38がまだ1の
場合、その命令が取り出されて以来Iキャッシュから行
が全く除去されなかった、すなわち、その命令がまだI
キャッシュになければならないことがわかる。
【0046】復号/Iレジスタ制御回路34は、Iレジ
スタ33内の命令を検査し、命令が実行論理回路(図4
の54)に渡されることができるかどうかを決定し、命
令を実行論理回路の正しい部分に移動するのに役立つ多
数の信号を復号する論理回路を含む。命令が復号される
場合はいくつかあり、次にどの命令を復号するのが正し
いかは明らかではない。このような状況の1例は、分岐
に出会った場合である。分岐が取られたかどうかを実行
論理回路54が判定するまで、実行されるべき次の命令
が、記憶装置内の順序が次の命令であるのか、それとも
目標アドレスでの命令なのかは確かにはわからない。
スタ33内の命令を検査し、命令が実行論理回路(図4
の54)に渡されることができるかどうかを決定し、命
令を実行論理回路の正しい部分に移動するのに役立つ多
数の信号を復号する論理回路を含む。命令が復号される
場合はいくつかあり、次にどの命令を復号するのが正し
いかは明らかではない。このような状況の1例は、分岐
に出会った場合である。分岐が取られたかどうかを実行
論理回路54が判定するまで、実行されるべき次の命令
が、記憶装置内の順序が次の命令であるのか、それとも
目標アドレスでの命令なのかは確かにはわからない。
【0047】浪費時間を避けるために、復号/Iレジス
タ制御回路34は、その分岐がどちらの方向に行くかに
ついて推測をする。この推測を行うための好ましい機構
は、これは本発明には必要ないけれども、通常の分岐履
歴テーブル(CPUの以前の動作について記録されたデ
ータに基づいて分岐方向の推測を行う装置)である。命
令の単純な検査に基づいて推測を行うための装置のよう
な他の機構は、分岐履歴テーブルで代用されることもで
きる。順次命令の続行が決定された場合、復号/Iレジ
スタ制御回路34は、ゲート論理回路32からの命令を
Iレジスタ33にゲートし、それらの命令を処理し続け
る。
タ制御回路34は、その分岐がどちらの方向に行くかに
ついて推測をする。この推測を行うための好ましい機構
は、これは本発明には必要ないけれども、通常の分岐履
歴テーブル(CPUの以前の動作について記録されたデ
ータに基づいて分岐方向の推測を行う装置)である。命
令の単純な検査に基づいて推測を行うための装置のよう
な他の機構は、分岐履歴テーブルで代用されることもで
きる。順次命令の続行が決定された場合、復号/Iレジ
スタ制御回路34は、ゲート論理回路32からの命令を
Iレジスタ33にゲートし、それらの命令を処理し続け
る。
【0048】分岐の目標アドレスでの命令の処理が決定
された場合、復号/Iレジスタ制御回路34は、Iバッ
ファ制御回路24に通知して、Iバッファをクリアし、
今度は目標アドレスから再度命令取出しを開始する。こ
れが生じると、分岐以外のこれらのすべての命令は条件
付きと考えられる。すなわち、分岐の結果に応じて、命
令は実際に実行を終了することもあり、命令を取り消す
ことが必要となることもある。これを制御するために、
信号58によって復号/Iレジスタ制御回路34が通信
するいくつかの条件付き経路制御回路(図4の55)が
ある。条件付き経路制御回路55は後で詳述されるが、
ここでは、この制御回路55は多数の未解決分岐を通る
多数の条件付き経路の存在を許すタイプのものであるこ
とが好ましい。
された場合、復号/Iレジスタ制御回路34は、Iバッ
ファ制御回路24に通知して、Iバッファをクリアし、
今度は目標アドレスから再度命令取出しを開始する。こ
れが生じると、分岐以外のこれらのすべての命令は条件
付きと考えられる。すなわち、分岐の結果に応じて、命
令は実際に実行を終了することもあり、命令を取り消す
ことが必要となることもある。これを制御するために、
信号58によって復号/Iレジスタ制御回路34が通信
するいくつかの条件付き経路制御回路(図4の55)が
ある。条件付き経路制御回路55は後で詳述されるが、
ここでは、この制御回路55は多数の未解決分岐を通る
多数の条件付き経路の存在を許すタイプのものであるこ
とが好ましい。
【0049】本発明は、(従来技術で公知の多数のタイ
プのうちの)分岐用、異なる動作、直列化命令用に設計
された条件付き経路機構を使用すると好都合である。分
岐に共通する直列化命令の役割は、どの命令が次に実行
されるべきかについて不確実であることである。分岐の
場合には、この不確実性は、次の命令をどこから取り出
すべきかが確実にはわからないことからくる。直列化命
令の場合には、命令がどこから取り出されるかははっき
りしているが、直列化点に達する前に他のいずれかのプ
ロセッサが命令を変更するかどうかがわからない。
プのうちの)分岐用、異なる動作、直列化命令用に設計
された条件付き経路機構を使用すると好都合である。分
岐に共通する直列化命令の役割は、どの命令が次に実行
されるべきかについて不確実であることである。分岐の
場合には、この不確実性は、次の命令をどこから取り出
すべきかが確実にはわからないことからくる。直列化命
令の場合には、命令がどこから取り出されるかははっき
りしているが、直列化点に達する前に他のいずれかのプ
ロセッサが命令を変更するかどうかがわからない。
【0050】直列化点を通る命令を処理するためには、
命令に変更があった場合にそれらの命令を取り消すこと
ができる必要がある。これは丁度、分岐が推測した方向
に行かないとき命令を取り消さなければならないのと同
じである。直列化命令が復号化されたとき、復号/Iレ
ジスタ制御回路34は、信号セット59によって1組の
直列化制御回路(図4の56)と通信し、その命令を処
理するために制御回路を初期設定する。どちらも命令を
復号するプロセスの一部である。新しい直列化命令に出
会ったとき直列化命令がすでに処理されつつある(がま
だ完了していない)場合には、直列化制御回路56から
の信号は、復号/Iレジスタ制御回路34が新しい直列
化命令を復号するのを防止する。さらに、直列化命令が
復号されると、復号/Iレジスタ制御回路34は条件付
き経路を開始するために条件付き経路制御回路(図4の
55)と通信する。
命令に変更があった場合にそれらの命令を取り消すこと
ができる必要がある。これは丁度、分岐が推測した方向
に行かないとき命令を取り消さなければならないのと同
じである。直列化命令が復号化されたとき、復号/Iレ
ジスタ制御回路34は、信号セット59によって1組の
直列化制御回路(図4の56)と通信し、その命令を処
理するために制御回路を初期設定する。どちらも命令を
復号するプロセスの一部である。新しい直列化命令に出
会ったとき直列化命令がすでに処理されつつある(がま
だ完了していない)場合には、直列化制御回路56から
の信号は、復号/Iレジスタ制御回路34が新しい直列
化命令を復号するのを防止する。さらに、直列化命令が
復号されると、復号/Iレジスタ制御回路34は条件付
き経路を開始するために条件付き経路制御回路(図4の
55)と通信する。
【0051】図3は、命令キャッシュを示す。このキャ
ッシュは、2つのアレイ、すなわちデータアレイ41と
アドレスアレイ42を含む。このデータアレイ41は、
主記憶装置からのデータの行を含み、データアレイ内の
各行43ごとに、アドレスアレイ42は、主記憶装置内
のどこからその行が来たかを識別するアドレス44、及
びその行の状況を記録するための制御ビットを含む。I
キャッシュ制御回路47は、アレイ41、42との間で
のデータの移動、及びそれらのアレイ内でのデータの配
置を制御する。このIキャッシュ制御回路47は、信号
線セット25を使って、Iバッファ制御回路(図2の2
4)と通信する。この信号25は、記憶装置の取り出さ
れる必要のある記憶位置のアドレス、それらの取出しが
どのように処理されているか、及びいつデータが返され
るかに関する情報を提供する。データは、Iキャッシュ
からバス22を介してデータアレイ41から命令バッフ
ァ(図2の19、20)へ送られる。
ッシュは、2つのアレイ、すなわちデータアレイ41と
アドレスアレイ42を含む。このデータアレイ41は、
主記憶装置からのデータの行を含み、データアレイ内の
各行43ごとに、アドレスアレイ42は、主記憶装置内
のどこからその行が来たかを識別するアドレス44、及
びその行の状況を記録するための制御ビットを含む。I
キャッシュ制御回路47は、アレイ41、42との間で
のデータの移動、及びそれらのアレイ内でのデータの配
置を制御する。このIキャッシュ制御回路47は、信号
線セット25を使って、Iバッファ制御回路(図2の2
4)と通信する。この信号25は、記憶装置の取り出さ
れる必要のある記憶位置のアドレス、それらの取出しが
どのように処理されているか、及びいつデータが返され
るかに関する情報を提供する。データは、Iキャッシュ
からバス22を介してデータアレイ41から命令バッフ
ァ(図2の19、20)へ送られる。
【0052】データを主記憶装置から命令キャッシュに
移動する必要があると、命令キャッシュは、CPUとシ
ステム制御要素(図1の6)間の信号9のいくつかを使
用してシステム制御要素6と通信する。これらの信号9
には、Iキャッシュ制御回路47との間でやり取りされ
てシステムの2つの部分の動作を調整する制御信号及び
データの実際の返送のためにデータアレイ41に送られ
るデータ信号が含まれる。データ行が命令キャッシュに
移動されると、Iキャッシュ制御回路47はまた信号4
6によってアドレスアレイ42と通信して、キャッシュ
のどこにその行が配置されるべきかを決定し、その存在
を記録し、かつ信号45によってデータアレイ41と通
信して、このデータはデータアレイ内の正しい場所に確
実に配置されるようにする。
移動する必要があると、命令キャッシュは、CPUとシ
ステム制御要素(図1の6)間の信号9のいくつかを使
用してシステム制御要素6と通信する。これらの信号9
には、Iキャッシュ制御回路47との間でやり取りされ
てシステムの2つの部分の動作を調整する制御信号及び
データの実際の返送のためにデータアレイ41に送られ
るデータ信号が含まれる。データ行が命令キャッシュに
移動されると、Iキャッシュ制御回路47はまた信号4
6によってアドレスアレイ42と通信して、キャッシュ
のどこにその行が配置されるべきかを決定し、その存在
を記録し、かつ信号45によってデータアレイ41と通
信して、このデータはデータアレイ内の正しい場所に確
実に配置されるようにする。
【0053】システム制御要素6からの信号9のうちに
は、いつシステムの他のプロセッサが主記憶装置の特定
の行の排他的制御を必要とするか、またはこのCPUが
排他的制御を有しないことを確定するためにいつそれが
非排他的制限を必要とするかを指示する信号がある。こ
れらの信号は、命令キャッシュに関連する相互照会制御
回路48に送られる。これらの制御回路は、このような
信号を受け取ると、その行が命令キャッシュにあるかど
うか、およびそれを除去する必要があるかどうかを決定
する。これを実行するために、これらの制御回路は、ア
ドレスアレイ42と通信するための信号49、及びIキ
ャッシュ制御回路47と通信するための他の信号50を
有する。
は、いつシステムの他のプロセッサが主記憶装置の特定
の行の排他的制御を必要とするか、またはこのCPUが
排他的制御を有しないことを確定するためにいつそれが
非排他的制限を必要とするかを指示する信号がある。こ
れらの信号は、命令キャッシュに関連する相互照会制御
回路48に送られる。これらの制御回路は、このような
信号を受け取ると、その行が命令キャッシュにあるかど
うか、およびそれを除去する必要があるかどうかを決定
する。これを実行するために、これらの制御回路は、ア
ドレスアレイ42と通信するための信号49、及びIキ
ャッシュ制御回路47と通信するための他の信号50を
有する。
【0054】命令キャッシュについての前述の説明は、
従来技術では公知である。新しいもの及び本発明の好ま
しい実施例によって追加されるものは、通常のキャッシ
ュ動作の結果としてそれらの制御回路がキャッシュから
の行を除去するときにIキャッシュ制御回路47から送
られる信号51、及びそれらの制御回路がキャッシュか
らの行を除去するときに相互照会制御回路48から送ら
れる信号52である。これらの2つの信号51、52
は、論理OR回路53によってORされて、信号40を
発生する。この信号40は、行が何らかの理由で命令キ
ャッシュから除去されるときには必ず送られる。
従来技術では公知である。新しいもの及び本発明の好ま
しい実施例によって追加されるものは、通常のキャッシ
ュ動作の結果としてそれらの制御回路がキャッシュから
の行を除去するときにIキャッシュ制御回路47から送
られる信号51、及びそれらの制御回路がキャッシュか
らの行を除去するときに相互照会制御回路48から送ら
れる信号52である。これらの2つの信号51、52
は、論理OR回路53によってORされて、信号40を
発生する。この信号40は、行が何らかの理由で命令キ
ャッシュから除去されるときには必ず送られる。
【0055】本発明の好ましい実施例で提供される他の
特徴は、記憶待ち行列(図5の64)から相互照会制御
回路48に送られる信号87、及び相互照会制御回路4
8によって発生される信号88である。入力信号87
は、取出し待ち行列65が直列化動作より前のすべての
要求及び直列化動作に関連するすべての要求を完了した
こと、及び記憶待ち行列兼バッファ(図5の64)内の
保留中のすべての記憶動作が処理されたことを示す。こ
れは、アーキテクチャがその後の取出しの開始を許す点
に、CPUが達したことを意味する。しかしながら、こ
の点以前に来た相互照会要求が処理されるまで、CPU
は通常の動作に戻ることはできない。したがって、信号
87は、相互照会制御回路48に到着し、その後以前の
相互照会動作が保留中でないと、相互照会制御回路48
は、通常の動作が再開されることをCPUの残りの部分
に通知する他の信号88を発生する。
特徴は、記憶待ち行列(図5の64)から相互照会制御
回路48に送られる信号87、及び相互照会制御回路4
8によって発生される信号88である。入力信号87
は、取出し待ち行列65が直列化動作より前のすべての
要求及び直列化動作に関連するすべての要求を完了した
こと、及び記憶待ち行列兼バッファ(図5の64)内の
保留中のすべての記憶動作が処理されたことを示す。こ
れは、アーキテクチャがその後の取出しの開始を許す点
に、CPUが達したことを意味する。しかしながら、こ
の点以前に来た相互照会要求が処理されるまで、CPU
は通常の動作に戻ることはできない。したがって、信号
87は、相互照会制御回路48に到着し、その後以前の
相互照会動作が保留中でないと、相互照会制御回路48
は、通常の動作が再開されることをCPUの残りの部分
に通知する他の信号88を発生する。
【0056】図4は、CPUの主要な実行論理回路5
4、条件付き経路制御回路55、及び直列化制御回路5
6を示す。この実行論理回路54は、命令が要求する結
果を生ずるのに必要なすべての論理回路を含み、汎用レ
ジスタ、浮動小数点レジスタ、制御レジスタ、及びシス
テム/370アーキテクチャを実施するプロセッサ内の
プログラム状況ワードのようなプロセッサの状況を保持
するのに必要なレジスタのほとんどまたはすべてを含
む。その主要なインターフェースは、信号セット57に
よって復号/Iレジスタ制御回路(図2の34)から命
令を受け取ること、及び1組の信号68を介して取り出
し待ち行列(図5の65)と通信し、信号セット69に
よって記憶待ち行列・バッファ(図5の64)と通信す
ることによって、取出し要求及び記憶要求を出すことで
ある。
4、条件付き経路制御回路55、及び直列化制御回路5
6を示す。この実行論理回路54は、命令が要求する結
果を生ずるのに必要なすべての論理回路を含み、汎用レ
ジスタ、浮動小数点レジスタ、制御レジスタ、及びシス
テム/370アーキテクチャを実施するプロセッサ内の
プログラム状況ワードのようなプロセッサの状況を保持
するのに必要なレジスタのほとんどまたはすべてを含
む。その主要なインターフェースは、信号セット57に
よって復号/Iレジスタ制御回路(図2の34)から命
令を受け取ること、及び1組の信号68を介して取り出
し待ち行列(図5の65)と通信し、信号セット69に
よって記憶待ち行列・バッファ(図5の64)と通信す
ることによって、取出し要求及び記憶要求を出すことで
ある。
【0057】実行論理回路54の作動方法は、多くの異
なる形をとることができ、本発明でも使用可能である。
それにもかかわらず、条件付き命令経路を処理できる能
力が必要である。好ましい実施例では、実行論理回路
は、異なる動作を同時に、かつこれらの動作がプログラ
ムによって要求される順序とは恐らく異なる順序で実行
する複数の実行要素を含むタイプのものである。このよ
うな実行論理回路の例は、米国特許第4901233号
に記載されている。
なる形をとることができ、本発明でも使用可能である。
それにもかかわらず、条件付き命令経路を処理できる能
力が必要である。好ましい実施例では、実行論理回路
は、異なる動作を同時に、かつこれらの動作がプログラ
ムによって要求される順序とは恐らく異なる順序で実行
する複数の実行要素を含むタイプのものである。このよ
うな実行論理回路の例は、米国特許第4901233号
に記載されている。
【0058】条件付き経路制御回路55も、各種の異な
る形式をとることができ、実行論理回路54の構造、及
びプロセッサの残りの部分の構造に応じて、特定の形式
が選択される。使用されることができる構造の従来技術
はいくつかある。IBMシステム/360モデル91の
CPUは、複数の実行要素を有し、命令を論理的順序外
れで実行することができた。このプロセッサでは、分岐
が解決される前に、条件付き分岐以外の命令は復号さ
れ、実行要素に送ることができた。このような命令に関
連するすべての活動は、それらの命令を条件付きと識別
する条件ビットをもっていた。分岐が推測された方向に
行かなかった場合、条件付きとタグ付けされたすべての
動作が打ち切られる。このCPUは、復号が単一の未解
決の分岐を越えて進むことを許すだけであった。
る形式をとることができ、実行論理回路54の構造、及
びプロセッサの残りの部分の構造に応じて、特定の形式
が選択される。使用されることができる構造の従来技術
はいくつかある。IBMシステム/360モデル91の
CPUは、複数の実行要素を有し、命令を論理的順序外
れで実行することができた。このプロセッサでは、分岐
が解決される前に、条件付き分岐以外の命令は復号さ
れ、実行要素に送ることができた。このような命令に関
連するすべての活動は、それらの命令を条件付きと識別
する条件ビットをもっていた。分岐が推測された方向に
行かなかった場合、条件付きとタグ付けされたすべての
動作が打ち切られる。このCPUは、復号が単一の未解
決の分岐を越えて進むことを許すだけであった。
【0059】IBMシステム/360モデル85のCP
Uは、すべての命令を論理的順序で実行し、ただ1つの
条件付き分岐以外の命令が復号されることを許した。す
べての命令は順次実行されたので、分岐が実行され(か
つその方向が解決され)ると、CPUの命令のすべて
は、分岐以外のものであり、したがって条件付きであっ
た。したがって、分岐推測が間違っていた場合、プロセ
ッサ内で進行していたすべての動作は放棄される必要が
あった。すなわち、モデル91とは違って、プロセッサ
の順次的実行は暗示されるので、動作を条件付きとして
明示的にタグ付けする必要はなかった。
Uは、すべての命令を論理的順序で実行し、ただ1つの
条件付き分岐以外の命令が復号されることを許した。す
べての命令は順次実行されたので、分岐が実行され(か
つその方向が解決され)ると、CPUの命令のすべて
は、分岐以外のものであり、したがって条件付きであっ
た。したがって、分岐推測が間違っていた場合、プロセ
ッサ内で進行していたすべての動作は放棄される必要が
あった。すなわち、モデル91とは違って、プロセッサ
の順次的実行は暗示されるので、動作を条件付きとして
明示的にタグ付けする必要はなかった。
【0060】IBM3033のCPUはモデル85と同
様にすべての命令をその論理的順序で実行したが、2つ
の条件分岐以外の命令が復号されることを許した。モデ
ル85と同様に、分岐が実行され(その方向が解決さ
れ)ると、進行中のままの動作のすべては論理的に分岐
より後のものであり、したがって分岐に対する条件であ
ったので、命令を条件付きとして明示的にタグ付けする
必要はなかった。
様にすべての命令をその論理的順序で実行したが、2つ
の条件分岐以外の命令が復号されることを許した。モデ
ル85と同様に、分岐が実行され(その方向が解決さ
れ)ると、進行中のままの動作のすべては論理的に分岐
より後のものであり、したがって分岐に対する条件であ
ったので、命令を条件付きとして明示的にタグ付けする
必要はなかった。
【0061】米国特許第4901233号は、CPU内
で間違って推測された分岐の後で正確な回復を行うため
の機構を記述している。この機構は、命令を順序外れで
実行させることができ、それらの命令の実行を、最終結
果を計算してそれを内部レジスタ内のその最終位置に配
置する点まで進行させることができ、任意の数の未解決
分岐を通過して実行を進めることができる。
で間違って推測された分岐の後で正確な回復を行うため
の機構を記述している。この機構は、命令を順序外れで
実行させることができ、それらの命令の実行を、最終結
果を計算してそれを内部レジスタ内のその最終位置に配
置する点まで進行させることができ、任意の数の未解決
分岐を通過して実行を進めることができる。
【0062】未解決の分岐または直列化命令が復号され
るごとに、条件付き経路制御回路55は、復号/Iレジ
スタ制御回路(図2の34)からその旨の通知を受け、
条件付き経路と呼ばれる新しい1組の制御回路を起動し
て、その経路に沿って命令を制御する。条件付き経路制
御回路55は、1つまたは複数の条件付き経路を提供
し、それらがすべて使用中のとき、条件付き経路制御回
路55は、このような命令をもう復号しないように、復
号/Iレジスタ制御回路(図2の34)に通知する。
るごとに、条件付き経路制御回路55は、復号/Iレジ
スタ制御回路(図2の34)からその旨の通知を受け、
条件付き経路と呼ばれる新しい1組の制御回路を起動し
て、その経路に沿って命令を制御する。条件付き経路制
御回路55は、1つまたは複数の条件付き経路を提供
し、それらがすべて使用中のとき、条件付き経路制御回
路55は、このような命令をもう復号しないように、復
号/Iレジスタ制御回路(図2の34)に通知する。
【0063】各条件付き経路用の制御回路は、必要な入
力を受け取って、その経路をオンにされるようにした命
令が正しく推測されたか否かがいつ判定されるかを決定
する。この判定が行われると、条件付き経路は、推測が
正しいかまたは間違っているかをCPUのすべての必要
な部分に通知する。この通知は、復号/Iレジスタ制御
回路34への信号58、実行論理回路54への信号6
1、直列化論理回路56への信号71、記憶待ち行列兼
バッファ(図5の64)への信号62、及び取出し待ち
行列(図5の65)への信号63内に含まれる。
力を受け取って、その経路をオンにされるようにした命
令が正しく推測されたか否かがいつ判定されるかを決定
する。この判定が行われると、条件付き経路は、推測が
正しいかまたは間違っているかをCPUのすべての必要
な部分に通知する。この通知は、復号/Iレジスタ制御
回路34への信号58、実行論理回路54への信号6
1、直列化論理回路56への信号71、記憶待ち行列兼
バッファ(図5の64)への信号62、及び取出し待ち
行列(図5の65)への信号63内に含まれる。
【0064】これらの信号を受け取った後、CPUの様
々な部分はその動作を調整するために必要なステップを
とる。すなわち、推測が正しかった場合、その条件付き
経路の一部分であった動作はもはや条件付きとは見なさ
れず(その経路の一部分として条件付きと見なされなく
ても、別の条件付き経路の一部分であることもある)、
推測が間違っていた場合、動作は取り消される。条件付
き経路に沿って動作を実行するCPUのすべての部分内
の論理回路は、これらの動作を実行できるように設計さ
れている。この論理回路については後で詳述し、米国特
許第4901233号に記述されている。この参考文献
の諸要素は図4及び図5に示されている。ここで、AB
Cフィールド66、70は、実行論理回路54、記憶待
ち行列64、及び取出し待ち行列65内の制御回路の一
部分として示されており、また復号レジスタ割当てリス
ト(DRAL)及びバックアップ・レジスタ割当てリス
ト(BRAL)67は実行論理回路54に示されてい
る。条件付き経路が解決された後、条件付き経路制御回
路55のそのための制御回路がリセットされ、他の条件
付き命令はその条件付き経路を使用できるようになる。
々な部分はその動作を調整するために必要なステップを
とる。すなわち、推測が正しかった場合、その条件付き
経路の一部分であった動作はもはや条件付きとは見なさ
れず(その経路の一部分として条件付きと見なされなく
ても、別の条件付き経路の一部分であることもある)、
推測が間違っていた場合、動作は取り消される。条件付
き経路に沿って動作を実行するCPUのすべての部分内
の論理回路は、これらの動作を実行できるように設計さ
れている。この論理回路については後で詳述し、米国特
許第4901233号に記述されている。この参考文献
の諸要素は図4及び図5に示されている。ここで、AB
Cフィールド66、70は、実行論理回路54、記憶待
ち行列64、及び取出し待ち行列65内の制御回路の一
部分として示されており、また復号レジスタ割当てリス
ト(DRAL)及びバックアップ・レジスタ割当てリス
ト(BRAL)67は実行論理回路54に示されてい
る。条件付き経路が解決された後、条件付き経路制御回
路55のそのための制御回路がリセットされ、他の条件
付き命令はその条件付き経路を使用できるようになる。
【0065】次に図10を参照すると、要素66、6
7、70を備える回復機構の詳細な構造が示されてい
る。復号レジスタ割当てリスト(DRAL)100は、
入出力状況線及び制御線に接続されている。論理ユニッ
ト101も、DRALの内容を監視し制御するため、入
出力状況線及び制御線に接続されている。アーキテクチ
ャ設計の論理レジスタの割当て(たとえば命令内部で名
付けられたGPR)を物理レジスタの割当てに変換する
命令が復号されるときにこのDRALが使用される。D
RALは、各論理レジスタごとに1つの位置を含み、こ
の位置はその論理レジスタの値を受け取るための最近に
割り当てられた物理レジスタの番号を含む。
7、70を備える回復機構の詳細な構造が示されてい
る。復号レジスタ割当てリスト(DRAL)100は、
入出力状況線及び制御線に接続されている。論理ユニッ
ト101も、DRALの内容を監視し制御するため、入
出力状況線及び制御線に接続されている。アーキテクチ
ャ設計の論理レジスタの割当て(たとえば命令内部で名
付けられたGPR)を物理レジスタの割当てに変換する
命令が復号されるときにこのDRALが使用される。D
RALは、各論理レジスタごとに1つの位置を含み、こ
の位置はその論理レジスタの値を受け取るための最近に
割り当てられた物理レジスタの番号を含む。
【0066】各命令が復号されると、DRAL内でその
命令を参照する論理レジスタを調べて、どの物理レジス
タが論理レジスタに割り当てられたかを決定し、新しい
物理レジスタが結果を受け取るように割り当てられる
と、このDRALはこれらの割当てを反映するように更
新される。このようにして、物理レジスタを使用する各
命令は、その論理レジスタを参照するために最近の命令
に割り当てられた物理レジスタを見つけるようにDRA
Lによって指令される。
命令を参照する論理レジスタを調べて、どの物理レジス
タが論理レジスタに割り当てられたかを決定し、新しい
物理レジスタが結果を受け取るように割り当てられる
と、このDRALはこれらの割当てを反映するように更
新される。このようにして、物理レジスタを使用する各
命令は、その論理レジスタを参照するために最近の命令
に割り当てられた物理レジスタを見つけるようにDRA
Lによって指令される。
【0067】バックアップレジスタ割当てリスト10
2、104、106は、特定の動作点でDRAL100
の全内容を受け取るように接続されている。システムに
は通常各DRALに対応するBRALが少なくとも1つ
ある。1つ、2つ、または3つのBRALの使用によっ
て、待ち時間なしで、それぞれ1つ、2つ、または3つ
の条件付き経路の処理が可能である。本発明によれば、
条件付き経路は、条件付き分岐命令または直列化命令の
復号によって作成されることができる。各BRALは、
DRALと同じ構造を有し、1サイクルでDRALの全
内容がBRALにまたはその逆にコピーされるように、
DRALに接続されている。これらの転送は、論理ユニ
ット101によって制御される。BRALは、たとえ
ば、Iキャッシュから行が除去される行のために直列化
命令を越えて条件付きで実行される命令が完了できない
場合に、DRALの内容をセーブするために、復号器が
直列化命令に出会ったとき使用される。
2、104、106は、特定の動作点でDRAL100
の全内容を受け取るように接続されている。システムに
は通常各DRALに対応するBRALが少なくとも1つ
ある。1つ、2つ、または3つのBRALの使用によっ
て、待ち時間なしで、それぞれ1つ、2つ、または3つ
の条件付き経路の処理が可能である。本発明によれば、
条件付き経路は、条件付き分岐命令または直列化命令の
復号によって作成されることができる。各BRALは、
DRALと同じ構造を有し、1サイクルでDRALの全
内容がBRALにまたはその逆にコピーされるように、
DRALに接続されている。これらの転送は、論理ユニ
ット101によって制御される。BRALは、たとえ
ば、Iキャッシュから行が除去される行のために直列化
命令を越えて条件付きで実行される命令が完了できない
場合に、DRALの内容をセーブするために、復号器が
直列化命令に出会ったとき使用される。
【0068】条件付き経路を作成する必要は、直列化命
令または条件付き分岐命令のいずれかの復号によって生
じることができる。これらの2つの命令タイプは、一括
して「条件付き経路生成命令」と称される。しかしなが
ら、直列化命令と条件付き分岐命令の1つの相違点は、
直列化命令が復号された後は、最初に復号された直列化
命令が実行を完了するまで、以後の直列化命令の復号が
阻止されることである。したがって、所定の任意の時点
で、直列化命令の復号によってただ1つの条件付き経路
しか付勢されることができない。しかしながら、条件付
き分岐命令は、これらの復号に関してこのような制限が
ない。したがって、所定の任意の時点で、複数の条件付
き分岐命令の復号によって、または1つないし複数の条
件付き分岐命令と組み合わさった直列化命令の復号によ
って生じた複数の条件付き経路が付勢されることができ
る。
令または条件付き分岐命令のいずれかの復号によって生
じることができる。これらの2つの命令タイプは、一括
して「条件付き経路生成命令」と称される。しかしなが
ら、直列化命令と条件付き分岐命令の1つの相違点は、
直列化命令が復号された後は、最初に復号された直列化
命令が実行を完了するまで、以後の直列化命令の復号が
阻止されることである。したがって、所定の任意の時点
で、直列化命令の復号によってただ1つの条件付き経路
しか付勢されることができない。しかしながら、条件付
き分岐命令は、これらの復号に関してこのような制限が
ない。したがって、所定の任意の時点で、複数の条件付
き分岐命令の復号によって、または1つないし複数の条
件付き分岐命令と組み合わさった直列化命令の復号によ
って生じた複数の条件付き経路が付勢されることができ
る。
【0069】各DRALごとにただ1つのBRALが設
けられている場合、通常、ただ1つの条件付き経路生成
命令を通り過ぎて復号することが可能である。しかしな
がら、第1及び第2の分岐命令が復号され、論理レジス
タを変更する介入命令なしで、第2の分岐命令に復号器
が出会うという特別の場合には、その第2の分岐命令を
通り過ぎて復号することが可能である。同一DRALの
内容はBRALの両方の直列化命令のためにセーブされ
るため、またその命令を過ぎて復号することが可能であ
る。
けられている場合、通常、ただ1つの条件付き経路生成
命令を通り過ぎて復号することが可能である。しかしな
がら、第1及び第2の分岐命令が復号され、論理レジス
タを変更する介入命令なしで、第2の分岐命令に復号器
が出会うという特別の場合には、その第2の分岐命令を
通り過ぎて復号することが可能である。同一DRALの
内容はBRALの両方の直列化命令のためにセーブされ
るため、またその命令を過ぎて復号することが可能であ
る。
【0070】アレイ制御リスト(ACL)110は、状
況情報を受け取り、物理レジスタ及びコンピュータ・シ
ステムの残りの部分から制御情報を送るように接続され
ている。この論理ユニット101は、ACL110の内
容を制御し、ACLとDRALの動作を調整する。論理
レジスタを支援する各物理レジスタごとに、その物理レ
ジスタに関連する状況情報を記憶するACLレジスタが
ある。このACLは、各物理レジスタごとに1つのエン
トリを含み、この実施例では、各エントリは14ビット
から構成され、図11に示すように5つのフィールド、
すなわちCTL、ABC、IID、PRV、REGに分
割されている。このCTLは、対応する物理レジスタの
全体的状況を規定する制御フィールドである。CTLは
次の値を有する。
況情報を受け取り、物理レジスタ及びコンピュータ・シ
ステムの残りの部分から制御情報を送るように接続され
ている。この論理ユニット101は、ACL110の内
容を制御し、ACLとDRALの動作を調整する。論理
レジスタを支援する各物理レジスタごとに、その物理レ
ジスタに関連する状況情報を記憶するACLレジスタが
ある。このACLは、各物理レジスタごとに1つのエン
トリを含み、この実施例では、各エントリは14ビット
から構成され、図11に示すように5つのフィールド、
すなわちCTL、ABC、IID、PRV、REGに分
割されている。このCTLは、対応する物理レジスタの
全体的状況を規定する制御フィールドである。CTLは
次の値を有する。
【0071】00:使用可能−物理レジスタは使用され
ておらず、必要な場合、それを割り当てることができ
る。CTL=“00”のとき、ABC、IID、PR
V、REGの各フィールドは意味をもたない。
ておらず、必要な場合、それを割り当てることができ
る。CTL=“00”のとき、ABC、IID、PR
V、REGの各フィールドは意味をもたない。
【0072】01:割当済み−物理レジスタが、REG
フィールドで指定される論理レジスタに割り当てられ
る。完了された現在の命令で割込みが行われた場合、こ
れはその論理レジスタに対応する物理レジスタである。
所定の任意の瞬間にただ1つの物理レジスタが各論理レ
ジスタに割り当てられる。CTL=“01”のとき、A
BCフィールドは“000”であり、IIDフィールド
及びPRVフィールドは意味をもたない。
フィールドで指定される論理レジスタに割り当てられ
る。完了された現在の命令で割込みが行われた場合、こ
れはその論理レジスタに対応する物理レジスタである。
所定の任意の瞬間にただ1つの物理レジスタが各論理レ
ジスタに割り当てられる。CTL=“01”のとき、A
BCフィールドは“000”であり、IIDフィールド
及びPRVフィールドは意味をもたない。
【0073】10:保留中かつ未ロード−物理レジスタ
がまだ実行を完了していない命令の結果を受け取るよう
に割り当てられており、したがってこれまでにその命令
はその結果をこの物理レジスタにロードしていない。I
IDフィールドは、この物理レジスタが結果を受け取る
命令に割り当てられた命令識別番号である。この命令が
条件付きで出された場合、ABCフィールドは非ゼロで
あり、さもなければ“000”である。ほとんどの場
合、REGフィールドはこの物理レジスタが結果を受け
取る論理レジスタの番号であり、PRVフィールドはそ
の論理レジスタの古い値を保持する物理レジスタの番号
である。論理レジスタを変更しない比較命令の特別の場
合には、物理レジスタは割り当てられており、REGフ
ィールドは無関係であり、PRVフィールドはこの物理
レジスタの番号を含む。
がまだ実行を完了していない命令の結果を受け取るよう
に割り当てられており、したがってこれまでにその命令
はその結果をこの物理レジスタにロードしていない。I
IDフィールドは、この物理レジスタが結果を受け取る
命令に割り当てられた命令識別番号である。この命令が
条件付きで出された場合、ABCフィールドは非ゼロで
あり、さもなければ“000”である。ほとんどの場
合、REGフィールドはこの物理レジスタが結果を受け
取る論理レジスタの番号であり、PRVフィールドはそ
の論理レジスタの古い値を保持する物理レジスタの番号
である。論理レジスタを変更しない比較命令の特別の場
合には、物理レジスタは割り当てられており、REGフ
ィールドは無関係であり、PRVフィールドはこの物理
レジスタの番号を含む。
【0074】11:保留中かつロード済み−物理レジス
タは、実行をまだ完了していない命令の結果を受け取る
ために割り当てられ、その結果を受け取った。ABC、
IID、PRV、REGの各フィールドは、比較命令に
ついての特別の場合がこの状態では起こらない点を除け
ば、CTL=“10”のときと同じ意味をもつ。
タは、実行をまだ完了していない命令の結果を受け取る
ために割り当てられ、その結果を受け取った。ABC、
IID、PRV、REGの各フィールドは、比較命令に
ついての特別の場合がこの状態では起こらない点を除け
ば、CTL=“10”のときと同じ意味をもつ。
【0075】ABCフィールドは、条件付き分岐命令ま
たは直列化命令を越えて復号される命令に関連する物理
レジスタを識別するために使用される。この情報はII
Dを検査することによっても決定されることができるの
で、本発明を実行させるためにこのようなフィールドを
実施することは必ずしも必要ではない。しかしながら、
この情報を記憶するために専用のフィールドを設ける方
が、IIDのテストを実行することによって周期的間隔
でこの情報を決定するより経済的かつ高速なので、この
実施例では、このフィールドが実施されている。
たは直列化命令を越えて復号される命令に関連する物理
レジスタを識別するために使用される。この情報はII
Dを検査することによっても決定されることができるの
で、本発明を実行させるためにこのようなフィールドを
実施することは必ずしも必要ではない。しかしながら、
この情報を記憶するために専用のフィールドを設ける方
が、IIDのテストを実行することによって周期的間隔
でこの情報を決定するより経済的かつ高速なので、この
実施例では、このフィールドが実施されている。
【0076】3つのBRALが設けられ、最大3つの条
件付き経路が作成できるこの実施例の場合、ABCフィ
ールドは、最初“000”にセットされる3つのビット
を有する。第1の条件付き経路生成命令が復号される
と、第1のBRALにDRALの内容がロードされ、A
BCフィールドが“100”に変化して、BRALのロ
ード、及び完了されない直列化命令の存在を示す。第1
の条件付き経路生成命令が完了する前に第2の条件付き
経路生成命令に出会った場合、第2のBRALにそのと
きのDRALの内容がロードされ、ABCフィールドは
“110”に変化する。最後に、第3の条件付き経路生
成命令が復号され、かつ最初の2つの条件付き経路生成
命令が未解決の場合、第3のBRALはそのときのDR
ALの内容を受け取り、ABCフィールドは“111”
になる。ABCフィールドの各ビットは、BRALが活
動状態であり、未解決の分岐命令または直列化命令に対
する特定のDRALの内容を記憶することを示すため、
独立して特定のBRALと関連づけられる。論理装置1
01は、これらの機能を制御する。
件付き経路が作成できるこの実施例の場合、ABCフィ
ールドは、最初“000”にセットされる3つのビット
を有する。第1の条件付き経路生成命令が復号される
と、第1のBRALにDRALの内容がロードされ、A
BCフィールドが“100”に変化して、BRALのロ
ード、及び完了されない直列化命令の存在を示す。第1
の条件付き経路生成命令が完了する前に第2の条件付き
経路生成命令に出会った場合、第2のBRALにそのと
きのDRALの内容がロードされ、ABCフィールドは
“110”に変化する。最後に、第3の条件付き経路生
成命令が復号され、かつ最初の2つの条件付き経路生成
命令が未解決の場合、第3のBRALはそのときのDR
ALの内容を受け取り、ABCフィールドは“111”
になる。ABCフィールドの各ビットは、BRALが活
動状態であり、未解決の分岐命令または直列化命令に対
する特定のDRALの内容を記憶することを示すため、
独立して特定のBRALと関連づけられる。論理装置1
01は、これらの機能を制御する。
【0077】Iキャッシュから行が除去されずに直列化
命令が完了した場合(または、条件分岐の場合に、推測
された分岐方向が正しいと判断された場合)、割り当て
られたBRALの内容は必要とならず、ABCフィール
ドの当該ビットは0にセットされる。前の例を参照する
と、条件付き経路生成命令は、必ずしも発生順に解決さ
れる必要はない。第1の条件付き経路生成命令が発生し
(ABC=“100”)、次いで第2の条件付き経路生
成命令が発生する場合(ABC=“110”)、第2の
条件付き経路生成命令が最初に完了することがあり、A
BCフィールドは単に“100”にリセットされる。前
の例の場合のように、3つの条件付き経路生成命令が順
に発生し(ABC=“111”)、第2の条件付き経路
生成命令が最初に解決される場合、第2のBRALが使
用可能になり、ABCフィールドは“101”にセット
される。さらに、これは、他の条件付き経路生成命令に
出会った場合にBRALが使用可能であることを意味す
る。ABCフィールドの各ビットは、条件付き経路生成
命令の任意の順での発生及び解決を表す任意の順でセッ
ト及びリセットされることができる。したがって、AB
Cフィールドが“101”である場合、新しい条件付き
経路生成命令に出会い、Bビットがセットされることが
あり、それでABCフィールドが条件付き経路生成命令
の発生の順序を表さなくても、ABCフィールドは“1
11”になる。
命令が完了した場合(または、条件分岐の場合に、推測
された分岐方向が正しいと判断された場合)、割り当て
られたBRALの内容は必要とならず、ABCフィール
ドの当該ビットは0にセットされる。前の例を参照する
と、条件付き経路生成命令は、必ずしも発生順に解決さ
れる必要はない。第1の条件付き経路生成命令が発生し
(ABC=“100”)、次いで第2の条件付き経路生
成命令が発生する場合(ABC=“110”)、第2の
条件付き経路生成命令が最初に完了することがあり、A
BCフィールドは単に“100”にリセットされる。前
の例の場合のように、3つの条件付き経路生成命令が順
に発生し(ABC=“111”)、第2の条件付き経路
生成命令が最初に解決される場合、第2のBRALが使
用可能になり、ABCフィールドは“101”にセット
される。さらに、これは、他の条件付き経路生成命令に
出会った場合にBRALが使用可能であることを意味す
る。ABCフィールドの各ビットは、条件付き経路生成
命令の任意の順での発生及び解決を表す任意の順でセッ
ト及びリセットされることができる。したがって、AB
Cフィールドが“101”である場合、新しい条件付き
経路生成命令に出会い、Bビットがセットされることが
あり、それでABCフィールドが条件付き経路生成命令
の発生の順序を表さなくても、ABCフィールドは“1
11”になる。
【0078】上述の回復機構は前述の実施例でより簡単
な構造を有する機械に使用されているけれども、本発明
は、早期のある機械に存在したようなより単純な条件付
き命令機構と結合して作動することができる。
な構造を有する機械に使用されているけれども、本発明
は、早期のある機械に存在したようなより単純な条件付
き命令機構と結合して作動することができる。
【0079】直列化命令がIレジスタ(図2の33)に
現れると、復号/Iレジスタ制御回路34は直列化制御
回路56に通知し、直列化動作がすでに進行中の場合、
その命令の復号は遅延される。復号が行われると、直列
化制御回路56と条件付き経路制御回路55は共にそれ
を認識し、その命令を制御するために動作を開始する。
条件付き経路制御回路55は、以後の命令のための条件
付き経路を起動する。その結果、必要な場合それらの命
令を取り消して、直列化動作の後の命令に制御を戻すこ
とができるようになる。直列化制御回路56は、SII
C−Iビット38を監視し、直列化命令の後の命令のS
IIC−Iビットがオンであるかどうかを調べる。SI
IC−Iビットがオンでない場合、制御回路56は、通
信信号59の1つを介して、復号/Iレジスタ制御回路
34に、次の命令を復号しないように指示し、その代り
にIバッファ制御回路24にIバッファ19、20、2
1及びIレジスタ33の先取りされた命令をすべてクリ
アしそれらを再取り出しするように通知する。
現れると、復号/Iレジスタ制御回路34は直列化制御
回路56に通知し、直列化動作がすでに進行中の場合、
その命令の復号は遅延される。復号が行われると、直列
化制御回路56と条件付き経路制御回路55は共にそれ
を認識し、その命令を制御するために動作を開始する。
条件付き経路制御回路55は、以後の命令のための条件
付き経路を起動する。その結果、必要な場合それらの命
令を取り消して、直列化動作の後の命令に制御を戻すこ
とができるようになる。直列化制御回路56は、SII
C−Iビット38を監視し、直列化命令の後の命令のS
IIC−Iビットがオンであるかどうかを調べる。SI
IC−Iビットがオンでない場合、制御回路56は、通
信信号59の1つを介して、復号/Iレジスタ制御回路
34に、次の命令を復号しないように指示し、その代り
にIバッファ制御回路24にIバッファ19、20、2
1及びIレジスタ33の先取りされた命令をすべてクリ
アしそれらを再取り出しするように通知する。
【0080】条件付き経路制御回路55は、実行論理回
路54から信号(61の一部分)を受け取る。この信号
は、分岐命令が正しく推測されたか間違って推測された
かを判定するために必要な情報を提供する。また条件付
き経路制御回路55は、CPUの他の部分から、いつ直
列化命令に対する動作を取る必要があるかを判定できる
ようにする2つの信号を受け取る。これらの信号40の
うちの第1のものは、命令キャッシュから来るものであ
り、命令キャッシュから行が除去されたことを示す。こ
の信号については、前述した。この信号40が来たと
き、直列化命令用の条件付き経路は、経路誤り信号を全
プロセッサに伝え、その経路に沿ったすべての命令を取
り消されるように、復号を直列化動作の後の命令のアド
レスに戻させる。これは、条件付き経路が付勢されたま
まであることを除けば、誤って推測された分岐に対して
取られる動作と同じである。これらの信号88のうちの
第2のものは、相互照会制御回路(図3の48)から条
件付き経路制御回路55に来るもので、アーキテクチャ
に従って直列化点を通過して動作を実行することが許さ
れる時点にCPUが達したことを示す。したがって、こ
の信号88は、直列化動作用の条件付き経路に、その経
路が正しいことを通知させ、それによってその経路に沿
った命令の条件付き状況を除去し、他の分岐動作または
直列化動作でその条件付き経路が使用できるようにす
る。これは、正しく推測された分岐について取られる動
作と同じである。また直列化制御回路56は、この信号
88を監視し、この信号が来たとき、それ自体をクリア
して、他の直列化動作が行えることができるようにす
る。
路54から信号(61の一部分)を受け取る。この信号
は、分岐命令が正しく推測されたか間違って推測された
かを判定するために必要な情報を提供する。また条件付
き経路制御回路55は、CPUの他の部分から、いつ直
列化命令に対する動作を取る必要があるかを判定できる
ようにする2つの信号を受け取る。これらの信号40の
うちの第1のものは、命令キャッシュから来るものであ
り、命令キャッシュから行が除去されたことを示す。こ
の信号については、前述した。この信号40が来たと
き、直列化命令用の条件付き経路は、経路誤り信号を全
プロセッサに伝え、その経路に沿ったすべての命令を取
り消されるように、復号を直列化動作の後の命令のアド
レスに戻させる。これは、条件付き経路が付勢されたま
まであることを除けば、誤って推測された分岐に対して
取られる動作と同じである。これらの信号88のうちの
第2のものは、相互照会制御回路(図3の48)から条
件付き経路制御回路55に来るもので、アーキテクチャ
に従って直列化点を通過して動作を実行することが許さ
れる時点にCPUが達したことを示す。したがって、こ
の信号88は、直列化動作用の条件付き経路に、その経
路が正しいことを通知させ、それによってその経路に沿
った命令の条件付き状況を除去し、他の分岐動作または
直列化動作でその条件付き経路が使用できるようにす
る。これは、正しく推測された分岐について取られる動
作と同じである。また直列化制御回路56は、この信号
88を監視し、この信号が来たとき、それ自体をクリア
して、他の直列化動作が行えることができるようにす
る。
【0081】図5は、データキャッシュ73、及びそれ
と関連する2つの機構、すなわち取出し待ち行列65と
記憶待ち行列・バッファ64を示す。取出し待ち行列6
5は、実行論理回路(図4の54)から、ある種の動作
がデータキャッシュ73によって実行されることを要求
する信号68を受け取る。この取出し待ち行列65は、
これらの要求を、それらを実行するのに適切な時点に達
するまで、要求を受け取った順に記録し、次に、要求を
受け取った順序と同じ順序で実行する。条件付き命令に
よって生成された要求が取出し待ち行列65に送られる
ことは可能であるので、取出し待ち行列65は条件付き
経路に関する情報66を含み、条件付き経路制御回路
(図4の55)から信号63を受け取り、動作が間違っ
た条件付き経路に沿って進行した場合にそれらの要求を
取り消すことができる能力を有する。記憶待ち行列64
及び実行論理回路54も、間違った(後で取り消され
る)条件付き経路に沿って進行した結果開始された動作
を取り消すための類似の機構を含む。
と関連する2つの機構、すなわち取出し待ち行列65と
記憶待ち行列・バッファ64を示す。取出し待ち行列6
5は、実行論理回路(図4の54)から、ある種の動作
がデータキャッシュ73によって実行されることを要求
する信号68を受け取る。この取出し待ち行列65は、
これらの要求を、それらを実行するのに適切な時点に達
するまで、要求を受け取った順に記録し、次に、要求を
受け取った順序と同じ順序で実行する。条件付き命令に
よって生成された要求が取出し待ち行列65に送られる
ことは可能であるので、取出し待ち行列65は条件付き
経路に関する情報66を含み、条件付き経路制御回路
(図4の55)から信号63を受け取り、動作が間違っ
た条件付き経路に沿って進行した場合にそれらの要求を
取り消すことができる能力を有する。記憶待ち行列64
及び実行論理回路54も、間違った(後で取り消され
る)条件付き経路に沿って進行した結果開始された動作
を取り消すための類似の機構を含む。
【0082】詳細は示さないけれどもデータキャッシュ
73は、上述の命令キャッシュと同様の構造を有する。
データキャッシュ73は、取出し用または記憶用のオペ
ランドとして最近参照されたデータ行を記憶するのに役
立つ。データキャッシュ73は、取出し待ち行列65か
ら信号75を介して取出し要求を受け取り、データをバ
ス74を介して実行論理回路(図4の54)に戻す。
73は、上述の命令キャッシュと同様の構造を有する。
データキャッシュ73は、取出し用または記憶用のオペ
ランドとして最近参照されたデータ行を記憶するのに役
立つ。データキャッシュ73は、取出し待ち行列65か
ら信号75を介して取出し要求を受け取り、データをバ
ス74を介して実行論理回路(図4の54)に戻す。
【0083】またデータキャッシュ73は、同一の信号
セット75を介して取出し待ち行列65から記憶事前テ
スト要求を受け取る。記憶事前テスト要求は、あるアド
レスに記憶されることを期待して発生し、要求された行
が排他的制御を有するキャッシュにあるかどうか、及び
その行に記憶することに関連した何らかのアクセス例外
があるかどうかを判定するためのものである。その行が
キャッシュになく、またはキャッシュにあるが排他的制
御を有しない場合、データキャッシュ73はその行の排
他的制御を必要とすることをシステム制御要素(図1の
6)に通知する。これによって、前述の相互照会プロセ
スが開始する。記憶事前テストが取出し待ち行列65に
よって処理されると、それに関連する情報はまたいくつ
かの信号76を介して記憶待ち行列・バッファ64に送
られる。
セット75を介して取出し待ち行列65から記憶事前テ
スト要求を受け取る。記憶事前テスト要求は、あるアド
レスに記憶されることを期待して発生し、要求された行
が排他的制御を有するキャッシュにあるかどうか、及び
その行に記憶することに関連した何らかのアクセス例外
があるかどうかを判定するためのものである。その行が
キャッシュになく、またはキャッシュにあるが排他的制
御を有しない場合、データキャッシュ73はその行の排
他的制御を必要とすることをシステム制御要素(図1の
6)に通知する。これによって、前述の相互照会プロセ
スが開始する。記憶事前テストが取出し待ち行列65に
よって処理されると、それに関連する情報はまたいくつ
かの信号76を介して記憶待ち行列・バッファ64に送
られる。
【0084】記憶待ち行列・バッファ64は、記憶され
るべきデータと、主記憶装置(図1の8)で情報が記憶
されているアドレスやその行があるデータキャッシュ7
3の位置などのデータに関する情報を記憶するのに役立
つ。記憶待ち行列・バッファ64は、いくつかの信号6
9を介して実行論理回路54からデータを受け取り、取
出し待ち行列65からデータを記憶するためのアドレス
を受け取る。この情報が受け取られるタイミング関係、
この情報の構造、及びそれが記憶待ち行列・バッファ6
4によってどう処理されるかは、CPUがどのように動
作するかの詳細に依存し、この開示には余り関係がな
い。条件付き命令によって発生されたデータが記憶待ち
行列・バッファ64に送られることが可能であるので、
記憶待ち行列・バッファ64は条件付き経路に関する情
報を含み、条件付き経路制御回路(図4の55)から信
号62を受け取り、動作が間違った条件付き経路に沿っ
て進行した場合に記憶を取り消すことのできる能力を有
する。引用文献に記述されているように、記憶は、関連
する動作が完了に達するまで、すなわち、その動作(及
びそれ以前のすべての動作)が実行されることが確実な
点に達するまで、記憶待ち行列・バッファ64に保持さ
れる。その点で、記憶装置は、いくつかの信号77を用
いてデータキャッシュ73に記憶し、CPUをシステム
制御要素(図1の6)に接続する信号9を介してシステ
ム制御要素6に送るために解放される。
るべきデータと、主記憶装置(図1の8)で情報が記憶
されているアドレスやその行があるデータキャッシュ7
3の位置などのデータに関する情報を記憶するのに役立
つ。記憶待ち行列・バッファ64は、いくつかの信号6
9を介して実行論理回路54からデータを受け取り、取
出し待ち行列65からデータを記憶するためのアドレス
を受け取る。この情報が受け取られるタイミング関係、
この情報の構造、及びそれが記憶待ち行列・バッファ6
4によってどう処理されるかは、CPUがどのように動
作するかの詳細に依存し、この開示には余り関係がな
い。条件付き命令によって発生されたデータが記憶待ち
行列・バッファ64に送られることが可能であるので、
記憶待ち行列・バッファ64は条件付き経路に関する情
報を含み、条件付き経路制御回路(図4の55)から信
号62を受け取り、動作が間違った条件付き経路に沿っ
て進行した場合に記憶を取り消すことのできる能力を有
する。引用文献に記述されているように、記憶は、関連
する動作が完了に達するまで、すなわち、その動作(及
びそれ以前のすべての動作)が実行されることが確実な
点に達するまで、記憶待ち行列・バッファ64に保持さ
れる。その点で、記憶装置は、いくつかの信号77を用
いてデータキャッシュ73に記憶し、CPUをシステム
制御要素(図1の6)に接続する信号9を介してシステ
ム制御要素6に送るために解放される。
【0085】取出し待ち行列65、記憶待ち行列・バッ
ファ64、及びデータキャッシュ73の前記の説明は、
従来公知である。新しいこと及び本発明の好ましい実施
例の一部分として提供されることは、取出し待ち行列6
5が、その実行論理回路54からの信号68の一部分と
して、直列化点がどこにあるかの指示を受け取ることで
ある。大抵の直列化命令の場合、2つの点が識別され
る。第1の点は、直列化命令の要求より前の要求と直列
化命令の要求間にあり、第2の点は、直列化命令の要求
と直列化命令の要求より後の要求間にある。いくつかの
直列化命令は、取出し待ち行列には何の要求もせず、し
たがって単一の直列化点しか有しない。取出し待ち行列
65は、これらの直列化点の1つに達すると、すべての
記憶はデータキャッシュ73に記憶され、システム制御
要素(図1の6)に送られたことを記憶待ち行列・バッ
ファ64が通知する(76の一部分)まで待ち、それか
ら次の要求の処理を再開する。
ファ64、及びデータキャッシュ73の前記の説明は、
従来公知である。新しいこと及び本発明の好ましい実施
例の一部分として提供されることは、取出し待ち行列6
5が、その実行論理回路54からの信号68の一部分と
して、直列化点がどこにあるかの指示を受け取ることで
ある。大抵の直列化命令の場合、2つの点が識別され
る。第1の点は、直列化命令の要求より前の要求と直列
化命令の要求間にあり、第2の点は、直列化命令の要求
と直列化命令の要求より後の要求間にある。いくつかの
直列化命令は、取出し待ち行列には何の要求もせず、し
たがって単一の直列化点しか有しない。取出し待ち行列
65は、これらの直列化点の1つに達すると、すべての
記憶はデータキャッシュ73に記憶され、システム制御
要素(図1の6)に送られたことを記憶待ち行列・バッ
ファ64が通知する(76の一部分)まで待ち、それか
ら次の要求の処理を再開する。
【0086】取出し待ち行列65は、直列化動作に関連
する第2の(またはただ1つの)直列化点に達すると、
記憶待ち行列・バッファ64(76の一部分)に通知す
る。次に、記憶待ち行列・バッファ64は、すべての記
憶の処理を完了すると、そのことを示す信号87を発生
する。この信号87は、相互照会制御回路(図3の4
8)に送られる。上述したように、相互照会制御回路4
8は、保留中の相互照会動作が処理されるまで動作を待
ち、その後で直列化制御回路56及び条件付き経路制御
回路55に送られる信号88を発生する。この信号は、
CPUがアーキテクチャ構成の直列化点を越えて進むこ
とを許されると、その点に達したことをこれらの制御回
路に知らせる。この信号88、その意味、及びその結果
取られる動作については、上述した。
する第2の(またはただ1つの)直列化点に達すると、
記憶待ち行列・バッファ64(76の一部分)に通知す
る。次に、記憶待ち行列・バッファ64は、すべての記
憶の処理を完了すると、そのことを示す信号87を発生
する。この信号87は、相互照会制御回路(図3の4
8)に送られる。上述したように、相互照会制御回路4
8は、保留中の相互照会動作が処理されるまで動作を待
ち、その後で直列化制御回路56及び条件付き経路制御
回路55に送られる信号88を発生する。この信号は、
CPUがアーキテクチャ構成の直列化点を越えて進むこ
とを許されると、その点に達したことをこれらの制御回
路に知らせる。この信号88、その意味、及びその結果
取られる動作については、上述した。
【図1】マルチプロセッサシステムを示す図である。
【図2】CPUの命令緩衝記憶部分、及び命令復号部分
を示す図である。
を示す図である。
【図3】命令キャッシュを示す図である。
【図4】CPUの主要実行論理回路、条件付き経路制御
回路、及び直列化制御回路を示す図である。
回路、及び直列化制御回路を示す図である。
【図5】データキャッシュ、それと関連する2つの機
構、取出し待ち行列、及び記憶待ち行列・バッファを示
す図である。
構、取出し待ち行列、及び記憶待ち行列・バッファを示
す図である。
【図6】本発明の好ましい実施例による命令取出し、及
びSIICビットのセットの流れ図である。
びSIICビットのセットの流れ図である。
【図7】本発明の好ましい実施例による命令復号及びS
IIC監視の流れ図である。
IIC監視の流れ図である。
【図8】本発明の好ましい実施例による命令キャッシュ
監視の流れ図である。
監視の流れ図である。
【図9】本発明の好ましい実施例による、データキャッ
シュ制御回路の動作の流れ図である。
シュ制御回路の動作の流れ図である。
【図10】条件付き経路回復機構を示す図である。
【図11】図10のACLのエントリのフォーマットを
示す図である。
示す図である。
6 システム制御要素 19 命令バッファ(Iバッファ) 20 命令バッファ(Iバッファ) 21 命令バッファ(Iバッファ) 24 Iバッファ制御回路 32 ゲート 33 命令レジスタ(Iレジスタ) 34 復号/Iレジスタ制御回路 36 ソースIバッファ 37 宛先Iバッファ 38 命令レジスタ(Iレジスタ) 41 データアレイ 42 アドレスアレイ 47 Iキャッシュ制御回路 48 相互照会制御回路 54 命令実行論理回路 55 条件付き経路制御回路 56 直列化制御回路 64 記憶待ち行列・バッファ 65 取出し待ち行列
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成4年12月11日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】図面の簡単な説明
【補正方法】変更
【補正内容】
【図面の簡単な説明】
【図1】マルチプロセッサシステムを示す図である。
【図2】CPUの命令緩衝記憶部分、及び命令復号部分
を示す図である。
を示す図である。
【図3】命令キャッシュを示す図である。
【図4】CPUの主要実行論理回路、条件付き経路制御
回路、及び直列化制御回路を示す図である。
回路、及び直列化制御回路を示す図である。
【図5】データキャッシュ、それと関連する2つの機
構、取出し待ち行列、及び記憶待ち行列・バッファを示
す図である。
構、取出し待ち行列、及び記憶待ち行列・バッファを示
す図である。
【図6】本発明の好ましい実施例による命令取出し、及
びSIICビットのセットの流れ図である。
びSIICビットのセットの流れ図である。
【図7】本発明の好ましい実施例による命令復号及びS
IIC監視の流れ図である。
IIC監視の流れ図である。
【図8】本発明の好ましい実施例による命令キャッシュ
監視の流れ図である。
監視の流れ図である。
【図9】本発明の好ましい実施例による、データキャッ
シュ制御回路の動作の流れ図である。
シュ制御回路の動作の流れ図である。
【図10】図10のACLのエントリのフォーマットを
示す図である。
示す図である。
【符号の説明】 6 システム制御要素 19 命令バッファ(Iバッファ) 20 命令バッファ(Iバッファ) 21 命令バッファ(Iバッファ) 24 Iバッファ制御回路 32 ゲート 33 命令レジスタ(Iレジスタ) 34 復号/Iレジスタ制御回路 36 ソースIバッファ 37 宛先Iバッファ 38 命令レジスタ(Iレジスタ) 41 データアレイ 42 アドレスアレイ 47 Iキャッシュ制御回路 48 相互照会制御回路 54 命令実行論理回路 55 条件付き経路制御回路 56 直列化制御回路 64 記憶待ち行列・バッファ 65 取出し待ち行列
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スチーヴン・リプテイ アメリカ合衆国12572、ニューヨーク州ラ インベック、トロイ・ドライブ 1番地 (72)発明者 チャールズ・フランクリン・ウェッブ アメリカ合衆国12603、ニューヨーク州ポ ーキープシー、マイネッティ・ドライブ 4番地
Claims (15)
- 【請求項1】中央処理装置と、 前記中央処理装置に結合され、キャッシュメモリシステ
ムを含むメモリと、 前記メモリに結合され、前記メモリから命令を取り出す
ための取出し手段と、 前記キャッシュメモリシステムのデータの有効性を判定
するための監視手段と、 前記取り出し手段に結合され、直列化命令の復号を検出
するための検出手段を含み命令を復号するための復号手
段と、 前記監視手段及び前記復号手段に結合され、直列化命令
の直後の命令を復号する直前の状態に前記中央処理装置
をリセットし、前記監視手段が、前記キャッシュメモリ
システムのデータの少なくとも1つのサブセットが有効
でないことを指示する場合、前記復号手段による直列化
命令の復号に応答して使用可能にされる条件付き経路手
段とを備えることを特徴とするデータ処理装置。 - 【請求項2】前記復号手段はさらに、前記検出手段が第
1の直列化命令の復号を検出した場合、後続の直列化命
令の復号を禁止するための禁止手段を備えることを特徴
とする請求項1記載のデータ処理装置。 - 【請求項3】さらに、前記復号手段に結合され、データ
取出し要求を前記メモリに待ち行列するための取出し待
ち行列手段と、 前記取出し待ち行列手段に結合され、第1の直列化命令
より前の命令に関連するデータ取出し要求を、第1の直
列化命令に関連するデータ取出し要求より前に実行さ
せ、第1の直列化命令に関連するデータ取出し要求をそ
の直列化命令より後の命令に関連するデータ取出し要求
より前に実行させるための順序化手段とを含むことを特
徴とする請求項2記載の装置。 - 【請求項4】前記キャッシュメモリシステムが命令キャ
ッシュを含み、前記監視手段がデータ行が命令キャッシ
ュから除去されたかどうかを監視するための手段を含む
ことを特徴とする請求項3記載のデータ処理装置。 - 【請求項5】さらに、前記取出し手段及び前記監視手段
に結合され、前記キャッシュメモリシステムのデータの
少なくとも1つのサブセットが有効でないかどうかを示
す標識ビットを記憶するための標識手段を含むことを特
徴とする請求項3記載のデータ処理装置。 - 【請求項6】条件付き経路手段は、 アーキテクチャ構成の論理レジスタセットのための機能
を実行するために、前記中央処理装置の物理レジスタの
サブセットの割当てを記憶するための第1のテーブル
と、 前記第1のテーブルに結合された第2のテーブルと、 前記復号手段に結合され、前記復号手段による直列化命
令の復号に応答して、前記第1のテーブルからの割当て
を前記第2のテーブルにコピーするための第1の手段
と、 前記監視手段に結合され、前記キャッシュメモリシステ
ムの少なくとも1つのデータサブセットが有効でないと
いう前記監視手段による判定に応答して、前記第2のテ
ーブルからの割当てを前記第1のテーブルに戻してコピ
ーするための第2の手段とを備えていることを特徴とす
る請求項5記載のデータ処理装置。 - 【請求項7】中央処理装置に結合されたキャッシュメモ
リのデータの有効性を監視するための監視手段と、 前記監視手段に結合され、前記キャッシュメモリの少な
くとも1つのデータサブセットが有効でないことを前記
監視手段が指示すると、直列化点の直後の状態に前記中
央処理装置を復元するための条件付き経路手段と、 前記条件付き経路手段に結合され、前記中央処理装置に
よる直列化命令の復号に応答して、前記条件付き経路手
段を使用可能にするための直列化手段とを備えているこ
とを特徴とする中央処理装置が直列化点を越えて命令を
処理できるようにするための装置。 - 【請求項8】さらに、前記直列化命令より後の命令スト
リームの実行を開始するための手段を備えていることを
特徴とする請求項7記載の装置。 - 【請求項9】複数の命令を取り出すための取出し手段
と、 前記取出し手段に結合され、前記複数の命令の間に直列
化命令が存在することを検出するための手段を含む命令
を復号するための復号手段と、 前記復号手段に結合され、前記取出し手段によって取り
出された前記複数の命令中の直列化命令より後の少なく
とも1つの命令を条件付きで実行するための条件付き実
行手段とを備えていることを特徴とする直列化点を越え
て命令を処理するための装置。 - 【請求項10】さらに、コンピュータシステムのキャッ
シュメモリのデータの有効性を決定するための監視手段
を含み、条件付き実行手段がさらに、前記監視手段から
の信号に応答して、コンピュータシステムにパイプライ
ンリセットを実行させる手段を備えていることを特徴と
する請求項9記載の装置。 - 【請求項11】中央処理装置のキャッシュメモリのデー
タの有効性を連続的に監視する監視ステップと、 直列化命令を復号する復号ステップと、 前記直列化命令の復号に応答して、前記中央処理装置の
状態を示すデータを記憶する状況記憶ステップと、 前記直列化命令より後の少なくとも1つの命令を取り出
す取出しステップと、 前記取出しステップ後に、前記キャッシュメモリの少な
くとも1つのデータサブセットが有効でないことを前記
監視ステップが示すとき、前記復号ステップの直後の状
態に中央処理装置を復元する状況復元ステップとからな
ることを特徴とする直列化命令を処理するための方法。 - 【請求項12】さらに、前記直列化命令より後の少なく
とも1つの命令の実行を開始するステップを含むことを
特徴とする請求項11記載の方法。 - 【請求項13】前記監視ステップは、キャッシュメモリ
システムから行が除去されているかどうかキャッシュメ
モリシステムを監視するステップを含むことを特徴とす
る請求項12記載の方法。 - 【請求項14】さらに、前記取出しステップによって取
り出された少なくとも1つの命令に対応するビットをセ
ットするステップを含むことを特徴とする請求項13記
載の方法。 - 【請求項15】復号ステップはさらに、前記中央処理装
置のアーキテクチャ構成の論理レジスタに対するデータ
を受け取るために、前記中央処理装置の物理レジスタの
割当てを示すデータを第1のテーブルに記憶するステッ
プを含み、状況記憶ステップは、前記第1のテーブルか
らの第1のデータを第2のテーブルにコピーするステッ
プを含み、復元ステップは、割当てデータを前記第2の
テーブルから前記第1のテーブルに戻してコピーするス
テップを含むことを特徴とする請求項14記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US641987 | 1991-01-16 | ||
US07/641,987 US5257354A (en) | 1991-01-16 | 1991-01-16 | System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05303492A true JPH05303492A (ja) | 1993-11-16 |
JPH0785222B2 JPH0785222B2 (ja) | 1995-09-13 |
Family
ID=24574686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3318815A Expired - Lifetime JPH0785222B2 (ja) | 1991-01-16 | 1991-12-03 | データ処理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5257354A (ja) |
EP (1) | EP0495165B1 (ja) |
JP (1) | JPH0785222B2 (ja) |
BR (1) | BR9200054A (ja) |
CA (1) | CA2056715A1 (ja) |
DE (1) | DE69130858T2 (ja) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630157A (en) * | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
EP0529303A3 (en) * | 1991-08-29 | 1993-09-22 | International Business Machines Corporation | Checkpoint synchronization with instruction overlap enabled |
JPH06168263A (ja) * | 1992-11-30 | 1994-06-14 | Fujitsu Ltd | ベクトル処理装置 |
US5488706A (en) * | 1992-12-18 | 1996-01-30 | Amdahl Corporation | Retry request system in a pipeline data processing system where each requesting unit preserves the order of requests |
US6032244A (en) * | 1993-01-04 | 2000-02-29 | Cornell Research Foundation, Inc. | Multiple issue static speculative instruction scheduling with path tag and precise interrupt handling |
CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
JP3452655B2 (ja) * | 1993-09-27 | 2003-09-29 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法 |
TW353732B (en) * | 1994-03-31 | 1999-03-01 | Ibm | Processing system and method of operation |
US5465336A (en) * | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
CN1046167C (zh) * | 1994-07-21 | 1999-11-03 | 张立平 | 稳定计算机系统输出状态的抗干扰方法 |
US5748855A (en) * | 1995-10-02 | 1998-05-05 | Iinternational Business Machines Corporation | Method and system for performance monitoring of misaligned memory accesses in a processing system |
US5751945A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system |
US5729726A (en) * | 1995-10-02 | 1998-03-17 | International Business Machines Corporation | Method and system for performance monitoring efficiency of branch unit operation in a processing system |
US5797019A (en) * | 1995-10-02 | 1998-08-18 | International Business Machines Corporation | Method and system for performance monitoring time lengths of disabled interrupts in a processing system |
US5949971A (en) * | 1995-10-02 | 1999-09-07 | International Business Machines Corporation | Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system |
US5691920A (en) * | 1995-10-02 | 1997-11-25 | International Business Machines Corporation | Method and system for performance monitoring of dispatch unit efficiency in a processing system |
US5752062A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system |
US6088792A (en) * | 1998-04-30 | 2000-07-11 | International Business Machines Corporation | Avoiding processor serialization after an S/390 SPKA instruction |
US6088791A (en) * | 1998-04-30 | 2000-07-11 | International Business Machines Corporation | Computer processor system for implementing the ESA/390 STOSM and STNSM instructions without serialization or artificially extending processor execution time |
US6618851B1 (en) * | 1999-08-31 | 2003-09-09 | Autodesk, Inc. | Method and apparatus for state-reversion |
US6934814B2 (en) * | 2002-11-05 | 2005-08-23 | Newisys, Inc. | Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering |
US6925536B2 (en) * | 2002-11-05 | 2005-08-02 | Newisys, Inc. | Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems |
US6920532B2 (en) * | 2002-11-05 | 2005-07-19 | Newisys, Inc. | Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems |
JP4180569B2 (ja) * | 2003-01-27 | 2008-11-12 | 富士通株式会社 | 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法 |
US20050210204A1 (en) * | 2003-01-27 | 2005-09-22 | Fujitsu Limited | Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method |
US8751753B1 (en) | 2003-04-09 | 2014-06-10 | Guillermo J. Rozas | Coherence de-coupling buffer |
US20130046961A1 (en) * | 2011-08-15 | 2013-02-21 | Alexander Rabinovitch | Speculative memory write in a pipelined processor |
CN103728897B (zh) * | 2012-10-12 | 2016-12-21 | 深圳市金正方科技股份有限公司 | 一种基于软硬件结合的抗干扰方法及系统 |
US9134377B2 (en) * | 2013-03-14 | 2015-09-15 | Teradyne, Inc. | Method and apparatus for device testing using multiple processing paths |
US10139449B2 (en) | 2016-01-26 | 2018-11-27 | Teradyne, Inc. | Automatic test system with focused test hardware |
US10907426B2 (en) | 2018-10-15 | 2021-02-02 | H. Udo Zeidler | Apparatus and method for early kick detection and loss of drilling mud in oilwell drilling operations |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3736566A (en) * | 1971-08-18 | 1973-05-29 | Ibm | Central processing unit with hardware controlled checkpoint and retry facilities |
EP0150177A1 (en) * | 1983-07-11 | 1985-08-07 | Prime Computer, Inc. | Data processing system |
JPH0769818B2 (ja) * | 1984-10-31 | 1995-07-31 | 株式会社日立製作所 | デ−タ処理装置 |
JPH06103494B2 (ja) * | 1986-11-18 | 1994-12-14 | 株式会社日立製作所 | ベクトル処理装置の制御方式 |
US4991090A (en) * | 1987-05-18 | 1991-02-05 | International Business Machines Corporation | Posting out-of-sequence fetches |
US4901233A (en) * | 1987-07-20 | 1990-02-13 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US5136696A (en) * | 1988-06-27 | 1992-08-04 | Prime Computer, Inc. | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions |
US5119483A (en) * | 1988-07-20 | 1992-06-02 | Digital Equipment Corporation | Application of state silos for recovery from memory management exceptions |
US5142634A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
-
1991
- 1991-01-16 US US07/641,987 patent/US5257354A/en not_active Expired - Fee Related
- 1991-11-06 EP EP91118905A patent/EP0495165B1/en not_active Expired - Lifetime
- 1991-11-06 DE DE69130858T patent/DE69130858T2/de not_active Expired - Fee Related
- 1991-11-29 CA CA002056715A patent/CA2056715A1/en not_active Abandoned
- 1991-12-03 JP JP3318815A patent/JPH0785222B2/ja not_active Expired - Lifetime
-
1992
- 1992-01-10 BR BR929200054A patent/BR9200054A/pt not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
EP0495165A2 (en) | 1992-07-22 |
EP0495165A3 (en) | 1992-08-12 |
US5257354A (en) | 1993-10-26 |
EP0495165B1 (en) | 1999-02-03 |
CA2056715A1 (en) | 1992-07-17 |
BR9200054A (pt) | 1992-09-08 |
DE69130858T2 (de) | 1999-10-07 |
DE69130858D1 (de) | 1999-03-18 |
JPH0785222B2 (ja) | 1995-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH05303492A (ja) | データ処理装置 | |
US7877580B2 (en) | Branch lookahead prefetch for microprocessors | |
US5420991A (en) | Apparatus and method for maintaining processing consistency in a computer system having multiple processors | |
US6061710A (en) | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads | |
US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
US6907520B2 (en) | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor | |
KR100303673B1 (ko) | 저장인스트럭션의결과전달방법및이를구현한프로세서 | |
US6349382B1 (en) | System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order | |
US6170054B1 (en) | Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache | |
JP3701814B2 (ja) | マルチプロセッサ・システム及びそのシステム・シリアル化方法 | |
US6098167A (en) | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution | |
US7111126B2 (en) | Apparatus and method for loading data values | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
US5931957A (en) | Support for out-of-order execution of loads and stores in a processor | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US5564111A (en) | Method and apparatus for implementing a non-blocking translation lookaside buffer | |
US5930832A (en) | Apparatus to guarantee TLB inclusion for store operations | |
JP2005166046A (ja) | コンピュータシステム | |
JPH0677233B2 (ja) | データ処理システム | |
EP0372751B1 (en) | Pipelined data-processing apparatus | |
JP3154660B2 (ja) | 条件レジスタ・データを一時的にバッファリングする方法およびシステム | |
CN108694094B (zh) | 用于处理存储器访问操作的装置和方法 | |
KR20030019451A (ko) | 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 | |
US6266767B1 (en) | Apparatus and method for facilitating out-of-order execution of load instructions | |
US6134645A (en) | Instruction completion logic distributed among execution units for improving completion efficiency |