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

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

Info

Publication number
JP2006502464A
JP2006502464A JP2003555340A JP2003555340A JP2006502464A JP 2006502464 A JP2006502464 A JP 2006502464A JP 2003555340 A JP2003555340 A JP 2003555340A JP 2003555340 A JP2003555340 A JP 2003555340A JP 2006502464 A JP2006502464 A JP 2006502464A
Authority
JP
Japan
Prior art keywords
source
bits
bit
register
instruction
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.)
Pending
Application number
JP2003555340A
Other languages
English (en)
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 JP2006502464A publication Critical patent/JP2006502464A/ja
Pending 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
    • 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
    • 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/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 Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本方法はプロセッサにおいて、ソースのビットの第1部分をデスティネーション・レジスタの第1部分にロード/移動して、デスティネーション・レジスタの後続する部分にビットの第1部分を複製することを含む。

Description

本発明は、プロセッサに関するロード/移動及び複製命令に関するものである。
システム・アーキテクチャは、プロセッサの動作のモードと、オペレーティング・システムをサポートするよう設けられて更にシステム指向レジスタ並びにデータ構造及びシステム指向命令を有する仕組み、とを表すものである。システム・アーキテクチャは更に、実アドレスと保護モードとの間を切り替えるのに必要な仕組みを設けるものである。
システム・アーキテクチャに対する単一命令複数データ(SIMD)技術は64ビットのレジスタに入ったパック整数データの並列計算を備える。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ビットのデスティネーション・レジスタに複製される。
プロセッサの構成図である。 実行環境の構成図である。 バイト・オーダ基本データ・タイプの図である。 浮動小数点フォーマットの図である。 種々のSIMD拡張命令、データ・タイプ及び該データ・タイプをレジスタにパックする方法をまとめた表である。

Claims (58)

  1. コンピュータ命令であって:
    プロセッサに、ソースのビットの第1部分をデスティネーション・レジスタの第1部分にロードさせて、前記ビットの第1部分を該デスティネーション・レジスタの後続する部分に複製させる、移動及び複製命令;
    を有することを特徴とするコンピュータ命令。
  2. 請求項1記載の命令であって、前記ソースの前記第1部分がメモリ位置における、倍精度浮動小数点データ・タイプを表す、64ビットであることを特徴とする命令。
  3. 請求項1記載の命令であって、前記ソースの前記第1部分がソース・レジスタにおける、倍精度浮動小数点データ・タイプを表す、64ビットであることを特徴とする命令。
  4. 請求項1記載の命令であって、前記デスティネーション・レジスタの前記第1部分が前記ソースの前記第1部分のビット〔63−0〕によってロードされて、該デスティネーション・レジスタの前記後続する部分が前記ソースの前記第1部分のビット〔63−0〕によってロードされることを特徴とする命令。
  5. 方法であって:
    プロセッサにおいて、ソースのビットの第1部分をデスティネーション・レジスタの第1部分にロードする工程;及び
    前記ビットの第1部分を該デスティネーション・レジスタの後続する部分に複製する工程;
    を有することを特徴とする方法。
  6. 請求項5記載の方法であって、前記ソースの前記第1部分がメモリ位置における、倍精度浮動小数点データ・タイプを表す、64ビットであることを特徴とする方法。
  7. 請求項5記載の方法であって、前記ソースの前記第1部分がソース・レジスタにおける、倍精度浮動小数点データ・タイプを表す、64ビットであることを特徴とする方法。
  8. 請求項5記載の方法であって、前記デスティネーション・レジスタの前記第1部分が前記ソースの前記第1部分のビット〔63−0〕によってロードされて、該デスティネーション・レジスタの前記後続する部分が前記ソースの前記第1部分のビット〔63−0〕によってロードされることを特徴とする方法。
  9. コンピュータ・プログラム・プロダクトであって、該コンピュータ・プログラム・プロダクトはコンピュータ判読可能媒体上に存在するものであり、該コンピュータ判読可能媒体は該コンピュータ判読可能媒体上に命令を記憶させていて、該命令がプロセッサによって実行された場合、該プロセッサに:
    ソースのビットの第1部分をデスティネーション・レジスタの第1部分にロードする工程;及び
    前記ビットの第1部分を該デスティネーション・レジスタの後続する部分に複製する工程;
    を行わせることを特徴とするコンピュータ・プログラム・プロダクト。
  10. 請求項9記載のコンピュータ・プログラム・プロダクトであって、前記ソースの前記第1部分がメモリ位置における、倍精度浮動小数点データ・タイプを表す、64ビットであることを特徴とするコンピュータ・プログラム・プロダクト。
  11. 請求項9記載のコンピュータ・プログラム・プロダクトであって、前記ソースの前記第1部分がソース・レジスタにおける、倍精度浮動小数点データ・タイプを表す、64ビットであることを特徴とするコンピュータ・プログラム・プロダクト。
  12. 請求項9記載のコンピュータ・プログラム・プロダクトであって、前記デスティネーション・レジスタの前記第1部分が前記ソースの前記第1部分のビット〔63−0〕によってロードされて、該デスティネーション・レジスタの前記後続する部分が前記ソースの前記第1部分のビット〔63−0〕によってロードされることを特徴とするコンピュータ・プログラム・プロダクト。
  13. コンピュータ命令であって:
    プロセッサに、ソースの64ビットをロードさせて、デスティネーションの下半分及びデスティネーションの上半分において該64ビットを返させる、倍精度浮動小数点値の1つだけの移動及び複製命令;
    を有することを特徴とするコンピュータ命令。
  14. 請求項13記載の命令であって、更に:
    ソース・オペランド;及び
    デスティネーション・オペランド;
    を有することを特徴とする命令。
  15. 請求項14記載の命令であって、前記ソース・オペランドがメモリ位置であることを特徴とする命令。
  16. 請求項15記載の命令であって、前記メモリ位置が倍精度浮動小数点データ・タイプを表す128ビットの値を有することを特徴とする命令。
  17. 請求項14記載の命令であって、前記ソース・オペランドが128ビットのソース・レジスタであることを特徴とする命令。
  18. 請求項17記載の命令であって、前記ソース・レジスタが倍精度浮動小数点データ・タイプを表す128ビットの値を有することを特徴とする命令。
  19. プロセッサにおいて実行される方法であって:
    ソースからのビットの最初のN分を2Nビット幅デスティネーション・レジスタの下半分及び該2Nビット幅デスティネーション・レジスタの上半分にロードする工程;
    を有することを特徴とする方法。
  20. 請求項19記載の方法であって、前記ソースはメモリ位置であり、Nが64ビットであることを特徴とする方法。
  21. 請求項20記載の方法であって、前記メモリ位置は倍精度浮動小数点データ・タイプを含むことを特徴とする方法。
  22. 請求項19記載の方法であって、前記ソースは128ビット・ソース・レジスタであり、Nが64ビットであることを特徴とする方法。
  23. 請求項22記載の方法であって、前記128ビット・ソース・レジスタは倍精度浮動小数点データ・タイプを含むことを特徴とする方法。
  24. コンピュータ・プログラム・プロダクトであって、該コンピュータ・プログラム・プロダクトはコンピュータ判読可能媒体上に存在するものであり、該コンピュータ判読可能媒体は該コンピュータ判読可能媒体上に命令を記憶させていて、該命令がプロセッサによって実行された場合、該プロセッサに:
    ソースからの64ビットを128ビット・デスティネーション・レジスタの下半分及び該128ビット・デスティネーション・レジスタの上半分にロードする工程;
    を行わせることを特徴とするコンピュータ・プログラム・プロダクト。
  25. 請求項24記載のコンピュータ・プログラム・プロダクトであって、前記ソースは128ビット倍精度浮動小数点データ・タイプを含むメモリ位置であることを特徴とするコンピュータ・プログラム・プロダクト。
  26. 請求項24記載のコンピュータ・プログラム・プロダクトであって、前記ソースは128ビット倍精度浮動小数点データ・タイプを含む128ビット・ソース・レジスタであることを特徴とするコンピュータ・プログラム・プロダクト。
  27. コンピュータ命令であって:
    プロセッサに、ソースのビット〔127−0〕をロードさせ、128ビット・デスティネーション・レジスタのビット〔31−0〕において該ソースのビット〔63−32〕を返させ、該デスティネーション・レジスタのビット〔63−32〕において該ソースのビット〔63−32〕を返させ、該デスティネーション・レジスタのビット〔95−64〕において該ソースのビット〔127−96〕を返させて、該デスティネーション・レジスタのビット〔127−96〕において該ソースのビット〔127−96〕を返させる、単精度浮動小数点上位移動及び複製命令;
    を有することを特徴とするコンピュータ命令。
  28. 請求項27記載の命令であって、更に:
    ソース・オペランド・フィールド;及び
    デスティネーション・オペランド・フィールド;
    を有することを特徴とする命令。
  29. 請求項28記載の命令であって、前記ソース・オペランド・フィールドがメモリ位置であることを特徴とする命令。
  30. 請求項29記載の命令であって、前記メモリ位置がパック単精度浮動小数点データ・タイプを表す128ビットを有することを特徴とする命令。
  31. 請求項28記載の命令であって、前記ソース・オペランド・フィールドが128ビットのソース・レジスタであることを特徴とする命令。
  32. 請求項31記載の命令であって、前記ソース・レジスタがパック単精度浮動小数点データ・タイプを表す128ビットを有することを特徴とする命令。
  33. プロセッサにおいて実行される方法であって:
    ソースのビット〔127−0〕をアクセスする工程;
    該ソースのビット〔63−32〕をデスティネーション・レジスタのビット〔31−0〕及びビット〔63−32〕において返す工程;及び
    該ソースのビット〔127−96〕を該デスティネーション・レジスタのビット〔95−64〕及びビット〔127−96〕において返す工程;
    を有することを特徴とする方法。
  34. 請求項33記載の方法であって、前記ソースがメモリ位置であることを特徴とする方法。
  35. 請求項34記載の方法であって、前記メモリ位置がパック単精度浮動小数点データ・タイプを含むことを特徴とする方法。
  36. 請求項33記載の方法であって、前記ソースが128ビット・ソース・レジスタであることを特徴とする方法。
  37. 請求項36記載の方法であって、前記128ビット・ソース・レジスタがパック単精度浮動小数点データ・タイプを含むことを特徴とする方法。
  38. コンピュータ・プログラム・プロダクトであって、該コンピュータ・プログラム・プロダクトはコンピュータ判読可能媒体上に存在するものであり、該コンピュータ判読可能媒体は該コンピュータ判読可能媒体上に命令を記憶させていて、該命令がプロセッサによって実行された場合、該プロセッサに:
    ソースのビット〔127−0〕をロードする工程;
    128ビット・デスティネーション・レジスタのビット〔31−0〕において、該ソースのビット〔63−32〕を返す工程;
    該デスティネーション・レジスタのビット〔63−32〕において該ソースのビット〔63−32〕を返す工程;
    該デスティネーション・レジスタのビット〔95−64〕において該ソースのビット〔127−96〕を返す工程;及び
    該デスティネーション・レジスタのビット〔127−96〕において該ソースのビット〔127−96〕を返す工程;
    を行わせることを特徴とするコンピュータ・プログラム・プロダクト。
  39. 請求項38記載のコンピュータ・プログラム・プロダクトであって、前記ソースはメモリ位置であることを特徴とするコンピュータ・プログラム・プロダクト。
  40. 請求項39記載のコンピュータ・プログラム・プロダクトであって、前記メモリ位置はパック単精度浮動小数点データ・タイプを含むことを特徴とするコンピュータ・プログラム・プロダクト。
  41. 請求項38記載のコンピュータ・プログラム・プロダクトであって、前記ソースは128ビット・ソース・レジスタであることを特徴とするコンピュータ・プログラム・プロダクト。
  42. 請求項41記載のコンピュータ・プログラム・プロダクトであって、前記128ビット・ソース・レジスタはパック単精度浮動小数点データ・タイプを含むことを特徴とするコンピュータ・プログラム・プロダクト。
  43. コンピュータ命令であって:
    プロセッサに、ソースのビット〔127−0〕をロードさせ、128ビット・デスティネーション・レジスタのビット〔31−0〕において該ソースのビット〔31−0〕を返させ、該デスティネーション・レジスタのビット〔63−32〕において該ソースのビット〔31−0〕を返させ、該デスティネーション・レジスタのビット〔95−64〕において該ソースのビット〔95−64〕を返させて、該デスティネーション・レジスタのビット〔127−96〕において該ソースのビット〔95−64〕を返させる、パック単精度浮動小数点下位移動及び複製命令;
    を有することを特徴とするコンピュータ命令。
  44. 請求項43記載の命令であって、更に:
    ソース・アドレス・フィールド;及び
    デスティネーション・レジスタ;
    を有することを特徴とする命令。
  45. 請求項44記載の命令であって、前記ソースがメモリ位置であることを特徴とする命令。
  46. 請求項45記載の命令であって、前記メモリ位置がパック単精度浮動小数点データ・タイプを表す128ビットを含むことを特徴とする命令。
  47. 請求項43記載の命令であって、前記ソースが128ビットのソース・レジスタであることを特徴とする命令。
  48. 請求項47記載の命令であって、前記ソース・レジスタがパック単精度浮動小数点データ・タイプを表す128ビットを含むことを特徴とする命令。
  49. 方法であって:
    プロセッサにおいて、ソースのビット〔127−0〕をロードする工程;
    該ソースのビット〔31−0〕を128ビット・デスティネーション・レジスタのビット〔31−0〕において返す工程;
    該ソースのビット〔31−0〕を該デスティネーション・レジスタのビット〔63−32〕において返す工程;
    該ソースのビット〔95−64〕を該デスティネーション・レジスタのビット〔95−64〕において返す工程;及び
    該ソースのビット〔95−64〕を該デスティネーション・レジスタのビット〔127−96〕において返す工程;
    を有することを特徴とする方法。
  50. 請求項49記載の方法であって、前記ソースがメモリ位置であることを特徴とする方法。
  51. 請求項50記載の方法であって、前記メモリ位置がパック単精度浮動小数点データ・タイプを含むことを特徴とする方法。
  52. 請求項51記載の方法であって、前記ソースが128ビット・ソース・レジスタであることを特徴とする方法。
  53. 請求項52記載の方法であって、前記128ビット・ソース・レジスタがパック単精度浮動小数点データ・タイプを含むことを特徴とする方法。
  54. コンピュータ・プログラム・プロダクトであって、該コンピュータ・プログラム・プロダクトはコンピュータ判読可能媒体上に存在するものであり、該コンピュータ判読可能媒体は該コンピュータ判読可能媒体上に命令を記憶させていて、該命令がプロセッサによって実行された場合、該プロセッサに:
    ソースのビット〔127−0〕をロードする工程;
    128ビット・デスティネーション・レジスタのビット〔31−0〕において、該ソースのビット〔31−0〕を返す工程;
    該デスティネーション・レジスタのビット〔63−32〕において該ソースのビット〔31−0〕を返す工程;
    該デスティネーション・レジスタのビット〔95−64〕において該ソースのビット〔95−64〕を返す工程;及び
    該デスティネーション・レジスタのビット〔127−96〕において該ソースのビット〔95−64〕を返す工程;
    を行わせることを特徴とするコンピュータ・プログラム・プロダクト。
  55. 請求項54記載のコンピュータ・プログラム・プロダクトであって、前記ソースはメモリ位置であることを特徴とするコンピュータ・プログラム・プロダクト。
  56. 請求項55記載のコンピュータ・プログラム・プロダクトであって、前記メモリ位置はパック単精度浮動小数点データ・タイプを含むことを特徴とするコンピュータ・プログラム・プロダクト。
  57. 請求項54記載のコンピュータ・プログラム・プロダクトであって、前記ソースは128ビット・ソース・レジスタであることを特徴とするコンピュータ・プログラム・プロダクト。
  58. 請求項57記載のコンピュータ・プログラム・プロダクトであって、前記128ビット・ソース・レジスタはパック単精度浮動小数点データ・タイプを含むことを特徴とするコンピュータ・プログラム・プロダクト。
JP2003555340A 2001-12-20 2002-12-12 プロセッサに関するロード/移動及び複製命令 Pending JP2006502464A (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
PCT/US2002/040166 WO2003054692A1 (en) 2001-12-20 2002-12-12 Load/move and duplicate instructions for a processor

Related Child Applications (1)

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

Publications (1)

Publication Number Publication Date
JP2006502464A true JP2006502464A (ja) 2006-01-19

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 After (2)

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

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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012119009A (ja) * 2006-09-22 2012-06-21 Intel Corp 選択演算を実行する方法および装置
JP2020501270A (ja) * 2016-12-13 2020-01-16 エイアールエム リミテッド パーティション・レプリケート命令
US11977884B2 (en) 2016-12-13 2024-05-07 Arm Limited Replicate elements instruction

Families Citing this family (43)

* 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
AU2003256870A1 (en) * 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
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
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
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
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
US8645714B2 (en) * 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys 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
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
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
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
WO2013095563A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions
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
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
WO2013101119A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Method and apparatus for controlling a mxcsr
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
US20140258667A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Memory Operation Bonding
US10540179B2 (en) 2013-03-07 2020-01-21 MIPS Tech, LLC Apparatus and method for bonding branch instruction with architectural delay slot
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
US9710271B2 (en) 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US9336047B2 (en) 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US9448939B2 (en) 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US9348643B2 (en) 2014-06-30 2016-05-24 International Business Machines Corporation Prefetching of discontiguous storage locations as part of transactional execution
US9600286B2 (en) 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for 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
WO2018168637A1 (ja) 2017-03-14 2018-09-20 株式会社トクヤマ フライアッシュの使用方法
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
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
US5983253A (en) 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012119009A (ja) * 2006-09-22 2012-06-21 Intel Corp 選択演算を実行する方法および装置
JP2020501270A (ja) * 2016-12-13 2020-01-16 エイアールエム リミテッド パーティション・レプリケート命令
JP7053619B2 (ja) 2016-12-13 2022-04-12 アーム・リミテッド パーティション・レプリケート命令
US11947962B2 (en) 2016-12-13 2024-04-02 Arm Limited Replicate partition instruction
US11977884B2 (en) 2016-12-13 2024-05-07 Arm Limited Replicate elements instruction

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5960115B2 (ja) プロセッサに関するロード/移動及び複製命令
JP6456867B2 (ja) 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法
US6721866B2 (en) Unaligned memory operands
CN107077321B (zh) 用于执行融合的单个周期递增-比较-跳转的指令和逻辑
CN109062608B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
KR102478874B1 (ko) 비순차적 하드웨어 소프트웨어 공동 설계된 프로세서에서 스택 동기화 명령어를 갖는 술어 값의 스택을 구현하고 유지하기 위한 방법 및 장치
CN106030514B (zh) 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法
WO2013095608A1 (en) Apparatus and method for vectorization with speculation support
CN112148251A (zh) 跳过无意义的矩阵运算的系统和方法
CN114662048A (zh) 用于共轭转置和乘法的装置和方法
US20150186136A1 (en) Systems, apparatuses, and methods for expand and compress
US20140189294A1 (en) Systems, apparatuses, and methods for determining data element equality or sequentiality
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
US20230205685A1 (en) Read all zeros or random data upon a first read from volatile memory
CN116339826A (zh) 用于四字特定部分的向量紧缩串接和移位的装置和方法
CN114662049A (zh) 用于复数矩阵转置和乘法的装置和方法
CN113050994A (zh) 用于512位操作的系统、装置和方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051129

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060307

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060529

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060627

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061025

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20061128

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070112

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090224

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090227

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090325

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090331

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090424

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090430

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091124

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091127

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091224

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100122

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100225