JP4789269B2 - Vector processing apparatus and vector processing method - Google Patents
Vector processing apparatus and vector processing method Download PDFInfo
- Publication number
- JP4789269B2 JP4789269B2 JP2008102198A JP2008102198A JP4789269B2 JP 4789269 B2 JP4789269 B2 JP 4789269B2 JP 2008102198 A JP2008102198 A JP 2008102198A JP 2008102198 A JP2008102198 A JP 2008102198A JP 4789269 B2 JP4789269 B2 JP 4789269B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- instruction
- load
- buffer
- unit
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims description 79
- 238000003672 processing method Methods 0.000 title claims description 3
- 239000000872 buffer Substances 0.000 claims description 394
- 238000012546 transfer Methods 0.000 claims description 78
- 230000006870 function Effects 0.000 description 14
- 238000012790 confirmation Methods 0.000 description 9
- 238000012423 maintenance Methods 0.000 description 9
- 238000000034 method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000011068 loading method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本発明はベクトル演算処理に関する。 The present invention relates to vector operation processing.
一般にベクトル処理装置は、主記憶装置からロードしたベクトルデータやベクトル演算中の中間結果などを保持する複数のベクトル演算レジスタと、ベクトル演算レジスタに保持されたベクトルデータに対する演算を行うベクトル演算器とを備える。 In general, a vector processing device includes a plurality of vector operation registers that hold vector data loaded from a main memory, intermediate results during vector operations, and a vector operation unit that performs operations on vector data held in the vector operation registers. Prepare.
メモリへアクセスしてから読み出しデータが帰ってくるまでの時間はメモリアクセスTATと呼ばれる。近年のベクトル型コンピュータでは、動作クロックの高速化にともなって、メモリアクセスTATが命令処理時間に対して相対的に長くなる傾向がある。 The time from the access to the memory until the read data returns is called the memory access TAT. In recent vector computers, the memory access TAT tends to be relatively long with respect to the instruction processing time as the operation clock increases.
特許文献1には、主記憶装置からベクトル演算レジスタへのロードを高速化するために、メインメモリとベクトル演算レジスタとの間にベクトルデータを一時的に格納するロードバッファを備えるベクトル処理装置が記載されている。ロードバッファは、ベクトルデータの全ての要素が揃った条件と、転送先のベクトル演算レジスタのリソースが空いた条件の両方が整ってベクトル演算レジスタにベクトルデータが転送されるまで、一時的にデータをバッファリングする機能を持つ。
特許文献2には、ベクトルデータバッファの物量の増加を防ぎ、利用効率を向上させることのできるベクトル処理装置を提供することを目的とした技術が記載されている。このベクトル処理装置は、命令により指令された配列データの配列系統数を保持する配列系統数保持手段と、その配列系統数保持手段により保持された値により複数の配列系統ごとにベクトルデータバッファを分割し、配列データの入出力を制御する分割制御手段を備えることを特徴とする。
近年のベクトル型コンピュータでは、動作クロックの高速化にともなって、メモリへアクセスしてから読み出しデータが帰ってくるまでの時間(メモリアクセスTAT)が命令処理時間に対して相対的に長くなる傾向がある。 In recent vector computers, as the operation clock speeds up, the time from accessing the memory until the read data returns (memory access TAT) tends to be relatively longer than the instruction processing time. is there.
ロードバッファは、演算器を有効に活用するために演算命令に先行して発行されるベクトルロード命令によってメモリから帰ってくるロードデータを一時的にバッファリングすることによってメモリアクセスTATを隠蔽する役割を担う。相対的に長くなったメモリアクセスTATを隠蔽するためには、より大容量のロードバッファが必要とされる。限られたチップ面積を有効に活用するために、ロードバッファを効率的に利用し、ロードバッファ容量の増加を抑制することが求められる。 The load buffer serves to conceal the memory access TAT by temporarily buffering the load data returned from the memory by the vector load instruction issued prior to the arithmetic instruction in order to effectively use the arithmetic unit. Bear. In order to conceal the relatively long memory access TAT, a larger capacity load buffer is required. In order to effectively use a limited chip area, it is required to efficiently use a load buffer and suppress an increase in load buffer capacity.
ロードバッファを有するベクトル処理装置は、ベクトルロード命令で指定された要素が全てロードバッファに格納されたことを確認して、ロードバッファからベクトル演算レジスタへの転送を開始する。こうした処理では、メモリインタリーブが効かないようなアドレスに対するロードであった場合や、要素数の大きいベクトルロード命令の場合、全ての要素がロードバッファに格納されるまでに時間を要してしまう。その結果、ロードバッファからベクトル演算レジスタへの転送が遅れてしまい、そのロードデータを使う後続命令の実行も遅くなってしまうという問題点があった。 The vector processing apparatus having the load buffer confirms that all elements specified by the vector load instruction are stored in the load buffer, and starts transfer from the load buffer to the vector operation register. In such processing, when loading is performed at an address where memory interleaving does not work, or when a vector load instruction having a large number of elements is used, it takes time until all the elements are stored in the load buffer. As a result, there is a problem that transfer from the load buffer to the vector operation register is delayed and execution of subsequent instructions using the load data is also delayed.
本発明の目的は、ベクトル演算器特有のロードバッファの使用効率を向上させることでシステム全体としての性能の向上を可能とするシステムを提供することにある。 An object of the present invention is to provide a system capable of improving the performance of the entire system by improving the use efficiency of a load buffer unique to a vector computing unit.
本発明によるベクトル処理装置は、受信した命令に基づいてメインメモリからベクトルデータを読み出すメモリアクセス制御部と、メモリアクセス制御部が読み出したベクトルデータを格納するロードバッファと、ベクトル演算レジスタを備えロードバッファからベクトル演算レジスタに転送されたベクトルデータをベクトル処理するベクトル処理部と、ベクトルデータを構成する複数の要素を複数の要素群に分け、複数の要素群のうちで全ての要素がメモリアクセス制御部によりメインメモリから読み出された要素群に対して、ロードバッファからベクトル処理部への転送を開始するように制御するベクトル命令発行部とを備える。 A vector processing apparatus according to the present invention includes a memory access control unit that reads vector data from a main memory based on a received instruction, a load buffer that stores vector data read by the memory access control unit, and a vector operation register. A vector processing unit that vector-processes vector data transferred from a vector to a vector operation register, and a plurality of elements constituting the vector data are divided into a plurality of element groups, and all the elements of the plurality of element groups are memory access control units. And a vector instruction issuing unit that controls the element group read from the main memory to start transfer from the load buffer to the vector processing unit.
本発明によるベクトル処理方法は、受信した命令に基づいてメインメモリからベクトルデータを読み出すステップと、メモリアクセス制御部が読み出したベクトルデータをロードバッファに格納するステップと、ロードバッファからベクトル演算レジスタに転送されたベクトルデータをベクトル処理するステップと、ベクトルデータを構成する複数の要素を複数の要素群に分け、複数の要素群のうちで全ての要素がメモリアクセス制御部によりメインメモリから読み出された要素群に対して、ロードバッファからベクトル処理部への転送を開始するように制御するステップとを備える。 A vector processing method according to the present invention includes a step of reading vector data from a main memory based on a received instruction, a step of storing vector data read by a memory access control unit in a load buffer, and a transfer from the load buffer to a vector operation register The vector processing of the vector data and a plurality of elements constituting the vector data are divided into a plurality of element groups, and all elements of the plurality of element groups are read from the main memory by the memory access control unit And a step of controlling the element group to start transfer from the load buffer to the vector processing unit.
本発明により、ベクトルロード命令のデータを使った後続のベクトル演算命令を早く実行可能となるためベクトル演算器の使用効率が向上し、システムトータルの性能を向上させることが可能となる。 According to the present invention, subsequent vector operation instructions using the data of the vector load instruction can be executed quickly, so that the use efficiency of the vector operation unit is improved and the total system performance can be improved.
以下、本発明の実施の形態について図面を参照して詳細に説明する。図1を参照すると、本発明の一実施の形態としての構成概略図が示されている。本実施の形態におけるベクトル処理装置は、命令デコード部1、ベクトルロードリクエスト処理部2、ロードデータ整列判定部3、ベクトル命令発行部4、ベクトル命令処理部5、メモリアクセス制御部6及びメインメモリ7を備える。
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. Referring to FIG. 1, there is shown a schematic configuration diagram as an embodiment of the present invention. The vector processing apparatus according to the present embodiment includes an
命令デコード部1は入力した命令列をデコードする。命令デコード部1は、デコードした命令がベクトルロード命令を含むベクトル命令の場合は、そのベクトル命令12と付随情報とをベクトル命令発行部4に送出する。命令デコード部1は、デコードした命令がベクトルロード命令の場合は、そのベクトルロード命令11と付随情報とをベクトルロードリクエスト処理部2に送出する。命令デコード部1は、ベクトルロードリクエスト処理部2からビジー信号10を受け取った場合は、ベクトルロード命令の送出を一時的に止める機能を持つ。
The
ベクトルロードリクエスト処理部2は、命令デコード部1よりベクトルロード命令11と付随情報とを受信すると、その命令によってロードされるベクトルデータを格納するためのロードバッファを確保する処理を行う。この処理は、以下のように行われる。
When the vector load
受信した命令によってロードされるベクトルデータを構成する要素の数に基づいて、そのベクトルデータを格納するために必要なサブロードバッファ(例示:256bitのロードバッファを4個に分けることによって用意される64bit単位のサブロードバッファ)の数が算出される。複数存在するロードバッファの中から、算出された数のサブロードバッファの空きがあるロードバッファが、ロードをリクエストする宛先である確保済みロードバッファとして指定される。更に、確保済みロードバッファが有する空きサブロードバッファの中から、ベクトルデータを格納するために必要な数のサブロードバッファが確保済みサブロードバッファとして指定される。確保済みロードバッファを示す確保済みロードバッファ番号と、確保済みサブロードバッファを示す確保済みサブロードバッファ番号とを含むロードバッファ確保番号通知13、23がロードデータ判定部3とベクトル命令発行部4に送出される。
Based on the number of elements constituting the vector data loaded by the received instruction, a subload buffer necessary for storing the vector data (example: 64-bit prepared by dividing a 256-bit load buffer into four parts) The number of units (subload buffers) is calculated. Among the plurality of load buffers, the load buffer having the calculated number of sub-load buffer vacancies is designated as the reserved load buffer that is the destination requesting the load. Further, the number of subload buffers necessary for storing vector data is designated as the reserved subload buffers from the free subload buffers of the reserved load buffers. Load buffer
ベクトルロードリクエスト処理部2は、タグ及びアドレス18を生成してメモリアクセス制御部6に送出する。アドレスは、ロードするベクトルデータを構成する複数の要素が格納されているメインメモリ7上の場所を示す。タグは、ロードするベクトルデータが格納されるロードバッファ上の宛先を示す確保済みロードバッファ番号と確保済みサブロードバッファ番号とを含む。必要な数のロードバッファが確保できなかった場合には、ベクトルロードリクエスト処理部2は、ビジー信号10を命令デコード部1に送信する。
The vector load
ロードデータ整列判定部3は、サブロードバッファ毎にロードされるベクトルデータの要素数を予め記憶し、メインメモリ7からサブロードバッファへベクトル要素が送出されたときにその要素数をデクリメントして残り要素数をモニタすることによって、サブロードバッファ単位ですべてのレジスタ領域にデータが送信されたことを認識する整列判定処理を行う。
The load data
より詳しくは、ロードデータ整列判定部3は、受信した確保番号通知13で指定されている確保済みサブロードバッファ番号に対応する整列判定カウンタに、リプライ要素数分の値をセットする。メモリアクセス制御部6は、メインメモリ7からベクトルデータの要素を読み出してロードバッファの方に送出したときに、その宛先をタグ19としてロードデータ整列判定部3に送出する。ロードデータ整列判定部3は、そのタグ19をデコードし、サブロードバッファ番号毎に集計した値を整列判定カウンタにセットされた値から減算する。減算の結果が0となったら、リプライ予定の要素が全て揃ったと判定し、ベクトル命令発行部4に整列通知15を送出する。
More specifically, the load data
ベクトル命令発行部4は、以下のようにベクトル命令発行処理とロードバッファ解除処理とを行う。ベクトル命令発行部4は、命令デコード部1より、ベクトル演算命令やベクトルロード命令を含むベクトル命令12を受け取る。ベクトル演算命令を受け取った場合は、必要に応じてベクトル演算レジスタなどの各種資源のビジー状況ならびに命令間の整合性を確認した上で、適切なタイミングでベクトル演算開始指示17をベクトル命令処理部5に送出する。ベクトルロード命令を受け取った場合は、そのベクトルロード命令に対応するロードバッファ確保番号通知23を受け取り、対応するロードバッファの整列通知15ならびに転送先ベクトル演算レジスタ領域のビジー状況ならびに命令間の整合性を確認した上で、適切なタイミングでロードバッファ転送開始指示16をベクトル命令処理部5に送出する。その際に転送を開始したロードバッファ番号をロードバッファ解放通知14としてベクトルロードリクエスト処理部2に送出する。
The vector
ベクトル命令処理部5は、ロードバッファ5−1と、ベクトル演算レジスタ5−2とを備え、ベクトル演算レジスタ5−2に格納されたデータに対してベクトル演算処理を行う機能を有する。ベクトル命令処理部5は、以下のようにベクトル命令処理を行う。ロードバッファ転送開始指示16を受け取ると、ロードバッファ5−1の指定された領域からロードデータを読み出して指定されたベクトル演算レジスタ領域に格納する。ベクトル演算開始指示17を受け取ると、指定されたベクトル演算レジスタ領域からデータを読み出して所定のベクトル演算を行った結果を、指定されたベクトル演算レジスタ領域に格納する処理を行う。
The vector
メモリアクセス制御部6は、タグ及びアドレス18を受け取る。タグ及びアドレス18のアドレスには、読み出されるベクトルデータの各要素のメインメモリ7上のアドレスを示す情報であるデータ読み出しアドレス21が示されている。受け取ったタグ及びアドレス18に基づいて、データ読み出しアドレス21がメインメモリ7に送出される。メモリアクセス制御部6は、メインメモリ7から読み出しデータ22を受け取る。受け取った読み出しデータ22と、タグ及びアドレス18のタグに示される読み出しデータ22の宛先とを含むタグ及びデータ20が、ベクトル命令処理部5に送出される。更に、タグ及びアドレス18において読み出しデータ22に対応するタグ19が、ロードデータ整列判定部3に送出される。メモリアクセス制御部6はインタリーブ機能を有しており、メインメモリ7上の分割された領域に対して並列的にアクセスすることが可能な機能を持つ。
The memory
メインメモリ7は、プログラムおよびベクトルデータを格納する。メインメモリ7は、メモリアクセス制御部6からデータ読み出しアドレス21を受け取ると、そのアドレスのメモリ素子からデータを読み出して読み出しデータ22としてメモリアクセス制御部6に送出する。メインメモリ7は、インタリーブ構成をとることができるように、複数に分割されたメモリ領域のそれぞれにアクセスポートを有する。
The
図2は、ロードデータ整列判定部3の詳細を示す。要素数セット部301は、受け取った確保番号通知13に含まれる確保済みロードバッファ番号と確保済みサブロードバッファ番号により、ロードバッファ及びサブロードバッファの使用箇所を特定する。要素数セット部301は、受け取ったベクトルロード命令11によりロードされるベクトルデータを構成する複数の要素を複数の確保済みサブロードバッファに分配して格納するために、各々の確保済みサブロードバッファに格納する要素の数であるサブロードバッファ格納予定要素数351を算出して、要素数減算カウンタ部302に送出する。
FIG. 2 shows details of the load data
本実施の形態においては、ベクトルデータの最大要素数を256とし、ベクトルデータを分割してロードする分割単位であるサブロードバッファの要素数を64とする。ロードするベクトルデータの要素数が1〜64までの場合は1個の分割単位を、要素数が65〜128までの場合は2個の分割単位を、要素数が129〜192までの場合は3個の分割単位を、要素数が193〜256までの場合は4個の分割単位を使用する。 In the present embodiment, the maximum number of elements of vector data is 256, and the number of elements of a subload buffer, which is a division unit for dividing and loading vector data, is 64. When the number of elements of the vector data to be loaded is 1 to 64, one division unit is used. When the number of elements is 65 to 128, two division units are used. When the number of elements is 129 to 192, 3 is used. When the number of elements is 193 to 256, four division units are used.
メインメモリ7から読み出されたデータは、一つのロードバッファ5−1に対して、そのロードバッファ5−1の領域を所定の分割単位で分割したサブ領域であるサブロードバッファを単位として転送される。一つのロードバッファ5−1に対応する複数のサブロードバッファは、サブロードバッファ番号によってそれぞれ特定される。要素数セット部301は、ロードするベクトルデータの要素数を分割して、確保番号通知13により指定されたサブロードバッファに割り当てることにより、サブロードバッファ格納予定要素数351を生成する。この割り当ては、サブロードバッファ番号がより若番の確保済みサブロードバッファから要素が64個ずつ詰められるように行われる。要素数が64で割り切れず端数が生じるケースでは、最も番号の大きい確保済みサブロードバッファ番号に端数が割り当てられる。
The data read from the
要素数減算カウンタ部302は、サブロードバッファと等しい数の整列判定カウンタと、整列判定カウンタの各々に対応する有効フラグとを備える。要素数減算カウンタ部302は、未確保のサブロードバッファの各々の有効フラグに“0”をセットし、確保済みサブロードバッファの各々に対応する有効フラグに“1”をセットする。要素数減算カウンタ部302は、有効フラグが“1”である各々の整列判定カウンタに、サブロードバッファ格納予定要素数351をセットする。
The element number
ロードバッファ番号振り分け部303は、複数のタグ19を受け取る。複数のタグ19の各々には、ロードするベクトルデータを構成する要素のうち、メインメモリ7から読み出された要素が格納されるロードバッファ5−1を特定する確保済みロードバッファ番号と確保済みサブロードバッファ番号とが含まれる。ロードバッファ番号振り分け部303は、複数のタグ19をそれぞれデコードしてサブロードバッファ番号毎に振り分けて要素数カウンタ304に送る機能を有する。
The load buffer
要素数カウンタ304は、複数のロードバッファ5−1が備える複数のサブロードバッファのそれぞれに対応したカウンタを有する。それぞれのカウンタは、ロードバッファ番号振り分け部303がタグ19を受け取る毎に、ロードバッファ番号振り分け部303で対応するサブロードバッファが振り分けの宛先となった回数352をカウントアップして、要素数減算カウンタ部302に送出する。ロードバッファ番号振り分け部303が同時に受け取り可能なタグ19の数をNとすると(即ちベクトルデータを構成するN個の要素に対応するタグを同時に受け取り可能であるとすると)、全てのタグ19が同一サブロードバッファ番号宛であった場合にはカウントした値はNとなる(最大値はN)。
The
整列判定部305は、各々のサブロードバッファに予定数(サブロードバッファ格納予定要素数351と同じ)のロードデータが格納されたことを判定する機能を持つ。この判定は、要素数減算カウンタ部302の各整列判定カウンタの値が“0”であることと、それに対応する有効フラグが“1”であることとを条件として成立する。この条件が成立すると、整列判定部305は、サブロードバッファに予定数の要素が全てロードされたことを示す整列通知15をベクトル命令発行部4に通知する。
The
図3は、ベクトル命令発行部4を示す。ベクトル命令発行部4は、2つのベクトル演算命令発行待ちバッファ410、430と、2つのベクトルロード命令発行待ちバッファ420、440とを備えるものとする。命令バッファ部401は、命令デコード部1からベクトルロード命令を含むベクトル命令12を受け取り、ベクトル演算命令発行待ちバッファ410、430にベクトル命令を、ベクトルロード命令発行待ちバッファ420、440にベクトルロード命令を格納するように制御する。
FIG. 3 shows the vector
ベクトル命令バッファ部401は、ベクトル演算命令発行待ちバッファ410、430またはベクトルロード命令発行待ちバッファ420、440が発行待ちで使用中のため命令を格納できない場合は、ベクトル命令を受け取った順に(First In First Outで)バッファリングする。このとき未発行要素識別フラグ412または未発行要素識別フラグ422に1つでも“1”がある場合は、未処理の要素番号帯があると判断して、ベクトル演算命令発行待ちバッファ410、430またはベクトルロード命令発行待ちバッファ420、440が発行待ちで使用中であると判断される。
When the vector operation instruction
ベクトル演算器ビジー管理部402は、図示していないベクトル演算器を使用中であることを示すビジーフラグを管理する機能を持つ。ベクトル演算器を使用中であることを示すベクトル演算器ビジー情報はベクトル演算命令発行チェック部415に送出されてベクトル演算命令発行チェックに使用される。ベクトル演算命令発行チェックにより、ベクトル演算器使用中に他の要素番号帯や別の命令によるベクトル演算が始まらないよう制御される。
The vector computing unit
ロードバッファ転送パスビジー管理部403は、ベクトル処理部5内にあるロードバッファ5−1からベクトル演算レジスタ5−2へロードデータを転送するために使用されるパスであるロードバッファ転送パスが使用中であることを示すビジーフラグを管理する機能を持つ。ロードバッファ転送パスのビジー状態を示すビジー情報はロードバッファ転送開始を行う際の発行チェックに使用される。この発行チェックにより、ロードバッファ転送中に同命令の別要素番号帯や別のベクトルロード命令によるロードバッファ転送が始まらないよう制御される。
The load buffer transfer path
ベクトル演算命令発行待ちバッファ410、430は、それぞれ、ベクトル演算命令情報バッファ411、未発行要素識別フラグ412、命令間整合性維持フラグ413、命令間整合性維持フラグチェック部414、及びベクトル演算命令発行チェック部415を含む。
The vector operation instruction
ベクトルロード命令発行待ちバッファ420、440は、それぞれ、ベクトルロード命令情報バッファ421、未発行要素識別フラグ422、命令間整合性維持フラグ423、ロードバッファ番号424、ロードバッファ使用箇所指示フラグ425、命令間整合性維持フラグチェック部426、特定ロードバッファ転送条件確認部427、及びベクトルロード命令発行チェック部428を含む。
The vector load instruction
ベクトル演算命令情報バッファ411は、演算種別とベクトル演算命令で読み書きするベクトル演算レジスタ情報とを格納する。 The vector operation instruction information buffer 411 stores the operation type and vector operation register information that is read and written by the vector operation instruction.
未発行要素識別フラグ412は、256の要素の帯からなるベクトルデータを64要素を分割単位として分割することにより形成された4つの要素番号帯に対応して設置される。未だ演算開始指示が発行されていない要素番号帯に対応するフラグ値が“1”となるよう制御される。
The unissued
命令間整合性維持フラグ413は、64要素を分割単位として形成された4つの要素番号帯に対応し、かつ410以外の命令発行待ちバッファ420、430、440に対応して設置される。先行命令とデータ整合性上命令実行順序を守る必要がある(ベクトル演算レジスタ競合関係がある)場合には、対応するフラグ値が有効となるよう制御される。
The inter-instruction
命令間整合性維持フラグチェック部414は、以下のように命令間整合性処理を行う。命令間整合性維持フラグ413のフラグ情報が無効の場合、該当する分割単位に対応する命令発行許可信号をベクトル演算命令発行チェック部415に対して送出する。
The inter-instruction consistency maintaining
命令間整合性維持フラグ413のフラグ情報が有効であった場合は、先行してベクトルロード命令発行待ちバッファ420に格納され実行待ちであるベクトルロード命令転送先のベクトル演算レジスタ領域と、後続のベクトル演算命令で読み込むまたは書き込むベクトル演算レジスタ領域とが一致しているために、データ整合性を保つ必要性から命令発行の順番を守らなければならないことが示されている。従って、先行のベクトルロード命令が発行されない限りベクトル演算命令発行待ちバッファ410に格納された後続のベクトル演算命令は発行されない。こうした処理により、仕掛かり中のベクトルロード命令が使用するベクトル演算レジスタが先行するベクトル処理と競合するときには、後続のベクトル演算命令の実行を保留することが可能である。
If the flag information of the inter-instruction
本実施の形態ではベクトルデータを構成する256の要素を64要素を分割単位として分割することにより4つの要素番号帯が形成される。例えばベクトルロード命令と後続のベクトル演算命令のデータ整合性を維持する必要があった場合、最初の64要素に対する先行のベクトルロード命令が発行されると最初の64要素に対応する命令間整合性維持フラグ413が無効となり、ベクトル演算命令の最初の64要素に対応する命令発行許可信号がベクトル演算命令発行チェック部415に対して送出される。
In this embodiment, four element number bands are formed by dividing 256 elements constituting vector data using 64 elements as a division unit. For example, when it is necessary to maintain the data consistency between the vector load instruction and the subsequent vector operation instruction, when the preceding vector load instruction for the first 64 elements is issued, the inter-instruction consistency corresponding to the first 64 elements is maintained. The
ベクトル演算命令発行チェック部415は、ベクトル演算器ビジー管理部402からのビジー信号と、命令間整合性維持フラグチェック部414からの命令発行許可信号と、未発行要素識別フラグ412からの未発行要素識別フラグ信号と、ベクトル演算命令情報バッファ411からの命令情報を受ける。
The vector operation instruction
ベクトル演算命令発行チェック部415は、ベクトル演算命令発行の条件をチェックする。この条件は、ベクトル演算器ビジーでないという条件と、64要素を分割単位として分割することにより得られた4つの要素番号帯に対応する4bitの未発行要素識別フラグ412とそれに対応する4bitの命令間整合性維持フラグチェック部414の信号との桁毎の論理積を取った4bitの信号が有効“1”である桁が存在するという条件の両方を満たすという条件である。この条件が満たされた場合、64要素を分割単位として分割することにより得られた4つの要素番号帯の中から条件が満たされた1つの要素番号帯に対するベクトル演算開始指示17がベクトル命令処理部5に送出される。
The vector operation instruction
4つの要素番号帯について複数の要素番号帯に対する発行条件が整うケースもある。その場合は複数の中から1つの要素番号帯に対するベクトル演算命令実行開始指示が出される。また、ベクトル演算命令の実行開始指示を出すと同時にベクトル演算器ビジー管理部402に対してベクトル演算器ビジーフラグを2クロック間(=64要素/[1クロック当たり処理スピード32要素])点灯するよう指示を出す。
There are cases where the issuing conditions for a plurality of element number bands are established for the four element number bands. In that case, a vector operation instruction execution start instruction is issued for one element number band from among a plurality. Also, an instruction to start execution of a vector operation instruction is issued, and at the same time, the vector operation unit
ベクトルロード命令情報バッファ421は、ベクトルロード命令転送先のベクトル演算レジスタ情報を格納する。 The vector load instruction information buffer 421 stores vector operation register information of a vector load instruction transfer destination.
未発行要素識別フラグ422は、64要素を分割単位として形成された4つの要素番号帯に対応して設置される。未だロードバッファ転送開始指示が発行されていない要素単位のフラグ値は“1”となるよう制御される。
The unissued
命令間整合性維持フラグ423は、64要素を分割単位として形成された4つの要素番号帯に対応し、かつベクトルロード命令発行待ちバッファ420以外の命令発行待ちバッファ410、430、440に対応して設置される。先行命令とベクトル演算レジスタ競合関係がありデータ整合性を保つ必要性がある場合には対応するフラグ値が“1”(有効)となるよう制御される。
The inter-instruction
ロードバッファ番号424には、ベクトルロード命令転送元のロードバッファ番号が格納される。 The load buffer number 424 stores the load buffer number of the vector load instruction transfer source.
ロードバッファ使用箇所指示フラグ425は、サブロードバッファ使用箇所指示フラグを格納する。ベクトルロード命令転送元のロードバッファ番号内の複数のサブロードバッファ番号に対応するフラグが有効となるように設定される。
The load buffer usage
命令間整合性維持フラグチェック部426は、命令間整合性維持フラグ423のフラグ情報が無効の場合、該当する分割単位に対応する命令発行許可信号をベクトルロード命令発行チェック部428に対して送出する機能を持つ。命令間整合性維持フラグ423のフラグ情報が有効であった場合は、先行してベクトル演算命令発行待ちバッファ410に格納され実行待ちであるベクトル演算命令が使用するベクトル演算レジスタ領域と、後続のベクトルロード命令転送先のベクトル演算レジスタ領域とが一致していて命令発行の順番を守らなければならないことが示されている。この場合、先行のベクトル演算命令が発行されない限りベクトルロード命令発行待ちバッファ420に格納された後続のベクトルロード命令は発行しないよう制御する。
When the flag information of the inter-instruction
本実施の形態では、ベクトルデータを構成する複数(256個)の要素の要素を複数の要素群(64要素を分割単位として分割することにより形成される4つの要素番号帯)に分ける。例えばベクトル演算命令と後続のベクトルロード命令とのデータ整合性を維持する必要があった場合、最初の64要素に対する先行のベクトル演算命令が発行されると命令間整合性維持フラグ423の最初の64要素に対応するフラグが無効となり、最初の64要素に対応するベクトルロード命令の発行許可(ロードバッファ転送開始許可)信号がベクトルロード命令発行チェック部428に対して送出される。この処理により、ベクトルデータを構成する要素が全て揃っていない場合でも、複数の要素群のうちで全ての要素がメインメモリ7から読み出された要素群から先にベクトル演算レジスタ5−2に転送することが可能となる。
In the present embodiment, the elements of a plurality (256 elements) constituting the vector data are divided into a plurality of element groups (four element number bands formed by dividing 64 elements as a division unit). For example, if it is necessary to maintain data consistency between a vector operation instruction and a subsequent vector load instruction, when the preceding vector operation instruction for the first 64 elements is issued, the first 64 of the inter-instruction
特定ロードバッファ転送条件確認部427は、ロードデータ整列判定部3から送られてきた整列通知15と、ベクトルロード命令発行待ちバッファ420に格納されているロードバッファ番号424と、ロードバッファ使用箇所指示フラグ425に格納されているサブロードバッファ使用箇所指示フラグの情報とをサブロードバッファ毎の整列通知信号と比較する。比較の結果、一致したサブロードバッファがあった場合は、そのサブロードバッファに対応する要素番号帯のベクトルロード命令発行許可(ロードバッファ転送開始許可)をベクトルロード命令発行チェック部428に送出する。
The specific load buffer transfer
本実施の形態において、この時ロードバッファ使用箇所指示フラグ425と、64要素を分割単位として分割することにより形成された4つの要素番号帯別の422と、命令間整合性維持フラグ423との対応は、ロードバッファ使用箇所指示フラグ425の若い順に順番に対応しているものとしている。
In this embodiment, the correspondence between the load buffer use
例えば256要素のベクトルロード命令が420にバッファリングされているケースでロードバッファ使用箇所指示フラグ425には“11101000”というパタンが格納されているケースを考える。この場合、ロードデータ要素は以下の対応が成立するようにロードバッファ5−1へ格納されるよう制御が行われる。要素0〜63に関しては未発行要素識別フラグ422の1番目のフラグとロードバッファ使用箇所指示フラグ425の1bit目が対応する。要素64〜127に関しては未発行要素識別フラグ422の2番目のフラグとロードバッファ使用箇所指示フラグ425の2bit目が対応する。要素128〜191は未発行要素識別フラグ422の3番目のフラグとロードバッファ使用箇所指示フラグ425の3bit目が対応する。要素192〜255は未発行要素識別フラグ422の4番目のフラグとロードバッファ使用箇所指示フラグ425の5bit目のフラグが対応する。
For example, consider a case where a 256 element vector load instruction is buffered at 420 and the load buffer usage
ベクトルロード命令発行チェック部428は、ロードバッファ転送パスビジー管理部403からのロードバッファ転送パスビジー信号と、命令間整合性維持フラグチェック部426からの命令発行許可信号と、特定ロードバッファ転送条件確認部427からのベクトルロード命令発行許可信号と、未発行要素識別フラグ422からの未発行要素識別フラグ信号と、ベクトルロード命令情報バッファ421からの命令情報を受ける。
The vector load instruction
ベクトルロード命令発行チェック部428は、以下の3条件が満たされたときに、64要素を分割単位として分割することにより形成された4つの要素番号帯の中から1つの要素番号帯に対するベクトル演算開始指示17をベクトル命令処理部5に送出する。
(1)ロードバッファ転送パスがビジーでない、
(2)ある要素番号帯に着目した時に4bitの未発行要素識別フラグ422とそれに対応する4bitの命令間整合性維持フラグチェック部426の信号との桁毎の論理積を取った4bitの信号の桁が“1”である、
(3)ロードバッファ転送条件確認部427において4つの要素番号帯のいずれかのロードデータが揃ったことが確認された。
この条件が満たされた場合に、64要素を分割単位として形成された4つの要素番号帯の中から1つの要素番号帯に対するベクトル演算開始指示17がベクトル命令処理部5に送出される。
The vector load instruction
(1) The load buffer transfer path is not busy,
(2) When attention is paid to a certain element number band, a 4-bit signal obtained by performing a logical product for each digit of a 4-bit unissued
(3) The load buffer transfer
When this condition is satisfied, a vector operation start
4つの要素番号帯について複数の要素番号帯に対する発行条件が整うケースもある。その場合は複数の中から1つの要素番号帯に対するベクトルロード命令実行開始指示(ロードバッファ転送開始指示16)をベクトル命令発行部5に送出すると同時に、ロードバッファ使用中フラグリセット信号生成部204にロードバッファ解放通知14が送出される。また、ロードバッファ転送開始指示を出すと同時にロードバッファ転送パスビジー管理部403に対してビジーフラグを2クロック間(=64要素/[1クロック当たり処理スピード32要素])点灯するよう指示を出す。
There are cases where the issuing conditions for a plurality of element number bands are established for the four element number bands. In this case, a vector load instruction execution start instruction (load buffer transfer start instruction 16) for one element number band from among a plurality of elements is sent to the vector
図4は、ベクトルロードリクエスト処理部2を示す。アドレス変換部201は、命令デコード部1より受け取ったベクトルロード命令11を解読する。アドレス変換部201は、ベクトルロード命令11に含まれるロード開始アドレス、要素間アドレスディスタンス、および要素数に基づいて、ベクトルデータの要素数分のアドレスを生成する。このアドレスは、使用するベクトルデータを構成する複数の要素が格納されているメインメモリ7上の位置を示す。アドレス変換部201は、生成したアドレスをタグ及びアドレス18の一部としてメモリアクセス制御部6に送出することにより、1つのベクトルロード命令に基づいて要素数分のロード指示を行う。
FIG. 4 shows the vector load
使用ロードバッファ決定部202は、以下のように、ベクトルデータをロードするロードバッファ5−1上の場所を決定する。まず、命令デコード部1より受け取ったベクトルロード命令11を解読する。ベクトルロード命令11には、ロードするベクトルデータの要素数を示す要素数情報が含まれる。その要素数情報に基づいて、ベクトルデータの全要素を格納するために必要な必要サブロードバッファ数を算出する。必要サブロードバッファ数分の空きサブロードバッファがあるロードバッファ5−1が選択される。選択されたロードバッファ5−1の中で未使用のサブロードバッファを必要サブロードバッファ数だけ確保する。確保済みサブロードバッファは、選択されたロードバッファ5−1を特定する確保済みロードバッファ番号と、確保されたサブロードバッファを特定する確保済みサブロードバッファ番号とによって特定される。以上の処理により、あるベクトルロード命令によって使用されるロードバッファ5−1と複数のサブロードバッファが決定され、確保番号通知13、23によって通知される。
The use load
使用ロードバッファ決定部202は、確保番号通知13、23と同時に、ロードバッファ使用中フラグ203に対してロードバッファ使用中フラグセット信号を送出して、新たに確保したロードバッファ5−1上の場所を示す確保済みロードバッファ番号と確保済みサブロードバッファ番号とに対応するフラグに“1”をセットする。使用ロードバッファ決定部202は更に、タグ生成部205に対して、確保済みロードバッファ番号と確保済みサブロードバッファ番号とロードするベクトルデータの要素数とを伝達する。
The used load
使用ロードバッファ決定部202は、全てのロードバッファ番号において必要数のサブロードバッファ(ロードバッファ分割単位)が確保出来なかった場合は、ビジー信号10を命令デコード部1に送ることで後続のベクトルロード命令の送出を抑止する。
When the required number of sub load buffers (load buffer division units) cannot be secured for all the load buffer numbers, the used load
本実施の形態においては最大要素数を256として、ロードバッファ分割する単位の要素数を64としている。要素数が1〜64までの場合は1個の分割単位を、要素数が65〜128までの場合は2個の分割単位を、要素数が129〜192までの場合は3個の分割単位を、要素数が193〜256までの場合は4個の分割単位を使用する。 In the present embodiment, the maximum number of elements is 256, and the number of elements in the unit for dividing the load buffer is 64. When the number of elements is 1 to 64, one division unit is used. When the number of elements is 65 to 128, two division units are used. When the number of elements is 129 to 192, three division units are used. When the number of elements is 193 to 256, 4 division units are used.
ロードバッファ使用中フラグ203は、全てのロードバッファ分割単位毎のフラグを有している。即ち、全てのサブロードバッファ番号に対応するフラグを有している。これらのフラグは、使用ロードバッファ決定部202からのセット信号及びロードバッファ使用中フラグリセット信号生成部204からのリセット信号に基づいてセットおよびリセットされる。
The load buffer in-
ロードバッファ使用中フラグリセット信号生成部204は、ロードバッファ転送開始指示が発行されるのに合わせて送出されるロードバッファ解放通知14をベクトル命令発行部4より受け取る。ロードバッファ解放通知14は、空きとなったサブロードバッファを特定するサブロードバッファ番号を含んでいる。ロードバッファ使用中フラグリセット信号生成部204は、このサブロードバッファ番号に対応するフラグがリセットされるようリセット信号をロードバッファ使用中フラグ203に送出する。
The load buffer busy flag reset
タグ生成部205は、使用ロードバッファ決定部202が確保したロードバッファ番号と複数のサブロードバッファ番号とロードするベクトルデータの要素数の情報から、ロードするベクトルデータの要素の各々の格納先ロードバッファアドレスをタグとして生成し、アドレス変換部201で個別に生成されたメインメモリ7上のアドレスであるロードアドレスに1対1で対応するようにタグ及びアドレス18をメモリアクセス制御部6に送出する。
The
タグの情報は、確保済みロードバッファ番号と複数の確保済みサブロードバッファ番号とロードデータ各要素の格納先ロードバッファアドレスの情報から成る。格納先ロードバッファアドレスを複数の確保済みサブロードバッファ番号の小さい方から順番に割り当てるように決めておくことで、格納先ロードバッファアドレスをタグとしてメモリアクセス制御部6に送出すれば必要な情報が揃うためインタフェース削減可能となり、望ましい構成となる。
The tag information includes information on a reserved load buffer number, a plurality of reserved sub load buffer numbers, and a storage load buffer address of each element of load data. By determining that the storage destination load buffer addresses are allocated in order from the smallest of the plurality of reserved sub load buffer numbers, if the storage destination load buffer address is sent to the memory
以上に説明した本実施の形態の構成により、以下のようなベクトル処理装置が構成される。
第1に、使用ロードバッファ決定部202、要素数セット部301、要素数減算カウンタ部302、整列判定部305、ベクトル演算命令発行待ちバッファ410、及びベクトル演算命令発行待ちバッファ430により、次のベクトル処理装置が実現される。
The following vector processing apparatus is configured by the configuration of the present embodiment described above.
First, the use load
ベクトル処理装置は、メインメモリ7とベクトル演算レジスタ5−2との間に、メインメモリ7から読み出されたベクトルデータを一時的に格納するロードバッファ5−1を備える。メインメモリ7から読み出されたベクトルロード命令の解読時に、ロードバッファ5−1の使用領域を確保するとともにメインメモリ7からロードバッファ5−1へのベクトルデータの読み出しが起動される。起動後、ロードバッファ5−1にベクトルデータの要素が格納されたことと、ベクトルロード命令で使用するベクトル演算レジスタ領域が先行するベクトル命令で使用するベクトル演算レジスタ領域と競合しないことを条件に、ロードバッファ5−1からベクトル演算レジスタ5−2へのベクトルデータの転送が開始される。こうしたベクトル処理装置において、最大ベクトル要素数を予め決定した特定の大きさに分割し、その分割した単位でロードされたデータ要素が格納されたことを確認した後に、ロードバッファ5−1からベクトル演算レジスタ5−2へベクトルデータの転送を開始するよう制御が行われる。
The vector processing apparatus includes a load buffer 5-1 for temporarily storing vector data read from the
第2に、上記構成に加えて、ベクトル演算命令発行待ちバッファ410、430、ベクトルロード命令発行待ちバッファ420、440が連携して動作することにより、次の機能を有するベクトル処理装置が実現される。
Second, in addition to the above configuration, the vector operation instruction
ベクトル処理装置において、命令解読順番におけるデータ整合性を損なわないように、上記の特定の大きさに分割した単位でチェックを行い、データ整合性に問題が無い場合には命令解読順番によらずに命令を発行するよう制御が行われる。 In the vector processing device, in order to avoid losing data consistency in the instruction decoding order, a check is performed in units divided into the above specific sizes, and if there is no problem in data consistency, regardless of the instruction decoding order Control is performed to issue an instruction.
第3に、上記構成に加えて、使用ロードバッファ決定部202、要素数セット部301、及び要素数減算カウンタ部302が連携して動作することにより、次の機能を有するベクトル処理装置が実現される。
Third, in addition to the above configuration, the use load
ベクトル処理装置において、上記の分割した単位のロードバッファを1つまたは複数のグループにまとめて、その中からベクトルロード要素数に応じてロードバッファ分割単位を必要な数だけ確保するとともに、確保した箇所のロードバッファ分割単位をベクトル命令発行部に伝達するよう制御が行われる。 In the vector processing apparatus, the load buffers in the divided units are grouped into one or a plurality of groups, and the necessary number of load buffer dividing units are secured according to the number of vector load elements. Control is performed so that the load buffer division unit is transmitted to the vector instruction issuing unit.
第4に、上記構成に加えて、使用ロードバッファ決定部202、ロードバッファ使用中フラグ203、ロードバッファ使用中フラグリセット信号生成部204、ベクトル演算命令発行待ちバッファ410、430が連携して動作することにより、次の機能を有するベクトル処理装置が実現される。
Fourth, in addition to the above configuration, the used load
ベクトル処理装置において、上記の特定の大きさに分割した単位でロードバッファ5−1からベクトル演算レジスタ5−2へのベクトルデータの転送を開始するのに合わせて分割した単位に対応するロードバッファの解放を行い、後続のベクトルロード命令で使用するよう制御が行われる。 In the vector processing device, the load buffer corresponding to the unit divided in accordance with the start of transfer of vector data from the load buffer 5-1 to the vector operation register 5-2 in the unit divided into the specific size. Release and control to use in subsequent vector load instructions.
[動作の説明]
次に本実施の形態の動作を図5のタイムチャートと図7の説明用命令列例を使用して説明する。
[Description of operation]
Next, the operation of the present embodiment will be described using the time chart of FIG. 5 and the instruction sequence example for explanation of FIG.
図7は説明用命令列例で、番号1〜7の順でデコードされるものとする。ADD−AはLD−Aで演算レジスタ5−2にロードしたデータを使ってADD演算する命令と定義する。ADD−BはLD−Bで演算レジスタ5−2にロードしたデータを使ってADD演算する命令と定義する。1番と2番、3番と4番の命令以外は使用するベクトル演算レジスタ領域が異なるため、データ整合性の観点からは命令間の発行順番依存関係は無い。ベクトルデータは全て要素数256であると定義する。 FIG. 7 shows an example of an instruction sequence for explanation, and it is assumed that decoding is performed in the order of numbers 1-7. ADD-A is defined as an instruction for performing an ADD operation using data loaded to the operation register 5-2 by the LD-A. ADD-B is defined as an instruction for performing an ADD operation using data loaded to the operation register 5-2 by LD-B. Since the vector operation register areas to be used are different except for the first, second, third and fourth instructions, there is no issue order dependency between instructions from the viewpoint of data consistency. All vector data are defined to have 256 elements.
ADD演算は通常2つのオペランドデータを使って演算処理を行うが、本実施の形態ではロードデータと対となるデータが予め別のベクトル演算レジスタに格納されていることを動作説明の前提とする。また、ロードバッファ5−1からベクトル演算レジスタ5−2への書き込みパスは1つのみである構成とする。 The ADD operation is normally performed using two operand data, but in this embodiment, it is assumed that the data paired with the load data is stored in a separate vector operation register in advance. Further, there is only one write path from the load buffer 5-1 to the vector operation register 5-2.
図5は、図7に示された命令列が実行されたケースのタイムチャートを示している。以下、図の上部に記載されたクロック数1−33を参照しながら、動作を説明する。ベクトルロード命令LD−Aが命令デコード部1でデコードされてベクトルロード命令11およびベクトル命令12としてベクトルロードリクエスト処理部2とベクトル命令発行部4に出力されたタイミングをクロック1とする。
FIG. 5 shows a time chart of a case where the instruction sequence shown in FIG. 7 is executed. Hereinafter, the operation will be described with reference to the clock number 1-33 described in the upper part of the figure. The timing at which the vector load instruction LD-A is decoded by the
図7で示した命令列が順次デコードされると、それぞれの命令列で読み込むベクトルデータを格納するために必要な分のサブロードバッファを確保したのち、タグ及びアドレス18がメモリアクセス制御部6に送出される。
When the instruction sequence shown in FIG. 7 is sequentially decoded, the tag and
ベクトル命令処理部5は、#0と#1で特定される2つのロードバッファ5−1を備えるものとする。命令列の1行目のベクトルロード命令LD−Aが使用ロードバッファ決定部202で処理されると、ロードバッファ#0の中のサブロードバッファ0,1,2,3(図2、図4、図6ではLD−Buf#0−0,#0−1,#0−2,#0−3と、ロードバッファ番号を示す#0の後に枝番を付けることによって記載されている)の4つが確保される。確保番号通知13、23の使用箇所情報には“11110000”という値が出力される。
The vector
同様に命令列の2行目のLD−Bが使用ロードバッファ決定部202で処理されると、ロードバッファ#0のサブロードバッファ4,5,6,7が確保されて使用箇所情報には“00001111”という値が出力される。命令列の5行目のLD−Cが使用ロードバッファ決定部202で処理されるとロードバッファ#1のサブロードバッファ0,1,2,3が確保され、LD−Bが使用ロードバッファ決定部202で処理されるとロードバッファ#1のサブロードバッファ4,5,6,7が確保される。この時点でロードバッファ#0,#1は全て使用中となってしまうため、後続のベクトルロード命令LD−Eは処理待ちの状態となり、命令デコード部1にはビジー信号10が出力される。
Similarly, when the LD-B in the second row of the instruction sequence is processed by the use load
要素数セット部301は、使用ロードバッファ決定部202から確保番号通知13を受け取り、要素数減算カウンタ部302のLD−Buf#0−0,LD−Buf#0−1,LD−Buf#0−2,LD−Buf#0−3の整列判定カウンタにそれぞれ値64をセットするとともに、対応する有効フラグに“1”をセットする。
The element
401のベクトル命令バッファ部は、ベクトル命令12として、図7で示すような命令列を順次、受け取る。まずベクトルロード命令LD−Aはベクトルロード命令発行待ちバッファ420に格納され、次にベクトル演算命令ADD−Aがベクトル演算命令発行待ちバッファ410に格納される。続いてLD−Bがベクトルロード命令発行待ちバッファ440に格納され、ADD−Bがベクトル演算命令発行待ちバッファ430に格納される。LD−CとLD−Dはベクトルロード命令発行待ちバッファ420またはベクトルロード命令発行待ちバッファ440が空くまでベクトル命令バッファ401内でバッファリングされる。
The vector
ADD−AがLD−Aを追い越して実行されてデータ整合性が損なわれないように、ADD−Aがベクトル演算命令発行待ちバッファ410に格納される際に、先行してベクトルロード命令発行待ちバッファ420に格納されたLD−Aに対する命令間整合性維持フラグ413に“1111”がセットされる。このためADD−A命令で使用するベクトル演算レジスタ領域がビジーで無かったとしても、命令間整合性維持フラグ413が全て“1”なので、64要素を分割単位として形成された4つの要素番号帯の発行許可信号が一つも有効“1”にならない。その結果、ADD−A命令は、ベクトル演算命令発行待ちバッファ410で待機状態となる。
When the ADD-A is stored in the vector operation instruction
LD−Aは最初の命令なので先行する命令とのデータ整合性を維持する必要性は無いことから、命令間整合性維持フラグ423には“0000”がセットされる。従って、サブロードバッファLD−Buf#0−0またはLD−Buf#0−1またはLD−Buf#0−2またはLD−Buf#0−3のデータが揃ったことが確認されたら、直ちに演算レジスタ5−2に対してロードバッファ5−1のデータを転送開始可能な状態となっている。この状態がタイムチャートでロードデータ整列待ちの状態として省略されているクロック14の状態である。この時のロードバッファ使用状態を図6(a)に示す。
Since LD-A is the first instruction, there is no need to maintain data consistency with the preceding instruction, so “0000” is set in the inter-instruction
クロック15で、ベクトルロード命令LD−Aの最若番の確保済みサブロードバッファLD−Buf#0−0に割り当てられた64個の要素全てをメモリアクセス制御部6より受け取ったことで、要素数減算カウンタ部302のLD−Buf#0−0の整列判定カウンタの値が“0”となる。整列判定部305は、サブロードバッファLD−Buf#0−0の全てのロード要素が揃ったと判断する。
When all the 64 elements assigned to the youngest reserved subload buffer LD-Buf # 0-0 of the vector load instruction LD-A are received from the memory
クロック16において、特定ロードバッファ転送条件確認部427では、LD−Aのロードバッファ番号424とロードバッファ使用箇所425の情報と整列判定部305より受け取った整列通知15を比較する。この比較により、LD−A用に確保されているLD−Buf#0−0の整列が完了したことを認識し、更に、一番小さい確保済みサブロードバッファ番号の要素番号帯であることから要素番号00〜63の整列が完了したことも識別して、ベクトルロード命令発行チェック部428に伝える。
At the
ベクトルロード命令発行チェック部428は、LD−Aの転送先ベクトル演算レジスタ領域がビジーではないことを確認し、サブロードバッファLD−Buf#0−0に対して命令で指定されたベクトル演算レジスタ領域へのロードバッファ転送開始指示16を出す。同時に、LD−Buf#0−0のロードバッファ解放通知14をロードバッファ使用中フラグリセット信号生成部204に送出し、未発行要素識別フラグ422の要素番号00〜63に対応するフラグをリセットする。さらに、ベクトルロード命令発行待ちバッファ420の命令間整合性維持フラグ413のLD−A要素番号00〜63に対応するフラグを“0”にリセットする指示を出す。この結果、未発行要素識別フラグ422の値は“0111”に、命令間整合性維持フラグ413の値は“0111”になる。また、LD−A転送先のベクトル演算レジスタ5−2への書き込みパスが1つのみである構成としているため、転送が終了するまでの2クロック間、ビジーフラグが点灯するようロードバッファ転送パスビジー管理部403に指示を出す。
The vector load instruction
また、本実施の形態では、クロック16にてサブロードバッファLD−Buf#0−1の要素が全て揃ったことが識別されている。
Further, in the present embodiment, it is identified that all elements of the sub load buffer LD-Buf # 0-1 are prepared at the
クロック17において、サブロードバッファLD−Buf#0−0に対するベクトル演算レジスタ5−2への転送命令を受け、ベクトル命令処理部5はサブロードバッファLD−Buf#0−0からベクトル演算レジスタ5−2へのロードデータ転送を開始する。1クロックで32要素のロードデータ転送が可能な構成としているため、ロードバッファ転送パスは2クロック間使用する。それに対応して2クロック間、ビジーフラグが点灯するようロードバッファ転送パスビジー管理部403に指示を出す。
In response to the transfer instruction to the vector operation register 5-2 for the sub load buffer LD-Buf # 0-0 at the
このタイミングで特定ロードバッファ転送条件確認部427は、サブロードバッファLD−Buf#0−1の整列判定信号を受け、ロードバッファ番号424並びにロードバッファ使用箇所指示フラグ425と比較を行い、要素番号64〜127のロードデータが転送可能であることをベクトルロード命令発行チェック部428に伝達する。ベクトル演算器ビジー管理部402内のビジーフラグが点灯しているため、サブロードバッファLD−Buf#0−1に対する転送開始指示は発行されない。
At this timing, the specific load buffer transfer
一方LD−Aに対する命令間整合性維持フラグ413の値は“0111”となっている。そのため、命令間整合性維持フラグチェック部414にて要素番号00〜63のADD演算は実行可能と判断され、ベクトル演算命令発行チェック部415に命令発行許可信号“1000”が送られる。ベクトル演算命令発行チェック部415は、未発行要素識別フラグ412の値“1111”という情報と、命令間整合性維持フラグチェック部414からの命令発行許可信号“1000”という情報と、ベクトル演算器ビジーでないという情報から、要素番号00〜63の要素番号帯に対するADD演算開始指示を発行できると判断して、ベクトル演算開始指示17として要素番号00〜63に対するADD演算開始指示を出す。それと同時にベクトル演算器ビジー管理部402内のADD−A命令実行結果格納先ベクトル演算レジスタ領域のビジーフラグを2クロック間点灯させる指示を出すとともに、未発行要素識別フラグ412の要素番号00〜63に対応するフラグをリセットする。この結果、未発行要素識別フラグ412の値は“0111”となる。
On the other hand, the value of the inter-instruction
クロック18において、ロードバッファ転送パスビジー管理部403のビジーフラグが消灯する。そのため、ベクトルロード命令発行チェック部428にて発行条件のチェックを行い、要素番号64〜127のロードデータが格納されているサブロードバッファLD−Buf#0−1のロードバッファ転送開始指示16をベクトル命令処理部5に送出する。
At
このタイミングで、LD−Buf#0−1のロードバッファ解放通知14をロードバッファ使用中フラグリセット信号生成部204に送出し、未発行要素識別フラグ422の要素番号64〜127に対応するフラグをリセットし、さらにベクトルロード命令発行待ちバッファ420に格納されているLD−Aに対する命令間整合性維持フラグ413の要素番号64〜127に対応するフラグにリセット指示を出す。この結果、未発行要素識別フラグ422の値は“0011”に、命令間整合性維持フラグ413の値は“0011”になる。また、LD−A転送先のベクトル演算レジスタ5−2への書き込みパスが1つのみである構成としているため、ロードバッファ転送パスを使用する2クロックの間、ビジーフラグを点灯させるようロードバッファ転送パスビジー管理部403に指示をだす。
At this timing, the load
クロック19において、サブロードバッファLD−Buf#0−1に対するベクトル演算レジスタ5−2への転送命令を受け、ベクトル命令処理部5はサブロードバッファLD−Buf#0−1からベクトル演算レジスタ5−2へのロードデータ転送を開始する。図5では2クロックでADD演算が完了するタイムチャートとなっている。これは1クロックで32要素のADD演算が可能な構成としていることによる。
At the
このタイミングで特定ロードバッファ転送条件確認部427はサブロードバッファLD−Buf#0−2の整列判定信号を受け、ロードバッファ番号424並びにロードバッファ使用箇所指示フラグ425と比較を行い、要素番号128〜191のロードデータが転送可能であることを428に伝達している。しかし、ロードバッファ転送パスビジー管理部403のビジーフラグが点灯しているため、サブロードバッファLD−Buf#0−2に対する転送開始指示は発行されない。
At this timing, the specific load buffer transfer
一方、LD−Aに対する命令間整合性維持フラグ413の値は“0011”となっている。そのため、命令間整合性維持フラグチェック部414にて要素番号64〜127のADD演算は実行可能と判断され、ベクトル演算命令発行チェック部415に命令発行許可信号が送られる。
On the other hand, the value of the inter-instruction
ベクトル演算命令発行チェック部415は、要素番号64〜127に着目したときに未発行要素識別フラグ412の2ビット目の値が“1”であることと、命令間整合性維持フラグ413の2ビット目の値が“1”であることと、ベクトル演算器ビジーでないことをチェックして、要素番号64〜127に対するADD演算開始指示をベクトル演算開始指示17としてベクトル命令処理部5に出力する。それと同時に、ビジーフラグを2クロック間点灯させる指示をベクトル演算器ビジー管理部402に出すとともに、未発行要素識別フラグ412の要素番号64〜127に対応するフラグをリセットする。この結果、未発行要素識別フラグ412の値は“0011”となる。
The vector operation instruction
このように256要素のロードデータを64要素毎に分割した単位で命令間のデータ整合性を保つ機能を実現することで後続のADD演算を効率的に行うことができる。 As described above, by realizing the function of maintaining data consistency between instructions in units of dividing the load data of 256 elements into 64 elements, subsequent ADD operations can be performed efficiently.
クロック20において、要素番号128〜191が格納されたサブロードバッファLD−Buf#0−2に対する転送開始指示とロードバッファ解放指示が出される。それと同時に要素番号128〜191に対応する命令間整合性維持フラグ413の値が“0”にリセットされる。ベクトルロード命令LD−Eは要素数256のベクトルロード命令であり、4つのロードバッファ分割単位を確保する必要がある。この時点ではロードバッファ#0に3つのサブロードバッファしか空きが無いため、命令デコード部1へのビジー信号は有効のままである。
At
クロック21において、要素番号128〜191に対応する命令間整合性維持フラグ413の値が“0”となるので、ADD−A命令の要素番号128〜191に対応する要素番号帯のベクトル演算開始指示が出される。
Since the value of the inter-instruction
クロック22において、LD−B命令の要素番号00〜63が格納されたサブロードバッファLD−Buf#0−4に対する転送開始指示とロードバッファ解放指示が出される。ロードバッファ使用中フラグリセット信号生成部204は、ベクトルロード命令発行チェック部428よりロードバッファ解放通知14を受け、指示のあったサブロードバッファ番号に対応するロードバッファ使用中フラグをリセットする。
At
クロック23において、ADD−B命令の要素番号00〜63のADD演算の実行指示が出される。この時点におけるロードバッファ使用状態を図6(b)に示す。この時点でロードバッファ#0に4つの空きができたため、使用ロードバッファ決定部202においてベクトルロード命令LD−E用のサブロードバッファが確保可能となり、LD−Eのベクトルロード処理を行うことができる。4つの確保済みサブロードバッファに対応するロードバッファ使用中フラグに“1”をセットする。ベクトルロード命令LD−Eが使用ロードバッファ決定部202で処理されると、ロードバッファ#0の中のサブロードバッファ0,1,2,4の4つが確保されて、ロードバッファ確保番号通知13、23の使用箇所情報には“11101000”という値が出力される。
At
以降残りのベクトルロード命令LD−A−3,LD−B−1,LD−B−2,LD−B−3およびLD−C,LD−D,LD−Eの各分割単位毎に全ての要素がロードされてベクトル演算レジスタ5−2へのデータ転送指示が出され、データ整合性を保ちつつ演算命令ADD−A−2,ADD−A−3およびADD−Bの各分割単位毎に演算開始指示が全て出されて本実施の形態の命令列の実行が完了するが、動作説明が冗長となるため省略する。 Thereafter, all the elements for each division unit of the remaining vector load instructions LD-A-3, LD-B-1, LD-B-2, LD-B-3 and LD-C, LD-D, LD-E Is loaded and a data transfer instruction is issued to the vector calculation register 5-2, and calculation is started for each division unit of the calculation instructions ADD-A-2, ADD-A-3, and ADD-B while maintaining data consistency. Although all the instructions are issued and the execution of the instruction sequence of the present embodiment is completed, the description of the operation becomes redundant, and is omitted.
[変形例]
以下、本発明の実施の形態の変形例を説明する。基本的構成は上記の通りであるが、最大ベクトル要素数が256でない構成も可能である。最大ベクトル要素数は、1クロック毎の処理要素数の4倍以上の値であれば特に制限は無く、HW(Hardware)量と性能とのトレード・オフによって決定可能である。例えば1クロック毎の処理要素数が4だとしたら、その4倍の16を最大ベクトル要素数とするような構成であれば、上記の構成が有効に機能して性能が向上する。
[Modification]
Hereinafter, modifications of the embodiment of the present invention will be described. Although the basic configuration is as described above, a configuration in which the maximum number of vector elements is not 256 is also possible. The maximum number of vector elements is not particularly limited as long as it is a value that is four times or more the number of processing elements per clock, and can be determined by trade-off between HW (Hardware) amount and performance. For example, if the number of processing elements per clock is four, the above configuration functions effectively and the performance is improved if the maximum number of vector elements is set to 16 times four.
また本実施の形態ではロードバッファの分割単位として最大ベクトル要素数を4で割った64要素を1つの分割単位としている。この分割単位については、最大ベクトル要素数を2以上の整数で割った値を1つの分割単位として設定することが可能である。 In the present embodiment, 64 elements obtained by dividing the maximum number of vector elements by 4 are used as one division unit as a load buffer division unit. For this division unit, a value obtained by dividing the maximum number of vector elements by an integer of 2 or more can be set as one division unit.
さらに本実施の形態では、1024要素分用意されたロードバッファを2段階に分割している。即ち、まず最大ベクトル長の2倍(=要素数512)の値で分割した単位でロードバッファ番号を付与し、次いで1つのロードバッファ番号を最大ベクトル要素数を4で割った64要素(=256/4)単位毎の8つに分割している。コレに対して、1024要素分用意されたロードバッファをたとえば64要素分割単位毎の16個に分割するというように1段階でサブロードバッファ単位に分割する構成を取ることも可能である。この場合は本実施の形態におけるタグ情報中のロードバッファ番号というフィールドが無くなる代わりに、8bitのサブロードバッファ使用箇所フィールドが分割数分の16bitに拡張される。 Furthermore, in this embodiment, the load buffer prepared for 1024 elements is divided into two stages. That is, first, a load buffer number is assigned in a unit divided by a value twice the maximum vector length (= 512 elements), and then 64 elements (= 256) obtained by dividing one load buffer number by the maximum vector element number by 4. / 4) Divided into 8 units. For this, it is possible to divide the load buffer prepared for 1024 elements into sub load buffer units in one step, for example, to divide the load buffer into 16 pieces every 64 element division units. In this case, instead of the field of the load buffer number in the tag information in the present embodiment disappearing, the 8-bit sub load buffer usage location field is expanded to 16 bits corresponding to the number of divisions.
また、本実施の形態ではロードバッファ容量を1024要素としているが、より大きい容量とすることも可能である。ロードバッファ容量は大きければ大きいほどベクトルロード命令を演算命令に先行して発行できるためトータル性能が向上する。ロードバッファ容量は、HW量と性能とのトレード・オフによって最適な量に決定可能である。 In the present embodiment, the load buffer capacity is 1024 elements, but a larger capacity is also possible. The larger the load buffer capacity, the greater the total performance because vector load instructions can be issued prior to the operation instructions. The load buffer capacity can be determined to an optimum amount by trade-off between the HW amount and the performance.
また、本実施の形態ではロードバッファを最大ベクトル長の2倍(=要素数512)の値で分割した単位でロードバッファ番号を付与しているが、ロードバッファを最大ベクトル長の2倍以上の値で分割した単位にロードバッファ番号を付与しても良い。例えば要素数896=256*3+128など中途半端な要素数で分割しても良い。但し、要素数の分割単位を最大ベクトル長の整数倍にすると使用効率が高くなる。 In the present embodiment, the load buffer number is assigned in units obtained by dividing the load buffer by twice the maximum vector length (= 512 elements), but the load buffer is more than twice the maximum vector length. A load buffer number may be assigned to a unit divided by a value. For example, the number of elements may be divided into halfway numbers such as 896 = 256 * 3 + 128. However, if the division unit of the number of elements is an integral multiple of the maximum vector length, the use efficiency is increased.
また、本実施の形態では2つのベクトルロード命令発行待ちバッファ420、430と、2つのベクトル演算命令発行待ちバッファ410、470が用意してあるが、命令間整合性維持フラグも合わせて増やすことで、各命令発行待ちバッファを増やすことも可能である。 In this embodiment, two vector load instruction issue wait buffers 420 and 430 and two vector operation instruction issue wait buffers 410 and 470 are prepared, but by increasing the inter-instruction consistency maintenance flag as well. It is also possible to increase the buffer for waiting for issuing each instruction.
また、本実施の形態ではロードバッファからベクトル演算レジスタへのデータ転送パスは1つのみである構成としたが、複数のデータ転送パスを設けて性能の向上を図ることも可能である。 In this embodiment, only one data transfer path from the load buffer to the vector operation register is used. However, it is also possible to improve performance by providing a plurality of data transfer paths.
また、本実施の形態では機能ブロック間のインタフェース信号の内訳も図示したが、必要な情報が伝達できるならば図示した信号の内訳とは異なる信号を用いてもよい。 In the present embodiment, the breakdown of the interface signals between the functional blocks is also illustrated, but a signal different from the breakdown of the illustrated signals may be used as long as necessary information can be transmitted.
以下、本実施の形態におけるベクトル処理装置、ベクトルロード方法によって達成される効果を説明する。 Hereinafter, effects achieved by the vector processing apparatus and the vector loading method according to the present embodiment will be described.
第1の効果は、ベクトルロード命令のデータを使った後続のベクトル演算命令を早く実行可能となるためベクトル演算器の使用効率が向上してシステムトータルの性能が向上することである。
その理由は、ベクトルロード命令および後続のベクトル演算命令をデータ整合性を保った上で分割した要素毎に管理ができるようになり、全ての要素が揃わなくても分割した要素単位で要素が揃えばロードバッファからベクトル演算レジスタへの転送とそのデータを使ったベクトル演算命令を開始するよう制御することによる。
The first effect is that the subsequent vector operation instruction using the data of the vector load instruction can be executed quickly, so that the use efficiency of the vector operation unit is improved and the total system performance is improved.
The reason is that the vector load instruction and subsequent vector operation instructions can be managed for each divided element while maintaining data consistency, and even if not all elements are aligned, the elements are aligned in divided elements. For example, transfer from the load buffer to the vector operation register and control to start a vector operation instruction using the data.
第2の効果は、ロードバッファの使用効率が向上するためベクトルロード命令の処理の開始を早く行うことができることによりメモリからのロードデータ待ちとなる確率が減少するためシステムトータルの性能が向上することである。
その理由は、ベクトルロード命令の全ての要素が揃わなくても分割した要素単位で要素が揃えばロードバッファからベクトル演算レジスタへの転送を開始すると同時に分割した要素単位でロードバッファを解放することにより、あるベクトルロード命令のロードバッファ転送開始指示が全て出されなくても後続のベクトルロード命令で使用する分割単位の数以上解放されれば後続のベクトルロード命令の処理を開始するよう制御することによる。
The second effect is that since the load buffer usage efficiency is improved, the vector load instruction processing can be started quickly, thereby reducing the probability of waiting for load data from the memory and improving the total system performance. It is.
The reason is that even if all the elements of the vector load instruction are not aligned, if the elements are aligned in divided elements, transfer from the load buffer to the vector operation register is started and at the same time the load buffer is released in divided elements. By controlling to start the processing of the subsequent vector load instruction if it is released more than the number of division units used in the subsequent vector load instruction even if not all the load buffer transfer start instructions of the vector load instruction are issued .
1 命令デコード部
2 ベクトルロードリクエスト処理部
3 ロードデータ整列判定部
4 ベクトル命令発行部
5 ベクトル命令処理部
6 メモリアクセス制御部
7 メインメモリ
10 ビジー信号
11 ベクトルロード命令
12 ベクトル命令
13 確保番号通知
14 ロードバッファ解放通知
15 整列通知
16 ロードバッファ転送開始指示
17 ベクトル演算開始指示
18 タグ及びアドレス
19 タグ
20 タグ及びデータ
21 データ読み出しアドレス
22 読み出しデータ
201 アドレス変換部
202 使用ロードバッファ決定部
203 ロードバッファ使用中フラグ
204 ロードバッファ使用中フラグリセット信号生成部
205 タグ生成部
301 要素数セット部
302 要素数減算カウンタ部
303 ロードバッファ番号振り分け部
304 要素数カウンタ
305 整列判定部
351 サブロードバッファ格納予定要素数
401 ベクトル命令バッファ部
402 ベクトル演算器ビジー管理部
403 ロードバッファ転送パスビジー管理部
410、430 ベクトル演算命令発行待ちバッファ
411 ベクトル演算命令情報バッファ
412 未発行要素識別フラグ
413 命令間整合性維持フラグ
414 命令間整合性維持フラグチェック部
415 ベクトル演算命令発行チェック部
420、440 ベクトルロード命令発行待ちバッファ
421 ベクトルロード命令情報バッファ
422 未発行要素識別フラグ
423 命令間整合性維持フラグ
424 ロードバッファ番号
425 ロードバッファ使用箇所指示フラグ
426 命令間整合性維持フラグチェック部
427 特定ロードバッファ転送条件確認部
428 ベクトルロード命令発行チェック部
DESCRIPTION OF SYMBOLS 1 Instruction decode part 2 Vector load request process part 3 Load data alignment determination part 4 Vector instruction issue part 5 Vector instruction process part 6 Memory access control part 7 Main memory 10 Busy signal 11 Vector load instruction 12 Vector instruction 13 Secure number notification 14 Load Buffer release notification 15 Alignment notification 16 Load buffer transfer start instruction 17 Vector operation start instruction 18 Tag and address 19 Tag 20 Tag and data 21 Data read address 22 Read data 201 Address conversion unit 202 Load buffer determination unit 203 Load buffer busy flag 204 Load buffer busy flag reset signal generation unit 205 Tag generation unit 301 Element number setting unit 302 Element number subtraction counter unit 303 Load buffer number distribution unit 304 Element number counter 05 Alignment determination unit 351 Number of elements scheduled to be stored in sub load buffer 401 Vector instruction buffer unit 402 Vector arithmetic unit busy management unit 403 Load buffer transfer path busy management unit 410, 430 Vector operation instruction issue wait buffer 411 Vector operation instruction information buffer 412 Unissued element Identification flag 413 Inter-instruction consistency maintenance flag 414 Inter-instruction consistency maintenance flag check unit 415 Vector operation instruction issuance check unit 420, 440 Vector load instruction issuance buffer 421 Vector load instruction information buffer 422 Unissued element identification flag 423 Inter-instruction consistency Maintainability flag 424 Load buffer number 425 Load buffer usage location instruction flag 426 Inter-instruction consistency maintenance flag check unit 427 Specific load buffer transfer condition confirmation unit 428 De instruction issue checking unit
Claims (4)
前記メモリアクセス制御部が読み出した前記ベクトルデータを格納するロードバッファと、
ベクトル演算レジスタを備え、前記ロードバッファから前記ベクトル演算レジスタに転送された前記ベクトルデータをベクトル処理するベクトル処理部と、
前記受信した命令において処理される前記ベクトルデータの全要素を格納するために必要な前記ロードバッファを、前記ロードバッファを所定の要素数毎に区分けしたサブロードバッファを単位として確保し、確保された前記サブロードバッファを示す確保通知を生成するベクトルロードリクエスト処理部と、
前記ベクトルデータを構成する複数の要素を、前記サブロードバッファを単位とする複数の要素群に分け、前記複数の要素群のうちで全ての要素が前記メモリアクセス制御部により前記メインメモリから読み出された要素群について整列通知を発行するロードデータ整列判定部と、
前記確保通知に示された前記サブロードバッファに対応する前記整列通知が発行されたとき、前記整列通知に対応する前記サブロードバッファから前記ベクトル処理部への転送を開始するように制御するベクトル命令発行部
を具備するベクトル処理装置。 A memory access control unit that reads vector data from the main memory based on the received command;
A load buffer for storing the vector data read by the memory access control unit;
A vector processing unit comprising a vector operation register, and vector processing the vector data transferred from the load buffer to the vector operation register;
The load buffer necessary for storing all the elements of the vector data processed in the received instruction is secured in units of sub load buffers obtained by dividing the load buffer into predetermined elements. A vector load request processing unit for generating a reservation notification indicating the sub load buffer;
A plurality of elements constituting the vector data are divided into a plurality of element groups each having the subload buffer as a unit, and all elements of the plurality of element groups are read from the main memory by the memory access control unit. A load data alignment determination unit that issues an alignment notification for the element group
A vector instruction for controlling to start transfer from the subload buffer corresponding to the alignment notification to the vector processing unit when the alignment notification corresponding to the subload buffer indicated in the reservation notification is issued A vector processing device comprising an issuing unit.
請求項1に記載されたベクトル処理装置。 When the vector instruction issuance unit divides the vector data into the plurality of element groups and performs the transfer, the vector processing result executed in accordance with the received instruction is used by the vector load instruction in progress. 2. The vector processing device according to claim 1, wherein the vector operation register is controlled to start transfer from the load buffer to the vector processing unit on condition that the vector operation register does not compete with a preceding vector instruction.
請求項2に記載されたベクトル処理装置。 The vector processing device according to claim 2, wherein when the transfer is started, the vector instruction issuing unit performs control to release the load buffer in which the transfer has been started so that it can be used in a subsequent vector load instruction.
前記読み出すステップにおいて読み出された前記ベクトルデータをロードバッファに格納するステップと、 Storing the vector data read in the reading step in a load buffer;
前記ロードバッファからベクトル演算レジスタに転送された前記ベクトルデータをベクトル処理するステップと、 Vector processing the vector data transferred from the load buffer to a vector operation register;
前記受信した命令において処理される前記ベクトルデータの全要素を格納するために必要なロードバッファを、前記ロードバッファを所定の要素数毎に区分けしたサブロードバッファを単位として確保し、確保された前記サブロードバッファを示す確保通知を生成するステップと、 The load buffer necessary for storing all the elements of the vector data processed in the received instruction is secured in units of sub load buffers obtained by dividing the load buffer by a predetermined number of elements. Generating an allocation notification indicating a subload buffer;
前記ベクトルデータを構成する複数の要素を、前記サブロードバッファを単位とする複数の要素群に分け、前記複数の要素群のうちで全ての要素が前記メモリアクセス制御部により前記メインメモリから読み出された要素群について整列通知を発行するステップと、 A plurality of elements constituting the vector data are divided into a plurality of element groups each having the subload buffer as a unit, and all elements of the plurality of element groups are read from the main memory by the memory access control unit. Issuing an alignment notification for the set of elements;
前記確保通知に示された前記サブロードバッファに対応する前記整列通知が発行されたとき、前記整列通知に対応する前記サブロードバッファから前記ベクトル処理部への転送を開始するように制御するステップと Controlling to start transfer from the subload buffer corresponding to the alignment notification to the vector processing unit when the alignment notification corresponding to the subload buffer indicated in the reservation notification is issued;
を具備するベクトル処理方法。 A vector processing method comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008102198A JP4789269B2 (en) | 2008-04-10 | 2008-04-10 | Vector processing apparatus and vector processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008102198A JP4789269B2 (en) | 2008-04-10 | 2008-04-10 | Vector processing apparatus and vector processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009252133A JP2009252133A (en) | 2009-10-29 |
JP4789269B2 true JP4789269B2 (en) | 2011-10-12 |
Family
ID=41312744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008102198A Active JP4789269B2 (en) | 2008-04-10 | 2008-04-10 | Vector processing apparatus and vector processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4789269B2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5240270B2 (en) * | 2010-10-12 | 2013-07-17 | 日本電気株式会社 | Processor and vector load instruction execution method |
JP5348698B2 (en) * | 2010-10-27 | 2013-11-20 | エヌイーシーコンピュータテクノ株式会社 | Information processing apparatus and information processing method |
JP5699554B2 (en) * | 2010-11-11 | 2015-04-15 | 富士通株式会社 | Vector processing circuit, instruction issue control method, and processor system |
JP6413605B2 (en) * | 2014-10-16 | 2018-10-31 | 日本電気株式会社 | Vector arithmetic device, control method and program, and vector processing device |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06274526A (en) * | 1993-03-19 | 1994-09-30 | Hitachi Ltd | Vector processor |
JP2752902B2 (en) * | 1994-05-31 | 1998-05-18 | 甲府日本電気株式会社 | Vector processing equipment |
JP2000259609A (en) * | 1999-03-12 | 2000-09-22 | Hitachi Ltd | Data processing processor and system |
JP3726092B2 (en) * | 2003-07-04 | 2005-12-14 | エヌイーシーコンピュータテクノ株式会社 | Vector processing apparatus and vector loading method |
-
2008
- 2008-04-10 JP JP2008102198A patent/JP4789269B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2009252133A (en) | 2009-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4606142B2 (en) | Scheduling method, scheduling apparatus, and multiprocessor system | |
JP5894496B2 (en) | Semiconductor device | |
JP5270077B2 (en) | Arbitration circuit, crossbar, request selection method, and information processing apparatus | |
US20070174509A1 (en) | System for asynchronous dma command completion notification | |
US8769543B2 (en) | System and method for maximizing data processing throughput via application load adaptive scheduling and context switching | |
CN107729267B (en) | Distributed allocation of resources and interconnect structure for supporting execution of instruction sequences by multiple engines | |
JP4789269B2 (en) | Vector processing apparatus and vector processing method | |
KR20080105390A (en) | Method and apparatus for controlling instructions used in flash memory | |
KR20150056373A (en) | Multi-thread processing apparatus and method with sequential performance manner | |
WO2024041625A1 (en) | Instruction distribution method and device for multithreaded processor, and storage medium | |
US20060146864A1 (en) | Flexible use of compute allocation in a multi-threaded compute engines | |
JP2017162522A (en) | Method and apparatus for allocating interrupts in multi-core system | |
KR101306670B1 (en) | Memory control device and method for controlling same | |
JP4985452B2 (en) | Vector processing equipment | |
US11256543B2 (en) | Processor and instruction scheduling method | |
JP6817827B2 (en) | Accelerator processing management device, host device, accelerator processing execution system, method and program | |
CN105446935A (en) | Shared storage concurrent access processing method and apparatus | |
US20140013148A1 (en) | Barrier synchronization method, barrier synchronization apparatus and arithmetic processing unit | |
EP1704487B1 (en) | Dmac issue mechanism via streaming id method | |
CN115129369B (en) | Command distribution method, command distributor, chip and electronic device | |
JP6251417B2 (en) | Storage system and storage control method | |
JP2760273B2 (en) | Arithmetic device and control method thereof | |
CN117667223B (en) | A data risk solution method, computing engine, processor and electronic device | |
US8566829B1 (en) | Cooperative multi-level scheduler for virtual engines | |
JP5305472B2 (en) | Asynchronous FIFO order control circuit, data processing apparatus, and asynchronous FIFO order control method used therefor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110207 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110301 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110422 |
|
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: 20110627 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110715 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140729 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4789269 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |