KR20080068555A - Raid 장치 및 갈로아체의 곱 연산 처리 방법 - Google Patents
Raid 장치 및 갈로아체의 곱 연산 처리 방법 Download PDFInfo
- Publication number
- KR20080068555A KR20080068555A KR1020080004384A KR20080004384A KR20080068555A KR 20080068555 A KR20080068555 A KR 20080068555A KR 1020080004384 A KR1020080004384 A KR 1020080004384A KR 20080004384 A KR20080004384 A KR 20080004384A KR 20080068555 A KR20080068555 A KR 20080068555A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- parity
- value
- storage unit
- result
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Abstract
본 발명은 갈로아체를 이용하여 패리티 데이터를 생성할 때에, 고속으로 갈로아체의 곱 연산을 실행하는 것을 목적으로 한다.
분할된 데이터가 로드된 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하고, 로드된 데이터와 고정값과의 논리곱을 취하며, 또한 논리곱의 결과와 고정값을 비교하여, 자릿수 올림 비트를 갖는 데이터를, 데이터의 최대값으로 치환하고, 마스크를 작성한다. 그리고 마스크의 최대값과 보정값과의 논리곱을 연산하고, 연산 결과와 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 데이터를 갈로아체의 원(元)으로 곱 연산한 결과를 얻는다. 또한 n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 하여, i=1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)을, i=s+2 ~ n번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(-i+s+1)을, 가중으로 하여, 곱 연산을 실행한다.
Description
본 발명은, 갈로아체 연산에 의해, 데이터의 패리티를 계산하는 RAID 장치 및 갈로아체의 곱 연산 방법에 관한 것이며, 특히 디스크군의 2중 고장을 복원하는데 적합한 RAID 장치 및 갈로아체의 곱 연산 방법에 관한 것이다.
디스크의 2중 고장을 복원할 수 있는 방법으로서, RAID(Redundant Array of Independent Disks) 6이 알려져 있다. 이 RAID 6의 방식으로서, 1차원 용장 방식이 제안되어 있다(예컨대, 특허 문헌 1 참조).
도 14의 RAID 6의 구성으로 설명하면, RAID 컨트롤러(110)에, 3대의 데이터 디스크 장치(하드디스크 드라이브)(101, 102, 103)와, 2대의 패리티 디스크 장치(하드디스크 드라이브)(104, 105)가 접속된다.
1차원 용장 방식은, 데이터로부터 2종류의 패리티를 생성한다. 도 15에 도시하는 바와 같이, 1개째의 패리티 P는, 종래의 RAID 5와 같이, 각 데이터(D1, D2, D3)의 덧셈(XOR)을 행한 결과를 패리티로 한다. 그리고 이 패리티 P는, 제1 디스크 장치(104)에 보존한다. 또한, 이하 「+」의 기호는 XOR(배타적 논리합)을 나타낸 다.
2개째의 패리티 Q는, 각 데이터(D1, D2, D3)에 대하여, 갈로아체의 곱 연산에 의한 가중을 행한 후, 이들을 더한 결과(XOR)를 패리티로 한다. 그리고 이 패리티 Q는, 제2 디스크 장치(105)에 보존된다.
이 갈로아체는, 각 데이터 디스크 장치(101, 102, 103)에 대하여, 하나 결정되고, 2중 고장의 복원을 위해서는, 각 데이터 디스크 장치(101, 102, 103)에서, 달라야 한다. 예컨대 도 15에 도시하는 바와 같이, 데이터 비트수를 16 비트로 하면, 갈로아체(GF)(216)는, 2의 16승개의 유한개의 점을 취할 수 있다. 또한, 갈로아체의 사칙연산이 소정의 법칙으로 가능하다. 1차원 용장 방식은, 패리티의 분산이 가능해지고, 2중 고장의 검출, 복원에 유효하다.
도 15에 도시하는 바와 같이, 갈로아체를 이용한 패리티 생성에 있어서는, 갈로아체의 곱 연산으로서, 데이터와 갈로아체의 2개의 변수를 이용하여, 연산을 행해야 한다. 이 때문에 RAID 5의 XOR 연산(패리티 P의 연산)에 대하여, 패리티 생성에 처리 시간을 요구하여, 성능이 열화한다.
이 갈로아체의 곱 연산을 간략화하기 위해, 복수의 데이터를 시프트나 AND, XOR을 사용하여, α배를 가중하는(곱 연산) 알고리즘이 제안되어 있다(예컨대 비특허 문헌 1 참조). 이 제안된 논문에서는, 그 4 페이지부터 5 페이지에, 데이터가 8 비트인 경우의 패리티 생성, 데이터 복원의 방정식을 해설하고, 6 페이지의 하측 란부터 7 페이지에, α배의 알고리즘을 C 언어로 개시하고 있다.
이 C 언어로 기술된 알고리즘을, 도 16 및 도 17을 이용하여, 각각 8 비트의 4 심볼의 데이터를 대상으로 하여 설명한다. 도 16의 「v」는 8 비트, 4 심볼(32 비트)의 대상 데이터를 나타낸다.
우선, 디스크 장치의 8 비트의 데이터를, 4개, 32 비트의 레지스터에 로드한다(S100). 이 대상 데이터 v(32 비트) 전체를, 1 비트 좌측(상위 방향)으로 시프트한다(S101). 1 비트 좌측으로 시프트된 데이터 v<<1은 32 비트 단위로, 대상 데이터 v의 2배의 값이 된다.
다음에, 시프트된 데이터 v<<1에 있어서, 이 데이터 v의 시프트에 의해, 다른 심볼에 영향을 준 비트를 마스크한다. 이 때문에 마스크값 「Oxfefefefe」를 준비하고, 시프트된 데이터 v<<1과, 마스크값과의 앤드(AND) 연산을 행하여, 마스크된 데이터 vv를 얻는다(S102). 이 조작에 의해, 8 비트 간격의 우단(시프트에 의해 영향받는 비트)의 값이, 「0」으로 설정된다. 즉 32 비트 전체를 시프트하고 있기 때문에, 대상 심볼의 우측 인접 심볼의 최상위 비트에 의해, 대상 심볼의 우단 비트가 영향받는 것을 방지한다.
다음에, 대상 데이터 v로부터 마스크(v) 함수를, 도 17과 같이 작성한다(S103). 마스크(v) 함수는, 도 17에 도시하는 바와 같이, 32 비트의 대상 데이터 v의 8 비트 간격의 좌단이 「1」인 경우에는, 8 비트의 「11111111」을, 좌단이 「0」인 경우에는, 8 비트의 「00000000」을 나타낸다. 즉, 시프트에 의해, 자릿수 올림된 심볼에는 8 비트의 모든 「1」을, 자릿수 올림되지 않는 심볼에는 8 비트의 모든 「0」을 실시하는 마스크(v) 함수를 작성한다.
이 때문에, 마스크값 「0x80808080」과, 즉 8 비트 간격으로, 「1」이 나타나고, 그 외는 「0」의 값과, 대상 데이터 v와의 논리곱(AND)을 취한다(S110). 이 마스크값은, 각 심볼의 선두 비트를 추출한다.
다음에, 논리곱값을 좌측으로 1 비트 시프트한 32 비트 데이터 v<<1(2배 데이터)을 연산하고, 또한 논리곱값을, 우측으로 7 비트 시프트한 32 비트 데이터 v>>7(1/128배 데이터)를 연산하며, 좌측으로 1 비트 시프트한 32 비트 데이터 v<<1(2배 데이터)로부터 우측으로 7 비트 시프트한 32 비트 데이터 v>>7을 차감하고, 마스크(v) 함수(MASK(v))를 얻는다(S112). 이 함수는, 선두 비트가 「1」인 심볼과, 그것 이외를 구별하는 역할을 갖는다.
도 16을 다시 참조하여, 8 비트의 갈로아체(GF)(2의 8승)의 생성 다항식(=x8+x2+1)에 대응하는 계수값 「0x1d1d1d1d」와, 마스크(v) 함수(MASK(v))와의 논리곱(AND)을 연산한다(S104). 즉 4 심볼 중, 선두 비트가 「1」인 심볼에만 계수값 「Ox1d1d1d1d」의 「00011101」로 치환한다.
이 논리곱 결과와, 단계 S102에서 연산한 마스크된 대상 데이터 vv와의 XOR을 연산함으로써, α배된 대상 데이터 α·v를 얻는다(S105). 이 α배된 대상 데이터 α·v에, 이들 단계를 재차 반복하면, 대상 데이터 v의 α의 제곱배의 데이터를 얻을 수 있다. 마찬가지로 하여, 대상 데이터 v의 α의 반복배의 데이터를 연산할 수 있다.
이와 같이, 종래 기술로는, 단계 S100에서 대입, 시프트, 단계 S101에서 AND, 단계 S103(도 17)에서 AND, 2회 시프트, 감산, 단계 S104에서 AND, 단계 S105에서 XOR의 9회의 조작으로, 수 심볼(여기서는, 4 심볼)의 갈로아체 곱 연산의 병렬 처리를 실현할 수 있다.
[특허 문헌 1] 일본 특허 공개 제2000-259359호 공보(도 5, 도 6)
[비특허 문헌 1] 논문「The mathematics of RAID-6」(저자 H. Peter Anvin, online paper, http://kernel.org/pub/linux/kernel/people/hpa/raid6.pdf, 2006년 10월 26일 액세스)
이 종래의 갈로아체의 곱 연산 처리에서는, 복수 심볼(위의 예에서는, 4 심볼)의 병렬 처리를 실현할 수 있지만, α배를 하기 위해서는, 9 단계의 연산이 요구된다. 따라서 α의 n승배를 연산하기 위해서는, 9·n 단계의 연산 회수가 요구된다.
특히, 최근의 기억 용량의 증대에 따라, 대상 데이터의 심볼 수(데이터 디스크 장치의 수)도 증대하는 경향에 있고, 예컨대 2대의 패리티 디스크 장치에 대하여, 14대의 데이터 디스크 장치를 설치하여 RAID 6을 구성하는 경우에는, α의 13 승배를 연산해야 하며, 9·13=117 단계의 연산이 요구되고, 단계수의 삭감이 더 요구된다.
또한, 반복에 의해 연산하는 경우에는, 그 반복수 또는 반복 회수(곱 연산 알고리즘의 루프 회수)가 적은 것이 고속화를 위해 바람직하다.
또한, 생성 처리뿐만 아니라, 복원 처리에 있어서도, 갈로아체의 곱 연산 처리에, 반복 회수가 적은 것이 처리 시간 단축의 점에서 바람직하다.
따라서, 본 발명의 목적은 갈로아체 곱 연산의 처리 시간을 단축하기 위한 RAID 장치 및 갈로아체의 곱 연산 처리 방법을 제공하는 것에 있다.
또한, 본 발명의 다른 목적은, 갈로아체 곱 연산의 병렬 처리의 단계수를 저감하기 위한 RAID 장치 및 갈로아체의 곱 연산 처리 방법을 제공하는 것에 있다.
또한, 본 발명의 다른 목적은, 갈로아체 곱 연산의 병렬 처리의 반복수를 저 감하기 위한 RAID 장치 및 갈로아체의 곱 연산 처리 방법을 제공하는 것에 있다.
이 목적의 달성을 위해, 본 발명의 RAID 장치는, 데이터를 분할하고, 분할된 데이터를 각각 저장하는 복수의 데이터 스토리지 유닛과, 상기 분할된 데이터의 조합으로부터 얻은 제1 패리티 데이터와, 패리티의 생성 방정식에 있어서의 갈로아체의 원(元)을 상기 분할된 데이터에 곱 연산하며, 또한 곱 연산 결과를 이용하여 상기 생성 방정식을 연산하여 얻은 제2 패리티 데이터를 저장하는 패리티 스토리지 유닛과, 상기 데이터를 분할하고, 상기 제1 패리티 데이터와 제2 패리티 데이터를 연산하며, 상기 제1 패리티 데이터와 제2 패리티 데이터를 상기 패리티 스토리지 유닛에 저장하는 제어 유닛을 포함하고, 상기 제어 유닛은, 상기 분할된 데이터의 각각을 레지스터에 로드하며, 또한 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하고, 상기 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하며, 또한 상기 논리곱의 결과와 상기 고정값을 비교하여, 상기 자릿수 올림 비트를 포함하는 데이터를, 상기 데이터의 최대값으로 치환하고, 마스크를 작성하며, 상기 마스크의 최대값과 상기 자릿수 올림을 보정하는 보정값과의 논리곱을 연산하고, 상기 연산 결과와 상기 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 상기 데이터를 상기 갈로아체의 원으로 곱 연산한 결과를 얻는다.
또한, 본 발명의 프로그램은, 분산된 데이터의 각각을 레지스터에 로드하는 단계와, 상기 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하는 단계 와, 상기 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하는 단계와, 상기 논리곱의 결과와 상기 고정값을 비교하여, 상기 자릿수 올림 비트를 포함하는 데이터를, 상기 데이터의 최대값으로 치환하여, 마스크를 작성하는 단계와, 상기 마스크의 최대값과 상기 자릿수 올림을 보정하는 보정값과의 논리곱을 연산하는 단계와, 상기 연산 결과와 상기 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 상기 데이터를 상기 갈로아체의 원으로 곱 연산한 결과를 얻는 단계를 컴퓨터에 실행시킨다.
또한, 본 발명의 갈로아체 곱 연산 처리 방법은, 분산된 데이터의 각각을 레지스터에 로드하는 단계와, 상기 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하는 단계와, 상기 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하는 단계와, 상기 논리곱의 결과와 상기 고정값을 비교하여, 상기 자릿수 올림 비트를 포함하는 데이터를, 상기 데이터의 최대값으로 치환하고, 마스크를 작성하는 단계와, 상기 마스크의 최대값과 상기 자릿수 올림을 보정하는 보정값과의 논리곱을 연산하는 단계와, 상기 연산 결과와 상기 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 상기 데이터를 상기 갈로아체의 원으로 곱 연산한 결과를 얻는 단계로 이루어진다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은, 상기 데이터 스토리지 유닛의 임의의 데이터 스토리지 유닛의 장해시에, 상기 장해 발생한 데이터 스토리지 유닛의 데이터를 미지 데이터로 하고, 상기 제1 패리티 데이터 및 제2 패리티 데이터와, 상기 장해 발생한 데이터 스토리지 유닛 이외의 상기 데이터 스토리지 유닛의 데이터를 이용하여, 상기 갈로아체의 연립 방정식으로부터, 상기 미지 데이터를 복원한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은 최상위 비트만이 「1」인 상기 데이터의 비트수와 동일한 비트수를 갖는 상기 고정값을 사용한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은 복수의 데이터를 상기 레지스터에 로드하고, 상기 복수의 데이터에 대하여, 상기 곱 연산 처리를 병렬로 실행한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은, 상기 갈로아체의 원시 다항식으로부터 얻은 상기 보정값을 사용한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은, 상기 갈로아체의 원의 차수만큼, 상기 곱 연산을 반복한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은, 상기 갈로아체의 원을, 벡터 표현하고, 또한 분배 법칙을 이용하여, 가중값을 분배하며, 상기 갈로아체의 원의 곱 연산을 실행한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은, 상기 분배한 제1 가중값의 곱 연산을 제1 가중값의 회수만큼 실행한 후, 상기 실행 결과를 이용하여, 상기 곱 연산을 제2 가중값의 회수만큼 실행하고, 상기 제1 가중값의 곱 연산 결과와, 상기 제2 가중값의 곱 연산 결과의 배타적 논리합을 취하여, 상기 갈로아체의 원의 곱 연산 결과를 얻는다.
또한, 본 발명의 다른 측면의 RAID 장치는, 데이터를 n 분할하고, 분할된 데 이터를 각각 저장하는 n 대의 데이터 스토리지 유닛과, 상기 분할된 데이터의 조합으로부터 얻은 제1 패리티 데이터와, 패리티의 생성 방정식에 있어서의 갈로아체의 원을 상기 분할된 데이터에 곱 연산하며, 또한 곱 연산 결과를 이용하여 상기 생성 방정식을 연산하여 얻은 제2 패리티 데이터를 저장하는 패리티 스토리지 유닛과, 상기 데이터를 n 분할하고, 상기 제1 패리티 데이터와 제2 패리티 데이터를 연산하며, 상기 제1 패리티 데이터와 제2 패리티 데이터를 상기 패리티 스토리지 유닛에 저장하는 제어 유닛을 포함하고, 상기 제어 유닛은, 상기 n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, i=1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)을, i=s+2 ~ n번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(-i+s+1)을, 가중으로 하여, 상기 곱 연산을 실행한다.
또한, 본 발명의 다른 측면의 갈로아체 곱 연산 처리 방법은, 데이터를 n 분할하고, 분할된 데이터를 각각 저장하는 n 대의 데이터 스토리지 유닛의 데이터의 패리티 데이터를 갈로아체를 이용하여 생성하기 위한 갈로아체 곱 연산 처리 방법에 있어서, 상기 n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, i=1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)을, i=s+2 ~ n 번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(-i+s+1)을, 가중으로 하여, 곱 연산을 실행하는 단계와, 상기 곱 연산 결 과로, 상기 패리티의 갈로아체를 이용한 생성 방정식을 연산하는 단계를 포함한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은, 상기 n 분할된 데이터의 시프트, 시프트에 의한 자릿수 올림 데이터의 추출, 자릿수 올림 데이터의 마스크 작성, 상기 마스크를 사용하여, 상기 시프트된 데이터와 보정값과의 XOR 연산을 행하여, α배의 곱 연산 결과를 연산한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은, 상기 곱 연산을, m회 반복하여, αm 배의 곱 연산 결과를 연산한다.
또한, 본 발명에서 바람직하게는, 상기 제어 유닛은, 상기 데이터 스토리지 유닛의 임의의 데이터 스토리지 유닛의 장해시에, 상기 장해 발생한 데이터 스토리지 유닛의 데이터를 미지 데이터로 하고, 상기 제1 패리티 데이터 및 제2 패리티 데이터와, 상기 장해 발생한 데이터 스토리지 유닛 이외의 상기 데이터 스토리지 유닛의 데이터를 이용하여, 상기 갈로아체의 연립 방정식으로부터, 상기 미지 데이터를 복원한다.
분할된 데이터의 각각이 로드된 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하고, 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하며, 또한 논리곱의 결과와 고정값을 비교하여, 자릿수 올림 비트를 포함하는 데이터를, 데이터의 최대값으로 치환하여, 마스크를 작성한다. 그리고 마스크의 최대값과 자릿수 올림을 보정하는 보정값과의 논 리곱을 연산하고, 연산 결과와 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 데이터를 갈로아체의 원으로 곱 연산한 결과를 얻기 때문에, 적은 단계, 명령으로 갈로아체의 곱 연산이 가능해진다.
또한, n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, i=1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)을, i=s+2 ~ n 번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(-i+s+1)을, 가중으로 하여, 곱 연산을 실행하기 때문에, 적은 반복 회수로, 각 데이터의 갈로아체의 곱 연산이 가능해진다.
이하, 본 발명의 실시형태를, RAID 장치, 갈로아체 곱 연산 처리, 다른 갈로아체 곱 연산 처리, 또 다른 갈로아체 곱 연산 처리, 다른 실시형태의 순으로 설명하지만, 본 발명은, 이 실시형태에 한정되지 않는다.
(RAID 장치)
도 1은, 본 발명의 일 실시형태의 RAID 장치의 구성도, 도 2는 그 갈로아체를 이용한 패리티 연산의 설명도이다. 도 1에 도시하는 바와 같이, RAID 장치는, 호스트 컴퓨터(16)에 접속된 RAID 컨트롤러(12)와, RAID 컨트롤러(12)에 FC(Fibre Channel) 루프(14) 등에 의해 접속되고, 또한 제어되는 복수(여기서는 14대)의 데이터 디스크 장치(하드디스크 드라이브)(10-1 ~ 10-14)와, 2대의 패리티 디스크 장치(하드디스크 드라이브)(10-15, 10-16)로 이루어진다. 즉 2중 패리티를 갖는 RAID 6의 구성이다.
도 2에 나타내는 바와 같이, 제1 패리티 P는, 데이터 디스크 장치(10-1 ~ 10-14)의 열방향의 데이터(D1 ~ D14)의 XOR로 생성되고, 제1 패리티 디스크 장치(10-15)의 대응 어드레스에 저장된다. 제2 피리티 Q는, 데이터 디스크 장치(10-1 ~ 10-14)의 열방향의 데이터(D1 ~ D14)를, 갈로아체의 곱 연산에 의한 가중 후에, XOR하여 생성되어, 제2 패리티 디스크 장치(10-16)의 대응 어드레스에 저장된다. 즉, 패리티 Q는 하기 식(1)로 연산된다.
[수학식 1]
Q=α0×D1+α1×D2+α2×D3+… +α12×D13+α13×D14
또한, 기호 「+」는, XOR 연산을 나타낸다. 이들 패리티 연산은, RAID 컨트롤러(12)가 실행한다. 여기서, 1 심볼을 16 비트로 하면, 갈로아체는, GF(2의 16승)이고, 그 원시 다항식(생성 다항식)은, 하기 식(2)로 나타낸다.
[수학식 2]
X16+X12+X3+X+1
또한, 이 실시예에서, 갈로아체 곱 연산에 사용되는 마스크값은, 「32768」이고, 16 비트의 데이터의 최상위 비트만이, 「1」의 데이터이다. 또한, 값 「4107」은 수학식 (2)의 원시 다항식의 x의 16승을 제외하고, x에 「2」를 대입하여 얻은 값이다.
RAID 컨트롤러(12)는, 데이터를 디스크 장치(10-1 ~ 10-4)에 라이트 처리할 때에, XOR 연산에 의해, 패리티 P를 계산하고, 제1 패리티 디스크 장치(10-15)에 저장하고, 이하에 설명하는 갈로아체의 곱 연산 처리와 XOR 연산을 행하여, 패리티 Q를 계산하여, 제2 패리티 디스크 장치(10-16)에 저장한다.
(갈로아체 곱 연산)
도 3은, 본 발명의 일 실시형태의 갈로아체 곱 연산 처리 흐름도, 도 4는, 도 3의 상세 처리 흐름도, 도 5는, 도 3 및 도 4의 구체예의 설명도, 도 6은 자릿수 올림 심볼의 곱 연산의 설명도이다.
도 3 이하에서는, 1 심볼을 16 비트로 하여, 8 심볼을 병렬 처리하는 예로 설명한다. 예컨대 인텔사(등록 상표)의 CPU에서는, MMX 명령 세트가 구비되어 있다. MMX 명령 세트는, xmm 레지스터를 사용한다. 이 xmm 레지스터를 이용하여, 병렬 처리를 행한다. xmm 레지스터 길이는 16 Byte이고, 한번에, 1 심볼이 16 비트일 때, 8 심볼의 데이터의 가중의 병렬 처리를 행할 수 있다.
도 3에 의해, 갈로아체 곱 연산의 기본적 처리를 설명한다.
(S10) 우선, xmm1 레지스터에, 8 심볼을 로드한다.
(S12) 다음에, xmm1 레지스터의 각 심볼을, 좌측으로 1 비트 시프트하고, 각 심볼의 값을 2배로 한다.
(S14) 마스크값을 이용하여, 시프트에 의해 값이 작아지는 심볼(즉, 최상위 비트의 자릿수 올림이 생기는 심볼)을 검출한다.
(S16) 시프트한 심볼 중, 값이 작아진 심볼에, 미리 정한 값(「4107」)을 XOR 한다.
다음에, 도 4에 의해, MMX를 이용한 가중 처리를 상세히 설명한다. 또한 도 5, 도 6을 이용하여, 데이터 디스크 번호 i=2의 갈로아체의 가중(갈로아체의 곱 연산) 처리를 예로, 구체적으로 설명을 행한다. 데이터 디스크 번호 i=2인 경우에는, 수학식 (1)의 패리티 Q의 생성 다항식으로부터, 데이터 Di =2에, α배의 가중을 행한다.
(S20) xmm 레지스터에, 데이터를 대입하고, 처리해야 하는 반복 회수 MAX를 설정한다. 예컨대 디스크 번호 i=2인 경우에는, MAX=1이다. 또한, 반복 회수 포인터 i를 「0」으로 초기화한다. 또한 MAX=0인 경우에는, xmm 레지스터의 내용을 출력하고, 이하의 단계를 실행하지 않는 것으로 한다. 예컨대, 도 5에 도시하는 바와 같이, 데이터 디스크 번호 i=2의 디스크로부터, 가중을 행하는 8 심볼(1 심볼, 16 비트)의 데이터(Di=2 데이터)를 픽업하고, 이것을 xmm1 레지스터에 대입한다(도 5의 xmm1).
또한, 「32768」과 「4107」의 값이 입력된 8 심볼의 데이터 v32768, v4107을 준비한다. 값 「32768」은, 16 비트째에만 「1」의 값이 있는 것을 나타내고, 시프트에 의해 자릿수 올림이 생기는 심볼을 검출하기 위한 데이터이다. 값 「4107」은, 16 비트의 갈로아체 GF(216)의 원시 다항식(x16+x12+x3+x+1)의 (x12+x3+x+1)에, x=2를 대입한 값이다. 즉 4096+8+2+1=4107이다.
(S22) 다음에, 이동 명령(MOVQ)에 따라서, xmm1 레지스터에 대입된 값을, xmm2 레지스터로 이동시킨다. 시프트 명령(PSLLW)에 따라서, xmm2 레지스터의 각 심볼을, 좌측으로(상위 방향으로) 1 비트 시프트한다(도 5의 xmm2). 이것에 의해, 각 심볼은 2배(=α배)가 되지만, 1 심볼이 16 비트이기 때문에, 자릿수 올림된 비트 부분은 오버플로우한다. 이 때문에 도 5의 xmm2에 나타내는 바와 같이, 값이 2배가 되는 개소(단일 밑줄)과, 시프트 전보다 값이 작아지는 개소(이중 밑줄)이 있다. 시프트 전보다 값이 작아지는 개소는 오버플로우한 개소이다.
(S24) 이 값이 작아지는 개소(심볼)에만, 값 「4107」의 XOR을 행한다. 이 때문에 우선, 값이 작아진 심볼을 추출하고, 그 추출한 심볼의 값을, 모두 「1」(즉, 65535)로 한다. 도 6도 참조하여 설명한다. AND 명령(PAND)에 따라서, 도 5의 xmm1 레지스터의 각 심볼의 값과, v32768의 값 「32768」과의 논리곱(AND)을 취하고, xmm1 레지스터를 갱신한다. 도 4 및 도 5의 (xmm1&v32768)로 나타내는 바와 같이, 8 심볼 중, 오버플로우한 심볼(값이 작아진 심볼)만이 값 「32768」로 치환되고, 오버플로우하지 않는 심볼은 값「0」으로 치환된다.
다음에, 8 심볼의 값 판정을 행하고, 심볼의 값을, 값 「65535」 또는 값「0」으로 치환한다. 즉, 비교 및 최대값 설정 명령(PCMPEQW)에 따라서, (xmm1&v32768)의 각 심볼의 값과 값 「32768」을 비교하여, 양자가 일치하면, 그 심볼의 16 비트를, 모두 「1」(=65535)로 치환하고, 양자가 일치하지 않으면, 그 심볼의 16 비트를, 모두 「0」(=0)으로 치환한다. 이것에 의해, 값「4107」의 마스크를 작성한다.
(S26) 그리고, AND 명령(PAND)에 따라서, 이 xmm1 레지스터의 각 심볼의 값과 v4107의 값 「4107」의 논리곱(AND)을 취하고, xmm1 레지스터를 갱신한다. 이것 에 의해, 8 심볼의 xmm1 레지스터 중, 값이 작아진 심볼만이, 값 「4107」로 치환되고, 값이 작아지지 않는 심볼은 값 「0」으로 치환된다.
(S28) XOR 명령(PXOR)에 따라서, 이 갱신된 xmm1 레지스터의 각 심볼의 값과, 단계 S22에서 얻은 xmm2 레지스터의 각 심볼의 값과의 XOR(배타적 논리합)을 취하여, α배의 가중을 행한 결과를 얻는다.
(S30) 「break」가 검출되었을 때에, 처리를 정지하고, xmm1의 값을 확정한다. 그 이외는, 단계 S24에 복귀된다.
(S32) α배 계산 처리 시작에 있어서, 반복 회수 포인터 i를 「1」 인크리먼트한다. 그리고 반복 회수 포인터 i가, 설정 반복 회수 MAX 이상인지를 판정한다. 반복 회수 포인터 i가, 설정 반복 회수 MAX 이상이 아니면, 단계 S24로 진행한다.
(S34) 한편, 반복 회수 포인터 i가 설정 반복 회수 MAX 이상인 경우에는, 설정한 반복 회수가 종료되었기 때문에, 「break」를 통지하고, xmm1을 결과로서 출력한다.
예컨대, 도 5에 있어서, 제2번째의 심볼의 값 「36934」를 단순히 2배 하면, 「73868」이 되지만, 1 심볼이 16 비트로 제한되기 때문에, 오버플로우가 발생하고, 그 심볼의 값은, 1 비트 오버플로우하고 있기 때문에, 16 비트 표시에서, 8332(=73868-65536)가 된다. 그러나 제2번째 심볼의 2배값의 유의 비트는, 17 비트로부터 2 비트째의 16 비트이다. 이 유의 비트를 보정하기 위해, 보정값 「4107」을 사용하여, 값 「12423」으로 변환한다.
단계 S22 ~ S28의 처리는, 모두 레이턴시가 작은(레이턴시=2) 명령으로 실현 할 수 있어, 처리 시간을 짧게 할 수 있다. αj배의 가중으로는, 단계 S22 ~ S28의 처리를 j회 반복한다.
여기서, 이 실시형태의 마스크 처리를, 도 6에서 설명한다. 도 6은, 시프트에 의해 값이 작아진 심볼을 추출하는 마스크 처리를 나타내고, 우선 xmm1 레지스터의 값과, v32768의 앤드로, 오버플로우 심볼과, 오버플로우하지 않는 심볼을 식별한다. 다음에, 이들 심볼과 값 「32768」을 비교하여, 양자가 일치하는 심볼을, 모두 「1」(=65535)로 치환하여, 마스크를 작성한다. 그리고 값 v4107과의 앤드를 취하여, 구하는 xmm1을 얻는다.
한편, 도 17에 나타내는 바와 같이, 종래 기술에서는, 원래의 심볼 v에, 값「0x80808080」을 앤드하고, 오버플로우 심볼과 오버플로우하지 않는 심볼을 식별한다. 다음에, 이 결과로부터, 마스크를 작성하기 때문에, 이 결과를 좌 1 비트 시프트한 것을 작성하고, 또한 우측으로 7 비트 시프트한 것을 작성하여, 이들 시프트 결과를 뺄셈한다.
즉, 본 실시형태에서는, 도 6의 마스크 처리는, 마스크 작성에, AND와 비교 명령의 2명령으로 행하고 있는 데 대하여, 종래는 AND, 시프트 2회, 뺄셈 명령의 4 명령으로 실행하고 있다.
또한, 본 실시형태에서는, 도 5에 나타내는 바와 같이, 좌 시프트는, 심볼 단위로, 독립적으로 행하고 있는 데 대하여, 종래 기술에서는, 도 16에 나타내는 바와 같이, 레지스터 전체, 즉 4 심볼 단위로 행하고 있다. 이 때문에 종래 기술에 서는, 시프트 후, 심볼의 우단이, 우측 인접의 심볼의 최상위 비트에 영향받지 않도록, 심볼의 우단을 강제적으로 「0」으로 치환하는 처리가 여분으로 요구된다.
따라서, 종래는 9 명령으로 실행하고 있던 것을, 본 실시형태에서는, 6 명령으로 실행할 수 있다. 즉 α배하는 데, 2/3의 처리 시간으로 완료되어, 고속으로 갈로아체의 곱 연산을 실행할 수 있다. 예컨대, α의 13승의 곱 연산에서는, 종래는 9×13=117 명령(단계)을 필요로 한 데에 대하여, 본 실시형태는 6×l3=78 명령(단계)으로 완료된다. 또한 수학식 (1)의 곱 연산에서는, 종래는, 9×(1+2+3+4+5+6+7+8+9+10+11+12+13=91)=819 명령의 실행을 요구하지만, 본 실시형태에서는, 6×(1+2+3+4+5+6+7+8+9+10+11+l2+13=91)=546 명령의 실행으로 완료되어, 고속으로 갈로아체 곱 연산을 실행할 수 있다.
또한, 본 실시형태에서는, 8 심볼을 병렬 처리할 수 있기 때문에, 종래의 4 심볼의 병렬 처리에 비해, 2배의 고속 처리가 더 가능해지고, 결과로서, 1/3의 처리 시간으로, 갈로아체 곱 연산을 실현할 수 있다.
(다른 갈로아체 곱 연산 처리)
도 7은 본 발명의 갈로아체 곱 연산 처리의 다른 실시형태의 처리 흐름도, 도 8은 도 7의 가중 처리의 설명도, 도 9는 도 7의 α-1배의 곱 연산 처리 흐름도, 도 10은 그 오퍼레이션의 설명도, 도 11은 도 9의 상세 처리 흐름도이다.
전술의 실시형태는, 갈로아체의 곱 연산 처리의 1회의 처리 시간을 단축하는 것이 었지만, 이 실시형태는, 곱 연산 처리의 병렬 처리 알고리즘의 루프 회수가 적어지도록, 갈로아체의 원을 결정하여, 갈로아체의 곱 연산 처리 시간을 단축하는 것이다.
도 7에 도시하는 바와 같이, 도 1 ~ 도 2와 마찬가지로, 데이터 디스크 장치를 14대로 구성한 예로 하면, 데이터 디스크 번호 i(=1 ~ 14)에 대하여, i=1 ~ 8인 경우는, αi-1배에 의한 가중을 행하고, 도 4 ~ 도 6의 가중 연산 처리를 행하며, i=9 ~ 14인 경우는, α-i+8배에 의한 가중을 행하고, 도 8 이하에서 설명하는 α-1배의 가중 알고리즘을 사용한다.
이 가중의 할당을 일반화하면, 데이터 디스크 장치를 n 대로 구성한 예로 하면, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, 데이터 디스크 번호 i=1 ~ s+1의 경우는, α(i-1)배에 의한 가중을 행하고, 도 4 ~ 도 6의 가중 연산 처리를 행하며, i=s+2 ~ n의 경우는, α-i+s+1배에 의한 가중을 행한다.
α배의 가중 처리는, 도 4 ~ 도 6에서 설명하였기 때문에, 여기서는, 설명을 생략하고, α-1배의 가중 처리를, 도 8 ~ 도 11에서 설명한다.
도 8에 나타내는 바와 같이, 제1 패리티 P는, 데이터 디스크 장치(10-1 ~ 10-14)의 열방향의 데이터(D1 ~ D14)의 XOR로 생성되고, 제1 패리티 디스크 장치(10-15)의 대응 어드레스에 저장된다. 제2 패리티 Q는, 데이터 디스크 장치(10-1 ~ 10-14)의 열방향의 데이터(D1 ~ D14)를, 갈로아체의 곱 연산에 의한 가중 후에, XOR하여 생성되어, 제2 패리티 디스크 장치(10-16)의 대응 어드레스에 저장 된다. 즉, 패리티 Q는 하기 수학식 (3)으로 연산된다.
[수학식 3]
Q=α0×D1+α1×D2+α2×D3+… +α7×D8+α-1×D9+…+α-6×D14
또한, 기호 「+」는, XOR 연산을 나타낸다. 이들 패리티 연산은, RAID 컨트롤러(12)가 실행한다. 여기서, 1 심볼을 16 비트로 하면, 갈로아체는, GF(2의 16승)이고, 그 원시 다항식(생성 다항식)은, 상기 수학식 (2)로 나타난다.
또한 이 실시예에서, α-1배의 갈로아체 곱 연산에 사용되는 마스크값은 「1」이고, 16 비트의 데이터의 최하위 비트만이 「1」인 데이터이다. 또한, 값 「34821」은 수학식 (2)의 원시 다항식을 x로 나누고, 나눈 식의 x에 「2」를 대입하여 얻은 값이다.
RAID 컨트롤러(12)는, 데이터를 디스크 장치(10-1 ~ 10-14)에 라이트 처리할 때에 XOR 연산에 의해, 패리티 P를 계산하고, 제1 패리티 디스크 장치(10-15)에 저장하며, 이하에 설명하는 갈로아체의 곱 연산 처리와 XOR 연산을 행하고, 패리티 Q를 계산하며, 제2 패리티 디스크 장치(10-16)에 저장한다.
도 9 이하에서도, 1 심볼을 16 비트로 하여, 8 심볼을 병렬 처리하는 예로 설명한다. 예컨대 인텔사(등록 상표)의 CPU에서는, MMX 명령 세트가 구비되어 있다. MMX 명령 세트는 xmm 레지스터를 사용한다. 이 xmm 레지스터를 이용하여, 병렬 처리를 행한다. xmm 레지스터 길이는, 16 Byte이고, 한번에, 1 심볼이 16 비트일 때는, 8 심볼의 데이터의 가중의 병렬 처리를 행할 수 있다.
도 9에 의해, α-1배의 갈로아체 곱 연산의 기본적 처리를 설명한다.
(S40) 우선, xmm1 레지스터에, 8 심볼을 로드한다.
(S42) 다음에, xmm1 레지스터의 각 심볼을, 우측 방향(최하위 비트 방향)으로 1 비트 시프트하고, 각 심볼의 값을 1/2배로 한다.
(S44) 마스크값을 이용하여 시프트에 의해 값의 자릿수 소거가 발생하는 심볼(즉, 대상 심볼의 최하위 비트「1」이 소실되는 심볼)을 검출한다.
(S46) 시프트한 심볼 중, 자릿수를 소거한 심볼에, 미리 정한 값(「34821」)을 XOR한다.
다음에, 도 11에 의해, MMX를 이용한 가중 처리를 상세히 설명한다. 또한, 도 10을 이용하여, 데이터 디스크 번호 i=9의 α-1배의 갈로아체의 가중(갈로아체의 곱 연산) 처리를 예로, 구체적으로 설명을 행한다. 데이터 디스크 번호 i=9인 경우에는, 수학식 (3)의 패리티 Q의 생성 다항식으로부터, 데이터 Di =9에, α-1배의 가중을 행한다.
(S50) xmm 레지스터에, 데이터를 대입하고, 처리해야 하는 반복 회수 MAX를 설정한다. 예컨대, 디스크 번호 i=9인 경우에는, MAX=1이다. 또한 반복 회수 포인터 i를 「0」으로 초기화한다. 예컨대 도 5와 마찬가지로, 데이터 디스크 번호 i=9의 디스크로부터, 가중을 행하는 8 심볼(1 심볼, 16 비트)의 데이터(Di =9 데이터)를 픽업하고, 이것을 xmm1 레지스터에 대입한다[도 10의 (1)].
또한, 「1」과 「34821」의 값이 입력된 8 심볼의 데이터 v1, v34821을 준비한다. 값 「1」은, 최하위인 1 비트째에만 「1」의 값이 있는 것을 나타내고, 좌 시프트에 의해 자릿수의 소거가 발생하는 심볼을 검출하기 위한 데이터이다.
값 「34281」은, 16 비트의 갈로아체 GF(216)의 원시 다항식(x16+x12+x3+x+1)으로부터 「1」을 제외하고, 또한 이 결과를 x로 나눈 다항식(x15+x11+x2+1)에, x=2를 대입한 값이다. 이 의미는 16 비트의 갈로아체 GF(216)의 원시 다항식(α16+α12+α3+α+1)=0의 원측에 의해, (α16+α12+α3+α)=1이 성립한다. 이 α에 「2」를 대입하면, 69642=1을 얻을 수 있다. 양변을 우측(최하위) 방향으로 1 비트 시프트하면, 34821=값이 소실이 된다. 16 비트 데이터의 우측 변에 「1」이 있는 경우에, 우측 시프트하면, 우측 변의 「1」이 소실되기 때문에, 「34821」을 XOR함으로써, 값을 보정하는 것이다.
(S52) 다음에, 이동 명령(MOVQ)에 따라서, xmm1 레지스터에 대입된 값을, xmm2 레지스터로 이동시킨다. 시프트 명령(PSRLW)에 따라서, xmm2 레지스터의 각 심볼을, 우측으로(하위 방향으로) 1 비트 시프트한다[도 10의 (2)의 xmm2]. 이에 따라, 각 심볼은, 1/2배(=α-1배)가 되지만, 1 심볼이 16 비트이기 때문에, 자릿수 소거된 비트 부분은, 언더플로우한다. 이 때문에, 도 5와 마찬가지로, 값이 그대로 2배가 되는 개소와, 자릿수 소거하는 개소(언더플로우한 개소)가 혼재한다.
(S54) 이 자릿수 소거하는 개소(심볼)에만, 값 「34821」의 XOR을 행한다. 이 때문에 우선, 자릿수 소거한 심볼을 추출하고, 그 추출한 심볼의 값을, 모두 「1」(즉, 65535)로 한다. 즉 AND 명령(PAND)에 따라서, 도 10의 xmm1 레지스터의 각 심볼의 값과, v1의 값 「1」과의 논리곱(AND)을 취하여, xmm1 레지스터를 갱신한다. (xmm1&v1)은 8 심볼 중, 최하위 자릿수가 「1」인 심볼만이, 값 「1」로 치환되고, 그 이외는 값 「0」으로 치환된다.
다음에, 8 심볼의 값 판정을 행하고, 심볼의 값을, 값 「65535」 또는 값 「0」으로 치환한다. 즉, 비교 및 최대값 설정 명령(PCMPEQW)에 따라서, (xmm1 & v1)의 각 심볼의 값과, 값 「1」을 비교하여, 양자가 일치하면, 그 심볼의 16 비트를 모두 「1」(=65535)로 치환하고, 양자가 일치하지 않으면, 그 심볼의 16 비트를 모두 「0」(=0)으로 치환한다. 이에 따라, 값 「34821」의 마스크를 작성한다.
(S56) 그리고, AND 명령(PAND)에 따라서, 이 xmm1 레지스터의 각 심볼의 값과, v34821의 값 「34821」의 논리곱(AND)을 취하여, xmm1 레지스터를 갱신한다. 이것에 의해, 8 심볼의 xmm1 레지스터 중, 최하위 자릿수가 「1」인 심볼만이 값 「34821」로 치환되고, 그 이외의 심볼은 값 「0」으로 치환된다.
(S58) XOR 명령(PXOR)에 따라서, 이 갱신된 xmm1 레지스터의 각 심볼의 값과, 단계 S52에서 얻은 xmm2 레지스터의 각 심볼의 값과의 XOR(배타적 논리합)을 취하여, α-1배의 가중을 행한 결과를 얻는다.
(S60) 「break」가 검출되었을 때에, 처리를 정지하고, xmm1의 값을 확정한다. 그 이외는, 단계 S54로 복귀한다.
(S62) α-1배 계산 처리 시작에 있어서, 반복 회수 포인터 i를 「1」 인크리먼트한다. 그리고 반복 회수 포인터 i가 설정 반복 회수 MAX 이상인지를 판정한다. 반복 회수 포인터 i가 설정 반복 회수 MAX 이상이 아니면, 단계 S54로 진행한다.
(S64) 한편, 반복 회수 포인터 i가, 설정 반복 회수 MAX 이상인 경우에는, 설정한 반복 회수가 종료하였기 때문에, 「break」를 통지하고, xmm1을 결과로서 출력한다.
이와 같이, 이 α-1배의 가중 알고리즘의 특징은 xmm 레지스터에 대입된 값을, 우측 1 비트 시프트하는 점이고, 기본적인 사고 방식은 α배의 가중 알고리즘과 동일하다. 출력은 디스크 번호 i=9 ~ 14에 대하여, α-(i-8)배의 가중 결과가 출력된다.
이와 같이, 갈로아체의 원은, 각 디스크에서 상이하면 좋고, 반드시 수학식 (1)과 같이, 디스크 번호 i에 비례하는 승수를 갖는 갈로아체의 원을 사용하지 않아도 좋다. 이를 이용하여 α배와, α-1배의 가중 처리를 이용하고, 또한 반복수가 최소가 되는 디스크 번호 i에서, 사용하는 갈로아체를 αi-1배와, α-i+8배의 가중을 할당한다. 이것에 의해, 도 7 및 도 8에서는 루프 회수가, 최대 7회가 된다.
만약, 도 4의 방법만으로 행하면, 루프 회수는 최대 13회가 되고, 이 실시형태에 의한 루프 회수의 삭감 효과는 크다.
또한, 이 실시형태에서는, α배와 α-1배의 가중 처리를, 도 4의 예에서 설명하였지만, 다른 1회의 반복으로 α배, n회의 반복으로 αn배의 곱 연산을 할 수 있는 다른 방법도 적용할 수 있다.
물론, 도 4의 실시형태의 곱 연산 처리를 사용하면, 본 실시형태에서도, 6 명령으로 실행할 수 있어, α배하는 데, 2/3의 처리 시간으로 완료되어, 고속으로 갈로아체의 곱 연산을 실행할 수 있다. 마찬가지로, 8 심볼을 병렬 처리할 수 있기 때문에, 종래의 4 심볼의 병렬 처리에 비해, 2배의 고속 처리가 더 가능해지고, 결과로서, 1/3의 처리 시간으로, 갈로아체 곱 연산을 실현할 수 있다.
(또 다른 갈로아체 곱 연산 처리)
도 12는, 본 발명의 갈로아체 곱 연산 처리의 또 다른 실시형태의 처리 흐름도, 도 13은, 도 12의 처리의 설명도이다. 이 실시형태는, 도 4 ~ 도 6의 실시형태의 α배 연산 처리를 사용한 임의의 갈로아체의 원 αk배의 가중 처리를 나타내고, 최대 반복 회수가 15회로 완료한다고 하는 메리트가 있다. 이 곱 연산 처리는, 특히 k배의 k가 클 때에 유효하고, 디스크의 2중 고장을 복원시킬 때에 사용하는 것이 적합하다.
도 13에 나타내는 바와 같이, 예컨대 16 비트의 갈로아체 GF(216)의 최대의 갈로아체의 원 α33653배(α의 33653승)의 가중을 행할 때에, 도 4의 α배의 가중 알 고리즘을 이용한 경우에는, 반복 회수가 33653회, 도 7의 α(-1)배의 가중 알고리즘을 이용한 경우에는, 반복 회수가 31882회 요구되어, 효율적이라고는 할 수 없다.
그래서, 이러한 케이스에서는, 임의의 갈로아체 가중 알고리즘을 사용한다. 이 알고리즘은, 갈로아체의 벡터 표현을 사용하는 것에 특징이 있다. 임의의 갈로아체의 원은, 하기 수학식 (4)의 관계가 있다.
[수학식 4]
αk=gfW(0)·α0+gfW(1)·α1+…+gfw(15)·α15
단, gfw(i)는 「0」 또는 「1」 중 어느 하나이다. 즉, 임의의 갈로아체를 2진수의 벡터 표현[gfw(0), gfw(1), …, gfw(15)]으로 나타낼 수 있다.
또한, 1 심볼 D의 αk배 가중은, 하기 수학식 (5)과 같이, 분배 법칙이 성립한다.
[수학식 5]
αk·D=(gfw(0)·α0+gfw(1)·α1+·‥+gfw(15)·α15)·D
=gfw(0)·α0·D+gfw(1)·α1·D+…+gfw(15)·α15·D
도 12 및 도 13의 가중 처리는, 이 분배 법칙을 이용하여 가중을 행한다. 예컨대 α33653배의 가중을 행하는 경우에는, 갈로아체의 법칙으로부터, 하기 수학식 (6)의 관계가 있다.
[수학식 6]
α33653=α2+α0
따라서, 전술의 벡터 표현에서는, (gfw(0), gfw(1), …, gfw(15))=(1, 0, 1, 0, …, 0)이 된다.
또한, 반복 회수는 gfw(i)=1 이 되는 최대의 i를 설정값으로서 사용하기 때문에, 반복 회수 MAX=2로 설정한다. 이 이유는, α3·D, α4·D, …의 가중을 요구하지 않기 때문에, 반복 회수 MAX를 「2」로 지정함으로써, 여분의 반복 회수를 줄이는 것이 가능해져, 처리 시간을 단축하는 효과가 있다.
도 13은, 8 심볼 데이터(D1, D2, D3, D4, D5, D6, D7, D8)의 α33653배의 가중의 예를 도시한다. MAX=2회 반복을 반복할 때, α0=1배, α1배, α2배의 가중 데이터가 작성된다. 이 중, gfw(i)=1이 되는 i회째의 αi배 가중 데이터를 덧셈(XOR)한다. 이 예의 경우에는, 0회째와 2회째의 가중 데이터를 덧셈(XOR)한다.
이것에 의해, 원하는 가중 데이터 α33653·Dj(j=1, 2, ‥, 8)를 (α0·Dj+α2·Dj)에 의해 얻을 수 있다.
도 12에 의해 처리를 설명한다.
(S70) xmm1 레지스터에, 데이터를 대입하고, 처리해야 하는 반복 회수 MAX를 설정한다. Xmm2 레지스터를, v0(모두 「0」)으로 초기화한다. 또한 반복 회수 포인 터 i를 「0」으로 초기화한다. 또한 MAX=0인 경우에는, xmm 레지스터 1의 내용을 출력하고, 이하의 단계를 실행하지 않는 것으로 한다. 그리고 벡터 gfw를 설정한다.
또한, 도 4와 마찬가지로, 「32768」과 「4107」의 값이 입력된 8 심볼의 데이터 v32768, v4107을 준비한다. 값 「32768」은 16 비트째에만 「1」의 값이 있는 것을 나타내고, 시프트에 의해 자릿수 올림이 발생하는 심볼을 검출하기 위한 데이터이다. 값 「4107」은, 16 비트의 갈로아체 GF(216)의 원시 다항식(x16+x12+x3+x+1)의 (x12+x3+x+1)에 x=2를 대입한 값이다. 즉, 4096+8+2+1=4107이다.
(S72) 다음에, 이동 명령(MOVQ)에 따라서, xmm1 레지스터에 대입된 값을 xmm3 레지스터에 이동한다. 시프트 명령(PSLLW)에 따라서, xmm3 레지스터의 각 심볼을, 좌측으로(상위 방향으로) 1 비트 시프트한다. 이에 따라, 각 심볼은 2배(=α배)가 되지만, 1 심볼이 16 비트이기 때문에, 자릿수 올림된 비트 부분은 오버플로우한다. 이 때문에 값이 2배가 되는 개소와, 시프트 전보다 값이 작아지는 개소가 있다. 시프트 전보다 값이 작아지는 개소는 오버플로우한 개소이다.
(S74) 이 값이 작아지는 개소(심볼)에만, 값 「4107」의 XOR을 행한다. 이 때문에, 우선 값이 작아진 심볼을 추출하고, 그 추출한 심볼의 값을, 모두 「1」(즉, 65535)로 한다. 즉, AND 명령(PAND)에 따라서, xmm1 레지스터의 각 심볼의 값과 v32768의 값 「32768」과의 논리곱(AND)을 취하여, xmm1 레지스터를 갱신한다. 8 심볼 중, 오버플로우한 심볼(값이 작아진 심볼)만이, 값 「32768」로 치환되고, 오버플로우하지 않는 심볼은 값 「0」으로 치환된다.
다음에, 8 심볼의 값 판정을 행하고, 심볼의 값을, 값 「65535」 또는 값 「0」으로 치환한다. 즉, 비교 및 최대값 설정 명령(PCMPEQW)에 따라서, (xmm1&v32768)의 각 심볼의 값과, 값 「32768」을 비교하여, 양자가 일치하면, 그 심볼의 16 비트를, 모두 「1」(=65535)로 치환하고, 양자가 일치하지 않으면, 그 심볼의 16 비트를, 모두 「0」(=0)으로 치환한다. 이에 따라, 값 「4107」의 마스크를 작성한다.
(S76) 그리고, AND 명령(PAND)에 따라서, 이 xmm1 레지스터의 각 심볼의 값과, v4107의 값 「4107」의 논리곱(AND)을 취하여, xmm1 레지스터를 갱신한다. 이것에 의해 8 심볼의 xmm1 레지스터 중, 값이 작아진 심볼만이 값 「4107」로 치환되고, 값이 작아지지 않는 심볼은 값 「0」으로 치환된다.
(S78) XOR 명령(PXOR)에 따라서, 이 갱신된 xmm1 레지스터의 각 심볼의 값과, 단계 S72에서 얻은 xmm3 레지스터의 각 심볼의 값과의 XOR(배타적 논리합)을 취하여, α배의 가중을 행한 결과를 얻는다.
(S80) 「break」가 검출되었을 때에, 처리를 정지하고, xmm1의 값을 확정한다. 그 이외는, 단계 S74에 복귀한다.
(S82) XOR 계산부에서는, 이동 명령(MOVQ)에 따라서, xmm1 레지스터의 처리 결과를 xmm4 레지스터에 이동한다.
(S84) 그 처리시의 gfw(i)가 「1」인지를 판정한다.
(S86) gfw(i)가 「1」인 경우에는, 전술한 바와 같이, XOR의 대상이기 때문 에, xmm2 레지스터의 내용과 xmm4 레지스터의 내용과의 XOR을 연산하고, 연산 결과로 xmm2 레지스터를 갱신한다.
(S88) 반복 회수 포인터 i를 「1」 인크리먼트한다.
(S90) 그리고, 반복 회수 포인터 i가 설정 반복 회수 MAX 이상인지를 판정한다. 반복 회수 포인터 i가 설정 반복 회수 MAX 이상이 아니면 단계 S74로 진행한다.
(S92) 한편, 반복 회수 포인터 i가, 설정 반복 회수 MAX 이상인 경우에는, 설정한 반복 회수가 종료하였기 때문에, 「break」를 α배 계산부의 루프에 통지하고, xmm2를 결과로서 출력한다.
이와 같이, αk배의 가중 처리의 최대 반복 회수를 감소할 수 있고, k가 클 때에 유효하며, 디스크의 2중 고장을 복원시킬 때에 사용하면, 고속으로 복원할 수 있다.
(다른 실시형태)
전술의 실시형태에서는, 14대의 데이터 디스크 장치와 2대의 패리티 디스크 장치로 구성되는 RAID 6의 스토리지 장치로 설명하였지만, 다른 대수의 구성으로 적용할 수 있다.
또한, 패리티 Q의 생성은, 도 4의 실시형태 또는 도 11의 다른 실시형태의 갈로아체 곱 연산 처리를 사용하고, 패리티(P, Q)를 사용한 2중 고장의 복원에는, 도 12의 또 다른 실시형태의 갈로아체 곱 연산 처리를 사용하는 것이, 패리티 생성 과 복원 양쪽 모두를 고속으로 실행할 수 있다. 그러나 패리티 Q의 생성은, 도 4의 실시형태 또는 도 11의 다른 실시형태의 갈로아체 곱 연산 처리를 사용하고, 패리티(P, Q)에 의한 이중 고장의 복원도, 도 4의 실시형태 또는 도 11의 다른 실시형태의 갈로아체 곱 연산 처리를 사용할 수도 있다. 또한, 패리티 Q의 생성 및 패리티(P, Q)에 의한 이중 고장의 복원도, 도 4의 실시형태를 포함하는 도 12의 또 다른 실시형태의 갈로아체 곱 연산 처리를 사용할 수도 있다.
이상, 본 발명을, 실시형태로 설명하였지만, 본 발명은, 그 취지의 범위 내에서 여러 가지의 변형이 가능하고, 이것을 본 발명의 범위로부터 배제하는 것이 아니다.
(부기 1) 데이터를 분할하고, 분할된 데이터를 각각 저장하는 복수의 데이터 스토리지 유닛과, 상기 분할된 데이터의 조합으로부터 얻은 제1 패리티 데이터와, 패리티의 생성 방정식에 있어서의 갈로아체의 원을 상기 분할된 데이터에 곱 연산하며, 또한 곱 연산 결과를 이용하여 상기 생성 방정식을 연산하여 얻은 제2 패리티 데이터를 저장하는 패리티 스토리지 유닛과, 상기 데이터를 분할하고, 상기 제1 패리티 데이터와 제2 패리티 데이터를 연산하며, 상기 제1 패리티 데이터와 제2 패리티 데이터를 상기 패리티 스토리지 유닛에 저장하는 제어 유닛을 포함하고, 상기 제어 유닛은, 상기 분할된 데이터의 각각을 레지스터에 로드하며, 또한 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하고, 상기 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하며, 또한 상기 논리곱의 결과와 상기 고정값을 비교하여, 상기 자릿수 올림 비트를 포함 하는 데이터를, 상기 데이터의 최대값으로 치환하고, 마스크를 작성하며, 상기 마스크의 최대값과 상기 자릿수 올림을 보정하는 보정값과의 논리곱을 연산하고, 상기 연산 결과와 상기 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 상기 데이터를 상기 갈로아체의 원으로 곱 연산한 결과를 얻는 것을 특징으로 하는 RAID 장치.
(부기 2) 상기 제어 유닛은, 상기 데이터 스토리지 유닛의 임의의 데이터 스토리지 유닛의 장해시에, 상기 장해 발생한 데이터 스토리지 유닛의 데이터를 미지 데이터로 하고, 상기 제1 패리티 데이터 및 제2 패리티 데이터와, 상기 장해 발생한 데이터 스토리지 유닛 이외의 상기 데이터 스토리지 유닛의 데이터를 이용하여, 상기 갈로아체의 연립 방정식으로부터, 상기 미지 데이터를 복원하는 것을 특징으로 하는 부기 1의 RAID 장치.
(부기 3) 상기 제어 유닛은, 최상위 비트만이 「1」인 상기 데이터의 비트수와 동일한 비트수를 갖는 상기 고정값을 사용하는 것을 특징으로 하는 부기 1의 RAID 장치.
(부기 4) 상기 제어 유닛은, 복수의 데이터를 상기 레지스트에 로드하고, 상기 복수의 데이터에 대하여, 상기 곱 연산 처리를 병렬로 실행하는 것을 특징으로 하는 부기 1의 RAID 장치.
(부기 5) 상기 제어 유닛은, 상기 갈로아체의 원시 다항식으로부터 얻은 상기 보정값을 사용하는 것을 특징으로 하는 부기 1의 RAID 장치.
(부기 6) 상기 제어 유닛은, 상기 갈로아체의 원의 차수만큼, 상기 곱 연산 을 반복하는 것을 특징으로 하는 부기 1의 RAID 장치.
(부기 7) 상기 제어 유닛은, 상기 갈로아체의 원을, 벡터 표현하고, 또한 분배 법칙을 이용하여, 가중값을 분배하며, 상기 갈로아체의 원의 곱 연산을 실행하는 것을 특징으로 하는 부기 1의 RAID 장치.
(부기 8) 상기 제어 유닛은, 상기 분배한 제1 가중값의 곱 연산을 제1 가중값의 회수만큼 실행한 후, 상기 실행 결과를 이용하여, 상기 곱 연산을 제2 가중값의 회수만큼 실행하고, 상기 제1 가중값의 곱 연산 결과와, 상기 제2 가중값의 곱 연산 결과의 배타적 논리합을 취하며, 상기 갈로아체의 원의 곱 연산 결과를 얻는 것을 특징으로 하는 부기 7의 RAID 장치.
(부기 9) 데이터를 n 분할하고, 분할된 데이터를 각각 저장하는 n 대의 데이터 스토리지 유닛과, 상기 분할된 데이터의 조합으로부터 얻은 제1 패리티 데이터와, 패리티의 생성 방정식에 있어서의 갈로아체의 원을 상기 분할된 데이터에 곱 연산하며, 또한 곱 연산 결과를 이용하여 상기 생성 방정식을 연산하여 얻은 제2 패리티 데이터를 저장하는 패리티 스토리지 유닛과, 상기 데이터를 n 분할하고, 상기 제1 패리티 데이터와 제2 패리티 데이터를 연산하며, 상기 제1 패리티 데이터와 제2 패리티 데이터를 상기 패리티 스토리지 유닛에 저장하는 제어 유닛을 포함하고, 상기 제어 유닛은, 상기 n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, i=1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)을, i=s+2 ~ n번째의 데이터 스토리지 유닛의 데이터의 갈 로아체의 원으로서, α(-i+s+1)을, 가중으로 하여, 상기 곱 연산을 실행하는 것을 특징으로 하는 RAID 장치.
(부기 10) 상기 제어 유닛은, 상기 n 분할된 데이터의 시프트, 시프트에 의한 자릿수 올림 데이터의 추출, 자릿수 올림 데이터의 마스크 작성, 상기 마스크를 사용하여, 상기 시프트된 데이터와 보정값과의 XOR 연산을 행하고, α배의 곱 연산 결과를 연산하는 것을 특징으로 하는 부기 9의 RAID 장치.
(부기 11) 상기 제어 유닛은, 상기 곱 연산을, m회 반복하여, αm배의 곱 연산 결과를 연산하는 것을 특징으로 하는 부기 10의 RAID 장치.
(부기 12) 상기 제어 유닛은, 상기 데이터 스토리지 유닛의 임의의 데이터 스토리지 유닛의 장해시에, 상기 장해 발생한 데이터 스토리지 유닛의 데이터를 미지 데이터로 하고, 상기 제1 패리티 데이터 및 제2 패리티 데이터와, 상기 장해 발생한 데이터 스토리지 유닛 이외의 상기 데이터 스토리지 유닛의 데이터를 이용하여, 상기 갈로아체의 연립 방정식으로부터, 상기 미지 데이터를 복원하는 것을 특징으로 하는 부기 9의 RAID 장치.
(부기 13) 분산된 데이터의 각각을 레지스터에 로드하는 단계와, 상기 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하는 단계와, 상기 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하는 단계와, 상기 논리곱의 결과와 상기 고정값을 비교하여, 상기 자릿수 올림 비트를 포함하는 데이터를, 상기 데이터의 최대값으로 치환하여, 마스크를 작 성하는 단계와, 상기 마스크의 최대값과 상기 자릿수 올림을 보정하는 보정값과의 논리곱을 연산하는 단계와, 상기 연산 결과와 상기 시프트된 데이터와의 배타적 논리합(XOR)을 연산하고, 상기 데이터를 상기 갈로아체의 원으로 곱 연산한 결과를 얻는 단계로 이루어지는 것을 특징으로 하는 갈로아체 곱 연산 처리 방법.
(부기 14) 상기 고정값과의 논리곱 단계는, 최상위 비트만이 「1」인 상기 데이터의 비트수와 동일한 비트수를 갖는 상기 고정값을 사용하는 단계로 이루어지는 것을 특징으로 하는 부기 13의 갈로아체 곱 연산 처리 방법.
(부기 15) 상기 로드 단계는, 복수의 데이터를 상기 레지스터에 로드하는 단계로 이루어지고, 상기 복수의 데이터에 대하여, 상기 시프트 단계, 논리곱 단계, 작성 단계, 논리곱 단계, 배타적 논리합 단계를 병렬로 실행하는 것을 특징으로 하는 부기 13의 갈로아체 곱 연산 처리 방법.
(부기 16) 상기 보정값과의 논리곱 단계는, 상기 갈로아체의 원시 다항식으로부터 얻은 상기 보정값을 사용하는 단계로 이루어지는 것을 특징으로 하는 부기 13의 갈로아체 곱 연산 처리 방법.
(부기 17) 상기 갈로아체의 원의 차수만큼, 상기 곱 연산을 반복하는 단계를 더 포함하는 것을 특징으로 하는 부기 13의 갈로아체 곱 연산 처리 방법.
(부기 18) 상기 갈로아체의 원을, 벡터 표현하고, 또한 분배 법칙을 이용하여, 가중값을 분배하며, 상기 갈로아체의 원의 곱 연산을 실행하는 단계를 더 포함하는 것을 특징으로 하는 부기 13의 갈로아체 곱 연산 처리 방법.
(부기 19) 상기 실행 단계는, 상기 분배한 제1 가중값의 곱 연산을 제1 가중 값의 회수만큼 실행하는 단계와, 상기 실행 결과를 이용하여, 상기 곱 연산을 제2 가중값의 회수만큼 실행하는 단계와, 상기 제1 가중값의 곱 연산 결과와, 상기 제2 가중값의 곱 연산 결과의 배타적 논리합을 취하여, 상기 갈로아체의 원의 곱 연산 결과를 얻는 단계로 이루어지는 것을 특징으로 하는 부기 18의 갈로아체 곱 연산 처리 방법.
(부기 20) 데이터를 n 분할하고, 분할된 데이터를 각각 저장하는 n 대의 데이터 스토리지 유닛의 데이터의 패리티 데이터를 갈로아체를 이용하여 생성하기 위한 갈로아체 곱 연산 처리 방법에 있어서, n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, i=1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)을, i=s+2 ~ n 번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(-i+s+1)을, 가중으로 하여, 곱 연산을 실행하는 단계와, 상기 곱 연산 결과로, 상기 패리티의 갈로아체를 이용한 생성 방정식을 연산하는 단계를 포함하는 것을 특징으로 하는 갈로아체 곱 연산 처리 방법.
(부기 21) 상기 곱 연산 단계는, 상기 n 분할된 데이터의 시프트, 시프트에 의한 자릿수 올림 데이터의 추출, 자릿수 올림 데이터의 마스크 작성, 상기 마스크를 사용하여, 상기 시프트된 데이터와 보정값과의 XOR 연산을 행하여, α배의 곱 연산 결과를 연산하는 단계로 이루어지는 것을 특징으로 하는 부기 20의 갈로아체 곱 연산 처리 방법.
(부기 22) 상기 곱 연산을, m회 반복하고, αm배의 곱 연산 결과를 연산하는 단계를 더 포함하는 것을 특징으로 하는 부기 21의 갈로아체 곱 연산 처리 방법.
(산업상 이용가능성)
분할된 데이터가 로드된 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하여 α배의 데이터를 얻고, 또한 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하며, 또한 논리곱의 결과와 고정값을 비교하여, 자릿수 올림 비트를 갖는 데이터를, 데이터의 최대값으로 치환하여, 마스크를 작성한다. 그리고, 마스크의 최대값과 자릿수 올림을 보정하는 보정값과의 논리곱을 연산하고, 연산 결과와 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 데이터를 갈로아체의 원으로 곱 연산한 결과를 얻기 때문에, 적은 단계, 명령으로, 갈로아체의 곱 연산이 가능해진다.
또한, n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, i= 1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)을, i=s+2 ~ n 번째의 데이터 스토리지 유닛의 갈로아체의 원으로서, α(-i+s+1)을, 가중으로 하여, 곱 연산을 실행하기 때문에, 적은 반복 회수로, 각 데이터의 갈로아체의 곱 연산이 가능해진다.
도 1은 본 발명의 일 실시형태의 RAID 장치의 구성도.
도 2는 본 발명의 일 실시형태의 패리티 생성 방법의 설명도.
도 3은 도 1의 패리티 Q의 갈로아체 곱 연산 처리 흐름도.
도 4는 도 2의 상세 처리 흐름도.
도 5는 도 4의 곱 연산 처리의 구체예의 설명도.
도 6은 도 5의 마스크 작성 처리의 설명도.
도 7은 본 발명의 다른 실시형태의 갈로아체 곱 연산 처리의 설명도.
도 8은 도 7의 곱 연산 처리의 설명도.
도 9는 도 7의 패리티 Q의 갈로아체 곱 연산 처리 흐름도.
도 10은 도 9의 조작 처리 흐름도.
도 11은 도 9의 상세 처리 흐름도.
도 12는 본 발명의 또 다른 실시형태의 갈로아체 곱 연산 처리 흐름도.
도 13은 도 12의 곱 연산 처리의 설명도.
도 14는 종래의 RAID 6의 구성도.
도 15는 종래의 RAID 6의 패리티 데이터의 설명도.
도 16은 종래의 갈로아체의 곱 연산의 설명도.
도 17은 종래의 마스크 작성 처리의 설명도.
(부호의 설명)
10-1 ~ 10-14: 데이터 디스크 장치
10-15 ~ 10-16: 패리티 디스크 장치
12: RAID 컨트롤러 14: 접속 버스
16: 호스트
Claims (8)
- 데이터를 분할하고, 분할된 데이터를 각각 저장하는 복수의 데이터 스토리지 유닛과,상기 분할된 데이터의 조합으로부터 얻은 제1 패리티 데이터와, 패리티의 생성 방정식에 있어서의 갈로아체의 원(元)을 상기 분할된 데이터에 곱 연산하며, 또한 곱 연산 결과를 이용하고 상기 생성 방정식을 연산하여 얻은 제2 패리티 데이터를 저장하는 패리티 스토리지 유닛과,상기 데이터를 분할하고, 상기 제1 패리티 데이터와 제2 패리티 데이터를 연산하며, 상기 제1 패리티 데이터와 제2 패리티 데이터를 상기 패리티 스토리지 유닛에 저장하는 제어 유닛을 포함하고,상기 제어 유닛은, 상기 분할된 데이터의 각각을 레지스터에 로드하며, 또한 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하고, 상기 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하며, 또한 상기 논리곱의 결과와 상기 고정값을 비교하여, 상기 자릿수 올림 비트를 포함하는 데이터를, 상기 데이터의 최대값으로 치환하여, 마스크를 작성하며, 상기 마스크의 최대값과 상기 자릿수 올림을 보정하는 보정값과의 논리곱을 연산하고, 상기 연산 결과와 상기 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 상기 데이터를 상기 갈로아체의 원으로 곱 연산한 결과를 얻는 것을 특징으로 하는 RAID 장치.
- 제1항에 있어서, 상기 제어 유닛은,상기 데이터 스토리지 유닛의 임의의 데이터 스토리지 유닛의 장해시에, 상기 장해 발생한 데이터 스토리지 유닛의 데이터를 미지 데이터로 하고, 상기 제1 패리티 데이터 및 제2 패리티 데이터와, 상기 장해 발생한 데이터 스토리지 유닛 이외의 상기 데이터 스토리지 유닛의 데이터를 이용하여, 상기 갈로아체의 연립 방정식으로부터, 상기 미지 데이터를 복원하는 것을 특징으로 하는 RAID 장치.
- 제1항에 있어서, 상기 제어 유닛은 복수의 데이터를 상기 레지스터에 로드하고, 상기 복수의 데이터에 대하여, 상기 곱 연산 처리를 병렬로 실행하는 것을 특징으로 하는 RAID 장치.
- 제1항에 있어서, 상기 제어 유닛은, 상기 갈로아체의 원의 차수만큼 상기 곱 연산을 반복하는 것을 특징으로 하는 RAID 장치.
- 제1항에 있어서, 상기 제어 유닛은, 상기 갈로아체의 원을, 벡터 표현하고, 또한 분배 법칙을 이용하여 가중값을 분배하여, 상기 갈로아체의 원의 곱 연산을 실행하는 것을 특징으로 하는 RAID 장치.
- 데이터를 n 분할하고, 분할된 데이터를 각각 저장하는 n 대의 데이터 스토리지 유닛과,상기 분할된 데이터의 조합으로부터 얻은 제1 패리티 데이터와, 패리티의 생성 방정식에 있어서의 갈로아체의 원을 상기 분할된 데이터에 곱 연산하고, 또한 곱 연산 결과를 이용하여 상기 생성 방정식을 연산하여 얻은 제2 패리티 데이터를 저장하는 패리티 스토리지 유닛과,상기 데이터를 n 분할하고, 상기 제1 패리티 데이터와 제2 패리티 데이터를 연산하며, 상기 제1 패리티 데이터와 제2 패리티 데이터를 상기 패리티 스토리지 유닛에 저장하는 제어 유닛을 포함하고,상기 제어 유닛은, 상기 n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, i=1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)을, i=s+2 ~ n번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(-i+s+1)을, 가중으로 하여, 상기 곱 연산을 실행하는 것을 특징으로 하는 RAID 장치.
- 분산된 데이터의 각각을 레지스터에 로드하는 단계와,상기 레지스터의 각 데이터를 상위 자릿수 방향으로 비트 시프트하는 단계와,상기 로드된 데이터와 상기 시프트에 의해 자릿수 올림 비트를 검출하기 위한 고정값과의 논리곱을 취하는 단계와,상기 논리곱의 결과와 상기 고정값을 비교하여, 상기 자릿수 올림 비트를 포함하는 데이터를, 상기 데이터의 최대값으로 치환하여, 마스크를 작성하는 단계와,상기 마스크의 최대값과 상기 자릿수 올림을 보정하는 보정값과의 논리곱을 연산하는 단계와,상기 연산 결과와 상기 시프트된 데이터와의 배타적 논리합(XOR)을 연산하여, 상기 데이터를 상기 갈로아체의 원으로 곱 연산한 결과를 얻는 단계로 이루어지는 것을 특징으로 하는 갈로아체 곱 연산 처리 방법.
- 데이터를 n 분할하고, 분할된 데이터를 각각 저장하는 n 대의 데이터 스토리지 유닛의 데이터의 패리티 데이터를 갈로아체를 이용하여 생성하기 위한 갈로아체 곱 연산 처리 방법에 있어서,상기 n 대의 데이터 스토리지 유닛 중, (n-1)/2보다 큰 최소의 정수를 s로 할 때에, i=1 ~ s+1번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(i-1)를, i=s+2 ~ n번째의 데이터 스토리지 유닛의 데이터의 갈로아체의 원으로서, α(-i+s+1)를, 가중으로 하여, 곱 연산을 실행하는 단계와,상기 곱 연산 결과로, 상기 패리티의 갈로아체를 이용한 생성 방정식을 연산하는 단계를 포함하는 것을 특징으로 하는 갈로아체 곱 연산 처리 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2007-00010204 | 2007-01-19 | ||
JP2007010204A JP4935367B2 (ja) | 2007-01-19 | 2007-01-19 | Raid装置及びガロア体の積演算処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080068555A true KR20080068555A (ko) | 2008-07-23 |
KR100953884B1 KR100953884B1 (ko) | 2010-04-22 |
Family
ID=39470201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080004384A KR100953884B1 (ko) | 2007-01-19 | 2008-01-15 | Raid 장치 및 갈로아체의 곱 연산 처리 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8131794B2 (ko) |
EP (1) | EP1947771B1 (ko) |
JP (1) | JP4935367B2 (ko) |
KR (1) | KR100953884B1 (ko) |
CN (1) | CN101226492B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100928882B1 (ko) * | 2007-01-31 | 2009-11-30 | 후지쯔 가부시끼가이샤 | Raid 장치 및 갈로아체를 이용한 데이터 복원 장치 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7269621B2 (en) * | 2004-03-31 | 2007-09-11 | Google Inc. | Method system and graphical user interface for dynamically updating transmission characteristics in a web mail reply |
US8150031B2 (en) * | 2008-12-19 | 2012-04-03 | Intel Corporation | Method and apparatus to perform redundant array of independent disks (RAID) operations |
JP5278115B2 (ja) | 2009-03-31 | 2013-09-04 | 日本電気株式会社 | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 |
TWI416347B (zh) * | 2009-06-22 | 2013-11-21 | Realtek Semiconductor Corp | 處理有限域運算之方法與運算電路 |
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 |
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 |
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 |
JP5730812B2 (ja) * | 2012-05-02 | 2015-06-10 | 日本電信電話株式会社 | 演算装置、その方法およびプログラム |
KR102572357B1 (ko) | 2016-02-03 | 2023-08-29 | 삼성전자주식회사 | Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US10831602B2 (en) * | 2018-04-06 | 2020-11-10 | International Business Machines Corporation | Dynamically merging parity data for multiple data stripes |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR950010452B1 (ko) * | 1992-11-30 | 1995-09-18 | 삼성전자 주식회사 | 유한체상의 역수 산출방법 및 장치 |
US6148430A (en) * | 1998-05-15 | 2000-11-14 | Quantum Corporation | Encoding apparatus for RAID-6 system and tape drives |
JP2000259359A (ja) | 1999-03-04 | 2000-09-22 | Toshiba Corp | Raid装置および記録媒体 |
KR100386979B1 (ko) * | 2000-05-25 | 2003-06-09 | 주식회사데이콤 | 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기 |
US6779011B2 (en) * | 2001-02-28 | 2004-08-17 | Maxtor Corporation | System for performing multiplication and division in GF(22M) |
US6766345B2 (en) * | 2001-11-30 | 2004-07-20 | Analog Devices, Inc. | Galois field multiplier system |
US7392458B2 (en) * | 2004-11-19 | 2008-06-24 | International Business Machines Corporation | Method and system for enhanced error identification with disk array parity checking |
JP4435705B2 (ja) * | 2005-03-14 | 2010-03-24 | 富士通株式会社 | 記憶装置、その制御方法及びプログラム |
US7664915B2 (en) * | 2006-12-19 | 2010-02-16 | Intel Corporation | High performance raid-6 system architecture with pattern matching |
-
2007
- 2007-01-19 JP JP2007010204A patent/JP4935367B2/ja not_active Expired - Fee Related
- 2007-12-19 EP EP07123711.9A patent/EP1947771B1/en not_active Ceased
- 2007-12-21 US US12/004,826 patent/US8131794B2/en not_active Expired - Fee Related
-
2008
- 2008-01-15 KR KR1020080004384A patent/KR100953884B1/ko active IP Right Grant
- 2008-01-18 CN CN2008100030529A patent/CN101226492B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100928882B1 (ko) * | 2007-01-31 | 2009-11-30 | 후지쯔 가부시끼가이샤 | Raid 장치 및 갈로아체를 이용한 데이터 복원 장치 |
Also Published As
Publication number | Publication date |
---|---|
US20080177815A1 (en) | 2008-07-24 |
US8131794B2 (en) | 2012-03-06 |
CN101226492A (zh) | 2008-07-23 |
EP1947771A1 (en) | 2008-07-23 |
EP1947771B1 (en) | 2018-06-13 |
KR100953884B1 (ko) | 2010-04-22 |
CN101226492B (zh) | 2010-06-02 |
JP4935367B2 (ja) | 2012-05-23 |
JP2008176621A (ja) | 2008-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100953884B1 (ko) | Raid 장치 및 갈로아체의 곱 연산 처리 방법 | |
EP1953920B1 (en) | RAID system and data recovery apparatus using galois field | |
CN102084335B (zh) | 任意伽罗瓦域算术在可编程处理器上的实施 | |
KR101522509B1 (ko) | 갈루아 필드 산술을 사용하는 효율적이고 스케일링가능한 순환 중복 검사 회로 | |
EP2326014B1 (en) | Error detecting/correcting code generating circuit and method of controlling the same | |
US8099655B1 (en) | Galois field multiplier system and method | |
JP7541524B2 (ja) | アンカーデータ要素における特殊値の符号化 | |
JP5193358B2 (ja) | 多項式データ処理演算 | |
JP7541526B2 (ja) | アンカーデータ値のオーバーフロー又はアンダーフロー処理 | |
JP5131379B2 (ja) | Raid装置及びガロア体の積演算処理方法 | |
JP5927323B1 (ja) | 行列作用装置、行列作用方法、およびプログラム | |
JP2022519259A (ja) | アンカーデータ要素の変換 | |
JP5278115B2 (ja) | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 | |
CN106603085B (zh) | 生成多项式的生成方法、生成装置、编码器、控制器及电子设备 | |
CN106100827B (zh) | 错误保护密钥生成方法和系统 | |
US20210044306A1 (en) | Processing of data read from a memory | |
JP3239866B2 (ja) | Crcに基づくデータ検査方法及び装置並びに記録媒体 | |
JP3252420B2 (ja) | ユークリッドの互除回路 | |
WO2020084692A1 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
Mörig | Deferring dag construction by storing sums of floats speeds-up exact decision computations based on expression dags | |
JP2006500615A (ja) | 向上したQuisquaterReduction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130321 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140319 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20160318 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20170317 Year of fee payment: 8 |