JPH0512750B2 - - Google Patents

Info

Publication number
JPH0512750B2
JPH0512750B2 JP58002221A JP222183A JPH0512750B2 JP H0512750 B2 JPH0512750 B2 JP H0512750B2 JP 58002221 A JP58002221 A JP 58002221A JP 222183 A JP222183 A JP 222183A JP H0512750 B2 JPH0512750 B2 JP H0512750B2
Authority
JP
Japan
Prior art keywords
instruction
vector
address
register
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.)
Expired - Lifetime
Application number
JP58002221A
Other languages
English (en)
Other versions
JPS59128670A (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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】 〔発明の利用分野〕 本発明はベクトル演算を高速に実行可能なベク
トルプロセツサに関し、特に、ベクトルレジスタ
に格納可能なベクトル要素数以上の要素を有する
ベクトル演算を効率よく処理するベクトルプロセ
ツサに関する。
〔従来技術〕
第1図は、ベクトルレジスタを有するベクトル
プロセツサにおけるベクトル演算の様子を示した
ものである。図中、1は主記憶装置、7はベクト
ルレジスタ部、8は演算部である。
ロード命令が実行されると、主記憶装置1から
ベクトルXとYを読出して、各々、ベクトルレジ
スタVR0とVR1に一旦格納する。そして、ベ
クトル演算命令が実行されると、VR0とVR1
を読出して演算器8に入力し、指定された演算を
施して結果を、VR2にストアする。さらにスト
ア命令が実行されると、ベクトルレジスタVR2
の内容が主記憶装置1にオベランドZとに格納す
る処理を行う。ここで、処理したいベクトルの要
素数(ベクトル長と呼ぶ)をk、ベクトルレジス
タの1つに格納可能なベクトル要素数(以下これ
をベクトルレジスタ長と呼ぶ)をlとする。
ベクトル長kはプログラムにより大巾に異なる
が、一般的には、10〜10000以上に及ぶこともあ
る。これに対して、ベクトルレジスタ長lは実現
するプロセツサのハードウエア上の制約によつて
上限が決められ、現状では64〜256の範囲となつ
ている。
このため、k≦lであれば、1回のベクトル演
算で必要な処理を終了させることができるが、k
>lの場合には、何らかの対策が必要である。こ
の対策方法として、次の2方式が考えられてい
る。
その第1方式は、ソフトウエアにより処理を分
割して、各処理単位を独立にハードウエアで処理
させる。
もう1つの方式は、ハードウエアにより処理す
るものであり、ベクトルデータをl要素ずつに分
けて処理する。このl要素を以下ではセグメント
と呼ぶ。即ち一つのセグメントをベクトル命令列
で処理後、再度ベクトル命令列を読出し次のセグ
メントを処理する方式である。
後者の方式は、ハードウエア制御のためオーバ
ヘツドを削減でき高速処理が可能となる利点があ
る。
後者の処理方式では、あるセグメントに対する
ベクトル命令列の処理(以下、これをループ処理
と呼び、ループiは第i番目のセグメントに対す
るループ処理を意味するものとする)後に、次ル
ープ処理に用いるセグメントに関するアドレスを
求める処理の高速化が重要な課題となつている。
このアドレス更新処理方法が“PROCESSING
VECTORS AS A PLURALITY OF
SEGMENTS”(IBM Technical Disclosure
Bulletin,Vol.13 No.12 May 1971)に紹介され
ている。
第2図aはその概略構成図、第2図bは概略処
理フローを示している。
主記憶装置1をアクセス(読出しおよび書込
み)する場合、ベクトルデータの先頭アドレス
(第1要素のアドレスであり、これをベースアド
レスと呼ぶ)と隣接要素の間隔(以下、インクリ
メント値と呼ぶ)に基づき、順次各要素のストア
アドレスを発生し、これに基づき主記憶装置をア
クセスして行く。
なお、ベクトルデータが主記憶装置1上で、隣
接する要素に空きなく、即ち全要素が連続して配
置される場合を、以下ではアドレス連続と呼び、
これ以外をアドレス非連続と呼ぶことにする。イ
ンクリメント値をバイト単位で指定するとすれ
ば、ベクトルデータ巾が8バイトのときインクリ
メント値8でアドレス連続となり、ベクトルデー
タ巾が4バイトのときインクリメント値4でアド
レス連続となる。また、ここではベクトルレジス
タ長を256とする。
最初、ベースアドレスをベースレジスタ105
に、インクリメント値をインクリメントレジスタ
101にセツトし、カウントアツプレジスタ10
2をゼロにリセツトする。
セグメントベースレジスタ109には、以下に
示すように各ループ処理の対象となるセグメント
の先頭要素のアドレスがセツトされる。このアド
レスを以下ではセグメントベースアドレスと呼
ぶ。また、ベクトルデータの先頭要素のアドレス
からあるセグメントベースアドレスまでのアドレ
ス差を以下では簡単のためにセグメントアドレス
変位と呼ぶ。
また、カウントアツプレジスタ102は、各ル
ープ処理の対象となるセグメントの先頭要素番号
を保持する。
従つて、セグメントベースアドレスはインクリ
メントレジスタ101の値とカウントアツプレジ
スタ102の値との積にベースレジスタ105の
値を加えることにより求められることになるが、
この積の算出方法は次の2ケースがある。
第1のケースは、アドレス連続ケースであり、
カウントアツプレジスタ102の値をレフトシフ
トレジスタ104に入力し、8バイトデータであ
れば3ビツト左シフト、4バイトデータであれば
2ビツト左シフトさせて、出力結果をセレクタ1
06を介してアドレスレジスタ107にセツトす
る。
第2のケースは、アドレス非連続ケースであ
り、この場合は、インクリメントレジスタ101
の値とカウントアツプレジスタ102の値の積を
乗算器103で算出し、アドレスレジスタ107
にセツトする。いずれの場合も、アドレスレジス
タ107とベースレジスタ105の内容を加算器
108で加算することによりセグメントベースア
ドレスが求まる。なお、インクリメントデコーダ
100は、アドレスの連続/非連続を検出し、そ
の結果にもとづきセレクタ106を制御する。
カウントアツプレジスタ102はその後次ルー
プ処理のためにベクトルレジスタ長だけ増大され
る必要がある。このレジスタ102の更新は第2
図bに示すように、ロード命令から初まりストア
命令で終わる命令列の最後で行われ、さらに、ア
ドレス非連続的には乗算器103での乗算にかな
りの時間を要するため、ループ2でのロード命令
の開始時点cが遅れてしまう問題点がある。
また、処理内容によつては、第2図bに於て、
ループ2のロード命令の開始時点cが、ループ1
のストア命令の開始時点bより先んじて処理した
い場合、即ち、ループ処理間で命令開始時点をオ
ーバラツプさせたい場合があるが、従来技術で
は、前述のように、先行するループ処理の結果を
用いてループの処理に必要なアドレスを生成する
ので、オーバラツプ処理が不可能である。
〔発明の目的〕
従つて、本発明は上述した従来技術の問題点を
なくすため、次ループ処理のためのアドレス生成
に要する時間の短縮、ハードウエア量の削減を行
うことにより、また、アドレスレジスタを多面化
し、ループ処理間でのオーバラツプ処理を可能と
することにより、ベクトル演算の高速化を可能と
するベクトルプロセツサを提供することを目的と
する。
〔発明の概要〕
第3図は、本発明の概念的構成図を示し、11
1は加算器、112と113はアドレスレジス
タ、3は命令制御部、114はセレクタ、110
はレフトシフトレジスタであり、その他は第2図
aと同様である。但し、インクリメントレジスタ
101、アドレスレジスタ112,113、ベー
スレジスタ105はそれぞれ複数個のレジスタか
らなる。
最初、ベースアドレスをベースレジスタ105
の例えば1番のレジスタに、インクリメント値を
インクリメントレジスタ100に例えば1番のレ
ジスタをセツトし、アドレスレジスタ112の例
えば1番のレジスタをゼロにリセツトする。第2
図bの処理フローを参照してアドレス生成手順を
以下に記す。
ループ1のロード命令が開始されるとき、アド
レスレジスタ112の1番レジスタの値を、セレ
クタ114を介して加算器108に入力し、ベー
スレジスタ105の1番レジスタの値と加算して
セグメントベースレジスタ109にセツトし、こ
のセグメントベースレジスタ109の値をベクト
ルデータを主記憶からフエツチするメモリリクエ
スタ(図示せず)に転送する。
この処理と並行して、インクリメントレジスタ
101の1番レジスタの値をレフトシフトレジス
タ110で8ビツト左シフトすることによりイン
クリメント値を256倍し、このシフト結果を加算
器111に入力し、そして、セレクタ114を介
して加算器111に入力するアドレスレジスタ1
12の1番レジスタの値との加算をして結果をア
ドレスレジスタ113の1番レジスタにセツトす
る。こうしてループ2のロード命令で使用するセ
グメントアドレス変位が前もつてアドレスレジス
タ113の1番レジスタに準備しておく。
次に、ループ1のストア命令を開始するとき
も、先程のループ1のロード命令と同様の処理を
レジスタ101,112,113,105の1番
のレジスタを用いて行う。このように命令毎にこ
れらのレジスタ番号を指定する必要がある。
しかし、上記ループ1のロード命令とストア命
令で、インクリメント値が同一であれば、これら
の命令実行時にはインクリメントレジスタ101
とアドレスレジスタ112,113の同一番号の
レジスタを指定すべきである。たとえばインクリ
メント値をインクリメントレジスタ101にセツ
トするときのセツト時間が削減可能となり、さら
に二つの命令に対して一つのインクリメントレジ
スタでよく、レジスタが有効に利用できる。この
ように、異なつた命令で同一番号のレジスタを指
定しても、ループ1のロード命令でアドレスレジ
スタ113の1番レジスタにセツトした値と同一
の値がループ1のストア命令で再度このレジスタ
にセツトされるが、特に不都合はない。
ループ1の最後のストア命令が開始され、ルー
プ2で使用するためのセグメントアドレス変位が
アドレスレジスタ113の2番レジスタにセツト
されると、直ちにループ2のロード命令を開始で
きる。すなわち、ロード命令の実行に必要なセグ
メントアドレス変位がすでにアドレスレジスタ1
13の1番レジスタにセツトされており、この変
位をセレクタ114を介してベースレジスタ10
5の1番レジスタの値と加算することによりロー
ド命令に対するセグメントベースアドレスが求ま
るからである。こうして、ループ処理が切りかわ
るときのアドレス生成オーバヘツドを短縮でき
る。
ループ2のロード命令が開始されると、上述の
ごとくにロード命令に対するセグメントベースア
ドレスを求め、セグメントベースレジスタ109
にセツトした後リクエスタに転送する。これと並
行して、アドレスレジスタ113の1番レジスタ
の値に、ループ1での処理と同様にインクメント
レジスタ101の1番レジスタの値の256倍を加
算して、その加算結果をアドレスレジスタ112
の1番レジスタにセツトし、ループ3で用いる値
を準備しておく。
以下同様に、必要なループ回数だけ繰返すこと
になるが、そのたび毎にアドレスレジスタ112
と113を交互に使用するように制御する必要が
あるが、このための情報は命令制御部3から転送
される。
第4図aとbは、ループ処理間で命令開始時点
がオーバラツプする場合の処理フロオを示してい
る。
第4図aは、ループi+2のロード命令の開始
時点eが、ループi+1のストア命令の開始時点
dより時間的に前であり、かつ、ループiのスト
ア命令の開始時点bがループi+2のロード命令
の開始時点eより時間的に前であることを示して
いる。即ち、命令開始時点のオーバラツプは、あ
る時点をとれば隣接した2つのループ処理間のみ
である。第4図bでは、ループi+3のロード命
令の開始時点gがループi+1のストア命令の開
始時点dより先であり、かつ、ループiのストア
命令の開始時点bは、ループi+3のロード命令
の開始時点gより先であり、連続する3つのルー
プ処理間でオーバラツプしていることを示してい
る。
このように、ループ処理間での命令開始時点の
オーバラツプ処理を行うためには、第3図に示し
たアドレスレジスタ112と113の代りに更に
多くのレジスタを用いる必要がある。即ち、第4
図aでは3面、bでは4面を必要となる。
一般的には、連続するn個のループ処理間でオ
ーバラツプを行うには、n+1面のアドレスレジ
スタが必要となる。このように、オーバラツプの
度合を深めればそれだけ演算器等のリソースを空
きなく使用でき処理性能の向上が期待できる。
〔発明の実施例〕
第5図は本発明の実施例を示す概略構成図であ
り、1はベクトルデータを格納する主記憶装置、
2は主記憶装置1からのベクトルデータの読出し
および書込みを中継する記憶制御装置、3は命令
の解読および各リソース(例えば、演算器、メモ
リリクエスタ等)への起動制御を行なう命令制御
部、6はアドレスレジスタ群200と、2個の読
出し専用リクエスタ210,220(各々リクエ
スタ0,1と呼ぶ)と、1個の書込み専用リクエ
スタ230(リクエスタ2と呼ぶ)から構成され
るアクセス制御部、7は8個のベクトルレジスタ
VR0〜7(ベクトルレジスタ長は256)で構成
されるベクトルレジスタ部、8は乗算器240と
加算器250で構成される演算部である。
第6図はアクセス制御部6の構成図であり、2
11,221,231はそれぞれリクエスタ0,
1,2に設けられた制御回路、212,222,
232はそれぞれリクエスタ0,1,2に設けら
れたアドレス生成回路、300〜304はレジス
タ、305はOR回路、306〜308はAND回
路、309はベクトルベースレジスタ群VBR、
310〜312は各々ベクトルアドレスレジスタ
VAR,VARD,VARDD、313はベクトルイ
ンクリメントレジスタVIR、314はレフトシフ
タ回路、315は加算器、316〜318はゲー
ト、319〜323はセレクタである。VBR3
09、VAR310、VARD311、VARDD3
12、VIR313は各々、8個のレジスタで構成
されるものとし、例えば、VBR309の2番目
のレジスタを以下では簡単化のためにVBR2と
記述する。
なお、ベクトルX(i)のアドレスは次のように生
成されるものとする。
X(1) VBRj+VARk X(2) VBRj+VARk+VIRk X(3) VBRj+VARk+VIRk*2 X(i) VBRj+VARk+VIRk*(i−1) 但し、VBR,VARの番号j,kは命令で指定
され、VIRの番号はVARの番号kに等しいと仮
定する。
上記アドレス生成は、アドレス生成回路21
2,222,232で行われる。
第3図のアドレスレジスタ112と113に対
するものが、第6図のVAR310、VARD31
1であり、さらに、2個のループ処理間でのオー
バラツプを可能とするためにVARDD312を追
加している。
第7図は、命令制御部3の構成図であり、40
0,404,405はゲート、401は命令レジ
スタ、402は命令解読回路、403はループレ
ジスタ、406は解読抑止検出回路、407は命
令キユーレジスタ、408はループキユーレジス
タ、409は命令起動判定回路、410はリソー
ス管理回路、411はデコーダである。
命令を読出し、ゲート400、命令レジスタ4
01を介して、命令解読回路402に入力し、こ
こで命令の解読を行い、命令の識別情報(OPコ
ード)、VBR,VAR、ベクトルレジスタのそれ
ぞれの番号等の情報を出力して、ゲート404を
介して命令起動判定回路409と命令キユーレジ
スタ407に送出する。命令起動判定回路409
は、命令解読回路402からゲート404を介し
て与えられる命令解読情報と命令キユーレジスタ
407に記憶されている命令解読情報が入力さ
れ、これらの解読情報を有する命令の中に、起動
可能な命令があるか否かを、リソース管理回路4
10から転送されるリソースの使用状態に基づき
判断し、起動可能な命令があればこれらの中から
1つを選択する。命令解読回路402から直接入
力した命令に対する起動が不可であれば、その命
令に対する解読情報が命令キユーレジスタ407
の空きエリアにキユーイングされる。空きエリア
の管理は命令判定回路409が公知の技術にした
がい行う。ただし、命令キユーレジスタ407内
のある命令および命令解読回路402で解読され
た命令のいずれも起動可能なときには、命令キユ
ーレジスタ407内の命令が優先して起動され
る。また、命令キユーレジスタ407内に起動可
能な命令が複数個あるときには、最も早く解読さ
れたものから順次起動する。
なお、リソース管理回路410はメモリリクエ
スタ0〜2からそれぞれが他の命令のために使用
中か否かが線l18〜l20を介して入力され、
さらに、演算部8から、乗算器240、加算器2
50等が使用中か否かを示す信号が線l40を介
して入力され、さらにベクトルレジスタ部7か
ら、各ベクトルレジスタが使用中か否かを示す信
号がl41を介して入力される。リソース管理回
路はこれらの入力情報を保持している。命令起動
判定回路409による起動可否判断は、たとえば
特願昭56−210392「データ処理装置」に記載され
ている方法を用いることができる。
以上のごとくにして起動が可能な命令を先に起
動し、不可であればキユーイングして可能になる
まで待つようにする。このような方法は既にベク
トルプロセツサで実現されているが、本発明の実
施例では、新たにループ情報を追加し、次のよう
に制御する。即ち、ループレジスタ403は、2
ビツトで構成され、ベクトル命令列の処理を開始
する前にゼロにリセツトし、命令解読回路402
は命令列の最後に置かれているEND命令を解読
する毎にそのときの値を+1する。ただし、その
ときの値が3のときには0にする。この3は実施
例で許されているオーバラツプ可能なループ数に
等しい。すなわち、アドレスレジスタ群VAR,
VARD,VARDDの群数3に等しい。つまり3
を法としてカウントしている。このループレジス
タ403のループ情報は、ゲート405を介し
て、命令解読回路402から出力される情報と同
期して、命令起動判定回路409、あるいは、ル
ープキユーレジスタ408に転送される。
命令起動判定回路409により起動可能と判定
された命令が、ロードあるいはストア命令である
場合、この命令の2ビツトのループ情報がデコー
ダ411でデコードされ、このループ情報が0,
1,2のときにそれぞれ、線12,13,14が
オンされる。
また命令起動判定回路409は、起動可能とし
て選択された命令の命令コード(OPコード)を
線42を介して演算部8に送出する。また、選択
された命令がロード命令又はストア命令の場合に
は、利用可能な、リクエスタ0,1又は2の一つ
をこの命令に割りあてる。この割りあて結果がリ
クエスタ0,1又は2のときに、それぞれ線l1
5,l16又はl17に起動信号を出力する。ま
た、命令起動判定回路409は、選択された命令
の解読情報の内、ベースレジスタ番号とアドレス
レジスタ番号をそれぞれ線l10,l11に送出
する。
なお、命令のフエツチのためには、特願昭55−
98740号「ベクトルプロセツサ」にあるごとく、
ループ処理のために命令列を所望のベクトル長の
データが処理し終るまで繰り返しフエツチする回
路(図示せず)により行うのはいうまでもない。
この回路は勿論、命令フエツチの繰り返しが必要
か否かをベクトル長とベクトルレジスタ長と、そ
れまでの処理ずみの要素数に基づいて判定する回
路(図示せず)を有するのはいうまでもない。
第6図のアクセス制御部6の構成図では、
VAR,VARD,VARDDの3面のアドレスレジ
スタを保持しているため、オーバラツプは連続す
る2個のループまでであり、これ以外のオーバラ
ツプを抑止する必要があるが、次のように制御さ
れる。
解読抑止検出回路406は、ループレジスタ4
03とループキユーレジスタ408のループ情報
を入力し、次のようなケースでは抑止信号を送出
し、ゲート400,404,405を閉じて、新
たな命令解読を抑止する。
ケース1:ループレジスタ403の値が00で、
ループキユーレジスタ408の中に01が存
在する間。
ケース2:ループレジスタ403の値が01で、
ループキユーレジスタ408の中に10が存
在する間。
ケース3:ループレジスタ403の値が10で、
ループキユーレジスタ408の中に00が存
在する間。
また、抑止信号は、命令キユーレジスタ407
が詰つた場合も送出される。この場合の検出は命
令起動判定回路409により行われる。このよう
にループ情報を付加することにより、ループ処理
のオーバラツプを制御できる。
本実施例を用いたベクトル処理例を第8図aに
示す。本処理例は第8図bにあるごとく、ベクト
ルB(i)とC(i)の積にD(i)を加算し、その結果をベ
クトルA(i)とする演算に対するものであるが、実
際には例えば第8図cに示すような命令列に展開
して処理することになる。以下では、第8図の処
理例に基づき、処理手順の詳細を記す。
命令1はベクトルBを主記憶装置1から読出し
ベクトルレジスタVR0に格納する命令である。
すなわち、この命令はVAR1とVBR1の内容を
加算して得られるセグメントベースアドレスに基
づきベクトルデータを主記憶装置1からフエツチ
し、ベクトルレジスタVR0に格納する処理を必
要とする。
ベクトルBのアドレス情報は、前もつてVBR
1,VAR1,VIR1に格納されているものとす
る。VIRはVARと同一レジスタ番号が指定され
るものとする。
命令制御部1は命令1を解読すると信号線l1
5を用いてリクエスタ0又は1の一方(今仮りに
これをリクエスタ0とする)の制御回路211に
起動信号を送出し、同時に、信号線l10を介し
てVBR番号1をセレクタ319に、信号線l1
1を介してVAR番号1,VIR番号1をセレクタ
320〜323に送出する。セレクタ319で
は、VBR1を選択し、セレクタ323ではVIR
1を選択してアドレス生成回路212に送出す
る。セレクタ320〜322では各々VAR1,
VARD1,VARDD1を選択するが、ループ1
の処理のため命令制御部3は線l12〜l14の
内、線l12のみをオンとするのでVAR1をゲ
ート318を介してアドレス生成回路212に送
出される。そして、アドレス生成回路212では
これらのアドレス情報をもとにベクトルAの各要
素のアドレスを順次256要素分順次クロツクに同
期して生成して、制御回路211から出力するリ
クエスト信号とともに記憶制御装置2へ送出す
る。
このため、制御回路211は、線l15上の起
動信号に応答して、セレクタ257を制御して、
VBR1の出力をレジスタ250にセツトし、セ
レクタ258を制御して、VAR1の出力をレジ
スタ251にセツトし、VIR1の出力をレジスタ
2521にセツトする。さらにセレクタ259を
制御して、まず初めに0をキヤリセーブアダー2
54に入力する。この加算器と並列加算器255
とによりベクトルBの最初の要素B(1)のアドレス
が求められ、レジスタ256にセツトされる。そ
の後、制御回路211はキヤリセーブアダー25
4のキヤリー出力Cと和出力Sとを、それぞれセ
レクタ257,1258を介してレジスタ25
0,251にそれぞれセツトする。さらに、セレ
クタ259を制御して、レジスタ252内のイン
クリメント値を加算器254に入力する。この結
果、並列加算器255より次の要素B(2)のアドレ
スが求められ、レジスタ256にセツトされる。
以下、同様にして、要素B(3),……B(256)のア
ドレスがクロツクに同期して順次求められる。制
御回路211は、レジスタ256に、一つのアド
レスがセツトされるのに同期して、メモリリクエ
ストを線260に出力する。
VAR1とVIR1をアドレス生成回路212へ
転送すると同時に、VAR1を加算器315に、
VIR1をレフトシフタ314で8ビツト左シフト
(即ちVIR1*256)して加算器315にそれぞれ
入力して加算する。
この加算結果は、ループ2での処理に用いる2
番目のセグメントについてのセグメントアドレス
変位を表わす。そして、加算結果をVARD1に
セツトする。このときのVARDへのセツト信号
は次のようにして作成する。
信号線l15を介して送出する起動信号をOR
回路305を介してレジスタ304にセツトし、
同時に信号線l12に送出するON信号をレジス
タ303にセツトする。そして、これら信号が
AND回路308に入力され、出力信号がVARD
へのセツト信号として信号線l21を介して送出
される。また、VARDのレジスタ番号は、信号
線l11から送出されるVAR番号がレジスタ3
00、信号線l24を介して送出される。このよ
うにして、ループ2の処理に使用するセグメント
アドレス変位を前もつてVARD1にセツトして
おく。
命令1の起動後1サイクルして命令1に於ける
VARD1へのこのセツトが終了すると、次の命
令2の起動を行う。
命令2はベクトルCを読出してベクトルレジス
タVR1に格納する命令である。
命令制御部1は信号線l16を用いてリクエス
タ1の制御回路221に起動信号を送出し、同時
に、命令1での処理と同様に信号線l10を介し
てVBR番号“2”を、l11を介してVAR,
VIR番号“1”を、l12を介してON信号を送
出する。そして、VBR2,VAR2,VIR2をア
ドレス生成回路222に送出すると同時に、
VAR2+VIR2*256を算出してVARD2にセ
ツトする。
命令1と2の起動により、ベクトルBとCの読
出しが要素の若い順番に順次行われ、各々ベクト
ルレジスタVR0とVR1に格納されるが、デー
タが到着次第、順次命令3で指定される乗算が乗
算器240で行われ、結果がベクトルレジスタ
VR2に書込まれる。
命令4はベクトルDを主記憶装置1から読出し
てベクトルレジスタVR3に格納する命令である
が、読出し専用のリクエスタ0と1が使用中であ
るため、空くまで待つ必要がある。なお、待ち時
間の間に命令制御部3は、引続く命令5の解読を
行う。命令5は命令4での演算結果が格納される
ベクトルレジスタVR3を利用するため、この命
令5は命令4より先に起動できない。さらに命令
6は、命令5の演算結果を主記憶装置に格納する
命令であるためこれも起動できない。したがつて
命令4〜6の解読情報が命令キユーレジスタ40
7(第7図)にキユーイングされる。その後命令
列の最後に置かれるEND命令(命令7)が解読
され、次ループ処理の要/不要の判定が行われ
る。今、ベクトルレジスタ長が256、ベクトル長
が500であるから、ループ2の処理が必要となる。
そして、更に、ループ2の処理のために命令1,
2……をも解読してキユーイングされる。
リクエスタ0が命令1の処理を終了すると、制
御回路211は信号線l18を介して終了信号を
命令制御部3に送出する。命令制御部3はこの終
了信号を受取ると、命令4の起動が可能になつた
と判断できるのでこの起動をリクエスタ0に対し
て行う。
起動方法は命令1の場合と同様であり、VBR
3,VAR1,VIR1をアドレス生成回路212
に送出し、VAR1+VIR1*256を算出して
VARD1にセツトする。
命令4の実行によりベクトルDが読出されてベ
クトルレジスタVR3に格納されると、VR2と
VR3の加算の命令5が実行されるが、その間
に、命令制御部3は、制御回路221から信号線
l19を介して終了信号を受取ると、ループ2の
命令1の起動をリクエスタ1に対して行う。
VBR1,VARD1,VIR1をアドレス生成回路
222に転送し、同時に、VARD1+VIR1*
256を算出してVARDD1にセツトする。この場
合、信号線l13がONとなり、従つて信号線l
22を介してVARDDにセツト信号が送出され
る。
次に、VR2とVR3の最初の要素が加算器2
50で加算され、結果がVR4に書込まれると命
令6が開始される。
命令6の起動は信号線l20を介してリクエス
タ2に送出される。VBR4,VAR1,VIR1を
アドレス生成回路232に転送し、VAR1+
VIR1*256を算出してVARD1にセツトする。
ここで、ループ2の命令1の起動が、ループ1の
命令6の起動より時間的に前であり、かつ、
VARを共用しているが、アドレス生成は正しく
行われる。即ち、ループ2の命令1の起動時では
VARD1を使用し、ループ3(本処理例ではル
ープ2で終るが、ループ3があると仮定)で使用
される値をVARDD1にセツトするが、VAR1
の値は不変であり、時間的に後に起動されるルー
プ1の命令6がVAR1を使用しても矛盾しない。
以下同様に処理されるが、ループ2の命令2は
リクエスタ0の終了を待つて起動され、ループ2
の命令4はリクエスタ1の終了を待つて起動され
る。また、ループ3の処理が引続く場合では、ル
ープ3の命令1の起動時のアドレス選択およびセ
ツトは次のように行われる。VBR1,VARDD
1,VIR1が選択されてアドレス生成回路212
に転送され、VARDD1+VIR1*256が算出さ
れてVAR1にセツトされる。このとき、信号線
l14がONとなり、信号線l23を介してセツ
ト信号がVARに送出される。
第9図は、第8図に示したのと同様のベクトル
処理を行つた場合の処理フロオを示すが、第6図
のアクセス制御部6の構成に於て、VARDDがな
いと仮定した場合の処理フロオである。第8図と
比較すると、第9図では明らかにリクエスタ0と
1の使用効率が悪く、処理性能が劣化しており、
ループ処理間でのオーバラツプの効果がはつきり
表われている。
以上述べたごとく、本発明によれば、現在のル
ープ処理より後のループ処理に必要なアドレス情
報が現在のループ処理の実行中に作成されている
ので、現在のループ処理の終了後、ただちに次の
ループ処理を開始できるだけでなく、現在のルー
プ処理中に起動不可能な命令があり、かつ、次の
ループ処理中に起動可能な命令がある場合、次の
ループ処理を、現在のループ処理の終了をまたな
いで開始できる。
【図面の簡単な説明】
第1図、第2図は従来技術の説明図、第3図か
ら第9図は本発明の実施例の説明図である。

Claims (1)

  1. 【特許請求の範囲】 1 ベクトルの書き込みあるいはベクトルの読み
    出しのためにメモリアクセスするベクトル命令を
    含むベクトル命令列を繰り返し実行し、該ベクト
    ル命令列の実行ごとに、そこに含まれるベクトル
    命令が指定するベクトルの一つのセグメントをア
    クセスさせるベクトル命令処理装置において、 該ベクトル命令列の各ベクトル命令がある繰り
    返し時に使用する第1のアドレス情報と、それぞ
    れのベクトル命令が後の繰り返し時に使用する第
    2のアドレス情報を繰り返し回数に対応して記憶
    する手段と、各ベクトル命令のくり返し時に、そ
    の命令の繰り返し回数に対応したアドレス情報を
    選択する手段と を設けたベクトル処理装置。 2 各ベクトル命令が実行されるごとに、そのベ
    クトル命令について保持された該第1のアドレス
    情報から、該第2のアドレス情報を生成して該記
    憶手段に書き込む手段を有する第1項のベクトル
    処理装置。 3 該記憶手段は、複数群のアドレスレジスタで
    あつて、第群はそれぞれ、あるベクトルを、あ
    らかじめ定めた要素数からなるセグメントに分け
    たときの、その番目のセグメントの先頭要素の
    アドレスに対応するセグメントベースアドレスと
    そのベクトルの先頭要素のアドレスに対応するベ
    ースアドレスとの差である番目のセグメントア
    ドレス偏位を記憶するためのアドレスレジスタか
    らなり、該選択手段は、ベクトル命令列を繰り返
    し実行するときに、その繰り返し回数jに対応す
    る群番号のアドレスレジスタ群に属し、該命令列
    に含まれ、いずれか一つのベクトルをアクセスす
    る命令で指定される番号kのアドレスレジスタを
    選択する手段からなる、第2項のベクトル処理装
    置。 4 該書込み手段は、該選択手段が選択動作する
    ごとに、該選択されたアドレスレジスタ内の該セ
    グメントアドレス偏移と、該命令で指定するアド
    レスインクリメントと、該あらかじめ定めた要素
    数に基づき、後続のセグメントに対するセグメン
    トアドレス偏位を算出して、該後続のセグメント
    に対応する群番号を有し、該選択されたアドレス
    レジスタと同じ番号kを有するアドレスレジスタ
    に、書込む手段を有する第3項のベクトル処理装
    置。 5 該アドレスレジスタ群の全群数nを法として
    該ベクトル命令列の繰り返し数を表示する手段を
    さらに有し、該書込み手段はjがnに等しいとき
    に、1番目のアドレスレジスタ群を(n+1)番
    目のアドレスレジスタ群として書込み動作を行う
    ものである第4項のベクトル処理装置。 6 該アドレスレジスタ群の全群数をnとしたと
    き、該選択手段は、該繰り返し回数jがnをこえ
    たとき、j−nl(l:正整数)番目のアドレスレ
    ジスタ群を該j番目のアドレスレジスタ群として
    選択するものであり、該書込み手段は、該(j+
    1)がnをこえたときに、(j+1−nl)番目の
    アドレスレジスタ群を該(j+1)番目のアドレ
    スレジスタ群として書込み動作を行うものである
    第2項のベクトル処理装置。 7 該ベクトル命令列内のベクトル命令を順次解
    読する手段と、命令が実行可能か否か判別する手
    段と、起動不可能な命令の解読情報を該繰り返し
    回数と対にして保持する命令キユーレジスタとを
    有し、該判別手段は先行する命令の実行が終わる
    ごとに、該解読手段により解読された命令又は該
    命令キユーレジスタ内の実行待ちの命令について
    起動可否の判別を行うものであり、該選択手段
    は、該判別手段により起動可能と判別された命令
    が該命令キユーレジスタ内の命令であるとき、当
    該命令の解読情に付されている繰り返し回数に応
    答するものである。第3項から第6項のいずれか
    のベクトル処理装置。
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 JPS59128670A (ja) 1984-07-24
JPH0512750B2 true 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)

Families Citing this family (20)

* 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 株式会社日立製作所 ベクトルプロセツサ
JP2564264B2 (ja) * 1985-05-22 1996-12-18 株式会社日立製作所 ベクトル処理方法及びベクトルプロセッサ
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
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7315932B2 (en) 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands 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

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH0512750B2 (ja)
US4507728A (en) Data processing system for parallel processing of different instructions
US6219775B1 (en) Massively parallel computer including auxiliary vector processor
EP0114304B1 (en) Vector processing hardware assist and method
US4740893A (en) Method for reducing the time for switching between programs
EP0240032B1 (en) Vector processor with vector data compression/expansion capability
US4541046A (en) Data processing system including scalar data processor and vector data processor
US4524416A (en) Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system
US5887183A (en) Method and system in a data processing system for loading and storing vectors in a plurality of modes
US4454578A (en) Data processing unit with pipelined operands
US5226131A (en) Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer
US4398245A (en) Data processing system having an instruction pipeline for processing a transfer instruction
US5680338A (en) Method and system for vector processing utilizing selected vector elements
US4725973A (en) Vector processor
US6269440B1 (en) Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
JPS6131502B2 (ja)
USRE32493E (en) Data processing unit with pipelined operands
JP2008181551A (ja) ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング
JPH01309178A (ja) マルチプロセッサのプロセッサ切換え装置
US6049839A (en) Data processor with multiple register queues
EP0164418B1 (en) Microprogram control system
JP3789937B2 (ja) ベクトルプロセッサのためのチャンク連鎖
Dorozhevets et al. The El'brus-3 and MARS-M: Recent advances in Russian high-performance computing
JPH0461390B2 (ja)
JPS60178580A (ja) 命令制御方式