JP5423801B2 - Information processing apparatus and data transfer method - Google Patents
Information processing apparatus and data transfer method Download PDFInfo
- Publication number
- JP5423801B2 JP5423801B2 JP2011531841A JP2011531841A JP5423801B2 JP 5423801 B2 JP5423801 B2 JP 5423801B2 JP 2011531841 A JP2011531841 A JP 2011531841A JP 2011531841 A JP2011531841 A JP 2011531841A JP 5423801 B2 JP5423801 B2 JP 5423801B2
- Authority
- JP
- Japan
- Prior art keywords
- read
- data
- address
- data elements
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0851—Cache with interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は、情報処理装置およびデータ転送方法に関し、特には、複数のバンク(メモリバンク)を有するキャッシュメモリにデータを転送する情報処理装置およびデータ転送方法に関する。 The present invention relates to an information processing apparatus and a data transfer method, and more particularly, to an information processing apparatus and a data transfer method for transferring data to a cache memory having a plurality of banks (memory banks).
情報処理装置であるベクトル計算機は、1マシンクロック(以下、単に「1クロック」と称する)ごとに複数のデータを同時に処理するために、複数のベクトルパイプラインを有している。ベクトル計算機は、1つのベクトル命令で処理されるベクトルデータ内の複数の要素を、複数のベクトルパイプラインのいずれかに格納する。各ベクトルパイプラインは、自己に格納された各要素を処理する。例えば、非特許文献1の214ページには、並列パイプラインおよび多重並列パイプラインが図示されている。
A vector computer which is an information processing apparatus has a plurality of vector pipelines in order to simultaneously process a plurality of data for each machine clock (hereinafter simply referred to as “one clock”). The vector computer stores a plurality of elements in vector data processed by one vector instruction in any of a plurality of vector pipelines. Each vector pipeline processes each element stored in it. For example,
ベクトルデータのベクトル長が短い場合でも、各ベクトルパイプラインでの処理時間が均等になるように、ベクトルデータは、要素ごとに、各ベクトルパイプラインにインタリーブされて保持される。 Even when the vector length of the vector data is short, the vector data is interleaved and held in each vector pipeline for each element so that the processing time in each vector pipeline is equalized.
具体的には、ベクトルパイプラインがN個ある場合、ベクトルパイプライン0は、要素0、要素N、要素2N、…を処理し、ベクトルパイプライン1は、要素1、要素N+1、要素2N+1、…を処理し、…、ベクトルパイプラインN−1は、要素N−1、要素2N−1、要素3N−1、…を処理することになる。
Specifically, when there are N vector pipelines,
1クロックごとに複数のデータを同時に処理する手法は、データの演算が行われるときだけでなく、データのロードまたはデータのストアが行われるときでも使用される。例えば、ベクトルパイプラインと同じ数の入出力ポートが、キャッシュメモリまたはメモリに設けられ、これら入出力ポートを使用することによって、キャッシュメモリまたはメモリに対して、データのロードまたはデータのストアを行える構成が知られている。 The technique of simultaneously processing a plurality of data for each clock is used not only when data is calculated, but also when data is loaded or stored. For example, the same number of input / output ports as the vector pipeline are provided in the cache memory or memory, and by using these input / output ports, data can be loaded or stored in the cache memory or memory. It has been known.
主記憶装置では、ベクトルパイプラインの入出力ポートと1対1で対応する入出力ポートごとに、データ格納部が設けられる。 In the main storage device, a data storage unit is provided for each input / output port that has a one-to-one correspondence with the input / output ports of the vector pipeline.
アクセスすべき主記憶装置のアドレスが指定されれば、主記憶装置内の入出力ポートと主記憶装置内のデータ格納部とが、一意に決定される。 When the address of the main storage device to be accessed is designated, the input / output port in the main storage device and the data storage unit in the main storage device are uniquely determined.
また、一般にベクトル計算機にて使用される主記憶装置では、データが要素ごとにインタリーブされて格納される。これは、ベクトル計算機が、主記憶装置の連続するアドレスに格納された複数のデータをアクセスした場合に、複数のデータ格納部が並列にアクセスされることにより、最大のデータアクセス性能が達成できるようにするためである。 Further, in a main storage device generally used in a vector computer, data is interleaved and stored for each element. This is because, when the vector computer accesses a plurality of data stored at consecutive addresses in the main storage device, the maximum data access performance can be achieved by accessing a plurality of data storage units in parallel. It is to make it.
上述したベクトル計算機、具体的には、複数のベクトルパイプラインと複数の入出力ポートとを持ったベクトルプロセッサが、特許文献1に開示されている。
The above-described vector computer, specifically, a vector processor having a plurality of vector pipelines and a plurality of input / output ports is disclosed in
また、ベクトルレジスタに格納された多数の要素を、連続する複数の要素ごとに、主記憶装置のデータ格納部にインタリーブして格納する方法が、特許文献2に開示されている。
Further,
このベクトルレジスタは、複数のバンクを有する。各バンクは、ベクトルパイプラインと1対1で対応する。各バンクは、自己と対応するベクトルパイプラインに含まれ、要素(具体的には、要素を構成するデータ)を格納する。各バンクには、連続番号が付与されている。各バンク内の要素は、クロスバスイッチを介して、主記憶装置に転送される。 This vector register has a plurality of banks. Each bank has a one-to-one correspondence with the vector pipeline. Each bank is included in a vector pipeline corresponding to itself, and stores elements (specifically, data constituting the elements). A serial number is assigned to each bank. The elements in each bank are transferred to the main storage device via the crossbar switch.
特許文献2に記載のベクトル処理装置は、各バンクにおいて要素の読み出しを開始する位置として、そのバンクに付与された連続番号を用いることによって、各バンクから読み出された要素が、クロスバスイッチの出力ポートで競合するという問題を回避している。
The vector processing device described in
一方、ベクトル計算機が利用する主記憶装置にキャッシュメモリを追加して、データへのアクセス時間の短縮および高いスループットを実現することは可能である。 On the other hand, it is possible to add a cache memory to the main memory used by the vector computer to reduce the access time to data and achieve high throughput.
キャッシュメモリは、メモリアドレスが連続している複数のデータを、ブロックデータとして格納する。以下では、ブロックデータのメモリアドレスにて規定される記憶領域、すなわち、ブロックデータが格納される記憶領域を「ブロック」と称する。 The cache memory stores a plurality of data having consecutive memory addresses as block data. Hereinafter, a storage area defined by a memory address of block data, that is, a storage area in which block data is stored is referred to as a “block”.
キャッシュメモリは、ブロックのメモリアドレスとブロックの状態とを記憶しているアドレスアレイと、ブロックデータを格納しているデータアレイと、を含む。キャッシュメモリは、リクエストされたメモリアドレスが、アドレスアレイに格納されているかを検索することで、キャッシュメモリが行う処理を決定して動作する。 The cache memory includes an address array that stores the memory address of the block and the state of the block, and a data array that stores block data. The cache memory operates by determining whether the requested memory address is stored in the address array, thereby determining a process to be performed by the cache memory.
キャッシュメモリが使用された場合、ベクトルデータをストアする処理(以下「ベクトルストア」と称する)のような、メモリアドレスが連続している複数のデータを書き込む処理では、あるブロックに対する複数の書き込みリクエストが、キャッシュメモリに連続して到着することになる。 When a cache memory is used, in a process of writing a plurality of data having consecutive memory addresses, such as a process of storing vector data (hereinafter referred to as “vector store”), a plurality of write requests for a certain block are received. , Will arrive continuously in the cache memory.
ある書き込みリクエストにてアクセスされるブロックが、1つ前の書き込みリクエストにてアクセスされるブロックと同じ場合には、キャッシュメモリは、アドレスアレイを検索することなく、キャッシュメモリの動作を決定することが可能である。 When the block accessed by a certain write request is the same as the block accessed by the previous write request, the cache memory may determine the operation of the cache memory without searching the address array. Is possible.
したがって、メモリアドレスが連続するデータの書き込みリクエストが、連続してキャッシュメモリに到着するように、ベクトル計算機が動作すれば、キャッシュメモリがアドレスアレイを検索する時間と消費電力を削減することができる。 Therefore, if the vector computer operates so that data write requests having consecutive memory addresses continuously arrive at the cache memory, the time and power consumption for the cache memory to search the address array can be reduced.
特許文献2が開示しているベクトルストア方法では、次のような問題がある。
The vector store method disclosed in
まず、バンクに付与された連続番号を、各バンクにおける要素の読み出しを開始する位置として用いる手法では、各バンクから読み出された要素が、クロスバスイッチの出力ポートで競合することは回避できるが、主記憶装置内の同じデータ格納部に格納される、メモリアドレスが連続する複数の要素が、連続して主記憶装置に書き込まれなくなる。 First, in the method using the serial number assigned to the bank as a position to start reading the element in each bank, it is possible to avoid that the element read from each bank competes at the output port of the crossbar switch. A plurality of elements having consecutive memory addresses stored in the same data storage unit in the main storage device are not written continuously to the main storage device.
そのため、主記憶装置にキャッシュメモリが付加された場合、同じブロックに格納される複数の要素を連続してキャッシュメモリに書き込むことができず、アドレスアレイを検索する時間および消費電力を削減することができない。例えば、特許文献2の図8に示されたように、1〜7番要素は、0番要素が出力されてから25クロック分遅れて出力される。
Therefore, when a cache memory is added to the main storage device, a plurality of elements stored in the same block cannot be written to the cache memory in succession, and the time and power consumption for searching the address array can be reduced. Can not. For example, as shown in FIG. 8 of
図1は、ベクトルパイプライン数が8、キャッシュメモリのブロックサイズが64B(バイト)、キャッシュメモリのデータ格納部の数が8の場合に、特許文献2で開示されている手法を実行した場合に生じる問題点を説明するための図である。
FIG. 1 shows a case where the technique disclosed in
図1の上半分には、8個のベクトルパイプライン(ベクトルパイプライン0〜7)における128個の要素(要素0〜127)の配置、さらに言えば、8個のベクトルパイプライン内のバンクにて構成されるベクトルレジスタ810における要素0〜127の配置が示されている。なお、要素0から要素127を、要素の番号順に並べると、ベクトルデータが復元される。
In the upper half of FIG. 1, the arrangement of 128 elements (
図1の下半分には、1クロックごとに、クロスバスイッチ111から、キャッシュメモリ内の8個のデータ格納部(データ格納部0〜7)に出力される要素が示されている。図1の下半分において、太字の枠811は、キャッシュメモリのブロックの境界を示す。
The lower half of FIG. 1 shows elements that are output from the
ここで、ベクトルストアの開始アドレスは「0」、ストライドは8Bとしている。キャッシュメモリのブロックサイズが64Bであり、ストライドが8Bであるため、各データ格納部内の各ブロックには、メモリアドレスが連続する8個の要素、つまり、要素番号が連続する8個の要素が格納される。 Here, the start address of the vector store is “0”, and the stride is 8B. Since the block size of the cache memory is 64B and the stride is 8B, each block in each data storage unit stores eight elements having consecutive memory addresses, that is, eight elements having consecutive element numbers. Is done.
図1の上半分に示された太字の縦線801は、キャッシュメモリのブロックの境界を示している。例えば、要素0〜7までが、キャッシュメモリの同一のブロックに格納される。
A bold
各ベクトルパイプラインは、読み出しポインタを有する。各読み出しポインタは、ベクトルパイプライン内のバンクから要素を読み出す位置を、図1の上半分に示された読み出し位置0〜15を用いて指定する。
Each vector pipeline has a read pointer. Each read pointer designates a position at which an element is read from a bank in the vector pipeline by using
図1の上半分に示された各要素802(太字の四角で示されている要素、具体的には、要素0、要素9、要素18、要素27、要素36、要素45、要素54、要素63)は、各ベクトルパイプライン内のバンクから最初に読み出される要素である。
Each
最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operation is performed.
ベクトルパイプライン0の読み出しポインタは、読み出し位置として「0」を出力する。ベクトルパイプライン1の読み出しポインタは、読み出し位置として「1」を出力する。ベクトルパイプライン2の読み出しポインタは、読み出し位置として「2」を出力する。ベクトルパイプライン3の読み出しポインタは、読み出し位置として「3」を出力する。ベクトルパイプライン4の読み出しポインタは、読み出し位置として「4」を出力する。ベクトルパイプライン5の読み出しポインタは、読み出し位置として「5」を出力する。ベクトルパイプライン6の読み出しポインタは、読み出し位置として「6」を出力する。ベクトルパイプライン7の読み出しポインタは、読み出し位置として「7」を出力する。
The read pointer of the
このため、ベクトルパイプライン0内のバンクからは、読み出し位置「0」に対応する要素0が読み出され、要素0はクロスバスイッチ111に入力される。また、ベクトルパイプライン1内のバンクからは、読み出し位置「1」に対応する要素9が読み出され、要素9はクロスバスイッチ111に入力される。また、ベクトルパイプライン2内のバンクからは、読み出し位置「2」に対応する要素18が読み出され、要素18はクロスバスイッチ111に入力される。また、ベクトルパイプライン3内のバンクからは、読み出し位置「3」に対応する要素27が読み出され、要素27はクロスバスイッチ111に入力される。また、ベクトルパイプライン4内のバンクからは、読み出し位置「4」に対応する要素36が読み出され、要素36はクロスバスイッチ111に入力される。また、ベクトルパイプライン5内のバンクからは、読み出し位置「5」に対応する要素45が読み出され、要素45はクロスバスイッチ111に入力される。また、ベクトルパイプライン6内のバンクからは、読み出し位置「6」に対応する要素54が読み出され、要素54はクロスバスイッチ111に入力される。また、ベクトルパイプライン7内のバンクからは、読み出し位置「7」に対応する要素63が読み出され、要素63はクロスバスイッチ111に入力される。
Therefore, the
要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素63は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ内の、データ格納部0、データ格納部1、データ格納部2、データ格納部3、データ格納部4、データ格納部5、データ格納部6、データ格納部7に格納される(図1のtime1参照)。このため、クロスバスイッチ111では出力の競合は発生しない。
The
続いて、2番目のクロックが入力されると、以下のような動作が実行される。 Subsequently, when the second clock is input, the following operation is performed.
ベクトルパイプライン0の読み出しポインタは、読み出し位置として「1」を出力する。ベクトルパイプライン1の読み出しポインタは、読み出し位置として「2」を出力する。ベクトルパイプライン2の読み出しポインタは、読み出し位置として「3」を出力する。ベクトルパイプライン3の読み出しポインタは、読み出し位置として「4」を出力する。ベクトルパイプライン4の読み出しポインタは、読み出し位置として「5」を出力する。ベクトルパイプライン5の読み出しポインタは、読み出し位置として「6」を出力する。ベクトルパイプライン6の読み出しポインタは、読み出し位置として「7」を出力する。ベクトルパイプライン7の読み出しポインタは、読み出し位置として「8」を出力する。
The read pointer of the
このため、ベクトルパイプライン0内のバンクからは要素8が読み出され、要素8はクロスバスイッチ111に入力される。また、ベクトルパイプライン1内のバンクからは要素17が読み出され、要素17はクロスバスイッチ111に入力される。また、ベクトルパイプライン2内のバンクからは要素26が読み出され、要素26はクロスバスイッチ111に入力される。また、ベクトルパイプライン3内のバンクからは要素35が読み出され、要素35はクロスバスイッチ111に入力される。また、ベクトルパイプライン4内のバンクからは要素44が読み出され、要素44はクロスバスイッチ111に入力される。また、ベクトルパイプライン5内のバンクからは要素53が読み出され、要素53はクロスバスイッチ111に入力される。また、ベクトルパイプライン6内のバンクからは要素62が読み出され、要素62はクロスバスイッチ111に入力される。また、ベクトルパイプライン7内のバンクからは要素71が読み出され、要素71はクロスバスイッチ111に入力される。
Therefore, the
要素8、要素17、要素26、要素35、要素44、要素53、要素62および要素71は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ内の、データ格納部1、データ格納部2、データ格納部3、データ格納部4、データ格納部5、データ格納部6、データ格納部7、データ格納部0に格納される(図1のtime2参照)。このため、クロスバスイッチ111では出力の競合は発生しない。
The
以下、3番目のクロック〜16番目のクロックのそれぞれが入力された際には、図1に示すように各ベクトルパイプラインから各要素が読み出される。 Hereinafter, when each of the third clock to the 16th clock is input, each element is read from each vector pipeline as shown in FIG.
このように、1つのクロックに応じて各ベクトルパイプラインから読み出される要素は、互いに異なるデータ格納部に格納されるため、クロスバスイッチ111での出力の競合が発生しない。そのため、クロスバスイッチ111でのベクトルストアの性能低下は発生しない。
In this way, since elements read from each vector pipeline in accordance with one clock are stored in different data storage units, output contention in the
しかしながら、図1の下半分に示す通り、キャッシュメモリのデータ格納部内の同じブロックに格納される複数の要素が、そのブロックを有するデータ格納部に連続して到着しない場合がある。 However, as shown in the lower half of FIG. 1, a plurality of elements stored in the same block in the data storage unit of the cache memory may not arrive at the data storage unit having the block continuously.
例えば、データ格納部0では、同じブロックに格納される要素0と要素1〜7とは、互いに8クロック離れて到着する。そして、要素0と要素1〜7の間に、他のブロックに格納される要素71〜64が入り込んでいる。
For example, in the
このため、同一ブロックに格納される要素が、連続してデータ格納部に到着する場合のように、アドレスアレイを検索する時間および消費電力を削減することができない。 For this reason, it is not possible to reduce the time and power consumption for searching the address array as in the case where elements stored in the same block arrive at the data storage unit continuously.
次に、特許文献2には、要素0が、同一ブロックにメモリアドレス順に格納される複数の要素のうちの最初の要素となる例だけが示されているが、通常、要素0は、任意のメモリアドレスに書き込むことが可能である。
Next,
要素0が、ブロックの先頭アドレス以外に書き込まれる場合、単純にバンク番号(ベクトルパイプライン番号)を各バンクの読み出し開始位置として用いる手法では、クロスバスイッチの出力ポートでの要素の競合を完全には回避することができない。このため、ベクトルストアの実行時間が増加する。
When
さらに、キャッシュメモリ内の同じデータ格納部内の異なるブロックに格納される2つの要素が、クロスバスイッチの出力ポートで競合する。このため、場合によると、同一ブロックに格納される要素が、連続してデータ格納部に到着しなくなる。よって、アドレスアレイを検索する時間および消費電力を削減することができなくなる。 Furthermore, two elements stored in different blocks in the same data storage in the cache memory compete at the output port of the crossbar switch. For this reason, in some cases, elements stored in the same block do not reach the data storage unit continuously. Therefore, it is impossible to reduce the time and power consumption for searching the address array.
図2は、ベクトルパイプライン数が8、キャッシュメモリのブロックサイズが64B、キャッシュメモリのデータ格納部の数が8の場合に、特許文献2で開示されている手法を実行した場合に生じる問題点を説明するための図である。
FIG. 2 shows a problem that occurs when the technique disclosed in
図2の上半分には、8個のベクトルパイプライン(ベクトルパイプライン0〜7)における128個の要素(要素0〜127)の配置、さらに言えば、8個のベクトルパイプライン内のバンクにて構成されるベクトルレジスタ910における要素0〜127の配置が示されている。なお、要素0から要素127を、要素の番号順に並べると、ベクトルデータが復元される。
In the upper half of FIG. 2, the arrangement of 128 elements (
図2の下半分には、1クロックごとに、クロスバスイッチ111から、キャッシュメモリ内の8個のデータ格納部(データ格納部0〜7)に出力される要素が示されている。
The lower half of FIG. 2 shows elements output from the
ここで、ベクトルストアの開始アドレスは「8」、ストライドは8Bとしている。キャッシュメモリのブロックサイズが64Bであり、ストライドが8Bであるため、各データ格納部内の各ブロックには、メモリアドレスが連続する8個の要素、つまり、要素番号が連続する8個の要素が格納可能である。 Here, the start address of the vector store is “8” and the stride is 8B. Since the block size of the cache memory is 64B and the stride is 8B, each block in each data storage unit stores eight elements having consecutive memory addresses, that is, eight elements having consecutive element numbers. Is possible.
図2の上半分に示された太字の縦線901は、キャッシュメモリのブロックの境界を示している。例えば、要素7〜14までが、キャッシュメモリの同一のブロックに格納される。
A bold
図2の上半分に示された各要素902(太字の四角で示されている要素、具体的には、要素0、要素9、要素18、要素27、要素36、要素45、要素54、要素63)は、各ベクトルパイプライン内のバンクから最初に読み出される要素である。
Each
最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operation is performed.
ベクトルパイプライン0の読み出しポインタは、読み出し位置として「0」を出力する。ベクトルパイプライン1の読み出しポインタは、読み出し位置として「1」を出力する。ベクトルパイプライン2の読み出しポインタは、読み出し位置として「2」を出力する。ベクトルパイプライン3の読み出しポインタは、読み出し位置として「3」を出力する。ベクトルパイプライン4の読み出しポインタは、読み出し位置として「4」を出力する。ベクトルパイプライン5の読み出しポインタは、読み出し位置として「5」を出力する。ベクトルパイプライン6の読み出しポインタは、読み出し位置として「6」を出力する。ベクトルパイプライン7の読み出しポインタは、読み出し位置として「7」を出力する。
The read pointer of the
このため、ベクトルパイプライン0内のバンクからは要素0が読み出され、要素0はクロスバスイッチ111に入力される。また、ベクトルパイプライン1内のバンクからは要素9が読み出され、要素9はクロスバスイッチ111に入力される。また、ベクトルパイプライン2内のバンクからは要素18が読み出され、要素18はクロスバスイッチ111に入力される。また、ベクトルパイプライン3内のバンクからは要素27が読み出され、要素27はクロスバスイッチ111に入力される。また、ベクトルパイプライン4内のバンクからは要素36が読み出され、要素36はクロスバスイッチ111に入力される。また、ベクトルパイプライン5内のバンクからは要素45が読み出され、要素45はクロスバスイッチ111に入力される。また、ベクトルパイプライン6内のバンクからは要素54が読み出され、要素54はクロスバスイッチ111に入力される。また、ベクトルパイプライン7内のバンクからは要素63が読み出され、要素63はクロスバスイッチ111に入力される。
Therefore,
要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素63は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ内の、データ格納部0、データ格納部1、データ格納部2、データ格納部3、データ格納部4、データ格納部5、データ格納部6、データ格納部0に格納される。このため、クロスバスイッチ111では、データ格納部0への出力において、要素0と要素63の競合が発生する。そのため、クロスバスイッチ111で、ベクトルストアの性能が低下する。
The
また、図2では、要素0が要素63よりも先にデータ格納部0に到着しているが、要素0と要素63の到着順序は、クロスバスイッチ111での競合調停の手法に依存する。そのため、同じブロックに格納される要素が連続してデータ格納部に到着することが保証できなくなる。
In FIG. 2, the
本発明の目的は、上述した課題である、同じブロックに格納される要素が連続してデータ格納部に到着しないことを解決可能な情報処理装置およびデータ転送方法を提供することにある。 An object of the present invention is to provide an information processing apparatus and a data transfer method that can solve the above-described problem that elements stored in the same block do not continuously arrive at a data storage unit.
本発明の情報処理装置は、互いに異なるアドレスに対応づけられた所定サイズのメモリブロックを有するn(nは2以上の整数)個のメモリバンクを備えたキャッシュメモリに、並び順が決まっているm個のデータ要素を転送する情報処理装置であって、
n個のレジスタバンクを有し、前記m個のデータ要素が、前記並び順に前記データ要素単位でインタリーブされて前記n個のレジスタバンクに順番に格納される、格納手段と、
データ要素間のストライドを示すストライド情報と、前記並び順が先頭のデータ要素のアドレスである開始アドレスと、を受け付けると、前記所定サイズを前記ストライドで割って処理サイズを算出し、また、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致するかを判断する制御手段と、
前記m個のデータ要素を、前記並び順が連続しかつ前記処理サイズとnを乗算した値の数のデータ要素からなる処理グループに分けていき、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致すると判断された場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素を前記並び順で前記処理サイズの数ごとに分けたブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する処理手段と、を含む。In the information processing apparatus according to the present invention, m is arranged in a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses. An information processing device for transferring data elements,
storage means having n register banks, wherein the m data elements are interleaved in units of the data elements in the arrangement order and are stored in the n register banks in order.
When the stride information indicating the stride between data elements and the start address which is the address of the first data element in the arrangement order are received, the processing size is calculated by dividing the predetermined size by the stride, and the start Control means for determining whether the address matches the start address of any of the memory blocks;
The m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. Processing means for transferring.
本発明のデータ転送方法は、互いに異なるアドレスに対応づけられた所定サイズのメモリブロックを有するn(nは2以上の整数)個のメモリバンクを備えたキャッシュメモリに、並び順が決まっているm個のデータ要素を転送する情報処理装置でのデータ転送方法であって、
前記m個のデータ要素を、前記並び順に前記データ要素単位でインタリーブしてn個のレジスタバンクに順番に格納し、
データ要素間のストライドを示すストライド情報と、前記並び順が先頭のデータ要素のアドレスである開始アドレスと、を受け付けると、前記所定サイズを前記ストライドで割って処理サイズを算出し、また、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致するかを判断し、
前記m個のデータ要素を、前記並び順が連続しかつ前記処理サイズとnを乗算した値の数のデータ要素からなる処理グループに分けていき、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致すると判断された場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素を前記並び順で前記処理サイズの数ごとに分けたブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する。According to the data transfer method of the present invention, the order of arrangement is determined in a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses. A data transfer method in an information processing apparatus for transferring individual data elements,
The m data elements are interleaved in units of the data elements in the arrangement order, and sequentially stored in n register banks,
When the stride information indicating the stride between data elements and the start address which is the address of the first data element in the arrangement order are received, the processing size is calculated by dividing the predetermined size by the stride, and the start Determine whether the address matches the start address of any memory block,
The m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. Forward.
本発明によれば、キャッシュメモリにデータ要素を転送して格納する際に、キャッシュメモリがアドレスアレイを検索する時間と消費電力を削減することが可能になる。 According to the present invention, when a data element is transferred and stored in the cache memory, it is possible to reduce time and power consumption for the cache memory to search the address array.
以下、本発明の一実施形態の情報処理装置であるベクトルプロセッサについて図面を参照して詳細に説明する。なお、本実施形態の情報処理装置は、ベクトルプロセッサに限らず、複数の演算用パイプラインを有し、各演算用パイプラインが格納するデータを、キャッシュメモリ内の複数のバンク(メモリバンク)に転送する情報処理装置であればよい。 Hereinafter, a vector processor which is an information processing apparatus according to an embodiment of the present invention will be described in detail with reference to the drawings. The information processing apparatus according to the present embodiment is not limited to a vector processor, and has a plurality of calculation pipelines. Data stored in each calculation pipeline is stored in a plurality of banks (memory banks) in the cache memory. Any information processing device to be transferred may be used.
図3は、本実施形態のベクトルプロセッサの構成例を示すブロック図である。 FIG. 3 is a block diagram illustrating a configuration example of the vector processor according to the present embodiment.
図3において、ベクトルプロセッサは、CPU(Central Processing Unit)101を含む。 In FIG. 3, the vector processor includes a CPU (Central Processing Unit) 101.
CPU101は、命令発行制御部102と、ベクトル処理部103と、アドレス計算部104と、を含む。また、CPU101は、キャッシュメモリ105を介して、主記憶装置106に接続されている。
The
キャッシュメモリ105は、複数のデータ格納部107−0〜107−7を含む。
The
各データ格納部107−0〜107−7は、メモリバンクである。各データ格納部107−0〜107−7は、メモリアドレスが連続する複数個の要素または1つの要素を格納するための格納領域(メモリブロック、以下「ブロック」と称する)を含む。各データ格納部107−0〜107−7は、複数のブロックを有する。なお、各ブロックのサイズ(所定サイズ)は、64Bである。また、要素のサイズは、8Bである。また、メモリアドレスは、64bitである。 Each data storage unit 107-0 to 107-7 is a memory bank. Each data storage unit 107-0 to 107-7 includes a plurality of elements having consecutive memory addresses or a storage area (memory block, hereinafter referred to as “block”) for storing one element. Each data storage unit 107-0 to 107-7 has a plurality of blocks. The size (predetermined size) of each block is 64B. The element size is 8B. The memory address is 64 bits.
本実施形態では、データ格納部107−0は、メモリアドレス0〜56のデータをキャッシュするためのブロック、および、メモリアドレス512〜568のデータをキャッシュするためのブロックを有する。 In the present embodiment, the data storage unit 107-0 includes a block for caching data at memory addresses 0 to 56 and a block for caching data at memory addresses 512 to 568.
データ格納部107−1は、メモリアドレス64〜120のデータをキャッシュするためのブロック、および、メモリアドレス576〜632のデータをキャッシュするためのブロックを有する。 The data storage unit 107-1 includes a block for caching data at memory addresses 64-120 and a block for caching data at memory addresses 576-632.
データ格納部107−2は、メモリアドレス128〜184のデータをキャッシュするためのブロック、および、メモリアドレス640〜696のデータをキャッシュするためのブロックを有する。 The data storage unit 107-2 includes a block for caching data at memory addresses 128 to 184 and a block for caching data at memory addresses 640 to 696.
データ格納部107−3は、メモリアドレス192〜248のデータをキャッシュするためのブロック、および、メモリアドレス704〜760のデータをキャッシュするためのブロックを有する。 The data storage unit 107-3 includes a block for caching data at memory addresses 192 to 248 and a block for caching data at memory addresses 704 to 760.
また、データ格納部107−7は、メモリアドレス448〜504のデータをキャッシュするためのブロック、および、メモリアドレス960〜1016のデータをキャッシュするためのブロックを有する。 The data storage unit 107-7 includes a block for caching data at memory addresses 448 to 504 and a block for caching data at memory addresses 960 to 1016.
つまり、データ格納部107−0〜107−7には、所定の記憶領域(64B)を有するブロックが、メモリアドレス順にインタリーブされた状態で設定されている。 That is, blocks having a predetermined storage area (64B) are set in the data storage units 107-0 to 107-7 in an interleaved state in the order of memory addresses.
本実施形態では、メモリバンク数(n)を「8」にしているが、バンク数は2以上の整数、さらに言えば、任意の2のべき乗の数であればよい。 In the present embodiment, the number of memory banks (n) is “8”, but the number of banks may be an integer of 2 or more, more specifically, an arbitrary power of 2.
ベクトル処理部103は、複数のベクトルパイプライン109−0〜109−7と、ベクトルストア制御部110と、クロスバスイッチ111と、を含む。なお、ベクトルパイプライン109のサフィックスは、そのベクトルパイプラインに付された「番号」を意味する。
The
本実施形態では、ベクトルパイプラインの数(n)を「8」としているが、ベクトルパイプラインの数は2以上の整数、さらに言えば、任意の2のべき乗の数であればよい。 In the present embodiment, the number of vector pipelines (n) is “8”, but the number of vector pipelines may be an integer greater than or equal to 2, more specifically, any number of powers of 2.
各ベクトルパイプライン109−0〜109−7は、同一構成である。このため、ベクトルパイプライン109−0〜109−7のうち、ベクトルパイプライン109−0について説明を行う。 Each vector pipeline 109-0 to 109-7 has the same configuration. Therefore, the vector pipeline 109-0 among the vector pipelines 109-0 to 109-7 will be described.
ベクトルパイプライン109−0は、ベクトル演算器112−0と、ベクトルレジスタ113−0と、を含む。ベクトルレジスタ113−0は、読み出し位置制御部114−0と、バンク113A−0と、を含む。なお、ベクトル演算器112とベクトルレジスタ113と読み出し位置制御部114とバンク113Aの各サフィックスは、それらが含まれるベクトルパイプライン109に付された「番号」を意味する。
The vector pipeline 109-0 includes a vector calculator 112-0 and a vector register 113-0. The vector register 113-0 includes a read position control unit 114-0 and a
256個の要素(要素0〜255)が、バンク113A−0〜113A−7のいずれかに格納される。なお、要素は、一般的にデータ要素と呼ぶことができる。また、バンク113−0〜113A−7のそれぞれは、一般的にレジスタバンクと呼ぶことができる。
256 elements (
256個の要素は、並び順が決まっている。本実施形態では、256個の要素の並び順は、要素0から要素255の順である。このため、要素0が、256個の要素(要素0〜255)のうち、並び順が先頭の要素となる。本実施形態では要素の数mとして256を用いているが、mは256に限らない。
The order of the 256 elements is determined. In this embodiment, the arrangement order of 256 elements is the order of
本実施形態では、ベクトルパイプライン109−0(具体的には、バンク113A−0)には、要素8N(N=0、1、2、…、31)が格納される。ベクトルパイプライン109−1(具体的には、バンク113A−1)には、要素「8N+1」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109−2(具体的には、バンク113A−2)には、要素「8N+2」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109−3(具体的には、バンク113A−3)には、要素「8N+3」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109−4(具体的には、バンク113A−4)には、要素「8N+4」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109−5(具体的には、バンク113A−5)には、要素「8N+5」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109−6(具体的には、バンク113A−6)には、要素「8N+6」(N=0、1、2、…、31)が格納される。また、ベクトルパイプライン109−7(具体的には、バンク113A−7)には、要素「8N+7」(N=0、1、2、…、31)が格納される。
In the present embodiment, the element 8N (N = 0, 1, 2,..., 31) is stored in the vector pipeline 109-0 (specifically, the
つまり、256個の要素が、並び順で要素ごとにインタリーブされて8個のバンク113A−0〜113A−7に順番に格納されている。
That is, 256 elements are interleaved element by element in the order of arrangement and stored in the eight
クロスバスイッチ111は、8個の入力ポートと8個の出力ポートとを備える。クロスバスイッチ111の入力ポート数は、ベクトルパイプライン109の個数と同数である。クロスバスイッチ111の出力ポート数は、データ格納部107の個数と同数である。
The
ベクトルストアでは、クロスバスイッチ111の入力ポートに、アドレス計算部104からのメモリアドレスと、ベクトルレジスタ113からの要素(書き込みデータ)が入力される。クロスバスイッチ111は、メモリアドレスにて決定されるデータ格納部107に接続された出力ポートに、メモリアドレスと要素(書き込みデータ)とを出力する。
In the vector store, the memory address from the
命令発行制御部102は、並び順が先頭の要素0のアドレスである開始アドレス(以下、単に「開始アドレス」と称する)と、要素間(データ要素間)のストライドを示すストライド情報(以下、単に「ストライド」と称する)とを、ベクトルストア制御部110と、アドレス計算部104と、に提供する。
The instruction
ベクトルストア制御部110は、一般的に制御手段と呼ぶことができる。
Vector
ベクトルストア制御部110は、命令発行制御部102から、ストライドと開始アドレスとを受け付けると、ブロックサイズ(64B)をストライドで割って処理サイズ(以下「処理グループのサイズ」と称する)を算出する。また、ベクトルストア制御部110は、開始アドレスがいずれかのブロックの先頭のアドレスと一致するかを判断する。
When the vector
ベクトルストア制御部110は、開始アドレスとストライドとに基づいて、各ベクトルレジスタ113において要素の読み出しを開始する位置を補正するかどうかを判断する。
Based on the start address and stride, the vector
例えば、ベクトルストア制御部110は、ブロックサイズ(64B)と、命令発行制御部102からのストライド(例えば、8B)と、キャッシュメモリ105内のバンク数(8個)と、ベクトルパイプライン数(8個)と、に基づいて、処理グループのサイズを決定する。
For example, the vector
ベクトルストア制御部110は、各ベクトルレジスタ113において要素の読み出しを開始する位置を補正するかどうかの判断結果(以下、単に「判断結果」と称する)と、処理グループのサイズとを、各ベクトルレジスタ113内の読み出し位置制御部114に伝える。ベクトルストア制御部110については、後で詳しく説明する。
The vector
各読み出し位置制御部114は、処理部114Aに含まれる。処理部114Aは、一般的に処理手段と呼ぶことができる。
Each readout
処理部114Aは、256個の要素を、処理グループに分けていく。処理グループは、並び順が連続し、かつ、処理グループのサイズとベクトルレジスタ113の個数とを乗算した値の数のデータ要素からなる。
The
処理部114Aは、開始アドレスがキャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致すると判断された場合には、以下の動作を行う。
When it is determined that the start address matches the start address of any block in the
処理部114Aは、256個の要素を処理グループに分けるごとに、その処理グループ内の要素を並び順に処理グループのサイズごとに分けたときに生成されるブロックデータのそれぞれから、1つずつ、要素が並列に読み出されて、その処理グループ内の要素が全て読み出されるように、8個のバンク113Aから並列に要素を読み出しキャッシュメモリ105に転送する。
Each time the
また、処理部114Aは、開始アドレスが、キャッシュメモリ105内のいずれかのブロック内の先頭のアドレスと一致しない場合には、以下の動作を行う。
Further, the
処理部114Aは、256個の要素を処理グループに分けるごとに、その処理グループ内のデータ要素に開始アドレスとストライドとに基づいてアドレスを割り当ててそのアドレスに基づいてその処理グループ内のデータ要素をブロックのいずれかに対応する9個のブロックデータに分けた際に、その9個のブロックデータの中でアドレスが最も大きい最後部ブロックデータ以外の8個のブロックデータのそれぞれから、1つずつ、要素が並列に読み出されていき、その後、9個のブロックデータのうちアドレスが最も小さい先頭ブロックデータ内の要素が全て読み出されると、9個のブロックデータのうち先頭ブロックデータ以外の8のブロックデータのそれぞれから、1つずつ、読み出されていない要素が並列に読み出されて、その処理グループ内の要素が全て読み出されるように、8個のバンク113Aから並列に要素を読み出しキャッシュメモリ105に転送する。
Each time the
各読み出し位置制御部114は、ベクトルストア制御部110の判断結果と、処理グループのサイズと、バンク113Aの番号と、に基づいて、バンク113Aからキャッシュメモリ105に転送される要素(ベクトルのデータ)の読み出し位置を計算する。
Each read
各読み出し位置制御部114は、その読み出し位置を、アドレス計算部104に提供する。
Each read
また、各読み出し位置制御部114は、バンク113Aにおける読み出し位置から、要素(データ)を読み出して、その要素を書き込みデータとして、クロスバスイッチ111の入力ポートに入力する。
Each read
読み出し位置制御部114については後で詳しく説明する。
The read
アドレス計算部104は、命令発行制御部102からの開始アドレスおよびストライドと、各読み出し位置制御部114からの読み出し位置と、に基づいて、書き込みデータがストアされる書き込み用メモリアドレスを計算する。
The
アドレス計算部104は、書き込み用メモリアドレスを、各ベクトルパイプライン109からの書き込みデータと一緒に、クロスバスイッチ111の入力ポートに入力する。アドレス計算部104については後で詳しく説明する。
The
図4は、ベクトルストア制御部110と読み出し位置制御部114を示した図である。
FIG. 4 is a diagram showing the vector
図4において、ベクトルストア制御部110は、開始アドレスの下位6〜4bitのデータを格納する開始アドレスの下位6〜4bitレジスタ(以下、単に「開始アドレスレジスタ」と称する)201と、ストライドレジスタ202と、読み出し開始位置補正計算回路(以下、単に「計算回路」と称する)203と、処理グループサイズ決定回路204と、を含む。
In FIG. 4, the vector
開始アドレスレジスタ201は、命令発行制御部102からの開始アドレスの下位6〜4ビットのデータを格納する。開始アドレスの下位6〜4ビットのデータは、ブロック内での要素0の位置を示す。
The start address register 201 stores lower 6 to 4 bit data of the start address from the instruction
ストライドレジスタ202は、命令発行制御部102からのストライドを格納する。
The stride register 202 stores a stride from the instruction
計算回路203は、開始アドレスレジスタ201内の開始アドレスの下位6〜4ビットのデータと、ストライドレジスタ202内のストライドと、に基づいて、表1に示すような計算を行い、読み出し開始位置が補正されるベクトルパイプライン109を決定する。
The
つまり、計算回路203は、開始アドレスがキャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致すると判定すると、全ての読み出し位置制御部114に“0”の補正信号を供給する。また、計算回路203は、開始アドレスがキャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致しないと判定すると、少なくとも1つの読み出し位置制御部114に“1”の補正信号を供給する。
That is, when the
処理グループサイズ決定回路204は、ストライドレジスタ202内のストライドに基づいて、表2に示すような計算を行って、処理グループのサイズを決定する。
The processing group
表2は、ベクトルパイプライン数が8、キャッシュメモリ105内の1ブロックに格納される要素数が8、キャッシュメモリ105のバンク数、すなわち、データ格納部107の数が8である本実施形態での、各ストライドに対する処理グループのサイズを示す。
Table 2 shows the embodiment in which the number of vector pipelines is 8, the number of elements stored in one block in the
処理グループのサイズ=
(ブロックあたりの要素数×キャッシュメモリのバンク数)÷ベクトルパイプライン数
なお、ブロックあたりの要素数=ブロックサイズ÷ストライド
という計算を、処理グループサイズ決定回路204が行う。
Processing group size =
The number of elements per block × the number of banks in the cache memory ÷ the number of vector pipelines Note that the processing group
処理グループのサイズについては、後で詳しく説明する。 The size of the processing group will be described in detail later.
処理グループサイズ決定回路204は、各ベクトルパイプライン109内の読み出し位置制御部114に、処理グループのサイズを供給する。
The processing group
次に、読み出し位置制御部114について説明する。
Next, the reading
読み出し位置制御部114は、各ベクトルパイプライン109に設けられている。読み出し位置制御部114は、読み出し開始位置決定回路205と、パイプライン番号レジスタ206と、読み出し位置オフセットレジスタ207と、読み出し位置ベースレジスタ208と、デクリメンタ209と、モジュロ演算器210と、マルチプレクサ(MUX)211と、加算器212と、マルチプレクサ(MUX)213と、加算器214と、デクリメンタ215と、カウンタ216と、有効読み出し位置レジスタ218と、比較器219と、これらを制御する制御回路217と、を含む。
The read
パイプライン番号レジスタ206は、パイプライン番号レジスタ206を含むベクトルパイプライン109の番号を格納する。
The pipeline number register 206 stores the number of the
本実施形態では、ベクトルパイプライン109は8個なので、パイプライン番号レジスタ206には、「0」〜「7」のいずれかが格納される。
In this embodiment, since there are eight
ベクトルパイプライン109−0内のパイプライン番号レジスタ206には「0」が格納される。ベクトルパイプライン109−1内のパイプライン番号レジスタ206には「1」が格納される。
“0” is stored in the
また、ベクトルパイプライン109−2内のパイプライン番号レジスタ206には「2」が格納される。ベクトルパイプライン109−3内のパイプライン番号レジスタ206には「3」が格納される。
Also, “2” is stored in the
また、ベクトルパイプライン109−4内のパイプライン番号レジスタ206には「4」が格納される。ベクトルパイプライン109−5内のパイプライン番号レジスタ206には「5」が格納される。
Also, “4” is stored in the
また、ベクトルパイプライン109−6内のパイプライン番号レジスタ206には「6」が格納される。ベクトルパイプライン109−7内のパイプライン番号レジスタ206には「7」が格納される。
Also, “6” is stored in the
読み出し開始位置決定回路205は、計算回路203からの補正信号と、パイプライン番号レジスタ206からのパイプライン番号と、に基づいて、読み出し開始位置を決定する。
The read start
読み出し開始位置決定回路205は、補正信号が“0”である場合には、読み出し開始位置として、「パイプライン番号」を出力する。読み出し開始位置決定回路205は、補正信号が“1”である場合には、読み出し開始位置として、「パイプライン番号−1」を出力する。
When the correction signal is “0”, the read start
次に、読み出し位置制御部114の動作について、図4と図5のフローチャートを参照しながら説明する。
Next, the operation of the read
まず、制御回路217は、マルチプレクサ(MUX)213に「0」を選択させて、読み出し位置ベースレジスタ208に「0」を書き込む(ステップ301)。
First, the
次に、制御回路217は、ベクトルストア制御部110からの処理グループのサイズから「1」を引く演算を、デクリメンタ215に実行させ、デクリメンタ215の出力(処理グループのサイズ−1)を、カウンタ216の初期値として設定する(ステップ302)。
Next, the
そして、制御回路217は、マルチプレクサ(MUX)211に、読み出し開始位置決定回路205が決定した読み出し開始位置を選択させる。
Then, the
続いて、制御回路217は、マルチプレクサ(MUX)211が選択した読み出し開始位置に対して処理グループのサイズのモジュロをとる演算を、モジュロ演算器210に実行させる。
Subsequently, the
続いて、制御回路217は、モジュロ演算器210の演算結果を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む(ステップ303)。
Subsequently, the
続いて、加算器214は、読み出し位置オフセットレジスタ207内の値と、読み出し位置ベースレジスタ208内の値と、を加算し、その加算結果を、最初の読み出し位置として用いて、バンク113Aから最初の要素を読み出す。
Subsequently, the
また、読み出し位置は、アドレス計算部104にも送られる。アドレス計算部104は、その読み出し位置と、命令発行制御部102からのベクトルストアの開始アドレスおよびストライドと、に基づいて、最初の要素がストアされる書き込み用メモリアドレスを計算し、その計算結果を出力する。
The read position is also sent to the
次に、制御回路217は、カウンタ216の値が「0」かどうかを調べる(ステップ304)。
Next, the
カウンタ216の値が0でない場合には(ステップ305)、制御回路217は、読み出し位置オフセットレジスタ207内の値から「1」を引く演算を、デクリメンタ209に実行させる。
When the value of the counter 216 is not 0 (step 305), the
続いて、制御回路217は、マルチプレクサ(MUX)211に、デクリメンタ209の出力を選択させる。
Subsequently, the
続いて、制御回路217は、マルチプレクサ(MUX)211が選択した値に対して、処理グループのサイズのモジュロをとる演算を、モジュロ演算器210に実行させる。
Subsequently, the
続いて、制御回路217は、モジュロ演算器210の演算結果を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む(ステップ306)。
Subsequently, the
続いて、加算器214は、読み出し位置オフセットレジスタ207内の値と、読み出し位置ベースレジスタ208内の値と、を加算し、その加算結果を、次の読み出し位置として用いて、バンク113Aから次の要素を読み出す。
Subsequently, the
また、読み出し位置は、アドレス計算部104にも送られる。アドレス計算部104は、その読み出し位置と、命令発行制御部102からのベクトルストアの開始アドレスおよびストライドと、に基づいて、次の要素がストアされる書き込み用メモリアドレスを計算し、その計算結果を出力する。
The read position is also sent to the
次に、制御回路217は、カウンタ216の値をデクリメントする(ステップ307)。そして、制御回路217は、カウンタ216の値が「0」かどうかを調べる(ステップ304)。
Next, the
カウンタ216の値が「0」の場合には(ステップ308)、制御回路217は、読み出し位置ベースレジスタ208の値に処理グループのサイズを加算する処理を、加算器212に実行させ、マルチプレクサ(MUX)213を介して、その値を、読み出し位置ベースレジスタ208に書き込む(ステップ309)。
When the value of the counter 216 is “0” (step 308), the
そして、制御回路217は、読み出し位置ベースレジスタ208の値が有効な読み出し位置にあるかどうかを調べる(ステップ310)。本実施形態では、制御回路217は、有効読み出し位置レジスタ218の値と、読み出し位置ベースレジスタ208の値と、を比較することにより、読み出し位置ベースレジスタ208の値が有効な読み出し位置かどうかを判断する。
Then, the
読み出し位置ベースレジスタ208の値が有効である場合(ステップ311)、制御回路217は、ステップ302に戻る。読み出し位置ベースレジスタ208の値が有効でない場合(ステップ312)、制御回路217は、処理を終了する。
When the value of the read
有効読み出し位置レジスタ218には、ベクトル長(要素0から要素255を加算することによって形成されるベクトルの長さ)とベクトルパイプライン番号から計算される最大の読み出し位置が格納される。
The effective read position register 218 stores the maximum read position calculated from the vector length (the length of the vector formed by adding the
比較器219は、有効読み出し位置レジスタ218の値と、加算器214からの読み出し位置と、を比較する。
The
読み出し位置が、有効読み出し位置レジスタ218の値よりも大きな場合には、比較器219は、バンク113Aから読み出された要素が無効であることを示す無効信号を、クロスバスイッチ111に出力する。クロスバスイッチ111は、無効であることが伝えられた要素を処理しない。
When the read position is larger than the value of the valid read position register 218, the
有効読み出し位置レジスタ218に設定される最大の読み出し位置は、以下のような式で計算される。 The maximum read position set in the valid read position register 218 is calculated by the following equation.
ベクトル長modベクトルパイプライン数<ベクトルパイプライン番号なら、
ベクトル長÷ベクトルパイプライン数−1
ベクトル長 mod ベクトルパイプライン数 ≧ ベクトルパイプライン番号なら、
ベクトル長÷ベクトルパイプライン数
次に、具体的な値を使って、読み出し位置制御部114、特には制御回路217の処理を説明する。If vector length mod number of vector pipelines <vector pipeline number,
Vector length ÷ number of vector pipelines -1
Vector length mod Number of vector pipelines ≥ Vector pipeline number
Vector length / number of vector pipelines Next, processing of the read
ストライドは「8B」で、開始アドレスの下位6〜4ビット目が「000」の場合で、ベクトルパイプライン109−1の読み出し制御部114での処理を説明する。
The processing in the
ベクトル長は128要素とする。ベクトルパイプラインは8個あるので、有効な読み出し位置レジスタ218には「15」が設定される。 The vector length is 128 elements. Since there are eight vector pipelines, “15” is set in the effective read position register 218.
まず、計算回路203は、表1に従って、ベクトルパイプライン109−1に、補正信号“0”を出力する。
First, the
また、処理グループサイズ決定回路204は、表2に従って、処理グループのサイズとして「8」を出力する。
Further, the processing group
まず、制御回路217は、読み出し位置ベースレジスタ208に、「0」を書き込む(ステップ301)。
First, the
続いて、制御回路217は、カウンタ216に、初期値として「8−1=7」を設定する(ステップ302)。
Subsequently, the
補正信号が“0”で、パイプライン番号レジスタ206内の値が「1」なので、読み出し開始位置決定回路205は、「1」を出力する。
Since the correction signal is “0” and the value in the
続いて、制御回路217は、マルチプレクサ(MUX)211に、読み出し開始位置決定回路205からの「1」を選択させる。
Subsequently, the
続いて、制御回路217は、マルチプレクサ(MUX)211からの「1」に対して、モジュロ8を行う演算を、モジュロ演算器210に実行させる。
Subsequently, the
続いて、制御回路217は、モジュロ演算器210の演算結果「1」を、読み出し位置オフセットレジスタ207に書き込む(ステップ303)。
Subsequently, the
その結果、加算器214は、1個目の要素の読み出し位置として、「0+1=1」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「7」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「1」から「1」を引いた値「0」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「0」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、2個目の要素の読み出し位置として、「0+0=0」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「7」だったので、カウンタ216の値は「6」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「6」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「0」から「1」を引いた値「−1」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「7」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、3個目の要素の読み出し位置として、「0+7=7」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「6」だったので、カウンタ216の値は「5」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「5」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「7」から「1」を引いた値「6」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「6」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、4個目の要素の読み出し位置として、「0+6=6」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「5」だったので、カウンタ216の値は「4」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「4」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「6」から「1」を引いた値「5」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「5」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、5個目の要素の読み出し位置として、「0+5=5」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「4」だったので、カウンタ216の値は「3」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「3」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「5」から「1」を引いた値「4」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「4」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、6個目の要素の読み出し位置として、「0+4=4」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「3」だったので、カウンタ216の値は「2」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「2」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「4」から「1」を引いた値「3」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「3」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、7個目の要素の読み出し位置として、「0+3=3」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「2」だったので、カウンタ216の値は「1」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「1」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「3」から「1」を引いた値「2」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「2」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、8個目の要素の読み出し位置として、「0+2=2」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「1」だったので、カウンタ216の値は「0」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「0」なので、制御回路217は、ステップ309に進む。
In
ステップ309では、制御回路217は、読み出し位置ベースレジスタ208の値「0」に処理グループのサイズ「8」を加算する演算を、加算器212に実行させる。続いて、制御回路217は、マルチプレクサ(MUX)211に、加算器212の演算結果「8」を選択させ、加算器212の演算結果「8」を、読み出し位置ベースレジスタ208に書き込む。
In
続いて、ステップ310で、制御回路217は、読み出し位置ベースレジスタ208の値が有効かどうかを調べる。読み出し位置ベースレジスタ208の値「8」は、有効読み出し位置レジスタ218の値「15」よりも小さいので、制御回路217は、読み出し位置ベースレジスタ208の値は有効であると判断して、ステップ302に進む。
Subsequently, in
次に、ステップ302で、制御回路217は、カウンタ216に、初期値として「8−1=7」を設定する。
Next, in
補正信号が“0”で、パイプライン番号レジスタ206内の値が「1」なので、読み出し開始位置決定回路205は、「1」を出力する。
Since the correction signal is “0” and the value in the
続いて、制御回路217は、マルチプレクサ(MUX)211に、読み出し開始位置決定回路205からの「1」を選択させる。
Subsequently, the
続いて、制御回路217は、マルチプレクサ(MUX)211からの「1」に対して、モジュロ8を行う演算を、モジュロ演算器210に実行させる。
Subsequently, the
続いて、制御回路217は、モジュロ演算器210の演算結果「1」を、読み出し位置オフセットレジスタ207に書き込む(ステップ303)。
Subsequently, the
その結果、加算器214は、9個目の要素の読み出し位置として、「8+1=9」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「7」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「1」から「1」を引いた値「0」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「0」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、10個目の要素の読み出し位置として、「8+0=8」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「7」だったので、カウンタ216の値は「6」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「6」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「0」から「1」を引いた値「−1」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「7」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、11個目の要素の読み出し位置として、「8+7=15」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「6」だったので、カウンタ216の値は「5」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「5」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「7」から「1」を引いた値「6」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「6」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、12個目の要素の読み出し位置として、「8+6=14」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「5」だったので、カウンタ216の値は「4」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「4」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「6」から「1」を引いた値「5」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「5」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、13個目の要素の読み出し位置として、「8+5=13」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「4」だったので、カウンタ216の値は「3」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「3」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「5」から「1」を引いた値「4」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「4」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、14個目の要素の読み出し位置として、「8+4=12」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「3」だったので、カウンタ216の値は「2」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「2」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「4」から「1」を引いた値「3」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「3」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、15個目の要素の読み出し位置として、「8+3=11」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「2」だったので、カウンタ216の値は「1」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「1」なので、制御回路217は、ステップ306に進む。
In
ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「3」から「1」を引いた値「2」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「2」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。
In
その結果、加算器214は、16個目の要素の読み出し位置として、「8+2=10」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。
As a result, the
次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「1」だったので、カウンタ216の値は「0」となる。
Next, in
続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「0」なので、制御回路217は、ステップ309に進む。
In
ステップ309では、制御回路217は、読み出し位置ベースレジスタ208の値「8」に処理グループのサイズ「8」を加算する演算を、加算器212に実行させる。続いて、制御回路217は、マルチプレクサ(MUX)211に、加算器212の演算結果「16」を選択させ、加算器212の演算結果「16」を、読み出し位置ベースレジスタ208に書き込む。
In
続いて、ステップ310で、制御回路217は、読み出し位置ベースレジスタ208の値が有効かどうかを調べる。読み出し位置ベースレジスタ208の値「16」は、有効読み出し位置レジスタ218の値「15」よりも大きいので、制御回路217は、読み出し位置ベースレジスタ208の値は無効であると判断して、処理を終了する。
Subsequently, in
図6は、アドレス計算部104を示した図である。
FIG. 6 is a diagram showing the
アドレス計算部104は、開始アドレスレジスタ401と、ストライドレジスタ402と、各ベクトルパイプライン109と1対1で対応するアドレス計算回路403と、を含む。
The
本実施形態では、ベクトルパイプライン109は8個あるので、アドレス計算回路403も8個装備される。
In this embodiment, since there are eight
開始アドレスレジスタ401は、命令発行制御部102からのベクトルストア命令の開始アドレスを受け取って格納する。
The
ストライドレジスタ402は、命令発行制御部102からのストライドを受け取って格納する。
The stride register 402 receives and stores the stride from the instruction
アドレス計算回路403は、開始アドレスレジスタ401の値と、ストライドレジスタ402の値と、自回路と対応するベクトルパイプライン109内の読み出し位置制御部114からの読み出し位置と、を使って、メモリアドレスを計算する。
The
アドレス計算回路403は、パイプライン番号レジスタ404と、オフセット計算回路 405と、加算器406と、を含む。
パイプライン番号レジスタ404には、対応するベクトルパイプライン109の番号が格納されている。
The pipeline number register 404 stores the number of the corresponding
本実施形態では、ベクトルパイプライン109は、8個なので、パイプライン番号レジスタ404には、「0」〜「7」のいずれかが格納される。
In the present embodiment, since there are eight
オフセット計算回路405は、ストライドと、読み出し位置と、パイプライン番号と、に基づいて、メモリアドレスのオフセットを計算する。
The offset
オフセット計算回路405は、次の演算を行ってオフセットを計算する。
The offset
オフセット=(読み出し位置×ベクトルパイプライン数+ベクトルパイプライン番号)×ストライド
加算器406は、開始アドレスとオフセットとを加算することにより、メモリアドレスを計算する。Offset = (readout position x number of vector pipelines + vector pipeline number) x stride
The
次に、ベクトルストアについて、図7〜図9を使って説明する。 Next, the vector store will be described with reference to FIGS.
図7〜図9の上半分は、8個のベクトルパイプライン(ベクトルパイプライン0〜ベクトルパイプライン7)における128個の要素(要素0〜要素127)の配置、さらに言えば、8個のベクトルパイプライン内のバンクにて構成されるベクトルレジスタにおける要素0〜要素127の配置を示す。なお、要素0から要素127を、要素の番号順に並べると、ベクトルデータが復元される。
The upper half of FIGS. 7 to 9 shows the arrangement of 128 elements (
図7〜図9の下半分は、1クロックごとに、クロスバスイッチ111から、キャッシュメモリ内の8個のデータ格納部(データ格納部0〜データ格納部7)に出力される要素を示す。図7〜図9の下半分において、太字の枠504は、キャッシュメモリのブロックの境界を示す。
The lower half of FIGS. 7 to 9 shows elements output from the
まず、図7を参照して、開始アドレスが「0」であり、ストライドが8Bである状況でのベクトルストアを説明する。 First, with reference to FIG. 7, a vector store in a situation where the start address is “0” and the stride is 8B will be described.
図7において、縦線501は、キャッシュメモリのブロックの境界を示している。キャッシュメモリのブロックサイズが64Bであり、ストライドが8Bであるため、各データ格納部内の各ブロックには、メモリアドレスが連続する8個の要素、つまり、要素番号が連続する8個の要素が格納される。例えば、要素0〜要素7までが、キャッシュメモリ105内の同一のブロックに格納される。
In FIG. 7, a
表1では、ストライド8Bで、開始アドレスの下位6〜4ビットが「000」の場合には、読み出し開始位置の補正はなしなので、各読み出し開始位置決定回路205は、ベクトルパイプラインの番号を出力する。
In Table 1, when the lower 6 to 4 bits of the start address are “000” in the stride 8B, since the read start position is not corrected, each read start
表2では、ストライドが8Bの場合、処理グループのサイズは「8」となるので、処理グループサイズ決定回路204は、「8」を出力する。
In Table 2, since the size of the processing group is “8” when the stride is 8B, the processing group
このため、要素0〜要素127は、要素0〜要素63にて構成される処理グループと、要素64〜要素127にて構成される処理グループと、に分けられる。
For this reason, the
図7の上半分で、太字の四角になっている要素502(要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素63)と、要素503(要素64、要素73、要素82、要素91、要素100、要素109、要素118および要素127)は、各処理グループの読み出し開始要素を示す。
In the upper half of FIG. 7, elements 502 (
最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operation is performed.
読み出し位置制御部114−0は、読み出し位置として「0」を出力する。読み出し位置制御部114−1は、読み出し位置として「1」を出力する。読み出し位置制御部114−2は、読み出し位置として「2」を出力する。読み出し位置制御部114−3は、読み出し位置として「3」を出力する。読み出し位置制御部114−4は、読み出し位置として「4」を出力する。読み出し位置制御部114−5は、読み出し位置として「5」を出力する。読み出し位置制御部114−6は、読み出し位置として「6」を出力する。
読み出し位置制御部114−7は、読み出し位置として「7」を出力する。The read position control unit 114-0 outputs “0” as the read position. The read position control unit 114-1 outputs “1” as the read position. The read position control unit 114-2 outputs “2” as the read position. The read position control unit 114-3 outputs “3” as the read position. The read position control unit 114-4 outputs “4” as the read position. The read position control unit 114-5 outputs “5” as the read position. The read position control unit 114-6 outputs “6” as the read position.
The read position control unit 114-7 outputs “7” as the read position.
このため、バンク113A−0からは要素0が読み出され、要素0はクロスバスイッチ111に入力される。バンク113A−1からは要素9が読み出され、要素9はクロスバスイッチ111に入力される。バンク113A−2からは要素18が読み出され、要素18はクロスバスイッチ111に入力される。バンク113A−3からは要素27が読み出され、要素27はクロスバスイッチ111に入力される。バンク113A−4からは要素36が読み出され、要素36はクロスバスイッチ111に入力される。バンク113A−5からは要素45が読み出され、要素45はクロスバスイッチ111に入力される。バンク113A−6からは要素54が読み出され、要素54はクロスバスイッチ111に入力される。バンク113A−7からは要素63が読み出され、要素63はクロスバスイッチ111に入力される。
Therefore, the
要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素63は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107−0、データ格納部107−1、データ格納部107−2、データ格納部107−3、データ格納部107−4、データ格納部107−5、データ格納部107−6、データ格納部107−7に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。
The
続いて、2番目のクロックが入力されると、2番目のクロックに応じて以下のような動作が実行される。 Subsequently, when the second clock is input, the following operation is executed according to the second clock.
読み出し位置制御部114−0は、読み出し位置として「7」を出力する。読み出し位置制御部114−1は、読み出し位置として「0」を出力する。読み出し位置制御部114−2は、読み出し位置として「1」を出力する。読み出し位置制御部114−3は、読み出し位置として「2」を出力する。読み出し位置制御部114−4は、読み出し位置として「3」を出力する。読み出し位置制御部114−5は、読み出し位置として「4」を出力する。読み出し位置制御部114−6は、読み出し位置として「5」を出力する。
読み出し位置制御部114−7は、読み出し位置として「6」を出力する。The read position control unit 114-0 outputs “7” as the read position. The read position control unit 114-1 outputs “0” as the read position. The read position control unit 114-2 outputs “1” as the read position. The read position control unit 114-3 outputs “2” as the read position. The read position control unit 114-4 outputs “3” as the read position. The read position control unit 114-5 outputs “4” as the read position. The read position control unit 114-6 outputs “5” as the read position.
The read position control unit 114-7 outputs “6” as the read position.
このため、バンク113A−0からは要素56が読み出され、要素56はクロスバスイッチ111に入力される。バンク113A−1からは要素1が読み出され、要素1はクロスバスイッチ111に入力される。バンク113A−2からは要素10が読み出され、要素10はクロスバスイッチ111に入力される。バンク113A−3からは要素19が読み出され、要素19はクロスバスイッチ111に入力される。バンク113A−4からは要素28が読み出され、要素28はクロスバスイッチ111に入力される。バンク113A−5からは要素37が読み出され、要素37はクロスバスイッチ111に入力される。バンク113A−6からは要素46が読み出され、要素46はクロスバスイッチ111に入力される。バンク113A−7からは要素55が読み出され、要素55はクロスバスイッチ111に入力される。
Therefore, the
要素56、要素1、要素10、要素19、要素28、要素37、要素46および要素55は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107−7、データ格納部107−0、データ格納部107−1、データ格納部107−2、データ格納部107−3、データ格納部107−4、データ格納部107−5、データ格納部107−6に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。
以下、3番目のクロック〜8番目のクロックのそれぞれが入力された際には、図7に示すように各ベクトルパイプラインから各要素が読み出される。 Hereinafter, when each of the third to eighth clocks is input, each element is read from each vector pipeline as shown in FIG.
次に、9番目のクロックが入力された際の動作を説明する。なお、9番目のクロックが入力されると、処理グループが切り替わる。 Next, the operation when the ninth clock is input will be described. When the ninth clock is input, the processing group is switched.
9番目のクロックが入力されると、以下のような動作が実行される。 When the ninth clock is input, the following operation is performed.
各ベクトルパイプライン109では、制御回路217は、読み出し位置ベースレジスタ208の値に、処理グループのサイズである「8」を加算する。
In each
したがって、9番目のクロック〜16番目のクロックまでは、読み出し位置制御部114のそれぞれは、読み出し位置として、「8」〜「15」を所定の順番に出力する。なお、図7の上半分で、太字の四角になっている要素503が9番目のクロックで読み出される要素である。
このように、1つのクロックに応じて各ベクトルパイプラインから読み出される要素は、互いに異なるデータ格納部に格納されるため、クロスバスイッチ111での出力の競合が発生しない。そのため、クロスバスイッチ111でのベクトルストアの性能低下は発生しない。Therefore, from the 9th clock to the 16th clock, each of the read
In this way, since elements read from each vector pipeline in accordance with one clock are stored in different data storage units, output contention in the
また、図7の下半分に示したように、キャッシュメモリ105内のデータ格納部107内の同じブロックに格納される複数の要素は、そのブロックを有するデータ格納部107に連続して到着する。そのため、各データ格納部107は、同じブロックに格納される複数の要素のうち、そのブロックに最初に到着した要素についてのみアドレスアレイを検索すればよく、効率よく書き込みを行うことが可能になる。
Further, as shown in the lower half of FIG. 7, a plurality of elements stored in the same block in the
次に、図8を参照して、開始アドレスが「8」であり、ストライドが8Bである状況でのベクトルストアを説明する。 Next, a vector store in a situation where the start address is “8” and the stride is 8B will be described with reference to FIG.
図8において、縦線601は、キャッシュメモリのブロックの境界を示している。例えば、要素7〜要素14までがキャッシュメモリ105内の同一のブロックに格納される。
In FIG. 8, a
表1では、ストライドが8Bで、開始アドレスの下位6〜4ビットが「001」の場合には、読み出し開始位置の補正は、ベクトルパイプライン109−7だけで行われる。 In Table 1, when the stride is 8B and the lower 6 to 4 bits of the start address are “001”, the read start position is corrected only by the vector pipeline 109-7.
ベクトルパイプライン109−0〜109−6では、ベクトルパイプライン番号が、読み出し開始位置決定回路205から出力される。一方、ベクトルパイプライン109−7では、「6」が、読み出し開始位置決定回路205から出力される。
In the vector pipelines 109-0 to 109-6, the vector pipeline number is output from the read start
表2では、ストライドが8Bの場合、処理グループのサイズは「8」となるので、処理グループサイズ決定回路204は、「8」を出力する。
In Table 2, since the size of the processing group is “8” when the stride is 8B, the processing group
このため、要素0〜要素127は、要素0〜要素63にて構成される処理グループと、要素64〜要素127にて構成される処理グループと、に分けられる。
For this reason, the
図8の上半分で、太字の四角になっている要素602(要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素55)と、要素603(要素64、要素73、要素82、要素91、要素100、要素109、要素118および要素119)は、各処理グループの読み出し開始要素を示す。
In the upper half of FIG. 8, elements 602 (
最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operation is performed.
読み出し位置制御部114−0は、読み出し位置として「0」を出力する。読み出し位置制御部114−1は、読み出し位置として「1」を出力する。読み出し位置制御部114−2は、読み出し位置として「2」を出力する。読み出し位置制御部114−3は、読み出し位置として「3」を出力する。読み出し位置制御部114−4は、読み出し位置として「4」を出力する。読み出し位置制御部114−5は、読み出し位置として「5」を出力する。読み出し位置制御部114−6は、読み出し位置として「6」を出力する。
読み出し位置制御部114−7は、読み出し位置として「6」を出力する。The read position control unit 114-0 outputs “0” as the read position. The read position control unit 114-1 outputs “1” as the read position. The read position control unit 114-2 outputs “2” as the read position. The read position control unit 114-3 outputs “3” as the read position. The read position control unit 114-4 outputs “4” as the read position. The read position control unit 114-5 outputs “5” as the read position. The read position control unit 114-6 outputs “6” as the read position.
The read position control unit 114-7 outputs “6” as the read position.
このため、バンク113A−0からは要素0が読み出され、要素0はクロスバスイッチ111に入力される。バンク113A−1からは要素9が読み出され、要素9はクロスバスイッチ111に入力される。バンク113A−2からは要素18が読み出され、要素18はクロスバスイッチ111に入力される。バンク113A−3からは要素27が読み出され、要素27はクロスバスイッチ111に入力される。バンク113A−4からは要素36が読み出され、要素36はクロスバスイッチ111に入力される。バンク113A−5からは要素45が読み出され、要素45はクロスバスイッチ111に入力される。バンク113A−6からは要素54が読み出され、要素54はクロスバスイッチ111に入力される。バンク113A−7からは要素55が読み出され、要素55はクロスバスイッチ111に入力される。
Therefore, the
要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素55は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107−0、データ格納部107−1、データ格納部107−2、データ格納部107−3、データ格納部107−4、データ格納部107−5、データ格納部107−6、データ格納部107−7に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。
The
続いて、2番目のクロックが入力されると、以下のような動作が実行される。 Subsequently, when the second clock is input, the following operation is performed.
読み出し位置制御部114−0は、読み出し位置として「7」を出力する。読み出し位置制御部114−1は、読み出し位置として「0」を出力する。読み出し位置制御部114−2は、読み出し位置として「1」を出力する。読み出し位置制御部114−3は、読み出し位置として「2」を出力する。読み出し位置制御部114−4は、読み出し位置として「3」を出力する。読み出し位置制御部114−5は、読み出し位置として「4」を出力する。読み出し位置制御部114−6は、読み出し位置として「5」を出力する。
読み出し位置制御部114−7は、読み出し位置として「5」を出力する。The read position control unit 114-0 outputs “7” as the read position. The read position control unit 114-1 outputs “0” as the read position. The read position control unit 114-2 outputs “1” as the read position. The read position control unit 114-3 outputs “2” as the read position. The read position control unit 114-4 outputs “3” as the read position. The read position control unit 114-5 outputs “4” as the read position. The read position control unit 114-6 outputs “5” as the read position.
The read position control unit 114-7 outputs “5” as the read position.
このため、バンク113A−0からは要素56が読み出され、要素56はクロスバスイッチ111に入力される。バンク113A−1からは要素1が読み出され、要素1はクロスバスイッチ111に入力される。バンク113A−2からは要素10が読み出され、要素10はクロスバスイッチ111に入力される。バンク113A−3からは要素19が読み出され、要素19はクロスバスイッチ111に入力される。バンク113A−4からは要素28が読み出され、要素28はクロスバスイッチ111に入力される。バンク113A−5からは要素37が読み出され、要素37はクロスバスイッチ111に入力される。バンク113A−6からは要素46が読み出され、要素46はクロスバスイッチ111に入力される。バンク113A−7からは要素47が読み出され、要素47はクロスバスイッチ111に入力される。
Therefore, the
要素56、要素1、要素10、要素19、要素28、要素37、要素46および要素47は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107−7、データ格納部107−0、データ格納部107−1、データ格納部107−2、データ格納部107−3、データ格納部107−4、データ格納部107−5、データ格納部107−6に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。
以下、3番目のクロック〜8番目のクロックのそれぞれが入力された際には、図8に示すように各ベクトルパイプラインから各要素が読み出される。 Hereinafter, when each of the third to eighth clocks is input, each element is read from each vector pipeline as shown in FIG.
次に、9番目のクロックが入力された際の動作を説明する。なお、9番目のクロックが入力されると、処理グループが切り替わる。 Next, the operation when the ninth clock is input will be described. When the ninth clock is input, the processing group is switched.
9番目のクロックが入力されると、以下のような動作が実行される。 When the ninth clock is input, the following operation is performed.
各ベクトルパイプライン109では、制御回路217は、読み出し位置ベースレジスタ208の値に、処理グループのサイズである「8」を加算する。
In each
したがって、9番目のクロック〜16番目のクロックまでは、読み出し位置制御部114のそれぞれは、読み出し位置として、「8」〜「15」を所定の順番に出力する。なお、図8の上半分で、太字の四角になっている要素603が9番目のクロックで読み出される要素である。
このように、1つのクロックに応じて各ベクトルパイプラインから読み出される要素は、互いに異なるデータ格納部に格納されるため、クロスバスイッチ111での出力の競合が発生しない。そのため、クロスバスイッチ111でのベクトルストアの性能低下は発生しない。Therefore, from the 9th clock to the 16th clock, each of the read
In this way, since elements read from each vector pipeline in accordance with one clock are stored in different data storage units, output contention in the
また、図8の下半分に示したように、キャッシュメモリ105内のデータ格納部107内の同じブロックに格納される複数の要素は、そのブロックを有するデータ格納部107に連続して到着する。そのため、各データ格納部107は、同じブロックに格納される複数の要素のうち、そのブロックに最初に到着した要素についてのみアドレスアレイを検索すればよく、効率よく書き込みを行うことが可能になる。
Also, as shown in the lower half of FIG. 8, a plurality of elements stored in the same block in the
次に、図9を参照して、開始アドレスが「0」であり、ストライドが16Bである状況でのベクトルストアを説明する。 Next, with reference to FIG. 9, a vector store in a situation where the start address is “0” and the stride is 16B will be described.
図9において、2本の太字の縦線701および702は、キャッシュメモリのブロックの境界を示している。例えば、要素4〜要素7までがキャッシュメモリ105内の同一のブロックに格納される。
In FIG. 9, two bold
表1では、ストライド16Bで、開始アドレスの下位6〜4ビットが「000」の場合には、読み出し開始位置の補正はなしなので、ベクトルパイプライン番号が、読み出し開始位置決定回路205から出力される。
In Table 1, when the lower 6 to 4 bits of the start address are “000” in the stride 16B, since the read start position is not corrected, the vector pipeline number is output from the read start
表2では、ストライドが16Bの場合、処理グループのサイズは「4」となるので、処理グループサイズ決定回路204は、「4」を出力する。
In Table 2, since the size of the processing group is “4” when the stride is 16B, the processing group
このため、要素0〜要素127は、要素0〜要素31にて構成される処理グループと、要素32〜要素63にて構成される処理グループと、要素64〜要素95にて構成される処理グループと、要素96〜要素127にて構成される処理グループと、に分けられる。
For this reason, the
図9の上半分で、太字の四角になっている要素703(要素0、要素9、要素18、要素27、要素4、要素13、要素22および要素31)と、要素704(要素32、要素41、要素50、要素59、要素36、要素45、要素54および要素63)と、要素705(要素64、要素73、要素82、要素91、要素68、要素77、要素86および要素95)と、要素706(要素96、要素105、要素114、要素123、要素100、要素109、要素118および要素127)は、各処理グループの読み出し開始要素を示す。
In the upper half of FIG. 9, elements 703 (
最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operation is performed.
読み出し位置制御部114−0は、読み出し位置として「0」を出力する。読み出し位置制御部114−1は、読み出し位置として「1」を出力する。読み出し位置制御部114−2は、読み出し位置として「2」を出力する。読み出し位置制御部114−3は、読み出し位置として「3」を出力する。読み出し位置制御部114−4は、読み出し位置として「0」を出力する。読み出し位置制御部114−5は、読み出し位置として「1」を出力する。読み出し位置制御部114−6は、読み出し位置として「2」を出力する。
読み出し位置制御部114−7は、読み出し位置として「3」を出力する。The read position control unit 114-0 outputs “0” as the read position. The read position control unit 114-1 outputs “1” as the read position. The read position control unit 114-2 outputs “2” as the read position. The read position control unit 114-3 outputs “3” as the read position. The read position control unit 114-4 outputs “0” as the read position. The read position control unit 114-5 outputs “1” as the read position. The read position control unit 114-6 outputs “2” as the read position.
The read position control unit 114-7 outputs “3” as the read position.
このため、バンク113A−0からは要素0が読み出され、要素0はクロスバスイッチ111に入力される。バンク113A−1からは要素9が読み出され、要素9はクロスバスイッチ111に入力される。バンク113A−2からは要素18が読み出され、要素18はクロスバスイッチ111に入力される。バンク113A−3からは要素27が読み出され、要素27はクロスバスイッチ111に入力される。バンク113A−4からは要素4が読み出され、要素4はクロスバスイッチ111に入力される。バンク113A−5からは要素13が読み出され、要素13はクロスバスイッチ111に入力される。バンク113A−6からは要素22が読み出され、要素22はクロスバスイッチ111に入力される。バンク113A−7からは要素31が読み出され、要素31はクロスバスイッチ111に入力される。
Therefore, the
要素0、要素9、要素18、要素27、要素4、要素13、要素22および要素31は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107−0、データ格納部107−2、データ格納部107−4、データ格納部107−6、データ格納部107−1、データ格納部107−3、データ格納部107−5、データ格納部107−7に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。
The
続いて、2番目のクロックが入力されると、2番目のクロックに応じて以下のような動作が実行される。 Subsequently, when the second clock is input, the following operation is executed according to the second clock.
読み出し位置制御部114−0は、読み出し位置として「3」を出力する。読み出し位置制御部114−1は、読み出し位置として「0」を出力する。読み出し位置制御部114−2は、読み出し位置として「1」を出力する。読み出し位置制御部114−3は、読み出し位置として「2」を出力する。読み出し位置制御部114−4は、読み出し位置として「3」を出力する。読み出し位置制御部114−5は、読み出し位置として「0」を出力する。読み出し位置制御部114−6は、読み出し位置として「1」を出力する。
読み出し位置制御部114−7は、読み出し位置として「2」を出力する。The read position control unit 114-0 outputs “3” as the read position. The read position control unit 114-1 outputs “0” as the read position. The read position control unit 114-2 outputs “1” as the read position. The read position control unit 114-3 outputs “2” as the read position. The read position control unit 114-4 outputs “3” as the read position. The read position control unit 114-5 outputs “0” as the read position. The read position control unit 114-6 outputs “1” as the read position.
The read position control unit 114-7 outputs “2” as the read position.
このため、バンク113A−0からは要素24が読み出され、要素24はクロスバスイッチ111に入力される。バンク113A−1からは要素1が読み出され、要素1はクロスバスイッチ111に入力される。バンク113A−2からは要素10が読み出され、要素10はクロスバスイッチ111に入力される。バンク113A−3からは要素19が読み出され、要素19はクロスバスイッチ111に入力される。バンク113A−4からは要素28が読み出され、要素28はクロスバスイッチ111に入力される。バンク113A−5からは要素5が読み出され、要素5はクロスバスイッチ111に入力される。バンク113A−6からは要素14が読み出され、要素14はクロスバスイッチ111に入力される。バンク113A−7からは要素23が読み出され、要素23はクロスバスイッチ111に入力される。
Therefore, the
要素24、要素1、要素10、要素19、要素28、要素5、要素14および要素23は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107−6、データ格納部107−0、データ格納部107−2、データ格納部107−4、データ格納部107−7、データ格納部107−1、データ格納部107−3、データ格納部107−5に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。
以下、3番目のクロック〜4番目のクロックのそれぞれが入力された際には、図9に示すように各ベクトルパイプラインから各要素が読み出される。 Hereinafter, when each of the third to fourth clocks is input, each element is read from each vector pipeline as shown in FIG.
次に、5番目のクロックが入力された際の動作を説明する。なお、5番目のクロックが入力されると、処理グループが切り替わる。 Next, the operation when the fifth clock is input will be described. When the fifth clock is input, the processing group is switched.
5番目のクロックが入力されると、以下のような動作が実行される。 When the fifth clock is input, the following operation is performed.
各ベクトルパイプライン109では、制御回路217は、読み出し位置ベースレジスタ208の値に、処理グループのサイズである「4」を加算する。
In each
したがって、5番目のクロック〜8番目のクロックまでは、読み出し位置制御部114のそれぞれは、読み出し位置として、「4」〜「7」を所定の順番に出力する。なお、図9の上半分で、太字の四角になっている要素704が5番目のクロックで読み出される要素である。
このように、1つのクロックに応じて各ベクトルパイプラインから読み出される要素は、互いに異なるデータ格納部に格納されるため、クロスバスイッチ111での出力の競合が発生しない。そのため、クロスバスイッチ111でのベクトルストアの性能低下は発生しない。Accordingly, from the fifth clock to the eighth clock, each of the read
In this way, since elements read from each vector pipeline in accordance with one clock are stored in different data storage units, output contention in the
また、図9の下半分に示したように、キャッシュメモリ105内のデータ格納部107内の同じブロックに格納される複数の要素は、そのブロックを有するデータ格納部107に連続して到着する。そのため、各データ格納部107は、同じブロックに格納される複数の要素のうち、そのブロックに最初に到着した要素についてのみアドレスアレイを検索すればよく、効率よく書き込みを行うことが可能になる。
Also, as shown in the lower half of FIG. 9, a plurality of elements stored in the same block in the
次に、本実施形態の効果を説明する。 Next, the effect of this embodiment will be described.
第1の効果は、キャッシュメモリの同じブロックに書き込まれる書き込みデータ(要素)が、連続して、そのブロックを有するキャッシュメモリ内のバンク(メモリバンク、データ格納部)に到着するように制御することで、キャッシュメモリでアドレスアレイを検索する時間と消費電力を削減できることである。 The first effect is that control is performed so that write data (elements) written to the same block of the cache memory continuously arrives at a bank (memory bank, data storage unit) in the cache memory having the block. Thus, the time and power consumption for searching the address array in the cache memory can be reduced.
また、第2の効果は、要素0のアドレスが、ブロックの先頭アドレスでない場合でも、クロスバスイッチでの競合を回避でき、ベクトルストアの処理時間の増加を回避できることである。競合が起こらないため、キャッシュメモリの同じブロックに書き込まれる書き込みデータ(要素)が、連続して、そのブロックを有するキャッシュメモリ内のバンク(メモリバンク、データ格納部)に到着するように制御でき、よって、キャッシュメモリでアドレスアレイを検索する時間と消費電力を削減することが可能になる。
The second effect is that even when the address of the
本実施形態によれば、処理部114Aは、256個の要素を、処理グループのサイズに基づいて、処理グループに分けていく。
According to the present embodiment, the
処理部114Aは、開始アドレスが、キャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致すると判断された場合には、以下の動作を行う。
If it is determined that the start address matches the head address of any block in the
処理部114Aは、256個の要素を処理グループに分けるごとに、その処理グループ内の要素を並び順に処理グループのサイズごとに分けたときに生成されるブロックデータのそれぞれから、1つずつ、要素が並列に出力されて、その処理グループ内の要素が全て出力されるように、8個のバンク113Aから並列に要素を読み出しキャッシュメモリ105に転送する。
Each time the
このため、開始アドレスが、キャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致する場合、キャッシュメモリ105の同じブロックに書き込まれる書き込みデータ(要素)が、連続して、キャッシュメモリ105の各バンクに到着することが可能になる。よって、キャッシュメモリがアドレスアレイを検索する時間と消費電力を削減することが可能になる。
Therefore, when the start address matches the head address of any block in the
また、処理部114Aは、開始アドレスが、キャッシュメモリ105内のいずれかのメモリブロック内の先頭のアドレスと一致しない場合には、以下の動作を行う。
Further, the
処理部114Aは、256個の要素を処理グループに分けるごとに、その処理グループ内の要素を、開始アドレスとストライドとに基づいてキャッシュメモリ105内のブロックのいずれかに対応する9個のブロックデータに分けた際に、その9個のブロックデータの中でアドレスが最も大きい最後部ブロックデータ以外の8個のブロックデータのそれぞれから、1つずつ、要素が並列に出力され、その後、9個のブロックデータのうちアドレスが最も小さい先頭ブロックデータ内の要素が全て出力されると、9個のブロックデータのうち先頭ブロックデータ以外の8のブロックデータのそれぞれから、1つずつ、未出力の要素が並列に出力されて、その処理グループ内の要素が全て出力されるように、8個のバンク113Aから並列に要素を読み出しキャッシュメモリ105に転送する。
Each time the
このため、開始アドレスが、キャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致しない場合も、キャッシュメモリ105の同じブロックに書き込まれる書き込みデータ(要素)が、連続して、キャッシュメモリ105の各バンクに到着することが可能になり、よって、キャッシュメモリがアドレスアレイを検索する時間と消費電力を削減することが可能になる。
For this reason, even when the start address does not match the head address of any block in the
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。 While the present invention has been described with reference to the embodiments, the present invention is not limited to the above embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.
この出願は、2009年9月15日に出願された日本出願特願2009−213262を基礎とする優先権を主張し、その開示の全てをここに取り込む。 This application claims the priority on the basis of Japanese application Japanese Patent Application No. 2009-213262 for which it applied on September 15, 2009, and takes in those the indications of all here.
101 CPU
102 命令発行制御部
103 ベクトル処理部
104 アドレス計算部
105 キャッシュメモリ
106 主記憶装置
107 データ格納部
109 ベクトルパイプライン
110 ベクトルストア制御部
111 クロスバスイッチ
112 ベクトル演算器
113 ベクトルレジスタ
113A バンク
114 読み出し位置制御部
114A 処理部
201 開始アドレスレジスタ
202 ストライドレジスタ
203 読み出し開始位置補正計算回路
204 処理グループサイズ決定回路
205 読み出し開始位置決定回路
206 パイプライン番号レジスタ
207 読み出し位置オフセットレジスタ
208 読み出し位置ベースレジスタ
209 デクリメンタ
210 モジュロ演算器
211 マルチプレクサ
212 加算器
213 マルチプレクサ
214 加算器
215 デクリメンタ
216 カウンタ
217 制御回路
218 有効読み出し位置レジスタ
219 比較器
401 開始アドレスレジスタ
402 ストライドレジスタ
403 アドレス計算回路
404 パイプライン番号レジスタ
405 オフセット計算回路
406 加算器101 CPU
102 Instruction
Claims (4)
n個のレジスタバンクを有し、前記m個のデータ要素が、前記並び順に前記データ要素単位でインタリーブされて前記n個のレジスタバンクに順番に格納される、格納手段と、
データ要素間のストライドを示すストライド情報と、前記並び順が先頭のデータ要素のアドレスである開始アドレスと、を受け付けると、前記所定サイズを前記ストライドで割って処理サイズを算出し、また、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致するかを判断する制御手段と、
前記m個のデータ要素を、前記並び順が連続しかつ前記処理サイズとnを乗算した値の数のデータ要素からなる処理グループに分けていき、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致すると判断された場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素を前記並び順で前記処理サイズの数ごとに分けたブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する処理手段と、を含む情報処理装置。Information for transferring m data elements whose arrangement order is determined to a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses. A processing device comprising:
storage means having n register banks, wherein the m data elements are interleaved in units of the data elements in the arrangement order and are stored in the n register banks in order.
When the stride information indicating the stride between data elements and the start address which is the address of the first data element in the arrangement order are received, the processing size is calculated by dividing the predetermined size by the stride, and the start Control means for determining whether the address matches the start address of any of the memory blocks;
The m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. And an information processing apparatus including processing means for transferring.
前記m個のデータ要素を、前記並び順に前記データ要素単位でインタリーブしてn個のレジスタバンクに順番に格納し、
データ要素間のストライドを示すストライド情報と、前記並び順が先頭のデータ要素のアドレスである開始アドレスと、を受け付けると、前記所定サイズを前記ストライドで割って処理サイズを算出し、また、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致するかを判断し、
前記m個のデータ要素を、前記並び順が連続しかつ前記処理サイズとnを乗算した値の数のデータ要素からなる処理グループに分けていき、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致すると判断された場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素を前記並び順で前記処理サイズの数ごとに分けたブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する、データ転送方法。Information for transferring m data elements whose arrangement order is determined to a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses. A data transfer method in a processing device,
The m data elements are interleaved in units of the data elements in the arrangement order, and sequentially stored in n register banks,
When the stride information indicating the stride between data elements and the start address which is the address of the first data element in the arrangement order are received, the processing size is calculated by dividing the predetermined size by the stride, and the start Determine whether the address matches the start address of any memory block,
The m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. Data transfer method to transfer.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2011531841A JP5423801B2 (en) | 2009-09-15 | 2010-07-28 | Information processing apparatus and data transfer method |
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2009213262 | 2009-09-15 | ||
| JP2009213262 | 2009-09-15 | ||
| PCT/JP2010/062664 WO2011033862A1 (en) | 2009-09-15 | 2010-07-28 | Information processing device and data transfer method |
| JP2011531841A JP5423801B2 (en) | 2009-09-15 | 2010-07-28 | Information processing apparatus and data transfer method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPWO2011033862A1 JPWO2011033862A1 (en) | 2013-02-07 |
| JP5423801B2 true JP5423801B2 (en) | 2014-02-19 |
Family
ID=43758475
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2011531841A Expired - Fee Related JP5423801B2 (en) | 2009-09-15 | 2010-07-28 | Information processing apparatus and data transfer method |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JP5423801B2 (en) |
| WO (1) | WO2011033862A1 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7512622B2 (en) * | 2020-03-13 | 2024-07-09 | 日本電気株式会社 | MEMORY ACCESS CONTROL DEVICE, MEMORY ACCESS CONTROL SYSTEM, MEMORY ACCESS CONTROL METHOD, AND MEMORY ACCESS CONTROL PROGRAM |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH096759A (en) * | 1995-06-16 | 1997-01-10 | Kofu Nippon Denki Kk | Vector processor |
| JPH11232078A (en) * | 1998-02-13 | 1999-08-27 | Nec Kofu Ltd | Vector processor |
| JP2000099496A (en) * | 1998-09-18 | 2000-04-07 | Fujitsu Ltd | Cache storage |
| JP2008250926A (en) * | 2007-03-30 | 2008-10-16 | Nec Corp | Vector processing apparatus and vector processing system |
-
2010
- 2010-07-28 WO PCT/JP2010/062664 patent/WO2011033862A1/en not_active Ceased
- 2010-07-28 JP JP2011531841A patent/JP5423801B2/en not_active Expired - Fee Related
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH096759A (en) * | 1995-06-16 | 1997-01-10 | Kofu Nippon Denki Kk | Vector processor |
| JPH11232078A (en) * | 1998-02-13 | 1999-08-27 | Nec Kofu Ltd | Vector processor |
| JP2000099496A (en) * | 1998-09-18 | 2000-04-07 | Fujitsu Ltd | Cache storage |
| JP2008250926A (en) * | 2007-03-30 | 2008-10-16 | Nec Corp | Vector processing apparatus and vector processing system |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2011033862A1 (en) | 2011-03-24 |
| JPWO2011033862A1 (en) | 2013-02-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5431003B2 (en) | Reconfigurable circuit and reconfigurable circuit system | |
| KR20110104330A (en) | Memory-Centric Communications in Coarse Grain Reconstruction Arrays | |
| JP2012089010A (en) | Memory control apparatus, storage apparatus and memory control method | |
| US8812783B2 (en) | Operation apparatus, cache apparatus, and control method thereof | |
| US20060218315A1 (en) | Memory access control circuit | |
| JP5423801B2 (en) | Information processing apparatus and data transfer method | |
| US8825729B1 (en) | Power and bandwidth efficient FFT for DDR memory | |
| JP4502792B2 (en) | Data buffer circuit | |
| JP4240610B2 (en) | Computer system | |
| JP5527340B2 (en) | Vector processing apparatus and vector processing method | |
| US20070156937A1 (en) | Data transfer in multiprocessor system | |
| CN113222115A (en) | Convolutional neural network-oriented shared cache array | |
| JP6294732B2 (en) | Data transfer control device and memory built-in device | |
| US20230153261A1 (en) | Processor and arithmetic processing method | |
| JP5182284B2 (en) | Vector processing equipment | |
| JP2008257508A (en) | Cache control method, cache device, and microcomputer | |
| US12405794B2 (en) | Signal processing apparatus and non-transitory computer-readable storage medium | |
| Chang et al. | Memory-centric communication architecture for reconfigurable computing | |
| JPWO2014103235A1 (en) | Arithmetic apparatus and arithmetic method | |
| TW201329708A (en) | Buffer managing method and buffer controller thereof | |
| JP2006011706A (en) | Inverse matrix operation circuit | |
| JP2008102599A (en) | Processor | |
| JP2010032402A (en) | Semiconductor testing device | |
| JP2000132527A (en) | Inter-processor communication controller | |
| CN121858473A (en) | A fast transposition method and apparatus based on DMA hardware |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130612 |
|
| 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: 20131029 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131111 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5423801 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |