JP4871105B2 - Calculation method and calculation device for finite field GF (3) - Google Patents

Calculation method and calculation device for finite field GF (3) Download PDF

Info

Publication number
JP4871105B2
JP4871105B2 JP2006320307A JP2006320307A JP4871105B2 JP 4871105 B2 JP4871105 B2 JP 4871105B2 JP 2006320307 A JP2006320307 A JP 2006320307A JP 2006320307 A JP2006320307 A JP 2006320307A JP 4871105 B2 JP4871105 B2 JP 4871105B2
Authority
JP
Japan
Prior art keywords
register
registers
values
value
stored
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
JP2006320307A
Other languages
Japanese (ja)
Other versions
JP2008134812A (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 JP2006320307A priority Critical patent/JP4871105B2/en
Publication of JP2008134812A publication Critical patent/JP2008134812A/en
Application granted granted Critical
Publication of JP4871105B2 publication Critical patent/JP4871105B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、標数が3の有限体(ガロア体)GF(3)の演算方法および演算装置に関し、特に乗算、加算及び減算の演算方法および演算装置に関する。   The present invention relates to a calculation method and a calculation device for a finite field (Galois field) GF (3) having a characteristic of 3, and more particularly to a calculation method and a calculation device for multiplication, addition, and subtraction.

有限体(ガロア体)の演算は,デジタルオーディオ機器などのエラー訂正方式、公開鍵暗号方式などの技術分野で広く行われており、前者では主に標数2の有限体、後者では標数2以上の有限体が用いられる.有限体(ガロア体)GF(3)の演算は、標数3の有限体GF(3m)の計算過程で多数回行うことが必要である(mは正の整数)。GF(3m)の計算を必要とする例としては、楕円曲線暗号におけるペアリングの高速演算などが挙げられる。ペアリングの高速演算については、例えば、非特許文献1、2および特許文献1などに記載されている。非特許文献1は、ペアリングを用いることでIDベース暗号などの新しい暗号システムが可能になることも記載している。 Arithmetic operations of finite fields (Galois fields) are widely performed in technical fields such as error correction methods and public key cryptosystems for digital audio equipment, etc. The former is mainly a finite field with characteristic 2 and the characteristic 2 with the latter. The above finite field is used. The calculation of the finite field (Galois field) GF (3) needs to be performed many times in the calculation process of the characteristic 3 finite field GF (3 m ) (m is a positive integer). As an example that requires calculation of GF (3 m ), there is a high-speed pairing calculation in elliptic curve cryptography. For example, non-patent documents 1 and 2 and patent document 1 describe high-speed pairing operations. Non-Patent Document 1 also describes that a new encryption system such as ID-based encryption becomes possible by using pairing.

有限体(ガロア体)GF(3)の演算自体については、広く知られているので、これ以上の説明は省略する。   Since the calculation itself of the finite field (Galois field) GF (3) is widely known, further explanation is omitted.

白勢・高木・岡本,「Tateペアリングの効率的なアルゴリズム」信学技報ISEC2006-12,0019-26,電子情報通信学会Shirase, Takagi, Okamoto, "Efficient Algorithm for Tate Pairing" IEICE Technical Report ISEC2006-12,0019-26, IEICE G. Granger, D. Page & M. Stam, "Hardware and Software Normal Basis Arithmetic for Pairing Based Cryptography in Characteristic Three*", Cryptology ePrint Archive 2004/157G. Granger, D. Page & M. Stam, "Hardware and Software Normal Basis Arithmetic for Pairing Based Cryptography in Characteristic Three *", Cryptology ePrint Archive 2004/157 特開2006−178125JP 2006-178125 A

ペアリングの計算は演算量が多いため、非特許文献1、2および特許文献1に記載されているように計算を効率化する手法が求められる。   Since the calculation of pairing requires a large amount of computation, a method for improving the efficiency of calculation as described in Non-Patent Documents 1 and 2 and Patent Document 1 is required.

本発明は、標数3の有限体GF(3)の乗算と加減算が高速に行える有限体GF(3)の演算方法及び演算装置の実現を目的とする。   An object of the present invention is to realize a calculation method and a calculation apparatus for a finite field GF (3) in which multiplication, addition and subtraction of a finite field GF (3) with characteristic 3 can be performed at high speed.

上記目的を実現するため、本発明の有限体GF(3)の演算方法及び演算装置は、2ビットで表現することが可能であり、通常は2ビットで表現されていた3個の元0、1、2を3ビットで表現し、ビット同士の論理演算のみで、乗算・加減算・表現の相互変換演算を行うことを特徴とする。   To achieve the above object, the finite field GF (3) computation method and computation device of the present invention can be represented by 2 bits, and usually 3 elements 0, which are represented by 2 bits, 1 and 2 are expressed by 3 bits, and a mutual conversion operation of multiplication, addition, subtraction, and expression is performed only by a logical operation between bits.

本発明によれば、3ビットの外へのキャリー/ボローが発生せず、GF(3)の各元に共通のアルゴリズムで演算が可能であり、実質的に演算ステップ数を減少させることができる。   According to the present invention, the carry / borrow to the outside of 3 bits does not occur, the calculation can be performed with an algorithm common to each element of GF (3), and the number of calculation steps can be substantially reduced. .

演算装置では、3ビット表現の各ビットを異なるレジスタに割り当てるように、少なくとも6個のレジスタを設ける。各レジスタのビット幅は、適宜設定され、ビット幅と同じ個数の演算が並列に行える。   In the arithmetic unit, at least six registers are provided so that each bit of the 3-bit representation is assigned to a different register. The bit width of each register is set as appropriate, and the same number of operations as the bit width can be performed in parallel.

上記のように、本発明では、通常は2ビットで表現されていた3個の元を3ビットで表現するため、必要に応じて、演算の入力を2ビット表現から3ビット表現に変換し、演算の出力を3ビット表現から2ビット表現に変換する処理を行う。表現の変換処理が簡単に行える表現を使用する。   As described above, in the present invention, since the three elements normally expressed in 2 bits are expressed in 3 bits, the input of the operation is converted from the 2-bit expression to the 3-bit expression as necessary. A process of converting the output of the operation from the 3-bit representation to the 2-bit representation is performed. Use expressions that can be easily converted.

乗算においては、入力と出力の3ビット表現が異なるようにしてもよい。   In multiplication, the input and output 3-bit representations may be different.

また、乗算と加算及び減算とで、3個の元の3ビット表現が異なるようにしてもよい。   Further, the three original 3-bit representations may be different between multiplication, addition and subtraction.

GF(3)の演算では、0の減算は0の加算とし、1の減算は2の加算とし、2の減算は1の加算として行うことが可能であり、本発明でも同様である。   In the calculation of GF (3), subtraction of 0 can be performed as addition of 0, subtraction of 1 can be performed as addition of 2, and subtraction of 2 can be performed as addition of 1, which is the same in the present invention.

多項式の積の演算は、乗算結果を加減算するので、乗算結果の出力表現と、加算または減算の入力表現を一致させると変換処理が不要である。   Since the multiplication operation of the polynomial adds and subtracts the multiplication result, conversion processing is not required if the output expression of the multiplication result matches the input expression of addition or subtraction.

本発明によれば、3ビットの外へのキャリー/ボローが発生しないので、乗算と加減算とでそれぞれ演算が効率的に実行でき、実質的に演算ステップ数を減少させて高速化が図れる。また、3ビットの外へのキャリー/ボローが発生せず、GF(3)の各元に共通のアルゴリズムで演算が可能であるので、演算装置の構成を簡単にできる。   According to the present invention, since carry / borrow to the outside of 3 bits does not occur, the operation can be executed efficiently by multiplication and addition / subtraction, respectively, and the speed can be increased by substantially reducing the number of operation steps. Further, since carry / borrow to the outside of 3 bits does not occur and calculation can be performed with an algorithm common to each element of GF (3), the configuration of the calculation device can be simplified.

また、演算装置の構成が簡単であるので、各レジスタのビット幅を大きくすることが容易であり、演算の並列度を高くして高速化が可能である。   Further, since the configuration of the arithmetic unit is simple, it is easy to increase the bit width of each register, and the parallelism of the arithmetic can be increased to increase the speed.

本発明の実施例を説明する前に有限体(ガロア体)GF(3)の演算について簡単に説明する。   Before describing the embodiment of the present invention, the operation of a finite field (Gaalois field) GF (3) will be briefly described.

図1は、有限体GF(3)の演算規則を示す図である。本発明は、有限体GF(3)の四則演算のうちの、加算、減算、乗算を対象とする。   FIG. 1 is a diagram showing calculation rules for the finite field GF (3). The present invention is directed to addition, subtraction, and multiplication among the four arithmetic operations of the finite field GF (3).

図2は、本発明の実施例のGF(3)演算装置のハードウェア構成図である。図示のように、演算装置は、32ビットのビット幅を有する9個のレジスタR0−R8、32ビット並列AND回路12と、32ビット並列OR回路13と、32ビット並列XOR回路14と、32ビット並列COPY回路15と、各部を制御する制御部16と、3つのバス17−18と、を有する。レジスタR0−R2が第1レジスタグループ11Xを、レジスタR3−R5が第2レジスタグループ11Yを、レジスタR6−R8が第3レジスタグループ11Zを、構成する。レジスタR0−R8のそれぞれは、記憶しているデータをバス17および18に出力し、バス19からのデータを記憶するように構成されている。32ビット並列AND回路12、32ビット並列OR回路13および32ビット並列XOR回路14は、バス17および18のデータを入力として、AND(論理積)、OR(論理和)、XOR(排他的論理和)演算を行い、演算結果をバス19に出力する。従って、32ビット並列AND回路12、32ビット並列OR回路13および32ビット並列XOR回路14は、レジスタR0−R8のいずれか2つに記憶されたデータを入力として演算を行い、演算結果はレジスタR0−R8のいずれかに格納される。また、32ビット並列COPY回路15は、バス17のデータを入力して、バス19にそのまま出力する。従って、レジスタR0−R8のいずれかに記憶されたデータが、32ビット並列COPY回路15を介して、レジスタR0−R8のいずれかにコピーされる。   FIG. 2 is a hardware configuration diagram of the GF (3) arithmetic device according to the embodiment of the present invention. As shown in the figure, the arithmetic unit includes nine registers R0 to R8 having a 32-bit bit width, a 32-bit parallel AND circuit 12, a 32-bit parallel OR circuit 13, a 32-bit parallel XOR circuit 14, and a 32-bit unit. It has a parallel COPY circuit 15, a control unit 16 for controlling each unit, and three buses 17-18. The registers R0-R2 constitute the first register group 11X, the registers R3-R5 constitute the second register group 11Y, and the registers R6-R8 constitute the third register group 11Z. Each of the registers R0 to R8 is configured to output the stored data to the buses 17 and 18 and store the data from the bus 19. The 32-bit parallel AND circuit 12, the 32-bit parallel OR circuit 13 and the 32-bit parallel XOR circuit 14 receive AND (logical product), OR (logical sum), and XOR (exclusive logical sum) data from the buses 17 and 18 as inputs. ) Perform an operation and output the operation result to the bus 19. Accordingly, the 32-bit parallel AND circuit 12, the 32-bit parallel OR circuit 13, and the 32-bit parallel XOR circuit 14 perform an operation using data stored in any two of the registers R0 to R8 as input, and the operation result is stored in the register R0. -Stored in any of R8. The 32-bit parallel COPY circuit 15 inputs the data on the bus 17 and outputs it to the bus 19 as it is. Therefore, the data stored in any of the registers R0 to R8 is copied to any of the registers R0 to R8 via the 32-bit parallel COPY circuit 15.

ここでは、レジスタ、演算回路およびバスのビット幅を32ビットとしたが、これに限定されず、任意のビット数に設定可能である。また、第3レジスタグループ11Zを構成するレジスタR6−R8を設けたが、このレジスタR6−R8を必要とするのはある加減算を行う時のみであり、この加減算を行わない時には設ける必要はない。また、他のレジスタグループと同じ構成にするために第3レジスタグループ11Zにも3個のレジスタR6−R8を設けたが、この加減算を行う時でもレジスタR8は使用しないので、R8を除くことが可能である。   Here, the bit width of the register, the arithmetic circuit, and the bus is 32 bits, but the present invention is not limited to this, and any number of bits can be set. Although the registers R6-R8 constituting the third register group 11Z are provided, the registers R6-R8 are required only when performing some addition / subtraction, and do not need to be provided when this addition / subtraction is not performed. In addition, in order to make the same configuration as the other register groups, the third register group 11Z is also provided with three registers R6-R8. However, since the register R8 is not used even when this addition / subtraction is performed, R8 may be excluded. Is possible.

図3は、演算装置の各演算回路の動作およびレジスタのデータ格納動作を説明する図である。各演算回路は、任意の2個のレジスタ(同一でもよい)Ri、Rjに格納されているデータを入力として、それらのビットごとの指示された論理演算を、1ステップ(1クロックサイクル)で行い、演算結果は最初に指定したレジスタRiに上書きされる。各演算回路の処理を式で表せば、図3の(A)から(C)のようになる。ここで、0≦i≦8および0≦j≦8である。また、32ビット並列COPY回路15は、任意のレジスタRiの値を任意のレジスタRjに1ステップでコピーする。この処理を式で表せば、図3の(D)のようになる。ここで、0≦i≦8および0≦j≦8である。   FIG. 3 is a diagram for explaining the operation of each arithmetic circuit of the arithmetic unit and the data storage operation of the register. Each arithmetic circuit inputs the data stored in any two registers (may be the same) Ri and Rj and performs the logical operation instructed for each bit in one step (one clock cycle). The operation result is overwritten in the first designated register Ri. If the processing of each arithmetic circuit is expressed by an equation, it will be as shown in FIGS. Here, 0 ≦ i ≦ 8 and 0 ≦ j ≦ 8. The 32-bit parallel COPY circuit 15 copies the value of an arbitrary register Ri to an arbitrary register Rj in one step. If this processing is expressed by an equation, it is as shown in FIG. Here, 0 ≦ i ≦ 8 and 0 ≦ j ≦ 8.

次に、レジスタにおけるデータの格納方法を説明する。3ビットで表現された元は、ビットごとに各グループの別のレジスタに格納する。レジスタのビット幅(ここでは32ビット)と同じ個数の元について、それらの3ビット表現を、(Xc−32,Xb−32,Xa−32),・・・,(Xc−1,Xb−1,Xa−1)とすると、それを第1レジスタグループ11XのレジスタR0−R2に格納すると、図2に示すようになる。第2レジスタグループ11Y、第3レジスタグループ11Zについても、同様に図2に示すようになる。   Next, a method for storing data in the register will be described. The element represented by 3 bits is stored in a separate register of each group for each bit. For the same number of elements as the bit width of the register (32 bits in this case), the three-bit representation is expressed as (Xc−32, Xb−32, Xa−32),..., (Xc−1, Xb−1). , Xa-1), when stored in the registers R0-R2 of the first register group 11X, the result is as shown in FIG. Similarly, the second register group 11Y and the third register group 11Z are as shown in FIG.

演算回路のうち、例えばAND回路をR3←AND(R3,R0)で動作させると、
Ya−i←Ya−i AND Xa−i
が、1ステップでi=1から32まで同時に実行される。
Of the arithmetic circuits, for example, when an AND circuit is operated as R3 ← AND (R3, R0),
Ya-i ← Ya-i AND Xa-i
Are simultaneously executed from i = 1 to 32 in one step.

以下、乗算、加算および減算の各演算についての処理を説明する。   Hereinafter, processing for each operation of multiplication, addition, and subtraction will be described.

実施例の演算装置では、乗算処理は、2つの処理方法で行うことが可能である。   In the arithmetic device of the embodiment, the multiplication processing can be performed by two processing methods.

図4は、第1の乗算処理におけるレジスタの値の変化を示す第1の乗算処理の説明図であり、図5は第1の乗算処理を示すフローチャートである。32ビット幅の各データについて、図示のような処理が行われる。   FIG. 4 is an explanatory diagram of the first multiplication process showing the change in the register value in the first multiplication process, and FIG. 5 is a flowchart showing the first multiplication process. The processing as shown in the figure is performed for each data having a 32-bit width.

図4に示すように、第1の乗算処理では、元0、1、2はそれぞれ”000”、”011”、”110”で表現される。図4に示した処理では、入力の一方は、第1レジスタグループ11XのレジスタR0−R2に格納されたデータであり、入力の他方は第2レジスタグループ11YのレジスタR3−R5に格納されたデータであり、演算結果は第2レジスタグループ11YのレジスタR3−R5に格納される。第1の入力の3ビットのうち、XaビットがR0に、XbビットがR1に、XcビットがR2に格納され、第2の入力の3ビットのうち、YaビットがR3に、YbビットがR4に、YcビットがR5に格納される。   As shown in FIG. 4, in the first multiplication process, the elements 0, 1, and 2 are represented by “000”, “011”, and “110”, respectively. In the processing shown in FIG. 4, one of the inputs is data stored in the registers R0-R2 of the first register group 11X, and the other input is data stored in the registers R3-R5 of the second register group 11Y. The operation result is stored in the registers R3-R5 of the second register group 11Y. Of the 3 bits of the first input, the Xa bit is stored in R0, the Xb bit is stored in R1, and the Xc bit is stored in R2. Of the 3 bits of the second input, the Ya bit is stored in R3 and the Yb bit is stored in R4. The Yc bit is stored in R5.

図4において、各列は、図示した入力に対するレジスタの値の変化を示し、上段が第1レジスタグループ11XのレジスタR0−R2に格納されたデータを、下段が第2レジスタグループ11YのレジスタR3−R5に格納されたデータを示す。   In FIG. 4, each column shows a change in the value of the register with respect to the illustrated input. The upper row shows the data stored in the registers R0-R2 of the first register group 11X, and the lower row shows the register R3- in the second register group 11Y. Data stored in R5 is shown.

図5に示すように、ステップ101では、32ビット並列AND回路12が、レジスタR3の値とレジスタR0の値のANDを演算し、演算結果がレジスタR3に格納される。   As shown in FIG. 5, in step 101, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R3 and the value of the register R0, and the calculation result is stored in the register R3.

ステップ102では、32ビット並列AND回路12が、レジスタR4の値とレジスタR1の値のANDを演算し、演算結果がレジスタR4に格納される。   In step 102, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R4 and the value of the register R1, and the calculation result is stored in the register R4.

ステップ103では、32ビット並列AND回路12が、レジスタR5の値とレジスタR2の値のANDを演算し、演算結果がレジスタR5に格納される。   In step 103, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R5 and the value of the register R2, and the calculation result is stored in the register R5.

ステップ104では、32ビット並列OR回路13が、レジスタR3の値とレジスタR5の値のORを演算し、演算結果がレジスタR3に格納される。   In step 104, the 32-bit parallel OR circuit 13 calculates the OR of the value of the register R3 and the value of the register R5, and the calculation result is stored in the register R3.

ステップ105では、32ビット並列OR回路13が、レジスタR5の値とレジスタR4の値のORを演算し、演算結果がレジスタR5に格納される。   In step 105, the 32-bit parallel OR circuit 13 calculates the OR of the value of the register R5 and the value of the register R4, and the calculation result is stored in the register R5.

ステップ106では、32ビット並列XOR回路14が、レジスタR5の値とレジスタR3の値のXORを演算し、演算結果がレジスタR5に格納される。   In step 106, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R5 and the value of the register R3, and the calculation result is stored in the register R5.

各ステップで、各レジスタの値は図示のように変化する。   At each step, the value of each register changes as shown.

以上の処理により、入力のそれぞれの組合せに対して、GF(3)乗算に即した演算結果が得られる。演算結果は、入力と同じ形で表現される。   With the above processing, an operation result corresponding to GF (3) multiplication is obtained for each combination of inputs. The calculation result is expressed in the same form as the input.

第1の乗算処理では、入力および出力において、元0、1、2はそれぞれ”000”、”011”、”110”で表現されるが、これは通常使用される表現、すなわち元0、1、2を”00”、”01”、”10”で表現する形式と異なる。そのため、通常の表現のデータを本発明の演算装置に入力する場合、および本発明の演算装置で演算した結果を通常の表現のデータとして出力する場合には、表現形式の変換処理が必要である。   In the first multiplication process, the elements 0, 1, and 2 are represented by “000”, “011”, and “110”, respectively, at the input and output. 2 is different from the format expressing “00”, “01”, and “10”. Therefore, when normal expression data is input to the arithmetic device of the present invention, and when the result calculated by the arithmetic device of the present invention is output as normal expression data, a conversion processing of the expression format is required. .

図6の(A)は、通常表現から第1の乗算処理の表現に変換する変換処理におけるレジスタの値の変化を示す変換処理の説明図であり、図6の(B)は、第1の乗算処理の表現から通常表現に変換する変換処理におけるレジスタの値の変化を示す変換処理の説明図であり、図7の(A)は通常表現から第1の乗算処理の表現に変換する変換処理を示すフローチャートであり、図7の(B)は第1の乗算処理の表現から通常表現に変換する変換処理を示すフローチャートである。   6A is an explanatory diagram of a conversion process showing a change in a register value in a conversion process for converting from a normal expression to an expression of the first multiplication process. FIG. 6B is a diagram illustrating the first process. FIG. 8A is an explanatory diagram of a conversion process showing a change in a register value in a conversion process for converting a representation of a multiplication process into a normal expression, and FIG. 7A shows a conversion process for converting the normal expression into a first multiplication process expression FIG. 7B is a flowchart showing a conversion process for converting the expression of the first multiplication process into the normal expression.

図6の(A)に示すように、通常表現では、元0、1、2は”00”、”01”、”10”で表現されるので、これを”000”、”011”、”110”に変換する。変換に第1レジスタグループ11Xを使用する場合には、通常表現の2ビットの値をそれぞれレジスタR0、R1に入力する。この時、レジスタR3の値は何でもよい。図7の(A)に示すように、ステップ201では、32ビット並列COPY回路15が、レジスタR1の値をレジスタR2にコピーする。ステップ202では、32ビット並列OR回路13がレジスタR1の値とレジスタR0の値のORを演算して、演算結果がレジスタR1に格納される。この時の各レジスタの値の変化は図6の(A)の通りであり、第1レジスタグループ11XのレジスタR0−R2に第1の乗算処理の表現のデータが格納される。   As shown in FIG. 6A, in the normal expression, the elements 0, 1, and 2 are expressed by “00”, “01”, and “10”, so that these are expressed as “000”, “011”, “ 110 ". When the first register group 11X is used for conversion, the 2-bit value of the normal expression is input to the registers R0 and R1, respectively. At this time, the value of the register R3 may be anything. As shown in FIG. 7A, in step 201, the 32-bit parallel COPY circuit 15 copies the value of the register R1 to the register R2. In step 202, the 32-bit parallel OR circuit 13 calculates the OR of the value of the register R1 and the value of the register R0, and the calculation result is stored in the register R1. The change in the value of each register at this time is as shown in FIG. 6A, and data representing the expression of the first multiplication process is stored in the registers R0-R2 of the first register group 11X.

図6の(B)に示すように、第1の乗算処理の出力の元0、1、2は”000”、”011”、”110”で表現されるので、これを通常表現の”00”、”01”、”10”に変換する。ここでは、第1レジスタグループ11Xのデータを変換するとする。図7の(B)に示すように、ステップ211では、32ビット並列XOR回路14がレジスタR0の値とレジスタR1の値のXORを演算して、演算結果がレジスタR0に格納される。この時の各レジスタの値の変化は図6の(B)の通りであり、第1レジスタグループ11XのレジスタR0、R1に通常表現のデータが格納される。   As shown in FIG. 6B, the elements 0, 1, and 2 of the output of the first multiplication process are expressed by “000”, “011”, and “110”. “,” “01,” and “10”. Here, it is assumed that the data of the first register group 11X is converted. As shown in FIG. 7B, in step 211, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R0 and the value of the register R1, and the calculation result is stored in the register R0. The change in the value of each register at this time is as shown in FIG. 6B, and normal expression data is stored in the registers R0 and R1 of the first register group 11X.

次に実施例のGF(3)の演算装置が行う第2の乗算処理について説明する。   Next, the second multiplication process performed by the arithmetic unit of GF (3) of the embodiment will be described.

図8は、第2の乗算処理におけるレジスタの値の変化を示す第2の乗算処理の説明図であり、図9は第1の乗算処理を示すフローチャートである。32ビット幅の各データについて、図示のような処理が行われる。   FIG. 8 is an explanatory diagram of the second multiplication process showing the change in the register value in the second multiplication process, and FIG. 9 is a flowchart showing the first multiplication process. The processing as shown in the figure is performed for each data having a 32-bit width.

図8に示すように、第2の乗算処理の入力データの表現は第1の乗算処理と同じであるが、出力(演算結果)の表現は異なり、元0、1、2はそれぞれ”X00”、”X11”、”X10”で表現される(ここで、Xは0または1のどちらでもよい)。図4の説明と同様に、図8に示した処理では、入力の一方は、第1レジスタグループ11XのレジスタR0−R2に格納されたデータであり、入力の他方は第2レジスタグループ11YのレジスタR3−R5に格納されたデータであり、演算結果は第2レジスタグループ11YのレジスタR3−R5に格納される。   As shown in FIG. 8, the representation of the input data of the second multiplication process is the same as that of the first multiplication process, but the expression of the output (calculation result) is different, and the elements 0, 1 and 2 are each “X00”. , “X11” and “X10” (where X may be either 0 or 1). As in the description of FIG. 4, in the processing shown in FIG. 8, one of the inputs is data stored in the registers R0 to R2 of the first register group 11X, and the other input is the register of the second register group 11Y. The data stored in R3-R5, and the operation result is stored in the registers R3-R5 of the second register group 11Y.

図9に示すように、ステップ301では、32ビット並列AND回路12が、レジスタR3の値とレジスタR0の値のANDを演算し、演算結果がレジスタR3に格納される。   As shown in FIG. 9, in step 301, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R3 and the value of the register R0, and the calculation result is stored in the register R3.

ステップ202では、32ビット並列AND回路12が、レジスタR4の値とレジスタR1の値のANDを演算し、演算結果がレジスタR4に格納される。   In step 202, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R4 and the value of the register R1, and the calculation result is stored in the register R4.

ステップ203では、32ビット並列AND回路12が、レジスタR5の値とレジスタR2の値のANDを演算し、演算結果がレジスタR5に格納される。   In step 203, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R5 and the value of the register R2, and the calculation result is stored in the register R5.

ステップ304では、32ビット並列OR回路13が、レジスタR3の値とレジスタR5の値のORを演算し、演算結果がレジスタR3に格納される。   In step 304, the 32-bit parallel OR circuit 13 calculates the OR of the value of the register R3 and the value of the register R5, and the calculation result is stored in the register R3.

各ステップで、各レジスタの値は図示のように変化する。   At each step, the value of each register changes as shown.

以上の処理により、入力のそれぞれの組合せに対して、GF(3)乗算に即した演算結果が得られる。演算結果では、元0、1、2がそれぞれ”X00”、”X11”、”X10”で表現される。   With the above processing, an operation result corresponding to GF (3) multiplication is obtained for each combination of inputs. In the calculation result, the elements 0, 1, and 2 are represented by “X00”, “X11”, and “X10”, respectively.

図10の(A)は、通常表現から第2の乗算処理の表現に変換する変換処理におけるレジスタの値の変化を示す変換処理の説明図であり、図10の(B)は、第2の乗算処理の表現から通常表現に変換する変換処理におけるレジスタの値の変化を示す変換処理の説明図である。この変換処理は、実質的に通常表現と第1の乗算処理用表現の間の変換と同じであるので、説明は省略する。   FIG. 10A is an explanatory diagram of a conversion process showing a change in the value of a register in the conversion process for converting the normal expression into the expression of the second multiplication process. FIG. 10B is a diagram illustrating the second process. It is explanatory drawing of the conversion process which shows the change of the value of the register | resistor in the conversion process which converts into a normal expression from the expression of a multiplication process. Since this conversion process is substantially the same as the conversion between the normal expression and the first expression for multiplication processing, the description is omitted.

実施例の演算装置では、加算処理についても2つの処理方法で行うことが可能である。   In the arithmetic device of the embodiment, the addition process can be performed by two processing methods.

図11は、第1の加算処理におけるレジスタの値の変化を示す第1の加算処理の説明図であり、図12は第1の加算処理を示すフローチャートである。32ビット幅の各データについて、図示のような処理が行われる。   FIG. 11 is an explanatory diagram of the first addition process showing a change in the value of the register in the first addition process, and FIG. 12 is a flowchart showing the first addition process. The processing as shown in the figure is performed for each data having a 32-bit width.

図11に示すように、第1の加算処理では、元0、1、2はそれぞれ”X00”、”X11”、”X10”で表現される(Xは0または1のどちらでもよい)。図11に示した処理では、入力の一方は、第1レジスタグループ11XのレジスタR0−R2に格納されたデータであり、入力の他方は第2レジスタグループ11YのレジスタR3−R5に格納されたデータであり、演算結果は第2レジスタグループ11YのレジスタR3−R5に格納される。第1の入力の3ビットのうち、XaビットがR0に、XbビットがR1に、XcビットがR2に格納され、第2の入力の3ビットのうち、YaビットがR3に、YbビットがR4に、YcビットがR5に格納される。   As shown in FIG. 11, in the first addition process, the elements 0, 1, and 2 are expressed by “X00”, “X11”, and “X10”, respectively (X may be 0 or 1). In the processing shown in FIG. 11, one of the inputs is data stored in the registers R0-R2 of the first register group 11X, and the other input is the data stored in the registers R3-R5 of the second register group 11Y. The operation result is stored in the registers R3-R5 of the second register group 11Y. Of the 3 bits of the first input, the Xa bit is stored in R0, the Xb bit is stored in R1, and the Xc bit is stored in R2. Of the 3 bits of the second input, the Ya bit is stored in R3 and the Yb bit is stored in R4. The Yc bit is stored in R5.

図12に示すように、ステップ401では、レジスタR0の値をレジスタR5にコピーする。   As shown in FIG. 12, in step 401, the value of the register R0 is copied to the register R5.

ステップ402では、32ビット並列AND回路12が、レジスタR5の値とレジスタR4の値のANDを演算し、演算結果がレジスタR5に格納される。   In step 402, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R5 and the value of the register R4, and the calculation result is stored in the register R5.

ステップ403では、レジスタR3の値をレジスタR2にコピーする。   In step 403, the value of the register R3 is copied to the register R2.

ステップ404では、32ビット並列XOR回路14が、レジスタR2の値とレジスタR0の値のXORを演算し、演算結果がレジスタR2に格納される。   In step 404, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R2 and the value of the register R0, and the calculation result is stored in the register R2.

ステップ405では、32ビット並列XOR回路14が、レジスタR0の値とレジスタR5の値のXORを演算し、演算結果がレジスタR0に格納される。   In step 405, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R0 and the value of the register R5, and the calculation result is stored in the register R0.

ステップ406では、32ビット並列XOR回路14が、レジスタR3の値とレジスタR5の値のXORを演算し、演算結果がレジスタR3に格納される。   In step 406, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R3 and the value of the register R5, and the calculation result is stored in the register R3.

ステップ407では、32ビット並列OR回路13が、レジスタR3の値とレジスタR0の値のORを演算し、演算結果がレジスタR3に格納される。   In step 407, the 32-bit parallel OR circuit 13 calculates the OR of the value of the register R3 and the value of the register R0, and the calculation result is stored in the register R3.

ステップ408では、32ビット並列OR回路13が、レジスタR4の値とレジスタR1の値のORを演算し、演算結果がレジスタR4に格納される。   In step 408, the 32-bit parallel OR circuit 13 calculates the OR of the value of the register R4 and the value of the register R1, and the calculation result is stored in the register R4.

ステップ409では、32ビット並列AND回路12が、レジスタR5の値とレジスタR2の値のANDを演算し、演算結果がレジスタR5に格納される。   In step 409, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R5 and the value of the register R2, and the calculation result is stored in the register R5.

ステップ410では、32ビット並列XOR回路14が、レジスタR4の値とレジスタR5の値のXORを演算し、演算結果がレジスタR4に格納される。   In step 410, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R4 and the value of the register R5, and the calculation result is stored in the register R4.

ステップ411では、32ビット並列XOR回路14が、レジスタR3の値とレジスタR5の値のXORを演算し、演算結果がレジスタR3に格納される。   In step 411, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R3 and the value of the register R5, and the calculation result is stored in the register R3.

各ステップで、各レジスタの値は図11のように変化する。   At each step, the value of each register changes as shown in FIG.

以上の処理により、入力のそれぞれの組合せに対して、GF(3)加算に即した演算結果が得られる。演算結果は、入力と同じ形で表現される。   With the above processing, a calculation result corresponding to the addition of GF (3) is obtained for each combination of inputs. The calculation result is expressed in the same form as the input.

図13の(A)は、通常表現から第1の加算処理の表現に変換する変換処理におけるレジスタの値の変化を示す変換処理の説明図であり、図13の(B)は、第1の加算処理の表現から通常表現に変換する変換処理におけるレジスタの値の変化を示す変換処理の説明図である。   FIG. 13A is an explanatory diagram of a conversion process showing a change in a register value in the conversion process for converting the normal expression into the expression of the first addition process. FIG. 13B is a diagram illustrating the first process. It is explanatory drawing of the conversion process which shows the change of the value of the register | resistor in the conversion process which converts from the expression of an addition process to a normal expression.

図13の(A)に示すように、通常表現から第1の加算処理の表現に変換する変換処理は、図6の(A)および図7の(A)の変換処理においてステップ201を除いた処理である。また、図13の(B)に示すように、第1の加算処理の表現から通常表現に変換する変換処理は、図6の(B)および図7の(B)の変換処理と同じであるので、説明は省略する。   As shown in FIG. 13A, the conversion process for converting from the normal expression to the expression of the first addition process excludes step 201 in the conversion processes of FIGS. 6A and 7A. It is processing. Further, as shown in FIG. 13B, the conversion process for converting the expression of the first addition process into the normal expression is the same as the conversion process of FIG. 6B and FIG. 7B. Therefore, explanation is omitted.

第1の加算処理では、入力は第2の乗算処理の出力と同じ表現であり、第2の乗算処理の出力に対して第1の加算処理で加算を行うのであれば、変換処理は不要である。   In the first addition process, the input is the same expression as the output of the second multiplication process, and if the addition is performed in the first addition process with respect to the output of the second multiplication process, the conversion process is unnecessary. is there.

図14及び図15は、第2の加算処理におけるレジスタの値の変化を示す第2の加算処理の説明図であり、図16は第2の加算処理を示すフローチャートである。32ビット幅の各データについて、図示のような処理が行われる。第2の加算処理では、第3レジスタグループ11ZのレジスタR6およびR7も使用される。   14 and 15 are explanatory diagrams of the second addition process showing changes in register values in the second addition process, and FIG. 16 is a flowchart showing the second addition process. The processing as shown in the figure is performed for each data having a 32-bit width. In the second addition process, the registers R6 and R7 of the third register group 11Z are also used.

図14および図15に示すように、第2の加算処理では、元0、1、2はそれぞれ”X00”、”X01”、”X10”で表現される(Xは0または1のどちらでもよい)。言い換えれば、通常表現と同じ表現である。図14および図15に示した処理では、入力の一方は、第1レジスタグループ11XのレジスタR0−R2に格納されたデータであり、入力の他方は第2レジスタグループ11YのレジスタR3−R5に格納されたデータであり、演算結果は第3レジスタグループ11ZのレジスタR6−R8(R8は実際には使用されない)に格納される。第1の入力の3ビットのうち、XaビットがR0に、XbビットがR1に、XcビットがR2に格納され、第2の入力の3ビットのうち、YaビットがR3に、YbビットがR4に、YcビットがR5に格納される。   As shown in FIGS. 14 and 15, in the second addition process, the elements 0, 1, and 2 are represented by “X00”, “X01”, and “X10”, respectively (X may be either 0 or 1) ). In other words, it is the same expression as the normal expression. In the processing shown in FIGS. 14 and 15, one of the inputs is data stored in the registers R0-R2 of the first register group 11X, and the other input is stored in the registers R3-R5 of the second register group 11Y. The operation result is stored in the registers R6-R8 (R8 is not actually used) of the third register group 11Z. Of the 3 bits of the first input, the Xa bit is stored in R0, the Xb bit is stored in R1, and the Xc bit is stored in R2. Of the 3 bits of the second input, the Ya bit is stored in R3 and the Yb bit is stored in R4. The Yc bit is stored in R5.

図16に示すように、ステップ601では、レジスタR3の値をレジスタR6にコピーする。   As shown in FIG. 16, in step 601, the value of the register R3 is copied to the register R6.

ステップ602では、32ビット並列XOR回路14が、レジスタR6の値とレジスタR0の値のXORを演算し、演算結果がレジスタR6に格納される。   In step 602, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R6 and the value of the register R0, and the calculation result is stored in the register R6.

ステップ603では、レジスタR4の値をレジスタR7にコピーする。   In step 603, the value of the register R4 is copied to the register R7.

ステップ604では、32ビット並列XOR回路14が、レジスタR7の値とレジスタR1の値のXORを演算し、演算結果がレジスタR7に格納される。   In step 604, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R7 and the value of the register R1, and the calculation result is stored in the register R7.

ステップ605では、32ビット並列AND回路12が、レジスタR1の値とレジスタR4の値のANDを演算し、演算結果がレジスタR1に格納される。   In step 605, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R1 and the value of the register R4, and the calculation result is stored in the register R1.

ステップ606では、32ビット並列AND回路12が、レジスタR3の値とレジスタR0の値のANDを演算し、演算結果がレジスタR3に格納される。   In step 606, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R3 and the value of the register R0, and the calculation result is stored in the register R3.

ステップ607では、32ビット並列OR回路13が、レジスタR7の値とレジスタR3の値のORを演算し、演算結果がレジスタR7に格納される。   In step 607, the 32-bit parallel OR circuit 13 calculates the OR of the value of the register R7 and the value of the register R3, and the calculation result is stored in the register R7.

ステップ608では、32ビット並列OR回路13が、レジスタR6の値とレジスタR1の値のORを演算し、演算結果がレジスタR6に格納される。   In step 608, the 32-bit parallel OR circuit 13 calculates the OR of the value of the register R6 and the value of the register R1, and the calculation result is stored in the register R6.

ステップ609では、32ビット並列XOR回路14が、レジスタR1の値とレジスタR6の値のXORを演算し、演算結果がレジスタR1に格納される。   In step 609, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R1 and the value of the register R6, and the calculation result is stored in the register R1.

ステップ610では、32ビット並列AND回路12が、レジスタR1の値とレジスタR7の値のANDを演算し、演算結果がレジスタR1に格納される。   In step 610, the 32-bit parallel AND circuit 12 calculates the AND of the value of the register R1 and the value of the register R7, and the calculation result is stored in the register R1.

ステップ611では、32ビット並列XOR回路14が、レジスタR7の値とレジスタR1の値のXORを演算し、演算結果がレジスタR7に格納される。   In step 611, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R7 and the value of the register R1, and the calculation result is stored in the register R7.

ステップ612では、32ビット並列XOR回路14が、レジスタR6の値とレジスタR1の値のXORを演算し、演算結果がレジスタR6に格納される。   In step 612, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R6 and the value of the register R1, and the calculation result is stored in the register R6.

各ステップで、各レジスタの値は図11のように変化する。   At each step, the value of each register changes as shown in FIG.

以上の処理により、入力のそれぞれの組合せに対して、GF(3)加算に即した演算結果が得られる。演算結果は、入力と同じ形で表現される。   With the above processing, a calculation result corresponding to the addition of GF (3) is obtained for each combination of inputs. The calculation result is expressed in the same form as the input.

上記のように、第2の加算処理では、元は通常表現で表現されるので、変換処理は必要ない。   As described above, in the second addition process, since the original is expressed in a normal expression, no conversion process is necessary.

GF(3)の演算では、0の減算は0の加算に等しく、1の減算は2の加算に等しく、2の減算は1の加算に等しい。従って、減算処理は、加算処理において、Y1について”1”を”2”に、”2”を”1”に変換した後加算処理すればよい。   In the operation of GF (3), subtraction of 0 is equal to addition of 0, subtraction of 1 is equal to addition of 2, and subtraction of 2 is equal to addition of 1. Accordingly, the subtraction process may be performed after converting “1” into “2” and “2” into “1” for Y1 in the addition process.

図17は、第1の加算処理を利用した減算処理のフローチャートを示す。最初のステップ701で、32ビット並列XOR回路14が、レジスタR3の値とレジスタR4の値のXORを演算し、演算結果がレジスタR3に格納され、それ以後は図12の第1の加算処理と同じである。   FIG. 17 shows a flowchart of a subtraction process using the first addition process. In the first step 701, the 32-bit parallel XOR circuit 14 calculates the XOR of the value of the register R3 and the value of the register R4, and the calculation result is stored in the register R3. Thereafter, the first addition process of FIG. The same.

図18は、第2の加算処理を利用した減算処理のフローチャートを示す。レジスタR3をR4と、レジスタR4をR3とみなして図16の第2の加算処理と同じ処理を行う。   FIG. 18 shows a flowchart of a subtraction process using the second addition process. The register R3 is regarded as R4 and the register R4 is regarded as R3, and the same process as the second addition process of FIG. 16 is performed.

以上、本発明の実施例の演算装置の処理を説明したが、次に従来例と比較して、本発明の効果を説明する。   The processing of the arithmetic unit according to the embodiment of the present invention has been described above. Next, the effect of the present invention will be described in comparison with the conventional example.

従来のGF(3)の計算例としては、例えば非特許文献2に記載されている方法がある。非特許文献2では、5.1節に、図19に示すような通常の2ビット表現を用いたGF(3)の加算と乗算が記載されている。ここで、”H”は上位ビットを、”L”は下位ビットを表す。この演算は、本発明の場合と同様に、ビットごとに別レジスタに格納され、図2に示した本発明の演算装置により計算することができる。   As a conventional calculation example of GF (3), for example, there is a method described in Non-Patent Document 2. In Non-Patent Document 2, Section 5.1 describes addition and multiplication of GF (3) using a normal 2-bit representation as shown in FIG. Here, “H” represents an upper bit and “L” represents a lower bit. As in the case of the present invention, this operation is stored in a separate register for each bit, and can be calculated by the operation device of the present invention shown in FIG.

図20は、非特許文献2に記載された従来の乗算処理におけるレジスタの値の変化を示す説明図である。   FIG. 20 is an explanatory diagram showing changes in register values in the conventional multiplication process described in Non-Patent Document 2.

図20の詳しい説明は省略するが、従来例の乗算処理では、式の上では6回の論理演算で実現できるが、図2に示したような論理回路の演算装置を使用する場合、第1引数に結果が上書きされるため、最低2回のコピー処理が必要になる。従って、全体では8ステップ必要であり、乗算処理単体では、本発明の第1の乗算処理は6ステップであり、第2の乗算処理は4ステップであり、本発明の方が従来例よりステップ数が少なく速い。通常表現との相互変換を含めた場合は、第1の乗算処理では11ステップで、第2の乗算処理では9ステップである。これは、2個の入力で4ステップ増加し、1個の出力で1ステップ増加するためである。しかし、べき乗(ae,e≧2)を計算する場合には、相互変換は最初と最後に行えばよいため、入力の変換に2ステップ、変換後の入力のコピーに3ステップ、出力の変換に1ステップ増加するので、追加は6ステップである。従って、第1の乗算処理では6(e−1)+6ステップ、第2の乗算処理で(4+2)(e−1)+6ステップとなる(1回の乗算で出力表現から入力表現に2ステップ増加する)。従って、従来例の8(e−1)+2ステップ(入力のコピーで2ステップ増加)に対して、第1および第2の乗算処理とも、e≧4で従来例に比べて高速になる。 Although the detailed description of FIG. 20 is omitted, the multiplication processing of the conventional example can be realized by six logical operations on the equation, but when the arithmetic unit of the logic circuit as shown in FIG. Since the result is overwritten in the argument, at least two copy processes are required. Therefore, 8 steps are required as a whole, and for the multiplication process alone, the first multiplication process of the present invention is 6 steps, the second multiplication process is 4 steps, and the present invention has more steps than the conventional example. There are few and fast. When mutual conversion with the normal expression is included, the first multiplication process takes 11 steps, and the second multiplication process takes 9 steps. This is because two inputs increase four steps and one output increases one step. However, when calculating the power (a e , e ≧ 2), the mutual conversion may be performed at the beginning and the end. Therefore, 2 steps are performed for the input conversion, 3 steps are performed for the copy of the input after the conversion, and the output conversion is performed. Therefore, the number of additions is 6 steps. Therefore, 6 (e-1) +6 steps in the first multiplication process, and (4 + 2) (e-1) +6 steps in the second multiplication process (2 steps increase from the output representation to the input representation in one multiplication) To do). Therefore, in contrast to the conventional example of 8 (e-1) +2 steps (increase of 2 steps by copying the input), both the first and second multiplication processes are faster than the conventional example when e ≧ 4.

図21は、非特許文献2に記載された従来の加算処理におけるレジスタの値の変化を示す説明図である。   FIG. 21 is an explanatory diagram showing changes in register values in the conventional addition process described in Non-Patent Document 2.

図21の詳しい説明は省略するが、従来例の加算処理では、式の上では7回の論理演算で実現できるが、図2に示したような論理回路の演算装置を使用する場合、乗算と同様に、最低2回のコピー処理が必要になるため9ステップになる。加算処理単体では、本発明の第1の加算処理は11ステップであり、第2の加算処理は12ステップであり、加算処理自体は従来例より遅い。しかし、係数がGF(3)の元である多項式同士の積の場合は、GF(3)の乗算と加算の両方(積和演算)が実行されるため、全体として高速化され得る(このような多項式同士の積はGF(3)の拡大体GF(3m)の乗算の途中で使用される)。以下その速度比較を行う。 Although detailed description of FIG. 21 is omitted, the conventional addition processing can be realized by seven logical operations on the equation, but when using the arithmetic unit of the logic circuit as shown in FIG. Similarly, since at least two copy processes are required, there are 9 steps. In the addition process alone, the first addition process of the present invention is 11 steps, the second addition process is 12 steps, and the addition process itself is slower than the conventional example. However, in the case of a product of polynomials whose coefficients are elements of GF (3), both multiplication and addition (product-sum operation) of GF (3) are executed, so that the overall speed can be increased (such as this) The product of the polynomials is used in the middle of the multiplication of the extension field GF (3 m ) of GF (3)). The speed comparison is performed below.

GF(3)の元を係数とする2個のn−1次多項式を考える。この計算は通常のように項同士の積和演算の繰り返しとなる。例えば、2次多項式の積を考えると図22の(A)のようになる。   Consider two n-1 order polynomials whose coefficients are elements of GF (3). This calculation is a repetitive product-sum operation between terms as usual. For example, when considering a product of a quadratic polynomial, the result is as shown in FIG.

初期状態では、各多項式の係数は通常の表現で4個のレジスタに格納されているものとする。本発明においても従来例においても、乗算層1を並列計算し、その結果に乗算層2の計算結果を加算し、さらにその結果に乗算層3の計算結果を加算する順番となる。なお、例えば、乗算層1の並列計算において、図22の(B)に示すように、係数fの上位ビットと下位ビットを各々レジスタに展開する手順が必要であるが、このための手間は本発明でも従来例でも同一であり、全体の速度差には関係しない。   In the initial state, it is assumed that the coefficients of each polynomial are stored in four registers in a normal expression. In the present invention and the conventional example, the multiplication layer 1 is calculated in parallel, the calculation result of the multiplication layer 2 is added to the result, and the calculation result of the multiplication layer 3 is added to the result. For example, in the parallel calculation of the multiplication layer 1, as shown in FIG. 22B, a procedure for expanding the upper bits and the lower bits of the coefficient f into the registers is necessary. The invention and the conventional example are the same, and are not related to the overall speed difference.

本発明の第2の乗算処理と第1の加算処理をf(x)*g(x)の計算に適用すると、第2の乗算処理における3ビット出力表現は第1の加算処理における3ビット入出力表現と同一のため、乗算結果を直接加算処理へ入力できる。   When the second multiplication process and the first addition process of the present invention are applied to the calculation of f (x) * g (x), the 3-bit output representation in the second multiplication process is the 3-bit input in the first addition process. Since it is the same as the output representation, the multiplication result can be directly input to the addition process.

各多項式は、n個の係数を持つが、これを2ビット表現(通常表現)でビット幅Wのレジスタに格納するには多項式1個当たり2*{n/W}(ここで、{ }は小数点以下切り上げを表す)個のレジスタであれば十分である。また、本発明および従来例でのGF(3)の並列計算により多項式の積を計算するには、GF(3)の並列乗算が{n/W}*n回、GF(3)の並列加算が{n/W}*(n−1)回必要になる。積の結果は2n−1個の項を持つ多項式となる。本発明の第2の乗算処理と第1の加算処理を適用する場合には、2n個の入力項について通常表現から3ビット表現に変換し、多項式の積は3ビット表現で計算し、2n−1個の出力項について3ビット表現から通常表現に変換するものとする。従って、全体の計算ステップ数は図22の(C)に示される。   Each polynomial has n coefficients, but 2 * {n / W} per polynomial (where { It is sufficient to have a number of registers (representing rounding up after the decimal point). In addition, in order to calculate the product of the polynomial by the parallel calculation of GF (3) in the present invention and the conventional example, the parallel multiplication of GF (3) is {n / W} * n times and the parallel addition of GF (3) Is required {n / W} * (n-1) times. The result of the product is a polynomial with 2n-1 terms. When applying the second multiplication process and the first addition process of the present invention, 2n input terms are converted from a normal expression to a 3-bit expression, a product of polynomials is calculated in a 3-bit expression, and 2n− It is assumed that one output term is converted from a 3-bit representation to a normal representation. Therefore, the total number of calculation steps is shown in FIG.

なお、図22の(C)の右辺の第4項は、実際にはV*{(2n−1)/W}であるが、式を簡略にするため、本発明に対して不利になるように、図示の式としている。   Note that the fourth term on the right side of FIG. 22C is actually V * {(2n−1) / W}, but this is disadvantageous for the present invention in order to simplify the equation. In addition, the formula shown in the figure is used.

これにより、第2の乗算処理と第1の加算処理を適用した本発明と従来例とでステップ数を計算すると、図22の(D)のようになる。   Thus, when the number of steps is calculated between the present invention to which the second multiplication process and the first addition process are applied and the conventional example, the result is as shown in FIG.

これらのステップ数を比較すると、従来例のステップ数から本発明のステップ数を減じたステップ数は、{n/W}*[2*n−4]となり、n≧3で正となる。従って、2次以上の多項式の積では、第2の乗算処理と第1の加算処理を適用した本発明の方が従来例よりも速くなる。
(付記1)
標数が3の有限体GF(3)の演算方法であって、
前記有限体GF(3)の3個の元0、1、2を、3ビットで表し、
乗算、加算及び減算の少なくとも1つの演算を、3ビットで表された元で行う、ことを特徴とする有限体GF(3)の演算方法。
(付記2)
3個の元0、1、2を2ビットで表現した入力を、前記3ビット表現の入力に変換する変換処理を行う付記1に記載の有限体GF(3)の演算方法。
(付記3)
3ビット表現の出力を、3個の元0、1、2を2ビットで表現した出力に変換する変換処理を行う付記1に記載の有限体GF(3)の演算方法。
(付記4)
乗算は、入力と出力の3ビット表現が異なる付記1に記載の有限体GF(3)の演算方法。
(付記5)
乗算と加算及び減算とで、3個の元の3ビット表現が異なる付記1に記載の有限体GF(3)の演算方法。
(付記6)
第1の入力と第2の入力の乗算は、
3個の元0、1、2を、”000”、”011”、”110”で表現し、
第1の入力の0−2ビットをそれぞれ第0から第2レジスタに格納し、
第2の入力の0−2ビットをそれぞれ第3から第5レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のANDを演算して前記第3レジスタに格納し、
前記第4レジスタと前記第1レジスタの値のANDを演算して前記第4レジスタに格納し、
前記第5レジスタと前記第2レジスタの値のANDを演算して前記第5レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のORを演算して前記第3レジスタに格納し、
前記第5レジスタと前記第4レジスタの値のORを演算して前記第5レジスタに格納し、
前記第5レジスタと前記第3レジスタの値のXORを演算して前記第5レジスタに格納し、
前記3から第5レジスタの値を、3個の元0、1、2を、”000”、”011”、”110”で表現する出力の0−2ビットとして出力する付記1から3のいずれかに記載の有限体GF(3)の演算方法。
(付記7)
第1の入力と第2の入力の乗算は、
3個の元0、1、2を、”000”、”011”、”110”で表現し、
前記第1の入力の0−2ビットをそれぞれ第0から第2レジスタに格納し、
前記第2の入力の0−2ビットをそれぞれ第3から第5レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のANDを演算して前記第3レジスタに格納し、
前記第4レジスタと前記第1レジスタの値のANDを演算して前記第4レジスタに格納し、
前記第5レジスタと前記第2レジスタの値のANDを演算して前記第5レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のORを演算して前記第3レジスタに格納し、
前記3及び第4レジスタの値を、3個の元0、1、2を、”00”、”11”、”10”で表現する出力の0−1ビットとして出力する付記1から4のいずれかに記載の有限体GF(3)の演算方法。
(付記8)
第1の入力と第2の入力の加算は、
前記3個の元0、1、2を、”X00”、”X11”、”X10”(Xは0と1のいずれも可)で表現し、
前記第1の入力の0−2ビットをそれぞれ第0から第2レジスタに格納し、
前記第2の入力の0−2ビットをそれぞれ第3から第5レジスタに格納し、
前記第1レジスタの値を第5レジスタに格納し、
前記第5レジスタと前記第4レジスタの値のANDを演算して第5レジスタに格納し、
前記第3レジスタの値を第2レジスタに格納し、
前記第2レジスタと前記第0レジスタの値のXORを演算して第2レジスタに格納し、
前記第0レジスタと前記第5レジスタの値のXORを演算して第0レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のXORを演算して第3レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のORを演算して第3レジスタに格納し、
前記第4レジスタと前記第1レジスタの値のORを演算して第4レジスタに格納し、
前記第5レジスタと前記第2レジスタの値のANDを演算して第5レジスタに格納し、
前記第4レジスタと前記第5レジスタの値のXORを演算して第4レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のXORを演算して第3レジスタに格納し、
前記6及び第7レジスタの値を、前記3個の元0、1、2を、”00”、”11”、”10”で表現する出力の0−1ビットとして出力する付記1から3のいずれかに記載の有限体GF(3)の演算方法。
(付記9)
0の減算は0の加算とし、1の減算は2の加算とし、2の減算は1の加算として行われる付記8に記載の有限体GF(3)の演算方法。
(付記10)
多項式の積の演算は、付記7に記載の演算方法における乗算を行い、その結果を入力として、付記8に記載の演算方法による加算または減算により行われる有限体GF(3)の演算方法。
(付記11)
2グループで構成され、各グループが3個のレジスタで構成される合計6個のレジスタ群と、前記6個のレジスタの2個の値を入力としてAND、OR、XOR及びコピー処理を行い、処理結果を前記2個の入力の一方のレジスタに格納するように構成された演算回路と、を備える標数が3の有限体GF(3)の演算装置であって、
乗算、加算及び減算の少なくとも1つの演算は、有限体GF(3)の3個の元0、1、2を、3ビットで表し、
第1の入力の0−2ビットを第1のグループの第0から第2レジスタにそれぞれ格納し、
第2の入力の0−2ビットを第2のグループの第3から第5レジスタにそれぞれ格納して演算を行うことを特徴とする有限体GF(3)の演算装置。
(付記12)
3個の元0、1、2を2ビットで表現した入力を、前記第1のグループの前記第0から第2レジスタまたは前記第2のグループの前記第3から第5レジスタに入力し、上記3ビット表現に変換する変換処理を行う付記11に記載の有限体GF(3)の演算装置。
(付記13)
前記第1のグループの前記第0から第2レジスタまたは前記第2のグループの前記第3から第5レジスタに格納された3ビット表現の出力を、3個の元0、1、2を2ビットで表現した出力に変換する変換処理を行う付記11に記載の有限体GF(3)の演算装置。
(付記14)
乗算は、入力と出力の3ビット表現が異なる付記11に記載の有限体GF(3)の演算装置。
(付記15)
乗算と加算及び減算で、3個の元の3ビット表現が異なる付記11に記載の有限体GF(3)の演算装置。
(付記16)
第1の入力と第2の入力の乗算は、
3個の元0、1、2を、”000”、”011”、”110”で表現し、
前記第1の入力の0−2ビットをそれぞれ前記第0から第2レジスタに格納し、
前記第2の入力の0−2ビットをそれぞれ前記第3から第5レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のANDを演算して前記第3レジスタに格納し、
前記第4レジスタと前記第1レジスタの値のANDを演算して前記第4レジスタに格納し、
前記第5レジスタと前記第2レジスタの値のANDを演算して前記第5レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のORを演算して前記第3レジスタに格納し、
前記第5レジスタと前記第4レジスタの値のORを演算して前記第5レジスタに格納し、
前記第5レジスタと前記第3レジスタの値のXORを演算して前記第5レジスタに格納し、
前記3から第5レジスタの値を、3個の元0、1、2を、”000”、”011”、”110”で表現する出力の0−2ビットとして出力する付記11から13のいずれかに記載の有限体GF(3)の演算装置。
(付記17)
第1の入力と第2の入力の乗算は、
前記3個の元0、1、2を、”000”、”011”、”110”で表現し、
前記第1の入力の0−2ビットをそれぞれ第0から第2レジスタに格納し、
前記第2の入力の0−2ビットをそれぞれ第3から第5レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のANDを演算して第3レジスタに格納し、
前記第4レジスタと前記第1レジスタの値のANDを演算して第4レジスタに格納し、
前記第5レジスタと前記第2レジスタの値のANDを演算して第5レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のORを演算して第3レジスタに格納し、
前記3及び第4レジスタの値を、前記3個の元0、1、2を、”00”、”11”、”10”で表現する出力の0−1ビットとして出力する付記11から14のいずれかに記載の有限体GF(3)の演算装置。
(付記18)
3個の元0、1、2を2ビットで表現した入力を、前記第1のグループの前記第0および第1レジスタまたは前記第2のグループの前記第3および第4レジスタに入力し、
前記第1レジスタまたは前記第4レジスタの値を、前記第2レジスタまたは第5レジスタに格納し、
前記第1レジスタと前記第0レジスタの値のORまたは前記第4レジスタと前記第3レジスタの値のORを演算して前記第1レジスタまたは第4レジスタに格納し、
前記第1のグループの前記第0から第2レジスタまたは前記第2のグループの前記第3から第5レジスタに格納された値を、入力として演算を行う付記16または17に記載の有限体GF(3)の演算装置。
(付記19)
前記第1のグループの前記第0から第2レジスタまたは前記第2のグループの前記第3から第5レジスタに格納された3ビット表現の出力に対して、
前記第1レジスタと前記第0レジスタの値のXORまたは前記第4レジスタと前記第3レジスタの値のXORを演算して前記第1レジスタまたは前記第4レジスタに格納し、
前記第1のグループの前記第0及び第1レジスタまたは前記第2のグループの前記第3及び第4レジスタに格納された値を、2ビットで表現した出力として出力する付記16または17に記載の有限体GF(3)の演算装置。
(付記20)
第1の入力と第2の入力の加算は、
前記3個の元0、1、2を、”X00”、”X11”、”X10”(Xは0と1のいずれも可)で表現し、
前記第1の入力の0−2ビットをそれぞれ第0から第2レジスタに格納し、
前記第2の入力の0−2ビットをそれぞれ第3から第5レジスタに格納し、
前記第1レジスタの値を第5レジスタに格納し、
前記第5レジスタと前記第4レジスタの値のANDを演算して第5レジスタに格納し、
前記第3レジスタの値を第2レジスタに格納し、
前記第2レジスタと前記第0レジスタの値のXORを演算して第2レジスタに格納し、
前記第0レジスタと前記第5レジスタの値のXORを演算して第0レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のXORを演算して第3レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のORを演算して第3レジスタに格納し、
前記第4レジスタと前記第1レジスタの値のORを演算して第4レジスタに格納し、
前記第5レジスタと前記第2レジスタの値のANDを演算して第5レジスタに格納し、
前記第4レジスタと前記第5レジスタの値のXORを演算して第4レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のXORを演算して第3レジスタに格納し、
前記6及び第7レジスタの値を、前記3個の元0、1、2を、”00”、”11”、”10”で表現する出力の0−1ビットとして出力する付記11から13のいずれか1項に記載の有限体GF(3)の演算装置。
(付記21)
3個の元0、1、2を2ビットで表現した入力を、前記第1のグループの前記第0および第1レジスタまたは前記第2のグループの前記第3および第4レジスタに入力し、
前記第1レジスタと前記第0レジスタの値のORまたは前記第4レジスタと前記第3レジスタの値のORを演算して前記第1レジスタまたは第4レジスタに格納し、
前記第1のグループの前記第0から第2レジスタまたは前記第2のグループの前記第3から第5レジスタに格納された値を、入力として演算を行う付記20に記載の有限体GF(3)の演算装置。
(付記22)
前記第1のグループの前記第0から第2レジスタまたは前記第2のグループの前記第3から第5レジスタに格納された3ビット表現の出力に対して、
前記第1レジスタと前記第0レジスタの値のXORまたは前記第4レジスタと前記第3レジスタの値のXORを演算して前記第1レジスタまたは前記第4レジスタに格納し、
前記第1のグループの前記第0及び第1レジスタまたは前記第2のグループの前記第3及び第4レジスタに格納された値を、2ビットで表現した出力として出力する付記20に記載の有限体GF(3)の演算装置。
(付記23)
AND、OR、XOR及びコピー処理を行える第6から第7の2個のレジスタで構成される第3グループのレジスタ群をさらに備え、
第1の入力と第2の入力の加算は、
前記3個の元0、1、2を、”X00”、”X01”、”X10”(Xは0と1のいずれも可)で表現し、
前記第1の入力の0−2ビットをそれぞれ第0から第2レジスタに格納し、
前記第2の入力の0−2ビットをそれぞれ第3から第5レジスタに格納し、
前記第3レジスタの値を第6レジスタに格納し、
前記第6レジスタと前記第0レジスタの値のXORを演算して第6レジスタに格納し、
前記第4レジスタの値を第7レジスタに格納し、
前記第7レジスタと前記第1レジスタの値のXORを演算して第7レジスタに格納し、
前記第1レジスタと前記第4レジスタの値のANDを演算して第1レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のANDを演算して第3レジスタに格納し、
前記第7レジスタと前記第3レジスタの値のORを演算して第7レジスタに格納し、
前記第6レジスタと前記第1レジスタの値のORを演算して第6レジスタに格納し、
前記第1レジスタと前記第6レジスタの値のXORを演算して第1レジスタに格納し、
前記第1レジスタと前記第7レジスタの値のANDを演算して第1レジスタに格納し、
前記第7レジスタと前記第1レジスタの値のXORを演算して第7レジスタに格納し、
前記第6レジスタと前記第1レジスタの値のXORを演算して第6レジスタに格納し、
前記6及び第7レジスタの値を、前記3個の元0、1、2を、”00”、”01”、”10”で表現する出力の0−1ビットとして出力する付記11に記載の有限体GF(3)の演算装置。
(付記24)
0の減算は0の加算とし、1の減算は2の加算とし、2の減算は1の加算として行われる付記11、20から23のいずれか1項に記載の有限体GF(3)の演算装置。
(付記25)
多項式の積の演算は、付記17に記載の乗算を行い、その結果を入力として、付記20に記載の加算または減算により行われる有限体GF(3)の演算装置。
(付記26)
前記第0から第5レジスタは、32ビット長を有し、32個の演算が並列に行われる付記11から25のいずれか1項に記載の有限体GF(3)の演算装置。
(付記27)
前記第6および第7レジスタは、32ビット長を有し、32個の演算が並列に行われる付記23に記載の有限体GF(3)の演算装置。
Comparing these numbers of steps, the number of steps obtained by subtracting the number of steps of the present invention from the number of steps of the conventional example is {n / W} * [2 * n-4], and n ≧ 3 is positive. Therefore, in the case of a product of second or higher order polynomials, the present invention to which the second multiplication process and the first addition process are applied is faster than the conventional example.
(Appendix 1)
A calculation method of a finite field GF (3) having a characteristic of 3,
The three elements 0, 1, 2 of the finite field GF (3) are represented by 3 bits,
An operation method of a finite field GF (3), wherein at least one operation of multiplication, addition, and subtraction is performed on an element represented by 3 bits.
(Appendix 2)
The calculation method of the finite field GF (3) according to supplementary note 1, wherein a conversion process is performed for converting an input in which three elements 0, 1, and 2 are expressed in 2 bits into an input in the 3-bit expression.
(Appendix 3)
The calculation method of the finite field GF (3) according to supplementary note 1, wherein a conversion process is performed to convert an output of a 3-bit representation into an output of 3 elements 0, 1, and 2 expressed in 2 bits.
(Appendix 4)
Multiplication is a calculation method for the finite field GF (3) according to Supplementary Note 1, wherein the input and output 3-bit representations are different.
(Appendix 5)
The calculation method of the finite field GF (3) according to supplementary note 1, wherein three original 3-bit representations are different between multiplication, addition, and subtraction.
(Appendix 6)
The multiplication of the first input and the second input is
The three elements 0, 1, and 2 are represented by “000”, “011”, “110”,
The 0-2 bits of the first input are stored in the 0th to 2nd registers, respectively,
Store the 0-2 bits of the second input in the third to fifth registers respectively,
AND the values of the third register and the zeroth register and store in the third register;
ANDing the values of the fourth register and the first register and storing them in the fourth register;
ANDing the values of the fifth register and the second register and storing them in the fifth register;
Calculating the OR of the values of the third register and the fifth register and storing them in the third register;
Calculating the OR of the values of the fifth register and the fourth register and storing them in the fifth register;
XOR of the values of the fifth register and the third register is calculated and stored in the fifth register;
Any one of appendices 1 to 3 for outputting the values of the third to fifth registers as 0-2 bits of output expressing the three elements 0, 1, and 2 as "000", "011", and "110" A calculation method of the finite field GF (3) according to any one of the above.
(Appendix 7)
The multiplication of the first input and the second input is
The three elements 0, 1, and 2 are represented by “000”, “011”, “110”,
The 0-2 bits of the first input are respectively stored in the 0th to 2nd registers;
Storing 0-2 bits of the second input in the third to fifth registers respectively;
AND the values of the third register and the zeroth register and store in the third register;
ANDing the values of the fourth register and the first register and storing them in the fourth register;
ANDing the values of the fifth register and the second register and storing them in the fifth register;
Calculating the OR of the values of the third register and the fifth register and storing them in the third register;
Any one of Supplementary notes 1 to 4 that outputs the values of the 3 and 4 registers as 0-1 bits of the output expressing the three elements 0, 1, and 2 as "00", "11", and "10" A calculation method of the finite field GF (3) according to any one of the above.
(Appendix 8)
The addition of the first input and the second input is
The three elements 0, 1, and 2 are represented by “X00”, “X11”, and “X10” (X can be either 0 or 1),
The 0-2 bits of the first input are respectively stored in the 0th to 2nd registers;
Storing 0-2 bits of the second input in the third to fifth registers respectively;
Storing the value of the first register in a fifth register;
AND the values of the fifth register and the fourth register and store in the fifth register;
Storing the value of the third register in the second register;
Calculates the XOR of the values of the second register and the zeroth register and stores them in the second register;
Calculates the XOR of the values of the zeroth register and the fifth register and stores them in the zeroth register;
Calculates the XOR of the values of the third register and the fifth register and stores them in the third register;
Calculating the OR of the values of the third register and the zeroth register and storing them in the third register;
Calculating the OR of the values of the fourth register and the first register and storing them in the fourth register;
AND the values of the fifth register and the second register and store in the fifth register;
Compute the XOR of the values of the fourth register and the fifth register and store in the fourth register;
Calculates the XOR of the values of the third register and the fifth register and stores them in the third register;
The values of the sixth and seventh registers are output as 0-1 bits of output expressing the three elements 0, 1, and 2 as “00”, “11”, and “10”. An operation method of the finite field GF (3) according to any one of the above.
(Appendix 9)
The calculation method of the finite field GF (3) according to appendix 8, wherein subtraction of 0 is addition of 0, subtraction of 1 is addition of 2, and subtraction of 2 is performed as addition of 1.
(Appendix 10)
The calculation of the polynomial product is a calculation method of the finite field GF (3) which is performed by performing multiplication in the calculation method described in Appendix 7, and using the result as an input, addition or subtraction according to the calculation method described in Appendix 8.
(Appendix 11)
It consists of two groups, each group consisting of three registers, and a total of six registers and two values of the six registers as inputs, and performs AND, OR, XOR and copy processing An arithmetic circuit configured to store a result in one register of the two inputs, and an arithmetic device of a finite field GF (3) having a characteristic of 3,
At least one operation of multiplication, addition, and subtraction represents the three elements 0, 1, 2 of the finite field GF (3) by 3 bits,
Store 0-2 bits of the first input in the 0th to 2nd registers of the first group respectively;
An arithmetic unit for a finite field GF (3), wherein 0-2 bits of the second input are stored in the third to fifth registers of the second group, respectively, and the arithmetic is performed.
(Appendix 12)
Input the three elements 0, 1, and 2 expressed in 2 bits to the 0th to 2nd registers of the first group or the 3rd to 5th registers of the second group, The arithmetic unit of the finite field GF (3) according to appendix 11, which performs conversion processing to convert to a 3-bit representation.
(Appendix 13)
The output of the 3-bit representation stored in the 0th to 2nd registers of the first group or the 3rd to 5th registers of the second group, and the 3 elements 0, 1 and 2 are 2 bits The arithmetic unit for the finite field GF (3) according to appendix 11, which performs a conversion process for converting the output into an output represented by.
(Appendix 14)
The multiplication is an arithmetic unit for the finite field GF (3) according to Supplementary Note 11, wherein the input and output 3-bit representations are different.
(Appendix 15)
The arithmetic unit of the finite field GF (3) according to Supplementary Note 11, wherein the three original 3-bit representations are different by multiplication, addition, and subtraction.
(Appendix 16)
The multiplication of the first input and the second input is
The three elements 0, 1, and 2 are represented by “000”, “011”, “110”,
Storing 0-2 bits of the first input in the 0th to 2nd registers respectively;
Storing 0-2 bits of the second input in the third to fifth registers respectively;
AND the values of the third register and the zeroth register and store in the third register;
ANDing the values of the fourth register and the first register and storing them in the fourth register;
ANDing the values of the fifth register and the second register and storing them in the fifth register;
Calculating the OR of the values of the third register and the fifth register and storing them in the third register;
Calculating the OR of the values of the fifth register and the fourth register and storing them in the fifth register;
XOR of the values of the fifth register and the third register is calculated and stored in the fifth register;
Any one of appendices 11 to 13 for outputting the values of the third to fifth registers as 0-2 bits of output expressing the three elements 0, 1 and 2 as “000”, “011”, and “110” An arithmetic unit for the finite field GF (3) according to any one of the above.
(Appendix 17)
The multiplication of the first input and the second input is
The three elements 0, 1, and 2 are represented by “000”, “011”, and “110”,
The 0-2 bits of the first input are respectively stored in the 0th to 2nd registers;
Storing 0-2 bits of the second input in the third to fifth registers respectively;
AND the values of the third register and the zeroth register and store in the third register;
AND the values of the fourth register and the first register and store in the fourth register;
AND the values of the fifth register and the second register and store in the fifth register;
Calculating the OR of the values of the third register and the fifth register and storing them in the third register;
The values of the third and fourth registers are output as 0-1 bits of the output expressing the three elements 0, 1, and 2 as “00”, “11”, and “10”. The arithmetic unit of the finite field GF (3) according to any one of the above.
(Appendix 18)
Input the three elements 0, 1, and 2 expressed in 2 bits to the 0th and 1st registers of the first group or the 3rd and 4th registers of the second group,
Storing the value of the first register or the fourth register in the second register or the fifth register;
Calculating the OR of the values of the first register and the zeroth register or the values of the fourth register and the third register and storing them in the first register or the fourth register;
The finite field GF (1) according to the supplementary note 16 or 17, wherein the value stored in the 0th to 2nd registers of the first group or the 3rd to 5th registers of the second group is used as an input for calculation. 3) Arithmetic device.
(Appendix 19)
For the output of the 3-bit representation stored in the 0th to 2nd registers of the first group or the 3rd to 5th registers of the second group,
Calculating the XOR of the values of the first register and the zeroth register or the XOR of the values of the fourth register and the third register and storing them in the first register or the fourth register;
The supplementary note 16 or 17, wherein the values stored in the zeroth and first registers of the first group or the third and fourth registers of the second group are output as an output expressed in 2 bits. Arithmetic device for finite field GF (3).
(Appendix 20)
The addition of the first input and the second input is
The three elements 0, 1, and 2 are represented by “X00”, “X11”, and “X10” (X can be either 0 or 1),
The 0-2 bits of the first input are respectively stored in the 0th to 2nd registers;
Storing 0-2 bits of the second input in the third to fifth registers respectively;
Storing the value of the first register in a fifth register;
AND the values of the fifth register and the fourth register and store in the fifth register;
Storing the value of the third register in the second register;
Calculates the XOR of the values of the second register and the zeroth register and stores them in the second register;
Calculates the XOR of the values of the zeroth register and the fifth register and stores them in the zeroth register;
Calculates the XOR of the values of the third register and the fifth register and stores them in the third register;
Calculating the OR of the values of the third register and the zeroth register and storing them in the third register;
Calculating the OR of the values of the fourth register and the first register and storing them in the fourth register;
AND the values of the fifth register and the second register and store in the fifth register;
Compute the XOR of the values of the fourth register and the fifth register and store in the fourth register;
Calculates the XOR of the values of the third register and the fifth register and stores them in the third register;
The values of the sixth and seventh registers are output as 0-1 bits of output expressing the three elements 0, 1, and 2 as “00”, “11”, “10”. The arithmetic unit for the finite field GF (3) according to any one of the above.
(Appendix 21)
Input the three elements 0, 1, and 2 expressed in 2 bits to the 0th and 1st registers of the first group or the 3rd and 4th registers of the second group,
Calculating the OR of the values of the first register and the zeroth register or the values of the fourth register and the third register and storing them in the first register or the fourth register;
Item 21. The finite field GF (3) according to appendix 20, wherein an operation is performed using the values stored in the zeroth to second registers of the first group or the third to fifth registers of the second group as inputs. Arithmetic unit.
(Appendix 22)
For the output of the 3-bit representation stored in the 0th to 2nd registers of the first group or the 3rd to 5th registers of the second group,
Calculating the XOR of the values of the first register and the zeroth register or the XOR of the values of the fourth register and the third register and storing them in the first register or the fourth register;
The finite field according to appendix 20, wherein the values stored in the zeroth and first registers of the first group or the third and fourth registers of the second group are output as an output expressed in 2 bits. Arithmetic unit of GF (3).
(Appendix 23)
A third group of registers composed of two registers, 6th to 7th, which can perform AND, OR, XOR, and copy processing;
The addition of the first input and the second input is
The three elements 0, 1, and 2 are represented by “X00”, “X01”, and “X10” (X can be 0 or 1),
The 0-2 bits of the first input are respectively stored in the 0th to 2nd registers;
Storing 0-2 bits of the second input in the third to fifth registers respectively;
Storing the value of the third register in the sixth register;
Calculates the XOR of the values of the sixth register and the zeroth register and stores them in the sixth register;
Storing the value of the fourth register in the seventh register;
Calculates the XOR of the values of the seventh register and the first register and stores them in the seventh register;
ANDing the values of the first register and the fourth register and storing them in the first register;
AND the values of the third register and the zeroth register and store in the third register;
Calculating the OR of the values of the seventh register and the third register and storing them in the seventh register;
Calculating the OR of the values of the sixth register and the first register and storing the result in the sixth register;
Calculates the XOR of the values of the first register and the sixth register and stores them in the first register;
AND the values of the first register and the seventh register and store in the first register;
Calculates the XOR of the values of the seventh register and the first register and stores them in the seventh register;
XOR of the values of the sixth register and the first register is calculated and stored in the sixth register;
The value of the sixth and seventh registers is output as 0-1 bits of an output expressing the three elements 0, 1, and 2 as “00”, “01”, and “10”. Arithmetic device for finite field GF (3).
(Appendix 24)
The subtraction of 0 is the addition of 0, the subtraction of 1 is the addition of 2, the subtraction of 2 is performed as the addition of 1, the operation of the finite field GF (3) according to any one of appendices 11, 20 to 23 apparatus.
(Appendix 25)
The calculation of the product of polynomials is an arithmetic unit for a finite field GF (3), which is obtained by performing the multiplication described in Appendix 17 and performing the addition or subtraction described in Appendix 20 using the result as an input.
(Appendix 26)
26. The arithmetic device for a finite field GF (3) according to any one of appendices 11 to 25, wherein the zeroth to fifth registers have a 32-bit length and 32 operations are performed in parallel.
(Appendix 27)
The arithmetic unit of the finite field GF (3) according to appendix 23, wherein the sixth and seventh registers have a 32-bit length and 32 operations are performed in parallel.

本発明は、標数3の有限体(ガロア体)演算を使用する場合には、どのような場合にも適用可能である。   The present invention can be applied to any case when using a characteristic 3 finite field (Galois field) operation.

有限体(ガロア体)GF(3)の演算規則を示す図である。It is a figure which shows the calculation rule of a finite field (Galois field) GF (3). 本発明の実施例のGF(3)演算装置のハードウェア構成図である。It is a hardware block diagram of GF (3) arithmetic unit of the Example of this invention. 実施例の演算装置の動作を示す図である。It is a figure which shows operation | movement of the arithmetic unit of an Example. 実施例の第1の乗算処理の説明図である。It is explanatory drawing of the 1st multiplication process of an Example. 第1の乗算処理のフローチャートである。It is a flowchart of a 1st multiplication process. 第1の乗算処理用変換処理の説明図である。It is explanatory drawing of the conversion process for 1st multiplication processes. 第1の乗算処理用変換処理のフローチャートである。It is a flowchart of the 1st conversion process for multiplication processes. 実施例の第2の乗算処理の説明図である。It is explanatory drawing of the 2nd multiplication process of an Example. 第2の乗算処理のフローチャートである。It is a flowchart of a 2nd multiplication process. 第2の乗算処理用変換処理の説明図である。It is explanatory drawing of the conversion process for 2nd multiplication processes. 実施例の第1の加算処理の説明図である。It is explanatory drawing of the 1st addition process of an Example. 第1の加算処理のフローチャートである。It is a flowchart of a 1st addition process. 第1の加算処理用変換処理の説明図である。It is explanatory drawing of the conversion process for the 1st addition process. 実施例の第2の加算処理の説明図である。It is explanatory drawing of the 2nd addition process of an Example. 実施例の第2の加算処理の説明図である。It is explanatory drawing of the 2nd addition process of an Example. 第2の加算処理のフローチャートである。It is a flowchart of the 2nd addition process. 第1の加算処理に基づく減算処理のフローチャートである。It is a flowchart of the subtraction process based on a 1st addition process. 第2の加算処理に基づく減算処理のフローチャートである。It is a flowchart of the subtraction process based on a 2nd addition process. 従来の演算の基本説明図である。It is basic explanatory drawing of the conventional calculation. 従来の乗算処理の説明図である。It is explanatory drawing of the conventional multiplication process. 従来の加算処理の説明図である。It is explanatory drawing of the conventional addition process. 本発明と従来例の比較である。It is a comparison between the present invention and a conventional example.

符号の説明Explanation of symbols

11X 第1レジスタグループ
11Y 第2レジスタグループ
11Z 第3レジスタグループ
12 32ビット並列AND回路
13 32ビット並列OR回路
14 32ビット並列XOR回路
15 32ビット並列COPY回路
16 制御部
17、18、19 バス
R0−R8 レジスタ
11X First register group 11Y Second register group 11Z Third register group 12 32-bit parallel AND circuit 13 32-bit parallel OR circuit 14 32-bit parallel XOR circuit 15 32-bit parallel COPY circuit 16 Controllers 17, 18, 19 Bus R0- R8 register

Claims (2)

標数が3の有限体GF(3)の演算方法であって、
有限体GF(3)の3個の元0、1、2を、”000”、”011”、”110”で表現し、
前記第1の入力の0−2ビットをそれぞれ第0から第2レジスタに格納し、
前記第2の入力の0−2ビットをそれぞれ第3から第5レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のANDを演算して第3レジスタに格納し、
前記第4レジスタと前記第1レジスタの値のANDを演算して第4レジスタに格納し、
前記第5レジスタと前記第2レジスタの値のANDを演算して第5レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のORを演算して第3レジスタに格納し、
前記3及び第4レジスタの値を、前記3個の元0、1、2を、”00”、”11”、”10”で表現する出力の0−1ビットとして出力することを特徴とする有限体GF(3)の演算方法。
A calculation method of a finite field GF (3) having a characteristic of 3,
The three elements 0, 1, 2 of the finite field GF (3) are represented by “000”, “011”, “110”,
The 0-2 bits of the first input are respectively stored in the 0th to 2nd registers;
Storing 0-2 bits of the second input in the third to fifth registers respectively;
AND the values of the third register and the zeroth register and store in the third register;
AND the values of the fourth register and the first register and store in the fourth register;
AND the values of the fifth register and the second register and store in the fifth register;
Calculating the OR of the values of the third register and the fifth register and storing them in the third register;
The values of the third and fourth registers are output as 0-1 bits of output expressing the three elements 0, 1, and 2 as "00", "11", and "10". Calculation method of finite field GF (3).
2グループで構成され、各グループが3個のレジスタで構成される合計6個のレジスタ群と、前記6個のレジスタの2個の値を入力としてAND、OR、XOR及びコピー処理を行い、処理結果を前記2個の入力の一方のレジスタに格納するように構成された演算回路と、を備える標数が3の有限体GF(3)の演算装置であって、
第1の入力と第2の入力の乗算は、
有限体GF(3)の3個の元0、1、2を、”000”、”011”、”110”で表現し、
前記第1の入力の0−2ビットをそれぞれ第0から第2レジスタに格納し、
前記第2の入力の0−2ビットをそれぞれ第3から第5レジスタに格納し、
前記第3レジスタと前記第0レジスタの値のANDを演算して第3レジスタに格納し、
前記第4レジスタと前記第1レジスタの値のANDを演算して第4レジスタに格納し、
前記第5レジスタと前記第2レジスタの値のANDを演算して第5レジスタに格納し、
前記第3レジスタと前記第5レジスタの値のORを演算して第3レジスタに格納し、
前記3及び第4レジスタの値を、前記3個の元0、1、2を、”00”、”11”、”10”で表現する出力の0−1ビットとして出力することを特徴とする有限体GF(3)の演算装置。
It consists of two groups, each group consisting of three registers, and a total of six registers and two values of the six registers as inputs, and performs AND, OR, XOR and copy processing An arithmetic circuit configured to store a result in one register of the two inputs, and an arithmetic device of a finite field GF (3) having a characteristic of 3,
The multiplication of the first input and the second input is
The three elements 0, 1, 2 of the finite field GF (3) are represented by “000”, “011”, “110”,
The 0-2 bits of the first input are respectively stored in the 0th to 2nd registers;
Storing 0-2 bits of the second input in the third to fifth registers respectively;
AND the values of the third register and the zeroth register and store in the third register;
AND the values of the fourth register and the first register and store in the fourth register;
AND the values of the fifth register and the second register and store in the fifth register;
Calculating the OR of the values of the third register and the fifth register and storing them in the third register;
The values of the third and fourth registers are output as 0-1 bits of output expressing the three elements 0, 1, and 2 as "00", "11", and "10". Arithmetic device for finite field GF (3).
JP2006320307A 2006-11-28 2006-11-28 Calculation method and calculation device for finite field GF (3) Expired - Fee Related JP4871105B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006320307A JP4871105B2 (en) 2006-11-28 2006-11-28 Calculation method and calculation device for finite field GF (3)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006320307A JP4871105B2 (en) 2006-11-28 2006-11-28 Calculation method and calculation device for finite field GF (3)

Publications (2)

Publication Number Publication Date
JP2008134812A JP2008134812A (en) 2008-06-12
JP4871105B2 true JP4871105B2 (en) 2012-02-08

Family

ID=39559633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006320307A Expired - Fee Related JP4871105B2 (en) 2006-11-28 2006-11-28 Calculation method and calculation device for finite field GF (3)

Country Status (1)

Country Link
JP (1) JP4871105B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009020216A1 (en) * 2007-08-09 2009-02-12 National University Corporation Okayama University Arithmetic operation method and arithmetic operation device
KR101533929B1 (en) * 2014-06-27 2015-07-09 공주대학교 산학협력단 Subquadratic Space Complexity Parallel Multiplier for using shifted polynomial basis, method thereof, and recording medium using this

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006178125A (en) * 2004-12-22 2006-07-06 Hitachi Ltd Method and apparatus for computing elliptic curve tate pairing

Also Published As

Publication number Publication date
JP2008134812A (en) 2008-06-12

Similar Documents

Publication Publication Date Title
JP5456766B2 (en) Performing optional Galois Field computations on a programmable processor
CN101782845B (en) High speed arithmetic device and method of elliptic curve code
WO2015164996A1 (en) Elliptic domain curve operational method and elliptic domain curve operational unit
WO2016046949A1 (en) Method for calculating elliptic curve scalar multiplication
JP2009135891A (en) Data transform apparatus and control method thereof
CN104184578B (en) A kind of Elliptic Curve Scalar Multiplication method accelerating circuit and its algorithm based on FPGA
JP4871105B2 (en) Calculation method and calculation device for finite field GF (3)
Li et al. On the Complexity of Hybrid $ n $-Term Karatsuba Multiplier for Trinomials
JP2004227344A (en) Multiplier and code circuit
JP5175983B2 (en) Arithmetic unit
Cho et al. New bit parallel multiplier with low space complexity for all irreducible trinomials over $ GF (2^{n}) $
CN116527274B (en) Elliptic curve signature verification method and system based on multi-scalar multiplication rapid calculation
JP4182226B2 (en) Remainder calculation method, apparatus and program
CN114650135B (en) Software and hardware cooperated SM2 elliptic curve cryptography algorithm implementation method
CN103942027B (en) A kind of fast parallel multiplier of restructural
CN108418687B (en) Rapid modular reduction method and medium suitable for SM2 algorithm
JP6457911B2 (en) Scalar multiplier
JP2937982B2 (en) Montgomery division apparatus, Montgomery inverse element calculation apparatus, Montgomery division method, and Montgomery inverse element calculation method
JP4933405B2 (en) Data conversion apparatus and control method thereof
CN110071927B (en) Information encryption method, system and related components
Aggarwal et al. Improved hardness results for unique shortest vector problem
JP5840086B2 (en) Reduction device, reduction method, and program
JP2006279889A (en) Quantum circuit, quantum error correcting apparatus and quantum error correction method
Li et al. Low complexity bit-parallel $ GF (2^ m) $ multiplier for all-one polynomials
JP4472808B2 (en) Multiply-accumulate device and encryption / decryption device using the same

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111020

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: 20111108

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111118

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees