JP2843750B2 - スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム - Google Patents
スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステムInfo
- Publication number
- JP2843750B2 JP2843750B2 JP5325150A JP32515093A JP2843750B2 JP 2843750 B2 JP2843750 B2 JP 2843750B2 JP 5325150 A JP5325150 A JP 5325150A JP 32515093 A JP32515093 A JP 32515093A JP 2843750 B2 JP2843750 B2 JP 2843750B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- instructions
- dispatched
- scalar instructions
- 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
Links
- 238000000034 method Methods 0.000 title claims description 69
- 238000012432 intermediate storage Methods 0.000 claims description 60
- 239000012536 storage buffer Substances 0.000 claims description 60
- 239000000872 buffer Substances 0.000 claims description 56
- 230000004044 response Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 description 44
- 238000010586 diagram Methods 0.000 description 11
- 230000001419 dependent effect Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000003860 storage Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 231100001261 hazardous Toxicity 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 238000013519 translation Methods 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
-
- 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
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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
-
- 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
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
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)
Description
【0001】
【産業上の利用分野】本発明は、全般的に改良型データ
処理システムに関し、詳しくは、スーパースカラ・プロ
セッサ・システムにおける非逐次命令ディスパッチおよ
び実行の方法およびシステムに関する。さらに詳細に
は、本発明は、割込みおよび実行の正確な報告が可能
な、スーパースカラ・プロセッサ・システムにおける非
逐次命令ディスパッチおよび実行の方法およびシステム
に関する。
処理システムに関し、詳しくは、スーパースカラ・プロ
セッサ・システムにおける非逐次命令ディスパッチおよ
び実行の方法およびシステムに関する。さらに詳細に
は、本発明は、割込みおよび実行の正確な報告が可能
な、スーパースカラ・プロセッサ・システムにおける非
逐次命令ディスパッチおよび実行の方法およびシステム
に関する。
【0002】関連出願 本願発明は、米国特許出願第08/002300号に関
連しており、この出願は以下の事項を開示している。ア
プリケーションによって指定された順序で一連のスカラ
命令を取り出し、同時に一群のスカラ命令を非逐次的に
適宜、複数の実行ユニットにディスパッチすることがで
きる、スーパースカラ・プロセッサ・システムにおける
命令ディスパッチ効率を向上させる方法およびシステム
を提供する。アプリケーションによって指定された順序
で非逐次的に適宜取り出された一群のスカラ命令が、本
発明で処理される。本発明では、処理中に逐次化を必要
とする条件を検出する。逐次化を必要とする条件の検出
に応じて、その一群のスカラ命令のうちの特定のスカラ
命令の処理が選択的に制御され、その後は、その一群の
スカラ命令の少なくとも一部分が逐次的に処理される。
連しており、この出願は以下の事項を開示している。ア
プリケーションによって指定された順序で一連のスカラ
命令を取り出し、同時に一群のスカラ命令を非逐次的に
適宜、複数の実行ユニットにディスパッチすることがで
きる、スーパースカラ・プロセッサ・システムにおける
命令ディスパッチ効率を向上させる方法およびシステム
を提供する。アプリケーションによって指定された順序
で非逐次的に適宜取り出された一群のスカラ命令が、本
発明で処理される。本発明では、処理中に逐次化を必要
とする条件を検出する。逐次化を必要とする条件の検出
に応じて、その一群のスカラ命令のうちの特定のスカラ
命令の処理が選択的に制御され、その後は、その一群の
スカラ命令の少なくとも一部分が逐次的に処理される。
【0003】また、米国特許出願第08/001872
号にも関連しており、この出願は以下の事項を開示して
いる。複数の中間記憶バッファと、複数の汎用レジスタ
と、記憶バッファ・インデックスを有するスーパースカ
ラ・プロセッサ・システムにおける命令ディスパッチ効
率を向上させる方法およびシステムを提供する。複数の
スカラ命令を、ディスパッチ・バッファから複数の実行
ユニットに同時にディスパッチすることができる。複数
のスカラ命令はそれぞれ一般に、少なくとも1つのソー
ス・オペランドおよび1つの宛先オペランドを含む。複
数の中間記憶バッファのうちの特定の1つが、複数のス
カラ命令のうちの選択された1つの命令内の宛先オペラ
ンドに割り当てられる。中間記憶バッファのうちの特定
の1つと、複数の汎用レジスタのうちの指定された1つ
の間の関係が、ディスパッチされた命令がディスパッチ
機構でアプリケーション・プログラム・シーケンス中の
別の命令で置換されるとき、記憶バッファに記憶され
る。複数のスカラ命令のうちの選択された1つを実行し
た結果が、その命令が実行されたときに、特定の1つの
中間記憶バッファに記憶される。記憶バッファ・インデ
ックスを使用して、記憶バッファが特定の汎用レジスタ
用に割り当てられてから実行結果が記憶バッファから汎
用レジスタに移されるまでの間にディスパッチされる命
令のソース・オペランドとしてどの記憶バッファを使用
するかを決定する。
号にも関連しており、この出願は以下の事項を開示して
いる。複数の中間記憶バッファと、複数の汎用レジスタ
と、記憶バッファ・インデックスを有するスーパースカ
ラ・プロセッサ・システムにおける命令ディスパッチ効
率を向上させる方法およびシステムを提供する。複数の
スカラ命令を、ディスパッチ・バッファから複数の実行
ユニットに同時にディスパッチすることができる。複数
のスカラ命令はそれぞれ一般に、少なくとも1つのソー
ス・オペランドおよび1つの宛先オペランドを含む。複
数の中間記憶バッファのうちの特定の1つが、複数のス
カラ命令のうちの選択された1つの命令内の宛先オペラ
ンドに割り当てられる。中間記憶バッファのうちの特定
の1つと、複数の汎用レジスタのうちの指定された1つ
の間の関係が、ディスパッチされた命令がディスパッチ
機構でアプリケーション・プログラム・シーケンス中の
別の命令で置換されるとき、記憶バッファに記憶され
る。複数のスカラ命令のうちの選択された1つを実行し
た結果が、その命令が実行されたときに、特定の1つの
中間記憶バッファに記憶される。記憶バッファ・インデ
ックスを使用して、記憶バッファが特定の汎用レジスタ
用に割り当てられてから実行結果が記憶バッファから汎
用レジスタに移されるまでの間にディスパッチされる命
令のソース・オペランドとしてどの記憶バッファを使用
するかを決定する。
【0004】さらに、米国特許出願第08/00186
5号にも関連しており、この出願は以下の事項を開示し
ている。実行し、実行結果を指定された汎用レジスタに
格納するために複数の命令を一群の実行ユニットに同時
にディスパッチするスーパースカラ・プロセッサ・シス
テムにおいて、単一サイクル命令ディスパッチを可能に
する方法およびシステムを提供する。各命令は一般に、
少なくとも1つのソース・オペランドと1つの宛先オペ
ランドを含む。複数の中間記憶バッファが提供され、利
用可能な実行ユニットに命令がディスパッチされるたび
に、ディスパッチされた命令内のどの宛先オペランドに
も特定の1つの中間記憶バッファが割り当てられ、指定
された汎用レジスタまたは指定された代替汎用レジスタ
を決定して選択する必要がなくなるため、単一サイクル
内で命令をディスパッチすることが可能になる。
5号にも関連しており、この出願は以下の事項を開示し
ている。実行し、実行結果を指定された汎用レジスタに
格納するために複数の命令を一群の実行ユニットに同時
にディスパッチするスーパースカラ・プロセッサ・シス
テムにおいて、単一サイクル命令ディスパッチを可能に
する方法およびシステムを提供する。各命令は一般に、
少なくとも1つのソース・オペランドと1つの宛先オペ
ランドを含む。複数の中間記憶バッファが提供され、利
用可能な実行ユニットに命令がディスパッチされるたび
に、ディスパッチされた命令内のどの宛先オペランドに
も特定の1つの中間記憶バッファが割り当てられ、指定
された汎用レジスタまたは指定された代替汎用レジスタ
を決定して選択する必要がなくなるため、単一サイクル
内で命令をディスパッチすることが可能になる。
【0005】さらに、米国特許出願第08/00186
4号にも関連しており、この出願は以下の事項を開示し
ている。スーパースカラ・プロセッサ・システムにおい
て、複数の命令を、実行し、実行結果を指定された汎用
レジスタ内に格納するために、一群の実行ユニットに同
時にディスパッチする、単一サイクル命令ディスパッチ
を可能にするための方法およびシステムを提供する。各
命令は一般に、少なくとも1つのソース・オペランドと
1つの宛先オペランドを含む。複数の中間記憶バッファ
が設けられ、利用可能な実行ユニットに命令がディスパ
ッチされるたびに、ディスパッチされた命令中のどの宛
先オペランドにも中間記憶バッファが割り当てられ、指
定された汎用レジスタまたは指定された代替汎用レジス
タを決定し選択する必要がなくなることによって、単一
のサイクル内でその命令がディスパッチできるようにな
る。
4号にも関連しており、この出願は以下の事項を開示し
ている。スーパースカラ・プロセッサ・システムにおい
て、複数の命令を、実行し、実行結果を指定された汎用
レジスタ内に格納するために、一群の実行ユニットに同
時にディスパッチする、単一サイクル命令ディスパッチ
を可能にするための方法およびシステムを提供する。各
命令は一般に、少なくとも1つのソース・オペランドと
1つの宛先オペランドを含む。複数の中間記憶バッファ
が設けられ、利用可能な実行ユニットに命令がディスパ
ッチされるたびに、ディスパッチされた命令中のどの宛
先オペランドにも中間記憶バッファが割り当てられ、指
定された汎用レジスタまたは指定された代替汎用レジス
タを決定し選択する必要がなくなることによって、単一
のサイクル内でその命令がディスパッチできるようにな
る。
【0006】さらに、米国特許出願第08/00186
6号にも関連しており、この出願は以下の事項を開示し
ている。アプリケーションによって指定された順序で一
連のスカラ命令を取り出し、命令ディスパッチ機構を使
用して、一群のスカラ命令を複数の実行ユニットに同時
にディスパッチすることのできるスーパースカラ・デー
タ・プロセッサ・システム内で一群のスカラ命令を追跡
する方法を提供する。スーパースカラ・プロセッサ・シ
ステム内で現在実行中の各スカラ命令を一意的に識別す
るのに十分な大きさの一群の一意的識別番号を選択す
る。次に、各スカラ命令がプロセッサの命令ディスパッ
チ機構にロードされるときに、スーパースカラ・プロセ
ッサ・システム内で処理されている各スカラ命令に一意
的識別番号の1つを関連付ける。特定のスカラ命令の実
行完了後、その特定のスカラ命令とそれに関連する一意
的識別番号の間の関連付けが終了し、そのため一群の一
意的識別番号を再使用して、前記スーパースカラ・デー
タ・プロセッサ・システム内で以後のスカラ命令の実行
を追跡できるようになる。
6号にも関連しており、この出願は以下の事項を開示し
ている。アプリケーションによって指定された順序で一
連のスカラ命令を取り出し、命令ディスパッチ機構を使
用して、一群のスカラ命令を複数の実行ユニットに同時
にディスパッチすることのできるスーパースカラ・デー
タ・プロセッサ・システム内で一群のスカラ命令を追跡
する方法を提供する。スーパースカラ・プロセッサ・シ
ステム内で現在実行中の各スカラ命令を一意的に識別す
るのに十分な大きさの一群の一意的識別番号を選択す
る。次に、各スカラ命令がプロセッサの命令ディスパッ
チ機構にロードされるときに、スーパースカラ・プロセ
ッサ・システム内で処理されている各スカラ命令に一意
的識別番号の1つを関連付ける。特定のスカラ命令の実
行完了後、その特定のスカラ命令とそれに関連する一意
的識別番号の間の関連付けが終了し、そのため一群の一
意的識別番号を再使用して、前記スーパースカラ・デー
タ・プロセッサ・システム内で以後のスカラ命令の実行
を追跡できるようになる。
【0007】
【従来の技術】現代の最新データ処理システムの設計者
は、絶えずそのようなシステムの性能面の向上に努めて
いる。データ処理システム効率を向上させる1つの技法
は、サイクル・タイムを短くし、1命令当たりサイクル
(CPI)率を下げることである。このような技法を拡
張データ処理システムに巧みに応用した例に、インター
ナショナル・ビジネス・マシーンズ・コーポレーション
(IBM)のRISCシステム/6000(RS/60
00)コンピュータがある。RS/6000システム
は、数値中心の科学技術の応用分野およびマルチユーザ
商業環境でうまく機能するように設計されている。RS
/6000プロセッサは、スーパースカラ実施態様を使
用する。すなわち、複数の命令が同時に発行され実行さ
れる。
は、絶えずそのようなシステムの性能面の向上に努めて
いる。データ処理システム効率を向上させる1つの技法
は、サイクル・タイムを短くし、1命令当たりサイクル
(CPI)率を下げることである。このような技法を拡
張データ処理システムに巧みに応用した例に、インター
ナショナル・ビジネス・マシーンズ・コーポレーション
(IBM)のRISCシステム/6000(RS/60
00)コンピュータがある。RS/6000システム
は、数値中心の科学技術の応用分野およびマルチユーザ
商業環境でうまく機能するように設計されている。RS
/6000プロセッサは、スーパースカラ実施態様を使
用する。すなわち、複数の命令が同時に発行され実行さ
れる。
【0008】複数の命令を同時に発行して実行するに
は、高命令帯域幅で同時に実行できる独立した機能ユニ
ットが必要である。RS/6000システムは、本来的
にパイプライン式の別々のブランチ処理ユニット、固定
小数点処理ユニット、および浮動小数点処理ユニットを
使ってこれを実現している。そのようなシステムにおけ
るプロセッサのパイプライン式という性質にかんがみ、
後続命令をディスパッチする前に、後続命令の実行に必
要な特定の命令の結果が得られるように配慮しなければ
ならない。そのようないわゆる「データ依存性ハザー
ド」が発生しないようにするための1つの技法は、特定
の命令のディスパッチを、たとえば、すべての先行命令
がディスパッチされるまで制限することである。この技
法によってデータ依存性ハザードは発生しなくなるが、
この技法を用いて発生する性能上の不利益は大きい。
は、高命令帯域幅で同時に実行できる独立した機能ユニ
ットが必要である。RS/6000システムは、本来的
にパイプライン式の別々のブランチ処理ユニット、固定
小数点処理ユニット、および浮動小数点処理ユニットを
使ってこれを実現している。そのようなシステムにおけ
るプロセッサのパイプライン式という性質にかんがみ、
後続命令をディスパッチする前に、後続命令の実行に必
要な特定の命令の結果が得られるように配慮しなければ
ならない。そのようないわゆる「データ依存性ハザー
ド」が発生しないようにするための1つの技法は、特定
の命令のディスパッチを、たとえば、すべての先行命令
がディスパッチされるまで制限することである。この技
法によってデータ依存性ハザードは発生しなくなるが、
この技法を用いて発生する性能上の不利益は大きい。
【0009】そのため、現代のスパースカラ・データ処
理システムは、しばしばいわゆる「データ依存性インタ
ロック回路」を使用している。そのような回路は、命令
ディスパッチ回路と協調して動作し、たとえばその命令
の正しい実行に必要な先行命令の結果が得られる時まで
命令をディスパッチしないようにする論理機構を含む。
データ依存性インタロック回路を実現するのに必要な論
理の量は、各命令内のソース・オペランドの数に正比例
する。ソース・オペランドとは、命令の実行に使用する
ために、レジスタ・ファイル内のオペランドにアクセス
するのに使用される、命令内のフィールドである。
理システムは、しばしばいわゆる「データ依存性インタ
ロック回路」を使用している。そのような回路は、命令
ディスパッチ回路と協調して動作し、たとえばその命令
の正しい実行に必要な先行命令の結果が得られる時まで
命令をディスパッチしないようにする論理機構を含む。
データ依存性インタロック回路を実現するのに必要な論
理の量は、各命令内のソース・オペランドの数に正比例
する。ソース・オペランドとは、命令の実行に使用する
ために、レジスタ・ファイル内のオペランドにアクセス
するのに使用される、命令内のフィールドである。
【0010】データ依存性インタロック回路を用いる
と、上述の大きな性能上の不利益を発生させずにデータ
依存性ハザードを回避することができるが、多数のソー
ス・オペランドおよび宛先オペランドを含む命令用のデ
ータ依存性インタロック回路の設計および実施は極めて
複雑になる。
と、上述の大きな性能上の不利益を発生させずにデータ
依存性ハザードを回避することができるが、多数のソー
ス・オペランドおよび宛先オペランドを含む命令用のデ
ータ依存性インタロック回路の設計および実施は極めて
複雑になる。
【0011】各プロセッサ・サイクルでの複数の命令の
同時実行に伴って発生するデータ依存性ハザードはま
た、「レジスタ名前変更」として知られる方法を利用し
て対処されてきた。レジスタ名前変更は、命令の最終結
果がレジスタ・ファイルに格納されるよりも前に、特定
の命令の結果を、後続命令が使用できるように、レジス
タに一時的に格納するために利用される技術である。レ
ジスタ名前変更は一般に、レジスタ・ファイル・アレイ
に、特別な位置と、論理レジスタに割り当てられた特定
の物理レジスタを識別するポインタ配列とを設けること
によって行われる。また従来技術の特定の手法では、複
数のレジスタ・ファイル・アレイを使用して、データ用
の多数の「読取り」ポート、または例外の場合のバック
アップ用に前の結果を保持するための多数の「読取り」
ポートを提供している。
同時実行に伴って発生するデータ依存性ハザードはま
た、「レジスタ名前変更」として知られる方法を利用し
て対処されてきた。レジスタ名前変更は、命令の最終結
果がレジスタ・ファイルに格納されるよりも前に、特定
の命令の結果を、後続命令が使用できるように、レジス
タに一時的に格納するために利用される技術である。レ
ジスタ名前変更は一般に、レジスタ・ファイル・アレイ
に、特別な位置と、論理レジスタに割り当てられた特定
の物理レジスタを識別するポインタ配列とを設けること
によって行われる。また従来技術の特定の手法では、複
数のレジスタ・ファイル・アレイを使用して、データ用
の多数の「読取り」ポート、または例外の場合のバック
アップ用に前の結果を保持するための多数の「読取り」
ポートを提供している。
【0012】この技術は、普通なら逐次実行が必要とな
る場合に複数の命令を同時にディスパッチして実行する
能力を提供するが、そのような技法を使用して実行ユニ
ットに命令をディスパッチすることに関して問題が存在
する。単一のプロセッサ・サイクル中に複数の命令を実
行すると、ハザードが生じる可能性があり、プロセッサ
はそれを適切に処理しなければならない。そのようなプ
ロセッサが処理できなければならないハザードの1つ
は、正確な例外の報告である。すなわち、正常な処理を
再開するために是正しなければならない例外が、一連の
命令中のどの命令によって発生したかを正確に区別でき
る必要がある。
る場合に複数の命令を同時にディスパッチして実行する
能力を提供するが、そのような技法を使用して実行ユニ
ットに命令をディスパッチすることに関して問題が存在
する。単一のプロセッサ・サイクル中に複数の命令を実
行すると、ハザードが生じる可能性があり、プロセッサ
はそれを適切に処理しなければならない。そのようなプ
ロセッサが処理できなければならないハザードの1つ
は、正確な例外の報告である。すなわち、正常な処理を
再開するために是正しなければならない例外が、一連の
命令中のどの命令によって発生したかを正確に区別でき
る必要がある。
【0013】命令を非逐次的に実行できるようにすると
同時に、アプリケーションによって指定された順序で結
果をアセンブルすることによって、スーパースカラ・プ
ロセッサ・システム内での非逐次命令のディスパッチお
よび実行を可能にすると同時に、正確な割込みをサポー
トする方法およびシステムが明らかに必要である。
同時に、アプリケーションによって指定された順序で結
果をアセンブルすることによって、スーパースカラ・プ
ロセッサ・システム内での非逐次命令のディスパッチお
よび実行を可能にすると同時に、正確な割込みをサポー
トする方法およびシステムが明らかに必要である。
【0014】
【発明が解決しようとする課題】したがって、本発明の
一目的は、改良されたデータ処理システムを提供するこ
とである。
一目的は、改良されたデータ処理システムを提供するこ
とである。
【0015】本発明の他の目的は、スーパースカラ・プ
ロセッサ・システムにおける非逐次命令のディスパッチ
および実行効率を上げるための改良された方法およびシ
ステムを提供することである。
ロセッサ・システムにおける非逐次命令のディスパッチ
および実行効率を上げるための改良された方法およびシ
ステムを提供することである。
【0016】本発明の他の目的は、割込みおよび実行の
正確な報告が可能な、スーパースカラ・プロセッサ・シ
ステムにおける非逐次命令のディスパッチのための改良
された方法およびシステムを提供することである。
正確な報告が可能な、スーパースカラ・プロセッサ・シ
ステムにおける非逐次命令のディスパッチのための改良
された方法およびシステムを提供することである。
【0017】
【課題を解決するための手段】前述の目的は、以下に述
べるようにして達成される。本発明の方法およびシステ
ムを使用すると、スーパースカラ・プロセッサ・システ
ムにおいて、逐次的に順序付けられた複数の命令を、ア
プリケーションによって指定された順序で実行し実行結
果を指定された汎用レジスタに格納するために、一群の
実行ユニットに適宜、同時にディスパッチする、非逐次
命令ディスパッチが可能になる。各命令は一般に、少な
くとも1つのソース・オペランドおよび1つの宛先オペ
ランドを含む。複数の中間記憶バッファが設けられ、利
用可能な実行ユニットに命令がディスパッチされるたび
に、ディスパッチされた命令内の各宛先オペランドに特
定の1つの中間記憶バッファが割り当てられ、各命令の
実行結果を中間記憶バッファに記憶することができる。
各命令の状況を示す指示が完了バッファ内に維持され、
その後は、それを使用して、中間記憶バッファ内の結果
が、アプリケーションによって指定された順序と整合す
る順序で、選択された汎用レジスタに選択的に転送され
る。したがって、選択された命令の完了を妨げる割込み
の発生を、完了バッファ内で正確に識別することができ
る。
べるようにして達成される。本発明の方法およびシステ
ムを使用すると、スーパースカラ・プロセッサ・システ
ムにおいて、逐次的に順序付けられた複数の命令を、ア
プリケーションによって指定された順序で実行し実行結
果を指定された汎用レジスタに格納するために、一群の
実行ユニットに適宜、同時にディスパッチする、非逐次
命令ディスパッチが可能になる。各命令は一般に、少な
くとも1つのソース・オペランドおよび1つの宛先オペ
ランドを含む。複数の中間記憶バッファが設けられ、利
用可能な実行ユニットに命令がディスパッチされるたび
に、ディスパッチされた命令内の各宛先オペランドに特
定の1つの中間記憶バッファが割り当てられ、各命令の
実行結果を中間記憶バッファに記憶することができる。
各命令の状況を示す指示が完了バッファ内に維持され、
その後は、それを使用して、中間記憶バッファ内の結果
が、アプリケーションによって指定された順序と整合す
る順序で、選択された汎用レジスタに選択的に転送され
る。したがって、選択された命令の完了を妨げる割込み
の発生を、完了バッファ内で正確に識別することができ
る。
【0018】本発明の上記その他の目的、特徴、および
利点は、以下の詳細な説明で明らかになろう。
利点は、以下の詳細な説明で明らかになろう。
【0019】
【実施例】図面、特に図1を参照すると、本発明の方法
およびシステムを実施するために利用できるスーパース
カラ・データ処理システム10の高水準ブロック図が示
されている。図のように、スーパースカラ・データ処理
システム10は、データ、命令などを記憶するために利
用されるメモリ18を含む。メモリ18内に記憶される
データまたは命令には、当業者に周知の方法でキャッシ
ュ/メモリ・インタフェース20を使用してアクセスす
ることが好ましい。キャッシュ・メモリ・システムのサ
イズ設定および利用法は、データ処理技術分野内の周知
の一部門であり、本発明では取り上げない。しかし、現
代の連想式キャッシュ技術を使用することにより、キャ
ッシュ/メモリ・インタフェース20内に一時的に記憶
されたデータを利用して高率のメモリ・アクセスを達成
できることが、当業者には理解されよう。
およびシステムを実施するために利用できるスーパース
カラ・データ処理システム10の高水準ブロック図が示
されている。図のように、スーパースカラ・データ処理
システム10は、データ、命令などを記憶するために利
用されるメモリ18を含む。メモリ18内に記憶される
データまたは命令には、当業者に周知の方法でキャッシ
ュ/メモリ・インタフェース20を使用してアクセスす
ることが好ましい。キャッシュ・メモリ・システムのサ
イズ設定および利用法は、データ処理技術分野内の周知
の一部門であり、本発明では取り上げない。しかし、現
代の連想式キャッシュ技術を使用することにより、キャ
ッシュ/メモリ・インタフェース20内に一時的に記憶
されたデータを利用して高率のメモリ・アクセスを達成
できることが、当業者には理解されよう。
【0020】キャッシュ/メモリ・インタフェース20
からの命令は通常、好ましくは複数の待ち行列位置を含
む命令ディスパッチ機構22にロードされる。スーパー
スカラ・データ処理システムの典型的な実施例では、命
令ディスパッチ機構内の各位置が、2ないし8個の命令
を含むことができ、したがって所与のサイクルで、キャ
ッシュ/メモリ・インタフェース20によって渡される
有効な命令の数と、命令ディスパッチ機構22内で利用
可能な空間の量とに応じて、命令ディスパッチ機構22
に最高で8個の命令をロードすることができる。
からの命令は通常、好ましくは複数の待ち行列位置を含
む命令ディスパッチ機構22にロードされる。スーパー
スカラ・データ処理システムの典型的な実施例では、命
令ディスパッチ機構内の各位置が、2ないし8個の命令
を含むことができ、したがって所与のサイクルで、キャ
ッシュ/メモリ・インタフェース20によって渡される
有効な命令の数と、命令ディスパッチ機構22内で利用
可能な空間の量とに応じて、命令ディスパッチ機構22
に最高で8個の命令をロードすることができる。
【0021】そのようなスーパースカラ・データ処理シ
ステムでは普通であるが、命令ディスパッチ機構22
は、実行ユニット24に命令をディスパッチするために
利用される。図1に示すように、スーパースカラ・デー
タ処理システム10は、設計上の選択の問題として、1
つまたは複数の浮動小数点処理ユニット、固定小数点処
理ユニット、ロード/記憶ユニット、およびブランチ処
理ユニットを含むことができる。したがって、命令ディ
スパッチ機構22は、単一のサイクル中に、複数の命令
を各実行ユニットに1つずつディスパッチすることがで
きる。実行ユニットは、設計の選択の問題として、単一
のサイクル中に単一の実行ユニットに複数の命令をディ
スパッチできるようにする、予約ステーションを含むこ
とができる。したがって、スーパースカラ・プロセッサ
中の複数の実行ユニットがそれぞれ、単一のサイクルで
複数の命令を受け取ることができる。また、マルチプロ
セッサ・システム中で、複数のプロセッサに関連する複
数の実行ユニット24に命令をディスパッチすることが
できる。
ステムでは普通であるが、命令ディスパッチ機構22
は、実行ユニット24に命令をディスパッチするために
利用される。図1に示すように、スーパースカラ・デー
タ処理システム10は、設計上の選択の問題として、1
つまたは複数の浮動小数点処理ユニット、固定小数点処
理ユニット、ロード/記憶ユニット、およびブランチ処
理ユニットを含むことができる。したがって、命令ディ
スパッチ機構22は、単一のサイクル中に、複数の命令
を各実行ユニットに1つずつディスパッチすることがで
きる。実行ユニットは、設計の選択の問題として、単一
のサイクル中に単一の実行ユニットに複数の命令をディ
スパッチできるようにする、予約ステーションを含むこ
とができる。したがって、スーパースカラ・プロセッサ
中の複数の実行ユニットがそれぞれ、単一のサイクルで
複数の命令を受け取ることができる。また、マルチプロ
セッサ・システム中で、複数のプロセッサに関連する複
数の実行ユニット24に命令をディスパッチすることが
できる。
【0022】図2を参照すると、本発明の方法およびシ
ステムを実施するために使用できる図1のスーパースカ
ラ・データ処理システムの命令ディスパッチ回路のさら
に詳細なブロック図が示されている。図のように、キャ
ッシュ/メモリ・インタフェース20からの命令は通
常、命令ディスパッチ機構22に、グループ単位で、ア
プリケーションで指定された順序でロードされる。した
がって、実行ユニット24内の1つまたは複数の実行ユ
ニットに適宜ディスパッチするために、設計上の選択の
問題として、2個、4個、または8個の命令がキャッシ
ュ/メモリ・インタフェース20から命令ディスパッチ
22にロードされる。図2に示した実施例に示すよう
に、これらの実行ユニットは、浮動小数点処理ユニット
26、複数のロード/記憶ユニット28および30、複
数の固定小数点処理ユニット32および34、およびブ
ランチ処理ユニット36を含むことができる。言うまで
もなく、前述のように、設計上の問題として、スーパー
スカラ・データ処理システム10内に任意の数の複数の
タイプの実行ユニットを含めることができる。
ステムを実施するために使用できる図1のスーパースカ
ラ・データ処理システムの命令ディスパッチ回路のさら
に詳細なブロック図が示されている。図のように、キャ
ッシュ/メモリ・インタフェース20からの命令は通
常、命令ディスパッチ機構22に、グループ単位で、ア
プリケーションで指定された順序でロードされる。した
がって、実行ユニット24内の1つまたは複数の実行ユ
ニットに適宜ディスパッチするために、設計上の選択の
問題として、2個、4個、または8個の命令がキャッシ
ュ/メモリ・インタフェース20から命令ディスパッチ
22にロードされる。図2に示した実施例に示すよう
に、これらの実行ユニットは、浮動小数点処理ユニット
26、複数のロード/記憶ユニット28および30、複
数の固定小数点処理ユニット32および34、およびブ
ランチ処理ユニット36を含むことができる。言うまで
もなく、前述のように、設計上の問題として、スーパー
スカラ・データ処理システム10内に任意の数の複数の
タイプの実行ユニットを含めることができる。
【0023】本明細書に示すタイプのようなスーパース
カラ・データ処理システムで典型的であるが、複数の汎
用レジスタも設けられている。図2に示した実施例で
は、浮動小数点汎用レジスタ44および固定小数点汎用
レジスタ46の2つのグループの汎用レジスタが設けら
れている。したがって、図2に示した実行ユニット内で
の複数の命令の実行結果が通常、将来使用できるよう
に、選択された汎用レジスタ内に記憶される。本発明の
重要な特徴によれば、浮動小数点中間記憶バッファ40
および固定小数点中間記憶バッファ42という複数の記
憶バッファも設けられる。本明細書で詳細に説明するよ
うに、各実行ユニットは、独立バスを介して各中間記憶
バッファに接続される。したがって、実行ユニットが必
要とするデータ、または実行ユニット内での命令の実行
によって生成されるデータを、他の実行ユニットで使用
できるように、または将来汎用レジスタに転送するため
に、独立バス上に置き、指定された中間記憶バッファ内
に格納することができる。
カラ・データ処理システムで典型的であるが、複数の汎
用レジスタも設けられている。図2に示した実施例で
は、浮動小数点汎用レジスタ44および固定小数点汎用
レジスタ46の2つのグループの汎用レジスタが設けら
れている。したがって、図2に示した実行ユニット内で
の複数の命令の実行結果が通常、将来使用できるよう
に、選択された汎用レジスタ内に記憶される。本発明の
重要な特徴によれば、浮動小数点中間記憶バッファ40
および固定小数点中間記憶バッファ42という複数の記
憶バッファも設けられる。本明細書で詳細に説明するよ
うに、各実行ユニットは、独立バスを介して各中間記憶
バッファに接続される。したがって、実行ユニットが必
要とするデータ、または実行ユニット内での命令の実行
によって生成されるデータを、他の実行ユニットで使用
できるように、または将来汎用レジスタに転送するため
に、独立バス上に置き、指定された中間記憶バッファ内
に格納することができる。
【0024】このようにして、通常はレジスタ名前変更
方式に伴う複雑な参照テーブルを維持する必要がなくな
り、中間記憶バッファを、宛先オペランド用の記憶位置
として直接使用するために効率的に割り当てることがで
きるので、命令を単一のプロセッサ・サイクル内でディ
スパッチできるようになる。なぜなら、名前変更された
レジスタ・ファイル内でデータ位置を決定する必要がな
いからである。また、非順次的に命令を実行することが
でき、これらの命令の出力は、将来、汎用レジスタ内で
アプリケーションによって指定された順序でアセンブル
するために、中間記憶バッファ内に一時的に格納するこ
とができる。
方式に伴う複雑な参照テーブルを維持する必要がなくな
り、中間記憶バッファを、宛先オペランド用の記憶位置
として直接使用するために効率的に割り当てることがで
きるので、命令を単一のプロセッサ・サイクル内でディ
スパッチできるようになる。なぜなら、名前変更された
レジスタ・ファイル内でデータ位置を決定する必要がな
いからである。また、非順次的に命令を実行することが
でき、これらの命令の出力は、将来、汎用レジスタ内で
アプリケーションによって指定された順序でアセンブル
するために、中間記憶バッファ内に一時的に格納するこ
とができる。
【0025】図示したように、固定小数点処理ユニット
32および34はそれぞれ、独立バスを介して固定小数
点中間記憶バッファ42に接続されるが、浮動小数点処
理ユニット26は、独立バスを介して各浮動小数点中間
記憶バッファ40に接続される。当業者には明らかなよ
うに、ロード/記憶ユニット28および30は必然的
に、浮動小数点中間記憶バッファ40および固定小数点
中間記憶バッファ42に接続される。というのは、これ
らのユニットが浮動小数点データと固定小数点データの
両方をロードして記憶するからである。
32および34はそれぞれ、独立バスを介して固定小数
点中間記憶バッファ42に接続されるが、浮動小数点処
理ユニット26は、独立バスを介して各浮動小数点中間
記憶バッファ40に接続される。当業者には明らかなよ
うに、ロード/記憶ユニット28および30は必然的
に、浮動小数点中間記憶バッファ40および固定小数点
中間記憶バッファ42に接続される。というのは、これ
らのユニットが浮動小数点データと固定小数点データの
両方をロードして記憶するからである。
【0026】本発明の他の重要な特徴によれば、完了バ
ッファ48が設けられる。完了バッファ48は、実行ユ
ニット24内で実行中の複数のスカラ命令の完了を追跡
するために使用される。前述のように、これら命令の実
行の結果は、それぞれ関連する中間記憶バッファ内に一
時的に格納され、命令または一群の命令が、アプリケー
ションで指定された順序で首尾よく完了したことが示さ
れたとき、完了バッファ48を使用して、これらの完了
した命令データの結果の関連する汎用レジスタへの転送
を開始することができる。また、例外条件が発生した場
合は、完了バッファ48を使用して、例外の前に完了し
た命令の実行結果の記憶を開始し、例外条件が発生した
点からプロセスを再開して、破壊されたデータまたは無
効なデータを有効な出力で効率的に置換できるように命
令ディスパッチ機構22を制御し、あるいは、アプリケ
ーション特有のプログラムによって特定の例外タイプ用
に指定された新しい一連の命令を開始することができ
る。
ッファ48が設けられる。完了バッファ48は、実行ユ
ニット24内で実行中の複数のスカラ命令の完了を追跡
するために使用される。前述のように、これら命令の実
行の結果は、それぞれ関連する中間記憶バッファ内に一
時的に格納され、命令または一群の命令が、アプリケー
ションで指定された順序で首尾よく完了したことが示さ
れたとき、完了バッファ48を使用して、これらの完了
した命令データの結果の関連する汎用レジスタへの転送
を開始することができる。また、例外条件が発生した場
合は、完了バッファ48を使用して、例外の前に完了し
た命令の実行結果の記憶を開始し、例外条件が発生した
点からプロセスを再開して、破壊されたデータまたは無
効なデータを有効な出力で効率的に置換できるように命
令ディスパッチ機構22を制御し、あるいは、アプリケ
ーション特有のプログラムによって特定の例外タイプ用
に指定された新しい一連の命令を開始することができ
る。
【0027】図3を参照すると、本発明の方法およびシ
ステムによる、図1のスーパースカラ・プロセッサ・シ
ステム内での中間記憶バッファの使用法を示す高水準ブ
ロック図が示されている。命令ディスパッチ機構22が
アクセスできる記憶バッファ・インデックス58が設け
られている。本明細書で詳細に説明するように、記憶バ
ッファ・インデックス58は、複数の中間記憶バッファ
60のそれぞれと指定された汎用レジスタ62との関係
の指示を、後続命令の実行時に使用できるように、記憶
し維持するために使用される。
ステムによる、図1のスーパースカラ・プロセッサ・シ
ステム内での中間記憶バッファの使用法を示す高水準ブ
ロック図が示されている。命令ディスパッチ機構22が
アクセスできる記憶バッファ・インデックス58が設け
られている。本明細書で詳細に説明するように、記憶バ
ッファ・インデックス58は、複数の中間記憶バッファ
60のそれぞれと指定された汎用レジスタ62との関係
の指示を、後続命令の実行時に使用できるように、記憶
し維持するために使用される。
【0028】複数の中間記憶バッファ60は、複数の独
立バス64に接続することが好ましい。好ましい実施例
では、独立バス64の数が中間記憶バッファ60の数に
等しく、各中間記憶バッファは1本のバスに接続され
る。各中間記憶バッファ60は、対応する独立バス64
に対する読取りおよび書込みを行うことができる。設計
上の選択の問題として、使用するバスの数を変えられる
ことが、当業者には理解されよう。
立バス64に接続することが好ましい。好ましい実施例
では、独立バス64の数が中間記憶バッファ60の数に
等しく、各中間記憶バッファは1本のバスに接続され
る。各中間記憶バッファ60は、対応する独立バス64
に対する読取りおよび書込みを行うことができる。設計
上の選択の問題として、使用するバスの数を変えられる
ことが、当業者には理解されよう。
【0029】図の複数の実行ユニット24a、24b、
24cはそれぞれ、複数の独立バス64のそれぞれに接
続される。好ましい実施例では、実行ユニット24a、
24b、24cは、浮動小数点処理ユニット26、複数
のロード/記憶ユニット28および30、複数の固定小
数点処理ユニット32および34、およびブランチ処理
ユニット36を含むことができる。しかし、設計上の選
択の問題として、実行ユニットの数およびタイプを変え
られることが、当業者には理解されよう。
24cはそれぞれ、複数の独立バス64のそれぞれに接
続される。好ましい実施例では、実行ユニット24a、
24b、24cは、浮動小数点処理ユニット26、複数
のロード/記憶ユニット28および30、複数の固定小
数点処理ユニット32および34、およびブランチ処理
ユニット36を含むことができる。しかし、設計上の選
択の問題として、実行ユニットの数およびタイプを変え
られることが、当業者には理解されよう。
【0030】複数の実行ユニット24a、24b、24
cもそれぞれ、各独立バス64に対する読取りおよび書
込みを行うことができる。したがって、複数の実行ユニ
ット24a、24b、24cはそれぞれ、複数の独立バ
ス64を介して、複数の中間記憶バッファ60のそれぞ
れに結合されている。したがって、実行ユニット内での
命令の実行によってデータが生成されるとき、実行ユニ
ットは、データを一時的に格納できるそのデータの宛先
として指定されている指定の中間記憶バッファに対応す
るバス上にそのデータを置くことができる。同時に、実
行ユニットは、「有効」ビットを適切な状態にセットす
ることによって、バス上のデータが有効であることを示
す。このようにして、データがバス上にある間、および
指定された中間記憶バッファ内にデータを格納する前ま
たはそれと同時に、そのデータを必要とする他のどの実
行ユニットもバスからそのデータを取り出すことができ
る。したがって、独立バスを設けることの1つの利点
は、データをバッファに記憶し、その後バッファ内のそ
のデータにアクセスする必要がなくなることである。デ
ータをバスから直接取り出せるので、プロセッサ・シス
テムの処理速度が大幅に向上する。
cもそれぞれ、各独立バス64に対する読取りおよび書
込みを行うことができる。したがって、複数の実行ユニ
ット24a、24b、24cはそれぞれ、複数の独立バ
ス64を介して、複数の中間記憶バッファ60のそれぞ
れに結合されている。したがって、実行ユニット内での
命令の実行によってデータが生成されるとき、実行ユニ
ットは、データを一時的に格納できるそのデータの宛先
として指定されている指定の中間記憶バッファに対応す
るバス上にそのデータを置くことができる。同時に、実
行ユニットは、「有効」ビットを適切な状態にセットす
ることによって、バス上のデータが有効であることを示
す。このようにして、データがバス上にある間、および
指定された中間記憶バッファ内にデータを格納する前ま
たはそれと同時に、そのデータを必要とする他のどの実
行ユニットもバスからそのデータを取り出すことができ
る。したがって、独立バスを設けることの1つの利点
は、データをバッファに記憶し、その後バッファ内のそ
のデータにアクセスする必要がなくなることである。デ
ータをバスから直接取り出せるので、プロセッサ・シス
テムの処理速度が大幅に向上する。
【0031】さらに図3を参照すると、複数の独立バス
64がそれぞれ汎用レジスタ62に結合されていること
が分かる。実行ユニットに命令をディスパッチすると
き、指定された中間記憶バッファと選択された汎用バッ
ファの関係を記憶バッファ・インデックス58内に記憶
することが好ましい。その実行結果を他の実行ユニット
が必要とするときは、記憶バッファ・インデックス58
内の情報を使用してそれらの結果の転送を実行できる。
本明細書で詳細に説明するように、記憶バッファ・イン
デックス58内に記憶される情報は、汎用レジスタの識
別を使用してアクセスされる指定された中間記憶バッフ
ァの識別子、または指定された中間記憶バッファの識別
によってアクセスされる汎用レジスタの識別子とするこ
とができる。
64がそれぞれ汎用レジスタ62に結合されていること
が分かる。実行ユニットに命令をディスパッチすると
き、指定された中間記憶バッファと選択された汎用バッ
ファの関係を記憶バッファ・インデックス58内に記憶
することが好ましい。その実行結果を他の実行ユニット
が必要とするときは、記憶バッファ・インデックス58
内の情報を使用してそれらの結果の転送を実行できる。
本明細書で詳細に説明するように、記憶バッファ・イン
デックス58内に記憶される情報は、汎用レジスタの識
別を使用してアクセスされる指定された中間記憶バッフ
ァの識別子、または指定された中間記憶バッファの識別
によってアクセスされる汎用レジスタの識別子とするこ
とができる。
【0032】このようにして、通常はレジスタ名前変更
方式に伴う複雑な参照テーブルを維持する必要がなくな
る。なぜなら、汎用レジスタ・ファイルの名前変更を必
要とせずに、中間記憶バッファを、ディスパッチされる
命令内の各宛先オペランド用の記憶位置として直接割り
当てることができるからである。さらに、記憶バッファ
・インデックス58により、非順次的に命令を実行する
ことができる。これは、各命令の実行結果が中間記憶バ
ッファ60に一時的に記憶され、後で記憶バッファ・イ
ンデックス58内の情報および完了バッファ48の内容
を使用することによって、後続命令がこの実行結果を使
用できるからである(図2参照)。
方式に伴う複雑な参照テーブルを維持する必要がなくな
る。なぜなら、汎用レジスタ・ファイルの名前変更を必
要とせずに、中間記憶バッファを、ディスパッチされる
命令内の各宛先オペランド用の記憶位置として直接割り
当てることができるからである。さらに、記憶バッファ
・インデックス58により、非順次的に命令を実行する
ことができる。これは、各命令の実行結果が中間記憶バ
ッファ60に一時的に記憶され、後で記憶バッファ・イ
ンデックス58内の情報および完了バッファ48の内容
を使用することによって、後続命令がこの実行結果を使
用できるからである(図2参照)。
【0033】図4を参照すると、本発明の方法およびシ
ステムによるディスパッチ制御プロセスの概略図が示さ
れている。この図では命令ディスパッチ・バッファ64
内に複数の命令が示されている。すなわち、命令66、
68、70、72は、命令ディスパッチ・バッファ64
に、アプリケーションによって指定された順序でロード
された複数の命令を示す。図示したように、各命令は一
般に、ソース・オペランドおよび宛先オペランドを含
む。しかし、さらに多くのオペランドが存在してもよい
ことが、当業者には理解されよう。
ステムによるディスパッチ制御プロセスの概略図が示さ
れている。この図では命令ディスパッチ・バッファ64
内に複数の命令が示されている。すなわち、命令66、
68、70、72は、命令ディスパッチ・バッファ64
に、アプリケーションによって指定された順序でロード
された複数の命令を示す。図示したように、各命令は一
般に、ソース・オペランドおよび宛先オペランドを含
む。しかし、さらに多くのオペランドが存在してもよい
ことが、当業者には理解されよう。
【0034】本発明の重要な特徴によれば、命令72の
ディスパッチを試みるには、宛先DN用に使用する中間
記憶バッファを割り当てる必要がある。また、ソース・
オペランドSN用に使用する位置を指定する必要があ
る。本発明の方法およびシステムによれば、これは、ま
ずソース・オペランドSNと、そのソース・オペランド
SNに先行する命令ディスパッチ・バッファ64内の宛
先オペランドとを比較することによって行う。すなわ
ち、比較ユニット74を使用して、宛先D3、D2、D1
をソース・オペランドSNと比較する。このプロセスを
使用して、ソース・オペランドSN用に指定された位置
が現在命令ディスパッチ・バッファ64内にあるかどう
か判定する。各命令がそのソースの内容を順次修正する
ことができ、また命令ディスパッチ・バッファ64内の
命令が、アプリケーションによって指定された順序で並
んでいるので、命令72に先行し、ソース・オペランド
SNに等しい最も新しい宛先オペランドが使用される。
したがって、比較ユニット74を使用する第1の比較が
一致を示す場合、ソース・オペランドSNの指定は宛先
オペランドD3に等しく設定される。同様に、ソース・
オペランドSNに一致する先行宛先オペランドがない場
合、ソース・オペランドSNの指定を宛先オペランドD2
またはD1に設定することもできる。
ディスパッチを試みるには、宛先DN用に使用する中間
記憶バッファを割り当てる必要がある。また、ソース・
オペランドSN用に使用する位置を指定する必要があ
る。本発明の方法およびシステムによれば、これは、ま
ずソース・オペランドSNと、そのソース・オペランド
SNに先行する命令ディスパッチ・バッファ64内の宛
先オペランドとを比較することによって行う。すなわ
ち、比較ユニット74を使用して、宛先D3、D2、D1
をソース・オペランドSNと比較する。このプロセスを
使用して、ソース・オペランドSN用に指定された位置
が現在命令ディスパッチ・バッファ64内にあるかどう
か判定する。各命令がそのソースの内容を順次修正する
ことができ、また命令ディスパッチ・バッファ64内の
命令が、アプリケーションによって指定された順序で並
んでいるので、命令72に先行し、ソース・オペランド
SNに等しい最も新しい宛先オペランドが使用される。
したがって、比較ユニット74を使用する第1の比較が
一致を示す場合、ソース・オペランドSNの指定は宛先
オペランドD3に等しく設定される。同様に、ソース・
オペランドSNに一致する先行宛先オペランドがない場
合、ソース・オペランドSNの指定を宛先オペランドD2
またはD1に設定することもできる。
【0035】次に図5を参照すると、本発明の方法およ
びシステムによる単一のサイクル命令ディスパッチのプ
ロセスを示す論理フローチャートが示されている。図示
したように、プロセスはブロック80から開始し、次に
論理ブロック82に進む。ブロック82で、特定の命令
に対する実行ユニット要求が生成されたか否か判定す
る。そうでない場合は、たとえば実行ユニット要求が生
成されるまでこのプロセスが単に繰り返される。しか
し、実行ユニット要求が生成された後は、ブロック84
に進む。
びシステムによる単一のサイクル命令ディスパッチのプ
ロセスを示す論理フローチャートが示されている。図示
したように、プロセスはブロック80から開始し、次に
論理ブロック82に進む。ブロック82で、特定の命令
に対する実行ユニット要求が生成されたか否か判定す
る。そうでない場合は、たとえば実行ユニット要求が生
成されるまでこのプロセスが単に繰り返される。しか
し、実行ユニット要求が生成された後は、ブロック84
に進む。
【0036】ブロック84で、この命令に必要なタイプ
の実行ユニットが利用可能か否か判定する。利用可能で
ない場合、適切な実行ユニットが利用可能になるまで、
このプロセスが単に繰り返される。次にブロック86に
進む。ブロック86で、中間記憶バッファがディスパッ
チされる命令内の各宛先オペランドに利用可能か否か判
定する。本発明の重要な特徴によれば、中間記憶バッフ
ァが命令内の各宛先オペランドに割り当てられるので、
汎用レジスタ・ファイル内の名前変更レジスタの複雑な
決定を必要とせずに、命令とそれに関連するデータを単
一のプロセッサ・サイクル中にディスパッチすることが
できる。選択された命令内の宛先オペランドへの割当て
に中間記憶バッファが利用できない場合は、そのような
中間記憶バッファが利用可能になるまで待つ。
の実行ユニットが利用可能か否か判定する。利用可能で
ない場合、適切な実行ユニットが利用可能になるまで、
このプロセスが単に繰り返される。次にブロック86に
進む。ブロック86で、中間記憶バッファがディスパッ
チされる命令内の各宛先オペランドに利用可能か否か判
定する。本発明の重要な特徴によれば、中間記憶バッフ
ァが命令内の各宛先オペランドに割り当てられるので、
汎用レジスタ・ファイル内の名前変更レジスタの複雑な
決定を必要とせずに、命令とそれに関連するデータを単
一のプロセッサ・サイクル中にディスパッチすることが
できる。選択された命令内の宛先オペランドへの割当て
に中間記憶バッファが利用できない場合は、そのような
中間記憶バッファが利用可能になるまで待つ。
【0037】次にブロック88に進む。ブロック88
で、そのような中間記憶バッファが利用可能になったと
き、選択された命令中の宛先オペランドに中間記憶バッ
ファが割り当てられる。次にブロック90に進む。ブロ
ック90で、選択された命令内のすべてのソース・オペ
ランドが指定されているか否か判定する。以下に詳細に
述べるように、命令をディスパッチできるようにするに
は、命令中に含まれる各ソース・オペランド用のデータ
を得るために、ソースまたは位置を指定する必要があ
る。選択された命令内のソース・オペランドのうちで指
定されていないものがある場合は、たとえば各ソース・
オペランドの指定が決定されるまで、このプロセスが単
に繰り返される。
で、そのような中間記憶バッファが利用可能になったと
き、選択された命令中の宛先オペランドに中間記憶バッ
ファが割り当てられる。次にブロック90に進む。ブロ
ック90で、選択された命令内のすべてのソース・オペ
ランドが指定されているか否か判定する。以下に詳細に
述べるように、命令をディスパッチできるようにするに
は、命令中に含まれる各ソース・オペランド用のデータ
を得るために、ソースまたは位置を指定する必要があ
る。選択された命令内のソース・オペランドのうちで指
定されていないものがある場合は、たとえば各ソース・
オペランドの指定が決定されるまで、このプロセスが単
に繰り返される。
【0038】次に、選択された命令内のすべてのソース
・オペランドが指定された後、ブロック92に進む。ブ
ロック92で、現プロセッサ・サイクル中に選択された
命令およびデータ指定がディスパッチされる。したがっ
て、本発明の方法およびシステムでは、中間記憶バッフ
ァを各命令内の宛先オペランド用に割り当てられるよう
にすることにより、命令と、その命令を実行するのに必
要なデータ指定を、単一のプロセッサ・サイクル中にデ
ィスパッチすることができる。次にブロック94に進
み、リターンする。前述のプロセス・ステップは順次実
行されるものとして示したが、効率を上げるために、こ
れらのステップは一般に、ほぼ同時に並列に実行される
ことが、当業者には理解されよう。
・オペランドが指定された後、ブロック92に進む。ブ
ロック92で、現プロセッサ・サイクル中に選択された
命令およびデータ指定がディスパッチされる。したがっ
て、本発明の方法およびシステムでは、中間記憶バッフ
ァを各命令内の宛先オペランド用に割り当てられるよう
にすることにより、命令と、その命令を実行するのに必
要なデータ指定を、単一のプロセッサ・サイクル中にデ
ィスパッチすることができる。次にブロック94に進
み、リターンする。前述のプロセス・ステップは順次実
行されるものとして示したが、効率を上げるために、こ
れらのステップは一般に、ほぼ同時に並列に実行される
ことが、当業者には理解されよう。
【0039】最後に図6を参照すると、本発明の方法お
よびシステムによる、選択された命令中のソース・オペ
ランドを指定するプロセスを示す論理フローチャートが
示されている。図示したように、このプロセスはブロッ
ク100から開始し、次にブロック102に進む。ブロ
ック102で、指定すべき命令中のソース・オペランド
を識別する。次に、ブロック104に進む。ブロック1
04で、命令ディスパッチ・バッファ内の命令中の先行
する宛先オペランドが、検討中の現ソース・オペランド
に等しいか否か判定する。等しい場合は、ブロック10
6に進む。
よびシステムによる、選択された命令中のソース・オペ
ランドを指定するプロセスを示す論理フローチャートが
示されている。図示したように、このプロセスはブロッ
ク100から開始し、次にブロック102に進む。ブロ
ック102で、指定すべき命令中のソース・オペランド
を識別する。次に、ブロック104に進む。ブロック1
04で、命令ディスパッチ・バッファ内の命令中の先行
する宛先オペランドが、検討中の現ソース・オペランド
に等しいか否か判定する。等しい場合は、ブロック10
6に進む。
【0040】ブロック106で、ソース・オペランド指
定を、最も新しい先行する宛先オペランド・バッファの
割当てに設定する。言うまでもなく、アプリケーション
によって指定された順序の各連続命令が、特定の宛先に
割り当てられているバッファの内容を修正し得ること
が、当業者には理解されよう。したがって、最も新しい
先行する宛先オペランド・バッファ割当てを必ず使用す
る必要がある。次にブロック114に進み、リターンし
て、図5に関して述べたように、命令をディスパッチで
きるようになる。
定を、最も新しい先行する宛先オペランド・バッファの
割当てに設定する。言うまでもなく、アプリケーション
によって指定された順序の各連続命令が、特定の宛先に
割り当てられているバッファの内容を修正し得ること
が、当業者には理解されよう。したがって、最も新しい
先行する宛先オペランド・バッファ割当てを必ず使用す
る必要がある。次にブロック114に進み、リターンし
て、図5に関して述べたように、命令をディスパッチで
きるようになる。
【0041】再びブロック104を参照すると、命令デ
ィスパッチ・バッファ内の先行する宛先オペランドのう
ちで現ソース・オペランドに等しいものがない場合、ブ
ロック108に進む。ブロック108で、このソース・
オペランド用の命令バッファがバッファ・インデックス
内ですでに割り当てられているか否か判定する。そうで
ある場合、ブロック110に進む。ブロック110で、
ソース・オペランド指定をバッファ・インデックス内に
割り当てられたバッファに設定する。次にブロック11
4に進み、リターンする。このようにして、現命令中で
ソースとして機能する先行宛先に中間記憶バッファが割
り当てられているとき、先行する命令がディスパッチさ
れている場合でも、適切な中間記憶バッファの識別を行
うことができる。
ィスパッチ・バッファ内の先行する宛先オペランドのう
ちで現ソース・オペランドに等しいものがない場合、ブ
ロック108に進む。ブロック108で、このソース・
オペランド用の命令バッファがバッファ・インデックス
内ですでに割り当てられているか否か判定する。そうで
ある場合、ブロック110に進む。ブロック110で、
ソース・オペランド指定をバッファ・インデックス内に
割り当てられたバッファに設定する。次にブロック11
4に進み、リターンする。このようにして、現命令中で
ソースとして機能する先行宛先に中間記憶バッファが割
り当てられているとき、先行する命令がディスパッチさ
れている場合でも、適切な中間記憶バッファの識別を行
うことができる。
【0042】最後に、再度ブロック108を参照する
と、識別されたソース・オペランド用のバッファがバッ
ファ・インデックス内で割り当てられていない場合、ブ
ロック112に進む。ブロック112で、ソース・オペ
ランド指定を汎用レジスタ・ファイル内の指定された汎
用レジスタに設定する。次にブロック114で、リター
ンする。
と、識別されたソース・オペランド用のバッファがバッ
ファ・インデックス内で割り当てられていない場合、ブ
ロック112に進む。ブロック112で、ソース・オペ
ランド指定を汎用レジスタ・ファイル内の指定された汎
用レジスタに設定する。次にブロック114で、リター
ンする。
【0043】本発明のフローチャート中のプロセスを順
次説明したが、命令ディスパッチの効率を上げるため、
先行する命令オペランドが現ソース・オペランドに等し
いか否か、命令バッファがバッファ・インデックス内で
すでに割り当てられているか否か、あるいは現ソース・
オペランドを指定するために汎用レジスタを指定する必
要があるか否かの判定が通常は並列に行われ、プロセス
の効率が大幅に高まることが、当業者には理解されよ
う。
次説明したが、命令ディスパッチの効率を上げるため、
先行する命令オペランドが現ソース・オペランドに等し
いか否か、命令バッファがバッファ・インデックス内で
すでに割り当てられているか否か、あるいは現ソース・
オペランドを指定するために汎用レジスタを指定する必
要があるか否かの判定が通常は並列に行われ、プロセス
の効率が大幅に高まることが、当業者には理解されよ
う。
【0044】最後に図7を参照すると、本発明の方法お
よびシステムによる、非逐次命令のディスパッチ中に発
生する割込みを正確に識別するためのプロセスを示す論
理フローチャートが示されている。図のように、このプ
ロセスはブロック120から開始し、次にブロック12
2に進む。ブロック122で、完了バッファ48(図2
参照)において実行ユニット状況を受け取ったか否かを
判定する。受け取っていない場合、実行ユニット状況レ
ポートを受け取るときまで、このプロセスを単に繰り返
す。次に、実行ユニット状況レポートを受け取っている
と判定されると、ブロック124に進む。ブロック12
4で、状況レポートが例外レポートであるかそれとも完
了レポートであるかを判定する。
よびシステムによる、非逐次命令のディスパッチ中に発
生する割込みを正確に識別するためのプロセスを示す論
理フローチャートが示されている。図のように、このプ
ロセスはブロック120から開始し、次にブロック12
2に進む。ブロック122で、完了バッファ48(図2
参照)において実行ユニット状況を受け取ったか否かを
判定する。受け取っていない場合、実行ユニット状況レ
ポートを受け取るときまで、このプロセスを単に繰り返
す。次に、実行ユニット状況レポートを受け取っている
と判定されると、ブロック124に進む。ブロック12
4で、状況レポートが例外レポートであるかそれとも完
了レポートであるかを判定する。
【0045】実行ユニットから受け取った状況が例外レ
ポートである場合、ブロック126に進む。ブロック1
26で、処理中にその命令に関連する識別子を使用し
て、あるいは命令の処理中に当技術分野で周知の方法で
その命令の位置をマップすることによって、例外開始命
令を識別する。次にブロック127に進む。ブロック1
27で、アプリケーションによって指定された逐次順序
で例外の前にあるすべての命令が完了しているか否かを
判定する。完了していない場合、この条件が発生すると
きまでこのプロセスを単に繰り返す。すべての先行命令
が完了した後、ブロック128に進む。ブロック128
で、先行する完了した命令の結果を、中間記憶バッファ
から適切な汎用レジスタに転送する。次にブロック13
0に進む。ブロック130で、トラップ・ハンドラまた
はその他の例外管理技法を使用して例外を是正し、続い
て、例外を開始するものとして識別された命令からアプ
リケーションを再開する。次に反復的にブロック122
に戻る。
ポートである場合、ブロック126に進む。ブロック1
26で、処理中にその命令に関連する識別子を使用し
て、あるいは命令の処理中に当技術分野で周知の方法で
その命令の位置をマップすることによって、例外開始命
令を識別する。次にブロック127に進む。ブロック1
27で、アプリケーションによって指定された逐次順序
で例外の前にあるすべての命令が完了しているか否かを
判定する。完了していない場合、この条件が発生すると
きまでこのプロセスを単に繰り返す。すべての先行命令
が完了した後、ブロック128に進む。ブロック128
で、先行する完了した命令の結果を、中間記憶バッファ
から適切な汎用レジスタに転送する。次にブロック13
0に進む。ブロック130で、トラップ・ハンドラまた
はその他の例外管理技法を使用して例外を是正し、続い
て、例外を開始するものとして識別された命令からアプ
リケーションを再開する。次に反復的にブロック122
に戻る。
【0046】再びブロック124を参照すると、実行ユ
ニットから受け取った状況レポートが完了の指示である
場合、ブロック132に進む。ブロック132で、完了
バッファ内で命令完了状況を通知し、次にブロック13
4に進む。ブロック134で、アプリケーションによっ
て指定された順序で命令が完了しているか否かを判定す
る。命令は最初、アプリケーションによって指定された
順序で命令ディスパッチ・バッファにロードされるが、
それらの命令を複数の実行ユニットに適宜、非逐次的に
ディスパッチすると、選択された命令が非逐次的順序で
完了することが、当業者には理解されよう。したがっ
て、前述のように、完了バッファを使用してこれらの命
令の完了状況を追跡することにより、システムは、アプ
リケーションによって指定された順序で命令が完了して
いるか否かを判定することができる。完了していない場
合、反復的にブロック122に戻り、再び追加の状況レ
ポートを待つ。しかし、アプリケーションによって指定
された順序で命令が完了しているとブロック134で判
定された場合は、ブロック136に進む。ブロック13
6で、完了した命令シーケンスの結果を中間記憶バッフ
ァから汎用レジスタに転送し、次に、反復的にブロック
122に戻り、追加の状況レポートを待つ。
ニットから受け取った状況レポートが完了の指示である
場合、ブロック132に進む。ブロック132で、完了
バッファ内で命令完了状況を通知し、次にブロック13
4に進む。ブロック134で、アプリケーションによっ
て指定された順序で命令が完了しているか否かを判定す
る。命令は最初、アプリケーションによって指定された
順序で命令ディスパッチ・バッファにロードされるが、
それらの命令を複数の実行ユニットに適宜、非逐次的に
ディスパッチすると、選択された命令が非逐次的順序で
完了することが、当業者には理解されよう。したがっ
て、前述のように、完了バッファを使用してこれらの命
令の完了状況を追跡することにより、システムは、アプ
リケーションによって指定された順序で命令が完了して
いるか否かを判定することができる。完了していない場
合、反復的にブロック122に戻り、再び追加の状況レ
ポートを待つ。しかし、アプリケーションによって指定
された順序で命令が完了しているとブロック134で判
定された場合は、ブロック136に進む。ブロック13
6で、完了した命令シーケンスの結果を中間記憶バッフ
ァから汎用レジスタに転送し、次に、反復的にブロック
122に戻り、追加の状況レポートを待つ。
【0047】前述の内容を参照すれば、一連の命令の実
行結果を一時的に中間記憶バッファに記憶することによ
って、それらの結果を、次にアプリケーションによって
指定された命令の順序と整合する順序でアセンブルする
ことができ、それによって、逐次的に実行される一連の
命令を効果的に出力することができると同時に、システ
ムにおける命令ディスパッチ効率が向上することが、当
業者には理解されよう。さらに、本明細書に記載した方
法で完了バッファ内の各命令の状況を通知することによ
って、一連の命令内の例外条件を開始する命令の識別を
正確かつ効率的に決定することができ、アプリケーショ
ンが、例外を開始した点から一連の命令を再開できるよ
うになり、システムの効率が大幅に向上する。
行結果を一時的に中間記憶バッファに記憶することによ
って、それらの結果を、次にアプリケーションによって
指定された命令の順序と整合する順序でアセンブルする
ことができ、それによって、逐次的に実行される一連の
命令を効果的に出力することができると同時に、システ
ムにおける命令ディスパッチ効率が向上することが、当
業者には理解されよう。さらに、本明細書に記載した方
法で完了バッファ内の各命令の状況を通知することによ
って、一連の命令内の例外条件を開始する命令の識別を
正確かつ効率的に決定することができ、アプリケーショ
ンが、例外を開始した点から一連の命令を再開できるよ
うになり、システムの効率が大幅に向上する。
【図1】本発明の方法およびシステムを実施するために
利用されるスーパースカラ・データ処理システム高水準
ブロック図である。
利用されるスーパースカラ・データ処理システム高水準
ブロック図である。
【図2】本発明の方法およびシステムを実施するために
利用される図1のスーパースカラ・データ処理システム
の命令ディスパッチ回路のさらに詳細なブロック図であ
る。
利用される図1のスーパースカラ・データ処理システム
の命令ディスパッチ回路のさらに詳細なブロック図であ
る。
【図3】本発明の方法およびシステムによる図1のスー
パースカラ・データ処理システム内の中間記憶バッファ
の利用法を示す高水準ブロック図である。
パースカラ・データ処理システム内の中間記憶バッファ
の利用法を示す高水準ブロック図である。
【図4】本発明の方法およびシステムによるディスパッ
チ制御プロセスの概略図である。
チ制御プロセスの概略図である。
【図5】本発明の方法およびシステムによる単一サイク
ル命令ディスパッチのプロセスを示す論理フローチャー
トである。
ル命令ディスパッチのプロセスを示す論理フローチャー
トである。
【図6】本発明の方法およびシステムによる選択された
命令中のソース・オペランドを指定するプロセスを示す
論理フローチャートである。
命令中のソース・オペランドを指定するプロセスを示す
論理フローチャートである。
【図7】本発明の方法およびシステムによる、非逐次的
命令ディスパッチ中に発生する割込みを正確に識別する
ためのプロセスを示す論理フローチャートである。
命令ディスパッチ中に発生する割込みを正確に識別する
ためのプロセスを示す論理フローチャートである。
10 スーパースカラ・データ処理システム 18 メモリ 20 キャッシュ/メモリ・インタフェース 22 命令ディスパッチ機構 24 実行ユニット 26 浮動小数点処理ユニット 28 ロード/記憶ユニット 32 固定小数点処理ユニット 36 ブランチ処理ユニット 40 浮動小数点中間記憶バッファ 42 固定小数点中間記憶バッファ 44 浮動小数点汎用レジスタ 46 固定小数点汎用レジスタ 48 完了バッファ 58 中間記憶バッファ・インデックス 64 独立バス 74 比較ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ドナルド・イー・ウォールデッカー アメリカ合衆国78681、テキサス州ラン ド・ロック、アロウヘッド・サークル 3306 (56)参考文献 特開 平1−142831(JP,A) 特開 昭58−1246(JP,A) 特開 昭58−178464(JP,A) 特表 平4−503582(JP,A) 村上和彰外2名″SIMP(単一命令 流/多重命令パイプライン)方式に基づ くスーパースカラ・プロセッサの改良方 針”、電子情報通信学会技術研究報告, Vol.90,No.144(CPSY90− 54)pp.97−102 Proceedings of th e 12th Annual Inter national Symposium on Computer Archi tectuire,(1985−6)(米) IEEE pp.36−44“Implem entation of Precis e Interrupts in Pi pelined Processor" (58)調査した分野(Int.Cl.6,DB名) G06F 9/38
Claims (10)
- 【請求項1】アプリケーションによって指定された順序
で一連のスカラ命令を取り出し、一群の前記スカラ命令
を複数の実行ユニットに同時にディスパッチすることの
できる、スーパースカラ・プロセッサ・システムにおけ
る命令ディスパッチ効率を向上させる方法であって、 (a)前記一群のスカラ命令のうちの選択された命令
を、前記複数の実行ユニットのうちの選択された実行ユ
ニットに適宜ディスパッチするステップと、 (b)前記ディスパッチされた各スカラ命令を、前記複
数の実行ユニットで前記アプリケーションによって指定
された順序に関係なく実行するステップと、 (c)前記ディスパッチされた各スカラ命令の実行結果
を、前記スーパースカラ・プロセッサ・システム内の中
間記憶バッファに記憶するステップと、 (d)前記ディスパッチされた各スカラ命令の実行完了
を示す指示を、完了バッファで維持するステップと、 (e)前記ディスパッチされたスカラ命令のうちの選択
された命令の実行完了の指示に応答して、前記アプリケ
ーションによって指定された順序と整合する順序で、前
記ディスパッチされたスカラ命令のうちの選択された命
令の実行結果を、前記中間記憶バッファから選択された
汎用レジスタに転送するステップとを含む方法。 - 【請求項2】前記ディスパッチされた各スカラ命令の実
行完了を示す指示を完了バッファで維持する前記ステッ
プが、前記ディスパッチ・スカラ命令のうちの任意の命
令の実行中に例外発生を示す指示を前記完了バッファに
維持するステップをさらに含む請求項1に記載のスーパ
ースカラ・プロセッサ・システムにおける命令ディスパ
ッチ効率を向上させる方法。 - 【請求項3】前記ディスパッチされたスカラ命令のうち
の前記選択された命令の実行完了の指示に応答して前記
アプリケーションによって指定された順序と整合する順
序で、前記ディスパッチされたスカラ命令のうちの選択
された命令の実行結果を前記中間記憶バッファから前記
選択された汎用レジスタに転送する前記ステップが、前
記例外の発生に応答して、前記アプリケーションによっ
て指定された順序で前記実行発生の前にあるディスパッ
チ・スカラ命令だけの実行結果を、前記アプリケーショ
ンによって指定された順序と整合する順序で、選択され
た汎用レジスタに転送するステップをさらに含む請求項
2に記載のスーパースカラ・プロセッサ・システムにお
ける命令ディスパッチ効率を向上させる方法。 - 【請求項4】前記例外発生を開始した、前記スカラ命令
のうちの特定の1つを識別するステップをさらに含む請
求項3に記載のスーパースカラ・プロセッサ・システム
における命令ディスパッチ効率を向上させる方法。 - 【請求項5】前記例外発生を是正した後、前記スカラ命
令のうちの前記特定の1つから前記アプリケーションを
再開するステップをさらに含む請求項4に記載のスーパ
ースカラ・プロセッサ・システムにおける命令ディスパ
ッチ効率を向上させる方法。 - 【請求項6】アプリケーションによって指定された順序
で一連のスカラ命令を取り出し、一群の前記スカラ命令
を複数の実行ユニットに同時にディスパッチすることの
できる、スーパースカラ・プロセッサ・システムにおけ
る命令ディスパッチ効率を向上させるためのシステムで
あって、 (a)前記一群のスカラ命令のうちの選択された命令
を、前記複数の実行ユニットのうちの選択された実行ユ
ニットに適宜ディスパッチする手段と、 (b)前記ディスパッチされた各スカラ命令を、前記複
数の実行ユニットで前記アプリケーションによって指定
された順序に関係なく実行する手段と、 (c)前記ディスパッチされた各スカラ命令の実行結果
を、前記スーパースカラ・プロセッサ・システム内の中
間記憶バッファに記憶する手段と、 (d)前記ディスパッチされた各スカラ命令の実行完了
を示す指示を、完了バッファで維持する手段と、 (e)前記ディスパッチされたスカラ命令のうちの選択
された命令の実行完了の指示に応じて、前記アプリケー
ションによって指定された順序と整合する順序で、前記
ディスパッチされたスカラ命令のうちの選択された命令
の実行結果を、前記中間記憶バッファから選択された汎
用レジスタに転送する手段とを備えるシステム。 - 【請求項7】前記ディスパッチされた各スカラ命令の実
行完了を示す指示を完了バッファで維持する前記手段
が、前記ディスパッチ・スカラ命令のうちの任意の命令
の実行中に例外発生を示す指示を前記完了バッファに維
持する手段をさらに備える請求項6に記載のスーパース
カラ・プロセッサ・システムにおける命令ディスパッチ
効率を向上させるためのシステム。 - 【請求項8】前記ディスパッチされたスカラ命令のうち
の前記選択された命令の実行完了の指示に応じて前記ア
プリケーションによって指定された順序と整合する順序
で前記ディスパッチされたスカラ命令のうちの選択され
た命令の実行結果を前記中間記憶バッファから前記選択
された汎用レジスタに転送する前記手段が、前記例外の
発生に応答して、前記アプリケーションによって指定さ
れた順序で前記実行発生の前にあるディスパッチ・スカ
ラ命令だけの実行結果を、前記アプリケーションによっ
て指定された順序と整合する順序で、選択された汎用レ
ジスタに転送する手段をさらに備える請求項7に記載の
スーパースカラ・プロセッサ・システムにおける命令デ
ィスパッチ効率を向上させるためのシステム。 - 【請求項9】前記例外発生を開始した、前記スカラ命令
のうちの特定の1つを識別する手段をさらに備える請求
項8に記載のスーパースカラ・プロセッサ・システムに
おける命令ディスパッチ効率を向上させるためのシステ
ム。 - 【請求項10】前記例外発生を是正した後、前記スカラ
命令のうちの前記特定の1つから前記アプリケーション
を再開する手段をさらに備える請求項9に記載のスーパ
ースカラ・プロセッサ・システムにおける命令ディスパ
ッチ効率を向上させるためのシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US189093A | 1993-01-08 | 1993-01-08 | |
US001890 | 1995-08-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06236275A JPH06236275A (ja) | 1994-08-23 |
JP2843750B2 true JP2843750B2 (ja) | 1999-01-06 |
Family
ID=21698307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5325150A Expired - Fee Related JP2843750B2 (ja) | 1993-01-08 | 1993-12-22 | スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム |
Country Status (7)
Country | Link |
---|---|
US (1) | US6209081B1 (ja) |
EP (1) | EP0606643A1 (ja) |
JP (1) | JP2843750B2 (ja) |
KR (1) | KR0122527B1 (ja) |
CN (1) | CN1041566C (ja) |
CA (1) | CA2107305A1 (ja) |
TW (1) | TW242672B (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546554A (en) * | 1994-02-02 | 1996-08-13 | Sun Microsystems, Inc. | Apparatus for dynamic register management in a floating point unit |
US5559976A (en) * | 1994-03-31 | 1996-09-24 | International Business Machines Corporation | System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions |
TW295646B (ja) * | 1995-01-25 | 1997-01-11 | Ibm | |
KR100384875B1 (ko) * | 1995-12-16 | 2003-08-21 | 주식회사 하이닉스반도체 | 파이프라인구조를갖는마이크로프로세서에서의언세이프처리마이크로시퀀서 |
US6543003B1 (en) * | 1999-11-08 | 2003-04-01 | International Business Machines Corporation | Method and apparatus for multi-stage hang recovery in an out-of-order microprocessor |
US7814490B2 (en) * | 2004-10-14 | 2010-10-12 | International Business Machines Corporation | Apparatus and methods for performing computer system maintenance and notification activities in an opportunistic manner |
US7246218B2 (en) * | 2004-11-01 | 2007-07-17 | Via Technologies, Inc. | Systems for increasing register addressing space in instruction-width limited processors |
US7734897B2 (en) * | 2005-12-21 | 2010-06-08 | Arm Limited | Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads |
US7921279B2 (en) * | 2008-03-19 | 2011-04-05 | International Business Machines Corporation | Operand and result forwarding between differently sized operands in a superscalar processor |
US9336003B2 (en) * | 2013-01-25 | 2016-05-10 | Apple Inc. | Multi-level dispatch for a superscalar processor |
US20140281413A1 (en) * | 2013-03-14 | 2014-09-18 | Mips Technologies, Inc. | Superforwarding Processor |
US10372458B2 (en) | 2015-04-01 | 2019-08-06 | Huawei Technologies Co., Ltd | Method and apparatus for a self-clocked, event triggered superscalar processor |
US10275250B2 (en) * | 2017-03-06 | 2019-04-30 | Arm Limited | Defer buffer |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS581246A (ja) * | 1981-06-26 | 1983-01-06 | Fujitsu Ltd | 命令処理順序制御方式 |
JPS58178464A (ja) * | 1982-04-14 | 1983-10-19 | Hitachi Ltd | 並列演算処理装置 |
US4594660A (en) * | 1982-10-13 | 1986-06-10 | Honeywell Information Systems Inc. | Collector |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
EP0312764A3 (en) * | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
US5003462A (en) * | 1988-05-31 | 1991-03-26 | International Business Machines Corporation | Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means |
EP0365322A3 (en) * | 1988-10-19 | 1991-11-27 | Hewlett-Packard Company | Method and apparatus for exception handling in pipeline processors having mismatched instruction pipeline depths |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
JP3153906B2 (ja) * | 1989-02-24 | 2001-04-09 | アドヴァンスド マイクロ デヴァイセス インコーポレイテッド | コンピュータの分散型パイプライン制御装置及び方法 |
US5197138A (en) * | 1989-12-26 | 1993-03-23 | Digital Equipment Corporation | Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching |
-
1993
- 1993-09-29 CA CA002107305A patent/CA2107305A1/en not_active Abandoned
- 1993-12-20 KR KR1019930028553A patent/KR0122527B1/ko not_active IP Right Cessation
- 1993-12-22 JP JP5325150A patent/JP2843750B2/ja not_active Expired - Fee Related
- 1993-12-27 EP EP93120945A patent/EP0606643A1/en not_active Withdrawn
- 1993-12-29 TW TW082111129A patent/TW242672B/zh active
-
1994
- 1994-01-06 CN CN94100121A patent/CN1041566C/zh not_active Expired - Fee Related
- 1994-06-07 US US08/255,130 patent/US6209081B1/en not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
Proceedings of the 12th Annual International Symposium on Computer Architectuire,(1985−6)(米)IEEE pp.36−44"Implementation of Precise Interrupts in Pipelined Processor" |
村上和彰外2名″SIMP(単一命令流/多重命令パイプライン)方式に基づくスーパースカラ・プロセッサの改良方針"、電子情報通信学会技術研究報告,Vol.90,No.144(CPSY90−54)pp.97−102 |
Also Published As
Publication number | Publication date |
---|---|
KR0122527B1 (ko) | 1997-11-20 |
TW242672B (ja) | 1995-03-11 |
JPH06236275A (ja) | 1994-08-23 |
CN1041566C (zh) | 1999-01-06 |
CA2107305A1 (en) | 1994-07-09 |
EP0606643A1 (en) | 1994-07-20 |
US6209081B1 (en) | 2001-03-27 |
KR940018743A (ko) | 1994-08-18 |
CN1092881A (zh) | 1994-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2793488B2 (ja) | スーパースカラ・プロセッサ・システムにおいて複数命令を単一サイクルでディスパッチするための方法およびシステム | |
JP2783505B2 (ja) | 独立にアクセスされる中間記憶域を利用してスーパースカラ・プロセッサ・システムにおける命令ディスパッチを改善する方法およびシステム | |
JP2777535B2 (ja) | スーパースカラ・プロセッサ・システムにおける中間記憶バッファの割当てをインデックスする方法およびシステム | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
JP2597811B2 (ja) | データ処理システム | |
EP0638183B1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
JPH10312282A (ja) | 命令完了を改良するための方法および装置 | |
EP1256053B1 (en) | Secondary reorder buffer microprocessor | |
JP2843750B2 (ja) | スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム | |
JPH096611A (ja) | データ処理システムにおけるデータをバッファリングする方法およびシステム | |
JPH09152973A (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
JP2742375B2 (ja) | スーパースカラ・プロセッサにおける命令処理の選択的逐次化の方法およびシステム | |
US5832533A (en) | Method and system for addressing registers in a data processing unit in an indexed addressing mode | |
US5784606A (en) | Method and system in a superscalar data processing system for the efficient handling of exceptions | |
US6625693B2 (en) | Fast exception processing | |
US5758117A (en) | Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor | |
JPH06236274A (ja) | スーパースカラ・プロセッサ・システム内でスカラ命令を追跡する方法およびシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |