JP5375114B2 - Processor - Google Patents

Processor Download PDF

Info

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
Application number
JP2009007990A
Other languages
Japanese (ja)
Other versions
JP2010165245A (en
Inventor
雅彦 都市
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009007990A priority Critical patent/JP5375114B2/en
Publication of JP2010165245A publication Critical patent/JP2010165245A/en
Application granted granted Critical
Publication of JP5375114B2 publication Critical patent/JP5375114B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To effectively use a register when data of data size which is odd to the bit width of the register continue. <P>SOLUTION: This processor has: an arithmetic part executing calculation to input data; a plurality of first registers storing the data; and an input data extraction part. For example, the input data extraction part reads an input bit string from the first registers storing the input bit string including the data of an arithmetic target. The input data extraction part extracts data of an arithmetic target from the read input bit string based on preset first position information, and extends the extracted data of the arithmetic target to a bit width of the arithmetic part. <P>COPYRIGHT: (C)2010,JPO&amp;INPIT

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 Patent Document 1, the bit width of the bit string read from the data memory is at least twice (for example, 32 bits) the maximum bit length (for example, 16 bits) of the variable bit length data. The number of bits shifted by the barrel shifter is calculated by an arithmetic unit.

なお、複数の演算器により構成される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.

一実施形態におけるプロセッサの概要を示す図である。It is a figure which shows the outline | summary of the processor in one Embodiment. 図1に示した制御部の一例を示す図である。It is a figure which shows an example of the control part shown in FIG. 図2に示した更新部の動作の一例を示す図である。It is a figure which shows an example of operation | movement of the update part shown in FIG. 図1に示したレジスタに格納されるデータの一例を示す図である。It is a figure which shows an example of the data stored in the register | resistor shown in FIG. 図1に示した入力データ抽出部の概要を示す図である。It is a figure which shows the outline | summary of the input data extraction part shown in FIG. 図1に示した出力データ生成部の概要を示す図である。It is a figure which shows the outline | summary of the output data generation part shown in FIG. 別の実施形態におけるプロセッサの概要を示す図である。It is a figure which shows the outline | summary of the processor in another embodiment. 図7に示した制御部の一例を示す図である。It is a figure which shows an example of the control part shown in FIG. 図7に示した更新部の動作の一例を示す図である。It is a figure which shows an example of operation | movement of the update part shown in FIG. 図9に示した動作の続きを示す図である。FIG. 10 is a diagram showing a continuation of the operation shown in FIG. 9. 図7示した変換部の動作の一例を示す図である。It is a figure which shows an example of operation | movement of the conversion part shown in FIG. 図7に示した入力データ抽出部の概要を示す図である。It is a figure which shows the outline | summary of the input data extraction part shown in FIG. 図7に示した出力データ生成部の概要を示す図である。It is a figure which shows the outline | summary of the output data generation part shown in FIG. ロード命令とレジスタの状態との関係の一例を示す図である。It is a figure which shows an example of the relationship between a load command and the state of a register. 図7に示したレジスタに格納されるデータの一例を示す図である。It is a figure which shows an example of the data stored in the register | resistor shown in FIG. 図12に示した入力データ抽出部の動作の一例を示す図である。It is a figure which shows an example of operation | movement of the input data extraction part shown in FIG. 図16に示した動作の続きを示す図である。FIG. 17 is a diagram showing a continuation of the operation shown in FIG. 16. 図13に示した出力データ生成部の動作の一例を示す図である。It is a figure which shows an example of operation | movement of the output data generation part shown in FIG. 図18に示した動作の続きを示す図である。It is a figure which shows the continuation of the operation | movement shown in FIG. 図19に示した動作の続きを示す図である。FIG. 20 is a diagram showing a continuation of the operation shown in FIG. 19.

以下、本発明の実施形態を図面を用いて説明する。   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 processor 10 includes an execution unit 20, a register file 30, control registers 40, 41 and 42, and a control unit 50. For example, the processor 10 is a 32-bit processor, and has a 32-bit wide general-purpose register R (R0-R9) in the register file 30. Note that general-purpose registers R4, R6, and R8 surrounded by broken lines in the figure are registers for storing data, and control registers 40, 41, and 42 are provided corresponding to the general-purpose registers R4, R6, and R8, respectively. ing. Hereinafter, the general-purpose registers R (R0 to R9) are also referred to as registers R (R0 to R9).

実行ユニット20は、レジスタファイル30からデータを読み出し、データを命令実行部24に出力する2つの入力データ抽出部22と、命令を実行する命令実行部24と、令実行部24からデータを受け、レジスタファイル30にデータを書き込む出力データ生成部28とを有している。例えば、命令実行部24は、四則演算や論理演算等を実行する算術論理演算ユニット(以下、ALU(Arithmetic Logic Unit)とも称する)25と、ロード/ストア命令を実行するロード/ストアユニット26とを有している。なお、実行ユニット20は、図に示した入力データ抽出部22を1つにまとめた入力データ抽出部を有してもよい。   The execution unit 20 reads the data from the register file 30, receives the data from the two input data extraction units 22 that output the data to the instruction execution unit 24, the instruction execution unit 24 that executes the instructions, and the instruction execution unit 24, And an output data generation unit 28 for writing data to the register file 30. For example, the instruction execution unit 24 includes an arithmetic logic unit (hereinafter also referred to as ALU (Arithmetic Logic Unit)) 25 that executes four arithmetic operations, logical operations, and the like, and a load / store unit 26 that executes a load / store instruction. Have. The execution unit 20 may have an input data extraction unit that combines the input data extraction units 22 shown in the figure.

制御レジスタ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 control registers 40, 41, and 42 are referred to by the control unit 50, respectively. For example, the control register 40 has an enable EN indicating whether or not to enable the control register 40, a bit length LN indicating the bit length of the access target data stored in the register R4, and the access target data in the register R4. It has an offset OF indicating an offset value (data position). For example, when enabling the control register 40, the enable EN is set to “1”. Further, the offset OF is updated during operation to indicate a data position to be used next, as shown in FIG. 3 described later.

同様に、例えば、制御レジスタ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 control register 40 except for the corresponding registers R (R6 and R8).

制御部50は、例えば、命令によりアクセスされるレジスタRを示すレジスタ番号RN1および命令の種類を示す命令種別TPをデコーダ(図示せず)から受け、制御レジスタ40、41、42のオフセットOFを更新する。ここで、この実施形態では、レジスタ番号RN1のレジスタRS1、RT1は、ソースのレジスタRを示し、レジスタ番号RN1のレジスタRD1は、ディスティネーションのレジスタRを示している。また、命令種別TPは、実行する命令の種類(ロード命令等)を示している。   For example, the control unit 50 receives a register number RN1 indicating the register R accessed by the instruction and an instruction type TP indicating the instruction type from the decoder (not shown), and updates the offset OF of the control registers 40, 41, and 42. To do. In this embodiment, the registers RS1 and RT1 with the register number RN1 indicate the source register R, and the register RD1 with the register number RN1 indicates the destination register R. The instruction type TP indicates the type of instruction to be executed (such as a load instruction).

また、例えば、制御部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 control unit 50 outputs the register number RN1 and the control information RINF 10, 20, and 30 read from the control registers 40, 41, and 42 to the execution unit 20. For example, each control information RINF 10, 20, 30 is information including an enable EN, a bit length LN, and an offset OF of each control register 40, 41, 42. In FIG. 1, description of a control signal (for example, an initial value INT1 shown in FIG. 2 described later) for setting initial values of the control registers 40, 41, and 42 is omitted.

図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 control unit 50 shown in FIG. The control unit 50 (the portion surrounded by the broken line in the figure) has an update unit 51 and a selector 52A. 2 shows the update unit 51 and the selector 52A for updating the offset OF of the control register 40, and the description of the update unit 51 and the selector 52A for updating the offset OF of the control registers 41 and 42 is omitted. ing. For example, the update unit 51 and the selector 52A for updating the offset OF of the control registers 41 and 42 are the same as those in FIG. 2 except for the control registers 41 and 42 to be controlled.

制御部50は、例えば、初期値INT1を受け、制御レジスタ40のイネーブルEN、ビット長LNおよびオフセットOFの値を初期値INT1に設定する。この場合、セレクタ52Aは、初期値INT1の値(より詳細には、オフセットOFの初期値)を制御レジスタ40に設定する値として選択する。ここで、例えば、制御レジスタ40、41、42は、アドレスマップ上に割り当てられている。これにより、ロード命令やストア命令で、制御レジスタ40、41、42の値(初期値等)を設定できる。また、図の例では、制御レジスタ40、41、42は、フリップフロップ(以下、FFとも称する)により構成されている。   For example, the control unit 50 receives the initial value INT1, and sets the values of the enable EN, the bit length LN, and the offset OF of the control register 40 to the initial value INT1. In this case, the selector 52A selects the value of the initial value INT1 (more specifically, the initial value of the offset OF) as a value to be set in the control register 40. Here, for example, the control registers 40, 41, and 42 are allocated on the address map. As a result, the values (initial values, etc.) of the control registers 40, 41, and 42 can be set by a load instruction or a store instruction. In the example shown in the figure, the control registers 40, 41, and 42 are constituted by flip-flops (hereinafter also referred to as FFs).

更新部51は、例えば、レジスタ番号RN1および命令種別TPに基づいて、オフセットOFを更新する。例えば、レジスタR4がアクセスされる命令が実行された場合、更新部51は、次に使用されるデータのレジスタR4におけるビット位置を算出し、オフセットOFを更新する。なお、更新部51の動作の詳細は、後述する図3で説明する。セレクタ52Aは、オフセットOFを更新する場合、更新部51から受ける値を制御レジスタ40に設定する値として選択する。   For example, the update unit 51 updates the offset OF based on the register number RN1 and the instruction type TP. For example, when an instruction for accessing the register R4 is executed, the updating unit 51 calculates a bit position in the register R4 of data to be used next, and updates the offset OF. Details of the operation of the updating unit 51 will be described later with reference to FIG. When updating the offset OF, the selector 52A selects a value received from the updating unit 51 as a value to be set in the control register 40.

図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 update unit 51 shown in FIG. 3 shows the operation of the update unit 51 (update unit 51 for the control register 40) for updating the offset OF of the control register 40. That is, FIG. 3 illustrates the operation of the update unit 51 for the control register 40. Each operation of the updating unit 51 (updating unit 51 for the control registers 41 and 42) for updating the offset OF of the control registers 41 and 42 is explained by replacing the register R4 with the registers R6 and R8, respectively. Note that the selector 52A shown in FIG. 2 described above selects the value received from the update unit 51 as the value to be set in the control register 40.

先ず、処理60では、更新部51は、レジスタ番号RN1に基づいて、レジスタR4へのアクセスが発生するか否かを判定する。レジスタR4がアクセスされる場合(処理60のYes)、更新部51の動作は、処理61に移り、レジスタR4がアクセスされない場合(処理60のNo)、更新部51は、オフセットOFを更新せずに処理を終了する。なお、制御レジスタ41、42用の更新部51では、処理60において、レジスタR6、R8へのアクセスがそれぞれ発生するか否かを判定する。   First, in process 60, the updating unit 51 determines whether or not an access to the register R4 occurs based on the register number RN1. When the register R4 is accessed (Yes in process 60), the operation of the update unit 51 proceeds to process 61. When the register R4 is not accessed (No in process 60), the update unit 51 does not update the offset OF. The process ends. The update unit 51 for the control registers 41 and 42 determines whether or not access to the registers R6 and R8 occurs in the process 60, respectively.

処理61では、更新部51は、イネーブルENが“1”に設定されているか否かを判定する。すなわち、更新対象の制御レジスタ(図の例では、制御レジスタ40)が有効か否かを判定する。イネーブルENが“1”の場合(処理61のYes)、更新部51の動作は、処理62に移り、イネーブルENが“1”でない場合(処理61のNo)、更新部51は、オフセットOFを更新せずに処理を終了する。   In the process 61, the update unit 51 determines whether or not the enable EN is set to “1”. That is, it is determined whether or not the control register to be updated (control register 40 in the example in the figure) is valid. When the enable EN is “1” (Yes in process 61), the operation of the update unit 51 proceeds to process 62. When the enable EN is not “1” (No in process 61), the update unit 51 sets the offset OF. The process ends without updating.

処理62では、更新部51は、命令種別TPに基づいて、命令がロード命令か否かを判定する。ロード命令でない場合(処理62のNo)、更新部51の動作は、処理63に移り、ロード命令の場合(処理62のYes)、更新部51は、オフセットOFを更新せずに処理を終了する。   In process 62, the update unit 51 determines whether the instruction is a load instruction based on the instruction type TP. If it is not a load instruction (No in process 62), the operation of the update unit 51 proceeds to process 63. If it is a load instruction (Yes in process 62), the update unit 51 ends the process without updating the offset OF. .

処理63では、更新部51は、命令種別TPに基づいて、命令がストア命令か否かを判定する。ストア命令でない場合(処理63のNo)、更新部51の動作は、処理64に移り、ストア命令の場合(処理63のYes)、更新部51は、オフセットOFを更新せずに処理を終了する。   In process 63, the update unit 51 determines whether the instruction is a store instruction based on the instruction type TP. If it is not a store instruction (No in process 63), the operation of the update unit 51 proceeds to process 64. If it is a store instruction (Yes in process 63), the update unit 51 ends the process without updating the offset OF. .

処理64では、更新部51は、ビット長LNを2倍した値とオフセットOFとの加算結果がレジスタRのビット幅(この実施形態では、32)以上か否かを判定する。加算結果が32以上の場合(処理64のYes)、更新部51の動作は、処理65に移り、加算結果が31以下の場合(処理64のNo)、更新部51の動作は、処理66に移る。   In process 64, the updating unit 51 determines whether or not the addition result of the value obtained by doubling the bit length LN and the offset OF is equal to or greater than the bit width of the register R (32 in this embodiment). When the addition result is 32 or more (Yes in process 64), the operation of the update unit 51 proceeds to process 65. When the addition result is 31 or less (No in process 64), the operation of the update unit 51 proceeds to process 66. Move.

処理65では、更新部51は、オフセットOFを0に設定する。処理66では、更新部51は、現状のオフセットOFにビット長LNを加算した値に、オフセットOFを更新する。これにより、オフセットOFは、次に使用するデータの位置に順次更新される。   In processing 65, the updating unit 51 sets the offset OF to 0. In process 66, the update unit 51 updates the offset OF to a value obtained by adding the bit length LN to the current offset OF. As a result, the offset OF is sequentially updated to the position of the next data to be used.

なお、ロード命令およびストア命令が実行された後では、オフセット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 process 62 and Yes in process 63, the operation of the update unit 51 proceeds to process 65 (set the offset OF to “0”).

図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 processor 10 loads the data DS0, DS1, and DS2 stored continuously at the address adr1 into the register R4 (FIGS. 4A1 and 4B1). Next, the processor 10 loads data DT0, DT1, and DT2 continuously stored at the address adr2 into the register R6 (FIGS. 4A2 and 4B1). In the example of the figure, the area that is not effectively used for the registers R4 and R6 is 5 bits, and the register R is compared with the configuration in which the data is stored in one register R for each of the data DS0, DS1, DS2, DT0, DT1, and DT2. Can be used effectively. Furthermore, in this embodiment, since the ALU 25 shown in FIG. 1 described above does not need to perform a shift operation or the like in order to extract the data to be calculated, it is possible to process the calculation of continuous data at high speed.

そして、プロセッサ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 processor 10 adds the data DS0 stored in the register R4 and the data DT0 stored in the register R6, and stores the data DD0 as the addition result in the register R8 (FIG. 4 (a3), ( b2)). At this time, the offset OF of the control registers 40, 41, and 42 is updated to “9”, “9”, and “10” by the operation shown in FIG. Next, the processor 10 adds the data DS1 stored in the register R4 and the data DT1 stored in the register R6, and stores the data DD1 as the addition result in the register R8 (FIG. 4 (a4)). (B3)). At this time, the offsets OF of the control registers 40, 41, and 42 are updated to “18”, “18”, and “20”, respectively, by the operation shown in FIG. Thereafter, the processor 10 adds the data DS2 stored in the register R4 and the data DT2 stored in the register R6, and stores the data DD2 as the addition result in the register R8 (FIG. 4 (a5), ( b4)).

このように、レジスタ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 ALU 25 to execute a shift operation or the like in order to continuously arrange a plurality of operation result data, so that the operation of continuous data can be processed at high speed. Finally, the processor 10 stores the data DD0, DD1, DD2 stored in the register R8 at the address adr3 (FIG. 4 (a6)). Thus, in this embodiment, it is not necessary to expand the data DS0, DS1, DS2, DT0, DT1, DT2, DD0, DD1, DD2 to 32 bits and store them in the memory, so that the memory can be used effectively. .

図5は、図1に示した入力データ抽出部22の概要を示している。図中の網掛け部分は、有効なデータでない部分を示している。なお、図のデータDS0、DS1、DS2の状態は、上述した図4(a4)の命令が実行されるときの状態に対応している。また、図のデータDS0、DS1、DS2は、右側が下位ビットである。入力データ抽出部22は、左論理シフト部220、右算術シフト部221、セレクタ222を有している。   FIG. 5 shows an overview of the input data extraction unit 22 shown in FIG. The shaded portion in the figure indicates a portion that is not valid data. Note that the states of the data DS0, DS1, and DS2 in the figure correspond to the states when the above-described instruction of FIG. 4 (a4) is executed. In the data DS0, DS1, DS2 in the figure, the right side is the lower bit. The input data extraction unit 22 includes a left logical shift unit 220, a right arithmetic shift unit 221, and a selector 222.

左論理シフト部220は、レジスタRから読み出されたデータRDATAをシフト量LSL分だけ左論理シフトする。図の例では、データRDATAは、有効でないデータ(図の網掛け部分)、データDS2、DS1、DS0を含むデータである。また、シフト量LSLは、読み出したレジスタRに対応する制御レジスタ(例えば、制御レジスタ40)のビット長LNおよびオフセットOFの加算値をレジスタRのビット幅である32から引いた値である。左論理シフト部220により、例えば、演算対象のデータDS1は、32ビット幅のデータの一番左側にシフトされる。   The left logical shift unit 220 logically shifts the data RDATA read from the register R to the left by the shift amount LSL. In the example of the figure, the data RDATA is data including invalid data (shaded part in the figure), data DS2, DS1, and DS0. The shift amount LSL is a value obtained by subtracting the added value of the bit length LN and the offset OF of the control register (for example, the control register 40) corresponding to the read register R from 32 which is the bit width of the register R. For example, the operation target data DS1 is shifted to the leftmost side of the 32-bit width data by the left logical shift unit 220.

右算術シフト部221は、左論理シフト部220の出力データ(32ビット幅のデータ)をシフト量ASR分だけ右算術シフトする。すなわち、32ビット幅のデータの左側の空いたビットは、符号拡張SEで埋められる。これにより、入力データ抽出部22は、符号付きのデータを扱うことができる。なお、シフト量ASRは、読み出したレジスタRに対応する制御レジスタ(例えば、制御レジスタ40)のビット長LNをレジスタRのビット幅である32から引いた値である。右算術シフト部221により、例えば、演算対象のデータDS1は、32ビット幅のデータの一番右側にシフトされる。   The right arithmetic shift unit 221 right-shifts the output data (32-bit width data) of the left logical shift unit 220 by the shift amount ASR. That is, an empty bit on the left side of 32-bit width data is filled with the sign extension SE. As a result, the input data extraction unit 22 can handle signed data. The shift amount ASR is a value obtained by subtracting the bit length LN of the control register (for example, the control register 40) corresponding to the read register R from 32 which is the bit width of the register R. By the right arithmetic shift unit 221, for example, the data DS1 to be calculated is shifted to the rightmost side of 32-bit width data.

セレクタ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 selector 222 outputs one of the data S1 and S2 as the data IDATA to the instruction execution unit 24 shown in FIG. For example, when the data RDATA is read from any of the registers R4, R6, and R8, the selector 222 sets the enable EN of the control registers 40, 41, and 42 corresponding to the registers R4, R6, and R8 from which the data RDATA is read to “1”. When “(the control register is valid)”, the data S2 (the output data of the right arithmetic shift unit 221) is output to the instruction execution unit 24 as data IDATA. Under other conditions, the selector 222 outputs the data RDATA (data S1) read from the register R to the instruction execution unit 24 as data IDATA.

例えば、セレクタ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 selector 222 outputs the data RDATA (data S1) read from the register R to the instruction execution unit 24 as data IDATA. That is, in this embodiment, the selection signal SEL is generated by, for example, the register number RN1 indicating the register R from which the data RDATA is read and the enable EN of the control registers 40, 41, and 42.

図6は、図1に示した出力データ生成部28の概要を示している。なお、図のデータDD0、DD1の状態は、上述した図4(a4)の命令が実行されるときの状態に対応している。また、図のデータDD0、DD1は、右側が下位ビットである。出力データ生成部28は、左論理シフト部280、右論理シフト部281、FF282、オア回路(以下、ORとも称する)283およびセレクタ284を有している。   FIG. 6 shows an overview of the output data generation unit 28 shown in FIG. Note that the states of the data DD0 and DD1 in the figure correspond to the state when the above-described instruction of FIG. 4 (a4) is executed. The right side of the data DD0 and DD1 in the figure is the lower bit. The output data generation unit 28 includes a left logical shift unit 280, a right logical shift unit 281, an FF 282, an OR circuit (hereinafter also referred to as OR) 283, and a selector 284.

左論理シフト部280は、上述した図1に示した命令実行部24から受けたデータ(例えば、ALU25の演算結果)EDATAをシフト量LSL分だけ左論理シフトする。図の例では、データEDATAは、符号拡張SEおよびデータDD1から構成される32ビット幅のデータである。また、シフト量LSLは、演算結果を格納するレジスタRに対応する制御レジスタ(例えば、制御レジスタ42)のビット長LNをレジスタRのビット幅である32から引いた値である。左論理シフト部280により、例えば、演算結果のデータDD1は、32ビット幅のデータの一番左側にシフトされる。   The left logical shift unit 280 logically shifts the data (for example, the operation result of the ALU 25) EDATA received from the instruction execution unit 24 shown in FIG. 1 to the left by the shift amount LSL. In the example of the figure, the data EDATA is 32-bit width data composed of the sign extension SE and the data DD1. The shift amount LSL is a value obtained by subtracting the bit length LN of the control register (for example, the control register 42) corresponding to the register R storing the calculation result from 32, which is the bit width of the register R. For example, the operation result data DD1 is shifted to the leftmost side of the 32-bit width data by the left logical shift unit 280.

右論理シフト部281は、左論理シフト部280の出力データ(32ビット幅のデータ)をシフト量LSR分だけ右論理シフトする。なお、32ビット幅のデータの空いたビットは、“0”で埋められる。また、シフト量LSRは、演算結果を格納するレジスタRに対応する制御レジスタ(例えば、制御レジスタ42)のビット長LNおよびオフセットOFの加算値をレジスタRのビット幅である32から引いた値である。右論理シフト部281により、例えば、演算結果のデータDD1は、データDD1の最下位ビットと32ビット幅のデータにおけるオフセットOFの位置とが一致する位置にシフトされる。   The right logical shift unit 281 right-shifts the output data (32-bit width data) of the left logical shift unit 280 by the shift amount LSR. Note that empty bits of 32-bit width data are filled with “0”. Further, the shift amount LSR is a value obtained by subtracting the added value of the bit length LN and the offset OF of the control register (for example, the control register 42) corresponding to the register R storing the calculation result from the bit width 32 of the register R. is there. For example, the operation result data DD1 is shifted by the right logical shift unit 281 to a position where the least significant bit of the data DD1 matches the position of the offset OF in the 32-bit width data.

オア回路283は、右論理シフト部281の出力データとFF28から読み出されるデータとのオアをセレクタ284およびFF282に出力する。なお、FF282には、前回の演算命令(例えば、図4(a3))が実行された際のオア回路283の出力データ(図の例では、下位ビットから順にデータDD0および“0”が配置された32ビット幅のデータ)が格納されている。そして、今回の演算命令(例えば、図4(a4))により、FF282には、下位ビットから順に、データDD0、データDD1、“0”が配置された32ビット幅のデータが格納される。   The OR circuit 283 outputs the OR of the output data of the right logical shift unit 281 and the data read from the FF 28 to the selector 284 and the FF 282. In addition, in the FF 282, output data of the OR circuit 283 when the previous arithmetic instruction (for example, FIG. 4 (a3)) is executed (in the example of the figure, data DD0 and “0” are arranged in order from the lower bit). 32 bits wide data) is stored. Then, according to the current operation instruction (for example, FIG. 4 (a4)), the FF 282 stores data DD0, data DD1, and data of 32 bits in which “0” is arranged in order from the lower bit.

セレクタ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 selector 284 outputs one of the data S1 and S2 as data ODATA to the register R indicated by the register number RN1. For example, when the selector 284 stores the data ODATA in any of the registers R4, R6, and R8, the enable EN of the control registers 40, 41, and 42 corresponding to the registers R4, R6, and R8 in which the data ODATA is stored is “ When 1 ″ (the control register is valid), data S2 (output data of the OR circuit 283) is output to the register R as data ODATA. Under other conditions, the selector 222 outputs the data EDATA (data S1) received from the instruction execution unit 24 as data ODATA to the register R indicated by the register number RN1.

例えば、セレクタ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 selector 284 outputs the data EDATA (data S1) received from the instruction execution unit 24 to the register R as the data ODATA. That is, in this embodiment, the selection signal SEL is generated by, for example, the register number RN1 indicating the register R in which the data ODATA is stored and the enable EN of the control registers 40, 41, and 42.

以上、この実施形態では、入力データ抽出部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 data extraction unit 22 sequentially reads data having an arbitrary bit length from one of the registers R4, R6, and R8 based on the control registers 40, 41, and 42. Furthermore, in this embodiment, the output data generation unit 28 sequentially stores a plurality of data having an arbitrary bit length in one of the registers R4, R6, and R8 based on the control registers 40, 41, and 42. Therefore, in this embodiment, the register R can be used more effectively than the configuration in which data is stored in one register R for each data. That is, in this embodiment, the register can be used effectively even when data having a data size that is odd with respect to the bit width of the register (for example, a data size other than a multiple of 8) is continuous.

図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 control unit 54 instead of the execution unit 20, control registers 40, 41, and 42 and the control unit 50 shown in FIG. Each is provided. Other configurations are the same as those of the processor 10 described with reference to FIGS. The same elements as those described in FIGS. 1 to 6 are denoted by the same reference numerals, and detailed description thereof will be omitted.

例えば、プロセッサ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 register file 30, control registers 43, 44, 45 and a control unit 54. It should be noted that control registers 43, 44, and 45 are provided corresponding to the groups of registers R (R4 and R5, R6 and R7, R8 and R9) surrounded by a broken line in the drawing. That is, the control registers 43, 44, 45 are provided corresponding to the groups of registers R (R4 and R5, R6 and R7, R8 and R9) surrounded by a broken line in the drawing.

実行ユニット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 data extraction unit 23 and an output data generation unit 29 instead of the input data extraction unit 22 and the output data generation unit 28 shown in FIG. The input data extraction unit 23 is configured to be able to read data stored across both registers of a set of registers R (for example, R4 and R5, R6 and R7, R8 and R9). For example, when data is read from a register group including registers R4 and R5, the input data extraction unit 23 can read data stored across the registers R4 and R5. Details of the input data extraction unit 23 will be described later with reference to FIG.

出力データ生成部29は、レジスタRの組(例えば、R4とR5、R6とR7、R8とR9)の両方のレジスタにまたいでデータを格納できるように構成されている。例えば、レジスタR4、R5から構成されるレジスタ群に20ビット長のデータを2つ格納する場合、出力データ生成部29は、2つめのデータの下位12ビットをレジスタR4に格納し、2つめのデータの上位8ビットをレジスタR5に格納する。なお、出力データ生成部29の詳細は、後述する図15で説明する。   The output data generation unit 29 is configured to store data across both registers of the set of registers R (for example, R4 and R5, R6 and R7, R8 and R9). For example, when storing two 20-bit data in a register group composed of the registers R4 and R5, the output data generation unit 29 stores the lower 12 bits of the second data in the register R4. The upper 8 bits of the data are stored in the register R5. Details of the output data generation unit 29 will be described later with reference to FIG.

制御レジスタ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 control register 43 is referred to. For example, the control register 43 has an enable EN, a bit length LN, an offset OF, register numbers RPT, WPT, empty EMP, and full FUL. The enable EN, the bit length LN, and the offset OF are the same as the enable EN, the bit length LN, and the offset OF described with reference to FIG. For example, when enabling the control register 43, the enable EN is set to “1”. The offset OF is set with an offset value (data position) in the register R4 of the data to be accessed when accessing the register R4. When accessing the register R5, the offset OF is stored in the register R5 of the data to be accessed. The offset value is set.

レジスタ番号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 control register 43 except for the corresponding register group (R6 and R7, R8 and R9).

制御部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 control unit 54 receives the register number RN1 and the instruction type TP from a decoder (not shown), reads the control information RINF 10, 11, 20, 21, 30, 31 from the control registers 43, 44, 45, The offsets OF of 44 and 45 are updated. Here, for example, each control information RINF11, 21, 31 is information including the register numbers RPT, WPT, empty EMP, and full FUL of each control register 43, 44, 45.

また、例えば、制御部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 control unit 54 outputs the control information RINF10, 20, and 30 read from the control registers 43, 44, and 45 to the execution unit 21, and outputs the register number RN2 to the execution unit 21 instead of the register number RN1. . In this embodiment, the registers RS2 and RT2 with the register number RN2 indicate the source register R, and the register RD2 with the register number RN2 indicates the destination register R. In FIG. 7, the description of a control signal (for example, an initial value INT2 shown in FIG. 8 described later) for setting the initial values of the control registers 43, 44, and 45 is omitted.

図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 control unit 54 shown in FIG. The control unit 54 (portion surrounded by a broken line in the figure) includes a selector 52 (52A, 52B, 52C, 52D, 52E), an update unit 55, and a conversion unit 56. FIG. 8 shows the selector 52 and the update unit for the control register 43, and the description of the selector 52 and the update unit 55 for the control registers 44 and 45 is omitted. For example, the selector 52 and the update unit 55 for the control registers 44 and 45 are the same as those in FIG. 8 except for the control registers 44 and 45 to be controlled. Further, in FIG. 8, the description of the control registers 44 and 45 is omitted.

制御部54は、例えば、初期値INT2を受け、制御レジスタ43の各値(イネーブルEN等)を初期値INT2に設定する。この場合、セレクタ52は、初期値INT2の値を制御レジスタ43に設定する値として選択する。ここで、例えば、制御レジスタ43、44、45は、アドレスマップ上に割り当てられている。これにより、ロード命令やストア命令で、制御レジスタ43、44、45の値(初期値等)を設定できる。また、図の例では、制御レジスタ43、44、45は、フリップフロップにより構成されている。   For example, the control unit 54 receives the initial value INT2, and sets each value (such as enable EN) in the control register 43 to the initial value INT2. In this case, the selector 52 selects the value of the initial value INT2 as a value to be set in the control register 43. Here, for example, the control registers 43, 44, and 45 are allocated on the address map. As a result, the values (such as initial values) of the control registers 43, 44, and 45 can be set by a load instruction or a store instruction. In the example shown in the figure, the control registers 43, 44, and 45 are configured by flip-flops.

更新部55は、例えば、レジスタ番号RN1および命令種別TPを受け、制御情報RINF10、11を制御レジスタ43から読み出し、オフセットOF、レジスタ番号RPT、WPT、エンプティEMPおよびフルFULを更新する。なお、更新部55の動作の詳細は、後述する図9、図11で説明する。セレクタ52は、制御レジスタ43の値を更新する場合、更新部55から受ける値を制御レジスタ43に設定する値として選択する。   For example, the update unit 55 receives the register number RN1 and the instruction type TP, reads the control information RINF10 and 11 from the control register 43, and updates the offset OF, register number RPT, WPT, empty EMP, and full FUL. Details of the operation of the updating unit 55 will be described with reference to FIGS. When the value of the control register 43 is updated, the selector 52 selects the value received from the update unit 55 as a value to be set in the control register 43.

変換部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 conversion unit 56 receives the register number RN1 and the instruction type TP, reads the register numbers RPT, WPT, and enable EN from the control registers 43, 44, and 45 corresponding to the register R indicated by the register number RN1, and sets the register number RN2. Set. When the register R specified by the register number RN1 is a register R that does not correspond to the control registers 43, 44, and 45, the conversion unit 56 sets the register numbers RPT, WPT, and enable EN to the control registers 43, 44, It is not necessary to read from 45. Then, the converting unit 56 outputs the register number RN2 instead of the register number RN1 to the execution unit 21 shown in FIG. Details of the operation of the conversion unit 56 will be described later with reference to FIG.

図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 update unit 55 shown in FIG. 9 and 10 show the operation of the update unit 55 for updating the offset OF, the register numbers RPT, WPT, empty EMP, and full FUL of the control register 43. That is, in FIGS. 9 and 10, the operation of the update unit 55 for the control register 43 will be described. The operation of the update unit 55 for the control register 44 is explained by replacing the registers R4 and R5 with the registers R6 and R7, and the operation of the update unit 55 for the control register 45 is changed to the registers R8 and R9. It is explained by replacing it. Further, the selector 52 shown in FIG. 8 described above selects the value received from the updating unit 55 as the value to be set in the control register 43. Note that the sign% in FIG. 10 indicates a remainder operator.

先ず、図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 process 70, the update unit 55 determines whether or not an access to any of the registers R4 and R5 occurs based on the register number RN1. When one of the registers R4 and R5 is accessed (Yes in process 70), the operation of the update unit 55 proceeds to process 72. When neither of the registers R4 and R5 is accessed (No in process 70), the update unit 55 terminates the process without updating the control register 43.

処理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 process 72, the update unit 55 determines whether or not the enable EN is set to “1”. That is, it is determined whether or not the control register 43 is valid. When the enable EN is “1” (Yes in process 72), the operation of the update unit 55 proceeds to process 74. When the enable EN is not “1” (No in process 72), the update unit 55 The process is terminated without updating. For example, when the registers R4 and R5 are handled in the same manner as the registers R0 to R3 shown in FIG. 7 described above, the updating unit 55 ends the process without updating the control register 43. That is, when the register R4 and the register R5 are not used as a register group including the registers R4 and R5, the update unit 55 ends the process without updating the control register 43.

処理74では、更新部55は、命令種別TPに基づいて、命令がロード命令か否かを判定する。ロード命令の場合(処理74のYes)、更新部55の動作は、処理76に移り、ロード命令でない場合(処理74のNo)、更新部55の動作は、処理84に移る。   In process 74, the update unit 55 determines whether the instruction is a load instruction based on the instruction type TP. In the case of a load instruction (Yes in process 74), the operation of the update unit 55 proceeds to process 76. In the case of no load instruction (No in process 74), the operation of the update unit 55 proceeds to process 84.

処理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 process 76, the updating unit 55 updates the register number WPT. For example, when the register number WPT before update indicates the register R4, the update unit 55 updates the register number WPT to the register number indicating the register R5. For example, when the register number WPT before update indicates the register R5, the update unit 55 updates the register number WPT to the register number indicating the register R4. For example, if the register number WPT after the update has a constant number of 4 (a value indicating the register R4), the result obtained by adding 1 to the value obtained by subtracting the constant number from the register number WPT before the update is used as the dividend. It is calculated by adding the remainder when dividing by 2 to the constant number. When the constant number is 5 (value indicating the register R5), the updated register number WPT is obtained by adding 1 to the value obtained by subtracting the register number WPT before update from the constant number, and the dividend is It is calculated by subtracting the remainder when dividing by 2 from the constant number.

処理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 process 78, the updating unit 55 determines whether or not the register number WPT updated in process 76 is the same as the register number RPT. When the register numbers WPT and RPT are the same (Yes in process 78), the update unit 55 indicates that the full FUL is “1” in process 80 (valid data is stored in both the registers R4 and R5). Information). On the other hand, when the register numbers WPT and RPT are different from each other (No in process 78), the operation of the update unit 55 proceeds to process 82. In process 82, the updating unit 55 sets the empty EMP to “0” (information indicating that valid data is stored in at least one of the registers R4 and R5).

処理84(処理74において、ロード命令でないと判定された場合)では、更新部55は、命令種別TPに基づいて、命令がストア命令か否かを判定する。ストア命令の場合(処理84のYes)、更新部55の動作は、処理86に移り、ストア命令でない場合(処理84のNo)、更新部55の動作は、図10に示す処理Aに移る。   In process 84 (when it is determined in process 74 that the instruction is not a load instruction), the update unit 55 determines whether the instruction is a store instruction based on the instruction type TP. In the case of a store instruction (Yes in process 84), the operation of the update unit 55 proceeds to process 86. In the case of no store instruction (No in process 84), the operation of the update unit 55 proceeds to process A shown in FIG.

処理86では、更新部55は、レジスタ番号RPTを更新する。例えば、更新前のレジスタ番号RPTがレジスタR4を示すとき、更新部55は、レジスタR5を示すレジスタ番号に、レジスタ番号RPTを更新する。また、例えば、更新前のレジスタ番号RPTがレジスタR5を示すとき、更新部55は、レジスタR4を示すレジスタ番号に、レジスタ番号RPTを更新する。例えば、更新後のレジスタ番号RPTは、処理76のレジスタ番号WPTの更新と同様の演算により算出される。   In process 86, the updating unit 55 updates the register number RPT. For example, when the register number RPT before update indicates the register R4, the update unit 55 updates the register number RPT to the register number indicating the register R5. For example, when the register number RPT before update indicates the register R5, the update unit 55 updates the register number RPT to the register number indicating the register R4. For example, the updated register number RPT is calculated by the same calculation as the updating of the register number WPT in the process 76.

処理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 process 88, the update unit 55 determines whether or not the register number WPT is the same as the register number RPT updated in process 86. When the register numbers WPT and RPT are the same (Yes in process 88), the update unit 55 sets the empty EMP to “1” in process 90 (no valid data is stored in any of the registers R4 and R5). Information). On the other hand, when the register numbers WPT and RPT are different from each other (No in process 88), the operation of the update unit 55 proceeds to process 92. In process 92, the update unit 55 sets the full FUL to “0” (information indicating that at least one of the registers R4 and R5 is empty).

図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 process 84 of FIG. 9 that the instruction is not a store instruction), the update unit 55 registers a group of registers R4 and R5 based on the register number RN1. Determine whether the access to the destination is a destination. For example, when the register RD1 with the register number RN1 is the register R4, the access to the register group including the registers R4 and R5 is the destination. When the access to the register group is the destination (Yes in process 94), the operation of the update unit 55 proceeds to process 96. When the access to the register group is the source (No in process 94), the operation of the update unit 55 is performed. Moves to processing 108.

処理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 process 96, the update unit 55 determines whether or not the addition result of the offset OF and the bit length LN is equal to or greater than the bit width of the register R (32 in this embodiment). When the addition result is 32 or more (Yes in process 96), the operation of the update unit 55 proceeds to process 98. The processes 98, 100, 102, and 104 are the same as the processes 76, 78, 80, and 82. By the processes 96 and 98, the output data generation unit 29 shown in FIG. 7 described above can store data across the registers R4 and R5. On the other hand, when the addition result is 31 or less (No in process 96), the operation of the update unit 55 proceeds to process 104.

処理106では、更新部55は、オフセットOFを更新する。例えば、更新後のオフセットOFは、更新前のオフセットOFにビット長LNを加算した結果を被除数とし、被除数をレジスタRのビット幅(この実施形態では、32)で割ったときの剰余により算出される。   In processing 106, the update unit 55 updates the offset OF. For example, the updated offset OF is calculated by the remainder when the result obtained by adding the bit length LN to the offset OF before update is the dividend and the dividend is divided by the bit width of the register R (32 in this embodiment). The

処理108(処理94において、レジスタ群へのアクセスがソースと判定された場合)では、更新部55は、オフセットOFを更新する。例えば、更新後のオフセットOFは、処理106のオフセットOFの更新と同様の演算により算出される。   In process 108 (when it is determined in process 94 that the access to the register group is the source), the update unit 55 updates the offset OF. For example, the updated offset OF is calculated by the same calculation as the update of the offset OF in the process 106.

処理109では、更新部55は、処理108で更新されたオフセットOFが0か否かを判定する。オフセットOFが0の場合(処理109のYes)、更新部55の動作は、処理112に移り、オフセットOFが0でない場合(処理109のNo)、更新部55の動作は、処理110に移る。   In processing 109, the updating unit 55 determines whether or not the offset OF updated in processing 108 is zero. If the offset OF is 0 (Yes in process 109), the operation of the update unit 55 proceeds to process 112. If the offset OF is not 0 (No in process 109), the operation of the update unit 55 proceeds to process 110.

処理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 processing 110, the updating unit 55 determines whether or not the addition result of the offset OF and the bit length LN is larger than the bit width of the register R (32 in this embodiment). When the addition result is larger than 32 (Yes in process 110), the update unit 55 updates the register number RPT in process 112. When the addition result is 32 or less (No in process 110), the update unit 55 The number RPT is not updated. The processes 112, 114, 116, and 118 are the same as the processes 86, 88, 90, and 92. Through the processes 108, 109, 110, and 112, the input data extraction unit 23 illustrated in FIG. 7 can read the data stored across the registers R4 and R5.

図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 conversion unit 56 shown in FIG. FIG. 11 shows the operation of the conversion unit 56 when setting one of the register numbers RN2 (one of the registers RD2, RS2, and RT2). When there are a plurality of registers R specified by the register number RN1 (that is, when there are a plurality of registers R set in the register number RN2), the processing of FIG. 11 is performed for each register R that is accessed. .

先ず、処理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 process 120, the conversion unit 56 determines whether or not an access to any of the registers R4-R9 occurs based on the register number RN1. When any of the registers R4-R9 is accessed (Yes in process 120), the operation of the conversion unit 56 proceeds to process 122, and when the register R4-R9 is not accessed (No in process 120), the conversion unit 56 In process 138, the registers (RD2, RS2, RT2) having the register number RN2 are set to the registers (RD1, RS1, RT1) having the register number RN1.

例えば、レジスタ番号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 conversion unit 56 sets the register RD2 with the register number RN2 to the register R3 and the register RS2 with the register number RN2 in processing 138. , Process 122 is performed to set RT2.

処理122では、変換部56は、レジスタ番号RN1により指定されるレジスタRに対応する制御レジスタ43、44、45のイネーブルENが“1”に設定されているか否かを判定する。すなわち、レジスタ番号RN1により指定されるレジスタRに対応する制御レジスタ43、44、45が有効か否かを判定する。処理122により、レジスタ番号RN1により指定されるレジスタRを、2つのレジスタRから構成されるレジスタ群として使用するか、上述した図7に示したレジスタR0−R3と同じように単独のレジスタRとして使用するかが判定される。   In process 122, the conversion unit 56 determines whether or not the enable EN of the control registers 43, 44, and 45 corresponding to the register R specified by the register number RN1 is set to “1”. That is, it is determined whether or not the control registers 43, 44, and 45 corresponding to the register R designated by the register number RN1 are valid. Through the process 122, the register R designated by the register number RN1 is used as a register group composed of two registers R, or as a single register R in the same manner as the registers R0 to R3 shown in FIG. It is determined whether to use it.

イネーブル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 conversion unit 56 proceeds to processing 124. When the enable EN is not “1” (No in processing 122), the conversion unit 56 performs processing in step 138. The registers (RD2, RS2, RT2) with register number RN2 are set to the registers (RD1, RS1, RT1) with register number RN1. For example, the registers RD1, RS1, and RT1 of the register number RN1 are the registers R8, R4, and R6, and the enable EN of the control registers 43, 44, and 45 are set to “1”, “1”, and “0”, respectively. If so, the conversion unit 56 performs the process 124 to set the registers RS2 and RT2 of the register number RN2. Further, in the process 138, the conversion unit 56 sets the register RD2 of the register number RN2 to the register RD1 (register R8) of the register number RN1.

処理124では、変換部56は、命令種別TPに基づいて、命令がロード命令か否かを判定する。ロード命令の場合(処理124のYes)、変換部56は、処理126において、レジスタ番号RN2のレジスタRT2をレジスタ番号WPTが示すレジスタRに設定する。一方、ロード命令でない場合(処理124のNo)、変換部56の動作は、処理128に移る。   In process 124, the conversion unit 56 determines whether the instruction is a load instruction based on the instruction type TP. In the case of a load instruction (Yes in process 124), the conversion unit 56 sets the register RT2 of the register number RN2 to the register R indicated by the register number WPT in the process 126. On the other hand, if the instruction is not a load instruction (No in process 124), the operation of the conversion unit 56 proceeds to process 128.

処理128では、変換部56は、命令種別TPに基づいて、命令がストア命令か否かを判定する。ストア命令の場合(処理128のYes)、変換部56は、処理130において、レジスタ番号RN2のレジスタRT2をレジスタ番号RPTが示すレジスタRに設定する。一方、ストア命令でない場合(処理128のNo)、変換部56の動作は、処理132に移る。   In process 128, the conversion unit 56 determines whether the instruction is a store instruction based on the instruction type TP. In the case of a store instruction (Yes in process 128), the conversion unit 56 sets the register RT2 of the register number RN2 to the register R indicated by the register number RPT in process 130. On the other hand, if it is not a store instruction (No in process 128), the operation of the conversion unit 56 proceeds to process 132.

処理132では、変換部56は、レジスタ番号RN1に基づいて、レジスタ番号RN1により指定されるレジスタRを含むレジスタ群へのアクセスがディスティネーションか否かを判定する。レジスタ群へのアクセスがディスティネーションの場合(処理132のYes)、変換部56は、処理134において、レジスタ番号RN2のレジスタRD2をレジスタ番号WPTが示すレジスタRに設定する。一方、レジスタ群へのアクセスがソースの場合(処理132のNo)、変換部56は、処理136において、レジスタ番号RN2のレジスタ(例えば、レジスタRS2、RT2)をレジスタ番号RPTが示すレジスタRに設定する。   In process 132, the conversion unit 56 determines whether or not the access to the register group including the register R specified by the register number RN1 is a destination based on the register number RN1. When the access to the register group is the destination (Yes in process 132), the conversion unit 56 sets the register RD2 of the register number RN2 to the register R indicated by the register number WPT in process 134. On the other hand, when the access to the register group is the source (No in process 132), the conversion unit 56 sets the register with the register number RN2 (for example, registers RS2 and RT2) to the register R indicated by the register number RPT in process 136. To do.

例えば、処理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 process 136, when the register RS1 with the register number RN1 is one of the registers R4 and R5, the conversion unit 56 converts the register RS2 with the register number RN2 into the register R (R4 or R5) indicated by the register number RPT in the control register 43. ). Further, for example, when the register RT1 with the register number RN1 is one of the registers R4 and R5, the conversion unit 56 registers the register RT2 with the register number RN2 in the process 136 by the register R (R4) indicated by the register number RPT of the control register 43. Or set to R5).

図12は、図7に示した入力データ抽出部23の概要を示している。図中の網掛け部分は、上述した図5に示した入力データ抽出部22と相違する部分を示している。また、図12の符号%は、剰余演算子を示している。入力データ抽出部23は、FF224、左論理シフト部226、右算術シフト部221、セレクタ222を有している。   FIG. 12 shows an overview of the input data extraction unit 23 shown in FIG. The shaded portion in the figure indicates a portion that is different from the input data extraction unit 22 shown in FIG. 5 described above. Also, the sign% in FIG. 12 indicates a remainder operator. The input data extraction unit 23 includes an FF 224, a left logical shift unit 226, a right arithmetic shift unit 221, and a selector 222.

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 FF 224 stores the data RDATA read from the register R when the write enable WE is “1”. For example, the write enable WE may be generated based on the bit length LN and the offset OF of the control register (control register 43 or the like) corresponding to the read register R, and may be generated by the input data extraction unit 23. It may be generated by the control unit 54 shown in FIG. In this embodiment, the write enable WE is “1” when the addition result of the value obtained by doubling the bit length LN and the offset OF is larger than the bit width of the register R (32 in this embodiment). If the result is 32 or less, it is “0”.

すなわち、FF224には、2つのレジスタRをまたいで格納されているデータを使用する命令が実行される前に、2つのレジスタRをまたいで格納されているデータの一部を含むデータRDATAが格納される。なお、FF224は、ライトイネーブルWEを使用せずに、レジスタRからデータRDATAが読み出される度に、データRDATAを格納してもよい。   In other words, the FF 224 stores data RDATA including a part of the data stored across the two registers R before the instruction using the data stored across the two registers R is executed. Is done. The FF 224 may store the data RDATA every time the data RDATA is read from the register R without using the write enable WE.

左論理シフト部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 FF 224 on the lower 32 bits. The shift amount LSL is a value obtained by subtracting the added value of the bit length LN and the offset OF of the control register (for example, the control register 43) corresponding to the read register R from 64 (twice the bit width of the register R). This is the remainder when the dividend is divided by 32 (bit width of register R). Thereby, for example, the data to be calculated is shifted to the leftmost side of the 64-bit width data.

右算術シフト部221は、左論理シフト部226の出力データ(64ビット幅のデータ)の上位32ビットのデータを受け、受けたデータを(32ビット幅のデータ)をシフト量ASR分だけ右算術シフトする。なお、シフト量ASRは、読み出したレジスタRに対応する制御レジスタ(例えば、制御レジスタ43)のビット長LNを32(レジスタRのビット幅)から引いた値である。右算術シフト部221により、例えば、演算対象のデータは、32ビット幅のデータの一番右側にシフトされる。   The right arithmetic shift unit 221 receives the upper 32 bits of the output data (64-bit width data) of the left logical shift unit 226 and right-arithmizes the received data (32-bit width data) by the shift amount ASR. shift. The shift amount ASR is a value obtained by subtracting the bit length LN of the control register (for example, the control register 43) corresponding to the read register R from 32 (bit width of the register R). The right arithmetic shift unit 221 shifts, for example, data to be calculated to the rightmost side of 32-bit width data.

セレクタ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 selector 222 outputs one of the data S1 and S2 as data IDATA to the instruction execution unit 24 shown in FIG. For example, when the data RDATA is read from any of the registers R4 to R9, the selector 222 receives the data when the enable EN of the control registers 43, 44, and 45 corresponding to the register R from which the data RDATA is read is “1”. S2 is output to the instruction execution unit 24 as data IDATA. Under other conditions, the selector 222 outputs the data S1 (data RDATA read from the register R) to the instruction execution unit 24 as data IDATA.

例えば、セレクタ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 selector 222 outputs the data RDATA (data S1) read from the register R to the instruction execution unit 24 as data IDATA. That is, in this embodiment, the selection signal SEL is generated by, for example, the register number RN2 indicating the register R from which the data RDATA is read and the enable EN of the control registers 43, 44, and 45.

図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 data generation unit 29 shown in FIG. A shaded portion in the figure indicates a portion different from the output data generation unit 28 shown in FIG. 6 described above. Detailed descriptions of the left logical shift unit 280, the FF 282, the OR circuit 283, and the selector 284 described in FIG. 6 are omitted. The output data generation unit 29 includes a left logical shift unit 280, a right logical shift unit 285, a selector 286, an FF 282, an OR circuit 283, and a selector 284.

右論理シフト部285は、レジスタRのビット幅の2倍のビット幅(この実施形態では、64)のデータを受け、受けたデータをシフト量LSR分だけ右論理シフトする。なお、右論理シフト部285が受ける64ビット幅のデータは、上位32ビット側が左論理シフト部280の出力データ(32ビット幅のデータ)であり、下位32ビットは、“0”で埋められている。また、シフト量LSRは、演算結果を格納するレジスタRに対応する制御レジスタ(例えば、制御レジスタ43)のビット長LNおよびオフセットOFの加算値を64(レジスタRのビット幅の2倍)から引いた値である。これにより、例えば、演算結果のデータは、演算結果のデータの最下位ビットと32ビット幅のデータにおけるオフセットOFの位置とが一致する位置にシフトされる。   The right logical shift unit 285 receives data having a bit width (64 in this embodiment) that is twice the bit width of the register R, and right-shifts the received data by the shift amount LSR. The 64-bit width data received by the right logical shift unit 285 is the output data (32-bit width data) of the left logical shift unit 280 on the upper 32 bits side, and the lower 32 bits are filled with “0”. Yes. Further, the shift amount LSR is obtained by subtracting the added value of the bit length LN and the offset OF of the control register (for example, the control register 43) corresponding to the register R storing the operation result from 64 (twice the bit width of the register R) Value. Thereby, for example, the operation result data is shifted to a position where the least significant bit of the operation result data matches the position of the offset OF in the 32-bit width data.

セレクタ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 selector 286 outputs one of the data S3 and S4 to the FF 282 based on the selection signal SEL2. For example, when the addition result of the bit length LN and the offset OF of the control register (control register 43 or the like) corresponding to the register R storing the operation result is 32 (bit width of the register R) or more, the selector 286 selects the data S3 Is output to FF282. Under other conditions (when the addition result is smaller than 32), the selector 286 outputs the data S4 to the FF 282. Here, the data S3 is the upper 32 bits of the output data (64-bit width data) of the right logical shift unit 285, and the data S4 is the output data of the OR circuit 283 (32-bit width data). . As a result, when storing operation result data across both registers of the register R pair (for example, R4 and R5, R6 and R7, R8 and R9), a part of the operation result is stored in one of the register R pairs. , The remainder of the calculation result can be stored in the FF 282.

オア回路283は、右論理シフト部285の出力データ(64ビット幅のデータ)の下位32ビットのデータIN2とFF282から読み出されるデータIN1とのオアの結果をセレクタ284およびセレクタ286に出力する。   The OR circuit 283 outputs the OR result of the lower-order 32-bit data IN2 of the output data (64-bit width data) of the right logical shift unit 285 and the data IN1 read from the FF 282 to the selector 284 and the selector 286.

セレクタ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 selector 284 outputs one of the data S1 and S2 as data ODATA to the register R indicated by the register number RN2. In this embodiment, the selection signal SEL is generated by, for example, the register number RN2 indicating the register R in which the data ODATA is stored and the enable EN of the control registers 43, 44, and 45. The selection operation of the selector 284 is described by replacing the register R from which the data RDATA is read out with the register R in which the data ODATA is stored in the selection operation of the selector 222 shown in FIG.

図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 ALU 25 shown in FIG. 7 described above does not need to perform a shift operation or the like, it is possible to process continuous data operations at high speed.

図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 data extraction unit 23 shown in FIG. 16 and 17 show an example of one operation of the input data extraction unit 23 when the program shown in FIG. 15 is executed. The other operation of the input data extraction unit 23 will be described by replacing the data DS, register RS2, registers R4, R5 and control register 43 with data DT, register RT2, registers R6, R7 and control register 44, respectively.

図中の網掛け部分は、有効なデータでない部分を示し、符号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 control register 43 updated when the instruction is executed.

なお、制御レジスタ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 control register 43 are “1” before the program shown in FIG. “9”, “0”, “value indicating the register R4 (hereinafter also simply referred to as R4)”, “R4”, “0”, “1” are set. The register number WPT and empty EMP are stored in the register R4 from “R4” and “1” by the operation shown in FIG. 9 when the data at the address adr1 is loaded into the register R4 (FIG. 15A3). The values indicating R5 (hereinafter also simply referred to as R5) "and" 0 "are updated.

図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 data extraction unit 23 reads RDATA stored in the register R4 (register R indicated by the register number RPT), Data DS0 is extracted (FIG. 16 (a)). For example, the left logical shift unit 226 receives 64-bit width data (data RDATA on the upper 32 bits side and data on FF 224 on the lower 32 bits side) (FIG. 16 (a1)), and receives the received data as a shift amount LSL (23 bits). ) Shift logically to the left. The right arithmetic shift unit 221 receives the upper 32 bits of the output data of the left logical shift unit 226 (FIG. 16 (a2)), and right-shifts the received data by the shift amount ASR (23 bits). . The offset OF is updated from “0” to “9” by the operations shown in FIGS. 9 and 10 described above.

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 data extraction unit 23 reads RDATA stored in the register R4 and extracts data DS1 based on the offset OF (OF = 9) (FIG. 15). 16 (b)). The operation of the input data extraction unit 23 is the same as that of the first addition instruction (FIG. 16A) except for the shift amount LSL (14 bits) of the left logical shift unit 226. The offset OF is updated from “9” to “18” by the operation shown in FIGS.

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 data extraction unit 23 reads RDATA stored in the register R4 and extracts data DS2 based on the offset OF (OF = 18) (FIG. 15). 16 (b)). The operation of the input data extraction unit 23 is the same as that of the first addition instruction (FIG. 16A) except for writing the data RDATA to the FF 224 and the shift amount LSL (5 bits) of the left logical shift unit 226. The same. For example, since the addition result of the value obtained by doubling the bit length LN and the offset OF is larger than 32 (WE = 1), the data RDATA including the data DS3a is stored in the FF 224. The data DS3a is data of lower 5 bits of the data DS3.

また、オフセット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 data extraction unit 23 is stored in the register R5 (register R indicated by the register number RPT). RDATA is read and data DS3 is extracted (FIG. 17 (d)). For example, the left logical shift unit 226 receives 64-bit data (the upper 32 bits side is data RDATA and the lower 32 bits side is FF224 data (FIG. 17 (d1)), and receives the received data as a shift amount LSL (28 bits). ) Shift logically to the left. The lower 4 bits of the data RDATA are data DS3b, and the upper 5 bits of the data of the FF 224 are data DS3a. The data DS3b is the upper 4 bits of data DS3.

すなわち、左論理シフト部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 arithmetic shift unit 221 receives the upper 32 bits of the output data of the left logical shift unit 226 (FIG. 17 (d2)), and right shifts the received data by the shift amount ASR (23 bits). . In this way, the input data extraction unit 23 can extract the data DS3 stored across the registers R4 and R5. In this case, for example, since the addition result of the value obtained by doubling the bit length LN and the offset OF is larger than 32 (WE = 1), the data RDATA read from the register R5 is stored in the FF 224. The offset OF is updated from “27” to “4” by the operations shown in FIGS. 9 and 10 described above.

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 data extraction unit 23 reads RDATA stored in the register R5, and performs data based on the offset OF (OF = 4). DS4 is extracted (FIG. 16 (e)). The operation of the input data extraction unit 23 is the first addition instruction in the second loop except that the data RDATA is not written to the FF 224 and the shift amount LSL (19 bits) of the left logical shift unit 226 is ( This is the same as FIG. The offset OF is updated from “4” to “13” by the operation shown in FIGS.

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 data extraction unit 23 reads RDATA stored in the register R5, and performs data based on the offset OF (OF = 13). DS5 is extracted (FIG. 17 (f)). The operation of the input data extraction unit 23 is the same as that of the second addition instruction in the second loop (FIG. 17E) except for the shift amount LSL (10 bits) of the left logical shift unit 226. . As described above, in this embodiment, continuous data having an arbitrary bit length can be sequentially read.

図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 data generation unit 29 shown in FIG. 18-20 shows an example of the operation of the output data generation unit 29 when the program shown in FIG. 15 is executed. In the example of the figure, the right side is the low-order bit, and the code SE indicates code extension. Further, the portion surrounded by a broken line in the figure indicates the value of the control register 45 (the values of OF, RPT, WPT, EMP, and FUL) when the instruction is executed, the register R indicated by the register RD2 of the register number RN2, and the shift The values of the quantities LSL and LSR and the data S (S3, S4) selected by the selector 286 shown in FIG. 13 described above are shown. The register numbers RPT, WPT, etc. in parentheses in the figure indicate the values of the control register 45 updated when the instruction is executed.

制御レジスタ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 FF 282 stores “0” as an initial value.

図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 data generation unit 29 receives data (for example, the operation result of ALU 25) EDATA from the instruction execution unit 24 shown in FIG. The valid data DD0 in the data EDATA is stored in the register R8 (register R indicated by the register number WPT) (FIG. 18A). For example, the left logical shift unit 280 receives the data EDATA (FIG. 18 (a1)), and shifts the data DD0 to the left by the shift amount LSL (22 bits). Then, the right logical shift unit 285 receives 64-bit width data (data in which the upper 32 bits are output from the left logical shift unit 280 and the lower 32 bits are padded with “0”) (FIG. 18 (a2)). The received data is logically shifted to the right by the shift amount LSR (54 bits) (FIG. 18 (a3)).

オア回路283は、右論理シフト部285の出力データ(64ビット幅のデータ)の下位32ビットのデータIN2とFF282から読み出されるデータIN1とを受け(図18(a4))、データIN1、IN2のオアの結果をセレクタ284およびセレクタ286に出力する(図18(a5))。   The OR circuit 283 receives the lower 32-bit data IN2 of the output data (64-bit width data) of the right logical shift unit 285 and the data IN1 read from the FF 282 (FIG. 18 (a4)), and receives the data IN1 and IN2. The OR result is output to the selector 284 and the selector 286 (FIG. 18 (a5)).

セレクタ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 selector 286 receives the upper 32 bits of data S3 of the output data of the right logical shift unit 285 and the output data S4 (S2) of the OR circuit 283, and stores the output data S4 (S2) of the OR circuit 283 in the FF 282 ( FIG. 18 (a6)). For example, since the addition result of the bit length LN and the offset OF is smaller than 32, the data S4 is output to the FF282. Further, the selector 284 outputs the data S2 including the data DD0 as data ODATA to the register R8 (FIG. 18 (a6)). The offset OF is updated from “0” to “10” by the operation shown in FIGS. 9 and 10 described above.

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 data generation unit 29 receives the data EDATA from the instruction execution unit 24, and registers the data DD1 in the data EDATA based on the offset OF (OF = 10) in the register R8. (FIG. 18B). The operation of the output data generation unit 29 is the same as that for the first addition instruction (FIG. 18A) except for the shift amount LSR (44 bits) of the right logical shift unit 285.

ここで、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 FF 282 is output data of the OR circuit 283 at the time of the first addition instruction, it is data including the data DD0 (FIG. 18 (b4)). Further, the lower 32 bits of data IN2 of the output data of the right logical shift unit 285 is data including data DD1 (FIG. 18 (b4)). Therefore, the output data S2 of the OR circuit 283 is data including the data DD0 and DD1 (FIG. 18 (b5)). That is, the register R8 stores data ODATA including data DD0 and DD1 (FIG. 18 (b6)). The offset OF is updated from “10” to “20” by the operation shown in FIGS.

図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 data generation unit 29 receives the data EDATA from the instruction execution unit 24 and offsets the data DD2 in the data EDATA by the offset OF (OF = 20), the data is stored in the register R8 (FIG. 19 (c)). The operation of the output data generation unit 29 is the same as that of the first addition instruction (FIG. 18A) except for the shift amount LSR (34 bits) of the right logical shift unit 285. Since the data IN1 read from the FF 282 is data including the data DD0 and DD1 (FIG. 19 (c4)), the output data S2 and the data ODATA of the OR circuit 283 are data including the data DD0, DD1, and DD2. (FIG. 19 (c5), (c6)). Further, the offset OF is updated from “20” to “30” by the operations shown in FIGS.

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 data generation unit 29 receives the data EDATA from the instruction execution unit 24, and offsets the data DD3a in the data EDATA by an offset OF (OF = 30). ) And the data DD3b in the data EDATA is stored in the FF 282 (FIG. 19D). The data DD3a is the lower 2 bits of the data DD3, and the data DD3b is the upper 8 bits of the data DD3.

出力データ生成部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 data generation unit 29 is the same as that of the first addition instruction (FIG. 18A) except for the operation of the selector 286 and the shift amount LSR (34 bits) of the right logical shift unit 285. . The data IN1 read from the FF 282 is data including data DD0, DD1, and DD2, and the lower 32 bits of data IN2 of the output data of the right logical shift unit 285 is data including data DD3a (FIG. 19 ( d4)). Therefore, the output data S2 and data ODATA of the OR circuit 283 are data including data DD0, DD1, DD2, DD3a (FIGS. 19 (d5) and (d6)).

また、セレクタ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 selector 286 receives the upper 32 bits of data S3 of the output data of the right logical shift unit 285 and the output data S4 (S2) of the OR circuit 283, and stores the data S3 including the data DD3b in the FF 282 (FIG. 18). (D3), (d6)). For example, since the addition result of the bit length LN and the offset OF is 32 or more, the data S3 is output to the FF282. The offset OF, the register number WPT, and the empty EMP are “30”, “R8”, “1” to “8”, “values indicating the register R9 (hereinafter simply referred to as“ register R9 ”). R9) ”and“ 0 ”, respectively.

図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 data generation unit 29 receives the data EDATA from the instruction execution unit 24 and receives the data DD4 in the data EDATA. Is stored in the register R9 (register R indicated by the register number WPT) based on the offset OF (OF = 8) (FIG. 20 (e)). The operation of the output data generation unit 29 is the same as that of the first addition instruction (FIG. 18A) except for the register R9 for storing the data ODATA and the shift amount LSR (46 bits) of the right logical shift unit 285. The same. The offset OF is updated from “8” to “18” by the operation shown in FIGS.

ここで、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 FF 282 is data including data DD3b (data DD3 excluding data DD3a stored in the register R8), and lower 32 bits of data IN2 output from the right logical shift unit 285 are: Data including data DD4 (FIG. 20 (e4)). Therefore, the output data S2 and the data ODATA of the OR circuit 283 are data including the data DD3b and DD4 (FIGS. 20 (e5) and (e6)). Thus, in this embodiment, data DD3 of data DD having a continuous arbitrary bit length (for example, 10 bits) can be stored across the two registers R8 and R9.

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 data generation unit 29 receives the data EDATA from the instruction execution unit 24, and offsets the data DD5 in the data EDATA to the offset OF (OF = 18). ) To store in the register R9 (FIG. 20 (f)). The operation of the output data generation unit 29 is the same as that of the second addition instruction in the second loop (FIG. 20E) except for the shift amount LSR (36 bits) of the right logical shift unit 285. .

なお、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 FF 282 is data including data DD3b and DD4, and the lower 32 bits of data IN2 output from the right logical shift unit 285 is data including data DD5 (FIG. 20 (f4)). ). For this reason, the output data S2 and the data ODATA of the OR circuit 283 are data including the data DD3b, DD4, and DD5 (FIG. 20 (f5) and (f6)). Further, the offset OF is updated from “18” to “28” by the operations shown in FIGS.

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-bit processors 10 and 11 has been described. The present invention is not limited to such an embodiment. For example, the present invention may be applied to a 64-bit processor. In this case, for example, the register file 30 includes general-purpose registers R (R0 to R9) having a 64-bit width. Further, the present invention may be applied to, for example, a processor (SIMD (Single Instruction Multiple Data) processor, superscalar processor, etc.) capable of processing a plurality of instructions and data simultaneously. Also in this case, the same effect as the above-described embodiment can be obtained.

上述した実施形態では、入力データ抽出部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 data extraction units 22 and 23, the instruction execution unit 24, and the output data generation units 28 and 29 operate in a single cycle has been described. The present invention is not limited to such an embodiment. For example, the input data extraction units 22 and 23, the instruction execution unit 24, and the output data generation units 28 and 29 may divide the pipeline stage and operate in multiple cycles. That is, the input data extraction units 22 and 23, the instruction execution unit 24, and the output data generation units 28 and 29 may be configured to operate by pipeline processing. Also in this case, the same effect as the above-described embodiment can be obtained.

上述した図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 SYMBOLS 10, 11 ... Processor; 20, 21 ... Execution unit; 22, 23 ... Input data extraction part; 24 ... Instruction execution part; 25 ... ALU; 26 ... Load / store unit; 28, 29 ... Output data generation part; Register file; 40-45 Control register; 50, 54 Control unit

特開平11−68579号公報Japanese Patent Laid-Open No. 11-68579 特開平6−19683号公報Japanese Patent Laid-Open No. 6-19683

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レジスタに対応する前記制御レジスタの前記オフセット情報および前記長さ情報に基づ配置位置に、前記演算部の演算結果のデータが位置する出力ビット列を生成する出力データ生成部を備え
前記制御部は、前記演算部の演算結果のデータを含む前記出力ビット列が格納される前記第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 .
請求項2記載のプロセッサにおいて、
前記出力ビット列が前記第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.
請求項1ないし請求項3のいずれか1項に記載のプロセッサにおいて、
前記制御レジスタの前記オフセット情報および前記長さ情報は、複数の前記制御レジスタで互いに独立していることを特徴とするプロセッサ。
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.
請求項5記載のプロセッサにおいて、
前記制御部は、前記第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 .
請求項6記載のプロセッサにおいて、
前記制御レジスタは、前記レジスタ情報と、前記オフセット情報と、前記レジスタ群の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 .
JP2009007990A 2009-01-16 2009-01-16 Processor Expired - Fee Related JP5375114B2 (en)

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)

* Cited by examiner, † Cited by third party
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

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