JP5751181B2 - 命令制御回路、プロセッサ、及び命令制御方法 - Google Patents

命令制御回路、プロセッサ、及び命令制御方法 Download PDF

Info

Publication number
JP5751181B2
JP5751181B2 JP2012012250A JP2012012250A JP5751181B2 JP 5751181 B2 JP5751181 B2 JP 5751181B2 JP 2012012250 A JP2012012250 A JP 2012012250A JP 2012012250 A JP2012012250 A JP 2012012250A JP 5751181 B2 JP5751181 B2 JP 5751181B2
Authority
JP
Japan
Prior art keywords
instruction
register
cycle
identification information
vector
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
JP2012012250A
Other languages
English (en)
Other versions
JP2013152544A (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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2012012250A priority Critical patent/JP5751181B2/ja
Priority to US13/713,894 priority patent/US9164767B2/en
Publication of JP2013152544A publication Critical patent/JP2013152544A/ja
Application granted granted Critical
Publication of JP5751181B2 publication Critical patent/JP5751181B2/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、命令制御回路、プロセッサ、及び命令制御方法に関する。
ベクトル処理装置(ベクトルプロセッサ)は、ベクトルレジスタファイルに格納された配列型のデータに対して、命令に応じた演算処理等をパイプライン的に行う。ベクトル処理装置は、図18に示すように複数の実行パイプラインを有し、各実行パイプラインが配列データをそれぞれ処理する。
図18は、ベクトル処理装置の構成例を示すブロック図である。図18において、IFは命令フェッチステージ、IDは命令デコードステージ、EXは演算実行ステージである。ベクトル処理装置は、命令バッファ101、データ依存検出部102、命令発行制御部103、実行パイプライン104、ベクトルレジスタファイル105、及びマルチプレクサ回路106を有する。図18は、パイプラインA、B、C及びDの4つの実行パイプライン104を有するベクトル処理装置を示している。
命令バッファ101は、記憶装置から読み出された命令(ベクトル命令)が格納される。データ依存検出部102は、先行して実行される先行命令で指定されるベクトルレジスタと、その先行命令の後に続く後続命令で指定されるベクトルレジスタとが重複するか否かを判定することで、先行命令と後続命令とのデータ依存関係の検出を行う。命令発行制御部103は、命令バッファ101に格納されている命令及びデータ依存検出部102での検出結果を受けて、命令を実行パイプライン104に発行する。命令発行制御部103は、実行パイプライン104があいたら次の命令を命令バッファ101に要求し、データ依存関係及び実行パイプライン104の空き状態に応じて、どの実行パイプライン104に命令を発行するかを決定して命令を発行する。
実行パイプライン104は、命令発行制御部103から受けた命令に従って、配列データに対する処理を実行する。実行パイプライン104の各々は、シーケンサ107及び演算部108を有する。シーケンサ107は、命令発行制御部103から受けた命令の実行に係る制御を行う。シーケンサ107は、例えば命令実行を指示したり、ベクトルレジスタファイル105に対するデータの読み出しや書き込みの実行を指示したりする。演算部108は、複数の演算器109を有し、シーケンサ107からの指示に従って処理を実行する。ここで、本明細書においては、説明の便宜上、演算部108は8個の16ビット演算器109を有するものとし、32ビットデータについては2個の演算器を用いて処理を行うものとする。
ベクトルレジスタファイル105は、配列データが格納されている。ベクトルレジスタファイル105に格納されている配列データは、マルチプレクサ回路106を介して実行パイプライン104に供給される。なお、ベクトルレジスタファイル105にはまだ書き込まれていないが、すでに演算結果として生成されている配列データが、マルチプレクサ回路106を介して実行パイプライン104に供給可能になっている。
配列データのサイズ、すなわち配列要素の個数は、ベクトル長(VL)によって指定される。ベクトル長(VL)によって指定された個数の配列要素は、1つの配列レジスタを構成し、1つの配列レジスタに対して1つの論理ベクトルレジスタ番号が対応する。各配列要素のサイズは、ベクトル処理装置が扱うデータ語長に応じて割り当てられる。論理ベクトルレジスタ番号に対応する物理ベクトルレジスタ番号の先頭値は2のべき乗の値となる。ベクトル長(VL)が2のべき乗である場合には、ベクトル長(VL)に論理ベクトルレジスタ番号を乗算した値が、その論理ベクトルレジスタ番号に対応する物理ベクトルレジスタ番号の開始値となる。また、ベクトル長(VL)が2のべき乗でない場合には、ベクトル長(VL)以上の2のべき乗の値のうちで最小の値に論理ベクトルレジスタ番号を乗算した値が、その論理ベクトルレジスタ番号に対応する物理ベクトルレジスタ番号の開始値となる。
以下の説明では、i、jを添え字として、vriが論理ベクトルレジスタ番号iのレジスタを表し、vr[j]が物理ベクトルレジスタ番号jのレジスタを表すものとする。ベクトル処理装置が扱うデータ語長がHalfword(16ビット)である場合には、レジスタvr[j]の1つが1つの配列要素に対応し、データ語長がWord(32ビット)である場合には、レジスタvr[j]の2つを組としたものが1つの配列要素に対応する。
例えば、ベクトル長(VL)が2のべき乗である32の場合におけるベクトルレジスタの論理ベクトルレジスタ番号と物理ベクトルレジスタ番号との対応、及び演算処理が実行されるときの処理順序は、図19に示すようになる。また、例えば、ベクトル長(VL)が2のべき乗でない40の場合におけるベクトルレジスタの論理ベクトルレジスタ番号と物理ベクトルレジスタ番号との対応、及び演算処理が実行されるときの処理順序は、図20に示すようになる。
図19(A)に示すようにデータ語長がHalfwordである場合には、論理番号iのベクトルレジスタvriは、物理番号(32×i)〜(32×i+31)のベクトルレジスタvr[32×i]〜vr[32×i+31]が対応する。そして、例えばHalfword演算命令で論理番号0のベクトルレジスタvr0が指定された場合には、1サイクル目では物理番号0〜7のベクトルレジスタvr[0]〜vr[7]が処理対象になり、2サイクル目では物理番号8〜15のベクトルレジスタvr[8]〜vr[15]が処理対象になる。また、3サイクル目では物理番号16〜23のベクトルレジスタvr[16]〜vr[23]が処理対象になり、4サイクル目では物理番号24〜31のベクトルレジスタvr[24]〜vr[31]が処理対象になる。
また、図19(B)に示すようにデータ語長がWordである場合には、論理番号iのベクトルレジスタvriは、物理番号(32×i)〜(32×i+63)のベクトルレジスタvr[32×i]〜vr[32×i+63]が対応する。そして、例えばWord演算命令で論理番号0のベクトルレジスタvr0が指定された場合には、1サイクル目では物理番号0〜7のベクトルレジスタvr[0]〜vr[7]が処理対象になり、2サイクル目では物理番号8〜15のベクトルレジスタvr[8]〜vr[15]が処理対象になる。3サイクル目では物理番号16〜23のベクトルレジスタvr[16]〜vr[23]が処理対象になり、4サイクル目では物理番号24〜31のベクトルレジスタvr[24]〜vr[31]が処理対象になり、5サイクル目では物理番号32〜39のベクトルレジスタvr[32]〜vr[39]が処理対象になる。また、6サイクル目では物理番号40〜47のベクトルレジスタvr[40]〜vr[47]が処理対象になり、7サイクル目では物理番号48〜55のベクトルレジスタvr[48]〜vr[55]が処理対象になり、8サイクル目では物理番号56〜63のベクトルレジスタvr[56]〜vr[63]が処理対象になる。
図20(A)に示すようにデータ語長がHalfwordである場合には、論理番号iのベクトルレジスタvriは、物理番号(64×i)〜(64×i+39)のベクトルレジスタvr[64×i]〜vr[64×i+39]が対応する。そして、例えばHalfword演算命令で論理番号0のベクトルレジスタvr0が指定された場合には、1サイクル目から4サイクル目において処理対象になるレジスタはベクトル長(VL)が32である場合と同様である。さらに5サイクル目で物理番号32〜39のベクトルレジスタvr[32]〜vr[39]が処理対象になる。
また、図20(B)に示すようにデータ語長がWordである場合には、論理番号iのベクトルレジスタvriは、物理番号(64×i)〜(64×i+79)のベクトルレジスタvr[64×i]〜vr[64×i+79]が対応する。そして、例えばWord演算命令で論理番号0のベクトルレジスタvr0が指定された場合には、1サイクル目〜8サイクル目において処理対象になるレジスタはベクトル長(VL)が32である場合と同様である。さらに、9サイクル目で物理番号64〜71のベクトルレジスタvr[64]〜vr[71]が処理対象になり、10サイクル目で物理番号72〜79のベクトルレジスタvr[72]〜vr[79]が処理対象になる。
図18に示したベクトル処理装置は、“INS A,B,C”という命令を受けると、論理ベクトルレジスタ番号Aのベクトルレジスタ及び論理ベクトルレジスタ番号Bのベクトルレジスタにおける対応するデータを用いて命令INSに応じた演算処理を行い、処理結果を論理ベクトルレジスタ番号Cのベクトルレジスタに格納する。
例えば、Halfword演算命令“vaddh vr1,vr6,vr7”が、ある実行パイプライン104に発行されたとする。命令“vaddh vr1,vr6,vr7”は、論理番号1のベクトルレジスタvr1と論理番号6のベクトルレジスタvr6とのデータを加算した結果を論理番号7のベクトルレジスタvr7に格納させる命令である。この命令を受けた実行パイプライン104は、1サイクル目において下記の演算処理を実行する。
vr[224]=vr[32]+vr[192]
vr[225]=vr[33]+vr[193]
・・・
vr[231]=vr[39]+vr[199]
以降、ベクトル長(VL)が32である場合には4サイクル目まで処理対象とするベクトルレジスタをサイクル毎に変更して演算処理を行い、ベクトル長(VL)が40である場合には5サイクル目まで処理対象とするベクトルレジスタをサイクル毎に変更して演算処理を行う。
また、例えば、Word演算命令“vadd vr2,vr4,vr0”が、ある実行パイプライン104に発行されたとする。命令“vadd vr2,vr4,vr0”は、論理番号2のベクトルレジスタvr2と論理番号4のベクトルレジスタvr4とのデータを加算した結果を論理番号0のベクトルレジスタvr0に格納させる命令である。この命令を受けた実行パイプライン104は、1サイクル目において下記の演算処理を実行する。
vr[1-0]=vr[65-64]+vr[129-128]
vr[3-2]=vr[67-66]+vr[131-130]
vr[5-4]=vr[69-68]+vr[133-132]
vr[7-6]=vr[71-70]+vr[135-134]
以降、ベクトル長(VL)が32である場合には8サイクル目まで処理対象とするベクトルレジスタをサイクル毎に変更して演算処理を行い、ベクトル長(VL)が40である場合には10サイクル目まで処理対象とするベクトルレジスタをサイクル毎に変更して演算処理を行う。
このようにベクトル処理装置では、1つの命令が1つの実行パイプラインで複数サイクルに渡って実行される。実行パイプラインは、1つの命令について処理が完了するまでの複数サイクルに渡って占有される。また、ベクトル処理装置が有する各実行パイプラインは、並列に動作可能である。したがって、先行命令で指定されたレジスタと後続命令で指定されたレジスタとが重複する場合には、重複するレジスタへのアクセスを適切に行って先行命令及び後続命令の各処理に反映させるために、相互の命令の発行タイミングを調整する必要がある。そのため、ベクトル処理装置は、命令発行時に、先行命令と後続命令との間のデータ依存関係の有無を判定する。
データ依存関係に係るハザード(データ・ハザード)には、RAW(read after write)ハザードやWAR(write after read)ハザードなどがある。RAWハザードは、先行命令でベクトルレジスタへ書き込みを行った後に、後続命令が先行命令で書き込みを行ったベクトルレジスタを使用して行う処理において、後続命令での読み出しが先行命令での書き込みより前に行われるというハザードである。また、WARハザードは、先行命令でベクトルレジスタの読み出しを行った後に、後続命令で同一のベクトルレジスタへ書き込みを行う処理において、後続命令での書き込みが先行命令での読み出しより前に行われるというハザードである。
先行命令と後続命令との間でデータ依存関係が検出された場合には、ベクトル処理装置は、先行命令における処理が行われるまで一定のサイクルだけ後続命令の発行を遅延させ、データ・ハザードをストール(停止)によって回避するように制御する。図21は、データ・ハザードを回避する動作例を示す図である。なお、図21に示した例におけるベクトル長(VL)は32である。
図21(A)は、RAWハザードの回避に係る命令の発行タイミングの例を示している。先行命令として“vadd vr2,vr4,vr0”をパイプラインAに発行し、それに続く後続命令として“vaddh vr1,vr6,vr7”をパイプラインBに発行する例を示している。命令“vadd vr2,vr4,vr0”は、論理番号2のベクトルレジスタvr2と論理番号4のベクトルレジスタvr4とのデータを加算した結果を論理番号0のベクトルレジスタvr0に格納するWord演算命令である。また、命令“vaddh vr1,vr6,vr7”は、論理番号1のベクトルレジスタvr1と論理番号6のベクトルレジスタvr6とのデータを加算した結果を論理番号7のベクトルレジスタvr7に格納するHalfword演算命令である。図21(A)において、命令“vadd vr2,vr4,vr0”については、演算結果が書き込まれるデスティネーションレジスタである論理番号0のベクトルレジスタvr0の物理番号(先頭値)を各サイクル毎に示している。また、命令“vaddh vr1,vr6,vr7”については、演算処理に用いるデータが読み出されるソースレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。
先行命令“vadd vr2,vr4,vr0”による処理及び後続命令“vaddh vr1,vr6,vr7”による処理において、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]が重複する。例えば、物理番号32〜39のベクトルレジスタvr[32]〜vr[39]は、後続命令“vaddh vr1,vr6,vr7”の処理では、はじめのサイクルでデータの読み出しが行われるが、先行命令“vadd vr2,vr4,vr0”の処理では5サイクル目でデータの書き込みが行われる。先行命令の処理結果を後続命令の処理に反映させるには、後続命令“vaddh vr1,vr6,vr7”での物理番号32〜39のベクトルレジスタvr[32]〜vr[39]からのデータの読み出しは、サイクル5より後に行う必要がある。そのため、サイクル2〜サイクル5では、RAWハザードによるストールを発生させ、後続命令“vaddh vr1,vr6,vr7”はサイクル6に発行される。
図21(B)は、WARハザードの回避に係る命令の発行タイミングの例を示している。先行命令として“vadd vr0,vr4,vr2”をパイプラインAに発行し、それに続く後続命令として“vaddh vr6,vr7,vr1”をパイプラインBに発行する例を示している。命令“vadd vr0,vr4,vr2”は、論理番号0のベクトルレジスタvr0と論理番号4のベクトルレジスタvr4とのデータを加算した結果を論理番号2のベクトルレジスタvr2に格納するWord演算命令である。また、命令“vaddh vr6,vr7,vr1”は、論理番号6のベクトルレジスタvr6と論理番号7のベクトルレジスタvr7とのデータを加算した結果を論理番号1のベクトルレジスタvr1に格納するHalfword演算命令である。図21(B)において、命令“vadd vr0,vr4,vr2”については、演算処理に用いるデータが読み出されるソースレジスタである論理番号0のベクトルレジスタvr0の物理番号(先頭値)を各サイクル毎に示している。また、命令“vaddh vr6,vr7,vr1”については、演算結果が書き込まれるデスティネーションレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。
先行命令“vadd vr0,vr4,vr2”による処理及び後続命令“vaddh vr6,vr7,vr1”による処理において、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]が重複する。例えば、物理番号32〜39のベクトルレジスタvr[32]〜vr[39]は、後続命令“vaddh vr6,vr7,vr1”の処理では、はじめのサイクルでデータの書き込みが行われるが、先行命令“vadd vr0,vr4,vr2”の処理では5サイクル目でデータの読み出しが行われる。先行命令での処理を後続命令の処理結果が書き込まれる前に行うには、後続命令“vaddh vr6,vr7,vr1”での物理番号32〜39のベクトルレジスタvr[32]〜vr[39]へのデータの書き込みを、サイクル5より後に行うようにすれば良い。そのため、サイクル2〜サイクル5では、WARハザードによるストールを発生させ、後続命令“vaddh vr6,vr7,vr1”はサイクル6に発行される。
また、下記特許文献1には、レジスタ干渉があり(先行命令と後続命令との間にデータ依存関係を有し)、かつ先行命令が後続命令より長い処理時間を要する場合に、後続命令の開始時期を設定することで、先行命令の実行完了まで待つ必要をなくし、処理性能を改善する技術が提案されている。
特開昭60−178580号公報
しかしながら、ベクトル処理装置では、配列型のデータを扱うため、データ・ハザードによるストールを発生させるとストール期間が長くなるという問題がある。例えば、無線ベースバンド処理のような分野では、データ語長が異なるデータを扱うことがある。そのため、例えば先行のWord命令の処理途中から処理結果を格納するベクトルレジスタを、後続のHalfword命令が使用する場合には、後続命令で使用するベクトルレジスタへの先行命令による書き込みが完了するまで、後続命令を長い期間ストールさせる必要があるという問題があった。
本発明の目的は、先行命令と後続命令の間でのRAWハザード及びWARハザードを、ストールを発生させることなく回避でき、後続命令を効率良く発行できる命令制御回路、プロセッサ、及び命令制御方法を提供することにある。
命令制御回路の一態様は、複数の命令を保持する保持部と、保持部から入力される複数の命令のうち、先行命令と後続命令とのデータ依存関係を検出するデータ依存検出部と、その検出結果に基づいて、命令の発行を制御する命令発行制御部とを有する。命令発行制御部は、先行命令と後続命令とのデータ依存関係がある場合に、先行命令と同じ命令種類を有する新規の命令を生成して先行命令と後続命令との間に発行する。先行命令とデータ依存関係にある後続命令の第1レジスタの識別情報から新規の命令の第2レジスタの識別情報を決定し、先行命令の第2レジスタの識別情報と新規の命令の第2レジスタの識別情報との差分を算出し、算出した差分と先行命令の第1レジスタの識別情報とから新規の命令の第1レジスタの識別情報を決定し、先行命令の処理完了サイクルと所定のベクトル長とから新規の命令の処理完了サイクルを決定し、新規の命令を生成する。
開示の命令制御回路は、先行命令と後続命令とのデータ依存関係がある場合に、新規の命令を生成して先行命令と後続命令との間に発行することで、先行命令と後続命令とのデータ・ハザードを、ストールを発生させることなく回避し、後続命令を効率良く発行することができる。
本発明の第1の実施形態における命令発行制御部の構成例を示す図である。 本実施形態及び従来技術による命令発行制御の例を示すフローチャートである。 第1の実施形態における命令発行制御部の動作例を示すフローチャートである。 第1の実施形態及び一般的な技術での処理動作例(VL=32、RAWハザード回避)を示す図である。 第1の実施形態及び一般的な技術での処理動作例(VL=40、RAWハザード回避)を示す図である。 第1の実施形態及び一般的な技術での処理動作例(VL=32、RAWハザード回避)を示す図である。 第1の実施形態及び一般的な技術での処理動作例(VL=40、RAWハザード回避)を示す図である。 本発明の第2の実施形態における命令発行制御部の構成例を示す図である。 第2の実施形態における命令発行制御部の動作例を示すフローチャートである。 第2の実施形態及び一般的な技術での処理動作例(VL=32、RAWハザード回避)を示す図である。 第2の実施形態及び一般的な技術での処理動作例(VL=40、RAWハザード回避)を示す図である。 第2の実施形態及び一般的な技術での処理動作例(VL=32、RAWハザード回避)を示す図である。 第2の実施形態及び一般的な技術での処理動作例(VL=40、RAWハザード回避)を示す図である。 第2の実施形態及び一般的な技術での処理動作例(VL=32、WARハザード回避)を示す図である。 第2の実施形態及び一般的な技術での処理動作例(VL=40、WARハザード回避)を示す図である。 第2の実施形態及び一般的な技術での処理動作例(VL=32、WARハザード回避)を示す図である。 第2の実施形態及び一般的な技術での処理動作例(VL=40、WARハザード回避)を示す図である。 ベクトル処理装置の構成例を示す図である。 ベクトルレジスタの論理番号と物理番号との対応、及び処理順序の例を示す図である。 ベクトルレジスタの論理番号と物理番号との対応、及び処理順序の例を示す図である。 データ・ハザードを回避する動作例を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
本発明の実施形態におけるベクトル処理装置(ベクトルプロセッサ)の全体構成は、図18に示したベクトル処理装置と同様であるので、その説明は省略する。なお、図18においては、4つの実行パイプラインを有するベクトル処理装置を例示したが、これに限定されない。本実施形態におけるベクトル処理装置は、複数の実行パイプラインを有していれば良く、ベクトル処理装置が有する実行パイプラインの数は任意である。以下では、本発明の実施形態によるベクトル処理装置における命令発行制御について説明する。
なお、以下の説明では、データ語長がHalfword(16ビット)であって、論理ベクトルレジスタ番号Aのベクトルレジスタと論理ベクトルレジスタ番号Bのベクトルレジスタとのデータを加算し、その処理結果を論理ベクトルレジスタ番号Cのベクトルレジスタに格納するHalfword演算命令を“vaddh A,B,C”と記す。また、データ語長がWord(32ビット)であって、論理ベクトルレジスタ番号Aのベクトルレジスタと論理ベクトルレジスタ番号Bのベクトルレジスタとのデータを加算し、その処理結果を論理ベクトルレジスタ番号Cのベクトルレジスタに格納するWord演算命令を“vadd A,B,C”と記す。また、ベクトルレジスタの論理ベクトルレジスタ番号を、単に論理番号とも称し、ベクトルレジスタの物理ベクトルレジスタ番号を、単に物理番号とも称する。
(第1の実施形態)
本発明の第1の実施形態について説明する。
図1は、第1の実施形態における命令発行制御部の構成例を示すブロック図である。図1において、命令バッファ11、データ依存検出部12、及び命令発行制御部13Aは、図18に示した命令バッファ101、データ依存検出部102、及び命令発行制御部103にそれぞれ対応する。
命令バッファ11は、記憶装置等から読み出された命令(ベクトル命令)が格納される。データ依存検出部12は、先行して実行される先行命令INSAで指定されるベクトルレジスタと、その後に続く後続命令INSBで指定されるベクトルレジスタとが重複するか否かを判定することで、先行命令と後続命令とのデータ依存関係の検出を行う。
命令発行制御部13Aは、命令バッファ11に格納されている命令及びデータ依存検出部12での検出結果を受けて、命令を実行パイプラインに発行する。命令発行制御部13Aは、デコード部21、第1の処理完了サイクル算出部22、マルチプレクサ回路23、24、命令発行制御テーブル25、及び命令生成部26を有する。命令生成部26は、演算部27、28、29、及び第2の処理完了サイクル算出部30を有する。
命令発行制御部13Aは、データ依存関係及び実行パイプラインの空き状態に応じて、次の命令をどの実行パイプラインに発行するかを決定し発行する。命令発行制御部13Aは、データ依存検出部12から供給される検出結果SBに基づき、通常は実行パイプラインがあいたら命令バッファ11に対して命令の発行要求SAを出力する。その発行要求SAに対する応答として命令バッファ11から命令発行制御部13Aに次の命令が供給されると、デコード部21は供給された命令をデコードする。また、第1の処理完了サイクル算出部22は、デコード部21でのデコード結果より得られるデータ語長の情報及びレジスタRVLに格納されているベクトル長(VL)の情報に基づいて、命令の処理完了サイクルを算出する。そして、デコード部21でのデコード結果及び第1の処理完了サイクル算出部22で算出した処理完了サイクルが、マルチプレクサ回路23を介して実行パイプラインのシーケンサに出力され、命令に応じた演算処理が実行される。また、シーケンサに発行したデコード部21でのデコード結果及び第1の処理完了サイクル算出部22で算出した処理完了サイクルは、マルチプレクサ回路24を介して命令発行制御テーブル25に登録される。命令発行制御テーブル25に登録される情報には、命令種類、ソースレジスタの論理番号(src1、src2)、デスティネーションレジスタの論理番号(dst1)、及び処理完了サイクルが含まれる。
ここで、例えば先行命令がWord演算命令であり、後続命令がHalfword演算命令であって、先行命令と後続命令の間にRAWハザードに対応するデータ依存関係を有する場合、従来の命令発行制御部は、図2(A)に示すような命令発行の制御を行う。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があると判定すると(S101のYES)、先行命令でベクトルレジスタへの書き込みが完了するまで後続命令を発行できない、すなわちストールさせる(S102)。
それに対して、第1の実施形態における命令発行制御部13Aは、例えば先行のWord演算命令と後続のHalfword演算命令の間にRAWハザードに対応するデータ依存関係を有する場合には、図2(B)に示すような命令発行の制御を行う。命令発行制御部13Aは、データ依存検出部12からの検出結果SBにより先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があると判定すると(S11のYES)、先行命令における後半部分の処理と等価となる新規の命令を生成する(S12)。なお、先行命令における後半部分の処理(後半処理)とは、先行命令の処理のうち、後続命令との間でRAWハザードに対応するデータ依存関係を持つベクトルレジスタに書き込みを行う処理である。次に、命令発行制御部13Aは、生成した新規の命令を空き状態の実行パイプラインに発行し(S13)、その後に後続命令を空き状態の実行パイプラインに発行する。
図3は、第1の実施形態における命令発行制御部13Aの動作例を示すフローチャートである。図3に示すように先行命令と後続命令の間にRAWハザードに対応するデータ依存関係が検出されると(S21)、命令発行制御部13Aの命令生成部26は、まず先行命令の情報を命令発行制御テーブル25から取得する。取得する先行命令の情報は、命令種類、ソースレジスタの論理番号、デスティネーションレジスタの論理番号、及び処理完了サイクルを含む。命令生成部26は、得られた先行命令の情報に基づいて、図3に示すフローチャートの順序で、新規の命令に必要な各情報を抽出及び算出した上で、新規の命令を生成する。以下に、図3のフローチャートに基づいて、新規の命令に必要な各情報の抽出及び算出について説明する。
命令生成部26は、得られた先行命令の命令種類を、新規の命令の命令種類にする(S22)。次に、命令生成部26は、データ依存検出部12にある後続命令から先行命令とデータ依存関係にあるソースレジスタの論理番号を取得して、新規の命令のデスティネーションレジスタの論理番号にする(S23)。次に、命令生成部26は、新規の命令のデスティネーションレジスタの論理番号と先行命令のデスティネーションレジスタの論理番号との差分を演算部27で算出する(S24)。続いて、命令生成部26は、演算部27によって算出された差分値を、先行命令のソースレジスタの論理番号に演算部28、29で加算して、加算によって得られた結果を、新規の命令のソースレジスタの論理番号にする(S25)。以上のようにして、新規の命令のソースレジスタの論理番号及びデスティネーションレジスタの論理番号が得られる。
次に、命令生成部26は、新規の命令の処理完了サイクルを第2の処理完了サイクル算出部30で算出する(S26)。この算出処理では、まずレジスタRVLに設定されているベクトル長(VL)の情報に基づいて、先行命令における前半部分で処理されるベクトル長(VL)を算出する。先行命令における前半部分で処理されるベクトル長(VL)は、CEILPOW2(VL)/2で算出できる。ここで、CEILPOW2(X)は、X以上の最小の2のべき乗の値をとる関数であり、例えばCEILPOW2(32)=32であり、CEILPOW2(40)=64である。そして、算出された先行命令における前半部分で処理されるベクトル長(VL)を1サイクルに処理するレジスタ数で割ることで、先行命令における前半部分の処理の処理完了サイクルを算出する。本実施形態において1サイクルに処理するレジスタ数は、例えばデータ語長がWordの場合には4であり、データ語長がHalfwordの場合には8である。続いて、先行命令の処理完了サイクルから先行命令における前半部分の処理の処理完了サイクルを減算し、新規の命令の処理完了サイクルを算出する。
次に、命令発行制御部13Aは、命令生成部26で生成された新規の命令及び処理完了サイクルを、マルチプレクサ回路23を介して実行パイプラインのシーケンサに出力するとともに、マルチプレクサ回路24を介して命令発行制御テーブル25に登録する(S27)。なお、命令バッファ11から読み出した命令と生成した新規の命令とのマルチプレクサ回路23、24による選択は、データ依存検出部12からの検出結果SB、すなわちデータ依存関係の有無に応じて決める。
このように、先行命令と後続命令の間にRAWハザードに対応するデータ依存関係を有する場合には、命令生成部26で生成された新規の命令を後続命令の前に発行し、その後に後続命令を発行する。後続命令で読み出すベクトルレジスタは、生成した新規の命令によって書き込むため、処理結果が保証される。したがって、従来発生していたような、ストールを発生させることなく、先行命令と後続命令の間でのRAWハザードを回避し、後続命令を効率良く発行することができる。
例えば、ベクトル長(VL)が32で、先行命令がWordの加算命令“vadd vr2,vr4,vr0”であり、後続命令がHalfwordの加算命令“vaddh vr1,vr6,vr7”である場合の処理動作例を図4に示す。先行命令“vadd vr2,vr4,vr0”による処理及び後続命令“vaddh vr1,vr6,vr7”による処理においては、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]についてRAWハザードに対応するデータ依存関係がある。
図4(A)に示されるように一般的なベクトル処理装置では、例えばサイクル1で先行命令“vadd vr2,vr4,vr0”がパイプラインAに発行されると、サイクル5で物理番号32〜39のベクトルレジスタvr[32]〜vr[39]に処理結果が書き込まれる。したがって、サイクル2〜サイクル5では、RAWハザードによるストールを発生させ、はじめのサイクルで物理番号32〜39のベクトルレジスタvr[32]〜vr[39]からデータを読み出す後続命令“vaddh vr1,vr6,vr7”はサイクル6に発行される。
一方、図4(B)に示されるように第1の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr2,vr4,vr0”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があるので、命令発行制御部13Aは、先行命令における後半部分の処理と等価となる新規の命令“vadd' vr3,vr5,vr1”を生成し、サイクル2でパイプラインBに発行する。なお、生成された命令であることを示すためにvadd'と記したが、演算自体はvaddと同様である(以下も同様)。これにより、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に対し、先行命令“vadd vr2,vr4,vr0”により行われる処理と同じ処理が、サイクル2から実行される。そのため、先行命令“vadd vr2,vr4,vr0”での処理を待つことなく、続くサイクル3で後続命令“vaddh vr1,vr6,vr7”をパイプラインCに発行でき、その命令を実行することができる。
また、例えば、ベクトル長(VL)が40で、先行命令がWordの加算命令“vadd vr2,vr4,vr0”であり、後続命令がHalfwordの加算命令“vaddh vr1,vr6,vr7”である場合の処理動作例を図5に示す。先行命令“vadd vr2,vr4,vr0”による処理及び後続命令“vaddh vr1,vr6,vr7”による処理においては、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]についてRAWハザードに対応するデータ依存関係がある。
図5(A)に示されるように一般的なベクトル処理装置では、例えばサイクル1で先行命令“vadd vr2,vr4,vr0”がパイプラインAに発行されると、サイクル9で物理番号64〜71のベクトルレジスタvr[64]〜vr[71]に処理結果が書き込まれる。したがって、サイクル2〜サイクル9では、RAWハザードによるストールを発生させ、はじめのサイクルで物理番号64〜71のベクトルレジスタvr[64]〜vr[71]からデータを読み出す後続命令“vaddh vr1,vr6,vr7”はサイクル10に発行される。
一方、図5(B)に示されるように第1の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr2,vr4,vr0”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があるので、命令発行制御部13Aは、先行命令における後半部分の処理と等価となる新規の命令“vadd' vr3,vr5,vr1”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に対し、先行命令“vadd vr2,vr4,vr0”により行われる処理と同じ処理が、サイクル2から実行される。そのため、先行命令“vadd vr2,vr4,vr0”での処理を待つことなく、続くサイクル3で後続命令“vaddh vr1,vr6,vr7”をパイプラインCに発行でき、その命令を実行することができる。
なお、図4(A)、(B)及び図5(A)、(B)において、命令“vadd vr2,vr4,vr0”については、デスティネーションレジスタである論理番号0のベクトルレジスタvr0の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd' vr3,vr5,vr1”については、デスティネーションレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。また、命令“vaddh vr1,vr6,vr7”については、ソースレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。
先行命令がWordの演算命令であり、後続命令がHalfwordの演算命令である場合について一例を示したが、先行命令及び後続命令がともにWordの演算命令である場合も同様に処理可能である。例えば、ベクトル長(VL)が32で、先行命令がWordの加算命令“vadd vr4,vr6,vr0”であり、後続命令がWordの加算命令“vadd vr1,vr8,vr10”である場合の処理動作例を図6に示す。先行命令“vadd vr4,vr6,vr0”による処理及び後続命令“vadd vr1,vr8,vr10”による処理においては、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]についてRAWハザードに対応するデータ依存関係がある。
図6(A)に示されるように一般的なベクトル処理装置では、例えばサイクル1で先行命令“vadd vr4,vr6,vr0”がパイプラインAに発行されると、サイクル5で物理番号32〜39のベクトルレジスタvr[32]〜vr[39]に処理結果が書き込まれる。したがって、サイクル2〜サイクル5では、RAWハザードによるストールを発生させ、はじめのサイクルで物理番号32〜39のベクトルレジスタvr[32]〜vr[39]からデータを読み出す後続命令“vadd vr1,vr8,vr10”はサイクル6に発行される。
一方、図6(B)に示されるように第1の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr4,vr6,vr0”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があるので、命令発行制御部13Aは、先行命令における後半部分の処理と等価となる新規の命令“vadd' vr5,vr7,vr1”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に対し、先行命令“vadd vr4,vr6,vr0”により行われる処理と同じ処理が、サイクル2から実行される。そのため、先行命令“vadd vr4,vr6,vr0”での処理を待つことなく、続くサイクル3で後続命令“vadd vr1,vr8,vr10”をパイプラインCに発行でき、その命令を実行することができる。
また、例えば、ベクトル長(VL)が40で、先行命令がWordの加算命令“vadd vr4,vr6,vr0”であり、後続命令がWordの加算命令“vadd vr1,vr8,vr10”である場合の処理動作例を図7に示す。先行命令“vadd vr4,vr6,vr0”による処理及び後続命令“vadd vr1,vr8,vr10”による処理においては、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]についてRAWハザードに対応するデータ依存関係がある。
図7(A)に示されるように一般的なベクトル処理装置では、例えばサイクル1で先行命令“vadd vr4,vr6,vr0”がパイプラインAに発行されると、サイクル9で物理番号64〜71のベクトルレジスタvr[64]〜vr[71]に処理結果が書き込まれる。したがって、サイクル2〜サイクル9では、RAWハザードによるストールを発生させ、はじめのサイクルで物理番号64〜71のベクトルレジスタvr[64]〜vr[71]からデータを読み出す後続命令“vadd vr1,vr8,vr10”はサイクル10に発行される。
一方、図7(B)に示されるように第1の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr4,vr6,vr0”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があるので、命令発行制御部13Aは、先行命令における後半部分の処理と等価となる新規の命令“vadd' vr5,vr7,vr1”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に対し、先行命令“vadd vr4,vr6,vr0”により行われる処理と同じ処理が、サイクル2から実行される。そのため、先行命令“vadd vr4,vr6,vr0”での処理を待つことなく、続くサイクル3で後続命令“vadd vr1,vr8,vr10”をパイプラインCに発行でき、その命令を実行することができる。
なお、図6(A)、(B)及び図7(A)、(B)において、命令“vadd vr4,vr6,vr0”については、デスティネーションレジスタである論理番号0のベクトルレジスタvr0の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd' vr5,vr7,vr1”については、デスティネーションレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd vr1,vr8,vr10”については、ソースレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
前述した第1の実施形態におけるベクトル処理装置によれば、先行命令と後続命令の間でのRAWハザードを回避することができる。しかし、生成された新規の命令で実行されるため、先行命令での後半部分の処理はなくても良い。また、先行命令と後続命令の間でのWARハザードを回避できるようにするには、処理結果を保証するために、先行命令での後半部分の処理を実行しないように制御する必要がある。
以下に説明する第2の実施形態におけるベクトル処理装置は、先行命令における後半部分の処理と等価な新規の命令を発行する場合には、新規の命令を発行した後、先行命令の処理完了サイクルを変更して先行命令での後半部分の処理を中止するものである。
図8は、第2の実施形態における命令発行制御部の構成例を示すブロック図である。この図8において、図1に示した構成要素等と同一の機能を有する構成要素等には同一の符号を付し、重複する説明は省略する。図8において、命令バッファ11、データ依存検出部12、及び命令発行制御部13Bは、図18に示した命令バッファ101、データ依存検出部102、及び命令発行制御部103にそれぞれ対応する。
第2の実施形態における命令発行制御部13Bは、デコード部21、第1の処理完了サイクル算出部22、マルチプレクサ回路23、24、命令発行制御テーブル25、及び命令生成部26に加え、前半処理完了サイクル変更部31を有する。前半処理完了サイクル変更部31は、第2の処理完了サイクル算出部30で算出された先行命令における前半部分の処理の処理完了サイクルを受ける。前半処理完了サイクル変更部31は、その先行命令における前半部分の処理の処理完了サイクルを、先行命令を実行している実行パイプラインのシーケンサに出力するとともに、命令発行制御テーブル25に登録する。
例えば、前半処理完了サイクル変更部31は、先行命令における前半部分の処理の処理完了サイクルをイネーブル信号にのせて、先行命令を実行している実行パイプラインのシーケンサに出力する。シーケンサは、命令発行制御部13Bからのイネーブル信号を受けると、すでに入力した処理完了サイクルを前半部分の処理の処理完了サイクルで上書きし、上書きしたサイクルまで処理を実行することで、後半部分の処理を中止する。
第2の実施形態における命令発行制御部13Bの動作は、基本的には第1の実施形態における命令発行制御部13Aの動作と同様であるが、先行命令と後続命令の間にRAWハザード又はWARハザードに対応するデータ依存関係が検出された場合の動作が異なる。図9は、第2の実施形態における命令発行制御部13Bの動作例を示すフローチャートである。先行命令と後続命令の間にRAWハザード又はWARハザードに対応するデータ依存関係が検出されると(S31)、ステップS32以降の処理を実行する。ステップS32〜ステップS36までの処理は、図3に示した第1の実施形態におけるステップS22〜ステップS26までの処理に対応する。
なお、WARハザードに対応するデータ依存関係が検出された場合には、ステップS33では、命令生成部26が、後続命令から先行命令とデータ依存関係にあるデスティネーションレジスタの論理番号を取得し、新規の命令の第1ソースレジスタの論理番号にする。また、ステップS34では、命令生成部26が、新規の命令の第1ソースレジスタの論理番号と先行命令で後続命令とデータ依存関係にある第1ソースレジスタの論理番号との差分を算出する。そして、ステップS35では、命令生成部26が、算出した差分値を、先行命令の第2ソースレジスタの論理番号及びデスティネーションレジスタの論理番号に加算し、得られた結果を新規の命令の第2ソースレジスタの論理番号及びデスティネーションレジスタの論理番号にする。
ステップS37にて、命令生成部26及び前半処理完了サイクル変更部31は、ステップS36において算出される先行命令における前半部分の処理の処理完了サイクルを、先行命令の処理完了サイクルにする。次に、ステップS38にて、命令発行制御部13Bは、命令生成部26で生成された新規の命令及び処理完了サイクルを、マルチプレクサ回路23を介して実行パイプラインのシーケンサに出力するとともに、マルチプレクサ回路24を介して命令発行制御テーブル25に登録する。また、前半処理完了サイクル変更部31は、先行命令の処理完了サイクルを、先行命令を実行している実行パイプラインのシーケンサに出力するとともに、命令発行制御テーブル25に登録する。
このように、先行命令と後続命令の間にRAWハザード又はWARハザードに対応するデータ依存関係を有する場合には、命令生成部26で生成された新規の命令を後続命令の前に発行し、その後に後続命令を発行する。また、先行命令の処理完了サイクルを先行命令における前半部分の処理の処理完了サイクルに変更する。例えば、RAWハザードに対応するデータ依存関係を有する場合には、後続命令で読み出すベクトルレジスタは、生成した新規の命令によって書き込むため、処理結果が保証される。さらに、先行命令による無駄なベクトルレジスタへの書き込み処理を中断することができる。また、例えばWARハザードに対応するデータ依存関係を有する場合には、後続命令で書き込むベクトルレジスタは、生成した新規の命令によって先に読み出すため、処理結果が保証される。さらに、先行命令における後半部分の処理を中断することで処理結果が保証される。したがって、従来発生していたような、ストールを発生させることなく、先行命令と後続命令の間でのRAWハザード及びWARハザードを回避し、後続命令を効率良く発行することができる。また、先行命令による不要な処理を中断して先行命令を実行している実行パイプラインを速やかに開放することができ、命令を効率良く発行することができる。
例えば、ベクトル長(VL)が32で、先行命令がWordの加算命令“vadd vr2,vr4,vr0”であり、後続命令がHalfwordの加算命令“vaddh vr1,vr6,vr7”である場合の処理動作例を図10に示す。先行命令“vadd vr2,vr4,vr0”による処理及び後続命令“vaddh vr1,vr6,vr7”による処理においては、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]についてRAWハザードに対応するデータ依存関係がある。
図10(A)に示されるように一般的なベクトル処理装置での処理動作は、図4(A)に示した処理動作と同様である。すなわち、サイクル2〜サイクル5では、RAWハザードによるストールを発生させ、後続命令“vaddh vr1,vr6,vr7”はサイクル6に発行される。
一方、図10(B)に示されるように第2の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr2,vr4,vr0”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があるので、命令発行制御部13Bは、先行命令における後半部分の処理と等価な新規の命令“vadd' vr3,vr5,vr1”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に対し、先行命令“vadd vr2,vr4,vr0”により行われる処理と同じ処理が、サイクル2から実行される。そのため、続くサイクル3で後続命令“vaddh vr1,vr6,vr7”をパイプラインCに発行でき、その命令を実行することができる。また、先行命令“vadd vr2,vr4,vr0”による物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に係る処理は不要であるので、サイクル4で先行命令“vadd vr2,vr4,vr0”の処理を完了し、パイプラインAが開放される。
また、例えば、ベクトル長(VL)が40で、先行命令がWordの加算命令“vadd vr2,vr4,vr0”であり、後続命令がHalfwordの加算命令“vaddh vr1,vr6,vr7”である場合の処理動作例を図11に示す。先行命令“vadd vr2,vr4,vr0”による処理及び後続命令“vaddh vr1,vr6,vr7”による処理においては、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]についてRAWハザードに対応するデータ依存関係がある。
図11(A)に示されるように一般的なベクトル処理装置での処理動作は、図5(A)に示した処理動作と同様である。すなわち、サイクル2〜サイクル9では、RAWハザードによるストールを発生させ、後続命令“vaddh vr1,vr6,vr7”はサイクル10に発行される。
一方、図11(B)に示されるように第2の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr2,vr4,vr0”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があるので、命令発行制御部13Bは、先行命令における後半部分の処理と等価な新規の命令“vadd' vr3,vr5,vr1”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に対し、先行命令“vadd vr2,vr4,vr0”により行われる処理と同じ処理が、サイクル2から実行される。そのため、続くサイクル3で後続命令“vaddh vr1,vr6,vr7”をパイプラインCに発行でき、その命令を実行することができる。また、先行命令“vadd vr2,vr4,vr0”による物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に係る処理は不要であるので、サイクル8で先行命令“vadd vr2,vr4,vr0”の処理を完了し、パイプラインAが開放される。
なお、図10(A)、(B)及び図11(A)、(B)において、命令“vadd vr2,vr4,vr0”については、デスティネーションレジスタである論理番号0のベクトルレジスタvr0の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd' vr3,vr5,vr1”については、デスティネーションレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。また、命令“vaddh vr1,vr6,vr7”については、ソースレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。
先行命令及び後続命令がともにWordの演算命令である場合も同様に処理可能である。例えば、ベクトル長(VL)が32で、先行命令がWordの加算命令“vadd vr4,vr6,vr0”であり、後続命令がWordの加算命令“vadd vr1,vr8,vr10”である場合の処理動作例を図12に示す。先行命令“vadd vr4,vr6,vr0”による処理及び後続命令“vadd vr1,vr8,vr10”による処理においては、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]についてRAWハザードに対応するデータ依存関係がある。
図12(A)に示されるように一般的なベクトル処理装置での処理動作は、図6(A)に示した処理動作と同様である。すなわち、サイクル2〜サイクル5では、RAWハザードによるストールを発生させ、後続命令“vadd vr1,vr8,vr10”はサイクル6に発行される。
一方、図12(B)に示されるように第2の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr4,vr6,vr0”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があるので、命令発行制御部13Bは、先行命令における後半部分の処理と等価な新規の命令“vadd' vr5,vr7,vr1”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に対し、先行命令“vadd vr4,vr6,vr0”により行われる処理と同じ処理が、サイクル2から実行される。そのため、続くサイクル3で後続命令“vadd vr1,vr8,vr10”をパイプラインCに発行でき、その命令を実行することができる。また、先行命令“vadd vr4,vr6,vr0”による物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に係る処理は不要であるので、サイクル4で先行命令“vadd vr4,vr6,vr0”の処理を完了し、パイプラインAが開放される。
また、例えば、ベクトル長(VL)が40で、先行命令がWordの加算命令“vadd vr4,vr6,vr0”であり、後続命令がWordの加算命令“vadd vr1,vr8,vr10”である場合の処理動作例を図13に示す。先行命令“vadd vr4,vr6,vr0”による処理及び後続命令“vadd vr1,vr8,vr10”による処理においては、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]についてRAWハザードに対応するデータ依存関係がある。
図13(A)に示されるように一般的なベクトル処理装置での処理動作は、図7(A)に示した処理動作と同様である。すなわち、サイクル2〜サイクル9では、RAWハザードによるストールを発生させ、後続命令“vadd vr1,vr8,vr10”はサイクル10に発行される。
一方、図13(B)に示されるように第2の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr4,vr6,vr0”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にRAWハザードに対応するデータ依存関係があるので、命令発行制御部13Bは、先行命令における後半部分の処理と等価な新規の命令“vadd' vr5,vr7,vr1”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に対し、先行命令“vadd vr4,vr6,vr0”により行われる処理と同じ処理が、サイクル2から実行される。そのため、続くサイクル3で後続命令“vadd vr1,vr8,vr10”をパイプラインCに発行でき、その命令を実行することができる。また、先行命令“vadd vr4,vr6,vr0”による物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に係る処理は不要であるので、サイクル8で先行命令“vadd vr4,vr6,vr0”の処理を完了し、パイプラインAが開放される。
なお、図12(A)、(B)及び図13(A)、(B)において、命令“vadd vr4,vr6,vr0”については、デスティネーションレジスタである論理番号0のベクトルレジスタvr0の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd' vr5,vr7,vr1”については、デスティネーションレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd vr1,vr8,vr10”については、ソースレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。
次に、先行命令と後続命令の間にWARハザードに対応するデータ依存関係がある場合の例を示す。例えば、ベクトル長(VL)が32で、先行命令がWordの加算命令“vadd vr0,vr4,vr2”であり、後続命令がHalfwordの加算命令“vaddh vr6,vr7,vr1”である場合の処理動作例を図14に示す。先行命令“vadd vr0,vr4,vr2”による処理及び後続命令“vaddh vr6,vr7,vr1”による処理においては、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]についてWARハザードに対応するデータ依存関係がある。
図14(A)に示されるように一般的なベクトル処理装置では、例えばサイクル1で先行命令“vadd vr0,vr4,vr2”がパイプラインAに発行されると、サイクル5で物理番号32〜39のベクトルレジスタvr[32]〜vr[39]からデータが読み出される。したがって、サイクル2〜サイクル5では、WARハザードによるストールを発生させ、はじめのサイクルで物理番号32〜39のベクトルレジスタvr[32]〜vr[39]に処理結果を書き込む後続命令“vaddh vr6,vr7,vr1”はサイクル6に発行される。
一方、図14(B)に示されるように第2の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr0,vr4,vr2”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にWARハザードに対応するデータ依存関係があるので、命令発行制御部13Bは、先行命令における後半部分の処理と等価な新規の命令“vadd' vr1,vr5,vr3”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に対し、先行命令“vadd vr0,vr4,vr2”により行われる処理と同じ処理が、サイクル2から実行される。そのため、続くサイクル3で後続命令“vaddh vr6,vr7,vr1”をパイプラインCに発行でき、その命令を実行することができる。また、先行命令“vadd vr0,vr4,vr2”による物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に係る処理は不要であるので、サイクル4で先行命令“vadd vr0,vr4,vr2”の処理を完了し、パイプラインAが開放される。
また、例えば、ベクトル長(VL)が40で、先行命令がWordの加算命令“vadd vr0,vr4,vr2”であり、後続命令がHalfwordの加算命令“vaddh vr6,vr7,vr1”である場合の処理動作例を図15に示す。先行命令“vadd vr0,vr4,vr2”による処理及び後続命令“vaddh vr6,vr7,vr1”による処理においては、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]についてWARハザードに対応するデータ依存関係がある。
図15(A)に示されるように一般的なベクトル処理装置では、例えばサイクル1で先行命令“vadd vr0,vr4,vr2”がパイプラインAに発行されると、サイクル9で物理番号64〜71のベクトルレジスタvr[64]〜vr[71]からデータが読み出される。したがって、サイクル2〜サイクル9では、WARハザードによるストールを発生させ、はじめのサイクルで物理番号64〜71のベクトルレジスタvr[64]〜vr[71]に処理結果を書き込む後続命令“vaddh vr6,vr7,vr1”はサイクル10に発行される。
一方、図15(B)に示されるように第2の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr0,vr4,vr2”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にWARハザードに対応するデータ依存関係があるので、命令発行制御部13Bは、先行命令における後半部分の処理と等価な新規の命令“vadd' vr1,vr5,vr3”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に対し、先行命令“vadd vr0,vr4,vr2”により行われる処理と同じ処理が、サイクル2から実行される。そのため、続くサイクル3で後続命令“vaddh vr6,vr7,vr1”をパイプラインCに発行でき、その命令を実行することができる。また、先行命令“vadd vr0,vr4,vr2”による物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に係る処理は不要であるので、サイクル8で先行命令“vadd vr0,vr4,vr2”の処理を完了し、パイプラインAが開放される。
なお、図14(A)、(B)及び図15(A)、(B)において、命令“vadd vr0,vr4,vr2”については、ソースレジスタである論理番号0のベクトルレジスタvr0の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd' vr1,vr5,vr3”については、ソースレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。また、命令“vaddh vr6,vr7,vr1”については、デスティネーションレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。
先行命令及び後続命令がともにWordの演算命令である場合も同様に処理可能である。例えば、ベクトル長(VL)が32で、先行命令がWordの加算命令“vadd vr0,vr4,vr6”であり、後続命令がWordの加算命令“vadd vr8,vr10,vr1”である場合の処理動作例を図16に示す。先行命令“vadd vr0,vr4,vr6”による処理及び後続命令“vadd vr8,vr10,vr1”による処理においては、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]についてWARハザードに対応するデータ依存関係がある。
図16(A)に示されるように一般的なベクトル処理装置では、例えばサイクル1で先行命令“vadd vr0,vr4,vr6”がパイプラインAに発行されると、サイクル5で物理番号32〜39のベクトルレジスタvr[32]〜vr[39]からデータが読み出される。したがって、サイクル2〜サイクル5では、WARハザードによるストールを発生させ、はじめのサイクルで物理番号32〜39のベクトルレジスタvr[32]〜vr[39]に処理結果を書き込む後続命令“vadd vr8,vr10,vr1”はサイクル6に発行される。
一方、図16(B)に示されるように第2の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr0,vr4,vr6”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にWARハザードに対応するデータ依存関係があるので、命令発行制御部13Bは、先行命令における後半部分の処理と等価な新規の命令“vadd' vr1,vr5,vr7”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に対し、先行命令“vadd vr0,vr4,vr6”により行われる処理と同じ処理が、サイクル2から実行される。そのため、続くサイクル3で後続命令“vadd vr8,vr10,vr1”をパイプラインCに発行でき、その命令を実行することができる。また、先行命令“vadd vr0,vr4,vr6”による物理番号32〜63のベクトルレジスタvr[32]〜vr[63]に係る処理は不要であるので、サイクル4で先行命令“vadd vr0,vr4,vr6”の処理を完了し、パイプラインAが開放される。
また、例えば、ベクトル長(VL)が40で、先行命令がWordの加算命令“vadd vr0,vr4,vr6”であり、後続命令がWordの加算命令“vadd vr8,vr10,vr1”である場合の処理動作例を図17に示す。先行命令“vadd vr0,vr4,vr6”による処理及び後続命令“vadd vr8,vr10,vr1”による処理においては、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]についてWARハザードに対応するデータ依存関係がある。
図17(A)に示されるように一般的なベクトル処理装置では、例えばサイクル1で先行命令“vadd vr0,vr4,vr6”がパイプラインAに発行されると、サイクル9で物理番号64〜71のベクトルレジスタvr[64]〜vr[71]からデータが読み出される。したがって、サイクル2〜サイクル9では、WARハザードによるストールを発生させ、はじめのサイクルで物理番号64〜71のベクトルレジスタvr[64]〜vr[71]に処理結果を書き込む後続命令“vadd vr8,vr10,vr1”はサイクル10に発行される。
一方、図17(B)に示されるように第2の実施形態におけるベクトル処理装置では、例えばサイクル1で先行命令“vadd vr0,vr4,vr6”がパイプラインAに発行され、その命令がパイプラインAで実行される。先行命令と後続命令の間にWARハザードに対応するデータ依存関係があるので、命令発行制御部13Bは、先行命令における後半部分の処理と等価な新規の命令“vadd' vr1,vr5,vr7”を生成し、サイクル2でパイプラインBに発行する。これにより、物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に対し、先行命令“vadd vr0,vr4,vr6”により行われる処理と同じ処理が、サイクル2から実行される。そのため、続くサイクル3で後続命令“vadd vr8,vr10,vr1”をパイプラインCに発行でき、その命令を実行することができる。また、先行命令“vadd vr0,vr4,vr6”による物理番号64〜79のベクトルレジスタvr[64]〜vr[79]に係る処理は不要であるので、サイクル8で先行命令“vadd vr0,vr4,vr6”の処理を完了し、パイプラインAが開放される。
なお、図16(A)、(B)及び図17(A)、(B)において、命令“vadd vr0,vr4,vr6”については、ソースレジスタである論理番号0のベクトルレジスタvr0の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd' vr1,vr5,vr7”については、ソースレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。また、命令“vadd vr8,vr10,vr1”については、デスティネーションレジスタである論理番号1のベクトルレジスタvr1の物理番号(先頭値)を各サイクル毎に示している。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
11 命令バッファ
12 データ依存検出部
13A、13B 命令発行制御部
21 デコード部
22 第1の処理完了サイクル算出部
23、24 マルチプレクサ回路
25 命令発行制御テーブル
26 命令生成部
27、28、29 演算部
30 第2の処理完了サイクル算出部
31 前半処理完了サイクル変更部
101 命令バッファ
102 データ依存検出部
103 命令発行制御部
104 実行パイプライン
105 ベクトルレジスタファイル
106 マルチプレクサ回路
107 シーケンサ
108 演算部

Claims (7)

  1. 複数の命令を保持する保持部と、
    前記保持部から入力される前記複数の命令のうち、先行命令と前記先行命令に続く後続命令とのデータ依存関係を検出するデータ依存検出部と、
    前記データ依存検出部での検出結果に基づいて、命令の発行を制御する命令発行制御部とを有し、
    前記命令発行制御部は、
    前記先行命令と前記後続命令とのデータ依存関係がある場合に、前記先行命令と同じ命令種類を有する新規の命令を生成し、生成した前記新規の命令を前記先行命令と前記後続命令との間に発行し、
    前記新規の命令の生成では、
    前記先行命令とデータ依存関係にある前記後続命令の第1レジスタの識別情報から前記新規の命令の第2レジスタの識別情報を決定し、
    前記先行命令の第2レジスタの識別情報と前記新規の命令の第2レジスタの識別情報との差分を算出し、
    算出した前記差分と前記先行命令の第1レジスタの識別情報とから前記新規の命令の第1レジスタの識別情報を決定し、
    前記先行命令の処理完了サイクルと所定のベクトル長とから前記新規の命令の処理完了サイクルを決定することを特徴とするベクトル処理装置の命令制御回路。
  2. 前記命令発行制御部は、前記先行命令と前記新規の命令と前記所定のベクトル長とに基づいて、前記先行命令による処理のうち、前記先行命令と前記新規の命令とで重複する処理を除いた処理に要するサイクルを決定し、決定した前記サイクルに前記先行命令の処理完了サイクルを変更することを特徴とする請求項1記載のベクトル処理装置の命令制御回路。
  3. 前記命令発行制御部は、
    前記先行命令と前記後続命令とにRAWハザードに対応するデータ依存関係がある場合には、
    前記先行命令とデータ依存関係にある前記後続命令のソースレジスタの識別情報から前記新規の命令のデスティネーションレジスタの識別情報を決定し、
    前記先行命令のデスティネーションレジスタの識別情報と前記新規の命令のデスティネーションレジスタの識別情報との差分を算出し、
    算出した前記差分と前記先行命令のソースレジスタの識別情報とから前記新規の命令のソースレジスタの識別情報を決定することを特徴とする請求項1又は2記載のベクトル処理装置の命令制御回路。
  4. 前記命令発行制御部は、
    前記先行命令と前記後続命令とにWARハザードに対応するデータ依存関係がある場合には、
    前記先行命令とデータ依存関係にある前記後続命令のデスティネーションレジスタの識別情報から前記新規の命令の第1ソースレジスタの識別情報を決定し、
    前記後続命令とデータ依存関係にある前記先行命令の第1ソースレジスタの識別情報と前記新規の命令の第1ソースレジスタの識別情報との差分を算出し、
    算出した前記差分と前記先行命令の第2ソースレジスタの識別情報及びデスティネーションレジスタの識別情報とから前記新規の命令の第2ソースレジスタの識別情報及びデスティネーションレジスタの識別情報を決定することを特徴とする請求項1又は2記載のベクトル処理装置の命令制御回路。
  5. 前記命令発行制御部は、前記データ依存検出部での検出結果に応じて、前記保持部からの命令を発行するか、生成した前記新規の命令を発行するかを選択することを特徴とする請求項1〜4の何れか1項に記載のベクトル処理装置の命令制御回路。
  6. 複数の命令を保持する保持部と、
    前記保持部から入力される前記複数の命令のうち、先行命令と前記先行命令に続く後続命令とのデータ依存関係を検出するデータ依存検出部と、
    前記データ依存検出部での検出結果に基づいて、命令の発行を制御する命令発行制御部と、
    並列に動作可能であって、各々が独立して前記命令発行制御部から発行される命令を受けて、当該命令に応じたベクトル演算処理を実行する複数の命令実行部とを有し、
    前記命令発行制御部は、
    前記先行命令と前記後続命令とのデータ依存関係がある場合に、前記先行命令と同じ命令種類を有する新規の命令を生成し、生成した前記新規の命令を前記先行命令と前記後続命令との間に発行し、
    前記新規の命令の生成では、
    前記先行命令とデータ依存関係にある前記後続命令の第1レジスタの識別情報から前記新規の命令の第2レジスタの識別情報を決定し、
    前記先行命令の第2レジスタの識別情報と前記新規の命令の第2レジスタの識別情報との差分を算出し、
    算出した前記差分と前記先行命令の第1レジスタの識別情報とから前記新規の命令の第1レジスタの識別情報を決定し、
    前記先行命令の処理完了サイクルと所定のベクトル長とから前記新規の命令の処理完了サイクルを決定することを特徴とするプロセッサ。
  7. ベクトル処理装置が有するデータ依存検出部が、複数の命令を保持する保持部から入力される前記複数の命令のうち、先行命令と前記先行命令に続く後続命令とのデータ依存関係を検出し、
    ベクトル処理装置が有する命令発行制御部が、前記データ依存関係の検出結果に基づいて命令の発行を制御し、
    前記先行命令と前記後続命令とのデータ依存関係がある場合に、前記命令発行制御部が、前記先行命令と同じ命令種類を有する新規の命令を生成し、生成した前記新規の命令を前記先行命令と前記後続命令との間に発行し、
    前記新規の命令の生成では、
    前記先行命令とデータ依存関係にある前記後続命令の第1レジスタの識別情報から前記新規の命令の第2レジスタの識別情報を決定し、
    前記先行命令の第2レジスタの識別情報と前記新規の命令の第2レジスタの識別情報との差分を算出し、
    算出した前記差分と前記先行命令の第1レジスタの識別情報とから前記新規の命令の第1レジスタの識別情報を決定し、
    前記先行命令の処理完了サイクルと所定のベクトル長とから前記新規の命令の処理完了サイクルを決定することを特徴とするベクトル処理装置の命令制御方法。
JP2012012250A 2012-01-24 2012-01-24 命令制御回路、プロセッサ、及び命令制御方法 Expired - Fee Related JP5751181B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012012250A JP5751181B2 (ja) 2012-01-24 2012-01-24 命令制御回路、プロセッサ、及び命令制御方法
US13/713,894 US9164767B2 (en) 2012-01-24 2012-12-13 Instruction control circuit, processor, and instruction control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012012250A JP5751181B2 (ja) 2012-01-24 2012-01-24 命令制御回路、プロセッサ、及び命令制御方法

Publications (2)

Publication Number Publication Date
JP2013152544A JP2013152544A (ja) 2013-08-08
JP5751181B2 true JP5751181B2 (ja) 2015-07-22

Family

ID=48798214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012012250A Expired - Fee Related JP5751181B2 (ja) 2012-01-24 2012-01-24 命令制御回路、プロセッサ、及び命令制御方法

Country Status (2)

Country Link
US (1) US9164767B2 (ja)
JP (1) JP5751181B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928564B2 (en) * 2014-06-26 2018-03-27 Intel Corporation Efficient hardware mechanism to ensure shared resource data coherency across draw calls
GB2536069B (en) * 2015-03-25 2017-08-30 Imagination Tech Ltd SIMD processing module
CN115951937B (zh) * 2023-03-10 2023-06-30 北京微核芯科技有限公司 处理器中向量指令填表和查表方法、装置及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60178580A (ja) 1984-02-24 1985-09-12 Fujitsu Ltd 命令制御方式
JP2685484B2 (ja) * 1988-04-13 1997-12-03 株式会社日立製作所 記憶制御方式
US7571303B2 (en) * 2002-10-16 2009-08-04 Akya (Holdings) Limited Reconfigurable integrated circuit
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
JP5699554B2 (ja) * 2010-11-11 2015-04-15 富士通株式会社 ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
JP5786719B2 (ja) * 2012-01-04 2015-09-30 富士通株式会社 ベクトルプロセッサ

Also Published As

Publication number Publication date
US20130191616A1 (en) 2013-07-25
JP2013152544A (ja) 2013-08-08
US9164767B2 (en) 2015-10-20

Similar Documents

Publication Publication Date Title
JP5646656B2 (ja) 複数の命令セットにより使用されるレジスタ間のマッピング
JP2012103959A (ja) ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
TWI764966B (zh) 用於控制矢量記憶體存取之資料處理裝置及方法
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
JP5751181B2 (ja) 命令制御回路、プロセッサ、及び命令制御方法
JP2004529405A (ja) 依存性を決定するためのコンテンツ・アドレス指定可能メモリを実装したスーパースケーラ・プロセッサ
US20240045694A1 (en) Differential pipeline delays in a coprocessor
KR102458467B1 (ko) 벡터 생성 명령
US8055883B2 (en) Pipe scheduling for pipelines based on destination register number
US9213547B2 (en) Processor and method for processing instructions using at least one processing pipeline
JP2018521422A (ja) ベクトル長クエリ命令
WO2019094492A1 (en) System and method of vliw instruction processing using reduced-width vliw processor
EP3690639B1 (en) Information processing apparatus, program, and information processing method
JP5871298B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP6347629B2 (ja) 命令処理方法及び命令処理装置
JP5720111B2 (ja) 情報処理装置
JP7102840B2 (ja) プロセッサコア、命令制御方法、プログラム
JP5511299B2 (ja) データ演算装置の制御回路及びデータ演算装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP4502983B2 (ja) ベクトル制御回路、ベクトル処理装置、ベクトル制御方法、および、ベクトル制御プログラム。
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP5013966B2 (ja) 演算処理装置
JP2021166010A (ja) 演算処理装置
JP2001243066A (ja) パイプライン処理方法並びにその方法を利用するパイプライン処理装置
JP2009104494A (ja) ベクトル処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141001

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150415

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150504

R150 Certificate of patent or registration of utility model

Ref document number: 5751181

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees