JP5375114B2 - Processor - Google Patents
Processor Download PDFInfo
- Publication number
- JP5375114B2 JP5375114B2 JP2009007990A JP2009007990A JP5375114B2 JP 5375114 B2 JP5375114 B2 JP 5375114B2 JP 2009007990 A JP2009007990 A JP 2009007990A JP 2009007990 A JP2009007990 A JP 2009007990A JP 5375114 B2 JP5375114 B2 JP 5375114B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- registers
- unit
- control
- 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
Abstract
Description
本発明は、プロセッサに関する。 The present invention relates to a processor.
プロセッサは、四則演算や論理演算等を行う算術論理演算ユニット(以下、ALU(Arithmetic Logic Unit)とも称する)と、レジスタとを有している。一般的に、レジスタのビット長(ビット幅)は、32ビットあるいは64ビット等である。例えば、32ビット長のレジスタを有するプロセッサでは、データサイズ(ビット幅)が32ビット未満のデータをレジスタに格納する場合、レジスタの上位ビットは、“0”あるいは符号拡張で埋められる。したがって、データサイズが小さい場合等、レジスタは、有効に使用されない。なお、8の倍数のデータサイズ(8ビットあるいは16ビット等)のデータを連続して並べてレジスタに格納し、連続するデータをそれぞれ処理するプロセッサが提案されている。 The processor includes an arithmetic logic unit (hereinafter also referred to as ALU (Arithmetic Logic Unit)) that performs four arithmetic operations, logical operations, and the like, and a register. Generally, the bit length (bit width) of a register is 32 bits or 64 bits. For example, in a processor having a 32-bit register, when data with a data size (bit width) of less than 32 bits is stored in the register, the upper bits of the register are filled with “0” or sign extension. Therefore, the register is not used effectively when the data size is small. A processor has been proposed in which data having a data size that is a multiple of 8 (e.g., 8 bits or 16 bits) is continuously arranged and stored in a register, and each piece of continuous data is processed.
また、可変ビット長データを扱う装置では、複数の可変ビット長データからなるビット列をデータメモリから読み出し、読み出したビット列をバレルシフタで任意のビット数だけ論理シフトして演算器に入力する構成が提案されている(例えば、特許文献1参照)。なお、特許文献1の構成では、データメモリから読み出されるビット列のビット幅は、可変ビット長データの最大ビット長(例えば、16ビット)の2倍以上(例えば、32ビット)である。また、バレルシフタによりシフトするビット数は、演算器により算出される。
For devices that handle variable bit length data, a configuration has been proposed in which a bit string composed of a plurality of variable bit length data is read from a data memory, and the read bit string is logically shifted by an arbitrary number of bits with a barrel shifter and input to an arithmetic unit. (For example, refer to Patent Document 1). In the configuration of
なお、複数の演算器により構成されるALUを任意のビット幅で分割し、分割したALUの演算器で複数組のデータをそれぞれ演算する構成が提案されている(例えば、特許文献2参照)。 A configuration has been proposed in which an ALU composed of a plurality of arithmetic units is divided by an arbitrary bit width, and a plurality of sets of data are respectively calculated by the divided ALU arithmetic units (see, for example, Patent Document 2).
8の倍数のデータサイズ(8ビットあるいは16ビット等)のデータを連続して並べてレジスタに格納し、連続するデータをそれぞれ処理するプロセッサでは、7ビットや9ビット等の半端なデータサイズを有するデータは、8の倍数のデータサイズに拡張される。この場合、拡張されたデータの上位ビットは、“0”あるいは符号拡張で埋められている。したがって、8の倍数以外の半端なデータサイズのデータが連続する場合等、レジスタは、有効に使用されない。 Data having a data size that is a multiple of 8 (such as 8 bits or 16 bits) is stored in a register in a register, and the processor that processes each piece of continuous data has an odd data size such as 7 bits or 9 bits. Is expanded to a data size that is a multiple of 8. In this case, the upper bits of the expanded data are filled with “0” or sign extension. Therefore, the register is not used effectively when data having an odd data size other than a multiple of 8 continues.
本発明の目的は、レジスタのビット幅に対して半端なデータサイズのデータが連続する際に、レジスタを有効に使用することである。 An object of the present invention is to effectively use a register when data having a data size that is odd with respect to the bit width of the register continues.
プロセッサは、入力されたデータに対する演算を実行する演算部と、データが格納される複数の第1レジスタと、入力データ抽出部とを有している。例えば、入力データ抽出部は、演算対象のデータを含む入力ビット列が格納された第1レジスタから入力ビット列を読み出す。そして、入力データ抽出部は、予め設定された第1位置情報に基づいて、読み出した入力ビット列から演算対象のデータを抽出し、抽出した演算対象のデータを演算部のビット幅に拡張する。 The processor includes an operation unit that performs an operation on input data, a plurality of first registers that store data, and an input data extraction unit. For example, the input data extraction unit reads the input bit string from the first register in which the input bit string including the operation target data is stored. The input data extraction unit extracts data to be calculated from the read input bit string based on the first position information set in advance, and expands the extracted data to be calculated to the bit width of the calculation unit.
レジスタのビット幅に対して半端なデータサイズのデータが連続する際に、レジスタを有効に使用できる。 The register can be used effectively when data having an odd data size with respect to the bit width of the register continues.
以下、本発明の実施形態を図面を用いて説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
図1は、本発明の一実施形態を示している。プロセッサ10は、実行ユニット20、レジスタファイル30、制御レジスタ40、41、42および制御部50を有している。例えば、プロセッサ10は、32ビットプロセッサであり、32ビット幅の汎用レジスタR(R0−R9)をレジスタファイル30内に有している。なお、図中の破線で囲んだ汎用レジスタR4、R6、R8は、データが格納されるレジスタであり、制御レジスタ40、41、42は、汎用レジスタR4、R6、R8にそれぞれ対応して設けられている。以下、汎用レジスタR(R0−R9)をレジスタR(R0−R9)とも称する。
FIG. 1 shows an embodiment of the present invention. The
実行ユニット20は、レジスタファイル30からデータを読み出し、データを命令実行部24に出力する2つの入力データ抽出部22と、命令を実行する命令実行部24と、令実行部24からデータを受け、レジスタファイル30にデータを書き込む出力データ生成部28とを有している。例えば、命令実行部24は、四則演算や論理演算等を実行する算術論理演算ユニット(以下、ALU(Arithmetic Logic Unit)とも称する)25と、ロード/ストア命令を実行するロード/ストアユニット26とを有している。なお、実行ユニット20は、図に示した入力データ抽出部22を1つにまとめた入力データ抽出部を有してもよい。
The
制御レジスタ40、41、42は、例えば、命令によりレジスタR4、R6、R8がアクセスされる場合、制御部50によりそれぞれ参照される。例えば、制御レジスタ40は、制御レジスタ40を有効にするか否を示すイネーブルEN、レジスタR4に格納されるアクセス対象のデータのビット長を示すビット長LN、アクセス対象のデータのレジスタR4内でのオフセット値(データ位置)を示すオフセットOFを有している。例えば、制御レジスタ40を有効にする場合、イネーブルENは、“1”に設定される。また、オフセットOFは、後述する図3に示すように、次に使用するデータ位置を示すために、動作中に更新される。
For example, when the registers R4, R6, and R8 are accessed by an instruction, the
同様に、例えば、制御レジスタ41は、制御レジスタ41を有効にするか否を示すイネーブルEN、レジスタR6に格納されるアクセス対象のデータのビット長を示すビット長LN、アクセス対象のデータのレジスタR6内でのオフセット値を示すオフセットOFを有している。また、例えば、制御レジスタ42は、制御レジスタ41を有効にするか否を示すイネーブルEN、レジスタR6に格納されるアクセス対象のデータのビット長を示すビット長LN、アクセス対象のデータのレジスタR6内でのオフセット値を示すオフセットOFを有している。すなわち、制御レジスタ41、42は、対応するレジスタR(R6、R8)を除いて、制御レジスタ40と同じである。
Similarly, for example, the control register 41 has an enable EN indicating whether or not to enable the control register 41, a bit length LN indicating the bit length of the access target data stored in the register R6, and a register R6 of the access target data. It has an offset OF indicating an offset value inside. Also, for example, the control register 42 is an enable EN that indicates whether the control register 41 is enabled, a bit length LN that indicates the bit length of the access target data stored in the register R6, and the access target data in the register R6. It has an offset OF indicating an offset value at. That is, the control registers 41 and 42 are the same as the
制御部50は、例えば、命令によりアクセスされるレジスタRを示すレジスタ番号RN1および命令の種類を示す命令種別TPをデコーダ(図示せず)から受け、制御レジスタ40、41、42のオフセットOFを更新する。ここで、この実施形態では、レジスタ番号RN1のレジスタRS1、RT1は、ソースのレジスタRを示し、レジスタ番号RN1のレジスタRD1は、ディスティネーションのレジスタRを示している。また、命令種別TPは、実行する命令の種類(ロード命令等)を示している。
For example, the
また、例えば、制御部50は、レジスタ番号RN1と、制御レジスタ40、41、42から読み出した制御情報RINF10、20、30とを実行ユニット20に出力する。例えば、各制御情報RINF10、20、30は、各制御レジスタ40、41、42のイネーブルEN、ビット長LNおよびオフセットOFを含む情報である。なお、図1では、制御レジスタ40、41、42の初期値等を設定するための制御信号(例えば、後述する図2に示す初期値INT1)の記載を省略している。
For example, the
図2は、図1に示した制御部50の一例を示している。制御部50(図中の破線で囲んだ部分)は、更新部51およびセレクタ52Aを有している。なお、図2は、制御レジスタ40のオフセットOFを更新するための更新部51およびセレクタ52Aを示し、制御レジスタ41、42のオフセットOFを更新するための更新部51およびセレクタ52Aの記載を省略している。例えば、制御レジスタ41、42のオフセットOFを更新するための更新部51およびセレクタ52Aは、制御する制御レジスタ41、42を除いて、図2と同じである。
FIG. 2 shows an example of the
制御部50は、例えば、初期値INT1を受け、制御レジスタ40のイネーブルEN、ビット長LNおよびオフセットOFの値を初期値INT1に設定する。この場合、セレクタ52Aは、初期値INT1の値(より詳細には、オフセットOFの初期値)を制御レジスタ40に設定する値として選択する。ここで、例えば、制御レジスタ40、41、42は、アドレスマップ上に割り当てられている。これにより、ロード命令やストア命令で、制御レジスタ40、41、42の値(初期値等)を設定できる。また、図の例では、制御レジスタ40、41、42は、フリップフロップ(以下、FFとも称する)により構成されている。
For example, the
更新部51は、例えば、レジスタ番号RN1および命令種別TPに基づいて、オフセットOFを更新する。例えば、レジスタR4がアクセスされる命令が実行された場合、更新部51は、次に使用されるデータのレジスタR4におけるビット位置を算出し、オフセットOFを更新する。なお、更新部51の動作の詳細は、後述する図3で説明する。セレクタ52Aは、オフセットOFを更新する場合、更新部51から受ける値を制御レジスタ40に設定する値として選択する。
For example, the
図3は、図2に示した更新部51の動作の一例を示している。なお、図3は、制御レジスタ40のオフセットOFを更新するための更新部51(制御レジスタ40用の更新部51)の動作を示している。すなわち、図3では、制御レジスタ40用の更新部51の動作を説明する。制御レジスタ41、42のオフセットOFを更新するための更新部51(制御レジスタ41、42用の更新部51)のそれぞれの動作は、レジスタR4をレジスタR6、R8にそれぞれ読み替えることで説明される。なお、上述した図2に示したセレクタ52Aは、更新部51から受ける値を制御レジスタ40に設定するする値として選択している。
FIG. 3 shows an example of the operation of the
先ず、処理60では、更新部51は、レジスタ番号RN1に基づいて、レジスタR4へのアクセスが発生するか否かを判定する。レジスタR4がアクセスされる場合(処理60のYes)、更新部51の動作は、処理61に移り、レジスタR4がアクセスされない場合(処理60のNo)、更新部51は、オフセットOFを更新せずに処理を終了する。なお、制御レジスタ41、42用の更新部51では、処理60において、レジスタR6、R8へのアクセスがそれぞれ発生するか否かを判定する。
First, in
処理61では、更新部51は、イネーブルENが“1”に設定されているか否かを判定する。すなわち、更新対象の制御レジスタ(図の例では、制御レジスタ40)が有効か否かを判定する。イネーブルENが“1”の場合(処理61のYes)、更新部51の動作は、処理62に移り、イネーブルENが“1”でない場合(処理61のNo)、更新部51は、オフセットOFを更新せずに処理を終了する。
In the
処理62では、更新部51は、命令種別TPに基づいて、命令がロード命令か否かを判定する。ロード命令でない場合(処理62のNo)、更新部51の動作は、処理63に移り、ロード命令の場合(処理62のYes)、更新部51は、オフセットOFを更新せずに処理を終了する。
In
処理63では、更新部51は、命令種別TPに基づいて、命令がストア命令か否かを判定する。ストア命令でない場合(処理63のNo)、更新部51の動作は、処理64に移り、ストア命令の場合(処理63のYes)、更新部51は、オフセットOFを更新せずに処理を終了する。
In
処理64では、更新部51は、ビット長LNを2倍した値とオフセットOFとの加算結果がレジスタRのビット幅(この実施形態では、32)以上か否かを判定する。加算結果が32以上の場合(処理64のYes)、更新部51の動作は、処理65に移り、加算結果が31以下の場合(処理64のNo)、更新部51の動作は、処理66に移る。
In
処理65では、更新部51は、オフセットOFを0に設定する。処理66では、更新部51は、現状のオフセットOFにビット長LNを加算した値に、オフセットOFを更新する。これにより、オフセットOFは、次に使用するデータの位置に順次更新される。
In
なお、ロード命令およびストア命令が実行された後では、オフセットOFが“0”に設定されるように構成してもよい。この場合、例えば、処理62のYesおよび処理63のYesにおいて、更新部51の動作は、処理65(オフセットOFを“0”に設定)に移る。
Note that the offset OF may be set to “0” after the load instruction and the store instruction are executed. In this case, for example, in Yes in
図4は、レジスタR4、R6、R8に格納されるデータの一例を示す図である。なお、図4(a)は、連続するデータDS0、DS1、DS2と連続するデータDT0、DT1、DT2とをそれぞれ加算するプログラムの一例を示している。また、図4(b)は、図4(a)のプログラムが実行された際のレジスタR4、R6、R8の状態の概要を示している。図4(a)のアドレスadr1、adr2、adr3は、メモリ(図示せず)のアドレスを示し、図4(b)の網掛け部分は、有効なデータが格納されていない領域を示している。図のレジスタR4、R6、R8は、右側が下位ビットである。 FIG. 4 is a diagram illustrating an example of data stored in the registers R4, R6, and R8. FIG. 4A shows an example of a program for adding continuous data DS0, DS1, and DS2 and continuous data DT0, DT1, and DT2, respectively. FIG. 4B shows an outline of the states of the registers R4, R6, and R8 when the program of FIG. 4A is executed. Addresses adr1, adr2, and adr3 in FIG. 4A indicate addresses of a memory (not shown), and a shaded portion in FIG. 4B indicates an area in which valid data is not stored. In the illustrated registers R4, R6, and R8, the right side is the lower bits.
なお、データDS0、DS1、DS2、DT0、DT1、DT2のビット長は、9ビットであり、データDD0、DD1、DD2のビット長は、10ビットである。したがって、上述した図1に示した制御レジスタ40、41、42のビット長LNは、“9”、“9”、“10”にそれぞれ設定されている。また、制御レジスタ40、41、42のオフセットOFの初期値は、“0”に設定されている。 The bit length of data DS0, DS1, DS2, DT0, DT1, DT2 is 9 bits, and the bit length of data DD0, DD1, DD2 is 10 bits. Therefore, the bit lengths LN of the control registers 40, 41, and 42 shown in FIG. 1 are set to “9”, “9”, and “10”, respectively. Further, the initial value of the offset OF of the control registers 40, 41, 42 is set to “0”.
図4(a)のプログラムでは、先ず、プロセッサ10は、アドレスadr1に連続して格納されているデータDS0、DS1、DS2をレジスタR4にロードする(図4(a1)、(b1))。次に、プロセッサ10は、アドレスadr2に連続して格納されているデータDT0、DT1、DT2をレジスタR6にロードする(図4(a2)、(b1))。図の例では、レジスタR4、R6の有効に使用されない領域は、5ビットであり、データDS0、DS1、DS2、DT0、DT1、DT2毎に1つのレジスタRに格納する構成に比べて、レジスタRを有効に使用できる。さらに、この実施形態では、演算対象のデータを抽出するために、上述した図1に示したALU25がシフト演算等を実行する必要がないため、連続するデータの演算を高速に処理できる。
In the program of FIG. 4A, first, the
そして、プロセッサ10は、レジスタR4に格納されているデータDS0とレジスタR6に格納されているデータDT0とを加算し、加算結果であるデータDD0をレジスタR8に格納する(図4(a3)、(b2))。この際、制御レジスタ40、41、42のオフセットOFは、上述した図3に示した動作により、“9”、“9”、“10”にそれぞれ更新される。次に、プロセッサ10は、レジスタR4に格納されているデータDS1とレジスタR6に格納されているデータDT1とを加算し、加算結果であるデータDD1をレジスタR8に格納する(図4(a4)、(b3))。この際、制御レジスタ40、41、42のオフセットOFは、図3に示した動作により、“18”、“18”、“20”にそれぞれ更新される。その後、プロセッサ10は、レジスタR4に格納されているデータDS2とレジスタR6に格納されているデータDT2とを加算し、加算結果であるデータDD2をレジスタR8に格納する(図4(a5)、(b4))。
Then, the
このように、レジスタR8の有効に使用されない領域は、2ビットであり、データDD0、DD1、DD2毎に1つのレジスタRに格納する構成に比べて、レジスタRを有効に使用できる。さらに、この実施形態では、複数の演算結果のデータを連続して並べるために、ALU25がシフト演算等を実行する必要がないため、連続するデータの演算を高速に処理できる。最後に、プロセッサ10は、レジスタR8に格納されているデータDD0、DD1、DD2をアドレスadr3にストアする(図4(a6))。このように、この実施形態では、データDS0、DS1、DS2、DT0、DT1、DT2、DD0、DD1、DD2を32ビット幅に拡張してメモリに格納する必要がないため、メモリを有効に使用できる。
As described above, the area of the register R8 that is not used effectively is 2 bits, and the register R can be used more effectively than the configuration in which the data is stored in one register R for each of the data DD0, DD1, and DD2. Furthermore, in this embodiment, it is not necessary for the
図5は、図1に示した入力データ抽出部22の概要を示している。図中の網掛け部分は、有効なデータでない部分を示している。なお、図のデータDS0、DS1、DS2の状態は、上述した図4(a4)の命令が実行されるときの状態に対応している。また、図のデータDS0、DS1、DS2は、右側が下位ビットである。入力データ抽出部22は、左論理シフト部220、右算術シフト部221、セレクタ222を有している。
FIG. 5 shows an overview of the input
左論理シフト部220は、レジスタRから読み出されたデータRDATAをシフト量LSL分だけ左論理シフトする。図の例では、データRDATAは、有効でないデータ(図の網掛け部分)、データDS2、DS1、DS0を含むデータである。また、シフト量LSLは、読み出したレジスタRに対応する制御レジスタ(例えば、制御レジスタ40)のビット長LNおよびオフセットOFの加算値をレジスタRのビット幅である32から引いた値である。左論理シフト部220により、例えば、演算対象のデータDS1は、32ビット幅のデータの一番左側にシフトされる。
The left
右算術シフト部221は、左論理シフト部220の出力データ(32ビット幅のデータ)をシフト量ASR分だけ右算術シフトする。すなわち、32ビット幅のデータの左側の空いたビットは、符号拡張SEで埋められる。これにより、入力データ抽出部22は、符号付きのデータを扱うことができる。なお、シフト量ASRは、読み出したレジスタRに対応する制御レジスタ(例えば、制御レジスタ40)のビット長LNをレジスタRのビット幅である32から引いた値である。右算術シフト部221により、例えば、演算対象のデータDS1は、32ビット幅のデータの一番右側にシフトされる。
The right
セレクタ222は、選択信号SELに基づいて、データS1、S2の一方をデータIDATAとして上述した図1に示した命令実行部24に出力する。例えば、セレクタ222は、レジスタR4、R6、R8のいずれかからデータRDATAが読み出される場合、データRDATAが読み出されるレジスタR4、R6、R8に対応する制御レジスタ40、41、42のイネーブルENが“1”(制御レジスタが有効)のときに、データS2(右算術シフト部221の出力データ)をデータIDATAとして命令実行部24に出力する。その他の条件では、セレクタ222は、レジスタRから読み出したデータRDATA(データS1)をデータIDATAとして命令実行部24に出力する。
Based on the selection signal SEL, the
例えば、セレクタ222は、レジスタR4、R6、R8以外のレジスタRからデータRDATAが読み出される場合、レジスタRから読み出したデータRDATA(データS1)をデータIDATAとして命令実行部24に出力する。すなわち、この実施形態では、選択信号SELは、例えば、データRDATAが読み出されるレジスタRを示すレジスタ番号RN1と、制御レジスタ40、41、42のイネーブルENとにより生成される。
For example, when the data RDATA is read from the registers R other than the registers R4, R6, and R8, the
図6は、図1に示した出力データ生成部28の概要を示している。なお、図のデータDD0、DD1の状態は、上述した図4(a4)の命令が実行されるときの状態に対応している。また、図のデータDD0、DD1は、右側が下位ビットである。出力データ生成部28は、左論理シフト部280、右論理シフト部281、FF282、オア回路(以下、ORとも称する)283およびセレクタ284を有している。
FIG. 6 shows an overview of the output
左論理シフト部280は、上述した図1に示した命令実行部24から受けたデータ(例えば、ALU25の演算結果)EDATAをシフト量LSL分だけ左論理シフトする。図の例では、データEDATAは、符号拡張SEおよびデータDD1から構成される32ビット幅のデータである。また、シフト量LSLは、演算結果を格納するレジスタRに対応する制御レジスタ(例えば、制御レジスタ42)のビット長LNをレジスタRのビット幅である32から引いた値である。左論理シフト部280により、例えば、演算結果のデータDD1は、32ビット幅のデータの一番左側にシフトされる。
The left
右論理シフト部281は、左論理シフト部280の出力データ(32ビット幅のデータ)をシフト量LSR分だけ右論理シフトする。なお、32ビット幅のデータの空いたビットは、“0”で埋められる。また、シフト量LSRは、演算結果を格納するレジスタRに対応する制御レジスタ(例えば、制御レジスタ42)のビット長LNおよびオフセットOFの加算値をレジスタRのビット幅である32から引いた値である。右論理シフト部281により、例えば、演算結果のデータDD1は、データDD1の最下位ビットと32ビット幅のデータにおけるオフセットOFの位置とが一致する位置にシフトされる。
The right
オア回路283は、右論理シフト部281の出力データとFF28から読み出されるデータとのオアをセレクタ284およびFF282に出力する。なお、FF282には、前回の演算命令(例えば、図4(a3))が実行された際のオア回路283の出力データ(図の例では、下位ビットから順にデータDD0および“0”が配置された32ビット幅のデータ)が格納されている。そして、今回の演算命令(例えば、図4(a4))により、FF282には、下位ビットから順に、データDD0、データDD1、“0”が配置された32ビット幅のデータが格納される。
The OR
セレクタ284は、選択信号SELに基づいて、データS1、S2の一方をデータODATAとして、レジスタ番号RN1が示すレジスタRに出力する。例えば、セレクタ284は、レジスタR4、R6、R8のいずれかにデータODATAを格納する場合、データODATAが格納されるレジスタR4、R6、R8に対応する制御レジスタ40、41、42のイネーブルENが“1”(制御レジスタが有効)のときに、データS2(オア回路283の出力データ)をデータODATAとしてレジスタRに出力する。その他の条件では、セレクタ222は、命令実行部24から受けたデータEDATA(データS1)をデータODATAとして、レジスタ番号RN1が示すレジスタRに出力する。
Based on the selection signal SEL, the
例えば、セレクタ284は、レジスタR4、R6、R8以外のレジスタRにデータODATAを格納する場合、命令実行部24から受けたデータEDATA(データS1)をデータODATAとしてレジスタRに出力する。すなわち、この実施形態では、選択信号SELは、例えば、データODATAが格納されるレジスタRを示すレジスタ番号RN1と、制御レジスタ40、41、42のイネーブルENとにより生成される。
For example, when storing the data ODATA in the register R other than the registers R4, R6, and R8, the
以上、この実施形態では、入力データ抽出部22は、制御レジスタ40、41、42に基づいて、レジスタR4、R6、R8の1つから連続する任意のビット長のデータを順次読み出す。さらに、この実施形態では、出力データ生成部28は、制御レジスタ40、41、42に基づいて、レジスタR4、R6、R8の1つに任意のビット長の複数のデータを順次格納する。したがって、この実施形態では、データ毎に1つのレジスタRに格納する構成に比べて、レジスタRを有効に使用できる。すなわち、この実施形態では、レジスタのビット幅に対して半端なデータサイズ(例えば、8の倍数以外のデータサイズ)のデータが連続する場合でも、レジスタを有効に使用できる。
As described above, in this embodiment, the input
図7は、別の実施形態におけるプロセッサの概要を示している。この実施形態のプロセッサ11は、上述した図1に示した実行ユニット20、制御レジスタ40、41、42および制御部50の代わりに、実行ユニット21、制御レジスタ43、44、45および制御部54がそれぞれ設けられている。その他の構成は、図1−図6で説明した示したプロセッサ10と同じである。図1−図6で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
FIG. 7 shows an overview of a processor in another embodiment. The processor 11 of this embodiment includes an execution unit 21, control registers 43, 44, 45, and a
例えば、プロセッサ11は、32ビットプロセッサであり、実行ユニット21、レジスタファイル30、制御レジスタ43、44、45および制御部54を有している。なお、図中の破線で囲んだレジスタRの組(R4とR5、R6とR7、R8とR9)には、制御レジスタ43、44、45がそれぞれ対応して設けられている。すなわち、制御レジスタ43、44、45は、図中の破線で囲んだレジスタRの組(R4とR5、R6とR7、R8とR9)にそれぞれ対応して設けられている。
For example, the processor 11 is a 32-bit processor, and includes an execution unit 21, a
実行ユニット21は、図1に示した入力データ抽出部22および出力データ生成部28の代わりに、入力データ抽出部23および出力データ生成部29がそれぞれ設けられている。入力データ抽出部23は、レジスタRの組(例えば、R4とR5、R6とR7、R8とR9)の両方のレジスタをまたいで格納されたデータを読み出せるように構成されている。例えば、レジスタR4、R5から構成されるレジスタ群からデータを読み出す場合、入力データ抽出部23は、レジスタR4、R5をまたいで格納されたデータを読み出せる。なお、入力データ抽出部23の詳細は、後述する図14で説明する。
The execution unit 21 is provided with an input
出力データ生成部29は、レジスタRの組(例えば、R4とR5、R6とR7、R8とR9)の両方のレジスタにまたいでデータを格納できるように構成されている。例えば、レジスタR4、R5から構成されるレジスタ群に20ビット長のデータを2つ格納する場合、出力データ生成部29は、2つめのデータの下位12ビットをレジスタR4に格納し、2つめのデータの上位8ビットをレジスタR5に格納する。なお、出力データ生成部29の詳細は、後述する図15で説明する。
The output
制御レジスタ43は、レジスタR4、R5から構成されるレジスタ群に対応して設けられ、例えば、命令によりレジスタR4、R5がアクセスされる場合、制御部54により参照される。例えば、制御レジスタ43は、イネーブルEN、ビット長LN、オフセットOF、レジスタ番号RPT、WPT、エンプティEMPおよびフルFULを有している。イネーブルEN、ビット長LN、オフセットOFは、図1で説明したイネーブルEN、ビット長LN、オフセットOFと同じである。例えば、制御レジスタ43を有効にする場合、イネーブルENは、“1”に設定される。なお、オフセットOFには、レジスタR4にアクセスする場合、アクセス対象のデータのレジスタR4内でのオフセット値(データ位置)が設定され、レジスタR5にアクセスする場合、アクセス対象のデータのレジスタR5内でのオフセット値が設定される。
The control register 43 is provided corresponding to a register group including the registers R4 and R5. For example, when the registers R4 and R5 are accessed by an instruction, the
レジスタ番号RPTには、データが読み出されるレジスタRを示すレジスタ番号が設定され、レジスタ番号WPTには、データが書き込まれるレジスタRを示すレジスタ番号が設定される。エンプティEMPは、レジスタR4、R5のいずれにも有効なデータが格納されていない状態(レジスタR4、R5の両方が空の状態)を示している。例えば、レジスタR4、R5のいずれにも有効なデータが格納されていない状態では、エンプティEMPは、“1”に設定される。また、フルFULは、レジスタR4、R5の両方に有効なデータが格納されている状態を示している。例えば、レジスタR4、R5の両方に有効なデータが格納されている状態では、フルFULは、“1”に設定される。制御レジスタ44、45は、対応するレジスタ群(R6とR7、R8とR9)を除いて、制御レジスタ43と同じである。
A register number indicating the register R from which data is read is set in the register number RPT, and a register number indicating the register R in which the data is written is set in the register number WPT. The empty EMP indicates a state in which valid data is not stored in either of the registers R4 and R5 (both registers R4 and R5 are empty). For example, in a state where valid data is not stored in either of the registers R4 and R5, the empty EMP is set to “1”. Full FUL indicates a state in which valid data is stored in both the registers R4 and R5. For example, in a state where valid data is stored in both the registers R4 and R5, the full FUL is set to “1”. The control registers 44 and 45 are the same as the
制御部54は、レジスタ番号RN1および命令種別TPをデコーダ(図示せず)から受け、制御情報RINF10、11、20、21、30、31を制御レジスタ43、44、45から読み出し、制御レジスタ43、44、45のオフセットOF等を更新する。ここで、例えば、各制御情報RINF11、21、31は、各制御レジスタ43、44、45のレジスタ番号RPT、WPT、エンプティEMPおよびフルFULを含む情報である。
The
また、例えば、制御部54は、制御レジスタ43、44、45から読み出した制御情報RINF10、20、30を実行ユニット21に出力し、レジスタ番号RN1の代わりにレジスタ番号RN2を実行ユニット21に出力する。なお、この実施形態では、レジスタ番号RN2のレジスタRS2、RT2は、ソースのレジスタRを示し、レジスタ番号RN2のレジスタRD2は、ディスティネーションのレジスタRを示している。また、図7では、制御レジスタ43、44、45の初期値等を設定するための制御信号(例えば、後述する図8に示す初期値INT2)の記載を省略している。
For example, the
図8は、図7に示した制御部54の一例を示している。制御部54(図中の破線で囲んだ部分)は、セレクタ52(52A、52B、52C、52D、52E)、更新部55および変換部56を有している。なお、図8は、制御レジスタ43用のセレクタ52および更新部を示し、制御レジスタ44、45用のセレクタ52および更新部55の記載を省略している。例えば、制御レジスタ44、45用のセレクタ52および更新部55は、制御する制御レジスタ44、45を除いて、図8と同じである。また、図8では、制御レジスタ44、45の記載を省略している。
FIG. 8 shows an example of the
制御部54は、例えば、初期値INT2を受け、制御レジスタ43の各値(イネーブルEN等)を初期値INT2に設定する。この場合、セレクタ52は、初期値INT2の値を制御レジスタ43に設定する値として選択する。ここで、例えば、制御レジスタ43、44、45は、アドレスマップ上に割り当てられている。これにより、ロード命令やストア命令で、制御レジスタ43、44、45の値(初期値等)を設定できる。また、図の例では、制御レジスタ43、44、45は、フリップフロップにより構成されている。
For example, the
更新部55は、例えば、レジスタ番号RN1および命令種別TPを受け、制御情報RINF10、11を制御レジスタ43から読み出し、オフセットOF、レジスタ番号RPT、WPT、エンプティEMPおよびフルFULを更新する。なお、更新部55の動作の詳細は、後述する図9、図11で説明する。セレクタ52は、制御レジスタ43の値を更新する場合、更新部55から受ける値を制御レジスタ43に設定する値として選択する。
For example, the
変換部56は、例えば、レジスタ番号RN1および命令種別TPを受け、レジスタ番号RN1が示すレジスタRに対応する制御レジスタ43、44、45からレジスタ番号RPT、WPT、イネーブルENを読み出し、レジスタ番号RN2を設定する。なお、レジスタ番号RN1により指定されるレジスタRが制御レジスタ43、44、45に対応していないレジスタRの場合、変換部56は、レジスタ番号RPT、WPT、イネーブルENを、制御レジスタ43、44、45から読み出さなくてもよい。そして、変換部56は、レジスタ番号RN1の代わりにレジスタ番号RN2を上述した図7に示した実行ユニット21に出力する。なお、変換部56の動作の詳細は、後述する図11で説明する。
For example, the
図9、図10は、図8示した更新部55の動作の一例を示している。なお、図9、図10は、制御レジスタ43のオフセットOF、レジスタ番号RPT、WPT、エンプティEMPおよびフルFULを更新するための更新部55の動作を示している。すなわち、図9、10では、制御レジスタ43用の更新部55の動作を説明する。制御レジスタ44用の更新部55の動作は、レジスタR4、R5をレジスタR6、R7に読み替えることで説明され、制御レジスタ45用の更新部55の動作は、レジスタR4、R5をレジスタR8、R9に読み替えることで説明される。また、上述した図8に示したセレクタ52は、更新部55から受ける値を制御レジスタ43に設定するする値として選択している。なお、図10の符号%は、剰余演算子を示している。
9 and 10 show an example of the operation of the
先ず、図9に示すように、処理70では、更新部55は、レジスタ番号RN1に基づいて、レジスタR4、R5のいずれかへのアクセスが発生するか否かを判定する。レジスタR4、R5のいずれかがアクセスされる場合(処理70のYes)、更新部55の動作は、処理72に移り、レジスタR4、R5のいずれもアクセスされない場合(処理70のNo)、更新部55は、制御レジスタ43を更新せずに処理を終了する。
First, as shown in FIG. 9, in the
処理72では、更新部55は、イネーブルENが“1”に設定されているか否かを判定する。すなわち、制御レジスタ43が有効か否かを判定する。イネーブルENが“1”の場合(処理72のYes)、更新部55の動作は、処理74に移り、イネーブルENが“1”でない場合(処理72のNo)、更新部55は、制御レジスタ43を更新せずに処理を終了する。例えば、レジスタR4、R5を上述した図7に示したレジスタR0−R3と同じように扱う場合、更新部55は、制御レジスタ43を更新せずに処理を終了する。すなわち、レジスタR4およびレジスタR5を、レジスタR4、R5から構成されるレジスタ群として使用しない場合、更新部55は、制御レジスタ43を更新せずに処理を終了する。
In
処理74では、更新部55は、命令種別TPに基づいて、命令がロード命令か否かを判定する。ロード命令の場合(処理74のYes)、更新部55の動作は、処理76に移り、ロード命令でない場合(処理74のNo)、更新部55の動作は、処理84に移る。
In
処理76では、更新部55は、レジスタ番号WPTを更新する。例えば、更新前のレジスタ番号WPTがレジスタR4を示すとき、更新部55は、レジスタR5を示すレジスタ番号に、レジスタ番号WPTを更新する。また、例えば、更新前のレジスタ番号WPTがレジスタR5を示すとき、更新部55は、レジスタR4を示すレジスタ番号に、レジスタ番号WPTを更新する。例えば、更新後のレジスタ番号WPTは、定数番号を4(レジスタR4を示す値)とした場合、更新前のレジスタ番号WPTから定数番号を引いた値に1を加算した結果を被除数とし、被除数を2で割ったときの剰余を定数番号に加算することにより算出される。なお、定数番号を5(レジスタR5を示す値)とした場合、更新後のレジスタ番号WPTは、定数番号から更新前のレジスタ番号WPTを引いた値に1を加算した結果を被除数とし、被除数を2で割ったときの剰余を定数番号から減算することにより算出される。
In
処理78では、更新部55は、処理76で更新されたレジスタ番号WPTがレジスタ番号RPTと同じか否かを判定する。レジスタ番号WPT、RPTが互いに同じ場合(処理78のYes)、更新部55は、処理80において、フルFULを“1”(レジスタR4、R5の両方に有効なデータが格納されている状態を示す情報)に設定する。一方、レジスタ番号WPT、RPTが互いに異なる場合(処理78のNo)、更新部55の動作は、処理82に移る。処理82では、更新部55は、エンプティEMPを“0”(レジスタR4、R5の少なくとも一方に有効なデータが格納されている状態を示す情報)に設定する。
In
処理84(処理74において、ロード命令でないと判定された場合)では、更新部55は、命令種別TPに基づいて、命令がストア命令か否かを判定する。ストア命令の場合(処理84のYes)、更新部55の動作は、処理86に移り、ストア命令でない場合(処理84のNo)、更新部55の動作は、図10に示す処理Aに移る。
In process 84 (when it is determined in
処理86では、更新部55は、レジスタ番号RPTを更新する。例えば、更新前のレジスタ番号RPTがレジスタR4を示すとき、更新部55は、レジスタR5を示すレジスタ番号に、レジスタ番号RPTを更新する。また、例えば、更新前のレジスタ番号RPTがレジスタR5を示すとき、更新部55は、レジスタR4を示すレジスタ番号に、レジスタ番号RPTを更新する。例えば、更新後のレジスタ番号RPTは、処理76のレジスタ番号WPTの更新と同様の演算により算出される。
In
処理88では、更新部55は、レジスタ番号WPTが処理86で更新されたレジスタ番号RPTと同じか否かを判定する。レジスタ番号WPT、RPTが互いに同じ場合(処理88のYes)、更新部55は、処理90において、エンプティEMPを“1”(レジスタR4、R5のいずれにも有効なデータが格納されていない状態を示す情報)に設定する。一方、レジスタ番号WPT、RPTが互いに異なる場合(処理88のNo)、更新部55の動作は、処理92に移る。処理92では、更新部55は、フルFULを“0”(レジスタR4、R5の少なくとも一方は空の状態を示す情報)に設定する。
In
図10に示すように、処理94(図9の処理84において、ストア命令でないと判定された場合)では、更新部55は、レジスタ番号RN1に基づいて、レジスタR4、R5から構成されるレジスタ群へのアクセスがディスティネーションか否かを判定する。例えば、レジスタ番号RN1のレジスタRD1がレジスタR4の場合、レジスタR4、R5から構成されるレジスタ群へのアクセスは、ディスティネーションである。レジスタ群へのアクセスがディスティネーションの場合(処理94のYes)、更新部55の動作は、処理96に移り、レジスタ群へのアクセスがソースの場合(処理94のNo)、更新部55の動作は、処理108に移る。
As shown in FIG. 10, in the process 94 (when it is determined in the
処理96では、更新部55は、オフセットOFとビット長LNとの加算結果がレジスタRのビット幅(この実施形態では、32)以上か否かを判定する。加算結果が32以上の場合(処理96のYes)、更新部55の動作は、処理98に移る。処理98、100、102、104は、処理76、78、80、82と同じである。処理96、98により、上述した図7に示した出力データ生成部29は、レジスタR4、R5にまたいでデータを格納できる。一方、加算結果が31以下の場合(処理96のNo)、更新部55の動作は、処理104に移る。
In
処理106では、更新部55は、オフセットOFを更新する。例えば、更新後のオフセットOFは、更新前のオフセットOFにビット長LNを加算した結果を被除数とし、被除数をレジスタRのビット幅(この実施形態では、32)で割ったときの剰余により算出される。
In
処理108(処理94において、レジスタ群へのアクセスがソースと判定された場合)では、更新部55は、オフセットOFを更新する。例えば、更新後のオフセットOFは、処理106のオフセットOFの更新と同様の演算により算出される。
In process 108 (when it is determined in
処理109では、更新部55は、処理108で更新されたオフセットOFが0か否かを判定する。オフセットOFが0の場合(処理109のYes)、更新部55の動作は、処理112に移り、オフセットOFが0でない場合(処理109のNo)、更新部55の動作は、処理110に移る。
In
処理110では、更新部55は、オフセットOFとビット長LNとの加算結果がレジスタRのビット幅(この実施形態では、32)より大きいか否かを判定する。加算結果が32より大きい場合(処理110のYes)、更新部55は、処理112において、レジスタ番号RPTを更新し、加算結果が32以下の場合(処理110のNo)、更新部55は、レジスタ番号RPTを更新しない。処理112、114、116、118は、処理86、88、90、92と同じである。処理108、109、110、112により、図7に示した入力データ抽出部23は、レジスタR4、R5をまたいで格納されたデータを読み出せる。
In
図11は、図8示した変換部56の動作の一例を示している。なお、図11は、レジスタ番号RN2の1つ(レジスタRD2、RS2、RT2の1つ)を設定する際の変換部56の動作を示している。レジスタ番号RN1により指定されるレジスタRが複数の場合(すなわち、レジスタ番号RN2に設定されるレジスタRが複数の場合)、アクセスが発生する各レジスタRに対して、図11の処理が実施される。
FIG. 11 shows an example of the operation of the
先ず、処理120では、変換部56は、レジスタ番号RN1に基づいて、レジスタR4−R9のいずれかへのアクセスが発生するか否かを判定する。レジスタR4−R9のいずれかがアクセスされる場合(処理120のYes)、変換部56の動作は、処理122に移り、レジスタR4−R9がアクセスされない場合(処理120のNo)、変換部56は、処理138において、レジスタ番号RN2のレジスタ(RD2、RS2、RT2)をレジスタ番号RN1のレジスタ(RD1、RS1、RT1)に設定する。
First, in the
例えば、レジスタ番号RN1のレジスタRD1、RS1、RT1がレジスタR3、R4、R6の場合、変換部56は、処理138において、レジスタ番号RN2のレジスタRD2をレジスタR3に設定し、レジスタ番号RN2のレジスタRS2、RT2を設定するために処理122を実施する。
For example, when the registers RD1, RS1, and RT1 with the register number RN1 are the registers R3, R4, and R6, the
処理122では、変換部56は、レジスタ番号RN1により指定されるレジスタRに対応する制御レジスタ43、44、45のイネーブルENが“1”に設定されているか否かを判定する。すなわち、レジスタ番号RN1により指定されるレジスタRに対応する制御レジスタ43、44、45が有効か否かを判定する。処理122により、レジスタ番号RN1により指定されるレジスタRを、2つのレジスタRから構成されるレジスタ群として使用するか、上述した図7に示したレジスタR0−R3と同じように単独のレジスタRとして使用するかが判定される。
In
イネーブルENが“1”の場合(処理122のYes)、変換部56の動作は、処理124に移り、イネーブルENが“1”でない場合(処理122のNo)、変換部56は、処理138において、レジスタ番号RN2のレジスタ(RD2、RS2、RT2)をレジスタ番号RN1のレジスタ(RD1、RS1、RT1)に設定する。例えば、レジスタ番号RN1のレジスタRD1、RS1、RT1がレジスタR8、R4、R6であり、かつ、制御レジスタ43、44、45のイネーブルENが“1”、“1”、“0”にそれぞれ設定されている場合、変換部56は、レジスタ番号RN2のレジスタRS2、RT2を設定するために処理124を実施する。さらに、変換部56は、処理138において、レジスタ番号RN2のレジスタRD2を、レジスタ番号RN1のレジスタRD1(レジスタR8)に設定する。
When the enable EN is “1” (Yes in processing 122), the operation of the
処理124では、変換部56は、命令種別TPに基づいて、命令がロード命令か否かを判定する。ロード命令の場合(処理124のYes)、変換部56は、処理126において、レジスタ番号RN2のレジスタRT2をレジスタ番号WPTが示すレジスタRに設定する。一方、ロード命令でない場合(処理124のNo)、変換部56の動作は、処理128に移る。
In
処理128では、変換部56は、命令種別TPに基づいて、命令がストア命令か否かを判定する。ストア命令の場合(処理128のYes)、変換部56は、処理130において、レジスタ番号RN2のレジスタRT2をレジスタ番号RPTが示すレジスタRに設定する。一方、ストア命令でない場合(処理128のNo)、変換部56の動作は、処理132に移る。
In
処理132では、変換部56は、レジスタ番号RN1に基づいて、レジスタ番号RN1により指定されるレジスタRを含むレジスタ群へのアクセスがディスティネーションか否かを判定する。レジスタ群へのアクセスがディスティネーションの場合(処理132のYes)、変換部56は、処理134において、レジスタ番号RN2のレジスタRD2をレジスタ番号WPTが示すレジスタRに設定する。一方、レジスタ群へのアクセスがソースの場合(処理132のNo)、変換部56は、処理136において、レジスタ番号RN2のレジスタ(例えば、レジスタRS2、RT2)をレジスタ番号RPTが示すレジスタRに設定する。
In
例えば、処理136では、レジスタ番号RN1のレジスタRS1がレジスタR4、R5のいずれかの場合、変換部56は、レジスタ番号RN2のレジスタRS2を制御レジスタ43のレジスタ番号RPTが示すレジスタR(R4あるいはR5)に設定する。また、例えば、レジスタ番号RN1のレジスタRT1がレジスタR4、R5のいずれかの場合、変換部56は、処理136において、レジスタ番号RN2のレジスタRT2を制御レジスタ43のレジスタ番号RPTが示すレジスタR(R4あるいはR5)に設定する。
For example, in the
図12は、図7に示した入力データ抽出部23の概要を示している。図中の網掛け部分は、上述した図5に示した入力データ抽出部22と相違する部分を示している。また、図12の符号%は、剰余演算子を示している。入力データ抽出部23は、FF224、左論理シフト部226、右算術シフト部221、セレクタ222を有している。
FIG. 12 shows an overview of the input
FF224は、例えば、ライトイネーブルWEが“1”のときに、レジスタRから読み出されたデータRDATAを格納する。例えば、ライトイネーブルWEは、読み出したレジスタRに対応する制御レジスタ(制御レジスタ43等)のビット長LNおよびオフセットOFに基づいて生成され、入力データ抽出部23により生成されてもよいし、上述した図7に示した制御部54により生成されてもよい。この実施形態では、ライトイネーブルWEは、ビット長LNを2倍した値とオフセットOFとの加算結果がレジスタRのビット幅(この実施形態では、32)より大きい場合、“1”であり、加算結果が32以下の場合、“0”である。
For example, the
すなわち、FF224には、2つのレジスタRをまたいで格納されているデータを使用する命令が実行される前に、2つのレジスタRをまたいで格納されているデータの一部を含むデータRDATAが格納される。なお、FF224は、ライトイネーブルWEを使用せずに、レジスタRからデータRDATAが読み出される度に、データRDATAを格納してもよい。
In other words, the
左論理シフト部226は、レジスタRのビット幅の2倍のビット幅(この実施形態では、64)のデータを受け、受けたデータをシフト量LSL分だけ左論理シフトする。なお、左論理シフト部226が受ける64ビット幅のデータは、上位32ビット側がレジスタRから読み出されたデータRDATAであり、下位32ビット側がFF224から読み出されたデータである。また、シフト量LSLは、読み出したレジスタRに対応する制御レジスタ(例えば、制御レジスタ43)のビット長LNおよびオフセットOFの加算値を64(レジスタRのビット幅の2倍)から引いた値を被除数とし、被除数を32(レジスタRのビット幅)で割ったときの剰余である。これにより、例えば、演算対象のデータは、64ビット幅のデータの一番左側にシフトされる。
The left logical shift unit 226 receives data having a bit width (64 in this embodiment) that is twice the bit width of the register R, and logically shifts the received data to the left by the shift amount LSL. The 64-bit width data received by the left logical shift unit 226 is the data RDATA read from the register R on the upper 32 bits and the data read from the
右算術シフト部221は、左論理シフト部226の出力データ(64ビット幅のデータ)の上位32ビットのデータを受け、受けたデータを(32ビット幅のデータ)をシフト量ASR分だけ右算術シフトする。なお、シフト量ASRは、読み出したレジスタRに対応する制御レジスタ(例えば、制御レジスタ43)のビット長LNを32(レジスタRのビット幅)から引いた値である。右算術シフト部221により、例えば、演算対象のデータは、32ビット幅のデータの一番右側にシフトされる。
The right
セレクタ222は、選択信号SELに基づいて、データS1、S2の一方をデータIDATAとして上述した図7に示した命令実行部24に出力する。例えば、セレクタ222は、レジスタR4−R9のいずれかからデータRDATAが読み出される場合、データRDATAが読み出されるレジスタRに対応する制御レジスタ43、44、45のイネーブルENが“1”のときに、データS2をデータIDATAとして命令実行部24に出力する。その他の条件では、セレクタ222は、データS1(レジスタRから読み出したデータRDATA)をデータIDATAとして命令実行部24に出力する。
Based on the selection signal SEL, the
例えば、セレクタ222は、レジスタR4−R8以外のレジスタRからデータRDATAが読み出される場合、レジスタRから読み出したデータRDATA(データS1)をデータIDATAとして命令実行部24に出力する。すなわち、この実施形態では、選択信号SELは、例えば、データRDATAが読み出されるレジスタRを示すレジスタ番号RN2と、制御レジスタ43、44、45のイネーブルENとにより生成される。
For example, when the data RDATA is read from the registers R other than the registers R4-R8, the
図13は、図7に示した出力データ生成部29の概要を示している。図中の網掛け部分は、上述した図6に示した出力データ生成部28と相違する部分を示している。図6で説明した左論理シフト部280、FF282、オア回路283およびセレクタ284については、詳細な説明を省略する。出力データ生成部29は、左論理シフト部280、右論理シフト部285、セレクタ286、FF282、オア回路283およびセレクタ284を有している。
FIG. 13 shows an overview of the output
右論理シフト部285は、レジスタRのビット幅の2倍のビット幅(この実施形態では、64)のデータを受け、受けたデータをシフト量LSR分だけ右論理シフトする。なお、右論理シフト部285が受ける64ビット幅のデータは、上位32ビット側が左論理シフト部280の出力データ(32ビット幅のデータ)であり、下位32ビットは、“0”で埋められている。また、シフト量LSRは、演算結果を格納するレジスタRに対応する制御レジスタ(例えば、制御レジスタ43)のビット長LNおよびオフセットOFの加算値を64(レジスタRのビット幅の2倍)から引いた値である。これにより、例えば、演算結果のデータは、演算結果のデータの最下位ビットと32ビット幅のデータにおけるオフセットOFの位置とが一致する位置にシフトされる。
The right
セレクタ286は、選択信号SEL2に基づいて、データS3、S4の一方をFF282に出力する。例えば、セレクタ286は、演算結果を格納するレジスタRに対応する制御レジスタ(制御レジスタ43等)のビット長LNとオフセットOFとの加算結果が32(レジスタRのビット幅)以上の場合、データS3をFF282に出力する。その他の条件(加算結果が32より小さい場合)では、セレクタ286は、データS4をFF282に出力する。ここで、データS3は、右論理シフト部285の出力データ(64ビット幅のデータ)の上位32ビットのデータであり、データS4は、オア回路283の出力データ(32ビット幅のデータ)である。これにより、レジスタRの組(例えば、R4とR5、R6とR7、R8とR9)の両方のレジスタにまたいで演算結果のデータを格納する場合、演算結果の一部をレジスタRの組の一方に格納した際に、演算結果の残りをFF282に格納できる。
The
オア回路283は、右論理シフト部285の出力データ(64ビット幅のデータ)の下位32ビットのデータIN2とFF282から読み出されるデータIN1とのオアの結果をセレクタ284およびセレクタ286に出力する。
The OR
セレクタ284は、選択信号SELに基づいて、データS1、S2の一方をデータODATAとして、レジスタ番号RN2が示すレジスタRに出力する。この実施形態では、選択信号SELは、例えば、データODATAが格納されるレジスタRを示すレジスタ番号RN2と、制御レジスタ43、44、45のイネーブルENとにより生成される。なお、セレクタ284の選択動作は、上述した図12に示したセレクタ222の選択動作において、データRDATAが読み出されるレジスタRをデータODATAが格納されるレジスタRに読み替えることで説明される。
Based on the selection signal SEL, the
図14は、ロード命令とレジスタの状態との関係の一例を示している。なお、図14は、メモリMEMからレジスタR4、R5に9ビット長のデータDSを連続してロードした際のレジスタR4、R5の状態の一例を示している。また、図14(a)は、アドレスadr1のデータをレジスタR4に連続してロードするプログラムの一例を示し、図14(b)は、図14(a)のプログラムが実行された際のレジスタR4、R6の状態を示している。なお、図のメモリMEM、レジスタR4、R5は、右側が下位ビットである。また、この実施形態では、アドレスadr1は自動でインクリメント(例えば、+4)される。 FIG. 14 shows an example of the relationship between the load instruction and the register state. FIG. 14 shows an example of the states of the registers R4 and R5 when the 9-bit data DS is continuously loaded from the memory MEM to the registers R4 and R5. FIG. 14A shows an example of a program for continuously loading the data at the address adr1 into the register R4, and FIG. 14B shows the register R4 when the program of FIG. 14A is executed. , R6 is shown. Note that the right side of the memory MEM and registers R4 and R5 in the figure are the lower bits. In this embodiment, the address adr1 is automatically incremented (for example, +4).
1回目のロード命令(図14(a1))では、プロセッサ11は、メモリMEMのアドレス“0x0000”に格納されているデータDS(データDS0、DS1、DS2、データDS3の下位5ビット)をレジスタR4にロードする(図14(b2))。2回目のロード命令(図14(a2))では、上述した図9−11に示した処理によりロード先のレジスタがレジスタR4からレジスタR5に変換され、プロセッサ11は、アドレス“0x0004”に格納されているデータDSをレジスタR5にロードする(図14(b3))。 In the first load instruction (FIG. 14 (a1)), the processor 11 stores the data DS (the lower 5 bits of the data DS0, DS1, DS2, and data DS3) stored in the address “0x0000” of the memory MEM in the register R4. (Fig. 14 (b2)). In the second load instruction (FIG. 14 (a2)), the load destination register is converted from the register R4 to the register R5 by the processing shown in FIG. 9-11, and the processor 11 is stored in the address “0x0004”. The loaded data DS is loaded into the register R5 (FIG. 14 (b3)).
3回目のロード命令(図14(a3))では、図9−11に示した処理によりロード先のレジスタがレジスタR4に設定され、プロセッサ11は、アドレス“0x0008”に格納されているデータDSをレジスタR4にロードする(図14(b4))。4回目のロード命令(図14(a4))では、上述した図9−11に示した処理によりロード先のレジスタがレジスタR4からレジスタR5に変換され、プロセッサ11は、アドレス“0x000C”に格納されているデータDSをレジスタR5にロードする(図14(b5))。このように、レジスタR4、R5から構成されるレジスタ群にメモリMEMからデータを連続してロードした場合、ロードされたデータは、レジスタR4、R5に交互に格納される。 In the third load instruction (FIG. 14 (a3)), the load destination register is set in the register R4 by the processing shown in FIG. 9-11, and the processor 11 stores the data DS stored in the address “0x0008”. The data is loaded into the register R4 (FIG. 14 (b4)). In the fourth load instruction (FIG. 14 (a4)), the load destination register is converted from the register R4 to the register R5 by the processing shown in FIGS. 9-11, and the processor 11 is stored in the address “0x000C”. The loaded data DS is loaded into the register R5 (FIG. 14 (b5)). As described above, when data is continuously loaded from the memory MEM into the register group including the registers R4 and R5, the loaded data is alternately stored in the registers R4 and R5.
図15は、レジスタR4−R9に格納されるデータの一例を示す図である。なお、図15(a)は、連続する9ビット長の複数のデータDSと連続する9ビット長の複数のデータDTとをそれぞれ加算するプログラムの一例を示している。また、図15(b)は、図15(a)のプログラムのループが2回繰り返された際のレジスタR4−R9の状態の一例を示している。なお、図4(b)の網掛け部分は、有効なデータが格納されていない領域を示している。図のレジスタR4−R9は、右側が下位ビットである。図15(a)のアドレスadr1、adr2、adr3は、メモリ(例えば、上述した図14に示したメモリMEM)のアドレスであり、自動でインクリメント(例えば、+4)される。 FIG. 15 is a diagram illustrating an example of data stored in the registers R4-R9. FIG. 15A shows an example of a program for adding a plurality of continuous 9-bit data DS and a plurality of continuous 9-bit data DT. FIG. 15B shows an example of the state of the registers R4-R9 when the program loop of FIG. 15A is repeated twice. The shaded portion in FIG. 4B indicates an area where no valid data is stored. In the illustrated registers R4 to R9, the right side is the lower bits. Addresses adr1, adr2, and adr3 in FIG. 15A are addresses of a memory (for example, the memory MEM shown in FIG. 14 described above), and are automatically incremented (for example, +4).
命令BREQ_fullは、アドレスA(例えば、アドレスA4、A5)に割り当てられた制御レジスタ(例えば、制御レジスタ43、44)のフルFULが“1”のときに、指定されたラベル(例えば、ラベルLable1)に分岐する命令である。また、命令BREQ_empは、アドレスA(例えば、アドレスA8)に割り当てられた制御レジスタ(例えば、制御レジスタ45)のエンプティEMPが“1”のときに、指定されたラベル(例えば、ラベルLable3)に分岐する命令である。 The instruction BREQ_full is executed when the full FUL of the control register (for example, the control registers 43 and 44) assigned to the address A (for example, the addresses A4 and A5) is “1” (for example, the label Label1). Is an instruction to branch to. The instruction BREQ_emp branches to a specified label (for example, label Label3) when the empty EMP of the control register (for example, control register 45) assigned to the address A (for example, address A8) is “1”. It is an instruction to do.
すなわち、図15(a)のプログラムでは、プロセッサ11は、レジスタR4、R5の少なくとも一方に有効なデータが格納されていない場合、有効なデータが格納されていないレジスタR(R4、R5の一方)に、アドレスadr1に格納されているデータDSをロードする(図15(a2)、(a3))。次に、プロセッサ11は、レジスタR6、R7の少なくとも一方に有効なデータが格納されていない場合、有効なデータが格納されていないレジスタR(R6、R7の一方)に、アドレスadr2に格納されているデータDTをロードする(図15(a5)、(a6))。 That is, in the program shown in FIG. 15A, when the processor 11 does not store valid data in at least one of the registers R4 and R5, the processor R does not store valid data (one of R4 and R5). Then, the data DS stored at the address adr1 is loaded (FIGS. 15A2 and 15A3). Next, when valid data is not stored in at least one of the registers R6 and R7, the processor 11 stores the valid data in the register R (one of R6 and R7) at the address adr2. Data DT is loaded (FIG. 15 (a5), (a6)).
そして、プロセッサ11は、レジスタR4、R5に格納されている複数のデータDSの1つと、レジスタR6、R7に格納されている複数のデータDTの1つとを加算し、加算結果のデータDDを、レジスタR8、R9のいずれかに格納する(図15(a8))。さらに、プロセッサ11は、図15(a8)と同様の加算処理を2回実施する(図15(a9)、(a10))。そして、プロセッサ11は、レジスタR8、R9の少なくとも一方に有効なデータが格納されている場合、レジスタR8、R9のいずれかに格納されているデータDDを、アドレスadr3にストアする(図15(a11)、(a12))。なお、プロセッサ11の動作は、レジスタR8、R9のいずれにも有効なデータが格納されていない場合、ループ処理の先頭に戻る(図15(a11)、(a13)、(a14))。 Then, the processor 11 adds one of the plurality of data DS stored in the registers R4 and R5 and one of the plurality of data DT stored in the registers R6 and R7, and adds the data DD as a result of the addition. It is stored in either one of the registers R8 and R9 (FIG. 15 (a8)). Furthermore, the processor 11 performs the same addition processing twice as in FIG. 15A8 (FIGS. 15A9 and 15A10). When valid data is stored in at least one of the registers R8 and R9, the processor 11 stores the data DD stored in either the register R8 or R9 at the address adr3 (FIG. 15 (a11 ), (A12)). Note that the operation of the processor 11 returns to the top of the loop processing when valid data is not stored in either of the registers R8 and R9 (FIGS. 15 (a11), (a13), and (a14)).
図15(a)のプログラムのループが2回繰り返された場合、9ビット長の複数のデータDS(例えば、データDS0−DS6)が、レジスタR4、R5に格納され、9ビット長の複数のデータDT(例えば、データDT0−DT6)がレジスタR6、R7に格納される(図15(b1)。そして、複数のデータDS(例えば、データDS0−DS6)と、複数のデータDT(例えば、データDT0−DT6)とをそれぞれ加算した結果である10ビット長の複数のデータDD(例えば、データDD0−DD6)が、レジスタR8、R9に格納される(図15(b2))。 When the program loop of FIG. 15A is repeated twice, a plurality of 9-bit data DS (for example, data DS0 to DS6) are stored in the registers R4 and R5, and a plurality of 9-bit data DT (for example, data DT0 to DT6) is stored in the registers R6 and R7 (FIG. 15 (b1)), and a plurality of data DS (for example, data DS0 to DS6) and a plurality of data DT (for example, data DT0). -DT6) and a plurality of 10-bit data DD (for example, data DD0 to DD6) are stored in the registers R8 and R9 (FIG. 15 (b2)).
このように、この実施形態では、2つのレジスタRをまたいで格納されたデータを扱え、2つのレジスタRをまたいでデータを格納できる。これにより、この実施形態では、レジスタRおよびメモリ(例えば、図14に示したメモリMEM)をさらに有効に使用できる。また、この実施形態では、上述した図7に示したALU25がシフト演算等を実行する必要がないため、連続するデータの演算を高速に処理できる。
As described above, in this embodiment, data stored across two registers R can be handled, and data can be stored across two registers R. Thereby, in this embodiment, the register R and the memory (for example, the memory MEM shown in FIG. 14) can be used more effectively. Further, in this embodiment, since the
図16、図17は、図12に示した入力データ抽出部23の動作の一例を示している。なお、図16、図17は、図15に示したプログラムが実施されたときの入力データ抽出部23の一方の動作の一例を示している。入力データ抽出部23の他方の動作は、データDS、レジスタRS2、レジスタR4、R5および制御レジスタ43を、データDT、レジスタRT2、レジスタR6、R7および制御レジスタ44にそれぞれ読み替えることで説明される。
16 and 17 show an example of the operation of the input
図中の網掛け部分は、有効なデータでない部分を示し、符号SEは、符号拡張を示している。なお、図の例では、右側が下位ビットである。また、図中の破線で囲んだ部分は、命令が実行される際の制御レジスタ43の値(OF、RPT、WPT、EMPおよびFULの値)、レジスタ番号RN2のレジスタRS2が示すレジスタR、ライトイネーブルWEの値、シフト量LSL、ASRの値を示している。図中の括弧内のレジスタ番号RPT、WPT等は、命令が実行される際に更新された制御レジスタ43の値等を示している。
The shaded portion in the figure indicates a portion that is not valid data, and the symbol SE indicates code extension. In the example shown in the figure, the right side is the lower bit. Further, the portion surrounded by a broken line in the figure indicates the value of the control register 43 (the values of OF, RPT, WPT, EMP, and FUL) when the instruction is executed, the register R indicated by the register RS2 of the register number RN2, and the write The values of the enable WE and the shift amounts LSL and ASR are shown. The register numbers RPT, WPT, etc. in parentheses in the figure indicate the value of the
なお、制御レジスタ43のイネーブルEN、ビット長LN、オフセットOF、レジスタ番号RPT、WPT、エンプティEMP、フルFULの初期値は、図15に示したプログラムが実施される前に、それぞれ“1”、“9”、“0”、“レジスタR4を示す値(以下、単にR4とも称する)”、“R4”、“0”、“1”に設定されている。そして、レジスタ番号WPT、エンプティEMPは、アドレスadr1のデータをレジスタR4にロードした際(図15(a3))に、上述した図9に示した動作により、“R4”、“1”から“レジスタR5を示す値(以下、単にR5とも称する)”、“0”にそれぞれ更新されている。
Note that the initial values of the enable EN, bit length LN, offset OF, register number RPT, WPT, empty EMP, and full FUL of the
図16に示すように、先ず、1回目の加算命令(図15(a8))では、入力データ抽出部23は、レジスタR4(レジスタ番号RPTが示すレジスタR)に格納されているRDATAを読み出し、データDS0を抽出する(図16(a))。例えば、左論理シフト部226は、64ビット幅のデータ(上位32ビット側がデータRDATA、下位32ビット側がFF224のデータ)を受け(図16(a1))、受けたデータをシフト量LSL(23ビット)分だけ左論理シフトする。そして、右算術シフト部221は、左論理シフト部226の出力データの上位32ビットのデータを受け(図16(a2))、受けたデータをシフト量ASR(23ビット)分だけ右算術シフトする。なお、オフセットOFは、上述した図9、図10に示した動作により、“0”から“9”に更新される。
As shown in FIG. 16, first, in the first addition instruction (FIG. 15 (a8)), the input
2回目の加算命令(図15(a9))では、入力データ抽出部23は、レジスタR4に格納されているRDATAを読み出し、オフセットOF(OF=9)に基づいて、データDS1を抽出する(図16(b))。入力データ抽出部23の動作は、左論理シフト部226のシフト量LSL(14ビット)を除いて、1回目の加算命令のとき(図16(a))と同じである。なお、オフセットOFは、図9、図10に示した動作により、“9”から“18”に更新される。
In the second addition instruction (FIG. 15 (a9)), the input
3回目の加算命令(図15(a10))では、入力データ抽出部23は、レジスタR4に格納されているRDATAを読み出し、オフセットOF(OF=18)に基づいて、データDS2を抽出する(図16(b))。入力データ抽出部23の動作は、FF224へデータRDATAを書き込むことと左論理シフト部226のシフト量LSL(5ビット)とを除いて、1回目の加算命令のとき(図16(a))と同じである。例えば、ビット長LNを2倍した値とオフセットOFとの加算結果が32より大きい(WE=1)ため、データDS3aを含むデータRDATAは、FF224に格納される。なお、データDS3aは、データDS3の下位5ビットのデータである。
In the third addition instruction (FIG. 15 (a10)), the input
また、オフセットOF、レジスタ番号RPT、エンプティEMPは、図9、図10に示した動作により、“18”、“R4”、“0”から“27”、“R5”、“1”にそれぞれ更新される。エンプティEMPが“1”に更新されたため、2回目のループでは、プロセッサ11は、レジスタ番号WPTで示されるレジスタR5に、アドレスadr1に格納されているデータDSをロードする(図15(a2)、(a3))。この際、レジスタ番号WPT、エンプティEMPは、上述した図9に示した動作により、“R5”、“1”から“R4”、“0”にそれぞれ更新される。 Also, the offset OF, register number RPT, and empty EMP are updated from “18”, “R4”, and “0” to “27”, “R5”, and “1”, respectively, by the operations shown in FIGS. Is done. Since the empty EMP has been updated to “1”, in the second loop, the processor 11 loads the data DS stored in the address adr1 into the register R5 indicated by the register number WPT (FIG. 15 (a2)). (A3)). At this time, the register number WPT and empty EMP are updated from “R5” and “1” to “R4” and “0”, respectively, by the operation shown in FIG.
図17に示すように、2回目のループ中の1回目の加算命令(図15(a8))では、入力データ抽出部23は、レジスタR5(レジスタ番号RPTが示すレジスタR)に格納されているRDATAを読み出し、データDS3を抽出する(図17(d))。例えば、左論理シフト部226は、64ビット幅のデータ(上位32ビット側がデータRDATA、下位32ビット側がFF224のデータ)を受け(図17(d1))、受けたデータをシフト量LSL(28ビット)分だけ左論理シフトする。データRDATAの下位4ビットはデータDS3bであり、FF224のデータの上位5ビットは、データDS3aである。なお、データDS3bは、データDS3の上位4ビットのデータである。
As shown in FIG. 17, in the first addition instruction (FIG. 15 (a8)) in the second loop, the input
すなわち、左論理シフト部226が受ける64ビット幅のデータは、データDS3を含んで構成される。そして、右算術シフト部221は、左論理シフト部226の出力データの上位32ビットのデータを受け(図17(d2))、受けたデータをシフト量ASR(23ビット)分だけ右算術シフトする。このように、入力データ抽出部23は、レジスタR4、R5をまたいで格納されたデータDS3を抽出することができる。また、この場合、例えば、ビット長LNを2倍した値とオフセットOFとの加算結果が32より大きい(WE=1)ため、レジスタR5から読み出したデータRDATAは、FF224に格納される。なお、オフセットOFは、上述した図9、図10に示した動作により、“27”から“4”に更新される。
That is, the 64-bit width data received by the left logical shift unit 226 includes the data DS3. The right
2回目のループ中の2回目の加算命令(図15(a9))では、入力データ抽出部23は、レジスタR5に格納されているRDATAを読み出し、オフセットOF(OF=4)に基づいて、データDS4を抽出する(図16(e))。入力データ抽出部23の動作は、FF224へデータRDATAを書き込まないことと左論理シフト部226のシフト量LSL(19ビット)とを除いて、2回目のループ中の1回目の加算命令のとき(図17(d))と同じである。なお、オフセットOFは、図9、図10に示した動作により、“4”から“13”に更新される。
In the second addition instruction (FIG. 15 (a9)) in the second loop, the input
2回目のループ中の3回目の加算命令(図15(a10))では、入力データ抽出部23は、レジスタR5に格納されているRDATAを読み出し、オフセットOF(OF=13)に基づいて、データDS5を抽出する(図17(f))。入力データ抽出部23の動作は、左論理シフト部226のシフト量LSL(10ビット)を除いて、2回目のループ中の2回目の加算命令のとき(図17(e))と同じである。このように、この実施形態では、連続する任意のビット長のデータを順次読み出すことができる。
In the third addition instruction (FIG. 15 (a10)) in the second loop, the input
図18、図19、図20は、図13に示した出力データ生成部29の動作の一例を示している。なお、図18−20は、図15に示したプログラムが実施されたときの出力データ生成部29の動作の一例を示している。図の例では、右側が下位ビットであり、符号SEは、符号拡張を示している。また、図中の破線で囲んだ部分は、命令が実行される際の制御レジスタ45の値(OF、RPT、WPT、EMPおよびFULの値)、レジスタ番号RN2のレジスタRD2が示すレジスタR、シフト量LSL、LSRの値、上述した図13に示したセレクタ286で選択されるデータS(S3、S4)を示している。図中の括弧内のレジスタ番号RPT、WPT等は、命令が実行される際に更新された制御レジスタ45の値等を示している。
18, 19, and 20 show an example of the operation of the output
制御レジスタ45のイネーブルEN、ビット長LN、オフセットOF、レジスタ番号RPT、WPT、エンプティEMP、フルFULの初期値は、図15に示したプログラムが実施される前に、それぞれ“1”、“10”、“0”、“レジスタR8を示す値(以下、単にR8とも称する)”、“R8”、“0”、“1”に設定されている。また、FF282には、初期値として“0”が格納されている。
The initial values of the control register 45 enable EN, bit length LN, offset OF, register numbers RPT, WPT, empty EMP, and full FUL are “1” and “10”, respectively, before the program shown in FIG. 15 is executed. "0", "value indicating the register R8 (hereinafter also simply referred to as R8)", "R8", "0", "1". The
図18に示すように、1回目の加算命令(図15(a8))では、出力データ生成部29は、上述した図1に示した命令実行部24からデータ(例えば、ALU25の演算結果)EDATAを受け、データEDATA内の有効データDD0を、レジスタR8(レジスタ番号WPTが示すレジスタR)に格納する(図18(a))。例えば、左論理シフト部280は、データEDATAを受け(図18(a1))、データDD0をシフト量LSL(22ビット)分だけ左論理シフトする。そして、右論理シフト部285は、64ビット幅のデータ(上位32ビット側が左論理シフト部280の出力、下位32ビット側が“0”で埋められたデータ)を受け(図18(a2))、受けたデータをシフト量LSR(54ビット)分だけ右論理シフトする(図18(a3))。
As shown in FIG. 18, in the first addition instruction (FIG. 15 (a8)), the output
オア回路283は、右論理シフト部285の出力データ(64ビット幅のデータ)の下位32ビットのデータIN2とFF282から読み出されるデータIN1とを受け(図18(a4))、データIN1、IN2のオアの結果をセレクタ284およびセレクタ286に出力する(図18(a5))。
The OR
セレクタ286は、右論理シフト部285の出力データの上位32ビットのデータS3とオア回路283の出力データS4(S2)とを受け、オア回路283の出力データS4(S2)をFF282に格納する(図18(a6))。例えば、ビット長LNとオフセットOFとの加算結果が32より小さいため、データS4がFF282に出力される。また、セレクタ284は、データDD0を含むデータS2をデータODATAとして、レジスタR8に出力する(図18(a6))。なお、オフセットOFは、上述した図9、図10に示した動作により、“0”から“10”に更新される。
The
2回目の加算命令(図15(a9))では、出力データ生成部29は、命令実行部24からデータEDATAを受け、データEDATA内のデータDD1をオフセットOF(OF=10)に基づいてレジスタR8に格納する(図18(b))。出力データ生成部29の動作は、右論理シフト部285のシフト量LSR(44ビット)を除いて、1回目の加算命令のとき(図18(a))と同じである。
In the second addition instruction (FIG. 15 (a9)), the output
ここで、FF282から読み出されるデータIN1は、1回目の加算命令の際のオア回路283の出力データであるため、データDD0を含むデータである(図18(b4))。また、右論理シフト部285の出力データの下位32ビットのデータIN2は、データDD1を含むデータである(図18(b4))。このため、オア回路283の出力データS2は、データDD0、DD1を含むデータである(図18(b5))。すなわち、レジスタR8には、データDD0、DD1を含むデータODATAが格納される(図18(b6))。なお、オフセットOFは、図9、図10に示した動作により、“10”から“20”に更新される。
Here, since the data IN1 read from the
図19に示すように、3回目の加算命令(図15(a10))では、出力データ生成部29は、命令実行部24からデータEDATAを受け、データEDATA内のデータDD2をオフセットOF(OF=20)に基づいてレジスタR8に格納する(図19(c))。出力データ生成部29の動作は、右論理シフト部285のシフト量LSR(34ビット)を除いて、1回目の加算命令のとき(図18(a))と同じである。なお、FF282から読み出されるデータIN1がデータDD0、DD1を含むデータであるため(図19(c4))、オア回路283の出力データS2およびデータODATAは、データDD0、DD1、DD2を含むデータである(図19(c5)、(c6))。また、オフセットOFは、図9、図10に示した動作により、“20”から“30”に更新される。
As shown in FIG. 19, in the third addition instruction (FIG. 15 (a10)), the output
2回目のループ中の1回目の加算命令(図15(a8))では、出力データ生成部29は、命令実行部24からデータEDATAを受け、データEDATA内のデータDD3aをオフセットOF(OF=30)に基づいてレジスタR8に格納し、データEDATA内のデータDD3bをFF282に格納する(図19(d))。なお、データDD3aは、データDD3の下位2ビットのデータであり、データDD3bは、データDD3の上位8ビットのデータである。
In the first addition instruction (FIG. 15 (a8)) in the second loop, the output
出力データ生成部29の動作は、セレクタ286の動作と右論理シフト部285のシフト量LSR(34ビット)とを除いて、1回目の加算命令のとき(図18(a))と同じである。なお、FF282から読み出されるデータIN1は、データDD0、DD1、DD2を含むデータであり、右論理シフト部285の出力データの下位32ビットのデータIN2は、データDD3aを含むデータである(図19(d4))。このため、オア回路283の出力データS2およびデータODATAは、データDD0、DD1、DD2、DD3aを含むデータである(図19(d5)、(d6))。
The operation of the output
また、セレクタ286は、右論理シフト部285の出力データの上位32ビットのデータS3とオア回路283の出力データS4(S2)とを受け、データDD3bを含むデータS3をFF282に格納する(図18(d3)、(d6))。例えば、ビット長LNとオフセットOFとの加算結果が32以上であるため、データS3がFF282に出力される。なお、オフセットOF、レジスタ番号WPT、エンプティEMPは、図9、図10に示した動作により、“30”、“R8”、“1”から“8”、“レジスタR9を示す値(以下、単にR9とも称する)”、“0”にそれぞれ更新される。
The
図20に示すように、2回目のループ中の2回目の加算命令(図15(a9))では、出力データ生成部29は、命令実行部24からデータEDATAを受け、データEDATA内のデータDD4をオフセットOF(OF=8)に基づいてレジスタR9(レジスタ番号WPTが示すレジスタR)に格納する(図20(e))。出力データ生成部29の動作は、データODATAを格納するレジスタR9と右論理シフト部285のシフト量LSR(46ビット)とを除いて、1回目の加算命令のとき(図18(a))と同じである。なお、オフセットOFは、図9、図10に示した動作により、“8”から“18”に更新される。
As shown in FIG. 20, in the second addition instruction (FIG. 15 (a9)) in the second loop, the output
ここで、FF282から読み出されるデータIN1は、データDD3b(レジスタR8に格納されたデータDD3aを除くデータDD3)を含むデータであり、右論理シフト部285の出力データの下位32ビットのデータIN2は、データDD4を含むデータである(図20(e4))。このため、オア回路283の出力データS2およびデータODATAは、データDD3b、DD4を含むデータである(図20(e5)、(e6))。このように、この実施形態では、連続する任意のビット長(例えば、10ビット)のデータDDのデータDD3を2つのレジスタR8、R9にまたいで格納することができる。
Here, the data IN1 read from the
2回目のループ中の3回目の加算命令(図15(a10))では、出力データ生成部29は、命令実行部24からデータEDATAを受け、データEDATA内のデータDD5をオフセットOF(OF=18)に基づいてレジスタR9に格納する(図20(f))。出力データ生成部29の動作は、右論理シフト部285のシフト量LSR(36ビット)を除いて、2回目のループ中の2回目の加算命令のとき(図20(e))と同じである。
In the third addition instruction in the second loop (FIG. 15 (a10)), the output
なお、FF282から読み出されるデータIN1は、データDD3b、DD4を含むデータであり、右論理シフト部285の出力データの下位32ビットのデータIN2は、データDD5を含むデータである(図20(f4))。このため、オア回路283の出力データS2およびデータODATAは、データDD3b、DD4、DD5を含むデータである(図20(f5)、(f6))。また、オフセットOFは、図9、図10に示した動作により、“18”から“28”に更新される。
The data IN1 read from the
2回目のループでは、1回目の加算命令の際に、エンプティEMPが“0”に更新されたため、プロセッサ11は、レジスタ番号RPTで示されるレジスタR8のデータDD0、DD1、DD2、DD3aを、アドレスadr3にストアする(図15(a11)、(a12))。この際、レジスタ番号RPT、エンプティEMPは、上述した図9に示した動作により、“R8”、“0”から“R9”、“1”にそれぞれ更新される。 In the second loop, because empty EMP is updated to “0” at the time of the first addition instruction, the processor 11 addresses the data DD0, DD1, DD2, DD3a in the register R8 indicated by the register number RPT. Store in adr3 (FIG. 15 (a11), (a12)). At this time, the register number RPT and empty EMP are respectively updated from “R8” and “0” to “R9” and “1” by the operation shown in FIG.
以上、この実施形態においても、上述した図1−図6で説明した実施形態と同様の効果を得ることができる。さらに、この実施形態では、2つのレジスタRをまたいで格納されたデータを扱え、かつ、2つのレジスタRをまたいでデータを格納できる。この結果、この実施形態では、レジスタRをさらに有効に使用できる。また、この実施形態では、レジスタ番号RN2を上述した図9−図11に示した動作により変化させているため、2つのレジスタから構成されるレジスタ群(例えば、R4とR5、R6とR7、R8とR9)をFIFO(First-In First-Out)のように制御できる。さらに、この実施形態では、エンプティEMPおよびフルFULを利用することにより、条件実行命令(ロード命令、ストア命令等)の実行を制御できる。 As described above, also in this embodiment, the same effect as that of the embodiment described with reference to FIGS. 1 to 6 can be obtained. Furthermore, in this embodiment, data stored across two registers R can be handled, and data can be stored across two registers R. As a result, in this embodiment, the register R can be used more effectively. Further, in this embodiment, the register number RN2 is changed by the operation shown in FIGS. 9 to 11 described above, so that a register group composed of two registers (for example, R4 and R5, R6 and R7, R8). And R9) can be controlled like FIFO (First-In First-Out). Furthermore, in this embodiment, execution of conditional execution instructions (load instruction, store instruction, etc.) can be controlled by using empty EMP and full FUL.
なお、上述した実施形態では、本発明を、32ビットのプロセッサ10、11に適用する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、本発明を、64ビットプロセッサに適用してもよい。この場合、例えば、レジスタファイル30は、64ビット幅の汎用レジスタR(R0−R9)を有する。また、本発明を、例えば、同時に複数の命令、データを処理可能なプロセッサ(SIMD(Single Instruction Multiple Data)プロセッサ、スーパースカラープロセッサ等)に適用してもよい。この場合にも、上述した実施形態と同様の効果を得ることができる。
In the above-described embodiment, the example in which the present invention is applied to the 32-
上述した実施形態では、入力データ抽出部22、23、命令実行部24、出力データ生成部28、29が単サイクルで動作する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、入力データ抽出部22、23、命令実行部24、出力データ生成部28、29は、パイプラインステージを分割し、マルチサイクルで動作してもよい。すなわち、入力データ抽出部22、23、命令実行部24、出力データ生成部28、29を、パイプライン処理で動作する構成にしてもよい。この場合にも、上述した実施形態と同様の効果を得ることができる。
In the above-described embodiment, the example in which the input
上述した図7−図20で説明した実施形態では、レジスタR4−R9がレジスタ群として使用される例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、レジスタR4−R9は、レジスタ群として使用されない場合、上述した図4に示したレジスタR4、R6、R8のように使用されてもよい。この場合、例えば、制御レジスタ43、44、45のイネーブルENを2ビットで構成することにより、レジスタR4−R9の使用の仕方を制御できる。例えば、レジスタR4、R5は、イネーブルENが“01”のときに、図4に示したレジスタR4、図1に示したレジスタR0のようにそれぞれ使用され、イネーブルENが“10”のときに、図1に示したレジスタR0、図4に示したレジスタR4のようにそれぞれ使用される。また、例えば、レジスタR4、R5は、イネーブルENが“11”のときに、上述した図12に示したレジスタR4、R5のように使用され、イネーブルENが“00”のときに、図1に示したレジスタR0のように使用される。この場合にも、上述した実施形態と同様の効果を得ることができる。 In the above-described embodiments illustrated in FIGS. 7 to 20, the example in which the registers R <b> 4 to R <b> 9 are used as a register group has been described. The present invention is not limited to such an embodiment. For example, when the registers R4-R9 are not used as a register group, they may be used like the registers R4, R6, R8 shown in FIG. In this case, for example, the use of the registers R4-R9 can be controlled by configuring the enable EN of the control registers 43, 44, 45 with 2 bits. For example, the registers R4 and R5 are respectively used as the register R4 shown in FIG. 4 and the register R0 shown in FIG. 1 when the enable EN is “01”, and when the enable EN is “10”. These are used like the register R0 shown in FIG. 1 and the register R4 shown in FIG. Further, for example, the registers R4 and R5 are used like the registers R4 and R5 shown in FIG. 12 when the enable EN is “11”, and when the enable EN is “00”, Used as shown in register R0. Also in this case, the same effect as the above-described embodiment can be obtained.
上述した図7−図20で説明した実施形態では、制御レジスタ43、44、45がエンプティEMPおよびフルFULを有する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、制御レジスタ43、44、45は、エンプティEMPおよびフルFULが省かれて構成されてもよい。この場合にも、条件実行命令の制御を除いて、上述した実施形態と同様の効果を得ることができる。さらに、制御レジスタ43、44、45は、レジスタ番号WPT、RPT、エンプティEMPおよびフルFULが省かれて構成されてもよい。この場合にも、FIFOのように制御することと条件実行命令の制御とを除いて、上述した実施形態と同様の効果を得ることができる。 In the embodiment described with reference to FIGS. 7 to 20 described above, the example in which the control registers 43, 44, and 45 have empty EMP and full FUL has been described. The present invention is not limited to such an embodiment. For example, the control registers 43, 44, and 45 may be configured by omitting empty EMP and full FUL. Also in this case, the same effect as that of the above-described embodiment can be obtained except for the control of the conditional execution instruction. Further, the control registers 43, 44, 45 may be configured by omitting the register numbers WPT, RPT, empty EMP, and full FUL. Also in this case, the same effects as those of the above-described embodiment can be obtained except for control like a FIFO and control of a conditional execution instruction.
以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。 As mentioned above, although this invention was demonstrated in detail, said embodiment and its modification are only examples of this invention, and this invention is not limited to this. Obviously, modifications can be made without departing from the scope of the present invention.
10、11‥プロセッサ;20、21‥実行ユニット;22、23‥入力データ抽出部;24‥命令実行部;25‥ALU;26‥ロード/ストアユニット;28、29‥出力データ生成部;30‥レジスタファイル;40−45‥制御レジスタ;50、54‥制御部
DESCRIPTION OF
Claims (7)
データが格納される複数の第1レジスタと、
前記第1レジスタ毎に対応して設けられ、前記第1レジスタのアクセス対象のビット位置を示すオフセット情報とデータのビット長を示す長さ情報とを含む制御レジスタと、
複数のデータを含む入力ビット列が格納された前記第1レジスタから前記入力ビット列を読み出し、前記入力ビット列が読み出される前記第1レジスタに対応する前記制御レジスタの前記オフセット情報および前記長さ情報に基づいて、読み出した前記入力ビット列の前記複数のデータから演算対象のデータを抽出し、抽出した前記演算対象のデータを前記演算部のビット幅に拡張して前記演算部に入力する入力データ抽出部と、
前記演算対象のデータが抽出される前記第1レジスタに対応する前記制御レジスタに対して、前記演算対象のデータが抽出される度に前記オフセット情報を前記長さ情報に基づいて更新する制御部と
を備えていることを特徴とするプロセッサ。 An arithmetic unit that performs an operation on the input data;
A plurality of first registers for storing data;
A control register provided for each of the first registers, including offset information indicating a bit position to be accessed by the first register and length information indicating a bit length of data;
Based on the offset information and the length information of the control register corresponding to the first register from which the input bit string is read out from the first register in which the input bit string including a plurality of data is stored. Extracting an operation target data from the plurality of pieces of data of the read input bit string, extending the extracted operation target data to a bit width of the operation unit, and inputting the input data to the operation unit ;
A controller that updates the offset information based on the length information each time the calculation target data is extracted, with respect to the control register corresponding to the first register from which the calculation target data is extracted; A processor comprising:
前記演算部の演算結果のデータを含む出力ビット列が格納される前記第1レジスタに対応する前記制御レジスタの前記オフセット情報および前記長さ情報に基づく配置位置に、前記演算部の演算結果のデータが位置する出力ビット列を生成する出力データ生成部を備え、
前記制御部は、前記演算部の演算結果のデータを含む前記出力ビット列が格納される前記第1レジスタに対応する前記制御レジスタに対しては、前記演算部の演算結果のデータが格納される度に前記オフセット情報を前記長さ情報に基づいて更新する
ことを特徴とするプロセッサ。 The processor of claim 1, wherein
Said offset information and based rather positions on the length information of the control registers corresponding to the first register having an output bit string that contains the data of the operation result of the arithmetic unit is stored, the calculation result of the arithmetic unit An output data generation unit for generating an output bit string in which data is located ;
The control unit stores the calculation result data of the calculation unit for the control register corresponding to the first register in which the output bit string including the calculation result data of the calculation unit is stored. And updating the offset information based on the length information .
前記出力ビット列が前記第1レジスタに格納される度に、前記出力ビット列が格納される第1バッファを備え、
前記出力データ生成部は、前記第1バッファから読み出されたデータの前記配置位置に、前記演算結果のデータを配置することにより、前記第1レジスタおよび前記第1バッファに格納する前記出力ビット列を生成することを特徴とするプロセッサ。 The processor of claim 2, wherein
A first buffer for storing the output bit string each time the output bit string is stored in the first register;
The output data generation unit arranges the output bit string to be stored in the first register and the first buffer by arranging the operation result data at the arrangement position of the data read from the first buffer. A processor characterized by generating.
前記制御レジスタの前記オフセット情報および前記長さ情報は、複数の前記制御レジスタで互いに独立していることを特徴とするプロセッサ。 The processor according to any one of claims 1 to 3 ,
The processor according to claim 1, wherein the offset information and the length information of the control register are independent of each other in the plurality of control registers .
データが格納される複数の第1レジスタと、
2つの前記第1レジスタにより構成される第1レジスタ群毎に対応して設けられ、前記第1レジスタ群のうちのアクセスされる前記第1レジスタを示すレジスタ情報と、前記第1レジスタのアクセス対象のビット位置を示すオフセット情報とを含む制御レジスタと、
演算対象のデータを含む入力ビット列が格納された前記第1レジスタ群から前記入力ビット列を読み出し、前記入力ビット列が格納された前記第1レジスタ群に対応する前記制御レジスタの前記オフセット情報に基づいて、読み出した前記入力ビット列から前記演算対象のデータを抽出し、抽出した前記演算対象のデータを前記演算部のビット幅に拡張する入力データ抽出部と、
前記演算部の演算結果のデータが格納される前記第1レジスタ群に対応する前記制御レジスタの前記オフセット情報に基づいて配置位置を算出し、前記配置位置に前記演算結果のデータが位置する出力ビット列を生成する出力データ生成部と、
前記第1レジスタ群へのアクセスに応じて、前記制御レジスタの前記オフセット情報を更新する制御部と、
前記演算結果のデータの少なくとも一部が格納される第1バッファと
前記入力データ抽出部に読み出された前記入力ビット列が格納される第2バッファとを備え、
前記入力データ抽出部は、前記演算対象のデータが前記第1レジスタ群の2つの前記第1レジスタにまたいで格納されている場合、前記第2バッファを用いて、2つの前記第1レジスタから前記演算対象のデータを読み出し、
前記出力データ生成部は、前記演算結果のデータが前記第1レジスタ群の2つの前記第1レジスタにまたいで格納される場合、前記第1バッファを用いて、一方の前記第1レジスタに格納される前記出力ビット列に、前記演算結果のデータの一部である部分データを配置し、他方の前記第1レジスタに格納される前記出力ビット列に、前記部分データを除く前記演算結果のデータを配置することを特徴とするプロセッサ。 An arithmetic unit that performs an operation on the input data;
A plurality of first registers for storing data;
Register information indicating the first register to be accessed in the first register group, and an access target of the first register, provided corresponding to each first register group configured by the two first registers. A control register including offset information indicating a bit position of
Based on the offset information of the control register corresponding to the first register group in which the input bit string is stored, reading the input bit string from the first register group in which the input bit string including the operation target data is stored, An input data extraction unit that extracts the calculation target data from the read input bit string and extends the extracted calculation target data to the bit width of the calculation unit;
An output bit string in which an arrangement position is calculated based on the offset information of the control register corresponding to the first register group in which the calculation result data of the calculation unit is stored, and the calculation result data is located at the arrangement position An output data generation unit for generating
A control unit that updates the offset information of the control register in response to access to the first register group;
A first buffer storing at least a part of the data of the operation result;
A second buffer in which the input bit string read by the input data extraction unit is stored;
When the data to be calculated is stored across the two first registers of the first register group, the input data extraction unit uses the second buffer to extract the data from the two first registers. Read the data to be calculated,
The output data generation unit stores the operation result data in one of the first registers using the first buffer when the operation result data is stored across the two first registers of the first register group. The partial data that is part of the operation result data is arranged in the output bit string, and the operation result data excluding the partial data is arranged in the output bit string stored in the other first register. A processor characterized by that.
前記制御部は、前記第1レジスタ群へのアクセスに応じて、前記制御レジスタの前記レジスタ情報および前記オフセット情報を更新することを特徴とするプロセッサ。 The processor of claim 5, wherein
The processor, wherein the control unit updates the register information and the offset information of the control register in response to access to the first register group .
前記制御レジスタは、前記レジスタ情報と、前記オフセット情報と、前記レジスタ群の2つの前記第1レジスタのいずれにも転送すべきデータが格納されていないことを示すエンプティ情報と、前記レジスタ群の2つの前記第1レジスタの両方に転送すべきデータが格納されていることを示すフル情報とを有し、
前記制御部は、前記第1レジスタ群へのアクセスに応じて、前記制御レジスタの前記レジスタ情報、前記オフセット情報、前記エンプティ情報および前記フル情報を更新することを特徴とするプロセッサ。 The processor of claim 6, wherein
The control register includes the register information, the offset information, empty information indicating that data to be transferred is not stored in any of the two first registers of the register group, and 2 of the register group. Full information indicating that data to be transferred is stored in both of the first registers,
The processor updates the register information, the offset information, the empty information, and the full information of the control register in response to access to the first register group .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009007990A JP5375114B2 (en) | 2009-01-16 | 2009-01-16 | Processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009007990A JP5375114B2 (en) | 2009-01-16 | 2009-01-16 | Processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010165245A JP2010165245A (en) | 2010-07-29 |
JP5375114B2 true JP5375114B2 (en) | 2013-12-25 |
Family
ID=42581340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009007990A Expired - Fee Related JP5375114B2 (en) | 2009-01-16 | 2009-01-16 | Processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5375114B2 (en) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63298436A (en) * | 1987-05-28 | 1988-12-06 | Matsushita Electric Ind Co Ltd | Arithmetic logical operation unit |
JPH02204833A (en) * | 1989-02-03 | 1990-08-14 | Hitachi Ltd | Computer system |
JPH02299082A (en) * | 1989-05-12 | 1990-12-11 | Fujitsu Ltd | Processor for processing variable length data |
JP2686011B2 (en) * | 1992-01-27 | 1997-12-08 | 富士通株式会社 | Register controller |
JPH08221248A (en) * | 1995-02-14 | 1996-08-30 | Hitachi Ltd | Micro processor |
JPH11272546A (en) * | 1998-03-23 | 1999-10-08 | Nec Corp | Variable length register device |
JP2002084316A (en) * | 2000-09-08 | 2002-03-22 | Toyo Commun Equip Co Ltd | Variable length packet write and read circuit |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
JP4484630B2 (en) * | 2004-01-29 | 2010-06-16 | パナソニック株式会社 | Variable length decoding apparatus, variable length decoding method and playback system |
JP2005149517A (en) * | 2004-12-06 | 2005-06-09 | Fujitsu Ltd | Product-sum computing element |
-
2009
- 2009-01-16 JP JP2009007990A patent/JP5375114B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010165245A (en) | 2010-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6971220B2 (en) | Equipment and methods for performing splice operations | |
JP6761565B2 (en) | Out-of-order hardware software co-designed How and equipment to implement and maintain a stack of predefined values using stack synchronization instructions in a processor. | |
CN107851013B (en) | Data processing apparatus and method | |
KR102318531B1 (en) | Streaming memory transpose operations | |
JP2007257549A (en) | Semiconductor device | |
CN108319559B (en) | Data processing apparatus and method for controlling vector memory access | |
GB2496934A (en) | Multi-stage register renaming using dependency removal and renaming maps. | |
JP5580404B2 (en) | Semiconductor device | |
KR102332523B1 (en) | Apparatus and method for execution processing | |
JP3983482B2 (en) | PC relative branching with high-speed displacement | |
EP1193594A2 (en) | Register renaming apparatus and processor | |
JP5375114B2 (en) | Processor | |
JP2010117806A (en) | Semiconductor device and data processing method by semiconductor device | |
JP7048612B2 (en) | Vector generation instruction | |
US8560811B2 (en) | Lane crossing instruction selecting operand data bits conveyed from register via direct path and lane crossing path for execution | |
JP4444305B2 (en) | Semiconductor device | |
JP2020527797A (en) | Vector interleaving in data processing equipment | |
JP6378515B2 (en) | VLIW processor | |
JP2002024008A (en) | Data processor and program conversion device | |
JP6347629B2 (en) | Instruction processing method and instruction processing apparatus | |
JP6237241B2 (en) | Processing equipment | |
JP3915019B2 (en) | VLIW processor, program generation device, and recording medium | |
JP5076826B2 (en) | Data processing device | |
JP7141401B2 (en) | processor and information processing system | |
JP2009054032A (en) | Parallel processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111006 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130108 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130307 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130430 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130627 |
|
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: 20130827 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130909 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |