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

ベクトル処理装置 Download PDF

Info

Publication number
JPWO2008111500A1
JPWO2008111500A1 JP2009504018A JP2009504018A JPWO2008111500A1 JP WO2008111500 A1 JPWO2008111500 A1 JP WO2008111500A1 JP 2009504018 A JP2009504018 A JP 2009504018A JP 2009504018 A JP2009504018 A JP 2009504018A JP WO2008111500 A1 JPWO2008111500 A1 JP WO2008111500A1
Authority
JP
Japan
Prior art keywords
vector
register
data
address
read
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
JP2009504018A
Other languages
English (en)
Other versions
JP5182284B2 (ja
Inventor
宗王 星
宗王 星
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2009504018A priority Critical patent/JP5182284B2/ja
Publication of JPWO2008111500A1 publication Critical patent/JPWO2008111500A1/ja
Application granted granted Critical
Publication of JP5182284B2 publication Critical patent/JP5182284B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride

Landscapes

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

Abstract

物量の増加を最小に抑えつつ、複数要素単位でバンク化されたメモリに対するベクトルストア命令を高速化することを目的とする。複数のレジスタバンクを有し、該複数のレジスタバンクに保持された複数のデータ要素からなるデータ列を処理の対象とするベクトル処理装置において、前記複数のレジスタバンクはそれぞれ、前記データ要素を読み出す際の読み出し位置を指し示す読み出しポインタ113を有し、レジスタバンクごとに読み出しポインタ113の開始位置を変える。また、レジスタバンクごとの読み出し開始位置として、例えば、レジスタバンクに付与された連続する番号を使用することができる。

Description

本発明は、ベクトル処理装置に関し、特に、複数要素単位でバンク化されたメモリに対するベクトルストア命令の高速化を図ったベクトル処理装置に関する。本願は、2007年3月8日に出願された特願2007−058560号に基づき、優先権の利益を主張するものである。そして、特願2007−058560号の内容は本願の明細書の内容に含まれる。
ベクトル計算機は、1マシンクロックごとに複数のデータを同時に処理するためにベクトルパイプラインを複数有している。
複数のベクトルパイプラインは一つのベクトル演算命令をそれぞれのベクトルパイプラインに分割して処理する。
例えば、非特許文献1では214頁に並列パイプライン及び多重並列パイプラインが図示されている。
このように複数のベクトルパイプラインに分割してベクトル演算命令を実行する場合、入力ベクトル及び出力ベクトルも、各ベクトルパイプラインに分割してデータの授受を行う。
このとき、ベクトルレジスタの要素数(ベクトル長)が短い場合にも、ベクトルパイプラインごとの処理時間の均一を図るため、データ列はベクトルレジスタに要素ごとにインタリーブして保持される。
1マシンクロックごとに複数のデータを同時に処理するという意味では、ベクトル演算命令だけではなく主記憶アクセス命令も同様である。
1マシンクロックごとに複数データを中央処理装置と主記憶装置の間でやり取りする手法は様々であるが、一般的には中央処理装置にポートと呼ばれる主記憶装置とのインタフェースを複数設定する。
この複数ポートは1マシンクロックで同時に動作させることが可能であり、1マシンクロックごとに主記憶装置へ複数のデータを転送したり、あるいは主記憶装置から複数のデータを受け取ったりすることが可能になる。
このとき主記憶装置は、ポートごとにデータ格納部が分割されている。
各データ格納部と各ポートは1対1で対応しており、アクセスすべき主記憶アドレスが指定されれば、アクセスすべきデータ格納部とポートは一意に決定される。
またベクトル計算機の主記憶装置においては、データ要素ごとにインタリーブしてデータを格納していることが一般的である。
これは複数のベクトルパイプラインが連続番地に格納された複数のデータに同時にアクセスするときに、最大限の速度でデータ転送を行うように設計するためである。
このような複数のベクトルパイプラインと複数のポートを設けたベクトルプロセッサの構成例は、例えば、特許文献1に開示されている。
以下、背景技術となるベクトル処理装置の構成例を図1に示す。
中央処理装置101は、命令発行制御部102、ベクトル処理部103、アドレス計算部104、CPU入出力ポート105で構成されている。
CPU入出力ポート105はそれぞれが主記憶装置106の主記憶入出力ポート107と接続されている。
主記憶入出力ポート107は主記憶データ格納部108とそれぞれ接続されている。主記憶データ格納部108はデータ要素単位で多バンク化されている。
ベクトル処理部103は、複数のベクトルパイプライン109とクロスバ110から構成されている。
各ベクトルパイプライン109は、ベクトル演算装置111、レジスタバンク(図1のレジスタバンク112−0〜112−7のいずれか1つ)によって構成されている。レジスタバンク112−0〜112−7全体は1つはベクトルレジスタであり、ベクトルレジスタが複数バンクに分割されて、レジスタバンク112−0〜112−7のそれぞれが構成される。
レジスタバンク112−0〜112−7のそれぞれは、読み出しポインタ113を有している。クロスバ110は、複数のベクトルパイプライン109の入出力と、複数のCPU入出力ポート105を任意の組み合わせで接続することができる。
レジスタバンク112−0〜112−7のそれぞれは、複数のベクトルパイプラインに分割されている。
本例では、ベクトルレジスタは256要素を保持しているが、8つのベクトルパイプラインに分割されている。
このとき要素0はレジスタバンク112−0、要素1はレジスタバンク112−1、・・・、要素7はレジスタバンク112−7、要素8はレジスタバンク112−0のように、要素ごとに分割されている。
命令発行制御部102からベクトル命令を受け取ると、ベクトル処理部103は命令語中で指定されたベクトルレジスタのレジスタバンクを起動する。
レジスタバンク112−0〜112−7の各々は、クロスバ110を介して書くCPU入出力ポート105とデータの受け渡しを行う。
アドレス計算部104は、命令発行制御部102からベクトルロード命令、ベクトルストア命令などの主記憶アクセス命令を受け取ったとき、命令語の指定に従って主記憶アドレスを計算する。
各ベクトルパイプライン109がそれぞれ主記憶装置106へとアクセスするため、アドレス計算部104は1マシンクロックにベクトルパイプラインの数と等しい主記憶アドレスを計算できるように構成されている。
中央処理装置101は複数のCPU入出力ポート105を有しており、主記憶装置106はCPU入出力ポートと同じ数で分割されている。
本例では、32個のCPU入出力ポート105−0〜105−31を有しており、主記憶装置106も32個に分割されている。
CPU入出力ポート105−0〜105−31はそれぞれ主記憶入出力ポート107−0〜107−31と1対1に接続されている。
主記憶入出力ポート107−0〜107−31は、主記憶データ格納部108−0〜108−31とそれぞれ1対1に接続されている。
CPU入出力ポート105と主記憶入出力ポート107は、それぞれが同じマシンクロックで動作可能である。
主記憶データ格納部108は要素単位で多バンク化されている。
例えば、要素0は主記憶データ格納部108−0に、要素1は主記憶データ格納部108-1に格納されているとする。
次にアドレス計算部104の構成と動作の例を図2に基づいて説明する。
命令発行制御部102から信号線601を介してスタートアドレスが渡され、スタートアドレス保持部602に記録される。
スタートアドレス保持部602の値は8つのアドレス計算回路608に渡され、8つのベクトルパイプライン109からの出力に対応するアドレスをそれぞれ計算する。
パイプラインオフセット603には、各パイプライン番号とベクトルストア命令のストライド値の積が保持されている。
スタートアドレスとパイプラインオフセット603の和を加算器604によって計算することで、レジスタバンクの先頭要素のアドレスが得られる。アドレスはアドレス信号線607を経由してクロスバ110に送られる。
計算されたアドレスは加算器606に入力され、次のマシンクロックでオフセット605の値が加えられて再度出力される。オフセット605の値はベクトルストア命令のストライド値とパイプライン本数の積である。
この値を足すことでレジスタバンク112−n(nはここでは0〜7の数を示す)の次の要素のアドレス値を計算することができる。
次に、背景技術のベクトル処理装置におけるベクトルストア命令の動作について具体的に説明する。
命令発行制御部102はベクトルストア命令時に、ベクトル処理部103とアドレス計算部104を起動する。
ベクトル処理部103の各ベクトルパイプライン109は、指定されたレジスタバンクの読み出しポインタ113が指す要素を読み出し、クロスバ110に送り込む。
読み出しポインタ113の読み出し位置を示す値は最初先頭の要素を指しており、読み出し後に次の要素を指すように制御される。
つまり最初のマシンクロックではレジスタバンク112−0から要素0、レジスタバンク112−1から要素1のように出力され、次のマシンクロックではレジスタバンク112−0から要素8、レジスタバンク112-1から要素9のように出力される。
一方、アドレス計算部104は、各ベクトルパイプライン109からの出力データの書き込みアドレスを計算している。
アドレス計算部104は、1マシンクロックにベクトルパイプライン109と同数のアドレスを計算できる。
このためベクトルパイプライン109からの全出力が同時にクロスバ110に入力される。
本例ではレジスタバンク112−0〜112−7上の要素0、1、2、...が、主記憶データ格納部108上のアドレス0、1、2、...に格納されるとする。
クロスバ110に入力されたデータは、CPU入出力ポート105、主記憶入出力ポート107を経由して主記憶データ格納部108に送られ、主記憶上に書き込まれる。このときクロスバ110上の出力ポートで競合が発生した場合、出力すべきデータはクロスバ110で待機することになる。
具体的な動作のタイムチャートを図3に示す。
図3の上半分はレジスタ上の要素の配置を示している。図3の下半分が時間ごとに出力される要素の番号を示している。
最初のマシンクロックでは要素0から要素7が、次のマシンクロックでは要素8から要素15が出力されている。
要素単位ごとに異なる出力ポートにデータが転送されるため、クロスバ110での競合が起こらない。このためすべての要素を出力し終えるまでにかかる時間は32マシンクロックとなる。
このように背景技術では、ベクトルストア命令の実行時に各ベクトルパイプラインが一斉にデータを出力し、異なるCPU入出力ポートを介してデータを転送することで、ベクトルストア命令を高スループットで実行することができた。
特開2005−38185号公報 シドニー・ファーンバック著『スーパーコンピュータ』(長島重夫 訳、1988年パーソナルメディア社刊)
上記の背景技術では主記憶装置106は要素単位で多バンク化されている。
しかし、要素単位の多バンク化は二つの理由で不利であり、性能上コスト上の問題からは複数要素単位で多バンク化する方が望ましい。
一つ目の理由は、主記憶装置を構成するRAMが連続するアドレスからまとめてデータを読み出すのに適していることである。
RAMの動作速度向上に伴って、一度に読み出されるデータビット数は増加してきている。
また、連続するアドレスからまとめてデータを読み出す方が、異なるアドレスを複数回アクセスする場合と比較して消費電力が小さいという利点もある。
二つ目の理由は、主記憶装置にエラー訂正符号を格納する場合の効率の問題である。エラー訂正符号は主記憶へのアクセス単位ごとにつけることになるが、アクセス単位が大きくなってもエラー訂正符号のビット数はあまり変わらない。
このためアクセス単位が大きくなった方が、全体で使用されるエラー訂正符号のビット数を小さくできる。
同じ容量の主記憶装置を構成するときに必要なエラー訂正符号のビット数が小さくなることで、主記憶装置を安価に構成できる可能性がある。
以上二つの理由により、主記憶装置は複数要素単位で多バンク化することが望ましい。
しかし、複数要素単位で多バンク化した場合、各ベクトルパイプラインからの出力がCPU入出力ポートで競合し、ベクトルストアの性能を低下させるという問題が生じる。
図4及び図5を用いてこの問題を説明する。
図4は背景技術で主記憶装置を複数要素単位で多バンク化した構成例である。
図1との相違は主記憶データ格納部におけるデータの格納単位である。
本例では8要素単位にバンク化されている。つまり、要素0〜7は主記憶データ格納部108−0に、要素8〜15は主記憶データ格納部108−1に格納されている。
連続アドレスに対するベクトルストア命令が発行された場合、各ベクトルパイプライン109がレジスタバンクから順次データを出力する。
アドレス計算部104は各ベクトルパイプライン109の出力データごとの主記憶のアドレスを一括して計算する。
具体的な動作のタイムチャートを図5に示す。
図5の上半分はレジスタ上の要素の配置を示している。図5の下半分が時間ごとに出力される要素の番号を示している。
最初のマシンクロックでは要素0から要素7がクロスバに入力されるが、これらのデータはすべて主記憶データ格納部108-0に転送されるべきデータである。
したがって、クロスバ110の左端の出力ポートで競合が発生し、競合調停に敗れた要素はクロスバ110の入力ポート部分で待機することになる。
ここでは競合調停はポート番号の若い方が常に優先されると仮定する。
すると最初のマシンクロックでは要素0が出力されるが、要素1から要素7までの7要素はクロスバ110の入力ポート部分で待機することになる。
次のマシンクロックではレジスタバンク112−0は要素8を出力する。しかし、他のレジスタバンク112−1〜112−7は、先のマシンクロックで出力した要素がクロスバ110の入力ポート部分にまだ存在しているので、次の要素を出力することができない。
クロスバ110の競合調停には、レジスタバンク112−0からの要素8、レジスタバンク112−1からの要素1、レジスタバンク112−2からの要素2、など8要素が参加する。
このうち要素8は主記憶データ格納部108−1に格納されるべきデータであり、他の7要素は主記憶データ格納部118−0に格納されるべきデータである。
要素8は競合することなく出力され、要素1〜7の7要素については競合調停の結果、要素1が出力される。
このように最初に出力されるデータが出力ポートで衝突するため、競合調停に敗れたレジスタバンクからは出力が遅れていく。
結果として最終要素(本説明では要素255)が出力されるまでには39マシンクロックの時間を要する。
このように、主記憶が複数要素単位でバンク化されるようになると、主記憶(と1対1で接続されたCPU入出力ポート105)において出力すべきデータが衝突し、ベクトルストアのスループットを低下させるという問題が生じる。
もちろんこの問題はCPU入出力ポート及びクロスバのデータ幅を拡大することで解決することもできる。しかしデータ幅の拡大はLSIの面積に大きなインパクトを与える。
本発明は、物量の増加を最小に抑えつつ、複数要素単位でバンク化されたメモリに対するベクトルストア命令を高速化することを目的とする。
本発明は、上記課題を解決するための手段として、ベクトルレジスタを複数バンク化した複数のレジスタバンクを有し、該複数のレジスタバンクに保持された複数のデータ要素からなるデータ列を処理の対象とするベクトル処理装置において、
前記複数のレジスタバンクはそれぞれ、前記データ要素を読み出す際の読み出し位置を指し示す読み出しポインタを有し、
前記読み出しポインタの開始位置を前記レジスタバンクごとに変えることを特徴とする。
本発明によれば、複数要素単位でバンク化されたメモリを接続していても、ベクトルストア処理時の出力ポートでの競合を回避することができ、ベクトルストア処理の実行時間が増加することを防ぐことができる。
背景技術となるベクトルプロセッサの構成例を示すブロック図である。 背景技術となるアドレス計算部の構成例を示すブロック図である。 背景技術における主記憶装置のタイムチャートである。 背景技術のベクトルプロセッサの構成例を示すブロック図である。 背景技術における主記憶装置のタイムチャートである。 本発明の第1の実施形態としてのベクトルプロセッサの構成例を示すブロッ ク図である。 本発明の第1の実施形態におけるアドレス計算部104の構成例を示すブロック図である。 本発明の第1の実施形態における主記憶装置のタイムチャートである。 本発明の第2の実施形態におけるアドレス計算部104の構成例を示すブロック図である。
符号の説明
101 中央処理装置
102 命令発行制御部
103 ベクトル処理部
104 アドレス計算部
105 CPU入出力ポート
106 主記憶装置
107 主記憶入出力ポート
108 主記憶データ格納部
109 ベクトルパイプライン
110 クロスバ
111 ベクトル演算部
112−0〜112−7 レジスタバンク
113 読み出しポインタ
114 VL保持部
115 開始位置保持部
201 信号線
202 読み出しポインタ信号線
203 スタートアドレス保持部
204 パイプ番号保持部
205 オフセット計算回路
206 加算器
207 アドレス信号線
208 アドレス計算回路
401 信号線
402 スタートアドレス保持部
403 開始位置オフセット保持部
404 加算器
405 アドレス保持部
406 オフセット保持部
407 加算器
408 終了アドレス保持部
409 比較器
410 開始アドレス保持部
411 レジスタ
412 アドレス信号線
413 アドレス計算回路
601 信号線
602 スタートアドレス保持部
603 パイプラインオフセット
604 加算器
605 オフセット
606 加算器
607 アドレス信号線
608 アドレス計算回路
以下、添付図面を参照して本発明を実施するための最良の実施形態を説明する。
なお、本発明で開示する技術はベクトルプロセッサに限らず、複数の演算パイプラインを有し、各演算パイプラインが保持するデータを多バンク化された主記憶装置に一斉に転送する情報処理装置であれば適用可能である。以下では、典型的な実施形態としてベクトルプロセッサを例に取って説明する。
[第1の実施形態]
[構成の説明]
図6は、本発明の第1の実施形態としてのベクトルプロセッサの構成例を示すブロック図である。
背景技術の図4との相違は、レジスタバンク112−0〜112−7とアドレス計算部104にある。
レジスタバンク112−0〜112−7は、それぞれVL(Vector Length)保持部114と開始位置保持部115を有している。
VL保持部114は、レジスタバンク112−n(nはここでは0〜7の数を示す)上の有効な要素数を示している。
ここではベクトルパイプライン109ごとにこの値を保持している。
ベクトルパイプライン109ごとに値を保持せずに、ベクトル処理部全体でのベクトル長を保持し、パイプラインごとにその都度計算することも可能である。
開始位置保持部115は、各レジスタバンクの番号(パイプライン109の番号でもある)が記録されている。
つまり、レジスタバンク112−0の開始位置保持部115には0が、レジスタバンク112−1の開始位置保持部115には1が、というように記録されている。
図7は、本実施形態におけるアドレス計算部104の構成例を示すブロック図である。
信号線201は命令発行制御部102からスタートアドレスを受け取る信号線であり、スタートアドレス保持部203は受け取った値を保持するレジスタである。
信号線202は各レジスタバンク112−nから読み出しポインタ113の値を受け取る信号線である。
パイプ番号保持部204は、それぞれ対応するベクトルパイプライン109の番号が記録されている。
オフセット計算回路205は、パイプ番号保持部204の値と、読み出しポインタ113、さらに命令発行制御部102から渡されたベクトルストア命令のストライド値(図示せず)から、アドレスオフセット値を計算する回路である。
具体的には、(パイプ本数×読み出しポインタ+パイプ番号)×ストライド値を計算することで、アドレスオフセット値が得られる。
加算器206はスタートアドレスとアドレスオフセット値から各ベクトルパイプライン109から出力された要素のアドレス値を計算し、アドレス信号線207を介してクロスバ110に受け渡す。
アドレス計算部104では、マシンクロックごとにレジスタバンク112−nから読み出しポインタ113の値を受け取り、それを元に新しいアドレス値を計算してクロスバ110に出力する。
アドレス計算回路208はベクトルパイプライン109ごとに用意されているので、1マシンクロックごとに8要素分のアドレスを計算できる。
[動作の説明]
まずベクトルストア処理時のベクトルレジスタの動作について説明する。
命令発行制御部102がベクトルストア命令を発行するときに、同一命令中の要素間でアドレスの重なりがないかを確認し(ベクトルストア命令においてストライド値が各要素のデータ長以上であればデータが重なって記録されることはない。)、重なりがない場合には読み出しポインタ113の初期値として開始位置保持部115の値を設定する。
重なりがあった場合にはレジスタバンク上の要素順の書き込みを保証する必要があるので、通常通り先頭要素から読み出す。
読み出しごとに読み出しポインタ113の内容がインクリメントされるが、VL保持部に記録された最終要素の値を超えた場合には0(レジスタバンクの先頭要素を指す)にリセット(補正)される。
以上のように、読み出しポインタ113を制御することで、ベクトルストア処理時に各レジスタバンク112−nが異なる場所のデータを読み出すようにする。
次に全体の動作について図8を参照して説明する。
図8の上半分はレジスタ上の要素の配置を示している。図8の下半分が時間ごとに出力される要素の番号を示している。
最初のマシンクロックではレジスタバンク112−0からは要素0が、レジスタバンク112−1からは要素9が、レジスタバンク112-2からは要素18が、というように、各レジスタバンク112−nの読み出しポインタ113がずれた状態で読み出しを開始する。
このとき要素0は主記憶データ格納部108−0に格納すべきデータであり、要素9は主記憶データ格納部108−1に格納すべきデータである。
以下同様に、各レジスタバンク112−n(nはここでは0〜7の数を示す)から出力されたデータは、一つの主記憶データ格納部に格納されることなく、格納すべき主記憶データ格納部108−nがすべて異なる。このためクロスバ110は競合することなくすべての入力データを出力ポートに送ることができる。
次のマシンクロックではレジスタバンク112−0からは要素8が、レジスタバンク112−1からは要素17が、というように、各レジスタバンク112−nの読み出しポインタ113がそれぞれ一つずつずれ、読み出しポインタ113が指し示すデータが出力される。
この場合も同一マシンクロックに出力されたデータはすべて別の主記憶データ格納部108−nに格納されるので、クロスバ110において競合が発生しない。
このように同時に出力されるデータが出力ポートで衝突することがないため、クロスバ110では競合調停が行われず、最終要素(本例では要素255)が出力は32マシンクロックまでに終了する。
クロスバ110で衝突が起こらないということは、ベクトルストアのスループットは低下しないということを意味している。
[第2の実施形態]
[構成の説明]
本発明の第2の実施形態としてのベクトル処理装置について説明する。
本実施形態のベクトル処理装置は、第1の実施形態とアドレス計算部の構成のみを異にしている。図9は本実施形態におけるアドレス計算部の構成例である。
信号線401は命令発行制御部102からスタートアドレスを受け取る信号線であり、スタートアドレス保持部402は受け取った値を保持するレジスタである。
開始位置オフセット保持部403は、パイプ番号とベクトルストア命令のストライド値から計算した、最初に読み出されるデータのアドレス値を計算するためのオフセット値を保持している。
ベクトルストアの開始時にはスタートアドレスと開始位置オフセット保持部403の値を加算器404によって足し合わせ、ベクトルパイプごとの、最初に読み出されるデータのアドレス値をアドレス保持部405に記録する。
アドレス保持部405の値は、アドレス信号線412を介してクロスバ110に受け渡される。
加算器407はストライド保持部406の値をアドレス保持部405の値に加える。
オフセット保持部406の値は、ベクトルストア命令のストライド値とベクトルパイプライン109の本数によって決定される。
終了アドレス保持部408は、該当するベクトルレジスタの有効な要素数から、末尾のデータに対応するアドレスを計算して結果を保持している。
開始アドレス保持部410はベクトルレジスタの先頭のデータに対応するアドレスを計算して結果を保持している。
加算器407の結果は終了アドレス保持部408と比較され、一致した次のマシンサイクルで、レジスタ411に開始アドレス保持部410のデータを書き込むように制御する。
そうでない場合には加算器407の出力結果をレジスタ411に書き込む。
レジスタ411は次のマシンサイクルでアドレス保持部405のデータを書き換える。この手順はマシンサイクルごとに実行される。
[動作の説明]
本発明の第2の実施形態の動作は、第1の実施形態の場合と同じである。
以上、本発明の代表的な実施形態について説明したが、本発明は、本願の請求の範囲によって規定される、その精神または主要な特徴から逸脱することなく、他の種々の形で実施することができる。そのため、前述した各実施形態は単なる例示にすぎず、限定的に解釈されるべきではない。本発明の範囲は特許請求の範囲によって示すものであって、明細書や要約書の記載には拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更はすべて本発明の範囲内のものである。
本発明は、ベクトル処理装置に利用可能であり、特に、多バンク化されたベクトルレジスタを有するベクトル処理装置に利用可能である。

Claims (7)

  1. ベクトルレジスタを複数バンク化した複数のレジスタバンクを有し、該複数のレジスタバンクに保持された複数のデータ要素からなるデータ列を処理の対象とするベクトル処理装置において、
    前記複数のレジスタバンクはそれぞれ、前記データ要素を読み出す際の読み出し位置を指し示す読み出しポインタを有し、
    前記読み出しポインタの開始位置を前記レジスタバンクごとに変えることを特徴とするベクトル処理装置。
  2. 前記読み出しポインタの読み出し開始位置として、前記レジスタバンクに付与された連続する番号を使用することを特徴とする請求項1記載のベクトル処理装置。
  3. 有効な要素数を示す値を保持するベクトル長保持部を、前記レジスタバンクごとに有し、
    前記データ要素の読み出しごとに前記読み出しポインタの読み出し位置を示す値を増加し、前記読み出し位置を示す値が、前記ベクトル長保持部に保持された、有効な要素数の範囲を外れた場合に、前記読み出し位置を示す値をレジスタバンクの先頭要素に補正することを特徴とする請求項1又は2記載のベクトル処理装置。
  4. ベクトルストア命令の実行時に、対象となる前記ベクトルレジスタ内のデータ要素間で書き込みアドレスの重なりが存在しない場合に、前記読み出しポインタの開始位置を変えることを特徴とする請求項1から3のいずれか1項記載のベクトル処理装置。
  5. 同一マシンクロックで各レジスタバンクの出力値に対応するアドレスを一括して計算するアドレス計算回路を有し、
    前記アドレス計算回路は、各レジスタバンクの読み出しポインタの読み出し位置を示す値を受け取ってアドレスを計算することを特徴とする請求項1から4のいずれか1項記載のベクトル処理装置。
  6. 同一マシンクロックで各レジスタバンクの出力値に対応するアドレスを一括して計算するアドレス計算回路を有し、
    前記アドレス計算回路は、前記レジスタバンクごとのデータに対応した開始アドレスと終了アドレスを保持し、
    前記レジスタバンクの前記読み出しポインタの読み出し位置を示す値が有効な要素数の範囲を外れ、前記読み出しポインタの読み出し位置を示す値を前記レジスタバンクの先頭要素に補正したときには、開始アドレスの値を用いて出力すべきアドレス値の補正を行うことを特徴とする請求項3又は4記載のベクトル処理装置。
  7. 前記複数のレジスタバンクから出力されるデータ要素群を記憶する主記憶装置を有し、
    同一のマシンサイクルで前記複数のレジスタバンクからそれぞれデータ要素が出力され、
    前記主記憶装置は同一のマシンサイクルで出力された前記データ要素群を一つの単位としてデータ格納部に格納することを特徴とする請求項1から6のいずれか1項に記載のベクトル処理装置。
JP2009504018A 2007-03-08 2008-03-07 ベクトル処理装置 Expired - Fee Related JP5182284B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009504018A JP5182284B2 (ja) 2007-03-08 2008-03-07 ベクトル処理装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007058560 2007-03-08
JP2007058560 2007-03-08
JP2009504018A JP5182284B2 (ja) 2007-03-08 2008-03-07 ベクトル処理装置
PCT/JP2008/054124 WO2008111500A1 (ja) 2007-03-08 2008-03-07 ベクトル処理装置

Publications (2)

Publication Number Publication Date
JPWO2008111500A1 true JPWO2008111500A1 (ja) 2010-06-24
JP5182284B2 JP5182284B2 (ja) 2013-04-17

Family

ID=39759439

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009504018A Expired - Fee Related JP5182284B2 (ja) 2007-03-08 2008-03-07 ベクトル処理装置

Country Status (3)

Country Link
US (1) US8316215B2 (ja)
JP (1) JP5182284B2 (ja)
WO (1) WO2008111500A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8422445B2 (en) 2009-01-07 2013-04-16 Lg Electronics Inc. Method for transmitting pilot allocation information to user equipment in a multi-user multiple input multiple output system
GB2543303B (en) 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59160267A (ja) * 1983-03-02 1984-09-10 Hitachi Ltd ベクトル処理装置
JPS6027984A (ja) * 1983-07-27 1985-02-13 Hitachi Ltd デ−タ処理装置
JP2547219B2 (ja) 1987-09-16 1996-10-23 富士通株式会社 ベクトルデータのアクセス制御装置及び方法
JPH06103491A (ja) 1992-09-21 1994-04-15 Omron Corp 車両の走行監視装置
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
GB2338094B (en) 1998-05-27 2003-05-28 Advanced Risc Mach Ltd Vector register addressing
JP2001167084A (ja) 1999-12-08 2001-06-22 Nec Kofu Ltd ベクトル演算処理装置及びベクトルデータ移送方法
JP3961461B2 (ja) 2003-07-15 2007-08-22 エヌイーシーコンピュータテクノ株式会社 ベクトル処理装置、および、ベクトル処理方法
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
WO2006048828A1 (en) * 2004-11-03 2006-05-11 Koninklijke Philips Electronics N.V. Programmable data processing circuit that supports simd instruction
US7447873B1 (en) * 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads

Also Published As

Publication number Publication date
US20100064115A1 (en) 2010-03-11
WO2008111500A1 (ja) 2008-09-18
JP5182284B2 (ja) 2013-04-17
US8316215B2 (en) 2012-11-20

Similar Documents

Publication Publication Date Title
JP5658556B2 (ja) メモリ制御装置、及びメモリ制御方法
CN108139989B (zh) 配备有存储器中的处理和窄访问端口的计算机设备
US10496540B2 (en) Processor and control method of processor
JP2011060162A (ja) メモリ制御装置
CN107408076B (zh) 数据处理装置
JP5182284B2 (ja) ベクトル処理装置
KR101234183B1 (ko) 캐시 시스템
JP5527340B2 (ja) ベクトル処理装置およびベクトル処理方法
JP5055989B2 (ja) メモリコントローラ
WO2016188392A1 (zh) 一种数据地址产生系统和方法
CN102405466A (zh) 存储控制装置及其控制方法
JP7476676B2 (ja) 演算処理装置
JP3961461B2 (ja) ベクトル処理装置、および、ベクトル処理方法
JP4918535B2 (ja) キャッシュメモリ、キャッシュメモリ装置及び割当て方法
WO2011033862A1 (ja) 情報処理装置およびデータ転送方法
US9921779B2 (en) Memory apparatus, memory system and memory controlling method
JP5091548B2 (ja) メモリシステム
CN102622318A (zh) 一种存储器控制电路及其控制的向量数据寻址方法
JP2012014436A (ja) ダイレクトメモリアクセス制御装置及び方法
US20230153261A1 (en) Processor and arithmetic processing method
JP2006146340A (ja) メモリ制御装置及びメモリ制御方法
JP5968693B2 (ja) 半導体装置
JP5505963B2 (ja) ベクトル処理装置及びベクトル演算処理方法
JP2008305082A5 (ja)
JP2010079361A (ja) プロセッサ、プロセッサのデータ処理方法、情報処理装置

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20101019

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20101019

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110210

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: 20121218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121231

R150 Certificate of patent or registration of utility model

Ref document number: 5182284

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees