JP2011165216A - Method and apparatus for vectorizing multiple input instructions - Google Patents

Method and apparatus for vectorizing multiple input instructions Download PDF

Info

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
Application number
JP2011110994A
Other languages
Japanese (ja)
Other versions
JP5646390B2 (en
Inventor
Yoav Almog
アルモグ,ヨアヴ
Roni Rosner
ロズネル,ロニ
Ronny Ronen
ロネン,ロニー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2011165216A publication Critical patent/JP2011165216A/en
Application granted granted Critical
Publication of JP5646390B2 publication Critical patent/JP5646390B2/en
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, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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]
    • 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

Abstract

<P>PROBLEM TO BE SOLVED: To provide an effective method and an apparatus for vectorizing a plurality of input instructions. <P>SOLUTION: The apparatus has an optimization unit for searching two or more instructions with operation codes with common traces and when the two or more instructions have the same levels in a trace dependence tree for merging the two or more instructions with one SIMD (Single Instruction Multiple Data) instruction. The trace dependence tree has instructions in a plurality of levels with instructions where each level has the same instruction, and the trace instruction is stored in a memory of the apparatus. <P>COPYRIGHT: (C)2011,JPO&INPIT

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.

図1は、本発明の一実施例によるコンピュータシステムのブロック図である。FIG. 1 is a block diagram of a computer system according to an embodiment of the present invention. 図2は、本発明の一実施例による最適化ユニットのブロック図である。FIG. 2 is a block diagram of an optimization unit according to an embodiment of the present invention. 図3は、本発明の一実施例による命令をSIMD命令に変換する方法を説明するのに有用な一例となる依存性ツリーの図である。FIG. 3 is a diagram of an exemplary dependency tree useful for describing a method for converting an instruction into a SIMD instruction according to one embodiment of the present invention. 図4は、本発明の一実施例によるベクトル化処理の説明に有用なテーブルの図である。FIG. 4 is a table useful for explaining vectorization processing according to an embodiment of the present invention. 図5は、本発明の他の実施例によるベクトル化処理の説明に有用なテーブルの図である。FIG. 5 is a table useful for explaining vectorization processing according to another embodiment of the present invention.

以下の詳細な説明では、本発明の完全なる理解を提供するため、多数の具体的詳細が提供される。しかしながら、本発明がこれらの具体的詳細なく実現可能であるということは、当業者には理解されるであろう。他の例では、本発明を不明りょうにしないように、周知の方法、処理、構成要素及び回路は、詳細には説明されない。   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 computer system 100 according to one embodiment of the present invention is shown. Although the scope of the present invention is not limited thereto, the computer system 100 may be a personal computer (PC), a personal digital assistant (PDA), an internet device, a cellular phone, or any other computing device. . In one example, computer system 100 may have a main processing unit 110 that is driven by a power source 120. In an embodiment of the present invention, the main processing unit 110 may include a multi-processing unit 130 that is electrically connected to the storage device 140 and one or more interface circuits 150 by a system interconnect 135. For example, system interconnect 135 may be an address / data bus, if desired. It should be understood that interconnects other than buses can be used to connect the multi-processing unit 130 to the storage device 140. For example, one or more dedicated lines and / or crossbars can be used to connect the multi-processing unit 130 to the storage device 140.

本発明の一部の実施例によると、マルチ処理ユニット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 multi-processing unit 130 may be an Intel® Pentium based microprocessor, an Intel® Itanium based microprocessor, and / or an Intel ( It may have any type of processing unit such as an XScale processor of the registered trademark. Further, the multi-processing unit 130 may have any type of cache memory such as SRAM (Static Random Access Memory). The storage device 140 may include a DRAM (Dynamic Random Access Memory), a nonvolatile memory, or the like. As an example, the storage device 140 may store a software program that can be executed by the multi-processing unit 130 if desired.

本発明の範囲はこれに限定されるものではないが、インタフェース回路110は、イーサネット(登録商標)インタフェース、USB(Universal Serial Bus)インタフェースなどを有するものであってもよい。本発明の実施例では、1以上の入力装置160が、データ及びコマンドをメイン処理ユニット110に入力するため、インタフェース回路150に接続可能である。例えば、入力装置160は、キーボード、マウス、タッチ画面、トラックパッド、トラックボール、イソポイント(isopoint)、音声認識システムなどを含むものであってもよい。   Although the scope of the present invention is not limited to this, the interface circuit 110 may include an Ethernet (registered trademark) interface, a USB (Universal Serial Bus) interface, or the like. In an embodiment of the present invention, one or more input devices 160 can be connected to the interface circuit 150 for inputting data and commands to the main processing unit 110. For example, the input device 160 may include a keyboard, a mouse, a touch screen, a trackpad, a trackball, an isopoint, a voice recognition system, and the like.

本発明の範囲はこれに限定されるものではないが、出力装置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 output device 170 can be operatively connected to the main processing unit 110 via one or more interface circuits 160, and if desired, one or more. Other displays, printers, speakers, and / or other output devices. For example, one of the output devices may be a display. The display may be a CRT (Cathode Ray Tube), LCD (Liquid Crystal Display) or any other type of display.

本発明の範囲はこれに限定されるものではないが、コンピュータシステム100は、1以上のストレージ装置180を有するものであってもよい。例えば、コンピュータシステム100は、所望される場合、1以上のハードドライブ、1以上のCDドライブ、1以上のDVDドライブ及び/又は他のコンピュータメディア入出力(I/O)装置を含むものであってもよい。   Although the scope of the present invention is not limited to this, the computer system 100 may include one or more storage apparatuses 180. For example, computer system 100 may include one or more hard drives, one or more CD drives, one or more DVD drives, and / or other computer media input / output (I / O) devices, if desired. Also good.

本発明の範囲はこれに限定されるものではないが、コンピュータシステム100は、ネットワーク190との接続を介し他の装置とデータを交換することが可能である。ネットワーク接続は、イーサネット(登録商標)接続、デジタル加入者線(DSL)、電話線、同軸ケーブルなどの任意のタイプのネットワーク接続であってもよい。ネットワーク190は、インターネット、電話ネットワーク、ケーブルネットワーク、無線ネットワークなどの任意のタイプのネットワークであってもよい。   Although the scope of the present invention is not limited to this, the computer system 100 can exchange data with other devices via a connection with the network 190. The network connection may be any type of network connection such as an Ethernet connection, a digital subscriber line (DSL), a telephone line, a coaxial cable, etc. Network 190 may be any type of network such as the Internet, a telephone network, a cable network, a wireless network, and the like.

本発明の範囲は本実施例に限定されるものではないが、本発明の当該実施例では、マルチ処理ユニット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 multi-processing unit 130 may include the optimization unit 200. According to an embodiment of the present invention, the optimization unit 200 may execute a process of searching for two or more candidate instructions for tracing. Further, the optimization unit 200 may merge two or more candidate instructions into a SIMD instruction according to the depth of the trace dependency tree. In some embodiments of the present invention, candidate instructions may include similar and / or the same type of operation code included in SIMD instructions. For example, the optimization unit 200 may search for a candidate instruction that performs similar processing based on the depth of dependency of the candidate instruction. According to embodiments of the present invention, optimization unit 200 may merge at least some of the candidate instructions into SIMD instructions if desired. While the scope of the invention is not so limited, it should be understood that the optimization unit 200 can be implemented by software, hardware or any suitable combination of software and hardware. .

図2を参照するに、本発明の一実施例による図1の最適化ユニット200のブロック図が示される。本発明の範囲はこれに限定されるものではないが、最適化ユニット200は、入力トレースバッファ210と、シーケンサ220と、ベクトル化ユニット230と、出力トレースバッファ240とを有するものであってもよい。本発明の範囲はこれに限定されるものではないが、本発明の一部の実施例では、ベクトル化ユニット230は、第1ステージ232と、第2ステージ234と、キャッシュメモリなどのメモリ236とを有するものであってもよい。   Referring to FIG. 2, a block diagram of the optimization unit 200 of FIG. 1 is shown according to one embodiment of the present invention. Although the scope of the present invention is not limited to this, the optimization unit 200 may include an input trace buffer 210, a sequencer 220, a vectorization unit 230, and an output trace buffer 240. . Although the scope of the present invention is not so limited, in some embodiments of the present invention, the vectorization unit 230 includes a first stage 232, a second stage 234, and a memory 236 such as a cache memory. It may have.

本発明の範囲はこれに限定されるものではないが、入力トレースバッファ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 input trace buffer 210 may accept an instruction trace having an operation code (operation) code. In some embodiments of the present invention, the sequencer 220 may receive instructions from the input trace buffer 210 and provide operation codes and / or instruction traces (such as sequences) to the vectorization unit 230. For example, the instruction may have at least two types of processing such as memory processing such as LOAD and STORE and arithmetic processing such as ADD, SUBTRACT, MULT, SHIFT, and AND. Furthermore, the instruction may include an input value and an output value such as a register and a constant.

本発明の実施例によると、ベクトル化ユニット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, vectorization unit 230 may receive a trace from sequencer 220 and retrieve candidate instructions according to trace dependencies. In some embodiments of the present invention, the first stage 232 processes opcode instructions received from the sequencer 220. For example, trace instructions and / or opcodes may be converted to SSA (Single Static Assignment) format. In SSA format, registers can only be written to the trace once, and the rest of the processing may introduce “virtual” register names to satisfy the SSA condition. A program code such as a program code described by a conventional ISA (Instruction Set Architecture) provides two source registers having the same register and the same name, although the scope of the present invention is not limited thereto. Might do.

本発明の範囲はこれに限定されるものではないが、第1ステージ232は、命令を依存性ツリーに配置することによって、ベクトル化のための候補を検索するようにしてもよい。   Although the scope of the present invention is not limited to this, the first stage 232 may search for candidates for vectorization by placing instructions in a dependency tree.

図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 exemplary dependency tree 300 useful for describing a method for generating SIMD instructions according to one embodiment of the present invention is shown. Although the scope of the present invention is not so limited, the dependency tree 300 may include instructions of different heights. Although the scope of the present invention is not so limited, the levels of the dependency tree 300 may include instructions of the same height. The first level 310 may include instructions 312 and 314, the second level 320 may include instructions 322, the third level 330 may include instructions 332 and 334, and the fourth level 340 may include instructions 342. Further, the depth of the dependency tree 300 is calculated according to the distance from the initial height 310 to the final height 340 of the dependency tree 300 (eg, the distance may be indicated by an arrow between levels). May be.

図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 first stage 232 stores candidate instructions for vectorization in the memory 236. According to embodiments of the present invention, the second stage 234 may retrieve similar opcodes having the same or similar levels from the memory 236 and generate SIMD instructions. Further, the second stage 232 may replace the original trace instruction with the SIMD instruction, and may store the SIMD instruction in the output trace buffer 240.

本発明の範囲はこれに限定されるものではないが、最適化ユニット200の第1ステージ232と第2ステージの処理が、一例となるC言語を模した擬似コードアルゴリズムにより記述可能である。   Although the scope of the present invention is not limited to this, the processing of the first stage 232 and the second stage of the optimization unit 200 can be described by a pseudo code algorithm simulating the C language as an example.

本発明の範囲はこれに限定されるものではないが、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

Figure 2011165216
として定義される。
Figure 2011165216
Is defined as

命令の最大ソース数は、   The maximum number of instructions source is

Figure 2011165216
として定義される。
Figure 2011165216
Is defined as

命令の最大デスティネーション数は、   The maximum number of instruction destinations is

Figure 2011165216
として定義される。
Figure 2011165216
Is defined as

トレース範囲及び内部バッファサイズは、   Trace range and internal buffer size are

Figure 2011165216
として定義される。
Figure 2011165216
Is defined as

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

Figure 2011165216
として定義される。
Figure 2011165216
Is defined as

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.

Figure 2011165216
C言語を模した擬似コードアルゴリズムによると、メモリ236に格納されるSIMDマトリックスは、オペレーションコードを有し、M個のオペコード位置のN本のラインを保持するかもしれない(例えば、合計でNlog(MAX_TRACE_SIZE)ビットなど)。
Figure 2011165216
According to a pseudo-code algorithm that mimics the C language, the SIMD matrix stored in the memory 236 has an operation code and may hold N lines of M opcode positions (eg, a total of N x M x log (MAX_TRACE_SIZE) bit, etc.).

Figure 2011165216
本発明の範囲はこれに限定されるものではないが、本実施例のアルゴリズムでは、最適化ユニット230の第1ステージ232は、昇順にトレースの命令を繰り返すことによってトレースの候補命令を検索する。第1ステージ232は、リネーミング処理中に構成されるトレース[i]のすべてのプレデセッサ(predecessor)を比較する。さらに、第1ステージ232は、トレース[i]の依存性の高さ(レベルなど)と、それの可能性のある最先のスケジューリング位置を計算することによって、依存性ツリー(依存性ツリー300など)における命令の高さ(レベルなど)をタグ付けするようにしてもよい。
Figure 2011165216
Although the scope of the present invention is not limited to this, in the algorithm of this embodiment, the first stage 232 of the optimization unit 230 searches for trace candidate instructions by repeating the trace instructions in ascending order. The first stage 232 compares all predecessors of trace [i] configured during the renaming process. Further, the first stage 232 calculates a dependency tree (such as the dependency tree 300) by calculating the high dependency (level, etc.) of the trace [i] and the earliest possible scheduling position. ) May be tagged with the height (level, etc.) of the instruction.

Figure 2011165216
本発明の範囲はこれに限定されるものではないが、本例のC言語を模した擬似コードアルゴリズムでは、第2ステージ234は、ベクトル化に適した命令(マトリックスSIMDなど)をメモリ236から検索する。例えば、適切な命令は、同じ依存性ツリーの高さ(レベルなど)におけるより以前の命令トレース[j]であるかもしれない。さらに、第2ステージ236は、SIMD命令を生成し、以下に示すように、元の命令をSIMD命令と置換するかもしれない。
Figure 2011165216
Although the scope of the present invention is not limited to this, in the pseudo code algorithm simulating the C language in this example, the second stage 234 searches the memory 236 for instructions (such as matrix SIMD) suitable for vectorization. To do. For example, a suitable instruction may be an earlier instruction trace [j] at the same dependency tree height (level, etc.). Further, the second stage 236 may generate a SIMD instruction and replace the original instruction with a SIMD instruction, as shown below.

Figure 2011165216
本発明の一部の実施例によると、最適化ユニット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する」に合成されるかもしれない。
Figure 2011165216
According to some embodiments of the present invention, the optimization unit 200 follows the rule that two instructions accessing a memory are combined into a single SIMD instruction when accessing consecutive memory addresses. May be generated. That is, the fact that the data accessed by these two instructions is adjacent (at least in the virtual memory space) can be calculated from their memory addresses and the corresponding data length. For example, in a trace that includes the following instructions:
1. LOAD 4 bytes from ESP + 4.
2. LOAD 4 bytes from ESP + 12.
3. LOAD 4 bytes from ESP + 8.
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 input trace buffer 210, and the sequencer 220. The original trace column indicating the original instruction to be output and the trace after vectorization indicating the instruction in the output trace buffer 240 are included. The rows of the table 400 may indicate the level of the instruction, the original instruction, and the instruction after vectorization.

本発明の範囲はこれに限定されるものではないが、最適化ユニット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 optimization unit 200 may tag the depth of the trace dependency graph (such as the height of the trace instruction). Further, for example, according to the table 400, the optimization unit 200 includes instructions “EAX ← LOAD (ESP, 4)” and “EBX ← LOAD (ESP, ESP,) at the same level (level 2 etc.) as the candidates for vectorization. 8) may be specified, and if desired, these instructions may be combined into SIMD instructions “EAX, EBX ← SIMD_LOAD (ESP, 4)”. Although the scope of the present invention is not limited to this, the optimization unit 200 is based on a common process (such as LOAD) and is at the same depth (such as height) of the trace dependency graph 2. Two instructions are combined into a single SIMD instruction (such as SIMD_LOAD) if all their non-constant sources (such as registers) are similar and / or if the constant or direct sources are different A SIMD instruction may be generated by following the rules.

図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 input trace buffer 210 and sequencer 220. Of the original trace column indicating the original instruction to be processed, a level column indicating the level of the instruction after the basic conversion such as SSA, a column indicating the instruction after the conversion, and the trace after the vectorization in the output trace buffer 240 And a column indicating an instruction. The rows of the table 500 may indicate the instruction level, the original instruction level of the instruction after basic conversion, the instruction after basic conversion, and the instruction after vectorization.

本発明の範囲はこれに限定されるものではないが、一例となるテーブル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 optimization unit 200 tags the height of the original instruction in the trace. The optimization unit 200 may convert the trace instructions into SSA format. The optimization unit 200 may convert the instructions of the trace by utilizing that the trace is converted to SSA format. The optimization unit 200 is
For example,

Figure 2011165216
などのベクトル化のための候補命令と同一レベルの変換された命令をタグ付けし、それらをSIMD命令
Figure 2011165216
Tag the converted instructions at the same level as the candidate instructions for vectorization, etc. and SIMD them

Figure 2011165216
にそれぞれ合成するようにしてもよい。
Figure 2011165216
May be combined respectively.

本発明の特徴がここで図示及び説明されたが、当業者には、多数の改良、置換、変更及び均等が想起するであろう。従って、添付した請求項が、本発明の真の趣旨に属するこのようなすべての改良及び変更をカバーするものであるということは理解されるべきである。   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 Computer System 110 Main Processing Unit 120 Power Supply 130 Multi-Processing Unit 140 Storage Device

Claims (18)

トレースの共通のオペレーションコードを有する2以上の命令を検索し、前記2以上の命令が、トレース依存性ツリーにおいて同一のレベルを有する場合、前記2以上の命令を1つのSIMD(Single Instruction Multiple Data)命令にマージする最適化ユニットを有する装置であって、
前記トレース依存性ツリーは、各レベルが同一の高さの命令を有する複数のレベルにおける命令を有し、
前記トレースの命令は、メモリに格納されることを特徴とする装置。
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.
請求項1記載の装置であって、
前記共通のオペレーションコードは、メモリオペレーションコード又は算術オペレーションコードから構成されることを特徴とする装置。
The apparatus of claim 1, comprising:
The common operation code comprises a memory operation code or an arithmetic operation code.
請求項1記載の装置であって、
前記最適化ユニットは、
前記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:
請求項1記載の装置であって、
前記最適化ユニットは、連続するメモリアドレスにアクセスする前記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.
請求項1記載の装置であって、
前記最適化ユニットは、入力された命令を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以上の命令が、トレース依存性ツリーにおいて同一のレベルを有する場合、前記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.
請求項6記載の方法であって、
メモリ処理オペレーションコード又は算術オペレーションコードから構成される前記共通のオペレーションコードを選択するステップを有することを特徴とする方法。
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.
請求項6記載の方法であって、
連続するメモリアドレスにアクセスする前記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.
請求項6記載の方法であって、
前記マージするステップは、前記トレースの入力された命令を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.
請求項10記載のシステムであって、
前記共通のオペレーションコードは、メモリオペレーションコード又は算術オペレーションコードから構成されることを特徴とするシステム。
The system of claim 10, wherein
The common operation code includes a memory operation code or an arithmetic operation code.
請求項10記載のシステムであって、
前記最適化ユニットは、
前記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.
請求項10記載のシステムであって、
前記最適化ユニットは、連続するメモリアドレスにアクセスする前記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.
請求項10記載のシステムであって、
前記最適化ユニットは、入力された命令を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以上の命令が、トレース依存性ツリーにおいて同一のレベルを有する場合、前記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.
請求項15記載のプログラムであって、
メモリ処理オペレーションコード又は算術オペレーションコードから構成される前記共通のオペレーションコードを選択するステップを前記コンピュータに実行させるプログラム。
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.
請求項15記載のプログラムであって、
連続するメモリアドレスにアクセスする前記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.
請求項15記載のプログラムであって、
入力された命令を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.
JP2011110994A 2004-06-24 2011-05-18 Method and apparatus for vectorizing a plurality of input instructions Expired - Fee Related JP5646390B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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