JP5960115B2 - プロセッサに関するロード/移動及び複製命令 - Google Patents

プロセッサに関するロード/移動及び複製命令 Download PDF

Info

Publication number
JP5960115B2
JP5960115B2 JP2013257903A JP2013257903A JP5960115B2 JP 5960115 B2 JP5960115 B2 JP 5960115B2 JP 2013257903 A JP2013257903 A JP 2013257903A JP 2013257903 A JP2013257903 A JP 2013257903A JP 5960115 B2 JP5960115 B2 JP 5960115B2
Authority
JP
Japan
Prior art keywords
bits
floating point
precision floating
instruction
point value
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
Application number
JP2013257903A
Other languages
English (en)
Other versions
JP2014089730A (ja
Inventor
ルーセル,パトリス
Original Assignee
インテル コーポレイション
インテル コーポレイション
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2014089730A publication Critical patent/JP2014089730A/ja
Application granted granted Critical
Publication of JP5960115B2 publication Critical patent/JP5960115B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、プロセッサに関するロード/移動及び複製命令に関するものである。
システム・アーキテクチャは、プロセッサの動作のモードと、オペレーティング・システムをサポートするよう設けられて更にシステム指向レジスタ並びにデータ構造及びシステム指向命令を有する仕組み、とを表すものである。システム・アーキテクチャは更に、実アドレスと保護モードとの間を切り替えるのに必要な仕組みを設けるものである。
システム・アーキテクチャに対する単一命令複数データ(SIMD)技術は64ビットのレジスタに入ったパック整数データの並列計算を備える。SIMDは性能の向上を、例えば、高度メディア、画像処理及びデータ圧縮アプリケーションにおけるプロセッサに対して、設ける。
下記の実施例以外の実施例は本特許請求の範囲内におさまるものである。
プロセッサの構成図である。 実行環境の構成図である。 バイト・オーダ基本データ・タイプの図である。 浮動小数点フォーマットの図である。 種々のSIMD拡張命令、データ・タイプ及び該データ・タイプをレジスタにパックする方法をまとめた表である。
下記の実施例以外の実施例は本特許請求の範囲内におさまるものである。
図1によって、プロセッサ10を表す。プロセッサ10は3ウェイのスーパースカラ・パイプライン・アーキテクチャである。並列処理手法を用いて、プロセッサ10は大抵、クロック・サイクル毎に3つの命令を復号化し、ディスパッチして、実行を完了する(リタイアする)ことができる。このレベルの命令スループットを取り扱うよう、プロセッサ10は、アウト・オブ・オーダ型命令実行をサポートする分離型12段パイプラインを用いる。プロセッサ10のマイクロ・アーキテクチャ・パイプラインは4つの部分、すなわち、1次キャッシュ12及び2次キャッシュ14、フロント・エンド16、アウト・オブ・オーダ型実行コア18、及びリタイアメント部20、に分割される。命令及びデータはシステム・バス24とインタフェースするバス・インタフェース・ユニット22を通じてこれらのユニットに供給される。フロント・エンド16は非常に高い実行帯域を有して半分のクロック・サイクルのレーテンシによって基本整数演算を実行し得るアウト・オブ・オーダ型コア18に対してプログラムの順序で命令を供給する。フロント・エンド16は命令をフェッチして、マイクロ演算(μ−ops)と呼ばれる、簡単な演算に復号化する。フロント・エンド16は、アウト・オブ・オーダ型コア18に対して、元のプログラム順序で、サイクル毎に複数のマイクロ演算を発出し得る。フロント・エンド16はいくつかの基本機能を行う。例えば、フロント・エンド16は実行されそうなプリフェッチ命令を行い、既にプリフェッチされていない命令をフェッチし、命令をマイクロ演算に復号化し、複雑な命令及び特定用途向コードに対するマイクロ・コードを生成し、実行トレース・キャッシュ26からの復号化命令を配信して、分岐予測ユニット28において高度アルゴリズムを用いて分岐を予測する。
プロセッサ10のフロント・エンド16は高速の、パイプライン・マイクロプロセッサにおける共通の問題のいくつかに対応するよう企図されている。これらの問題のうちの2つは、例えば、重大な遅延の原因をもたらしている。これらは当該ターゲットからフェッチされた命令を復号化する時間及びキャッシュ線の中間にある分岐又は分岐ターゲットによる無駄な復号化帯域である。
実行トレース・キャッシュ26は復号化命令を記憶することによってこれらの両方の問題に対応する。命令はフェッチされ、翻訳エンジン(図なし)によって復号化されて、トレースと呼ばれる一連のマイクロ演算に組み入れられる。これらのマイクロ演算のトレースはトレース・キャッシュ26に記憶される。最もありそうな分岐のターゲットからの命令は、命令アドレスの連続性にかかわりなく、該分岐の直後に続く。トレースが構築されると、トレース・キャッシュ26はそのトレースに後続する命令についてサーチされる。その命令が既存のトレースにおける第1命令として出現する場合、メモリ階層からの命令30のフェッチ及び復号化は終わって、トレース・キャッシュ26は命令の新たなソースになる。
実行トレース・キャッシュ18及び翻訳エンジン(図なし)は協調分岐予測ハードウェアを有する。分岐ターゲットは分岐ターゲット・バッファ(BTBS)28を用いてそれらのリニア・アドレスに基づいて予測されて直ちにフェッチされる。分岐ターゲットは、それらがトレース・キャッシュ26から、実際にそこにキャッシュされている場合、フェッチされる;さもなければ、それらはメモリ階層からフェッチされる。翻訳エンジンの分岐予測情報は最もありうる経路に沿ってトレースを形成するのに用いられる。
コア18はプロセッサ10が命令を再配列することを可能にするようアウト・オブ・オーダで命令を実行するので、一マイクロ演算が、データ又は競合実行リソース待ちの間に、遅延された場合、プログラムの順序において後続する他のマイクロ演算はそれを迂回して進み得る。プロセッサ10はT演算(T−ops)の流れを円滑化するよういくつかのバッファを使用する。これは、パイプラインの一部が遅延を経験する場合、その遅延は並列に実行する他の演算又は先行してバッファのキューに入れられたマイクロ演算の実行によって相殺され得ることを示唆する。
コア18は並列実行を容易にするよう企図されている。コア18はサイクル毎に6つのマイクロ演算までディスパッチし得る、すなわち、これはトレース・キャッシュ26及びリタイアメント部20のマイクロ演算の帯域を超える、ことを特筆する。ほとんどのパイプラインは毎サイクル、新しいマイクロ演算の実行を開始し得るので、いくつかの命令がパイプライン毎にいつでも処理し得る。多数の算術論理演算ユニット(ALU)命令は1サイクル毎に2つを開始し得て、多くの浮動小数点命令は2サイクル毎に1つを開始し得る。最後に、マイクロ演算を、アウト・オブ・オーダで、それらのデータ入力が準備完了になってリソースが利用可能になるとすぐに、開始し得る。
リタイアメント部20は実行コア18からの実行マイクロ演算の結果を受信して該結果を処理するので、適切なアーキテクチャ状態が元のプログラムの順序によって更新される。意味上正しく実行するよう、命令の結果はリタイアされる前に元のプログラムの順序でコミットされる。命令がリタイアされるのと並行して、例外を発生させ得る。したがって、例外は投機的には発生し得ない。それらは正しい順序にて発生して、プロセッサ10は実行後、正しく再起動し得る。
マイクロ演算が完了してその結果をデスティネーションに書き込む場合、それはリタイアされる。3つのマイクロ演算までをサイクル毎にリタイアし得る。リタイアメント部20におけるリオーダ・バッファ(ROB)(図なし)は完了マイクロ演算をバッファし、アーキテクチャ状態を正常に更新して、例外の配列を管理するプロセッサ10におけるユニットである。
リタイアメント部20は更に、分岐を常に把握して更新分岐ターゲット情報をBTB28に送信して分岐履歴を更新する。このようにして、もう必要のないトレースをトレース・キャッシュ26から除去し得て、新しい分岐経路を、更新分岐履歴情報に基づいて、フェッチし得る。
図2によって、実行環境50を表す。(図1の)プロセッサ10上で実行中のプログラム又はタスクは何れも命令を実行するリソース群及びコード、データ、並びに状態情報を記憶するリソース群が与えられる。これらのリソースはプロセッサ10に関する実行環境50を構成する。プロセッサ10上で実行中のアプリケーション・プログラム及びオペレーティング・システム又はエグゼクティブは共同で実行環境50を使用する。実行環境50は基本プログラム実行レジスタ52、アドレス空間54、浮動小数点ユニット(FPU)レジスタ56、マルチメディア拡張レジスタ(MMX)58、及びSIMD拡張(SSE(ストリーミングSIMD拡張命令)及びSSE2(ストリーミングSIMD拡張命令2))レジスタ60を含む。
プロセッサ10上で実行中のタスク又はプログラムは何れも4ギガバイト(232バイト)までのリニア・アドレス・ベース54及び64ギガバイト(236バイト)までの物理アドレス・ベースをアドレス指定し得る。アドレス空間54はフラットなものでもセグメント化されたものでもよい。物理アドレス拡張の仕組みを用いて、236−1の物理アドレス空間をアドレス指定し得る。
基本プログラム実行レジスタ52は8つの汎用レジスタ62、6つのセグメント・レジスタ64、EFLAGSレジスタ(フラグ・レジスタ)66、及びEIP(命令ポインタ)レジスタ68を含む。基本プログラム実行レジスタ52は汎用命令群を実行する基本実行環境を設ける。これらの命令はバイト、ワード、及びダブルワード整数に基本整数算術を行い、プログラムのフロー制御を扱い、ビット及びバイトの強さを演算して、メモリをアドレス指定する。
FPUレジスタ56は8つのFPUデータ・レジスタ70、FPU制御レジスタ72、ステータス・レジスタ74、FPU命令ポインタ・レジスタ76、FPUオペランド(データ)ポインタ・レジスタ78、FPUタグ・レジスタ80及びFPU命令操作(OP)コード・レジスタ82を含む。FPUレジスタ56は単精度、倍精度、並びに倍精度拡張浮動小数値、ワード、ダブルワード、並びにクアドワード整数、及び2進化10進符号(BCD)値を演算する実行環境を設ける。
8つのマルチメディア拡張レジスタ58は64ビットのパック・バイト、ワード、及びダブルワードの整数に単一命令複数データ(SIMD)演算を行うことをサポートする。
SIMD拡張命令(SSE及びSSE2)レジスタ60は8つの拡張マルチメディア(XMM)データ・レジスタ84及びMXCSRレジスタ86を含む。SIMD拡張命令(SSE及びSSE2)レジスタ60は128ビットのパック単精度並びに倍精度浮動小数値及び128ビットのパック・バイト、ワード、ダブルワード及びクワドワード整数にSIMD演算を実行することをサポートする。
スタック(図なし)はプロシジャ又はサブルーチン・コール及びプロシジャ又はサブルーチン間でのパラメータ渡しをサポートする。
汎用レジスタ62はオペランド及びポインタを記憶するのに利用可能である。セグメント・レジスタ64はセグメント・セレクタを6つまで収容する。EFLAGS(プログラム・ステータス及び制御)レジスタ66は実行中のプログラムのステータスについて通知してプロセッサの限定的な(アプリケーション・プログラム・レベルの)制御を可能にする。EIP(命令ポインタ)レジスタ68は実行する次の命令に対する32ビットのポインタを含む。
32ビットの汎用レジスタ62は論理及び算術演算用オペランド、アドレス計算用オペランド、及びメモリ・ポインタを収容するよう備えられる。セグメント・レジスタ64は16ビットのセグメント・セレクタを収容する。セグメント・セレクタはメモリにおけるセグメントを識別する特別なポインタである。メモリにおいて特定のセグメントをアクセスするよう、そのセグメントに対するセグメント・セレクタが適切なセグメント・レジスタ64になければならない。
アプリケーション・コードを作成する場合、プログラマは一般に、アセンブラ指令及び記号のあるセグメント・セレクタを生成する。アセンブラ及び他のツールはその場合、これらの指令及び記号に関連した実際のセグメント・セレクタ値を生成する。システム・コードを作成する場合、プログラマはセグメント・セレクタを直接生成する必要があるかもしれない。
セグメント・レジスタ64の使用方法はオペレーティング・システム又はエグゼクティブが用いるメモリ管理モデルの種類によって変わってくる。フラットな(非セグメント化)メモリ・モデルを用いる場合、セグメント・レジスタ64は重複セグメントに向けられたセグメント・セレクタによってロードされ、それらの各々はリニア・アドレス空間上のアドレス・ゼロから始まる。これらの重複セグメントは更にプログラムに対するリニア・アドレス空間を含む。一般に、2つ:コードに対する1つ;及びデータ並びにスタックに対するもう1つ;の重複セグメントが定義される。セグメント・レジスタ64のCS(コード・セグメント)セグメント・レジスタ(図なし)はコード・セグメントに向けられて全ての他のセグメント・レジスタはデータ及びスタック・セグメントに向けられる。
セグメント化メモリ・モデルを用いる場合、各セグメント・レジスタ64は通常、異なるセグメント・セレクタによってロードされるので、各セグメント・レジスタ64はリニア・アドレス空間内で異なるセグメントに向けられる。したがって、常に、プログラムはリニア・アドレス空間においてセグメントを6つまでアクセスし得る。セグメント・レジスタ64の1つによって向けられることのないセグメントをアクセスするよう、プログラムは第1に、アクセスされるセグメント・セレクタをセグメント・レジスタ64にロードする。
32ビットEFLAGSレジスタ66はステータス・フラグ群、制御フラグ、及びシステム・フラグ群を含む。EFLAGSレジスタ66におけるフラグの一部は、特定用途向命令を用いて、直接修正し得る。該全部のレジスタ66が直接検査又は修正されることを可能にする命令はない。しかしながら、以下の命令:LAHF(ステータス・フラグをAHレジスタにロードする)、SAHF(ステータス・フラグをAHレジスタに記憶する)、push−F(Fレジスタのプッシュ)、push−FD(FDレジスタのプッシュ)、pop−F(Fレジスタのポップ)、及びpop−FD(FDレジスタのポップ);をプロシジャ・スタック又は汎用レジスタにフラグ群を移動してプロシジャ・スタック又は汎用レジスタからフラグ群を移動するのに用い得る。EFLAGSレジスタ66の内容がプロシジャ・スタック又は汎用レジスタに転送された後、フラッグを、プロセッサ10ビット操作命令を用いて、検査及び修正し得る。
タスクを一時停止する場合、プロセッサ10は自動的に一時停止されているタスクについての(図なしの)タスク状態セグメント(TSS)においてEFLAGSレジスタ66の状態をセーブする。プロセッサ10は、該プロセッサ自体に新しいタスクを結びつける場合、新しいタスク・プログラム状態レジスタ(PSS(プログラム状態セグメント)、図なし)からのデータによってEFLAGSレジスタ66をロードする。
コールがインタラプト又は例外ハンドラ・プロシジャに対して行われた場合、プロセッサ10は自動的にプロシジャ・スタック上でEFLAGSレジスタ66の状態をセーブする。インタラプト又は例外がタスク・スイッチによって扱われる場合、EFLAGSレジスタ66の状態は一時停止されているタスクに対するTSS上にセーブされる。
プロセッサ10において用いられる基本データ・タイプはバイト、ワード、ダブルワード、クワドワード及びダブルクワドワードである。1バイトは8ビットで、1ワードは2バイト(16ビット)で、ダブルワードは4バイト(32ビット)で、クワドワードは8バイト(64ビット)で、ダブルクワドワードは16バイト(128ビット)である。
図3によって、メモリにおいてオペランドとして表される基本データ・タイプ各々のバイト・オーダを表す。各データ・タイプのロー・バイト(ビット0乃至7)はメモリにおける最下位のアドレスを占めてそのアドレスは更にオペランドのアドレスである。
ワード、ダブルワード及びクアドワードはメモリにおいて自然境界上でアラインされる必要はない。ワード、ダブルワード及びクワドワードに対する自然境界は各々、偶数のアドレス、4で割り切れるアドレス、及び8で割り切れるアドレスである。しかしながら、プログラムの性能を向上させるよう、データ構造(特にスタック)は可能な限り、自然境界上でアラインされるべきである。この理由はプロセッサ10がアラインされていないメモリ・アクセスを行うのに2つのメモリ・アクセスを必要とする一方、アラインされたアクセスは1つのメモリ・アクセスを必要とすることにある。4バイトの境界をまたがるワード若しくはダブルワードのオペランド又は8バイトの境界をまたがるクワドワードのオペランドはアラインされていないとみなされ、それをアクセスするのに2つの別個のメモリ・バス・サイクルを必要とする。奇数のアドレスから開始するがワードの境界をまたがらないワードはアラインされているとみなされて、なお、1つのバス・サイクルにおいてアクセスし得る。
ダブルクワドワードを演算する命令のいくつかはメモリ・オペランドが自然境界上でアラインされることを必要とする。これらの命令は、アラインされていないオペランドが特定された場合、一般保護例外(#GP)を生成する。ダブルクワドワードに対する自然境界は16によって割り切れるアドレスの何れかである。ダブルクワドワードを演算する他の命令はアラインされていないアクセスを、一般保護例外を生成することなく、可能にするが、メモリからアラインされていないデータをアクセスするには追加のメモリ・バス・サイクルが必要になる。
バイト、ワード及びダブルワードはプロセッサ10の基本データ・タイプであるが、命令のいくつかは演算を数値データ・タイプに行うことを可能にするよう更にこれらのデータ・タイプを解釈・実行することをサポートする。例えば、プロセッサ10は2つの種類:符号無し;及び符号付き;の整数を定義する。符号無しの整数はゼロから、選定オペランド・サイズで符号化し得る最大の正数までの範囲の通常の(ordinary)2進値である。符号付きの整数は正及び負の整数の値の両方を表すのに用い得る2の補数の2進値である。
プロセッサ10は3つの浮動小数点データ・タイプ;単精度浮動小数点;倍精度浮動小数点;及び倍精度拡張浮動小数点;を定義して該データ・タイプを演算する。これらのデータ・タイプに対するデータ・フォーマットは2進の浮動小数点算術に関するIEEE(米国電気電子学会)標準754に規定されたようなフォーマットに直接相当する。
ポインタはメモリにおける位置のアドレスである。プロセッサ10は2つの種類のポインタ;ニア・ポインタ(32ビット);及びファー・ポインタ(48ビット);を定義する。ニア・ポインタはセグメント内部の(実効アドレスとも呼ばれる)32ビットのオフセットである。フラットなメモリ・モデルにおける全てのメモリ参照に、又はアクセスされるセグメントの身元が暗示される場合に、セグメント化されたモデルにおける参照に、用いられる。ファー・ポインタは48ビットの論理アドレスで、16ビットのセグメント・セレクタ及び32ビットのオフセットから成る。ファー・ポインタはアクセスされるセグメントの身元が明示的に規定されなければならない場合に、メモリ参照及びセグメント化されたメモリ・モデルにおける参照に用いられる。
ビット・フィールドは連続する一連のビットのことである。それはメモリにおける如何なるバイトの如何なるビット位置からでも開始し得、32ビットまで含み得る。ストリングは連続する一連のビット、バイト、ワード又はダブルワードのことである。ビット列は如何なるバイトの如何なるビット位置からでも開始し得、232−1ビットまで含み得る。バイト列はバイト、ワード又はダブルワードを含み得、ゼロから232−1バイト(4ギガバイト)までの範囲に及び得る。
2進符号化10進整数(BCD整数)は0から9までの範囲の有効値を有する符号無しの4ビット整数である。プロセッサ10は1つ以上の汎用レジスタ62又は1つ以上のFPUレジスタ56にあるBCD整数の演算を定義する。
図4によれば、実数はFPU56浮動小数点レジスタ70における浮動小数点フォーマット100にて表される。浮動小数点フォーマットは3つの部分;符号102;有効数字104;及び指数106;を含む。符号102は該数が正(0)か負(1)を示す2進値である。有効数字104は2つの部分:1ビットの(更にJビットとも呼ばれる)2進整数108及び2進分数110;を有する。整数ビット108は表されないことがあり、その代わりに暗黙の値である。指数106は有効数字104が乗算される2を基底とする累乗を表す2進整数である。
プロセッサ10はSIMD演算において用いられる64ビット及び128ビットのパック・データ・タイプの群を規定して該群を演算する。これらのデータ・タイプは基本データ・タイプ(パックされた、バイト、ワード、ダブルワード並びにクワドワード)及びパック整数及びパック浮動小数点演算において用いる基本データ・タイプの数値解釈を含む。
64ビットのSIMDデータ・タイプは主に、64ビットのマルチメディア拡張レジスタ58において演算される。基本64ビット・パック・データ・タイプはパック・バイト、パック・ワード及びパック・ダブルワードである。マルチメディア拡張レジスタ58においてこれらのデータ・タイプに数値SIMD演算を行う場合、これらのデータ・タイプはバイト、ワード、又はダブルワード整数値を含むものとして解釈される。
128ビットのパックSIMDデータ・タイプは主に、128ビットの拡張マルチメディア(XMM)レジスタ84及びメモリ54において演算される。基本128ビット・パック・データ・タイプはパック・バイト、パック・ワード、パック・ダブルワード及びパック・クワドワードである。拡張マルチメディア(XMM)レジスタ84においてこれらの基本データ・タイプにSIMD演算を行う場合、これらのデータ・タイプはパック若しくはスカラ単精度浮動小数点又は倍精度浮動小数点値を含むものとしてか、パックされた、バイト、ワード、ダブルワード、又はクワドワード整数値を含むものとして、解釈される。
図5によれば、表120は種々のSIMD拡張、演算されるデータ・タイプ、及びデータ・タイプがマルチメディア拡張レジスタ58及び拡張マルチメディア(XMM)レジスタ84にパックされる方法のまとめを表す。
上記のように、マルチメディア拡張命令はメモリ54、マルチメディア拡張レジスタ58、及び/又は汎用レジスタ62に含まれた、パックされた、バイト、ワード、ダブルワード又はクワドワード整数オペランドを演算する。マルチメディア拡張命令はデータ転送命令、変換命令、パック算術命令、比較命令、論理命令、シフト並びに回転命令及び状態管理命令を含む。
SIMD拡張(SSE及びSSE2)命令はいくつかの、例えば、4つの、群:拡張マルチメディア(XXM)レジスタ84を演算するSIMD単精度浮動小数点命令、MXSCRレジスタ86を演算するMXSCR命令、MXXレジスタ58を演算する64ビットSIMD整数命令、及びキャッシュ可能性制御、プリフェッチ並びに命令順序付け命令に分割される。
命令の1つのクラスに移動/ロード及び複製タイプの命令がある。これらの命令は、例えば、ビットの複製を得るようロード値に明示的な演算を行う必要性を省くものであるため、「複合」命令とも呼ばれる。現在のアーキテクチャはMOVDDUP命令、MOVSHDUP命令及びMOVSLDUP命令を含む。これらの命令はパック単精度及びパック倍精度浮動小数点データ・タイプの複雑な算術をサポートするよう備えられる。これらの命令は種々のアプリケーションにおいて用い得る。例えば、これらの命令は信号処理アプリケーション及び自然データ・タイプの処理に関係するアプリケーションの効率を向上し得る。
MOVDDUP命令は、64ビット(ソースがレジスタの場合、ビット〔63−0〕)をロード/移動する、倍精度浮動小数点の1だけの移動及びSSE2複製命令である。MOVDDUP命令は、同じ結果レジスタの下半分と上半分との両方において同じ64ビットを返す、すなわち、ソースからの64ビットを複製する。したがって、ソースが0/1のエントリを有する場合、デスティネーションは1/0/1/0のエントリを有する。MOVEDDUP命令は以下のフォーマット:
MOVEDDUP デスティネーション、ソース;
を有し、ソース・オペランドはメモリ位置54又は第2拡張マルチメディア(XMM)レジスタ84でデスティネーション・オペランドは第1拡張マルチメディア(XMM)レジスタ84である。ソースは倍精度浮動小数点データ・タイプを含む。
演算においては、ソース・オペランドがメモリ・アドレスの場合、第1拡張マルチメディア(XMM)レジスタのビット〔63−0〕がメモリ・アドレスのビット〔63−0〕によってロードされて、第1拡張マルチメディア(XMM)レジスタのビット〔127−64〕はメモリ位置のビット〔63−0〕によってロードされる。ソース・オペランドが第2拡張マルチメディア(XMM)レジスタの場合、第1拡張マルチメディア(XMM)レジスタのビット〔63−0〕は第2拡張マルチメディア(XMM)レジスタのビット〔63−0〕に等しくなるよう設定されて第1拡張マルチメディア(XMM)レジスタのビット〔127−64〕は第2拡張マルチメディア(XMM)レジスタのビット〔63−0〕に等しくなるよう設定される。
リニア・アドレスは参照メモリ・データの最下位バイトのアドレスに相当する。メモリ・アドレスが示された場合、メモリ位置でのデータの16バイトがロード又は記憶される。レジスタ−レジスタ形式の演算が用いられる場合、128ビットのソース・レジスタの内容は128ビットのデスティネーション・レジスタに複製される。
MOVSHDUP命令は128ビットをロード/移動して結果として生じるレジスタにエントリ1及び3を複製する、単精度浮動小数点上位移動及びSSE2複製命令である。128ビットのソース・レジスタ幅の例においては、各エントリは32ビットである。特に、ソースのエントリが、3/2/1/0の(0が下位単精度エントリで3が上位単精度エントリである)、場合、MOVSHDUP命令の実行後の結果レジスタは複製されたエントリ3及び1を記憶してエントリ3/3/1/1を設ける。MOVSHDUPは以下のフォーマット:
MOVSHDUP デスティネーション、ソース;
を有し、ソース・オペランドはメモリ位置54又は第2拡張マルチメディア(XMM)レジスタ84を表してデスティネーション・オペランドは第1拡張マルチメディア(XMM)レジスタ84である。ソース・オペランドはパック単精度浮動小数点データ・タイプを有する。
演算においては、ソース・オペランドがメモリ・アドレスの場合、第1拡張マルチメディア(XMM)レジスタのビット〔31−0〕がメモリ・アドレスのビット〔63−32〕によってロードされ、第1拡張マルチメディア(XMM)レジスタのビット63−32がメモリ・アドレスのビット〔63−32〕によってロードされ、第1拡張マルチメディア(XMM)レジスタのビット95−64がメモリ・アドレスのビット〔127−96〕によってロードされて、第1拡張マルチメディア(XMM)レジスタのビット127−96がメモリ・アドレスのビット〔127−96〕によってロードされる。
ソース・オペランドが第2拡張マルチメディア(XMM)レジスタの場合、第1拡張マルチメディア(XMM)レジスタのビット〔31−0〕が第2拡張マルチメディア(XMM)レジスタのビット〔63−32〕に等しくなるよう設定され、第1拡張マルチメディア(XMM)レジスタのビット〔63−32〕が第2拡張マルチメディア(XMM)レジスタのビット〔63−32〕に等しくなるよう設定され、第1拡張マルチメディア(XMM)レジスタのビット〔95−64〕が第2拡張マルチメディア(XMM)レジスタのビット〔127−96〕に等しくなるよう設定され、第1拡張マルチメディア(XMM)レジスタのビット〔127−96〕が第2拡張マルチメディア(XMM)レジスタのビット〔127−96〕に等しくなるよう設定される。
リニア・アドレスは参照メモリ・データの最下位バイトのアドレスに相当する。メモリ・アドレスが示された場合、メモリ位置での16バイトのデータがロード又は記憶される。レジスタ−レジスタ形式の演算が用いられる場合、128ビットのソース・レジスタの内容は128ビットのデスティネーション・レジスタに複製される。
MOVSLDUP命令は、128ビットをロード/移動してエントリ0及び2を複製する、パック単精度浮動小数点下位移動及びSSE2複製命令である。特に、ソースが3/2/1/0(0が下位単精度エントリ)である場合、結果レジスタはエントリ2/2/0/0を記憶する。MOVSLDUP命令は以下のフォーマット:
MOVSLDUP デスティネーション、ソース;
を有し、ソース・オペランドはメモリ位置54又は第2拡張マルチメディア(XMM)レジスタ84でデスティネーション・オペランドは第1拡張マルチメディア(XMM)レジスタ84である。ソース・オペランドはパック単精度浮動小数点データ・タイプを含む。
演算においては、ソース・オペランドがメモリ・アドレスの場合、第1拡張マルチメディア(XMM)レジスタのビット〔31−0〕はメモリ・アドレスのビット〔31−0〕によってロードされて、第1拡張マルチメディア(XMM)レジスタのビット〔63−32〕はメモリ・アドレスのビット〔31−0〕によってロードされて、第1拡張マルチメディア(XMM)レジスタのビット〔95−64〕はメモリ・アドレスのビット〔95−64〕によってロードされて、第1拡張マルチメディア(XMM)レジスタのビット〔127−96〕はメモリ・アドレスのビット〔95−64〕によってロードされる。ソース・オペランドがレジスタの場合、第1拡張マルチメディア(XMM)レジスタのビット〔31−0〕は第2拡張マルチメディア(XMM)レジスタのビット〔31−0〕に等しくなるよう設定され、第1拡張マルチメディア(XMM)レジスタのビット〔63−32〕は第2拡張マルチメディア(XMM)レジスタのビット〔31−0〕に等しくなるよう設定され、第1拡張マルチメディア(XMM)レジスタのビット〔95−64〕は第2拡張マルチメディア(XMM)レジスタのビット〔95−64〕に等しくなるよう設定され、第1拡張マルチメディア(XMM)レジスタのビット〔127−96〕は第2拡張マルチメディア(XMM)レジスタのビット〔95−64〕に等しくなるよう設定される。
リニア・アドレスは参照メモリ・データの最下位バイトのアドレスに相当する。メモリ・アドレスが示された場合、メモリ位置での16バイトのデータがロード又は記憶される。レジスタ−レジスタ形式の演算が用いられる場合、128ビットのソース・レジスタの内容は128ビットのデスティネーション・レジスタに複製される。

Claims (27)

  1. プロセッサであって、
    フェッチ/復号化手段と、
    命令に応じて機能を実行する実行コアと、を備え、
    前記命令の1つは、単一のソース・オペランドを示すフォーマットを有する単一の移動及び複製命令を含み、
    前記単一の移動及び複製命令は、前記プロセッサに、
    前記単一のソース・オペランドの非連続位置群からの複数のビットを、前記単一のソース・オペランドと同一サイズである単一のデスティネーション・レジスタの非連続デスティネーション位置群に記憶させ、かつ、
    前記単一のソース・オペランドの前記非連続位置群それぞれからの前記ビットを、前記デスティネーション・レジスタの他のデスティネーション位置群に複製させ、
    複製されるべき前記単一のソース・オペランドの前記非連続位置群は、前記単一の移動及び複製命令に対して固定であるが、
    複製されるべき前記単一のソース・オペランドの前記非連続位置群は、前記単一の移動及び複製命令によって、黙示的に規定される、プロセッサ。
  2. 方法であって、
    プロセッサを用いて単一のプログラム命令を実行する工程を含み、
    前記プロセッサは、
    前記プロセッサの実行コアを用いて、前記命令によって示される単一のソース・オペランドの非連続位置群からの複数のビットを、前記単一のソース・オペランドと同一サイズを有する単一のデスティネーション・レジスタの非連続デスティネーション位置群に記憶する工程と、
    前記プロセッサの実行コアを用いて、前記単一のソース・オペランドの前記非連続位置群の各々のビットを、前記デスティネーション・レジスタのデスティネーション位置の他の群に複製し、記憶する工程と、
    を含む、オペレーションを実行し、
    複製されるべき前記単一のソース・オペランドの前記非連続位置群は、前記命令に対して黙示的である、方法。
  3. 命令を記憶させたコンピュータ判読可能媒体上に存在するコンピュータ・プログラムであって、該命令がプロセッサによって実行された場合、該プロセッサに:
    前記命令によって示される単一のソース・オペランドの非連続位置群からの複数のビットを、前記単一のソース・オペランドと同一サイズを有する単一のデスティネーション・レジスタの非連続デスティネーション位置群に記憶する工程;及び
    前記命令によって示される前記単一のソース・オペランドの前記非連続位置群の各々のビットを前記デスティネーション・レジスタのデスティネーション位置の他の群に複製し、記憶する工程;を行わせ、
    複製される対象の前記単一のソース・オペランドの前記非連続位置群は、前記命令によって黙示的に規定される、コンピュータ・プログラム。
  4. プロセッサであって、
    フェッチ/復号化手段と、
    命令に応じて機能を実行する実行コアと、を備え、
    前記命令の1つは、単一のパック単精度浮動小数点移動、及び、単一の128ビットのソース・オペランドを示すフォーマットを有する複製命令を含み、かつ、
    前記プロセッサに、
    単一の128ビットのデスティネーション・レジスタのビット〔63−32〕に前記単一のソース・オペランドのビット〔63−32〕を記憶させ、
    前記単一のソース・オペランドのビット〔63−32〕を、前記デスティネーション・レジスタのビット〔31−0〕に複製させて、記憶させ、
    前記デスティネーション・レジスタのビット〔127−96〕に前記単一のソース・オペランドのビット〔127−96〕を記憶させ、
    前記デスティネーション・レジスタのビット〔95−64〕に前記ソース・オペランドの前記ビット〔127−96〕を複製させて、記憶させ、
    前記命令は、前記プロセッサに、
    前記ソース・オペランドの前記ビット〔63−32〕を、前記デスティネーション・レジスタの前記ビット〔63−32〕及び前記ビット〔31−0〕に記憶させ、かつ、
    前記ソース・オペランドの前記ビット〔127−96〕を、前記デスティネーション・レジスタの前記ビット〔127−96〕及び前記ビット〔95−64〕に記憶させる、
    ことだけができるタイプのものである、プロセッサ。
  5. 命令を実行する工程を含む、プロセッサにおいて実行される方法であって、前記命令は、
    前記命令によって示される単一のソース・オペランドのビット〔127−0〕にアクセスする工程;
    単一の128ビットのデスティネーション・レジスタのビット〔63−32〕に前記単一のソース・オペランドのビット〔63−32〕を記憶し、前記単一のソース・オペランドの前記ビット〔63−32〕を前記デスティネーション・レジスタのビット〔31−0〕に複製し、記憶する工程;及び
    前記デスティネーション・レジスタのビット〔127−96〕に前記単一のソース・オペランドのビット〔127−96〕を記憶し、前記単一のソース・オペランドのビット〔127−96〕を前記デスティネーション・レジスタのビット〔95−64〕に複製し、記憶する工程、を行わせ、
    前記単一のソース・オペランドの前記ビット〔63−32〕を、前記デスティネーション・レジスタの前記ビット〔63−32〕及び前記ビット〔31−0〕へ記憶することは、前記命令に対して黙示的である、方法。
  6. 命令を記憶させたコンピュータ判読可能媒体上に存在するコンピュータ・プログラムであって、該命令がプロセッサによって実行された場合、該プロセッサに:
    前記命令によって示される単一のソース・オペランドのビット〔127−0〕にアクセスする工程;
    単一の128ビットのデスティネーション・レジスタのビット〔63−32〕に、前記命令によって示される前記単一のソース・オペランドのビット〔63−32〕を記憶し、前記単一のソース・オペランドの前記ビット〔63−32〕を前記デスティネーション・レジスタのビット〔31−0〕に複製し、記憶する工程;及び
    前記デスティネーション・レジスタのビット〔127−96〕に、前記命令によって示される前記単一のソース・オペランドのビット〔127−96〕を記憶し、前記単一のソース・オペランドのビット〔127−96〕を前記デスティネーション・レジスタのビット〔95−64〕に複製し、記憶する工程;を行わせ、
    前記単一のソース・オペランドの前記ビット〔63−32〕を、前記デスティネーション・レジスタの前記ビット〔63−32〕へ記憶すること、及び、前記単一のソース・オペランドの前記ビット〔63−32〕を、前記デスティネーション・レジスタの前記ビット〔31−0〕へ複製及び記憶することは、前記命令によって黙示的に規定される、コンピュータ・プログラム。
  7. プロセッサであって、
    フェッチ/復号化手段と、
    命令に応じて機能を行う実行コアと、を備え、
    前記命令の1つは、単一のソース・オペランドを示すフォーマットを有し、前記プロセッサに、
    単一の128ビットのデスティネーション・レジスタのビット〔31−0〕に前記単一のソース・オペランドのビット〔31−0〕を記憶させ、
    前記単一のソース・オペランドの前記ビット〔31−0〕を前記デスティネーション・レジスタのビット〔63−32〕に複製させ、記憶させ、
    前記デスティネーション・レジスタのビット〔95−64〕に該単一のソース・オペランドのビット〔95−64〕を記憶させ、かつ、
    前記デスティネーション・レジスタのビット〔127−96〕に前記単一のソース・オペランドの前記ビット〔95−64〕を複製させ、記憶させる、
    単一のパック単精度浮動小数点移動及び複製命令を含み、
    前記パック単精度浮動小数点移動及び複製命令は、前記プロセッサに、
    前記デスティネーション・レジスタの前記ビット〔63−32〕及び前記ビット〔31−0〕に前記単一のソース・オペランドの前記ビット〔31−0〕を記憶させ、かつ、
    前記デスティネーション・レジスタの前記ビット〔127−96〕及び前記ビット〔95−64〕に前記単一のソース・オペランドの前記ビット〔95−64〕を記憶させる、
    ことのみできるタイプのものである、プロセッサ。
  8. 方法であって、
    単一のソース・オペランドを示すフォーマットを有するプログラム命令を実行する工程を含み、前記命令は、
    プロセッサにおいて、
    前記命令によって示された前記単一のソース・オペランドのビット〔31−0〕を単一の128ビット・デスティネーション・レジスタのビット〔31−0〕に記憶する機能と、
    前記命令によって示された前記単一のソース・オペランドの前記ビット〔31−0〕を前記デスティネーション・レジスタのビット〔63−32〕に複製し、記憶する機能と、
    前記単一のソース・オペランドのビット〔95−64〕を前記デスティネーション・レジスタのビット〔95−64〕に記憶する機能と、
    前記命令によって示された前記単一のソース・オペランドの前記ビット〔95−64〕を前記デスティネーション・レジスタのビット〔127−96〕に複製し、記憶する機能と、を生じさせ、
    前記単一のソース・オペランドの前記ビット〔95−64〕を、前記デスティネーション・レジスタの前記ビット〔95−64〕及び前記ビット〔127−96〕へ記憶することは、前記命令に対して黙示的である、方法。
  9. 命令を記憶させたコンピュータ判読可能媒体上に存在するコンピュータ・プログラムであって、前記命令は、プロセッサによって実行された場合、前記プロセッサに機能を行わせ、前記機能は、
    前記命令によって示された単一のソース・オペランドのビット〔31−0〕を単一の128ビット・デスティネーション・レジスタのビット〔31−0〕に記憶する機能と、
    前記単一のソース・オペランドの前記ビット〔31−0〕を前記デスティネーション・レジスタのビット〔63−32〕に複製し、記憶する機能と、
    前記単一のソース・オペランドのビット〔95−64〕を前記デスティネーション・レジスタのビット〔95−64〕に記憶する機能と、
    前記命令によって示された前記単一のソース・オペランドの前記ビット〔95−64〕を前記デスティネーション・レジスタのビット〔127−96〕に複製し、記憶する機能と、を含み、
    前記単一のソース・オペランドの前記ビット〔95−64〕の、前記デスティネーション・レジスタの前記ビット〔95−64〕への前記記憶、及び、前記単一のソース・オペランドの前記ビット〔95−64〕の、前記デスティネーション・レジスタの前記ビット〔127−96〕への前記複製及び前記記憶は、前記命令によって黙示的に規定される、コンピュータ・プログラム。
  10. 請求項1記載のプロセッサであって、前記単一の移動及び複製命令は、メモリにおける前記単一のソース・オペランドを示すためのフォーマットを有する、プロセッサ。
  11. 請求項1記載のプロセッサであって、前記ソース・オペランドの前記非連続位置群は、32ビットの単精度浮動小数点データを含む、プロセッサ。
  12. 請求項1記載のプロセッサであって、前記移動及び複製命令は、前記単一のソース・オペランドと同じサイズを有する単一のデスティネーション・レジスタを示す、プロセッサ。
  13. 請求項4記載のプロセッサであって、前記パック単精度浮動小数点移動及び複製命令は、メモリにおける前記単一のソース・オペランドを示すためのフォーマットを有し、前記ソース・オペランドの前記ビット〔63−32〕は、32ビットの単精度浮動小数点データ要素を含む、プロセッサ。
  14. 請求項4記載のプロセッサであって、前記パック単精度浮動小数点移動及び複製命令は、前記単一のソース・オペランドと同じサイズを有する単一のデスティネーション・レジスタを示す、プロセッサ。
  15. 請求項7記載のプロセッサであって、前記パック単精度浮動小数点移動及び複製命令は、メモリにおける前記単一のソース・オペランドを示すためのフォーマットを有し、前記ソース・オペランドの前記ビット〔31−0〕は、32ビットの単精度浮動小数点データ要素を含む、プロセッサ。
  16. 請求項7記載のプロセッサであって、前記パック単精度浮動小数点移動及び複製命令は、前記単一のソース・オペランドと同じサイズを有する単一のデスティネーション・レジスタを示す、プロセッサ。
  17. 装置であって、
    単一のソース及び単一のデスティネーションを示す命令を受け取るためのフロント・エンドであって、前記単一のソースは、第1の単精度浮動小数点値、第2の単精度浮動小数点値、第3の単精度浮動小数点値、及び、第4の単精度浮動小数点値を含む第1の複数のパック単精度浮動小数点値を有し、前記第2の単精度浮動小数点値は、前記第1の単精度浮動小数点値と前記第3の単精度浮動小数点値とを記憶するために使用されるビット間にある前記単一のソースのビットに記憶される、フロント・エンドと、
    前記フロント・エンドに結合された実行コアであって、前記実行コアは、前記デスティネーションに前記命令に対応する結果を記憶し、前記結果は、前記第1の単精度浮動小数点値に等しくなる第5の単精度浮動小数点値、前記第1の単精度浮動小数点値に等しくなる第6の単精度浮動小数点値、前記第3の単精度浮動小数点値に等しくなる第7の単精度浮動小数点値、及び、前記第3の単精度浮動小数点値に等しくなる第8の単精度浮動小数点値を順番に含む第2の複数のパック単精度浮動小数点値を有する、実行コアと、を備え、
    前記命令は、前記第5の単精度浮動小数点値及び前記第6の単精度浮動小数点値が前記第1の単精度浮動小数点値に等しくなる旨を示唆する、装置。
  18. 請求項17記載の装置であって、前記命令はメモリにおける前記単一のソースを示す装置。
  19. 請求項17記載の装置であって、前記命令は、前記単一のソースと同じサイズを有する単一のデスティネーションとして、前記デスティネーションを示す装置。
  20. プロセッサであって、
    第1の命令及び第2の命令をフェッチするためのフロント・エンドと、
    前記フロント・エンドに結合され、前記第1の命令及び前記第2の命令を実行するためのコアと、を備え、
    前記コアは、第1のデスティネーション・レジスタ及びメモリにおける単一の第1のソースを示す前記第1の命令に応答して、前記第1のソースのビット〔31−0〕を前記第1のデスティネーション・レジスタのビット記憶位置〔63−32〕及び〔31−0〕に記憶し、かつ、前記第1のソースのビット〔95−64〕を前記第1のデスティネーション・レジスタのビット記憶位置〔127−96〕及び〔95−64〕に記憶し、
    前記コアは、第2のデスティネーション・レジスタ及びメモリにおける単一の第2のソースを示す前記第2の命令に応答して、前記第2のソースのビット〔63−32〕を前記第2のデスティネーション・レジスタのビット記憶位置〔31−0〕及び〔63−32〕に記憶し、かつ、前記第2のソースのビット〔127−96〕を前記第2のデスティネーション・レジスタのビット記憶位置〔127−96〕及び〔95−64〕に記憶し、
    前記第1の命令は、前記コアが前記第1のソースの前記ビット〔31−0〕を前記第1のデスティネーション・レジスタの前記ビット記憶位置〔63−32〕及び〔31−0〕に記憶させることを黙示的に規定する、プロセッサ。
  21. 請求項20記載のプロセッサであって、前記第2の命令は前記第2のソースを単一のソースとして示すプロセッサ。
  22. 装置であって、
    単一のソース及びデスティネーションを示す命令を受け取るためのフロント・エンドであって、前記ソースは、第1の複数のパック浮動小数点値を有し、前記第1の複数のパック浮動小数点値は、第1の浮動小数点値、第2の浮動小数点値、及び、第3の浮動小数点値を含み、前記第2の浮動小数点値は、前記第1の浮動小数点値と前記第3の浮動小数点値とを記憶するために使用されるビット間にある前記単一のソースのビットに記憶される、フロント・エンドと、
    前記フロント・エンドに結合された実行コアであって、前記実行コアは、前記デスティネーションに前記命令に対応する結果を記憶し、前記結果は、前記第1の浮動小数点値に等しくなる第4の浮動小数点値、前記第1の浮動小数点値に等しくなる第5の浮動小数点値、前記第3の浮動小数点値に等しくなる第6の浮動小数点値、及び、前記第3の浮動小数点値に等しくなる第7の浮動小数点値を順番に含む第2の複数のパック浮動小数点値を有する、実行コアと、を備え、
    前記第1の浮動小数点値に等しくなる前記第4の浮動小数点値及び前記第5の浮動小数点値は、前記命令のタイプによって固定されている、装置。
  23. 装置であって、
    単一のソース及びデスティネーションを示す命令を受け取るためのフロント・エンドであって、前記単一のソースは、第1の複数のパック浮動小数点値を有し、前記第1の複数のパック浮動小数点値は、前記ソースのビット〔31−0〕における第1の単精度浮動小数点値、前記ソースのビット〔63−32〕における第2の単精度浮動小数点値、前記ソースのビット〔95−64〕における第3の単精度浮動小数点値、及び前記ソースのビット〔127−96〕における第4の単精度浮動小数点値を含む、フロント・エンドと、
    前記フロント・エンドに結合された実行コアであって、前記実行コアは、前記命令によって示された前記デスティネーションに前記命令に対応するパックされた結果を記憶し、前記パックされた結果は、第2の複数のパック浮動小数点値を有し、前記第2の複数のパック浮動小数点値は、前記第1の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔31−0〕における第5の単精度浮動小数点値、前記第1の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔63−32〕における第6の単精度浮動小数点値、前記第3の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔95−64〕における第7の単精度浮動小数点値、及び、前記第3の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔127−96〕における第8の単精度浮動小数点値を含む、実行コアと、を備え、
    前記命令のオプコードは、前記第5の単精度浮動小数点値及び前記第6の単精度浮動小数点値が前記第1の単精度浮動小数点値に等しくなる旨を示す、装置。
  24. 装置であって、
    単一のソース及びデスティネーションを示す命令を受け取るためのフロント・エンドであって、前記ソースは、第1の複数のパック浮動小数点値を有し、前記第1の複数のパック浮動小数点値は、前記ソースのビット〔31−0〕における第1の単精度浮動小数点値、前記ソースのビット〔63−32〕における第2の単精度浮動小数点値、前記ソースのビット〔95−64〕における第3の単精度浮動小数点値、及び、前記ソースのビット〔127−96〕における第4の単精度浮動小数点値を含む、フロント・エンドと、
    前記フロント・エンドに結合された実行コアであって、前記実行コアは、前記命令によって示された前記デスティネーションに前記命令に対応するパックされた結果を記憶し、前記パックされた結果は、第2の複数のパック浮動小数点値を有し、前記第2の複数のパック浮動小数点値は、前記第2の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔31−0〕における第5の単精度浮動小数点値、前記第2の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔63−32〕における第6の単精度浮動小数点値、前記第4の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔95−64〕における第7の単精度浮動小数点値、及び、前記第4の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔127−96〕における第8の単精度浮動小数点値を含む、実行コアと、を備え、
    前記命令は、前記第5の単精度浮動小数点値及び前記第6の単精度浮動小数点値が前記第2の単精度浮動小数点値に等しくなる旨を黙示的に示す、装置。
  25. 装置であって、
    単一のソース及びデスティネーションを示す命令を受け取るための復号化手段であって、前記単一のソースは、第1の複数のパック浮動小数点値を有し、前記第1の複数のパック浮動小数点値は、第1の値、第2の値、及び、第3の値を含み、前記第2の値は、前記第1の値と前記第3の値とを記憶するために使用されるビット間にある前記単一のソースのビットに記憶される、復号化手段と、
    前記復号化手段に結合された実行リソースであって、前記実行リソースは、前記デスティネーションに前記命令に対応する結果を記憶し、前記結果は、前記第1の値に等しくなる第4の値、前記第1の値に等しくなる第5の値、前記第3の値に等しくなる第6の値、及び、前記第3の値に等しくなる第7の値を順番に含む第2の複数のパック値を含む、実行リソースと、を備え、
    前記命令は、前記第4の値及び前記第5の値が前記第1の値に等しくなる旨を黙示的に規定する、装置。
  26. 装置であって、
    単一のソース及び単一のデスティネーションを示す命令を受け取るための復号化手段であって、前記ソースは、第1の複数のパック浮動小数点値を有し、前記第1の複数のパック浮動小数点値は、前記ソースのビット〔31−0〕における第1の単精度浮動小数点値、前記ソースのビット〔63−32〕における第2の単精度浮動小数点値、前記ソースのビット〔95−64〕における第3の単精度浮動小数点値、及び、前記ソースのビット〔127−96〕における第4の単精度浮動小数点値を含む、復号化手段と、
    前記復号化手段に結合された実行リソースであって、前記実行リソースは、前記命令によって示された前記デスティネーションに前記命令に対応するパックされた結果を記憶し、前記パックされた結果は、第2の複数のパック浮動小数点値を有し、前記第2の複数のパック浮動小数点値は、前記第1の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔31−0〕における第5の単精度浮動小数点値、前記第1の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔63−32〕における第6の単精度浮動小数点値、前記第3の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔95−64〕における第7の単精度浮動小数点値、及び、前記第3の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔127−96〕における第8の単精度浮動小数点値を含む、実行リソースと、を備え、
    前記命令のオプコードは、前記第5の単精度浮動小数点値及び前記第6の単精度浮動小数点値が前記第1の単精度浮動小数点値に等しくなる旨を示し、
    前記命令は、前記ソースのアドレスを示し、
    前記パックされた結果は、前記ソースと同じアドレスを有する第2のソースを示す前記命令なしで記憶される、装置。
  27. 装置であって、
    単一のソース及び単一のデスティネーションを示す命令を受け取るための復号化手段であって、前記ソースは、第1の複数のパック浮動小数点値を有し、前記第1の複数のパック浮動小数点値は、前記ソースのビット〔31−0〕における第1の単精度浮動小数点値、前記ソースのビット〔63−32〕における第2の単精度浮動小数点値、前記ソースのビット〔95−64〕における第3の単精度浮動小数点値、及び、前記ソースのビット〔127−96〕における第4の単精度浮動小数点値を含む、復号化手段と、
    前記復号化手段に結合された実行リソースであって、前記実行リソースは、前記命令によって示された前記デスティネーションに前記命令に対応するパックされた結果を記憶し、前記パックされた結果は、第2の複数のパック浮動小数点値を有し、前記第2の複数のパック浮動小数点値は、前記第2の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔31−0〕における第5の単精度浮動小数点値、前記第2の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔63−32〕における第6の単精度浮動小数点値、前記第4の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔95−64〕における第7の単精度浮動小数点値、及び、前記第4の単精度浮動小数点値に等しくなる前記パックされた結果のビット〔127−96〕における第8の単精度浮動小数点値を含む、実行リソースと、を備え、
    前記第5の単精度浮動小数点値及び前記第6の単精度浮動小数点値が前記第2の単精度浮動小数点値に等しくなる旨が前記命令によって黙示的に規定され
    前記命令は、前記ソースのアドレスを示し、
    前記パックされた結果は、前記ソースと同じアドレスを有する第2のソースを示す前記命令なしで記憶される、装置。
JP2013257903A 2001-12-20 2013-12-13 プロセッサに関するロード/移動及び複製命令 Expired - Fee Related JP5960115B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/032,144 US7853778B2 (en) 2001-12-20 2001-12-20 Load/move and duplicate instructions for a processor
US10/032,144 2001-12-20

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010039897A Division JP2010152919A (ja) 2001-12-20 2010-02-25 プロセッサに関するロード/移動及び複製命令

Publications (2)

Publication Number Publication Date
JP2014089730A JP2014089730A (ja) 2014-05-15
JP5960115B2 true JP5960115B2 (ja) 2016-08-02

Family

ID=21863332

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2003555340A Pending JP2006502464A (ja) 2001-12-20 2002-12-12 プロセッサに関するロード/移動及び複製命令
JP2010039897A Pending JP2010152919A (ja) 2001-12-20 2010-02-25 プロセッサに関するロード/移動及び複製命令
JP2013257903A Expired - Fee Related JP5960115B2 (ja) 2001-12-20 2013-12-13 プロセッサに関するロード/移動及び複製命令

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2003555340A Pending JP2006502464A (ja) 2001-12-20 2002-12-12 プロセッサに関するロード/移動及び複製命令
JP2010039897A Pending JP2010152919A (ja) 2001-12-20 2010-02-25 プロセッサに関するロード/移動及び複製命令

Country Status (9)

Country Link
US (6) US7853778B2 (ja)
JP (3) JP2006502464A (ja)
KR (1) KR100806408B1 (ja)
CN (2) CN100492281C (ja)
AU (1) AU2002357263A1 (ja)
DE (1) DE10297581T5 (ja)
RU (1) RU2292581C2 (ja)
TW (1) TW594569B (ja)
WO (1) WO2003054692A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6995059B2 (ja) 2017-03-14 2022-01-14 株式会社トクヤマ フライアッシュの使用方法

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
JP2005535966A (ja) * 2002-08-09 2005-11-24 インテル・コーポレーション アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
EP1508853A1 (en) * 2003-08-19 2005-02-23 STMicroelectronics Limited Computer system and method for loading non-aligned words
WO2006018822A1 (en) * 2004-08-20 2006-02-23 Koninklijke Philips Electronics, N.V. Combined load and computation execution unit
US8996152B2 (en) * 2006-06-28 2015-03-31 Nvidia Corporation Operating system aware hardware mutex
US8321872B2 (en) * 2006-06-28 2012-11-27 Nvidia Corporation Reusable, operating system aware hardware mutex
US20080077772A1 (en) * 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
US8112675B2 (en) * 2006-09-28 2012-02-07 Nvidia Corporation Filesystem directory debug log
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US8639945B2 (en) 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8656139B2 (en) * 2011-03-11 2014-02-18 Telefonaktiebolaget L M Ericsson (Publ) Digital processor for processing long and short pointers and converting each between a common format
WO2013095555A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems, and instructions
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
CN104126168B (zh) * 2011-12-22 2019-01-08 英特尔公司 打包数据重新安排控制索引前体生成处理器、方法、系统及指令
WO2013095554A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
EP2798520A4 (en) * 2011-12-29 2016-12-07 Intel Corp METHOD AND DEVICE FOR MXCSR CONTROL
US9459867B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US20140095847A1 (en) * 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US10540179B2 (en) 2013-03-07 2020-01-21 MIPS Tech, LLC Apparatus and method for bonding branch instruction with architectural delay slot
US20140258667A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Memory Operation Bonding
CN103186363B (zh) * 2013-03-26 2015-09-30 北京经纬恒润科技有限公司 一种数值编辑方法及系统
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US10423413B2 (en) 2013-07-09 2019-09-24 Texas Instruments Incorporated Vector load and duplicate operations
US9600286B2 (en) 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for transactional execution
US9336047B2 (en) 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US9348643B2 (en) 2014-06-30 2016-05-24 International Business Machines Corporation Prefetching of discontiguous storage locations as part of transactional execution
US9710271B2 (en) 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US9448939B2 (en) 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US9529653B2 (en) * 2014-10-09 2016-12-27 International Business Machines Corporation Processor register error correction management
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160224252A1 (en) * 2015-01-30 2016-08-04 Intel Corporation Hybrid memory architecture
EP3336692B1 (en) * 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
EP3336691B1 (en) 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
RU2713709C1 (ru) * 2019-06-20 2020-02-06 Федеральное государственное унитарное предприятие "Научно-производственный центр автоматики и приборостроения имени академика Н.А. Пилюгина" (ФГУП "НПЦАП") Устройство преобразования информации
KR102307691B1 (ko) 2020-11-19 2021-10-05 주식회사 우드메탈 원적외선 및 음이온 방출 기능을 갖는 가구용 엣지마감재

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4141005A (en) * 1976-11-11 1979-02-20 International Business Machines Corporation Data format converting apparatus for use in a digital data processor
JPS61294550A (ja) 1985-06-21 1986-12-25 Nec Corp 電子計算機におけるデ−タ読取書込制御方式
US5522082A (en) 1986-01-23 1996-05-28 Texas Instruments Incorporated Graphics display processor, a graphics display system and a method of processing graphics data with control signals connected to a central processing unit and graphics circuits
US5268995A (en) * 1990-11-21 1993-12-07 Motorola, Inc. Method for executing graphics Z-compare and pixel merge instructions in a data processor
US6116768A (en) 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5613121A (en) 1994-10-19 1997-03-18 International Business Machines Corporation Method and system of generating combined storage references
GB9509988D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
US5673321A (en) * 1995-06-29 1997-09-30 Hewlett-Packard Company Efficient selection and mixing of multiple sub-word items packed into two or more computer words
US7085795B2 (en) 2001-10-29 2006-08-01 Intel Corporation Apparatus and method for efficient filtering and convolution of content data
US5983253A (en) 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
US5936872A (en) 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
JP3735438B2 (ja) * 1997-02-21 2006-01-18 株式会社東芝 Risc計算機
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6820190B1 (en) 2000-02-02 2004-11-16 Hewlett-Packard Development Company, L.P. Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
US7155601B2 (en) 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US7631025B2 (en) 2001-10-29 2009-12-08 Intel Corporation Method and apparatus for rearranging data between multiple registers
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
JP4112946B2 (ja) * 2002-10-31 2008-07-02 株式会社東芝 非鉛系接合材、ソルダーペースト及び接合方法
JP2009016397A (ja) 2007-06-29 2009-01-22 Toshiba Corp プリント配線板
JP5229819B2 (ja) 2009-04-01 2013-07-03 株式会社レヨーン工業 除塵装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6995059B2 (ja) 2017-03-14 2022-01-14 株式会社トクヤマ フライアッシュの使用方法

Also Published As

Publication number Publication date
US20030120903A1 (en) 2003-06-26
CN101520723B (zh) 2011-01-12
KR20040068333A (ko) 2004-07-30
CN100492281C (zh) 2009-05-27
CN101520723A (zh) 2009-09-02
RU2004122101A (ru) 2005-03-27
US8650382B2 (en) 2014-02-11
TW594569B (en) 2004-06-21
CN1605062A (zh) 2005-04-06
WO2003054692A1 (en) 2003-07-03
JP2010152919A (ja) 2010-07-08
US8539202B2 (en) 2013-09-17
US20110047361A1 (en) 2011-02-24
DE10297581T5 (de) 2004-11-11
JP2006502464A (ja) 2006-01-19
KR100806408B1 (ko) 2008-02-21
RU2292581C2 (ru) 2007-01-27
US20130013896A1 (en) 2013-01-10
AU2002357263A1 (en) 2003-07-09
US20110258418A1 (en) 2011-10-20
US20130219153A1 (en) 2013-08-22
US9043583B2 (en) 2015-05-26
US20120317401A1 (en) 2012-12-13
US7853778B2 (en) 2010-12-14
US8200941B2 (en) 2012-06-12
JP2014089730A (ja) 2014-05-15
US8032735B2 (en) 2011-10-04
TW200304091A (en) 2003-09-16

Similar Documents

Publication Publication Date Title
JP5960115B2 (ja) プロセッサに関するロード/移動及び複製命令
JP6456867B2 (ja) 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法
CN107077321B (zh) 用于执行融合的单个周期递增-比较-跳转的指令和逻辑
US6721866B2 (en) Unaligned memory operands
KR102478874B1 (ko) 비순차적 하드웨어 소프트웨어 공동 설계된 프로세서에서 스택 동기화 명령어를 갖는 술어 값의 스택을 구현하고 유지하기 위한 방법 및 장치
CN110580175A (zh) 可变格式、可变稀疏矩阵乘法指令
US20090182988A1 (en) Compare Relative Long Facility and Instructions Therefore
TW201823973A (zh) 用於融合乘加運算的系統、裝置及方法
CN114662048A (zh) 用于共轭转置和乘法的装置和方法
EP3575955B1 (en) Indirect memory fetcher
US20150186136A1 (en) Systems, apparatuses, and methods for expand and compress
US11934830B2 (en) Method and apparatus for data-ready memory operations
CN113849221A (zh) 用于操作系统透明指令状态管理的装置、方法和系统
CN112130970A (zh) 用于双存储器原子操作的硬件支持
US9207942B2 (en) Systems, apparatuses,and methods for zeroing of bits in a data element
WO2017172297A1 (en) Apparatus and method for re-execution of faulting operations
CN116339826A (zh) 用于四字特定部分的向量紧缩串接和移位的装置和方法
CN114662049A (zh) 用于复数矩阵转置和乘法的装置和方法
CN115525252A (zh) 四字16×16乘法和累加的双求和
CN113050994A (zh) 用于512位操作的系统、装置和方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141111

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150203

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150303

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150511

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160502

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160516

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160607

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160622

R150 Certificate of patent or registration of utility model

Ref document number: 5960115

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees