JPH0155506B2 - - Google Patents

Info

Publication number
JPH0155506B2
JPH0155506B2 JP5049983A JP5049983A JPH0155506B2 JP H0155506 B2 JPH0155506 B2 JP H0155506B2 JP 5049983 A JP5049983 A JP 5049983A JP 5049983 A JP5049983 A JP 5049983A JP H0155506 B2 JPH0155506 B2 JP H0155506B2
Authority
JP
Japan
Prior art keywords
storage device
vector
sparse
address
zero
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
Application number
JP5049983A
Other languages
English (en)
Other versions
JPS59176876A (ja
Inventor
Kazunori Sekido
Akira Maeda
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.)
National Institute of Advanced Industrial Science and Technology AIST
Original Assignee
Agency of Industrial Science and Technology
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 Agency of Industrial Science and Technology filed Critical Agency of Industrial Science and Technology
Priority to JP5049983A priority Critical patent/JPS59176876A/ja
Publication of JPS59176876A publication Critical patent/JPS59176876A/ja
Publication of JPH0155506B2 publication Critical patent/JPH0155506B2/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

【発明の詳細な説明】 〔発明の技術分野〕 本発明は、パイプラインプロセツサによる疎ベ
クトル処理装置に関するものである。
〔発明の技術的背景とその問題点〕
気象計算、回路網解析などの分野では、汎用高
速計算機をもつてしても計算時間が数百時間にも
およぶ計算があり、スーパコンピユータと呼ばれ
ている超高速計算機、例えばCRAY―1や、さ
らに高速な計算機を必要としている。これらの超
高速計算機は、その非常に高い処理性能を実現す
るため、その基本方式としてベクトル演算方式を
取つているものが多い。このベクトル演算方式と
は、記憶装置内のベクトル(別の言葉で表現する
と配列)の要素間の演算、ベクトル演算を高速に
処理する方式である。例えば、大きさ100の2つ
のベクトルA(100),B(100)の各要素の和を求
め、ベクトルA(100)に格納するような演算、
FORTRANで DO 1 I=1100 1A(I)=A(I)+B(I) …(1) と表現できるような演算を高速に実行するのを得
意とする演算方式を言う。これらのベクトル演算
方式では、演算の対象となるデータ、すなわちオ
ペランドを記憶装置から読み出したり、演算結果
を記憶装置に格納したりする場合の番地の計算が
非常に単純で高速化が可能であり、少ないハード
ウエアで高効率な処理が実現できる。
このベクトル演算方式は、演算をパイプライン
方式で処理することによりさらに高速に演算を実
行できる。このパイプライン方式とは、演算過程
のいくつかの基本ステツプに分解し、基本ステツ
プごとに論理回路を置き、各基本ステツプ回路で
別々のデータを処理し、その処理結果を次の基本
ステツプに送ることにより、等価的に多くのデー
タを高速に処理する方式である。パイプライン方
式の例を浮動小数点加算を用いて示す。通常、浮
動少数点加算は、 (1) 2つのオペランドの正規化(正規化とは浮動
小数点の表現をそのシステム内で採用している
形式に変換することを言う。) (2) 仮数部の比較 (3) 桁合せのための仮数部の値の小さいオペラン
ドの真数部のシフト (4) 2つの真数部の加算 (5) 結果の正規化 の5ステツプに分けて演算が行なわれることが多
い。先に述べたような2つのベクトルの加算をパ
イプライン方式で行なうには、第1図に示すよう
に上記5基本ステツプに対応した処理を行なう論
理回路1〜5をもうけ次のように動作させる。以
下の説明では加算の各ステツプはτ時間で実行さ
れるものとする。
(1) 最初のτ時間で、1番目のデータに対する上
記(1)の処理を論理回路1で行なう。
(2) 次のτ時間で、1番目のデータに対する上記
(2)の処理と、2番目のデータに対する上記(1)の
処理を、論理回路2と論理回路1でそれぞれ同
時に行なう。
(3) その次のτ時間で、1番目のデータに対する
上記(3)の処理と、2番目のデータに対する上記
(2)の処理と、3番目のデータに対する上記(1)の
処理を論理回路3と論理回路2と論理回路1で
それぞれ同時に行なう。
以下、このように各論理回路で次々と処理を行
なうことによつて、連続的に多くのデータの加算
が行なわれる。このパイプライン方式において
は、1番目のデータに対する演算結果は5τ時間後
にしか得られないが、以後τ時間ごとに2番目以
降のデータに対する演算結果がつぎつぎと得られ
る。この様子を見てみると第2図のようになる。
縦軸は、先に述べた浮動小数点加算の5つのステ
ツプを示し、横軸は時刻をτ時間間隔で表現して
いる。〇を囲んだ数字はデータの順番を示してお
り、例えば、1番目のデータは時刻t1でステツプ
1を実行し、時刻t2でステツプ2を実行している
ことが示されている。他も全く同様である。
パイプラインでない計算機では、先行するデー
タの計算が終了しないかぎり次のデータの計算を
始めることができないため、個々のデータごとに
演算の開始から終了までの時間を必要とするのに
対し、パイプライン方式では、前のデータの計算
の最初のステツプが終了すれば次のデータの計算
を開始することができ、ベクトル計算を高速に実
行することが可能である。実際、ベクトルの長
さ、いいかえるとデータの数をNとし、1つの演
算がk個のステツプで実行され、各ステツプにτ
時間かかるとすると、前者のパイプライン方式で
ない計算機では、全データを処理するのにN×k
×τ時間かかるが、パイプライン方式の計算機で
は、最初のデータに対する演算結果はk×τ時間
後に出てくるが、残りの(N−1)個のデータに
対する結果はτ時間ごとに次々と得られるため、
全データを処理するにはk×τ(N−1)×τ時間
かかる。この場合1つのデータに対しては平均
(k+N−1)×τ/N時間で計算ができたことに
なり、Nが大きいとその値はほぼτ時間となり、
kにかかわらず、個々のデータの演算はτ時間で
実行されるとみなすことができる。
しかし、このパイプライン方式で高速に計算で
きるためには、データが次々と読み出され、演算
部へ絶え間なく供給されることが必要である。回
路網解析、潮流解析などから得られる方程式は、
零要素を多数含むベクトル(以後疎ベクトルと呼
ぶ)の形式で表現されることが多い。第3図aに
示すような疎ベクトルの計算機内での表現を考え
て見よう。ベクトルVは図に示すように、100個
の要素からできており、そのほとんどの要素が零
で、わずかに第4,7,19,81番目の要素の値の
みが非零である。これらのベクトル全体を計算機
の記憶装置に格納すると、そのほとんどは零要素
を格納するのに用いられ、記憶装置を無駄に利用
しており好ましくない。それゆえ、このような疎
ベクトルは通常その非零要素のみを取り出し、第
3図b,cに示すような形式で記憶装置に格納さ
れるのが普通である。すなわち、Vの非零要素の
みを第3図bに示すように第1の記憶領域に連続
的に格納し、それらの非零要素がもとのベクトル
Vの何番目の要素であるかを示すインデツクス
を、第3図cに示すように第2の記憶領域に格納
している。なお、疎ベクトル間の演算によつて、
演算前には零であつた要素が、非零になることが
ある(これをfill―inの発生と呼ぶ。)。このため、
fill―inが発生する可能性のある場合は、零要素
であつても第1の記憶領域にその値零を格納し、
第2の記憶領域にそのインデツクスを格納してお
くことが通常おこなわれる。この零要素は、疎ベ
クトル間の演算では非零要素と同じように扱うこ
とができ、以下の説明ではこれを区別することな
く非零要素とみなして説明する。このような形式
で表現された2つの疎ベクトル間の演算では、読
み出した非零要素が何番目の要素であるか、逐一
インデツクスを比較する必要があり、パイプライ
ンに送るべきデータを絶え間なく決めることがで
きず、パイプライン方式の利点が活かしきれなか
つた。
例えば、先にプログラム1で示したベクトル
A,Bの加算において、ベクトルA,Bが疎ベク
トルであるとし、それぞれ第4図a,bに示すよ
うな非零要素の列とインデツクスの列によつて表
現されているものとする。説明のため、ベクトル
Aの非零要素のみを格納する配列をAA、そのイ
ンデツクスを格納する配列をIAと名前をつける。
同様にしてベクトルBに対してBB,IBと名前を
つける。この疎ベクトル間演算は、第5図の流れ
に従つて行なわれる。この演算では、Bの要素が
非零であれば、必ず結果がベクトルAに格納され
ねばならないため、疎ベクトルBに存在するイン
デツクスは、疎ベクトルAの中にも存在するとし
ている。すなわち、ベクトルAのインデツクスと
ベクトルAのインデツクスを比較し、インデツク
スが一致すれば、そのインデツクスに対応するベ
クトルAの要素とベクトルBの要素の加算を行な
い、一致したインデツクスに対応したベクトルA
の要素に加算結果を代入し、ベクトルAの次のイ
ンデツクスとベクトルBの次のインデツクスの比
較を行なう。この様子を、疎ベクトルA,Bをア
クセスする2つの補助変数I,Jを用いて、もう
少し詳しくみると第5図に示すようになる。
第5図においてブロツク10では、I,Jを初
期化している。ブロツク11で、AのI番目のイ
ンデツクスとBのJ番目のインデツクスの値が一
致するか比較し、一致すれば、ブロツク12へ進
み、それぞれのインデツクスに対応する要素を加
算し、結果を対応するAの要素に代入する。次に
ブロツク13でI,Jをそれぞれ1加算し、次の
要素を指すようにする。ブロツク11の比較にお
いて、インデツクスの値が一致しなければ、ブロ
ツク15へ分岐し、Aの次のインデツクスを取り
出すためIを1加算する。ブロツク14では、変
数Jが配列BBの大きさ(疎ベクトルBの非零要
素の数)を越えたかどうかを判定し、越えていれ
ば終了と判断し、越えていなければ再びブロツク
11へ戻る。なおブロツク15で、ベクトルAの
インデツクスを取り出すためIを1加算した後、
Iが配列AAの大きさ(疎ベクトルAの非零要素
の数)を越えているかのチエツクを省略し、直ち
にブロツク11へ戻るのは、ベクトルBに存在す
るインデツクスは、必ずベクトルAに存在すると
いう前提があるからである。このように、疎ベク
トルAの要素と疎ベクトルBの加算は、インデツ
クスの比較を待たなければならず、データを高速
に読み出し、次々と演算部に絶え間なく送り出す
ことができないので、パイプライン方式で、効率
よく処理することができず、パイプライン方式の
計算機の大きな欠点であつた。このため、パイプ
ライン方式の計算機の適用範囲が大きく制限され
ていた。
〔発明の目的〕
本発明は、上記事情に鑑みなされたもので、そ
の目的とするところは、疎ベクトルに対する演算
を、パイプライン方式の計算機で効率よく処理す
ることを可能ならしめるため、疎ベクトルの各要
素をパイプラインの演算器に、次々と間断なく送
り出すことができる疎ベクトル処理装置を提供す
ることを目的とする。
〔発明の概要〕
本発明は、疎ベクトルをその非零要素のみを第
1の記憶領域に連続的に格納し、そのインデツク
スを第2の記憶領域に格納することにより記憶せ
しむる装置において、疎ベクトル間の演算時に疎
ベクトルを一時格納する作業記憶装置と、該作業
記憶装置を零にクリアする手段と、前記第1の記
憶領域から疎ベクトルの非零要素と第2の記憶領
域から該要素に対応するインデツクスを読み出す
手段と、前記インデツクスより前記作業記憶装置
に対する番地を生成する番地生成手段と、前記第
1の記憶領域から読み出した要素を、前記作業記
憶装置の前記番地生成手段により生成した番地に
格納する手段と、さらに、前記第1の記憶領域か
ら読み出した疎ベクトルの非零要素と、前記作業
記憶装置の前記番地生成手段により生成した番地
から読み出した要素を、演算器に対するオペラン
ドとして送出する手段を有することにより構成さ
れている。
〔発明の効果〕
本発明によれば、疎ベクトル間の演算におい
て、その各要素を次々と間断なく演算装置に送出
することができ、パイプライン方式の計算機にお
いても、疎ベクトル間の演算の高効率、高速実行
が可能となる。また、このように従来のパイプラ
イン方式の計算機では、効率よく実行できなかつ
た疎ベクトルの処理を、本発明によるパイプライ
ン方式の計算機では高速に実行できるので、パイ
プライン方式の計算機を回路網解析や潮流計算な
ど疎ベクトルを扱う問題にも用いることができ、
その適用範囲を大きく広げることが可能となる。
〔発明の実施例〕
以下、本発明をその実施例に基づき詳細に説明
する。第6図は、本発明を適用して構成された疎
ベクトル処理装置の一実施例を示す構成図であ
る。21は、疎ベクトルの非零要素のみ連続的に
格納している記憶装置、22は、記憶装置21に
格納されている非零要素のインデツクスを連続的
に格納している記憶装置、23は、値をすべて零
にクリアする手段を有し、前記記憶装置21の非
零要素を一時格納する作業記憶装置、25は、前
記記憶装置21から非零要素と前記記憶装置22
からインデツクスを読出す読出制御部、26は、
前記記憶装置22から読み出したインデツクスか
ら前記作業記憶装置23への番地を生成する番地
生成手段、27は、疎ベクトル間の演算を行なう
パイプライン方式演算器、28は、演算結果を格
納すべき記憶装置21に対する番地を保持するカ
ウンタ、29は、非零要素を記憶装置21から読
み出すときに用いる番地と結果を格納するとき用
いる番地を切り変えるマルチプレクサである。
第6図の動作を詳しく説明する前に、この疎ベ
クトル処理装置により、疎ベクトル間の演算がど
のようにして行なわれるかを、第7図に示す例に
従つて説明する。第7図aは疎ベクトルAであ
り、51にその非零要素、52にインデツクスが
示されている。51は第6図の記憶装置21のA
+1番地より連続的に、52は記憶装置22の
IA+1番地より連続的に格納されている。第7
図bは疎ベクトルBであり、同様に、53,54
は記憶装置21,22のB+1番地、IB+1番
地から連続的に格納されている。先にプログラム
1で示したベクトルA,Bの加算は、次のように
実行される。まずベクトルBの非零要素53をそ
のインデツクス54に従い、作業記憶装置23の
ある領域(B′+1番地から始まるものとする。)
に、55に示すように非零要素だけでなく、零要
素も含めた形式で格納する。この処理は、あらか
じめ作業記憶装置23を零にクリアしておき、ベ
クトルBの非零要素53とそのインデツクス54
を順々に読み出し、読み出した非零要素を、その
非零要素に対応したインデツクスにB′を加えた
作業記憶装置23の番地に書き込む手順により簡
単に実行できる。つぎに、ベクトルAに対し、そ
の非零要素とインデツクスを次々と読み出し、加
算を行なうわけであるが、この様子をもう少し詳
しく見てみよう。まず、ベクトルAの最初の非零
要素10とそれに対応するインデツクス1を、A
+1番地、IA+1番地からそれぞれ読み出し、
読み出した非零要素10に対応するBの値を、読
み出したインデツクス1とB′を加えた値(B′+
1)を番地として作業記憶装置23より読み出
す。B′+1番地には、疎ベクトルBのインデツ
クス1に対応する値10が入つており、Aの非零
要素10と加算して結果20を得る。次に、A+
2番地、IA+2番地の値19,5を読み出し、
読み出したインデツクス5にB′を加えた値
(B′+5)を番地として、作業記憶装置23より
Aの非零要素19に対応するBの値(この場合
0)を読み出し、2つの値を加算して結果19を
得る。以下同様にして、疎ベクトルAを次々に読
み出し、対応するBの値を作業記憶装置23より
読み出し、加算し、第7図dに示した結果が得ら
れる。この例で明らかなように、本発明によれ
ば、第5図のフローチヤートで示すように、逐一
インデツクスを比較することなく次々と加算すべ
きデータ(オペランド)を読み出し間断なく演算
器に送ることができ、パイプライン方式の演算器
を有効に活用することができる。
次に、第6図の動作の詳細な説明をする。疎ベ
クトルA,Bは、先に述べたように、非零要素を
記憶装置21のA+1,B+1番地からそれぞれ
連続的に、インデツクスを記憶装置22のIA+
1,IB+1番地からそれぞれ連続的に格納され
ている。このように格納されている非零要素とイ
ンデツクスを読み出すため読出制御部25を用い
る。この25は、疎ベクトルの非零要素とそれに
対応するインデツクスを順番に指定するためのカ
ウンタ34と、非零要素が格納されている記憶装
置21の領域を指定するためのレジスタ32と、
インデツクスが格納されている記憶装置22の領
域を指定するためのレジスタ33と、カウンタ3
4とレジスタ32の値を加算することによつて記
憶装置21への番地を生成する加算器30と、カ
ウンタ34とレジスタ33の値を加算することに
よつて記憶装置22への番地を生成する加算器3
1から成る。
例えば、第7図に示した疎ベクトルAの非零要
素とそのインデツクスを読み出すには、レジスタ
32に非零要素の最初の番地から1引いた値Aを
格納し、レジスタ33にインデツクスの最初の番
地から1引いた値(IA)を格納し、カウンタ3
4に1を格納する。カウンタ34の値が1でレジ
スタ32の値が(A)であるので、加算器30の結果
はA+1となり記憶装置21の番地とすることで
疎ベクトルAの最初の非零要素を読み出すことが
でき、また、カウンタ34の値が1でレジスタ3
3の値がIAであるので、加算器31の結果はIA
+1となり記憶装置22の番地とすることで疎ベ
クトルAの最初のインデツクスを読み出すことが
できる。疎ベクトルAの2番目の非零要素とイン
デツクスを読み出すには、カウンタ34の値を1
増し2とすることで、加算器30の加算結果はA
+2となり、記憶装置21の番地とすることで疎
ベクトルAの2番目の非零要素を読み出せ、加算
器31の加算結果はIA+2となり、記憶装置2
2の番地とすることで疎ベクトルAの2番目のイ
ンデツクスを読み出すことができる。以下同様に
して、カウンタ34の値を1増すことで、疎ベク
トルAの非零要素と対応するインデツクスを次々
と読み出すことができる。なお、35は、疎ベク
トルの長さ(非零要素の数)を格納するレジスタ
で、カウンタ34の値がこの35の値と一致すれ
ば、一連の疎ベクトルの読み出しが終つたことに
なる。36は、この両者の比較を行う比較器で、
両者が一致すれば、一致信号線37に一致検出信
号が送出され、疎ベクトルの読み出しが終了す
る。38は、種々のレジスタ、カウンタにデータ
をセツトするバスである。このバス38によりレ
ジスタ等にデータをセツトする回路は、通常の計
算機内でのレジスタのセツトと全く同様に構成で
き、さらに、本発明と直接関係がないのでここで
は説明しない。また、番地生成部26は、作業記
憶装置23に第7図cの形式で格納された疎ベク
トルをアクセスするためにその疎ベクトルを格納
している最初の番地から1引いた値を格納するレ
ジスタ39と、レジスタ39の値と記憶装置22
から読み出したインデツクスを加算して作業記憶
装置23への番地を生成する加算器40から成
る。
本実施例によれば先に示したプログラム1の疎
ベクトル間の演算は第9図、第10図のフローに
従つて実行される。第9図において処理は70と
71に分けられる。第10図に示すように、まず
処理70に必要なレジスタに初期値をセツトした
後処理70を起動する。処理70が終了すると、
次の処理71に必要なレジスタに初期値をセツト
し、処理71を起動する。
処理70においては、記憶装置22に収容され
ている非零要素のみからなる疎ベクトルBを零要
素も含めたベクトルB′に展開して作業記憶装置
23に書き込む。すなわち、第7図bに示される
ように、記憶装置21のB+1番地から非零要素
が格納され、記憶装置22のIB+1番地からイ
ンデツクスが格納されている疎ベクトルBを、第
7図cに示されるように、零要素を含んだ形で作
業記憶装置23のB′+1番地から格納する。こ
れは次のように実行される。まず作業記憶装置2
3のB′+1番地から格納するためにレジスタ3
9に値B′を格納する。さらに、疎ベクトルBを
読み出すために、レジスタ35にベクトルBの長
さ3をレジスタ32に値Bを、レジスタ33に値
IBを、カウンタ34に値1を格納する。この時、
作業記憶装置23は、すべて零が格納されていな
ければならないが、その方法は後で詳しく説明す
る。カウンタ34の値1とレジスタ32の値Bを
加算器30で加算した結果(B+1)が記憶装置
21の番地となり、記憶装置21から疎ベクトル
Bの最初の非零要素10を読み出す。また、カウ
ンタ34の値1とレジスタ33の値IBを加算器
31で加算した結果(IB+1)が記憶装置22
の番地となり、記憶装置22から疎ベクトルBの
最初の非零要素に対するインデツクス1を読み出
す。読み出したインデツクス1は、番地生成手段
26で、加算器40によつてレジスタ39の値
B′を加算され、作業記憶装置23への番地B′+
1となる。読み出した疎ベクトルBの最初の非零
要素10は、作業記憶装置23の前記番地生成手
段26によつて生成された番地B′+1に格納さ
れる。次に、カウンタ34の値が1つふえ2とな
ると、加算器30の結果はB+2となり、記憶装
置21から疎ベクトルBの2番目の非零要素21
を読み出す。また、加算器31の結果はIB+2
となり、記憶装置22から疎ベクトルBの2番目
の非零要素に対応するインデツクス6を読み出
す。読み出したインデツクス6から、番地生成手
段26によつて作業記憶装置23の番地B′+6
が生成され、読み出した疎ベクトルBの2番目の
非零要素21は、作業記憶装置の番地B′+6に
格納される。以下同様にして、疎ベクトルBを作
業記憶装置23に格納して、第7図cに示す形式
に格納する。上記の疎ベクトルBを作業記憶装置
23に格納する処理は、レジスタ35の値とカウ
ンタ34の値が一致したことを、比較器36で検
出することにより終了する。
処理71における疎ベクトルA,Bの加算は次
に述べる手順で実行される。まず疎ベクトルAを
読み出すために、レジスタ35にベクトルの長さ
6を、レジスタ32に値Aを、レジスタ33に値
IAを、カウンタ34に値1を格納する。また、
演算結果の格納のために、カウンタ28には値A
+1を格納する。カウンタ34の値1とレジスタ
32の値Aを加算器30で加算した結果A+1が
記憶装置21の番地となり、記憶装置21から疎
ベクトルAの最初の非零要素10を読み出す。ま
た、カウンタ34の値1とレジスタ33の値IA
を加算器31で加算した結果IA+1が記憶装置
22の番地となり、記憶装置22から疎ベクトル
Aの最初の非零要素に対するインデツクス1を読
み出す。読み出したインデツクス1は、番地生成
手段26で、加算器40によつてレジスタ39の
値B′と加算され、作業記憶装置23への番地
B′+1となる。読み出した疎ベクトルAの最初
の非零要素10は、作業記憶装置23内の番地
B′+1に格納された要素10とともに、パイプ
ライン方式演算器27に送られ加算が行なわれ
る。次に、カウンタ34の値を1増し2となる
と、加算器30の結果はA+2となり、記憶装置
21から疎ベクトルAの2番目の非零要素19を
読み出す。また、加算器31の結果はIA+2と
なり、記憶装置22から疎ベクトルAの2番目の
非零要素に対応するインデツクス5を読み出す。
読み出したインデツクス5から、番地生成手段2
6によつて作業記憶装置23への番地B′+5が
生成され、読み出した非零要素19は、作業記憶
装置23中の番地B′+5に格納された要素0と
ともに、パイプライン方式演算器27に送られ加
算が行なわれる。以下同様にして、疎ベクトルA
の非零要素を作業記憶装置23から読み出した対
応するB′の要素とともにパイプライン方式演算
器27に送る。これらの処理は、レジスタ35の
値とカウンタ34の値が一致したことを、比較器
36によつて検出することにより終了する。パイ
プライン方式加算器27で求まつた結果は、演算
器27から出力される毎に、カウンタ28を番地
として記憶装置21に格納される。またこの時、
カウンタ28の値は次の出力を格納するため1増
加される。以上の様に実行することによつて、記
憶装置21にはA+1番地から第7図dに示すよ
うに格納される。
以上のようなことから明らかなように、本発明
によれば、疎ベクトル間の演算においても演算器
にオペランドを間断なく送ることができ、パイプ
ライン方式の演算器を有効に動作させることが可
能となり、疎ベクトル間の演算も高速に処理する
ことができる。
さて、作業記憶装置23は初期状態としてすべ
て零が格納されている必要があり、一度疎ベクト
ルの非零要素が格納されると、次の処理のために
その部分を零にもどす必要がある。このために、
作業記憶装置23は、第8図に示すように、2つ
の記憶部61―1,61―2、スイツチ回路6
2、クリア回路63からなる。スイツチ回路62
は、外部端子60を2つの記憶装置部61―2〜
2の一方に接続するとともに、他方の記憶部にク
リア回路63を接続するはたらきをする。すなわ
ち、実線で示した接続と破線で示した接続のいず
れかの接続形態をとる。なお、外部端子60は、
この作業記憶装置としてアクセスする場合の端子
である。この回路は次のように動作する。いま、
記憶装置部61―1が外部端子60に、記憶部6
1―2がクリア回路63に接続されており(すな
わちスイツチ回路62が実線の接続状態であると
する)、この記憶部61―2はクリア回路63に
よつてすでに0が格納されているとする。疎ベク
トル間の演算において、零にクリアされた作業記
憶領域が必要となつた時に、スイツチ回路62に
よつて、記憶部61―2は外部端子60に接続さ
れ、記憶部61―1はクリア回路63に接続され
る(すなわちスイツチ回路62は破線で示す状態
とする)。記憶部61―2が作業記憶領域として
用いられている間に、クリア回路63によつて記
憶部61―1は全番地に0が格納され、次の新た
な疎ベクトル間演算に対し零クリアされた作業領
域が準備される。このようにして、連続した疎ベ
クトル処理に対しても、初期状態としてすでに零
にクリアされた作業記憶領域を次々提供すること
ができる。なお、記憶部61―1あるいは、61
―2をすべて零にクリアする回路は、カウンタに
より次々と全番地をアクセスし零にクリアすれば
よく、当該業者には自明であるので詳しくは説明
しない。
疎ベクトルBを作業記憶装置23に格納する処
理が演算に先き立ち必要であるが、インデツクス
の比較処理よりはるかに高速であり、全体として
従来の本発明によらないパイプライン方式の計算
機に比べて高速処理できる。また、この疎ベクト
ルBを作業記憶装置に格納する処理は演算器を必
要としないので、他の演算器を必要とする命令と
オーバーラツプさせ実行するように構成すること
もでき、さらに処理時間を短縮することも可能で
ある。
【図面の簡単な説明】
第1図はパイプライン方式加算器の構成図、第
2図はパイプライン方式加算器の処理を時間を横
軸にとつて示した図、第3図は疎ベクトルの格納
方法を示す図、第4図は疎ベクトル間演算を行な
う疎ベクトルの例を示す図、第5図は従来の疎ベ
クトル間処理のフロー示す図、第6図は本発明の
一実施例方式を適用した疎ベクトル処理装置の構
成図、第7図は本発明における疎ベクトルの処理
過程を示す図、第8図は作業記憶装置の構成図、
第9図及び第10図は本発明の一実施例の動作を
示すフローチヤートである。 32,33,35,39…レジスタ、30,3
1,40…加算器、28,34…カウンタ、2
1,22…記憶装置、23…作業記憶装置、27
…演算器、61―1〜2…記憶部、62…スイツ
チ回路、63…クリア回路。

Claims (1)

    【特許請求の範囲】
  1. 1 零要素を含む疎ベクトルを、そのすべての非
    零要素を少なくとも含む疎ベクトルの一部を第1
    の記憶領域に連続的に格納し、該記憶領域に格納
    されている要素が、前記疎ベクトルの何番目の要
    素であるかを示すインデツクスを、第2の記憶領
    域に格納することにより記憶せしむる装置におい
    て、疎ベクトル間の演算時に疎ベクトルを一時格
    納する作業記憶装置と、該作業記憶装置を零にク
    リアする手段と、前記第1の記憶領域から疎ベク
    トルの要素と第2の記憶領域から該要素に対応す
    るインデツクスを読み出す手段と、前記インデツ
    クスより前記作業記憶装置に対する番地を生成す
    る番地生成手段と、前記第1の記憶領域から読み
    出した要素を、前記作業記憶装置の前記番地生成
    手段により生成した番地に格納する手段と、さら
    に、前記第1の記憶領域から読み出した疎ベクト
    ルの要素と、前記作業記憶装置の前記番地生成手
    段により生成した番地から読み出した要素を、演
    算器に対するオペランドとして送出する手段とを
    有することを特徴とする疎ベクトル処理装置。
JP5049983A 1983-03-28 1983-03-28 疎ベクトル処理装置 Granted JPS59176876A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5049983A JPS59176876A (ja) 1983-03-28 1983-03-28 疎ベクトル処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5049983A JPS59176876A (ja) 1983-03-28 1983-03-28 疎ベクトル処理装置

Publications (2)

Publication Number Publication Date
JPS59176876A JPS59176876A (ja) 1984-10-06
JPH0155506B2 true JPH0155506B2 (ja) 1989-11-24

Family

ID=12860632

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5049983A Granted JPS59176876A (ja) 1983-03-28 1983-03-28 疎ベクトル処理装置

Country Status (1)

Country Link
JP (1) JPS59176876A (ja)

Also Published As

Publication number Publication date
JPS59176876A (ja) 1984-10-06

Similar Documents

Publication Publication Date Title
EP0044562B1 (en) Vector data processor
US5226171A (en) Parallel vector processing system for individual and broadcast distribution of operands and control information
JPH10187438A (ja) 乗算器の入力に対する遷移を減少させる方法
JPH06195322A (ja) 汎用型ニューロコンピュータとして用いられる情報処理装置
CN110059797B (zh) 一种计算装置及相关产品
CN108108190A (zh) 一种计算方法及相关产品
US4773035A (en) Pipelined data processing system utilizing ideal floating point execution condition detection
CN109634983B (zh) 召回兴趣点信息的确定方法、装置、设备和介质
CN108255463B (zh) 一种数字逻辑运算方法、电路和fpga芯片
JPH0155506B2 (ja)
JP3277399B2 (ja) 画像処理用汎用プロセッサ
JP2745710B2 (ja) ストリングサーチ方法およびそのための装置
US6370636B1 (en) Accessing byte lines from dual memory blocks and aligning for variable length instruction execution
US6363469B1 (en) Address generation apparatus
CN113836481B (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
JP7368512B2 (ja) 計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法
CN113031913B (zh) 乘法器、数据处理方法、装置及芯片
JP2812610B2 (ja) パイプライン制御方式
JP3278441B2 (ja) ベクトル処理装置
JPH0319988B2 (ja)
JPS5925264B2 (ja) ベクトル命令処理方式
JP2643279B2 (ja) 情報処理装置
JPH0434191B2 (ja)
CN113961871A (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN117909637A (zh) 数据处理装置、方法、电子设备和存储介质