(57)【要約】      （修正有）【課題】プロセッサにおいて、ソースのビットの一部をデスティネーション・レジスタにロード／移動する方法を提供する。【解決手段】命令であって、プロセッサに、単一のソース・オペランドの非連続位置群からの複数のビットをデスティネーション・レジスタの非連続デスティネーション位置群に記憶させ、単一のソース・オペランドの非連続位置群それぞれからのビットをデスティネーション・レジスタの他のデスティネーション位置群に複製させる単一の移動及び複製の命令を提供する。複製される対象の単一のソース・オペランドの非連続位置群は、前記単一の移動及び複製命令により、明示的に規定されていない前記単一の移動及び複製命令に対して固定である。【選択図】図１
2014089730.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
フェッチ／復号化手段と、
算術論理演算ユニット（ＡＬＵ）を含む実行コアとを備え、前記ＡＬＵは命令に応じて機能を行い、前記命令の１つは、単一のソース・オペランドを示すフォーマットを有する単一の移動及び複製の命令を含み、前記単一の移動及び複製の命令は、前記プロセッサに、前記単一のソース・オペランドの非連続位置群からの複数のビットをデスティネーション・レジスタの非連続デスティネーション位置群に記憶させ、前記単一のソース・オペランドの前記非連続位置群それぞれからの前記ビットを前記デスティネーション・レジスタの他のデスティネーション位置群に複製させ、
複製される対象の前記単一のソース・オペランドの前記非連続位置群は、前記単一の移動及び複製命令により、明示的に規定されていない前記単一の移動及び複製命令に対して固定であるプロセッサ。
【請求項２】
方法であって、
単一のプログラム命令を実行する工程を含み、前記単一のプログラム命令は、
前記命令によって示される単一のソース・オペランドの非連続位置群からの複数のビットをデスティネーション・レジスタの非連続デスティネーション位置群に記憶する工程；及び  
前記単一のソース・オペランドの前記非連続位置群の各々のビットを前記デスティネーション・レジスタのデスティネーション位置の他の群に複製し、記憶する工程；
を行わせ、複製される前記単一のソース・オペランドの前記非連続位置群は、前記命令に対して暗黙である方法。
【請求項３】
命令を記憶させたコンピュータ判読可能媒体上に存在するコンピュータ・プログラムであって、該命令がプロセッサによって実行された場合、該プロセッサに：
前記命令によって示される単一のソース・オペランドの非連続位置群からの複数のビットをデスティネーション・レジスタの非連続デスティネーション位置群に記憶する工程；及び
前記命令によって示される前記単一のソース・オペランドの前記非連続位置群の各々のビットを前記デスティネーション・レジスタのデスティネーション位置の他の群に複製し、記憶する工程；を行わせ、
複製される対象の前記単一のソース・オペランドの前記非連続位置群は、前記命令によって明示的に規定されない方法。
【請求項４】
プロセッサであって、
フェッチ／復号化手段と、
算術論理演算ユニット（ＡＬＵ）及び汎用レジスタ群を含む実行コアとを備え、前記ＡＬＵは命令に応じて機能を行い、前記命令の１つは、単一のソース・オペランドを示すフォーマットを有し、前記プロセッサに、１２８ビットのデスティネーション・レジスタのビット〔６３−３２〕に前記ソース・オペランドのビット〔６３−３２〕を記憶させ、前記単一のソース・オペランドのビット〔６３−３２〕を前記デスティネーション・レジスタのビット〔３１−０〕に複製させ、記憶させ、前記デスティネーション・レジスタのビット〔１２７−９６〕に該ソース・オペランドのビット〔１２７−９６〕を記憶させ、前記デスティネーション・レジスタのビット〔９５−６４〕に前記ソース・オペランドのビット〔１２７−９６〕を複製させ、記憶させる単一のパック単精度浮動小数点上位移動及び複製命令を含み、
前記命令は、前記プロセッサに、前記ソース・オペランドのビット［６３−３２］を前記デスティネーション・レジスタのビット［６３−３２］及びビット［６３−３２］に記憶させることのみできるタイプのものであるプロセッサ。
【請求項５】
命令を実行する工程を含む、プロセッサにおいて実行される方法であって、前記命令は、
前記命令によって示される単一のソース・オペランドのビット〔１２７−０〕にアクセスする工程；
デスティネーション・レジスタのビット〔６３−３２〕に前記単一のソース・オペランドのビット〔６３−３２〕を記憶し、前記ソース・オペランドのビット〔６３−３２〕を前記デスティネーション・レジスタのビット〔３１−０〕に複製し、記憶する工程；及び
前記デスティネーション・レジスタのビット〔１２７−９６〕に前記単一のソース・オペランドのビット〔１２７−９６〕を記憶し、前記ソース・オペランドのビット〔１２７−９６〕を前記デスティネーション・レジスタのビット〔９５−６４〕に複製し、記憶する工程を行わせ、
前記ソース・オペランドの前記ビット［６３−３２］の、前記デスティネーション・レジスタの前記ビット［６３−３２］への前記記憶、及び前記ソース・オペランドの前記ビット［６３−３２］の、前記デスティネーション・レジスタの前記ビット［３１−０］への前記複製及び前記記憶は、前記命令に対して暗黙である方法。
【請求項６】
命令を記憶させたコンピュータ判読可能媒体上に存在するコンピュータ・プログラムであって、該命令がプロセッサによって実行された場合、該プロセッサに：
前記命令によって示される単一のソース・オペランドのビット〔１２７−０〕にアクセスする工程；
デスティネーション・レジスタのビット〔６３−３２〕に、前記命令によって示される前記単一のソース・オペランドのビット〔６３−３２〕を記憶し、前記ソース・オペランドのビット〔６３−３２〕を前記デスティネーション・レジスタのビット〔３１−０〕に複製し、記憶する工程；及び
前記デスティネーション・レジスタのビット〔１２７−９６〕に、前記命令によって示される前記単一のソース・オペランドのビット〔１２７−９６〕を記憶し、前記ソース・オペランドのビット〔１２７−９６〕を前記デスティネーション・レジスタのビット〔９５−６４〕に複製し、記憶する工程；を行わせ、
前記ソース・オペランドの前記ビット［６３−３２］の、前記デスティネーション・レジスタの前記ビット［６３−３２］への記憶、及び前記ソース・オペランドの前記ビット［６３−３２］の、前記デスティネーション・レジスタの前記ビット［３１−０］への複製及び記憶は、前記命令によって明示的に規定されないコンピュータ・プログラム。
【請求項７】
プロセッサであって、
フェッチ／復号化手段と、
算術論理演算ユニット（ＡＬＵ）及び汎用レジスタ群を含む実行コアとを備え、前記ＡＬＵは命令に応じて機能を行い、前記命令の１つは、単一のソース・オペランドを示すフォーマットを有し、前記プロセッサに、１２８ビットのデスティネーション・レジスタのビット〔３１−０〕に前記単一のソース・オペランドのビット〔３１−０〕を記憶させ、前記単一のソース・オペランドのビット〔３１−０〕を前記デスティネーション・レジスタのビット〔６３−３２〕に複製させ、記憶させ、前記デスティネーション・レジスタのビット〔９５−６４〕に該ソース・オペランドのビット〔９５−６４〕を記憶させ、前記デスティネーション・レジスタのビット〔１２７−９６〕に前記ソース・オペランドのビット〔９５−６４〕を複製させ、記憶させる単一のパック単精度浮動小数点下位移動及び複製命令を含み、
前記パック単精度浮動小数点下位移動及び複製命令は、前記プロセッサに、前記デスティネーション・レジスタの前記ビット〔６３−３２〕及び前記ビット〔３１−０〕に前記ソース・オペランドの前記ビット〔３１−０〕を記憶させることのみできるタイプのものであるプロセッサ。
【請求項８】
方法であって、
単一のソース・オペランドを示すフォーマットを有し、プロセッサにおいて、機能を行わせるプログラム命令を実行する工程を含み、前記機能は、
前記命令によって示された前記単一のソース・オペランドのビット［３１−０］を１２８ビット・デスティネーション・レジスタのビット［３１−０］に記憶する機能と、
前記命令によって示された前記単一のソース・オペランドのビット［３１−０］を前記デスティネーション・レジスタのビット［６３−３２］に複製し、記憶する機能と、
前記単一のソース・オペランドのビット［９５−６４］を前記デスティネーション・レジスタのビット［９５−６４］に記憶する機能と、
前記命令によって示された前記単一のソース・オペランドのビット［９５−６４］を前記デスティネーション・レジスタのビット［１２７−９６］に複製し、記憶する機能とを含み、
前記ソース・オペランドの前記ビット［９５−６４］の、前記デスティネーション・レジスタの前記ビット［９５−６４］への前記記憶、及び前記ソース・オペランドの前記ビット［９５−６４］の、前記デスティネーション・レジスタの前記ビット［１２７−９６］への前記複製及び前記記憶は、前記命令に対して暗黙である方法。
【請求項９】
命令を記憶させたコンピュータ判読可能媒体上に存在するコンピュータ・プログラムであって、前記命令は、プロセッサによって実行された場合、前記プロセッサに機能を行わせ、前記機能は、
前記命令によって示された単一のソース・オペランドのビット［３１−０］を１２８ビット・デスティネーション・レジスタのビット［３１−０］に記憶する機能と、
前記単一のソース・オペランドのビット［３１−０］を前記デスティネーション・レジスタのビット［６３−３２］に複製し、記憶する機能と、
前記単一のソース・オペランドのビット［９５−６４］を前記デスティネーション・レジスタのビット［９５−６４］に記憶する機能と、
前記命令によって示された前記単一のソース・オペランドのビット［９５−６４］を前記デスティネーション・レジスタのビット［１２７−９６］に複製し、記憶する機能とを含み、
前記ソース・オペランドの前記ビット［９５−６４］の、前記デスティネーション・レジスタの前記ビット［９５−６４］への前記記憶、及び前記ソース・オペランドの前記ビット［９５−６４］の、前記デスティネーション・レジスタの前記ビット［１２７−９６］への前記複製及び前記記憶は、前記命令のオプコードによって明示的に規定されないコンピュータ・プログラム。
【請求項１０】
請求項１記載のプロセッサであって、前記単一の移動及び複製命令は、メモリにおける前記単一のソース・オペランドを示すためのフォーマットを有するプロセッサ。        
【請求項１１】
請求項１記載のプロセッサであって、前記ソース・オペランドの前記非連続位置群は、３２ビットの単精度浮動小数点データを含むプロセッサ。
【請求項１２】
請求項１記載のプロセッサであって、前記移動及び複製命令は、前記単一のソース・オペランドと同じサイズを有する単一のデスティネーション・レジスタを示すプロセッサ。
【請求項１３】
請求項４記載のプロセッサであって、前記パック単精度浮動小数点上位移動及び複製命令は、メモリにおける前記単一のソース・オペランドを示すためのフォーマットを有し、前記ソース・オペランドの前記ビット［６３−３２］は、３２ビットの単精度浮動小数点データ要素を含むプロセッサ。
【請求項１４】
請求項４記載のプロセッサであって、前記パック単精度浮動小数点上位移動及び複製命令は、前記単一のソース・オペランドと同じサイズを有する単一のデスティネーション・レジスタを示すプロセッサ。
【請求項１５】
請求項７記載のプロセッサであって、前記パック単精度浮動小数点下位移動及び複製命令は、メモリにおける前記単一のソース・オペランドを示すためのフォーマットを有し、前記ソース・オペランドの前記ビット［３１−０］は、３２ビットの単精度浮動小数点データ要素を含むプロセッサ。
【請求項１６】
請求項７記載のプロセッサであって、前記パック単精度浮動小数点下位移動及び複製命令は、前記単一のソース・オペランドと同じサイズを有する単一のデスティネーション・レジスタを示すプロセッサ。
【請求項１７】
装置であって、
単一のソース及びデスティネーションを示す命令を受け取るためのフロント・エンドであって、前記単一のソースは、第１の単精度浮動小数点値、第２の単精度浮動小数点値、第３の単精度浮動小数点値、及び第４の単精度浮動小数点値を含む第１の複数のパック単精度浮動小数点値を有し、前記第２の単精度浮動点値は前記第１の単精度浮動小数点値と前記第３の単精度浮動小数点値との間にあるフロント・エンドと、
前記フロント・エンドに結合された実行コアであって、前記実行コアは、前記デスティネーションに前記命令に対応する結果を記憶し、前記結果は、前記第１の浮動小数点値に等しくなる第５の単精度浮動小数点値、前記第１の浮動小数点値に等しくなる第６の単精度浮動小数点値、前記第３の浮動小数点値に等しくなる第７の単精度浮動小数点値、及び前記第３の浮動小数点値に等しくなる第８の単精度浮動小数点値を含む第２の複数のパック単精度浮動小数点値を有する実行コアとを備え、
前記命令は、前記第５の浮動小数点値及び前記第６の浮動小数点値が前記第１の浮動小数点に等しくなる旨を示唆する装置。
【請求項１８】
請求項１７記載の装置であって、前記命令はメモリにおける前記単一のソースを示す装置。
【請求項１９】
請求項１７記載の装置であって、前記命令は、前記単一のソースと同じサイズを有する単一のデスティネーションとして、前記デスティネーションを示す装置。    
【請求項２０】
プロセッサであって、
第１の命令及び第２の命令をフェッチするためのフロント・エンドと、
前記フロント・エンドに結合され、前記第１の命令及び前記第２の命令を実行するためのコアとを備え、
前記コアは前記第１の命令に応答し、前記第１の命令は、第１のデスティネーション・レジスタ及びメモリにおける前記第１のソースを示し、前記第１のソースのビット［３１−０］を前記第１のデスティネーション・レジスタのビット記憶位置［６３−３２］及び［３１−０］に記憶し、前記第１のソースのビット［９５−６４］を前記第１のデスティネーション・レジスタのビット記憶位置［１２７−９６］及び［９５−６４］に記憶し、  
前記コアは前記第２の命令に応答し、前記第２の命令は、第２のデスティネーション・レジスタ及びメモリにおける第２のソースを示し、前記第２のソースのビット［６３−３２］を前記第２のデスティネーション・レジスタのビット記憶位置［３１−０］及び［６３−３２］に記憶し、前記第２のソースのビット［１２７−９６］を前記第２のデスティネーション・レジスタのビット記憶位置［１２７−９６］及び［９５−６４］に記憶し、
前記第１の命令は、前記コアが前記第１のソースの前記ビット［３１−０］を前記第１のデスティネーション・レジスタの前記ビット記憶位置［６３−３２］及び［３１−０］に記憶させることを明示的に規定しないプロセッサ。
【請求項２１】
請求項２０記載のプロセッサであって、前記第２の命令は前記第２のソースを単一のソースとして示すプロセッサ。
【請求項２２】
装置であって、
ソース及びデスティネーションを示す命令を受け取るためのフロント・エンドであって、前記ソースは、第１の浮動小数点値、第２の浮動小数点値、及び第３の浮動小数点値を含む第１の複数のパック浮動小数点値を有し、前記第２の浮動小数点値は前記第１の浮動小数点値と前記第３の浮動小数点値との間にあるフロント・エンドと、
前記フロント・エンドに結合された実行コアであって、前記実行コアは、前記デスティネーションに前記命令に対応する結果を記憶し、前記結果は、前記第１の浮動小数点値に等しくなる第４の浮動小数点値、前記第１の浮動小数点値に等しくなる第５の浮動小数点値、前記第３の浮動小数点値に等しくなる第６の浮動小数点値、及び前記第３の浮動小数点値に等しくなる第７の浮動小数点値を含む第２の複数のパック浮動小数点値を有する実行コアと
を備え、前記第１の浮動小数点値に等しくなる前記第４の浮動小数点値及び前記第５の浮動小数点値は前記命令のタイプによって定められる装置。
【請求項２３】
装置であって、
単一のソース及びデスティネーションを示す命令を受け取るためのフロント・エンドであって、前記ソースは、前記ソースのビット〔３１−０〕における第１の単精度浮動小数点値、前記ソースのビット〔６３−３２〕における第２の単精度浮動小数点値、前記ソースのビット〔９５−６４〕における第３の単精度浮動小数点値、及び前記ソースのビット〔１２７−９６〕における第４の単精度浮動小数点値を含む第１の複数のパック単精度浮動小数点値を有するフロント・エンドと、
前記フロント・エンドに結合された実行コアであって、前記実行コアは、前記命令によって示された前記デスティネーションに前記命令に対応するパックされた結果を記憶し、前記パックされた結果は、前記第１の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔３１−０〕における第５の単精度浮動小数点値、前記第１の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔６３−３２〕における第６の単精度浮動小数点値、前記第３の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔９５−６４〕における第７の単精度浮動小数点値、及び前記第３の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔１２７−９６〕における第８の単精度浮動小数点値を含む第２の複数のパック単精度浮動小数点値を有する実行コアと
を備え、前記第５の単精度浮動小数点値及び前記第６の単精度浮動小数点値が前記第１の単精度浮動小数点値に等しくなる旨を前記命令のオプコードが示す装置。
【請求項２４】
装置であって、
単一のソース及びデスティネーションを示す命令を受け取るためのフロント・エンドであって、前記ソースは、前記ソースのビット〔３１−０〕における第１の単精度浮動小数点値、前記ソースのビット〔６３−３２〕における第２の単精度浮動小数点値、前記ソースのビット〔９５−６４〕における第３の単精度浮動小数点値、及び前記ソースのビット〔１２７−９６〕における第４の単精度浮動小数点値を含む第１の複数のパック単精度浮動小数点値を有するフロント・エンドと、
前記フロント・エンドに結合された実行コアであって、前記実行コアは、前記命令によって示された前記デスティネーションに前記命令に対応するパックされた結果を記憶し、前記パックされた結果は、前記第２の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔３１−０〕における第５の単精度浮動小数点値、前記第２の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔６３−３２〕における第６の単精度浮動小数点値、前記第４の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔９５−６４〕における第７の単精度浮動小数点値、及び前記第４の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔１２７−９６〕における第８の単精度浮動小数点値を含む第２の複数のパック単精度浮動小数点値を含む実行コアと
を備え、前記第５の単精度浮動小数点値及び前記第６の単精度浮動小数点値が前記第２の単精度浮動小数点値に等しくなる旨を前記命令が暗黙的に示す装置。
【請求項２５】
装置であって、
単一のソース及びデスティネーションを示す命令を受け取るための復号化手段であって、前記単一のソースは、第１の値、第２の値、及び第３の値を含む第１の複数のパック値を有し、前記第２の値は前記第１の値と前記第３の値との間にある復号化手段と、
前記復号化手段に結合された実行リソースであって、前記実行リソースは、前記デスティネーションに前記命令に対応する結果を記憶し、前記結果は、前記第１の値に等しくなる第４の値、前記第１の値に等しくなる第５の値、前記第３の値に等しくなる第６の値、及び前記第３の値に等しくなる第７の値を含む第２の複数のパック値を含む実行リソースと
を備え、前記第４の値及び前記第５の値が前記第１の値に等しくなる旨が前記命令によって明示的に規定されない装置。
【請求項２６】
装置であって、
ソース及びデスティネーションを示す命令を受け取るための復号化手段であって、前記ソースは、前記ソースのビット〔３１−０〕における第１の単精度浮動小数点値、前記ソースのビット〔６３−３２〕における第２の単精度浮動小数点値、前記ソースのビット〔９５−６４〕における第３の単精度浮動小数点値、及び前記ソースのビット〔１２７−９６〕における第４の単精度浮動小数点値を含む第１の複数のパック単精度浮動小数点値を有する復号化手段と、
前記復号化手段に結合された実行リソースであって、前記実行リソースは、前記命令によって示された前記デスティネーションに前記命令に対応するパックされた結果を記憶し、前記パックされた結果は、前記第１の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔３１−０〕における第５の単精度浮動小数点値、前記第１の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔６３−３２〕における第６の単精度浮動小数点値、前記第３の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔９５−６４〕における第７の単精度浮動小数点値、及び前記第３の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔１２７−９６〕における第８の単精度浮動小数点値を含む第２の複数のパックされた単精度浮動小数点値を含む実行リソースと
を備え、前記第５の単精度浮動小数点値及び前記第６の単精度浮動小数点値が前記第１の単精度浮動小数点値に等しくなる旨を前記命令のオプコードが示し、
前記命令は前記ソースのアドレスを示し、前記パックされた結果は、前記ソースと同じアドレスを有する第２のソースを示す前記命令なしで記憶される装置。
【請求項２７】
装置であって、
ソース及びデスティネーションを示す命令を受け取るための復号化手段であって、前記ソースは、前記ソースのビット〔３１−０〕における第１の単精度浮動小数点値、前記ソースのビット〔６３−３２〕における第２の単精度浮動小数点値、前記ソースのビット〔９５−６４〕における第３の単精度浮動小数点値、及び前記ソースのビット〔１２７−９６〕における第４の単精度浮動小数点値を含む第１の複数のパック単精度浮動小数点値を有する復号化手段と、
前記復号化手段に結合された実行リソースであって、前記実行リソースは、前記命令によって示された前記デスティネーションに前記命令に対応するパックされた結果を記憶し、前記パックされた結果は、前記第２の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔３１−０〕における第５の単精度浮動小数点値、前記第２の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔６３−３２〕における第６の単精度浮動小数点値、前記第４の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔９５−６４〕における第７の単精度浮動小数点値、及び前記第４の単精度浮動小数点値に等しくなる、前記パックされた結果のビット〔１２７−９６〕における第８の単精度浮動小数点値を含む第２の複数のパック単精度浮動小数点値を有する実行リソースと
を備え、前記第５の単精度浮動小数点値及び前記第６の単精度浮動小数点値が前記第２の単精度浮動小数点値に等しくなる旨が前記命令によって明示的に規定されず、
前記命令は前記ソースのアドレスを示し、前記パックされた結果は、前記ソースと同じアドレスを有する第２のソースを示す前記命令なしで記憶される装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関するロード／移動及び複製命令に関するものである。
【背景技術】
【０００２】
システム・アーキテクチャは、プロセッサの動作のモードと、オペレーティング・システムをサポートするよう設けられて更にシステム指向レジスタ並びにデータ構造及びシステム指向命令を有する仕組み、とを表すものである。システム・アーキテクチャは更に、実アドレスと保護モードとの間を切り替えるのに必要な仕組みを設けるものである。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
システム・アーキテクチャに対する単一命令複数データ（ＳＩＭＤ）技術は６４ビットのレジスタに入ったパック整数データの並列計算を備える。ＳＩＭＤは性能の向上を、例えば、高度メディア、画像処理及びデータ圧縮アプリケーションにおけるプロセッサに対して、設ける。
【課題を解決するための手段】
【０００４】
下記の実施例以外の実施例は本特許請求の範囲内におさまるものである。
【図面の簡単な説明】
【０００５】
【図１】プロセッサの構成図である。
【図２】実行環境の構成図である。
【図３】バイト・オーダ基本データ・タイプの図である。
【図４】浮動小数点フォーマットの図である。
【図５】種々のＳＩＭＤ拡張命令、データ・タイプ及び該データ・タイプをレジスタにパックする方法をまとめた表である。
【発明を実施するための形態】
【０００６】
下記の実施例以外の実施例は本特許請求の範囲内におさまるものである。
【実施例】
【０００７】
図１によって、プロセッサ１０を表す。プロセッサ１０は３ウェイのスーパースカラ・パイプライン・アーキテクチャである。並列処理手法を用いて、プロセッサ１０は大抵、クロック・サイクル毎に３つの命令を復号化し、ディスパッチして、実行を完了する（リタイアする）ことができる。このレベルの命令スループットを取り扱うよう、プロセッサ１０は、アウト・オブ・オーダ型命令実行をサポートする分離型１２段パイプラインを用いる。プロセッサ１０のマイクロ・アーキテクチャ・パイプラインは４つの部分、すなわち、１次キャッシュ１２及び２次キャッシュ１４、フロント・エンド１６、アウト・オブ・オーダ型実行コア１８、及びリタイアメント部２０、に分割される。命令及びデータはシステム・バス２４とインタフェースするバス・インタフェース・ユニット２２を通じてこれらのユニットに供給される。フロント・エンド１６は非常に高い実行帯域を有して半分のクロック・サイクルのレーテンシによって基本整数演算を実行し得るアウト・オブ・オーダ型コア１８に対してプログラムの順序で命令を供給する。フロント・エンド１６は命令をフェッチして、マイクロ演算（μ−ｏｐｓ）と呼ばれる、簡単な演算に復号化する。フロント・エンド１６は、アウト・オブ・オーダ型コア１８に対して、元のプログラム順序で、サイクル毎に複数のマイクロ演算を発出し得る。フロント・エンド１６はいくつかの基本機能を行う。例えば、フロント・エンド１６は実行されそうなプリフェッチ命令を行い、既にプリフェッチされていない命令をフェッチし、命令をマイクロ演算に復号化し、複雑な命令及び特定用途向コードに対するマイクロ・コードを生成し、実行トレース・キャッシュ２６からの復号化命令を配信して、分岐予測ユニット２８において高度アルゴリズムを用いて分岐を予測する。
【０００８】
プロセッサ１０のフロント・エンド１６は高速の、パイプライン・マイクロプロセッサにおける共通の問題のいくつかに対応するよう企図されている。これらの問題のうちの２つは、例えば、重大な遅延の原因をもたらしている。これらは当該ターゲットからフェッチされた命令を復号化する時間及びキャッシュ線の中間にある分岐又は分岐ターゲットによる無駄な復号化帯域である。
【０００９】
実行トレース・キャッシュ２６は復号化命令を記憶することによってこれらの両方の問題に対応する。命令はフェッチされ、翻訳エンジン（図なし）によって復号化されて、トレースと呼ばれる一連のマイクロ演算に組み入れられる。これらのマイクロ演算のトレースはトレース・キャッシュ２６に記憶される。最もありそうな分岐のターゲットからの命令は、命令アドレスの連続性にかかわりなく、該分岐の直後に続く。トレースが構築されると、トレース・キャッシュ２６はそのトレースに後続する命令についてサーチされる。その命令が既存のトレースにおける第１命令として出現する場合、メモリ階層からの命令３０のフェッチ及び復号化は終わって、トレース・キャッシュ２６は命令の新たなソースになる。
【００１０】
実行トレース・キャッシュ１８及び翻訳エンジン（図なし）は協調分岐予測ハードウェアを有する。分岐ターゲットは分岐ターゲット・バッファ（ＢＴＢＳ）２８を用いてそれらのリニア・アドレスに基づいて予測されて直ちにフェッチされる。分岐ターゲットは、それらがトレース・キャッシュ２６から、実際にそこにキャッシュされている場合、フェッチされる；さもなければ、それらはメモリ階層からフェッチされる。翻訳エンジンの分岐予測情報は最もありうる経路に沿ってトレースを形成するのに用いられる。
【００１１】
コア１８はプロセッサ１０が命令を再配列することを可能にするようアウト・オブ・オーダで命令を実行するので、一マイクロ演算が、データ又は競合実行リソース待ちの間に、遅延された場合、プログラムの順序において後続する他のマイクロ演算はそれを迂回して進み得る。プロセッサ１０はＴ演算（Ｔ−ｏｐｓ）の流れを円滑化するよういくつかのバッファを使用する。これは、パイプラインの一部が遅延を経験する場合、その遅延は並列に実行する他の演算又は先行してバッファのキューに入れられたマイクロ演算の実行によって相殺され得ることを示唆する。
【００１２】
コア１８は並列実行を容易にするよう企図されている。コア１８はサイクル毎に６つのマイクロ演算までディスパッチし得る、すなわち、これはトレース・キャッシュ２６及びリタイアメント部２０のマイクロ演算の帯域を超える、ことを特筆する。ほとんどのパイプラインは毎サイクル、新しいマイクロ演算の実行を開始し得るので、いくつかの命令がパイプライン毎にいつでも処理し得る。多数の算術論理演算ユニット（ＡＬＵ）命令は１サイクル毎に２つを開始し得て、多くの浮動小数点命令は２サイクル毎に１つを開始し得る。最後に、マイクロ演算を、アウト・オブ・オーダで、それらのデータ入力が準備完了になってリソースが利用可能になるとすぐに、開始し得る。
【００１３】
リタイアメント部２０は実行コア１８からの実行マイクロ演算の結果を受信して該結果を処理するので、適切なアーキテクチャ状態が元のプログラムの順序によって更新される。意味上正しく実行するよう、命令の結果はリタイアされる前に元のプログラムの順序でコミットされる。命令がリタイアされるのと並行して、例外を発生させ得る。したがって、例外は投機的には発生し得ない。それらは正しい順序にて発生して、プロセッサ１０は実行後、正しく再起動し得る。
【００１４】
マイクロ演算が完了してその結果をデスティネーションに書き込む場合、それはリタイアされる。３つのマイクロ演算までをサイクル毎にリタイアし得る。リタイアメント部２０におけるリオーダ・バッファ（ＲＯＢ）（図なし）は完了マイクロ演算をバッファし、アーキテクチャ状態を正常に更新して、例外の配列を管理するプロセッサ１０におけるユニットである。
【００１５】
リタイアメント部２０は更に、分岐を常に把握して更新分岐ターゲット情報をＢＴＢ２８に送信して分岐履歴を更新する。このようにして、もう必要のないトレースをトレース・キャッシュ２６から除去し得て、新しい分岐経路を、更新分岐履歴情報に基づいて、フェッチし得る。
【００１６】
図２によって、実行環境５０を表す。（図１の）プロセッサ１０上で実行中のプログラム又はタスクは何れも命令を実行するリソース群及びコード、データ、並びに状態情報を記憶するリソース群が与えられる。これらのリソースはプロセッサ１０に関する実行環境５０を構成する。プロセッサ１０上で実行中のアプリケーション・プログラム及びオペレーティング・システム又はエグゼクティブは共同で実行環境５０を使用する。実行環境５０は基本プログラム実行レジスタ５２、アドレス空間５４、浮動小数点ユニット（ＦＰＵ）レジスタ５６、マルチメディア拡張レジスタ（ＭＭＸ）５８、及びＳＩＭＤ拡張（ＳＳＥ（ストリーミングＳＩＭＤ拡張命令）及びＳＳＥ２（ストリーミングＳＩＭＤ拡張命令２））レジスタ６０を含む。
【００１７】
プロセッサ１０上で実行中のタスク又はプログラムは何れも４ギガバイト（２３２バイト）までのリニア・アドレス・ベース５４及び６４ギガバイト（２３６バイト）までの物理アドレス・ベースをアドレス指定し得る。アドレス空間５４はフラットなものでもセグメント化されたものでもよい。物理アドレス拡張の仕組みを用いて、２３６−１の物理アドレス空間をアドレス指定し得る。
【００１８】
基本プログラム実行レジスタ５２は８つの汎用レジスタ６２、６つのセグメント・レジスタ６４、ＥＦＬＡＧＳレジスタ（フラグ・レジスタ）６６、及びＥＩＰ（命令ポインタ）レジスタ６８を含む。基本プログラム実行レジスタ５２は汎用命令群を実行する基本実行環境を設ける。これらの命令はバイト、ワード、及びダブルワード整数に基本整数算術を行い、プログラムのフロー制御を扱い、ビット及びバイトの強さを演算して、メモリをアドレス指定する。
【００１９】
ＦＰＵレジスタ５６は８つのＦＰＵデータ・レジスタ７０、ＦＰＵ制御レジスタ７２、ステータス・レジスタ７４、ＦＰＵ命令ポインタ・レジスタ７６、ＦＰＵオペランド（データ）ポインタ・レジスタ７８、ＦＰＵタグ・レジスタ８０及びＦＰＵ命令操作（ＯＰ）コード・レジスタ８２を含む。ＦＰＵレジスタ５６は単精度、倍精度、並びに倍精度拡張浮動小数値、ワード、ダブルワード、並びにクアドワード整数、及び２進化１０進符号（ＢＣＤ）値を演算する実行環境を設ける。
【００２０】
８つのマルチメディア拡張レジスタ５８は６４ビットのパック・バイト、ワード、及びダブルワードの整数に単一命令複数データ（ＳＩＭＤ）演算を行うことをサポートする。
【００２１】
ＳＩＭＤ拡張命令（ＳＳＥ及びＳＳＥ２）レジスタ６０は８つの拡張マルチメディア（ＸＭＭ）データ・レジスタ８４及びＭＸＣＳＲレジスタ８６を含む。ＳＩＭＤ拡張命令（ＳＳＥ及びＳＳＥ２）レジスタ６０は１２８ビットのパック単精度並びに倍精度浮動小数値及び１２８ビットのパック・バイト、ワード、ダブルワード及びクワドワード整数にＳＩＭＤ演算を実行することをサポートする。
【００２２】
スタック（図なし）はプロシジャ又はサブルーチン・コール及びプロシジャ又はサブルーチン間でのパラメータ渡しをサポートする。
【００２３】
汎用レジスタ６２はオペランド及びポインタを記憶するのに利用可能である。セグメント・レジスタ６４はセグメント・セレクタを６つまで収容する。ＥＦＬＡＧＳ（プログラム・ステータス及び制御）レジスタ６６は実行中のプログラムのステータスについて通知してプロセッサの限定的な（アプリケーション・プログラム・レベルの）制御を可能にする。ＥＩＰ（命令ポインタ）レジスタ６８は実行する次の命令に対する３２ビットのポインタを含む。
【００２４】
３２ビットの汎用レジスタ６２は論理及び算術演算用オペランド、アドレス計算用オペランド、及びメモリ・ポインタを収容するよう備えられる。セグメント・レジスタ６４は１６ビットのセグメント・セレクタを収容する。セグメント・セレクタはメモリにおけるセグメントを識別する特別なポインタである。メモリにおいて特定のセグメントをアクセスするよう、そのセグメントに対するセグメント・セレクタが適切なセグメント・レジスタ６４になければならない。
【００２５】
アプリケーション・コードを作成する場合、プログラマは一般に、アセンブラ指令及び記号のあるセグメント・セレクタを生成する。アセンブラ及び他のツールはその場合、これらの指令及び記号に関連した実際のセグメント・セレクタ値を生成する。システム・コードを作成する場合、プログラマはセグメント・セレクタを直接生成する必要があるかもしれない。
【００２６】
セグメント・レジスタ６４の使用方法はオペレーティング・システム又はエグゼクティブが用いるメモリ管理モデルの種類によって変わってくる。フラットな（非セグメント化）メモリ・モデルを用いる場合、セグメント・レジスタ６４は重複セグメントに向けられたセグメント・セレクタによってロードされ、それらの各々はリニア・アドレス空間上のアドレス・ゼロから始まる。これらの重複セグメントは更にプログラムに対するリニア・アドレス空間を含む。一般に、２つ：コードに対する１つ；及びデータ並びにスタックに対するもう１つ；の重複セグメントが定義される。セグメント・レジスタ６４のＣＳ（コード・セグメント）セグメント・レジスタ（図なし）はコード・セグメントに向けられて全ての他のセグメント・レジスタはデータ及びスタック・セグメントに向けられる。
【００２７】
セグメント化メモリ・モデルを用いる場合、各セグメント・レジスタ６４は通常、異なるセグメント・セレクタによってロードされるので、各セグメント・レジスタ６４はリニア・アドレス空間内で異なるセグメントに向けられる。したがって、常に、プログラムはリニア・アドレス空間においてセグメントを６つまでアクセスし得る。セグメント・レジスタ６４の１つによって向けられることのないセグメントをアクセスするよう、プログラムは第１に、アクセスされるセグメント・セレクタをセグメント・レジスタ６４にロードする。
【００２８】
３２ビットＥＦＬＡＧＳレジスタ６６はステータス・フラグ群、制御フラグ、及びシステム・フラグ群を含む。ＥＦＬＡＧＳレジスタ６６におけるフラグの一部は、特定用途向命令を用いて、直接修正し得る。該全部のレジスタ６６が直接検査又は修正されることを可能にする命令はない。しかしながら、以下の命令：ＬＡＨＦ（ステータス・フラグをＡＨレジスタにロードする）、ＳＡＨＦ（ステータス・フラグをＡＨレジスタに記憶する）、ｐｕｓｈ−Ｆ（Ｆレジスタのプッシュ）、ｐｕｓｈ−ＦＤ（ＦＤレジスタのプッシュ）、ｐｏｐ−Ｆ（Ｆレジスタのポップ）、及びｐｏｐ−ＦＤ（ＦＤレジスタのポップ）；をプロシジャ・スタック又は汎用レジスタにフラグ群を移動してプロシジャ・スタック又は汎用レジスタからフラグ群を移動するのに用い得る。ＥＦＬＡＧＳレジスタ６６の内容がプロシジャ・スタック又は汎用レジスタに転送された後、フラッグを、プロセッサ１０ビット操作命令を用いて、検査及び修正し得る。
【００２９】
タスクを一時停止する場合、プロセッサ１０は自動的に一時停止されているタスクについての（図なしの）タスク状態セグメント（ＴＳＳ）においてＥＦＬＡＧＳレジスタ６６の状態をセーブする。プロセッサ１０は、該プロセッサ自体に新しいタスクを結びつける場合、新しいタスク・プログラム状態レジスタ（ＰＳＳ（プログラム状態セグメント）、図なし）からのデータによってＥＦＬＡＧＳレジスタ６６をロードする。
【００３０】
コールがインタラプト又は例外ハンドラ・プロシジャに対して行われた場合、プロセッサ１０は自動的にプロシジャ・スタック上でＥＦＬＡＧＳレジスタ６６の状態をセーブする。インタラプト又は例外がタスク・スイッチによって扱われる場合、ＥＦＬＡＧＳレジスタ６６の状態は一時停止されているタスクに対するＴＳＳ上にセーブされる。
【００３１】
プロセッサ１０において用いられる基本データ・タイプはバイト、ワード、ダブルワード、クワドワード及びダブルクワドワードである。１バイトは８ビットで、１ワードは２バイト（１６ビット）で、ダブルワードは４バイト（３２ビット）で、クワドワードは８バイト（６４ビット）で、ダブルクワドワードは１６バイト（１２８ビット）である。
【００３２】
図３によって、メモリにおいてオペランドとして表される基本データ・タイプ各々のバイト・オーダを表す。各データ・タイプのロー・バイト（ビット０乃至７）はメモリにおける最下位のアドレスを占めてそのアドレスは更にオペランドのアドレスである。
【００３３】
ワード、ダブルワード及びクアドワードはメモリにおいて自然境界上でアラインされる必要はない。ワード、ダブルワード及びクワドワードに対する自然境界は各々、偶数のアドレス、４で割り切れるアドレス、及び８で割り切れるアドレスである。しかしながら、プログラムの性能を向上させるよう、データ構造（特にスタック）は可能な限り、自然境界上でアラインされるべきである。この理由はプロセッサ１０がアラインされていないメモリ・アクセスを行うのに２つのメモリ・アクセスを必要とする一方、アラインされたアクセスは１つのメモリ・アクセスを必要とすることにある。４バイトの境界をまたがるワード若しくはダブルワードのオペランド又は８バイトの境界をまたがるクワドワードのオペランドはアラインされていないとみなされ、それをアクセスするのに２つの別個のメモリ・バス・サイクルを必要とする。奇数のアドレスから開始するがワードの境界をまたがらないワードはアラインされているとみなされて、なお、１つのバス・サイクルにおいてアクセスし得る。
【００３４】
ダブルクワドワードを演算する命令のいくつかはメモリ・オペランドが自然境界上でアラインされることを必要とする。これらの命令は、アラインされていないオペランドが特定された場合、一般保護例外（＃ＧＰ）を生成する。ダブルクワドワードに対する自然境界は１６によって割り切れるアドレスの何れかである。ダブルクワドワードを演算する他の命令はアラインされていないアクセスを、一般保護例外を生成することなく、可能にするが、メモリからアラインされていないデータをアクセスするには追加のメモリ・バス・サイクルが必要になる。
【００３５】
バイト、ワード及びダブルワードはプロセッサ１０の基本データ・タイプであるが、命令のいくつかは演算を数値データ・タイプに行うことを可能にするよう更にこれらのデータ・タイプを解釈・実行することをサポートする。例えば、プロセッサ１０は２つの種類：符号無し；及び符号付き；の整数を定義する。符号無しの整数はゼロから、選定オペランド・サイズで符号化し得る最大の正数までの範囲の通常の（ｏｒｄｉｎａｒｙ）２進値である。符号付きの整数は正及び負の整数の値の両方を表すのに用い得る２の補数の２進値である。
【００３６】
プロセッサ１０は３つの浮動小数点データ・タイプ；単精度浮動小数点；倍精度浮動小数点；及び倍精度拡張浮動小数点；を定義して該データ・タイプを演算する。これらのデータ・タイプに対するデータ・フォーマットは２進の浮動小数点算術に関するＩＥＥＥ（米国電気電子学会）標準７５４に規定されたようなフォーマットに直接相当する。
【００３７】
ポインタはメモリにおける位置のアドレスである。プロセッサ１０は２つの種類のポインタ；ニア・ポインタ（３２ビット）；及びファー・ポインタ（４８ビット）；を定義する。ニア・ポインタはセグメント内部の（実効アドレスとも呼ばれる）３２ビットのオフセットである。フラットなメモリ・モデルにおける全てのメモリ参照に、又はアクセスされるセグメントの身元が暗示される場合に、セグメント化されたモデルにおける参照に、用いられる。ファー・ポインタは４８ビットの論理アドレスで、１６ビットのセグメント・セレクタ及び３２ビットのオフセットから成る。ファー・ポインタはアクセスされるセグメントの身元が明示的に規定されなければならない場合に、メモリ参照及びセグメント化されたメモリ・モデルにおける参照に用いられる。
【００３８】
ビット・フィールドは連続する一連のビットのことである。それはメモリにおける如何なるバイトの如何なるビット位置からでも開始し得、３２ビットまで含み得る。ストリングは連続する一連のビット、バイト、ワード又はダブルワードのことである。ビット列は如何なるバイトの如何なるビット位置からでも開始し得、２３２−１ビットまで含み得る。バイト列はバイト、ワード又はダブルワードを含み得、ゼロから２３２−１バイト（４ギガバイト）までの範囲に及び得る。
【００３９】
２進符号化１０進整数（ＢＣＤ整数）は０から９までの範囲の有効値を有する符号無しの４ビット整数である。プロセッサ１０は１つ以上の汎用レジスタ６２又は１つ以上のＦＰＵレジスタ５６にあるＢＣＤ整数の演算を定義する。
【００４０】
図４によれば、実数はＦＰＵ５６浮動小数点レジスタ７０における浮動小数点フォーマット１００にて表される。浮動小数点フォーマットは３つの部分；符号１０２；有効数字１０４；及び指数１０６；を含む。符号１０２は該数が正（０）か負（１）を示す２進値である。有効数字１０４は２つの部分：１ビットの（更にＪビットとも呼ばれる）２進整数１０８及び２進分数１１０；を有する。整数ビット１０８は表されないことがあり、その代わりに暗黙の値である。指数１０６は有効数字１０４が乗算される２を基底とする累乗を表す２進整数である。
【００４１】
プロセッサ１０はＳＩＭＤ演算において用いられる６４ビット及び１２８ビットのパック・データ・タイプの群を規定して該群を演算する。これらのデータ・タイプは基本データ・タイプ（パックされた、バイト、ワード、ダブルワード並びにクワドワード）及びパック整数及びパック浮動小数点演算において用いる基本データ・タイプの数値解釈を含む。
【００４２】
６４ビットのＳＩＭＤデータ・タイプは主に、６４ビットのマルチメディア拡張レジスタ５８において演算される。基本６４ビット・パック・データ・タイプはパック・バイト、パック・ワード及びパック・ダブルワードである。マルチメディア拡張レジスタ５８においてこれらのデータ・タイプに数値ＳＩＭＤ演算を行う場合、これらのデータ・タイプはバイト、ワード、又はダブルワード整数値を含むものとして解釈される。
【００４３】
１２８ビットのパックＳＩＭＤデータ・タイプは主に、１２８ビットの拡張マルチメディア（ＸＭＭ）レジスタ８４及びメモリ５４において演算される。基本１２８ビット・パック・データ・タイプはパック・バイト、パック・ワード、パック・ダブルワード及びパック・クワドワードである。拡張マルチメディア（ＸＭＭ）レジスタ８４においてこれらの基本データ・タイプにＳＩＭＤ演算を行う場合、これらのデータ・タイプはパック若しくはスカラ単精度浮動小数点又は倍精度浮動小数点値を含むものとしてか、パックされた、バイト、ワード、ダブルワード、又はクワドワード整数値を含むものとして、解釈される。
【００４４】
図５によれば、表１２０は種々のＳＩＭＤ拡張、演算されるデータ・タイプ、及びデータ・タイプがマルチメディア拡張レジスタ５８及び拡張マルチメディア（ＸＭＭ）レジスタ８４にパックされる方法のまとめを表す。
【００４５】
上記のように、マルチメディア拡張命令はメモリ５４、マルチメディア拡張レジスタ５８、及び／又は汎用レジスタ６２に含まれた、パックされた、バイト、ワード、ダブルワード又はクワドワード整数オペランドを演算する。マルチメディア拡張命令はデータ転送命令、変換命令、パック算術命令、比較命令、論理命令、シフト並びに回転命令及び状態管理命令を含む。
【００４６】
ＳＩＭＤ拡張（ＳＳＥ及びＳＳＥ２）命令はいくつかの、例えば、４つの、群：拡張マルチメディア（ＸＸＭ）レジスタ８４を演算するＳＩＭＤ単精度浮動小数点命令、ＭＸＳＣＲレジスタ８６を演算するＭＸＳＣＲ命令、ＭＸＸレジスタ５８を演算する６４ビットＳＩＭＤ整数命令、及びキャッシュ可能性制御、プリフェッチ並びに命令順序付け命令に分割される。
【００４７】
命令の１つのクラスに移動／ロード及び複製タイプの命令がある。これらの命令は、例えば、ビットの複製を得るようロード値に明示的な演算を行う必要性を省くものであるため、「複合」命令とも呼ばれる。現在のアーキテクチャはＭＯＶＤＤＵＰ命令、ＭＯＶＳＨＤＵＰ命令及びＭＯＶＳＬＤＵＰ命令を含む。これらの命令はパック単精度及びパック倍精度浮動小数点データ・タイプの複雑な算術をサポートするよう備えられる。これらの命令は種々のアプリケーションにおいて用い得る。例えば、これらの命令は信号処理アプリケーション及び自然データ・タイプの処理に関係するアプリケーションの効率を向上し得る。
【００４８】
ＭＯＶＤＤＵＰ命令は、６４ビット（ソースがレジスタの場合、ビット〔６３−０〕）をロード／移動する、倍精度浮動小数点の１だけの移動及びＳＳＥ２複製命令である。ＭＯＶＤＤＵＰ命令は、同じ結果レジスタの下半分と上半分との両方において同じ６４ビットを返す、すなわち、ソースからの６４ビットを複製する。したがって、ソースが０／１のエントリを有する場合、デスティネーションは１／０／１／０のエントリを有する。ＭＯＶＥＤＤＵＰ命令は以下のフォーマット：
ＭＯＶＥＤＤＵＰ  デスティネーション、ソース；
を有し、ソース・オペランドはメモリ位置５４又は第２拡張マルチメディア（ＸＭＭ）レジスタ８４でデスティネーション・オペランドは第１拡張マルチメディア（ＸＭＭ）レジスタ８４である。ソースは倍精度浮動小数点データ・タイプを含む。
【００４９】
演算においては、ソース・オペランドがメモリ・アドレスの場合、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−０〕がメモリ・アドレスのビット〔６３−０〕によってロードされて、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔１２７−６４〕はメモリ位置のビット〔６３−０〕によってロードされる。ソース・オペランドが第２拡張マルチメディア（ＸＭＭ）レジスタの場合、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−０〕は第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−０〕に等しくなるよう設定されて第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔１２７−６４〕は第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−０〕に等しくなるよう設定される。
【００５０】
リニア・アドレスは参照メモリ・データの最下位バイトのアドレスに相当する。メモリ・アドレスが示された場合、メモリ位置でのデータの１６バイトがロード又は記憶される。レジスタ−レジスタ形式の演算が用いられる場合、１２８ビットのソース・レジスタの内容は１２８ビットのデスティネーション・レジスタに複製される。
【００５１】
ＭＯＶＳＨＤＵＰ命令は１２８ビットをロード／移動して結果として生じるレジスタにエントリ１及び３を複製する、単精度浮動小数点上位移動及びＳＳＥ２複製命令である。１２８ビットのソース・レジスタ幅の例においては、各エントリは３２ビットである。特に、ソースのエントリが、３／２／１／０の（０が下位単精度エントリで３が上位単精度エントリである）、場合、ＭＯＶＳＨＤＵＰ命令の実行後の結果レジスタは複製されたエントリ３及び１を記憶してエントリ３／３／１／１を設ける。ＭＯＶＳＨＤＵＰは以下のフォーマット：
ＭＯＶＳＨＤＵＰ  デスティネーション、ソース；
を有し、ソース・オペランドはメモリ位置５４又は第２拡張マルチメディア（ＸＭＭ）レジスタ８４を表してデスティネーション・オペランドは第１拡張マルチメディア（ＸＭＭ）レジスタ８４である。ソース・オペランドはパック単精度浮動小数点データ・タイプを有する。
【００５２】
演算においては、ソース・オペランドがメモリ・アドレスの場合、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔３１−０〕がメモリ・アドレスのビット〔６３−３２〕によってロードされ、第１拡張マルチメディア（ＸＭＭ）レジスタのビット６３−３２がメモリ・アドレスのビット〔６３−３２〕によってロードされ、第１拡張マルチメディア（ＸＭＭ）レジスタのビット９５−６４がメモリ・アドレスのビット〔１２７−９６〕によってロードされて、第１拡張マルチメディア（ＸＭＭ）レジスタのビット１２７−９６がメモリ・アドレスのビット〔１２７−９６〕によってロードされる。
【００５３】
ソース・オペランドが第２拡張マルチメディア（ＸＭＭ）レジスタの場合、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔３１−０〕が第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−３２〕に等しくなるよう設定され、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−３２〕が第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−３２〕に等しくなるよう設定され、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔９５−６４〕が第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔１２７−９６〕に等しくなるよう設定され、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔１２７−９６〕が第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔１２７−９６〕に等しくなるよう設定される。
【００５４】
リニア・アドレスは参照メモリ・データの最下位バイトのアドレスに相当する。メモリ・アドレスが示された場合、メモリ位置での１６バイトのデータがロード又は記憶される。レジスタ−レジスタ形式の演算が用いられる場合、１２８ビットのソース・レジスタの内容は１２８ビットのデスティネーション・レジスタに複製される。
【００５５】
ＭＯＶＳＬＤＵＰ命令は、１２８ビットをロード／移動してエントリ０及び２を複製する、パック単精度浮動小数点下位移動及びＳＳＥ２複製命令である。特に、ソースが３／２／１／０（０が下位単精度エントリ）である場合、結果レジスタはエントリ２／２／０／０を記憶する。ＭＯＶＳＬＤＵＰ命令は以下のフォーマット：
ＭＯＶＳＬＤＵＰ  デスティネーション、ソース；
を有し、ソース・オペランドはメモリ位置５４又は第２拡張マルチメディア（ＸＭＭ）レジスタ８４でデスティネーション・オペランドは第１拡張マルチメディア（ＸＭＭ）レジスタ８４である。ソース・オペランドはパック単精度浮動小数点データ・タイプを含む。
【００５６】
演算においては、ソース・オペランドがメモリ・アドレスの場合、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔３１−０〕はメモリ・アドレスのビット〔３１−０〕によってロードされて、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−３２〕はメモリ・アドレスのビット〔３１−０〕によってロードされて、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔９５−６４〕はメモリ・アドレスのビット〔９５−６４〕によってロードされて、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔１２７−９６〕はメモリ・アドレスのビット〔９５−６４〕によってロードされる。ソース・オペランドがレジスタの場合、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔３１−０〕は第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔３１−０〕に等しくなるよう設定され、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔６３−３２〕は第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔３１−０〕に等しくなるよう設定され、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔９５−６４〕は第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔９５−６４〕に等しくなるよう設定され、第１拡張マルチメディア（ＸＭＭ）レジスタのビット〔１２７−９６〕は第２拡張マルチメディア（ＸＭＭ）レジスタのビット〔９５−６４〕に等しくなるよう設定される。
【００５７】
リニア・アドレスは参照メモリ・データの最下位バイトのアドレスに相当する。メモリ・アドレスが示された場合、メモリ位置での１６バイトのデータがロード又は記憶される。レジスタ−レジスタ形式の演算が用いられる場合、１２８ビットのソース・レジスタの内容は１２８ビットのデスティネーション・レジスタに複製される。
【図１】
2014089730.tif 000003
【図２】
2014089730.tif 000004
【図３】
2014089730.tif 000005
【図４】
2014089730.tif 000006
【図５】
2014089730.tif 000007