JP5646390B2 - 複数の入力命令をベクトル化する方法及び装置 - Google Patents

複数の入力命令をベクトル化する方法及び装置 Download PDF

Info

Publication number
JP5646390B2
JP5646390B2 JP2011110994A JP2011110994A JP5646390B2 JP 5646390 B2 JP5646390 B2 JP 5646390B2 JP 2011110994 A JP2011110994 A JP 2011110994A JP 2011110994 A JP2011110994 A JP 2011110994A JP 5646390 B2 JP5646390 B2 JP 5646390B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
operation code
trace
converted
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
JP2011110994A
Other languages
English (en)
Other versions
JP2011165216A (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 JP2011165216A publication Critical patent/JP2011165216A/ja
Application granted granted Critical
Publication of JP5646390B2 publication Critical patent/JP5646390B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

本発明は、複数の入力命令をベクトル化する方法及び装置に関する。
コンピュータシステムの中央処理ユニット(CPU)は、命令をパラレルに処理する複数の機能実行ユニットを含むかもしれない。これらの命令は、SIMD(Single Instruction Multiple Data)命令を含むかもしれない。SIMD命令は、複数のデータに対する共通の処理をパラレルに実行することが可能である。従って、SIMD命令は、CPUが全体の実行時間を低減するため、複数の繰り返しの計算を同時に実行することを可能にするかもしれない。SIMD処理の使用は、音声及び画像処理などのマルチメディアアプリケーションにおいて特に有効であるかもしれない。
本発明の課題は、複数の入力命令をベクトル化する効果的な方法及び装置を提供することである。
上記課題を解決するため、本発明の一特徴は、トレースの共通のオペレーションコードを有する2以上の命令を検索し、前記2以上の命令が、トレース依存性ツリーにおいて同一のレベルを有する場合、前記2以上の命令を1つのSIMD(Single Instruction Multiple Data)命令にマージする最適化ユニットを有する装置であって、前記トレース依存性ツリーは、各レベルが同一の高さの命令を有する複数のレベルにおける命令を有し、前記トレースの命令は、メモリに格納されることを特徴とする装置に関する。
本発明によると、複数の入力命令をベクトル化する効果的な方法及び装置を提供することができる。
図1は、本発明の一実施例によるコンピュータシステムのブロック図である。 図2は、本発明の一実施例による最適化ユニットのブロック図である。 図3は、本発明の一実施例による命令をSIMD命令に変換する方法を説明するのに有用な一例となる依存性ツリーの図である。 図4は、本発明の一実施例によるベクトル化処理の説明に有用なテーブルの図である。 図5は、本発明の他の実施例によるベクトル化処理の説明に有用なテーブルの図である。
以下の詳細な説明では、本発明の完全なる理解を提供するため、多数の具体的詳細が提供される。しかしながら、本発明がこれらの具体的詳細なく実現可能であるということは、当業者には理解されるであろう。他の例では、本発明を不明りょうにしないように、周知の方法、処理、構成要素及び回路は、詳細には説明されない。
以下の詳細な説明の一部は、コンピュータメモリ内のデータビット又はバイナリデジタル信号に対する記号表現及びアルゴリズムに関して提供される。これらのアルゴリズム的な記載及び表現は、データ処理分野の当業者によって他の当業者に自らの研究の本質を伝えるのに利用される技術であるかもしれない。
以下の説明から明らかなように、具体的に説明されない場合、本明細書の全体を通じて、「処理」、「計算」、「決定」などの用語の使用は、計算システムのレジスタ及び/又はメモリ内の電子量などの物理量として表されるデータを、計算システムのメモリ、レジスタ又は他のこのような情報ストレージ、送信若しくは表示装置内の物理量として同様に表される他のデータに操作及び/又は変換するコンピュータ、計算システム又は同様の電子計算装置のアクション及び/又は処理を表すことが理解される。さらに、「複数の」という用語は、2以上の構成要素、装置、要素、パラメータなどを説明するのに本明細書を通じて使用されるかもしれない。例えば、「複数の命令」とは、2以上の命令を表す。
「SIMD化」又は「ベクトル化」という用語は、実行のためスケジューリングされるものであって、レジスタや機能ユニットなどの同様の実行リソースを要求する処理を単一のSIMD命令にマージする処理を表す等価な用語であるということが理解されるべきである。本発明の範囲はこれに限定されるものではないが、説明の簡単化のため、「ベクトル化」という用語は、実行のためにスケジューリングされ、同様の実行リソースを必要とする処理をマージする処理を説明するのに使用される。
本発明は、様々な用途に利用可能であるということが理解されるべきである。本発明はこれに限定されるものではないが、ここで開示される回路及び技術は、コンピュータシステム、プロセッサ、CPUなどの多数の装置において利用可能である。本発明の範囲内に含まれるべきプロセッサは、単なる一例ではあるが、RISC(Reduced Instruction Set Computer)、パイプラインを有するプロセッサ、CISC(Complex Instruction Set Computer)などを含む。
本発明の一部の実施例は、例えば、マシーンにより実行される場合(例えば、プロセッサ及び/又は他の適切なマシーンによって)、当該マシーンに本発明の実施例による方法及び/又は処理を実行させる命令又は命令セットを格納可能なマシーン可読媒体又は物品を利用して実現されるかもしれない。このようなマシーンは、例えば、任意の適切な処理プラットフォーム、計算プラットフォーム、計算装置、処理装置、計算システム、処理システム、コンピュータ、プロセッサなどを含むものであってもよく、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを用いて実現されるようにしてもよい。マシーン可読媒体又は物品は、例えば、任意の適切なタイプのメモリユニット、記憶装置、メモリ物品、記憶媒体、ストレージ装置、ストレージ物品、ストレージ媒体及び/又はユニットを含むものであってもよく、例えば、メモリ、着脱可能又は着脱不可な媒体、消去可能又は消去不可な媒体、書き込み可能又は書き換え可能な媒体、デジタル又はアナログ媒体、ハードディスク、フロッピー(登録商標)ディスク、CD−ROM(Compact Disk Read Only Memory)、CD−R(Compact Disk Recordable)、CD−RW(Compact Disk Rewritable)、光ディスク、磁気媒体、各種タイプのDVD(Digital Versatile Disk)、テープ、カセットなどを含むものであってもよい。命令は、ソースコード、コンパイルされたコード、インタープリットされたコード、実行可能コード、静的コード、動的コードなどの任意の適切なタイプのコードを含むものであってもよく、例えば、C、C++、Java(登録商標)、BASIC、Pascal、Fortran、Cobol、アセンブリ言語、機械コードなどの任意の適切な高レベル、低レベル、オブジェクト指向、ビジュアル、コンパイル及び/又はインタープリットプログラミング言語を含むものであってもよい。
図1を参照するに、本発明の一実施例によるコンピュータシステム100のブロック図が示される。本発明の範囲はこれに限定されるものではないが、コンピュータシステム100は、パーソナルコンピュータ(PC)、携帯情報端末(PDA)、インターネット装置、携帯電話又は他の任意の計算装置であってもよい。一例では、コンピュータシステム100は、電源120によって駆動されるメイン処理ユニット110を有するかもしれない。本発明の実施例では、メイン処理ユニット110は、システムインターコネクト135により記憶装置140及び1以上のインタフェース回路150に電気的に接続されるマルチ処理ユニット130を有するものであってもよい。例えば、システムインターコネクト135は、所望される場合には、アドレス/データバスであってもよい。バス以外のインターコネクトがマルチ処理ユニット130を記憶装置140に接続するのに利用可能であるということが理解されるべきである。例えば、1以上の専用線及び/又はクロスバーが、マルチ処理ユニット130を記憶装置140に接続するのに利用可能である。
本発明の一部の実施例によると、マルチ処理ユニット130は、Intel(登録商標)Pentium(登録商標)TM系のマイクロプロセッサ、Intel(登録商標)ItaniumTM系のマイクロプロセッサ、及び/又はIntel(登録商標)系のXScaleTM系のプロセッサなど任意のタイプの処理ユニットを有するものであってもよい。さらに、マルチ処理ユニット130は、SRAM(Static Random Access Memory)などの任意のタイプのキャッシュメモリを有するものであってもよい。記憶装置140は、DRAM(Dynamic Random Access Memory)、不揮発性メモリなどを有するものであってもよい。一例として、記憶装置140は、所望される場合には、マルチ処理ユニット130により実行可能なソフトウェアプログラムを格納するものであってもよい。
本発明の範囲はこれに限定されるものではないが、インタフェース回路110は、イーサネット(登録商標)インタフェース、USB(Universal Serial Bus)インタフェースなどを有するものであってもよい。本発明の実施例では、1以上の入力装置160が、データ及びコマンドをメイン処理ユニット110に入力するため、インタフェース回路150に接続可能である。例えば、入力装置160は、キーボード、マウス、タッチ画面、トラックパッド、トラックボール、イソポイント(isopoint)、音声認識システムなどを含むものであってもよい。
本発明の範囲はこれに限定されるものではないが、出力装置170は、1以上のインタフェース回路160を介しメイン処理ユニット110に動作可能に接続可能であり、所望される場合には、1以上のディスプレイ、プリンタ、スピーカー及び/又は他の出力装置を含むものであってもよい。例えば、出力装置の1つはディスプレイであるかもしれない。ディスプレイは、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)又は他の任意のタイプのディスプレイであってもよい。
本発明の範囲はこれに限定されるものではないが、コンピュータシステム100は、1以上のストレージ装置180を有するものであってもよい。例えば、コンピュータシステム100は、所望される場合、1以上のハードドライブ、1以上のCDドライブ、1以上のDVDドライブ及び/又は他のコンピュータメディア入出力(I/O)装置を含むものであってもよい。
本発明の範囲はこれに限定されるものではないが、コンピュータシステム100は、ネットワーク190との接続を介し他の装置とデータを交換することが可能である。ネットワーク接続は、イーサネット(登録商標)接続、デジタル加入者線(DSL)、電話線、同軸ケーブルなどの任意のタイプのネットワーク接続であってもよい。ネットワーク190は、インターネット、電話ネットワーク、ケーブルネットワーク、無線ネットワークなどの任意のタイプのネットワークであってもよい。
本発明の範囲は本実施例に限定されるものではないが、本発明の当該実施例では、マルチ処理ユニット130は、最適化ユニット200を含むものであってもよい。本発明の実施例によると、最適化ユニット200は、トレースの2以上の候補命令を検索する処理を実行するものであってもよい。さらに、最適化ユニット200は、トレース依存性ツリー(trace dependecy tree)の深さに従って2以上の候補命令をSIMD命令にマージするようにしてもよい。本発明の一部の実施例では、候補命令は、SIMD命令に含まれる同様の及び/又は同一のタイプのオペレーションコードを含むものであってもよい。例えば、最適化ユニット200は、候補命令の依存性の深さに基づき、同様の処理を実行する候補命令を検索するようにしてもよい。本発明の実施例によると、最適化ユニット200は、所望される場合、候補命令の少なくとも一部をSIMD命令にマージするようにしてもよい。本発明の範囲はこれに限定されるものではないが、最適化ユニット200は、ソフトウェア、ハードウェア又はソフトウェアとハードウェアの任意の適切な組み合わせにより実現可能であるということが理解されるべきである。
図2を参照するに、本発明の一実施例による図1の最適化ユニット200のブロック図が示される。本発明の範囲はこれに限定されるものではないが、最適化ユニット200は、入力トレースバッファ210と、シーケンサ220と、ベクトル化ユニット230と、出力トレースバッファ240とを有するものであってもよい。本発明の範囲はこれに限定されるものではないが、本発明の一部の実施例では、ベクトル化ユニット230は、第1ステージ232と、第2ステージ234と、キャッシュメモリなどのメモリ236とを有するものであってもよい。
本発明の範囲はこれに限定されるものではないが、入力トレースバッファ210は、オペレーションコード(オペ)コードを有する命令トレースを受け付けるようにしてもよい。本発明の一部の実施例では、シーケンサ220は、入力トレースバッファ210から命令を受け取り、オペレーションコード及び/又は命令トレース(シーケンスなど)をベクトル化ユニット230に提供するかもしれない。例えば、命令は、LOAD、STOREなどのメモリ処理と、ADD、SUBTRACT、MULT、SHIFT、ANDなどの算術処理の少なくとも2つのタイプの処理を有するものであるかもしれない。さらに、命令は、レジスタ、定数などの入力値及び出力値を含むものであってもよい。
本発明の実施例によると、ベクトル化ユニット230は、シーケンサ220からトレースを受け取り、トレース依存性に従って候補命令を検索するようにしてもよい。本発明の一部の実施例では、第1ステージ232は、シーケンサ220から受け付けたオペコード命令を処理する。例えば、トレースの命令及び/又はオペコードは、SSA(Single Static Assignment)形式に変換されるかもしれない。SSA形式では、レジスタはトレースに1回のみ書き込み可能であり、残りの処理は、SSA条件を満足するため、「バーチャル」レジスタ名を導入するかもしれない。従来のISA(Instruction Set Architecture)により記述されるプログラムコードなどのプログラムコードは、本発明の範囲がこれに限定されるものではないが、同一のレジスタと同一の名前を有する2つのソースレジスタを提供するかもしれない。
本発明の範囲はこれに限定されるものではないが、第1ステージ232は、命令を依存性ツリーに配置することによって、ベクトル化のための候補を検索するようにしてもよい。
図3を参照するに、本発明の一実施例によるSIMD命令を生成する方法を説明するのに有用な一例となる依存性ツリー300が示される。本発明の範囲はこれに限定されるものではないが、依存性ツリー300は、異なる高さの命令を含むものであってもよい。本発明の範囲はこれに限定されるものではないが、依存性ツリー300のレベルは、同一の高さの命令を含むものであってもよい。第1レベル310は命令312及び314を、第2レベル320は命令322を、第3レベル330は命令332及び334を、第4レベル340は命令342を含むものであってもよい。さらに、依存性ツリー300の深さは、依存性ツリー300の最初の高さ310から最後の高さ340までの距離(例えば、当該距離は、レベル間の矢印によって示されるかもしれない)に従って計算されてもよい。
図2を参照するに、本発明の範囲はこれに限定されるものではないが、第1ステージ232は、ベクトル化のための候補命令をメモリ236に格納する。本発明の実施例によると、第2ステージ234は、同一又は同様のレベルを有する同様のオペコードをメモリ236から検索し、SIMD命令を生成するようにしてもよい。さらに、第2ステージ232は、元のトレース命令をSIMD命令に置換してもよく、SIMD命令を出力トレースバッファ240に格納するようにしてもよい。
本発明の範囲はこれに限定されるものではないが、最適化ユニット200の第1ステージ232と第2ステージの処理が、一例となるC言語を模した擬似コードアルゴリズムにより記述可能である。
本発明の範囲はこれに限定されるものではないが、C言語を模した擬似コードアルゴリズムの第1部分は、定数、変数構造などを定義するものである。
例えば、トレースの最大命令数は、
Figure 0005646390
として定義される。
命令の最大ソース数は、
Figure 0005646390
として定義される。
命令の最大デスティネーション数は、
Figure 0005646390
として定義される。
トレース範囲及び内部バッファサイズは、
Figure 0005646390
として定義される。
C言語を模した擬似コードアルゴリズムによると、命令構造は、当該命令がベクトル化に適しているか示すブール変数、デスティネーションレジスタ、オペコード、ソースレジスタを有するかもしれない。この命令構造は、
Figure 0005646390
として定義される。
C言語を模した擬似コードアルゴリズムによると、トレースは、MAX_TRACE_SIZEのエントリのベクトルによって表される高々MAX_TRACE_SIZEの命令のシーケンスとして定義される。さらに、ツー・デミニュション(two diminutions)(2D))トレース依存ビットマップが、トレースの命令の有効性を示すのに利用可能である。トレースの実際の命令数はINITIAL_TRACE_SIZEであるかもしれない場合、最初のINITIAL_TRACE_SIZEのエントリのみが有効であるかもしれない。
Figure 0005646390
C言語を模した擬似コードアルゴリズムによると、メモリ236に格納されるSIMDマトリックスは、オペレーションコードを有し、M個のオペコード位置のN本のラインを保持するかもしれない(例えば、合計でNlog(MAX_TRACE_SIZE)ビットなど)。
Figure 0005646390
本発明の範囲はこれに限定されるものではないが、本実施例のアルゴリズムでは、最適化ユニット230の第1ステージ232は、昇順にトレースの命令を繰り返すことによってトレースの候補命令を検索する。第1ステージ232は、リネーミング処理中に構成されるトレース[i]のすべてのプレデセッサ(predecessor)を比較する。さらに、第1ステージ232は、トレース[i]の依存性の高さ(レベルなど)と、それの可能性のある最先のスケジューリング位置を計算することによって、依存性ツリー(依存性ツリー300など)における命令の高さ(レベルなど)をタグ付けするようにしてもよい。
Figure 0005646390
本発明の範囲はこれに限定されるものではないが、本例のC言語を模した擬似コードアルゴリズムでは、第2ステージ234は、ベクトル化に適した命令(マトリックスSIMDなど)をメモリ236から検索する。例えば、適切な命令は、同じ依存性ツリーの高さ(レベルなど)におけるより以前の命令トレース[j]であるかもしれない。さらに、第2ステージ236は、SIMD命令を生成し、以下に示すように、元の命令をSIMD命令と置換するかもしれない。
Figure 0005646390
本発明の一部の実施例によると、最適化ユニット200は、メモリにアクセスする2つの命令が、連続するメモリアドレスにアクセスする場合、単一のSIMD命令に合成されるというルールに従って、SIMD命令を生成するようにしてもよい。すなわち、これら2つの命令によってアクセスされるデータが(少なくともバーチャルメモリ空間において)隣接することは、それらのメモリアドレスと対応するデータ長から計算することが可能である。例えば、以下の命令を含むトレースでは、すなわち、
1.ESP+4から4バイトをLOADする。
2.ESP+12から4バイトをLOADする。
3.ESP+8から4バイトをLOADする。
では、命令は、所望される場合には、単一のSIMD命令である「ESP+4から12バイトをLOADする」に合成されるかもしれない。
図4を参照するに、テーブル400が示される。本発明の範囲はこれに限定されるものではないが、テーブル400は、依存性ツリー(依存性ツリー300など)における当該命令のレベルを示すレベルカラムと、入力トレースバッファ210及びシーケンサ220によって提供される元の命令を示す元のトレースカラムと、出力トレースバッファ240における命令を示すベクトル化後のトレースとを含む。テーブル400の行は、命令のレベルと、元の命令とベクトル化後の命令とを示すかもしれない。
本発明の範囲はこれに限定されるものではないが、最適化ユニット200は、トレース依存性グラフの深さ(トレース命令の高さなど)をタグ付けするものであってもよい。さらに例えば、テーブル400によると、最適化ユニット200は、ベクトル化のための候補と同一のレベル(レベル2など)にある命令「EAX←LOAD(ESP,4)」と「EBX←LOAD(ESP,8)を特定し、所望される場合には、これらの命令をSIMD命令「EAX,EBX←SIMD_LOAD(ESP,4)」に合成するようにしてもよい。本発明の範囲はこれに限定されるものではないが、最適化ユニット200は、共通の処理(LOADなど)によるものであって、トレース依存性グラフの同じ深さ(高さなど)にある2つの命令が、それらの一定でないすべてのソース(レジスタなど)が同様のものである場合、及び/又は一定又は直接的なソースが異なる場合、単一のSIMD命令(SIMD_LOADなど)に合成されるというルールに従うことによって、SIMD命令を生成するようにしてもよい。
図5を参照するに、本発明の他の実施例によるテーブル500が示される。本発明の範囲はこれに限定されるものではないが、テーブル500は、依存性ツリー(依存性ツリー300など)における元の命令のレベルを示すレベルカラムと、入力トレースバッファ210及びシーケンサ220によって提供される元の命令を示す元のトレースカラムと、SSAなどの基本的変換後の命令のレベルを示すレベルカラムと、変換後の命令を示すカラムと、出力トレースバッファ240におけるベクトル化後のトレースの命令を示すカラムとを有するものであってもよい。テーブル500の行は、命令のレベルと、基本的変換後の命令の元の命令レベルと、基本的変換後の命令と、ベクトル化後の命令とを示すものであってもよい。
本発明の範囲はこれに限定されるものではないが、一例となるテーブル500によると、最適化ユニット200は、トレースにおける元の命令の高さをタグ付けする。最適化ユニット200は、トレースの命令をSSA形式に変換するかもしれない。最適化ユニット200は、トレースがSSA形式に変換されることを利用することによって、トレースの命令を変換してもよい。最適化ユニット200は、
例えば、
Figure 0005646390
などのベクトル化のための候補命令と同一レベルの変換された命令をタグ付けし、それらをSIMD命令
Figure 0005646390
にそれぞれ合成するようにしてもよい。
本発明の特徴がここで図示及び説明されたが、当業者には、多数の改良、置換、変更及び均等が想起するであろう。従って、添付した請求項が、本発明の真の趣旨に属するこのようなすべての改良及び変更をカバーするものであるということは理解されるべきである。
100 コンピュータシステム
110 メイン処理ユニット
120 電源
130 マルチ処理ユニット
140 記憶装置

Claims (8)

  1. 依存性ツリーにおいて第1レベルを有し、連続するメモリアドレスにアクセスする共通のオペレーションコードを有する2以上の命令を命令のトレースから検索し、
    前記2以上の命令のそれぞれをSSA(Single Static Assignment)形式に変換された命令に変換し、
    前記2以上の変換された命令をSIMD(Single Instruction Multiple Data)命令にマージする最適化ユニットを有する装置。
  2. 請求項1記載の装置であって、
    前記共通のオペレーションコードは、メモリオペレーションコード又は算術オペレーションコードであることを特徴とする装置。
  3. 連続するメモリアドレスにアクセスする共通のオペレーションコードを有し、複数のレベルを有する依存性ツリーにおいて第1レベルを有する2以上の命令を命令ツリーから検索するステップと、
    前記2以上の命令を2以上のSSA(Single Static Assignment)形式に変換された命令に変換するステップと
    前記2以上の変換された命令をSIMD(Single Instruction Multiple Data)命令にマージするステップと、
    を有する方法。
  4. 請求項記載の方法であって、
    前記共通のオペレーションコードは、メモリオペレーションコード又は算術オペレーションコードであることを特徴とする方法。
  5. バスと、
    バスに接続される記憶装置と、
    連続するメモリアドレスにアクセスする共通のオペレーションコードを有し、依存性ツリーにおいて第1レベルを有する2以上の命令を命令のトレースから検索し、前記2以上の命令をSSA(Single Static Assignment)形式に変換された命令に変換し、前記2以上の変換された命令をSIMD(Single Instruction Multiple Data)命令にマージするプロセッサと、
    から構成されるシステム。
  6. 請求項記載のシステムであって、
    前記共通のオペレーションコードは、メモリオペレーションコード又は算術オペレーションコードであることを特徴とするシステム。
  7. 連続するメモリアドレスにアクセスする共通のオペレーションコードを有し、依存性ツリーにおいて第1レベルを有する2以上の命令を命令のトレースから検索するステップと、
    前記2以上の命令をSSA(Single Static Assignment)形式に変換された命令に変換するステップと、
    前記2以上の変換された命令をSIMD(Single Instruction Multiple Data)命令にマージするステップと、
    をコンピュータに実行させるプログラム。
  8. 請求項記載のプログラムであって、
    前記共通のオペレーションコードは、メモリ処理オペレーションコード又は算術オペレーションコードであるプログラム。
JP2011110994A 2004-06-24 2011-05-18 複数の入力命令をベクトル化する方法及び装置 Expired - Fee Related JP5646390B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/874,744 2004-06-24
US10/874,744 US7802076B2 (en) 2004-06-24 2004-06-24 Method and apparatus to vectorize multiple input instructions

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007518079A Division JP2008503836A (ja) 2004-06-24 2005-05-25 複数の入力命令をベクトル化する方法及び装置

Publications (2)

Publication Number Publication Date
JP2011165216A JP2011165216A (ja) 2011-08-25
JP5646390B2 true JP5646390B2 (ja) 2014-12-24

Family

ID=35033618

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007518079A Pending JP2008503836A (ja) 2004-06-24 2005-05-25 複数の入力命令をベクトル化する方法及び装置
JP2011110994A Expired - Fee Related JP5646390B2 (ja) 2004-06-24 2011-05-18 複数の入力命令をベクトル化する方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2007518079A Pending JP2008503836A (ja) 2004-06-24 2005-05-25 複数の入力命令をベクトル化する方法及び装置

Country Status (6)

Country Link
US (1) US7802076B2 (ja)
JP (2) JP2008503836A (ja)
CN (1) CN1977241B (ja)
DE (2) DE112005003852B4 (ja)
GB (1) GB2429554B (ja)
WO (1) WO2006007193A1 (ja)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386842B2 (en) * 2004-06-07 2008-06-10 International Business Machines Corporation Efficient data reorganization to satisfy data alignment constraints
US7475392B2 (en) * 2004-06-07 2009-01-06 International Business Machines Corporation SIMD code generation for loops with mixed data lengths
US7367026B2 (en) * 2004-06-07 2008-04-29 International Business Machines Corporation Framework for integrated intra- and inter-loop aggregation of contiguous memory accesses for SIMD vectorization
US7395531B2 (en) 2004-06-07 2008-07-01 International Business Machines Corporation Framework for efficient code generation using loop peeling for SIMD loop code with multiple misaligned statements
US8549501B2 (en) * 2004-06-07 2013-10-01 International Business Machines Corporation Framework for generating mixed-mode operations in loop-level simdization
US7478377B2 (en) 2004-06-07 2009-01-13 International Business Machines Corporation SIMD code generation in the presence of optimized misaligned data reorganization
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7814298B1 (en) 2005-09-28 2010-10-12 Oracle America, Inc. Promoting and appending traces in an instruction processing circuit based upon a bias value
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US7606975B1 (en) 2005-09-28 2009-10-20 Sun Microsystems, Inc. Trace cache for efficient self-modifying code processing
US7849292B1 (en) 2005-09-28 2010-12-07 Oracle America, Inc. Flag optimization of a trace
US7953933B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit
US7783863B1 (en) 2005-09-28 2010-08-24 Oracle America, Inc. Graceful degradation in a trace-based processor
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US7681019B1 (en) 2005-11-18 2010-03-16 Sun Microsystems, Inc. Executing functions determined via a collection of operations from translated instructions
US7797517B1 (en) * 2005-11-18 2010-09-14 Oracle America, Inc. Trace optimization via fusing operations of a target architecture operation set
US8904151B2 (en) * 2006-05-02 2014-12-02 International Business Machines Corporation Method and apparatus for the dynamic identification and merging of instructions for execution on a wide datapath
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8056067B2 (en) * 2006-09-29 2011-11-08 International Business Machines Corporation Method, computer program product, and device for reducing delays in data processing
US8640112B2 (en) 2011-03-30 2014-01-28 National Instruments Corporation Vectorizing combinations of program operations
JP5887811B2 (ja) * 2011-10-05 2016-03-16 富士通株式会社 コンパイル装置、コンパイル方法、コンパイルプログラム、記録媒体
US20130113809A1 (en) * 2011-11-07 2013-05-09 Nvidia Corporation Technique for inter-procedural memory address space optimization in gpu computing compiler
TWI447646B (zh) 2011-11-18 2014-08-01 Asmedia Technology Inc 資料傳輸裝置及多個指令的整合方法
CN103999045B (zh) 2011-12-15 2017-05-17 英特尔公司 使用混洗表和混合表经由矢量指令优化程序循环的方法
JP5413473B2 (ja) * 2012-03-01 2014-02-12 日本電気株式会社 ベクトル処理装置およびベクトル処理方法
US9513915B2 (en) 2012-03-28 2016-12-06 International Business Machines Corporation Instruction merging optimization
US9292291B2 (en) * 2012-03-28 2016-03-22 International Business Machines Corporation Instruction merging optimization
JP5846006B2 (ja) * 2012-03-29 2016-01-20 富士通株式会社 プログラム、コード生成方法および情報処理装置
JP5846005B2 (ja) 2012-03-29 2016-01-20 富士通株式会社 プログラム、コード生成方法および情報処理装置
JP5966509B2 (ja) * 2012-03-29 2016-08-10 富士通株式会社 プログラム、コード生成方法および情報処理装置
CN104956322B (zh) * 2013-03-05 2019-03-01 英特尔公司 分析向量化的潜在效益
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
CN103440229B (zh) * 2013-08-12 2017-11-10 浪潮电子信息产业股份有限公司 一种基于mic架构处理器的向量化优化方法
GB2520571B (en) * 2013-11-26 2020-12-16 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector processing
JP6237278B2 (ja) 2014-01-31 2017-11-29 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
US11042929B2 (en) 2014-09-09 2021-06-22 Oracle Financial Services Software Limited Generating instruction sets implementing business rules designed to update business objects of financial applications
DE102015013627A1 (de) * 2015-10-20 2017-04-20 Fresenius Medical Care Deutschland Gmbh Blutbehandlungsgerät und Verfahren zur Erstellung einer Verschreibung
US10061580B2 (en) 2016-02-25 2018-08-28 International Business Machines Corporation Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence
KR102593320B1 (ko) 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법
US10606595B2 (en) 2018-03-23 2020-03-31 Arm Limited Data processing systems
CN110858150A (zh) * 2018-08-22 2020-03-03 上海寒武纪信息科技有限公司 一种具有局部实时可重构流水级的运算装置
US20230237097A1 (en) * 2020-06-25 2023-07-27 Nec Corporation Information processing device, information processing method, and recording medium

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4710872A (en) * 1985-08-07 1987-12-01 International Business Machines Corporation Method for vectorizing and executing on an SIMD machine outer loops in the presence of recurrent inner loops
US4792894A (en) 1987-03-17 1988-12-20 Unisys Corporation Arithmetic computation modifier based upon data dependent operations for SIMD architectures
JPH10133885A (ja) * 1996-10-28 1998-05-22 Hitachi Ltd 一括命令生成コンパイル方法
US5920716A (en) * 1996-11-26 1999-07-06 Hewlett-Packard Company Compiling a predicated code with direct analysis of the predicated code
US5956503A (en) * 1997-04-14 1999-09-21 International Business Machines Corporation Method and system for front-end and back-end gathering of store instructions within a data-processing system
JP4125847B2 (ja) 1998-11-27 2008-07-30 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP2001306332A (ja) * 2000-04-20 2001-11-02 Nec Corp 局所変数以外の記憶位置を用いるように拡張されたssa形式を使用して、過度のオーバーヘッドを避ける方法
US20030023960A1 (en) * 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes
JP2003131887A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd 変数ロードおよび処理の一括化コンパイル方法
JP4045802B2 (ja) 2002-01-08 2008-02-13 ソニー株式会社 プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム

Also Published As

Publication number Publication date
GB2429554A (en) 2007-02-28
CN1977241B (zh) 2011-08-03
DE112005003852B4 (de) 2016-05-04
GB2429554B (en) 2009-04-22
CN1977241A (zh) 2007-06-06
JP2011165216A (ja) 2011-08-25
WO2006007193A1 (en) 2006-01-19
DE112005003852A5 (de) 2012-10-25
DE112005001277B4 (de) 2012-10-31
US7802076B2 (en) 2010-09-21
GB0619968D0 (en) 2006-11-29
JP2008503836A (ja) 2008-02-07
US20050289529A1 (en) 2005-12-29
DE112005001277T5 (de) 2007-05-16

Similar Documents

Publication Publication Date Title
JP5646390B2 (ja) 複数の入力命令をベクトル化する方法及び装置
US10268454B2 (en) Methods and apparatus to eliminate partial-redundant vector loads
JP4848317B2 (ja) データベースのインデックス作成システム、方法及びプログラム
US20110047532A1 (en) Methods and apparatuses for selective code coverage
JP3299611B2 (ja) 資源割付装置
US20090106744A1 (en) Compiling and translating method and apparatus
US20110047531A1 (en) Methods and apparatuses for selective code coverage
CN111580863A (zh) 一种向量运算装置及运算方法
CN1273390A (zh) 从本地码有效调用Java方法的方法和设备
US8332833B2 (en) Procedure control descriptor-based code specialization for context sensitive memory disambiguation
US7747992B2 (en) Methods and apparatus for creating software basic block layouts
CN115809063B (zh) 一种存储过程编译方法、系统、电子设备和存储介质
CN116257552A (zh) 数据库查询语句的优化方法、存储介质与设备
JPS62202235A (ja) コンパイラにおけるル−プ展開方式
CN113220306A (zh) 操作执行方法、装置和电子设备
US8661421B2 (en) Methods and apparatuses for endian conversion
CN116204550A (zh) 数据库查询语句的优化方法、存储介质与设备
JP2000122875A (ja) 例外処理方法およびシステム
US20170115973A1 (en) Operating method of semiconductor device and semiconductor system
CN116382782A (zh) 向量运算方法、向量运算器、电子设备和存储介质
US20100017244A1 (en) Method for organizing processes
CN113031952A (zh) 深度学习模型的执行代码的确定方法、装置及存储介质
US20120054257A1 (en) Method and/or system for comparing character expressions
JP3727039B2 (ja) コンパイラにおける乗算実施方法
US6988265B2 (en) Method and apparatus for statement boundary detection

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130910

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131205

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131210

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140415

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140815

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: 20141007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R150 Certificate of patent or registration of utility model

Ref document number: 5646390

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