JP7383390B2 - 情報処理ユニット、情報処理装置、情報処理方法及びプログラム - Google Patents

情報処理ユニット、情報処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP7383390B2
JP7383390B2 JP2019076481A JP2019076481A JP7383390B2 JP 7383390 B2 JP7383390 B2 JP 7383390B2 JP 2019076481 A JP2019076481 A JP 2019076481A JP 2019076481 A JP2019076481 A JP 2019076481A JP 7383390 B2 JP7383390 B2 JP 7383390B2
Authority
JP
Japan
Prior art keywords
instruction
data
read
storage means
reading
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.)
Active
Application number
JP2019076481A
Other languages
English (en)
Other versions
JP2020173717A (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2019076481A priority Critical patent/JP7383390B2/ja
Publication of JP2020173717A publication Critical patent/JP2020173717A/ja
Application granted granted Critical
Publication of JP7383390B2 publication Critical patent/JP7383390B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、演算式をプログラムとして読み込んで実行するプログラマブルな情報処理ユニットを備える情報処理装置に関する。
コンピュータプログラムでの算術演算は、CPU内部の汎用レジスタを参照して演算した結果を汎用レジスタに代入するという基本命令を組み合わせて実行される。このとき、CPUでの処理をパイプライン化して、見掛け上、1命令を1サイクルで、又は、1サイクルで複数の命令を実行することが可能な構成とした場合でも、汎用レジスタに代入したデータが再び参照可能になるためにはレイテンシーが存在する。そのため、代入から参照までの待ち合わせ(以下「データハザード」という)が発生してしまう。特にレイテンシーの大きな浮動小数点演算では、データハザードによる演算器の稼働率の低下は処理性能を著しく低下させてしまう。
この問題に対して、例えば特許文献1には、命令列の依存関係を検出し、依存関係が保持可能な状態になるまで回路の一部を停止させる技術が開示されている。また、特許文献2には、データ・コヒーレンシを侵害する可能性のあるアウト・オブ・オーダー命令を検出して、リオーダーする手段が開示されている。
特開2000-99328号公報 特開平11-272466号公報
しかしながら、上記従来技術のアウト・オブ・オーダー、スーパー・スカラー、レジスタ・リネーミング等はどれも、大規模で複雑な回路となってしまうだけでなく、速度低下の原因となる汎用レジスタ間の参照と代入の間で発生するデータハザードの発生を完全に解決する事が本質的に困難である。
本発明は、演算器との間でデータのやりとりを行う情報処理ユニットに大規模な回路を用いることなく、演算器の稼働率を向上させる技術を提供することを目的とする。
本発明に係る情報処理ユニットは、命令列とデータが記憶された記憶手段から、順次、命令を読み込む命令読込部と、前記命令読込部が読み込んだ命令のアドレスフィールドに従って前記記憶手段からデータを読み込むデータ読込部と、前記命令読込部が読み込んだ命令の種別に従って前記データ読込部が読み込んだデータを演算手段へ転送するデータ転送部と、前記演算手段から出力される演算結果を前記記憶手段に書き込む書込部と、を備え、前記命令読込部が読み込む命令には演算結果を格納するアドレスを示すフィールドが存在せず、前記書込部は、前記演算手段から出力された、前記命令に対応する演算結果を、順次、前記記憶手段の連続したアドレスに書き込むことを特徴とする。
本発明によれば、演算器との間でデータのやりとりを行う情報処理ユニットの回路規模を小さくしながら、演算器の稼働率を向上させることができる。
第1実施形態に係る情報処理装置の基本構成を示すブロック図である。 ALUが扱うデータの構成と、ALUのブロック図である。 アクセラレータの命令のビット構成を説明する図である。 コントロールレジスタの構成とメモリマップの例を示す図である。 演算式をプログラムに分解して実行する手法を説明する図である。 図5(e)のプログラムのアッセンブラ表記及びタイミングチャートである。 中間データを用いた演算処理を説明する図である。 3つのアクセラレータで3つのALUを共有する回路のブロック図である。 アービターの回路図である。 アービターの動作の一例を示すタイミングチャートである。 アクセラレータが備える書込部の回路図である。 アクセラレータで実行されるプログラムを生成するコンパイラのフローチャートである。 プログラムの展開、分解、並べ替えの例を示す図である。 第2実施形態に係る情報処理装置の部分的なブロック図である。 第3実施形態で中間コードを用いてアクセラレータで実行可能な機械語のプログラムを生成する工程を説明するフローチャートである。 中間コードのビットフィールドを説明する図である。 第4実施形態に係る情報処理装置のブロック図である。
以下、本発明の実施形態について、添付図面を参照して詳細に説明する。
<第1実施形態>
図1は、本発明の実施形態に係る情報処理ユニットとしてのアクセラレータ103を備える情報処理装置100の基本構成を示すブロック図である。情報処理装置100は、CPU101、DRAM102、アクセラレータ103、SRAMブロック104、ALU111及びデータ転送部112を備える。図1には、アクセラレータ103及びALU111を1つずつ備える構成が示されているが、後述するように、アクセラレータ103とALU111とをそれぞれ複数備える構成とすることもできる。
CPUは、Central Processing Unitの略称である。DRAMは、Dynamic Random Access Memoryの略称である。SRAMは、Static Random Access Memoryの略称である。ALUは、Arithmetic Logic Unitの略称である。
CPU101は、主たる制御回路であり、情報処理装置100の全体的な制御を行うプロセッサである。DRAM102は、CPU101上で動作するプログラムとアクセラレータ103で動作させるプログラム等を格納する記憶媒体である。
SRAMブロック104は、CPU101とアクセラレータ103の動作に必要なデータやALU111による演算結果等を記憶する記憶媒体である。SRAMブロック104は、複数のSRAMを備える。CPU101とアクセラレータ103はSRAMブロック104へアクセス可能である。ALU111は、浮動小数点演算を行う演算装置である。
図2(a)は、ALU111が行う演算に用いられる32ビットの単精度のデータの構成を説明する図である。ここでは、ALU111は、単精度の浮動小数点を計算する。32ビットの単精度のデータは、ビットごとに役割が決まっており、符号ビット(SIGN)200、指数ビット(EXPONENT)201及び仮数ビット(FRACTION)202から構成される。
図2(b)は、ALU111のブロック図である。ALU111は、データの入力を行うためのA入力部203及びB入力部204と、演算結果を出力するための出力部208を有する。また、ALU111は、浮動小数点演算を行うための仮数部205、指数部206及び符号部207を有する。仮数部205、指数部206及び符号部207は、A入力部203とB入力部204から入力されたデータに対して丸めによる桁上がり等の必要な情報を交換しながら演算を行い、演算結果は出力部208から出力される。
仮数部205、指数部206及び符号部207にはそれぞれ5つのフリップフロップが挿入されている。そのため、ALU111では、A入力部203とB入力部203からデータが入力された後、仮数部205、指数部206及び符号部207による演算結果は、5サイクル後に出力部208に到達する。
ALU111での動作周波数を高めるためには、フリップフロップ間に生じるゲート遅延を短くする必要があるため、小さな演算単位ごとにフリップフロップを挿入して設計することとなる。ALU111では、1つの演算に5サイクルかかるとする。1サイクルごとに有効なデータ入力があると1サイクルごとに有効な出力が得られる。つまり、1サイクルで1つの演算を行うことができる。
なお、ALU111に有効なデータを入力することができないサイクルは無駄なサイクルとなる。したがって、有効なデータを入力することができる割合が、ALU111の稼働率となる。本発明は、ALU111の稼働率を高めることを課題の1つとしており、後述するように、アクセラレータは小さな回路構成でALU111の稼働率を高めることを可能とする。
図1の説明に戻る。アクセラレータ103は、CPU101からアクセラレータ103の動作を制御するためのコントロールレジスタ105を有する。コントロールレジスタ105は、メモリマップドIOとなっており、データバスによってCPU101のアドレスバスと接続されている。
アクセラレータ103は、命令読込部110、データ読込部109、書込部113及び比較部116を有する。命令読込部110、データ読込部109及び書込部113は、読み込んだ要素を入ってきた順に一列に並べ、先に入れた要素から順に取り出す規則で要素の出し入れを行うキュー(QUEUE)として動作するように構成されている。比較部116の機能については後述する。
命令読込部110は、SRAMブロック104から命令列を読み込む。命令読込部110は、WAITアドレス106を有する。WAITアドレス106には、後述のWAIT命令により指定されるアドレスの値が入力される。データ読込部109は、演算に用いるデータをSRAMブロック104から読み込む。命令読込部110とデータ読込部109とは、それぞれ独立したアドレスバスとデータバスを持つバスマスターである。SRAMブロック104の複数のSRAMはそれぞれ、異なるアドレスに配置され、命令列とデータを別のSRAMから読み込むことができるように配置される。SRAMブロック104の複数のSRAMはそれぞれ、同一サイクルにデータと命令の両方を読み込むことが可能である。
データ転送部112は、ALU111へ命令とデータとを転送する。ALU111にデータが転送されると、一定サイクル後にALU111から演算結果が書込部113へ出力される。書込部113は、ALU111から演算結果を受信すると、受信した演算結果をSRAMブロック104に書き込む。書込部113は、命令読込部110やデータ読込部109と同様に、独立したアドレスバスとデータバスを持つバスマスターであり、命令読込部110及びデータ読込部109と同一サイクルでデータ書き込みを行うことができる。
書込部113は、書き込みアドレス部114を有する。演算結果がSRAMブロック104に書き込まれる際のSRAMブロック104でのアドレスの値は、書き込みアドレス部114から出力される。書き込みアドレス部114に書き込まれるアドレスの値は、後述する図7の‘STORE ADDRESS’で示されるように、SRAMブロック104に書き込まれる演算結果に対応して、順次、書き換えられる。
図3(a)は、アクセラレータ103の命令のビット構成を説明する図である。命令は16ビット長のデータであり、ビット11~ビット15は、命令の種別を表すオペコード(OPECODE)フィールド301である。ビット9,10は、アクセスするSRAMブロック104のベースアドレス(BASE ADDRESS)の種類を指定するベースアドレスインデックス(BASE ADDRESS INDEX)フィールド302である。ビット0~8は、データのアドレスを表すオフセットアドレス(OFFSET ADDRESS)フィールド303である。9ビットのオフセットアドレスフィールド303では0~511を表現することができるが、単精度浮動小数点は32ビットなので、ここでは、オフセットアドレスフィールド303は4バイト単位のインデックス値として扱う。つまり、アクセス可能なのは、ベースアドレスに対して16進で0~7FCである。ベースアドレスは4つあり、各ベースアドレスはCPU101がコントロールレジスタ105へ書き込んで指定する。
図3(b)は、命令のアッセンブラ表記(ニーモニック)である。命令の種類には、算術演算子の加減乗除命令、終了命令、その他幾つかの制御命令がある。命令は、実行する演算を指定するオペコード部304、A又はBで指定される被演算子305、データを指定するラベル306から構成される。
アクセラレータ103の命令の基本的な構造は、被演算子305にラベル306で示すアドレスからデータを読み込んだ上で、オペコード部304が指定する算術演算を行うというものである。例えば、‘i÷j’という演算は、‘FNOP A,i’で‘A’に‘i’を取り込み、‘FDIV B,j’で‘B’に‘j’を取り込んだ上で、‘A÷B’を行うという2つの命令で実現される。なお、アクセラレータ103の命令には、演算結果を格納するアドレスを示すフィールドは存在しない。これは、書込部113は、演算結果を順次連続アドレスに書き込む構造となっており、演算結果を格納するアドレスを選ぶことができないからである。
図4は、アクセラレータ103におけるコントロールレジスタ105とSRAMブロック104のメモリマップの構成を示す図である。コントロールレジスタ105は、スタートレジスタ414、プログラムアドレス415、第1ベースアドレス401、第2ベースアドレス402、ワークベースアドレス403及び出力ベースアドレス404を有する。
第1ベースアドレス401は共通データ405を指定する。第2ベースアドレス402はアクセラレータ0専用のパラメータエリア409を指定する。ワークベースアドレス403は、アクセラレータ0専用のワークエリア410を指定する。なお、ここでは、アクセラレータ103として、3つのアクセラレータ0,1,2を備える構成を想定している。ワークエリア410は、512個分のデータを確保することが可能となっている。
プログラムアドレス415は、プログラムの開始アドレス413を指定している。スタートレジスタ414に‘1’が書き込まれると、アクセラレータ0はプログラムの読み出しを開始し、終了命令を読み込むまで、順次、プログラムを実行する。
図5を参照して、演算式をプログラムに分解して実行する手法について説明する。図5(a)は、演算式の一例を示している。図5(b)は、図5(a)の演算式を解くプログラムをC言語で示したリストであり、n=3の配列に対する3重ループで積和演算を行うプログラムを示している。図5(c)は、図5(b)に示したプログラムの変形例を示しており、b[k][j]のアドレッシングをまとめることによりアクセスを減らしたものである。
図5(d)は、プログラムがアクセスするデータにラベルをつけて展開したものを示している。図5(c),(c)のC言語で書かれたプログラムではi,j,kを演算しているが、i,j,kがどのような数値に変化するかはコンパイル時には決まっているため、それぞれを固定アドレスに予め展開することができる。図5(d)の展開式では、1つの式に加算を表す‘+’と乗算を表す‘×(図5では‘*’)’の2つの演算子があるため、命令に展開するためには中間ノードとなる変数(以下「中間変数」という)を介在させる必要がある。
図5(e)は、中間変数に対してラベルを割り当てて順番を並び替えたものを示している。図5(e)では、001行目から009行目まで乗算が続き、その結果を加算する命令は010行目からとなっている。最初の中間変数TMP000が参照されるのは010行目であり、また、変数C00に加算してC00に戻す式は、新しい中間変数TMP010に格納される。038行目で再びC00へ加算するときには、中間変数TMP010を参照して新たな中間変数TMP038へ代入する。このような順序に展開して演算順序を並び替えることにより、代入から参照までのサイクル数を伸ばしているため、アクセラレータ103ではデータハザードは発生しない。
図6(a)は、図5(e)のプログラムをアッセンブラ表記にして示す図である。000行目は、被演算子Bに変数B00をロードするだけで、算術演算を行わない。001行目は、被演算子Aに変数A00をロードして、‘A×B’の乗算を実行する。変数A00,B00はパラメータエリア409に配置されており、中間変数はワークエリア410に配置される。なお、アッセンブラ表記上、中間変数TMP000を格納先として指定しているように見えるが、前述の通り、命令には格納先を指定するアドレスを示すフィールドは存在せず、TMP000というラベルに格納先のアドレスが関連付けられる。002行目は、被演算子Aに変数A10をロードして、‘A×B’の乗算を実行する。
図6(b)は、図6(a)のプログラム実行時のデータ転送部112での入出力を説明するタイミングチャートである。001サイクル目で被演算子BにB00がロードされ、002サイクル目で被演算子AにA00がロードされて乗算のリクエスト信号であるFMULが‘1’になり、これにより、乗算のALUに変数A00と変数B00が出力される。このように、002サイクルから004サイクルまで連続的に転送が発生している。なお、乗算のALUとは、例えば、後述する図8に示されるALU805である。
被演算子A,Bの両方にデータを読み込むのではなく、被演算子A,Bの一方のデータをロードする命令構造においても連続して演算が発生するのは、一方が共通となるように命令列を並び替えているからである。このような変数の共通化は多くの多項式で可能であり、コンパイラが命令列の並び替えを行う。002サイクル目で受理された演算に対する演算結果(中間変数TMP001)は、007サイクル目でFMUL_Qに出力され、同時に、有効なデータであることを示すVALID信号(FMUL_VALID)も出力される。
図7は、演算結果(中間変数)を連続アドレスに順次格納しながら演算を行う状況を説明する図である。図7(a)~(d)では、図4に準じて、中間変数を格納するアクセラレータ0専用のワークエリア410がアクセラレータ0のワークベースアドレス403によって指定されているものとする。なお、図7(a)~(d)には、説明の便宜上、演算内容をプログラムとニーモニックで示しているが、DRAM102にはアクセラレータ0で実行可能な機械語のプログラムが格納されていればよい。
図7(a)に示すように、アクセラレータ0が最初の命令701の‘FNOP B,B00’を実行すると、ワークエリア410のアドレス000番地に意味のないデータが格納される。アクセラレータ0が次の命令702の‘FMUL TMP000,A,A00’を実行すると、004番地に演算結果である中間変数TMP000が格納される。アクセラレータ0が次の命令703の‘FMUL TMP001,A,A10’を実行すると、008番地に演算結果である中間変数TMP001が格納される。命令704の‘FNOP A,TMP000’で中間変数TMP000を被演算子Aにロードする際には、命令のアドレスフィールドには004番地を示す値001が格納されている。
このように計算結果を順次格納していくと、ワークエリア410を最初から最後まで使い果たしてしまう。そのため、命令705の‘FADD TMP501,A,TMP000’が実行されると、演算結果は000番地に格納されることになる。更に次の命令が実行されると、004番地に格納されていた中間変数TMP000が上書きされてしまうことになる。このように、アクセラレータ0で扱う中間変数には生存期間があり、中間変数は511ステップのプログラム実行により生存期間を終えることとなる。換言すれば、中間変数は、SRAMブロック104に記憶されている期間であれば参照可能である。
多くの場合、511ステップよりも長い生存期間は必要ないが、変数の生存期間を延長したい場合には、生存期間延長のための命令を用いる。例えば、図7(b)において、命令706の‘FADD TMP502,B,ZERO’では、中間変数TMP000に値0(ゼロ)を加算して、新たな演算結果である中間変数TMP502を格納している。これにより、これ以降、中間変数TMP000は、中間変数TMP502と名前を変えて生存し続けることが可能になる。変数の生存期間を延長する手法としては、ゼロを加算する手法に代えて、‘1’を乗算する手法を用いることもできる。
なお、図2(b)を参照して説明したように、ALU111から演算結果が出力されるまでに数サイクル、演算結果が書込部113に書き込まれた後、SRAMブロック104に書き込まれて参照可能となるまでに数サイクルを要する。逆に、既存の中間変数を上書きしてしまう命令の後であっても、数サイクルは上書き前の変数を参照することができる。
図7(c)において、命令707の‘FADD TMP503,B,TEMP001’は、既に上述した上書きを行う命令706が実行された後であるが、中間変数TMP001を参照している。ここで、代入結果をすぐに参照しなければならない場合には、‘WAIT TMP501’で表されるWAIT命令708を用いて、参照可能になるまで待つことができる。WAIT命令は、アクセスしたい変数のアドレスの値を指定する命令である。
WAIT命令は、命令読込部110のWAITアドレス106に値(参照アドレス)を入力して、比較部116を有効にする。比較部116は、書き込みアドレス部114のアドレスの値がWAITアドレス106の値を通過したことを検出することができる。第1実施形態では、書き込みアドレス114の値はインクリメントする。したがって、書き込みアドレス114がWAITアドレス106を通過するとは、書き込みアドレス114のほうがWAITアドレス106よりも大きくなることを意味する。なお、書き込みアドレス114がディクリメントする構成で実施する場合、書き込みアドレス114の方がWAITアドレス106よりも小さくなったことに応じて、書き込みアドレス114がWAITアドレス106を通過したことを検出する。書き込みアドレス114が所定の範囲の終端に達すると初期値に戻ることを考慮すると、単純な大小比較ではなく、値間の距離を制限しての比較となる。本実施形態では‘((参照アドレス-書き込みアドレス)&0x7FF)<0x400’という条件となる。
比較部116は、WAITアドレス106を監視し、WAITアドレス106に入力されたアドレスの値と書き込みアドレス部114の値とを比較する。比較部116は、書込部113への書き込みが完了していない場合(書き込みアドレス部114の値がWAITアドレス106の値に達していない場合)に、データ読込部109での次のデータの読み込みを抑制する。本実施形態では‘((参照アドレス-書き込みアドレス)&0x7FF)<0x400’の関係が成立した場合に次のデータ読み出しを行うが、そうでない場合にはデータ読込部109は停止する。
図7(d)は、演算結果を格納するアドレスが7FC番地に達する前にアドレスをクリアする(000番地にする)命令710の‘REWIND’を実行した状態を示している。この命令により、メモリマップとして十分な容量が確保できない場合に、少ないワークエリアで演算を実行することが可能となる。なお、意図的に7FC番地付近にあるデータの生存期間を延ばすという用い方も可能である。
図8は、3つのアクセラレータ0_801、アクセラレータ1_802及びアクセラレータ2_803で3つのALU805、ALU806及びALU807を共有する回路のブロック図である。なお、図1の情報処理装置100のブロック図には、1つのアクセラレータ103と1つのALU111を備える構成を示しているが、図8に示すように、複数のアクセラレータと複数のALUを備える構成とすることができる。アクセラレータ0_801、アクセラレータ1_802及びアクセラレータ2_803のそれぞれは、図1に示したアクセラレータ103に対応する。また、ALU805、ALU806及びALU807のそれぞれは、図1に示したALU111に対応する。
アクセラレータ0_801、アクセラレータ1_802及びアクセラレータ2_803はそれぞれ、3つのアービター804に接続されている。3つのアービター804はそれぞれ、アクセラレータ0_801、アクセラレータ1_802及びアクセラレータ2_803が同時にリクエスト信号をHighにした場合、優先度の高いアクセラレータに対してGRANT信号をHighにする。この場合、アクセラレータは、リクエスト信号をHighにしてもGRANT信号がLow(ロー)のままであることはリクエスト信号が受理されていないため、GRANT信号がHighになるまでそのままの状態で待機する。
ALU805は乗算演算を行う。ALU806は除算演算を行う。ALU807は加算演算を行う。ALU805、ALU806及びALU807はそれぞれ独立して同時に演算を実行可能である。仮にアクセラレータが1つでALUが3つの構成の場合、3つのALUのうち2つは稼働していないことになる。これに対して、複数のアクセラレータからこれと同数のALUに並列的に演算を実行させる構成とすることで、ALUの稼働率を上げることができる。
図9は、アービター804の回路図である。アービター804は、アクセラレータ0_801に接続される端子群901と、アクセラレータ1_802に接続される端子群902と、アクセラレータ2_803に接続される端子群903とを有する。
端子群901は、アクセラレータ0_801と接続する複数の端子901a~901fを含む。端子群902は、アクセラレータ1_802と接続する複数の端子902a~902fを含む。端子群903は、アクセラレータ0_803と接続する複数の端子903a~903fを含む。端子901aはリクエスト信号の入力に用いられる入力端子である。端子901b,901cは、被演算子A,Bのデータ入力に用いられる入力端子である。端子901dはGRANT信号をアクセラレータ0_801に出力する出力端子である。端子901eは、VALID信号をアクセラレータ0_801に出力する出力端子である。端子901fは、演算結果Qをアクセラレータ0_801に出力する出力端子である。端子群902及び端子群903も同様に、対応するアクセラレータと信号の入出力を行うための複数の端子を有する。端子群902及び端子群903については、説明を省略する。
例えば、アクセラレータ0_801は、所定のALUへデータを転送する際に、被演算子A,Bのデータを端子901b,901cに入力し、リクエスト信号をHighにして端子901aへ入力する。アクセラレータ0_801はプライオリティが一番上(最優先)となっているものとする。この場合、リクエスト信号は必ず受理されてALU側端子917を通じて対応するALUへ送られる。また、HighのGRANT信号が端子901dから出力される。
アクセラレータ1_802のリクエスト信号がHighになった際に同じサイクルで端子901aに入力されるリクエスト信号がHighになっている場合、ゲート909の作用により、アクセラレータ1_802のリクエスト信号は受理されない。一方、アクセラレータ1_802のリクエスト信号がHighになった際に同じサイクルで端子901aに入力されるリクエスト信号がLowになっている場合には、アクセラレータ1_802のリクエスト信号は受理される。その結果、アクセラレータ1_802からの被演算子A,Bのデータがアービター804へ入力され、ゲート910,911を通過して、ALU側端子914,915へ送られる。
また、アクセラレータ1_802から端子902aを通じてゲート909が受理したリクエスト信号は、遅延素子912で遅延された後、VALID信号としてアクセラレータ1_802の書込部113に送られる。同じサイクルで、ALUからALU側端子916に演算結果Qが入力されており、演算結果Qはゲート913を通過してアクセラレータ1_802の書込部113へ送られる。
図10は、2つのアクセラレータ0_801及びアクセラレータ1_802から1つのアービター804へ同時にリクエスト信号が入力された場合のアービター804の動作を示すタイミングチャートである。
アクセラレータ0_801が、2サイクル目でリクエスト信号をHighにしており、同じサイクルでGRANT信号を出力している。これと同じサイクルでアクセラレータ1_802のリクエスト信号もHighになっているが、GRANT信号がLowとなっているため、アクセラレータ1_802は信号を保持したまま停止した状態となっている。
アクセラレータ1_802のリクエスト信号がLowになる5サイクル目でアクセラレータ1_802のGRANT信号はHighになり、アクセラレータ1_802のプログラムが1サイクルだけ進む。こうして、不図示のALU側では、全てのサイクルで演算が行われる。その際、アクセラレータ1_802のプログラムは乗算命令が連続し又は加算命令が連続するため、アクセラレータ0_801のプログラムから少し遅れて、アクセラレータ1_802のプログラムが実行されていくことになる。
図11は、アクセラレータ103が備える書込部113の回路図である。書込部113は、乗算ALU(図8のALU805)からの演算結果Qの入力端子1102と、有効なデータのサイクルを示すVALID信号の入力端子1103を有する。また、書込部113は、除算ALU(図8のALU806)からの演算結果Qの入力端子1104と、VALID信号の入力端子1105を有する。更に、書込部113は、加算ALU(図8のALU807)からの演算結果Qのデータ入力端子1106と、VALID信号の入力端子1107を有する。
アクセラレータ103は、1サイクルの間に3つのALU805~807のうちの1つにしかリクエスト信号を出さないため、VALID信号及び演算結果QはALU805~807のうちの1つからしか戻って来ない。したがって、アクセラレータ103は、VALID信号及び演算結果QをOR回路1111,1112で受け取ることができる。また、FNOPのサイクルにはデータはないが、入力端子1108からVALID信号として受け取る。OR回路1111,1112が受け取ったデータは、FIFOバッファ1113に書き込まれる。
FIFOバッファ1113にデータが書き込まれると、出力端子1118からデータが、出力端子1119から書き込み要求信号が、SRAMブロック104へ出力される。SRAMブロック104が書き込み要求信号を受理すると、GRANT信号の入力端子1120から入力されるGRANT信号がHighになり、FIFOバッファ1113は次の信号を出力する。FIFOバッファ1113は、中身が空になるとTMPTY信号をHighにして、動作を停止する。GRANT信号の入力端子1120から入力されるGRANT信号がHighになる度に、カウンタ1114がカウントアップするカウンタの出力は2ビットだけシフトする。カウンタ1114から出力されるカウントは、ベースアドレス入力端子1109から入力されるベースアドレスと加算されてアドレスバス端子1121へ送られ、そこからSRAMブロック104へ出力される。
図12は、アクセラレータ103が実行可能なプログラムを生成するためのコンパイラのフローチャートである。なお、図12に示す各処理に付されたS番号は工程順序を表している。なお、コンパイラ(プログラム)自体は、情報処理装置100とは異なるシステムで作成されており、コンパイルにより生成された、アクセラレータ103が実行可能なプログラムはDRAM102に格納されている。
S1201では、ソースコードを読み込み、内部の中間データとして保持する。なお、本実施形態でのアクセラレータ103は、プログラム中に分岐命令を持たないが、簡単なループや配列を表現可能なC言語等のソース言語で動作することを想定している。
S1202では、ループを展開し、全ての変数にシンボルを割り付ける。図13(a)は、プログラムの展開例を示しており、左式のプログラムは右式の通りに展開される。
S1203では、多項式の中間ノードに中間変数のシンボルを割り付ける。図13(b)は、多項式の分解例を示しており、左式は右式の通りに2つの式に分解することができる。
S1204では、代入から参照までのステップ数が第1の閾値よりも短い命令を検索し、発見することができたか否かを判定する。第1の閾値は、演算を開始してから演算結果が参照可能となるまでのサイクル数よりも大きい値である。その命令が発見されたと判定された場合(S1204でYES)、処理はS1205へ進む。
S1205では、代入と参照の順序が狂わないように前後の命令を入れ替えて、代入から参照までのステップ数が第1の閾値よりも長くなるように変更する。図13(c)は、プログラムでの式の並べ替えの例を説明する図であり、左式の命令列を右式のように並べ替える。
S1206では、代入から参照までのステップ数が第1の閾値より短い状態が続いているか否かを判定する。代入と参照の順序が狂わないように前後の命令を入れ替えても代入から参照までのステップ数が第1の閾値よりも短い場合(第1の閾値よりも長くならない場合)(S1206でYES)、処理はS1207へ進む。
S1207では、WAIT命令(図7(c)を参照して説明したWAIT命令708)を挿入し、その後、処理をS1204へ戻す。一方、代入から参照までのステップ数が第1の閾値以上となった場合(S1204でNO)、処理はS1204へ戻される。
S1204~S1206又はS1207までのループを繰り返すことにより、S1204で代入から参照までのステップ数が第1の閾値より短い命令が発見されなくなったと判定された場合(S1204でNO)、処理はS1208へ進む。
S1208では、代入から参照までのステップ数が第2の閾値よりも長い命令を検索し、発見することができたか否かを判定する。第2の閾値は、SRAMブロック104のワークエリアに格納可能なデータ数より小さい値で、本実施形態では511より小さい値である。ステップ数が第2の閾値よりも長い命令が発見された場合(S1208でYES)、処理はS1209へ進む。
S1209では、変数の生存期間を延長させる命令を挿入し、その後、処理をS1208へ戻す。S1208~S1209のループを繰り返すことで、代入から参照までのステップ数が第2の閾値よりも長い命令を発見することができなくなった場合(S1208でNO)、処理はS1210へ進む。
S1210では、アッセンブラファイルをSRAMブロック104へ出力する。生成されるアッセンブラファイルは、所定のSRAMに格納される。これにより本処理は終了する。アッセンブラは、中間変数を確保するアドレスが0x7FCに達すると0x000に戻るアクセラレータ103の構造に合わせて、アドレスを割り当てる。
以上の通り第1実施形態によれば、アクセラレータ103を、多数のアドレスを必要とする汎用レジスタを用いずに、命令読込部110、データ読込部109及び書込部113をキューで構成すると共にALU111の稼働率を上げている。つまり、アクセラレータ103の回路規模を小さくすると共に、ALU111の稼働率を上げることを可能としている。
<第2実施形態>
第1実施形態では、ゼロ(0)を加算するか又は1を乗算することにより、変数生存期間の延長命令を生成した。これに対して、第2実施形態では、加算演算を行うALUや乗算演算を行うALUを用いずに変数生存期間の延長命令を生成することにより、そのサイクルで空いたALUを別のアクセラレータで利用可能とする。
図14(a)は、第2実施形態に係る情報処理装置の部分的なブロック図である。なお、図14(a)のブロック図では、図8のブロック図と共通する構成について図8と同じ符号を付しており、ここでは既に説明した内容の説明を省略する。
図14(a)に示すように、アクセラレータ0_801、アクセラレータ1_802及びアクセラレータ2_803のそれぞれに、他のアクセラレータとは共有されないスルー用ALU1401が接続されている。図14(b)は、スルーALU1401の回路図である。スルーALU1401は、リクエスト信号(_REQ)を受けるとそのまま受理して、GRANT信号(_GRANT)を出力する。また、これと共に、遅延素子1403により遅延されたVALID信号(_VALID)と同じだけA入力(_A)を遅延素子1402により遅延させてQ出力(_Q)に出力する。3つのスルーALU1401はそれぞれ、専用ALUとなっているため、アクセラレータ0_801、アクセラレータ1_802及びアクセラレータ2_803は同時にスルー処理を実行することができる。
<第3実施形態>
第1実施形態では、ソース言語をアクセラレータ103で実行可能な機械語のプログラムに変換した。これに対して、第3実施形態では、中間コードを用いて、アクセラレータ103で実行可能な機械語のプログラムを生成する。
図15(a)は、中間コードを生成するコンパイラのフローチャートである。図15(a)のフローチャートに示す工程のうち、図12のフローチャートにある工程と同じものについては、同じ符号を付して説明を省略する。S1201~S1203の工程を行った後のS1501では、シンボルに対してユニークな番号を割り当てて中間コードを出力する。これにより、図16に示す中間コードが生成される。
図16は、S1501で生成された中間コードのビットフィールドを説明する図である。ワークアドレスID1601は、変数に対して割り当てたユニークな番号を格納する16ビットのエリアである。オペコードフィールド301、ベースアドレスインデックスフィールド302及びオフセットアドレスフィールド303は、図3を参照して説明したアクセラレータ103の命令のビット構成と同じである。ワークエリア以外を示すときのアドレスは、オフセットアドレスフィールド303に書き込まれている。
図15(b)は、アクセラレータ103が実行するプログラムのプログラムローダーによる読み込みフローを表したフローチャートである。図15(b)のフローチャートに示す工程のうち、図12のフローチャートにある工程と同じものについては、同じ符号を付して説明を省略する。
S1505では、S1501で生成した中間コードをメモリに読み込む。これに続くS1204~S1209の工程は図12を参照して説明した通りであるため、ここでの説明を省略する。
S1208の判定がNOになると、S1506にて16ビットの変数を9ビットのアドレスに割り当てて変換する。9ビットのアドレスに割り当てる際に0x1FFまで来ると、次には0x000が割り当てられる。割り当てたアドレスをオフセットアドレスフィールド303に格納したら、ワークアドレスID1601の16ビットは不要となるので取り外して、実行可能な機械語に変換する。
続くS1507では、S1506で変換した機械語のプログラムをSRAMブロック104の所定のSRAMに配置してアクセラレータ103を起動し、機械語のプログラムを実行する。
なお、S1506では、ワークアドレスID1601の16ビットを取り外して実行可能な機械語としたが、アクセラレータが上位16ビットを事前に無視して実行するように設計されていてもよい。これにより、ワークエリアの実装を8ビットや10ビットに変更しても、図15(b)でのプログラムローダーの実装を変更するだけで、中間コードのバイナリの互換性を保証することができる。その結果、ハードウェア設計の自由度を高めることができ、スケーラビリティを確保することが可能になる。
<第4実施形態>
第4実施形態では、第1実施形態に係る情報処理装置100の変形例について説明する。図17は、第4実施形態に係る情報処理装置1700の概略構成を示すブロック図である。なお、情報処理装置1700の構成要素のうち、第1実施形態に係る情報処理装置100の構成要素と同じものについては、同じ符号を付すこととする。
情報処理装置1700は、CPU101、DRAM102及びプロセッサブロック1702を有する。プロセッサブロック1702は、アクセラレータ103、SRAMブロック104、ALU111及び内部CPU1701を有する。内部CPU1701は、アクセラレータ専用のCPUである。CPU101とプロセッサブロック1702は、アクセラレータ103内のコントロールレジスタとDRAM102の共有エリアを用いて通信する。
情報処理装置1700では、第3実施形態で説明したプログラムローダーと命令挿入処理をプロセッサブロック1702の内部CPU1701が行う。なお、プログラムローダーの命令挿入処理の一部又は全部をハードウェア化することも可能である。その場合、少なくともプロセッサブロック1702に対して与えられるプログラムに存在しないWAIT命令や変数生存期間延長命令は、プロセッサブロック1702の内部で挿入されて実行される。
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。更に、上述した各実施形態は本発明の一実施形態を示すものにすぎず、各実施形態を適宜組み合わせることも可能である。
例えば、上記実施形態での個々の数値、ワークエリアの参照可能項目数やALUの数、アクセラレータの数、命令のビット長等は、要求される性能に応じて変更(設計)が可能で有り、上記の設定に限定されるものではない。また、上記実施形態では、単精度浮動小数点演算を行う構成について説明したが、倍精度演算や整数演算への適用も可能であり、更にALUとして二乗や平方根等の2項演算子の追加も可能である。更に、アクセラレータが実行するプログラムを、コンパイラによりプログラムを機械語に変換することで生成しているが、プログラム設計者が直接に機械語プログラムを設計しても構わない。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100,1700 情報処理装置
101 CPU
102 DRAM
103 アクセラレータ
104 SRAMブロック
105 コントロールレジスタ
106 WAITアドレス
109 読込部
110 命令読込部
111 ALU
112 データ転送部
113 書込部
114 書き込みアドレス部
116 比較部
1701 内部CPU
1702 プロセッサブロック

Claims (14)

  1. 命令列とデータが記憶された記憶手段から、順次、命令を読み込む命令読込部と、
    前記命令読込部が読み込んだ命令のアドレスフィールドに従って前記記憶手段からデータを読み込むデータ読込部と、
    前記命令読込部が読み込んだ命令の種別に従って前記データ読込部が読み込んだデータを演算手段へ転送するデータ転送部と、
    前記演算手段から出力される演算結果を前記記憶手段に書き込む書込部と、を備え
    前記命令読込部が読み込む命令には演算結果を格納するアドレスを示すフィールドが存在せず、
    前記書込部は、前記演算手段から出力された、前記命令に対応する演算結果を、順次、前記記憶手段の連続したアドレスに書き込むことを特徴とする情報処理ユニット。
  2. 前記命令読込部、前記データ読込部および前記書込部はそれぞれキューとして構成されていることを特徴とする請求項1に記載の情報処理ユニット。
  3. 命令列とデータが記憶された記憶手段から、順次、命令を読み込む命令読込部と、
    前記命令読込部が読み込んだ命令のアドレスフィールドに従って前記記憶手段からデータを読み込むデータ読込部と、
    前記命令読込部が読み込んだ命令の種別に従って前記データ読込部が読み込んだデータを演算手段へ転送するデータ転送部と、
    前記演算手段から出力される演算結果を、順次、前記記憶手段に書き込む書込部と、を備え、
    前記命令読込部が読み込む命令には、前記書込部の書き込みアドレスが指定の値を通過するまで、前記記憶手段からの次のデータ読み出しを抑制する命令があることを特徴とする情報処理ユニット。
  4. 前記命令列を含むプログラムを生成するコンパイラにより、所定の演算結果が前記記憶手段に書き込まれる前に前記所定の演算結果を参照する命令を検出した場合に、前記データ読込部への次のデータの読み込みを抑制する命令前記命令列に挿入されることを特徴とする請求項3に記載の情報処理ユニット。
  5. コンパイラにより生成された命令列が記憶された記憶手段から、順次、命令を読み込む命令読込部と、
    前記命令読込部が読み込んだ命令のアドレスフィールドに従って前記記憶手段からデータを読み込むデータ読込部と、
    前記命令読込部が読み込んだ命令の種別に従って前記データ読込部が読み込んだデータを演算手段へ転送するデータ転送部と、
    前記演算手段から出力される演算結果を、順次、前記記憶手段に書き込む書込部と、を備え、
    前記コンパイラにより、前記記憶手段の所定のアドレスに書き込まれた所定の演算結果が後の演算結果によって上書きされるまでの期間を超えて前記所定の演算結果を参照する命令を検出した場合に、前記所定の演算結果を参照可能とする期間を延長する命令前記命令列に挿入されることを特徴とする情報処理ユニット。
  6. 前記命令読込部、前記データ読込部および前記書込部の動作を制御する制御手段を有することを特徴とする請求項1から5のいずれか1項に記載の情報処理ユニット。
  7. アクセラレータと、
    アクセラレータの動作を制御するCPUと、
    前記CPUで動作するプログラムを記憶するDRAMと、
    前記アクセラレータからの命令に基づいて演算を行うALU(Alithmetic Logic Unit)と、
    SRAMと、を備える情報処理装置であって、
    前記アクセラレータは、
    前記SRAMから、順次、命令を読み込む命令読込部と、
    前記命令のアドレスフィールドに従って前記SRAMからデータを読み込むデータ読込部と、
    前記命令読込部が読み込んだ命令の種別に従って前記データ読込部が読み込んだデータを前記ALUへ転送するデータ転送部と、
    前記ALUから出力される演算結果を前SRAMに書き込む書込部と、を有し、
    前記命令読込部が読み込む命令には、演算結果を格納するアドレスを示すフィールドが存在せず、
    前記書込部は、前記ALUから出力される、前記命令に対応した演算結果を、順次、前記SRAMの連続したアドレスに書き込むことを特徴とする情報処理装置。
  8. 前記命令読込部、前記データ読込部および前記書込部はそれぞれキューとして構成されていることを特徴とする請求項7に記載の情報処理装置。
  9. 前記ALUは、浮動小数点の演算を行うことを特徴とする請求項7又は8に記載の情報処理装置。
  10. 命令列とデータが記憶された記憶手段から、順次、命令を読み込むステップと、
    読み込まれた前記命令のアドレスフィールドに従って前記記憶手段からデータを読み込むステップと、
    前記命令の種別に従って、読み込まれた前記データを読み込まれた順に演算手段へ転送するステップと、
    前記演算手段から出力される演算結果を前記記憶手段に書き込むステップと、
    を有し、
    前記命令を読み込むステップにおいて読み込まれる命令には、演算結果を格納するアドレスを示すフィールドが存在せず、
    前記演算結果を書き込むステップでは、前記演算手段から出力される、前記命令に対応した演算結果が、順次、前記記憶手段の連続したアドレスに書き込まれることを特徴とする情報処理方法。
  11. 命令列とデータが記憶された記憶手段から、順次、命令を読み込むステップと、
    読み込まれた前記命令のアドレスフィールドに従って前記記憶手段からデータを読み込むステップと、
    前記命令の種別に従って、読み込まれた前記データを読み込まれた順に演算手段へ転送するステップと、
    前記演算手段から出力される演算結果を、順次、前記記憶手段に書き込むステップと、を有し、
    前記記憶手段に前記演算結果を書き込むための書き込みアドレスが指定の値を通過するまで次のデータ読み出しを抑制する命令が前記命令列に挿入されていることを特徴とする情報処理方法。
  12. 前記データの読み込みを抑制する命令は、所定の演算結果が前記記憶手段に書き込まれる前に当該所定の演算結果を参照する命令を検出した場合に、前記命令列に挿入されることを特徴とする請求項11に記載の情報処理方法。
  13. コンパイラにより生成された命令列が記憶された記憶手段から、順次、命令を読み込むステップと、
    読み込まれた前記命令のアドレスフィールドに従って前記記憶手段からデータを読み込むステップと、
    前記命令の種別に従って、読み込まれた前記データを読み込まれた順に演算手段へ転送するステップと、
    前記演算手段から出力される演算結果を、順次、前記記憶手段に書き込むステップと、を有し、
    前記コンパイラにより、前記記憶手段の所定のアドレスに記憶された所定の演算結果が後の演算結果によって上書きされるまでの期間を超えて前記所定の演算結果を参照する命令を検出した場合に、前記所定の演算結果を参照可能とする期間を延長する命令が前記命令列に挿入されることを特徴とする情報処理方法。
  14. 請求項10から13のいずれか1項に記載の情報処理方法の各ステップをコンピュータに実行させることを特徴とするプログラム。
JP2019076481A 2019-04-12 2019-04-12 情報処理ユニット、情報処理装置、情報処理方法及びプログラム Active JP7383390B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019076481A JP7383390B2 (ja) 2019-04-12 2019-04-12 情報処理ユニット、情報処理装置、情報処理方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019076481A JP7383390B2 (ja) 2019-04-12 2019-04-12 情報処理ユニット、情報処理装置、情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2020173717A JP2020173717A (ja) 2020-10-22
JP7383390B2 true JP7383390B2 (ja) 2023-11-20

Family

ID=72831514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019076481A Active JP7383390B2 (ja) 2019-04-12 2019-04-12 情報処理ユニット、情報処理装置、情報処理方法及びプログラム

Country Status (1)

Country Link
JP (1) JP7383390B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506567B (zh) * 2020-11-27 2022-11-04 海光信息技术股份有限公司 数据读取方法和数据读取电路

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004246449A (ja) 2003-02-12 2004-09-02 Japan Science & Technology Agency キュープロセッサ
JP2006139766A (ja) 2004-10-12 2006-06-01 Nec Electronics Corp 情報処理装置
WO2013080289A1 (ja) 2011-11-28 2013-06-06 富士通株式会社 信号処理装置及び信号処理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61134863A (ja) * 1984-12-04 1986-06-21 Mitsubishi Electric Corp デ−タ処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004246449A (ja) 2003-02-12 2004-09-02 Japan Science & Technology Agency キュープロセッサ
JP2006139766A (ja) 2004-10-12 2006-06-01 Nec Electronics Corp 情報処理装置
WO2013080289A1 (ja) 2011-11-28 2013-06-06 富士通株式会社 信号処理装置及び信号処理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
James E. Smith,Decoupled access/execute computer architectures,ACM SIGARCH Computer Architecture News,米国,ACM,1982年04月01日,Volume 10,Issue 3,pp 112-119,[令和5年4月21日検索],インターネット<URL:https://doi.org/10.1145/1067649.801719>
野本 裕輔 他,FIFOを用いて実現するアレイプロセッサのための効率的なデータ入出力機構の提案,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2008年01月10日,第107巻 第419号,第37頁-第42頁

Also Published As

Publication number Publication date
JP2020173717A (ja) 2020-10-22

Similar Documents

Publication Publication Date Title
JP2021174506A (ja) 事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ
JP3555140B2 (ja) レジスタリネーム回路の半導体フロアプランと方法
JP3547139B2 (ja) プロセッサ
US6826677B2 (en) Renaming registers to values produced by instructions according to assigned produce sequence number
US8122078B2 (en) Processor with enhanced combined-arithmetic capability
JP4130654B2 (ja) 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置
JP2002024011A (ja) プロセッサにおける命令の叙述された実行
JP2007533007A (ja) スレッドごとの多重同時パイプラインを有するマルチスレッドプロセッサ
US20140047218A1 (en) Multi-stage register renaming using dependency removal
US7512771B2 (en) Mapping circuitry and method comprising first and second candidate output value producing units, an in-range value determining unit, and an output value selection unit
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
US6550000B1 (en) Processor to execute in parallel plurality of instructions using plurality of functional units, and instruction allocation controller
KR20090009959A (ko) 마이크로프로세서 내에서 다수의 레지스터 유니트들로부터의 대응하는 하프워드 유니트들을 결합하기 위한 방법 및 시스템
US6516462B1 (en) Cache miss saving for speculation load operation
JP7383390B2 (ja) 情報処理ユニット、情報処理装置、情報処理方法及びプログラム
GB2394085A (en) Generating code for a configurable microprocessor
US20030154469A1 (en) Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US11853762B1 (en) Single instruction multiple data execution with variable size logical registers
CN110073332B (zh) 数据处理装置和方法
JP2021507348A (ja) ベクトル・キャリー付き加算命令
JP2002251282A (ja) プロセッサにおけるループの処理
JP6020428B2 (ja) ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法
Rohde et al. Improving HLS generated accelerators through relaxed memory access scheduling
Mahalingam et al. Adapting barrel shifter at compilation level for efficient implementation of multiplications
JP2023112584A (ja) ベクトル命令処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220407

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230320

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230706

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231108

R151 Written notification of patent or utility model registration

Ref document number: 7383390

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151