JPH0434191B2 - - Google Patents
Info
- Publication number
- JPH0434191B2 JPH0434191B2 JP61068387A JP6838786A JPH0434191B2 JP H0434191 B2 JPH0434191 B2 JP H0434191B2 JP 61068387 A JP61068387 A JP 61068387A JP 6838786 A JP6838786 A JP 6838786A JP H0434191 B2 JPH0434191 B2 JP H0434191B2
- Authority
- JP
- Japan
- Prior art keywords
- main memory
- data
- pipeline
- vector
- mask
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector 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
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はベクトル処理装置に係り、特に行列形
式データの処理において、疎行列データのアクセ
スを高速に処理するに好適なベクトル処理装置に
関する。
式データの処理において、疎行列データのアクセ
スを高速に処理するに好適なベクトル処理装置に
関する。
ベクトル処理装置において、科学技術計算に現
れる大規模の行列計算では、扱うデータが非常に
大きく、そのままの形では主記憶に収まらない場
合がある。また疎行列を扱う行列計算では、計算
結果に関与するのはごく少数の非零の要素であ
る。このため主記憶上には圧縮された形式で行列
データを蓄えておき、計算時にベクトル・レジス
タ上に伸張して転送する機能を備えることによつ
て記憶容量の制約を解消しつつ、行列計算の高速
化をはかつている。
れる大規模の行列計算では、扱うデータが非常に
大きく、そのままの形では主記憶に収まらない場
合がある。また疎行列を扱う行列計算では、計算
結果に関与するのはごく少数の非零の要素であ
る。このため主記憶上には圧縮された形式で行列
データを蓄えておき、計算時にベクトル・レジス
タ上に伸張して転送する機能を備えることによつ
て記憶容量の制約を解消しつつ、行列計算の高速
化をはかつている。
この種のベクトル処理装置では、ベクトル・レ
ジスタ上の伸張されたデータの有効性を示すため
にマスク・レジスタが設けられている。マスク・
レジスタの各ビツトはベクトル・レジスタの対応
する要素の有効性を示す。ベクトル・レジスタの
n番目の要素に対応するマスク・ビツトVMR
(n)が値“1”であるとき該要素は有効、“0”
であるとき無効であることが示される。
ジスタ上の伸張されたデータの有効性を示すため
にマスク・レジスタが設けられている。マスク・
レジスタの各ビツトはベクトル・レジスタの対応
する要素の有効性を示す。ベクトル・レジスタの
n番目の要素に対応するマスク・ビツトVMR
(n)が値“1”であるとき該要素は有効、“0”
であるとき無効であることが示される。
主記憶上の圧縮されたデータは、先頭アドレス
を保持するアドレス・レジスタVARと間隔値を
保持するインクリメント・レジスタVIRとによつ
て次のようにアドレス付けされる。n番目の要素
のアドレスは、 ao=VAR+(o-1 〓i=0 VMR(i))*VIR ……(1) となる。主記憶ではn番目の要素以前の有効要素
のみが主記憶上に圧縮されて配置されるので、n
番目の要素のアドレスは、該要素以前の“1”の
マスク・ビツトのカウント数にインクリメントを
乗じ、先頭アドレスを加えた値となる。
を保持するアドレス・レジスタVARと間隔値を
保持するインクリメント・レジスタVIRとによつ
て次のようにアドレス付けされる。n番目の要素
のアドレスは、 ao=VAR+(o-1 〓i=0 VMR(i))*VIR ……(1) となる。主記憶ではn番目の要素以前の有効要素
のみが主記憶上に圧縮されて配置されるので、n
番目の要素のアドレスは、該要素以前の“1”の
マスク・ビツトのカウント数にインクリメントを
乗じ、先頭アドレスを加えた値となる。
主記憶上の圧縮されたデータとベクトル・レジ
スタ上の伸張されたデータとの間の転送は、マス
ク・レジスタの内容によつて制御される。n番目
の要素に対しては、マスク・ビツトVMR(n)
が値“1”をとる場合に主記憶からベクトル・レ
ジスタへのロード、またはベクトル・レジスタか
ら主記憶へのストアが行われる。値“0”を取る
場合にはロード、ストアは行われない。以上のよ
うにマスク・ビツトによるメモリ・リクエスト制
御が行われ、先頭要素から順次転送が行われる。
スタ上の伸張されたデータとの間の転送は、マス
ク・レジスタの内容によつて制御される。n番目
の要素に対しては、マスク・ビツトVMR(n)
が値“1”をとる場合に主記憶からベクトル・レ
ジスタへのロード、またはベクトル・レジスタか
ら主記憶へのストアが行われる。値“0”を取る
場合にはロード、ストアは行われない。以上のよ
うにマスク・ビツトによるメモリ・リクエスト制
御が行われ、先頭要素から順次転送が行われる。
このような構成をもつベクトル処理装置では、
従来、アドレス計算は次のように遂次的に行われ
る。
従来、アドレス計算は次のように遂次的に行われ
る。
ao=ao-1+VMR(n−1)*VIR……(2)
ここにaoはn番目の要素の主記憶アドレス、
ao-1は直前のn−1番目の要素の主記憶アドレス
である。このため、データ転送は逐次的に1本の
ロード・ストア・パイプラインで行われていた。
なお、この種の装置として関連するものには例え
ば特開昭58−214963号公報が挙げられる。
ao-1は直前のn−1番目の要素の主記憶アドレス
である。このため、データ転送は逐次的に1本の
ロード・ストア・パイプラインで行われていた。
なお、この種の装置として関連するものには例え
ば特開昭58−214963号公報が挙げられる。
〔発明が解決しようとする問題点〕
上記従来技術は、要素並列の多重パイプライン
方式の適合性については配慮されておらず、多重
化されたパイプラインが有効に利用されないとい
う問題があつた。つまり、最近のベクトル処理装
置では、主記憶からベクトル・レジスタへデータ
を転送する能力を増強するために、複数のロー
ド・ストア・パイプラインが設置され、データ中
の複数の要素を並列に一度に転送する機構があ
る。ところが上記の圧縮・伸張型のデータ転送の
場合には、主記憶にアクセスすべきアドレスがデ
ータの有効性を示すマスク・ビツトの制御の下で
遂次的にしか生成されない。このため複数設置さ
れたロード・ストア・パイプラインの内、1本で
しかデータ転送を行うことができなかつた。
方式の適合性については配慮されておらず、多重
化されたパイプラインが有効に利用されないとい
う問題があつた。つまり、最近のベクトル処理装
置では、主記憶からベクトル・レジスタへデータ
を転送する能力を増強するために、複数のロー
ド・ストア・パイプラインが設置され、データ中
の複数の要素を並列に一度に転送する機構があ
る。ところが上記の圧縮・伸張型のデータ転送の
場合には、主記憶にアクセスすべきアドレスがデ
ータの有効性を示すマスク・ビツトの制御の下で
遂次的にしか生成されない。このため複数設置さ
れたロード・ストア・パイプラインの内、1本で
しかデータ転送を行うことができなかつた。
本発明の目的は、複数設置されたロード・スト
ア・パイプラインにおいて、複数の要素の主記憶
アドレスを並列に計算し、要素並列に圧縮・伸張
型のデータ転送を実行するベクトル処理装置を提
供することにある。
ア・パイプラインにおいて、複数の要素の主記憶
アドレスを並列に計算し、要素並列に圧縮・伸張
型のデータ転送を実行するベクトル処理装置を提
供することにある。
本発明は、各パイプラインで処理すべき要素の
主記憶アドレスを並列に計算できるように各パイ
プラインのアドレス計算回路を構成することによ
り達成される。
主記憶アドレスを並列に計算できるように各パイ
プラインのアドレス計算回路を構成することによ
り達成される。
各パイプラインのアドレス計算回路を、各パイ
プラインで処理すべき要素番号を認識し、マス
ク・ビツトを選択してマスク・ビツトの有効数を
計数するカウンタ、カウンタの内容に基づき要素
の間隔値、インクリメントの倍数を発生する倍数
発生回路、各パイプラインにおいて前ステージに
て処理した要素の主記憶アドレスに上記で発生し
た倍数を加えることによつて、各パイプラインに
おいて該ステージにて処理すべき要素の主記憶ア
ドレスを求める多入力の加算器で構成する。
プラインで処理すべき要素番号を認識し、マス
ク・ビツトを選択してマスク・ビツトの有効数を
計数するカウンタ、カウンタの内容に基づき要素
の間隔値、インクリメントの倍数を発生する倍数
発生回路、各パイプラインにおいて前ステージに
て処理した要素の主記憶アドレスに上記で発生し
た倍数を加えることによつて、各パイプラインに
おいて該ステージにて処理すべき要素の主記憶ア
ドレスを求める多入力の加算器で構成する。
要素並列の多重パイプラインにおいて、各パイ
プラインで並列にアドレス計算を実行するために
は次のような計算を実行しなければならない。
プラインで並列にアドレス計算を実行するために
は次のような計算を実行しなければならない。
ここでMは多重パイプラインの本数、ao〜
ao+M-1は該ステージで処理すべき要素の主記憶ア
ドレス、ao-M〜ao-1は前ステージで処理した要素
の主記憶アドレスである。VMR(i)はi番目の要
素に対応するマスク・ビツトであり、VIRは要素
の間隔値、インクリメントである。1本のパイプ
ラインについて見ると、前ステージで処理したn
+j−M番目の要素の主記憶アドレスao+j-Mと該
ステージで処理すべきn+j番目の要素の主記憶
アドレスの差は、インクリメントVIRの倍数 (o+j-1 〓i=n+j-M VMR−(i))*VIRとなつている。この
倍数は、前ステージで処理した要素に対応するM
個のマスク・ビツトの内、該パイプラインで処理
した要素から要素番号が後の要素に対応する有効
マスク・ビツト数o-1 〓i=n+j-M VIR(i)と、該ステージで
処理する要素に対応するM個のマスク・ビツトの
内、該パイプラインで処理する要素より要素番号
が前の要素に対応する有効マスク・ビツト数o+j-1 〓i=n VMR(i)との和から作られる。
ao+M-1は該ステージで処理すべき要素の主記憶ア
ドレス、ao-M〜ao-1は前ステージで処理した要素
の主記憶アドレスである。VMR(i)はi番目の要
素に対応するマスク・ビツトであり、VIRは要素
の間隔値、インクリメントである。1本のパイプ
ラインについて見ると、前ステージで処理したn
+j−M番目の要素の主記憶アドレスao+j-Mと該
ステージで処理すべきn+j番目の要素の主記憶
アドレスの差は、インクリメントVIRの倍数 (o+j-1 〓i=n+j-M VMR−(i))*VIRとなつている。この
倍数は、前ステージで処理した要素に対応するM
個のマスク・ビツトの内、該パイプラインで処理
した要素から要素番号が後の要素に対応する有効
マスク・ビツト数o-1 〓i=n+j-M VIR(i)と、該ステージで
処理する要素に対応するM個のマスク・ビツトの
内、該パイプラインで処理する要素より要素番号
が前の要素に対応する有効マスク・ビツト数o+j-1 〓i=n VMR(i)との和から作られる。
したがつて、各パイプラインのアドレス計算回
路において、カウンタによつて上記有効ビツト数
を計数し、そのカウント値に基づいて倍数発生回
路にてインクリメントVIRの倍数を発生し、加算
器によつて該パイプラインで前ステージに処理し
たn+j−M番目の要素の主記憶アドレスao+j-M
に加算すると、該パイプラインで次のステージで
処理すべきn+j番目の要素の主記憶アドレス
ao+jが求まる。以上により複数のパイプラインに
おいて複数の要素の主記憶アドレスを並列に得る
ことができる。
路において、カウンタによつて上記有効ビツト数
を計数し、そのカウント値に基づいて倍数発生回
路にてインクリメントVIRの倍数を発生し、加算
器によつて該パイプラインで前ステージに処理し
たn+j−M番目の要素の主記憶アドレスao+j-M
に加算すると、該パイプラインで次のステージで
処理すべきn+j番目の要素の主記憶アドレス
ao+jが求まる。以上により複数のパイプラインに
おいて複数の要素の主記憶アドレスを並列に得る
ことができる。
各パイプラインにおいて処理すべき要素に対応
するマスク・ビツトが“1”の場合、上記アドレ
ス計算によつて得られた主記憶アドレスを用いて
メモリ・リクエストを主記憶に対して発行し、ロ
ード・ストア処理を行う。マスク・ビツトが
“0”の場合には、アドレス計算は行うが、メモ
リ・リクエストは抑止する。この場合には、アド
レス計算回路内に保持される主記憶アドレスが更
新されるのみである。
するマスク・ビツトが“1”の場合、上記アドレ
ス計算によつて得られた主記憶アドレスを用いて
メモリ・リクエストを主記憶に対して発行し、ロ
ード・ストア処理を行う。マスク・ビツトが
“0”の場合には、アドレス計算は行うが、メモ
リ・リクエストは抑止する。この場合には、アド
レス計算回路内に保持される主記憶アドレスが更
新されるのみである。
処理すべき残り要素数は、現在の残り要素数か
ら、1ステージで処理される要素数(これはパイ
プライン本数に等しい。)を減算することによつ
て得られる。そして、残り要素数が非正になつた
ことを検出器によつて検出し、ロード・ストア処
理を終了する。
ら、1ステージで処理される要素数(これはパイ
プライン本数に等しい。)を減算することによつ
て得られる。そして、残り要素数が非正になつた
ことを検出器によつて検出し、ロード・ストア処
理を終了する。
以下、本発明の内容を図を用いて説明する。
第1図は本発明が適用されるベクトル処理装置
の全体構成を示すものである。第1図において、
1は主記憶(MS)、2はベクトル・レジスタ
(VR)、3はマスク・レジスタ(VMR)、4はロ
ード・ストア・パイプライン(LS)、5は演算器
(ALU)、6はデータ分配回路、7はデータ選択
回路である。ベクトル・レジスタ2は各々L個の
要素を格納する容量を持ち、全体でVR0〜VR7で
示す8本設けられている。マスク・レジスタ3は
Lビツトで1本設けられている。マスク・レジス
タ3の1ビツトがベクトル・レジスタ2の1要素
の有効性を示す。尚、本実施例では簡略化のため
マスク・レジスタを1本とするが、マスク・レジ
スタは複数あつても差しつかえない。ロード・ス
トア・パイプライン4はLS0〜LS7で示す8本、
演算器5はALU0〜ALU7で示す8個とする。
の全体構成を示すものである。第1図において、
1は主記憶(MS)、2はベクトル・レジスタ
(VR)、3はマスク・レジスタ(VMR)、4はロ
ード・ストア・パイプライン(LS)、5は演算器
(ALU)、6はデータ分配回路、7はデータ選択
回路である。ベクトル・レジスタ2は各々L個の
要素を格納する容量を持ち、全体でVR0〜VR7で
示す8本設けられている。マスク・レジスタ3は
Lビツトで1本設けられている。マスク・レジス
タ3の1ビツトがベクトル・レジスタ2の1要素
の有効性を示す。尚、本実施例では簡略化のため
マスク・レジスタを1本とするが、マスク・レジ
スタは複数あつても差しつかえない。ロード・ス
トア・パイプライン4はLS0〜LS7で示す8本、
演算器5はALU0〜ALU7で示す8個とする。
各ロード・ストア・パイプラインは主記憶上の
行列型式データの各要素の主記憶アドレスを順次
計算し、主記憶に対してメモリ・リクエストを発
行する。主記憶アドレスの計算結果はパイプライ
ン動作の基本単位である1ステージごとに得ら
れ、メモリ・リクエストも1ステージ・ピツチで
発行される。ロード命令、またはストア命令が起
動されると、8本のロード・ストア・パイプライ
ン4、LS0、LS1、…、LS7が同時にロード・ス
トア処理を開始する。第1ステージでは、0番、
1番、…、7番の要素の主記憶アドレスa0、a1、
…、a7が8本のパイプライン4において同時に計
算され、8個のメモリ・リクエストが主記憶1に
対して発行される。第2ステージでは、8番、9
番、…、15番の要素の主記憶アドレスa8、a9、
…、a15が8本のパイプライン4において同時に
計算され、8個のメモリ・リクエストが主記憶1
に対して発行される。以下、1ステージごとに8
個の要素の主記憶アドレスが8本のロード・スト
ア・パイプライン4において同時に計算され、8
個のメモリ・リクエストが主記憶1に対して発行
される。そして該メモリ・リクエストに基づき、
8個の要素のデータ転送が主記憶1とベクトル・
レジスタ2との間で行われる。
行列型式データの各要素の主記憶アドレスを順次
計算し、主記憶に対してメモリ・リクエストを発
行する。主記憶アドレスの計算結果はパイプライ
ン動作の基本単位である1ステージごとに得ら
れ、メモリ・リクエストも1ステージ・ピツチで
発行される。ロード命令、またはストア命令が起
動されると、8本のロード・ストア・パイプライ
ン4、LS0、LS1、…、LS7が同時にロード・ス
トア処理を開始する。第1ステージでは、0番、
1番、…、7番の要素の主記憶アドレスa0、a1、
…、a7が8本のパイプライン4において同時に計
算され、8個のメモリ・リクエストが主記憶1に
対して発行される。第2ステージでは、8番、9
番、…、15番の要素の主記憶アドレスa8、a9、
…、a15が8本のパイプライン4において同時に
計算され、8個のメモリ・リクエストが主記憶1
に対して発行される。以下、1ステージごとに8
個の要素の主記憶アドレスが8本のロード・スト
ア・パイプライン4において同時に計算され、8
個のメモリ・リクエストが主記憶1に対して発行
される。そして該メモリ・リクエストに基づき、
8個の要素のデータ転送が主記憶1とベクトル・
レジスタ2との間で行われる。
ロード命令の場合には、主記憶上のデータのア
ドレスがロード・ストア・パイプライン4からパ
ス8を介して主記憶1に送られ、データが主記憶
1からパス9を介しロード・ストア・パイプライ
ン4に取り出される。さらにデータはパス10を
介しデータ分配回路6に入り、命令で指定された
ベクトル・レジスタ2に対してパス11を介し書
き込まれる。
ドレスがロード・ストア・パイプライン4からパ
ス8を介して主記憶1に送られ、データが主記憶
1からパス9を介しロード・ストア・パイプライ
ン4に取り出される。さらにデータはパス10を
介しデータ分配回路6に入り、命令で指定された
ベクトル・レジスタ2に対してパス11を介し書
き込まれる。
ストア命令の場合には、命令によつて指定され
たベクトル・レジスタ2上のデータがパス12を
介しデータ選択回路7に読み出され、パス15を
介してロード・ストア・パイプライン4に入る。
ロード・ストア・パイプライン4では主記憶アド
レスが与えられ、主記憶アドレスはパス8に乗せ
て、データはパス16に乗せて主記憶1に送り込
まれる。
たベクトル・レジスタ2上のデータがパス12を
介しデータ選択回路7に読み出され、パス15を
介してロード・ストア・パイプライン4に入る。
ロード・ストア・パイプライン4では主記憶アド
レスが与えられ、主記憶アドレスはパス8に乗せ
て、データはパス16に乗せて主記憶1に送り込
まれる。
データがベクトル・レジスタ2にロードされて
からストアされるまでの間にデータに対する演算
が行われる。演算命令によつて指定される3本の
レジスタ間で演算が行われる。3本のベクトル・
レジスタの内の2本はオペランドが格納されてい
て、オペランドはデータ選択回路7を介して読み
出されパス13を経由して演算器5に入力され
る。演算結果は演算器5から出力され、パス14
を経由しデータ分配回路6を介してベクトル・レ
ジスタ2に書き込まれる。演算命令が要素対応に
マスク・ビツトを生成するマスク生成命令である
場合には、演算結果として得られるマスク・ビツ
トはマスク・レジスタ3に書き込まれる。
からストアされるまでの間にデータに対する演算
が行われる。演算命令によつて指定される3本の
レジスタ間で演算が行われる。3本のベクトル・
レジスタの内の2本はオペランドが格納されてい
て、オペランドはデータ選択回路7を介して読み
出されパス13を経由して演算器5に入力され
る。演算結果は演算器5から出力され、パス14
を経由しデータ分配回路6を介してベクトル・レ
ジスタ2に書き込まれる。演算命令が要素対応に
マスク・ビツトを生成するマスク生成命令である
場合には、演算結果として得られるマスク・ビツ
トはマスク・レジスタ3に書き込まれる。
ロード・ストア・パイプライン4におけるロー
ド・ストア処理は各要素ごとにマスク・レジスタ
3のマスク・ビツトの制御を受ける。このためマ
スク・レジスタ3の内容は1ステージごとにパイ
プラインの本数分、即ち8ビツトずつ読み出さ
れ、パス17を介して各パイプラインに分配され
る。
ド・ストア処理は各要素ごとにマスク・レジスタ
3のマスク・ビツトの制御を受ける。このためマ
スク・レジスタ3の内容は1ステージごとにパイ
プラインの本数分、即ち8ビツトずつ読み出さ
れ、パス17を介して各パイプラインに分配され
る。
次に第2図並びに第3図にて主記憶上の圧縮さ
れたデータとベクトル・レジスタ上の伸張された
データとの間の転送処理動作を示す。
れたデータとベクトル・レジスタ上の伸張された
データとの間の転送処理動作を示す。
第2図は主記憶上の圧縮されたl個のデータ
a0、a1、…、al-1をベクトル・レジスタ上に伸張
してロードする処理を示したものである。ロード
処理の前にはベクトル・レジスタ2のL個の要素
に対してLビツトのマスク・ビツトがマスク・レ
ジスタ3に設定されている。マスク・ビツトの
内、要素が有効であることを示す“1”の数は、
主記憶1上の圧縮されたデータの要素数に等し
い。主記憶1上のデータは先頭の要素から順にマ
スク・ビツト“1”に対応するベクトル・レジス
タ2の要素位置にロードされる。マスク・ビツト
“0”に対応する要素位置にはロードしない。
a0、a1、…、al-1をベクトル・レジスタ上に伸張
してロードする処理を示したものである。ロード
処理の前にはベクトル・レジスタ2のL個の要素
に対してLビツトのマスク・ビツトがマスク・レ
ジスタ3に設定されている。マスク・ビツトの
内、要素が有効であることを示す“1”の数は、
主記憶1上の圧縮されたデータの要素数に等し
い。主記憶1上のデータは先頭の要素から順にマ
スク・ビツト“1”に対応するベクトル・レジス
タ2の要素位置にロードされる。マスク・ビツト
“0”に対応する要素位置にはロードしない。
第3図はベクトル・レジスタ2上の伸張された
L個のデータa0、a1、…、aL-1を圧縮して主記憶
1にストアする処理を示したものである。ストア
処理の前にはベクトル・レジスタ2のL個の要素
に対してLビツトのマスク・ビツトがマスク・レ
ジスタ3に設定されている。ロードとは逆に、マ
スクビツト“1”に対応するベクトル・レジスタ
2の要素位置のデータが先頭から順に主記憶1に
ストアされる。
L個のデータa0、a1、…、aL-1を圧縮して主記憶
1にストアする処理を示したものである。ストア
処理の前にはベクトル・レジスタ2のL個の要素
に対してLビツトのマスク・ビツトがマスク・レ
ジスタ3に設定されている。ロードとは逆に、マ
スクビツト“1”に対応するベクトル・レジスタ
2の要素位置のデータが先頭から順に主記憶1に
ストアされる。
第4図にロード・ストア・パイプライン1本の
アドレス計算回路の構成を示し、圧縮・伸張型の
ロード・ストア処理におけるアドレス計算を説明
する。本図は(3)式の多重度M=8の場合の構成を
示したものである。この場合、処理のパイプライ
ン動作の単位である1ステージごとにデータ中の
8個の要素がロード・ストア処理される。各パイ
プラインには信号線33によつてリクエスタ番号
と称する0〜7の値が与えられている。各パイプ
ラインはリクエスタ番号の値によつて処理すべき
要素の系列を認識し動作する。リクエスタ番号が
0のパイプラインでは、要素a0、a8、a16、…が
順次ロード、ストア処理される。
アドレス計算回路の構成を示し、圧縮・伸張型の
ロード・ストア処理におけるアドレス計算を説明
する。本図は(3)式の多重度M=8の場合の構成を
示したものである。この場合、処理のパイプライ
ン動作の単位である1ステージごとにデータ中の
8個の要素がロード・ストア処理される。各パイ
プラインには信号線33によつてリクエスタ番号
と称する0〜7の値が与えられている。各パイプ
ラインはリクエスタ番号の値によつて処理すべき
要素の系列を認識し動作する。リクエスタ番号が
0のパイプラインでは、要素a0、a8、a16、…が
順次ロード、ストア処理される。
命令解読回路20において主記憶1上の圧縮デ
ータとベクトル・レジスタ2上の伸張データとの
間のデータ転送を指示するロード・ストア命令が
解読されると、命令解読回路20から主記憶1上
の圧縮データをアドレス付けする情報がレジスタ
21,22,24に設定される。アドレス・レジ
スタVAR21にはデータの先頭アドレスが、イ
ンクリメント・レジスタVIR22にはデータの間
隔値が、レングス・レジスタVLR24にはデー
タの長さがそれぞれ設定される。データに関する
情報の設定と共に信号線37によりデータのロー
ド・ストア処理を起動する信号が送られ、ラツチ
39が“1”にセツトされる。ラツチ39の出力
はメモリ・リクエストを制御するAND回路40
を開き、ロード・ストア処理のためのメモリ・リ
クエストの送出が始まる。
ータとベクトル・レジスタ2上の伸張データとの
間のデータ転送を指示するロード・ストア命令が
解読されると、命令解読回路20から主記憶1上
の圧縮データをアドレス付けする情報がレジスタ
21,22,24に設定される。アドレス・レジ
スタVAR21にはデータの先頭アドレスが、イ
ンクリメント・レジスタVIR22にはデータの間
隔値が、レングス・レジスタVLR24にはデー
タの長さがそれぞれ設定される。データに関する
情報の設定と共に信号線37によりデータのロー
ド・ストア処理を起動する信号が送られ、ラツチ
39が“1”にセツトされる。ラツチ39の出力
はメモリ・リクエストを制御するAND回路40
を開き、ロード・ストア処理のためのメモリ・リ
クエストの送出が始まる。
マスク・レジスタVMR3からはロード・スト
ア処理に同期してパイプラインの本数分、8ビツ
トのマスク・ビツトが並列に読み出され、パス1
7を介しレジスタ18にセツトされる。マスク・
ビツトの読み出しは、ロード・ストア処理のパイ
プライン動作の単位と同じく1ステージごとに行
われる。レジスタ18に入つたマスク・ビツトは
次のステージにはレジスタ19に転送される。レ
ジスタ18,19の出力はビツト選択回路35,
36に入力され、リクエスタ番号によつて定まる
ある範囲のビツトのみが抽出され、カウンタ23
に転送される。カウンタ23は選択されたマス
ク・ビツト中の“1”のビツトの数を計数し、計
数して得られた数から倍数発生回路26,27を
制御し、インクリメント・レジスタVIR22の0
〜7倍の倍数を発生する。倍数発生回路26では
8、4、0倍の倍数が、倍数発生回路27では
2、1、0、−1倍の倍数がそれぞれ発生される。
両者を組み合せることによつて0〜8倍の倍数が
得られる。
ア処理に同期してパイプラインの本数分、8ビツ
トのマスク・ビツトが並列に読み出され、パス1
7を介しレジスタ18にセツトされる。マスク・
ビツトの読み出しは、ロード・ストア処理のパイ
プライン動作の単位と同じく1ステージごとに行
われる。レジスタ18に入つたマスク・ビツトは
次のステージにはレジスタ19に転送される。レ
ジスタ18,19の出力はビツト選択回路35,
36に入力され、リクエスタ番号によつて定まる
ある範囲のビツトのみが抽出され、カウンタ23
に転送される。カウンタ23は選択されたマス
ク・ビツト中の“1”のビツトの数を計数し、計
数して得られた数から倍数発生回路26,27を
制御し、インクリメント・レジスタVIR22の0
〜7倍の倍数を発生する。倍数発生回路26では
8、4、0倍の倍数が、倍数発生回路27では
2、1、0、−1倍の倍数がそれぞれ発生される。
両者を組み合せることによつて0〜8倍の倍数が
得られる。
ロード・ストア処理の最初のステージではデー
タの先頭アドレスがアドレス・レジスタVAR2
1からセレクタ25を介しキヤリー・セーブ・ア
ダーCSA29に入力される。同時にマスク・カ
ウント数に基づくインクリメント・レジスタVIR
の倍数が倍数発生回路26,27からキヤリー・
セーブ・アダーCSA29に入力される。両者は
キヤリー・セーブ・アダーCSA29とその直後
にあるパラレル・アダーPA30によつて加算さ
れ、第1ステージで処理される要素の主記憶アド
レスとなる。第2ステージ以降では、前のステー
ジで処理した要素の主記憶アドレスがセレクタ2
5を介しキヤリー・セーブ・アダーCSA29に
再び入力され、該ステージで処理する主記憶アド
レスを計算するために使用される。第2ステージ
以降のアドレス計算では、アドレス・レジスタ
VAR21の内容の代りに前ステージで求めた主
記憶アドレスを用いる点のみ異なる。
タの先頭アドレスがアドレス・レジスタVAR2
1からセレクタ25を介しキヤリー・セーブ・ア
ダーCSA29に入力される。同時にマスク・カ
ウント数に基づくインクリメント・レジスタVIR
の倍数が倍数発生回路26,27からキヤリー・
セーブ・アダーCSA29に入力される。両者は
キヤリー・セーブ・アダーCSA29とその直後
にあるパラレル・アダーPA30によつて加算さ
れ、第1ステージで処理される要素の主記憶アド
レスとなる。第2ステージ以降では、前のステー
ジで処理した要素の主記憶アドレスがセレクタ2
5を介しキヤリー・セーブ・アダーCSA29に
再び入力され、該ステージで処理する主記憶アド
レスを計算するために使用される。第2ステージ
以降のアドレス計算では、アドレス・レジスタ
VAR21の内容の代りに前ステージで求めた主
記憶アドレスを用いる点のみ異なる。
第5図においてリクエスタ番号3のロード・ス
トア・パイプラインにおけるアドレス計算の一例
を示す。要素ao-8に引き続く8個の要素に対応す
るマスク・ビツトが“10110100”、その次のステ
ージで処理される要素aoに引き続く8個の要素に
対応するマスク・ビツトが“01011001”であると
する。リクエスタ番号3のパイプラインでは2ス
テージの間に要素ao+3-8と要素ao+3とについてロ
ード・ストア処理を行う。要素ao+3の主記憶アド
レスは、要素ao+3-8の主記憶アドレスとマスク・
ビツトVMR(i)(i=n+3−8〜n+2)とか
ら次のようにして求められる。まず、ビツト選択
回路35によつて要素ao+3-8から後の5個の要素
ao+3-8、ao+4-8、ao+5-8、ao+6-8、ao+7-8に対応す
るマスク・ビツト“10100”が選択され、その内
の有効ビツト数o-1 〓i=n+3-8 VMR(i)=2が得られる。
次にビツト選択回路36によつて要素ao+3より前
の3個の要素ao、ao+1、ao+2、に対応するマス
ク・ビツト“010”が選択され、その内の有効ビ
ツト数o+2 〓i=n VMR(i)=1が得られる。カウンタ23
によつて両者が計数されその和o+2 〓i=n+3-8 VMR(i)=
3をもとに倍数3*VIRが生成される。倍数発生
回路26では4*VIRが、倍数発生回路27では
(−1)*VIRが発生され、両者はチヤリー・セ
ーブ・アダーCSA29とパラレル・アダーPA3
0とにおいてao+3-8と加算されao+3が得られる。
トア・パイプラインにおけるアドレス計算の一例
を示す。要素ao-8に引き続く8個の要素に対応す
るマスク・ビツトが“10110100”、その次のステ
ージで処理される要素aoに引き続く8個の要素に
対応するマスク・ビツトが“01011001”であると
する。リクエスタ番号3のパイプラインでは2ス
テージの間に要素ao+3-8と要素ao+3とについてロ
ード・ストア処理を行う。要素ao+3の主記憶アド
レスは、要素ao+3-8の主記憶アドレスとマスク・
ビツトVMR(i)(i=n+3−8〜n+2)とか
ら次のようにして求められる。まず、ビツト選択
回路35によつて要素ao+3-8から後の5個の要素
ao+3-8、ao+4-8、ao+5-8、ao+6-8、ao+7-8に対応す
るマスク・ビツト“10100”が選択され、その内
の有効ビツト数o-1 〓i=n+3-8 VMR(i)=2が得られる。
次にビツト選択回路36によつて要素ao+3より前
の3個の要素ao、ao+1、ao+2、に対応するマス
ク・ビツト“010”が選択され、その内の有効ビ
ツト数o+2 〓i=n VMR(i)=1が得られる。カウンタ23
によつて両者が計数されその和o+2 〓i=n+3-8 VMR(i)=
3をもとに倍数3*VIRが生成される。倍数発生
回路26では4*VIRが、倍数発生回路27では
(−1)*VIRが発生され、両者はチヤリー・セ
ーブ・アダーCSA29とパラレル・アダーPA3
0とにおいてao+3-8と加算されao+3が得られる。
ao+3=ao+3-8+(o-1
〓i=n+3-8
VMR(i)
+o+2
〓i=n
VMR(i))*VIR
=ao+3-8+(2+1)*VIR
=ao+3-8+3*VIR
=ao+3-8+4*VIR+(−1)*VIR……(4)
第4図においてビツト選択回路35は、マス
ク・カウント値を求めるためのビツト選択と共
に、該パイプラインで処理される要素に対応する
マスク・ビツトの選択も行う。リクエスタ番号か
ら処理要素に対応するマスク・ビツト位置を求
め、該マスク・ビツトを抽出し、AND回路40
に送る。AND回路40では、ラツチ39からの
メモリ・リクエスト発行信号とビツト選択回路3
5からのマスク・ビツトとのANDがとられ、メ
モリ・リクエストとしてパス13に乗せて主記憶
1に送出される。処理すべき要素に対応するマス
ク・ビツトが“1”の場合にはメモリ・リクエス
トが発行され、該当する要素が主記憶1から読み
出されたり、主記憶1に書き込まれたりする。マ
スク・ビツトが0の場合にはメモリ・リクエスト
は抑止される。メモリ・リクエスト発行の際に
は、キヤリー・セーブ・アダーCSA29とパラ
レル・アダーPA30とによつて計算された主記
憶アドレスがパス13に乗せてメモリ・リクエス
トと共に主記憶1に対して送出される。
ク・カウント値を求めるためのビツト選択と共
に、該パイプラインで処理される要素に対応する
マスク・ビツトの選択も行う。リクエスタ番号か
ら処理要素に対応するマスク・ビツト位置を求
め、該マスク・ビツトを抽出し、AND回路40
に送る。AND回路40では、ラツチ39からの
メモリ・リクエスト発行信号とビツト選択回路3
5からのマスク・ビツトとのANDがとられ、メ
モリ・リクエストとしてパス13に乗せて主記憶
1に送出される。処理すべき要素に対応するマス
ク・ビツトが“1”の場合にはメモリ・リクエス
トが発行され、該当する要素が主記憶1から読み
出されたり、主記憶1に書き込まれたりする。マ
スク・ビツトが0の場合にはメモリ・リクエスト
は抑止される。メモリ・リクエスト発行の際に
は、キヤリー・セーブ・アダーCSA29とパラ
レル・アダーPA30とによつて計算された主記
憶アドレスがパス13に乗せてメモリ・リクエス
トと共に主記憶1に対して送出される。
レングス・レジスタVLR24にはロード・ス
トア処理に先き立つてデータの長さが格納されて
いる。ロード・ストア処理が1ステージ進行する
ごとにレングス・レジスタVLRの内容は減算回
路28によつて−8される。ロード・ストア処理
の1ステージにおいて、パイプラインの本数8と
同じ個数の要素が1度に処理されるので−8す
る。すべての要素についてロード・ストア処理が
実行された時点で減算結果は0以下となる。そこ
で符号検出回路31にて処理の終了を検出し、終
了信号38によつてラツチ40を“0”にリセツ
トし、AND回路40を閉じる。AND回路40が
閉じられたことによつて以後のメモリ・リクエス
ト送出が停止される。
トア処理に先き立つてデータの長さが格納されて
いる。ロード・ストア処理が1ステージ進行する
ごとにレングス・レジスタVLRの内容は減算回
路28によつて−8される。ロード・ストア処理
の1ステージにおいて、パイプラインの本数8と
同じ個数の要素が1度に処理されるので−8す
る。すべての要素についてロード・ストア処理が
実行された時点で減算結果は0以下となる。そこ
で符号検出回路31にて処理の終了を検出し、終
了信号38によつてラツチ40を“0”にリセツ
トし、AND回路40を閉じる。AND回路40が
閉じられたことによつて以後のメモリ・リクエス
ト送出が停止される。
本実施例によれば、主記憶上の圧縮されたデー
タとベクトル・レジスタ上の伸張されたデータと
の間のデータ転送を並列に設置され複数のロー
ド・ストア・パイプラインにより実行可能とな
る。このためデータ転送速度をパイプラインの本
数と同じだけ向上させることができる。
タとベクトル・レジスタ上の伸張されたデータと
の間のデータ転送を並列に設置され複数のロー
ド・ストア・パイプラインにより実行可能とな
る。このためデータ転送速度をパイプラインの本
数と同じだけ向上させることができる。
本発明によれば、要素並列の多重ロード・スト
ア・パイプラインを具備するベクトル処理装置に
おいて、主記憶上に圧縮されたデータとベクト
ル・レジスタ上の伸張されたデータとの間のデー
タ転送についても要素並列の形態で実行すること
が可能となる。したがつて通常の単純ロード・ス
トアと同様に並列に設置されたパイプライン本数
分のデータ転送速度を得ることができる。これに
よつて圧縮・伸張型のテータ・アクセスを必要と
する疎行列の行列計算が高速に処理される。
ア・パイプラインを具備するベクトル処理装置に
おいて、主記憶上に圧縮されたデータとベクト
ル・レジスタ上の伸張されたデータとの間のデー
タ転送についても要素並列の形態で実行すること
が可能となる。したがつて通常の単純ロード・ス
トアと同様に並列に設置されたパイプライン本数
分のデータ転送速度を得ることができる。これに
よつて圧縮・伸張型のテータ・アクセスを必要と
する疎行列の行列計算が高速に処理される。
第1図は本発明の一実施例のベクトル処理装置
の全体構成図、第2図は主記憶上に圧縮されたデ
ータをベクトル・レジスタ上に伸張してロードす
る処理を示す図、第3図はベクトル・レジスタ上
の伸張されたデータを主記憶に圧縮してストアす
る処理を示す図、第4図はロード・ストア・パイ
プラインのアドレス計算回路の構成を示す図、第
5図はアドレス計算の一例を示す図である。 2……ベクトル・レジスタ、3……マスク・レ
ジスタ、4……ロード・ストア・パイプライン、
21……アドレス・レジスタ、22……インクリ
メント・レジスタ、35,36……ビツト選択回
路、23……カウンタ、26,27……倍数発生
回路、29……キヤリー・セーブ・アダー、30
……パラレル・アダー。
の全体構成図、第2図は主記憶上に圧縮されたデ
ータをベクトル・レジスタ上に伸張してロードす
る処理を示す図、第3図はベクトル・レジスタ上
の伸張されたデータを主記憶に圧縮してストアす
る処理を示す図、第4図はロード・ストア・パイ
プラインのアドレス計算回路の構成を示す図、第
5図はアドレス計算の一例を示す図である。 2……ベクトル・レジスタ、3……マスク・レ
ジスタ、4……ロード・ストア・パイプライン、
21……アドレス・レジスタ、22……インクリ
メント・レジスタ、35,36……ビツト選択回
路、23……カウンタ、26,27……倍数発生
回路、29……キヤリー・セーブ・アダー、30
……パラレル・アダー。
Claims (1)
- 1 複数の演算器と、複数のベクトル・レジスタ
と、データの有効性を示す複数のベクトル・マス
ク・レジスタと、複数のロード・ストア・パイプ
ラインと、インターリーブされた主記憶装置とに
より構成されるベクトル処理装置において、主記
憶上の圧縮されたデータとベクトル・レジスタ上
の伸長されたデータとの間で圧縮・伸長型データ
転送を行うために、前記パイプラインにより処理
すべきデータを識別するための前記パイプライン
に対して与えられるリクエスタ番号に基づいてマ
スク・レジスタの内容を選択するビツト選択回路
と、選択されたビツト列中の有効ビツト数をカウ
ントするカウンタと、該カウンタのカウント数に
基づきデータの間隔値、すなわち、インクリメン
トの倍数を複数組発生する倍数発生回路と、前記
パイプラインにより前の処理ステージで処理した
データの主記憶アドレスと前記倍数発生回路から
の複数組のインクリメントの倍数とを同時に加算
して次ステージで処理すべきデータの主記憶アド
レスを計算してなる多入力の加算器とを備え、主
記憶アドレスを各パイプライン毎に並列に発生さ
せ、要素並列の多重パイプライン動作による前記
圧縮・伸長型データ転送を行うことを特徴とする
ベクトル処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6838786A JPS62226275A (ja) | 1986-03-28 | 1986-03-28 | ベクトル処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6838786A JPS62226275A (ja) | 1986-03-28 | 1986-03-28 | ベクトル処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS62226275A JPS62226275A (ja) | 1987-10-05 |
| JPH0434191B2 true JPH0434191B2 (ja) | 1992-06-05 |
Family
ID=13372256
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP6838786A Granted JPS62226275A (ja) | 1986-03-28 | 1986-03-28 | ベクトル処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS62226275A (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2457303A (en) * | 2008-02-11 | 2009-08-12 | Linear Algebra Technologies | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
| US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
| CN108021393B (zh) * | 2017-12-15 | 2020-10-27 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0634203B2 (ja) * | 1983-04-11 | 1994-05-02 | 富士通株式会社 | ベクトル処理装置 |
| JPS6072071A (ja) * | 1983-09-28 | 1985-04-24 | Nec Corp | ベクトル処理装置 |
-
1986
- 1986-03-28 JP JP6838786A patent/JPS62226275A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS62226275A (ja) | 1987-10-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4881168A (en) | Vector processor with vector data compression/expansion capability | |
| US5226171A (en) | Parallel vector processing system for individual and broadcast distribution of operands and control information | |
| EP0154051B1 (en) | Integrated and programmable processor for word-wise digital signal processing | |
| US5081573A (en) | Parallel processing system | |
| US4398245A (en) | Data processing system having an instruction pipeline for processing a transfer instruction | |
| JPH0562387B2 (ja) | ||
| JP2001516916A (ja) | デジタル信号処理能力を有するデータ処理装置 | |
| JPS5852265B2 (ja) | デ−タ処理装置 | |
| US4150434A (en) | Matrix arithmetic apparatus | |
| EP0543366B1 (en) | Data processing method and apparatus | |
| JPS5862746A (ja) | 割算装置 | |
| JPH063584B2 (ja) | 情報処理装置 | |
| US5251321A (en) | Binary to binary coded decimal and binary coded decimal to binary conversion in a VLSI central processing unit | |
| EP0173040B1 (en) | Vector processing system | |
| US3297998A (en) | List control | |
| US4621324A (en) | Processor for carrying out vector operation wherein the same vector element is used repeatedly in succession | |
| US5363322A (en) | Data processor with an integer multiplication function on a fractional multiplier | |
| US4611278A (en) | Wraparound buffer for repetitive decimal numeric operations | |
| US4608633A (en) | Method for decreasing execution time of numeric instructions | |
| JPH0434191B2 (ja) | ||
| US3260840A (en) | Variable mode arithmetic circuits with carry select | |
| US5446909A (en) | Binary multiplication implemented by existing hardware with minor modifications to sequentially designate bits of the operand | |
| US6981012B2 (en) | Method and circuit for normalization of floating point significants in a SIMD array MPP | |
| EP0333306B1 (en) | Single chip integrated circuit digital signal processor with a slow or fast mode of operation | |
| JPH0452488B2 (ja) |