JP2011165216A - Method and apparatus for vectorizing multiple input instructions - Google Patents
Method and apparatus for vectorizing multiple input instructions Download PDFInfo
- Publication number
- JP2011165216A JP2011165216A JP2011110994A JP2011110994A JP2011165216A JP 2011165216 A JP2011165216 A JP 2011165216A JP 2011110994 A JP2011110994 A JP 2011110994A JP 2011110994 A JP2011110994 A JP 2011110994A JP 2011165216 A JP2011165216 A JP 2011165216A
- Authority
- JP
- Japan
- Prior art keywords
- instructions
- trace
- instruction
- operation code
- simd
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000005457 optimization Methods 0.000 claims abstract description 29
- 230000003068 static effect Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
Abstract
Description
本発明は、複数の入力命令をベクトル化する方法及び装置に関する。 The present invention relates to a method and apparatus for vectorizing a plurality of input instructions.
コンピュータシステムの中央処理ユニット(CPU)は、命令をパラレルに処理する複数の機能実行ユニットを含むかもしれない。これらの命令は、SIMD(Single Instruction Multiple Data)命令を含むかもしれない。SIMD命令は、複数のデータに対する共通の処理をパラレルに実行することが可能である。従って、SIMD命令は、CPUが全体の実行時間を低減するため、複数の繰り返しの計算を同時に実行することを可能にするかもしれない。SIMD処理の使用は、音声及び画像処理などのマルチメディアアプリケーションにおいて特に有効であるかもしれない。 A central processing unit (CPU) of a computer system may include a plurality of function execution units that process instructions in parallel. These instructions may include SIMD (Single Instruction Multiple Data) instructions. The SIMD instruction can execute a common process for a plurality of data in parallel. Thus, SIMD instructions may allow the CPU to perform multiple iterations simultaneously, in order to reduce the overall execution time. The use of SIMD processing may be particularly effective in multimedia applications such as voice and image processing.
本発明の課題は、複数の入力命令をベクトル化する効果的な方法及び装置を提供することである。 An object of the present invention is to provide an effective method and apparatus for vectorizing a plurality of input instructions.
上記課題を解決するため、本発明の一特徴は、トレースの共通のオペレーションコードを有する2以上の命令を検索し、前記2以上の命令が、トレース依存性ツリーにおいて同一のレベルを有する場合、前記2以上の命令を1つのSIMD(Single Instruction Multiple Data)命令にマージする最適化ユニットを有する装置であって、前記トレース依存性ツリーは、各レベルが同一の高さの命令を有する複数のレベルにおける命令を有し、前記トレースの命令は、メモリに格納されることを特徴とする装置に関する。 In order to solve the above problem, one feature of the present invention is to search for two or more instructions having a common operation code of trace, and when the two or more instructions have the same level in a trace dependency tree, An apparatus having an optimization unit for merging two or more instructions into one SIMD (Single Instruction Multiple Data) instruction, wherein the trace dependency tree includes a plurality of instructions each having the same height instruction. The apparatus has a command, and the trace command is stored in a memory.
本発明によると、複数の入力命令をベクトル化する効果的な方法及び装置を提供することができる。 According to the present invention, an effective method and apparatus for vectorizing a plurality of input commands can be provided.
以下の詳細な説明では、本発明の完全なる理解を提供するため、多数の具体的詳細が提供される。しかしながら、本発明がこれらの具体的詳細なく実現可能であるということは、当業者には理解されるであろう。他の例では、本発明を不明りょうにしないように、周知の方法、処理、構成要素及び回路は、詳細には説明されない。 In the following detailed description, numerous specific details are provided to provide a thorough understanding of the present invention. However, it will be understood by one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, processes, components and circuits have not been described in detail so as not to obscure the present invention.
以下の詳細な説明の一部は、コンピュータメモリ内のデータビット又はバイナリデジタル信号に対する記号表現及びアルゴリズムに関して提供される。これらのアルゴリズム的な記載及び表現は、データ処理分野の当業者によって他の当業者に自らの研究の本質を伝えるのに利用される技術であるかもしれない。 Some of the detailed description below is provided in terms of symbolic representations and algorithms for data bits or binary digital signals in computer memory. These algorithmic descriptions and representations may be techniques used by those skilled in the data processing arts to convey the substance of their work to others skilled in the art.
以下の説明から明らかなように、具体的に説明されない場合、本明細書の全体を通じて、「処理」、「計算」、「決定」などの用語の使用は、計算システムのレジスタ及び/又はメモリ内の電子量などの物理量として表されるデータを、計算システムのメモリ、レジスタ又は他のこのような情報ストレージ、送信若しくは表示装置内の物理量として同様に表される他のデータに操作及び/又は変換するコンピュータ、計算システム又は同様の電子計算装置のアクション及び/又は処理を表すことが理解される。さらに、「複数の」という用語は、2以上の構成要素、装置、要素、パラメータなどを説明するのに本明細書を通じて使用されるかもしれない。例えば、「複数の命令」とは、2以上の命令を表す。 As will be apparent from the following description, the use of terms such as “processing”, “calculation”, “decision”, etc. throughout the present specification, unless specifically explained, is used in the registers and / or memory of the computing system. Manipulate and / or convert data represented as physical quantities such as electronic quantities into memory, registers or other such information storage, transmission or other data similarly represented as physical quantities in display devices It is understood to represent the actions and / or processes of a computer, computing system or similar electronic computing device. Further, the term “plurality” may be used throughout this specification to describe two or more components, devices, elements, parameters, and the like. For example, “a plurality of instructions” represents two or more instructions.
「SIMD化」又は「ベクトル化」という用語は、実行のためスケジューリングされるものであって、レジスタや機能ユニットなどの同様の実行リソースを要求する処理を単一のSIMD命令にマージする処理を表す等価な用語であるということが理解されるべきである。本発明の範囲はこれに限定されるものではないが、説明の簡単化のため、「ベクトル化」という用語は、実行のためにスケジューリングされ、同様の実行リソースを必要とする処理をマージする処理を説明するのに使用される。 The terms “SIMDization” or “vectorization” refer to processing that is scheduled for execution and that merges processing that requires similar execution resources such as registers and functional units into a single SIMD instruction. It should be understood that they are equivalent terms. Although the scope of the present invention is not limited to this, for simplicity of explanation, the term “vectorization” is the process of merging processes that are scheduled for execution and require similar execution resources. Used to explain.
本発明は、様々な用途に利用可能であるということが理解されるべきである。本発明はこれに限定されるものではないが、ここで開示される回路及び技術は、コンピュータシステム、プロセッサ、CPUなどの多数の装置において利用可能である。本発明の範囲内に含まれるべきプロセッサは、単なる一例ではあるが、RISC(Reduced Instruction Set Computer)、パイプラインを有するプロセッサ、CISC(Complex Instruction Set Computer)などを含む。 It should be understood that the present invention can be used in a variety of applications. Although the invention is not so limited, the circuits and techniques disclosed herein may be used in numerous devices such as computer systems, processors, CPUs and the like. Processors to be included within the scope of the present invention include RISC (Reduced Instruction Set Computer), processors having pipelines, CISC (Complex Instruction Set Computer), and the like.
本発明の一部の実施例は、例えば、マシーンにより実行される場合(例えば、プロセッサ及び/又は他の適切なマシーンによって)、当該マシーンに本発明の実施例による方法及び/又は処理を実行させる命令又は命令セットを格納可能なマシーン可読媒体又は物品を利用して実現されるかもしれない。このようなマシーンは、例えば、任意の適切な処理プラットフォーム、計算プラットフォーム、計算装置、処理装置、計算システム、処理システム、コンピュータ、プロセッサなどを含むものであってもよく、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを用いて実現されるようにしてもよい。マシーン可読媒体又は物品は、例えば、任意の適切なタイプのメモリユニット、記憶装置、メモリ物品、記憶媒体、ストレージ装置、ストレージ物品、ストレージ媒体及び/又はユニットを含むものであってもよく、例えば、メモリ、着脱可能又は着脱不可な媒体、消去可能又は消去不可な媒体、書き込み可能又は書き換え可能な媒体、デジタル又はアナログ媒体、ハードディスク、フロッピー(登録商標)ディスク、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、アセンブリ言語、機械コードなどの任意の適切な高レベル、低レベル、オブジェクト指向、ビジュアル、コンパイル及び/又はインタープリットプログラミング言語を含むものであってもよい。 Some embodiments of the present invention, for example, when executed by a machine (eg, by a processor and / or other suitable machine) cause the machine to perform the methods and / or processes according to embodiments of the present invention. It may be implemented utilizing a machine readable medium or article capable of storing instructions or a set of instructions. Such machines may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, etc., and hardware and / or software You may make it implement | achieve using arbitrary appropriate combinations. A machine-readable medium or article may include, for example, any suitable type of memory unit, storage device, memory article, storage medium, storage device, storage article, storage medium and / or unit, for example, Memory, removable or non-removable medium, erasable or non-erasable medium, writable or rewritable medium, digital or analog medium, hard disk, floppy (registered trademark) disk, CD-ROM (Compact Disk Read Only Memory) , CD-R (Compact Disk Recordable), CD-RW (Compact Disk Rewriteable), optical disk, magnetic medium, various types of DVD (Digital Versatile Disk), tape, Set may be one and the like. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, such as C, Includes any suitable high-level, low-level, object-oriented, visual, compiled and / or interpreted programming languages such as C ++, Java, BASIC, Pascal, Fortran, Cobol, assembly language, machine code There may be.
図1を参照するに、本発明の一実施例によるコンピュータシステム100のブロック図が示される。本発明の範囲はこれに限定されるものではないが、コンピュータシステム100は、パーソナルコンピュータ(PC)、携帯情報端末(PDA)、インターネット装置、携帯電話又は他の任意の計算装置であってもよい。一例では、コンピュータシステム100は、電源120によって駆動されるメイン処理ユニット110を有するかもしれない。本発明の実施例では、メイン処理ユニット110は、システムインターコネクト135により記憶装置140及び1以上のインタフェース回路150に電気的に接続されるマルチ処理ユニット130を有するものであってもよい。例えば、システムインターコネクト135は、所望される場合には、アドレス/データバスであってもよい。バス以外のインターコネクトがマルチ処理ユニット130を記憶装置140に接続するのに利用可能であるということが理解されるべきである。例えば、1以上の専用線及び/又はクロスバーが、マルチ処理ユニット130を記憶装置140に接続するのに利用可能である。
Referring to FIG. 1, a block diagram of a
本発明の一部の実施例によると、マルチ処理ユニット130は、Intel(登録商標)Pentium(登録商標)TM系のマイクロプロセッサ、Intel(登録商標)ItaniumTM系のマイクロプロセッサ、及び/又はIntel(登録商標)系のXScaleTM系のプロセッサなど任意のタイプの処理ユニットを有するものであってもよい。さらに、マルチ処理ユニット130は、SRAM(Static Random Access Memory)などの任意のタイプのキャッシュメモリを有するものであってもよい。記憶装置140は、DRAM(Dynamic Random Access Memory)、不揮発性メモリなどを有するものであってもよい。一例として、記憶装置140は、所望される場合には、マルチ処理ユニット130により実行可能なソフトウェアプログラムを格納するものであってもよい。
According to some embodiments of the present invention, the
本発明の範囲はこれに限定されるものではないが、インタフェース回路110は、イーサネット(登録商標)インタフェース、USB(Universal Serial Bus)インタフェースなどを有するものであってもよい。本発明の実施例では、1以上の入力装置160が、データ及びコマンドをメイン処理ユニット110に入力するため、インタフェース回路150に接続可能である。例えば、入力装置160は、キーボード、マウス、タッチ画面、トラックパッド、トラックボール、イソポイント(isopoint)、音声認識システムなどを含むものであってもよい。
Although the scope of the present invention is not limited to this, the
本発明の範囲はこれに限定されるものではないが、出力装置170は、1以上のインタフェース回路160を介しメイン処理ユニット110に動作可能に接続可能であり、所望される場合には、1以上のディスプレイ、プリンタ、スピーカー及び/又は他の出力装置を含むものであってもよい。例えば、出力装置の1つはディスプレイであるかもしれない。ディスプレイは、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)又は他の任意のタイプのディスプレイであってもよい。
Although the scope of the present invention is not limited thereto, the
本発明の範囲はこれに限定されるものではないが、コンピュータシステム100は、1以上のストレージ装置180を有するものであってもよい。例えば、コンピュータシステム100は、所望される場合、1以上のハードドライブ、1以上のCDドライブ、1以上のDVDドライブ及び/又は他のコンピュータメディア入出力(I/O)装置を含むものであってもよい。
Although the scope of the present invention is not limited to this, the
本発明の範囲はこれに限定されるものではないが、コンピュータシステム100は、ネットワーク190との接続を介し他の装置とデータを交換することが可能である。ネットワーク接続は、イーサネット(登録商標)接続、デジタル加入者線(DSL)、電話線、同軸ケーブルなどの任意のタイプのネットワーク接続であってもよい。ネットワーク190は、インターネット、電話ネットワーク、ケーブルネットワーク、無線ネットワークなどの任意のタイプのネットワークであってもよい。
Although the scope of the present invention is not limited to this, the
本発明の範囲は本実施例に限定されるものではないが、本発明の当該実施例では、マルチ処理ユニット130は、最適化ユニット200を含むものであってもよい。本発明の実施例によると、最適化ユニット200は、トレースの2以上の候補命令を検索する処理を実行するものであってもよい。さらに、最適化ユニット200は、トレース依存性ツリー(trace dependecy tree)の深さに従って2以上の候補命令をSIMD命令にマージするようにしてもよい。本発明の一部の実施例では、候補命令は、SIMD命令に含まれる同様の及び/又は同一のタイプのオペレーションコードを含むものであってもよい。例えば、最適化ユニット200は、候補命令の依存性の深さに基づき、同様の処理を実行する候補命令を検索するようにしてもよい。本発明の実施例によると、最適化ユニット200は、所望される場合、候補命令の少なくとも一部をSIMD命令にマージするようにしてもよい。本発明の範囲はこれに限定されるものではないが、最適化ユニット200は、ソフトウェア、ハードウェア又はソフトウェアとハードウェアの任意の適切な組み合わせにより実現可能であるということが理解されるべきである。
The scope of the present invention is not limited to this embodiment, but in this embodiment of the present invention, the
図2を参照するに、本発明の一実施例による図1の最適化ユニット200のブロック図が示される。本発明の範囲はこれに限定されるものではないが、最適化ユニット200は、入力トレースバッファ210と、シーケンサ220と、ベクトル化ユニット230と、出力トレースバッファ240とを有するものであってもよい。本発明の範囲はこれに限定されるものではないが、本発明の一部の実施例では、ベクトル化ユニット230は、第1ステージ232と、第2ステージ234と、キャッシュメモリなどのメモリ236とを有するものであってもよい。
Referring to FIG. 2, a block diagram of the
本発明の範囲はこれに限定されるものではないが、入力トレースバッファ210は、オペレーションコード(オペ)コードを有する命令トレースを受け付けるようにしてもよい。本発明の一部の実施例では、シーケンサ220は、入力トレースバッファ210から命令を受け取り、オペレーションコード及び/又は命令トレース(シーケンスなど)をベクトル化ユニット230に提供するかもしれない。例えば、命令は、LOAD、STOREなどのメモリ処理と、ADD、SUBTRACT、MULT、SHIFT、ANDなどの算術処理の少なくとも2つのタイプの処理を有するものであるかもしれない。さらに、命令は、レジスタ、定数などの入力値及び出力値を含むものであってもよい。
Although the scope of the present invention is not limited to this, the
本発明の実施例によると、ベクトル化ユニット230は、シーケンサ220からトレースを受け取り、トレース依存性に従って候補命令を検索するようにしてもよい。本発明の一部の実施例では、第1ステージ232は、シーケンサ220から受け付けたオペコード命令を処理する。例えば、トレースの命令及び/又はオペコードは、SSA(Single Static Assignment)形式に変換されるかもしれない。SSA形式では、レジスタはトレースに1回のみ書き込み可能であり、残りの処理は、SSA条件を満足するため、「バーチャル」レジスタ名を導入するかもしれない。従来のISA(Instruction Set Architecture)により記述されるプログラムコードなどのプログラムコードは、本発明の範囲がこれに限定されるものではないが、同一のレジスタと同一の名前を有する2つのソースレジスタを提供するかもしれない。
According to an embodiment of the present invention,
本発明の範囲はこれに限定されるものではないが、第1ステージ232は、命令を依存性ツリーに配置することによって、ベクトル化のための候補を検索するようにしてもよい。
Although the scope of the present invention is not limited to this, the
図3を参照するに、本発明の一実施例によるSIMD命令を生成する方法を説明するのに有用な一例となる依存性ツリー300が示される。本発明の範囲はこれに限定されるものではないが、依存性ツリー300は、異なる高さの命令を含むものであってもよい。本発明の範囲はこれに限定されるものではないが、依存性ツリー300のレベルは、同一の高さの命令を含むものであってもよい。第1レベル310は命令312及び314を、第2レベル320は命令322を、第3レベル330は命令332及び334を、第4レベル340は命令342を含むものであってもよい。さらに、依存性ツリー300の深さは、依存性ツリー300の最初の高さ310から最後の高さ340までの距離(例えば、当該距離は、レベル間の矢印によって示されるかもしれない)に従って計算されてもよい。
Referring to FIG. 3, an
図2を参照するに、本発明の範囲はこれに限定されるものではないが、第1ステージ232は、ベクトル化のための候補命令をメモリ236に格納する。本発明の実施例によると、第2ステージ234は、同一又は同様のレベルを有する同様のオペコードをメモリ236から検索し、SIMD命令を生成するようにしてもよい。さらに、第2ステージ232は、元のトレース命令をSIMD命令に置換してもよく、SIMD命令を出力トレースバッファ240に格納するようにしてもよい。
Referring to FIG. 2, although the scope of the present invention is not limited to this, the
本発明の範囲はこれに限定されるものではないが、最適化ユニット200の第1ステージ232と第2ステージの処理が、一例となるC言語を模した擬似コードアルゴリズムにより記述可能である。
Although the scope of the present invention is not limited to this, the processing of the
本発明の範囲はこれに限定されるものではないが、C言語を模した擬似コードアルゴリズムの第1部分は、定数、変数構造などを定義するものである。 Although the scope of the present invention is not limited to this, the first part of the pseudo code algorithm simulating C language defines constants, variable structures, and the like.
例えば、トレースの最大命令数は、 For example, the maximum number of instructions for tracing is
命令の最大ソース数は、 The maximum number of instructions source is
命令の最大デスティネーション数は、 The maximum number of instruction destinations is
トレース範囲及び内部バッファサイズは、 Trace range and internal buffer size are
C言語を模した擬似コードアルゴリズムによると、命令構造は、当該命令がベクトル化に適しているか示すブール変数、デスティネーションレジスタ、オペコード、ソースレジスタを有するかもしれない。この命令構造は、 According to a pseudo-code algorithm simulating C language, the instruction structure may have a Boolean variable, a destination register, an opcode, and a source register that indicate whether the instruction is suitable for vectorization. This instruction structure is
C言語を模した擬似コードアルゴリズムによると、トレースは、MAX_TRACE_SIZEのエントリのベクトルによって表される高々MAX_TRACE_SIZEの命令のシーケンスとして定義される。さらに、ツー・デミニュション(two diminutions)(2D))トレース依存ビットマップが、トレースの命令の有効性を示すのに利用可能である。トレースの実際の命令数はINITIAL_TRACE_SIZEであるかもしれない場合、最初のINITIAL_TRACE_SIZEのエントリのみが有効であるかもしれない。 According to a pseudo-code algorithm that mimics the C language, a trace is defined as a sequence of at most MAX_TRACE_SIZE instructions represented by a vector of MAX_TRACE_SIZE entries. In addition, two dimensions (2D)) trace dependent bitmaps can be used to show the validity of the instructions in the trace. If the actual number of instructions in the trace may be INITIAL_TRACE_SIZE, only the first INITIAL_TRACE_SIZE entry may be valid.
1.ESP+4から4バイトをLOADする。
2.ESP+12から4バイトをLOADする。
3.ESP+8から4バイトをLOADする。
では、命令は、所望される場合には、単一のSIMD命令である「ESP+4から12バイトをLOADする」に合成されるかもしれない。
1.
2.
3.
Then, if desired, the instruction may be combined into a single SIMD instruction “LOAD 12 bytes from ESP + 4” if desired.
図4を参照するに、テーブル400が示される。本発明の範囲はこれに限定されるものではないが、テーブル400は、依存性ツリー(依存性ツリー300など)における当該命令のレベルを示すレベルカラムと、入力トレースバッファ210及びシーケンサ220によって提供される元の命令を示す元のトレースカラムと、出力トレースバッファ240における命令を示すベクトル化後のトレースとを含む。テーブル400の行は、命令のレベルと、元の命令とベクトル化後の命令とを示すかもしれない。
Referring to FIG. 4, a table 400 is shown. Although the scope of the present invention is not limited thereto, the table 400 is provided by a level column indicating the level of the instruction in the dependency tree (such as the dependency tree 300), the
本発明の範囲はこれに限定されるものではないが、最適化ユニット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命令を生成するようにしてもよい。
Although the scope of the present invention is not so limited, the
図5を参照するに、本発明の他の実施例によるテーブル500が示される。本発明の範囲はこれに限定されるものではないが、テーブル500は、依存性ツリー(依存性ツリー300など)における元の命令のレベルを示すレベルカラムと、入力トレースバッファ210及びシーケンサ220によって提供される元の命令を示す元のトレースカラムと、SSAなどの基本的変換後の命令のレベルを示すレベルカラムと、変換後の命令を示すカラムと、出力トレースバッファ240におけるベクトル化後のトレースの命令を示すカラムとを有するものであってもよい。テーブル500の行は、命令のレベルと、基本的変換後の命令の元の命令レベルと、基本的変換後の命令と、ベクトル化後の命令とを示すものであってもよい。
Referring to FIG. 5, a table 500 according to another embodiment of the present invention is shown. Although the scope of the present invention is not so limited, the table 500 is provided by a level column indicating the level of the original instruction in the dependency tree (such as the dependency tree 300), and the
本発明の範囲はこれに限定されるものではないが、一例となるテーブル500によると、最適化ユニット200は、トレースにおける元の命令の高さをタグ付けする。最適化ユニット200は、トレースの命令をSSA形式に変換するかもしれない。最適化ユニット200は、トレースがSSA形式に変換されることを利用することによって、トレースの命令を変換してもよい。最適化ユニット200は、
例えば、
Although the scope of the present invention is not so limited, according to the example table 500, the
For example,
本発明の特徴がここで図示及び説明されたが、当業者には、多数の改良、置換、変更及び均等が想起するであろう。従って、添付した請求項が、本発明の真の趣旨に属するこのようなすべての改良及び変更をカバーするものであるということは理解されるべきである。 While the features of the invention have been illustrated and described herein, many modifications, substitutions, changes and equivalents will occur to those skilled in the art. Accordingly, it is to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.
100 コンピュータシステム
110 メイン処理ユニット
120 電源
130 マルチ処理ユニット
140 記憶装置
100
Claims (18)
前記トレース依存性ツリーは、各レベルが同一の高さの命令を有する複数のレベルにおける命令を有し、
前記トレースの命令は、メモリに格納されることを特徴とする装置。 When two or more instructions having a common operation code of the trace are searched and the two or more instructions have the same level in the trace dependency tree, the two or more instructions are converted into one SIMD (Single Instruction Multiple Data). An apparatus having an optimization unit that merges into instructions,
The trace dependency tree has instructions at multiple levels, each level having the same height instruction;
The trace command is stored in a memory.
前記共通のオペレーションコードは、メモリオペレーションコード又は算術オペレーションコードから構成されることを特徴とする装置。 The apparatus of claim 1, comprising:
The common operation code comprises a memory operation code or an arithmetic operation code.
前記最適化ユニットは、
前記2以上の命令を前記トレース依存性ツリーに配置することによって、シーケンサから受け付けた命令のトレースから前記2以上の命令を検索する第1ステージと、
前記命令を前記トレース依存性ツリーに格納するキャッシュメモリと、
前記1つのSIMD命令を生成するため、前記キャッシュメモリの前記2以上の命令を検索する第2ステージと、
を有することを特徴とする装置。 The apparatus of claim 1, comprising:
The optimization unit is
A first stage that retrieves the two or more instructions from a trace of instructions received from a sequencer by placing the two or more instructions in the trace dependency tree;
A cache memory for storing the instructions in the trace dependency tree;
A second stage for retrieving the two or more instructions in the cache memory to generate the one SIMD instruction;
A device characterized by comprising:
前記最適化ユニットは、連続するメモリアドレスにアクセスする前記2以上の命令を前記1つのSIMD命令に合成することが可能であることを特徴とする装置。 The apparatus of claim 1, comprising:
The apparatus is characterized in that the optimization unit is capable of combining the two or more instructions for accessing consecutive memory addresses into the one SIMD instruction.
前記最適化ユニットは、入力された命令をSSA(Single Static Assignment)形式に変換可能であることを特徴とする装置。 The apparatus of claim 1, comprising:
The optimization unit is capable of converting an input instruction into an SSA (Single Static Assignment) format.
前記2以上の命令が、トレース依存性ツリーにおいて同一のレベルを有する場合、前記2以上の命令を1つのSIMD(Single Instruction Multiple Data)命令にマージするステップと、
を有する方法であって、
前記トレース依存性ツリーは、各レベルが同一の高さの命令を有する複数のレベルを有することを特徴とする方法。 Retrieving two or more instructions having a common operation code in the trace;
Merging the two or more instructions into a single instruction multiple data (SIMD) instruction if the two or more instructions have the same level in a trace dependency tree;
A method comprising:
The method of claim 1, wherein the trace dependency tree has a plurality of levels, each level having the same height instruction.
メモリ処理オペレーションコード又は算術オペレーションコードから構成される前記共通のオペレーションコードを選択するステップを有することを特徴とする方法。 The method of claim 6, comprising:
A method comprising the step of selecting the common operation code comprised of a memory processing operation code or an arithmetic operation code.
連続するメモリアドレスにアクセスする前記2以上の命令を前記1つのSIMD命令に合成するステップを有することを特徴とする方法。 The method of claim 6, comprising:
A method comprising combining the two or more instructions that access consecutive memory addresses into the one SIMD instruction.
前記マージするステップは、前記トレースの入力された命令をSSA(Single Static Assignment)形式に変換することから構成されることを特徴とする方法。 The method of claim 6, comprising:
The method of merging comprises converting the input instruction of the trace into an SSA (Single Static Assignment) format.
バスに接続される記憶装置と、
トレースの共通のオペレーションコードを有する2以上の命令を検索し、前記2以上の命令が、トレース依存性ツリーにおいて同一のレベルを有する場合、前記2以上の命令を1つのSIMD(Single Instruction Multiple Data)命令にマージする最適化ユニットを有するプロセッサと、
から構成されるシステムであって、
前記トレース依存性ツリーは、各レベルが同一の高さの命令を有する複数のレベルにおける命令を有し、
前記トレースの命令は、前記記憶装置に格納されることを特徴とするシステム。 With bus,
A storage device connected to the bus;
When two or more instructions having a common operation code of the trace are searched and the two or more instructions have the same level in the trace dependency tree, the two or more instructions are converted into one SIMD (Single Instruction Multiple Data). A processor having an optimization unit that merges into the instructions;
A system comprising:
The trace dependency tree has instructions at multiple levels, each level having the same height instruction;
The trace command is stored in the storage device.
前記共通のオペレーションコードは、メモリオペレーションコード又は算術オペレーションコードから構成されることを特徴とするシステム。 The system of claim 10, wherein
The common operation code includes a memory operation code or an arithmetic operation code.
前記最適化ユニットは、
前記2以上の命令を前記トレース依存性ツリーに配置することによって、シーケンサから受け付けた命令のトレースから前記2以上の命令を検索する第1ステージと、
前記命令を前記トレース依存性ツリーに格納するキャッシュメモリと、
前記1つのSIMD命令を生成するため、前記キャッシュメモリの前記2以上の命令を検索する第2ステージと、
を有することを特徴とするシステム。 The system of claim 10, wherein
The optimization unit is
A first stage that retrieves the two or more instructions from a trace of instructions received from a sequencer by placing the two or more instructions in the trace dependency tree;
A cache memory for storing the instructions in the trace dependency tree;
A second stage for retrieving the two or more instructions in the cache memory to generate the one SIMD instruction;
The system characterized by having.
前記最適化ユニットは、連続するメモリアドレスにアクセスする前記2以上の命令を前記1つのSIMD命令に合成することが可能であることを特徴とするシステム。 The system of claim 10, wherein
The system is characterized in that the optimization unit is capable of combining the two or more instructions that access consecutive memory addresses into the one SIMD instruction.
前記最適化ユニットは、入力された命令をSSA(Single Static Assignment)形式に変換可能であることを特徴とするシステム。 The system of claim 10, wherein
The optimization unit is capable of converting an input instruction into an SSA (Single Static Assignment) format.
前記2以上の命令が、トレース依存性ツリーにおいて同一のレベルを有する場合、前記2以上の命令を1つのSIMD(Single Instruction Multiple Data)命令にマージするステップと、
をコンピュータに実行させるプログラムであって、
前記トレース依存性ツリーは、各レベルが同一の高さの命令を有する複数のレベルを有することを特徴とするプログラム。 Retrieving two or more instructions having a common operation code in the trace;
Merging the two or more instructions into a single instruction multiple data (SIMD) instruction if the two or more instructions have the same level in a trace dependency tree;
A program for causing a computer to execute
The trace dependency tree has a plurality of levels, each level having an instruction having the same height.
メモリ処理オペレーションコード又は算術オペレーションコードから構成される前記共通のオペレーションコードを選択するステップを前記コンピュータに実行させるプログラム。 The program according to claim 15, wherein
A program for causing the computer to execute the step of selecting the common operation code composed of a memory processing operation code or an arithmetic operation code.
連続するメモリアドレスにアクセスする前記2以上の命令を前記1つのSIMD命令に合成するステップを前記コンピュータに実行させるプログラム。 The program according to claim 15, wherein
A program for causing the computer to execute a step of combining the two or more instructions for accessing consecutive memory addresses into the one SIMD instruction.
入力された命令をSSA(Single Static Assignment)形式に変換するステップを前記コンピュータに実行させるプログラム。 The program according to claim 15, wherein
A program that causes the computer to execute a step of converting an input instruction into an SSA (Single Static Assignment) format.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/874,744 US7802076B2 (en) | 2004-06-24 | 2004-06-24 | Method and apparatus to vectorize multiple input instructions |
US10/874,744 | 2004-06-24 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007518079A Division JP2008503836A (en) | 2004-06-24 | 2005-05-25 | Method and apparatus for vectorizing a plurality of input instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011165216A true JP2011165216A (en) | 2011-08-25 |
JP5646390B2 JP5646390B2 (en) | 2014-12-24 |
Family
ID=35033618
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007518079A Pending JP2008503836A (en) | 2004-06-24 | 2005-05-25 | Method and apparatus for vectorizing a plurality of input instructions |
JP2011110994A Expired - Fee Related JP5646390B2 (en) | 2004-06-24 | 2011-05-18 | Method and apparatus for vectorizing a plurality of input instructions |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007518079A Pending JP2008503836A (en) | 2004-06-24 | 2005-05-25 | Method and apparatus for vectorizing a plurality of input instructions |
Country Status (6)
Country | Link |
---|---|
US (1) | US7802076B2 (en) |
JP (2) | JP2008503836A (en) |
CN (1) | CN1977241B (en) |
DE (2) | DE112005003852B4 (en) |
GB (1) | GB2429554B (en) |
WO (1) | WO2006007193A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943484B2 (en) | 2012-03-29 | 2015-01-27 | Fujitsu Limited | Code generation method and information processing apparatus |
US9256437B2 (en) | 2012-03-29 | 2016-02-09 | Fujitsu Limited | Code generation method, and information processing apparatus |
US9823911B2 (en) | 2014-01-31 | 2017-11-21 | Fujitsu Limited | Method and apparatus for compiling code based on a dependency tree |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478377B2 (en) * | 2004-06-07 | 2009-01-13 | International Business Machines Corporation | SIMD code generation in the presence of optimized misaligned data reorganization |
US7475392B2 (en) * | 2004-06-07 | 2009-01-06 | International Business Machines Corporation | SIMD code generation for loops with mixed data lengths |
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 |
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 |
US7386842B2 (en) * | 2004-06-07 | 2008-06-10 | International Business Machines Corporation | Efficient data reorganization to satisfy data alignment constraints |
US8549501B2 (en) * | 2004-06-07 | 2013-10-01 | International Business Machines Corporation | Framework for generating mixed-mode operations in loop-level simdization |
US7783863B1 (en) | 2005-09-28 | 2010-08-24 | Oracle America, Inc. | Graceful degradation in a trace-based processor |
US8037285B1 (en) | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US7546420B1 (en) | 2005-09-28 | 2009-06-09 | Sun Microsystems, Inc. | Efficient trace cache management during self-modifying code processing |
US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
US7849292B1 (en) | 2005-09-28 | 2010-12-07 | Oracle America, Inc. | Flag optimization of a trace |
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 |
US7953933B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit |
US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
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 |
US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
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 |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
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 |
US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US7797517B1 (en) * | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
US7681019B1 (en) | 2005-11-18 | 2010-03-16 | Sun Microsystems, Inc. | Executing functions determined via a collection of operations from translated instructions |
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 |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
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 (en) * | 2011-10-05 | 2016-03-16 | 富士通株式会社 | Compiling device, compiling method, compiling program, and recording medium |
US20130113809A1 (en) * | 2011-11-07 | 2013-05-09 | Nvidia Corporation | Technique for inter-procedural memory address space optimization in gpu computing compiler |
TWI447646B (en) | 2011-11-18 | 2014-08-01 | Asmedia Technology Inc | Data transmission device and method for merging multiple instruction |
CN103999045B (en) * | 2011-12-15 | 2017-05-17 | 英特尔公司 | Methods to optimize a program loop via vector instructions using a shuffle table and a blend table |
JP5413473B2 (en) * | 2012-03-01 | 2014-02-12 | 日本電気株式会社 | Vector processing apparatus and vector processing method |
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 (en) * | 2012-03-29 | 2016-01-20 | 富士通株式会社 | Program, code generation method, and information processing apparatus |
WO2014137327A1 (en) | 2013-03-05 | 2014-09-12 | Intel Corporation | Analyzing potential benefits of vectorization |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
CN103440229B (en) * | 2013-08-12 | 2017-11-10 | 浪潮电子信息产业股份有限公司 | A kind of vectorization optimization method based on MIC architecture processors |
GB2520571B (en) | 2013-11-26 | 2020-12-16 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing vector processing |
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 (en) * | 2015-10-20 | 2017-04-20 | Fresenius Medical Care Deutschland Gmbh | Blood treatment device and prescription procedure |
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 (en) | 2016-09-26 | 2023-10-25 | 삼성전자주식회사 | Electronic apparatus, process and control method thereof |
US10606595B2 (en) | 2018-03-23 | 2020-03-31 | Arm Limited | Data processing systems |
CN110858150A (en) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | Operation device with local real-time reconfigurable pipeline level |
JP7468650B2 (en) * | 2020-06-25 | 2024-04-16 | 日本電気株式会社 | Information processing device, information processing method, and program |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6234275A (en) * | 1985-08-07 | 1987-02-14 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | Vector converting compiler |
JPH10133885A (en) * | 1996-10-28 | 1998-05-22 | Hitachi Ltd | Method for generating and compiling batch instruction |
JPH10187463A (en) * | 1996-11-26 | 1998-07-21 | Hewlett Packard Co <Hp> | Compiler |
JP2000222209A (en) * | 1998-11-27 | 2000-08-11 | Matsushita Electric Ind Co Ltd | Processor, compiling device and storage medium recording compile program |
JP2001306332A (en) * | 2000-04-20 | 2001-11-02 | Nec Corp | Method for evading excess overhead by using ssa form extended so as to use storage position other than local variable |
JP2003131887A (en) * | 2001-10-25 | 2003-05-09 | Hitachi Ltd | Compilation method by batch loading of variables and batch processing |
JP2003202991A (en) * | 2002-01-08 | 2003-07-18 | Sony Corp | Device and method for processing program, storage medium and computer program |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4792894A (en) * | 1987-03-17 | 1988-12-20 | Unisys Corporation | Arithmetic computation modifier based upon data dependent operations for SIMD architectures |
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 |
US20030023960A1 (en) * | 2001-07-25 | 2003-01-30 | Shoab Khan | Microprocessor instruction format using combination opcodes and destination prefixes |
-
2004
- 2004-06-24 US US10/874,744 patent/US7802076B2/en not_active Expired - Fee Related
-
2005
- 2005-05-25 JP JP2007518079A patent/JP2008503836A/en active Pending
- 2005-05-25 GB GB0619968A patent/GB2429554B/en not_active Expired - Fee Related
- 2005-05-25 CN CN2005800212790A patent/CN1977241B/en not_active Expired - Fee Related
- 2005-05-25 DE DE112005003852.1T patent/DE112005003852B4/en not_active Expired - Fee Related
- 2005-05-25 DE DE112005001277T patent/DE112005001277B4/en not_active Expired - Fee Related
- 2005-05-25 WO PCT/US2005/018444 patent/WO2006007193A1/en active Application Filing
-
2011
- 2011-05-18 JP JP2011110994A patent/JP5646390B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6234275A (en) * | 1985-08-07 | 1987-02-14 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | Vector converting compiler |
JPH10133885A (en) * | 1996-10-28 | 1998-05-22 | Hitachi Ltd | Method for generating and compiling batch instruction |
JPH10187463A (en) * | 1996-11-26 | 1998-07-21 | Hewlett Packard Co <Hp> | Compiler |
JP2000222209A (en) * | 1998-11-27 | 2000-08-11 | Matsushita Electric Ind Co Ltd | Processor, compiling device and storage medium recording compile program |
JP2001306332A (en) * | 2000-04-20 | 2001-11-02 | Nec Corp | Method for evading excess overhead by using ssa form extended so as to use storage position other than local variable |
JP2003131887A (en) * | 2001-10-25 | 2003-05-09 | Hitachi Ltd | Compilation method by batch loading of variables and batch processing |
JP2003202991A (en) * | 2002-01-08 | 2003-07-18 | Sony Corp | Device and method for processing program, storage medium and computer program |
Non-Patent Citations (9)
Title |
---|
CSNG199801037007; 上原 哲太郎: '自動ベクトル化並列化コンパイラV-Pascal Ver.3' 電子情報通信学会技術研究報告 第94巻,第384号, 19941209, PP.49-56, 社団法人電子情報通信学会 * |
CSNG199900910003; 諸角 裕: '命令レベル並列計算機用最適化コンパイラにおけるループアンローリング技法' 電子情報通信学会技術研究報告 第92巻,第109号, 19920625, PP.23-30, 社団法人電子情報通信学会 * |
CSNG200000071004; 渡邊 坦: 'SIMDマシンで並列実行させる同型命令列の認識方式' 情報処理学会研究報告 第96巻,第82号, 19960829, PP.19-24, 社団法人情報処理学会 * |
CSNG200201265002; 北畠 宏信: '高位仕様記述からの専用プロセッサ設計における機能設計について' 情報処理学会研究報告 第91巻,第110号, 19911213, PP.25-32, 社団法人情報処理学会 * |
JPN6008047304; Patricio Bulic, et al: 'Fast Dependence Analysis in a Multimedia Vectorizing Compiler' Proceedings of the 12th Euromicro Conference on Parallel, Distributed and Network-Based Processing ( , 20040211, p.176-183, IEEE * |
JPN6013044338; 北畠 宏信: '高位仕様記述からの専用プロセッサ設計における機能設計について' 情報処理学会研究報告 第91巻,第110号, 19911213, PP.25-32, 社団法人情報処理学会 * |
JPN6013044346; 上原 哲太郎: '自動ベクトル化並列化コンパイラV-Pascal Ver.3' 電子情報通信学会技術研究報告 第94巻,第384号, 19941209, PP.49-56, 社団法人電子情報通信学会 * |
JPN6013044348; 渡邊 坦: 'SIMDマシンで並列実行させる同型命令列の認識方式' 情報処理学会研究報告 第96巻,第82号, 19960829, PP.19-24, 社団法人情報処理学会 * |
JPN6014014822; 諸角 裕: '命令レベル並列計算機用最適化コンパイラにおけるループアンローリング技法' 電子情報通信学会技術研究報告 第92巻,第109号, 19920625, PP.23-30, 社団法人電子情報通信学会 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943484B2 (en) | 2012-03-29 | 2015-01-27 | Fujitsu Limited | Code generation method and information processing apparatus |
US9256437B2 (en) | 2012-03-29 | 2016-02-09 | Fujitsu Limited | Code generation method, and information processing apparatus |
US9823911B2 (en) | 2014-01-31 | 2017-11-21 | Fujitsu Limited | Method and apparatus for compiling code based on a dependency tree |
Also Published As
Publication number | Publication date |
---|---|
CN1977241B (en) | 2011-08-03 |
WO2006007193A1 (en) | 2006-01-19 |
DE112005001277B4 (en) | 2012-10-31 |
GB2429554B (en) | 2009-04-22 |
CN1977241A (en) | 2007-06-06 |
US20050289529A1 (en) | 2005-12-29 |
DE112005003852A5 (en) | 2012-10-25 |
DE112005001277T5 (en) | 2007-05-16 |
JP5646390B2 (en) | 2014-12-24 |
JP2008503836A (en) | 2008-02-07 |
GB2429554A (en) | 2007-02-28 |
GB0619968D0 (en) | 2006-11-29 |
US7802076B2 (en) | 2010-09-21 |
DE112005003852B4 (en) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5646390B2 (en) | Method and apparatus for vectorizing a plurality of input instructions | |
US10268454B2 (en) | Methods and apparatus to eliminate partial-redundant vector loads | |
JP4848317B2 (en) | Database indexing system, method and program | |
US20110047532A1 (en) | Methods and apparatuses for selective code coverage | |
JP3299611B2 (en) | Resource allocation device | |
US20090106744A1 (en) | Compiling and translating method and apparatus | |
CN1273390A (en) | Method and equipment for effective calling Java method from local code | |
US20080301656A1 (en) | Method of procedure control descriptor-based code specialization for context sensitive memory disambiguation | |
CN111221842A (en) | Big data processing system and method | |
CN115809063B (en) | Storage process compiling method, system, electronic equipment and storage medium | |
US7747992B2 (en) | Methods and apparatus for creating software basic block layouts | |
CN116257552A (en) | Database query statement optimization method, storage medium and device | |
US9495638B2 (en) | Scalable, rule-based processing | |
JP5936135B2 (en) | Information processing apparatus, information processing method, and program | |
CN113220306A (en) | Operation execution method and device and electronic equipment | |
US8661421B2 (en) | Methods and apparatuses for endian conversion | |
CN116204550A (en) | Database query statement optimization method, storage medium and device | |
JP2006510118A (en) | Software code optimization using N-bit pointer conversion | |
US20230061087A1 (en) | Dynamic computation offloading to graphics processing unit | |
CN116382782A (en) | Vector operation method, vector operator, electronic device, and storage medium | |
CN113031952A (en) | Method and device for determining execution code of deep learning model and storage medium | |
US10642876B1 (en) | Query processing pipeline for semi-structured and unstructured data | |
CN114791811B (en) | Assembler realization method based on meta-function template | |
JP3727039B2 (en) | Multiplication method in compiler | |
US11321094B2 (en) | Non-transitory computer-readable medium, assembly instruction conversion method and information processing apparatus |
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 | Written amendment |
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 | Written amendment |
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 | Written amendment |
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 |