JP3771682B2 - Vector processing equipment - Google Patents
Vector processing equipment Download PDFInfo
- Publication number
- JP3771682B2 JP3771682B2 JP21721097A JP21721097A JP3771682B2 JP 3771682 B2 JP3771682 B2 JP 3771682B2 JP 21721097 A JP21721097 A JP 21721097A JP 21721097 A JP21721097 A JP 21721097A JP 3771682 B2 JP3771682 B2 JP 3771682B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- register
- blocks
- elements
- stored
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
【0001】
【発明の属する技術分野】
本発明はベクトル処理装置に係り、特に主記憶からベクトル・レジスタへのベクトルロード命令の実行回数を削減することによりベクトル演算の高速化をはかるものである。
【0002】
【従来の技術】
ベクトル処理装置においてベクトル演算を行う場合、図5に示す如く、主記憶100上のデータをベクトル部101のベクトル・レジスタ部110のベクトル・レジスタVR1、VR2にベクトルロードすることが必要である。主記憶100上のデータをベクトル・レジスタ部110のベクトル・レジスタVR1、VR2に格納する際に、ベクトル・アクセス・パイプ111を使用してベクトルロード命令を実行する。この場合、アドレスが1ワードずれた配列をベクトル・レジスタ110にロードする場合でも2回のベクトルロード命令を実行していた。
【0003】
例えば下記のDOループ10
DO 10 I=1、100
A(I)=B(I)+B(I+1)
10 CONTINUE
を実行する場合のように、同一配列Bで1ワードずれた場合でも、2回主記憶アクセスを行うことが必要であった。
【0004】
なお上記DOループ10のプログラムは、下記の演算を行うことを示すものである。
A(1)=B(1)+B(2) ・・・・(1)
A(2)=B(2)+B(3) ・・・・(2)
A(3)=B(3)+B(4) ・・・・(3)
・
・
・
A(100)=B(100)+B(101) ・・・(100)
このプログラムを実行するとき、第1回目のベクトルロード命令により右側の項のうちの1番目の要素B(1)、B(2)・・・B(100)を主記憶100からベクトル・レジスタ部110のベクトル・レジスタVR1に格納する。それから第2回目のベクトルロード命令により2番目の要素B(2)、B(3)・・・B(101)を主記憶100からベクトル・レジスタVR2に格納する。
【0005】
そしてベクトル演算器112により上記各式の演算を行い、その演算結果をベクトル・レジスタVR3に順次格納する。
なお、図5において102はスカラ部、113はベクトル命令制御部である。
【0006】
【発明が解決しようとする課題】
前記の如くベクトル演算を行うとき、ベクトル・レジスタVR2に格納される各要素B(2)、B(3)・・・B(101)が、ベクトル・レジスタVR1に格納されている各要素B(1)、B(2)・・・B(100)と、主記憶100上で1ワードしかずれていない配置の場合であっても、ベクトル・アクセス・パイプ111が主記憶に対するアクセスを2回行うことが必要であり、このため演算速度が遅くなり、性能低下の原因となっていた。
【0007】
即ち、前記DOループ10の命令を実行するとき、ベクトル命令制御部113はベクトル・アクセス・パイプ111に対し、第1回目のベクトルロード命令を発行する。これによりベクトル・アクセス・パイプ111が主記憶100から配列Bの要素(I)(I=1〜100)を読み出してベクトル・レジスタVR1に格納する。このとき格納される対象は、B(1)〜B(100)の100要素でありVR1(1)〜VR1(100)に格納される。
【0008】
次に第2回目のベクトルロード命令が発行され、ベクトル・アクセス・パイプ111はB(I+1)を読み出し、ベクトル・レジスタVR2に格納する。このとき格納される対象はB(2)〜B(101)の100要素であり、VR2(1)〜VR2(100)にそれぞれ格納される。
【0009】
引続き、ベクトル・レジスタVR1とVR2が読み出され、ベクトル演算器112でベクトル加算が実行され、結果がベクトル・レジスタVR3に格納される。そしてこのVR3に格納された結果を主記憶100上の配列A(I)に格納して、このDOループの処理が終了する。
【0010】
一般にベクトル・レジスタは主記憶から遠く、ベクトル・アクセス・パイプの性能は低い。このため2回ベクトルロードを実行することは大きいオーバヘッドとなり、性能低下の原因となる。
【0011】
したがって本発明の目的はこのようなアクセス回数を減少して演算速度の向上を図るベクトル処理装置を提供することである。
【0012】
【課題を解決するための手段】
前記目的を達成するための本発明の関連技術の構成を図1に示す。図1において、1は主記憶、2はベクトル部、3はスカラ部、10はベクトル・レジスタ部、11はベクトル・アクセス・パイプ、12はベクトル演算器、13はベクトル命令制御部である。ベクトル命令制御部13は、図1に示す如く、例えば配列レジスタ番号VR1に格納された要素を配列レジスタ番号VR2にスライドすることができる。前記本発明の目的は、下記の(1)〜(4)に記載された構成により達成される。
【0013】
(1)本発明のベクトル処理装置では、主記憶手段と、ベクトル・レジスタ手段と、ベクトル演算手段を具備し、ベクトル・レジスタに保持されている要素を読み出し、これを要素番号の方向にシフトして前記ベクトル・レジスタとは別のレジスタの異なる要素番号区分に格納するベクトル処理装置において、前記ベクトル・レジスタ手段を複数のブロックにより構成し、通常のベクトル演算においては各ブロックが独立に動作し、ベクトル総和演算等の要素間の演算のために各ブロック間に専用データバスを設け、この専用データバスを用いてブロック間で要素の転送を行うとともに、ベクトル・アクセス・パイプとは独立に並行してベクトルスライドを実行するベクトルスライド手段を設け、ベクトル演算器と独立に、並行してベクトルスライド処理を実行することを特徴とする。
【0014】
(2)本発明のベクトル処理装置では、前記(1)において、前記要素番号が1つ増加又は減少する方向に要素を格納することを特徴とする。
【0015】
(3)本発明のベクトル処理装置では、主記憶手段と、ベクトル・レジスタ手段と、ベクトルマスクレジスタ手段と、ベクトル演算手段を具備するベクトル処理装置において、前記ベクトル・レジスタ手段を複数のブロックにより構成し、通常のベクトル演算においては各ブロックが独立に動作し、ベクトル総和演算等の要素間の演算のために各ブロック間に専用データバスを設け、この専用データバスを用いてブロック間で要素の転送を行うとともに、ベクトル・レジスタに保持されている要素を読み出し、これを要素番号の方向にシフトして前記ベクトル・レジスタとは別のベクトル・レジスタの異なる要素番号区分に格納するとき、読み出し元のベクトル・レジスタの値と書き込み先のベクトル・レジスタの元の値をマージし、要素番号の方向に移動したときのベクトルマスクレジスタの対応するビットが「1」または「0」のいずれか一方の特定値である要素についてのみ格納を行うベクトル制御手段を具備したことを特徴とする。
【0016】
(4)本発明のベクトル処理装置では、主記憶手段と、ベクトル・レジスタ手段と、ベクトル演算手段と、ベクトル・レジスタに保持されている要素を読み出し、これを要素番号の方向にシフトして前記ベクトル・レジスタとは別のレジスタの異なる要素番号区分に格納するベクトル処理装置において、前記ベクトル・レジスタ手段を複数のブロックにより構成し、通常のベクトル演算においては各ブロックが独立に動作し、ベクトル総和演算等の要素間の演算のために各ブロック間に専用データバスを設け、この専用データバスを用いてブロック間で要素の転送を行うとともに、ベクトル・アクセス・パイプとは独立にベクトル演算器と並行してベクトルスライドを実行するベクトルスライド手段を設け、ベクトル演算器と独立に、並行してベクトルスライド処理を実行することを特徴とする。
【0017】
そしてこれにより次の如き作用効果を奏する。
(1)ベクトル・レジスタに保持されている要素を読み出し、これを要素番号の方向に移動してベクトル・レジスタの異なる要素番号区分に格納するベクトルスライド処理を行うことにより、ベクトルロード命令の回数が従来の2回から1回に削減され、高速ベクトル処理が実現できる。
【0018】
(2)マスクレジスタを使用する場合でもベクトルロード命令の回数が削減され、高速ベクトル処理が実現できる。
【0019】
(3)要素番号が1つ増加又は減少する方向に要素をスライド処理により格納するので、1ワードずれた配列を1回のベクトルロード命令により可能となり、ベクトルロード命令の回数を削減し、高速ベクトル処理ができる。しかもスライド処理制御のためのハード機構が簡単になり、制御も容易なものとなる。
【0020】
(4)ベクトル・アクセス・パイプを使用せずにベクトル・アクセス・パイプとは独立に並行してベクトルスライドを実行することができるので、メモリアクセスを行いながらスライド処理を行うことができ、高速ベクトル処理ができる。
【0021】
(5)ベクトル・レジスタ手段が複数のブロックにより構成されているときでも、従来から設けられている専用データバスを用いて要素の転送が可能となり、転送用の特別のピンを設ける必要なく、ベクトルロード命令の回数を削減するとともに、高速ベクトル処理ができる。
【0022】
(6)専用のベクトルスライド手段を設けたので、ベクトル演算手段とは独立に並行してスライド処理を実行することができるので、スライド処理とベクトル演算とを同時に行うことができ、高速ベクトル処理ができる。
【0023】
【発明の実施の形態】
本発明の関連技術を図1にもとづき説明する。図1において、1は主記憶、2はベクトル部、3はスカラ部、10はベクトル・レジスタ部、11はベクトル・アクセス・パイプ、12はベクトル演算器、13はベクトル命令制御部である。
【0024】
主記憶1は、ベクトル処理装置を動作する各種のデータが記憶されるものであって、ベクトル演算されるべき配列の各要素が格納されたり、演算結果が格納されたり、ベクトル部2が実行すべき命令等が格納されるものである。
【0025】
ベクトル部2は、主記憶1に格納されたデータにベクトル演算を行い、その演算結果を主記憶1に格納するものであって、ベクトル・レジスタ部10、ベクトル・アクセス・パイプ11、ベクトル演算器12、ベクトル命令制御部13等を具備している。
【0026】
スカラ部3は主記憶1から命令を読み出し、これを解読してスカラ命令かベクトル命令かを識別し、スカラ命令であればこれを実行し、ベクトル命令であればこれをベクトル命令制御部13に送出する。
【0027】
ベクトル・レジスタ部10は、ベクトル演算器12でベクトル演算されるべき配列要素及びベクトル演算結果得られた配列要素を一時保持するものであり、主記憶1から読み出された配列Bの各要素B(1)、B(2)・・・B(101)が格納されるベクトル・レジスタVR1と、ベクトル・レジスタVR1の要素の一部B(2)、B(3)・・・B(101)がスライド格納されるベクトル・レジスタVR2と、ベクトル・レジスタVR1とベクトル・レジスタVR2との各要素のベクトル演算結果が格納されるベクトル・レジスタVR3等を具備している。
【0028】
ベクトル・アクセス・パイプ11は、主記憶1に対してベクトル要素をロードしたり、ストアするものであって、ロードの場合にはアクセス先のアドレス計算を行ったり、主記憶1に対してロード要求を発行し、これにより主記憶1から読み出された各要素を取り出してベクトル・レジスタ部10に送出する。またストアの場合はアクセス先のアドレス計算を行い、主記憶1に対しストア要求を発行し、ストアすべき各要素を主記憶1に送出してこれらをストアするものである。
【0029】
ベクトル演算器12は、ベクトル・レジスタVR1とVR2の同一の要素番号の要素をそれぞれ読み出して演算を行い、演算結果をベクトル・レジスタVR3の同一要素番号の区分に格納処理を行ったり、本発明の特徴とするスライド処理を行うものである。
【0030】
このスライド処理は、ベクトル・レジスタVR1から要素B(1)、B(2)・・・B(101)を読み出し、要素を、その番号が1つ減る方向の要素番号としてベクトル・レジスタVR2に格納するものである。即ちベクトル・レジスタVR1の要素番号2の要素B(2)は、2−1=1つまりベクトル・レジスタVR2の要素番号1の要素として格納され、ベクトル・レジスタVR1の要素番号3の要素B(3)はベクトル・レジスタVR2の要素番号2の要素として格納され、ベクトル・レジスタVR1の要素番号101の要素B(101)はベクトル・レジスタVR2の要素番号100の要素として格納される。これにより図1に示すベクトル・レジスタVR1の要素が、矢印に示す如く、ベクトル・レジスタVR2の1つ減る方向に要素番号がずらして格納されることになる。
【0031】
なお、図1に示す例は、ベクトル・レジスタVR1から要素番号が1つ減る方向にずらしてベクトル・レジスタVR2に格納されるものであるが、スライド処理はこれに限定されるものではなく、スライドされる量は1のみに限定されるものではなく2以上の任意の整数が選択されるものであり、また方向も減る方向のみならず要素番号の増加する方向にスライドすることもできる。
【0032】
ベクトル命令制御部13は、スカラ部3からベクトル命令を受け取ったときこれを解読して、その内容に応じてベクトル・レジスタ10、ベクトル・アクセス・パイプ11、ベクトル演算器12等に対し選択的に制御指示を与えるものである。
【0033】
次に、図1に示す本発明の関連技術に対する動作を、前記DOループ10の命令を実行する場合について説明する。
【0034】
図示省略したコンパイラが、前記DOループ10の命令全体を認識することにより、これがベクトル命令であり、その演算に必要な要素は配列BのB(1)〜B(101)であること、そしてこれらの要素B(1)〜B(101)により前記(1)式〜(100)式の演算を行うこと、またベクトル・レジスタVR2に格納する要素は、ベクトル・レジスタVR1に格納された要素を1つ減る方向にスライドしてVR2に格納すればよいことを認識し、これらを実行する命令即ち後述するステップ1〜ステップ3を実行する命令を作成し、主記憶1に格納する。
【0035】
(ステップ1)要素B(I)I=1〜101を主記憶1から取り出し、ベクトル・レジスタVR1に格納する。
【0036】
(ステップ2)ベクトル・レジスタVR1から要素B(1)〜B(101)を読み出し、要素を要素番号が1つ減る方向にずらしてベクトル・レジスタVR2に格納する。従って、ベクトル・レジスタVR2の要素番号1にはB(2)が格納され、要素番号2にはB(3)が格納され・・・要素番号(I)にはB(I+1)が格納され・・・要素番号100にはB(101)が格納される。これにより主記憶1から要素B(2)〜B(101)をVR2に格納した場合と同じ結果が得られる。
【0037】
(ステップ3)ベクトル・レジスタVR1とVR2をベクトル加算(I=1〜100)し、演算結果をベクトル・レジスタVR3に格納する。
【0038】
従って、コンパイラが作成した命令をスカラ部3が主記憶1から取り出し、これがベクトル命令であることが解読されると、これらの命令はベクトル命令制御部13に送出される。
【0039】
まず前記ステップ1を実行するベクトルロードがベクトル命令制御部13からベクトル・アクセス・パイプ11に送出され、ベクトル・アクセス・パイプ11が主記憶1から配列Bの要素B(I)、(I=1〜101)を読み出してベクトル・レジスタVR1に格納する。このとき格納される対象はB(1)〜B(101)の101要素であり、ベクトル・レジスタVR1(1)〜VR1(101)に格納される。
【0040】
次にベクトル命令制御部13は、前記ステップ2を実行するベクトルスライド命令をベクトル演算器12に送出する。これによりベクトル演算器12は、ベクトル・レジスタVR1から要素B(1)〜B(101)を読み出し、その要素番号が1つ減る方向にずらしてベクトル・レジスタVR2に格納する。
【0041】
これにより、ベクトル・レジスタVR1の要素番号2に格納されていた要素B(2)はベクトル・レジスタVR2の要素番号1に格納され、VR1の要素番号3に格納されていた要素B(3)はVR2の要素番号2に格納され、VR1の要素番号101に格納されていた要素B(101)はVR2の要素番号100に格納される。即ち、VR1の要素番号Iに格納されていた要素B(I)は、VR2の要素番号(I−1)に格納される。かくしてVR1に格納された各データは1要素分上位方向にシフトしてVR2に格納される。
【0042】
このようにして、図1に示す如く、VR1の要素B(2)〜B(101)がVR2にスライドされることになる。なお、VR1の要素番号1に格納されていた要素B(1)は、最初にVR1から読み出されたとき、そのスライド先がVR2には存在しないので、この読み出された要素B(1)は捨てられることになるが、VR1にはそのまま要素B(1)が残っているので、演算には何等の影響もない。
【0043】
引き続き、前記ステップ3を実行する命令がベクトル命令制御部13からベクトル演算器12に送出される。これによりベクトル・レジスタVR1とVR2が読み出されてベクトル加算が実行され、その演算結果がベクトル・レジスタVR3に格納される。
【0044】
それからベクトル命令制御部13は、ベクトル・アクセス・パイプ11に対し演算結果格納命令を送出する。これによりベクトル・アクセス・パイプ11は、ベクトル・レジスタVR3に格納された演算結果を主記憶1上の配列A(I)に格納し、これにより前記DOループ10のDOループの処理が終了する。
【0045】
このようにして、本発明の関連技術では、図5に説明した従来例ではベクトルロード命令が2回発行されたのに比べて、その実行に長時間を必要とするベクトルロード命令の回数が1回ですみ、1回だけその回数を少なくすることができるため、オーバヘッドが小さく、高い性能を実現することができる。
【0046】
図2に本発明の第1の実施の形態を説明する。図2において図1と同記号は同一部分を示し、14はベクトルスライド部である。
【0047】
ベクトルスライド部14は、ベクトル命令制御部13からの指示にもとづき、前記ステップ2等で説明したベクトルスライド処理を行うものである。このベクトルスライド部14は、ベクトル演算器12とは独立に、並行してベクトルスライド処理を実行することができる。
【0048】
従って、ベクトル演算器12で演算を行うことと並行してベクトルスライドを実行することができるので、ベクトル演算を高性能に行うことができる。
【0049】
本発明の第2の実施の形態を図3にもとづき説明する。
ベクトル処理装置は、一般に複数のベクトル・レジスタ部と、複数のベクトル演算部で構成される。図3において、他図と同一記号は同一部を示し、ベクトル処理装置は、複数のベクトル・レジスタ・演算器ブロック(以下ブロックという)21、22、23、24で構成される。これらの各ブロックは同一構成であり、ブロック22に代表的に例示されるように、ベクトル・レジスタ部10とベクトル演算器12を具備している。
【0050】
ベクトル・レジスタ部10は、図1に示す如く、複数のベクトル・レジスタVR1、VR2・・・を具備し、ベクトル演算器12は、ベクトル加算器12−1、ベクトル乗算器12−2、ベクトル除算器12−3、全ブロックのベクトル・レジスタの要素の総和を求める総和演算器12−4、前記の如きスライド処理を行うスライド機構12−5等を具備している。
【0051】
各ブロック22に例示されるように、ブロック毎にベクトル・レジスタ部10とベクトル演算器12とは接続され、通常のベクトル演算においては、各ブロック毎に並行して独立に動作可能であり、ブロック間のデータ移動は通常発生しない。
【0052】
ところでベクトル処理装置では、ベクトル総和演算等の各ブロックの要素間の演算を必要とする一部の特殊な命令を実行するときに、ブロック間をデータ移動するための、総和演算用データバスと称される特別なデータバスBが設けられている。
【0053】
またベクトル・レジスタの要素番号も、例えば1〜100はブロック21に、101〜200はブロック22というように、同一ブロック内に連続して配置すると、特定のブロックのみ動作状態となって負荷が集中する欠点が存在するのでブロック21、22、23、24に要素番号1、2、3、4を配置するという、いわゆるインタリーブ方式が採用される。
【0054】
したがって前記スライド処理を行うとき、要素がブロック間にデータ移動することが発生する。このスライド処理専用のバスを設けることはそれだけピン数が多くなるので好ましいことではない。本発明では、このため、ベクトルスライド命令の場合も、総和演算等のためのデータバスBを共用するように構成したので、ブロック間のデータバスのサイズを増加することなく、ベクトルスライド命令を実現するハードウエアを構成することが可能となった。
【0055】
本発明の第3の実施の形態を図4により説明する。前記の如くベクトルスライド命令により、ベクトル・レジスタVR1の要素が読み出されて要素番号が、例えば1つ減少する方向にスライドされる。即ちVR1(I+1)の要素をVR2(I)に書き込む。第3の実施の形態では、マスクレジスタMR3を設け、このとき対応するマスクレジスタMR3(I)の値が例えば「1」の要素にはスライドした書き込みを行うが、「0」の要素には書き込みを行わない。したがって書き込みの行われなかった要素番号には、旧データがそのまま保持されるものとなる。
このようにして、スライド処理のときにマスク制御を行うことが可能となる。
【0056】
本発明の第4の実施の形態を説明する。第4の実施の形態では、ベクトル・アクセス・パイプを使用せず、ベクトル・アクセス・パイプとは独立に並行してベクトルスライド処理を実行するものである。これにより主記憶に対するメモリアクセスを行いながらスライド処理を行うことができ、高速ベクトル処理が可能となる。
【0057】
前記説明ではスライド量を要素番号が1つ減る方向にした場合について説明したが、本発明は勿論これに限定されるものではなく、増える方向にスライドしてもよく、スライド量も2以上にすることができる。
【0058】
【発明の効果】
本発明によれば主記憶からの複数回のデータの読み出しを一回のベクトルロード命令の実行により行うことができるので、従来に比較してその実行に時間がかゝるベクトルロード命令の回数を減少することができ、ベクトルロードのオーバヘッドが削減され高速なベクトル処理が実現できる。
【図面の簡単な説明】
【図1】本発明の関連技術である。
【図2】本発明の第1の実施の形態である。
【図3】本発明の第2の実施の形態である。
【図4】本発明の第3の実施の形態である。
【図5】従来例である。
【符号の説明】
1 主記憶
2 ベクトル部
3 スカラ部
10 ベクトル・レジスタ部
11 ベクトル・アクセス・パイプ
12 ベクトル演算器
13 ベクトル命令制御部[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a vector processing apparatus, and in particular, to increase the speed of vector operations by reducing the number of executions of a vector load instruction from main memory to a vector register.
[0002]
[Prior art]
When performing vector operations in the vector processing device, it is necessary to vector-load data in the
[0003]
For example, the following
DO 10 I = 1, 100
A (I) = B (I) + B (I + 1)
10 CONTINUE
As in the case of executing, it is necessary to perform main memory access twice even when the same array B is shifted by one word.
[0004]
The program of the
A (1) = B (1) + B (2) (1)
A (2) = B (2) + B (3) (2)
A (3) = B (3) + B (4) (3)
・
・
・
A (100) = B (100) + B (101) (100)
When this program is executed, the first element B (1), B (2)... B (100) in the right-hand term is transferred from the
[0005]
Then, the vector arithmetic unit 112 performs the calculation of each of the above expressions, and sequentially stores the calculation results in the vector register VR3.
In FIG. 5,
[0006]
[Problems to be solved by the invention]
When performing a vector operation as described above, each element B (2), B (3)... B (101) stored in the vector register VR2 is replaced with each element B ( 1), B (2)... B (100) and the vector access pipe 111 accesses the main memory twice even in the case where only one word is shifted on the
[0007]
That is, when executing the instruction of the
[0008]
Next, the second vector load instruction is issued, and the vector access pipe 111 reads B (I + 1) and stores it in the vector register VR2. The objects stored at this time are 100 elements B (2) to B (101), and are stored in VR2 (1) to VR2 (100), respectively.
[0009]
Subsequently, the vector registers VR1 and VR2 are read out, vector addition is performed by the vector calculator 112, and the result is stored in the vector register VR3. Then, the result stored in the VR3 is stored in the array A (I) on the
[0010]
In general, vector registers are far from main memory and the performance of vector access pipes is low. For this reason, executing the vector load twice causes a large overhead and causes a decrease in performance.
[0011]
Accordingly, an object of the present invention is to provide a vector processing apparatus that reduces the number of accesses and improves the calculation speed.
[0012]
[Means for Solving the Problems]
A configuration of a related art of the present invention for achieving the above object is shown in FIG. In FIG. 1, 1 is a main memory, 2 is a vector unit, 3 is a scalar unit, 10 is a vector register unit, 11 is a vector access pipe, 12 is a vector calculator, and 13 is a vector instruction control unit. As shown in FIG. 1, the vector
[0013]
(1) The vector processing apparatus of the present invention comprises main storage means, vector register means, and vector operation means , reads an element held in the vector register, and shifts it in the direction of the element number. In the vector processing device for storing the vector register means in a different element number section of a register different from the vector register , the vector register means is constituted by a plurality of blocks, and each block operates independently in a normal vector operation, A dedicated data bus is provided between each block for operations such as vector summation, and elements are transferred between blocks using this dedicated data bus, and in parallel with the vector access pipe. A vector slide means for executing vector slide is provided, and the vector slide is executed in parallel with the vector calculator. And executes the ride process.
[0014]
(2) In the vector processing apparatus of the present invention, in (1), the elements are stored in a direction in which the element number increases or decreases by one.
[0015]
(3) In the vector processing device of the present invention, in the vector processing device comprising main memory means, vector register means, vector mask register means, and vector operation means, the vector register means is constituted by a plurality of blocks. In normal vector operations, each block operates independently, and a dedicated data bus is provided between the blocks for operations between elements such as vector summation, and the elements are transferred between the blocks using this dedicated data bus. When transferring, reading the element held in the vector register, shifting it in the direction of the element number, and storing it in a different element number section of the vector register different from the vector register, the reading source Merges the vector register value with the original vector register value and writes the element number The corresponding bit in the vector mask register when there is a movement in the direction of characterized by comprising the vector control means for storing only the elements that are either specific value of "1" or "0".
[0016]
(4) In the vector processing apparatus of the present invention, the main memory means, the vector register means, the vector operation means, and the element held in the vector register are read out, and this is shifted in the direction of the element number. In a vector processing apparatus for storing in a different element number section of a register different from a vector register, the vector register means is constituted by a plurality of blocks, and in normal vector operation, each block operates independently, and the vector summation A dedicated data bus is provided between each block for operations between elements such as operations, and the elements are transferred between the blocks using this dedicated data bus, and a vector arithmetic unit and a vector access pipe are independent of the vector access pipe. A vector slide means for executing vector slide in parallel is provided. And executes a vector slide processing.
[0017]
This provides the following operational effects.
(1) By reading the element held in the vector register, moving it in the direction of the element number, and storing it in a different element number section of the vector register, the number of vector load instructions can be reduced. The conventional processing is reduced from twice to once, and high-speed vector processing can be realized.
[0018]
(2) Even when a mask register is used, the number of vector load instructions is reduced, and high-speed vector processing can be realized.
[0019]
(3) Since the elements are stored in the direction in which the element number increases or decreases by one, the array shifted by one word can be made by one vector load instruction, the number of vector load instructions is reduced, and the high-speed vector Can be processed. In addition, the hardware mechanism for slide processing control is simplified, and the control becomes easy.
[0020]
(4) Since the vector slide can be executed in parallel with the vector access pipe without using the vector access pipe, the slide processing can be performed while performing the memory access. Can be processed.
[0021]
(5) Even when the vector register means is composed of a plurality of blocks, the elements can be transferred using the conventional dedicated data bus, and there is no need to provide a special pin for transfer. The number of load instructions can be reduced and high-speed vector processing can be performed.
[0022]
(6) Since the dedicated vector slide means is provided, the slide process can be executed in parallel with the vector operation means, so that the slide process and the vector operation can be performed at the same time. it can.
[0023]
DETAILED DESCRIPTION OF THE INVENTION
A related technique of the present invention will be described with reference to FIG. In FIG. 1, 1 is a main memory, 2 is a vector unit, 3 is a scalar unit, 10 is a vector register unit, 11 is a vector access pipe, 12 is a vector calculator, and 13 is a vector instruction control unit.
[0024]
The
[0025]
The
[0026]
The
[0027]
The
[0028]
The
[0029]
The
[0030]
In this slide processing, elements B (1), B (2)... B (101) are read from the vector register VR1, and the elements are stored in the vector register VR2 as element numbers in the direction in which the number decreases by one. To do. That is, the element B (2) of the
[0031]
In the example shown in FIG. 1, the element number is shifted from the vector register VR1 so as to be decremented by one, and stored in the vector register VR2. However, the slide process is not limited to this, and the slide process is not limited to this. The amount to be performed is not limited to 1, but an arbitrary integer of 2 or more is selected, and it is possible to slide not only in the direction in which the direction decreases but also in the direction in which the element number increases.
[0032]
When receiving a vector instruction from the
[0033]
Next, the operation of the related technique of the present invention shown in FIG. 1 will be described in the case where the instruction of the
[0034]
When a compiler (not shown) recognizes the entire instruction of the
[0035]
(Step 1) Elements B (I) I = 1 to 101 are extracted from the
[0036]
(Step 2) The elements B (1) to B (101) are read from the vector register VR1, and the elements are shifted in the direction of decreasing the element number by one and stored in the vector register VR2. Therefore, B (2) is stored in
[0037]
(Step 3) The vector registers VR1 and VR2 are vector-added (I = 1 to 100), and the calculation result is stored in the vector register VR3.
[0038]
Therefore, when the
[0039]
First, the vector load for executing the
[0040]
Next, the vector
[0041]
As a result, the element B (2) stored in the
[0042]
In this way, as shown in FIG. 1, the elements B (2) to B (101) of VR1 are slid to VR2. Note that, when the element B (1) stored in the
[0043]
Subsequently, an instruction for executing
[0044]
Then, the vector
[0045]
Thus, in the related art of the present invention , the number of vector load instructions that require a long time to execute is smaller than that in the conventional example described in FIG. Since the number of times can be reduced only once, the overhead can be reduced and high performance can be realized.
[0046]
The first embodiment of the present invention will be described with reference to FIG. 2, the same reference numerals as those in FIG. 1 denote the same parts, and
[0047]
The
[0048]
Accordingly, since vector slide can be executed in parallel with the calculation by the
[0049]
A second embodiment of the present invention will be described with reference to FIG.
A vector processing apparatus is generally composed of a plurality of vector register units and a plurality of vector operation units. In FIG. 3, the same symbols as those in the other figures indicate the same parts, and the vector processing apparatus is composed of a plurality of vector / register / arithmetic unit blocks (hereinafter referred to as blocks) 21, 22, 23, 24. Each of these blocks has the same configuration, and includes a
[0050]
As shown in FIG. 1, the
[0051]
As exemplified in each
[0052]
By the way, in a vector processing device, when executing some special instructions that require an operation between elements of each block such as a vector sum operation, it is called a data bus for sum operation for moving data between blocks. A special data bus B is provided.
[0053]
The vector register element numbers are also placed in the same block, such as 1 to 100 for
[0054]
Therefore, when the slide process is performed, the element may move data between blocks. Providing a dedicated bus for slide processing is not preferable because the number of pins increases accordingly. In the present invention, therefore, even in the case of the vector slide instruction, since the data bus B for the sum operation is shared, the vector slide instruction can be realized without increasing the data bus size between the blocks. It is now possible to configure hardware that does this.
[0055]
A third embodiment of the present invention will be described with reference to FIG. As described above, by the vector slide command, the element of the vector register VR1 is read and the element number is slid in the direction of decreasing by one, for example. That is, the element of VR1 (I + 1) is written into VR2 (I). In the third embodiment, a mask register MR3 is provided, and at this time, writing is performed on an element having a corresponding mask register MR3 (I) value of “1”, for example, but writing is performed on an element “0”. Do not do. Therefore, the old data is retained as it is in the element number that has not been written.
In this way, mask control can be performed during the slide process.
[0056]
A fourth embodiment of the present invention will be described. In the fourth embodiment, no vector access pipe is used, and vector slide processing is executed in parallel with the vector access pipe. Thus, slide processing can be performed while performing memory access to the main memory, and high-speed vector processing is possible.
[0057]
In the above description, the case where the slide amount is set to the direction in which the element number is decreased is described. However, the present invention is not limited to this, and the slide amount may be increased and the slide amount is set to 2 or more. be able to.
[0058]
【The invention's effect】
According to the present invention, it is possible to read data from the main memory a plurality of times by executing a single vector load instruction. Therefore, the number of vector load instructions that require more time to execute than in the past can be reduced. The vector load overhead can be reduced and high-speed vector processing can be realized.
[Brief description of the drawings]
FIG. 1 is a related technique of the present invention.
FIG. 2 is a first embodiment of the present invention.
FIG. 3 is a second embodiment of the present invention.
FIG. 4 is a third embodiment of the present invention.
FIG. 5 is a conventional example.
[Explanation of symbols]
DESCRIPTION OF
Claims (4)
前記ベクトル・レジスタ手段を複数のブロックにより構成し、通常のベクトル演算においては各ブロックが独立に動作し、ベクトル総和演算等の要素間の演算のために各ブロック間に専用データバスを設け、この専用データバスを用いてブロック間で要素の転送を行うとともに、
ベクトル・アクセス・パイプとは独立に並行してベクトルスライドを実行するベクトルスライド手段を設け、ベクトル演算器と独立に、並行してベクトルスライド処理を実行することを特徴とするベクトル処理装置。 A main memory means, a vector register means, and a vector operation means are provided to read out an element held in the vector register and shift it in the direction of the element number to shift it to a register different from the vector register. In a vector processing device for storing in different element number divisions ,
The vector register means is composed of a plurality of blocks, each block operates independently in normal vector operations, and a dedicated data bus is provided between the blocks for operations between elements such as vector summation. While transferring elements between blocks using a dedicated data bus,
A vector processing apparatus comprising vector slide means for executing vector slide in parallel with a vector access pipe and executing vector slide processing in parallel with a vector computing unit.
前記ベクトル・レジスタ手段を複数のブロックにより構成し、通常のベクトル演算においては各ブロックが独立に動作し、ベクトル総和演算等の要素間の演算のために各ブロック間に専用データバスを設け、この専用データバスを用いてブロック間で要素の転送を行うとともに、
ベクトル・レジスタに保持されている要素を読み出し、これを要素番号の方向にシフトして前記ベクトル・レジスタとは別のベクトル・レジスタの異なる要素番号区分に格納するとき、読み出し元のベクトル・レジスタの値と書き込み先のベクトル・レジスタの元の値をマージし、要素番号の方向に移動したときのベクトルマスクレジスタの対応するビットが「1」または「0」のいずれか一方の特定値である要素についてのみ格納を行うベクトル制御手段を具備したことを特徴とするベクトル処理装置。 In a vector processing apparatus comprising main storage means, vector register means, vector mask register means, and vector operation means,
The vector register means is composed of a plurality of blocks, each block operates independently in normal vector operations, and a dedicated data bus is provided between the blocks for operations between elements such as vector summation. While transferring elements between blocks using a dedicated data bus,
When an element held in a vector register is read out, shifted in the direction of the element number, and stored in a different element number section of a vector register different from the vector register, the read-out vector register An element whose value is merged with the original value of the destination vector register and the corresponding bit of the vector mask register when moving in the direction of the element number is a specific value of either "1" or "0" A vector processing apparatus characterized by comprising vector control means for storing only for .
前記ベクトル・レジスタ手段を複数のブロックにより構成し、通常のベクトル演算においては各ブロックが独立に動作し、ベクトル総和演算等の要素間の演算のために各ブロック間に専用データバスを設け、この専用データバスを用いてブロック間で要素の転送を行うとともに、The vector register means is composed of a plurality of blocks, each block operates independently in normal vector operations, and a dedicated data bus is provided between the blocks for operations between elements such as vector summation. While transferring elements between blocks using a dedicated data bus,
ベクトル・アクセス・パイプとは独立にベクトル演算器と並行してベクトルスライドを実行するベクトルスライド手段を設け、ベクトル演算器と独立に、並行してベクトルスライド処理を実行することを特徴とするベクトル処理装置。Vector processing characterized by providing vector sliding means for executing vector sliding in parallel with the vector arithmetic unit independently of the vector access pipe, and executing vector sliding processing in parallel with the vector arithmetic unit apparatus.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21721097A JP3771682B2 (en) | 1997-08-12 | 1997-08-12 | Vector processing equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21721097A JP3771682B2 (en) | 1997-08-12 | 1997-08-12 | Vector processing equipment |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1166046A JPH1166046A (en) | 1999-03-09 |
JP3771682B2 true JP3771682B2 (en) | 2006-04-26 |
Family
ID=16700600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21721097A Expired - Fee Related JP3771682B2 (en) | 1997-08-12 | 1997-08-12 | Vector processing equipment |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3771682B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009104494A (en) * | 2007-10-25 | 2009-05-14 | Nec Computertechno Ltd | Vector processor |
JP7088276B1 (en) * | 2020-12-14 | 2022-06-21 | 日本電気株式会社 | Compile device, compilation method, and compilation program |
-
1997
- 1997-08-12 JP JP21721097A patent/JP3771682B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1166046A (en) | 1999-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0450658B1 (en) | Parallel pipelined instruction processing system for very long instruction word | |
JP2539974B2 (en) | Register read control method in information processing apparatus | |
US6061783A (en) | Method and apparatus for manipulation of bit fields directly in a memory source | |
US7418575B2 (en) | Long instruction word processing with instruction extensions | |
KR100346515B1 (en) | Temporary pipeline register file for a superpipe lined superscalar processor | |
WO2006112045A1 (en) | Processor | |
JPS6028015B2 (en) | information processing equipment | |
US7409529B2 (en) | Method and apparatus for a shift register based interconnection for a massively parallel processor array | |
US11106465B2 (en) | Vector add-with-carry instruction | |
EP2352082B1 (en) | Data processing device for performing a plurality of calculation processes in parallel | |
JPH06242953A (en) | Data processor | |
US7558816B2 (en) | Methods and apparatus for performing pixel average operations | |
JPH03286332A (en) | Digital data processor | |
CN110073332B (en) | Data processing apparatus and method | |
JP3771682B2 (en) | Vector processing equipment | |
EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
US5925122A (en) | Data processing unit which pre-fetches instructions of different lengths to conduct processing | |
US20040128475A1 (en) | Widely accessible processor register file and method for use | |
JP2861560B2 (en) | Data processing device | |
US20010049781A1 (en) | Computer with high-speed context switching | |
JP2503984B2 (en) | Information processing device | |
JP3961461B2 (en) | Vector processing apparatus and vector processing method | |
JPH06309349A (en) | Program-controlled processor | |
JPH07110769A (en) | Vliw type computer | |
JP3817073B2 (en) | Memory access processing device, memory access processing system, and recording medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050308 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050509 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051004 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051205 |
|
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: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060210 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090217 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100217 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110217 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110217 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120217 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130217 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130217 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140217 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |