JP2006004226A - Data arithmetic unit - Google Patents
Data arithmetic unit Download PDFInfo
- Publication number
- JP2006004226A JP2006004226A JP2004180639A JP2004180639A JP2006004226A JP 2006004226 A JP2006004226 A JP 2006004226A JP 2004180639 A JP2004180639 A JP 2004180639A JP 2004180639 A JP2004180639 A JP 2004180639A JP 2006004226 A JP2006004226 A JP 2006004226A
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- index
- registers
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
Description
本発明は、データを演算する装置および方法に係り、特に、プロセッサの処理効率を向上し、プログラムコストおよび製造コストを低減するのに好適なデータ演算装置に関する。 The present invention relates to an apparatus and method for calculating data, and more particularly to a data calculation apparatus suitable for improving the processing efficiency of a processor and reducing program cost and manufacturing cost.
デジタル信号処理をプロセッサで行う場合、メモリに対する1回のデータアクセスで、複数のデータをまとめて読み込んだり書き込んだりすることがある。これは、例えば、演算器で語長の長いデータが必要な場合や、処理効率を向上するために演算器で並列処理を行う場合に生じる。
32ビットのRISCプロセッサは、記憶容量が1バイト(8ビット)のレジスタを4つ単位でまとめてグループレジスタを構成し、レジスタファイルとメモリとの間のデータアクセスをグループレジスタ単位(4バイト単位)で行う。メモリに対しては、4の整数倍のアドレスを先頭アドレスとして4バイトのデータをグループレジスタにまとめて読み込み、4の整数倍のアドレスを先頭アドレスとしてグループレジスタのデータをまとめて書き込む。例えば、メモリの先頭から順にデータを読み込む場合、グループレジスタには、1回目のデータアクセスで0000h〜0003h番地のアドレスのデータが、2回目のデータアクセスで0004h〜0007h番地のアドレスのデータがそれぞれ読み込まれる。
When digital signal processing is performed by a processor, a plurality of data may be collectively read or written by one data access to the memory. This occurs, for example, when data having a long word length is required by the arithmetic unit, or when parallel processing is performed by the arithmetic unit in order to improve processing efficiency.
The 32-bit RISC processor configures a group register by grouping registers each having a storage capacity of 1 byte (8 bits) in units of four, and data access between the register file and the memory is performed in units of group registers (units of four bytes). To do. For the memory, 4 bytes of data are collectively read into the group register with an address that is an integer multiple of 4 as the start address, and the group register data is collectively written with an address that is an integer multiple of 4 as the start address. For example, when reading data sequentially from the beginning of the memory, the group register reads the data at
このようなデータアクセスを行う際、メモリ上のデータの先頭アドレスがプロセッサのアクセス単位の整数倍でない場合に問題が生じる。この状況は、メモリ上のデータのアドレス境界(以下、データ境界という。)が、プロセッサのアクセス可能なアドレス境界(以下、アクセス境界という。)と一致していないため、境界不整列データアクセスと呼ばれる。 When performing such data access, a problem arises when the top address of the data on the memory is not an integral multiple of the access unit of the processor. This situation is called boundary-misaligned data access because the address boundary of data on the memory (hereinafter referred to as data boundary) does not match the address boundary accessible by the processor (hereinafter referred to as access boundary). .
境界不整列データアクセスが引き起こす問題として、処理効率の低下を挙げることができる。32ビットのRISCプロセッサの場合、アクセス境界は、4の整数倍である。4バイト長のデータを処理する場合、4バイト長のデータをメモリから読み込むが、そのデータの先頭アドレスが4の倍数でないと、所望の4バイトを取得するために2回のデータアクセスが必要となり、さらにその並べ替えをソフトウェアで行うため、処理効率が低下する。このような問題を解決するため、RISCプロセッサ用のプログラムでは、コンパイル時に、データ境界とアクセス境界が一致するようにすべてのデータを配置し、実行時には境界不整列データアクセスが起こらないようにしている。
しかしながら、データの論理構造が重複している場合は、コンパイラでは対処することができない。
A problem caused by boundary misaligned data access can be a reduction in processing efficiency. For a 32-bit RISC processor, the access boundary is an integer multiple of four. When processing data of 4 bytes length, data of 4 bytes length is read from the memory, but if the head address of the data is not a multiple of 4, two data accesses are required to obtain the desired 4 bytes. Further, since the rearrangement is performed by software, the processing efficiency is lowered. In order to solve such a problem, in the RISC processor program, all data is arranged so that the data boundary and the access boundary coincide with each other at the time of compilation, so that the unaligned data access does not occur at the time of execution. .
However, if the logical structure of data overlaps, the compiler cannot handle it.
図10は、メモリ上のデータの配置を示す図である。
図10において、メモリには、0000h番地〜000Fh番地のアドレスに16バイトのデータs[0]〜s[15]が格納され、0100h番地〜010Fh番地のアドレスに16バイトのデータr[0]〜r[15]が格納されている。
データの論理構造が重複しているとは、s[0]〜s[3]が1つのグループデータを構成するが、s[1]〜s[4]、s[2]〜s[5]およびs[3]〜s[6]もそれぞれ1つのグループデータを構成する場合である。例えば、下式(1)〜(4)に示すような相関演算を行う場合には、境界不整列データアクセスを回避することができない。
FIG. 10 is a diagram showing the arrangement of data on the memory.
In FIG. 10, the memory stores 16 bytes of data s [0] to s [15] at
The logical structure of data is duplicated. S [0] to s [3] constitute one group data, but s [1] to s [4] and s [2] to s [5] And s [3] to s [6] also constitute one group data. For example, when performing a correlation operation as shown in the following equations (1) to (4), it is not possible to avoid boundary misaligned data access.
p[0] = r[0]*s[0] + r[1]*s[1] + r[2]*s[2] + r[3]*s[3] + … …(1)
p[1] = r[0]*s[1] + r[1]*s[2] + r[2]*s[3] + r[3]*s[4] + … …(2)
p[2] = r[0]*s[2] + r[1]*s[3] + r[2]*s[4] + r[3]*s[5] + … …(3)
p[3] = r[0]*s[3] + r[1]*s[4] + r[2]*s[5] + r[3]*s[6] + … …(4)
p [0] = r [0] * s [0] + r [1] * s [1] + r [2] * s [2] + r [3] * s [3] +… (1)
p [1] = r [0] * s [1] + r [1] * s [2] + r [2] * s [3] + r [3] * s [4] +… (2)
p [2] = r [0] * s [2] + r [1] * s [3] + r [2] * s [4] + r [3] * s [5] +… (3)
p [3] = r [0] * s [3] + r [1] * s [4] + r [2] * s [5] + r [3] * s [6] +… (4)
さらに、プログラムも4通り作成しなければならない。
まず、p[0] を求めるには、次の(1)〜(5)のステップを含むプログラムになる。p[4]、p[8]、…、p[4n]についても同様である。
(1)グループレジスタにs[0]〜s[3]を読み込む。
(2)〜(5)グループレジスタのデータに基づいて、r[0]*s[0]、r[1]*s[1]、r[2]*s[2]、r[3]*s[3]を演算する。
In addition, four programs must be created.
First, to obtain p [0], the program includes the following steps (1) to (5). The same applies to p [4], p [8], ..., p [4n].
(1) Read s [0] to s [3] into the group register.
(2) to (5) Based on the group register data, r [0] * s [0], r [1] * s [1], r [2] * s [2], r [3] * Calculate s [3].
次に、p[1] を求めるには、次の(1)〜(6)のステップを含むプログラムになる。p[5]、p[9]、…、p[4n+1]についても同様である。
(1)グループレジスタにs[0]〜s[3]を読み込む。
(2)〜(4)グループレジスタのデータに基づいて、r[0]*s[1]、r[1]*s[2]、r[2]*s[3]を演算する。
(5)グループレジスタにs[4]〜s[7]を読み込む。
(6)グループレジスタのデータに基づいて、r[3]*s[4]を演算する。
Next, to obtain p [1], the program includes the following steps (1) to (6). The same applies to p [5], p [9],..., p [4n + 1].
(1) Read s [0] to s [3] into the group register.
(2) to (4) Calculate r [0] * s [1], r [1] * s [2], r [2] * s [3] based on the data in the group register.
(5) Read s [4] to s [7] into the group register.
(6) Calculate r [3] * s [4] based on the group register data.
次に、p[2] を求めるには、次の(1)〜(6)のステップを含むプログラムになる。p[6]、p[10]、…、p[4n+2]についても同様である。
(1)グループレジスタにs[0]〜s[3]を読み込む。
(2),(3)グループレジスタのデータに基づいて、r[0]*s[2]、r[1]*s[3]を演算する。
(4)グループレジスタにs[4]〜s[7]を読み込む。
(5),(6)グループレジスタのデータに基づいて、r[2]*s[4]、r[3]*s[5]を演算する。
Next, to obtain p [2], the program includes the following steps (1) to (6). The same applies to p [6], p [10],..., p [4n + 2].
(1) Read s [0] to s [3] into the group register.
(2), (3) Calculate r [0] * s [2] and r [1] * s [3] based on the group register data.
(4) Read s [4] to s [7] into the group register.
(5), (6) Calculate r [2] * s [4] and r [3] * s [5] based on the group register data.
次に、p[3] を求めるには、次の(1)〜(6)のステップを含むプログラムになる。p[7]、p[11]、…、p[4n+3]についても同様である。
(1)グループレジスタにs[0]〜s[3]を読み込む。
(2)グループレジスタのデータに基づいて、r[0]*s[3]を演算する。
(3)グループレジスタにs[4]〜s[7]を読み込む。
(4)〜(6)グループレジスタのデータに基づいて、r[1]*s[4]、r[2]*s[5]、r[3]*s[6]を演算する。
Next, to obtain p [3], the program includes the following steps (1) to (6). The same applies to p [7], p [11], ..., p [4n + 3].
(1) Read s [0] to s [3] into the group register.
(2) Calculate r [0] * s [3] based on the group register data.
(3) Read s [4] to s [7] into the group register.
(4) to (6) r [1] * s [4], r [2] * s [5], and r [3] * s [6] are calculated based on the group register data.
このように、データの論理構造が重複している場合は、境界不整列データアクセスが生じてしまうため、処理効率が低下し、プログラムコスト(プログラムの作成に要する手間、プログラムのデータ容量および複雑さなどをいう。)が増加するという問題がある。このような問題を解決するため、特許文献1および非特許文献1記載のデジタル信号プロセッサが提案されている。
As described above, when the logical structure of the data overlaps, boundary-aligned data access occurs, so that the processing efficiency is reduced, and the program cost (the time required for creating the program, the data capacity and complexity of the program) is reduced. There is a problem that increases. In order to solve such problems, digital signal processors described in
図11は、従来のデジタル信号プロセッサの構成を示すブロック図である。
特許文献1および非特許文献1記載の発明は、図11に示すように、レジスタファイル200と、データを整列するデータ整列バッファ900とを備え、データ整列バッファ900を介してデータメモリ10からレジスタファイル200にデータを読み込む。
データ整列バッファ900は、整列バッファ910およびマルチプレクサ/バレルシフタ912を含む。
FIG. 11 is a block diagram showing the configuration of a conventional digital signal processor.
As shown in FIG. 11, the invention described in
マルチプレクサ/バレルシフタ912は、データメモリ10からの32ビットと、整列バッファ910の出力からの32ビットとを含む64ビットのデータを受け取り、与えられたオフセット信号に応答して、64ビットのデータ中32ビットをその入力として選択し、選択した32ビットのデータをレジスタファイル200に供給する。
データ整列バッファ900は、境界整列データアクセス(データ境界がアクセス境界と一致している状況をいう。)および境界不整列データアクセスに用いることができる。境界整列データアクセスでは、マルチプレクサ/バレルシフタ912を介して、指定したオペランドを単一のメモリ行からレジスタファイル200に供給する。境界不整列データアクセスでは、整列バッファ910およびマルチプレクサ/バレルシフタ912を介して、指定したオペランドを2つのメモリ行からレジスタファイル200に供給する。
The multiplexer /
The
図12は、従来のデジタル信号プロセッサの動作を説明するための図である。
図12において、データメモリ10には、0000h番地〜0007h番地のアドレスに8バイトのデータs[0]〜s[7]が格納されている。
s[1]〜s[4]を読み込む境界不整列データアクセスを行う場合は、まず、s[0]〜s[3]を整列バッファ910に読み込む。次いで、例えば、図12(a)に示すように、「0」を示すオフセット信号をマルチプレクサ/バレルシフタ912に与えると、マルチプレクサ/バレルシフタ912によりデータの選択が行われ、レジスタファイル200にs[1]〜s[4]が供給される。
FIG. 12 is a diagram for explaining the operation of a conventional digital signal processor.
In FIG. 12, the
When performing boundary misalignment data access for reading s [1] to s [4], first, s [0] to s [3] are read into the
また、s[2]〜s[5]を読み込む境界不整列データアクセスを行う場合は、例えば、図12(b)に示すように、「1」を示すオフセット信号をマルチプレクサ/バレルシフタ912に与えると、マルチプレクサ/バレルシフタ912によりデータの選択が行われ、レジスタファイル200にs[2]〜s[5]が供給される。
また、s[3]〜s[6]を読み込む境界不整列データアクセスを行う場合は、例えば、図12(c)に示すように、「2」を示すオフセット信号をマルチプレクサ/バレルシフタ912に与えると、マルチプレクサ/バレルシフタ912によりデータの選択が行われ、レジスタファイル200にs[3]〜s[6]が供給される。
Further, when performing boundary misalignment data access for reading s [3] to s [6], for example, as shown in FIG. 12C, an offset signal indicating “2” is given to the multiplexer /
しかしながら、特許文献1および非特許文献1記載の発明にあっては、少なくともプロセッサのアクセス単位に相当する記憶容量(図11の例では、32ビット)の整列バッファ910を設けなければならないため、製造コストが増加するという問題があった。
また、図12の例では、境界不整列データアクセスのパターンを3つ示したが、この3つのアクセスパターンに対応するだけならば、オフセット信号は、2ビットですむ。しかしながら、例えば、s[0]、s[1]、s[4]、s[5]を読み込む境界不整列データアクセスなど、他のアクセスパターンにも対応しようとすると、オフセット信号のビット数がさらに必要となり、製造コストが増加するという問題があった。ちなみに、図12の例では、境界不整列データアクセスの全アクセスパターンは、8C4−2=68通りあるので、全アクセスパターンに対応しようとすると、オフセット信号は、7ビット必要となる。
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、プロセッサの処理効率を向上し、プログラムコストおよび製造コストを低減するのに好適なデータ演算装置を提供することを目的としている。
However, in the inventions described in
In the example of FIG. 12, three boundary misaligned data access patterns are shown. However, if only these three access patterns are supported, the offset signal may be 2 bits. However, for example, when trying to support other access patterns such as boundary misaligned data access for reading s [0], s [1], s [4], and s [5], the number of bits of the offset signal is further increased. There is a problem that the manufacturing cost increases. Incidentally, in the example of FIG. 12, since there are 8 C 4 −2 = 68 total access patterns for boundary misaligned data access, 7 bits are required for the offset signal in order to support all access patterns.
Therefore, the present invention has been made paying attention to such an unsolved problem of the conventional technology, and is suitable for improving the processing efficiency of the processor and reducing the program cost and the manufacturing cost. The object is to provide an arithmetic device.
上記目的を達成するために、本発明に係る請求項1記載のデータ演算装置は、複数のレジスタからなるレジスタファイルと、前記レジスタのデータを用いて演算を行う演算器とを備え、前記レジスタファイルと外部との間のデータアクセスを、複数の前記レジスタからなるグループレジスタ単位で行うデータ演算装置であって、インデックスデータを記憶するインデックスレジスタと、前記インデックスレジスタのインデックスデータに基づいて、前記レジスタファイルのレジスタのうち少なくとも2つの前記グループレジスタのなかから、1または複数の前記レジスタのデータを選択して前記演算器に出力するセレクタとを備える。
In order to achieve the above object, a data operation device according to
このような構成であれば、まず、境界不整列データアクセスが生じる可能性のあるデータ群を少なくとも2つのグループレジスタにまとめて読み込む。そして、インデックスレジスタにインデックスデータを格納すると、セレクタにより、インデックスレジスタのインデックスデータに基づいて、それらグループレジスタのなかから1または複数のレジスタのデータが選択されて演算器に出力され、演算器により演算が行われる。したがって、インデックスデータの格納、セレクタによる選択、および演算器による演算を繰り返し行えば、それらグループレジスタにまとめて読み込まれたデータ群のなかで演算に必要なデータが逐次選択されて演算器に出力される。いずれのデータを演算に用いるかは、インデックスデータによって選択することができるので、境界整列データアクセスとなるグループデータも、境界不整列データアクセスとなるグループデータも区別なく取り扱うことができる。すなわち、境界整列データアクセスとなるグループデータについては、グループレジスタの先頭のレジスタから順にデータを選択していけばよいし、境界不整列データアクセスとなるグループデータについては、グループレジスタの所定箇所のレジスタから順にデータを選択していけばよい。 With such a configuration, first, a data group that may cause boundary-unaligned data access is collectively read into at least two group registers. When the index data is stored in the index register, the selector selects one or a plurality of register data from the group register based on the index data of the index register and outputs the selected data to the arithmetic unit. Is done. Therefore, if index data storage, selection by the selector, and calculation by the arithmetic unit are repeated, data necessary for the calculation is sequentially selected from the group of data read in the group register and output to the arithmetic unit. The Which data is used for the calculation can be selected by the index data, so that it is possible to handle the group data for boundary aligned data access and the group data for boundary unaligned data access without distinction. That is, for group data to be boundary aligned data access, data may be selected in order from the first register of the group register, and for group data to be boundary unaligned data access, a register at a predetermined position of the group register You can select the data in order.
ここで、セレクタは、1または複数のレジスタのデータを選択するようになっていればどのような構成であってもよく、複数のレジスタのデータを選択する場合は、例えば、グループレジスタ内で連続したレジスタのデータであってもよいし、グループレジスタ内で分散したレジスタのデータであってもよい。
また、インデックスレジスタは、インデックスデータをあらゆる手段でかつあらゆる時期に記憶するものであり、インデックスデータをあらかじめ記憶してあるものであってもよいし、インデックスデータをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によってインデックスデータを記憶するようになっていてもよい。
Here, the selector may have any configuration as long as it can select data of one or a plurality of registers. For example, when selecting data of a plurality of registers, the selector is continuous in the group register. The data of the registered registers may be used, or the data of the registers distributed in the group register may be used.
The index register stores the index data by any means and at any time. The index register may store the index data in advance, or without storing the index data in advance. The index data may be stored by an external input or the like during operation.
さらに、本発明に係る請求項2記載のデータ演算装置は、複数のレジスタからなるレジスタファイルと、前記レジスタのデータを用いて演算を行う演算器とを備え、前記レジスタファイルと外部との間のデータアクセスを、複数の前記レジスタからなるグループレジスタ単位で行うデータ演算装置であって、前記レジスタファイルのレジスタのうち少なくとも2つの前記グループレジスタをレジスタブロックとしてグループ化したときに、前記レジスタブロック内のデータの位置を指定するエレメントインデックスデータを記憶するインデックスレジスタと、前記インデックスレジスタのエレメントインデックスデータに基づいて、前記レジスタブロックのレジスタのなかからいずれか1つの前記レジスタのデータを選択して前記演算器に出力するセレクタとを備える。
Furthermore, the data operation device according to
このような構成であれば、まず、境界不整列データアクセスが生じる可能性のあるデータ群をレジスタブロックのレジスタにまとめて読み込む。そして、インデックスレジスタにエレメントインデックスデータを格納すると、セレクタにより、インデックスレジスタのエレメントインデックスデータに基づいて、レジスタブロックのレジスタのなかからいずれか1つのレジスタのデータが選択されて演算器に出力され、演算器により演算が行われる。したがって、エレメントインデックスデータの格納、セレクタによる選択、および演算器による演算を繰り返し行えば、レジスタブロックのレジスタにまとめて読み込まれたデータ群のなかで演算に必要なデータが逐次選択されて演算器に出力される。いずれのデータを演算に用いるかは、インデックスデータによって選択することができるので、境界整列データアクセスとなるグループデータも、境界不整列データアクセスとなるグループデータも区別なく取り扱うことができる。すなわち、境界整列データアクセスとなるグループデータについては、グループレジスタの先頭のレジスタから順にデータを選択していけばよいし、境界不整列データアクセスとなるグループデータについては、グループレジスタの所定箇所のレジスタから順にデータを選択していけばよい。 With such a configuration, first, a data group that may cause a boundary misaligned data access is collectively read into the register of the register block. When the element index data is stored in the index register, the selector selects one register data from the register block registers based on the element index data in the index register, and outputs the selected register data to the arithmetic unit. The calculation is performed by the instrument. Therefore, if the element index data is stored, the selection by the selector, and the operation by the arithmetic unit are repeated, the data necessary for the operation is sequentially selected from the data group read together in the register of the register block, and the operation unit is selected. Is output. Which data is used for the calculation can be selected by the index data, so that it is possible to handle the group data for boundary aligned data access and the group data for boundary unaligned data access without distinction. That is, for group data to be boundary aligned data access, data may be selected in order from the first register of the group register, and for group data to be boundary unaligned data access, a register at a predetermined position of the group register You can select the data in order.
ここで、グループレジスタのグループ化は、物理的に行ってもよいし、論理的に行ってもよい。前者の場合、例えば、レジスタファイルのなかで、レジスタブロックに属するグループレジスタと、他のレジスタとをそれぞれ別々のものとして構成することができる。以下、請求項7記載のデータ演算方法において同じである。
また、インデックスレジスタは、エレメントインデックスデータをあらゆる手段でかつあらゆる時期に記憶するものであり、エレメントインデックスデータをあらかじめ記憶してあるものであってもよいし、エレメントインデックスデータをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によってエレメントインデックスデータを記憶するようになっていてもよい。
Here, grouping of the group registers may be performed physically or logically. In the former case, for example, in the register file, the group register belonging to the register block and the other registers can be configured separately. Hereinafter, the same applies to the data calculation method according to the seventh aspect.
The index register stores element index data at any time and at any time, and may store element index data in advance, or without storing element index data in advance. The element index data may be stored by an external input or the like when the apparatus is operating.
さらに、本発明に係る請求項3記載のデータ演算装置は、請求項2記載のデータ演算装置において、さらに、複数の前記インデックスレジスタからなるインデックスレジスタファイルと、与えられたセレクトデータに基づいて、前記インデックスレジスタファイルのなかからいずれか1つの前記インデックスレジスタのエレメントインデックスデータを選択して前記セレクタに出力する第2セレクタとを備える。
Furthermore, the data operation device according to
このような構成であれば、セレクトデータが与えられると、第2セレクタにより、インデックスレジスタファイルのなかからいずれか1つのインデックスレジスタのエレメントインデックスデータが選択されてセレクタに出力され、セレクタにより、入力されたエレメントインデックスデータに基づいて、レジスタブロックのレジスタのなかからいずれか1つのレジスタのデータが選択されて演算器に出力される。 In such a configuration, when the select data is given, the element index data of any one of the index registers is selected from the index register file by the second selector and output to the selector, and is input by the selector. Based on the element index data, the data in one of the registers in the register block is selected and output to the computing unit.
さらに、本発明に係る請求項4記載のデータ演算装置は、請求項3記載のデータ演算装置において、さらに、前記セレクタに出力したエレメントインデックスデータを更新して前記インデックスレジスタファイルに格納するインデックスデータ更新手段を備える。
このような構成であれば、インデックスデータ更新手段により、セレクタに出力したエレメントインデックスデータが更新されてインデックスレジスタファイルに格納される。
Furthermore, the data operation device according to
With such a configuration, the index data update means updates the element index data output to the selector and stores it in the index register file.
さらに、本発明に係る請求項5記載のデータ演算装置は、請求項2ないし4のいずれか1項に記載のデータ演算装置において、さらに、前記レジスタブロックを指定するバンドルインデックスデータが与えられたときに、与えられたバンドルインデックスデータ、および前記インデックスレジスタのエレメントインデックスデータに基づいて、当該バンドルインデックスデータにより指定される前記レジスタブロックおよび当該レジスタブロック内のデータの位置を示す第2エレメントインデックスデータを生成するインデックスデータ生成手段を備え、前記セレクタは、前記インデックスデータ生成手段で生成した第2エレメントインデックスデータに基づいて、複数の前記レジスタブロックのレジスタのなかからいずれか1つの前記レジスタのデータを選択して前記演算器に出力するようになっている。
Furthermore, the data operation device according to
このような構成であれば、バンドルインデックスデータが与えられると、インデックスデータ生成手段により、与えられたバンドルインデックスデータおよびエレメントインデックスデータに基づいて、そのバンドルインデックスデータにより指定されるレジスタブロックおよびそのレジスタブロック内のデータの位置を示す第2エレメントインデックスデータが生成される。そして、セレクタにより、生成された第2エレメントインデックスデータに基づいて、複数のレジスタブロックのレジスタのなかからいずれか1つのレジスタのデータが選択されて演算器に出力される。 In such a configuration, when bundle index data is given, a register block designated by the bundle index data and its register block based on the given bundle index data and element index data by the index data generating means Second element index data indicating the position of the data within is generated. Then, based on the generated second element index data, the selector selects one register data from the registers of the plurality of register blocks and outputs the selected register data to the arithmetic unit.
さらに、本発明に係る請求項6記載のデータ演算装置は、請求項5記載のデータ演算装置において、前記インデックスデータ生成手段は、2以上の第1所定数の前記グループレジスタを前記レジスタブロックとして論理的にグループ化する第1バンドルモード、および前記第1所定数よりも多い第2所定数の前記グループレジスタを前記レジスタブロックとして論理的にグループ化する第2バンドルモードのうちいずれかを指定するバンドルモードデータが与えられたときに、与えられたバンドルモードデータ、前記バンドルインデックスデータおよび前記エレメントインデックスデータに基づいて、前記第2エレメントインデックスデータを生成するようになっている。
Furthermore, the data operation device according to
このような構成であれば、第1バンドルモードおよび第2バンドルモードのうちいずれかを指定するバンドルモードデータが与えられると、インデックスデータ生成手段により、与えられたバンドルモードデータ、バンドルインデックスデータおよびエレメントインデックスデータに基づいて、第2エレメントインデックスデータが生成される。
一方、上記目的を達成するために、本発明に係る請求項7記載のデータ演算方法は、複数のレジスタからなるレジスタファイルと、前記レジスタのデータを用いて演算を行う演算器とを備え、前記レジスタファイルと外部との間のデータアクセスを、複数の前記レジスタからなるグループレジスタ単位で行うデータ演算装置を利用して演算を行うデータ演算方法であって、前記レジスタファイルのレジスタのうち少なくとも2つの前記グループレジスタをレジスタブロックとしてグループ化したときに、前記レジスタブロックの各グループレジスタに前記外部からデータを読み込むデータ読込ステップと、前記レジスタブロック内のデータの位置を指定するエレメントインデックスデータをインデックスレジスタに格納するインデックスデータ格納ステップと、前記インデックスレジスタのエレメントインデックスデータに基づいて、前記レジスタブロックのレジスタのなかからいずれか1つの前記レジスタのデータを選択して前記演算器に出力するデータ選択ステップと、前記演算器により演算を行う演算ステップとを含む。
さらに、本発明に係る請求項8記載のデータ演算方法は、請求項7記載のデータ演算方法において、さらに、前記インデックスデータ格納ステップ、前記データ選択ステップおよび前記演算ステップを繰り返し行う反復演算ステップを含む。
With such a configuration, when bundle mode data designating either the first bundle mode or the second bundle mode is given, the given bundle mode data, bundle index data, and elements are given by the index data generating means. Second element index data is generated based on the index data.
On the other hand, in order to achieve the above object, a data operation method according to
Furthermore, the data operation method according to
以上説明したように、本発明に係る請求項1記載のデータ演算装置によれば、境界不整列データアクセスとなる場合や、データの論理構造が重複している場合でも、レジスタファイルへのデータの読み込み回数が極端に増加することがないので、処理効率を向上することができるという効果が得られる。また、データの論理構造が重複している場合でも、プログラムの多少の変更で対応することができるので、プログラムコストを低減することができるという効果も得られる。さらに、インデックスレジスタおよびセレクタを設けるだけでよく、また、多くの境界不整列データアクセスのパターンに対応する場合でも、インデックスデータのビット数をさほど増やさなくてすむので、特許文献1記載の発明に比して、製造コストを低減することができるという効果も得られる。 As described above, according to the data operation device of the first aspect of the present invention, even when boundary unaligned data access occurs or when the logical structure of data overlaps, the data of the register file is stored. Since the number of readings does not increase extremely, an effect that the processing efficiency can be improved is obtained. In addition, even when the logical structure of data is duplicated, it is possible to cope with a slight change in the program, so that an effect of reducing the program cost can be obtained. Furthermore, it is only necessary to provide an index register and a selector, and even when dealing with many boundary-unaligned data access patterns, it is not necessary to increase the number of bits of the index data. And the effect that manufacturing cost can be reduced is also acquired.
さらに、本発明に係る請求項2記載のデータ演算装置によれば、境界不整列データアクセスとなる場合や、データの論理構造が重複している場合でも、レジスタファイルへのデータの読み込み回数が極端に増加することがないので、処理効率を向上することができるという効果が得られる。また、データの論理構造が重複している場合でも、プログラムの多少の変更で対応することができるので、プログラムコストを低減することができるという効果も得られる。さらに、インデックスレジスタおよびセレクタを設けるだけでよく、また、多くの境界不整列データアクセスのパターンに対応する場合でも、エレメントインデックスデータのビット数をさほど増やさなくてすむので、特許文献1記載の発明に比して、製造コストを低減することができるという効果も得られる。 Furthermore, according to the data operation device of the second aspect of the present invention, the number of times data is read into the register file is extremely small even when boundary-aligned data access occurs or when the logical structure of data is duplicated. Therefore, there is an effect that the processing efficiency can be improved. In addition, even when the logical structure of data is duplicated, it is possible to cope with a slight change in the program, so that an effect of reducing the program cost can be obtained. Furthermore, it is only necessary to provide an index register and a selector, and even when dealing with many boundary-unaligned data access patterns, it is not necessary to increase the number of bits of the element index data. In comparison, the manufacturing cost can be reduced.
さらに、本発明に係る請求項3記載のデータ演算装置によれば、複数のエレメントインデックスデータをインデックスレジスタファイルに格納しておき、セレクトデータによってそれらエレメントインデックスデータを選択的に使用することができるので、インデックスレジスタの使い勝手が向上し、プログラムを作成しやすくなるという効果が得られる。
さらに、本発明に係る請求項4記載のデータ演算装置によれば、エレメントインデックスデータを使用するたびに自動的に更新されるので、エレメントインデックスデータの更新をソフトウェアで行わなくてすみ、演算速度を向上することができるという効果が得られる。
Furthermore, according to the data arithmetic device according to
Furthermore, according to the data operation device of
さらに、本発明に係る請求項5記載のデータ演算装置によれば、レジスタファイルに複数のレジスタブロックが存在する場合、バンドルインデックスデータによってそれらレジスタブロックを選択的に使用することができるので、レジスタの使い勝手が向上し、プログラムを作成しやすくなるという効果が得られる。
さらに、本発明に係る請求項6記載のデータ演算装置によれば、バンドルモードデータによってレジスタブロックの論理構造を変更することができるので、レジスタの使い勝手がさらに向上し、プログラムをさらに作成しやすくなるという効果が得られる。
Furthermore, according to the data arithmetic device according to
Furthermore, according to the data arithmetic device according to
一方、本発明に係る請求項7記載のデータ演算方法によれば、データの論理構造が重複している場合でも、プログラムの多少の変更で対応することができるので、プログラムコストを低減することができるという効果も得られる。さらに、インデックスレジスタを利用するだけでよく、また、多くの境界不整列データアクセスのパターンに対応する場合でも、エレメントインデックスデータのビット数をさほど増やさなくてすむので、特許文献1記載の発明に比して、製造コストを低減することができるという効果も得られる。
On the other hand, according to the data operation method of the seventh aspect of the present invention, even if the logical structure of data is duplicated, it is possible to cope with a slight change in the program, so that the program cost can be reduced. The effect that it is possible is also acquired. Furthermore, it is only necessary to use an index register, and even when dealing with many boundary-unaligned data access patterns, it is not necessary to increase the number of bits of element index data so much, compared with the invention described in
さらに、本発明に係る請求項8記載のデータ演算方法によれば、境界不整列データアクセスとなる場合や、データの論理構造が重複している場合でも、レジスタファイルへのデータの読み込み回数が極端に増加することがないので、処理効率を向上することができるという効果が得られる。 Furthermore, according to the data operation method of the present invention, the number of times data is read into the register file is extremely small even when boundary-aligned data access occurs or when the logical structure of data overlaps. Therefore, there is an effect that the processing efficiency can be improved.
以下、本発明の第1の実施の形態を図面を参照しながら説明する。図1ないし図6は、本発明に係るデータ演算装置の第1の実施の形態を示す図である。
本実施の形態は、本発明に係るデータ演算装置を、図1に示すように、デジタル信号処理を行う32ビットRISC型のデジタル信号処理装置100においてデータ演算部12に適用したものである。
Hereinafter, a first embodiment of the present invention will be described with reference to the drawings. 1 to 6 are diagrams showing a first embodiment of a data arithmetic device according to the present invention.
In this embodiment, as shown in FIG. 1, the data operation device according to the present invention is applied to the
まず、デジタル信号処理装置100の構成を図1を参照しながら説明する。
図1は、デジタル信号処理装置100のハードウェア構成を示すブロック図である。
デジタル信号処理装置100は、図1に示すように、演算用のデータを記憶するデータメモリ10と、データメモリ10からデータを読み込んで演算を行うデータ演算部12と、データメモリ10のデータアドレスを生成するデータアドレス生成部14と、デジタル信号処理装置100全体の制御プログラムを記憶したプログラムメモリ16と、プログラムメモリ16の制御プログラムに基づいてデジタル信号処理装置100全体を制御するプログラムシーケンサ18とで構成されている。データメモリ10、データ演算部12、データアドレス生成部14およびプログラムシーケンサ18は、データを転送するための信号線であるバス20で相互にかつデータ授受可能に接続され、プログラムメモリ16は、プログラムシーケンサ18に直接接続されている。
First, the configuration of the digital
FIG. 1 is a block diagram illustrating a hardware configuration of the digital
As shown in FIG. 1, the digital
データメモリ10は、データ演算部12で演算対象となるデータ、およびデータ演算部12の演算結果のデータを格納する。また、データアドレス生成部14またはプログラムシーケンサ18内のレジスタの値を格納することもある。
データ演算部12は、データメモリ10に対して、4の整数倍のアドレス(0000h、0004h、0008h、000Ch…)をアクセス境界として4バイト単位でデータアクセスを行う。以下、データ演算部12のアクセス境界をグループアドレスという。
The
The
データアドレス生成部14は、データメモリ10と、データ演算部12、データアドレス生成部14またはプログラムシーケンサ18との間のデータ転送を実行する際に必要となるデータアドレスを生成する。また、データアドレスの生成に合わせて、データメモリ10を制御するための信号を生成する。これらの動作は、プログラムシーケンサ18からの制御信号により規定される。
The data address
図2は、データアドレスのデータ構造を示す図である。
データアドレスは、図2に示すように、mビットのデータからなり、データメモリ10の最小記憶単位を1バイトとして2mバイトのメモリ空間を1バイト単位でアクセス可能なアドレスを構成している。データアドレスは、上位(m−2)ビットbm-1,…,b2がグループアドレスを構成し、下位2ビットb1,b0がグループアドレス間の細分されたアドレスを構成している。
FIG. 2 shows the data structure of the data address.
Data address, as shown in FIG. 2 consists of m bits of data, constitutes a accessible address memory space of 2 m bytes minimum storage unit of the
データアドレス生成部14は、より具体的には、複数のポインタレジスタを有し、データアドレスのうちグループアドレスをデータメモリ10に出力し、データアドレスのうち下位2ビットをデータ演算部12にそれぞれ出力する。
図1に戻り、プログラムシーケンサ18は、プログラムメモリ16から制御プログラムを読み出し、読み出した制御プログラムに従って、データメモリ10、データ演算部12、データアドレス生成部14、プログラムメモリ16およびプログラムシーケンサ18を制御する。データメモリ10、データ演算部12およびデータアドレス生成部14に対しては、バス20を介して制御信号を出力し、プログラムメモリ16は制御信号を直接出力する。
More specifically, the data
Returning to FIG. 1, the
次に、データ演算部12の構成を図3および図4を参照しながら詳細に説明する。
図3は、データ演算部12のハードウェア構成を示すブロック図である。
データ演算部12は、図3に示すように、複数のレジスタからなるレジスタファイル200と、レジスタファイル200のデータを用いて演算を行う演算器202と、レジスタファイル200のなかからデータを選択するセレクタ204,206と、複数のインデックスレジスタからなるインデックスレジスタファイル208と、インデックスレジスタファイル208のなかからデータを選択するセレクタ210,212と、インデックスレジスタファイル208のデータを更新する計算器214と、計算器214とバス20のデータを選択するセレクタ216とで構成されている。
Next, the configuration of the
FIG. 3 is a block diagram illustrating a hardware configuration of the
As shown in FIG. 3, the
レジスタファイル200は、n個のグループレジスタR0〜Rn-1からなる。グループレジスタR0は、4個のレジスタR0[0]〜R0[3]からなり、各レジスタR0[0]〜R0[3]は、1バイトの記憶容量を有している。他のグループレジスタR1〜Rn-1についても同様の構成となっている。
セレクタ204は、グループレジスタR0,R1をレジスタブロックAとしてレジスタブロックAの各レジスタと接続し、セレクタ210からのセレクトデータに基づいて、レジスタブロックAのレジスタのなかからいずれか1つのレジスタのデータを選択し、選択したデータを演算器202の第1オペランドとして演算器202に出力する。
The
The
セレクタ210からのセレクトデータは、3ビットからなる。セレクタ204は、セレクトデータの最上位ビットが「0」であるときは、グループレジスタR0のうち下位2ビットの値により指定されるレジスタのデータを選択する。すなわち、セレクトデータが「000」であるときはレジスタR0[0]のデータを、「001」であるときはレジスタR0[1]のデータを、「010」であるときはレジスタR0[2]のデータを、「011」であるときはレジスタR0[3]のデータをそれぞれ選択する。また、セレクトデータの最上位ビットが「1」であるときは、グループレジスタR1のうち下位2ビットの値により指定されるレジスタのデータを選択する。すなわち、セレクトデータが「100」であるときはレジスタR1[0]のデータを、「101」であるときはレジスタR1[1]のデータを、「110」であるときはレジスタR1[2]のデータを、「111」であるときはレジスタR1[3]のデータをそれぞれ選択する。
The select data from the
セレクタ206は、グループレジスタR2,R3をレジスタブロックBとしてレジスタブロックBの各レジスタと接続し、セレクタ212からのセレクトデータに基づいて、レジスタブロックBのレジスタのなかからいずれか1つのレジスタのデータを選択し、選択したデータを演算器202の第2オペランドとして演算器202に出力する。データの選択手順は、セレクタ204と同様である。
インデックスレジスタファイル208は、エレメントインデックスデータを各インデックスレジスタに記憶する。
The
The
図4は、エレメントインデックスデータのデータ構造を示す図である。
エレメントインデックスデータは、図4に示すように、3ビットのデータからなり、最上位ビットb2がグループレジスタR0,R1(R2,R3)の別を示し、下位2ビットb1,b0がグループレジスタの各レジスタの別を示す。エレメントインデックスデータの各ビットは、セレクタ210,212からのセレクトデータの各ビットに対応している。また、エレメントインデックスデータの下位2ビットb1,b0は、データアドレスの下位2ビットb1,b0に対応している。
FIG. 4 is a diagram showing the data structure of element index data.
As shown in FIG. 4, the element index data is composed of 3-bit data. The most significant bit b 2 indicates the group register R 0 , R 1 (R 2 , R 3 ), and the lower 2 bits b 1 , b 0 indicates the group register. Each bit of the element index data corresponds to each bit of the select data from the
図3に戻り、セレクタ210は、プログラムシーケンサ18からのセレクトデータに基づいて、インデックスレジスタファイル208のなかからいずれか1つのインデックスレジスタのエレメントインデックスデータを選択してセレクタ204に出力する。なお、プログラムシーケンサ18では、セレクタ210を制御する命令コードを実行すると、その命令コードに対応するオペランドをセレクトデータとしてセレクタ210に出力する。
Returning to FIG. 3, the
セレクタ212は、プログラムシーケンサ18からのセレクトデータに基づいて、インデックスレジスタファイル208のなかからいずれか1つのインデックスレジスタのエレメントインデックスデータを選択してセレクタ206に出力する。なお、プログラムシーケンサ18では、セレクタ212を制御する命令コードを実行すると、その命令コードに対応するオペランドをセレクトデータとしてセレクタ212に出力する。
The
計算器214は、セレクタ210またはセレクタ212からセレクトデータとして出力されるエレメントインデックスデータを更新してセレクタ216に出力する。エレメントインデックスデータは、レジスタブロックA,Bのレジスタからデータを取得する順序があらかじめ決まっている場合に、その順序でデータが選択できるように更新する。例えば、レジスタブロックA,Bの先頭方向から末尾方向に連続してデータを選択する場合は、エレメントインデックスデータに「1」を加算することにより更新する。末尾方向から先頭方向に連続してデータを選択する場合は、エレメントインデックスデータから「1」を減算することにより更新する。
The
セレクタ216は、プログラムシーケンサ18からのセレクトデータに基づいて、データアドレス生成部14からのデータアドレスのうち下位2ビットのデータ、および計算器214からのエレメントインデックスデータのうちいずれか一方を選択してインデックスレジスタファイル208に格納する。なお、プログラムシーケンサ18では、セレクタ216を制御する命令コードを実行すると、その命令コードに対応するオペランドをセレクトデータとしてセレクタ216に出力する。
Based on the select data from the
次に、本実施の形態の動作を図5および図6を参照しながら説明する。
初めに、デジタル信号処理装置100で上式(1)に示す相関演算を行う場合を説明する。ただし、s[n]とr[n]は、図10に示すように、データメモリ10に格納されているとする。
図5は、プログラムシーケンサ18で実行される処理を示すフローチャートである。
プログラムシーケンサ18では、プログラムメモリ16から制御プログラムが読み出され、読み出された制御プログラムに従って、図5のフローチャートに示す相関演算処理がステップS100〜S150の順で実行される。
Next, the operation of the present embodiment will be described with reference to FIGS.
First, the case where the digital
FIG. 5 is a flowchart showing processing executed by the
In the
ステップS100では、ポインタレジスタP0にr[0]のデータアドレスを設定する命令コードが実行されると、データアドレス生成部14では、r[0]のデータアドレスのうちグループアドレスがポインタレジスタP0に格納される。また、データ演算部12では、r[0]のデータアドレスのうち下位2ビットのデータがインデックスレジスタファイル208に格納される。r[0]のデータアドレスのうち下位2ビットは「00」なので、最上位ビットを「0」として3ビットのデータ「000」がエレメントインデックスデータrとして格納される。
In step S100, when the instruction code for setting the data address of r [0] in the pointer register P0 is executed, the
ステップS102では、ポインタレジスタP1にs[0]のデータアドレスを設定する命令コードが実行されると、データアドレス生成部14では、s[0]のデータアドレスのうちグループアドレスがポインタレジスタP1に格納される。また、データ演算部12では、s[0]のデータアドレスのうち下位2ビットのデータがインデックスレジスタファイル208に格納される。s[0]のデータアドレスのうち下位2ビットは「00」なので、最上位ビットを「0」として3ビットのデータ「000」がエレメントインデックスデータsとして格納される。
In step S102, when an instruction code for setting the data address of s [0] in the pointer register P1 is executed, the
ステップS104では、レジスタA0(グループレジスタR4〜Rn-1のいずれか)の内容を初期化する命令コードが実行されると、データ演算部12では、レジスタA0に「0」が設定される。
ステップS108では、ポインタレジスタP1が指し示すグループアドレスのデータをグループレジスタR0に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からs[0]〜s[3]がグループレジスタR0に読み込まれる。
In step S104, the instruction code to initialize the contents of the register A0 (either Group Register R 4 ~R n-1) is executed, the
In step S108, when the instruction code for reading the data of the group address indicated by the pointer register P1 into the group register R0 is executed, the
ステップS110では、ポインタレジスタP1を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP1のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のs[4]を指し示すことになる。
ステップS112では、ポインタレジスタP1が指し示すグループアドレスのデータをグループレジスタR1に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からs[4]〜s[7]がグループレジスタR1に読み込まれる。
In step S110, when the instruction code for adding the pointer register P1 is executed, the
In step S112, when the instruction code read data of the group address pointer register P1 pointed to the group registers R 1 is executed, the
ステップS114では、ポインタレジスタP1を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP1のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のs[8]を指し示すことになる。
ステップS116では、ポインタレジスタP0が指し示すグループアドレスのデータをグループレジスタR2に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からr[0]〜r[3]がグループレジスタR2に読み込まれる。
ステップS118では、ポインタレジスタP0を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP0のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のr[4]を指し示すことになる。
In step S114, when the instruction code for adding the pointer register P1 is executed, the
At step S116, the instruction code reads data group address pointer register P0 pointed to a group register R 2 is executed, the
In step S118, when the instruction code for adding the pointer register P0 is executed, the
ステップS120では、レジスタブロックA,Bのレジスタのデータを演算する命令コード(以下、ブロック演算命令コードという。)が実行されると、データ演算部12では、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ210により、エレメントインデックスデータs「000」が選択されてセレクタ204に出力され、セレクタ204により、レジスタR0[0]のデータs[0]が選択されて演算器202に出力される。また、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ212により、エレメントインデックスデータr「000」が選択されてセレクタ206に出力され、セレクタ206により、レジスタR2[0]のデータr[0]が選択されて演算器202に出力される。そして、演算器202により、s[0]とr[0]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項の演算結果が得られる。また、計算器214により、エレメントインデックスデータs,rにそれぞれ「1」が加算され、インデックスレジスタファイル208に格納される。
In step S120, when an instruction code for calculating the register data of the register blocks A and B (hereinafter referred to as a block operation instruction code) is executed, the
ステップS122では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ210により、エレメントインデックスデータs「001」が選択されてセレクタ204に出力され、セレクタ204により、レジスタR0[1]のデータs[1]が選択されて演算器202に出力される。また、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ212により、エレメントインデックスデータr「001」が選択されてセレクタ206に出力され、セレクタ206により、レジスタR2[1]のデータr[1]が選択されて演算器202に出力される。そして、演算器202により、s[1]とr[1]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項および第2項の演算結果が得られる。また、計算器214により、エレメントインデックスデータs,rにそれぞれ「1」が加算され、インデックスレジスタファイル208に格納される。
In step S122, when the block operation instruction code is further executed, the
ステップS124では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR0[2],R2[2]のデータs[2],r[2]がそれぞれ選択される。そして、演算器202により、s[2]とr[2]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第3項の演算結果が得られる。
At step S124, the further the block operation instruction code is executed, the
ステップS126では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR0[3],R2[3]のデータs[3],r[3]がそれぞれ選択される。そして、演算器202により、s[3]とr[3]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第4項の演算結果が得られる。
In step S126, further, the block operation instruction code is executed, the
ステップS128では、ポインタレジスタP1が指し示すグループアドレスのデータをグループレジスタR0に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からs[8]〜s[11]がグループレジスタR0に読み込まれる。
ステップS130では、ポインタレジスタP1を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP1のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のs[12]を指し示すことになる。
In step S128, when an instruction code for reading the data of the group address indicated by the pointer register P1 into the group register R0 is executed, the
In step S130, when the instruction code for adding the pointer register P1 is executed, the
ステップS132では、ポインタレジスタP0が指し示すグループアドレスのデータをグループレジスタR3に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からr[4]〜r[7]がグループレジスタR3に読み込まれる。
ステップS134では、ポインタレジスタP0を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP0のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のr[7]を指し示すことになる。
In step S132, when the instruction code read data group address pointer register P0 pointed to a group register R 3 is executed, the
In step S134, when the instruction code for adding the pointer register P0 is executed, the
ステップS136では、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[0],R3[0]のデータs[4],r[4]がそれぞれ選択される。そして、演算器202により、s[4]とr[4]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第5項の演算結果が得られる。
In step S136, when the block operation instruction code is executed, the
ステップS138では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[1],R3[1]のデータs[5],r[5]がそれぞれ選択される。そして、演算器202により、s[5]とr[5]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第6項の演算結果が得られる。
In step S138, when the block operation instruction code is further executed, the
ステップS140では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[2],R3[2]のデータs[6],r[6]がそれぞれ選択される。そして、演算器202により、s[6]とr[6]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第7項の演算結果が得られる。
In step S140, further, the block operation instruction code is executed, the
ステップS142では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[3],R3[3]のデータs[7],r[7]がそれぞれ選択される。そして、演算器202により、s[7]とr[7]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第8項の演算結果が得られる。
In step S142, further, the block operation instruction code is executed, the
ステップS144では、ポインタレジスタP1が指し示すグループアドレスのデータをグループレジスタR1に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からs[12]〜s[15]がグループレジスタR1に読み込まれる。
ステップS146では、ポインタレジスタP1を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP1のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のs[16]を指し示すことになる。
In step S144, when the instruction code read data of the group address pointer register P1 pointed to the group registers R 1 is executed, the
In step S146, when the instruction code for adding the pointer register P1 is executed, the
ステップS148では、ポインタレジスタP0が指し示すグループアドレスのデータをグループレジスタR2に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からr[8]〜r[11]がグループレジスタR2に読み込まれる。
ステップS150では、ポインタレジスタP0を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP0のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のr[12]を指し示すことになる。
以下は、ステップS120〜S150の処理を必要な数だけ繰り返し行えばよい。
In step S148, when the instruction code read data group address pointer register P0 pointed to a group register R 2 is executed, the
In step S150, when the instruction code for adding the pointer register P0 is executed, the
In the following, the processes in steps S120 to S150 may be repeated as many times as necessary.
次に、デジタル信号処理装置100で上式(2)に示す相関演算を行う場合を説明する。ただし、s[n]とr[n]は、図10に示すように、データメモリ10に格納されているとする。
図6は、プログラムシーケンサ18で実行される処理を示すフローチャートである。
プログラムシーケンサ18では、プログラムメモリ16から制御プログラムが読み出され、読み出された制御プログラムに従って、図6のフローチャートに示す相関演算処理がステップS200〜S250の順で実行される。
Next, the case where the digital
FIG. 6 is a flowchart showing processing executed by the
In the
ステップS200では、ステップS100と同一の処理が実行される。
ステップS202では、ポインタレジスタP1にs[1]のデータアドレスを設定する命令コードが実行されると、データアドレス生成部14では、s[1]のデータアドレスのうちグループアドレスがポインタレジスタP1に格納される。また、データ演算部12では、s[1]のデータアドレスのうち下位2ビットのデータがインデックスレジスタファイル208に格納される。s[1]のデータアドレスのうち下位2ビットは「01」なので、最上位ビットを「0」として3ビットのデータ「001」がエレメントインデックスデータsとして格納される。
In step S200, the same process as step S100 is executed.
In step S202, when the instruction code for setting the data address of s [1] in the pointer register P1 is executed, the data
ステップS204〜S218では、ステップS104〜S118と同一の処理が実行される。
ステップS220では、ブロック演算命令コードが実行されると、データ演算部12では、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ210により、エレメントインデックスデータs「001」が選択されてセレクタ204に出力され、セレクタ204により、レジスタR0[1]のデータs[1]が選択されて演算器202に出力される。また、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ212により、エレメントインデックスデータr「000」が選択されてセレクタ206に出力され、セレクタ206により、レジスタR2[0]のデータr[0]が選択されて演算器202に出力される。そして、演算器202により、s[1]とr[0]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(2)の第1項の演算結果が得られる。また、計算器214により、エレメントインデックスデータs,rにそれぞれ「1」が加算され、インデックスレジスタファイル208に格納される。
In steps S204 to S218, the same processing as in steps S104 to S118 is executed.
In step S220, when the block operation instruction code is executed, the
ステップS222では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ210により、エレメントインデックスデータs「010」が選択されてセレクタ204に出力され、セレクタ204により、レジスタR0[2]のデータs[2]が選択されて演算器202に出力される。また、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ212により、エレメントインデックスデータr「001」が選択されてセレクタ206に出力され、セレクタ206により、レジスタR2[1]のデータr[1]が選択されて演算器202に出力される。そして、演算器202により、s[2]とr[1]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(2)の第1項および第2項の演算結果が得られる。また、計算器214により、エレメントインデックスデータs,rにそれぞれ「1」が加算され、インデックスレジスタファイル208に格納される。
In step S222, when the block operation instruction code is further executed, the
ステップS224では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR0[3],R2[2]のデータs[3],r[2]がそれぞれ選択される。そして、演算器202により、s[3]とr[2]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(2)の第1項〜第3項の演算結果が得られる。
In step S224, further, the block operation instruction code is executed, the
ステップS226では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[0],R2[3]のデータs[4],r[3]がそれぞれ選択される。そして、演算器202により、s[4]とr[3]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(2)の第1項〜第4項の演算結果が得られる。
In step S226, further, the block operation instruction code is executed, the
ステップS228〜S234では、ステップS128〜S134と同一の処理が実行される。
ステップS236では、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[1],R3[0]のデータs[5],r[4]がそれぞれ選択される。そして、演算器202により、s[5]とr[4]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(2)の第1項〜第5項の演算結果が得られる。
In steps S228 to S234, the same processing as steps S128 to S134 is executed.
In step S236, when the block operation instruction code is executed, the
ステップS238では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[2],R3[1]のデータs[6],r[5]がそれぞれ選択される。そして、演算器202により、s[6]とr[5]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(2)の第1項〜第6項の演算結果が得られる。
In step S238, further, the block operation instruction code is executed, the
ステップS240では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[3],R3[2]のデータs[7],r[6]がそれぞれ選択される。そして、演算器202により、s[7]とr[6]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(2)の第1項〜第7項の演算結果が得られる。
In step S240, further, the block operation instruction code is executed, the
ステップS242では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR0[0],R3[3]のデータs[8],r[7]がそれぞれ選択される。そして、演算器202により、s[8]とr[7]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(2)の第1項〜第8項の演算結果が得られる。
In step S242, further, the block operation instruction code is executed, the
ステップS244〜S250では、ステップS144〜S150と同一の処理が実行される。
以下は、ステップS220〜S250の処理を必要な数だけ繰り返し行えばよい。
このように、上式(1)に示す相関演算を行う場合と異なるのは、ステップS202,S220〜S226,S236〜S242の処理であるが、プログラムシーケンサ18の制御プログラムとしては、ステップS202の記述だけが異なる。このことは、上式(3),(4)に示す相関演算を行う場合についても同様である。
In steps S244 to S250, the same processing as steps S144 to S150 is executed.
In the following, the processes in steps S220 to S250 may be repeated as many times as necessary.
As described above, what is different from the case where the correlation calculation shown in the above equation (1) is performed is the processing of steps S202, S220 to S226, and S236 to S242, but the control program of the
このようにして、本実施の形態では、複数のグループレジスタR0〜Rn-1からなるレジスタファイル200と、レジスタファイル200のデータを用いて演算を行う演算器202と、エレメントインデックスデータを記憶するインデックスレジスタと、インデックスレジスタのエレメントインデックスデータに基づいて、2つのグループレジスタR0,R1(R2,R3)をレジスタブロックとしてレジスタブロックのレジスタR0[0]〜R1[3](R2[0]〜R3[3])のなかからいずれか1つのレジスタのデータを選択して演算器202に出力するセレクタ204,206とを備える。
Thus, in this embodiment, a
これにより、境界不整列データアクセスとなる場合や、データの論理構造が重複している場合でも、レジスタファイル200へのデータの読み込み回数が極端に増加することがないので、処理効率を向上することができる。また、データの論理構造が重複している場合でも、プログラムの多少の変更で対応することができるので、プログラムコストを低減することができる。さらに、インデックスレジスタおよびセレクタ204,206を設けるだけでよく、また、多くの境界不整列データアクセスのパターンに対応する場合でも、エレメントインデックスデータのビット数をさほど増やさなくてすむので、特許文献1の発明に比して、製造コストを低減することができる。
As a result, the number of times data is read into the
さらに、本実施の形態では、複数のインデックスレジスタからなるインデックスレジスタファイル208と、与えられたセレクトデータに基づいて、インデックスレジスタファイル208のなかからいずれか1つのインデックスレジスタのエレメントインデックスデータを選択してセレクタ204,206に出力するセレクタ210,212とを備える。
これにより、複数のエレメントインデックスデータをインデックスレジスタファイル208に格納しておき、セレクトデータによってそれらエレメントインデックスデータを選択的に使用することができるので、インデックスレジスタの使い勝手が向上し、プログラムを作成しやすくなる。
Further, in the present embodiment, element index data of any one of the index registers is selected from the
As a result, a plurality of element index data can be stored in the
さらに、本実施の形態では、セレクタ204,206に出力したエレメントインデックスデータを更新してインデックスレジスタファイル208に格納する計算器214を備える。
これにより、エレメントインデックスデータを使用するたびに自動的に更新されるので、エレメントインデックスデータの更新をソフトウェアで行わなくてすみ、演算速度を向上することができる。
Furthermore, the present embodiment includes a
As a result, since the element index data is automatically updated every time it is used, the element index data need not be updated by software, and the calculation speed can be improved.
上記第1の実施の形態において、エレメントインデックスデータは、請求項1ないし4または7記載のインデックスデータに対応し、セレクタ204,206は、請求項1ないし4記載のセレクタに対応し、セレクタ210,212は、請求項3記載の第2セレクタに対応し、計算器214は、請求項4記載のインデックスデータ更新手段に対応している。
In the first embodiment, the element index data corresponds to the index data according to
次に、本発明の第2の実施の形態を図面を参照しながら説明する。図7ないし図9は、本発明に係るデータ演算装置の第2の実施の形態を示す図である。
本実施の形態は、本発明に係るデータ演算装置を、デジタル信号処理を行う32ビットRISC型のデジタル信号処理装置100においてデータ演算部12に適用したものであり、上記第1の実施の形態と異なるのは、レジスタブロックに含まれるグループレジスタの数を動的に変更する点にある。なお、以下、上記第1の実施の形態と異なる部分についてのみ説明し、上記第1の実施の形態と重複する部分については同一の符号を付して説明を省略する。
Next, a second embodiment of the present invention will be described with reference to the drawings. 7 to 9 are diagrams showing a second embodiment of the data arithmetic device according to the present invention.
In the present embodiment, the data arithmetic device according to the present invention is applied to the data
次に、データ演算部12の構成を図7ないし図9を参照しながら詳細に説明する。
図7は、データ演算部12のハードウェア構成を示すブロック図である。
データ演算部12は、図7に示すように、レジスタファイル200と、演算器202と、レジスタファイル200のなかからデータを選択するセレクタ224,226と、複数のインデックスレジスタからなるインデックスレジスタファイル228と、インデックスレジスタファイル228のなかからデータを選択するセレクタ230,232と、インデックスレジスタファイル228のデータを更新する計算器234と、計算器234とバス20のデータを選択するセレクタ236とで構成されている。
Next, the configuration of the
FIG. 7 is a block diagram illustrating a hardware configuration of the
As shown in FIG. 7, the
図8は、レジスタブロックの構成を示す図である。
本実施の形態では、1つのグループレジスタを1つのレジスタブロックとしてグループ化するバンドルモード0と、2つのグループレジスタを1つのレジスタブロックとしてグループ化するバンドルモード1と、4つのグループレジスタを1つのレジスタブロックとしてグループ化するバンドルモード2と、8つのグループレジスタを1つのレジスタブロックとしてグループ化するバンドルモード3とを規定する。
FIG. 8 is a diagram illustrating a configuration of a register block.
In the present embodiment,
バンドルモード0では、図8に示すように、グループレジスタR0をレジスタブロック0(バンドル番号「0」により特定されるレジスタブロックをいう。以下、同様に略記する。)とし、同様に、グループレジスタR2〜R7をレジスタブロック1〜7としてそれぞれグループ化する。
バンドルモード1では、グループレジスタR0,R1をレジスタブロック0とし、グループレジスタR2,R3をレジスタブロック1とし、グループレジスタR4,R5をレジスタブロック2とし、グループレジスタR6,R7をレジスタブロック3としてそれぞれグループ化する。
In the
In the
バンドルモード2では、グループレジスタR0〜R3をレジスタブロック0とし、グループレジスタR4〜R7をレジスタブロック1としてそれぞれグループ化する。
バンドルモード3では、グループレジスタR0〜R7をレジスタブロック0としてそれぞれグループ化する。
図7に戻り、セレクタ224は、グループレジスタR0〜R7の各レジスタと接続し、セレクタ230からのセレクトデータに基づいて、グループレジスタR0〜R7のなかからいずれか1つのレジスタのデータを選択し、選択したデータを演算器202の第1オペランドとして演算器202に出力する。
In the
In the
Returning to FIG. 7, the
セレクタ230からのセレクトデータは、5ビットからなる。セレクタ224は、セレクトデータの上位3ビットが「000」であるときは、グループレジスタR0のうち下位2ビットの値により指定されるレジスタのデータを選択し、セレクトデータの上位3ビットが「001」であるときは、グループレジスタR1のうち下位2ビットの値により指定されるレジスタのデータを選択する。同様に、セレクトデータの上位3ビットが「010」、「011」、「100」、「101」、「110」および「111」であるときは、グループレジスタR2〜R7のうち下位2ビットの値により指定されるレジスタのデータを選択する。
The select data from the
セレクタ226は、グループレジスタR0〜R7の各レジスタと接続し、セレクタ232からのセレクトデータに基づいて、グループレジスタR0〜R7のなかからいずれか1つのレジスタのデータを選択し、選択したデータを演算器202の第2オペランドとして演算器202に出力する。データの選択手順は、セレクタ224と同様である。
インデックスレジスタファイル228は、エレメントインデックスデータを各インデックスレジスタに記憶する。
The
The
図9は、エレメントインデックスデータのデータ構造を示す図である。
エレメントインデックスデータは、図9に示すように、5ビットのデータからなり、バンドルモード0のときは、5ビットのうち下位2ビットを使用し、下位2ビットb1,b0がグループレジスタの各レジスタの別を示す。
バンドルモード1のときは、5ビットのうち下位3ビットを使用し、上位3番目のビットb2がグループレジスタR0,R1(R2,R3等)の別を示し、下位2ビットb1,b0がグループレジスタの各レジスタの別を示す。
FIG. 9 is a diagram illustrating a data structure of element index data.
As shown in FIG. 9, the element index data consists of 5-bit data. In the
In the
バンドルモード2のときは、5ビットのうち下位4ビットを使用し、上位2,3番目のビットb3,b2がグループレジスタR0〜R3(R4〜R7)の別を示し、下位2ビットb1,b0がグループレジスタの各レジスタの別を示す。
バンドルモード3のときは、上位1〜3番目のビットb4〜b2がグループレジスタR0〜R7の別を示し、下位2ビットb1,b0がグループレジスタの各レジスタの別を示す。エレメントインデックスデータの各ビットは、セレクタ230,232からのセレクトデータの各ビットに対応している。また、エレメントインデックスデータの下位2ビットb1,b0は、データアドレスの下位2ビットb1,b0に対応している。
In the
In the
図7に戻り、セレクタ230は、プログラムシーケンサ18からのセレクトデータに基づいて、インデックスレジスタファイル228のなかからいずれか1つのインデックスレジスタのエレメントインデックスデータを選択し、選択したエレメントインデックスデータ、並びにプログラムシーケンサ18からのバンドルモードデータおよびバンドルインデックスデータに基づいてレジスタインデックスデータを生成し、生成したレジスタインデックスデータをセレクタ224に出力する。
Returning to FIG. 7, the
バンドルインデックスデータは、バンドル番号を示す5ビットのデータである。バンドルモード0を示すバンドルモードデータが与えられたときは、バンドルインデックスデータの下位3ビットを上位ビットとし、選択したエレメントインデックスデータの下位2ビットを下位ビットとして結合し、5ビットのレジスタインデックスデータを生成して出力する。
The bundle index data is 5-bit data indicating the bundle number. When bundle mode data indicating the
バンドルモード1を示すバンドルモードデータが与えられたときは、バンドルインデックスデータの下位2ビットを上位ビットとし、選択したエレメントインデックスデータの下位3ビットを下位ビットとして結合し、5ビットのレジスタインデックスデータを生成して出力する。
バンドルモード2を示すバンドルモードデータが与えられたときは、バンドルインデックスデータの下位1ビットを上位ビットとし、選択したエレメントインデックスデータの下位4ビットを下位ビットとして結合し、5ビットのレジスタインデックスデータを生成して出力する。
When bundle mode data indicating
When bundle mode data indicating the
バンドルモード3を示すバンドルモードデータが与えられたときは、選択したエレメントインデックスデータをそのままレジスタインデックスデータとして出力する。
なお、プログラムシーケンサ18では、セレクタ230を制御する命令コードを実行すると、その命令コードに対応するオペランドをセレクトデータとしてセレクタ230に出力する。また、バンドルモードまたはバンドル番号を設定する命令コードを実行すると、その命令コードに対応するオペランドをバンドルモードデータまたはバンドルインデックスデータとしてセレクタ230に出力する。
When bundle mode data indicating the
When the
セレクタ232は、プログラムシーケンサ18からのセレクトデータに基づいて、インデックスレジスタファイル228のなかからいずれか1つのインデックスレジスタのエレメントインデックスデータを選択し、選択したエレメントインデックスデータ、並びにプログラムシーケンサ18からのバンドルモードデータおよびバンドルインデックスデータに基づいてレジスタインデックスデータを生成し、生成したレジスタインデックスデータをセレクタ226に出力する。レジスタインデックスデータの生成手順は、セレクタ230と同様である。なお、プログラムシーケンサ18では、セレクタ232を制御する命令コードを実行すると、その命令コードに対応するオペランドをセレクトデータとしてセレクタ232に出力する。また、バンドルモードまたはバンドル番号を設定する命令コードを実行すると、その命令コードに対応するオペランドをバンドルモードデータまたはバンドルインデックスデータとしてセレクタ232に出力する。
The
計算器234は、セレクタ230またはセレクタ232からセレクトデータとして出力されるレジスタインデックスデータを更新してセレクタ236に出力する。レジスタインデックスデータは、レジスタブロックのレジスタからデータを取得する順序があらかじめ決まっている場合に、その順序でデータが選択できるように更新する。レジスタインデックスデータの更新手順は、上記第1の実施の形態において計算器214によりエレメントインデックスデータを更新する手順と同じ要領で行うことができる。
The
セレクタ236は、プログラムシーケンサ18からのセレクトデータに基づいて、データアドレス生成部14からのデータアドレスのうち下位2ビットのデータ、および計算器234からのレジスタインデックスデータのうちいずれか一方を選択してインデックスレジスタファイル228に格納する。なお、プログラムシーケンサ18では、セレクタ236を制御する命令コードを実行すると、その命令コードに対応するオペランドをセレクトデータとしてセレクタ236に出力する。
Based on the select data from the
次に、本実施の形態の動作を説明する。
初めに、バンドルモード1で演算を行う場合を説明する。
プログラムシーケンサ18では、バンドルモード1に設定する命令コードが実行されると、バンドルモード1を示すバンドルモードデータがデータ演算部12に出力される。そして、バンドル番号「0」を設定する命令コードが実行されると、バンドルインデックスデータとして「00000」がデータ演算部12に出力される。
Next, the operation of the present embodiment will be described.
First, a case where calculation is performed in the
In the
データ演算部12では、バンドルモードデータおよびバンドルインデックスデータが与えられると、セレクタ230,232により、エレメントインデックスデータが選択され、選択されたエレメントインデックスデータ、並びに与えられたバンドルモードデータおよびバンドルインデックスデータに基づいてレジスタインデックスデータが生成されてセレクタ224,226に出力される。このとき、バンドルインデックスデータの下位2ビットが「00」なので、「00xxx」(「x」は、選択されたエレメントインデックスデータのビットを示す。以下、同様に表記する。)がレジスタインデックスデータとして出力される。そして、セレクタ224,226により、与えられたレジスタインデックスデータ「00xxx」に基づいて、グループレジスタR0,R1のなかからいずれか1つのレジスタのデータが選択されて演算器202に出力される。
In the
なお、セレクタ230,232に与えられるセレクトデータが異なるので、セレクタ224,226,230,232による選択はそれぞれ独立に行われる。
プログラムシーケンサ18では、バンドル番号「1」を設定する命令コードが実行されると、バンドルインデックスデータとして「00001」がデータ演算部12に出力される。
Since the selection data given to the
In the
データ演算部12では、バンドルインデックスデータの下位2ビットが「01」なので、セレクタ230,232により、「01xxx」がレジスタインデックスデータとして生成・出力される。そして、セレクタ224,226により、与えられたレジスタインデックスデータ「01xxx」に基づいて、グループレジスタR2,R3のなかからいずれか1つのレジスタのデータが選択されて演算器202に出力される。
バンドル番号「2」または「3」を設定する命令コードが実行された場合も同様であり、グループレジスタR4,R5またはR6,R7のなかからいずれか1つのレジスタのデータが選択されて演算器202に出力される。
In the
The same applies to the case where the instruction code for setting the bundle number “2” or “3” is executed, and the data of any one register is selected from among the group registers R 4 and R 5 or R 6 and R 7. To the
次に、バンドルモード2で演算を行う場合を説明する。
プログラムシーケンサ18では、バンドルモード2に設定する命令コードが実行されると、バンドルモード2を示すバンドルモードデータがデータ演算部12に出力される。そして、バンドル番号「0」を設定する命令コードが実行されると、バンドルインデックスデータとして「00000」がデータ演算部12に出力される。
Next, a case where calculation is performed in the
In the
データ演算部12では、バンドルモードデータおよびバンドルインデックスデータが与えられると、バンドルインデックスデータの下位1ビットが「0」なので、セレクタ230,232により、「0xxxx」がレジスタインデックスデータとして生成・出力される。そして、セレクタ224,226により、与えられたレジスタインデックスデータ「0xxxx」に基づいて、グループレジスタR0〜R3のなかからいずれか1つのレジスタのデータが選択されて演算器202に出力される。
In the
プログラムシーケンサ18では、バンドル番号「1」を設定する命令コードが実行されると、バンドルインデックスデータとして「00001」がデータ演算部12に出力される。
データ演算部12では、バンドルインデックスデータの下位1ビットが「1」なので、セレクタ230,232により、「1xxxx」がレジスタインデックスデータとして生成・出力される。そして、セレクタ224,226により、与えられたレジスタインデックスデータ「1xxxx」に基づいて、グループレジスタR4〜R7のなかからいずれか1つのレジスタのデータが選択されて演算器202に出力される。
In the
In the
次に、バンドルモード3で演算を行う場合を説明する。
プログラムシーケンサ18では、バンドルモード3に設定する命令コードが実行されると、バンドルモード3を示すバンドルモードデータがデータ演算部12に出力される。
データ演算部12では、バンドルモードデータが与えられると、セレクタ230,232により、選択されたエレメントインデックスデータがそのままレジスタインデックスデータとして出力される。そして、セレクタ224,226により、与えられたレジスタインデックスデータに基づいて、グループレジスタR0〜R7のなかからいずれか1つのレジスタのデータが選択されて演算器202に出力される。
Next, a case where calculation is performed in the
In the
In the
次に、バンドルモード0で演算を行う場合を説明する。
プログラムシーケンサ18では、バンドルモード0に設定する命令コードが実行されると、バンドルモード0を示すバンドルモードデータがデータ演算部12に出力される。そして、バンドル番号「0」を設定する命令コードが実行されると、バンドルインデックスデータとして「00000」がデータ演算部12に出力される。
Next, a case where calculation is performed in the
In the
データ演算部12では、バンドルモードデータおよびバンドルインデックスデータが与えられると、バンドルインデックスデータの下位3ビットが「000」なので、セレクタ230,232により、「000xx」がレジスタインデックスデータとして生成・出力される。そして、セレクタ224,226により、与えられたレジスタインデックスデータ「000xx」に基づいて、グループレジスタR0のなかからいずれか1つのレジスタのデータが選択されて演算器202に出力される。
In the
バンドル番号「1」〜「7」を設定する命令コードが実行された場合も同様であり、グループレジスタR1,R2,R3,R4,R5,R6またはR7のなかからいずれか1つのレジスタのデータが選択されて演算器202に出力される。
このようにして、本実施の形態では、レジスタブロックを指定するバンドルインデックスデータが与えられたときに、与えられたバンドルインデックスデータ、およびインデックスレジスタのエレメントインデックスデータに基づいて、そのバンドルインデックスデータにより指定されるレジスタブロックおよびそのレジスタブロック内のデータの位置を示すレジスタインデックスデータを生成するセレクタ230,232を備える。
The same applies to the case where the instruction code for setting the bundle numbers “1” to “7” is executed, and any of the group registers R 1 , R 2 , R 3 , R 4 , R 5 , R 6 or R 7 is selected. Data in one register is selected and output to the
In this way, in this embodiment, when bundle index data specifying a register block is given, it is designated by the bundle index data based on the given bundle index data and the element index data of the index register.
これにより、バンドルインデックスデータによって複数のレジスタブロックを選択的に使用することができるので、レジスタの使い勝手が向上し、プログラムを作成しやすくなる。
さらに、本実施の形態では、セレクタ230,232は、バンドルモードを示すバンドルモードデータが与えられたときに、与えられたバンドルモードデータ、バンドルインデックスデータおよびエレメントインデックスデータに基づいて、レジスタインデックスデータを生成するようになっている。
これにより、バンドルモードデータによってレジスタブロックの論理構造を変更することができるので、レジスタの使い勝手がさらに向上し、プログラムをさらに作成しやすくなる。
As a result, a plurality of register blocks can be selectively used according to the bundle index data, thereby improving the usability of the registers and facilitating the creation of a program.
Furthermore, in this embodiment, when the bundle mode data indicating the bundle mode is given, the
Thereby, the logical structure of the register block can be changed by the bundle mode data, so that the usability of the register is further improved and the program can be more easily created.
上記第2の実施の形態において、セレクタ224,226は、請求項5記載のセレクタに対応し、セレクタ230,232は、請求項5または6記載のインデックスデータ生成手段に対応し、レジスタインデックスデータは、請求項5または6記載の第2エレメントインデックスデータに対応している。
なお、上記第1の実施の形態においては、グループレジスタR0,R1をレジスタブロックAとしてグループ化したが、これに限らず、特定の2つのグループレジスタをレジスタブロックAとしてグループ化すればよいので、他の組み合わせでグループ化することもできる。レジスタブロックBについても同様である。
In the second embodiment, the
In the first embodiment, the group registers R 0 and R 1 are grouped as the register block A. However, the present invention is not limited to this, and two specific group registers may be grouped as the register block A. So it can be grouped in other combinations. The same applies to the register block B.
また、上記第1の実施の形態においては、インデックスレジスタファイル208を設けて構成したが、これに限らず、インデックスレジスタを1つだけ設けて構成することもできる。この場合、セレクタ210,212も不要となる。
また、上記第2の実施の形態においては、インデックスレジスタファイル228を設けて構成したが、これに限らず、インデックスレジスタを1つだけ設けて構成することもできる。この場合、セレクタ230,232は選択機能を設けず、レジスタインデックスデータを生成する機能だけ設ければよい。
In the first embodiment, the
In the second embodiment, the
また、上記第2の実施の形態においては、8つのグループレジスタR0〜R7を用いてレジスタブロックを構成したが、これに限らず、8つ未満のグループレジスタを用いてレジスタブロックを構成することもできるし、9つ以上のグループレジスタを用いてレジスタブロックを構成することもできる。また、バンドルインデックスデータおよびエレメントインデックスデータのビット数は、例えば、2つのグループレジスタを用いてレジスタブロックを構成する場合はそれぞれ3ビット、4つのグループレジスタを用いてレジスタブロックを構成する場合はそれぞれ4ビット、16個のグループレジスタを用いてレジスタブロックを構成する場合はそれぞれ5ビットあればよい。いずれの場合も、上記第2の実施の形態と同じ要領で行うことができる。 In the second embodiment, the register block is configured using the eight group registers R 0 to R 7. However, the present invention is not limited to this, and the register block is configured using less than eight group registers. It is also possible to configure a register block using nine or more group registers. The number of bits of bundle index data and element index data is, for example, 3 bits each when a register block is configured using two group registers, and 4 bits when each register block is configured using four group registers. When a register block is configured by using 16 bits and 16 group registers, it is sufficient to have 5 bits each. In either case, the same procedure as in the second embodiment can be performed.
また、上記第2の実施の形態においては、8つのグループレジスタR0〜R7を用いてレジスタブロックを構成し、4つのバンドルモードを設定したが、これに限らず、バンドルモードを4つ未満として設定してもよい。この場合、バンドルインデックスデータのビット数は、3つのバンドルモード0〜2を設定する場合は4ビット、2つのバンドルモード0,1を設定する場合は3ビット、1つのバンドルモード0だけを設定する場合は2ビットあればよい。このことは、レジスタブロックの構成に用いるグループレジスタの数が8つ未満の場合、および9つ以上の場合であっても同様である。
In the second embodiment, a register block is configured using eight group registers R 0 to R 7 and four bundle modes are set. However, the present invention is not limited to this, and the number of bundle modes is less than four. May be set as In this case, the number of bits of the bundle index data is 4 bits when three
また、上記第1および第2の実施の形態においては、データ演算部12に1つの演算器202を設けて構成したが、これに限らず、データ演算部12に複数の演算器202を設けて構成することもできる。上記第1の実施の形態の場合は、各演算器202ごとにセレクタ204,206,210,212を設ければよい。上記第2の実施の形態の場合は、各演算器202ごとにセレクタ224,226,230,232を設ければよい。
In the first and second embodiments, the
また、上記第1および第2の実施の形態においては、エレメントインデックスデータまたはレジスタインデックスデータをセレクタ204,224に出力するセレクタ210,230と、エレメントインデックスデータまたはレジスタインデックスデータをセレクタ206,226に出力するセレクタ212,232とを設けて構成したが、これに限らず、セレクタ210,230を設けず、セレクタ204,224は、プログラムシーケンサ18からのセレクトデータに基づいて、レジスタファイル200のなかからいずれか1つのレジスタのデータを選択するように構成することもできる。また、セレクタ212,232を設けず、セレクタ206,226は、プログラムシーケンサ18からのセレクトデータに基づいて、レジスタファイル200のなかからいずれか1つのレジスタのデータを選択するように構成することもできる。
In the first and second embodiments, the
セレクタ212,232を設けない後者の構成とした場合の動作を、図5のフローチャートに示す相関演算処理を援用して説明する。
ステップS100では、ポインタレジスタP0にr[0]のデータアドレスを設定する命令コードが実行されると、データアドレス生成部14では、r[0]のデータアドレスのうちグループアドレスがポインタレジスタP0に格納される。
The operation of the latter configuration without the
In step S100, when the instruction code for setting the data address of r [0] in the pointer register P0 is executed, the
ステップS102では、ポインタレジスタP1にs[0]のデータアドレスを設定する命令コードが実行されると、データアドレス生成部14では、s[0]のデータアドレスのうちグループアドレスがポインタレジスタP1に格納される。また、データ演算部12では、s[0]のデータアドレスのうち下位2ビットのデータがインデックスレジスタファイル208に格納される。s[0]のデータアドレスのうち下位2ビットは「00」なので、最上位ビットを「0」として3ビットのデータ「000」がエレメントインデックスデータsとして格納される。
In step S102, when an instruction code for setting the data address of s [0] in the pointer register P1 is executed, the
ステップS104では、レジスタA0の内容を初期化する命令コードが実行されると、データ演算部12では、レジスタA0に「0」が設定される。
ステップS108では、ポインタレジスタP1が指し示すグループアドレスのデータをグループレジスタR0に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からs[0]〜s[3]がグループレジスタR0に読み込まれる。
In step S104, when an instruction code for initializing the contents of the register A0 is executed, the
In step S108, when the instruction code for reading the data of the group address indicated by the pointer register P1 into the group register R0 is executed, the
ステップS110では、ポインタレジスタP1を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP1のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のs[4]を指し示すことになる。
ステップS112では、ポインタレジスタP1が指し示すグループアドレスのデータをグループレジスタR1に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からs[4]〜s[7]がグループレジスタR1に読み込まれる。
In step S110, when the instruction code for adding the pointer register P1 is executed, the
In step S112, when the instruction code read data of the group address pointer register P1 pointed to the group registers R 1 is executed, the
ステップS114では、ポインタレジスタP1を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP1のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のs[8]を指し示すことになる。
ステップS116では、ポインタレジスタP0が指し示すグループアドレスのデータをグループレジスタR2に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からr[0]〜r[3]がグループレジスタR2に読み込まれる。
ステップS118では、ポインタレジスタP0を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP0のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のr[4]を指し示すことになる。
In step S114, when the instruction code for adding the pointer register P1 is executed, the
At step S116, the instruction code reads data group address pointer register P0 pointed to a group register R 2 is executed, the
In step S118, when the instruction code for adding the pointer register P0 is executed, the
ステップS120では、ブロック演算命令コードが実行されると、データ演算部12では、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ210により、エレメントインデックスデータs「000」が選択されてセレクタ204に出力され、セレクタ204により、レジスタR0[0]のデータs[0]が選択されて演算器202に出力される。また、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ206により、レジスタR2[0]のデータr[0]が選択されて演算器202に出力される。そして、演算器202により、s[0]とr[0]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項の演算結果が得られる。また、計算器214により、エレメントインデックスデータsに「1」が加算され、インデックスレジスタファイル208に格納される。
In
ステップS122では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ210により、エレメントインデックスデータs「001」が選択されてセレクタ204に出力され、セレクタ204により、レジスタR0[1]のデータs[1]が選択されて演算器202に出力される。また、プログラムシーケンサ18からのセレクトデータに基づいて、セレクタ206により、レジスタR2[1]のデータr[1]が選択されて演算器202に出力される。そして、演算器202により、s[1]とr[1]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項および第2項の演算結果が得られる。また、計算器214により、エレメントインデックスデータsに「1」が加算され、インデックスレジスタファイル208に格納される。
In step S122, when the block operation instruction code is further executed, the
ステップS124では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR0[2],R2[2]のデータs[2],r[2]がそれぞれ選択される。そして、演算器202により、s[2]とr[2]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第3項の演算結果が得られる。
At step S124, the further the block operation instruction code is executed, the
ステップS126では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR0[3],R2[3]のデータs[3],r[3]がそれぞれ選択される。そして、演算器202により、s[3]とr[3]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第4項の演算結果が得られる。
In step S126, further, the block operation instruction code is executed, the
ステップS128では、ポインタレジスタP1が指し示すグループアドレスのデータをグループレジスタR0に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からs[8]〜s[11]がグループレジスタR0に読み込まれる。
ステップS130では、ポインタレジスタP1を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP1のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のs[12]を指し示すことになる。
In step S128, when an instruction code for reading the data of the group address indicated by the pointer register P1 into the group register R0 is executed, the
In step S130, when the instruction code for adding the pointer register P1 is executed, the
ステップS132では、ポインタレジスタP0が指し示すグループアドレスのデータをグループレジスタR2に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からr[4]〜r[7]がグループレジスタR2に読み込まれる。
ステップS134では、ポインタレジスタP0を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP0のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のr[7]を指し示すことになる。
In step S132, when the instruction code read data group address pointer register P0 pointed to a group register R 2 is executed, the
In step S134, when the instruction code for adding the pointer register P0 is executed, the
ステップS136では、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[0],R2[0]のデータs[4],r[4]がそれぞれ選択される。そして、演算器202により、s[4]とr[4]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第5項の演算結果が得られる。
In step S136, when the block operation instruction code is executed, the
ステップS138では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[1],R2[1]のデータs[5],r[5]がそれぞれ選択される。そして、演算器202により、s[5]とr[5]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第6項の演算結果が得られる。
In step S138, when the block operation instruction code is further executed, the
ステップS140では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[2],R2[2]のデータs[6],r[6]がそれぞれ選択される。そして、演算器202により、s[6]とr[6]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第7項の演算結果が得られる。
In step S140, further, the block operation instruction code is executed, the
ステップS142では、さらに、ブロック演算命令コードが実行されると、データ演算部12では、同様に、セレクタ204,206により、レジスタR1[3],R2[3]のデータs[7],r[7]がそれぞれ選択される。そして、演算器202により、s[7]とr[7]が乗算され、その乗算結果がレジスタA0の値に加算されてレジスタA0に格納される。これにより、上式(1)の第1項〜第8項の演算結果が得られる。
In step S142, further, the block operation instruction code is executed, the
ステップS144では、ポインタレジスタP1が指し示すグループアドレスのデータをグループレジスタR1に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からs[12]〜s[15]がグループレジスタR1に読み込まれる。
ステップS146では、ポインタレジスタP1を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP1のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のs[16]を指し示すことになる。
In step S144, when the instruction code read data of the group address pointer register P1 pointed to the group registers R 1 is executed, the
In step S146, when the instruction code for adding the pointer register P1 is executed, the
ステップS148では、ポインタレジスタP0が指し示すグループアドレスのデータをグループレジスタR2に読み込む命令コードが実行されると、データ演算部12では、データメモリ10からr[8]〜r[11]がグループレジスタR2に読み込まれる。
ステップS150では、ポインタレジスタP0を加算する命令コードが実行されると、データ演算部12では、ポインタレジスタP0のグループアドレスが「1」加算される。データメモリ10上では、4バイト先のr[12]を指し示すことになる。
In step S148, when the instruction code read data group address pointer register P0 pointed to a group register R 2 is executed, the
In step S150, when the instruction code for adding the pointer register P0 is executed, the
また、上記第1および第2の実施の形態においては、32ビットRISC型のデジタル信号処理装置100に適用したが、データメモリ10に対するデータアクセスを、データメモリ10の最小記憶単位よりも大きい単位で行うプロセッサであればどのようなプロセッサにも適用することができる。例えば、データメモリ10の最小記憶単位が1バイトであれば、アクセス単位が16ビット以上のプロセッサであり、データメモリ10の最小記憶単位が2バイトであれば、アクセス単位が32ビット以上のプロセッサである。
In the first and second embodiments, the present invention is applied to the 32-bit RISC type digital
また、上記第1の実施の形態において、図5および図6のフローチャートに示す処理を実行するにあたってはいずれも、プログラムメモリ16にあらかじめ格納されている制御プログラムを実行する場合について説明したが、これに限らず、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをプログラムメモリ16に読み込んで実行するようにしてもよい。 In the first embodiment, the case where the control program stored in advance in the program memory 16 is executed in the processes shown in the flowcharts of FIGS. 5 and 6 has been described. However, the program may be read from the storage medium storing the program showing these procedures into the program memory 16 and executed.
ここで、記憶媒体とは、RAM、ROM等の半導体記憶媒体、FD、HD等の磁気記憶型記憶媒体、CD、CDV、LD、DVD等の光学的読取方式記憶媒体、MO等の磁気記憶型/光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。 Here, the storage medium is a semiconductor storage medium such as RAM or ROM, a magnetic storage type storage medium such as FD or HD, an optical reading type storage medium such as CD, CDV, LD, or DVD, or a magnetic storage type such as MO. / Optical reading type storage media, including any storage media that can be read by a computer regardless of electronic, magnetic, optical, or other reading methods.
また、上記第1および第2の実施の形態においては、本発明に係るデータ演算装置を、デジタル信号処理を行う32ビットRISC型のデジタル信号処理装置100においてデータ演算部12に適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。
In the first and second embodiments, the data operation device according to the present invention is applied to the
100 デジタル信号処理装置
10 データメモリ
12 プロセッサ
14 データアドレス生成部
16 プログラムメモリ
18 プログラムシーケンサ
20 バス
200 レジスタファイル
202 演算器
204,206,210,212 セレクタ
208,228 インデックスレジスタファイル
214,234 計算器
216 セレクタ
224,226,230,232 セレクタ
236 セレクタ
DESCRIPTION OF
Claims (8)
インデックスデータを記憶するインデックスレジスタと、
前記インデックスレジスタのインデックスデータに基づいて、前記レジスタファイルのレジスタのうち少なくとも2つの前記グループレジスタのなかから、1または複数の前記レジスタのデータを選択して前記演算器に出力するセレクタとを備えることを特徴とするデータ演算装置。 Data that includes a register file composed of a plurality of registers and a computing unit that performs computation using the data of the registers, and performs data access between the register file and the outside in a group register unit composed of the plurality of registers An arithmetic unit,
An index register for storing index data;
A selector that selects data of one or a plurality of the registers from at least two of the registers of the register file based on the index data of the index register and outputs the selected data to the arithmetic unit; A data operation device characterized by the above.
前記レジスタファイルのレジスタのうち少なくとも2つの前記グループレジスタをレジスタブロックとしてグループ化したときに、前記レジスタブロック内のデータの位置を指定するエレメントインデックスデータを記憶するインデックスレジスタと、
前記インデックスレジスタのエレメントインデックスデータに基づいて、前記レジスタブロックのレジスタのなかからいずれか1つの前記レジスタのデータを選択して前記演算器に出力するセレクタとを備えることを特徴とするデータ演算装置。 Data that includes a register file composed of a plurality of registers and a computing unit that performs computation using the data of the registers, and performs data access between the register file and the outside in a group register unit composed of the plurality of registers An arithmetic unit,
An index register for storing element index data for designating a position of data in the register block when grouping at least two of the group registers in the register file as a register block;
A data arithmetic device comprising: a selector that selects data of any one of the registers of the register block based on element index data of the index register and outputs the selected data to the arithmetic unit.
さらに、複数の前記インデックスレジスタからなるインデックスレジスタファイルと、
与えられたセレクトデータに基づいて、前記インデックスレジスタファイルのなかからいずれか1つの前記インデックスレジスタのエレメントインデックスデータを選択して前記セレクタに出力する第2セレクタとを備えることを特徴とするデータ演算装置。 In claim 2,
Furthermore, an index register file composed of a plurality of the index registers,
A data selector comprising: a second selector that selects element index data of any one of the index registers from the index register file based on given select data and outputs the selected element index data to the selector .
さらに、前記セレクタに出力したエレメントインデックスデータを更新して前記インデックスレジスタファイルに格納するインデックスデータ更新手段を備えることを特徴とするデータ演算装置。 In claim 3,
The data operation device further comprises index data updating means for updating the element index data output to the selector and storing it in the index register file.
さらに、前記レジスタブロックを指定するバンドルインデックスデータが与えられたときに、与えられたバンドルインデックスデータ、および前記インデックスレジスタのエレメントインデックスデータに基づいて、当該バンドルインデックスデータにより指定される前記レジスタブロックおよび当該レジスタブロック内のデータの位置を示す第2エレメントインデックスデータを生成するインデックスデータ生成手段を備え、
前記セレクタは、前記インデックスデータ生成手段で生成した第2エレメントインデックスデータに基づいて、複数の前記レジスタブロックのレジスタのなかからいずれか1つの前記レジスタのデータを選択して前記演算器に出力するようになっていることを特徴とするデータ演算装置。 In any one of Claims 2 thru | or 4,
Furthermore, when bundle index data designating the register block is given, the register block designated by the bundle index data based on the given bundle index data and the element index data of the index register, and Index data generating means for generating second element index data indicating the position of data in the register block;
The selector selects data of any one of the registers from a plurality of registers of the register block based on the second element index data generated by the index data generating means, and outputs the selected data to the arithmetic unit. A data operation device characterized by that.
前記インデックスデータ生成手段は、2以上の第1所定数の前記グループレジスタを前記レジスタブロックとして論理的にグループ化する第1バンドルモード、および前記第1所定数よりも多い第2所定数の前記グループレジスタを前記レジスタブロックとして論理的にグループ化する第2バンドルモードのうちいずれかを指定するバンドルモードデータが与えられたときに、与えられたバンドルモードデータ、前記バンドルインデックスデータおよび前記エレメントインデックスデータに基づいて、前記第2エレメントインデックスデータを生成するようになっていることを特徴とするデータ演算装置。 In claim 5,
The index data generation means includes a first bundle mode for logically grouping two or more first predetermined number of the group registers as the register block, and a second predetermined number of the groups greater than the first predetermined number. When bundle mode data that designates one of the second bundle modes that logically group registers as the register block is given, the given bundle mode data, the bundle index data, and the element index data Based on this, the second element index data is generated.
前記レジスタファイルのレジスタのうち少なくとも2つの前記グループレジスタをレジスタブロックとしてグループ化したときに、前記レジスタブロックの各グループレジスタに前記外部からデータを読み込むデータ読込ステップと、
前記レジスタブロック内のデータの位置を指定するエレメントインデックスデータをインデックスレジスタに格納するインデックスデータ格納ステップと、
前記インデックスレジスタのエレメントインデックスデータに基づいて、前記レジスタブロックのレジスタのなかからいずれか1つの前記レジスタのデータを選択して前記演算器に出力するデータ選択ステップと、
前記演算器により演算を行う演算ステップとを含むことを特徴とするデータ演算方法。 Data that includes a register file composed of a plurality of registers and a computing unit that performs operations using the data of the registers, and performs data access between the register file and the outside in a group register unit composed of the plurality of registers A data calculation method for performing calculation using an arithmetic device,
A data reading step of reading data from the outside to each group register of the register block when grouping at least two of the group registers of the registers of the register file as a register block;
An index data storage step of storing in the index register element index data specifying the position of data in the register block;
A data selection step of selecting data of any one of the registers from the registers of the register block based on element index data of the index register and outputting the selected data to the computing unit;
A data operation method comprising: an operation step of performing an operation by the operation unit.
さらに、前記インデックスデータ格納ステップ、前記データ選択ステップおよび前記演算ステップを繰り返し行う反復演算ステップを含むことを特徴とするデータ演算方法。 In claim 7,
The data calculation method further includes an iterative calculation step in which the index data storage step, the data selection step, and the calculation step are repeated.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004180639A JP2006004226A (en) | 2004-06-18 | 2004-06-18 | Data arithmetic unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004180639A JP2006004226A (en) | 2004-06-18 | 2004-06-18 | Data arithmetic unit |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006004226A true JP2006004226A (en) | 2006-01-05 |
Family
ID=35772566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004180639A Pending JP2006004226A (en) | 2004-06-18 | 2004-06-18 | Data arithmetic unit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006004226A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4152146A4 (en) * | 2020-06-09 | 2023-11-08 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Data processing method and device, and storage medium |
-
2004
- 2004-06-18 JP JP2004180639A patent/JP2006004226A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4152146A4 (en) * | 2020-06-09 | 2023-11-08 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Data processing method and device, and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110383237B (en) | Reconfigurable matrix multiplier system and method | |
US6260137B1 (en) | Data processing unit with digital signal processing capabilities | |
JP4277042B2 (en) | Arithmetic processing unit | |
CN101030192B (en) | Method and system for management of register | |
CN101495959B (en) | Method and system to combine multiple register units within a microprocessor | |
KR101371931B1 (en) | Data file storing multiple data types with controlled data access | |
JP5538889B2 (en) | Adaptive microprocessor register file | |
US20070130444A1 (en) | Integrated processor array, instruction sequencer and I/O controller | |
JPS59501684A (en) | Accelerated instruction mapping outside the source and destination instruction streams for near real-time insertion into the destination instruction stream | |
JP3954171B2 (en) | How to fill a vector with scalar values on a computer | |
JP4349265B2 (en) | Processor | |
US8145804B2 (en) | Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor | |
JP4901754B2 (en) | Evaluation unit for flag register of single instruction multiple data execution engine | |
JP3985797B2 (en) | Processor | |
JPH1049369A (en) | Data processor | |
JP3990423B2 (en) | Coding data access program instructions | |
US7441099B2 (en) | Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit | |
JP3753991B2 (en) | Processor, arithmetic instruction processing method and arithmetic control method in processor | |
JP2002229778A (en) | Pc relative branching method with high-speed displacement | |
JP2006004226A (en) | Data arithmetic unit | |
JP5327432B2 (en) | Signal processor and semiconductor device | |
JP5145659B2 (en) | Vector renaming method and vector computer | |
JP2812292B2 (en) | Image processing device | |
JP5263498B2 (en) | Signal processor and semiconductor device | |
JPWO2020084721A1 (en) | Arithmetic processing unit and control method of arithmetic processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070606 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090202 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090224 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090623 |