JP2022131311A - ベクトル演算装置、ベクトル演算方法及びプログラム - Google Patents

ベクトル演算装置、ベクトル演算方法及びプログラム Download PDF

Info

Publication number
JP2022131311A
JP2022131311A JP2021030191A JP2021030191A JP2022131311A JP 2022131311 A JP2022131311 A JP 2022131311A JP 2021030191 A JP2021030191 A JP 2021030191A JP 2021030191 A JP2021030191 A JP 2021030191A JP 2022131311 A JP2022131311 A JP 2022131311A
Authority
JP
Japan
Prior art keywords
vector
instruction
random number
register
supplied
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.)
Pending
Application number
JP2021030191A
Other languages
English (en)
Inventor
聡 多賀谷
Satoshi Tagaya
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 JP2021030191A priority Critical patent/JP2022131311A/ja
Publication of JP2022131311A publication Critical patent/JP2022131311A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】 乱数を使用する演算のベクトル処理化を可能にするベクトル演算技術を提供する。【解決手段】 本開示の一態様に係るベクトル演算装置204は、ベクトル命令を受け付けるベクトル命令受付部2040と、乱数を発生させ発生した前記乱数を供給する乱数発生部2044と、受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、前記乱数が供給されるよう制御するベクトル演算制御部2041と、を備える。【選択図】 図1

Description

本開示はベクトル演算技術に関する。
一般的な磁性体の振る舞いをシミュレートするためのイジング模型処理は、演算の途中において得られた値に依存する確率で乱数的に値を変化させる処理を伴う。
特許文献1には、ニューラルネットワークにおいて乱数を利用する並列処理の例が記載されている。特許文献1の技術では、オペランドを直接改変し、複数の演算パスに同一のデータを送り込み、並列処理を行う。
特開2019-079524号公報
ベクトル型計算装置において、演算の途中において得られた値に依存する確率で乱数的に値を変化させる処理を行う場合、要素ごとの値への依存性によって処理のベクトル処理化が阻害される。そのため、このような処理をベクトル型計算装置において行っても、ベクトル処理による性能の向上は得られない。
特許文献1に記載されている処理は、ベクトル型計算装置によって実行されることが想定されていないため、演算の途中において得られた値に依存する確率で乱数的に値を変化させる処理のベクトル処理化の阻害を解消できない。演算の途中において得られた値に依存する確率で乱数的に値を変化させる処理のベクトル処理化は、例えば、乱数を使用する演算のベクトル処理化によって可能になる。
本開示の目的の一つは、乱数を使用する演算のベクトル処理化を可能にするベクトル演算技術を提供することである。
本開示の一態様に係るベクトル演算装置は、ベクトル命令を受け付けるベクトル命令受付手段と、乱数を発生させ発生した前記乱数を供給する乱数発生手段と、受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、前記乱数が供給されるよう制御するベクトル演算制御手段と、を備える。
本開示の一態様に係るベクトル演算方法は、ベクトル命令を受け付け、乱数を発生させ、受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、発生した前記乱数が供給されるよう制御する。
本開示の一態様に係るプログラムは、ベクトル命令を受け付けるベクトル命令受付処理と、乱数を発生させ発生した前記乱数を供給する乱数発生処理と、受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、前記乱数が供給されるよう制御するベクトル演算制御処理と、をコンピュータに実行させる。本開示の一態様は、上述のプログラムを記憶する記憶媒体によっても実現される。
本開示には、乱数を使用する演算のベクトル処理化を可能にするという効果がある。
図1は、本開示の第1の実施形態に係るベクトル演算装置の構成の例を表すブロック図である。 図2は、本開示の第1の実施形態に係るベクトル演算装置の動作の例を表すフローチャートである。 図3は、イジング模型処理のアルゴリズムのソースコードの一例を模式的に表す図である。 図4は、本開示の第2の実施形態に係るプロセッサの構成の例を表すブロック図である。 図5は、本開示の第2の実施形態に係るベクトル命令処理部の構成の例を表すブロック図である。 図6は、本開示の第2の実施形態に係るプロセッサのベクトル命令処理部104の動作の一例を表すフローチャートである。 図7は、本開示の第2の実施形態に係るプロセッサのベクトル命令処理部104のベクトル演算命令実行処理の動作の一例を表すフローチャートである。 図8は、ベクトル計算機のためのアセンブリ言語記述の例を表す図である。 図9は、本開示の実施形態に係る演算装置を実現することができる、コンピュータのハードウェア構成の一例を表す図である。
本開示の実施形態の説明の前に、二種類のスピンの状態を、+1及び-1によって表すケースにおいて、メトロポリス法などを適用した場合、上述のイジング模型処理のアルゴリズムについて説明する。
図3は、イジング模型処理のアルゴリズムのソースコードの一例を模式的に表す図である。このアルゴリズムにおいては、ハミルトニアンとして、式H=-Aj*Σ{近傍スピン}-B*{自スピン}によって表される2次元のHが用いられる。この式において、Ajは相互作用を表し、Bは磁場を表す。このアルゴリズムは、それぞれの要素において自スピンの反転に伴うエネルギーの最小化又は最大化を目的とし、それぞれのスピン状態をある程度乱数的に変化させながら操作し、最終解を求める。その際行われる計算は、基本的にはベクトル化に親和するアクセスパタンを持っているものの、途中演算結果に依存する確率で乱数的にスピン状態を変化させるという処理を伴う。図3に示す例では、ブロックAの処理が、上述の処理に対応する。ブロックA0において、生成した乱数が途中演算結果の大きさと比較され、比較の結果に基づいて次のループにおけるスピンの反転の有無が決定されている。図3に示すアルゴリズムでは、このような要素毎の値依存性が、ベクトル化を阻害している。そのため、このようなアルゴリズムではベクトル処理による性能向上を享受することができなかった。
<第1の実施形態>
まず、本開示の第1の実施形態について、図面を使用して詳細に説明する。
<構成>
図1は、本開示の第1の実施形態に係るベクトル演算装置204の構成の例を表すブロック図である。本実施形態のベクトル演算装置204は、後述の実施形態のベクトル命令処理部104に対応する。図1に示す例では、本実施形態のベクトル演算装置204は、ベクトル命令受付部2040と、乱数発生部2044と、ベクトル演算制御部2041とを含む。
ベクトル命令受付部2040は、ベクトル命令を受け付ける。乱数発生部2044は、乱数を発生させ、発生した乱数を要素として含む乱数ベクトルを供給する。
ベクトル演算制御部2041は、受け付けられたベクトル命令が、乱数を使用するベクトル乱数命令である場合、ベクトル命令を実行する演算部に、乱数ベクトルが供給されるように制御する。この演算部は、後述の実施形態における乗加算器1046に対応する。本開示の実施形態の説明では、乱数を使用するベクトル乱数命令とは、具体的には、少なくとも乱数を対象とするベクトル処理の命令(すなわち、ベクトル命令)である。さらに具体的には、ベクトル乱数命令は、少なくとも乱数のベクトルである乱数ベクトルを対象とするベクトル処理の命令であるベクトル命令を指す。乱数ベクトルの要素の値は、必ずしも同一の値ではない。乱数ベクトルが要素として含む乱数は、例えば、独立に発生された乱数であってよい。本開示の乱数は、いわゆる疑似乱数であってもよい。
ベクトル命令受付部2040は、後述の実施形態のベクトル命令受付部2040に対応する。ベクトル演算制御部2041は、後述の実施形態のベクトル演算制御部1041に対応する。乱数発生部2044は、後述の実施形態の乱数発生器1044に対応する。乱数発生部2044は、さらに、後述の実施形態の選択回路1045に対応していてもよい。
<動作>
図2は、本開示の第1の実施形態に係るベクトル演算装置204の動作の例を表すフローチャートである。図2に示す例では、ベクトル命令受付部2040が、ベクトル命令を受け取る(ステップS101)。次に、ベクトル演算制御部2041が、受け付けられたベクトル命令の種類を判定する(ステップS102)。ベクトル命令が、乱数を使用するベクトル命令である、ベクトル乱数命令である場合(ステップS103においてYES)、乱数発生部2044は、乱数を発生させ乱数ベクトルを生成する(ステップS104)。ベクトル演算制御部1041は、受け付けられたベクトル命令の処理を実行する演算部に乱数ベクトルが供給されるように制御する(ステップS105)。受け付けられたベクトル命令がベクトル乱数命令ではない場合(ステップS103においてNO)、ベクトル演算装置204は、図2に示す動作を終了する。
なお、ベクトル演算装置204は、図2に示す動作の他に、ベクトル命令を受け取った場合に一般的なベクトル演算器が行う動作を行ってよい。具体的には、ベクトル演算装置204は、ベクトル命令をベクトル命令受付部1040から受取、受け取ったベクトル命令を演算部に渡してよい。加えて、ベクトル演算装置204は、ベクトル演算装置204に含まれるベクトルレジスタに格納された、受け取ったベクトル命令が使用するデータが、演算部に供給されるように制御してもよい。
<効果>
本実施形態には、乱数を使用する演算のベクトル処理化を可能にするという効果がある。その理由は、ベクトル演算制御部2041が、受け付けられたベクトル命令が、乱数を使用するベクトル乱数命令である場合、ベクトル命令を実行する演算部に、乱数ベクトルが供給されるように制御するからである。
<第2の実施形態>
次に、本開示の第2の実施形態について図面を使用して詳細に説明する。
<構成>
図4は、本開示の第2の実施形態に係るプロセッサ10の構成の例を表すブロック図である。図4に示す範囲では、本実施形態のプロセッサ10は、一般的なベクトルプロセッサの構成を持つ。また、プロセッサ10は、メモリ20と接続されている。なお、本実施形態のプロセッサ10の構成は、図4に示す例に限られない。例えば、プロセッサ10とメモリ20との間に、追加のキャッシュ階層又はメモリネットワークなどが存在していてもよい。
プロセッサ10は、フェッチ・デコード部102と、スケジューラ103と、ベクトル命令処理部104と、メモリアクセス命令処理部105と、スカラ演算命令処理部106と、分岐命令処理部107と、スカラレジスタ110とを含む。プロセッサ10は、L1(Level 1)キャッシュとして、L1命令キャッシュ101と、L1データキャッシュ108とを含む。また、プロセッサ10は、さらに、L2キャッシュ109を含む。
L1命令キャッシュ101は、命令コードをキャッシュする。フェッチ・デコード部102は、命令キャッシュ101から命令コードを取り出し、取り出した命令コードのデコード及びレジスタリネーミングを行い、デコード及びレジスタ理ネーミングによって得られた命令をスケジューラ103に送る。スケジューラ103は、受け取った命令に対して一般的なリオーダバッファやリザベーションステーション動作を行う。スケジューラ103は、実行可能となった命令を、その命令の種別に従って、ベクトル命令処理部104、メモリアクセス命令処理部105、スカラ演算命令処理部106、分岐命令処理部107のうち、いずれか1つ又は複数に送出する。
メモリアクセス命令処理部105は、スカラロード及びスカラストアなどの命令を処理する。メモリアクセス命令処理部105は、一般的なスカラプロセッサの、ロード命令及びストア命令を処理するメモリアクセス命令処理部と同等である。メモリアクセス命令処理部105は、L1データキャッシュ108に対する、ロード及びストアのアクセスを実施する。
L1データキャッシュ108は、スカラ処理用のデータをキャッシュする。L1データキャッシュ108は、L1データキャッシュ108に格納されているデータの状況が所定の条件を満たした場合に、L2キャッシュ109に対するデータの要求を行う。L1データキャッシュ108からのL2キャッシュ109に対するデータの要求は、L2キャッシュ109に格納されているデータを読み出し、読み出されたデータをL1データキャッシュ108に送信する要求である。L1データキャッシュ108は、L1データキャッシュ108に格納されているデータの状況が他の所定の条件を満たした場合に、L2キャッシュ109へのデータの書き出しを行う。L2キャッシュ109へのデータの書き出しは、L1データキャッシュ108に格納されているデータを読み出し、読み出されたデータをL2キャッシュ109に書き込むことである。L1データキャッシュ108がL2キャッシュ109に対するデータの要求を行う条件、及び、L1データキャッシュ108がL2キャッシュ109へのデータの書き出しを行う条件は、それぞれ、あらかじめ適宜定められていてよい。
L2キャッシュ109は、スカラデータ及びベクトルデータの双方を記憶できる。L2キャッシュ109は、L1データキャッシュ108からの要求に従って、データの読み書きを行う。具体的には、L2キャッシュ109は、L1データキャッシュ108からのデータの読み出しの要求に従って、記憶しているデータを読み出し、読み出されたデータをL1データキャッシュ108に送出する。L2キャッシュ109は、L1データキャッシュ108からのデータの書き込みの要求に従って、L1データキャッシュ108からデータを受け取り、受け取ったデータを記憶する。L2キャッシュ109は、ベクトル命令処理部104からの要求に従って、データの読み書きを行う。具体的には、L2キャッシュ109は、ベクトル命令処理部104からのデータの読み出しの要求に従って、記憶しているデータを読み出し、読み出されたデータをベクトル命令処理部104に送出する。L2キャッシュ109は、ベクトル命令処理部104からのデータの書き込みの要求に従って、ベクトル命令処理部104からデータを受け取り、受け取ったデータを記憶する。
L2キャッシュ109は、記憶しているデータの状況に応じて、メモリ20に対するデータの読み書きの要求を行う。具体的には、L2キャッシュ109は、記憶しているデータの状況が所定の条件を満たす場合、L2キャッシュ109は、記憶しているデータをメモリ20に書き込む。L2キャッシュ109は、記憶しているデータの状況が他の所定の条件を満たす場合、L2キャッシュ109は、メモリ20に格納されているデータを読み出す。これらの所定の条件は、あらかじめ適宜定められていてよい。L2キャッシュ109に関する所定の条件は、L1データキャッシュに関する所定の条件と異なっていてよい。
スカラ演算命令処理部106は、スケジューラ103からスカラ加算、スカラ減算、論理演算、特殊処理などの命令を受け取り、受け取った、スカラ加算、スカラ減算、論理演算、特殊処理などの命令を実行する。
分岐命令処理部107は、スケジューラ103から分岐命令を受け取り、受け取った分岐命令を実行する。
スカラレジスタ110は、一般的なスカラプロセッサにおけるレジスタと同等である。スカラレジスタ110は、一般的なスカラプロセッサにおけるレジスタと同様に使用される。後で説明する例では、スカラレジスタ110は、128本の、64ビット幅のレジスタを含む。以下の例では、これらのレジスタを、それそれ、SR0~SR127と表記する。なお、スカラレジスタ110の構成は、この例に限定されない。
ベクトル命令処理部104は、ベクトルメモリアクセス命令及びベクトル演算命令などをスケジューラ103からバス10400を介して受け取り、受け取ったベクトルメモリアクセス命令及びベクトル演算命令などを実行する。バス10400は、スケジューラ103とベクトル命令処理部104とを接続するバスである。受け取った命令が、ベクトルのメモリロード命令又はベクトルのストア命令である場合、ベクトル命令処理部104は、バス10401を介して、L2キャッシュ109又はメモリ20に対するメモリアクセス処理を実施する。バス10401は、ベクトル命令処理部104とL2キャッシュ109とを接続するバスである。ベクトル演算命令は、例えば、ベクトル加算命令及びベクトル減算命令などである。
以下では、本実施形態のベクトル命令処理部104について詳細に説明する。
図5は、本開示の第2の実施形態に係るベクトル命令処理部104の構成の例を表すブロック図である。図5に示す例では、ベクトル命令処理部104は、ベクトル命令受付部1040と、ベクトル演算制御部1041と、ベクトルレジスタ1042と、ベクトルメモリアクセス制御部1043と、乱数発生器1044と、選択回路1045と、乗加算器1046とを含む。
ベクトル命令受付部1040は、バス10400を介してスケジューラ103からベクトル命令を受け付ける。ベクトル命令受付部1040は、受け付けたベクトル命令の種別に応じて、受け取ったベクトル命令の送り先を、ベクトルメモリアクセス制御部1043及びベクトル演算制御部1041から決定する。ベクトル命令受付部1040は、決定した送り先に、受け付けたベクトル命令を送る。
具体的には、受け付けたベクトル命令の種別が、例えば、ベクトルメモリアクセスである場合、ベクトル命令受付部1040は、受け付けたベクトル命令をベクトルメモリアクセス制御部1043に送る。本実施形態の説明では、ベクトルメモリアクセスは、ベクトルレジスタ1042と、L2キャッシュ109又はメモリ20との間でデータのやり取りを行う命令の種別である。種別がベクトルメモリアクセスである命令は、具体的には、例えば、ベクトルレジスタ1042のデータをL2キャッシュ109又はメモリ20に書き出す命令と、L2キャッシュ109又はメモリ20のデータをベクトルレジスタ1042に読み込む命令とを含む。以下では、種別がベクトルメモリアクセスである命令を、ベクトルメモリアクセス命令とも表記する。
また、受け付けたベクトル命令の種別が、例えば、ベクトル演算である場合、ベクトル命令受付部1040は、受け付けたベクトル命令をベクトル演算制御部1041に送る。本実施形態の説明では、ベクトル演算は、例えば、ベクトル加算及びベクトル減算を含む、ベクトルの演算の命令の種別である。以下では、種別がベクトル演算である命令を、ベクトル演算命令とも表記する。
ベクトルメモリアクセス制御部1043は、ベクトル命令受付部1040からベクトルメモリアクセス命令を受け取ると、受け取った命令に従って、ベクトルレジスタ1042と、L2キャッシュ109又はメモリ20との間のデータのやり取りを実行する。
ベクトルレジスタ1042は、一般的なベクトル計算機において実装されているベクトルレジスタと同等である。以下で説明する例では、ベクトルレジスタ1042は、64セットのベクトルを含む。1セットのベクトルは、256要素の64ビットのデータを記憶する。以下の例では、64セットのベクトルを、それぞれ、VR0~VR63と表記する。なお、ベクトルレジスタ1042の構成は、以上の例に限定されない。
ベクトル演算制御部1041は、ベクトル命令受付部1040から、種別がベクトル演算であるベクトル命令を受け取る。ベクトル演算制御部1041は、受け取ったベクトル命令による、ベクトル加算及びベクトル減算などのベクトル処理の実行を制御する。ベクトル演算制御部1041によるベクトル処理の実行の制御については、後で詳細に説明する。
乗加算器1046は、ベクトル処理を実行する。乗加算器1046は、例えば、一般的なFMA(Fused Multiply-Add)演算器であってよい。乗加算器1046は、演算の結果をベクトルレジスタ1042に送る。ベクトルレジスタ1042に送られた演算の結果は、ベクトルレジスタ1042のレジスタ値の更新に用いられる。なお、本実施形態の例では、簡便化のため、ベクトル命令処理部104が単一の乗加算器1046を含む構成について説明する。しかし、ベクトル命令処理部104は、複数の乗加算器1046を含んでいてもよい。ベクトル命令処理部104は、他の論理演算用のハードウェア、及び、特殊演算用のハードウェアの、一方又は双方を含んでいてもよい。
乱数発生器1044は、乱数を生成する。乱数発生器1044は、指定された範囲の乱数を生成する。乱数発生器1044は、生成した乱数を選択回路1045に送る。乱数発生器1044は、具体的には、要素の値が乱数であるベクトルデータを生成し、生成したベクトルデータを選択回路1045に送ってよい。以下では、要素の値が乱数であるベクトルデータを、乱数ベクトルとも表記する。乱数ベクトルの要素は、例えば、必ずしも互いに同一にならないように生成した乱数であってよい。
選択回路1045は、乱数発生器1044が生成した乱数(具体的には、例えば、乱数ベクトル)と、ベクトルレジスタ1042から読み出された値(言い換えると、ベクトルデータ)と、を受け取る。選択回路1045は、ベクトル演算制御部1041による制御に従って、乱数発生器1044が生成した乱数と、ベクトルレジスタ1042から読み出された値と、から、乗加算器1046に入力される値を選択する。選択回路1045は、選択された値を、乗加算器1046に入力する。
図5に示す例では、乱数発生器1044が生成した乱数は、乱数発生器1044からバス10405を介して選択回路1045に入力される。選択回路1045は、乱数発生器1044が生成した乱数を、バス10405を介して乱数発生器1044から受け取る。ベクトルレジスタ1042から読み出された値は、バス10404を介して選択回路1045に入力される。選択回路1045は、ベクトルレジスタ1042から読み出された値を、バス10404を介して受け取る。選択回路1045は、バス10406を介するベクトル演算制御部1041による制御のもとで、乗加算器1046に入力される値を選択する。ベクトル演算制御部1041による制御については、以下で詳述する。
ベクトル演算制御部1041は、ベクトル命令受付部1040から受け取ったベクトル命令が、乱数を使用するベクトル命令である場合、選択回路1045が、乱数発生器1044が生成した乱数が乗加算器1046に入力するよう制御する。乱数を使用するベクトル命令は、具体的には、例えば、上述の乱数ベクトルを対象とするベクトル命令、言い換えると、上述の乱数ベクトルが引数であるベクトル命令(すなわち、上述の、本開示の実施形態の説明ではベクトル乱数命令と表記される命令)である。
ベクトル演算制御部1041は、例えば、受け取ったベクトル命令がベクトル乱数命令である場合に、乱数発生器1044によって生成された乱数を乗加算器1046に入力する指示を表す信号を、バス10406を介して選択回路1045に送出する。乱数発生器1044によって生成された乱数を乗加算器1046に入力する指示を表す信号を、以下では、乱数選択信号と表記する。選択回路1045は、バス10406を介して乱数選択信号を受け取った場合に、乱数発生器1044によって生成された乱数を乗加算器1046に入力する。選択回路1045は、バス10406を介して乱数選択信号を受け取った場合に、乱数発生器1044に、乱数を発生する指示を送信してもよい。この場合、乱数発生器1044は、乱数を発生する指示を選択回路1045から受け取った場合に、乱数を発生させ発生した乱数を、バス10405を介して選択回路1045に送出する。
ベクトル演算制御部1041は、受け取ったベクトル命令がベクトル乱数命令ではない場合に、ベクトルレジスタ1042から読み出された値を乗加算器1046に入力する指示を表す信号を、バス10406を介して選択回路1045に送出してもよい。ベクトルレジスタ1042から読み出された値を乗加算器1046に入力する指示を表す信号を、以下の説明では、レジスタデータ選択信号と表記する。この場合、選択回路1045は、バス10406を介してレジスタデータ選択信号を受け取った場合に、ベクトルレジスタ1042から読み出された値を乗加算器1046に入力する。
ベクトル演算制御部1041は、受け取ったベクトル命令がベクトル乱数命令ではない場合に、レジスタデータ選択信号を選択回路1045に送出しなくてもよい。この場合、選択回路1045は、バス10406を介して乱数選択信号を受け取っている場合に、乱数発生器1044によって生成された乱数を乗加算器1046に入力する。そして、選択回路1045は、バス10405を介して乱数選択信号を受け取っている場合は、ベクトルレジスタ1042から読み出された値を乗加算器1046に入力する。
ベクトル演算制御部1041による制御は、以上の例に限られない。
ベクトル演算制御部1041は、バス10404を介して、受け取ったベクトル命令を乗加算器1046に送出してもよい。ベクトル演算制御部1041は、受け取ったベクトル命令によって使用されるベクトルのデータが、ベクトルレジスタ1042から読み出され、バス10403を介して乗加算器1046に入力されるように、ベクトルレジスタ1042を制御してもよい。
また、図5に示す例は、ベクトルメモリアクセス制御部1043は、L2キャッシュ109又はメモリ20からロードさしたデータを、ベクトルレジスタ1042に格納するように描かれている。ベクトルメモリアクセス制御部1043は、ベクトルメモリアクセス制御部1043が、L2キャッシュ109又はメモリ20からロードしたデータを、乗加算器1046に入力できるように構成されていてもよい。ベクトル命令処理部104が、別の演算器を含んでいる場合、別の演算器の出力が乗加算器1046に入力されてもよい。
ベクトルメモリアクセス制御部1043は、ベクトルメモリアクセス制御部1043が、L2キャッシュ109又はメモリ20からロードしたデータを、選択回路1045に入力するように構成されていてもよい。その場合、選択回路1045は、ベクトルレジスタ1042及び乱数発生器1044からの出力だけでなく、ベクトルメモリアクセス制御部1043が、L2キャッシュ109又はメモリ20からロードしたデータを、入力として受け付ける。ベクトルメモリアクセス制御部1043は、別の演算器の出力が、選択回路1045に入力されるように構成されていてもよい。その場合、選択回路1045は、別の演算器の出力を、入力としてさらに受け付ける。これらの場合も、選択回路1045は、ベクトル演算制御部1041による制御のもとで、入力として受け付けたデータから、乗加算器1046に入力するデータを選択し、選択したデータを乗加算器1046に入力する。ベクトル演算制御部1041は、受け付けたベクトル命令によって使用されるデータが、選択回路1045によって選択され乗加算器1046に入力されるよう、バス10406を介して選択回路1045に送出する信号によって選択回路1045を制御する。
<動作>
図6は、本開示の第2の実施形態に係るプロセッサ10のベクトル命令処理部104の動作の一例を表すフローチャートである。図6に示す動作は、ベクトル命令処理部104がベクトル命令を受け付けた場合の、そのベクトル命令を処理する動作の例である。
図6に示す例では、まず、ベクトル命令受付部1040が、ベクトル命令を受け付ける(ステップS201)。ベクトル命令受付部1040は、受け付けたベクトル命令の種類(言い換えると、種別)を判定する(ステップS202)。判定されたベクトル命令の種別がベクトルメモリアクセスである場合(ステップS203においてYES)、ベクトルメモリアクセス制御部1043が、ベクトルメモリアクセスのベクトル命令を実行する(ステップS204)。言い換えると、ベクトルメモリアクセス制御部1043が、種別がベクトルメモリアクセスであるベクトル命令によって表される、L2キャッシュ109又はメモリ20からデータの読出しを行う。
判定されたベクトル命令の種別がベクトルメモリアクセスでない場合(ステップS203においてNO)、本実施形態では、受け付けたベクトル命令の種別は、ベクトル演算である。その場合、ベクトル命令処理部104は、ベクトル演算命令実行処理を実行する(ステップS205)。ベクトル演算命令実行処理については、以下で詳細に説明する。
図7は、本開示の第2の実施形態に係るプロセッサ10のベクトル命令処理部104のベクトル演算命令実行処理の動作の一例を表すフローチャートである。
ベクトル命令がベクトル乱数命令である場合(ステップS211においてYES)、乱数発生器1044は、乱数を発生させ乱数ベクトルを生成する(ステップS212)。ベクトル演算制御部1041が、乗加算器1046に乱数ベクトルが供給されるように制御する(ステップS213)。ベクトル演算制御部1041は、さらに、乗加算器1046がベクトル命令を実行するのに必要なデータが乗加算器1046に入力されるよう制御する。そして、乗加算器1046が、ベクトル命令を実行する(ステップS214)。
ベクトル命令がベクトル乱数命令ではない場合(ステップS211においてNO)、ベクトル演算制御部1041は、乗加算器1046がベクトル命令を実行するのに必要なデータが乗加算器1046に入力されるよう制御する。そして、乗加算器1046が、ベクトル命令を実行する(ステップS214)。そして、ベクトル命令処理部104は、図7に示す動作を終了する。
<効果>
本実施形態には、第1の実施形態の効果と同じ効果がある。本実施形態の効果が生じる理由は、第1の実施形態の効果が生じる理由と同じである。
<具体例>
以下では、図3に示す例のA部及びA0部のアルゴリズムに従った処理を、ベクトル計算機のアセンブリ言語によって記述したアセンブリ言語記述の例を使用して、本開示のプロセッサ10の動作の例について説明する。
図8は、ベクトル計算機のためのアセンブリ言語記述の例を表す図である。図8に示す例では、行の左端に、その行の命令に付与されている番号が付加されている。以下では、図4に示すプロセッサ10によって実行される、図8に示すアセンブリ言語記述が表す処理について説明する。
命令901は、スカラレジスタSR100に、-1.0/Temperatureをセットする浮動小数点数スカラ除算命令である。このTemperatureは、図3に示す例の関数igingmodel()の引数である、浮動小数点数の値である。
命令902は、spin[i][0]~spin[i][255]の内容をベクトルレジスタVR0に読み出す命令である。命令903は、spin[i][2]~spin[i][257]の内容をベクトルレジスタVR1に読み出す命令である。命令904は、spin[i-1][1]~spin[i-1][256]の内容をベクトルレジスタVR2に読み出す命令である。命令905は、spin[i+1][1]~spin[i+1][256]の内容をベクトルレジスタVR3に読み出す命令である。命令906は、spin[i][1]~spin[i][256]の内容をベクトルレジスタVR4に読み出す命令である。
命令907は、ベクトルレジスタVR0の内容とベクトルレジスタVR1の内容とを加算した結果を、ベクトルレジスタVR5に格納するベクトル加算命令(VFADD命令)である。命令908は、ベクトルレジスタVR2の内容とベクトルレジスタVR3の内容とを加算した結果を、ベクトルレジスタVR6に格納するベクトル加算命令(VFADD命令)である。命令909は、ベクトルレジスタVR5の内容とベクトルレジスタVR6の内容とを加算した結果を、ベクトルレジスタVR7に格納するベクトル加算命令(VFADD命令)である。命令907、命令908、命令909によって、ベクトルレジスタVR0、VR1、VR2、VR3の内容の総和がベクトルレジスタVR7に格納される。
命令910は、-1.0*Ajの値を計算し、結果をスカラレジスタSR0に格納する浮動小数点スカラ乗算命令である。なお、演算子「*」は乗算を表す。値Ajは、上述のように、相互作用を表す値である。命令911は、-1.0*Bの値を計算し、結果をスカラレジスタSR1に格納するスカラ乗算命令である。値Bは、磁界の値を表す。
命令912は、ハミルトニアンを計算し、結果をベクトルレジスタVR8に格納するベクトル浮動小数点乗加算の命令である。命令913は、座標[i][j]におけるスピンが現在の状態である場合のエネルギーを計算し、ベクトルレジスタVR9に格納するベクトル浮動小数点乗算の命令である。命令914は、スピンが逆転した場合のエネルギーを計算するための命令であり、ベクトルレジスタVR9に格納されているエネルギーの値に、値-1.0を掛けた値を計算し、結果をベクトルレジスタVF10に格納するベクトル浮動小数点乗算の命令である。命令915は、スピンが逆転していない場合とスピンが逆転した場合のエネルギーの差分を計算するための命令である。具体的には、命令915は、ベクトルレジスタVR10に格納されている値からベクトルレジスタVR9に格納されている値を引いた値を計算し、結果をベクトルレジスタVR11に格納するベクトル浮動小数点減算の命令である。
命令916のVRANCP命令は、上述のベクトル乱数命令の例である。以下では、命令916のVRANCP命令について詳細に説明する。具体的には、プロセッサ10が実行する命令が命令916のVRANCPZ命令である場合の、プロセッサ10の構成要素の動作について説明する。図8に示す例では、命令916のVRANCP命令の入力オペランドは、ベクトルレジスタVR11及びスカラレジスタSR100である。ベクトルレジスタVR11には、命令915によって計算されたエネルギーのベクトルデータが格納されている。スカラレジスタSR100には、命令901によって計算された-1.0/Temperatureの値が格納されている。
命令916のVRANCPは、他のベクトル命令と同様に、プロセッサ10によって実行される。まず、命令コードが、L1命令キャッシュ101から、フェッチ・デコード部102によって取り出される。取り出された命令コードは、フェッチ・デコード部102によってデコードされ、スケジューラ103に登録される。スケジューラ103は、VRANCP命令の発行時に、スカラレジスタSR100に格納されている値を読み出し、デコードされた命令と読み出した値とを、バス10400を介してベクトル命令処理部104に送出する。
ベクトル命令処理部104のベクトル命令受付部1040は、ベクトル命令を受け取り、受け取ったベクトル命令の種別を判別する。受け取ったベクトル命令がVRANCP命令であることを判別した場合、ベクトル命令受付部1040は、VRANCP命令と、受け取ったSR100に格納されている値とを、ベクトル演算制御部1041に送出する。
ベクトル演算制御部1041は、VRANCP命令と、SR100の値とを、ベクトル命令受付部1040から受け取り、受け取ったVRANCP命令とSR100の値とを、バス10404を介して乗加算器1046に送出する。また、ベクトル演算制御部1041は、ベクトルレジスタ1042からベクトルレジスタVR11に格納されているデータを読み出し、バス10403を介して乗加算器1046に入力されるに制御する。ベクトル演算制御部1041は、乱数発生器1044からの出力を選択し選択された乱数発生器1044からの出力を乗加算器1046に入力するように、バス10406を介して選択回路1045を制御する。
乱数発生器1044は、ランダムな値を生成し、生成した値を選択回路1045に送出する。乱数発生器1044がランダムな値を生成する方法は、一般的なプロセッサを含む電子回路においてランダムな値を生成する既存の方法のいずれかであってよい。なお、乱数発生器1044は、生成される乱数の値の分布の範囲を指定する機能や、生成される乱数の分布を変更する機能を持っていてもよい。
乗加算器1046は、VRANCP命令と、スカラレジスタSR100から読み出された値と、乱数発生器1044によって生成された乱数と、を受け取る。乗加算器1046は、受け取ったVRANCP命令の処理として、乱数発生器1044によって生成されたランダムな値から、ベクトルレジスタVR11に格納されている値にスカラレジスタSR100に格納されている値の積を引いた値を、浮動小数点乗加算によって算出し、得られた演算の結果をベクトルレジスタ1042に返送する。例えばベクトル演算制御部1041が、ベクトルレジスタ1042に返納されたデータが、ベクトルレジスタ1042のベクトルレジスタVR12に格納されるように制御する。命令916を実行することによって、図3に示す、式rand() - (-1.0*energy/Temperature)の計算の結果が、ベクトルレジスタVR12に格納される。この計算の結果は、図3に示すA0のブロックにおける比較部分の判定に使用される。
以上で、命令916の処理は終了する。
次の命令917は、ベクトルレジスタVR12に格納されているデータの各要素の最上位ビットだけを取り出し、取り出したビットの情報をベクトルレジスタVR12に格納するベクトルAND演算の命令(すなわち、VAND命令)である。IEEE(Institute of Electrical and Electronics Engineers)浮動小数点フォーマットでは、最上位ビットは符号を表す符号ビットである。命令917の結果として得られた値の要素の符号が負である場合、その要素では、条件「rand() < -1.0?energyD/Temperature」が成立している。
命令918は、ベクトルレジスタVR12に格納されている符号ビットと、元のspin[i][j]の値が格納されているベクトルレジスタVR4との、要素ごとのXORを算出し、演算の結果をベクトルレジスタVR4に格納するベクトルXOR命令である。ベクトルレジスタVR12には、命令917による処理の結果として取り出された符号ビットが格納されている。命令918の処理によって、命令917の結果として得らえた値の符号が負である要素の符号が反転する。
<他の実施形態>
上述のベクトル命令処理部104を含むプロセッサ及びベクトル演算装置204は、それぞれ、専用のハードウェアによって実現することができる。ベクトル命令処理部104及びベクトル演算装置204は、それぞれ、記憶媒体から読み出されたプログラムがロードされたメモリと、そのプログラムを実行するプロセッサとを含むコンピュータによって実現することもできる。ベクトル命令処理部104及びベクトル演算装置204は、それぞれ、前述のコンピュータと専用のハードウェアとの組み合わせによって実現することもできる。
図9は、上述のベクトル命令処理部104及びベクトル演算装置204を実現することができる、コンピュータ10000のハードウェア構成の一例を表す図である。図9に示す例では、コンピュータ10000は、プロセッサ10001と、メモリ10002と、記憶装置10003と、I/O(Input/Output)インタフェース10004とを含む。また、コンピュータ10000は、記憶媒体10005にアクセスすることができる。メモリ10002と記憶装置10003は、例えば、RAM(Random Access Memory)、ハードディスクなどの記憶装置である。記憶媒体10005は、例えば、RAM、ハードディスクなどの記憶装置、ROM(Read Only Memory)、可搬記憶媒体である。記憶装置10003が記憶媒体10005であってもよい。プロセッサ10001は、メモリ10002と、記憶装置10003に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ10001は、I/Oインタフェース10004を介して、例えば、他の装置等にアクセスすることができる。プロセッサ10001は、記憶媒体10005にアクセスすることができる。記憶媒体10005には、コンピュータ10000を、上述のベクトル演算装置として動作させるプログラムが格納されている。
プロセッサ10001は、記憶媒体10005に格納されている、コンピュータ10000を、上述のベクトル演算装置として動作させるプログラムを、メモリ10002にロードする。そして、プロセッサ10001が、メモリ10002にロードされたプログラムを実行することにより、コンピュータ10000は、上述のベクトル演算装置として動作する。
ベクトル命令受付部1040、ベクトル演算制御部1041、ベクトルメモリアクセス制御部1043、乱数発生器1044は、例えば、メモリ10002にロードされたプログラムを実行するプロセッサ10001により実現できる。ベクトル命令受付部2040、ベクトル演算制御部2041、乱数発生部2044は、例えば、メモリ10002にロードされたプログラムを実行するプロセッサ10001により実現できる。ベクトルレジスタ1042は、コンピュータ10000が含むメモリ10002等により実現できる。ベクトル命令受付部1040、ベクトル演算制御部1041、ベクトルメモリアクセス制御部1043、乱数発生器1044、選択回路1045、乗加算器1046の一部又は全部を、専用の回路によって実現できる。ベクトル命令受付部2040、ベクトル演算制御部2041、乱数発生部2044の一部又は全部を、専用の回路によって実現できる。
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
ベクトル命令を受け付けるベクトル命令受付手段と、
乱数を発生させ発生した前記乱数を供給する乱数発生手段と、
受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、前記乱数が供給されるよう制御するベクトル演算制御手段と、
を備えるベクトル演算装置。
(付記2)
ベクトルレジスタに格納されているベクトルが第1バスを介して前記演算手段に供給される第1状態と、前記乱数が前記第1バスを介して前記演算手段に供給される第2状態とから、1つの状態を選択する選択手段
を備え、
前記ベクトル演算制御手段は、受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記第2状態を選択するよう前記選択手段を制御することによって、前記乱数を前記演算手段に供給されるように制御する
付記1に記載のベクトル演算装置。
(付記3)
前記ベクトル演算制御手段は、前記ベクトル命令が、前記乱数に加えてベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトルを前記ベクトルレジスタから前記演算手段に、前記乱数と共に供給する
付記2に記載のベクトル演算装置。
(付記4)
前記ベクトルレジスタと、
前記第1バスによって前記ベクトルレジスタと接続され、第2バスによって前記選択手段と接続されている前記演算手段と、
を備え、
前記ベクトル演算制御手段は、前記ベクトル命令が、前記乱数に加えて前記ベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトル命令を前記演算手段に供給し、前記第1バスを介して前記ベクトルを前記ベクトルレジスタから前記演算手段に供給し、前記第2バスを介して前記乱数を前記乱数発生手段から前記演算手段に供給する
付記3に記載のベクトル演算装置。
(付記5)
前記乱数発生手段は、前記乱数を要素として含むベクトルである乱数ベクトルを生成し、
前記ベクトル演算制御手段は、受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記演算手段に、前記乱数として前記乱数ベクトルが供給されるよう制御する、
付記1乃至4のいずれ一項に記載のベクトル演算装置。
(付記6)
前記ベクトル命令は、前記乱数ベクトルと、前記ベクトルのスカラ値倍とを要素ごとに比較する命令である
付記5に記載のベクトル演算装置。
(付記7)
ベクトル命令を受け付け、
乱数を発生させ、
受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、発生した前記乱数が供給されるよう制御する、
ベクトル演算方法。
(付記8)
ベクトルレジスタに格納されているベクトルが第1バスを介して前記演算手段に供給される第1状態と、前記乱数が前記第1バスを介して前記演算手段に供給される第2状態とから、1つの状態を選択手段によって選択し、
受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記第2状態を選択するよう制御することによって、前記乱数を前記演算手段に供給されるように制御する
付記7に記載のベクトル演算方法。
(付記9)
前記ベクトル命令が、前記乱数に加えてベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトルを前記ベクトルレジスタから前記演算手段に、前記乱数と共に供給する
付記8に記載のベクトル演算方法。
(付記10)
前記演算手段は前記第1バスによって前記ベクトルレジスタと接続され、第2バスによって前記選択手段と接続され、
前記ベクトル命令が、前記乱数に加えて前記ベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトル命令を前記演算手段に供給し、前記第1バスを介して前記ベクトルを前記ベクトルレジスタから前記演算手段に供給し、前記第2バスを介して前記乱数を前記演算手段に供給する
付記9に記載のベクトル演算方法。
(付記11)
前記乱数を要素として含むベクトルである乱数ベクトルを生成し、
受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記演算手段に、前記乱数として前記乱数ベクトルが供給されるよう制御する、
付記7乃至10のいずれ一項に記載のベクトル演算方法。
(付記12)
前記ベクトル命令は、前記乱数ベクトルと、前記ベクトルのスカラ値倍とを要素ごとに比較する命令である
付記11に記載のベクトル演算方法。
(付記13)
ベクトル命令を受け付けるベクトル命令受付処理と、
乱数を発生させ発生した前記乱数を供給する乱数発生処理と、
受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、前記乱数が供給されるよう制御するベクトル演算制御処理と、
をコンピュータに実行させるプログラム。
(付記14)
ベクトルレジスタに格納されているベクトルが第1バスを介して前記演算手段に供給される第1状態と、前記乱数が前記第1バスを介して前記演算手段に供給される第2状態とから、1つの状態を選択手段によって選択する処理
をコンピュータにさらに実行させ、
前記ベクトル演算制御処理は、受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記第2状態を選択するよう前記選択手段を制御することによって、前記乱数を前記演算手段に供給されるように制御する
付記13に記載のプログラム。
(付記15)
前記ベクトル演算制御処理は、前記ベクトル命令が、前記乱数に加えてベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトルを前記ベクトルレジスタから前記演算手段に、前記乱数と共に供給する
付記14に記載のプログラム。
(付記16)
前記演算手段は、前記第1バスによって前記ベクトルレジスタと接続され、第2バスによって前記選択手段と接続され、
前記ベクトル演算制御処理は、前記ベクトル命令が、前記乱数に加えて前記ベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトル命令を前記演算手段に供給し、前記第1バスを介して前記ベクトルを前記ベクトルレジスタから前記演算手段に供給し、前記第2バスを介して前記演算手段に供給する
付記15に記載のプログラム。
(付記17)
前記乱数発生処理は、前記乱数を要素として含むベクトルである乱数ベクトルを生成し、
前記ベクトル演算制御処理は、受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記演算手段に、前記乱数として前記乱数ベクトルが供給されるよう制御する、
付記13乃至16のいずれ一項に記載のプログラム。
(付記18)
前記ベクトル命令は、前記乱数ベクトルと、前記ベクトルのスカラ値倍とを要素ごとに比較する命令である
付記17に記載のプログラム。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
10 プロセッサ
20 メモリ
101 命令キャッシュ
102 フェッチ・デコード部
103 スケジューラ
104 ベクトル命令処理部
105 メモリアクセス命令処理部
106 スカラ演算命令処理部
107 分岐命令処理部
108 データキャッシュ
109 キャッシュ
110 スカラレジスタ
204 ベクトル演算装置
901 命令
902 命令
903 命令
904 命令
905 命令
906 命令
907 命令
908 命令
909 命令
910 命令
911 命令
912 命令
913 命令
914 命令
915 命令
916 命令
917 命令
918 命令
1040 ベクトル命令受付部
1041 ベクトル演算制御部
1042 ベクトルレジスタ
1043 ベクトルメモリアクセス制御部
1044 乱数発生器
1045 選択回路
1046 乗加算器
2040 ベクトル命令受付部
2041 ベクトル演算制御部
2044 乱数発生部
10000 コンピュータ
10001 プロセッサ
10002 メモリ
10003 記憶装置
10004 I/Oインタフェース
10005 記憶媒体
10400 バス
10401 バス
10403 バス
10404 バス
10405 バス
10406 バス

Claims (10)

  1. ベクトル命令を受け付けるベクトル命令受付手段と、
    乱数を発生させ発生した前記乱数を供給する乱数発生手段と、
    受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、前記乱数が供給されるよう制御するベクトル演算制御手段と、
    を備えるベクトル演算装置。
  2. ベクトルレジスタに格納されているベクトルが第1バスを介して前記演算手段に供給される第1状態と、前記乱数が前記第1バスを介して前記演算手段に供給される第2状態とから、1つの状態を選択する選択手段
    を備え、
    前記ベクトル演算制御手段は、受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記第2状態を選択するよう前記選択手段を制御することによって、前記乱数を前記演算手段に供給されるように制御する
    請求項1に記載のベクトル演算装置。
  3. 前記ベクトル演算制御手段は、前記ベクトル命令が、前記乱数に加えてベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトルを前記ベクトルレジスタから前記演算手段に、前記乱数と共に供給する
    請求項2に記載のベクトル演算装置。
  4. 前記ベクトルレジスタと、
    前記第1バスによって前記ベクトルレジスタと接続され、第2バスによって前記選択手段と接続されている前記演算手段と、
    を備え、
    前記ベクトル演算制御手段は、前記ベクトル命令が、前記乱数に加えて前記ベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトル命令を前記演算手段に供給し、前記第1バスを介して前記ベクトルを前記ベクトルレジスタから前記演算手段に供給し、前記第2バスを介して前記乱数を前記乱数発生手段から前記演算手段に供給する
    請求項3に記載のベクトル演算装置。
  5. 前記乱数発生手段は、前記乱数を要素として含むベクトルである乱数ベクトルを生成し、
    前記ベクトル演算制御手段は、受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記演算手段に、前記乱数として前記乱数ベクトルが供給されるよう制御する、
    請求項1乃至4のいずれ一項に記載のベクトル演算装置。
  6. 前記ベクトル命令は、前記乱数ベクトルと、前記ベクトルのスカラ値倍とを要素ごとに比較する命令である
    請求項5に記載のベクトル演算装置。
  7. ベクトル命令を受け付け、
    乱数を発生させ、
    受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、発生した前記乱数が供給されるよう制御する、
    ベクトル演算方法。
  8. ベクトルレジスタに格納されているベクトルが第1バスを介して前記演算手段に供給される第1状態と、前記乱数が前記第1バスを介して前記演算手段に供給される第2状態とから、1つの状態を選択手段によって選択し、
    受け付けられた前記ベクトル命令が前記ベクトル乱数命令である場合、前記第2状態を選択するよう制御することによって、前記乱数を前記演算手段に供給されるように制御する
    請求項7に記載のベクトル演算方法。
  9. 前記ベクトル命令が、前記乱数に加えてベクトルを使用する前記ベクトル乱数命令である場合、当該ベクトルを前記ベクトルレジスタから前記演算手段に、前記乱数と共に供給する
    請求項8に記載のベクトル演算方法。
  10. ベクトル命令を受け付けるベクトル命令受付処理と、
    乱数を発生させ発生した前記乱数を供給する乱数発生処理と、
    受け付けられた前記ベクトル命令が乱数を使用するベクトル乱数命令である場合、前記ベクトル命令を実行する演算手段に、前記乱数が供給されるよう制御するベクトル演算制御処理と、
    をコンピュータに実行させるプログラム。
JP2021030191A 2021-02-26 2021-02-26 ベクトル演算装置、ベクトル演算方法及びプログラム Pending JP2022131311A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021030191A JP2022131311A (ja) 2021-02-26 2021-02-26 ベクトル演算装置、ベクトル演算方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021030191A JP2022131311A (ja) 2021-02-26 2021-02-26 ベクトル演算装置、ベクトル演算方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2022131311A true JP2022131311A (ja) 2022-09-07

Family

ID=83152894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021030191A Pending JP2022131311A (ja) 2021-02-26 2021-02-26 ベクトル演算装置、ベクトル演算方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2022131311A (ja)

Similar Documents

Publication Publication Date Title
JP6469120B2 (ja) セグメント化された演算を実行するためのデータ処理装置及び方法
KR102544275B1 (ko) 콘볼루션 신경망 트레이닝 실행용 장치와 방법
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
EP2569694B1 (en) Conditional compare instruction
KR101105474B1 (ko) 범위 검출을 수행하기 위한 명령어 및 로직
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
JP5671474B2 (ja) 演算データ構造
CN111027690B (zh) 执行确定性推理的组合处理装置、芯片和方法
JP2010186467A (ja) コンピュータにより実施される方法、コンピュータ可読ストレージ媒体およびシステム(simdアーキテクチャの条件付きデータ選択のための高速ベクトル・マスキング・アルゴリズム)
JP2019511056A (ja) 複素数乗算命令
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
JP4601544B2 (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
JP4476210B2 (ja) 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法
EP2353085B1 (en) Operand data structure
TWI791694B (zh) 向量帶進位加法指令
JP6428488B2 (ja) 加減算器及び加減算器の制御方法
JP2022131311A (ja) ベクトル演算装置、ベクトル演算方法及びプログラム
TW201823972A (zh) 向量產生指令
CN113485751A (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
TWI812524B (zh) 藉由算數及/或逐位元單元執行條件敘述的方法及系統
JP2001216136A (ja) 加算回路およびプロセッサ
US20230196124A1 (en) Runtime predictors for neural network computation reduction
JP2010049611A (ja) Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ
WO2020066375A1 (ja) 情報処理装置、情報処理方法、プログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211022

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240112