(57)【要約】【課題】第１、第２出力信号を送信する内容アドレス指定可能メモリ構造を備えたスーパースケーラ・プロセッサを提供する。【解決手段】スーパースケーラ・プロセッサは、命令セット上でアウトオブオーダ処理を実行する。第１出力信号からは、最も新しくフェッチした命令セットの命令と、以前のインフライト命令との間の依存性を決定し、この依存性を、全てのインフライト命令について依存性マトリックスを生成するために使用することができる。第２出力信号からは、依存性を除去した後に、命令の実行に必要なデータの物理レジスタアドレスを決定することが可能である。【選択図】図１
2004529405.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令と、これに関連する複数のアーキテクチャレジスタとにより構成された命令セット上でアウトオブオーダ処理を実行するためのスーパースケーラ・プロセッサであって、前記スーパースケーラ・プロセッサが、
前記命令セットの複数のインフライト命令を実行するための少なくとも一の実行ユニットと、
複数の物理レジスタと、
前記命令セットから前記命令を取り出すためのフェッチユニットと、
前記命令セットの処理中に、アーキテクチャレジスタの名称を物理レジスタに変更するための命令名称変更ユニット（ＩＲＵ）と、
前記インフライト命令の実行をスケジューリングするための命令スケジューリングユニット（ＩＳＵ）とを備え、前記ＩＳＵが、前記インフライト命令の依存性データを記憶するための依存性マトリックスと、更に、前記依存性マトリックスがインフライト命令の依存性が除去された旨を示す際に、前記インフライト命令の実行に必要な物理レジスタアドレスデータを記憶するための命令待ちバッファ（ＩＷＢ）とを有し、更に、
アレイ部にマップされたコンパレータ部を具備する内容アドレス指定可能メモリ（ＣＡＭ）構造を備え、前記ＣＡＭ構造が、前記依存性マトリックス内に記憶された前記依存性データを生成するための第1出力信号と、前記ＩＷＢ内に記憶された前記物理レジスタアドレスデータを生成するための第２出力信号とを送信することを特徴とするスーパースケーラ・プロセッサ。
【請求項２】
請求項１に記載のスーパースケーラ・プロセッサであって、
前記ＣＡＭ構造が更に、各々が第１、第２出力信号を有する複数のＣＡＭ構造を備え、複数の前記第１出力信号が共に、ＯＲ演算ユニットにて論理的なＯＲ演算にかけられ、依存性データを生成することを特徴とするスーパースケーラ・プロセッサ。
【請求項３】
請求項２に記載のスーパースケーラ・プロセッサであって、
前記命令が第１の所定最大数のレジスタソースフィールド（ＲＳフィールド）と、少なくとも最大数の一のレジスタ宛先フィールド（ＲＤフィールド）とを備え、前記ＣＡＭ構造が更に、前記第１の所定最大数のＣＡＭ構造を具備し、前記ＣＡＭ構造の各々が一のＲＳフィールド専用となっていることを特徴とするスーパースケーラ・プロセッサ。
【請求項４】
請求項１に記載のスーパースケーラ・プロセッサであって、
前記命令が、命令入力データ用の一のアーキテクチャアドレスを有する第１の所定最大数のレジスタソースフィールド（ＲＳフィールド）と、命令出力データ用のアーキテクチャアドレスを有する少なくとも最大数の一のレジスタ宛先フィールド（ＲＤフィールド）とを備え、前記ＣＡＭ構造が更に、
前記コンパレータ部を備え、前記コンパレータ部が、フェッチした命令のＲＳフィールドをインフライト命令のＲＤフィールドと比較するためのレジスタ依存性チェッカー（ＲＤＣ）を有し、
更に第１出力信号を備え、前記第１出力信号は、前記ＲＤＣが前記ＲＳフィールドとＲＤフィールド間に一致、つまりヒットを検出した際に前記ＲＤフィールドの該アーキテクチャアドレスを表すヒット検出信号が生成され、前記ヒット検出信号が更に、前記ＣＡＭ構造のアレイ部へ送信されることを特徴とするスーパースケーラ・プロセッサ。
【請求項５】
請求項４に記載のスーパースケーラ・プロセッサであって、
前記ＣＡＭ構造が更に、
インフライト物理レジスタマッパ（ＩＰＭ）を具備する前記アレイ部と、
前記ＩＰＭが前記ヒット検出信号を受信した際に生成された前記ＲＤフィールドの物理レジスタアドレスを表す前記ＩＰＭの出力信号を含む前記第２出力信号とを備えることを特徴とするスーパースケーラ・プロセッサ。
【請求項６】
請求項４に記載のスーパースケーラ・プロセッサであって、
前記ＣＡＭ構造が更に、複数の第１所定数のＣＡＭ構造を備え、該ＣＡＭ構造の各々が一のＲＳフィールド専用となっていることを特徴とするスーパースケーラ・プロセッサ。
【請求項７】
請求項６に記載のスーパースケーラ・プロセッサであって、
前記ＣＡＭ構造の各々のヒット検出信号が共に、ＯＲ演算ユニットにて論理的なＯＲ演算にかけられ、依存性データを生成することを特徴とするスーパースケーラ・プロセッサ。
【請求項８】
請求項７に記載のスーパースケーラ・プロセッサであって、更に、
前記複数の物理レジスタを備え、該物理レジスタが、前記命令セットの第２所定最大数のインフライト命令を記憶するためのキューエリアを有し、
前記フェッチユニットを更に備え、該フェッチユニットが、第３の所定個定数の命令を有するバンドルを前記命令セットから取り出すことを特徴とする請求項７に記載のスーパースケーラ・プロセッサ。
【請求項９】
請求項８に記載のスーパースケーラ・プロセッサであって、
前記バンドル内の命令間の依存性を表す出力信号を含んだ内部依存性チェッカーを更に備え、前記内部依存性チェッカーの出力信号が、前記ヒット検出信号の前記論理なＯＲ演算にかけられた出力信号と組み合わされ、依存性データを生成することを特徴とするスーパースケーラ・プロセッサ。
【請求項１０】
請求項９に記載のスーパースケーラ・プロセッサであって、
前記ＲＤＣが更に、
複数の前記第２所定数のエントリ構造を備え、該エントリ構造の各々が複数の該第３所定数のコンパレータを具備し、該コンパレータの各々が前記バンドル内にある一の命令の専用となっており、
前記インフライト命令の各ＲＤフィールドが、単一のエントリ構造によって、前記バンドル内にある全ての命令と実質的に同時に比較されることを特徴とするスーパースケーラ・プロセッサ。
【請求項１１】
請求項１０に記載のスーパースケーラ・プロセッサであって、
前記ヒット検出信号が更に、大きさが前記第２所定数×前記第３所定数であるアレイを有し、該アレイが、前記バンドル内の各命令と比較して、該エントリ構造の各々について検出したヒットの出力を含むことを特徴とするスーパースケーラ・プロセッサ。
【請求項１２】
複数の命令と、これに関連する複数のアーキテクチャレジスタとにより構成された命令セット上でアウトオブオーダ処理を実行するためのスーパースケーラ・プロセッサであって、第１所定最大数のレジスタソースフィールド（ＲＳフィールド）と、少なくとも最大数の一のレジスタ宛先フィールド（ＲＤフィールド）とを有し、前記スーパースケーラ・プロセッサが、
前記命令セットの複数のインフライト命令を実行するための少なくとも一の実行ユニットと、
複数の物理レジスタと、
前記命令セットから該命令を取り出すためのフェッチユニットと、
前記命令セットの処理中に、アーキテクチャレジスタの名称を物理レジスタに変更するための命令名称変更ユニット（ＩＲＵ）と、
前記インフライト命令の実行をスケジューリングするための命令スケジューリングユニット（ＩＳＵ）とを備え、前記ＩＳＵが、該インフライト命令の依存性データとを記憶するための依存性マトリックスと、更に、該依存性マトリックスがインフライト命令の依存性が除去された旨を示す際に、前記インフライト命令の実行に必要な物理レジスタアドレスデータを記憶するための命令待ちバッファ（ＩＷＢ）とを有し、更に、
コンパレータ部がアレイ部にマップされている第１所定数の内容アドレス指定可能メモリ（ＣＡＭ）構造を備え、前記ＣＡＭ構造の各々が１つのＲＳフィールドの専用とされ、第１、第２出力信号を送信し、前記ＣＡＭ構造の第１出力信号が共に、ＯＲ演算ユニットにおいて論理的なＯＲ演算にかけられ、前記依存性マトリックスに記憶された依存性データを生成し、各ＣＡＭ構造のための前記第２出力信号が共に組み合わされて、前記ＩＷＢに記憶された該物理レジスタアドレスデータを生成することを特徴とするスーパースケーラ・プロセッサ。
【請求項１３】
請求項１２に記載のスーパースケーラ・プロセッサであって、
前記ＲＳフィールドが命令入力データのためのアーキテクチャアドレスを有し、前記ＲＤフィールドが命令出力データのためのアーキテクチャアドレスを有し、前記ＣＡＭ構造が更に、
前記コンパレータ部を備え、該コンパレータ部が、フェッチした命令のＲＳフィールドをインフライト命令のＲＤフィールドと比較するためのレジスタ依存性チェッカー（ＲＤＣ）を具備し、
更に前記第１出力信号を有し、該第１出力信号が、該ＲＳフィールドとＲＤフィールド間に一致、つまりヒットが該ＲＤＣによって検出された際に生成される、該ＲＤフィールドのアーキテクチャアドレスを表すヒット検出信号を有し、前記ヒット検出信号が更に該ＣＡＭ構造のアレイ部へ送信され、
インフライト物理レジスタマッパ（ＩＰＭ）を備えた前記アレイ部を更に有し、
前記第２出力信号を更に有し、該出力信号が、該ＩＰＭがヒット検出信号を受信した際に生成される前記ＲＤフィールドの物理レジスタアドレスを表す前記ＩＰＭの出力を有することを特徴とするスーパースケーラ・プロセッサ。
【請求項１４】
請求項１３に記載のスーパースケーラ・プロセッサであって、更に、
前記複数の物理レジスタを備え、該物理レジスタが、前記命令セットの第２所定最大数のインフライト命令を記憶するためのキューエリアを設け、
第３所定数の命令を有するバンドルを前記命令セットから取り出す前記フェッチユニットを更に備え、
前記ＲＤＣが複数の前記第２所定数のエントリ構造を更に含み、該エントリ構造の各々が複数の第３所定数のコンパレータを備え、該コンパレータの各々が前記バンドル内の１つの命令の専用となっており、
前記ヒット検出信号を生成するために、前記インフライト命令の各ＲＤフィールドが、単一のエントリ構造によって、前記バンドル内の全ての命令と実質的に同時に比較されることを特徴とするスーパースケーラ・プロセッサ。
【請求項１５】
コンピュータシステムであって、
バスと、
入力／出力装置と対話する入力／出力サブシステムと、
メモリサブシステムとを備え、前記メモリサブシステムが、複数の命令と、これに関連した複数のアーキテクチャレジスタとを有する一の命令セットを記憶するためのメモリを具備し、更に、
スーパースケーラ・プロセッサを備え、前記スーパースケーラ・プロセッサが、前記命令セット上でアウトオブオーダ処理を実行し、前記バスを介して、前記入力／出力サブシステム及びメモリサブシステムと連絡し、前記スーパースケーラ・プロセッサが、
前記命令セット内にある複数のインフライト命令を実行するための少なくとも一の実行ユニットと、
複数の物理レジスタと、
前記命令セットから複数の命令を取り出すためのフェッチユニットと、
前記命令セットの処理中にアーキテクチャレジスタの名称を物理レジスタに変更するための命令名称変更ユニット（ＩＲＵ）と、
前記インフライト命令の実行をスケジューリングするための命令スケジューリングユニット（ＩＳＵ）とを備え、該ＩＳＵが、前記インフライト命令の依存性データを記憶するための依存性マトリックスと、前記依存性マトリックスが前記インフライト命令の依存性が除去されたことを表す場合に、前記インフライト命令の実行に必要な物理レジスタアドレスデータを記憶するための命令待ちバッファ（ＩＷＢ）とを有し、
前記コンピュータシステムが、アレイ部にコンパレータ部がマップされている内容アドレス指定可能メモリ（ＣＡＭ）構造を更に備え、前記ＣＡＭ構造が、前記依存性マトリックス内に記憶されている前記依存性データを生成するための第１出力信号と、前記ＩＷＢ内に記憶されている前記物理レジスタアドレスデータを生成するための第２出力信号とを送信することを特徴とするコンピュータシステム。
【請求項１６】
請求項１５に記載のコンピュータシステムであって、
前記ＣＡＭ構造が更に、各々が第１、第２出力信号を有する複数のＣＡＭ構造を具備し、前記依存性データを生成するために、複数の前記第１出力信号が共に、ＯＲ演算ユニットにおいて論理的なＯＲ演算にかけられることを特徴とするコンピュータシステム。
【請求項１７】
請求項１６に記載のコンピュータシステムであって、
前記命令が第１所定最大数のレジスタソースフィールド（ＲＳフィールド）と、少なくとも最大数の一のレジスタ宛先フィールド（ＲＤフィールド）とを備え、前記ＣＡＭ構造が更に前記第１所定最大数のＣＡＭ構造を有し、前記ＣＡＭ構造の各々が１つのＲＳフィールド専用として設けられていることを特徴とするコンピュータシステム。
【請求項１８】
請求項１５に記載のコンピュータシステムであって、
前記命令が、命令入力データのためのアーキテクチャアドレスを有する第１所定最大数のレジスタソースフィールド（ＲＳフィールド）と、命令出力データのためのアーキテクチャアドレスを有する、少なくとも最大数の一のレジスタ宛先フィールド（ＲＤフィールド）とを備え、前記ＣＡＭ構造が更に、
フェッチした命令のＲＳフィールドをインフライト命令のＲＤフィールドと比較するためのレジスタ依存性チェッカー（ＲＤＣ）を具備した前記コンパレータ部と、
前記第１出力信号とを備え、前記第１出力信号が、前記ＲＤＣによって前記ＲＳフィールドとＲＤフィールド間に一致、つまりヒットが検出された場合に、前記ＲＤフィールドの前記アーキテクチャアドレスを表すヒット検出信号を含み、前記ヒット検出信号が更に、前記ＣＡＭ構造のアレイ部へ送信されることを特徴とするコンピュータシステム。
【請求項１９】
請求項１８に記載のコンピュータシステムであって、
前記ＣＡＭ構造が更に、
インフライト物理レジスタマッパ（ＩＰＭ）を含む前記アレイ部と、
前記第２出力信号とを備え、該第２出力信号が、前記ＩＰＭがヒット検出信号を受信した際に生成される、前記ＲＤフィールドの物理レジスタアドレスを表す前記ＩＰＭの出力信号を含むことを特徴とするコンピュータシステム。
【請求項２０】
請求項１８に記載のコンピュータシステムであって、
前記ＣＡＭ構造が更に、複数の前記第１所定数のＣＡＭ構造を備え、前記ＣＡＭ構造の各々が１つのＲＳフィールド専用として設けられていることを特徴とするコンピュータシステム。
【請求項２１】
請求項２０に記載のコンピュータシステムであって、
前記依存性データを生成するために、前記各ＣＡＭ構造の検出信号が共に、ＯＲ演算ユニットにおいて論理的なＯＲ演算にかけられることを特徴とするコンピュータシステム。
【請求項２２】
請求項２１に記載のコンピュータシステムであって、更に、
前記命令セットの第２所定数最大数のインフライト構造を記憶するためのキューエリアを含む前記複数の物理レジスタと、
第３の所定固定数の命令を有するバンドルを前記命令セットから取り出すための前記フェッチユニットとを備えていることを特徴とするコンピュータシステム。
【請求項２３】
請求項２２に記載のコンピュータシステムであって、
前記バンドル内にある命令間の依存性を表す出力信号を有する内部依存性チェッカーを更に備え、依存性データを生成するために、前記内部依存性チェッカーの出力信号が、前記ヒット検出信号の論理的なＯＲ演算にかけられた出力信号と組み合わされることを特徴とするコンピュータシステム。
【請求項２４】
請求項２３に記載のコンピュータシステムであって、
前記ＲＤＣが更に、
複数の前記所定数のエントリ構造を具備し、前記エントリ構造の各々が複数の前記第３所定数のコンパレータを備え、前記コンパレータの各々が前記バンドル内にある１つの命令の専用として設けられ、
前記インフライト構造の各ＲＤフィールドが、１つのエントリ構造によって、前記バンドル内の全ての命令と実質的に同時に比較されることを特徴とするコンピュータシステム。
【請求項２５】
請求項２４に記載のコンピュータシステムであって、
前記ヒット検出信号が更に、大きさが前記第２所定数×第３所定数であるアレイを有し、該アレイが、前記バンドル内の各命令と比較して、前記エントリ構造の各々について検出されたヒットの出力を有することを特徴とするコンピュータシステム。
【請求項２６】
スーパースケーラ・プロセッサにより、複数の命令を有する命令セット上でアウトオブオーダ処理を実行するための方法であって、前記方法が、
前記命令セットから前記命令をフェッチし、
前記命令セットの処理中に、前記命令に関連したアーキテクチャレジスタの名称を物理レジスタに変更し、
前記命令セット内にあるインフライト命令の依存データを生成するために、内容アドレス指定可能メモリ（ＣＡＭ）構造から第１出力信号を送信し、
前記依存性データが、前記インフライト命令の依存性が除去されている旨を示す場合に、前記インフライト命令の実行に必要な物理レジスタアドレスデータを生成するために、前記ＣＡＭ構造から第２出力信号を送信し、
前記依存性データを依存性マトリックス内に記憶し、
前記物理レジスタアドレスデータを命令待ちバッファ内に記憶し、
前記インフライト命令を、該依存性データと物理レジスタアドレスデータに基づいて実行するべくスケジューリングし、
前記インフライト命令を実行することを特徴とする方法。
【請求項２７】
請求項２６に記載の方法であって、
前記第１出力信号の送信が更に、
複数のＣＡＭ構造から複数の第１出力信号を送信し、
該依存性データを生成するために、前記第１出力信号が論理的なＯＲ演算にかけられることを特徴とする方法。
【請求項２８】
請求項２６に記載の方法であって、
前記命令が、命令入力データのためのアーキテクチャアドレスを有する第１所定最大数のレジスタソースフィールド（ＲＳフィールド）と、命令出力データのためのアーキテクチャアドレスを有する少なくとも最大数の一のレジスタ宛先フィールド（ＲＤフィールド）とを備え、前記第１出力信号の送信が更に、
フェッチした命令のＲＳフィールドを、前記ＣＡＭ構造のコンパレータ部内にあるインフライト命令のＲＤフィールドと比較し、更に、
前記ＲＳフィールドとＲＤフィールドが一致、つまりヒットした際に、前記ＲＤフィールドのアーキテクチャアドレスを表すヒット検出信号を生成し、
前記ヒット検出信号を更に前記ＣＡＭ構造のアレイ部へと送信することを特徴とする方法。
【請求項２９】
請求項２８に記載の方法であって、
前記第２出力信号の送信が更に、前記アレイ部がヒット検出信号を受信すると前記第２出力信号を生成し、前記第２出力信号が前記ＲＤフィールドの物理レジスタアドレスを表していることを特徴とする方法。
【請求項３０】
請求項２９に記載の方法であって、
前記ＣＡＭ構造が更に、複数の前記第１所定数のＣＡＭ構造を備え、前記ＣＡＭ構造の各々が１つのＲＳフィールドの専用として設けられていることを特徴とする方法。
【請求項３１】
請求項３０に記載の方法であって、
更に、前記依存性データを生成するために、前記各ＣＡＭ構造のヒット検出信号が論理的なＯＲ演算にかけられることを特徴とする方法。
【請求項３２】
請求項３１に記載の方法であって、更に、
前記命令セットから命令のバンドルをフェッチし、
前記バンドル内にある命令の内部依存性を表す内部依存性信号を生成し、
前記依存性データを生成するために、前記内部依存性信号を、論理的なＯＲ演算にかけられた前記ヒット検出信号の出力信号と組み合わせることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してコンピュータシステムのためのプロセッサに関し、更に、より詳細には、命令セット上でアウトオブオーダ処理を実行するためのスーパースケーラに関する。
【背景技術】
【０００２】
プロセッサアーキテクチャのスーパースケーラの実現は、例えば整数及び浮動小数点演算、ロード、記憶、条件付分岐のような共通命令の開始がアウトオブオーダで行われ、個別に実行されるものである。しかし、このような実現には、命令処理に関わるその複雑な設計上の問題が生じる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
明確性の目的から、本願明細書中で使用する特定の用語を定義しておく必要がある。「命令レベルの並列性」とは、プログラムの命令を並列又はアウトオブシーケンス（順序外れ）で実行可能な平均的な度数を意味する。「インフライト」とは、マシン内に命令が存在するが完全に処理されていない状態、例えば、命令が発行待ちをしているバッファ内にあるか、又は、命令が実行中である状態を示す。「依存性」とは、一の命令を、処理、又は別の命令の結果により実行する方法を意味する。
【０００４】
更に、スーパースケーラ・プロセッサはアウトオブオーダ・プロセッサとしても知られている。例えばフォンノイマン型プロセッサのような、より従来型のインオーダ・プロセッサでは、プロセッサは、順次実行で実施される命令を正確な順序で発行し、更に、その結果を同一の順序で書き込む。換言すれば、プロセッサが命令を逐次順序でフェッチし、これをデコード、発行、実行し、再び逐次順序にて書き込む。反対に、アウトオブオーダ・プロセッサはハードウェア及びソフトウェア技術の組み合わせを用い、プログラム内に存在する固有の命令レベルの並列性を利用することで複数命令の並列実行を行う。典型的なスーパースケーラ・プロセッサは、所定数の命令（バンドル）を同時にマシン内にフェッチし、多数の命令「インフライト」を同時に備えることができる。処理速度を高速化するために、命令は、その逐次順序に多少関連して、フェッチ、実行、又、レジスタ変更の実行、再度書き込みを同時に行うことが可能である。プロセッサ上の制約は、結果が正確でなければならない点である。
【０００５】
しかし、プログラムにおける命令レベルの並列性の程度は、その大部分が、命令間に存在し得るデータ依存性の数及びタイプに限定される。頻繁に遭遇する２タイプのデータ依存性が、１）真データ依存性又は読み出し／書き込みデータハザード、２）出力依存性又は書き込み／読み出しデータハザードとして知られている。読み出し／書き込みデータハザード（真データ依存性）では、最新の命令は、前の命令によって生成されたデータを必要とする。例証の方法で、以下の命令順序について考慮する。
【０００６】
（Ｉ１）  ａｄｄ  ｒ１，ｒ２；  ｌｏａｄ  ｒｅｇｉｓｔｅｒ  ｒ１  ｗｉｔｈ  ｔｈｅ  ｃｏｎｔｅｎｔｓ  ｏｆ  ｒ２  ｐｌｕｓ  ｔｈｅ  ｃｏｎｔｅｎｔｓ  ｏｆ  ｒ１．
（Ｉ２）  ｍｏｖｅ  ｒ３，ｒ１；  ｌｏａｄ  ｒｅｇｉｓｔｅｒ  ｒ３  ｗｉｔｈｔｈｅ  ｃｏｎｔｅｎｔｓ  ｏｆ  ｒ１．
第２命令（Ｉ２）はフェッチ及びデコードが可能であるが、第１命令（Ｉ１）の実行まで実行することは不可能である。これは、第２命令（Ｉ２）の入力（ソースレジスタ（ｒ１））の内１つは、第１命令（Ｉ１）の出力（宛先レジスタ（ｒ１））でもあるためである。つまり、第２命令（Ｉ２）は、第１命令（Ｉ１）によって生成されたデータを必要とし、又、Ｉ２がｒ１からデータを読み出せる以前に、Ｉ１がデータをｒ１に書き込むまで待たなければならない。
【０００７】
このような依存性がない状態で、２つの命令を並列してフェッチ、実行することができる。第１、第２命令間に読み出し／書き込みデータハザードが存在する場合、第２命令が、その依存性の除去に必要な数のクロックサイクルだけ遅延される。一般に、任意の最新依存性命令を、その入力値（ソースレジスタ）の全てが、依存している前の命令によって出力値（宛先レジスタ）として生成されるまで、遅延させる必要がある。これにより、スーパースケーラ・プロセッサは、これらの依存性が除去できるまで、この依存性へのフラグ立てが可能でなければならない。
【０００８】
同一のレジスタを、２つの別個の命令内における宛先レジスタとして使用すると、書き込み／読み出しデータハザード（出力依存性）が発生する。この場合、第１命令のデータが第２命令によって上書されてしまう可能性がある。これは基本的に、コンパイラの使用可能なアーキテクチャレジスタがなくなった場合に生じる記憶装置の競合である。（「アーキテクチャレジスタ」という用語は、プログラマがアクセス可能な、例えばアセンブラのようなプログラム言語内のレジスタを表すＲ１〜Ｒ１０といった命令記号の最終セットを参照するソフトウェア概念である。換言すれば、プログラムの論理実行に直接影響する、一の命令セット内に存在するソフトウェアレジスタである。）以下の命令セットについて考慮する。
【０００９】
（Ｉ１）  Ｒ３＝Ｒ３−Ｒ５
（Ｉ２）  Ｒ４＝Ｒ３＋１
（Ｉ３）  Ｒ３＝Ｒ５＋１
（Ｉ４）  Ｒ７＝Ｒ３−Ｒ４
この場合、Ｉ２はＩ１に依存し、Ｉ４はＩ３に依存する。これらは真データ依存性（読み出し／書き込みデータハザード）の例である。しかし、Ｉ１とＩ３間の関係は異なる。先に定義したような真データ依存性は存在しないが、Ｉ１以前にＩ３を完了すべく実行した場合、Ｉ４の実行によりＲ３の内容の誤値がフェッチされてしまう。その結果、正確な出力値を生成するために、Ｉ１の後にＩ３を終了する必要が生じる。
【００１０】
初期モデルのプロセッサ、例えばＩｎｔｅｌ２８６のプログラムの多くを、後続モデルのプロセッサ、例えばＩｎｔｅｌ５８６上で実行しなければならなかった理由から、書き込み／読み出しデータハザード（出力依存性）が長年にわたって増大した。新規モデルのマシンはよりパワフルであるため、物理レジスタ（実ハードウェアレジスタ）数は実質的に増加したが、アーキテクチャレジスタ（ソフトウェアレジスタ）数が増加することはなかった。
【００１１】
しかし、多くのプロセッサでは、物理レジスタ数がアーキテクチャレジスタ数を遥かに超えるため、いわゆる「レジスタの名称変更」という処理によって書き込み／読み出しデータハザードを解決することができる。物理レジスタがプロセッサハードウェアによって動的に割り当てられた場合に、レジスタの名称変更は、様々な時点で命令が必要とするアーキテクチャレジスタの値と関連付けられる。上述した命令の、レジスタ名称変更後の順序について考慮する。
【００１２】
（Ｉ１）  Ｒ３（ｂ）＝Ｒ３（ａ）−Ｒ５（ａ）
（Ｉ２）  Ｒ４（ａ）＝Ｒ３（ｂ）＋１
（Ｉ３）  Ｒ３（ｃ）＝Ｒ５（ａ）＋１
（Ｉ４）  Ｒ７（ａ）＝Ｒ３（ｃ）−Ｒ４（ａ）
括弧内の文字を除いたレジスタリファレンスは、命令内に見られるアーキテクチャレジスタを意味する。括弧内の文字を伴うレジスタリファレンスは、新規の値を有するべく割り当てられた物理レジスタを意味する。この例では、Ｒ３（ａ）とＲ３（ｃ）は２つの別個の物理レジスタであるため、命令Ｉ３内にレジスタＲ３（ｃ）を作成することで、第１命令（Ｉ１）上の書き込み／読み出しデータハザードが回避される。多くの場合、レジスタの名称変更は、命令名称変更ユニット（ＩＲＵ）と呼ばれる機能ユニットを用いて実行される。
【００１３】
しかし、名称変更プロセスによってスーパースケーラ・プロセッサ内部に更なる問題が生じる。スーパースケーラ・プロセッサは、命令間の依存性へのフラグ立てが可能でなければならないだけでなく、フェッチした各々の依存性命令について、全ての物理レジスタをアーキテクチャレジスタにマップできることが必要である。更に、スーパースケーラ・プロセッサは、フェッチした最新のバンドル内にある命令間の依存性（内部依存性）の決定が可能でなければならないと同時に、フェッチしたバンドル内の命令とインフライト命令間の依存性（相互依存性）の決定も可能でなければならない。更に、決定プロセスを１サイクル内で高速実行する必要がある。
【００１４】
更に、命令の依存性と、該命令の実行に必要な物理レジスタの必須アドレスの両方を高速決定できる改善されたスーパースケーラ・プロセッサが要求される。
【課題を解決するための手段】
【００１５】
上述の問題点に鑑み、本発明は、第１、第２出力信号を送信する内容アドレス指定可能メモリ（ＣＡＭ）構造を実装したスーパースケーラ・プロセッサを提供することにより、従来技術にはない利点及び応用形態を付与する。スーパースケーラ・プロセッサは、命令セット上でアウトオブオーダ処理を実行する。第１出力信号からは、フェッチした最新の命令セットの命令と、これよりも以前のインフライト構造との間の依存性を決定でき、これを、全てのインフライト命令についての依存性マトリックスの生成に使用することができる。第２出力信号からは、依存性の除去後に、命令の実行に必要なデータの物理レジスタアドレスを決定することが可能である。
【００１６】
本発明により、標準及び制御可能な設計における依存性及び必須の物理アドレスを決定することで、実装するハードウェア及びソフトウェアを減少させるスーパースケーラ・プロセッサが可能になる。更に、該設計は、多くの場合、依存性及びアドレスの決定を１クロックサイクル内で実行することができるため、超高速の処理速度が得られる。
【００１７】
これら及びこれ以外の利点は、複数の命令とこれに関連した複数のアーキテクチャレジスタから成る命令セット上でアウトオブオーダ処理を実行するためのスーパースケーラ・プロセッサを提供することで、本発明の例証的実施形態において得られる。スーパースケーラ・プロセッサは、命令セットの複数のインフライト命令を実行するための少なくとも一の実行ユニットを実装している。更に、複数の物理レジスタと、該命令セットから命令をフェッチするためのフェッチユニットも備えている。プロセッサの命令名称変更ユニット（ＩＲＵ）を使用して、アーキテクチャレジスタの名称を物理レジスタに変更することで、命令セットの処理中に遭遇する書き込み／読み出しデータハザードが解決される。プロセッサの命令スケジューリングユニット（ＩＳＵ）を使用して、インフライト命令の実行をスケジューリングすることができる。ＩＳＵは、インフライト命令の依存性データを記憶するための依存性マトリックスと、更に、依存性マトリックスがインフライト命令の依存性が除去された旨を示す場合にインフライト命令の実行に必要な物理レジスタアドレスデータを記憶しておくための命令待ちバッファ（ＩＷＢ）とを含んでいる。プロセッサのＣＡＭ構造は、アレイ部にマップされたコンパレータ部を設けている。ＣＡＭ構造は、依存性マトリックス内に記憶されている依存性データを生成するための第１出力信号を送信し、又、ＩＷＢ内に記憶されている物理レジスタアドレスデータを生成するための第２出力信号を送信する。
【００１８】
本発明の別の実施形態では、ＣＡＭ構造は更に、第１、第２出力信号を各々有する複数のＣＡＭ構造を実装している。第１出力信号は共に、ＯＲ演算装置によって論理的なＯＲ演算にかけられ、これにより依存性データが生成される。
【００１９】
スーパースケーラ・プロセッサの別の実施形態では、命令は、入力データのためのアーキテクチャアドレスを含んだ、第１所定最大数のレジスタソースフィールド（ＲＳフィールド）を備えている。更に、該命令は、出力データのためのアーキテクチャアドレスを含む、少なくとも最大数である一のレジスタ宛先フィールド（ＲＤフィールド）を備えている。ＣＡＭ構造のコンパレータ部は、フェッチしたインフライトではない命令のＲＳフィールドを、インフライト命令のＲＤフィールドと比較するためのレジスタ依存性チェッカー（ＲＤＣ）を具備している。ＣＡＭの第１出力信号は、ＲＤフィールドのアーキテクチャアドレスを示すヒット検出信号を含んでいる。ヒット検出信号の生成は、ＲＤＣがＲＳフィールド及びＲＤフィールド間に一致、つまりヒットを検出した場合に行われる。更に、ヒット検出信号がＣＡＭ構造のアレイ部へ送信される。アレイ部は、インフライト物理レジスタマッパー（ＩＰＭ）を備え、第２出力信号はこのＩＰＭの、ＲＤフィールドの物理レジスタアドレスを表す出力信号を含んでおり、該出力信号はＩＰＭがヒット検出信号を受信すると生成される。
【発明の効果】
【００２０】
標準及び制御可能な設計における依存性及び必須の物理アドレスを決定することで、実装するハードウェア及びソフトウェアを減少でき、更に、依存性及びアドレスの決定を１クロックサイクル内で実行することができるため、高速化の実施が可能である。又、アーキテクチャレジスタの名称を物理レジスタに変更することで、命令セットの処理中に遭遇する書き込み／読み出しデータハザードが解決される。
【発明を実施するための最良の形態】
【００２１】
明確性の目的から、この説明中で使用する用語を以下の通りに列挙しておく。
【００２２】
ＣＡＭ：  内容アドレス指定可能メモリ
ＣＣ：    条件コード
ＩＰＭ：  インフライト物理レジスタマッパー
ＩＲＵ：  命令名称変更ユニット
ＩＳＵ：  命令スケジューリングユニット
ＩＷＢ：  命令待ちバッファ
ＲＤ：    レジスタ宛先
ＲＤＣ：  レジスタ相互依存性チェッカー
ＲＳ：    レジスタソース
ＳＰ：    スーパースケーラ・プロセッサ
図１を参照すると、本発明によるコンピュータシステム１０の例証的実施形態を示し、ここで、該コンピュータシステム１０はスーパースケーラ・プロセッサ（ＳＰ）１２、入力／出力サブシステム１４、メモリサブシステム１６を備え、この３つはバス１８を介して相互に通信する。入力／出力サブシステム１４は、複数の入力／出力装置（図示せず）、例えばキーボード、ディスク記憶装置、ネットワークインターフェース、ディスプレイユニット、マウスのようなポインティング装置との接続が可能である。メモリサブシステムは、多様な形態のランダムアクセスメモリ２０、読み出し専用メモリ２２、プログラム可能読み出し専用メモリ２４のような、一はそれ以上のタイプのメモリを備えている。
【００２３】
ＳＰ１２は制御ユニット２６、様々な実行ユニット２８、及び、メモリサブシステム１６に記憶されたコンピュータプログラム内の命令を実行する物理（実ハードウェア）データレジスタ３０を実装している。バス・インターフェース・ユニット３２は命令を制御し、更にＳＰ１２との間でデータ転送を行い、複数の内部バス３４が制御ユニット２６とレジスタ３０間、実行ユニット２８とバス・インターフェース・ユニット３２間の通信を行う。メモリシステム１６から命令をフェッチし、その結果を再びサブメモリシステム１６に記憶し、出力と入力／出力サブシステム１４との交換を行うため、ＳＰ１２は中央処理装置として機能する。
【００２４】
一般に、演算論理機構３６、浮動小数点ユニット３８、及び、図形を表示するための命令、又はデータアレイの計算を実行するための専用ユニット（図示せず）を含む多数の実行ユニット２８を設けることができる。演算論理機構３６は、整数データタイプ上の加算、減算、桁送り、循環のような命令と、ビットワイズ論理演算のほぼ全てを実行する。浮動小数点ユニット３８は、多くの場合、上述とは別の加算、乗算、除算ユニットと、演算数及び結果のための個別レジスタセットを含んでいる。
【００２５】
物理レジスタ３０は、高速記憶装置を提供し、ＳＰ１２が命令及びデータにアクセスできるようにするためのデータアレイである。レジスタ３０は、ＳＰ１２によって処理中の多数の段階に分割された、最大１２８個のインフライト命令を記憶するためのキューエリア４２を備えている。この実施形態では、最大１２８個のインフライト命令を記憶するキューエリア４２について記述しているが、当業者には、キューエリアを任意の所定数のインフライト命令を保持するように設計できることが理解できるであろう。
【００２６】
ＳＰ１２内に存在するアーキテクチャレジスタ数が命令セットアーキテクチャ仕様によって指定される。アーキテクチャレジスタは、プログラマがＳＰ１２をプログラミングする際に用いる記憶場所（物理レジスタ）となることを目的としている。ＳＰ１２内で物理的に実現されるレジスタ３０の実数は設計チームによって決定され、又、アーキテクチャレジスタの数よりも多いことが一般的である。そのため、アーキテクチャレジスタ及び物理レジスタ３０間に少なくとも１対１（又、通常はそれ以上）の通信が設けられる。ＳＰ１２がアーキテクチャレジスタに物理レジスタ３０を「オンザフライ」で指定する。こうすることで、ＳＰ１２がＳＰ１２のリソースを動的に割り当て、リソースの最適な使用が維持される。この単純な例として、設計者がアーキテクチャレジスタを２個だけ使用するプログラムを書き込んだ場合でも、ＳＰ１２が使用する物理レジスタ３０は２個のみに限定されないというものがある。ＳＰ１２はその全ての物理レジスタ３０を使用して、プログラム実行の異なる段階で２個のアーキテクチャレジスタを表すことができる。
【００２７】
制御ユニット２６は、命令をデコードし、異なる実行ユニット２８の動作を順序付けする。更に、リソース間の競合を解決し、内外の割り込みに応答する。又、制御装置２６は固定論理回路（ハードワイヤード）による実現、マイクロプログラミング、あるいはこの両方が可能である。制御装置２６は、命令のパイプライン処理の実行に必要な機能ユニットを備えている。
【００２８】
「パイプライニング」と言う用語は、1つのオペレーションが複数の段階に分割され、その各々がオペレーションに必要な断片的な作業を実行するというアプローチを意味する。これらの段階は線形順序又はパイプで接続している。１つのオペレーションが線形順序の一端から入り、段階を１つずつ進み、その結果がパイプの他端から出る。パイプがアセンブリラインとして、すなわち、それぞれ異なる段階にある複数のオペレーションが同時に進行する方法で動作することで、並列性が得られる。一般に、１個の命令セットのパイプライン処理では、制御ユニット２６内のフェッチユニット４４、命令名称変更ユニット（ＩＲＵ）４６、命令スケジューリングユニット（ＩＳＵ）４８、再度書き込みユニット５０といった機能ユニットを少なくとも使用する。
【００２９】
一般に、フェッチユニットはメモリ又は他のレジスタより命令及びデータを取り出す。スーパースケーラ・プロセッサＳＰ１２のフェッチユニット４４が、いわゆるバンドル４５から８個の命令を同時に取り出す（図２を参照）。以下で更に詳細に説明するように、アウトオブオーダ・プロセッサ処理を実行するために、ＳＰ１２が、バンドル４５内の８個の命令Ｉ（０）〜Ｉ（７）間の内部依存性、バンドル４５とインフライト命令の間の相互依存性を決定する。この実施形態では８個の命令から成るバンドルを生成するが、当業者は、バンドルから任意の所定数の命令をフェッチするために、アウトオブオーダ・プロセッサ、つまりスーパースケーラ・プロセッサを設計できることを認識するであろう。
【００３０】
必要に応じて、すなわち、値がＩＳＵ４８に付する前に、この値が物理レジスタの使用に際して矛盾する場合には、ＩＲＵ４６がアーキテクチャレジスタの名称をバンドル４５内の命令に関連して物理レジスタに変更する。命令セットの固有の並列性を最大化するべく、ＩＳＵ４８が、最新のフェッチバンドル４５とこれよりも前のインフライト命令の間における全ての依存性を監視する。依存性が除去されると、ＩＳＵ４８が一又はそれ以上の実行ユニット２８、例えば演算論理ユニット３６、浮動小数点ユニット３８、又はこれ以外の専用ユニットを実行するための命令を発行する。実行終了後に、再度書き込みユニット５０が、新規に計算された出力データを適切な宛先レジスタ内に書き込む。
【００３１】
しかし、ＩＳＵ４８がフェッチバンドル４５内の最新の命令と、これよりも前のインフライト命令の間の依存性を維持するために、以下に示すバンドル内の各命令に２つの重要な情報が供給される。
【００３２】
１）  最新のバンドル内の一の命令が依存するインフライト命令のリスト、すなわち、ＩＳＵ４８の依存性マトリックス５２内に記憶されている依存性データ。
【００３３】
２）  依存性を除去した場合にインフライト命令の実行に必要なデータを含む物理レジスタのアドレス、すなわち、ＩＳＵ４８の命令待ちバッファ（ＩＷＢ）内に記憶されている物理レジスタアドレスデータ。
【００３４】
命令待ちバッファ５４は、命令の実行待ち時間内にその命令のデータ位置とオペレーションコードについて質問する。ＳＰ１２内で、通常は命令完了後にデータが使用可能になると、依存性マトリックス５２は依存性が既に存在していないと決定し、次に実行する命令セットを「選択」する。かかる命令の実行に必要な情報はＩＷＢ５４内に記憶されているため、ＳＰ１２は、その命令の内容、又、その実行方法を決定すべくＩＷＢ５９のエントリの読み出しを行えばよい。
【００３５】
依存データと物理レジスタアドレスデータが迅速に決定され、これらが４個の内容アドレスメモリ（ＣＡＭ）構造５６、５７、５８、５９を使用してＩＳＵ４８へと送信される。各ＣＡＭ構造５６〜５９は、レジスタ依存性チェッカー（ＲＤＣ）として使用されるコンパレータ部６０を搭載している。コンパレータ部６０は、インフライト物理レジスタマッパー（ＩＰＭ）として使用するアレイ部６１にマップされる。
【００３６】
図２を参照すると、バンドル４５内には８つの命令Ｉ（０）〜Ｉ（７）が存在し、これらがメモリサブシステム１６からフェッチユニット４４によって同時にフェッチされる。フェッチした最新のバンドル４５の各命令は４つのデータフィールド、つまりＲＳ１フィールド、ＲＳ２フィールド、ＲＤ／ＲＳ３フィールド、ＣＣフィールドを含んでおり、同図中では、各フィールドに参照符号１００、１０２、１０４、１０６をそれぞれ付している。ＲＳ１フィールド１００、ＲＳ２フィールド１０２は、各命令Ｉ（０）〜Ｉ（７）についての入力データを含むアーキテクチャレジスタ・アドレス（命令ソース）を有する８ビットレジスタのソースフィールド（ＲＳフィールド）である。ＲＤ／ＲＳ３  １０４は、命令Ｉ（０）〜Ｉ（７）の実行後に出力の書き込みを行うアーキテクチャレジスタ・アドレス（命令先）を含む８ビットのレジスタ宛先フィールド（ＲＤフィールド）として使用することができる。あるいは、ＲＤ／ＲＳ３フィールド１０４を、ＲＤフィールドではなく、８ビットのソースレジスタフィールド（ＲＳ３フィールド）として使用することも可能である。ＣＣフィールド１０６は、負、正、ゼロ、オーバーフローのような実行結果の記述に使用する各命令Ｉ（０）〜Ｉ（７）に関連した４ビットの条件コードを含む専用のソースレジスタフィールドである。この構成に基づき、最大数４つのソースレジスタフィールド、つまり任意の最新の命令Ｉ（０）〜Ｉ（７）内に含まれるＲＳ１フィールド、ＲＳ２フィールド、ＲＳ３フィールド、ＣＣフィールドを設けることが可能となる。この実施形態では、８又は４ビットの４つのフィールドについて記述しているが、当業者は、任意数の所定のビット数を指定した任意数の所定のフィールドの使用が可能であることを理解するであろう。
【００３７】
再び図１を参照すると、ＣＡＭ構造５６〜５９のＲＤＣ６０は、入力される全てのバンドル４５の命令ソース（ＲＳフィールド）を全てのインフライト命令先（ＲＤフィールド）と比較し、その間にある全ての真の依存性（読み出し／書き込みデータハザード）を決定する。バンドル４５の命令Ｉ（０）〜Ｉ（７）の各々は、インフライト命令先レジスタフィールドに依存する使用可能なソースレジスタフィールドを最大４つ設けることができるため、４セットのＣＡＭ構造５６〜５９の実装が可能である。ＣＡＭ構造５６〜５９の各々は１つの命令フィールドの専用として設けられており、つまり、ＣＡＭ構造５６がバンドル４５のＲＳ１フィールド１００を全てのインフライトＲＤと比較し、ＣＡＭ構造５７がバンドル４５のＲＳフィールド１０２を全てのインフライトＲＤと比較し、ＣＡＭ構造５８がＲＤ／ＲＳ３フィールド１０４を比較し、ＣＡＭ構造５９がＣＣフィールド１０６を比較する。
【００３８】
ＣＡＭ構造５６〜５９のＲＤＣ６０（コンパレータ部）が一致（ヒット）を検出すると、真の依存性が検出され、「ヒット検出信号」６２がＩＰＭ６１へ送信される。これと同時に、ヒット検出信号６２はＯＲ演算ユニット６６にて、別のＣＡＭ構造からの別のヒット検出信号６２と共に、ＣＡＭ構造５６〜５９の追加の出力信号として論理的なＯＲ演算にかけられる。ＯＲ演算ユニット６６は、ＯＲゲート、論理ゲートのアレイ、又はＣＭＯＳドミノ論理ゲートのような装置を含むことができる。ＣＡＭ構造５６〜５９のＩＰＭ（アレイ部）６１はヒット検出信号６２を受信すると、そのヒットを生成した特定のソースレジスタフィールド、つまりＲＳ１、ＲＳ２、ＲＳ３／ＲＤ又はＣＣに含まれるアーキテクチャレジスタ・アドレスにマップされた物理レジスタアドレスの出力信号６４を生成する。
【００３９】
ＩＳＵ４８の依存性マトリックス５２は、入力される命令のどのフィールドによってその依存性が生じたかを知る必要がないため、各インフライト命令について一の依存性信号６７を送信するために、一の命令に伴う４つのヒット検出信号６２が、ＯＲ演算ユニット６６によって共に論理的なＯＲ演算にかけられる。更に、内部依存性チェッカー６８が内部依存性出力信号を送信し、この内部依存出力信号が依存性信号６７と組み合わされて、ＩＳＵ４８の依存性マトリックス５２へ送信される依存性アレイ７０を提供する。
【００４０】
これと同時に、ＩＳＵ４８のＩＷＢ５４は、依存性が存在する場合、入力される命令の全てのＲＳフィールドについて物理レジスタのアドレスを知る必要がある。従って、ＩＰＭ６１の出力信号６４が組み合わされ、関連する物理レジスタアドレス制御ワード７２が形成される。その後、制御ワード７２がＩＳＵ４８のＩＷＢ５４へ送信される。
【００４１】
図３を参照すると、ＣＡＭ構造５６〜５９の詳細な略図を示している。ＣＡＭ構造５６〜５９の各々が、バンドル４５の８つの命令Ｉ（０）〜Ｉ（７）の全てについて、それぞれ専用とするフィールド、つまりＲＳ１フィールド１００、ＲＳ２フィールド１０２、ＲＤ／ＲＳ３フィールド１０４、ＣＣフィールド１０６を、最大１２８個のインフライトＲＤフィールドと比較する。
【００４２】
図２に示すように、例証の方法により、フェッチユニット４４が８つの命令Ｉ（０）〜Ｉ（７）から成る最新のバンドル４５をフェッチし、キューエリア４２内のインフライト命令が理論上最大数である１２８個のうちの１２０個であると推測する。各ＣＡＭ構造５６〜５９は本質的に同様の方法で機能するため、この例証ではＣＡＭ構造５６に注目することで記述を簡略化している。ＣＡＭ構造５６のＲＤＣ６０は、データドライバ部分７４、１２８個のエントリ構造で構成された１セット７６（図４に最良に示す）、理論上最大数であるインフライト命令のＲＤフィールドの各々に関連付けられたエントリ構造７６を含む。データドライバ部分が、バンドル４５内の８つの命令Ｉ（０）〜Ｉ（７）の各々について、８ビット長のＲＳ１フィールド１００を表す８×８のデータアレイを信号ライン７８から受信する。データドライバ部分７４が、ＲＳ１フィールド１００を１２８個のエントリ構造７６の各々に条件付けし、これを送信する。
【００４３】
図４を参照すると、図３の構造を前提とした場合のエントリ構造７６の詳細な略図を示す。各エントリ構造７６は８つのコンパレータ８２から成る１列を備えており、各々のコンパレータ８２は命令Ｉ（０）〜Ｉ（７）のＲＳ１フィールド１００の各々に割り当てられている。全てのコンパレータ８２は、命令Ｉ（０）〜Ｉ（７）の各々のＲＳ１フィールド１００を、エントリ構造７６が関連付けされている先行のインフライト命令のＲＤフィールド８４と実質的に同時に比較する。
【００４４】
次に、１２８個のエントリ構造７６の各々が８×１のヒット検出ベクトル８６を生成する。ヒット検出ベクトル８６の論理電圧高（論理１）ビットの各々は、インフライトＲＤフィールド８４と一の命令Ｉ（０）〜Ｉ（７）のＲＳ１フィールド１００との間で検出されたヒット（又は比較）を表す。ヒット検出信号６２は、総数１２８個の８ビットのヒット検出ベクトル８６を組み合わせた総出力を含む１２８×８アレイである。ヒット検出信号６２はＩＰＭ６１へ、ＣＡＭ構造５６の出力信号として同時に送信され、ＯＲ演算ユニット６６にて論理的なＯＲ演算にかけられる。
【００４５】
再び図３を参照すると、ＣＡＭ構造５６〜５９のＩＰＭ６１はアレイ部であり、フェッチした最新のバンドル４５が依存する、これよりも前のインフライト命令について、物理レジスタアドレスをアーキテクチャレジスタ・アドレスにマップする。ヒット検出信号６２の各々の論理ｈｉｇｈについて、物理レジスタアドレスが出力信号の形式で送信され、この信号が、ヒットした命令Ｉ（０）〜Ｉ（７）のＲＳ１フィールド１００と一致するインフライトＲＤフィールドのアーキテクチャレジスタ・アドレスと通信する。ＣＡＭ構造５６の出力信号６４が、やはり上述と同じ命令にヒットしたＲＳ２、ＲＤ／ＲＳ３、ＣＣフィールドの物理レジスタアドレスに関連したＣＡＭ構造５７〜５９の出力信号６４と組み合わされる。その後、これら信号６４からの物理レジスタアドレスが制御ワード７２内に組み込まれ、これが追加のソース（図示せず）からの別の入力信号と組み合わされて、依存性を全て除去した命令の実行に必要な物理レジスタアドレスを全て含むようになる。次に、制御ワード７２が処理のためにＩＳＵ４８のＩＷＢ５４へ送信される。
【００４６】
ＩＷＢ５４は、各命令Ｉ（０）〜Ｉ（７）内でヒットした専用のフィールドＲＳ１、ＲＳ２、ＲＤ／ＲＳ３、ＣＣの場所を知っていなければならないが、依存性マトリックス５２はその必要がない。依存性マトリックス５２は、特定の命令Ｉ（０）〜Ｉ（７）に、該命令につき一の論理ｈｉｇｈで示すようにヒットがあった事実のみを知っていればよい。したがって、ＣＡＭ構造５６の出力信号として同時に送信されるヒット検出信号６２が、ＯＲ演算ユニットにて、ＣＡＭ構造５７〜５９のヒット検出信号６２の各々と共に論理的なＯＲ演算にかけられ、これにより依存性信号６７が形成される。依存性信号６７は、１２８×８アレイを有する相互依存性マスク６７の形式であり、フェッチした最新のバンドル４５の８つの命令の各々と比較した場合の、１２８個の潜在的なインフライト命令についてのヒット有り（論理１）、又はヒット無し（論理０）の状態を表す。相互依存性マスク６７は、結合依存性チェッカー８８において、内部依存性チェッカー６８から出力された、８×７アレイを有する内部依存性マスク形式の出力信号６９と結合する。結合依存性チェッカー８８の出力信号は、バンドル４５の命令Ｉ（０）〜Ｉ（７）内にある全ての内部依存性と、バンドル４５とインフライト命令の間にある相互依存性とを反映する依存性アレイ７０である。次に、依存性アレイ７０が、合計で理論上最大数である１２８個のインフライト命令の潜在依存性を表す１２８×１２８アレイである依存性マトリックス５２へ送信される。
【００４７】
ＣＡＭ構造５６〜５９がバンドル４５の命令Ｉ（０）〜Ｉ（７）の処理を完了すると、これらの命令はインフライトであると考慮され、別のバンドルのフェッチが実行される。そのため、インフライトとなった命令Ｉ（０）〜Ｉ（７）が信号ライン９０を経てキューエリア４２内に入力される。この場合、実行未完了の１２０個のインフライト命令がこれ以前にもキューエリア４２内に存在し、バンドル４５の全ての命令が一の依存性を有する場合、理論的に見て、新規にインフライトとなった命令を扱う十分な数のレジスタが該キューエリア４２内に残っていることになる。しかしながら、現実には、キューエリア４２が空きのない状態になることは稀である。
【００４８】
本発明により、標準及び制御可能な設計において、依存性と、必要な物理アドレスを決定することで、実装するハードウェア及びソフトウェアの個数を減少させるスーパースケーラ・プロセッサ１２の提供が可能になる。更に、この設計は、多くの場合、依存性及びアドレスの決定を単一クロックサイクルで実行することができるため超高速の処理速度が得られる。
【００４９】
１つの好ましい実施形態を明示及び説明してきたが、本発明の精神及び範囲から逸脱しない限り、様々な変更、代替が可能である。更に、本発明を限定ではなく例証の方法で説明したことを理解すべきである。
【産業上の利用可能性】
【００５０】
依存性及びアドレスの決定を単一クロックサイクルで実行することができるため、コンピュータシステムの超高速化が得られる。実装するハードウェア及びソフトウェアの数を減少でき、又、アーキテクチャレジスタの名称を物理レジスタに変更することにより命令セットの処理中に遭遇する書き込み／読み出しデータハザードが解決される。これらにより、高性能なコンピュータシステムが得られる。
【図面の簡単な説明】
【００５１】
【図１】本発明によるコンピュータシステムを示す概略ブロック図である。
【図２】本発明によるフェッチした命令のバンドルを示す簡略化した概略ブロック図である。
【図３】図１のＣＡＭ構造の詳細な概略ブロック図である。
【図４】図３のエントリ構造の詳細な概略ブロック図である。
【符号の説明】
【００５２】
１０  コンピュータシステム
１２  スーパースケーラ・プロセッサ
１４  入力／出力サブシステム
１６  メモリサブシステム
１８  バス
２０  ランダムアクセスメモリ
２２  読み出し専用メモリ
２４  プログラム可能読み出し専用メモリ
２６  制御ユニット
２８  実行ユニット
３０  物理データレジスタ
３２  バス・インターフェース・ユニット
３４  内部バス
３６  演算論理ユニット
３８  浮動小数点ユニット
４２  キューエリア
４４  フェッチユニット
４５  バンドル
４６  命令名称変更ユニット
４８  命令スケジューリングユニット
５０  再度書き込みユニット
５２  依存性マトリックス
５４  命令待ちバッファ
５６、５７、５８、５９  内容アドレス指定可能メモリ構造
６０  コンパレータ部
６１  アレイ部
６２  ヒット検出信号
６４  出力信号
６６  ＯＲ演算ユニット
６７  依存性信号
６８  内部依存性チェッカー
６９  出力信号
７０  依存性アレイ
７２  制御ワード
７４  データドライバ部
７６  エントリ構造
７８  信号ライン
８２  コンパレータ
８４  ＲＤフィールド
８６  ヒット検出ベクトル
８８  結合依存性チェッカー
９０  信号ライン
１００  ＲＳ１フィールド
１０２  ＲＳ２フィールド
１０４  ＲＤ／ＲＳ３フィールド
１０６  ＣＣフィールド
Ｉ（０）〜Ｉ（７）  命令
【図１】
2004529405.tif 000003
【図２】
2004529405.tif 000004
【図３】
2004529405.tif 000005
【図４】
2004529405.tif 000006
【国際公開パンフレット】
2004529405.tif 000007
2004529405.tif 000008
2004529405.tif 000009
2004529405.tif 000010
2004529405.tif 000011
2004529405.tif 000012
2004529405.tif 000013
2004529405.tif 000014
2004529405.tif 000015
2004529405.tif 000016
2004529405.tif 000017
2004529405.tif 000018
2004529405.tif 000019
2004529405.tif 000020
2004529405.tif 000021
2004529405.tif 000022
2004529405.tif 000023
2004529405.tif 000024
2004529405.tif 000025
2004529405.tif 000026
2004529405.tif 000027
2004529405.tif 000028
2004529405.tif 000029
2004529405.tif 000030
2004529405.tif 000031
2004529405.tif 000032
2004529405.tif 000033
2004529405.tif 000034
2004529405.tif 000035
2004529405.tif 000036
2004529405.tif 000037
2004529405.tif 000038
【国際公開パンフレット（コレクトバージョン）】
2004529405.tif 000039
2004529405.tif 000040
【国際調査報告】
2004529405.tif 000041
2004529405.tif 000042
2004529405.tif 000043