JPS59128670A - ベクトル処理装置 - Google Patents

ベクトル処理装置

Info

Publication number
JPS59128670A
JPS59128670A JP58002221A JP222183A JPS59128670A JP S59128670 A JPS59128670 A JP S59128670A JP 58002221 A JP58002221 A JP 58002221A JP 222183 A JP222183 A JP 222183A JP S59128670 A JPS59128670 A JP S59128670A
Authority
JP
Japan
Prior art keywords
register
instruction
address
vector
loop
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.)
Granted
Application number
JP58002221A
Other languages
English (en)
Other versions
JPH0512750B2 (ja
Inventor
Koichiro Omoda
面田 耕一郎
Shigeo Nagashima
長島 重夫
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP58002221A priority Critical patent/JPS59128670A/ja
Priority to GB08400556A priority patent/GB2133595B/en
Priority to DE19843400723 priority patent/DE3400723A1/de
Priority to US06/570,244 priority patent/US4677547A/en
Publication of JPS59128670A publication Critical patent/JPS59128670A/ja
Publication of JPH0512750B2 publication Critical patent/JPH0512750B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔発明の利用分野〕 本発明はベクトル演算を高速に実行可能なベクトルプロ
セッサに関し、特に、ベクトルレジスタに格納可能なベ
クトル要素数以上の要素を有するベクトル演算を効率よ
く処理するベクトルプロセッサに関する。
〔従来技術〕
第1図は、ベクトルレジスタを有するベクトルプロセッ
サにおけるベクトル演算の様子を示したものである。図
中、1は主記憶装置、7はベクトルレジスタ部、8は演
算部である。
ロード命令が実行されると、主記憶装置1からベクトル
XとYを読出して、各々、ベクトルレジスタVROとV
RIに一旦格納する。そして、ベクトル演算命令が実行
されると、VROとVRIを読出して演算器8に入力し
、指定された演算を施して結果を、vR2にストアする
。さらにストア命令が実行されると、ベクトルレジスタ
VR2の内容が主記憶装置1にオペランドZとに格納す
る処理を行う。ここで、処理したいベクトルの要素数(
ベクトル長と呼ぶ)をk、ベクトルレジスタの1つに格
納可能なベクトル要素数(以下これをベクトルレジスタ
長と呼ぶ)をtとする。
ベクトル長にはプログラムによシ犬巾に異なるが、一般
的には、10から10000以上に及ぶこともある。こ
れに対して、ベクトルレジスタ長tは実現するプロセッ
サのハードウェア上の制約によって上限が決められ、現
状では64〜256の範囲となっている。
このため、k≦tであれば、1回のベクトル演算で必要
な処理を終了させることができるが、k>tの場合には
、何らかの対策が必要である。
この対策方法として、次の2方式が考えられている。
その第1方式は、ソフトウェアによ多処理を分割して、
各処理単位を独立にハードウェアで処理させる。
もう1つの方式は、ハードウェアによ多処理するもので
あり、ベクトルデータをt要素ずつに分けて処理する。
このt要素を以下ではセグメントと呼ぶ。即ち一つのセ
グメントをベクトル命令列で処理後、再度ベクトル命令
列を読出し次のセグメントを処理する方式である。
後者の方式は、ハードウェア制御のためオーバヘッドを
削減でき高速処理が可能となる利点がある。
後者の処理方式では、あるセグメントに対するベクトル
命令列の処理(以下、これをループ処理と呼び、ループ
iは第1番目のセグメントに対するループ処理を意味す
るものとする)後に、次ループ処理に用いるセグメント
に関するアドレスを求める処理の高速化が重要な課題と
なっている。
このアドレス更新処理方法が”PROCESSINGV
ECTOR8As A PLURALITY OF S
EGM−ENTS”(IBM ’I”echnical
 :[)isclosure Bull−etin 、
VOL、 13 A 12 MaY 1971)に紹介
されている。
第2図(a)はその概略構成図、第2図(b)は概略処
理70〜を示している。
主記憶装置1をアクセス(読出しおよび書込み)する場
合、ベクトルデータの先頭アドレス(第1要素のアドレ
スでアシ、これをベースアドレスと呼ぶ)と隣接要素の
間隔(以下、インクリメント値と呼ぶ)に基づき、順次
各要素のストアアドレスを発生し、これに基づき主記憶
装置をアクセスして行く。
なお、ベクトルデータが主記憶装置1上で、隣接する要
素に空きなく、即ち全要素が連続して配置される場合を
、以下ではアドレス連続と呼び、これ以外をアドレス非
連続と呼ぶことにする。インクリメント値をバイト単位
で指定するとすれば、ベクトルデータ巾が8バイトのと
きインクリメント値8でアドレス連続となシ、ベクトル
データ巾が4−(イトのときインクリメント値4でアド
レス連続となる。また、ここではベクトルレジスタ長を
256とする。
最初、ベースアドレスをベースレジスタ105に、イン
クリメント値をインクリメントレジスタ101にセット
し、カウントアツプレジスタ102をゼロにリセットす
る。
セグメントベースレジスタ109には、以下に示すよう
に各ループ処理の対象となるセグメントの先頭要素のア
ドレスがセットされる。このアドレスを以下ではセグメ
ントベースアドレスと呼ぶ。
また、ベクトルデータの先頭要素のアドレスからあるセ
グメントベースアドレスまでのアドレス差を以下では簡
単のためにセグメントアドレス変位と呼ぶ。
マタ、カウントアツプレジスタ102は、各ループ処理
の対象となるセグメントの先頭要素番号を保持する。
従って、セグメントベースアドレスはインクリメントレ
ジスタ101の値とカウントアツプレジスタ102の値
との積にペースレジスタ105の値を加えることにより
求められることになるが、この積の算出方法は次の2ケ
ースがある。
第1のケースは、アドレス連続ケースであり、カウント
アツプレジスタ102の値をレフトシフトレジスタ10
4に入力し、8バイトデータであれば3ビツト左シフト
、4バイトデータであれば2ビツト左シフトさせて、出
力結果をセレクタ106を介してアドレスレジスタ10
7にセットする。
第2のケースは、アドレス非連続ケースであり、この場
合は、インクリメントレジスタ101の値とカウントア
ツプレジスタ102の値の積を乗算器103で算出し、
アドレスレジスタ107にセットする。いずれの場合も
、アドレスレジスタ山) 107とペースレジスタ105の内容を加算器108で
加算することによシセグエントベースアドレスが求まる
。なお、インクリメントデコーダ100は、アドレスの
連続/非連続を検出し、その結果にもとづきセレクタ1
06を制御する。
カウントアツプレジスタ102はその後火ループ処理の
ためにベクトルレジスタ長だけ増大される必要がある。
このレジスタ1020更新は第2図(b)に示すように
、ロード命令から初まシスドア命令で終わる命令列の最
後に行われ、さらに、アドレス非連続的には乗算器10
3での乗算にかなシの時間を要するため、ループ2での
ロード命令の開始時点Cが遅れてしまう問題点がある。
また、処理内容によっては、第2図(b)に於て、ルー
プ2のロード命令の開始時点Cが、ループ1のストア命
令の開始時点すよシ先んじて処理したい場合、即ち、ル
ープ処理間で命令開始時点をオーバラップさせたい場合
があるが、従来技術では、前述のように、先行するルー
プ処理の結果を用いて次のループの処理に必要なアドレ
スを生成する(10) ので、オーバラップ処理が不可能でおる。
〔発明の目的〕
従って、本発明は上述した従来技術の問題点をなくすた
め、次ループ処理のためのアドレス生成に要する時間の
短縮、ハードウェア量の削減を行うことによシ、また、
アドレスレジスタを多面化し、ループ処理間でのオーバ
ラップ処理を可能とすることにより、ベクトル演算の高
速化を可能とするベクトルプロセッサを提供することを
目的とする。
〔発明の概要〕
第3図は、本発明の概念的構成図を示し、111は加算
器、112と113はアドレスレジスタ、3は命令制御
部、114はセレクタ、110はレフトシフトレジスタ
であり、その他は第2図(a)と同様である。但し、イ
ンクリメントレジスタ101、アドレスレジスタ112
,113、ペースレジスタ105はそれぞれ複数個のレ
ジスタからなる。
最初、ベースアドレスをペースレジスタ105の例えば
1番のレジスタに、インクリメント値を(11) インクリメントレジスタ100に例えば1番のレジスタ
をセットし、アドレスレジスタ112の例えば1番のレ
ジスタをゼロにリセットする。第2図(b)の処理フロ
ーを参照してアドレス生成手順を以下に記す。
ループ1のロード命令が開始されるとき、アドレスレジ
スタ11201番レジスタの値を、セレクタ114を介
して加算器108に入力し、ペースレジスタ105の1
番レジスタの値と加算してセグメントペースレジスタ1
09にセットし、このセグメントペースレジスタ109
の値をベクトルデータを主記憶からフェッチするメモリ
リクエスタ(図示せず)に転送する。
この処理と並行して、インクリメントレジスタ101の
1番レジスタの値をレフトシフトレジスタ110で8ビ
ツト左シフトすることによシインクリエント値を256
倍し、このシフト結果を加算器111に入力し、そして
、セレクタ114を介して加算器111に入力するアド
レスレジスタ11201番レジスタの値との加算をして
結果を(12) アドレスレジスタ113の1番レジスタにセットする。
こうしてループ2のロード命令で使用するセグメントア
ドレス変位が前もってアドレスレジスタ113の1番レ
ジスタに準備しておく。
次に、ループ1のストア合金を開始するときも、先程の
ループ1のロード命令と同様の処理をレジスタ101,
112,113,105の1番のレジスタを用いて行う
。このように命令毎にこれらのレジスタ番号を指定する
必要がある。
しかし、上記ループ1のロード命令とストア命令で、イ
ンクリメント値が同一であれば、これらの命令実行時に
はインクリメントレジスタ101とアドレスレジスタ1
12,113の同一番号のレジスタを指定すべきである
。たとえばインクリメント値をインクリメントレジスタ
101にセットするときのセット時間が削減可能となシ
、さらに二つの命令に対して一つのインクリメントレジ
スタでよく、レジスタが有効に利用できる。このように
、異なった命令で同一番号のレジスタを指定しても、ル
ープ1のロード命令でアドレスレジ(13) スタ113の1番レジスタにセットした値と同一の値が
ループ1のストア命令で再度このレジスタにセットされ
るが、特に不都合はない。
ループ1の最後のストア命令が開始され、ループ2で使
用するためのセグメントアドレス変位がアドレスレジス
タ113の2番レジスタにセットされると、直ちにルー
プ2のロード命令を開始できる。すなわち、ロード命令
の実行に必要なセグメントアドレス変位がすでにアドレ
スレジスタ11301番レジスタにセットされておシ、
この変位をセレクタ114を介してペースレジスタ10
5の11ルジスタの値と加算することによシロード命令
に対するセグメントペースアドレスが求まるからである
。こうして、ループ処理が切りかわるときのアドレス生
成オーバヘッドを短縮できる。
ループ2のロード命令が開始されると、上述のごとくに
ロード命令に対するセグメントベースアドレスを求め、
セグメントペースレジスタ109にセットした後リクエ
スタに転送する。これと並(va) 行して、アドレスレジスタ113の1番レジスタの値に
、ループ1での処理と同様にインクリメントレジスタ1
01の1番レジスタの値の256倍を加算して、その加
算結果をアドレスレジスタ112の1番レジスタにセッ
トし、ループ3で用いる値を準備しておく。
以下同様に、必要なループ回数だけ繰返すことになるが
、そのたび毎にアドレスレジスタ112と113を交互
に使用するように制御する必要があるが、このための情
報は命令制御部3から転送される。
第4図(a)と(b)は、ループ処理間で命令開始時点
がオーバラップする場合の処理フロオを示している。
第4図(a)は、ループi+2のロード命令の開始時点
eが、ループi+1のストア命令の開始時点dよシ時間
的に前でアシ、かつ、ループiのストア命令の開始時点
すがループi+2のロード命令の開始時点eよシ時間的
に前であることを示している。即ち、命令開始時点のオ
ーバラップは、あ(15) る時点をとれば隣接した2つのループ処理間のみである
。第4図(b)では、ループi+3のロード命令の開始
時点gがループi+1のストア命令の開始時点dよシ先
であシ、かつ、ループiのストア命令の開始時点すは、
ループi+3のロード命令の開始時点gよυ先であシ、
連続する3つのループ処理間でオーバラップしているこ
とを示している。
このように、ループ処理間での命令開始時点のオーバラ
ップ処理を行うためには、第3図に示したアドレスレジ
スタ112と113の代シに更に多くのレジスタを用い
る必要がある。即ち、第4図(a)では3面、(b)で
は4面を必要となる。
一般的には、連続するn個のループ処理間でオーバラッ
プを行うには、n+1面のアドレスレジスタが必要とな
る。このように、オーバラップの度合を深めればそれだ
け演算器等のリソースを空きなく使用でき処理性能の向
上が期待できる。
〔発明の実施例〕
第5図は本発明の実施例を示す概略構成図であ(16) シ、1はベクトルデータを格納する主記憶装置、2は主
記憶装置1からのベクトルデータの読出しおよび書込み
を中継する記憶制御装置、3は命令の解読および各リソ
ース(例えば、演算器、メモリリクエスタ等)への起動
制御を行なう命令制御部、6はアドレスレジスタ群20
0と、2個の読出し専用リクエスタ210,220 (
各々リクエスタ0.1と呼ぶ)と、1個の書込み専用リ
クエスタ230(リクエスタ2と呼ぶ)から構成される
アクセス制御部、7は8個のベクトルレジスタVRO〜
7(ベクトルレジスタ長は256)で構成されるベクト
ルレジスタ部、8は乗算器240と加算器250で構成
される演算部である。
第6図はアクセス制御部6の構成図であシ、211.2
21,231はそれぞれリクエスタ0゜1.2に設けら
れた制御回路、212,222゜232はそれぞれリク
エスタ0,1.2に設けられたアドレス生成回路、30
0〜304はレジスタ、305はOR回路、306〜3
08はAND回路、309はベクトルペースレジスタ群
VBR。
310〜312は各々ベクトルアドレスレジスタVAR
,VARD、VARDD、313はベクトルインクリメ
ント1/ジスタVIR,314はレフトシフタ回路、3
15は加算器、316〜318はゲート、319〜32
3はセレクタである。
VBR309,VAR310,VARD311゜VAR
DD312.VIR313は各々、8個のレジスタで構
成されるものとし、例えば、VBR309の2番目のレ
ジスタを以下では簡単化のためにVBR2と記述する。
なお、ベクトルX(i)のアドレスは次のように生成さ
れるものとする。
X(1)   VBRj +VAR1cX(2)   
VBRj+VARk+VIRkXa)   VBRj+
VARk+VIRk*2X(i)   VBRj 十V
ARk十VIRk*(j−1)但し、VBR,VAR(
7)番号j、には命令テ指定され、VIRの番号はVA
Rの番号kに等しいと仮定する。
上記アドレス生成は、アドレス生成回路2121222
,232で行われる。
第3図のアドレスレジスタ112と113に対すルモノ
カ、第6図(7)VAR310、VAI’tD311で
あシ、さらに、2個のループ処理間でのオーバラップを
可能とするためにVARDD312を追加している。
第7図は、命令制御部3の構成図であjD、400゜4
04.405はゲート、401は命令レジスタ、402
は命令解読回路、403はループレジスタ、406は解
読抑止検出回路、407は命令キューレジスタ、408
はループキューレジスタ、409は命令起動判定回路、
410はリソース管理回路、411はデコーダである。
命令を読出し、ゲート400、命令レジスタ401を介
して、命令解読回路402に入力し、ここで命令の解読
を行い、命令の識別情報(OPコード)、VBR,VA
R,ベクトルレジスタのそれぞれの番号等の情報を出力
して、ゲート404を介して命令起動判定回路409と
命令キューレ(19) ジスタ407に送出する。命令起動判定回路409は、
命令解読回路402からゲート404を介して与えられ
る命令解読情報と命令キューレジスタ407に記憶され
ている命令解読情報が入力され、これらの解読情報を有
する命令の中に、起動可能な命令があるか否かを、リソ
ース管理回路410から転送されるリソースの使用状態
に基づき判断し、起動可能な命令があればこれらの中か
ら1つを選択する。命令解読回路402から直接入力し
た命令に対する起動が不可であれば、その命令に対する
解読情報が命令キューレジスタ407の空きエリアにキ
ューイングされる。空きエリアの管理は命令判定回路4
09が公知の技術にしたがい行う。ただし、命令キュー
レジスタ407内のある命令および命令解読回路402
で解読された命令のいずれも起動可能なときには、命令
キューレジスタ407内の命令が優先して起動される。
また、命令キューレジスタ407内に起動可能な命令が
複数個あるときには、最も早く解読されたものから順次
起動する。
(20) なお、リソース管理回路410はメモリリクエスタ0〜
2からそれぞれが他の命令のために使用中か否かが線/
=18〜t20を介して入力され、さらに、演算部8か
ら、乗算器240、加算器250等が使用中か否かを示
す信号が線t40を介して入力され、さらにベクトルレ
ジスタ部7から、各ベクトルレジスタが使用中か否かを
示す信号が141を介して入力される。リソース管理回
路はこれらの入力情報を保持している。命令起動判定回
路409による起動可否判断は、たとえば特願昭56−
210392 「データ処理装置」に記載されている方
法を用いることができる。
以上のごとくにして起動が可能な命令を先に起動し、不
可であればiユーイングして可能になるまで待つように
する。このような方式は既にベクトルプロセッサで実現
されているが、本発明の実施例では、新たにループ情報
を追加し、次のように制御する。即ち、ループレジスタ
403は、2ビツトで構成され、ベクトル命令列の処理
を開始する前にゼロにリセットし、命令解読回路402
は命令列の最後に置かれているEND命令を解読する毎
にそのときの値を+1する。ただし、そのときの値が3
のときには0にする。この3は実施例で許されているオ
ーバラップ可能なループ数に等しい。すなわち、アドレ
スレジスタ群VAR。
VARD、VARDDI7)群数3に等りい。ッマシ3
を法としてカウントしている。このループレジスタ40
3のループ情報は、ゲート405を介して、命令解読回
路402から出力される情報と同期して、命令起動判定
回路409、あるいは、ルーズキューレジスタ408に
転送される。
命令起動判定回路409により起動可能と判定された命
令が、ロードあるいはストア命令である場合、この命令
の2ビツトのループ情報がデコーダ411でデコードさ
れ、このループ情報が0゜1.2のときにそれぞれ、線
12,13.14がオンされる。
また命令起動判定回路409は、起動可能として選択さ
れた命令の命令コード(OPコード)を線42番介して
演算部8に送出する。また、選択された命令がロード命
令又はストア命令の場合には、利用可能な、リクエスタ
0.1又は2の一つをこの命令に割りあてる。この割り
あて結果がリクエスタ0.1又は2のときに、それぞれ
線t15゜716又はt17に起動信号を出力する。ま
た、命令起動判定回路409は、選択された命令の解読
情報の内、ペースレジスタ番号とアドレスレジスタ番号
をそれぞれ線t10. tllに送出する。
なお、命令のフェッチのためには、特願昭55−987
40号rベクトルプロセッサ」にあるごとく、ループ処
理のための命令列を所望のベクトル長のデータが処理し
終るまで繰シ返しフェッチする回路(図示せず)により
行うのはいうまでもない。この回路は勿論、命令フェッ
チの繰シ返しが必要か否かをベクトル長とベクトルレジ
スタ長と、それまでの処理ずみの要索数に基づいて判定
する回路(図示せず)を有するのはいうまでもない。
第6図のアクセス制御部6の構成図では、■ARIVA
RD、VARDDの3面のアドレスレジスタを保持して
いるため、オーバラップは連続する2個(23) のループまでであり、これ以外のオーバラップを抑止す
る必要があるが、次のように制御される。
解読抑止検出回路406は、ループレジスタ403とル
ー1キユーレジスタ408のループ情報を入力し、次の
ようなケースでは抑止信号を送出し、ゲート400,4
04,405を閉じて、新たな命令解読を抑止する。
ケース1:ループレジスタ403の値が00で、ループ
キューレジスタ408の中に 01が存在する間。
ケース2:ループレジスタ403の値が01で、ループ
キューレジスタ408の中に 10が存在する間。
ケース3:ループレジスタ403の値が10で、ループ
キューレジスタ408の中に 00が存在する間。
また、抑止信号は、命令キューレジスタ407が詰った
場合も送出される。この場合の検出は命令起動判定回路
409により行われる。このようにループ情報を付加す
ることによシ、ループ処理(24) のオーバラップを制御できる。
本実施例を用いたベクトル処理例を第8図(a)に示す
。本処理例は第8図(b)にあるごとく、ベクトルB(
i)とC(りの積にD (i)を加算し、その結果をベ
クトルA(りとする演算に対するものであるが、実際に
は例えば第8図(C)に示すような命令列に展開して処
理することになる。以下では、第8図の処理例に基づき
、処理手順の詳細を記す。
命令1はベクトルBを主記憶装置1から読出しベクトル
レジスタVROに格納する命令である。
すなわち、この命令はVARIとVBRIの内容を加算
して得られるセグメントベースアドレスに基づきベクト
ルデータを主記憶装置1からフエツチシ、ベクトルレジ
スタVROに格納する処理を必要とする。
ベクトルBのアドレス情報は、前もってVBRI 。
VARI 、VIRIに格納されているものとする。
VIRはVARと同一レジスタ番号が指定されるものと
する。
命令制御部1は命令1を解読すると信号線t15(25
) を用いてリクエスタO又は1の一方(今仮りにこれをリ
クエスタ0とする)の制御回路211に起動信号を送出
し、同時に、信号線t10を介してVBR番号1をセレ
クタ319に、信号線t11を介してVAR番号1.V
IR,番号1をセレクタ320〜323に送出する。セ
レクタ319では、VBRIを選択し、セレクタ323
ではVIRIを選択してアドレス生成回路212に送出
する。
セレクタ320〜322では各々VARI、 VARD
l。
VARDDIを選択するが、ループ1の処理のため命令
制御部3は線t12〜t14の内、線t12のみをオン
とするのでVARIをゲート318を介してアドレス生
成回路212に送出される。そして、アドレス生成回路
212ではこれらのアドレス情報をもとにベクトルAの
各要素のアドレスを順次256要素分順次クロックに同
期して生成して、制御回路211から出力するリクエス
ト信号とともに記憶制御装置2へ送出する。
このため、制御回路211は、線t15上の起動信号に
応答して、セレクタ257を制御して、(26) VBRlの出力をレジスタ250にセットし、セレクタ
258を制御して、VARIの出力をレジスタ251に
セットし、VIRIの出力をレジスタ2521にセット
する。さらにセレクタ259を制御して、まず初めに0
をキャリセーブアダー254に入力する。この加算器と
並列加算器255とによシベクトルBの最初の要素B(
1)のアドレスが求められ、レジスタ256にセットさ
れる。その後、制御回路211はキャリセーブアダー2
54のキャリー出力Cと和出力Sとを、それぞれセレク
タ257.1258を介してレジスタ250゜251に
それぞれセットする。さらに、セレクタ259を制御し
て、レジスタ252内のインクリメント値を加算器25
4に入力する。この結果、並列加算器255よシ次の要
素B(2)のアドレスが求められ、レジスタ256にセ
ットされる。以下、同様にして、要素B (3) 、・
・・B(256)のアドレスがクロックに同期して順次
求められる。制御回路211は、レジスタ256に、一
つのアドレスがセットされるのに同期して、メモリリク
エストを(27) 線260に出力する。
VARIとVIRIをアドレス生成回路212へ転送す
ると同時に、VARIを加算器315に、V I R,
1をレフトシフタ314で8ビツト左シフト(即ちVI
 R1* 256 ) Lテ加jE器315 Kそれぞ
れ入力して加算する。
この加算結果は、ループ2での処理に用いる2番目のセ
グメントについてのセグメントアドレス変位を表わす。
そして、加算結果をVARDIにセットする。このとき
のVARDへのセット信号は次のようにして作成する。
信号線t15を介して送出する起動信号をOR回路30
5を介してレジスタ304にセットし、同時に信号線t
12に送出するON信号をレジスタ303にセットする
。そして、これら信号がAND回路308に入力され、
出力信号がYARDへのセット信号として信号線t21
を介して送出される。また、YARDのレジスタ番号は
、信号#t11から送出されるVAR番号がレジスタ3
00、信号線t24を介して送出される。この(28) ようにして、ループ2の処理に使用するセグメントアド
レス変位を前もってMARDIにセットしておく。
命令lの起動稜1サイクルして命令1に於けるVARD
lへのこのセットが終了すると、次の命令2の起動を行
う。
命令2はベクトルCを読出してベクトルレジスタVRI
に格納する命令である。
命令制御部1け信号線t16を用いてリクエスタ10制
御回路221に起動信号を送出し、同時に、命令1での
処理と同様に信号線t10を介してVBR番号″′2”
を、111を介してVAR。
VIR番号−1’を、112を介してON信号を送出す
る。そして、VBR2,VAR2,VIR2をアドレス
生成回路222に送出すると同時に、VAR2+VIR
2*256を算出してVARD2にセットする。
命令1と2の起動により、ベクトルBとCの読出しが要
素の若い順番に順次行われ、各々ベクトルレジスタVR
OとVRIに格納されるが、デー(29) りが到着次第、順次命令3で指定される乗算が乗算器2
40で行われ、結果がベクトルレジスタVR2に書込ま
れる。
命令4はベクトルDを主記憶装置1から読出してベクト
ルレジスタVR3に格納する命令であるが、読出し専用
のりクエスタ0と1が使用中であるため、空くまで待つ
必要がある。なお、待ち時間の間に命令制御部3は、引
続く命令5の解読を行う。命令5は命令4での演算結果
が格納されるベクトルレジスタVR3を利用するため、
この命令5は命令4よシ先に起動できない。さらに命令
6は、命令5の演算結果を主記憶装置に格納する命令で
あるためこれも起動できない。したがって命令4〜6の
解読情報が命令キューレジスタ407(第7図)にキュ
ーイングされる。その後命令列の最後に置かれるEND
命令(命令7)が解読され、次ループ処理の要/不要の
判定が行われる。
今、ベクトルレジスタ長が256、ベクトル長が500
であるから、ループ2の処理が必要となる。
そして、更に、ループ2の処理のために命令1゜(30
) 2・・・をも解読してキューイングされる。
リクエスタ0が命令1の処理を終了すると、制御回路2
11は信号線/、18を介して終了信号を命令制御部3
に送出する。命令制御部3はこの終了信号を受取ると、
命令4の起動が可能になったと判断できるのでこの起動
をリクエスタ0に対して行う。
起動方法は命令1の場合と同様であυ、VBR3。
VARI、VIRIをアドレス生成回路212に送出し
、VAR1+VIR1*256を算出り、テVARDI
にセットする。
命令4の実行によシベクトルDが読出されてベクトルレ
ジスタVR3に格納されると、VB2とVB2の加算の
命令5が実行されるが、その間に、命令制御部3は、制
御回路221から信号線t19を介して終了信号を受取
ると、ループ2の命令1の起動をリクエスタ1に対して
行う。VBR1。
VARDI、VIRIをアドレス生成回路222に転送
し、同時に、VARD1+VIR1* 256を算出し
てVARDDlにセットする。この場合、信(31) 号線t13がONとなシ、従って信号線t22を介して
VARDDにセット信号が送出される。
次に、VB2とVB2の最初の要素が加算器250で加
算され、結果がVB2に書込まれると命令6が開始され
る。
命令6の起動は信号線t20を介してリクエスタ2に送
出される。VBR4,VARI、VIRIをアドレス生
成回路232に転送し、VAR1+VIR1*256を
算出してVARDIKセツ)する。ここで、ループ2の
命令1の起動が、ループ1の命令6の起動よ9時間的に
前であシ、かつ、MARを共用しているが、アドレス生
成は正しく行われる。即ち、ループ2の命令1の起動時
ではYARDlを使用し、ループ3(本処理例ではルー
プ2で終るが、ループ3があると仮定)で使用される値
をVARDDIにセットするが、vARlの値は不変で
あシ、時間的に後に起動されるループ1の命令6がVA
R,1を使用しても矛盾しない。
以下同様に処理されるが、ループ2の命令2はリクエス
タ0の終了を待って起動され、ループ2(32) の命令4はリクエスタ1の終了を待って起動される。ま
た、ループ3の処理が引続く場合では、ループ3の命令
1の起動時のアドレス選択およびセットは次のように行
われる。VBRI、VARDDI。
VIFLIが選択されてアドレス生成回路212に転送
され、VARDDI +VIRI*256が算出されて
VARlにセットされる。このとき、信号線t14がO
Nとなシ、信号線t23を介してセット信号がMARに
送出される。
第9図は、第8図に示したのと同様のベクトル処理を行
った場合の処理フロオを示すが、第6図のアクセス制御
部6の構成に於て、VARDDがないと仮定した場合の
処理フロオである。第8図と比較すると、第9図では明
らかにリクエスタ0と1の使用効率が悪く、処理性能が
劣化しており、ループ処理間でのオーバラップの効果が
はっきり表われている。
以上述べたごとく、本発明によれば、現在のループ処理
よシ後のループ処理に必要なアドレス情報が現在のルー
プ処理の実行中に作成されている(33) ので、現在のループ処理の終了後、ただちに次のループ
処理を開始できるだけでなく、現在のループ処理中に起
動不可能な命令がアシ、かつ、次のループ処理中に起動
可能な命令がある場合、次のループ処理を、現在のルー
プ処理の終了をまたないで開始できる。
【図面の簡単な説明】
第1図、第2図は従来技術の説明図、第3図から第9図
は本発明の詳細な説明図である。 (34) 爾  1  図 第2図(α) ルー2°l      ルーフ“2

Claims (1)

  1. 【特許請求の範囲】 1、ベクトルを記憶するためのメモリと、複数のベクト
    ルレジスタと、該ベクトルレジスタ内のデータに対する
    演算を行う演算手段と、ベクトル命令列を繰シ返し実行
    する命令実行制御手段と、命令列の各命令の繰シ返し回
    数を表示する手段と、それぞれ、あるベクトルの先頭要
    素の該メモリ上のアドレス(ベースアドレス)をストア
    するための、複数のベースレジスタと、複数群のアドレ
    スレジスタであって、第1群はそれぞれ、あるベクトル
    を、該ベクトルレジスタ長に等しい長さの要素からなる
    セグメントに分けたときの、その1番目のセグメントの
    先頭要素アドレス(セグメントベースアドレス)とその
    ベクトルのベースアドレスとの差であるi番目のセグメ
    ントアドレス偏位を記憶するためのアドレスレジスタか
    らなるものと、該メモリをアクセスする命令の実行時に
    該実行される命令に対する該表示手段によシ表示された
    繰シ返し回数jに対応する群番号のアドレスレジスタ群
    に属し、該命令で指定される群内番号にのアドレスレジ
    スタを選択する手段と、該複数のペースレジスタの内、
    該実行される命令で指定されるペースレジスタを選択す
    る手段と、該選択されたアドレスレジスタと該選択され
    たペースレジスタの内容を加算することによシ、j番目
    のセグメントのベースアドレスを出力する手段と、該出
    力された、セグメントベースアドレスに基づき、j番目
    のセグメントに属する要素に対するアドレスを順次発生
    して該メモリをアクセスする手段とを有するベクトル処
    理装置。 2、該選択手段は、選択動作をするごとに、該アドレス
    レジスタの出力と、該命令で指定するアドレスインクリ
    メントと、該ベクトルレジスタの長さに基づき、次のN
    +1)番目のセグメントに対するベースアドレスを算出
    して、(j+1)番目の群番号を有し、該選択されたア
    ドレスレジスタと同じ群内番号kを有するアドレスレジ
    スタに、書込む手段を有する第1項のベクトル処理装置
    。 3、該表示手段は、該アドレスレジスタ群の全群数nを
    法として繰シ返し数を表示するものであシ、該書込み手
    段はjがXlに等しいときに、1番目のアドレスレジス
    タ群を(n+1)番目のアドレスレジスタ群として書込
    み動作を行うものである第2項のベクトル処理装置。 4、該アドレスレジスタ群の全群数をnとしたとき、該
    選択手段は、該繰シ返し回数jがnをこえたとき、j 
    nt(t:正整数)番目のアドレスレジスタ群を該3番
    目のアドレスレジスタ群として選択するものであシ、該
    書込み手段は、該(j+1)がnをこえたときに、(j
    +1−nt)番目のアドレスレジスタ群を該(j+1 
    )番目のアドレスレジスタ群として書込み動作を行うも
    のである第2項のベクトル処理装置。 5、該命令実行制御手段は、ベクトル命令を順次解読す
    る手段と、解読した命令が実行可能か否か判別する手段
    と、起動不可能な命令の解読情報を該繰シ返し回数と対
    にして保持する命令キューレジスタとを有し、該判別手
    段は先行する命令の実行が終わるごとに、次に解読され
    た命令又は該命令キューレジスタ内の実行待ちの命令に
    ついて起動可否の判別を行うものであシ、起動しようと
    する命令が必要とするリソースが利用可能であシ、かつ
    、その命令よシ先に解読され、該命令キューレジスタ内
    にある命令に対してレジスタコンフリクトがないときに
    起動可能と判断するものである第1項から第4項のいず
    れμクト〜処理装置。
JP58002221A 1983-01-12 1983-01-12 ベクトル処理装置 Granted JPS59128670A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP58002221A JPS59128670A (ja) 1983-01-12 1983-01-12 ベクトル処理装置
GB08400556A GB2133595B (en) 1983-01-12 1984-01-10 Vector processor
DE19843400723 DE3400723A1 (de) 1983-01-12 1984-01-11 Vektorprozessor
US06/570,244 US4677547A (en) 1983-01-12 1984-01-12 Vector processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP58002221A JPS59128670A (ja) 1983-01-12 1983-01-12 ベクトル処理装置

Publications (2)

Publication Number Publication Date
JPS59128670A true JPS59128670A (ja) 1984-07-24
JPH0512750B2 JPH0512750B2 (ja) 1993-02-18

Family

ID=11523296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP58002221A Granted JPS59128670A (ja) 1983-01-12 1983-01-12 ベクトル処理装置

Country Status (4)

Country Link
US (1) US4677547A (ja)
JP (1) JPS59128670A (ja)
DE (1) DE3400723A1 (ja)
GB (1) GB2133595B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61267174A (ja) * 1985-05-22 1986-11-26 Hitachi Ltd ベクトル処理方法及びベクトルプロセッサ

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61173345A (ja) * 1985-01-29 1986-08-05 Hitachi Ltd 計算機システム
JPH0656594B2 (ja) * 1985-05-07 1994-07-27 株式会社日立製作所 ベクトルプロセツサ
US5226129A (en) * 1986-10-30 1993-07-06 Nec Corporation Program counter and indirect address calculation system which concurrently performs updating of a program counter and generation of an effective address
EP0281132B1 (en) * 1987-03-04 1995-10-25 Nec Corporation Vector calculation circuit capable of rapidly carrying out vector calculation of three input vectors
JPH02109160A (ja) * 1988-10-18 1990-04-20 Japan Atom Energy Res Inst ベクトル計算機用演算装置
US5257394A (en) * 1988-10-18 1993-10-26 Japan Atomic Energy Research Institute Logical expression processing pipeline using pushdown stacks for a vector computer
US5261063A (en) * 1990-12-07 1993-11-09 Ibm Corp. Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs
JP2692384B2 (ja) * 1990-12-29 1997-12-17 日本電気株式会社 アドレス生成回路
US7447886B2 (en) * 2002-04-22 2008-11-04 Freescale Semiconductor, Inc. System for expanded instruction encoding and method thereof
US7299338B2 (en) * 2002-12-04 2007-11-20 Agere Systems Inc. Vector indexed memory unit and method
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7107436B2 (en) * 2003-09-08 2006-09-12 Freescale Semiconductor, Inc. Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect
US7315932B2 (en) 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US20060155974A1 (en) * 2005-01-07 2006-07-13 Moyer William C Data processing system having flexible instruction capability and selection mechanism
WO2013095605A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for sliding window data gather
US9424039B2 (en) * 2014-07-09 2016-08-23 Intel Corporation Instruction for implementing vector loops of iterations having an iteration dependent condition
US9910650B2 (en) * 2014-09-25 2018-03-06 Intel Corporation Method and apparatus for approximating detection of overlaps between memory ranges
CN114422394B (zh) * 2022-01-19 2023-08-29 北京鼎兴达信息科技股份有限公司 一种业务地址使用率计算方法、系统以及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5725068A (en) * 1980-07-21 1982-02-09 Hitachi Ltd Vector processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5148937A (en) * 1974-10-25 1976-04-27 Fujitsu Ltd Kiokusochi niokeru junjoseigyohoshiki
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
US4097920A (en) * 1976-12-13 1978-06-27 Rca Corporation Hardware control for repeating program loops in electronic computers
US4240139A (en) * 1977-09-22 1980-12-16 Tokyo Shibaura Denki Kabushiki Kaisha Address generating system
FR2431732A1 (fr) * 1978-07-19 1980-02-15 Materiel Telephonique Dispositif de conversion d'adresse virtuelle en adresse reelle
US4541046A (en) * 1981-03-25 1985-09-10 Hitachi, Ltd. Data processing system including scalar data processor and vector data processor
US4525778A (en) * 1982-05-25 1985-06-25 Massachusetts Computer Corporation Computer memory control

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5725068A (en) * 1980-07-21 1982-02-09 Hitachi Ltd Vector processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61267174A (ja) * 1985-05-22 1986-11-26 Hitachi Ltd ベクトル処理方法及びベクトルプロセッサ

Also Published As

Publication number Publication date
GB2133595A (en) 1984-07-25
US4677547A (en) 1987-06-30
DE3400723C2 (ja) 1989-02-23
DE3400723A1 (de) 1984-07-12
JPH0512750B2 (ja) 1993-02-18
GB8400556D0 (en) 1984-02-15
GB2133595B (en) 1986-10-15

Similar Documents

Publication Publication Date Title
JPS59128670A (ja) ベクトル処理装置
EP0061096B1 (en) Data processing system for parallel processing
US5872987A (en) Massively parallel computer including auxiliary vector processor
US4524416A (en) Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system
US7434024B2 (en) SIMD processor with register addressing, buffer stall and methods
US4617625A (en) Vector processor
JPS6131502B2 (ja)
JPH02140831A (ja) データ処理装置
JPH01309178A (ja) マルチプロセッサのプロセッサ切換え装置
JP2653037B2 (ja) データ処理システム
JPH0348536B2 (ja)
EP0201833A2 (en) Instruction processor
JPH03286332A (ja) デジタルデータ処理装置
KR940000027B1 (ko) 생산라인의 고성능 명령어 실행방법 및 장치
EP1193594A2 (en) Register renaming apparatus and processor
JP2518293B2 (ja) デ−タフロ−プロセツサ
EP0164418B1 (en) Microprogram control system
JPH0461390B2 (ja)
JPS60178580A (ja) 命令制御方式
US8001358B2 (en) Microprocessor and method of processing data including peak value candidate selecting part and peak value calculating part
JP2668987B2 (ja) データ処理装置
JP2654451B2 (ja) データ出力方法
JP4720915B2 (ja) ベクトル命令間追い越し判定装置と方法
JP2772100B2 (ja) 並列命令フェッチ機構
JP2804485B2 (ja) 記憶制御方式