JP5301675B2 - Method and apparatus for performing RAID processing - Google Patents

Method and apparatus for performing RAID processing Download PDF

Info

Publication number
JP5301675B2
JP5301675B2 JP2011533440A JP2011533440A JP5301675B2 JP 5301675 B2 JP5301675 B2 JP 5301675B2 JP 2011533440 A JP2011533440 A JP 2011533440A JP 2011533440 A JP2011533440 A JP 2011533440A JP 5301675 B2 JP5301675 B2 JP 5301675B2
Authority
JP
Japan
Prior art keywords
bytes
conversion
result
aes
block
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
JP2011533440A
Other languages
Japanese (ja)
Other versions
JP2012507212A (en
Inventor
グエロン,シャイ
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2012507212A publication Critical patent/JP2012507212A/en
Application granted granted Critical
Publication of JP5301675B2 publication Critical patent/JP5301675B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Description

本開示は、RAID(Redundant Array of Independent Disks)に関し、特にレベル6RAIDに関する。   The present disclosure relates to RAID (Redundant Array of Independent Disks), and more particularly to level 6 RAID.

RAIDは、リライアビリティ、キャパシティ又はパフォーマンスのため、複数の物理的ハードディスクドライブを論理的ドライブに合成する。このため、複数の物理的ハードディスクドライブの代わりに、オペレーティングシステムは、単一の論理的ドライブを参照する。当業者に周知なように、RAIDシステムの物理的ハードディスクドライブにデータを分散させるため、RAIDレベルと呼ばれる多数の標準的な方法が存在する。   RAID combines multiple physical hard disk drives into logical drives for reliability, capacity or performance. Thus, instead of multiple physical hard disk drives, the operating system refers to a single logical drive. As is well known to those skilled in the art, there are a number of standard methods called RAID levels for distributing data across the physical hard disk drives of a RAID system.

例えば、レベル0RAIDシステムでは、データをブロックに分割し、各ブロックを別々のハードディスクドライブに書き込むことによって、データが物理的ハードディスクドライブアレイにストライピングされる。入出力(I/O)パフォーマンスは、多数のハードディスクドライブにロードを分散させることによって向上する。レベル0RAIDはI/Oパフォーマンスを向上させるが、1つのハードディスクドライブが故障した場合にはすべてのデータが失われるため、冗長性を提供しない。   For example, in a level 0 RAID system, data is striped into a physical hard disk drive array by dividing the data into blocks and writing each block to a separate hard disk drive. Input / output (I / O) performance is improved by distributing the load across multiple hard disk drives. Level 0 RAID improves I / O performance but does not provide redundancy because if one hard disk drive fails, all data is lost.

レベル5RAIDシステムは、データとパリティ情報との両方を少なくとも3つのハードディスクドライブにストライピングすることによって、高いレベルの冗長性を提供する。データストライピングは、故障した場合のリカバリパスを提供するため、分散化されたパリティと合成される。   Level 5 RAID systems provide a high level of redundancy by striping both data and parity information to at least three hard disk drives. Data striping is combined with distributed parity to provide a recovery path in case of failure.

レベル6RAID(RAID−6)は、2つのディスクの故障からのリカバリを可能にすることによって、レベル5RAIDシステムよりさらに高いレベルの冗長性を提供する。レベル6RAIDシステムでは、PシンドロームとQシンドロームと呼ばれる2つのシンドロームが、データに対して生成され、RAIDシステムのハードディスクドライブに格納される。   Level 6 RAID (RAID-6) provides a higher level of redundancy than a Level 5 RAID system by allowing recovery from the failure of two disks. In the level 6 RAID system, two syndromes called P syndrome and Q syndrome are generated for data and stored in the hard disk drive of the RAID system.

Pシンドロームは、ストライプにおけるデータのパリティ情報を計算することによって生成される(データブロック(ストリップ)、Pシンドロームブロック及びQシンドロームブロック)。Qシンドロームの生成は、ガロア体(Galois Field)乗算を必要とし、ディスクドライブの故障のイベントでは複雑である。ガロア体(有限体)の計算GF(2)は、還元多項式x+x+x+x+1(すなわち、11B(16進法による))を介し定義される。 P syndrome is generated by calculating parity information of data in a stripe (data block (strip), P syndrome block, and Q syndrome block). The generation of Q syndrome requires Galois Field multiplication and is complicated in the event of a disk drive failure. The Galois field (finite field) calculation GF (2 8 ) is defined via the reduction polynomial x 8 + x 4 + x 3 + x + 1 (ie, 11B (in hexadecimal)).

ディスクリカバリ処理中に実行されるデータ、Pシンドローム及び/又はQシンドロームをリカバリするための再生成方式は、ガロア体乗算と逆演算との両方を必要とする。   The regeneration scheme for recovering data, P syndrome and / or Q syndrome executed during the disk recovery process requires both Galois field multiplication and inverse operation.

例えば、n個のデータディスクD0,D1,D2,...,Dn−1(n≦255)を備えたRAIDアレイでは、2つの数量、すなわち、パリティ(P)とリードソロモンコード(Q)とが、2つのディスクの消失からリカバリするために必要とされる。   For example, n data disks D0, D1, D2,. . . , Dn−1 (n ≦ 255), two quantities are required to recover from the loss of two disks, two quantities: parity (P) and Reed-Solomon code (Q). .

P及びQは、   P and Q are

Figure 0005301675
により定義される。ここで、g={02}は、ガロア体(有限体)GF(2)の要素であり、“+”及び“・”はこの体における演算である。
Figure 0005301675
Defined by Here, g = {02} is an element of a Galois field (finite field) GF (2 8 ), and “+” and “•” are operations in this field.

RAID−6システムに関する計算上のボトルネックは、Qを計算するコストである。この困難さは、従来のプロセッサ(CPU(Central Processing Unit))はガロア体(有限体)GF(2)における計算についてパフォーマンスが低いという事実から生じている。従って、典型的には、パフォーマンスを向上させるため、テーブルルックアップベースアルゴリズムが利用される。テーブルルックアップの利用は、本来的に低速なシリアルプロセスをもたらす。 The computational bottleneck for RAID-6 systems is the cost of calculating Q. This difficulty stems from the fact that conventional processors (CPU (Central Processing Unit)) have poor performance for computations in Galois field (finite field) GF (2 8 ). Therefore, table lookup based algorithms are typically used to improve performance. The use of table lookup results in an inherently slow serial process.

請求される主題の各実施例の特徴は、同様の数字が同様の部分を示す図面を参照して以下の詳細な説明を参照することにより明らかになる。
図1は、各ストライプがハードディスクアレイにストライピングされるデータブロック(ストリップ)、Pシンドローム及びQシンドロームを有する複数のストライプを示すRAID−6アレイの実施例を示すブロック図である。 図2は、汎用プロセッサにおいてAES暗号化及び解読を実行するための命令を有するシステムのブロック図である。 図3は、図1に示されるプロセッサの実施例のブロック図である。 図4は、本発明の原理によるガロア体乗算を実行する方法の実施例のフローチャートである。 図5Aは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。 図5Bは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。 図5Cは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。 図6Aは、ガロア体乗算が複数の16バイトデータブロック上で同時に実行されることを可能にするサンプルコードである。 図6Bは、ガロア体乗算が複数の16バイトデータブロック上で同時に実行されることを可能にするサンプルコードである。 図6Cは、ガロア体乗算が複数の16バイトデータブロック上で同時に実行されることを可能にするサンプルコードである。 以下の詳細な説明は請求された主題の例示的な実施例を参照して進められるが、当業者には多数の代替、改良及び変更が明らかであろう。従って、請求された主題は広くみなされるべきであり、添付した請求項に与えられるものによってのみ規定されるものである。
The features of each embodiment of the claimed subject matter will become apparent by reference to the following detailed description, taken in conjunction with the drawings, in which like numerals indicate like parts.
FIG. 1 is a block diagram illustrating an example of a RAID-6 array showing a plurality of stripes having data blocks (strips), each having a P syndrome and a Q syndrome, with each stripe striped into a hard disk array. FIG. 2 is a block diagram of a system having instructions for performing AES encryption and decryption in a general purpose processor. FIG. 3 is a block diagram of an embodiment of the processor shown in FIG. FIG. 4 is a flowchart of an embodiment of a method for performing Galois field multiplication according to the principles of the present invention. FIG. 5A illustrates the use of a packed shuffle byte (PSHUFB) instruction. FIG. 5B illustrates the use of a packed shuffle byte (PSHUFB) instruction. FIG. 5C illustrates the use of a packed shuffle byte (PSHUFB) instruction. FIG. 6A is sample code that allows Galois field multiplication to be performed simultaneously on multiple 16-byte data blocks. FIG. 6B is sample code that allows Galois field multiplication to be performed simultaneously on multiple 16-byte data blocks. FIG. 6C is sample code that allows Galois field multiplication to be performed simultaneously on multiple 16-byte data blocks. The following detailed description proceeds with reference to exemplary embodiments of the claimed subject matter, but numerous alternatives, modifications, and variations will be apparent to those skilled in the art. Accordingly, the claimed subject matter is to be regarded broadly and is defined only by the terms given in the appended claims.

図1は、各ストライプがハードディスク150のアレイ全体にストライピングされたデータブロック(ストリップ)、Pシンドローム及びQシンドロームを含む複数のストライプを示すRAID−6アレイ100の実施例を示すブロック図である。図示される実施例では、RAIDアレイ100は、5つのハードディスク150を有する。ラウンドロビン方式によりメンバーのハードディスク全体に分散されたP及びQシンドロームによるブロックレベルのストライピングを用いて、データがRAID−6アレイに書き込まれる。ブロックにセグメント化されたファイルなどのシーケンシャルデータが、データディスク150の3つのデータブロック102,104,106に格納されるブロックの1つを有するホリゾンタルストライプ0などのストライプ全体に分散されてもよい。一実施例では、ストライプの各ブロックには512バイトがある。   FIG. 1 is a block diagram illustrating an embodiment of a RAID-6 array 100 showing a plurality of stripes including data blocks (strips), each of which is striped across an array of hard disks 150, P syndrome, and Q syndrome. In the illustrated embodiment, the RAID array 100 has five hard disks 150. Data is written to the RAID-6 array using block level striping with P and Q syndromes distributed across the member hard disks in a round robin fashion. Sequential data, such as files segmented into blocks, may be distributed across stripes such as horizontal stripe 0 having one of the blocks stored in the three data blocks 102, 104, 106 of the data disk 150. In one embodiment, there are 512 bytes in each block of the stripe.

ホリゾンタルストライプ0のデータブロック102,104,106について計算されたP及びQシンドロームは、ストライプ0のPブロック130とQブロック132にそれぞれ格納される。P及びQシンドロームブロックは、各ストライプの異なるハードディスク150に格納される。   The P and Q syndromes calculated for the data blocks 102, 104, and 106 of the horizontal stripe 0 are stored in the P block 130 and the Q block 132 of the stripe 0, respectively. P and Q syndrome blocks are stored on different hard disks 150 in each stripe.

Pシンドロームは、排他的OR(XOR)演算を実行することにより生成されてもよい。XORは、オペランドの1つのみが“1”の論理値を有する場合に限って、論理値“1”を生じさせる2つのオペランドに対する論理演算である。例えば、“11001010”の値を有する第1オペランドと、“10000011”の値を有する第2オペランドとのXORは、“01001001”の値を有する結果を提供する。第1オペランドを格納するハードディスクが故障した場合、第1オペランドは、第2オペランドとこの結果とに対してXOR演算を実行することによってリカバリされてもよい。   The P syndrome may be generated by performing an exclusive OR (XOR) operation. XOR is a logical operation on two operands that yields a logical value “1” only if only one of the operands has a logical value of “1”. For example, an XOR of a first operand having a value of “11001010” and a second operand having a value of “10000011” provides a result having a value of “01001001”. If the hard disk storing the first operand fails, the first operand may be recovered by performing an XOR operation on the second operand and the result.

Pシンドロームは、   P syndrome is

Figure 0005301675
の(XOR)演算を用いてストライプ全体に対して計算されるデータ(D)のシンプルなパリティである。n個のデータディスクを有するシステムでは、Pシンドロームの生成は、以下の式1により表される。
Figure 0005301675
This is a simple parity of data (D) calculated for the entire stripe using the (XOR) operation of. In a system having n data disks, the generation of P syndrome is expressed by the following Equation 1.

Figure 0005301675
Qシンドロームの計算は、ガロア体多項式(g)を用いた乗算(・)を要求する。極めて高いパフォーマンスにより8ビット(バイト)ガロア体多項式に対して、算出演算が実行される。多項式は、有限個の定数と変数とが加算、減算、乗算及び非負の整数の指数のみを用いて結合された式である。1つの原始多項式は、x+x+x+x+1である。多項式に対するガロア体(GF)演算はまた、GF(2)計算とも呼ばれる。n個のデータディスクを有するシステムでは、Qシンドロームの生成は、以下の式2により表される。
Figure 0005301675
The calculation of the Q syndrome requires multiplication (•) using a Galois field polynomial (g). Calculation operations are performed on 8-bit (byte) Galois field polynomials with extremely high performance. A polynomial is an expression in which a finite number of constants and variables are combined using only addition, subtraction, multiplication, and non-negative integer exponents. One primitive polynomial is x 8 + x 4 + x 3 + x + 1. Galois field (GF) operations on polynomials are also referred to as GF (2 8 ) calculations. In a system having n data disks, the generation of the Q syndrome is expressed by the following Equation 2.

Figure 0005301675
バイト単位のガロア体演算は、ブロックの各バイトがその他のバイトから計算上独立しているストライプベースにより実行される。バイト単位のガロア体演算は、255(2−1)個のデータディスクまで収容可能である。
Figure 0005301675
Byte-wise Galois field operations are performed on a stripe base where each byte of the block is computationally independent from the other bytes. A byte unit Galois field operation can accommodate up to 255 (2 8 -1) data disks.

Qシンドロームの生成のパフォーマンスは、以下の式3により表されるように、QをそれのHorner表現により表すことによって向上されてもよい。   The performance of Q syndrome generation may be improved by representing Q by its Horner representation, as represented by Equation 3 below.

Figure 0005301675
従って、2つの演算がQを計算するのに用いられる。
Figure 0005301675
Accordingly, two operations are used to calculate Q.

Figure 0005301675
式2に示される計算とは対照的に、式3の計算はGF256の一般的な乗算を必要としない。その代わりに、乗算はg{02}によるものである。1バイトについて、g={02}との乗算は、値を左に1ビットだけシフトすることによって実行可能である。その後、条件付の排他的OR(XOR)演算が、乗算の結果と、当該結果の最上位ビットの状態に基づく他の値とに対して実行される。一時に4バイトをパラレルに計算するため、{02}による乗算は、4バイトに格納されている値を左に1ビットだけシフトし、後述されるようにバイト毎に4つの条件付XOR演算を実行することによって実行される。
Figure 0005301675
In contrast to the calculation shown in Equation 2, the calculation in Equation 3 does not require a general multiplication of GF256. Instead, multiplication is by g {02}. For one byte, multiplication with g = {02} can be performed by shifting the value to the left by one bit. A conditional exclusive OR (XOR) operation is then performed on the result of the multiplication and other values based on the state of the most significant bit of the result. In order to calculate 4 bytes in parallel at a time, multiplication by {02} shifts the value stored in 4 bytes by 1 bit to the left, and performs four conditional XOR operations for each byte as described below. It is executed by executing.

Figure 0005301675
“&0xfefefefe”は、所望されないキャリを回避するためのマスクである。しかしながら、条件付XOR演算はあまり効率的でない。その計算時間は、4バイトの代わりに8バイトをパラレルに処理し、8バイトのそれぞれにおける最上位ビット(MSB)に基づくマスクを用いることによって、低減されてもよい。
Figure 0005301675
“& 0xfefefe” is a mask for avoiding an unwanted carry. However, conditional XOR operations are not very efficient. The computation time may be reduced by processing 8 bytes in parallel instead of 4 bytes and using a mask based on the most significant bit (MSB) in each of the 8 bytes.

RAID−6アルゴリズムのQシンドロームの計算は、Federal Information Processing Standard(FIPS)197としてNational Institute of Standards and Technology(NIST)により公表されたAdvanced Encryption Standard(AES)のために用いられるGF(2)の同一表現を利用する。AESは、情報を暗号化及び解読可能なシンメトリックブロック暗号化である。 The calculation of the RAID-6 Q syndrome is used by Advanced Institute of Standards (NIST) Advanced GF 8 published by National Institute of Standards (NIST) as Federal Information Processing Standard (FIPS) 197. Use the same expression. AES is symmetric block encryption that can encrypt and decrypt information.

一実施例では、GF(2)を用いるAES命令は、本発明の原理によりRAIDレベル6に対して要求されるQシンドロームを計算するために、ガロア体乗算演算を実行するため用いられる。 In one embodiment, an AES instruction using GF (2 8 ) is used to perform a Galois field multiplication operation to calculate the Q syndrome required for RAID level 6 in accordance with the principles of the present invention.

図2は、汎用プロセッサにおいてAES暗号化及び解読を実行するための命令を含むシステム200のブロック図である。システム200は、プロセッサ201と、MCH(Memory Controller Hub)又はGMCH(Graphics Memory Controller Hub)202と、入出力(I/O)コントローラハブ(ICH)204とを有する。MCH202は、プロセッサ201とメモリ208との間の通信を制御するメモリコントローラ206を有する。プロセッサ201とMCH202とは、システムバス216を介し通信する。   FIG. 2 is a block diagram of a system 200 that includes instructions for performing AES encryption and decryption in a general purpose processor. The system 200 includes a processor 201, an MCH (Memory Controller Hub) or a GMCH (Graphics Memory Controller Hub) 202, and an input / output (I / O) controller hub (ICH) 204. The MCH 202 includes a memory controller 206 that controls communication between the processor 201 and the memory 208. The processor 201 and the MCH 202 communicate via the system bus 216.

プロセッサ201は、シングルコアIntel(登録商標)Pentium(登録商標) IVプロセッサ、シングルコアIntel Celeronプロセッサ、Intel(登録商標)XScaleプロセッサ、Intel(登録商標)Pentium(登録商標) D、Intel(登録商標)Xeon(登録商標)プロセッサ、Intel(登録商標)Core(登録商標)Duoプロセッサなどのマルチコアプロセッサ、又は他の何れかのタイプのプロセッサの何れかであってもよい。   The processor 201 is a single-core Intel (registered trademark) Pentium (registered trademark) IV processor, single-core Intel Celeron processor, Intel (registered trademark) XScale processor, Intel (registered trademark) Pentium (registered trademark) D, Intel (registered trademark). It may be either a multi-core processor such as a Xeon (R) processor, an Intel (R) Core (R) Duo processor, or any other type of processor.

メモリ208は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SDRAM(Synchronized Dynamic Random Access Memory)、DDR2(Double Date Rate 2)RAM、RDRAM(Rambus Dynamic Random Access Memory)又は他の何れかのタイプのメモリであってもよい。   Memory 208 includes DRAM (Dynamic Random Access Memory), SRAM (Static Random Access Memory), SDRAM (Synchronized Dynamic Random Access Memory), and DDR2 (Dum2 Random Access Memory). This type of memory may be used.

ICH204は、DMI(Direct Media Interface)などの高速チップ・ツー・チップインターコネクト214を用いてMCH202に接続されてもよい。DMIは、2つの一方向のレーンを介し2ギガビット/秒の同時伝送レートをサポートする。   The ICH 204 may be connected to the MCH 202 using a high-speed chip-to-chip interconnect 214 such as DMI (Direct Media Interface). DMI supports a 2 Gigabit / second simultaneous transmission rate over two unidirectional lanes.

ICH204は、RAID100(図1)などの少なくとも1つの記憶装置212との通信を制御するためのストレージI/Oコントローラ210を有してもよい。ICH204は、Serial Attached Small Computer System Interface(SAS)やSerial Advanced Technology Attachment(SATA)などのシリアルストレージプロトコルを用いて、ストレージプロトコルインターコネクト218を介し記憶装置212と通信してもよい。   The ICH 204 may include a storage I / O controller 210 for controlling communication with at least one storage device 212 such as RAID 100 (FIG. 1). The ICH 204 may use a serial storage protocol such as Serial Attached Small Computer System Interface (SAS) or Serial Advanced Technology Attachment (SATA) to communicate with the storage protocol interconnect 218.

プロセッサ201は、AES暗号化及び解読処理を実行するAES機能203を有する。AES機能203は、メモリ208及び/又は記憶装置212に格納される情報を暗号化又は解読するのに利用される。   The processor 201 has an AES function 203 that executes AES encryption and decryption processing. The AES function 203 is used to encrypt or decrypt information stored in the memory 208 and / or the storage device 212.

暗号化は、秘密鍵(暗号鍵)を用いて“平文”と呼ばれる理解できるデータを“暗号文”と呼ばれる理解できない形式に変換する一連の変換処理を実行する。暗号化における変換処理は、(1)ラウンド鍵(暗号鍵から導出される値)を排他的OR(XOR)演算を用いた状態(2次元バイトアレイ)に加算し、(2)非線形バイト置換テーブル(S−Box)を用いて当該状態を処理し、(3)状態の最後の3列を異なるオフセットだけ循環的にシフトし、(4)状態のすべての列を抽出し、ミックスカラム変換と呼ばれる新たな列を生成するため、それらのデータを合成する(互いに独立して)、ことを含む。これら4つの変換処理は、後述される単一のAES命令により実行される。   Encryption performs a series of conversion processes for converting understandable data called “plaintext” into an incomprehensible format called “ciphertext” using a secret key (encryption key). In the conversion process in encryption, (1) a round key (value derived from the encryption key) is added to a state (two-dimensional byte array) using an exclusive OR (XOR) operation, and (2) a nonlinear byte replacement table. Process the state using (S-Box), (3) cyclically shift the last three columns of the state by different offsets, (4) extract all the columns of the state, referred to as mix column transformation Combining these data (independent of each other) to generate a new column. These four conversion processes are executed by a single AES instruction described later.

ミックスカラム変換では、状態のすべての列からのデータが、新たな列を生成するため合成される(互いに独立して)。ミックスカラムは、128ビット(16バイト)入力の4×4マトリックス表現の列上で実行される128ビット→128ビット変換である。当該変換は、各列をAES−ガロア体256の係数を有する3次の多項式として扱う。状態の4×4のマトリックス表現の各列は、多項式a(x)={03}x+{01}x+{01}x+{02}と乗算され、x+1とreduced moduloされる。128ビットから128ビットへのミックスカラム変換は、16バイトから16バイトへの変換である。例えば、16バイト(状態)は、[p,o,n,m,i,k,j,i,h,g,f,e,d,c,b,a]として示されてもよく、ここで、aが最下位バイトであり、状態は4つの列を有し、各列は32ビットダブルワード(4バイト)である。 In mixed column transformations, data from all the columns in the state are combined (independent of each other) to generate a new column. The mix column is a 128 bit → 128 bit conversion performed on a 4 × 4 matrix representation column with 128 bits (16 bytes) input. This transformation treats each column as a third-order polynomial having coefficients of AES-Galois field 256. Each column of the 4 × 4 matrix representation of the state is multiplied by the polynomial a (x) = {03} x 3 + {01} x 2 + {01} x + {02} and is reduced modulo x 4 +1. . The mixed column conversion from 128 bits to 128 bits is a conversion from 16 bytes to 16 bytes. For example, 16 bytes (state) may be indicated as [p, o, n, m, i, k, j, i, h, g, f, e, d, c, b, a], where Where a is the least significant byte, the state has four columns, and each column is a 32-bit doubleword (4 bytes).

ミックスカラム変換は、GF(2)計算(モジュロx+x+x+x+1)に基づくマトリックス乗算である。従って、ミックスカラム変換は、後述されるようにレベル6RAIDシステムのためのQシンドロームを計算するため、ガロア体乗算機能250により利用されてもよい。ミックスカラム乗算を利用するため、ミックスカラム変換は、AES命令から隔離される。 The mix column transformation is a matrix multiplication based on the GF (2 8 ) calculation (modulo x 8 + x 4 + x 3 + x + 1). Accordingly, the mix column transform may be utilized by the Galois field multiplication function 250 to calculate the Q syndrome for the level 6 RAID system as described below. In order to take advantage of mix column multiplication, the mix column transformation is isolated from the AES instruction.

ミックスカラム変換は、状態の4つの列に対して個別に実行される。4つの列は、(1)[p,o,n,m]、(2)[i,k,j,i]、(3)[h,g,f,e]及び(4)[d,c,b,a]である。   Mix column transformations are performed individually on the four columns of states. The four columns are (1) [p, o, n, m], (2) [i, k, j, i], (3) [h, g, f, e] and (4) [d, c, b, a].

[p,o,n,m,i,k,j,i,h,g,f,e,d,c,b,a]に対するミックスカラム変換の結果は、テーブル1に示されるように、[p’,o’,n’,m’,i’,k’,j’,i’,h’,g’,f’,e’,d’,c’,b’,a’]である。   As shown in Table 1, the result of the mix column conversion for [p, o, n, m, i, k, j, i, h, g, f, e, d, c, b, a] p ′, o ′, n ′, m ′, i ′, k ′, j ′, i ′, h ′, g ′, f ′, e ′, d ′, c ′, b ′, a ′]. .

Figure 0005301675
テーブル1に示されるように、4つの列のそれぞれに対して同一の処理が実行される。
Figure 0005301675
As shown in Table 1, the same processing is executed for each of the four columns.

従って、これらの処理が各ダブルワード(列)について同様のものであると仮定すると、4つの列の1つに対するミックスカラム変換を記述するため、簡単な表記が利用されてもよい(例えば、最下位ダブルワードであるカラム4など)。   Thus, assuming that these processes are similar for each doubleword (column), a simple notation may be used to describe the mix column transformation for one of the four columns (eg, Column 4 which is the lower double word).

カラム4について、ダブルワード(dword)=[d,c,b,a]であり、簡単な表記によるミックスカラム変換は、以下に示されるように表記される。   For column 4, doubleword (dword) = [d, c, b, a], and the mixed column conversion by simple notation is expressed as shown below.

Figure 0005301675
図3は、図2に示されるプロセッサ201の実施例のブロック図である。プロセッサ201は、レベル1(L1)命令キャッス302から受け取ったプロセッサ命令を復号化するためのフェッチ復号化ユニット306を有する。プロセッサ命令を実行するため用いられるデータは、レジスタファイル308に格納されてもよい。一実施例では、レジスタファイル308は、AES命令により使用されるデータを格納するため、AES命令により用いられる複数の128ビットレジスタを有する。
Figure 0005301675
FIG. 3 is a block diagram of an embodiment of the processor 201 shown in FIG. The processor 201 includes a fetch decoding unit 306 for decoding processor instructions received from the level 1 (L1) instruction cache 302. Data used to execute processor instructions may be stored in register file 308. In one embodiment, register file 308 includes a plurality of 128-bit registers used by AES instructions to store data used by AES instructions.

一実施例では、レジスタファイル308は、Streaming(Single Instruction Multiple Data(SIMD))Extension(SSE)命令セットを有するIntel Pentium(登録商標) MMXプロセッサに備えられている128ビットMMXレジスタに類似した128ビットレジスタ群である。SIMDプロセッサでは、1つの128ビットブロックが一度にロードされることによって、データが128ビットブロックで処理される。   In one embodiment, register file 308 is a 128-bit MMX register similar to the Intel Pentium® MMX processor with Streaming (Single Instruction Multiple Data (SIMD)) Extension (SSE) instruction set. A group of registers. In a SIMD processor, data is processed in 128-bit blocks by loading one 128-bit block at a time.

フェッチ復号化ユニット306は、L1命令キャッシュ302からマクロ命令をフェッチし、マクロ命令を復号化し、マイクロコードROM(Read Only Memory)314に格納されるマイクロ処理(μops)と呼ばれるシンプルな処理に分割する。パイプライン化された実行ユニット310が、マイクロ処理をスケジューリング及び実行する。図示された実施例では、実行ユニット310のAES機能203は、AES命令のためのマイクロ命令を含む。処理準備されたデータがある場合、プロセッサ(CPU)がすべてのサイクルにおいて命令を送ってもよいように、AES命令は完全にパイプライン化される。リタイアメントユニット312は、実行されたAES命令の結果をレジスタ又はメモリに書き込む。AES命令により用いられるラウンドキー316は、L1データキャッシュ304に格納され、AES命令の何れかを実行するためマイクロ処理による利用のため、実行ユニット310にロードされてもよい。   The fetch decoding unit 306 fetches a macro instruction from the L1 instruction cache 302, decodes the macro instruction, and divides it into simple processing called micro processing (μops) stored in a microcode ROM (Read Only Memory) 314. . A pipelined execution unit 310 schedules and executes microprocessing. In the illustrated embodiment, the AES function 203 of the execution unit 310 includes microinstructions for AES instructions. If there is data ready for processing, the AES instruction is fully pipelined so that the processor (CPU) may send the instruction in every cycle. The retirement unit 312 writes the result of the executed AES instruction to a register or memory. The round key 316 used by the AES instruction may be stored in the L1 data cache 304 and loaded into the execution unit 310 for use by microprocessing to execute any of the AES instructions.

AES命令がフェッチ復号化ユニット306により復号化された後、実行ユニット310によるAES命令の実行は、マイクロコードROM314に格納されるAES命令に係るマイクロ処理を実行することを伴う。   After the AES instruction is decoded by the fetch decoding unit 306, execution of the AES instruction by the execution unit 310 involves executing micro processing related to the AES instruction stored in the microcode ROM 314.

AES命令セットは、暗号化ラウンド、解読ラウンド、暗号化最終ラウンド及び解読最終ラウンドを実行するための個別のAES命令を有する。一実施例では、各AES命令は一意的な処理コード(opcode)を有する。   The AES instruction set has separate AES instructions for performing an encryption round, a decryption round, an encryption final round, and a decryption final round. In one embodiment, each AES instruction has a unique processing code (opcode).

AES命令セットは、テーブル2に示されるように、4つのAES命令(encrypt,decrypt,encrypt last round,decrypt last round)を有する。AES命令セットのAES命令は、最終ラウンドを除くすべてのラウンドに用いられる暗号化及び解読ラウンド処理を実行するための単一のラウンド処理を含む。   As shown in Table 2, the AES instruction set has four AES instructions (encrypt, decrypt, encrypt last round, and decrypt last round). The AES instruction of the AES instruction set includes a single round process to perform the encryption and decryption round processes used for all rounds except the final round.

Figure 0005301675
例えば、テーブル2のAESENCシングルラウンド命令では、入力データは128ビットレジスタ(xmmsrcdst)に格納され、ラウンドキーは他の128ビットレジスタ(xmm)に格納される。この命令は、128ビットxmmsrcdstレジスタに格納される入力データ(ソース)に対して1つのAES暗号化ラウンドの一連の4つの変換処理を実行し、ラウンド処理の実行結果によって128ビットxmmsrcdstレジスタに格納される入力データを上書きする。このため、xmmsrcdstはまず、入力データを格納し、その後にAESラウンド処理の結果を格納する。
Figure 0005301675
For example, in the AESENC single round instruction in Table 2, the input data is stored in a 128-bit register (xmmsrcdst), and the round key is stored in another 128-bit register (xmm). This instruction performs a series of four conversion processes of one AES encryption round on the input data (source) stored in the 128-bit xmmsrcdst register, and is stored in the 128-bit xmmsrcdst register according to the execution result of the round process. Overwrite the input data. For this reason, xmmsrcdst first stores the input data, and then stores the result of the AES round process.

テーブル2に示されるように、FOPISパブリケーション197の用語を用いて、128ビット→128ビット変換の対応するシーケンスが説明される。暗号化ラウンドの変換シーケンスは、以下を含む。
(1)AddRoundKey変換:ラウンドキー(暗号鍵から導出された値)が、排他的OR(XOR)演算を用いて状態(2次元128ビットバイトアレイ)に加えられる。AddRoundKeyは、それの2つの引数のビット単位のXORとして規定される(128ビット,128ビット)→128ビット変換である。AESフローでは、これらの引数は状態とラウンドキーである。
(2)SubBytes変換:状態は、非線形バイト置換テーブル(S−Box)を用いて処理される。SubBytesは、入力の16バイトのそれぞれにS−box変換を適用することによって規定される16バイトから16バイト(バイト単位)への変換である。S−box変換は、以下のようなルックアップテーブルを介し表すことができる。ルックアップテーブルへの入力は、バイトB[7:0]である。ただし、x及びyは低ニブル及び高ニブルを示し、x[3:0]=B[7:4],y[3:0]=B[3:0]である。出力バイトは、16進数(H)表記による2桁の数としてテーブルに符号化される。例えば、入力85Hは97Hをもたらす。
(3)ShiftRows変換:状態の最後の3つの行は異なるオフセットだけ循環的にシフトされる。ShiftRowsは、以下のバイト単位の順列である。
As shown in Table 2, using the terminology of FOPIS Publication 197, the corresponding sequence of 128 bit → 128 bit conversion is described. The encryption round conversion sequence includes:
(1) AddRoundKey transformation: A round key (value derived from an encryption key) is added to a state (two-dimensional 128-bit byte array) using an exclusive OR (XOR) operation. AddRoundKey is defined as a bitwise XOR of its two arguments (128 bits, 128 bits) → 128 bit conversion. In the AES flow, these arguments are state and round key.
(2) SubBytes transformation: the state is processed using a non-linear byte replacement table (S-Box). SubBytes is a conversion from 16 bytes to 16 bytes (byte unit) defined by applying S-box conversion to each of the 16 bytes of input. The S-box conversion can be expressed through a lookup table as follows. The input to the lookup table is bytes B [7: 0]. However, x and y indicate a low nibble and a high nibble, and x [3: 0] = B [7: 4] and y [3: 0] = B [3: 0]. The output byte is encoded in the table as a 2-digit number in hexadecimal (H) notation. For example, input 85H results in 97H.
(3) ShiftRows transformation: The last three rows of the state are cyclically shifted by different offsets. ShiftRows is a permutation of the following byte units.

Figure 0005301675
この変換は、状態の4×4のマトリックス表現に対する処理としてみなされる。4×4のマトリックスの第1行は変更されない。第2行は、1バイトポジションだけ左回転される。第3行は、2バイトポジションだけ左回転される。第4行は、3バイトポジションだけ左回転される。
(4)ミックスカラム変換:状態のすべての列からのデータが、新たな列を生成するためミックスされる(互いに独立して)。ミックスカラムは、128ビット(16バイト)入力の4×4のマトリックス表現の列に対して実行される128ビット→128ビットへの変換である。この変換は、各列をAESガロア体256の係数を有する3次の多項式として扱う。状態の4×4のマトリックス表現の各列は、多項式a(x)={03}x+{01}x+{01}x+{02}と乗算され、x+1の還元モジュローされる。
Figure 0005301675
This transformation is viewed as a process for a 4 × 4 matrix representation of the state. The first row of the 4x4 matrix is not changed. The second line is rotated left by one byte position. The third line is rotated left by 2 byte positions. The fourth line is rotated left by 3 byte positions.
(4) Mixed column conversion: Data from all columns in the state are mixed (independent of each other) to generate a new column. The mix column is a 128 bit → 128 bit conversion performed on a 4 × 4 matrix representation column with 128 bits (16 bytes) input. This conversion treats each column as a cubic polynomial having coefficients of AES Galois field 256. Each column of the 4 × 4 matrix representation of the state is multiplied by the polynomial a (x) = {03} x 3 + {01} x 2 + {01} x + {02} and reduced modulo x 4 +1. .

テーブル2に示されるように、AES最終暗号化ラウンド命令AESENCLASTは、ミックスカラム変換を実行しない。   As shown in Table 2, the AES final encryption round instruction AESENCLAST does not perform mix column conversion.

解読(逆暗号化)は、暗号鍵を用いて“暗号文”を同一サイズの“平文”に変換する一連の変換処理を実行する。逆暗号化における変換処理は、暗号化の変換処理の逆である。   Decryption (reverse encryption) executes a series of conversion processes for converting “ciphertext” into “plaintext” of the same size using an encryption key. The conversion process in reverse encryption is the reverse of the conversion process in encryption.

上述された解読ラウンドの変換シーケンスは、テーブル2に示されるように、単一のAES解読ラウンド命令AESDECにより実行され、最後の解読ラウンドに対しては、単一のAES最終解読ラウンド命令AESDECCLASTにより実行される。   The decryption round conversion sequence described above is performed by a single AES decryption round instruction AESDEC, as shown in Table 2, and for the last decryption round, by a single AES final decryption round instruction AESDECCLAST. Is done.

AES暗号化及び解読命令を含む命令の組み合わせは、隔離された変換としてAESアルゴリズムのサブステップ(変換)を取得するのに利用されてもよい。隔離された変換は、暗号化AES命令(AESENC,AESENCLAST)により用いられるShift Rows、Substitute Bytes及びミックスカラムを含む。   A combination of instructions including AES encryption and decryption instructions may be used to obtain sub-steps (transformations) of the AES algorithm as isolated transforms. Isolated transformations include Shift Rows, Substitute Bytes, and Mix columns used by encrypted AES instructions (AESENC, AESENCLAST).

本発明の実施例は、AES暗号化及び解読命令を用いた命令の組み合わせを利用して取得された隔離されたAESミックスカラム変換を用いて、レベル6RAIDのQシンドロームを計算する。   Embodiments of the present invention compute a level 6 RAID Q syndrome using an isolated AES mix column transform obtained using a combination of instructions using AES encryption and decryption instructions.

図4は、本発明の原理によるガロア体(GF)乗算を実行する方法の実施例のフローチャートである。   FIG. 4 is a flowchart of an embodiment of a method for performing Galois field (GF) multiplication according to the principles of the present invention.

ミックスカラム変換のためのマイクロ処理は、AESENC命令とAESDEC命令との両方において用いられる。テーブル2に示されるように、AESDEC命令は、AESENC命令における変換処理と逆の変換処理を含む。このため、ミックスカラム変換のマイクロ処理は、(1)ゼロに設定されたラウンドキーによるAESENC命令と、その後の(2)ゼロに設定されたラウンドキーによるAESDECLAST命令との命令シーケンスを実行することによって隔離されてもよい。   Microprocessing for mix column conversion is used in both AESENC and AESDEC instructions. As shown in Table 2, the AESDEC instruction includes a conversion process opposite to the conversion process in the AESENC instruction. Therefore, the micro processing of the mixed column conversion is performed by executing an instruction sequence of (1) AESENC instruction with a round key set to zero and (2) AESDECLAST instruction with a round key set to zero. It may be isolated.

各AES命令のための変換シーケンスを参照して、この命令シーケンスは、ミックスカラム変換を隔離する。これは、AddRoundKeyマイクロ処理が、No処理(NOP)を実行し、その他のマイクロ処理(Shift Rows,Substitute Bytes)が、逆マイクロ処理(Inverse Shift Rows,Inverse Substitute Bytes)とを実行することによって変更される。   With reference to the conversion sequence for each AES instruction, this instruction sequence isolates the mix column conversion. This is because the AddRoundKey micro process executes a No process (NOP), and the other micro process (Shift Rows, Substitute Bytes) is changed to a reverse micro process (Inverse Shift Rows, Inverse Substitute Bytes). The

従って、AES命令(AESENC,AESENCLAST)のシーケンスの実行は、以下に示されるようなミックスカラム(状態)変換を隔離させる。   Thus, execution of the sequence of AES instructions (AESENC, AESENCLAST) isolates the mix column (state) transformation as shown below.

Y=Inverse Mix Columns(Inverse Substitute Bytes(Inverse Shift Rows(Substitute Bytes(Shift Rows(State))))
隔離されたミックスカラム変換は、本発明の実施例に従ってAESガロア体において16バイトと{02}とを乗算するのに用いられる。16バイト(p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a)の4(d,c,b,a)と{02}とを乗算する実施例が説明される。
Y = Inverse Mix Columns (Inverse Substitute Bytes (Inverse Shift Rows (Substitute Bytes (Shift Rows)))
The isolated mix column transformation is used to multiply 16 bytes and {02} in an AES Galois field according to an embodiment of the present invention. 16 bytes (p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a) 4 (d, c, b, a) and {02} An embodiment for multiplying is described.

本実施例では、有限体は、還元多項式(reduction polynomial)0x11bにより規定される。他の実施例では、体表現の選択は設定可能であってもよい。   In this embodiment, the finite field is defined by a reduction polynomial 0x11b. In other embodiments, the selection of body representation may be configurable.

図4を参照して、ブロック400において、(0,c,0,a)を提供するため、入力データ(d,c,b,a)の奇数バイトポジションがゼロに、すなわち、b=d=0に設定される。一実施例では、Packedシャッフルバイト(PSHUFB)命令が、奇数バイトポジションをゼロに設定するのに用いられる。   Referring to FIG. 4, in block 400, to provide (0, c, 0, a), the odd byte positions of the input data (d, c, b, a) are zero, ie, b = d = Set to zero. In one embodiment, a packed shuffle byte (PSHUFB) instruction is used to set the odd byte position to zero.

図5A〜5Cは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。PSHUFB命令は、第2オペランドに格納されたシャッフル制御マスクに基づき第1オペランドのバイトをシャッフルする(バイトのインプレースシャッフルを実行する)。シャッフル制御マスクのバイトの最上位ビットが設定されている場合、第1オペランドの対応するバイトにゼロが書き込まれる。   5A-5C illustrate the use of a packed shuffle byte (PSHUFB) instruction. The PSHUFB instruction shuffles the bytes of the first operand based on the shuffle control mask stored in the second operand (executes in-place shuffling of bytes). If the most significant bit of the shuffle control mask byte is set, zero is written to the corresponding byte of the first operand.

PSHUFB命令は、バイトA及びBの2つのレジスタと呼ばれる2つの128ビット入力を有する。PSHUFBは、バイトA=[a151413...a]及びB=[b151413...b]の2つの128ビットレジスタをとりあげ、レジスタAを[ab15b14b13...ab0]と置換する。bの先頭ビットが1に設定されている場合、その結果の第iエントリは0となる。 The PSHUFB instruction has two 128-bit inputs called two registers, bytes A and B. PSHUFB contains bytes A = [a 15 a 14 a 13 . . . a 0 ] and B = [b 15 b 14 b 13 . . . b 0 ] and take register A as [a b15 a b14 a b13 . . . a b0 ]. If the first bit of b i is set to 1, the resulting i-th entry is 0.

図5Aを参照して、ブロック500は、128ビット第1レジスタの下位4バイトの初期的な内容を示し、ブロック502は、PSHUFB命令が“ff02ff00h”のシャッフル制御マスクにより実行された後、第1レジスタの下位4バイトの内容を示す。図示されるように、2つの奇数バイト(バイト1とバイト3)は、MSBが“1”に設定されているため、“0”に設定されている。   Referring to FIG. 5A, block 500 shows the initial contents of the lower 4 bytes of the 128-bit first register, and block 502 shows the first after the PSHUFB instruction is executed with the shuffle control mask of “ff02ff00h”. Indicates the contents of the lower 4 bytes of the register. As shown in the figure, the two odd bytes (byte 1 and byte 3) are set to “0” because the MSB is set to “1”.

図4を参照して、奇数バイトが“0”に設定された後、ミックスカラム変換が、第1レジスタの内容を用いて、AESDECLASTとその後のAESENCの命令シーケンスを実行することによって実行される。この命令シーケンスは、   Referring to FIG. 4, after the odd byte is set to “0”, the mix column conversion is performed by executing the AESDECLAST and subsequent AESENC instruction sequence using the contents of the first register. This instruction sequence is

Figure 0005301675
という変換を実行する。
Figure 0005301675
The conversion is executed.

dとbの両方がゼロであるため、“d=0,c,b=0,a”の命令シーケンスの結果は、3a+c,a+2c,a+3c,2a+cとなる。   Since both d and b are zero, the result of the instruction sequence “d = 0, c, b = 0, a” is 3a + c, a + 2c, a + 3c, 2a + c.

次に、結果(3a+c,a+2c,a+3c,2a+c)の奇数バイトは、Packedシャッフルバイト(PSHUFB)を用いてゼロに設定され、第2PSHUFB命令の結果である(0,a+2c,0,2a+c)が第1レジスタに格納される。   Next, the odd bytes of the result (3a + c, a + 2c, a + 3c, 2a + c) are set to zero using the packed shuffle byte (PSHUFB), and the result of the second PSHUFB instruction (0, a + 2c, 0, 2a + c) is the first. Stored in one register.

ブロック404において、(d,0,b,0)を提供するため、入力データ(d,c,b,a)の偶数バイトポジションがゼロに、すなわち、a=c=0に設定される。一実施例では、Packedシャッフルバイト(PSHUFB)命令が、偶数バイトポジションをゼロに設定するため用いられる。   At block 404, the even byte position of the input data (d, c, b, a) is set to zero, i.e., a = c = 0, to provide (d, 0, b, 0). In one embodiment, a packed shuffle byte (PSHUFB) instruction is used to set the even byte position to zero.

図5Bを参照すると、502は、第1レジスタの初期的な内容を示し、504は、PSHUFB命令が“03ff01ffh”のシャッフル制御マスクにより実行された後の第1レジスタの内容を示す。図示されるように、すべての偶数バイトポジションは“0”に設定されている。   Referring to FIG. 5B, reference numeral 502 indicates the initial contents of the first register, and reference numeral 504 indicates the contents of the first register after the PSHUFB instruction is executed with the shuffle control mask of “03ff01ffh”. As shown, all even byte positions are set to “0”.

図4を参照して、偶数バイトポジションが“0”に設定された後、ミックスカラム変換が、第1レジスタの内容を用いてAESDECLASTの後にAESENCとの命令シーケンスを実行することによって実行される。この命令シーケンスは、   Referring to FIG. 4, after the even byte position is set to “0”, the mix column conversion is executed by executing an instruction sequence with AESDECC after AESDECLAST using the contents of the first register. This instruction sequence is

Figure 0005301675
という変換を実行する。
Figure 0005301675
The conversion is executed.

cとaの両方がゼロであるため、“d,c=0,b,a=0”の命令シーケンスの結果は、b+2d,b+3d,2b+d,3b+dとなる。   Since both c and a are zero, the result of the instruction sequence “d, c = 0, b, a = 0” is b + 2d, b + 3d, 2b + d, 3b + d.

次に、結果(b+2d,b+3d,2b+d,3b+d)の偶数バイトが、Packedシャッフルバイト(PSHUFB)を用いてゼロに設定され、第4PSHUFB命令の結果(b+2d,0,2b+d,0)が第2レジスタに格納される。   Next, the even bytes of the result (b + 2d, b + 3d, 2b + d, 3b + d) are set to zero using the packed shuffle byte (PSHUFB), and the result (b + 2d, 0, 2b + d, 0) of the fourth PSHUFB instruction is stored in the second register. Stored in

ブロック408において、第1レジスタ(ブロック402)に格納された結果と、第2レジスタ(ブロック406)に格納された結果とが、両方のミックスカラム変換の結果(b+2d,a+2c,2b+d,2a+c)を提供するためにXOR演算される。実施例では、この結果は、PXOR命令を用いてXOR演算される。PXOR命令は、2つのレジスタの内容に対してXOR演算を実行し、レジスタの1つにその結果を格納する。   In block 408, the result stored in the first register (block 402) and the result stored in the second register (block 406) are both mixed column conversion results (b + 2d, a + 2c, 2b + d, 2a + c). XORed to provide. In the exemplary embodiment, this result is XORed using the PXOR instruction. The PXOR instruction performs an XOR operation on the contents of two registers and stores the result in one of the registers.

ブロック410において、Packedシャッフルバイト(PSHUFB)命令が、マスクに基づき入力データ(d,c,b,a)のバイトをシャッフルするのに利用される。   In block 410, a packed shuffle byte (PSHUFB) instruction is used to shuffle the bytes of input data (d, c, b, a) based on the mask.

図5Cを参照して、506は、第3レジスタの初期的な内容を示し、508は、PSHUFB命令が“000302h”のシャッフル制御マスクにより実行された後の第3レジスタの内容を示す。図示されるように、入力データ(d,c,b,a)のバイトは、第3レジスタに格納される結果(b,a,d,c)510を提供するためシャッフルされる。   Referring to FIG. 5C, 506 shows the initial contents of the third register, and 508 shows the contents of the third register after the PSHUFB instruction is executed with the shuffle control mask of “000302h”. As shown, the bytes of input data (d, c, b, a) are shuffled to provide the result (b, a, d, c) 510 stored in the third register.

図4に続いて、ブロック412において、乗算の結果、すなわち、(2d,2c,2b,2a)を提供するため、レジスタ3(b+2d,b+3d,2b+d,3b+d)とレジスタ2(b,a,d,c)の内容に対してXOR演算が実行される。   Continuing with FIG. 4, in block 412, register 3 (b + 2d, b + 3d, 2b + d, 3b + d) and register 2 (b, a, d) are provided to provide the result of the multiplication, ie, (2d, 2c, 2b, 2a). , C), an XOR operation is performed.

4バイトデータブロックに対してg={02}による乗算を実行する実施例が説明された。以下のテーブル4は、1つの16バイトデータブロックに対して実行される機能的な正確な最適化されたに実施例のコードサンプル(アセンブラ)を示す。   An embodiment has been described in which multiplication by g = {02} is performed on a 4-byte data block. Table 4 below shows a functional accurate optimized code sample (assembler) executed on one 16-byte data block.

Figure 0005301675
テーブル4のコードサンプルに示されるように、ガロア体乗算は、11個の命令(5つのPSHUFB命令、2つのPXOR命令、2つのAESENC命令、2つのAESDECLAST命令)、3個のマスク(マスク1,マスク2,マスク3)及び3個のxmmレジスタ(xmm1,xmm2,xmm3)を用いて、16バイトのデータに対して実行される。
Figure 0005301675
As shown in the code sample in Table 4, Galois field multiplication involves 11 instructions (5 PSHUFB instructions, 2 PXOR instructions, 2 AESENC instructions, 2 AESDECLAST instructions), 3 masks (Mask 1, This is performed on 16 bytes of data using mask 2, mask 3) and three xmm registers (xmm1, xmm2, xmm3).

例えば、入力データ“e598271ef11141b8ae52b4e0305dbfd4”に対するガロア体乗算の実行結果は、出力“d12b4e3cf922826b47a473db60ba65b3”をもたらす。   For example, the execution result of Galois field multiplication for the input data “e598271ef11141b8ae52b4e0305dbfd4” yields the output “d12b4e3cf922826b47a473db60ba65b3”.

このコードサンプルでは、命令が逐次処理される場合、スループットは、AES命令の遅延により遅くなる。例えば、実施例では、PSHUFBとPXOR命令の遅延は1サイクルであり、AES命令の遅延は6サイクルである。従って、AES命令のペアが逐次処理される場合、12サイクルの遅延が生じる。他の実施例では、AES命令のペアの第2AES命令が、第1AES命令がスケジューリングされた6サイクル後にスケジューリングされるように、全体的な遅延は、インタリーブされた命令による複数の16バイトの入力データを同時に処理することによって減少されてもよい。テーブル4に示されるサンプルコードの命令の順序は、図6A〜6Cに示される例に示されるように変更されてもよい。この命令順序は、複数の16バイトデータブロックが同時に処理することを可能にする。これは、AES命令の遅延はPXOR及びPSHUFB命令の遅延より大きいためである。   In this code sample, if the instructions are processed sequentially, the throughput is slowed by the delay of the AES instruction. For example, in the embodiment, the delay of the PSHUFB and PXOR instructions is 1 cycle, and the delay of the AES instruction is 6 cycles. Thus, when AES instruction pairs are processed sequentially, a 12 cycle delay occurs. In another embodiment, the overall delay is a plurality of 16 bytes of input data from the interleaved instruction so that the second AES instruction of the pair of AES instructions is scheduled 6 cycles after the first AES instruction is scheduled. May be reduced by processing them simultaneously. The order of the sample code instructions shown in Table 4 may be changed as shown in the examples shown in FIGS. This instruction order allows multiple 16-byte data blocks to be processed simultaneously. This is because the delay of the AES instruction is greater than the delay of the PXOR and PSHUFB instructions.

図6A〜6Cは、ガロア体乗算が複数の16バイトデータブロックに対して同時に実行されることを可能にするサンプルコードである。このコードは、利用されうるコードの単なる一例である。他の多数の変形があってもよく、例えば、コードは特定のコンパイラによる利用に最適化されてもよい。図6A〜6Cは、NBLOCKSデータブロック(各ブロックは16バイト(16B)を有する)のデータバッファに対して{02}による乗算を実行する機能(インラインアセンブラ)を示す。4つの16バイトブロックがパラレルに処理され、256バイトデータバッファを利用するため、当該処理(パラレルな4つの16バイトブロック)が4回繰り返される(パラレルに4ブロック)。12個のxmmレジスタ(xmm0〜xmm11)が、入力データとその演算結果とを格納するのに用いられる。3つのマスクレジスタ(マスク1,マスク2,マスク3)が、テーブル4に示されるサンプルコードと同じマスクを格納する。図6Aを参照して、ブロック600の命令は、xmmレジスタ(xmm1,xmm4,xmm7,xmm10)に格納されている入力データの偶数バイトポジションをゼロに設定する。図示された例では、Packedシャッフルバイト(VPSHUFB)命令が、奇数バイトポジションをゼロに設定するため用いられる。VPSHUFB命令は、moveの後にPSHUFBなどを実行し、“vpshufb xmm1,xmm0,mask1”の命令に対して、xmm0の内容はxmm1に移され、xmm1の内容は、xmm0に格納されている制御マスクに基づきシャッフルされる。   6A-6C are sample code that allows Galois field multiplication to be performed simultaneously on multiple 16-byte data blocks. This code is just one example of a code that can be used. There may be many other variations, for example, the code may be optimized for use by a particular compiler. 6A to 6C show a function (inline assembler) for performing multiplication by {02} on a data buffer of an NBLOCKS data block (each block has 16 bytes (16B)). Since four 16-byte blocks are processed in parallel and a 256-byte data buffer is used, the processing (four parallel 16-byte blocks) is repeated four times (four blocks in parallel). Twelve xmm registers (xmm0 to xmm11) are used to store input data and its operation results. Three mask registers (mask 1, mask 2, mask 3) store the same mask as the sample code shown in Table 4. Referring to FIG. 6A, the instruction in block 600 sets the even byte position of the input data stored in the xmm registers (xmm1, xmm4, xmm7, xmm10) to zero. In the illustrated example, a packed shuffle byte (VPSHUFB) instruction is used to set the odd byte position to zero. The VPSHUFB instruction executes PSHUFB after move and the contents of xmm0 are moved to xmm1 and the contents of xmm1 are stored in the control mask stored in xmm0 with respect to the instruction “vpshub xmm1, xmm0, mask1”. Shuffle based.

次に、ブロック602のAESDECLAST命令が、xmm1,xmm4,xmm7及びxmm10レジスタに格納されたゼロに設定されている奇数バイトポジションを有する入力データに対して実行される。   Next, the AESDECLAST instruction in block 602 is executed on the input data having odd byte positions set to zero stored in the xmm1, xmm4, xmm7 and xmm10 registers.

ブロック604の命令は、図5Cに関して説明されたように、入力データをxmmレジスタ(xmm2,xmm5)に移し、奇数バイトポジションをゼロに設定し、xmmレジスタ(xmm0,xmm3)において入力バイトをリシャッフルする。   The instruction in block 604 moves the input data to the xmm registers (xmm2, xmm5), sets the odd byte positions to zero, and shuffles the input bytes in the xmm registers (xmm0, xmm3) as described with respect to FIG. 5C. To do.

図6Bを参照して、ブロック606のAESENC命令は、ミックスカラム変換を隔離し、その結果をxmmレジスタ(xmm1,xmm3,xmm7,xmm10)に格納する。   Referring to FIG. 6B, the AESENC instruction in block 606 isolates the mix column conversion and stores the result in the xmm registers (xmm1, xmm3, xmm7, xmm10).

ブロック608の命令は、図5Cに関して説明されたように、入力データをxmmレジスタ(xmm8,xmm11)に移動し、偶数バイトポジションをゼロに設定し、xmmレジスタ(xmm6,xmm9)の入力バイトをリシャッフルする。   The instruction in block 608 moves the input data to the xmm registers (xmm8, xmm11), sets the even byte position to zero, and resets the input bytes in the xmm registers (xmm6, xmm9) as described with respect to FIG. 5C. Shuffle.

ブロック610の命令は、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されているゼロに設定された偶数バイトポジションを有する入力データに対してAESDECLAST命令を実行する。   The instruction in block 610 executes the AESDECLAST instruction on input data having an even byte position set to zero stored in the xmm registers (xmm2, xmm5, xmm8, xmm11).

ブロック612の命令は、xmmレジスタ(xmm1,xmm4,xmm7,xmm10)に格納されているデータの奇数ポジションのバイトをゼロにする。   The instruction in block 612 zeroes out the odd position bytes of the data stored in the xmm registers (xmm1, xmm4, xmm7, xmm10).

ブロック614の命令は、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されているデータに対してAESENC命令を実行し、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されている結果において偶数バイトポジションをゼロに設定する。   The instruction in block 614 executes an AESENC instruction on the data stored in the xmm registers (xmm2, xmm5, xmm8, xmm11), and in the result stored in the xmm registers (xmm2, xmm5, xmm8, xmm11) Set even byte position to zero.

ブロック616の命令は、xmmレジスタ(xmm0,xmm3,xmm6,xmm9)において乗算の結果を提供するため、xmmレジスタ(xmm0〜xmm11)の内容に対してXOR演算を実行する。   The instruction in block 616 performs an XOR operation on the contents of the xmm registers (xmm0 to xmm11) to provide the result of the multiplication in the xmm registers (xmm0, xmm3, xmm6, xmm9).

ブロック618の命令は、xmmレジスタ(xmm0,xmm3,xmm6,xmm9)に格納されている乗算の結果をrbxレジスタに移動する。   The instruction in block 618 moves the result of the multiplication stored in the xmm register (xmm0, xmm3, xmm6, xmm9) to the rbx register.

ブロック620の命令は、乗算対象の次の16バイトブロックの位置へのポインタを計算する。   The instruction in block 620 calculates a pointer to the location of the next 16 byte block to be multiplied.

他の実施例では、RAID−6計算がGF(2)の他の表現により実行される場合、AES命令が適用可能な“好適な”表現(還元多項式11Bにより)に入力を変換することによって、上述した技術を利用することが可能である。当初の表現への最終的な変換が必要とされる(しかしながら、リカバリが実際に要求されるケースに留保可能である)。この変換は、予め計算されたテーブルを用いて実行可能である。 In another embodiment, if the RAID-6 calculation is performed with other representations of GF (2 8 ), by converting the input to a “preferred” representation (with the reduction polynomial 11B) to which the AES instruction can be applied. It is possible to use the technique described above. A final conversion to the original representation is required (however, it can be reserved in cases where recovery is actually required). This conversion can be performed using a pre-calculated table.

本発明の他の実施例はまた、本発明の処理を実行するための命令を含むマシーンアクセス可能な媒体を含む。このような実施例はまた、プログラムプロダクトと呼ばれてもよい。このようなマシーンアクセス可能な媒体は、限定することなく、フロッピー(登録商標)ディスク、ハードディスク、CD−ROM(Compact Disk−Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)などの記憶媒体と、マシーン又はデバイスにより形成又は製造された粒子の他の有形な構成とを含むものであってもよい。命令はまた分散環境で利用されてもよく、シングル又はマルチプロセッサマシーンによるアクセスのため、ローカル及び/又はリモートに格納されてもよい。   Other embodiments of the present invention also include a machine accessible medium containing instructions for performing the processing of the present invention. Such an embodiment may also be referred to as a program product. Such machine-accessible media include, but are not limited to, floppy (registered trademark) disks, hard disks, CD-ROM (Compact Disk-Read Only Memory), ROM (Read Only Memory), RAM (Random Access Memory), and the like. Storage media and other tangible configurations of particles formed or manufactured by a machine or device. The instructions may also be utilized in a distributed environment and stored locally and / or remotely for access by a single or multiprocessor machine.

本発明の実施例がそれの実施例を参照して図示及び説明されたが、当業者は、添付した請求項により包含される本発明の実施例の範囲から逸脱することなく、形式及び詳細について各種変更が可能であることを理解するであろう。   While embodiments of the invention have been illustrated and described with reference to such embodiments, those skilled in the art will recognize the form and details without departing from the scope of the embodiments of the invention encompassed by the appended claims. It will be understood that various changes are possible.

Claims (20)

バイトのブロックの複数のバイトのそれぞれに対してガロア体乗算演算を実行するステップを有する方法であって、
前記ガロア体乗算演算を実行するステップは、
第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行するステップと、
第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行するステップと、
前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成するステップと、
を有する方法。
Performing a Galois field multiplication operation on each of a plurality of bytes of a block of bytes, comprising:
Performing the Galois field multiplication operation,
Performing an Advanced Encryption Standard (AES) mix column transformation on the block of bytes in which all even position bytes are set to zero to provide a first result;
Performing the AES mix column conversion on the block of bytes in which all odd position bytes are set to zero to provide a second result;
Combining the first result and the second result to provide a result of the Galois field multiplication operation;
Having a method.
前記ガロア体乗算演算における有限体は、還元多項式0x11Bにより規定される、請求項1記載の方法。   The method according to claim 1, wherein the finite field in the Galois field multiplication operation is defined by a reduction polynomial 0x11B. 前記AESミックスカラム変換を実行するステップは、AESDECLASTラウンド命令と、その後にAESENCラウンド命令とを実行することを含む、請求項1記載の方法。   The method of claim 1, wherein performing the AES mix column transformation comprises performing an AESDECLAST round instruction followed by an AESENC round instruction. 前記AESDECLASTラウンド命令により実行される変換系列は、Inverse Shift Rows変換と、Inverse Substitute Bytes変換とを含み、
前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項3記載の方法。
The conversion sequence executed by the AESDECLAST round instruction includes an Inverse Shift Rows conversion and an Inverse Substitute Bytes conversion.
The method according to claim 3, wherein the conversion sequence executed by the AESENC round instruction includes a Shift Rows conversion, a Substitute Bytes conversion, and a mix column conversion.
第3の結果を提供するため、前記第1の結果と前記第2の結果とに対して排他的OR(XOR)演算を実行するステップと、
第4の結果を提供するため、前記バイトのブロックにおける各4バイトブロックの下位の2バイトと上位の2バイトとをスイッチするため、前記バイトのブロックに格納されているデータをシャッフルするステップと、
前記第3の結果と前記第4の結果とに対してXOR演算を実行するステップと、
をさらに有する、請求項1記載の方法。
Performing an exclusive OR (XOR) operation on the first result and the second result to provide a third result;
Shuffling the data stored in the block of bytes to switch the lower 2 bytes and the upper 2 bytes of each 4-byte block in the block of bytes to provide a fourth result;
Performing an XOR operation on the third result and the fourth result;
The method of claim 1, further comprising:
前記AESミックスカラム変換は、4バイトブロックシーケンスd,c,b,aを他の4バイトブロックシーケンス3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+dに変換する、請求項1記載の方法。   The method according to claim 1, wherein the AES mix column conversion converts a 4-byte block sequence d, c, b, a into another 4-byte block sequence 3a + b + c + 2d, a + b + 2c + 3d, a + 2b + 3c + d, 2a + 3b + c + d. 前記合成は、レベル6RAIDシステムのQシンドロームを計算するのに利用される、請求項1記載の方法。   The method of claim 1, wherein the synthesis is utilized to calculate a Q syndrome for a level 6 RAID system. バイトのブロックの複数のバイトのそれぞれに対してガロア体乗算演算をパラレルに実行するための複数の命令を格納するメモリと、
実行ユニットを含むプロセッサと、
を有する装置であって、
前記命令は、前記実行ユニットにより実行されると、前記実行ユニットが、第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行し、第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行し、前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成する順序により前記メモリに格納される装置。
A memory for storing a plurality of instructions for executing a Galois field multiplication operation in parallel for each of a plurality of bytes of a block of bytes;
A processor including an execution unit;
A device comprising:
When the instruction is executed by the execution unit, the execution unit provides a first result so that the AES (Advanced Encryption Standard for all blocks of bytes with all even position bytes set to zero. ) Performing the AES mix column transform on the block of bytes where all odd position bytes are set to zero to perform a mix column transform and provide a second result, the Galois field multiplication operation An apparatus that is stored in the memory in order of combining the first result and the second result to provide a result.
前記ガロア体乗算演算における有限体は、還元多項式0x11Bにより規定される、請求項8記載の装置。   The apparatus according to claim 8, wherein the finite field in the Galois field multiplication operation is defined by a reduction polynomial 0x11B. 前記実行ユニットは、AESDECLASTラウンド命令と、その後にAESENCラウンド命令とを実行することによって、前記AESミックスカラム変換を実行する、請求項8記載の装置。   9. The apparatus of claim 8, wherein the execution unit performs the AES mix column transformation by executing an AESDECLAST round instruction followed by an AESENC round instruction. 前記AESDECLASTラウンド命令により実行される変換系列は、Inverse Shift Rows変換と、Inverse Substitute Bytes変換とを含み、
前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項10記載の装置。
The conversion sequence executed by the AESDECLAST round instruction includes an Inverse Shift Rows conversion and an Inverse Substitute Bytes conversion.
The apparatus according to claim 10, wherein the conversion sequence executed by the AESENC round instruction includes a Shift Rows conversion, a Substitute Bytes conversion, and a mix column conversion.
前記AESミックスカラム変換は、4バイトブロックシーケンスd,c,b,aを他の4バイトブロックシーケンス3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+dに変換する、請求項8記載の装置。   9. The apparatus according to claim 8, wherein the AES mix column conversion converts a 4-byte block sequence d, c, b, a to another 4-byte block sequence 3a + b + c + 2d, a + b + 2c + 3d, a + 2b + 3c + d, 2a + 3b + c + d. 前記合成は、レベル6RAIDシステムのQシンドロームを計算するのに利用される、請求項8記載の装置。   9. The apparatus of claim 8, wherein the composition is utilized to calculate a Q syndrome for a level 6 RAID system. 関連する情報を有するマシーンアクセス可能な記憶媒体であって、
前記情報は、アクセスされるとマシーンにバイトのブロックの複数のバイトのそれぞれに対してガロア体乗算演算を実行させ、
前記ガロア体乗算演算の実行は、
第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行するステップと、
第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行するステップと、
前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成するステップと、
を有する記憶媒体
A machine-accessible storage medium having relevant information,
The information, when accessed, causes the machine to perform a Galois field multiplication operation on each of the plurality of bytes of the block of bytes,
The execution of the Galois field multiplication operation is as follows:
Performing an Advanced Encryption Standard (AES) mix column transformation on the block of bytes in which all even position bytes are set to zero to provide a first result;
Performing the AES mix column conversion on the block of bytes in which all odd position bytes are set to zero to provide a second result;
Combining the first result and the second result to provide a result of the Galois field multiplication operation;
A storage medium .
前記ガロア体乗算演算における有限体は、還元多項式0x11Bにより規定される、請求項14記載の記憶媒体The storage medium according to claim 14, wherein the finite field in the Galois field multiplication operation is defined by a reduction polynomial 0x11B. 前記AESミックスカラム変換を実行するステップは、AESDECLASTラウンド命令と、その後にAESENCラウンド命令とを実行することを含む、請求項14記載の記憶媒体The storage medium of claim 14, wherein performing the AES mix column conversion includes executing an AESDECLAST round instruction followed by an AESENC round instruction. 前記AESDECLASTラウンド命令により実行される変換系列は、Inverse Shift Rows変換と、Inverse Substitute Bytes変換とを含み、
前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項14記載の記憶媒体
The conversion sequence executed by the AESDECLAST round instruction includes an Inverse Shift Rows conversion and an Inverse Substitute Bytes conversion.
The storage medium according to claim 14, wherein the conversion sequence executed by the AESENC round instruction includes a Shift Rows conversion, a Substitute Bytes conversion, and a mix column conversion.
プロセッサと、
前記プロセッサによりアクセス可能であって、複数の命令を格納する記憶装置と、
を有するシステムであって、
前記命令の少なくとも1つは、変換シーケンスを実行し、前記プロセッサにより実行されると、前記プロセッサに、第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行させ、第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行させ、前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成させる順序により構成されるシステム。
A processor;
A storage device accessible by the processor and storing a plurality of instructions;
A system comprising:
At least one of the instructions performs a conversion sequence and, when executed by the processor, provides a first result to the processor to block the bytes with all even position bytes set to zero. To perform an AES (Advanced Encryption Standard) mix column conversion and provide the second result, the AES mix column conversion is performed on the block of bytes where all odd position bytes are set to zero. And a system configured by combining the first result and the second result to provide a result of the Galois field multiplication operation.
前記ガロア体乗算演算における有限体は、還元多項式0x11Bにより規定される、請求項18記載のシステム。   The system according to claim 18, wherein the finite field in the Galois field multiplication operation is defined by a reduction polynomial 0x11B. AESDECLASTラウンド命令と、その後にAESENCラウンド命令とが、前記AESミックスカラム変換を実行する、請求項18記載のシステム。   19. The system of claim 18, wherein an AESDECLAST round instruction followed by an AESENC round instruction performs the AES mix column conversion.
JP2011533440A 2008-12-19 2009-12-04 Method and apparatus for performing RAID processing Expired - Fee Related JP5301675B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/317,082 US8150031B2 (en) 2008-12-19 2008-12-19 Method and apparatus to perform redundant array of independent disks (RAID) operations
US12/317,082 2008-12-19
PCT/US2009/066717 WO2010080263A2 (en) 2008-12-19 2009-12-04 Method and apparatus to perform redundant array of independent disks (raid) operations

Publications (2)

Publication Number Publication Date
JP2012507212A JP2012507212A (en) 2012-03-22
JP5301675B2 true JP5301675B2 (en) 2013-09-25

Family

ID=42266129

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011533440A Expired - Fee Related JP5301675B2 (en) 2008-12-19 2009-12-04 Method and apparatus for performing RAID processing

Country Status (6)

Country Link
US (1) US8150031B2 (en)
EP (1) EP2359234B1 (en)
JP (1) JP5301675B2 (en)
KR (1) KR101245056B1 (en)
CN (1) CN102171646B (en)
WO (1) WO2010080263A2 (en)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8150031B2 (en) 2008-12-19 2012-04-03 Intel Corporation Method and apparatus to perform redundant array of independent disks (RAID) operations
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US8296515B1 (en) 2009-05-22 2012-10-23 Nvidia Corporation RAID-6 computation system and method
US8037391B1 (en) * 2009-05-22 2011-10-11 Nvidia Corporation Raid-6 computation system and method
US8612680B1 (en) * 2010-06-30 2013-12-17 Emc Corporation Data caching system and method
JP5198526B2 (en) * 2010-09-21 2013-05-15 株式会社東芝 Encryption device and decryption device
US9137250B2 (en) 2011-04-29 2015-09-15 Stephen Lesavich Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US9361479B2 (en) 2011-04-29 2016-06-07 Stephen Lesavich Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks
US9037564B2 (en) 2011-04-29 2015-05-19 Stephen Lesavich Method and system for electronic content storage and retrieval with galois fields on cloud computing networks
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
JP5730812B2 (en) * 2012-05-02 2015-06-10 日本電信電話株式会社 Arithmetic apparatus, method and program
JP6093718B2 (en) * 2014-01-17 2017-03-08 日本電信電話株式会社 Expansion field multiplication device, expansion field multiplication method and program
US9425961B2 (en) * 2014-03-24 2016-08-23 Stmicroelectronics S.R.L. Method for performing an encryption of an AES type, and corresponding system and computer program product
US10230398B2 (en) 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method
CN109145626B (en) * 2018-09-05 2020-05-29 郑州云海信息技术有限公司 RAID hardware encryption device and method
KR102578869B1 (en) * 2019-03-06 2023-09-15 삼성에스디에스 주식회사 Apparatus and method for performing matrix multiplication operation being secure against side channel attack

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3851115B2 (en) * 2001-06-28 2006-11-29 富士通株式会社 Cryptographic circuit
US7895253B2 (en) * 2001-11-30 2011-02-22 Analog Devices, Inc. Compound Galois field engine and Galois field divider and square root engine and method
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
JP3940714B2 (en) * 2003-09-25 2007-07-04 株式会社東芝 Arithmetic device and encryption / decryption arithmetic device
JP4288486B2 (en) * 2003-11-17 2009-07-01 日本電気株式会社 Disk array device, RAID parity data generation circuit, and Galois field multiplication circuit
KR100610367B1 (en) * 2004-06-19 2006-08-10 삼성전자주식회사 The multiplication method and apparatus for preventing in Galois field, the apparatus for inversion in Galois field and the apparatus for AES byte substitution operation
US7697687B2 (en) * 2005-04-13 2010-04-13 Nucrypt, Inc. Streaming implementation of AlphaEta physical layer encryption
US7512647B2 (en) * 2004-11-22 2009-03-31 Analog Devices, Inc. Condensed Galois field computing system
US7343546B2 (en) * 2004-12-23 2008-03-11 Intel Corporation Method and system for syndrome generation and data recovery
DE102004062825B4 (en) * 2004-12-27 2006-11-23 Infineon Technologies Ag Cryptographic unit and method for operating a cryptographic unit
US7734674B2 (en) * 2005-08-08 2010-06-08 Freescale Semiconductor, Inc. Fast fourier transform (FFT) architecture in a multi-mode wireless processing system
US7607068B2 (en) * 2006-08-31 2009-10-20 Intel Corporation Apparatus and method for generating a Galois-field syndrome
US7797612B2 (en) * 2006-12-29 2010-09-14 Intel Corporation Storage accelerator
JP4935367B2 (en) * 2007-01-19 2012-05-23 富士通株式会社 RAID device and Galois field product operation processing method
JP4905161B2 (en) * 2007-01-31 2012-03-28 富士通株式会社 RAID device and data restoration device using Galois field
JP2008209499A (en) * 2007-02-23 2008-09-11 Toshiba Corp Aes decryption apparatus and program
US8879725B2 (en) * 2008-02-29 2014-11-04 Intel Corporation Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
US8150031B2 (en) 2008-12-19 2012-04-03 Intel Corporation Method and apparatus to perform redundant array of independent disks (RAID) operations

Also Published As

Publication number Publication date
KR101245056B1 (en) 2013-03-22
US20100158241A1 (en) 2010-06-24
EP2359234A4 (en) 2015-03-11
CN102171646A (en) 2011-08-31
WO2010080263A3 (en) 2010-09-02
WO2010080263A2 (en) 2010-07-15
US8150031B2 (en) 2012-04-03
CN102171646B (en) 2014-05-14
KR20110050723A (en) 2011-05-16
EP2359234A2 (en) 2011-08-24
JP2012507212A (en) 2012-03-22
EP2359234B1 (en) 2018-07-11

Similar Documents

Publication Publication Date Title
JP5301675B2 (en) Method and apparatus for performing RAID processing
US9960917B2 (en) Matrix multiply accumulate instruction
JP6592804B2 (en) Flexible architecture and instructions for the new encryption standard (AES)
CN101520965B (en) Comprise and perform transform sequence to isolate the packing of orders of the instruction of a conversion
TWI518589B (en) Instructions to perform groestl hashing
TWI463858B (en) Processor instructions for improved aes encryption and decryption
JP5226062B2 (en) Instruction set architecture for programmable cyclic redundancy check (CRC) computation
US9270460B2 (en) Instructions to perform JH cryptographic hashing in a 256 bit data path

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130507

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130619

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees