(57)【特許請求の範囲】
【請求項１】
第１の型の命令、第２の型の命令および空状態命令を含む命令セット内で定義される命令をデコードするよう構成されるデコードユニットを含み、前記命令セットは、第２の複数個のレジスタの各々が割当てられた論理的記憶場所に第１の複数個のレジスタの対応する１つが割当てられるよう、前記第１の型の命令を介してアクセス可能な前記第１の複数個のレジスタと前記第２の型の命令を介してアクセス可能な前記第２の複数個のレジスタとが論理的記憶装置に対応付けられるようさらに定義し、さらに、
前記第１の複数個のレジスタに対応する物理的記憶場所を含む第１のレジスタファイルと、
前記第２の複数個のレジスタに対応する物理的記憶場所を含む第２のレジスタファイルと、
前記第１のレジスタファイルに結合される第１の実行ユニットとを含み、前記第１の実行ユニットは前記第１の型の命令を実行するよう構成され、前記第１の実行ユニットは前記第１の型の前記命令についてのオペランドを前記第１のレジスタファイルから読出すよう構成され、さらに、
前記第２のレジスタファイルに結合される第２の実行ユニットを含み、前記第２の実行ユニットは前記第２の型の命令を実行するよう構成され、前記第２の実行ユニットは前記第２の型の前記命令についてのオペランドを前記第２のレジスタファイルから読出すよう構成され、
前記第１の型の第１の命令、前記空状態命令、および前記第２の型の前記第２の命令を含む第１の命令シーケンスの実行に応答して、前記第１の命令の実行と前記第２の命令の実行との間で前記第１のレジスタファイルと前記第２のレジスタファイルとの同期化を禁止するよう構成される、マイクロプロセッサ。
【請求項２】
前記第１の型の命令はマルチメディア命令を含む、請求項１に記載のマイクロプロセッサ。
【請求項３】
前記第２の型の命令は浮動小数点命令を含む、請求項２に記載のマイクロプロセッサ。
【請求項４】
前記第１の型の命令は浮動小数点命令を含む、請求項１に記載のマイクロプロセッサ。
【請求項５】
前記第２の型の命令はマルチメディア命令を含む、請求項４に記載のマイクロプロセッサ。
【請求項６】
前記マイクロプロセッサは、前記第１の命令とその後に前記空状態命令とさらにその後に前記第２の命令とである前記第１の命令シーケンスのプログラム順にのみ応答して前記同期化を禁止するよう構成される、請求項１に記載のマイクロプロセッサ。
【請求項７】
前記第１の命令シーケンスは、前記命令セットによって定義される第３の型の命令の１つ以上の命令をさらに含む、請求項６に記載のマイクロプロセッサ。
【請求項８】
前記マイクロプロセッサは、もし前記１つ以上の命令のいくつかが前記第１の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項７に記載のマイクロプロセッサ。
【請求項９】
前記マイクロプロセッサは、もし前記１つ以上の命令のいくつかが前記第２の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項７に記載のマイクロプロセッサ。
【請求項１０】
前記第３の型の命令は整数命令を含む、請求項７に記載のマイクロプロセッサ。
【請求項１１】
前記第１の命令シーケンスは、前記命令セットによって定義される第３の型の命令の１つ以上の命令をさらに含む、請求項１に記載のマイクロプロセッサ。
【請求項１２】
前記マイクロプロセッサは、もし前記１つ以上の命令のいくつかが前記第１の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項１１に記載のマイクロプロセッサ。
【請求項１３】
前記マイクロプロセッサは、もし前記１つ以上の命令のいくつかが前記第２の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項１１に記載のマイクロプロセッサ。
【請求項１４】
前記第３の型の命令は整数命令を含む、請求項１１に記載のマイクロプロセッサ。
【請求項１５】
前記マイクロプロセッサは、前記第１および第２の命令を含むが前記空状態命令を除く第２の命令シーケンスがデコードされると前記第１のレジスタファイルと第２のレジスタファイルとの前記同期化を実行するよう構成される、請求項１に記載のマイクロプロセッサ。
【請求項１６】
前記デコードユニットは、
命令をデコードするよう構成される１つ以上のデコーダと、
前記１つ以上のデコーダの１つによってマイクロコードされた命令がデコードされると命令を与えるよう結合されるマイクロコードＲＯＭとを含み、前記マイクロコードＲＯＭは前記同期化を禁止する命令と前記同期化を実行する命令とを含むルーチンをさらに記憶する、請求項１５に記載のマイクロプロセッサ。
【請求項１７】
第１の型の命令、第２の型の命令および空状態命令を含む命令セット内で定義される命令を実行するための方法であって、前記命令セットは、第２の複数個のレジスタの各々が割当てられた論理的記憶場所に第１の複数個のレジスタの対応する１つが割当てられるよう、前記第１の型の命令を介してアクセス可能な前記第１の複数個のレジスタと前記第２の型の命令を介してアクセス可能な前記第２の複数個のレジスタとが論理的記憶装置に対応付けられるようにさらに定義し、前記方法は、
前記第１の複数個のレジスタの各々についての物理的記憶場所を含む第１のレジスタファイルから前記第１の型の第１の命令についての第１のオペランドを読出すステップと、
前記第２の複数個のレジスタの各々についての物理的記憶場所を含む第２のレジスタファイルから前記第２の型の第２の命令についての第２のオペランドを読出すステップと、
前記第１の命令と前記第２の命令との間に前記空状態命令を含まない命令シーケンスの実行に応答して、前記第１のオペランドの前記読出と前記第２のオペランドの前記読出との間で前記第１のレジスタファイルと前記第２のレジスタファイルとを同期化するステップと、
前記第１の命令と前記第２の命令との間に前記空状態命令を含む前記命令シーケンスの実行に応答して、前記第１のレジスタファイルと前記第２のレジスタファイルとの同期化
を禁止するステップとを含む、方法。
【請求項１８】
前記第１のオペランドの前記読出は、前記第１のレジスタファイルからマルチメディア型の前記第１の命令についての前記第１のオペランドを読出すステップを含む、請求項１７に記載の方法。
【請求項１９】
前記第２のオペランドの前記読出は、前記第２のレジスタファイルから浮動小数点型の前記第２の命令についての前記第２のオペランドを読出すステップを含む、請求項１８に記載の方法。
【請求項２０】
前記命令シーケンスのプログラム順は、前記第１の命令とその後に前記空状態命令とさらにその後に前記第２の命令とを含む、請求項１７に記載の方法。
【請求項２１】
前記空状態命令と前記第２の命令との間に前記第１の型の第３の命令を含む前記命令シーケンスに応答して前記第１のレジスタファイルと前記第２のレジスタファイルとを同期化するステップをさらに含む、請求項２０に記載の方法。
【請求項２２】
前記命令セット内に定義される第３の型の命令の１つ以上の命令が、前記命令シーケンス内に前記第１の命令と前記空状態命令との間または前記第２の命令と前記空状態命令との間に含まれるとしても前記禁止が実行される、請求項１７に記載の方法。
【請求項２３】
前記空状態命令が前記命令シーケンスから除かれるならば、もし前記命令セット内に定義される第３の型の命令の１つ以上の命令が前記命令シーケンス内に前記第１の命令と前記第２の命令との間に含まれるとしても前記同期化が実行される、請求項１７に記載の方法。
【請求項２４】
第１の複数個のレジスタに対応する物理的記憶場所を含む第１のレジスタファイルと、
第２の複数個のレジスタに対応する物理的記憶場所を含む第２のレジスタファイルとを含むマイクロプロセッサであって、
前記マイクロプロセッサは、第１の型の命令、第２の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第１の複数個のレジスタが前記第１の型の命令を介してアクセス可能であり、前記第２の複数個のレジスタが前記第２の型の命令を介してアクセス可能であることをさらに定義し、前記命令セットはさらに、前記第１の複数個のレジスタおよび前記第２の複数個のレジスタが、前記第２の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第１の複数個のレジスタの対応する１つが割当てられるように論理的記憶装置に対応付けられることを定義し、前記マイクロプロセッサは、前記第１の型の第１の命令を実行した後にかつ前記第２の型の第２の命令を実行するより前に、前記第１の命令および前記第２の命令を含みかつ前記空状態命令も含む第１の命令シーケンスの実行に応答して前記第１のレジスタファイルと前記第２のレジスタファイルとの同期化を禁止するよう構成される、マイクロプロセッサ。
【請求項２５】
前記第１の型の命令はマルチメディア命令を含む、請求項２４に記載のマイクロプロセッサ。
【請求項２６】
前記第２の型の命令は浮動小数点命令を含む、請求項２５に記載のマイクロプロセッサ。
【請求項２７】
前記第１の型の命令は浮動小数点命令を含む、請求項２４に記載のマイクロプロセッサ。
【請求項２８】
前記第２の型の命令はマルチメディア命令を含む、請求項２７に記載のマイクロプロセッサ。
【請求項２９】
前記マイクロプロセッサは、前記第１の命令とその後に前記空状態命令とさらにその後に前記第２の命令とである前記第１の命令シーケンスのプログラム順にのみ応答して前記同期化を禁止するよう構成される、請求項２４に記載のマイクロプロセッサ。
【請求項３０】
前記第１の命令シーケンスは、前記命令セットによって定義される第３の型の命令の１つ以上の命令をさらに含む、請求項２９に記載のマイクロプロセッサ。
【請求項３１】
前記マイクロプロセッサは、もし前記１つ以上の命令のいくつかが前記第１の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項３０に記載のマイクロプロセッサ。
【請求項３２】
前記マイクロプロセッサは、もし前記１つ以上の命令のいくつかが前記第２の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項３０に記載のマイクロプロセッサ。
【請求項３３】
前記第３の型の命令は整数命令を含む、請求項３０に記載のマイクロプロセッサ。
【請求項３４】
前記マイクロプロセッサは、前記第１の命令を実行した後にかつ前記第２の命令を実行するよりも前に前記第１の命令および第２の命令を含むが前記空状態命令を除く第２の命令シーケンスに応答して前記第１のレジスタファイルと第２のレジスタファイルとの前記同期化を実行するよう構成される、請求項２４に記載のマイクロプロセッサ。
【請求項３５】
第１の複数個のレジスタに対応する物理的記憶場所を含む第１のレジスタファイルと、第２の複数個のレジスタに対応する物理的記憶場所を含む第２のレジスタファイルとを含むマイクロプロセッサを含み、前記マイクロプロセッサは、第１の型の命令、第２の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第１の複数個のレジスタが前記第１の型の命令を介してアクセス可能であり、前記第２の複数個のレジスタが前記第２の型の命令を介してアクセス可能であることをさらに定義し、前記命令セットはさらに、前記第１の複数個のレジスタおよび前記第２の複数個のレジスタが、前記第２の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第１の複数個のレジスタの対応する１つが割当てられるように論理的記憶装置に対応付けられることを定義し、前記マイクロプロセッサは、前記第１の型の第１の命令を実行した後にかつ前記第２の型の第２の命令を実行するより前に、前記第１の命令および前記前記第２の命令を含みかつ前記空状態命令も含む命令シーケンスの実行に応答して前記第１のレジスタファイルと前記第２のレジスタファイルとの同期化を禁止するよう構成され、さらに、
前記マイクロプロセッサに結合される主メモリを含み、前記主メモリは前記命令シーケンスを記憶し前記マイクロプロセッサに前記命令シーケンスがそこから要求されると前記命令シーケンスを与えるよう構成され、さらに、
前記主メモリに結合される入力／出力（Ｉ／Ｏ）デバイスを含み、前記Ｉ／Ｏデバイスは前記主メモリと前記Ｉ／Ｏデバイスに結合される第２のコンピュータシステムとの間でデータを転送するよう構成される、コンピュータシステム。
【請求項３６】
前記マイクロプロセッサと同一の第２のマイクロプロセッサをさらに含む、請求項３５に記載のコンピュータシステム。
【請求項３７】
前記第１の複数個のレジスタに対応する物理的記憶場所を含む第３のレジスタファイルおよび前記第２の複数個のレジスタに対応する物理的記憶場所を含む第４のレジスタファイルを含む第２のマイクロプロセッサをさらに含み、前記第２のマイクロプロセッサは、前記第１の型の命令、前記第２の型の命令および前記空状態命令を含む前記命令セット内で定義される命令を実行するよう構成され、前記第２のマイクロプロセッサは、前記第１の型の前記第１の命令を実行した後にかつ前記第２の型の前記第２の命令を実行するより前に、前記第１の命令および前記前記第２の命令を含みかつ前記空状態命令も含む前記命令シーケンスの実行に応答して前記第３のレジスタファイルと前記第４のレジスタファイルとの前記同期化を禁止するよう構成される、請求項３５に記載のコンピュータシステム。
【請求項３８】
第１の複数個のレジスタに対応する物理的記憶場所を含む第１のレジスタファイルと、
第２の複数個のレジスタに対応する物理的記憶場所を含む第２のレジスタファイルとを含むマイクロプロセッサであって、
前記マイクロプロセッサは、第１の型の命令、第２の型の命令および第３の命令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第１の複数個のレジスタが前記第１の型の命令を介してアクセス可能であり、前記第２の複数個のレジスタが前記第２の型の命令を介してアクセス可能であることをさらに定義し、前記命令セットはさらに、前記第１の複数個のレジスタおよび前記第２の複数個のレジスタが、前記第２の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第１の複数個のレジスタの対応する１つが割当てられるように論理的記憶装置に対応付けられることを定義し、前記マイクロプロセッサは、前記第１の命令および前記第２の命令を含む第１の命令シーケンスの実行中に、前記第１の命令シーケンス中の前記第３の命令の存在または不在に応答して前記第１のレジスタファイルと前記第２のレジスタファイルとを選択的に同期化するよう構成される、マイクロプロセッサ。
【請求項３９】
前記マイクロプロセッサは、前記第３の命令の前記不在に応答して前記第１のレジスタファイルと前記第２のレジスタファイルとを同期化するよう構成され、前記マイクロプロセッサは、前記第３の命令の前記存在に応答して前記第１のレジスタファイルと前記第２のレジスタファイルとの同期化を禁止するよう構成される、請求項３８に記載のマイクロプロセッサ。
【請求項４０】
前記第１の型の命令はマルチメディア命令を含む、請求項３８に記載のマイクロプロセッサ。
【請求項４１】
前記第２の型の命令は浮動小数点命令を含む、請求項４０に記載のマイクロプロセッサ。
【請求項４２】
前記第１の型の命令は浮動小数点命令を含む、請求項３８に記載のマイクロプロセッサ。
【請求項４３】
前記第２の型の命令はマルチメディア命令を含む、請求項４２に記載のマイクロプロセッサ。
【請求項４４】
前記マイクロプロセッサは、前記第１の命令とその後に前記第３の命令とさらにその後に前記第２の命令とである前記第１の命令シーケンスのプログラム順にのみ応答して同期化を禁止するよう構成される、請求項３８に記載のマイクロプロセッサ。
【請求項４５】
前記第１の命令シーケンスは、前記命令セットによって定義される第３の型の命令の１つ以上の命令をさらに含む、請求項４４に記載のマイクロプロセッサ。
【請求項４６】
前記マイクロプロセッサは、もし前記１つ以上の命令のいくつかが前記第１の命令と前記第３の命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項４５に記載のマイクロプロセッサ。
【請求項４７】
前記マイクロプロセッサは、もし前記１つ以上の命令のいくつかが前記第２の命令と前記第３の命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項４５に記載のマイクロプロセッサ。
【請求項４８】
前記第３の型の命令は整数命令を含む、請求項４５に記載のマイクロプロセッサ。
【請求項４９】
第１の型の命令、第２の型の命令および第３の命令を含む命令セット内で定義される命令を実行するための方法であって、前記命令セットは、第２の複数個のレジスタの各々が割当てられた論理的記憶場所に第１の複数個のレジスタの対応する１つが割当てられるよう、前記第１の型の命令を介してアクセス可能な前記第１の複数個のレジスタと前記第２の型の命令を介してアクセス可能な前記第２の複数個のレジスタとが論理的記憶装置に対応付けられるようにさらに定義し、前記方法は、
前記第１の複数個のレジスタの各々についての物理的記憶場所を含む第１のレジスタファイルから前記第１の型の第１の命令についての第１のオペランドを読出すステップと、
前記第２の複数個のレジスタの各々についての物理的記憶場所を含む第２のレジスタファイルから前記第２の型の第２の命令についての第２のオペランドを読出すステップと、
前記第１の命令および前記第２の命令を含む命令シーケンス中の前記第３の命令の存在または不在に応答して前記第１のオペランドの前記読出と前記第２のオペランドの前記読出との間で前記第１のレジスタファイルと前記第２のレジスタファイルとを選択的に同期化するステップとを含む、方法。
【請求項５０】
前記第１のオペランドの前記読出は、前記第１のレジスタファイルからマルチメディア型の前記第１の命令についての前記第１のオペランドを読出すステップを含む、請求項４９に記載の方法。
【請求項５１】
前記第２のオペランドの前記読出は、前記第２のレジスタファイルから浮動小数点型の前記第２の命令についての前記第２のオペランドを読出すステップを含む、請求項５０に記載の方法。
【請求項５２】
前記命令シーケンスのプログラム順は、前記第１の命令とその後に前記第３の命令とさらにその後に前記第２の命令とを含む、請求項４９に記載の方法。
【請求項５３】
もし前記命令セット内に定義される第３の型の命令の１つ以上の命令が前記命令シーケンス内の前記第１の命令と前記第３の命令との間または前記第２の命令と前記第３の命令との間に含まれるとしても前記選択的な同期化が実行される、請求項４９に記載の方法。
【請求項５４】
前記選択的に同期化するステップは、
前記第３の命令の前記不在に応答して前記第１のレジスタファイルと前記第２のレジスタファイルとを同期化するステップと、
前記第３の命令の前記存在に応答して前記第１のレジスタファイルと前記第２のレジスタファイルとの同期化を禁止するステップとを含む、請求項４９に記載の方法。
【請求項５５】
第１の複数個のレジスタに対応する物理的記憶場所を含む第１のレジスタファイルと、第２の複数個のレジスタに対応する物理的記憶場所を含む第２のレジスタファイルとを含むマイクロプロセッサを含み、前記マイクロプロセッサは、第１の型の命令、第２の型の命令および第３の命令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第１の複数個のレジスタが前記第１の型の命令を介してアクセス可能であり、前記第２の複数個のレジスタが前記第２の型の命令を介してアクセス可能であることをさらに定義し、前記命令セットはさらに、前記第１の複数個のレジスタおよび前記第２の複数個のレジスタが、前記第２の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第１の複数個のレジスタの対応する１つが割当てられるように論理的記憶装置に対応付けられることを定義し、前記マイクロプロセッサは、前記第１の命令および前記第２の命令を含む第１の命令シーケンスの実行中に、前記第１の命令シーケンス中の前記第３の命令の存在または不在に応答して前記第１のレジスタファイルと前記第２のレジスタファイルとを選択的に同期化するよう構成され、さらに、
主メモリに結合される入力／出力（Ｉ／Ｏ）デバイスを含み、前記Ｉ／Ｏデバイスは前記主メモリと前記Ｉ／Ｏデバイスに結合される第２のコンピュータシステムとの間でデータを転送するよう構成される、コンピュータシステム。
【請求項５６】
前記第１の複数個のレジスタに対応する物理的記憶場所を含む第３のレジスタファイルおよび前記第２の複数個のレジスタに対応する物理的記憶場所を含む第４のレジスタファイルを含む第２のマイクロプロセッサをさらに含み、前記第２のマイクロプロセッサは、前記第１の型の命令、前記第２の型の命令および前記第３の命令を含む前記命令セット内で定義される命令を実行するよう構成され、前記第２のマイクロプロセッサは、前記第１の命令および前記第２の命令を含む前記第１の命令シーケンスの実行中に、前記第１の命令シーケンス中の前記第３の命令の前記存在または前記不在に応答して前記第３のレジスタファイルと前記第４のレジスタファイルとを選択的に同期化するよう構成される、請求項５５に記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明は、マイクロプロセッサの分野に関し、より特定的には、同じ論理的記憶装置に対応付けられる複数のレジスタファイルを有するマイクロプロセッサに関する。
【０００２】
【関連技術の説明】
ＷＯ−Ａ−９７／２２９２４は、命令を実行するための方法およびマイクロプロセッサを開示している。ある実施例では、マイクロプロセッサは、第１および第２のレジスタファイル、すなわちパックされたデータレジスタおよび浮動小数点レジスタを採用する。遷移ユニットは、これら２つの物理的レジスタファイル間でデータをコピーすることによって、パックされたデータレジスタを浮動小数点レジスタ上にエイリアスする。全体または部分的なエイリアスが開示されている。全体のエイリアスの際には、パックされたデータモードへの遷移の間、物理的浮動小数点レジスタファイルは、パックされたデータレジスタファイル上に完全にエイリアスされ、同様に、浮動小数点モードへの遷移の間、物理的パックされたデータレジスタファイルは、物理的浮動小数点レジスタファイル上に完全にエイリアスされる。部分的エイリアスの間、物理的浮動小数点レジスタまたは物理的パックされたデータレジスタのうち対応するタグが非空状態を示すものにのみ記憶されたデータについてコピーが行なわれる。この文献の開示は、前掲の独立クレームの前文を形成する。
マイクロプロセッサはしばしば、広範な問題に対する計算解決を与えるためにさまざまなデータ型を演算するように構成される。たとえば、整数データ型と浮動小数点データ型とは普通に用いられる。整数データ型は、演算されるべき値がおおよそ同じ絶対値（さらには関心の結果を発生するために計算される任意の中間結果）である場合に使用されるであろう。一方で、演算されるべき値の絶対値（または中間結果）が大きく変動すると予想されるならば、浮動小数点データ型がより適切であろう。
【０００３】
命令セット内の各命令によって使用されるデータ型は、典型的には、命令定義の一部として予め定義される。たとえば整数命令は、整数データ型を演算するために定義される命令である。同様に、浮動小数点命令は、浮動小数点データ型を演算するために定義される。一般的には、命令とは、マイクロプロセッサが所望の機能を実行するよう命じるために、プログラマが特定可能な最も基本的な演算である。特定の順序で命令を配置することによって、プログラマは特定の目的を達成し得る。命令は、他の命令とグルーピングされ、これらが演算するように定義されたデータ型に従って異なった命令型を形成してもよい。典型的には、命令は、演算を実行すべき１つ以上のオペランド（「ソースオペランド」）を受取るよう定義され、結果（「デスティネーションオペランド」）を記憶するよう定義される。ここに用いられる「命令セット」という言葉は、特定のプロセッサアーキテクチャを介して定義される命令の群を指す。各命令は、その命令を命令セット内の他の命令から明白に識別する一意な符号を割当てられる。
【０００４】
半導体製造プロセスの進歩に伴って、単一のチップに含まれ得るトランジスタの数を増加させ、かつ、チップの動作周波数を増大させることが可能となった。したがって、マイクロプロセッサは、増大した動作周波数（すなわちより短いクロックサイクル）と、利用可能なトランジスタの増加によって可能となった進歩したマイクロアーキテクチャとによって、性能を向上させることができるようになった。
【０００５】
利用可能なトランジスタの増加を利用する１つの方法は、新しいデータ型をマイクロプロセッサに加えることである。この新しいデータ型は、特定のタスクを念頭に置いて特に設計されてもよい。データ型と、そのデータ型を演算するために定義される命令とは、特定のタスクのために最適化されてもよい。たとえば、ｘ８６命令セットは、このようにして最近拡張されている。ｘ８６命令セットを実現する先行のマイクロプロセッサ（たとえば、インテル社（Intel Corporation）の８０４８６およびアドバンストマイクロデバイス社の５K８６）は一般的に、浮動小数点データ型および整数データ型を特定する命令を実行するが、最も最近のマイクロプロセッサの実現化例は、ＭＭＸデータ型を特定する命令をも実行する。ＭＭＸデータ型は、１組のパックされた整数として処理される６４ビットのオペランドである。パックされた整数は、８個の８ビット整数、４個の１６ビット整数または２個の３２ビット整数であってもよい。
【０００６】
ＭＭＸデータ型およびこのデータ型を使用する命令は、ビデオおよびオーディオデータ操作のために最適化される。オーディオおよび／またはビデオ操作をここでは「マルチメディア操作」と呼ぶ。コンピュータシステムが、オペレーティングシステムおよびその上にインストールされたアプリケーションプログラムを介してより進歩したグラフィカルユーザインターフェイスを採用するにつれて、これらの型の演算はより重要となってきている。加えて、コンピュータシステムのオーディオ能力が向上してきた。より特定的には、ＭＭＸデータ型は、パックされた整数内の整数値の各々に対して同じ演算が実行されることを考慮している。１つの命令が複数の値を演算し得るために、所望の操作を実行するために採用され得る命令は、そうでない場合に必要となる命令より少なくてすむ。多くのビデオおよび／またはオーディオ計算タスクについては、同じ演算がディスプレイまたは再生のために配置された多数のデータ要素に与えられるので、このため複数のデータ要素に対して同じ演算を行なう命令が有利であろう。
【０００７】
ＭＭＸデータ型および命令を付加するより前にｘ８６アーキテクチャのために設計されたオペレーティングシステムに対する影響を最小限にするために、ＭＭＸオペランドを記憶するように定義されたレジスタは、浮動小数点レジスタと共有されるよう定義される。言い換えれば、ＭＭＸレジスタは、浮動小数点レジスタと同じ論理的記憶場所を使用するようにアーキテクチャ的に定義される。こうすればいかなる新しい状態もマイクロプロセッサに加えられない。ＭＭＸ命令によって使用されるデータは浮動小数点データと同じ組のレジスタに記憶されるので、ＭＭＸ命令を認識しないオペレーティングシステムでも適切に動作し得る。これらのオペレーティングシステムは既に浮動小数点レジスタを処理しているので、ＭＭＸレジスタは自動的に処理される。
【０００８】
データ型間のレジスタの共有は、オペレーティングシステムの互換性については有利であるかもしれないが、新しいデータ型および命令をサポートするマイクロプロセッサについてはさらなるハードウェア上の問題を生ずる。共有レジスタ内に１つのデータ型の値を記憶して、異なったデータ型を演算する命令のために共有レジスタをソースオペランドとして使用することは一般的には非論理的であるが、そのような状況においても定義された挙動を提供することが望ましい。新しいデータ型を使用して書かれたソフトウェアとの互換性を維持するために、アーキテクチャを実現するマイクロプロセッサを設計するときにこの定義された挙動を維持することが望ましい。マイクロプロセッサの性能への最小限の影響でこの挙動を維持することがまた望まれる。
【０００９】
【発明の概要】
以上に略述した問題は、この発明に従うマイクロプロセッサによって大部分解決される。マイクロプロセッサは、マルチメディア命令についてのオペランドを記憶するよう定義される複数個のマルチメディアレジスタを含む第１のレジスタファイルと、浮動小数点命令についてのオペランドを記憶するよう定義される複数個の浮動小数点レジスタを含む第２のレジスタファイルとを含む。マルチメディアレジスタおよび浮動小数点レジスタは、マイクロプロセッサによって採用される命令セットに従って同じ論理的記憶装置に対応付けられる。浮動小数点命令がマルチメディア命令によって最も最近に更新されたレジスタを読出すとき、またはその逆のときに予め定められた挙動を維持するために、マイクロプロセッサは、１以上のマルチメディア命令の組と１以上の浮動小数点命令の組とを実行するときの間での第１および第２のレジスタファイルの同期化に備える（ここではどちらの組がプログラム順で他方に先行してもよく、この順序はどちらの方向に内容のコピーが行なわれるか、すなわち第１のレジスタファイルから第２のレジスタファイルへかまたはその逆か、に影響を及ぼす）。有利には、レジスタファイルの同期化は、自動的に実行される。上述した状況における予め定められた挙動は、このようにして維持される。
【００１０】
予め定められた挙動が必要でない場合に、より高い性能をサポートするために、マイクロプロセッサは空状態命令をサポートする。もし空状態命令が１以上のマルチメディア命令の組と１以上の浮動小数点命令の組との間にコードシーケンスで含まれれば、マイクロプロセッサはレジスタファイル同期化を禁止する。レジスタファイル同期化が実行されないので、同期化に関連する遅延は回避される。有利には、より効率的なコード実行が実現されてもよい。ｘ８６命令セットを含むある実施例では、空状態命令は、上記特徴に加えてＥＭＭＳ命令と同じ動作のセットを実行する。レジスタファイル同期化および空状態命令を与えることによって、予め定められた挙動を期待するソフトウェアとの互換性が維持されながらも、予め定められた挙動を必要としないソフトウェアにレジスタファイル同期化を備えない柔軟性を与える。
【００１１】
概して、この発明は、デコードユニット、第１のレジスタファイル、第２のレジスタファイル、第１の実行ユニットおよび第２の実行ユニットを含むマイクロプロセッサを企図する。デコードユニットは、第１の型の命令、第２の型の命令および空状態命令を含む命令セット内で定義される命令をデコードするよう構成される。加えて、命令セットは、第２の複数個のレジスタの各々が割当てられた論理的記憶場所に、第１の複数個のレジスタの対応する１つが割当てられるように、第１の型の命令を介してアクセス可能である第１の複数個のレジスタと第２の型の命令を介してアクセス可能である第２の複数個レジスタとが、論理的記憶装置に対応付けられるよう定義する。第１のレジスタファイルは、第１の複数個のレジスタに対応する物理的記憶場所を含む。同様に、第２のレジスタファイルは、第２の複数個のレジスタに対応する物理的記憶場所を含む。第１のレジスタファイルに結合され、第１の実行ユニットは、第１の型の命令を実行するよう構成される。加えて、第１の実行ユニットは、第１の型の命令についてのオペランドを第１のレジスタファイルから読出すよう構成される。同様に、第２の実行ユニットは、第２のレジスタファイルに結合され、第２の型の命令を実行するよう構成される。第２の実行ユニットは、第２の型の命令についてのオペランドを第２のレジスタファイルから読出すよう構成される。デコードユニットは、第１の型の第１の命令、空状態命令および第２の型の第２の命令を含む第１の命令シーケンスをデコードすると、第１の命令の実行と第２の命令の実行との間で第１のレジスタファイルと第２のレジスタファイルとの同期化を禁止するよう構成される。
【００１２】
この発明は、第１の型の命令、第２の型の命令および空状態命令を含む命令セット内で定義される命令を実行するための方法をさらに企図する。命令セットは、第２の複数個のレジスタの各々が割当てられた論理的記憶場所に、第１の複数個レジスタの対応する１つが割当てられるよう、第１の型の命令を介してアクセス可能な第１の複数個のレジスタと第２の型の命令を介してアクセス可能な第２の複数個のレジスタとが論理的記憶装置に対応付けられるようにさらに定義する。第１の型の第１の命令についての第１のオペランドは、第１の複数個のレジスタの各々についての物理的記憶場所を含む第１のレジスタファイルから読出される。第２の型の第２の命令についての第２のオペランドは、第２の複数個のレジスタの各々についての物理的記憶場所を含む第２のレジスタファイルから読出される。もし空状態命令が第１の命令と第２の命令との間に命令シーケンスで含まれていなければ、第１のレジスタファイルと第２のレジスタファイルとは、第１のオペランドの読出と第２のオペランドの読出との間で同期化される。もし空状態命令が第１の命令と第２の命令との間に命令シーケンスで含まれていれば、第１のレジスタファイルと第２のレジスタファイルとの同期化は禁止される。
【００１３】
さらに、この発明は、第１のレジスタファイルおよび第２のレジスタファイルを含むマイクロプロセッサを企図する。第１のレジスタファイルは、第１の複数個のレジスタに対応する物理的記憶場所を含む。同様に、第２のレジスタファイルは、第２の複数個のレジスタに対応する物理的記憶場所を含む。マイクロプロセッサは、第１の型の命令、第２の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、命令セットは、第２の複数個レジスタの各々が割当てられた論理的記憶場所に第１の複数個のレジスタの対応する１つが割当てられるように、第１の型の命令を介してアクセス可能な第１の複数個のレジスタと第２の型の命令を介してアクセス可能な第２の複数個のレジスタとが論理的記憶装置に対応付けられるようさらに定義する。加えて、マイクロプロセッサは、第１の命令および第２の命令を含む第１の命令シーケンスが空状態命令をも含むことに応答して、第１の型の第１の命令を実行した後に、かつ、第２の型の第２の命令を実行する前に、第１のレジスタファイルと第２のレジスタファイルとの同期化を禁止するよう構成される。
【００１４】
この発明は、マイクロプロセッサ、メモリ、Ｉ／Ｏ装置を含むコンピュータシステムをさらに企図する。マイクロプロセッサは、第１の複数個のレジスタに対応する物理的記憶場所を含む第１のレジスタファイルと、第２の複数個レジスタに対応する物理的記憶場所を含む第２のレジスタファイルとを含む。マイクロプロセッサは、第１の型の命令、第２の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、命令セットは、第２の複数個レジスタファイルが割当てられた論理的記憶場所に、第１の複数個レジスタの対応する１つが割当てられるように、第１の型の命令を介してアクセス可能な第１の複数個のレジスタと第２の型の命令を介してアクセス可能な第２の複数個のレジスタとが論理的記憶装置に対応付けられるようさらに定義する。さらに、マイクロプロセッサは、第１の命令および第２の命令を含む命令シーケンスが空状態命令も含むことに応答して、第１の型の第１の命令を実行した後に、かつ、第２の型の第２の命令を実行するより前に、第１のレジスタファイルと第２のレジスタファイルとの同期化を禁止するよう構成される。マイクロプロセッサに結合され、主メモリは、命令シーケンスを記憶し、マイクロプロセッサから命令シーケンスを要求されると、命令シーケンスをマイクロプロセッサに与えるよう構成される。主メモリに結合され、Ｉ／Ｏ装置は、主メモリとＩ／Ｏ装置に結合される第２のコンピュータシステムとの間でデータを転送するよう構成される。
【００１５】
この発明の他の目的および利点は、以下の詳細な説明を読みかつ添付の図面を参照することによって明らかとなるであろう。
【００１６】
この発明は、さまざまな変形および代替形を許すが、その特定の実施例は、図面の例によって示され、ここに詳細に記載される。しかしながら、図面およびこれに対する詳細な説明は、開示される特定の形態にこの発明を限定するものではなく、反対に、前掲のクレームによって規定されるようなこの発明の精神および範囲内にあるすべての変形、等価および代替を含むものである。
【００１７】
【詳細な説明】
図１を参照すると、マイクロプロセッサ１０のある実施例のブロック図が示される。他の実施例も可能であり、企図される。図１の実施例では、マイクロプロセッサ１０は、命令キャッシュ１４およびプリデコードキャッシュ１５に結合されるプリデコード論理ブロック１２を含む。キャッシュ１４および１５はまた、命令ＴＬＢ１６を含む。キャッシュコントローラ１８は、プリデコード論理ブロック１２、命令キャッシュ１４およびプリデコードキャッシュ１５に結合される。コントローラ１８はさらに、バスインターフェイスユニット２４、レベル１データキャッシュ２６（これはデータＴＬＢ２８を含む）、およびＬ２キャッシュ４０に結合される。マイクロプロセッサ１０は、デコードユニット２０をさらに含み、これは命令キャッシュ１４から命令を受取りプリデコードキャッシュ１５からのデータをプリデコードする。この情報は、分岐論理ユニット２２から受取られる入力に従って実行エンジン３０に転送される。
【００１８】
実行エンジン３０は、デコードユニット２０から入力を受取るよう結合されるスケジューラバッファ３２を含む。スケジューラバッファ３２は、命令制御ユニット３４から受取られる入力に従って、デコードされた命令を複数個の実行ユニット３６Ａ−３６Ｅに送るよう結合される。実行ユニット３６Ａ−３６Ｅは、ロードユニット３６Ａ、ストアユニット３６Ｂ、レジスタＸユニット３６Ｃ、レジスタＹユニット３６Ｄ、および、浮動小数点ユニット３６Ｅを含む。ロードユニット３６Ａはデータキャッシュ２６から入力を受取り、ストアユニット３６Ｂはストアキュー３８を介してデータキャッシュ２６にインターフェイスする。後ろに文字が付いた参照番号でここに参照される要素は、参照番号だけで集合的に参照される。たとえば、実行ユニット３６Ａ−３６Ｅは、実行ユニット３６として集合的に参照される。
【００１９】
図１に示すとおり、レジスタユニット３６Ｃ−３６Ｄはレジスタファイル４４に結合され、レジスタユニット３６Ｃ−３６Ｄはここからソースオペランドを読出すよう構成され、レジスタユニット３６Ｃ−３６Ｄはここにデスティネーション結果値を記憶するよう構成される。浮動小数点ユニット３６Ｅはまた、レジスタファイル４２を含むものとして示される。レジスタファイル４２は、設計に従った浮動小数点レジスタの各々に割当てられる物理的記憶場所を含む。レジスタファイル４４はまた、設計に従った浮動小数点レジスタの各々に割当てられる物理的記憶場所を含む。浮動小数点命令は、浮動小数点ユニット３６Ｅによって実行され、これはレジスタファイル４２からソースオペランドを読出し、また、レジスタファイル４２内のデスティネーションを更新する。レジスタユニット３６Ｃ−３６Ｄは、整数命令を実行し、レジスタファイル４４からソースオペランドを読出し、レジスタファイル４４内のデスティネーションを更新する。しかしながら、整数レジスタは、浮動小数点レジスタから論理的に分離している（すなわち、別個の記憶場所であるようにアーキテクチャ的に定義されている）。加えて、レジスタユニット３６Ｃ−３６Ｄは、マルチメディア命令を実行するよう構成され、この実施例では、これは論理的に浮動小数点レジスタと同じ記憶場所であるマルチメディアレジスタからソースオペランドを読出すよう定義される。したがって、レジスタファイル４４内のマルチメディアレジスタに対応する物理的記憶場所は、レジスタファイル４２内の物理的記憶場所と論理的に同じである。ここに使用される、マルチメディア命令という言葉は、上記のパックされた整数演算（たとえばｘ８６命令セット内のＭＭＸ命令によって定義されるものなどの演算）を指す。さらに、マルチメディア命令という言葉は、３次元グラフィック計算のために最適化された浮動小数点命令を指してもよい。これらの命令は、たとえば、所与の浮動小数点レジスタにパックされた２つの３２ビットの浮動小数点数を演算するように定義されてもよい。
【００２０】
レジスタファイル４２および４４内の物理的記憶場所の別個の組は、１組の論理的記憶場所（すなわち設計に従った浮動小数点レジスタ）に対応付けられるので、マイクロプロセッサ１０は、以下の場合に予測可能な挙動を可能にするためにレジスタファイル４２および４４の同期化をサポートする。すなわち、（ｉ）浮動小数点命令がソースオペランドとしてレジスタを使用し、レジスタへの最も最近の更新がマルチメディア命令に応答して実行された場合と、（ii）マルチメディア命令がソースオペランドとしてレジスタを使用し、レジスタへの最も最近の更新が浮動小数点命令に応答して実行された場合とである。しかしながら、レジスタファイルの同期化は比較的遅いプロセスである。一般的に、レジスタファイル４２と４４との同期化は、マルチメディア命令と浮動小数点命令とで論理的に共有されるレジスタを表わすレジスタファイルのうちの一方の内の各物理的記憶場所の内容を、他方のレジスタファイルにコピーすることを伴う。コピーの方向（すなわちレジスタファイル４２からレジスタファイル４４へ、または、レジスタファイル４４からレジスタファイル４２へ）は、どの型の命令（浮動小数点またはマルチメディア）が最近実行されたかに依存する。ここに使用される、「論理的記憶場所」という言葉は、存在するようアーキテクチャ的に定義される記憶場所（すなわちレジスタ）を指す。言い換えれば、命令セット定義は、記憶場所を定義し、命令は、命令のさまざまな符号を介してオペランドとして記憶場所を特定することができる。反対に、「物理的記憶場所」は、マイクロプロセッサによって実際に実現される記憶場所を指す。論理的記憶場所にアクセスするよう符号化された命令が、結果として特定の物理的記憶場所にアクセスすれば、論理的記憶場所は特定の物理的記憶場所に「対応付け」られたことになる。
【００２１】
上記のとおり、レジスタファイル４２と４４との同期化は、比較的遅いプロセスである。したがって、レジスタファイル４２と４４との同期化は、マイクロプロセッサ１０の性能を不当に制限してしまうことがある。前述のとおり、浮動小数点命令がソースオペランドとしてマルチメディア結果を使用すること、およびその逆もまた、一般的には非論理的である。マイクロプロセッサ１０は、空状態命令を定義し、これを使用して特定の命令シーケンスがマルチメディアレジスタ更新と浮動小数点レジスタ更新との間の同期化に頼らないことを示すことができる。もし空状態命令が命令シーケンス内で使用されれば、マイクロプロセッサ１０は、レジスタファイル４２と４４との同期化を禁止する。このようにして、同期化を必要としないコードシーケンスは、マイクロプロセッサ１０によってより迅速に実行される可能性があり、したがって、他の態様で可能であるよりも、より高い性能レベルを達成し得る。
【００２２】
ある実施例では、マイクロプロセッサ１０は、ｘ８６命令セットを採用し、空状態命令は、レジスタファイル同期化を禁止するのに加えて、ＥＭＭＳ命令について定義される演算を実行する。より特定的には、浮動小数点ユニット３６Ｅ内のタグワードレジスタが、空状態命令が実行されると更新されて各浮動小数点レジスタが有効でないことを示す。空状態命令はＥＭＭＳ命令とは異なって符号化され、マイクロプロセッサ１０はまた、ＥＭＭＳ命令を実行するよう構成される。しかしながら、ＥＭＭＳ命令は、レジスタファイル４２と４４とが同期化されるかどうかに影響しない。言い換えれば、もしＥＭＭＳ命令が実行され空状態命令が実行されなければ、レジスタファイル４２と４４とは同期化される。ある特定の実施例では、（ＥＭＭＳ命令の符号０Ｆ  ７７に対して）０Ｆ  ０Ｅ（１６進法）の符号が、空状態命令に割当てられ、命令ニーモニックはＦＥＭＭＳである。
【００２３】
なお、レジスタファイル４２内の特定の物理的場所が、所与の論理的浮動小数点レジスタに永続的に割当てられないように（同様に、レジスタファイル４４内の特定の物理的場所が所与の論理的マルチメディアレジスタに永続的に割当てられないように）、マイクロプロセッサ１０はレジスタファイル４２および４４に関してレジスタリネーミングを採用してもよい。しかしながら、所与の特定の命令の実行より前に、各レジスタファイル内の１組の物理的場所が論理的レジスタに対応する。したがって、レジスタリネーミングの存在下でもレジスタファイルの同期化はなお実行される。さらに、上記説明は、レジスタソースオペランドおよびデスティネーションを有するものとして浮動小数点命令およびマルチメディア命令について言及するが、これらの命令は、メモリオペランド（すなわち、レジスタの使用とは反対に直接にメモリ場所から読出されそこに記憶されるオペランド）を有することを妨げられないことが注目される。さらに、マルチメディアおよび浮動小数点命令型が、共有レジスタセットを有するものとしてここに記載されるが、他の型の命令が同様に構成されてもよく、空状態命令はそのような実施例で使用されてもよいことが企図される。
【００２４】
ある実施例では、命令キャッシュ１４はセクタとして構成され、各セクタは２個の３２バイトキャッシュラインを含む。セクタの２個のキャッシュラインは、共通のタグを共有し、ラインのステータスを追跡する別個の状態ビットを有する。したがって、２つの形態のキャッシュミス（および関連するキャッシュフィル）が起こり得る。すなわちセクタ置換およびキャッシュライン置換とである。セクタ置換の場合、ミスは命令キャッシュ１４内のタグミスマッチによるものであって、必要とされるキャッシュラインが、バスインターフェイス２４を介して外部メモリから与えられる。次に、必要とされないセクタ内のキャッシュラインは無効であるとマークされる。必要とされるキャッシュラインは外部メモリによって与えられるが、セクタ置換の場合とは違って、要求されなかったセクタ内のキャッシュラインは同じ状態に維持される。代替の実施例では、命令キャッシュ１４についての他の構成と、さまざまな置換ポリシーとが利用されてもよい。
【００２５】
ある実施例では、マイクロプロセッサ１０はセクタ置換の場合においてのみプリフェッチを実行する。セクタ置換の間、必要とされるキャッシュラインが満たされる。もしこの必要とされるキャッシュラインがセクタの前半にあれば、セクタ内の他のキャッシュラインがプリフェッチされる。もしこの必要とされるキャッシュラインがセクタの後半にあれば、いかなるプリフェッチも実行されない。なお、他のプリフェッチ方法がマイクロプロセッサ１０の異なる実施例において採用されてもよい。
【００２６】
命令データのキャッシュラインがバスインターフェイスユニット２４によって外部メモリから検索されると、データはプリデコード論理ブロック１２に送られる。ある実施例では、マイクロプロセッサ１０によって処理されキャッシュ１４内に記憶される命令は、可変長（たとえばｘ８６命令セット）である。可変長命令のデコードは特に複雑であるので、プリデコード論理ブロック１２は、プリデコードキャッシュ１５に記憶されるべき付加的な情報を与えてデコードの際に支援するように構成される。ある実施例では、プリデコード論理ブロック１２は、命令キャッシュ１４に記憶される各バイトごとにプリデコードビットを生成する。プリデコードビットは、次の可変長命令の開始に対してバイトの数を示す。これらのプリデコードビットは、プリデコードキャッシュ１５に記憶され、命令バイトがキャッシュ１４から要求されるとデコードユニット２０に送られる。
【００２７】
命令キャッシュ１４は、３２Ｋバイトの２ウェイセットアソシアティブキャッシュとして実現されてもよい。キャッシュラインサイズは、たとえば３２バイトであってもよい。キャッシュ１４はまた、線形アドレスを物理的アドレスに変換するために使用されるＴＬＢ１６を含む。ＴＬＢ１６は、たとえば６４エントリを含んでもよい。
【００２８】
命令フェッチアドレスは、キャッシュコントローラ１８によって命令キャッシュ１４に与えられる。ある実施例では、１クロックサイクルあたり１６バイトまでがキャッシュ１４からフェッチされてもよい。対応するプリデコード情報は、プリデコードキャッシュ１５から並列にフェッチされる。フェッチされた情報は、デコードユニット２０内の命令バッファに置かれる。マイクロプロセッサ１０のある実施例では、フェッチは、７個までの未決の分岐が取られる単一の実行ストリームに沿って行なわれてもよい。
【００２９】
デコードユニット２０は、１プロセッサクロックサイクルあたり多数の命令をデコードするよう構成される。ある実施例では、デコードユニット２０は、命令バイトを受付け、命令バッファからビットをプリデコードし（ｘ８６フォーマットにおいて）、命令境界を位置付け、対応する「ＲＩＳＣ演算」を生成する。ＲＩＳＣ演算は、固定されたフォーマット内部命令であって、そのほとんどはマイクロプロセッサ１０によって単一のクロックサイクルで実行可能である。ＲＩＳＣ演算は、ｘ８６命令セットのあらゆる機能を形成するよう組合される。
【００３０】
命令制御ユニット３４は、スケジューラバッファ３２に記憶される命令の飛越実行を管理するのに必要な論理を含む。命令制御ユニット３４はまた、データ転送と、レジスタリネーミングと、ＲＩＳＣ演算の同時発行およびリタイアメントと、投機的実行とを管理する。ある実施例では、スケジューラバッファ３２は、最大１２個のｘ８６命令に等しい、２４個までのＲＩＳＣ演算を一度に保持する。可能であれば、命令制御ユニット３４は、実行ユニット３６の任意の利用可能な１つにＲＩＳＣ演算を（バッファ３２から）同時に発行してもよい。ある実施例では、命令制御ユニット３４は、１クロックサイクルあたり６個までのＲＩＳＣ演算を発行し、４個までのＲＩＳＣ演算をリタイアメントしてもよい。
【００３１】
図１に示すとおり、マイクロプロセッサ１０は、５個の実行ユニット３６を含む。ストアユニット３６Ｂおよびロードユニット３６Ａは、２段階のパイプライン設計である。ストアユニット３６Ａは、１クロックサイクル後ロードに応じられるデータメモリ書込を実行する。ロードユニット３６Ａは、メモリ読出を実行する。これらの読出からのデータは、２クロックサイクル後に利用可能である。ロードユニットおよびストアユニットは、さまざまなレイテンシを持つ他の実施例でも可能である。
【００３２】
実行ユニット３６Ｃは、ＡＬＵ演算、乗算、除算（符号付きおよび符号なしの両方とも）、シフトおよびローテートを演算するよう構成される固定小数点（または整数）実行ユニットである。対照的に、実行ユニット３６Ｄは、基本語および倍長語ＡＬＵ演算（たとえば加算および比較など）を演算するよう構成される固定小数点実行ユニットである。
【００３３】
実行ユニット３６Ｃ−３６Ｄはまた、マルチメディア命令を使用して書かれたソフトウェアの性能を加速するよう構成される。マルチメディア命令の利用が可能なアプリケーションは、グラフィック、ビデオおよびオーディオ圧縮および伸長、音声認識、ならびに、電話機能を含む。
【００３４】
実行ユニット３６Ｅは、ｘ８６浮動小数点命令を利用するソフトウェアの性能を加速するよう設計されるＩＥＥＥ７５４に従った浮動小数点ユニットを含む。実行ユニット３６Ｅは、加算器ユニットと、乗算器ユニットと、除算／平方根ルートユニットとを含んでもよい。実行ユニット３６Ｅは、コプロセッサの形態で動作してもよく、この場合デコードユニット２０が浮動小数点命令を実行ユニット３６Ｅに直接ディスパッチする。浮動小数点命令はなおも、スケジューラバッファ３２に割当てられ、命令の正順リタイアメントを可能にする。実行ユニット３６Ｅとスケジューラバッファ３２とは、いつ浮動小数点命令がリタイアメントの準備ができたかを決定するよう通信する。
【００３５】
分岐解決ユニット３５は、これが分岐条件が評価された後に条件分岐を解決するという点で分岐予測論理２２から分離している。分岐解決ユニット３５は、効率的な投機的実行を可能にし、マイクロプロセッサ１０が分岐予測が正しいかどうかわかる前に条件分岐を超えて命令を実行することを可能にする。上記のとおり、ある実施例ではマイクロプロセッサ１０は、７個までの未決の分岐を処理するよう構成される。
【００３６】
デコードユニット２０に結合される分岐予測論理２２は、条件分岐がマイクロプロセッサ１０において予測される正確さを増大させるよう構成される。分岐予測論理２２は、分岐挙動および、遅延された命令フェッチによるストールなどの、命令実行へのその否定的影響を処理するよう構成される。ある実施例では、分岐予測論理２２は、８１９２エントリ分岐ヒストリテーブルと、１６バイト×１６エントリ分岐ターゲットキャッシュと、１６エントリリターンアドレススタックとを含む。
【００３７】
分岐予測論理２２は、分岐ヒストリテーブルを使用して２レベル適応的ヒストリアルゴリズムを実現する。このテーブルは、実行される分岐情報を記憶し、個々の分岐を予測し、分岐の群の挙動を予測する。ある実施例では、分岐ヒストリテーブルは、スペースを節約するために、予測されたターゲットアドレスを記憶しない。これらのアドレスは代わりに、デコード段の間にオンザフライで計算される。分岐が取られると予測されるときのキャッシュフェッチの１クロックサイクルペナルティを回避するために、分岐論理２２内の分岐ターゲットキャッシュは、（もし分岐ターゲットキャッシュ内にヒットが生ずれば）ターゲットアドレスの最初の１６バイトを直接命令バッファに与える。
【００３８】
分岐論理２２はまた、コールおよびリターン命令を最適化するよう設計される回路を含む。この回路は、メモリ内のコール命令に続く次の命令のアドレスがリターンアドレススタック上にプッシュされることを可能にする。マイクロプロセッサ１０がリターン命令に遭遇すると、分岐論理２２は、リターンスタックからアドレスをポップしそのアドレスでフェッチを開始する。
【００３９】
この発明の実施例に従えば、命令キャッシュ１４と同様に、データキャッシュ２６もまた２ウェイセットアソシアティブの、３２Ｋバイトのキャッシュとして構成される。データＴＬＢ２８は、線形アドレスを物理的アドレスに変換するために使用され、たとえば、１２８エントリを含んでもよい。データキャッシュ２６は、命令キャッシュ１４と同様に区分されてもよい。
【００４０】
図２を次に参照すると、デコードユニット１０のある実施例のブロック図が示される。他の実施例は可能で企図される。図２に示す実施例では、デコードユニット２０は、命令バッファ５０と、１組のショートデコーダ５２と、ロングデコーダ５４と、ベクトルデコーダ５６と、シーケンサ５８と、マイクロコードＲＯＭ６０と、出力選択マルチプレクサ（ｍｕｘ）６２とを含む。命令バッファ５０は、分岐が取られると予測される場合に、命令キャッシュ１４およびプリデコードキャッシュ１５または分岐論理ユニット２２から命令バイトおよび対応するプリデコードデータを受取るよう結合される。命令バッファ５０はまた、ショートデコーダ５２とロングデコーダ５４とベクトルデコーダ５６とに結合される。ショートデコーダ５２、ロングデコーダ５４、ベクトルデコーダ５６およびシーケンサ５８の各々は、出力選択マルチプレクサ６２に入力を与えるよう結合される。ベクトルデコーダ５６はまた、シーケンサ５８に結合され、これはさらにマイクロコードＲＯＭ６０に結合される。出力選択マルチプレクサ６２は、スケジューラバッファ３２に結合される。ベクトルデコーダ５６は、１対の記憶場所６４および６６を含む。記憶場所６４は、マルチメディアイネーブル表示を記憶し、記憶場所６６は浮動小数点イネーブル表示を記憶する。シーケンサ５８は、マイクロコードＲＯＭ６０に記憶されるマイクロコードルーチンによって使用されるスクラッチＲＡＭ６８を含む。スクラッチＲＡＭ６８は、浮動小数点／マルチメディア状態についての記憶装置を含む。
【００４１】
命令バッファ５０は、バイトがデコーダ５２、５４および５６の１つによってデコードされディスパッチされるまで、命令バイトおよび対応するプリデコーダデータを記憶するよう構成される。各クロックサイクルごとに、命令バッファ５０は、デコードされた命令バイトを廃棄し、残りの命令バイトを命令キャッシュ１４／プリデコードキャッシュ１５または分岐論理ユニット２２から受取られた命令バイトとマージする。ある実施例では、命令バッファ５０は、最大１６命令バイトと対応するプリデコードデータとを記憶する。
【００４２】
ショートデコーダ５２は、最も共通して使用されるｘ８６命令（たとえば転送、シフト、分岐など）を０、１または２個のＲＩＳＣ演算に各々変換する。ショートデコーダ５２は、「短い」ｘ８６命令を演算するよう構成される。言い換えれば、ショートデコーダ５２は、予め定められた最大長までの複数バイトを有する命令をデコードするよう構成される。ある実施例では、予め定められた最大長は７バイトである。ある実施例では、ショートデコーダ５２は、２個の並列デコーダを含む。
【００４３】
ロングデコーダ５４は、１クロックサイクル毎に１つの命令をデコードし、命令に応答して４個までのＲＩＳＣ演算を生成する。デコーダ５４は、ショートデコーダ５２によってサポートされる予め定められた最大長よりも長いが多くとも４ＲＩＳＣ演算になおも分解可能である命令をデコードするよう構成される。ある実施例では、ロングデコーダ５４は、長さが１１バイトまでの命令をデコードするよう構成される。
【００４４】
ベクトルデコーダ５６は、ショートデコーダ５２またはロングデコーダ５４によって処理されない残りの命令をデコードする。ベクトルデコーダ５６は、デコードされる命令に対応するマイクロコードルーチンの最初の４個のＲＩＳＣ演算を生成するよう構成される。並列して、ベクトルデコーダ５６は、ルーチンの残余が記憶されるエントリポイント（すなわちマイクロコードＲＯＭ６０内のアドレス）を生成するよう構成される。シーケンサ５８は、その後のクロックサイクルの間マイクロコードＲＯＭ６０からルーチンの残余をフェッチし、一度に４ＲＩＳＣ演算まで、ルーチンを出力選択マルチプレクサ６２に転送する。
【００４５】
命令のうちこれに対してショートデコーダ５２およびロングデコーダ５４が設計されないものを処理するのに加えて、ベクトルデコーダ５６は、ある例外条件を検出しこの例外条件に応答してエントリポイントおよびマイクロコードルーチンに対応するものの最初のＲＩＳＣ演算を生成する。これらの例外条件の１つは、以下のいずれかの検出である、すなわち、（ｉ）浮動小数点命令のデコードの後、しかし任意の他のマルチメディア命令のデコードの前のマルチメディア命令と、（ii）マルチメディア命令のデコードの後、しかし任意の他の浮動小数点命令のデコードの前の浮動小数点命令とのいずれかである。これらの場合の各々について、レジスタファイル４２と４４との同期化が必要とされ得る。
【００４６】
ベクトルデコーダ５６は、記憶場所６４および６６に記憶されるマルチメディアイネーブル表示および浮動小数点イネーブル表示を使用して上記の場合を検出する。各表示は、セットされたとき、対応する命令型のデコードが能動化されたことを示し、かつ、クリアされたとき、対応する命令型のデコードが不能化されたことを示すビットを含んでもよい。代替的に、各表示は、セットされたとき、対応する命令型のデコードが不能化されたことを示し、かつ、クリアされたとき、対応する命令型のデコードが能動化されたことを示すビットを含んでもよい。マルチメディアイネーブル表示および浮動小数点イネーブル表示によって表わされる命令型のうちの１つのみが、任意の所与の時間で能動化され得る。不能化される命令型をデコードすると、ベクトルデコーダ５６は例外条件を生成する。
【００４７】
シーケンサ５８はマイクロコードルーチンをフェッチし、これはレジスタファイル４２と４４との間のレジスタファイル同期化を実行するべきか否かを決定し、その同期化を選択的に実行する。マイクロコードルーチンはまた、実行ユニット３６Ｃ−３６Ｄと実行ユニット３６Ｅとの間である種の他の同期化を行なう。たとえば、上記のマルチメディア命令を含むｘ８６アーキテクチャを採用するマイクロプロセッサ１０の実施例では、浮動小数点実行ユニット３６Ｅによって使用され浮動小数点レジスタの有効性およびステータスワードのスタック部分の最上部を示すタグワードは、マルチメディア命令の実行に応答して変更される。したがって、もし例外が生成されて浮動小数点命令がデコードされれば、３６Ｅの浮動小数点実行内の最上部スタックおよびタグワードは従って変更される。
【００４８】
シーケンサ５８は、浮動小数点／マルチメディア状態をスクラッチＲＡＭ６８内に記憶する。浮動小数点／マルチメディア状態は、ベクトルデコーダ５６によって維持されるマルチメディアイネーブル表示および浮動小数点イネーブル表示と同様に、浮動小数点命令デコードまたはマルチメディア命令デコードが能動化されるか否かを示す。しかしながら、付加的に、浮動小数点／マルチメディア状態はまた、最も最近にデコードされたマルチメディア命令が空状態命令であったかどうかも示す。ベクトルデコーダ５６が空状態命令をデコードすると、浮動小数点／マルチメディア状態はセットされ最も最近にデコードされたマルチメディア命令が空状態命令であったかどうかを示す。浮動小数点／マルチメディア状態は、浮動小数点またはマルチメディア命令のいずれかがその後にデコードされるまで、最も最近デコードされたマルチメディア命令が空状態命令であったことを示す。（マルチメディアイネーブル表示および浮動小数点イネーブル表示によって示されるとおり）もしその後にデコードされるマルチメディアまたは浮動小数点命令が能動化されれば、浮動小数点／マルチメディア状態は更新されその命令型およびデコードされた最終命令が空状態命令でなかったことを示す。ある実施例では、空状態命令はベクトルデコーダ５６によってマルチメディア命令であると考えられる。したがって、空状態命令のデコードの後に、浮動小数点命令は例外をもたらし、マルチメディア命令は、例外をもたらさないが、浮動小数点／マルチメディア状態によって最も最近にデコードされた命令が空状態命令であったことを示さないようにセットされる。このようにして、マイクロコードＲＯＭ６０からフェッチされたマイクロコードルーチンは、レジスタファイル４２と４４との同期化が所望されるか否かを決定することができる。代替的に、シーケンサ５８は、浮動小数点／マルチメディア状態、および、ベクトルデコーダ５６によるマルチメディア命令のデコードの場合にはマルチメディア命令が空状態命令であるかどうかに依存して、異なったマイクロコードルーチンをフェッチしてもよい。マイクロコードルーチンはまた、先に能動化された命令型を不能化し、記憶場所６４および６６に先に不能化された命令型を能動化する。その後に、ベクトルデコーダ５６が例外を生成した命令は、再びフェッチされる。対応する命令型はここで能動化されているので、例外は生成されるはずはない。加えて、反対の命令型の命令がその後にデコードされれば、別の例外が生成される（レジスタファイル４２と４４との同期化をする、または同期化をしない機会が生ずる）。
【００４９】
上記のようにして、デコードユニット２０は、レジスタファイル４２と４４との同期化を禁止するか、または、現在能動化されていない命令型をデコードすると同期化を実行するよう構成される。イネーブル表示は、たとえさまざまな他の命令型がその間にデコードされるとしても（たとえば整数命令）、デコードユニット２０が１つ以上の浮動小数点命令のセットと１つ以上のマルチメディア命令のセットとの間の境界を検出することを可能にする。なお、いくつかの場合においては、いずれの命令型のデコードも能動化されないことがある。たとえば、浮動小数点命令の実行は、マイクロプロセッサ１０によって採用されるアーキテクチャによって定義される制御レジスタ内のさまざまな制御ビットを介して不能化されることがある。そのような場合には、たとえマルチメディア命令のデコードが不能化されているとしても浮動小数点命令のデコードは不能化される。
【００５０】
出力選択マルチプレクサ６２は、そこに命令を与えているソースの１つから命令を選択しこれらの命令をスケジューラバッファ３２に伝送するよう構成される。命令のソースの各々は、ＲＩＳＣ演算を出力選択マルチプレクサ６２に与え、このためスケジューラバッファ３２はＲＩＳＣ演算のみを受取る。出力選択マルチプレクサ６２は、デコーダおよびシーケンサ５８の各々から制御信号（わかりやすくするため図面には図示せず）によって制御される。
【００５１】
なお、命令バッファ５０からの命令は、デコーダ５２、５４および５６の各々に並列に与えられる。デコーダの各々は、与えられた命令バイトをデコードしようと試み、命令を実際にデコードすることのできるデコーダによって出力選択マルチプレクサ６２はその出力を選択する。さらに、マイクロコードＲＯＭ６０は、レジスタファイルの同期化（またはその欠如）のために上記のルーチンを記憶するのに加えて、所望のごとく、さまざまな他の目的のためにルーチンを記憶する。マイクロコードルーチンは、特定の目的を達成するよう配置される命令のシーケンス（たとえばＲＩＳＣ演算）を含む。
【００５２】
図３を参照すると、シーケンサ５８によって維持される浮動小数点／マルチメディア状態のある実施例の状態を示す例示の状態マシン７０が図示される。他の実施例を企図することが可能である。図３の実施例では、状態マシン７０は、ＦＰ活性化状態７２、マルチメディア活性化状態７４、および、ＦＥＭＭＳ状態７６を含む。
【００５３】
ＦＰ活性化状態７２は、レジスタファイル同期化を実行するべきかどうかを決定する例外を生じることなしに、浮動小数点命令がデコードされディスパッチされ得る状態である。マルチメディア活性化状態７４またはＦＥＭＭＳ状態７６のいずれかでは、レジスタファイル同期化を実行するべきかどうかを決定する例外を生ずることなしにマルチメディア命令はデコードされディスパッチされ得る。状態マシン７０に図示されるさまざまなアークは、状態変化を起こさせる事象を示す。点線のアークは、レジスタファイル同期化が実行されるべきかどうかを決定するためにベクトルデコーダ５６によって合図される例外を示す。実線のアークは、例外なしに実行される状態変化（またはその欠如）を示す。
【００５４】
状態マシン７０がＦＰ活性化状態７２にあるとき、浮動小数点または「通常」命令のいずれかのデコードによって状態マシン７０はＦＰ活性化状態７２に維持される。これを説明すると、「通常」命令とは、浮動小数点命令、マルチメディア命令または空状態命令ではない命令を指す。たとえば、整数命令はこの説明では通常命令である。他方で、マルチメディア命令または空状態命令（図３に示す「ＦＥＭＭＳ命令」）のデコードによって、ＦＰ活性化状態７２からマルチメディア活性化状態７４またはＦＥＭＭＳ状態７６の１つに、それぞれ遷移する。これらの遷移の各々は、ベクトルデコーダ５６によってシーケンサ５８に合図される例外を介して生ずる。ＦＰ活性化状態７２からマルチメディア活性化状態７４への遷移は、レジスタファイル同期化を招き、一方、ＦＰ活性化状態７２からＦＥＭＭＳ状態７６への遷移はレジスタファイル同期化を招かない。このようにして、浮動小数点命令の実行からマルチメディア命令の実行への遷移は、空状態命令によって開始可能であり、レジスタファイル同期化が禁止されることがある。マイクロコードルーチンを完成すると、状態マシン７０はデスティネーション状態になる。
【００５５】
状態マシン７０がマルチメディア活性化状態７４にあるとき、マルチメディア命令または通常命令のいずれかのデコードによって、状態マシン７０はマルチメディア状態７４に維持される。他方で、空状態命令のデコードによって、状態マシン７０はＦＥＭＭＳ状態７６に遷移し、浮動小数点命令のデコードによってＦＰ活性化状態７２に遷移する。ＦＥＭＭＳ状態７６への遷移は例外を生ずることなしに起きる（なぜなら空状態命令は、状態マシン７０に関してはおよびレジスタファイル４２と４４との同期化に関してはマルチメディア命令と考えられるからである）。逆にＦＰ活性化状態７２への遷移は例外を介して起こる。
【００５６】
状態マシン７０がＦＥＭＭＳ状態７６にあるとき、通常命令のデコードによって状態マシン７０はＦＥＭＭＳ状態７６に維持される。このようにして、１つ以上の通常命令は、空状態命令とその後のマルチメディア命令または浮動小数点命令との間にコードシーケンスで挿入可能であり、コードシーケンス内の空状態命令の存在によるレジスタファイル同期化への影響は、あたかも通常命令がコードシーケンスにはなかったかのように同じである。したがって、空状態命令を使用するプログラミングモデルは、より柔軟になる可能性がある。他方で、マルチメディア命令のデコードによって状態マシン７０はマルチメディア活性化状態７４に遷移する（空状態命令はマルチメディア命令であると考えられるので、ここでもレジスタファイルの同期化はない）。浮動小数点命令のデコードは、ＦＰ活性化状態７２への遷移と、レジスタファイルの同期化が所望されるかどうかを決定する例外とをもたらす。ＦＥＭＭＳ状態７６からＦＰ活性化状態７２への遷移は、レジスタファイル同期化なしに達成される、なぜならＦＥＭＭＳ状態７６にある状態マシン７０は、最も最近に実行されたマルチメディアまたは浮動小数点命令が空状態であったことを示し、したがってレジスタファイル同期化は所望されないからである。
【００５７】
なお、上記説明は、例外をもたらす遷移のうちどれがレジスタファイル同期化を招き、どれがそうでないかを示すが、これらの状態マシンの遷移は、マイクロコードルーチンを介して管理される。したがって、状態遷移の実行の間、レジスタファイル同期化が実行されるかどうかを決定するのはマイクロコードルーチンである。さらに、空状態命令はマルチメディア命令であると考えられるので、マルチメディア活性化状態７４とＦＥＭＭＳ状態７６との間の遷移は、例外をもたらすことなしに実行され得ることが注目される。したがって、レジスタファイル同期化は必要とされない。シーケンサ５８によって維持される浮動小数点／マルチメディア状態が、新しい状態に更新されるだけである。さらに、上記の状態マシンは、一部マイクロコードルーチンで、一部ハードウェアで実現される。しかしながら、状態マシンは、適切なレジスタファイル同期化を含め、ハードウェアにおいて完全に実現可能であることが企図される。さらにまた他の実施例が企図され、状態マシン７０およびデコードユニット２０によって表される機能がデコード段とは異なったパイプラインにおける段に採用されてもよい。いかなる好適な構成が使用されてもよい。
【００５８】
ある実施例に従うと、状態マシン７０の状態は、マイクロプロセッサ１０によって予測される各分岐命令とともにディスパッチされてもよいことが注目される。分岐の予測誤りが起きれば、その分岐命令とともにディスパッチされた状態は状態マシン７０にリストアされてもよい。代替的に、分岐命令とともに状態をディスパッチすることとある種の命令を実行する前に実行命令をストールすることとを組合わせてこれを所望のごとく採用してもよい。投機的命令実行がリダイレクトされるとき（たとえば分岐の予測誤りおよび例外）状態マシン７０の状態を回復するための任意の好適な方法が使用されてもよい。
【００５９】
次に図４を参照すると、上記説明に従ってレジスタファイル同期化を選択的に実行するために用いられる１つ以上のマイクロコードルーチンによって実行される動作の例示の組を図示するフローチャートが示される。他の実施例も可能であり企図される。図４に示すステップは場合によっては直列順に例示されるが、いかなる好適な順が使用されてもよい。この説明の残りの部分では、マイクロコードルーチンという用語を使用する。しかしながら、１つ以上のマイクロコードルーチンが図４に示すステップを実行するために使用されてもよいことが理解される。
【００６０】
マイクロコードルーチンは、記憶場所６４および６６に記憶される浮動小数点イネーブル表示およびマルチメディアイネーブル表示の状態を調べて実行するべき適切な動作を決定する（決定ブロック８０および８２）。浮動小数点命令およびマルチメディア命令のいずれも能動化されなければ、マイクロコードルーチンはソフトウェア割込ハンドラに制御を転送する（ステップ８４）。ソフトウェア割込ハンドラは、浮動小数点および／またはマルチメディア実行が能動化されるべきか否かを決定してもよい。もし浮動小数点イネーブル表示が能動化されれば（すなわち状態マシン７０がＦＰ活性化状態７２にある）、マイクロコードルーチンは、デコードされるべきマルチメディア命令が空状態命令であるかどうかを決定する（決定ブロック８６）。もしマルチメディア命令が空状態命令であれば、浮動小数点命令とマルチメディア命令との間の遷移が検出されており、マルチメディア命令は空状態命令で開始される。したがって、レジスタファイル同期化は所望されない。マイクロコードルーチンは浮動小数点／マルチメディア状態をＦＥＭＭＳ状態７６にセットし（ステップ８８）、記憶場所６４および６６をさらにセットしてマルチメディアが能動化され浮動小数点が不能化されたことを示す。
【００６１】
他方で、もしデコードされるべきマルチメディア命令が空状態命令でなければ、浮動小数点命令とマルチメディア命令との間の遷移が検出されており、レジスタファイル同期化が所望される。したがって、レジスタファイル４２内のレジスタの各々は、レジスタファイル４４内の対応するレジスタにコピーされる（ステップ９０）。加えて、マイクロコードルーチンは、浮動小数点／マルチメディア状態をマルチメディア活性化状態７４にセットし、記憶場所６４および６６をセットしてマルチメディアが能動化され浮動小数点が不能化されたことを示す。
【００６２】
逆に、もし浮動小数点が不能化されマルチメディアが能動化されれば、マイクロコードルーチンは、状態マシン７０がＦＥＭＭＳ状態７６にあるかどうかを決定する（決定ブロック９２）。もし状態マシン７０がＦＥＭＭＳ状態７６にあれば、マルチメディア命令と浮動小数点命令との間の遷移が検出されており、レジスタファイル同期化は所望されない。したがって、マイクロコードルーチンは浮動小数点実行ユニット３６Ｅ内のタグワードをセットしてレジスタファイル４２内の各レジスタが無効であることを示す（なぜなら最も最近に実行されたマルチメディア命令は空状態命令であったからである）。加えて、マイクロコードルーチンは、（マルチメディア命令定義に従って）ステータスワードのスタック部分の最上部をセットする。さらに、マイクロコードルーチンは、浮動小数点／マルチメディア状態をＦＰ活性化状態７２にセットし、記憶場所６４および６６をセットしてマルチメディアが不能化され浮動小数点が能動化されたことを示す（ステップ９４）。
【００６３】
もし浮動小数点が不能化され、マルチメディアが能動化され、状態マシン７０がマルチメディア活性化状態７４にあるならば、マルチメディア命令と浮動小数点命令との間の遷移が検出されており、レジスタファイル同期化が所望される。したがって、マイクロコードルーチンは、ステータスワードのスタック部分を０にセットする（ステップ９６）。加えて、タグワードは、最も最近に実行されたマルチメディア命令がＥＭＭＳ命令であったか否かまたは別のマルチメディア命令であったかどうかに依存して、各レジスタ毎に有効または無効のいずれかにセットされる。加えて、マイクロコードルーチンは、レジスタファイル４４内のレジスタをレジスタファイル４２内の対応するレジスタにコピーする。最後に、マイクロコードルーチンは、浮動小数点／マルチメディア状態をＦＰ活性化状態７２にセットし、記憶場所６４および６６をセットしてマルチメディアが不能化され浮動小数点が能動化されたことを示す。
【００６４】
次に図５を参照すると、空状態命令の例示的使用を示す例示のソフトウェア階層が示される。さまざまなルーチンがボックス１００−１０８によって例示される。各ボックスは、上部および下部に分かたれる。上部分は、ルーチンの型を特定し、下部分はルーチンのその型に含まれる命令のセットを示す。ボックスの間の矢印は、どのルーチンが互いと通信可能であるか（すなわちコールするかまたはコールされる）を示す。
【００６５】
ボックス１００は、浮動小数点ルーチンによってコールされず浮動小数点ルーチンをコールしない通常ルーチン（すなわち浮動小数点命令またはマルチメディア命令を含まないルーチン）を例示する。したがって、通常ルーチンは、１つ以上の通常命令を含む。もしマルチメディアルーチンが通常ルーチンによってコールされるならば、オプションとして１つ以上の通常命令に続くのは空状態命令である。リターン命令が通常ルーチンを締めくくる。したがって、ボックス１０８によって表わされるルーチンなどのルーチンは、ルーチンの最後に空状態命令を省略し得る。さらに、もしボックス１０８によって表わされるルーチンをコールする通常ルーチンおよび任意のマルチメディアルーチンがボックス１０８によって表わされるルーチンをコールする前に空状態命令を含めば、ボックス１０８によって表わされるルーチンはルーチンの開始時に空状態命令を省略し得る。
【００６６】
ボックス１０８によって例示されるルーチンは、マルチメディアルーチンまたは通常ルーチンによってのみコールされるマルチメディアルーチン（すなわち１つ以上のマルチメディア命令および任意で１つ以上の通常命令を含むルーチン）である。ボックス１０８によって例示されるルーチンは、マルチメディアルーチンまたは通常ルーチンによってのみコールされるので、ボックス１０８によって例示されるルーチンは、空状態命令を省略し、コールされたルーチンが任意の浮動小数点命令の実行より前に空状態命令を挿入するとすることができる。ボックス１０８によって例示されるルーチンは、リターン命令で終わる。
【００６７】
ボックス１０２によって例示されるルーチンは、浮動小数点ルーチンを含む、任意のルーチンによってコールされ得る通常ルーチンである。したがって、ルーチンは、リターン命令で終わる１つ以上の通常命令を含む。
【００６８】
ボックス１０４は、たとえば浮動小数点ルーチンを含む非マルチメディアルーチンによってコール可能であるマルチメディアルーチンを例示する。したがって、もしルーチンが浮動ルーチンによってコールされるか、または、浮動小数点ルーチンの実行の後にしかし異なったマルチメディアルーチンの実行よりも前にコールされれば、ルーチンは空状態命令によって開始されレジスタファイル同期化を禁止する。空状態命令の後に１つ以上のマルチメディアおよび／または通常命令が続く。ルーチンは、別の空状態命令およびリターン命令で終わる。もしその後のルーチンが浮動小数点命令を実行すれば、最後の空状態命令は、レジスタファイル同期化を禁止する。
【００６９】
浮動小数点ルーチンはボックス１０６によって例示される。浮動小数点ルーチンは、いかなる他のルーチンによってコールされてもよく、１つ以上の浮動小数点および／または通常命令を含み、リターン命令で終わる。
【００７０】
図５に例示するルーチンは、プログラムによって採用される可能性のあるさまざまなルーチンに含まれる空状態命令の数を最小限にしようとする例である。さらに、もしレジスタファイル同期化が所望されれば、空状態命令をこれらのルーチンに使用するべきではないことが注目される。
【００７１】
次に図６を参照すると、バスブリッジ２０２を介してさまざまなシステムコンポーネントに結合されるマイクロプロセッサ１０を含むコンピュータシステム２００のある実施例のブロック図が示される。他の実施例が可能であり企図される。図示のシステムでは、主メモリ２０４はメモリバス２０６によってバスブリッジ２０２に結合され、グラフィックコントローラ２０８はＡＧＰバス２１０によってバスブリッジ２０２に結合される。最後に、複数個のＰＣＩデバイス２１２Ａ−２１２ＢがＰＣＩバス２１４によってバスブリッジ２０２に結合される。２次バスブリッジ２１６をさらに設けてＥＩＳＡ／ＩＳＡバス２２０によって１つ以上のＥＩＳＡまたはＩＳＡデバイス２１８への電気的インターフェイスを可能にしてもよい。マイクロプロセッサ１０は、ＣＰＵバス２２４によってバスブリッジ２０２に結合される。
【００７２】
バスブリッジ２０２は、マイクロプロセッサ１０と主メモリ２０４とグラフィックコントローラ２０８とＰＣＩバス２１４に接結されるデバイスとのインターフェイスを与える。演算がバスブリッジ２０２に接続されるデバイスの１つから受取られると、バスブリッジ２０２は演算のターゲットを特定する（たとえば、特定のデバイスまたは、ＰＣＩバス２１４の場合、ターゲットはＰＣＩバス２１４の上にある）。バスブリッジ２０２は、演算をターゲットされたデバイスへ送る。バスブリッジ２０２は一般的には、演算を、ソースデバイスまたはバスによって使用されるプロトコルからターゲットデバイスまたはバスによって使用されたプロトコルに変換する。
【００７３】
ＰＣＩバス２１４に対してＩＳＡ／ＥＩＳＡバスへのインターフェイスを与えるのに加え、２次バスブリッジ２１６は、所望であれば、さらなる機能をさらに組込んでもよい。たとえば、ある実施例では、２次バスブリッジ２１６は、マスタＰＣＩアービタ（図示せず）を含んでＰＣＩバス２１４の所有権を調停する。入力／出力コントローラ（図示せず）は、外部からであっても２次バスブリッジ２１６と統合されてもよいが、これを所望のごとくコンピュータシステム２００内に含んでキーボードおよびマウス２２２ならびにさまざまな直列および並列ポートへの動作上のサポートを与えてもよい。他の実施例では、外部キャッシュユニット（図示せず）がマイクロプロセッサ１０とバスブリッジ２０２との間のＣＰＵバス２２４にさらに結合されてもよい。代替的に、外部キャッシュはバスブリッジ２０２に結合されてもよく、外部キャッシュに対するキャッシュ制御論理はバスブリッジ２０２に統合されてもよい。
【００７４】
主メモリ２０４は、この中にアプリケーションプログラムが記憶されここからマイクロプロセッサ１０が主に実行するメモリである。好適な主メモリ２０４は、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）と、好ましくはＳＤＲＡＭ（シンクロナスＤＲＡＭ）の複数個のバンクとを含む。
【００７５】
ＰＣＩデバイス２１２Ａ−２１２Ｂは、たとえば、ネットワークインターフェイスカード、ビデオアクセレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、ＳＣＳＩ（スモールコンピュータシステムインターフェイス）アダプタ、および、電話機能カードなどのさまざまな周辺デバイスを例示するものである。同様に、ＩＳＡデバイス２１８は、モデム、サウンドカード、ＧＰＩＢまたはフィールドバスインターフェイスカードなどのさまざまなデータ収集カードなどの、さまざまなタイプの周辺デバイスを例示する。
【００７６】
グラフィックコントローラ２０８は、ディスプレイ２２６上のテキストおよび画像のレンダリングを制御するために設けられる。グラフィックコントローラ２０８は、一般的に公知である典型的なグラフィックアクセレータを具体化して、主メモリ２０４へおよびそこから効果的にシフト可能である３次元データ構造をレンダリングしてもよい。グラフィックコントローラ２０８はしたがって、それがバスブリッジ２０２内のターゲットインターフェイスへのアクセスを要求し受取って主メモリ２０４へのアクセスを獲得することが可能であるという点で、ＡＧＰバス２１０のマスタであり得る。専用グラフィックバスは、主メモリからのデータの迅速な検索を収容する。ある種の演算では、グラフィックコントローラ２０８はさらに、ＡＧＰバス２１０上のＰＣＩプロトコルトランザクションを生成するよう構成されてもよい。したがって、バスブリッジ２０２のＡＧＰインターフェイスは、ＡＧＰプロトコルトランザクションとＰＣＩプロトコルターゲットおよびイニシエータトランザクションとの両方をサポートする機能を含んでもよい。ディスプレイ２２６は、画像またはテキストを与えることのできる任意の電子ディスプレイである。好適なディスプレイ２２６は、陰極線管（「ＣＲＴ」）、液晶ディスプレイ（「ＬＣＤ」）などを含む。
【００７７】
なお、ＡＧＰバス、ＰＧＩバス、およびＩＳＡバスまたはＥＩＳＡバスは、上記説明では例として使用されるが、所望のごとくいかなるバスアーキテクチャと置き換えてもよい。さらに、コンピュータシステム２００は、付加的なマイクロプロセッサ（たとえばコンピュータシステム２００の任意のコンポーネントとして示されるマイクロプロセッサ１０ａ）を含むマルチプロセシングコンピュータシステムであってもよい。マイクロプロセッサ１０ａは、マイクロプロセッサ１０と同様であってもよい。より特定的には、マイクロプロセッサ１０ａは、マイクロプロセッサ１０と全く同じコピーであってもよい。マイクロプロセッサ１０ａは、マイクロプロセッサ１０（図６に図示される）とＣＰＵバス２２４を共有してもよく、または、独立バスを介してバスブリッジ２０２に接続されてもよい。
【００７８】
上記開示に従うと、マイクロプロセッサは、同じ論理的記憶装置に対応付けるよう定義された２つのレジスタファイル間の選択的レジスタファイル同期化をサポートするものとして示される。有利には、レジスタファイル間の同期化が所望されない場合、マイクロプロセッサは同期化を禁止してもよい。同じ論理的レジスタファイルにアクセスする命令とレジスタファイル同期化を必要としない命令との両方の型を採用する命令シーケンスは、レジスタファイルの非同期化によってより高い性能を達成し得る。他方で、レジスタファイル同期化を必要としないコードシーケンスでも同期化の利益を受ける（おそらく達成される性能はより低い）。
【００７９】
上記開示を詳細に理解すると多くの変形および修正が当業者には明らかとなるであろう。前掲のクレームはそのような変形および修正のすべてを含むものであると理解されるべきである。
【図面の簡単な説明】
【図１】  マイクロプロセッサのある実施例のブロック図である。
【図２】  図１に示すデコードユニットのある実施例のブロック図である。
【図３】  図２に示すデコードユニットのある実施例の動作を例示する状態マシンの図である。
【図４】  図２に示すデコードユニットのある実施例に従って図３に示す状態マシンの一部を実現するマイクロコードシーケンスで実行されるステップを例示するフローチャートである。
【図５】  高速の空状態命令の例示的使用とサブルーティン階層を例示する図である。
【図６】  図１に示すマイクロプロセッサを含むコンピュータシステムのある実施例のブロック図である。
【図１】
0003837289.tif 000002
【図２】
0003837289.tif 000003
【図３】
0003837289.tif 000004
【図４】
0003837289.tif 000005
【図５】
0003837289.tif 000006
【図６】
0003837289.tif 000007