JP5573134B2 - ベクトル型計算機及びベクトル型計算機の命令制御方法 - Google Patents

ベクトル型計算機及びベクトル型計算機の命令制御方法 Download PDF

Info

Publication number
JP5573134B2
JP5573134B2 JP2009276535A JP2009276535A JP5573134B2 JP 5573134 B2 JP5573134 B2 JP 5573134B2 JP 2009276535 A JP2009276535 A JP 2009276535A JP 2009276535 A JP2009276535 A JP 2009276535A JP 5573134 B2 JP5573134 B2 JP 5573134B2
Authority
JP
Japan
Prior art keywords
vector
instruction
maximum value
minimum value
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009276535A
Other languages
English (en)
Other versions
JP2011118743A (ja
Inventor
英一郎 川口
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2009276535A priority Critical patent/JP5573134B2/ja
Priority to US12/957,913 priority patent/US20110138155A1/en
Publication of JP2011118743A publication Critical patent/JP2011118743A/ja
Application granted granted Critical
Publication of JP5573134B2 publication Critical patent/JP5573134B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Description

本発明は、ベクトルパイプライン処理によりベクトル演算を行うベクトル型計算機及びベクトル型計算機の命令制御方法に関するもので、特に、ベクトルギャザー命令やベクトルスキャッター命令の追い越し制御に関する。
一般に、命令処理の高速化を目的としたベクトル処理方式においては、メモリアクセス系の命令で先行するストア命令の領域に後続に発行されるロード系の命令のアクセス領域が重なっていない場合、後続のロード系の命令のメモリアクセスを先に実行させ、メモリアクセスの高速化を図るような追い越し制御が行われている。この種のベクトルストア命令追い越し制御は、例えば、特許文献1に記載されているように、リクエスト受付時にメモリをアクセスするアドレス及び領域が判明しているようなベクトルストアとロード系命令が追い越し制御の対象になっている。
これに対して、ベクトルギャザー命令やベクトルスキャッター命令では、ベクトルレジスタの各要素を実行アドレスとしてメモリにアクセスするため、命令実行時のアクセス領域の算出及び追い越し判定が煩雑になる。
図16はベクトルギャザー命令の説明図を示し、図17はベクトルスキャッター命令の説明図を示すものである。ベクトルギャザー命令は、図16に示すように、ソースオペランドのベクトルレジスタ511の各要素にはロード先のアドレスが格納されており、このベクトルレジスタ511で指し示されるアドレスのデータを、ディスティネーションのベクトルレジスタ513の対応する要素に格納するように、メモリからデータをロードするものである。図16に示すように、この場合のメモリ空間512のアクセスは不規則になる。
また、ベクトルスキャター命令は、図17に示すように、ソースオペランドのベクトルレジスタ611には各要素のストアすべきデータ本体が格納され、ソースオペランドのベクトルレジスタ613には各要素のストア先のアドレスが格納され、ソースオペランドのベクトルレジスタ613で指し示されるアドレスにソースオペランドのベクトルレジスタ611のデータをストアするように、メモリにデータをストアするものである。この場合、図17に示すように、メモリ空間612は不規則になる。
そこで、ベクトルギャザー命令やベクトルスキャッター命令に関しては、例えば特許文献2に示されているように、コンパイラによる静的なアドレス依存解析によって、追い越し制御が行われている。
特開平9−231203号公報 特開2002−32361号公報
しかしながら、特許文献2に示されるような、コンパイラによる静的なアドレス依存解析による追い越し制御では、静的な解析が不可能な場合には、追い越し制御ができないという問題がある。
すなわち、特許文献2では、コンパイラによる静的なアドレス依存解析により、ベクトルギャザー命令やベクトルスキャッター命令のアドレス範囲を特定し、アクセス範囲の先頭アドレスと終端アドレスを同命令に付加することで、リストベクトルの追い越し制御を実現している。特に、特許文献2で想定している命令列は配列のアクセスであり、配列本体の先頭アドレスと終端アドレスをリストベクトル命令に付加することで、アクセス範囲の特定をしている。
図18は、ベクトルギャザー命令やベクトルスキャッター命令の静的な解析と動的な解析とを比較した説明図である。ベクトルギャザー命令やベクトルスキャッター命令では、ベクトルロード命令やベクトルストア命令と異なり、メモリアクセスに規則性がないため、アドレス依存の検出が難しい。静的な解析の場合、実際にベクトルギャザー命令やベクトルスキャッター命令でアクセスする範囲がアドレスA[4]からA[n−3]までであるにもかかわらず、コンパイラの段階で、どの要素にアクセスするかわからなかった場合、依存する(チェックする)アドレスは、アクセスする可能性のあるアドレスA[0]からA[n]にする必要がある。追い越しは、静的な解析による依存性チェックができたときの特殊な場合に限定される。また、配列などで静的な依存解析ができたとしても、依存アドレス範囲を実際よりも大きく取ることがある。これに対して、動的な解析では、依存する(チェックする)アドレスは静的な解析時より範囲が狭くなるため、可能になる追い越しのパターンが増える。
上述の課題を鑑み、本発明は、ベクトルギャザー命令やベクトルスキャッター命令に対して、動的な追い越し制御が行えるベクトル型計算機及びベクトル型計算機の命令制御方法を提供することを目的とする。
上述の課題を解決するために、本発明は、ベクトルパイプライン処理によりベクトル演算を行うベクトル型計算機であって、ベクトルギャザー命令又はベクトルスキャッター命令に対するアドレスの依存元命令を実行する固定小数点演算の演算結果を固有小数点演算器から入力し、その演算結果を用いてベクトル要素の最小値及び最大値を判定する最小値最大値判定手段と、最小値最大値判定手段で判定されたベクトル要素の最小値及び最大値を保持する最小値最大値保持手段と、ベクトルギャザー命令又はベクトルスキャッター命令を実行する際に、最小値最大値保持手段に保持されている最小値及び最大値から、ベクトルギャザー命令又はベクトルスキャッター命令のアドレスのアクセス範囲を特定し、ベクトルギャザー命令又はベクトルスキャッター命令の追い越し制御を行う手段とを備えることを特徴とする。
本発明は、ベクトルパイプライン処理によりベクトル演算を行うベクトル型計算機の命令制御方法であって、ベクトルギャザー命令又はベクトルスキャッター命令に対するアドレスの依存元命令を実行する固定小数点演算の演算結果を固有小数点演算器から入力し、その演算結果を用いてベクトル要素の最小値及び最大値を判定する工程と、判定されたベクトル要素の最小値及び最大値を保持する工程と、ベクトルギャザー命令又はベクトルスキャッター命令を実行する際に、保持されている最小値及び最大値から、ベクトルギャザー命令又はベクトルスキャッター命令のアドレスのアクセス範囲を特定し、ベクトルギャザー命令又はベクトルスキャッター命令の追い越し制御を行う工程とを含むことを特徴とする。
本発明によれば、固定小数点演算の演算結果を用いてベクトル要素の最小値及び最大値を判定することで、ベクトルギャザー命令又はベクトルスキャッター命令での実際のアクセス範囲を動的に特定することができ、これにより、ベクトルギャザー命令又はベクトルスキャッター命令の追い越し制御を行うことができる。このように、ベクトルギャザー命令やベクトルスキャッター命令の動的なアドレス依存検出を可能とするため、静的なアドレス依存検出方法に比べて、可能になる追い越し制御のパターンが増加する。これは、静的な解析で追い越し判定ができないベクトルギャザー命令やベクトルスキャッター命令においても追い越しができる可能性が生まれるためである。また、アクセス範囲をリストベクトルの最小値及び最大値から検出するため、正確なアクセス範囲を特定できる。すなわち、静的依存解析方法と比較し、検出する依存アクセス範囲が狭くなるため、追い越し判定をパスする可能性が増加する。
本発明の第1の実施形態のベクトル型計算機の構成を示すブロック図である。 ベクトルレジスタ群に含まれる1つのベクトルレジスタを示す説明図である。 本発明の第1の実施形態におけるベクトルパイプラインを示す説明図である。 ベクトルレジスタとベクトルパイプラインとのより具体的な接続関係を示す説明図である。 本発明の第1の実施形態における最小値最大値判定器の詳細を示すブロック図である。 ベクトルギャザー命令がベクトルストア命令を追い越すパターンの説明図である。 ベクトルギャザー命令がベクトルストア命令を追い越すような処理をフローチャートで説明したものである。 ベクトルロード命令がベクトルスキャッター命令を追い越すパターンの説明図である。 固定小数点演算と浮動小数点演算とのタイミング関係を示す説明図である。 本発明の第2の実施形態のベクトル型計算機の構成を示すブロック図である。 本発明の第2の実施形態の動作を示すフローチャートである。 本発明の第3の実施形態のベクトル型計算機の構成を示すブロック図である。 マスク付演算の説明図である。 VL長の説明図である。 本発明の第3の実施形態でマスク付演算問題及びVL長変更問題を回避するような処理を行う場合のフローチャートである。 ベクトルギャザー命令の説明図である。 ベクトルスキャッター命令の説明図である。 ベクトルギャザー命令やベクトルスキャッター命令の静的な解析と動的な解析とを比較した説明図である。
以下、本発明の実施の形態について図面を参照しながら説明する。
<第1の実施形態>
図1は、本発明の第1の実施形態のベクトル型計算機の構成を示すブロック図である。図1に示すように、本発明の第1の実施形態のベクトル型計算機は、ベクトルレジスタ群11と、固定小数点演算器12と、浮動小数点演算器13と、ロードバッファ14と、メモリアクセスバッファ15と、メモリアクセスユニット16とを備えている。これらの機能は、通常のベクトル型計算機と同様である。さらに、本発明の第1の実施形態のベクトル型計算機は、最小値最大値判定器21と、最小値/最大値保持レジスタ22と、演算結果レジスタ23及び24とを備えている。
ベクトルレジスタ群11は、複数本のベクトルレジスタからなるベクトル演算用のレジスタ群である。1つのベクトルレジスタは、複数の要素(128〜512個)から構成されている。また、本発明の第1の実施形態においては、ベクトルレジスタには、本体レジスタ部30と共に、そのベクトル要素の最小値及び最大値を保持する最小値/最大値レジスタ部31が設けられている。
図2は、ベクトルレジスタ群11に含まれる1つのベクトルレジスタを示す説明図である。ベクトルレジスタ群11にベクトルレジスタが128本あるというときには、図2に示すようなセットが128個あることになる。
図2において、1つのベクトルレジスタは、本体レジスタ部30と、最小値/最大値レジスタ部31とから構成される。本体レジスタ部30には、各ベクトル要素V(0)、V(1)、V(2)、…、V(n)が格納される。最小値/最大値レジスタ部31には、これらのベクトル要素V(0)、V(1)、V(2)、…、V(n)の中の最小値(V.min)及び最大値(V.max)が格納される。最小値/最大値レジスタ部31は隠しレジスタとなっている。この最小値(V.min)及び最大値(V.max)は、ベクトルギャザー命令やベクトルスキャッター命令の追い越し制御の際に、アクセス範囲を特定するのに用いられる。
図1において、ベクトルレジスタ群11の上下には、それぞれのユニットを接続する接続網17及び18が組み込まれている。接続網17は、演算結果やロードデータの書き込み先選択回路である。接続網18は、レジスタから演算器、又はメモリアクセスバッファ15へのデータの送り先選択回路である。
固定小数点演算器12は、固定小数点演算を実行するものである。浮動小数点演算器13は、浮動小数点演算を実行するものである。
ロードバッファ14は、メモリアクセスユニット16から返されたロードデータを一時的に保持するバッファである。メモリアクセスバッファ15は、メモリアクセスユニット16へ送るストアアドレス、ストアデータ、又はロードアドレスを一時的に保持するバッファである。
メモリアクセスユニット16は、主記憶(図示せず)にアクセスするユニットである。また、本発明の第1の実施形態では、メモリアクセスユニット16は、追い越し判定機能を保持している。
最小値最大値判定器21は、固定小数点演算器12からの出力結果からベクトル構成要素の最小値及び最大値を求めるものである。ベクトルギャザー命令やベクトルスキャッター命令のアクセスするメモリ空間のアドレスは、先行する依存元命令の固定小数点演算の結果から得られることが多い。そこで、本発明の第1の実施形態では、固定小数点演算器12の演算出力から、最小値最大値判定器21により、ベクトル要素の最小値及び最大値を求めるようにしている。
なお、ベクトルギャザー命令やベクトルスキャッター命令のアクセスアドレスは整数型データであるため、浮動小数点演算器13の出力側には、最大値最小値判定器を設ける必要はない。
最小値/最大値保持レジスタ22は、最小値最大値判定器21で算出された最小値及び最大値を保持するレジスタである。最小値最大値判定器21で算出された最大値及び最小値は、最小値/最大値保持レジスタ22に一次保持された後に、ベクトルレジスタ群11に含まれるベクトルレジスタの最小値/最大値レジスタ部31に転送される。
演算結果レジスタ23及び24は、持ち回り演算を行い、最小値最大値判定器21の出力のタイミング調停をしている。
図3は、本発明の第1の実施形態におけるベクトルパイプラインを示す説明図である。図3に示すように、各ベクトルパイプライン#0、#1、#2、#3、#4、#5、#6、#7は、加減算/シフト、乗算、除算、論理演算などの演算器を有する構成とされている。この例では、ベクトルパイプライン#0〜#7の8セットのパイプラインがある。それぞれのパイプライン#0〜#7は、ベクトルレジスタの要素番号V(n)〜V(n+7)に接続されている。
つまり、図4は、ベクトルレジスタとベクトルパイプライン#0、#1、#2、#3、#4、#5、#6、#7とのより具体的な接続関係を示す説明図である。図4において、ベクトルレジスタの要素V(0),V(8)はベクトルパイプライン#0に接続されており、ベクトルレジスタの要素V(1),V(9)はベクトルパイプライン#1に接続されており、以降、最大要素数まで繰り返し続く。すなわち、要素番号によって、接続されているベクトルパイプラインが異なることになる。
図5は、本発明の第1の実施形態における最小値最大値判定器21の詳細を示すブロック図である。図5に示すように、最小値最大値判定器21は、最小値判定部51と、レジスタ52と、パイプ間最小判定部53と、最大値判定部61と、レジスタ62と、パイプ間最大判定部63とから構成される。
前述したように、ベクトルギャザー命令や、ベクトルスキャッター命令のアクセスアドレスは固定小数点(整数型データ)であり、固定小数点演算器12は、固定小数点演算の実行時には毎サイクル演算結果を出力する。
ただし、通常複数のベクトルパイプラインを保持するため、ベクトルパイプライン#0の固定小数点演算器12からの出力は、要素番号V(0),V(8),V(16),V(24)、…に対する演算結果が出力であり、ベクトルパイプライン#1の固定小数点演算器12からの出力は、要素番号V(1),V(9),V(17),V(25)、…に対する演算結果が出力である。
図5において、最小値判定部51は、固定小数点演算器12からの出力のうち、最小のものを検出する。レジスタ52は、最小値判定部51で検出された最小値を保持するレジスタである。毎サイクル演算結果が出力されるため、実際の比較は、レジスタ52に保持されている値と、固定小数点演算器12の出力結果の間で行われ、より小さい値が再度レジスタ52に記憶される。
最大値判定部61は、固定小数点演算器12からの出力のうち、最大のものを検出する。レジスタ62は、最大値判定部61で検出された最値を保持するレジスタである。毎サイクル演算結果が出力されるため、実際の比較は、レジスタ62に保持されている値と、固定小数点演算器12の出力結果の間で行われ、より大きい値が再度レジスタ62に記憶される。
このような比較において、各ベクトルパイプライン内部での最大値、最小値が検出されることになる。例えば、ベクトルパイプライン#0では、要素V(0),V(8)、V(16)、V(24).V(32)、V(40)、V(48)、…のうちの最大値、最小値が検出される。
前述したとおり、ベクトル計算機では、複数のベクトルパイプラインを保持しているため、全要素のうちの最小値、最大値は、さらにそのパイプライン間で比較する必要がある。パイプ間最小判定部53及びパイプ間最大判定部63は、パイプライン間における最小値、最大値を検出する回路である。なお、パイプ間最小判定及びパイプ間最大判定は、毎サイクル動作する必要はなく、各パイプラインにおける最終要素が完了するタイミングで実行されればよい。
パイプ間最小判定部53、パイプ間最大判定部63で決定された、全要素中の最大値、最小値は、最小値/最大値保持レジスタ22に格納される。そして、演算結果の最終要素のライトバックタイミングと同じタイミングで、最小値/最大値保持レジスタ22から、ベクトルレジスタ群11に含まれるベクトルレジスタの最小値/最大値レジスタ部31にライトバックされる。
図1に示すように、本発明の第1の実施形態のベクトル型計算機には、最小値最大値判定器21が設けられ、この最小値最大値判定器21により、固定小数点演算器12からの出力結果から、ベクトル要素の最小値及び最大値が求められる。これにより、ベクトルギャザー命令やベクトルスキャッター命令のアクセス範囲を特定でき、ベクトルギャザー命令やベクトルスキャッター命令の追い越し制御が可能になる。このことについて、以下に説明する。
なお、以下の説明では、VSTはベクトルストア命令を示し、VLDはベクトルロード命令を示し、VADXはベクトル加算命令を示し、VGTはベクトルギャザー命令を示し、VSCはベクトルスキャッター命令を示している。また、$v0、$v1、$v2、…は、ベクトルレジスタのインデックスを示し、s0、s1、s2、…は、スカラレジスタのインデックスを示している。
先ず、本発明の第1の実施形態において、ベクトルギャザー命令がベクトルストア命令を追い越すパターンについて説明する。
図6は、ベクトルギャザー命令がベクトルストア命令を追い越すパターンの説明図である。図6に示すように、本発明の第1の実施形態のベクトル型計算機により、以下の命令列が実行されるとする。
VST $v0,8,$v68;
VADX $v7,$s42,$v1;

VGT $v8,$v7
この命令列では、最初に命令(VST $v0,8,$v68)がある。この命令は、通常のベクトルストア命令であるため、ストアするアクセス範囲は容易に算出できる。図6では、先行するベクトルストア命令のアクセス範囲は、アドレス(VST.Low)からアドレス(VST.High)のメモリ空間である。
次の命令(VADX $v7,$s42,$v1)は、ベクトル加算命令である。この命令では、ベクトルレジスタ($v1)の全要素に、スカラレジスタ($s42)の内容を加算し、結果をベクトルレジスタ($v7)に格納する。この命令がベクトルギャザー命令に対するアドレスの依存元命令となる。
このとき、ベクトル加算命令の演算は固定小数点演算器12で行われ、ベクトルギャザー命令のアクセスするメモリ空間は、最小値最大値判定器21により、固定小数点演算器12の演算結果から求めることができる。すなわち、ベクトルレジスタ($v7)の要素数が256の場合には、固定小数点演算器12で、ベクトルレジスタ($v1)の内容とスカラレジスタ($s42)の内容とを加算した結果の256個の要素のうちの最小値($v7.mim)及び最大値($v7.max)が、ベクトルギャザー命令のアクセスするメモリ空間に対応する。この最小値($v7.mim)及び最大値($v7.max)は、固定小数点演算器12の演算結果から、最小値最大値判定器21により算出される。そして、最小値最大値判定器21で算出された最小値($v7.mim)及び最大値($v7.max)は、最小値/最大値保持レジスタ22から、ベクトルレジスタ群11に含まれるベクトルレジスタの最小値/最大値レジスタ部31にセットされる。
その後、次の命令(VGT $v8,$v7)により、ベクトル加算命令で計算したベクトルレジスタ($v7)を使って、ベクトルギャザー命令が実行される。このとき、ベクトルレジスタ($v7)の値だけでなく、最小値/最大値レジスタ部31にセットされている最小値($v7.mim)及び最大値($v7.max)も読み出される。この最小値($v7.mim)及び最大値($v7.max)は、ベクトルギャザー命令でアクセスする最下位アドレスと最上位アドレスを示していることになる。これにより、ベクトルギャザー命令のアクセス範囲が認識することができる。
図6では、先行するベクトルストア命令のアクセス範囲はアドレス(VST.Low)からアドレス(VST.High)であり、後続のベクトルギャザー命令のアクセス範囲はアドレス(V7.min)からアドレス(V7.max)である。この場合、先行ベクトルストア命令のアクセスする最上位アドレス(VST.High)が、後続ベクトルギャザー命令の最下位アドレス(v7.min)よりも下のアドレス空間であるため、後続のベクトルギャザー命令が先行するベクトルストア命令を追い越すことは可能である。
後続のベクトルギャザー命令が先行するベクトルストア命令を追い越す制御は、ベクトルストア命令をベクトルロード命令が追い越すときの判定処理と同様になり、ベクトルギャザー命令においても先行するベクトルストア命令を追い越すことが可能になる。なお、追い越し判定の方法としては、周知の方法を用いることができる。
このときの処理をフローチャートを用いて説明する。図7は、図6に示したような処理により、ベクトルギャザー命令がベクトルストア命令を追い越すような処理をフローチャートで説明したものである。
図7において、最初に、先行するベクトルストア命令(VST)が発行される。図6では、この命令は(VST $v0,8,$v68)である(ステップS101)。今回の命令列では、このベクトルストア命令が、後続のベクトルギャザー命令に追い越しされる可能性がある。ベクトルストア命令が発行されると、このベクトルストア命令は、メモリアクセスバッファ15を経由し、メモリアクセスユニット16に送られる。なお、ベクトルストア命令は即時発行されない場合(例えば、投機実行中の場合)、この命令は、発行可能になるまでメモリアクセスユニット16で保持されている。
次に、依存元命令である固定小数点演算が実行される(ステップS102)。図6では、この命令は(VADX $v7,$s42,$v1)である。このベクトル加算命令は、固定小数点演算器12で実行される。
また、このとき、最小値最大値判定器21により、固定小数点演算器12から出力される値から、ベクトル要素内の最小値(V.min)及び最大値(V.max)が求められる(ステップS103)。そして、ベクトル加算命令の演算結果と、最小値(V.min)及び最大値(V.max)がベクトルレジスタにライトバックされる(ステップS104)。
次に、後続のベクトルギャザー命令(VGT)が実行される。図6では、この命令は(VGT $v8,$v7)である。このとき、ベクトルレジスタのロードアドレスの値が格納されている本体レジスタ部30のデータだけでなく、このベクトルレジスタに付加された対応する最小値/最大値レジスタ部31から、最小値(V.min)及び最大値(V.max)のデータも同時に読み出される(ステップS105)。この最小値(V.min)及び最大値(V.max)のデータは、ベクトルギャザー命令と共に、メモリアクセスバッファ15を経由して、メモリアクセスユニット16に送られる。
メモリアクセスユニット16で、最小値(V.min)及び最大値(V.max)のデータを利用し、先行ベクトルストア命令との追い越し判定が行われる(ステップS106)。
次に、本発明の第1の実施形態において、ベクトルロード命令がベクトルスキャッター命令を追い越すパターンについて説明する。
図8は、ベクトルロード命令がベクトルスキャッター命令を追い越すパターンの説明図である。図8に示すように、本発明の第1の実施形態のベクトル型計算機により、以下の命令列が実行されるとする。
VADX $v7,$s42,$v1;
VSC $v7,$v3;

VLD $v8,8,$s10;
図8において、最初の命令(VADX $v7,$s42,$v1)は、ベクトル加算命令である。この命令では、ベクトルレジスタ($v1)の全要素にスカラレジスタ($s42)の内容を加算し、その結果をベクトルレジスタ($v7)に格納している。この命令がベクトルスキャッター命令に対するアドレスの依存元命令となる。
このとき、最小値最大値判定器21により、ベクトル加算演算後のベクトルレジスタ($v7)の全ての要素中の最小値(v7.min)及び最大値(v7.max)が算出される。そして、最小値最大値判定器21で算出された全要素中の最小値($v7.mim)及び最大値($v7.max)は、最小値/最大値保持レジスタ22から、ベクトルレジスタ群11中のベクトルレジスタの最小値/最大値レジスタ部31にセットされる。
次の命令(VSC $v7,$s3)は、ベクトルスキャッター命令である。このベクトルスキャッター命令は、ベクトルレジスタ($v7)をアクセスして実行される。このときのアクセス範囲は、ベクトルレジスタ群11の最小値/最大値レジスタ部31にセットされている最小値(v7.min)及び最大値(v7.max)により確定されている。このため、後続のベクトルロード命令がベクトルスキャッター命令を追い越す判定が可能である。
図8では、先行するベクトルスキャター命令のアクセス範囲はアドレス(V7.min)からアドレス(V7.max)であり、後続のベクトルロード命令のアクセス範囲はアドレス(VLD.Low)からアドレス(VLD.High)である。この場合、先行するベクトルスキャター命令のアクセスする最下位アドレス(V7.min)が、後続のベクトルロード命令の最上位アドレス(VLD.High)よりも上のアドレス空間であるため、後続のベクトルロード命令が先行するベクトルスキャター命令を追い越すことは可能である。
なお、図6では、ベクトルギャザー命令がベクトルストア命令を追い越すパターン、図8では、ベクトルロード命令がベクトルスキャッター命令を追い越すパターンを記載したが、両方で、最小値(V.max)及び最大値(V.min)を利用したパターン、すなわち、ベクトルギャザー命令がベクトルスキャッター命令を追い越すパターンも同じ論理で制御が可能である。
このように、本発明の第1の実施形態のベクトル型計算機には、最小値最大値判定器21により、固定小数点演算器12の演算結果からベクトル要素の最小値(V.max)及び最大値(V.min)を求めることにより、ベクトルギャザー命令やベクトルスキャッター命令でのアクセス範囲が特定できる。これにより、ベクトルギャザー命令やベクトルスキャッター命令で追い越しし制御が可能になる。
本発明の第1の実施形態では、ベクトルギャザー命令やベクトルスキャター命令の追い越し制御のアーキテクチャを、次の2つの特徴を利用して実現している。1つの目の特徴は、ベクトルギャザー命令やベクトルスキャッター命令のアドレスになりうるのは、必ず固定小数点数(整数)であり、その殆どは固定小数点演算器12から出力される固定小数点演算であるということである。このため、固定小数点演算器12の演算結果から、ベクトルレジスタの全要素中の最小値及び最大値を求めている。
2つ目の特徴は、ベクトル演算器は制御の簡易化のために、固定小数点演算のTAT(ターンアラウンドタイム)と浮動小数点演算のTATを合わせているということである。すなわち、固定小数点演算では、TAT後半の数T間は、持ち回りを行っているため、余力がある。以上の2点を鑑みると、タイミングの調停時間に当該演算結果の最大値・最小値を割り出すことが可能である。
図9は、固定小数点演算と浮動小数点演算とのタイミング関係を示す説明図である。固定小数点演算は1T(サイクル)程度で演算が終了するのに対して、浮動小数点演算は例えば4T(サイクル)程度演算時間がかかる。ベクトル演算器はTAT(ターンアラウンドタイム)を重視する演算器であること、また、大量のデータを扱い、制御の簡単化をする必要があることなどから、通常、図9(A)に示すように、固定小数点演算のTATと浮動小数点演算のTATとを合わせている。一般的なベクトル型計算機では、このようにタイミング調停を行っている。
これに対して、図9(B)は、本発明の第1の実施形態での最大値最小値算出のタイミングを示している。本発明の第1の実施形態では、固定小数点演算は浮動小数点演算に対してTATの余力があるので、その時間に最小値最大値判定器21で最小値及び最大値を計算し、その結果をベクトルギャザー命令やベクトルスキャター命令の追い越し制御に使っている。すなわち、本発明の第1の実施形態では、最小値最大値判定器21を設けたとしても、全体のTATが長くなることはない。
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。上述の第1の実施形態では、ベクトルギャザー命令又はベクトルスキャッター命令のアドレスの依存元命令は、固定小数点演算としていた。依存元命令が固定小数点演算であるため、図9に示したように、固定小数点演算と浮動小数点演算とのTATの違いを利用して、最小値最大値判定器21で、固定小数点演算器12の演算結果から、最大値最小値を求めることができる。
ベクトルギャザー命令や、スキャッター命令のアクセスアドレスの多くは、このような固定小数点演算によって求められることが多いが、ロードしたベクトルレジスタのデータを使って、ベクトルギャザー命令やスキャッター命令を行うこともある。例えば、以下のような命令列を実行することが考えられる。
VLD $v7,8,$s10;
VGT $v8,$v7;
この例では、最初の命令(VLD $v7,8,$s10)で、ベクトルレジスタ($v7)にデータをロードし、そのベクトルレジスタ($v7)でベクトルギャザー命令が行われる。この場合、図1に示した第1の実施形態では、固定小数点演算器12を介して演算が行われないため、最小値(V.min)及び最大値(V.max)のデータの算出ができないことになる。
本発明の第2の実施形態では、ベクトルロード命令を実行する時にも最小値及び最大値を算出する機構を設けることで、依存元命令が固定小数点演算でない場合でも、対処できるようにしている。
図10は、本発明の第2の実施形態のベクトル型計算機の構成を示すブロック図である。図10において、ベクトルレジスタ群111、固定小数点演算器112、浮動小数点演算器113、ロードバッファ114、メモリアクセスバッファ115、メモリアクセスユニット116、最小値最大値判定器121、最小値/最大値保持レジスタ122、演算結果レジスタ123及び124は、図1に示した第1の実施形態におけるベクトルレジスタ群11、固定小数点演算器12、浮動小数点演算器13、ロードバッファ14、メモリアクセスバッファ15、メモリアクセスユニット16、最小値最大値判定器21、最小値/最大値保持レジスタ22、演算結果レジスタ23及び24と同様である。また、図10において、本体レジスタ部130、最小値/最大値レジスタ部131は、図1に示した第1の実施形態における本体レジスタ部30、最小値/最大値レジスタ部31と同様である。
この第2の実施形態では、さらに、最小値最大値判定器125が設けられている。最小値最大値判定器125は、ロードデータがロードバッファ114を経由してベクトルレジスタ群111に書き込まれる途中において、ベクトル要素の最小値及び最大値を判定している。
図11は、本発明の第2の実施形態の動作を示すフローチャートである。図11に示す本発明の第2の実施形態の処理と、図7に示した第1の実施形態の処理とは基本的に同じであり、図7におけるステップS101〜S106と、図11におけるステップS201〜S206とがそれぞれ対応している。図7に示した第1の実施形態と、図11に示す本発明の第2の実施形態の処理とでは、ステップS102及びステップS103の処理と、ステップS202及びステップS203の処理が異なっている。
すなわち、図7に示した第1の実施形態のステップS102では、依存元命令が固定小数点演算であり、ステップS103の要素内の最大値最小値算出を行うユニットが固定小数点演算器12の演算結果から要素内の最小値及び最大値を求める最小値最大値判定器21とされていたが、図11に示す第2の実施形態では、ステップS202の依存元命令がベクトルロード命令であり、ステップS203の要素内の最大値最小値算出を行うユニットがロードバッファ114からのロードデータから最小値及び最大値を求める最小値最大値判定器125に変更されている。
以上説明したように、本発明の第2の実施形態には、ロードバッファ114を経由してベクトルレジスタ群111に書き込まれるロードデータからベクトル要素の最小値及び最大値を判定する最小値最大値判定器125が設けられている。このため、依存元命令がロード命令の場合でも、ベクトルギャザー命令又はベクトルスキャッター命令の追い越し制御を行うことができる。
<第3の実施形態>
次に、本発明の第3の実施形態について説明する。図12は、本発明の第3の実施形態のベクトル型計算機の構成を示すブロック図である。図12において、ベクトルレジスタ群211、固定小数点演算器212、浮動小数点演算器213、ロードバッファ214、メモリアクセスバッファ215、メモリアクセスユニット216、最小値最大値判定器221、最小値/最大値保持レジスタ222、演算結果レジスタ223及び224、最小値最大値判定器225は、第2の実施形態におけるベクトルレジスタ群111、固定小数点演算器112、浮動小数点演算器113、ロードバッファ114、メモリアクセスバッファ115、メモリアクセスユニット116、最小値最大値判定器121、最小値/最大値保持レジスタ122、演算結果レジスタ123及び124、最小値最大値判定器125と同様である。
この第3の実施形態では、ベクトルレジスタ211中のベクトルレジスタには、本体レジスタ部230と最小値/最大値レジスタ部231とを設けると共に、さらに、有効/無効レジスタ部232を設けるようにしている。有効/無効レジスタ部232は、最小値/最大値レジスタ部231にセットされている最小値及び最大値が有効か無効かを示している。有効/無効レジスタ部232は、例えば、Validビットからなり、このValidビットが立っていれば有効を示し、Validビットが立っていなければ無効を示す。
本発明の第3の実施形態では、固定小数点演算器212からベクトルレジスタ211への書き戻し時に、最小値/最大値レジスタ部231の設定と共に、最小値/最大値レジスタ部231が有効か無効かを示す有効/無効レジスタ部232が有効にセットされ、それ以外のときには、無効にセットされる。これにより、ベクトルギャザー命令又はベクトルスキャッター命令は、有効/無効レジスタ部232の有効に設定されているときのみ追い越し判定をすることができる。それ以外の時には、動的追い越し判定は行わない。
また、ここまでの説明においては、単純なケースでの最大値、最小値検出、すなわち、固定小数点演算器からの出力の単純な最大値最小値検出か、ロードバッファからベクトルレジスタに過去戻す際の単純な最大値最小値検出を基本に説明をしてきた。
しかしながら、通常ベクトル計算機では、図13に示すようなマスク付演算が存在する。マスク付演算とは、マスクレジスタの有効な要素にのみ演算を行うというものである。図13では、要素番号0、1、4、6はマスクビットが立っているため、演算を実施しディスティネーションレジスタが更新され、要素番号2,3、5,7については、演算は実施するものの、ディスティネーションレジスタの更新が行われないという演算である。
この場合には、固定小数点演算器212の出力結果で判定している最小値最大値判定器221の判定結果が実際のベクトルレジスタの全要素中の最大値最小値と一致しないことになる。よって、この場合にも、有効/無効レジスタ部232で、最小値/最大値レジスタ部231を無効とし、誤動作を起こさないようにガードがかけられる。
また、ベクトル型計算機では、プログラム中に可変することができるVL長という機能が存在する。VL長とはベクトルレジスタのうちの、どの要素数までの計算を行うかを示すものである。図14にVL長の説明図を示す。この例では、最大VL長Nに対して、演算VL長が128に設定されている。このときのベクトル演算は最大要素数Nに対してではなく、128個の要素に対して行われるため、計算される要素は要素番号0から127までである。
VL長の変化がないときは問題はないが、プログラム中でVL長の変更を実施できるため、例えば、図6の命令列のケースにおいて、ベクトル加算命令の実行中のVL長が128でベクトルギャザー命令のVL長が256になった場合には、判定した最大値最小値が実際と合わないことになる。よって、VL長の変化があった場合においては、全ベクトルレジスタに対応する有効/無効レジスタ部232を無効に設定するようにし、誤動作を起こさないようにガードがかけられる。
なお、通常、ベクトル加算命令のVL長が128でベクトルギャザー命令のVL長を256にすることはない。反対に、ベクトル加算命令のVL長が256でベクトルギャザー命令のVL長を128にすることはありうる。前者の場合は、誤動作を起こし、後者の場合は、特に問題は起こさないが、処理の単純化のために、VL長変更のときには、すべての有効/無効レジスタ部232の有効ビットで、最小値/最大値レジスタ部231を無効化するようにした方が良い。
上記のマスク付演算問題、及び、VL長変更問題に対しては、有効/無効レジスタ部232の制御によって最小値/最大値レジスタ部231の有効/無効を設定することで、これを回避することができる。
図15は、本発明の第3の実施形態で、マスク付演算問題、及び、VL長変更問題を回避するような処理を行う場合のフローチャートである。図15の処理のうち、ステップS301からステップS303までは、前述の図7におけるステップS101からステップS103例と同じである。
次に実行した依存元命令がマスク演算であったか否かが確認される(ステップS304)。マスク演算であった場合には、最大値最小値が正しくないため、有効/無効レジスタ部232は無効にされる(ステップS306)。そして、その後のベクトルギャザー・ベクトルスキャッター命令では、最小値/最大値レジスタ部231の最小値/最大値は利用されずに、本発明で提案する追い越し制御は行われないで、処理が進められる(ステップS307/S308)。
ステップS304で、マスク演算でない場合には、これまで説明したとおり、ベクトルレジスタに演算結果と最大値最小値がライトバックされ、有効/無効レジスタ部232を有効に設定される(ステップS305)。その後、VL長の変更があったか否かがチェックされる(ステップS309)。VL長の変更がなければ、最小値/最大値レジスタ部231は正しい最大値最小値を示しているので、ステップS310,S311に進みベクトルギャザー、スキャッター命令において動的な依存検出による追い越し制御が実施される。
ステップS309において、VL長の変更を確認した場合には、ステップS312に進み、全ベクトルレジスタに対応する最小値/最大値レジスタ部231が無効化される。そして、その後のベクトルギャザー・ベクトルスキャッター命令では、最小値/最大値レジスタ部231は利用されずに、追い越し制御は行わないで、処理が進められる(ステップS307、テップS308)。
本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
本発明は、ベクトルギャザー・ベクトルスキャッター命令をもつベクトル型計算機だけでなく、ベクトルギャザー・ベクトルスキャッター命令と同等の機能をもつSIMD(Single Instruction Multiple Data)命令を実装しているスカラ型計算機への応用も可能である。
11,111,211:ベクトルレジスタ群
12,112,212:固定小数点演算器
13,113,213:浮動小数点演算器
14,114,214:ロードバッファ
15,115,215:メモリアクセスバッファ
16,116,216:メモリアクセスユニット
17,18,117,218:接続網
21,121,221:最小値最大値判定器
22,122,222:最小値/最大値保持レジスタ
23,24,123,124,223,224:演算結果レジスタ
30,130,230:本体レジスタ部
31,131,231:最小値/最大値レジスタ部
51:最小値判定部
52:レジスタ
53:パイプ間最小判定部
61:最大値判定部
62:レジスタ
63:パイプ間最大判定部
132,232:有効/無効レジスタ部

Claims (7)

  1. ベクトルパイプライン処理によりベクトル演算を行うベクトル型計算機であって、
    ベクトルギャザー命令又はベクトルスキャッター命令に対するアドレスの依存元命令を実行する固定小数点演算の演算結果を固有小数点演算器から入力し、その演算結果を用いてベクトル要素の最小値及び最大値を判定する最小値最大値判定手段と、
    前記最小値最大値判定手段で判定されたベクトル要素の最小値及び最大値を保持する最小値最大値保持手段と、
    前記ベクトルギャザー命令又は前記ベクトルスキャッター命令を実行する際に、前記最小値最大値保持手段に保持されている最小値及び最大値から、前記ベクトルギャザー命令又は前記ベクトルスキャッター命令のアドレスのアクセス範囲を特定し、前記ベクトルギャザー命令又は前記ベクトルスキャッター命令の追い越し制御を行う手段と
    を備えることを特徴とするベクトル型計算機。
  2. 前記最小値最大値判定手段の処理は、固定小数点演算のターンアラウンドタイムが浮動小数点演算処理のターンアラウンドタイムより短いことにより生じた余力時間に行うことを特徴とする請求項1に記載のベクトル型計算機。
  3. さらに、前記最小値最大値保持手段に保持されているベクトル要素の最小値及び最大値が有効か無効かを示す手段を設けることを特徴とする請求項1又は2に記載のベクトル型計算機。
  4. さらに、ベクトルレジスタへのロードデータからベクトル要素の最小値及び最大値を判定する第2の最小値最大値判定器を設けることを特徴とする請求項1から3の何れかに記載のベクトル型計算機。
  5. ベクトルパイプライン処理によりベクトル演算を行うベクトル型計算機の命令制御方法において、
    ベクトルギャザー命令又はベクトルスキャッター命令に対するアドレスの依存元命令を実行する固定小数点演算の演算結果を固有小数点演算器から入力し、その演算結果を用いてベクトル要素の最小値及び最大値を判定する工程と、
    前記判定されたベクトル要素の最小値及び最大値を保持する工程と、
    前記ベクトルギャザー命令又は前記ベクトルスキャッター命令を実行する際に、前記保持されている最小値及び最大値から、前記ベクトルギャザー命令又は前記ベクトルスキャッター命令のアドレスのアクセス範囲を特定し、前記ベクトルギャザー命令又は前記ベクトルスキャッター命令の追い越し制御を行う工程と
    を含むことを特徴とするベクトル型計算機の命令制御方法。
  6. さらに、前記保持されているベクトル要素の最小値及び最大値が有効か無効かを示す工程を設けることを特徴とする請求項5に記載のベクトル型計算機の命令制御方法。
  7. さらに、ベクトルレジスタへのロードデータからベクトル要素の最小値及び最大値を判定する第2の最小値及び最大値を判定する工程を設けることを特徴とする請求項5又は6に記載のベクトル型計算機の命令制御方法。
JP2009276535A 2009-12-04 2009-12-04 ベクトル型計算機及びベクトル型計算機の命令制御方法 Expired - Fee Related JP5573134B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009276535A JP5573134B2 (ja) 2009-12-04 2009-12-04 ベクトル型計算機及びベクトル型計算機の命令制御方法
US12/957,913 US20110138155A1 (en) 2009-12-04 2010-12-01 Vector computer and instruction control method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009276535A JP5573134B2 (ja) 2009-12-04 2009-12-04 ベクトル型計算機及びベクトル型計算機の命令制御方法

Publications (2)

Publication Number Publication Date
JP2011118743A JP2011118743A (ja) 2011-06-16
JP5573134B2 true JP5573134B2 (ja) 2014-08-20

Family

ID=44083155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009276535A Expired - Fee Related JP5573134B2 (ja) 2009-12-04 2009-12-04 ベクトル型計算機及びベクトル型計算機の命令制御方法

Country Status (2)

Country Link
US (1) US20110138155A1 (ja)
JP (1) JP5573134B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5630281B2 (ja) * 2011-01-19 2014-11-26 日本電気株式会社 ベクトル命令制御回路及びリストベクトルの追い越し制御方法
US9747101B2 (en) 2011-09-26 2017-08-29 Intel Corporation Gather-op instruction to duplicate a mask and perform an operation on vector elements gathered via tracked offset-based gathering
US9766887B2 (en) * 2011-12-23 2017-09-19 Intel Corporation Multi-register gather instruction
WO2013095608A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for vectorization with speculation support
CN104137059B (zh) * 2011-12-23 2018-10-09 英特尔公司 多寄存器分散指令
US20140136582A1 (en) * 2012-11-12 2014-05-15 Futurewei Technologies, Inc. Method and apparatus for digital automatic gain control
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
JP5522283B1 (ja) 2013-02-27 2014-06-18 日本電気株式会社 リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置
US9244684B2 (en) 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
GB2519108A (en) 2013-10-09 2015-04-15 Advanced Risc Mach Ltd A data processing apparatus and method for controlling performance of speculative vector operations
JP6256088B2 (ja) * 2014-02-20 2018-01-10 日本電気株式会社 ベクトルプロセッサ、情報処理装置および追い越し制御方法
US9891913B2 (en) * 2014-12-23 2018-02-13 Intel Corporation Method and apparatus for performing conflict detection using vector comparison operations
US9891914B2 (en) * 2015-04-10 2018-02-13 Intel Corporation Method and apparatus for performing an efficient scatter
CN111580863A (zh) * 2016-01-20 2020-08-25 中科寒武纪科技股份有限公司 一种向量运算装置及运算方法
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
CN107315566B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量循环移位运算的装置和方法
CN107315717B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
CN111651204B (zh) * 2016-04-26 2024-04-05 中科寒武纪科技股份有限公司 一种用于执行向量最大值最小值运算的装置和方法
CN111651201B (zh) * 2016-04-26 2023-06-13 中科寒武纪科技股份有限公司 一种用于执行向量合并运算的装置和方法
CN107315716B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量外积运算的装置和方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748934A (en) * 1996-05-31 1998-05-05 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order and that permits multiple precision data words
US5895501A (en) * 1996-09-03 1999-04-20 Cray Research, Inc. Virtual memory system for vector based computer systems
US5897666A (en) * 1996-12-09 1999-04-27 International Business Machines Corporation Generation of unique address alias for memory disambiguation buffer to avoid false collisions
US6094713A (en) * 1997-09-30 2000-07-25 Intel Corporation Method and apparatus for detecting address range overlaps
US7093102B1 (en) * 2000-03-29 2006-08-15 Intel Corporation Code sequence for vector gather and scatter
JP3733842B2 (ja) * 2000-07-12 2006-01-11 日本電気株式会社 ベクトルスキャタ命令制御回路及びベクトル型情報処理装置
JP3698027B2 (ja) * 2000-07-19 2005-09-21 日本電気株式会社 ベクトル収集・拡散命令実行順序制御装置
JP3789320B2 (ja) * 2001-06-12 2006-06-21 エヌイーシーコンピュータテクノ株式会社 ベクトル処理装置及び該装置を用いた追い越し制御方法
JP3988144B2 (ja) * 2004-02-23 2007-10-10 日本電気株式会社 ベクトル処理装置、及び、追い越し制御回路
US7627735B2 (en) * 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements

Also Published As

Publication number Publication date
JP2011118743A (ja) 2011-06-16
US20110138155A1 (en) 2011-06-09

Similar Documents

Publication Publication Date Title
JP5573134B2 (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
EP0368332B1 (en) Pipeline data processor
KR100681199B1 (ko) 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
IE990754A1 (en) An apparatus for software initiated prefetch and method therefor
KR101716014B1 (ko) 프로세서 명령 세트 내의 술어 계산
US8145804B2 (en) Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor
US7945766B2 (en) Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file
JP3822568B2 (ja) イベント処理
US8484446B2 (en) Microprocessor saving data stored in register and register saving method
US20050172110A1 (en) Information processing apparatus
EP0187713B1 (en) System memory for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US8332447B2 (en) Systems and methods for performing fixed-point fractional multiplication operations in a SIMD processor
TW201823972A (zh) 向量產生指令
CN107003855B (zh) 带进位的原子加法指令
EP1035471A1 (en) Computer system
CN111656319B (zh) 利用特定数检测的多流水线架构
US6233675B1 (en) Facility to allow fast execution of and, or, and test instructions
JP4916151B2 (ja) 並列演算装置
US8001358B2 (en) Microprocessor and method of processing data including peak value candidate selecting part and peak value calculating part
JP2020052862A (ja) 計算機および計算方法
US20240111537A1 (en) Store instruction merging with pattern detection
US20240103761A1 (en) Buffer circuitry for store to load forwarding
US11416261B2 (en) Group load register of a graph streaming processor
JP5266651B2 (ja) ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法
JP2920968B2 (ja) 命令処理順序制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140307

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140616

R150 Certificate of patent or registration of utility model

Ref document number: 5573134

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees