JP2009104494A - ベクトル処理装置 - Google Patents
ベクトル処理装置 Download PDFInfo
- Publication number
- JP2009104494A JP2009104494A JP2007277098A JP2007277098A JP2009104494A JP 2009104494 A JP2009104494 A JP 2009104494A JP 2007277098 A JP2007277098 A JP 2007277098A JP 2007277098 A JP2007277098 A JP 2007277098A JP 2009104494 A JP2009104494 A JP 2009104494A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- data
- instruction
- register
- vector data
- 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.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
【課題】処理実行時間の短縮化を図り、処理装置自体の性能の向上を図ること。
【解決手段】ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えており、ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する。
【選択図】図1
【解決手段】ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えており、ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する。
【選択図】図1
Description
本発明は、ベクトル処理装置にかかり、特に、データ移送処理に特徴を有するベクトル処理装置に関する。
ベクトル演算装置において、メモリからロードしてきたデータや、ある演算結果のデータを、後続命令のオペランドデータとして繰り返し利用する場合には、ロードデータや演算結果データを、後続の演算命令に利用するため移送命令を使用する。ここで、移送命令は、後述する図6のように任意の移送開始要素番号から別のベクトルレジスタへ移送する仕様となっている。
そして、数値解析を行うプログラムでは、
Y[i]=X[i]+X[i+1](i=0,1,2,3,・・・)
というような隣接要素との演算を行うケースが多く存在する。つまり、あるベクトルレジスタに格納されたデータ(X[i])と、このデータの要素が1つずれたデータである隣接要素のデータ(X[i+1])と、の演算を行うことが多々ある。このような場合に、1つずれた要素を後続命令のオペランドデータとするためには、後述する図4(2)、図5(2)に示すように、移送開始要素番号を「1」とする移送命令により、別のベクトルレジスタに格納する。そして、この2つのベクトルレジスタを要素ごとに加算して、別のベクトルレジスタに結果を格納する、という処理を行う。
Y[i]=X[i]+X[i+1](i=0,1,2,3,・・・)
というような隣接要素との演算を行うケースが多く存在する。つまり、あるベクトルレジスタに格納されたデータ(X[i])と、このデータの要素が1つずれたデータである隣接要素のデータ(X[i+1])と、の演算を行うことが多々ある。このような場合に、1つずれた要素を後続命令のオペランドデータとするためには、後述する図4(2)、図5(2)に示すように、移送開始要素番号を「1」とする移送命令により、別のベクトルレジスタに格納する。そして、この2つのベクトルレジスタを要素ごとに加算して、別のベクトルレジスタに結果を格納する、という処理を行う。
しかしながら、上述した移送命令は、移送開始要素番号を任意で指定できる仕様になっていることから、図8(a)で示すタイムチャートや特許文献1に示すように、一旦ロードデータや演算結果データを移送元のベクトルレジスタに全て格納終了した後でないと、移送命令が開始できない。つまり、先行命令によるベクトルレジスタへの全要素書き込みが終了しないと、1要素ずれたデータを別のベクトルレジスタに移送する命令が開始できない。その結果、プログラム全体の実行時間が長くなり、性能低下という問題が生じていた。
このため、本発明の目的は、上述した課題である、処理実行時間の短縮化を図り、処理装置自体の性能の向上を図ること、である。
本発明の一形態であるベクトル演算装置は、
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えており、
ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採っている。
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えており、
ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採っている。
本発明は、以上のように構成されることにより、プログラムの実行時間の短縮化を図ることができ、演算装置の処理性能の向上を図ることができる、という従来にない優れた効果を有する。
本発明の一形態であるベクトル演算装置は、
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えたベクトル演算装置であって、
ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採る。
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えたベクトル演算装置であって、
ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採る。
そして、上記ベクトル処理命令手段は、先行ベクトルデータをベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令手段と、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発するベクトル移送命令手段と、を備えた、という構成を採る。
また、上記ベクトル格納命令手段は、先行ベクトルデータをベクトルレジスタにロードする命令であるベクトルロード命令、あるいは、所定の演算を実行すると共にその演算結果を先行ベクトルデータとしてベクトルレジスタに格納するベクトル演算命令、を発する、という構成を採る。
ことを特徴とする請求項2記載のベクトル演算装置。
ことを特徴とする請求項2記載のベクトル演算装置。
また、上記ベクトル移送命令手段は、先行ベクトルデータの要素データのうち後続ベクトルデータの先頭の要素データをベクトルレジスタに格納したときに、他のベクトルレジスタに対して先行ベクトルデータを後続ベクトルデータとして移送する命令を発する、という構成を採る。
そして、例えば、先行ベクトルデータに対する後続ベクトルデータの要素ずれの数は、1つである。このとき、上記ベクトル移送命令手段は、先行ベクトルデータの2番目の要素データをベクトルレジスタに格納したときに、他のベクトルレジスタに対して先行ベクトルデータを後続ベクトルデータとして移送する指令を発する、という構成を採る。
さらに、本発明の一形態では、上記ベクトル処理命令手段は、ベクトルレジスタに格納された先行ベクトルデータ及び後続ベクトルデータに基づいて予め設定された演算処理を実行する指令を発するベクトル演算命令手段を備えた、という構成を採る。
上記発明によると、相互に要素データがずれている先行ベクトルデータと後続ベクトルデータとを処理する場合に、先行ベクトルデータのうち後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、この要素データを後続ベクトルデータとして移送する指令を発し、移送処理が開始する。従って、ベクトルレジスタに対する全ての先行ベクトルデータの格納終了を待つことなく、後続ベクトルデータの移送を行うことができる。その結果、プログラムの実行時間の短縮化を図ることができ、演算装置の処理性能の向上を図ることができる。
また、本発明の他の形態であるプログラムは、
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して、ベクトルデータの処理命令を発するベクトル処理命令部に、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する手段、
を実現させる、という構成を採る。
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して、ベクトルデータの処理命令を発するベクトル処理命令部に、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する手段、
を実現させる、という構成を採る。
そして、上記ベクトル処理命令部に、先行ベクトルデータをベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令手段と、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発するベクトル移送命令手段と、を実現させる、という構成を採る。
さらに、本発明の他の形態であるベクトル演算方法は、
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して前記ベクトルデータの処理命令を発するベクトル演算方法であって、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採る。
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して前記ベクトルデータの処理命令を発するベクトル演算方法であって、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採る。
そして、上記ベクトル演算方法は、先行ベクトルデータをベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令工程と、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発するベクトル移送命令工程と、を有する、
という構成を採る。
という構成を採る。
上述した構成のプログラム、ベクトル演算方法であっても、上記ベクトル演算装置と同様の作用を有するため、上述した本発明の目的を達成することができる。以下、上述したベクトル演算装置の具体的な構成及び動作を、実施形態にて説明する。
<実施形態1>
本発明の第1の実施形態を、図1乃至図8を参照して説明する。図1は、ベクトル演算装置の構成を示す図であり、図2は、ベクトル命令発行制御部の構成を示す図である。図3は、ベクトル演算の流れを示す図である。図4乃至図5は、ベクトル演算命令を示す図である。図6乃至図7は、ベクトルデータの移送状態を説明する図である。図8は、ベクトル演算時間を示す図である。
本発明の第1の実施形態を、図1乃至図8を参照して説明する。図1は、ベクトル演算装置の構成を示す図であり、図2は、ベクトル命令発行制御部の構成を示す図である。図3は、ベクトル演算の流れを示す図である。図4乃至図5は、ベクトル演算命令を示す図である。図6乃至図7は、ベクトルデータの移送状態を説明する図である。図8は、ベクトル演算時間を示す図である。
[構成]
本実施形態におけるベクトル演算装置は、一連の順序付けられた要素を複数のベクトルパイプで分割して並列に演算処理を行うベクトル演算装置である。そして、特に、あるベクトルレジスタから他のベクトルレジスタに対してベクトルデータを移送する方法に特徴を有する。具体的には、あるベクトルレジスタに格納されているベクトルデータと、そのベクトルデータを構成する要素から1つずれた要素で構成されるベクトルデータとの演算を行う場合に、先行命令によるベクトルレジスタへのデータ格納終了を待つことなく移送命令を発行できるようにし、プログラムの処理時間の短縮を実現するものである。
本実施形態におけるベクトル演算装置は、一連の順序付けられた要素を複数のベクトルパイプで分割して並列に演算処理を行うベクトル演算装置である。そして、特に、あるベクトルレジスタから他のベクトルレジスタに対してベクトルデータを移送する方法に特徴を有する。具体的には、あるベクトルレジスタに格納されているベクトルデータと、そのベクトルデータを構成する要素から1つずれた要素で構成されるベクトルデータとの演算を行う場合に、先行命令によるベクトルレジスタへのデータ格納終了を待つことなく移送命令を発行できるようにし、プログラムの処理時間の短縮を実現するものである。
図1に、本実施形態におけるベクトル演算装置1の構成を示す。ベクトル演算装置1は、ベクトル命令発行制御部2と、ベクトル演算を行うn個のベクトルパイプ3と、各パイプ間のデータ転送を行うためのパイプ間クロスバ4と、を備えている。そして、上記ベクトル命令発行制御部2は、複数のベクトルパイプ3に対してベクトルデータの処理命令を発するベクトル処理命令手段として機能し、具体的には、プログラム中のベクトル命令を抽出する命令識別部5と、各ベクトルパイプへの命令発行管理を行う命令発行部6と、1要素ずれ移送命令か否かを判別し個々のベクトル命令処理に於ける実行開始から終了までの実行時間を計数することで後続命令の発行タイミングを検出する命令発行許可判定部7と、を備えている。
また、上記ベクトルパイプ3は、ベクトルデータをそれぞれ格納するm個のベクトルレジスタ10と、ベクトルデータを演算処理するベクトル演算器11と、演算結果やロードデータ等をベクトルレジスタ10に振り分けるライトクロスバ8と、ベクトルレジスタ10から演算器やデータ移送先に振り分けるリードクロスバ9と、を備えている。なお、図1に示す例では、ベクトル演算装置1の構成に含まれるベクトルパイプ3の個数を8個とし、便宜上8つのベクトルパイプ3に、「0」から「7」までの番号を付けて、VP0、VP1、・・・、VP7としている。但し、ベクトルパイプの数は、上記個数に限定されない。
そして、特に、本実施形態では、Y[i]=X[i]+X[i+1](i=1,2,3,・・・)という、所定のベクトルデータX[i]と隣接する要素データからなるベクトルデータX[i+1]との演算を行うプログラムを実行する場合を示している。ここで、例えば、ベクトルレジスタ10への割り当てを、「Y[i]をV2」、「X[i]をV0」、「X[i+1]をV1」、とすると、上記演算は、図3(a)及び図3(b)に示すように、「V2←V0+V1」と表すことができる。そして、上記演算を行うためのプログラム中のベクトル命令としては、ベクトルロード命令、ベクトル移送命令、ベクトル演算命令、があるが、各命令は、図3(c)の(1),(2),(3)のようにそれぞれ表すことができる。以下、各ベクトル命令について、図3乃至図7を参照して説明する。
まず、ベクトルロード命令は、図3(c)(1)の「V0←Memory」に示すように、所定の記憶手段であるメモリから、複数の要素データからなる先行するベクトルデータをベクトルレジスタ10(V0)にロードする命令である。そして、このベクトルロード命令の具体例を図4(1)及び図5(1)に示すが、図5(1)の例は、1命令が処理する最大の要素数が64であるベクトルデータをロードする命令を表している。
また、ベクトル移送命令は、図3(c)(2)に示すように、「V0」のベクトルレジスタにロードされたベクトルデータの要素データを、「V1」のベクトルレジスタに移送する命令である。さらに、図6を参照して換言すると、図6(b)に示すように、ベクトル長分の各要素データ(Sy,Sy+1,・・・,Sy+VL−1)を、移送元となるベクトルレジスタVzから移送先となるベクトルレジスタVx(0,1,・・・,VL−1)に移送する命令である。このとき、図6(a)に示すように、複数の要素からなるベクトルデータの移送を開始する要素番号「Sy」は任意であり、この移送開始要素番号に対応するベクトルデータの要素が移送先ベクトルレジスタの先頭アドレス「0」に位置するように移送する。そして、このベクトル移送命令の具体例を図4(2)及び図5(2)に示すが、図5(2)の例は、移送開始要素番号Syが「1」であるため、先行ベクトルデータに対して1要素ずれた要素データを、ベクトルレジスタ「V0」から「V1」に移送する命令を表している。なお、図7は、1命令が処理する最大要素数を64とした場合における1要素ずれの移送によって、移送元となるベクトルレジスタVzから移送先となるベクトルレジスタVxに遷移するベクトルデータの各要素の一例を示している。
そして、ベクトル演算命令は、図3(c)(3)に示すように、ベクトルレジスタ「V0」、「V1」に格納された1要素ずれのベクトルデータをそれぞれ加算する処理を行う。なお、このベクトル演算命令の具体例を図4(3)及び図5(3)に示す。
次に、上記各ベクトル命令を発行制御するベクトル命令発行制御部2の構成について詳述する。上記命令識別部5は、プログラム中の上述した各ベクトル命令を抽出し、命令発行部6へ送出する機能を有する。そして、命令発行部6は、上記命令識別部5から受け取ったベクトル命令20の発行許可願い21を命令発行許可判定部7へ送出し、命令発行許可判定部7からの発行許可22を得るまで各ベクトルパイプへの実行指示23は発行しない。また、命令発行許可判定部7は、仕掛かり中の先行命令による処理時間を計数しており、処理が完了するタイミングを見計らって、命令発行部6から受信した後続命令の発行許可願い21に対する発行許可22を命令発行部6に返却する。このとき、命令発行許可判定部7は、命令発行部6から受信した発行許可願い21が1要素ずれ移送命令かどうかを判別して、1要素ずれ移送命令ならば先行命令による処理の終了を待つことなく2要素目の処理まで進んだ時点で、1要素ずれ移送命令の発行許可22を返却する。そして、命令発行許可判定部7からの発行許可22を受信した命令発行部6は、各ベクトルパイプに対して実行指示23を発行する。
また、命令発行許可判定部7は、上記1要素ずれ移送命令の発行許可を送出すると、次のベクトル演算命令の発行許可判定を行う。このとき、上述したように、既にベクトルロード命令とベクトル移送命令の発行許可が出されている場合には、ベクトル演算に必要なデータV0とV1が揃い始めていることから、直ちにベクトル演算命令の発行許可を命令発行部6へと返却する。これにより、命令発行部6は、ベクトルロード命令、1要素ずれのベクトル移送命令、ベクトル演算命令、といったそれぞれの発行許可22を受信した時点で、ベクトルパイプ3に命令実行指示23を発行する。
以上のように、上記命令発行部6及び命令発行許可判定部7は、先行ベクトルデータをベクトルレジスタV0にロードする命令を発するベクトルロード命令手段(ベクトル格納命令手段)、及び、このロードされた先行ベクトルデータの2要素目が格納されたときに、当該要素を1要素ずれの後続ベクトルデータとして他のベクトルレジスタV1に移送する命令を発するベクトル移送命令手段、として機能する。さらに、上記命令発行部6及び命令発行許可判定部7は、ベクトルレジスタに格納された先行ベクトルデータ及び後続ベクトルデータに基づいて予め設定された演算処理を実行する指令を発するベクトル演算命令手段としても機能する。
具体的に、上記命令発行部6及び命令発行許可判定部7は、図2に示す構成で実現することができる。まず、命令発行部6から上記ベクトルロード命令の発行許可願い21が命令発行許可判定部7に送信されると、それよりも前の命令は存在しないので、命令発行許可22を直ちに命令発行部6へと返却する。このとき、図2で示すように、命令発行許可判定部7ではベクトルロード命令の発行許可により処理時間を計数するためのリセットカウンタ30にベクトルロード命令の「VL」(ベクトル長)をセットし、カウントダウンを開始する。これと同時に、「V0」への書き込み中を示すフラグ34と、1要素ずれ移送命令用の「V0」書き込みフラグ33に、それぞれ”1”をセットする。上記フラグ34は、リセットカウンタ30の値が”0”になるまで、即ち全要素の書き込みが終了するまで”1”となる。また、フラグ33は、「V0」に先行ベクトルデータの2要素目まで書き込みが終了するまで”1”となる。
さらに、後続のベクトル移送命令の発行許可願いが1要素ずれ移送命令かどうかの判別は、デコーダ37にて発行許可願いの「Sy」フィールドが1か否かで判断する。そして、1要素ずれ移送の場合は、フラグ33の反転論理とデコーダ37によりSy=1となる条件をANDすることで発行許可が生成される。一方、1要素ずれ移送でない場合は、フラグ34の反転論理とデコーダ37によりSy≠1となる条件をANDすることで発行許可が生成される。つまり、1要素ずれ移送の場合は先行するベクトルロード命令が発行されてから2要素目の処理まで進んだ時点で、1要素ずれ移送命令の発行許可を命令発行部6に対して返却し、1要素ずれ移送命令でない場合は完全にベクトルロード命令の処理が完了してから命令発行許可を返却する。
なお、上記ベクトル命令発行制御部2が有する命令識別部5、命令発行部6、命令発行許可判定部7は、当該ベクトル命令発行制御部2に本発明であるプログラムが組み込まれるよって実現される。
[動作]
次に、上記構成のベクトル演算装置1の動作を説明する。まず、命令識別部5にてベクトル命令の抽出を行う。抽出されたベクトル命令の中には、ベクトルロード命令、ベクトル演算命令、ベクトル移送命令等を含んでいる。そして、ここでは、図5に示したベクトルロード命令、ベクトル移送命令、ベクトル演算命令が、この順に命令識別部5から命令発行部6へと送出される。
次に、上記構成のベクトル演算装置1の動作を説明する。まず、命令識別部5にてベクトル命令の抽出を行う。抽出されたベクトル命令の中には、ベクトルロード命令、ベクトル演算命令、ベクトル移送命令等を含んでいる。そして、ここでは、図5に示したベクトルロード命令、ベクトル移送命令、ベクトル演算命令が、この順に命令識別部5から命令発行部6へと送出される。
続いて、命令発行部6は、命令識別部5から受信した命令を保持しておくと同時に、受信順に発行許可願い21を命令発行許可判定部7へと連続して送出する。但し、命令発行部6は、命令発行許可判定部7からの発行許可22を得るまで各ベクトルパイプへの命令は発行しない。
そして、命令発行許可判定部7は、仕掛かり中の先行命令による処理時間を計数しており、処理が完了するタイミングを見計らって命令発行部6から受信した後続命令の発行許可願いに対する発行許可を命令発行部6に返却する。このとき、命令発行許可判定部7は、ベクトルロード命令の発行許可願い21を受信した場合に、ベクトルロード命令よりも前の命令は存在しないので、命令発行許可22を直ちに命令発行部6へと返却する。すると、命令発行許可判定部7は、ベクトルロード命令の発行許可により処理時間を計数するためのリセットカウンタ30にベクトルロード命令のVLをセットしてカウントダウンを開始すると同時に、V0への書き込み中を示すフラグ34と、1要素ずれ移送命令用のV0書き込みフラグ33とに、それぞれ”1”をセットする。このとき、フラグ34は、リセットカウンタ30の値が”0”になるまで、即ち全要素の書き込みが終了するまで”1”となり、フラグ33は2要素目まで書き込みが終了するまで”1”となる。
さらに、後続のベクトル移送命令の発行許可願いが、1要素ずれ移送命令かどうかの判別は、デコーダ37にて発行許可願いの「Sy」フィールドが1か否かで判断する。1要素ずれ移送の場合は、フラグ33の反転論理とデコーダ37によりSy=1となる条件をANDすることで発行許可が生成され、1要素ずれ移送でない場合はフラグ34の反転論理とデコーダ37によりSy≠1となる条件をANDすることで発行許可が生成される。つまり、1要素ずれ移送の場合は先行するベクトルロード命令が発行されてから2要素目の処理まで進んだ時点で、1要素ずれ移送命令の発行許可を命令発行部6に対して返却し、1要素ずれ移送命令でない場合は完全にベクトルロード命令の処理が完了してから命令発行許可を返却する。
そして、命令発行許可判定部7は、1要素ずれ移送命令の発行許可を送出すると次のベクトル演算命令の発行許可判定を行う。上述したように、既にベクトルロード命令とベクトル移送命令の発行許可が出されている場合には、ベクトル演算に必要なデータV0とV1が揃い始めていることから、直ちにベクトル演算命令の発行許可を命令発行部6へと返却する。
そして、命令発行部6は、ベクトルロード命令、1要素ずれ移送命令、ベクトル演算命令それぞれの発行許可22を受信した時点で、ベクトルパイプ3へと命令実行指示23を発行する。つまり、命令発行部6は、まず、ベクトルロード命令の命令実行指示23をベクトルパイプ3へと発行し(ベクトルロード命令工程(ベクトル格納命令工程))、その後、先行ベクトルデータの2つ目の要素データが格納された段階で、一要素ずれのベクトル移送命令の命令実行指示23をベクトルパイプ23に発行し、ベクトル移送を開始する(ベクトル移送命令工程)。
以上説明したように、本実施形態におけるベクトル演算装置1は、図8(b)のタイムチャートに示すように、先行ベクトルデータの要素データをベクトルレジスタに全て格納することを待つことなく、先行ベクトルデータの2要素目、つまり、後続ベクトルデータの先頭の要素がV0に書き込まれた段階で、当該データをV1に移行する処理を迅速に行うことができる。一方で、特許文献1に開示されたベクトル演算装置では、図8(a)に示すように、ベクトルロード命令による先行ベクトルデータの全ての要素をベクトルレジスタV0に対して書き込みが終了した後でないと、その後のV0からV1へのベクトル移送命令を開始できない。従って、図8(a)の場合と比較して、本実施形態では、V0からV1へのベクトルデータの移送を早く開始することができ、その分、V0とV1とのベクトル演算も早く開始することができる。つまり、図8(b)に示すように、3つのベクトル命令を並行して処理することが可能となる。その結果、プログラム全体の実行時間を短縮することができ、ベクトル演算装置の性能の向上を図ることができる。
ここで、上記では、先行ベクトルデータをベクトルレジスタに格納する動作がベクトルロード命令による場合を例示したが、かかる命令による動作であることに限定されない。つまり、移送前にベクトルレジスタに格納される先行ベクトルデータは、いかなる命令によってベクトルレジスタに格納されてもよい。例えば、上述したベクトル演算命令によってベクトルレジスタに格納された演算結果であるデータを、先行ベクトルデータとして扱うことも可能である。この場合には、ベクトル演算命令による演算結果を先行ベクトルデータとしてベクトルレジスタに格納し、後続ベクトルデータの要素ずれ分だけ格納された後に、移送を開始する。これにより、ある演算結果のデータを後続命令のオペランドデータとして繰り返し利用することができる。そして、この場合にも、演算結果の全ての要素がベクトルレジスタに格納されることを待つことなく、移送を開始することができる。従って、上述同様に、プログラムの実行時間の短縮化及び演算装置の処理性能の向上を図ることができる。
なお、上記では、先行ベクトルデータに対して、後続ベクトルデータが1要素ずれている場合を例示したが、後続ベクトルデータの要素ずれ数は、1要素であることに限定されない。かかる場合には、ベクトルロード命令にて、先行ベクトルデータのうち後続ベクトルデータの先頭の要素データが格納された直後、あるいは、その後に、ベクトル移送命令を発行して、ベクトル移送を実行するよう構成するとよい。具体的に、例えば、後続ベクトルデータが、先行ベクトルデータに対して3要素ずれている、つまり、後続ベクトルデータの先頭の要素が、先行ベクトルデータの4要素目である場合を考える。この場合には、先行ベクトルデータをベクトルレジスタに4要素ロードしたとき、あるいは、さらに後の要素をロードしたときに、そのベクトルレジスタから後続ベクトルデータを格納するベクトルレジスタに、ベクトル移送を開始する。
以上のようにしても、ベクトルレジスタに対する全ての先行ベクトルデータの終了を待つことなく、後続ベクトルデータの移送を行うことができる。その結果、プログラムの実行時間の短縮化を図ることができ、演算装置の処理性能の向上を図ることができる。
本発明は、ベクトル演算装置を備えたコンピュータに利用することができ、産業上の両可能性を有する。
1 ベクトル演算装置
2 ベクトル命令発行制御部
3 ベクトルパイプ
4 パイプ間クロスバ
5 命令識別部
6 命令発行部
7 命令発行許可部
10 ベクトルレジスタ
11 演算器
2 ベクトル命令発行制御部
3 ベクトルパイプ
4 パイプ間クロスバ
5 命令識別部
6 命令発行部
7 命令発行許可部
10 ベクトルレジスタ
11 演算器
Claims (11)
- ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対して前記ベクトルデータの処理命令を発するベクトル処理命令手段と、を備えたベクトル演算装置であって、
前記ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に、前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発する、
ことを特徴とするベクトル演算装置。 - 前記ベクトル処理命令手段は、前記先行ベクトルデータを前記ベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令手段と、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発するベクトル移送命令手段と、を備えた、
ことを特徴とする請求項1記載のベクトル演算装置。 - 前記ベクトル格納命令手段は、前記先行ベクトルデータを前記ベクトルレジスタにロードする命令であるベクトルロード命令、あるいは、所定の演算を実行すると共にその演算結果を前記先行ベクトルデータとして前記ベクトルレジスタに格納するベクトル演算命令、を発する、
ことを特徴とする請求項2記載のベクトル演算装置。 - 前記ベクトル移送命令手段は、前記先行ベクトルデータの要素データのうち前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納したときに、前記他のベクトルレジスタに対して前記先行ベクトルデータを前記後続ベクトルデータとして移送する命令を発する、
ことを特徴とする請求項2又は3記載のベクトル演算装置。 - 前記先行ベクトルデータに対する前記後続ベクトルデータの要素ずれの数は、1つである、
ことを特徴とする請求項1,2,3又は4記載のベクトル演算装置。 - 前記ベクトル移送命令手段は、前記先行ベクトルデータの2番目の要素データを前記ベクトルレジスタに格納したときに、前記他のベクトルレジスタに対して前記先行ベクトルデータを前記後続ベクトルデータとして移送する指令を発する、
ことを特徴とする請求項5記載のベクトル演算装置。 - 前記ベクトル処理命令手段は、前記ベクトルレジスタに格納された前記先行ベクトルデータ及び前記後続ベクトルデータに基づいて予め設定された演算処理を実行する指令を発するベクトル演算命令手段を備えた、
ことを特徴とする請求項1,2,3,4,5又は6記載のベクトル演算装置。 - ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して、前記ベクトルデータの処理命令を発するベクトル処理命令部に、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に、前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発する手段、
を実現させるためのプログラム。 - 前記ベクトル処理命令部に、前記先行ベクトルデータを前記ベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令手段と、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発するベクトル移送命令手段と、を実現させるための請求項8記載のプログラム。
- ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して前記ベクトルデータの処理命令を発するベクトル演算方法であって、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に、前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発する、
ことを特徴とするベクトル演算方法。 - 前記先行ベクトルデータを前記ベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令工程と、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発するベクトル移送命令工程と、を有する、
ことを特徴とする請求項10記載のベクトル演算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007277098A JP2009104494A (ja) | 2007-10-25 | 2007-10-25 | ベクトル処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007277098A JP2009104494A (ja) | 2007-10-25 | 2007-10-25 | ベクトル処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009104494A true JP2009104494A (ja) | 2009-05-14 |
Family
ID=40706085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007277098A Pending JP2009104494A (ja) | 2007-10-25 | 2007-10-25 | ベクトル処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009104494A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7088276B1 (ja) | 2020-12-14 | 2022-06-21 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及びコンパイルプログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61143850A (ja) * | 1984-12-18 | 1986-07-01 | Nec Corp | 処理装置 |
JPH05165875A (ja) * | 1991-12-16 | 1993-07-02 | Hitachi Ltd | ベクトル演算処理装置 |
JPH0877143A (ja) * | 1994-09-02 | 1996-03-22 | Kofu Nippon Denki Kk | ベクトルデータ処理装置 |
JPH1166046A (ja) * | 1997-08-12 | 1999-03-09 | Fujitsu Ltd | ベクトル処理装置 |
-
2007
- 2007-10-25 JP JP2007277098A patent/JP2009104494A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61143850A (ja) * | 1984-12-18 | 1986-07-01 | Nec Corp | 処理装置 |
JPH05165875A (ja) * | 1991-12-16 | 1993-07-02 | Hitachi Ltd | ベクトル演算処理装置 |
JPH0877143A (ja) * | 1994-09-02 | 1996-03-22 | Kofu Nippon Denki Kk | ベクトルデータ処理装置 |
JPH1166046A (ja) * | 1997-08-12 | 1999-03-09 | Fujitsu Ltd | ベクトル処理装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7088276B1 (ja) | 2020-12-14 | 2022-06-21 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及びコンパイルプログラム |
WO2022130883A1 (ja) * | 2020-12-14 | 2022-06-23 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及びコンパイルプログラム記録媒体 |
JP2022096010A (ja) * | 2020-12-14 | 2022-06-29 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及びコンパイルプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3724582B2 (ja) | 命令実行ユニットのためのレジスタ・リネーミング回路 | |
JP2014063385A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP4836488B2 (ja) | データ転送装置及び半導体集積回路装置 | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
JP2009099097A (ja) | データ処理装置 | |
JP2005050208A (ja) | マルチタスクシステムにおけるメモリ管理方式およびタスク制御装置 | |
KR102332523B1 (ko) | 연산 처리 장치 및 방법 | |
US8117425B2 (en) | Multithread processor and method of synchronization operations among threads to be used in same | |
EP3690639B1 (en) | Information processing apparatus, program, and information processing method | |
JP2009104494A (ja) | ベクトル処理装置 | |
US9164767B2 (en) | Instruction control circuit, processor, and instruction control method | |
JP4444305B2 (ja) | 半導体装置 | |
JP6256088B2 (ja) | ベクトルプロセッサ、情報処理装置および追い越し制御方法 | |
JP5429395B2 (ja) | 情報処理装置、情報処理プログラム、および情報処理方法 | |
WO2018138975A1 (ja) | 演算処理装置および情報処理システム | |
JP5871298B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN106537331A (zh) | 指令处理方法及设备 | |
JP6206524B2 (ja) | データ転送装置、データ転送方法、プログラム | |
JP2010205088A (ja) | ベクトル処理装置、及びベクトル処理方法 | |
JP5505963B2 (ja) | ベクトル処理装置及びベクトル演算処理方法 | |
JP5185478B2 (ja) | パイプライン処理方法並びにその方法を利用するパイプライン処理装置 | |
JP2005038185A (ja) | ベクトル処理装置 | |
JP2008310719A (ja) | ブロック転送命令実行装置およびブロック転送方法 | |
KR100490438B1 (ko) | 연산/저장을 병행하여 처리하는 장치 및 방법 | |
JP3473506B2 (ja) | パイプライン処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100324 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100525 |