KR101616478B1 - 프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현 - Google Patents

프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현 Download PDF

Info

Publication number
KR101616478B1
KR101616478B1 KR1020107027863A KR20107027863A KR101616478B1 KR 101616478 B1 KR101616478 B1 KR 101616478B1 KR 1020107027863 A KR1020107027863 A KR 1020107027863A KR 20107027863 A KR20107027863 A KR 20107027863A KR 101616478 B1 KR101616478 B1 KR 101616478B1
Authority
KR
South Korea
Prior art keywords
input
galois field
instruction
field multiplication
perform
Prior art date
Application number
KR1020107027863A
Other languages
English (en)
Other versions
KR20110010771A (ko
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 KR20110010771A publication Critical patent/KR20110010771A/ko
Application granted granted Critical
Publication of KR101616478B1 publication Critical patent/KR101616478B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication
    • 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
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

갈루아 필드(Galois Field) 곱셈을 위한 방법은 제 1 및 제 2 명령들의 실행을 포함한다. 제 1 명령은 제 1 변수와 같은 제 1 입력의 수신, 제 2 변수와 같은 제 2 입력의 수신, 제 1 및 제 2 입력들을 사용하는, GF(2m) 상에서의 다항식 곱셈의 수행, 및 결과의 산출을 포함한다. 제 2 명령은 제 1 명령으로부터의 곱일 수 있는 제 3 입력의 수신, 상기 곱에 대해 연산할 미리 결정된 생성기 다항식인 제 4 입력의 수신, 상기 곱에 대한 미리 결정된 생성기 다항식의 연산을 제한하는, 미리 결정된 생성기 다항식의 길이인 제 5 입력의 수신, 및 상기 길이에 의해 제한되는 미리 결정된 생성기 다항식을 통한, 제수에 대한 상기 곱의 모듈러스의 계산을 포함한다. 하드웨어 블록 역시 설명된다.

Description

프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현{Implementation of Arbitrary Galois Field Arithmetic on a Programmable Processor}
본 발명은 GF(2m)에서의 갈루아 필드 산술연산의 구현예에 관한 것이며, 여기서, 길이 m 및 생성기 다항식 p(x)는 사용자에 의해 특정될 수 있다. 이를 구현하기 위해, 2개의 명령들, (1) gfmul 명령 및 (2) gfnorm 명령이 갈루아 필드 곱을 구현하기 위해 함께 도입된다.
본 특허출원은 출원번호가 61/052,482이고 출원일이 2008년 5월 12일이고, 그 내용들이 참조로 여기에 통합되는 미국 가출원 특허의 우선권에 의존한다.
갈루아 필드 연산은 코딩 이론 및 암호화를 포함한 많은 애플리케이션들에서 사용된다.
당업자에 의해 이해될 수 있는 바와 같이, 코딩 이론의 영역 내의 예들은 공지된 리드-솔로몬("RS : Reed-Solomon") 에러-정정 코드들을 포함한다.
RS 에러-정정 코드는 통상적으로 RS(n,k)로 표기된다.
일 예에서, RS 코드는 m-비트 심볼들을 사용하여 동작한다. 이러한 코드에서, 인코더는 k*m개 비트들을 k개의 데이터-심볼들의 데이터-워드로 그룹화하며, 여기서 각각의 심볼은 m개 비트들을 가진다. 이후 인코더는 여기서 "n 심볼" 코드 워드라 지칭되는 n*m개 비트들의 코드 워드를 형성하기 위해 n-k개의 추가 패리티 심볼들(또한 각각이 m 비트임)를 계산한다. n의 최대 사이즈는 2m-l이다.
일반적으로, RS 코드는 임의의 (n-k)/2개의 에러(erroneous) 심볼들을 정정할 수 있다.
RS 코드의 널리 쓰이는(popular) 예는 RS(255,223)이다. 상기 RS(255,223)는 8비트 심볼들을 사용하고, 32개의 패리티 바이트들을 233바이트들의 데이터 블록에 더하고, 결과적인 255 바이트 코드 워드에서 임의의 에러가 있는 16 바이트를 정정한다. 이러한 특정 RS 코드가 당업자에게 당연히 알려져 있을 것이므로, 추가적인 상술은 여기서 제공되지 않는다.
패리티 심볼들은 후속하는 3-파트의 방식을 사용하여 계산되며, 이는 후속하는 문단들에서 논의된다.
먼저, k개의 m-비트 심볼들은 갈루아 필드 GF(2m)상에서 k-1차 다항식의 계수들이 되도록 취해진다. 여기서의 목적상, 상기 함수는 "d(x)"라 지칭된다. 따라서, 전송될 심볼들이
Figure 112010081574853-pct00001
인 경우, 상기 다항식은 수식(1)에 따라 쓰여질 수 있다.
Figure 112010081574853-pct00002
수식(1)
두번째로, 주어진 RS 코드에 대해, 생성기 다항식이 선택된다. 상기 생성기 다항식은 "g(x)"로 표현될 수 있으며, 2m-1의 차수를 가진다. 따라서 상기 생성기 다항식은 수식(2)로 표현될 수 있다.
Figure 112010081574853-pct00003
수식(2)
수식(2)에서, "a"는 당업자에 의해 인지되어야 하는 바와 같이, "원시 엘리먼트"라 지칭되는 GF(2m)에서의 특정 값이다.
세번째로, 패리티 심볼들은 수식(3)과 같이 표현될 수 있는 패리티 방정식을 풀어냄으로써 계산된다.
Figure 112010081574853-pct00004
수식(3)
수식(3)에서, 모든 연산들은 필드 GF(2m) 상에서 실행된다.
전술내용으로부터 이해될 수 있는 바와 같이, 다양한 사이즈들의 갈루아 필드들에서의 가산 및 곱셈은 리드-솔로몬 인코딩의 기저(basis)를 형성한다. 또한, 가산 및 곱셈은 다양한 RS 디코딩 알고리즘들, 예를 들어, Berlekamp 알고리즘(E. Berlecamp, "Bounded distance+1 soft decision Reed-Solomon decoding", IEEE Trans. Inform. Theory., Vol. 42, pp. 704-720, May, 1996) 및 Forney 알고리즘(G. D. Forney, "Generalized Minimum Distance Decoding", IEEE Trans. Inform Theory, Vol. IT-12, pp. 125-131, Apr., 1996)의 기저를 형성한다.
가산 및 곱셈이 갈루아 필드 방정식들의 구현들에 대한 기초이므로, 갈루아 필드 가산 및 곱셈의 실행의 신속함(rapidity)은 프로세싱 시간의 개선 및 프로세싱 효율성의 증가를 돕는다.
당업자에 의해 이해될 수 있는 바와 같이, 갈루아 필드 가산은 단순하며, 통상적으로 두 개의 독립변수(argument)들의 XOR이다. 그러나, 갈루아 필드 곱셈은 더 복잡하며, 룩업 테이블을 요구하는 방식 또는 전용 하드웨어를 요구한다.
앞서 강조된 바와 같이, 프로세싱 시간 및 효율성의 증가는 갈루아 필드 프로세싱의 영역에서 바람직한 "필수요소(commodity)들"이다.
따라서, 본 발명은 프로세싱 효율성을 증가시키고 프로세싱 시간을 감소시키기 위한 특정 방식들을 제시한다.
본 발명은 종래 기술에 대해 주지된 결점들 중 적어도 일부를 해소하는 방식들을 제시한다.
구체적으로, 본 발명의 일 양상은 제 2 명령에 선행하는 제 1 명령을 실행하는 갈루아 필드 곱셈을 위한 방법을 제공하는 것이다. 상기 제 1 명령은 gmful 명령일 수 있고, 상기 제 2 명령은 gfnorm 명령일 수 있다.
본 발명의 또다른 양상은 제 1 명령에 포함될 3개의 동작들 및 제 2 명령에 포함될 4개의 동작들을 제공한다. 상기 제 1 명령에 포함되는 3개의 동작들은 제 1 변수를 포함하는 제 1 입력의 수신, 제 2 변수를 포함하는 제 2 명령의 수신, 및 제 1 및 제 2 입력들을 사용하는, GF(2m)상에서 다항식 곱셈의 수행을 포함한다. 상기 제 2 명령을 위해 제공되는 4개의 동작들은 제 1 명령으로부터의 곱인 제 3 입력의 수신, 상기 곱에 대해 연산할 미리 결정된 생성기 다항식인 제 4 입력의 수신, 상기 곱에 대한 상기 미리 결정된 생성기 다항식의 연산을 제한하는, 상기 미리 결정된 생성기 다항식의 길이인, 제 5 입력의 수신, 및 상기 길이에 의해 제한되는 상기 미리 결정된 생성기 다항식을 통한, 제수에 대한 상기 곱의 모듈러스의 계산을 포함한다.
본 발명의 또다른 양상은 gmful 로직 및 gfnorm 로직을 포함하는 하드웨어 블록을 제공한다. gmful 로직은 제 1 입력 및 제 2 입력을 포함한다. 또한, gmful 로직은 GF(2m) 상에서 상기 제 1 및 제 2 입력들을 곱하여 곱을 산출하도록 구성되는 다항식 곱셈기 로직을 포함한다. gfnorm 로직은 상기 gmful 로직으로부터의 곱을 수신하는 제 3 입력, 상기 다항식 곱셈기 로직으로부터의 곱에 대해 연산하는 미리 결정된 생성기 다항식을 수신하는 제 4 입력, 상기 곱에 대한 미리 결정된 생성기 다항식의 연산을 제한하는 미리 결정된 생성기 다항식의 길이를 수신하는 제 5 입력, 및 상기 길이에 의해 제한되는 미리 결정된 생성기 다항식을 통해 제수에 대한 상기 곱의 모듈러스를 계산하는 계산 로직을 포함한다.
당업자에 의해 이해되어야 하는 바와 같이, 본 발명의 다른 양상들은 후속하는 도면들 및 설명으로부터 명백해질 것이다.
여기에 첨부되는 도면들은 본 발명의 하나 이상의 실시예들을 예시한다.
도 1은 본 발명에 의해 참작되는 한 방법의 제 1 부분을 예시하는 흐름도이다.
도 2는 도 1에 예시된 방법의 제 2 부분을 예시하는 흐름도이다.
도 3은 gmful 명령에 대한 한 가지 참작되는 로직을 제공하는 블록 다이어그램이다.
도 4는 gfnorm 명령에 대한 한가지 참작되는 로직을 제공하는 블록 다이어그램이다.
도 5는 계산 스테이지 로직에 대한 한가지 참작되는 배열을 제공하는 블록 다이어그램이다.
본 발명은 이제 하나 이상의 실시예(들)에 대해 설명될 것이다. 그러나, 본 발명은 여기서 설명되는 실시예들로 제한되도록 의도되지는 않는다. 반면, 후속 논의들이 명백해질 것이므로, 본 발명의 사상 및 범위로부터 벗어남이 없이 사용될 수 있는 다양한 변형예들이 존재한다. 이들 변형들 및 실시예들은 본 발명의 범위 내에 있도록 의도된다.
본 발명에 대해, (또한 여기서 곱셈이라 지칭되는) 갈루아 필드 곱을 실행할 목적으로, 4 부분의 정보: (1) "피승수(multiplicand) 1"이라 지칭되는 변수의 값, (2) "피승수 2"라 지칭되는 변수의 값, (3) 생성기 다항식 p(x), (4) 다항식의 길이 m이 통상적으로 요구된다.
이들 4개의 변수들 중, 처음 3개는 통상적으로 일반적으로 레지스터, 통상적으로 소스 레지스터로부터 사용가능하다. 4번째 변수인 다항식의 길이 m은 상기 명령의 일부분으로서 인코딩될 수 있거나, 레지스터, 통상적으로 즉시 레지스터(immediate register)로부터 판독될 수 있다.
당업자에게 자명해져야 하는 바와 같이, 대부분의 명령 세트 아키텍쳐들은 하나의 즉시 레지스터 명령 더하기 세 개의 소스 레지스터 명령들을 제공하지 못한다. 추가적으로, 당업자에 의해 이해되어야 하는 바와 같이, 대부분의 명령 세트 아키텍쳐들은 4개의 소스 레지스터 명령들을 제공하지 못한다. 대신, 종래 기술의 명령 세트 아키텍처들은 요구되는 정보 중 적어도 일부를 제공하기 위해 전용되는 전용 레지스터들에 의지한다.
본 발명은 갈루아 필드 알고리즘들에 대해 조작되는 변수들의 복소(complex) 세트에 대한 단순한 방식에 의존한다. 구체적으로, 본 발명에 대해, 갈루아 필드 곱은 2개의 별개의 명령들 : (1) gfmul 명령, 및 (2) gfnorm 명령으로 분할된다. gfmul 명령들은 GF(2)상에서 m-비트 다항식 곱을 수행하여 2m-1 비트의 곱을 산출한다. 포괄적인 대안적 변형에 있어서, gfmul 명령은 GF(2m) 상에서 m-비트 다항식 곱셈을 수행한다. 따라서, GF(2) 예에서, m=1이다. gfnorm 명령은 m+1 비트의 제수에 대한 2m-1 비트 수의 모듈러스를 계산한다. 이러한 분할을 통해, gfmul 명령을 2개의 입력들 : (1) 피승수 1 및 (2) 피승수 2를 가진다. 명백해져야 하는 바와 같이, gfnorm 명령은 3개의 입력들 : (1) 곱, (2) 다항식 p(x), 및 (3) 길이 m을 가진다.
바로 명백해져야 하는 바와 같이, 이러한 분할은 명령 세트에 대한 포트/인코딩 요건들을 감소시킨다. 그러나, 이는 또한 프로세서로 하여금 모든 GF 곱에 대해 2개의 명령들을 발생시키게 강제하는 경향이 있다.
이론적 관점에서, 프로세서로 하여금 모든 GF 곱에 대해 2개의 명령들을 발생시키게 강제하는 것은 종래 기술에 비해 어떠한 주목할만한 장점을 제공하는 것으로 보이지 않을 것이다. 그러나, 실제로, gfnorm 명령은 gfmul 명령보다 훨씬 덜 빈번하게 발생된다. 그 결과, 이러한 분할은 종래 기술에 비해 장점들을 제공한다. 구체적으로, GF 곱들은 더 큰 감소의 일부분으로서 일반적으로 수행된다는 점이 관측된다. 다음 수식은 이러한 관측을 요약한다:
Figure 112010081574853-pct00005
이 수식은 다음과 같이 다시 쓰여질 수 있다:
Figure 112010081574853-pct00006
따라서, n개의 gfmul 명령들의 2m-1 비트 곱을 XOR 시키고, 마지막에 최종 모듈러스를 실행하는 것이 가능하다. 이러한 설계에 따라 명령들을 실행시킴으로써, 상기 모듈러스는 각 단계에서 실행될 필요가 없다. 이는, 특정 경우들에서, 프로세싱 시간 및 전력 소모 모두의 견지에서 상당한 프로세싱 절감들을 제공한다.
공유 로직
당업자에 의해 이해되어야 하는 바와 같이, 갈루아 필드 알고리즘들에서 (다른 계산들을 수반하는 것으로서), 나머지가 계산될 필요가 있을 수 있다. 본 발명은 이 계산의 간략화를 허용하는 나머지 계산에서 특정 패턴들을 고려한다. 본 발명은 또한, 아래에 상세화되는 바와 같이, 다른 수학적 패턴들에 대해 대문자로 표기된다(capitalize).
나머지(또한 나머지 다항식이라 지칭됨)를 계산하기 위해, 제수의 일련의 감산들(즉, XOR들)이, 현재 나머지의 리딩(leading) 비트가 1인지의 여부에 기초하여 수행된다. 상기 곱을 계산하기 위해, 피승수들 중 하나에 대한 일련의 가산들(즉, XOR들)이 다른 피승수의 대응하는 비트가 1인지의 여부에 기초하여 수행된다.
일 예로서, 101100 및 011011의 곱셈을 고려한다. 상기 곱셈이 긴 형태(long form)로 기록되는 경우, 상기 곱셈은 다음과 같이 나타난다:
Figure 112010081574853-pct00007
이러한 곱셈이 정상 순서와 반대인 순서로 기록되었다는 점에 유의한다. 상기 예에서, 상기 곱셈은 오른쪽이 아닌 왼쪽에서 시작하여 기록되었다.
이 예를 염두에 두면, 11001101110 나누기(by) 1001001의 모듈러스의 계산의 예가 제공된다. 여기서, 나누기 계산은 다음과 같이 쓰여진다:
Figure 112010081574853-pct00008
이들 두 계산들은 행렬들에서 유사성들을 지적하는 이러한 방식으로 제시된다. 바로 명백해지는 바와 같이, 우측의 수들은 부분합들이다.
상술된 두 계산들을 참조하면, 한가지 차이점은 상기 나눗셈 XOR들이 m+1 비트수를 산출하는 반면, 곱셈 XOR들은 m 비트수를 산출한다는 점이다. 그러나, 이 차이점을 보상하는 것이 가능하다. 생성기 다항식은 리딩 비트가 항상 "1"이라는 특징을 가진다. 따라서, 생성기 다항식의 이러한 특징을 이용하는 것이 가능하다. 예를 들어, 다음 알고리즘에 의해 m-비트 XOR들을 사용하는 것이 참작된다: (1) 부분합의 리딩 비트가 1인 경우, 나머지 다항식의 최저 m개 비트를 가지는 나머지 비트들을 XOR하고, (2) 상기 리딩 비트를 영으로 한다(zero).
상기 두 계산들 간의 주요 차이점은 XOR을 실행할지의 여부의 선택이다. 곱셈의 경우에 있어서, 피승수의 i번째 극좌(leftmost) 비트가 사용된다. 나머지의 경우에 있어서, 현재 나머지의 극좌 비트가 사용된다.
좌측 조정/영 채움( Left Adjust / Zero Fill )
본 발명은 계산의 간략화를 참작한다. 간략화의 목적으로, 피승수들, 곱들, 나머지 다항식들을 포함하는, 내포된 모든 수들이 레지스터들의 최상위 비트("MSB")들에 저장된다고 가정된다. 추가적으로, 레지스터 내의 모든 미사용된 비트들이 영이 된다고 가정된다. 그 결과, 수 101101가 16비트 레지스터에 저장되는 경우, 레지스터 컨텐츠는 1011_0100_0000_000이 된다. 이것이 반드시 필수적이지는 않지만, 이는 나머지를 계산하는데 요구되는 로직을 간략화하는데, 왜냐하면, 리딩 디지트(digit)를 식별하기 위해 어떠한 추가적인 명령을 실행(또는 어떠한 추가적인 작업을 수행)하는 것이 필수적이지 않게 되기 때문이다.
모든 수들이 제로 패딩(zero padded)되므로, m은 gfmul 연산에 대한 입력으로서 요구되지는 않는다. gmful 연산은 최대 수의 XOR 단계들을 수행하며, 상기 다항식의 참 길이와 하드웨어에 의해 지원되는 최대 다항식 길이 사이의 임의의 비트들이 영일 것이므로, 추가적인 XOR 단계들은 결과에 0을 기여할 것이다.
gfnorm 연산에 대해, 2m-1 비트 다항식을 m 비트 다항식으로 감소시키기 위해 m-1번의 XOR 단계들을 수행해야 한다.
의사-코드
아래의 코드 세그먼트 #1은 8의 최댓값 m에 대한 통일된 gfnorm/gfmul 명령들을 구현하도록 참작되는 의사-코드의 일 실시예를 제시한다. gfmul 명령에 대한 입력들이 a 및 b이고, 결과가 t이며, gfnorm 명령에 대한 입력들이 a, b, 및 N이고 결과가 t라고 가정된다. 인덱스들은 좌측-우선(left-first)이다(즉, 0이 레지스터의 MSB이다).
코드 세그먼트 #1
Figure 112010081574853-pct00009
기본(underlying) 로직은 동일하며 오직 제어들만이 상이하다는 점이 명백해야 한다.
확장
전술된 기본 연산은 몇가지 상이한 방식들로 수정될 수 있다. 예를 들어, 기본적인 예에 추가될 수 있는 연산들은: (1) gfmac 명령, (2) 벡터, 및 (3) 벡터-감소를 포함한다. gfmac 명령은 3개의 입력들을 가지는 연산이다. gfmac 명령은 자신의 입력들 중 둘의 곱을 계산하고, 3개의 입력들을 이용하여 상기 곱을 XOR 시켜서, 이에 의해 결과를 산출한다. 벡터는 벡터/SIMD 프로세서이다. 벡터에 대해, gfmul/gfnorm/gfmac 명령들의 벡터/SIMD 등가물들을 추가하고, 이들 명령들의 곱들을 병렬로 수행하는 것은 간단하다(straight-forward). 벡터-감소는 감소 유닛을 이용하여 벡터/SIMD 프로세서에서 실행된다. 여기서, 다수의 gfmul 연산들을 병렬로 수행하고, 결과들을 누산기와 같은 스칼라 타겟에 기록하기 전에 모든 결과들을 함께 XOR시키는 연산을 추가하는 것이 참작된다.
본 발명은 하드웨어 블록의 실시예들 및 방법의 실시예들과 연관하여 이제 설명될 것이며, 상기 실시예들 모두는 여기에 포함된다. 이 논의에 관련하여, 도 1-5에 대한 참조가 이루어진다.
본 발명의 방법의 일 실시예는 갈루아 필드 곱을 참작한다. 참조 번호 10이 제공되는 상기 방법은 도 1 및 2에 예시된다.
상기 방법은 12에서 시작한다. 이후, 14에서, 상기 방법은 제 1 명령을 실행한다. 상기 제 1 명령의 실행(14)은 3개의 연산들을 포함하는데, 상기 연산들 중 첫번째는 제 1 입력의 수신(16)이다. 제 1 입력은 제 1 변수를 포함한다. 제 1 명령의 실행(14)은 또한 제 2 입력의 수신(18)을 포함한다. 상기 제 2 입력은 제 2 변수를 포함한다. 상기 제 1 명령의 실행은 추가적으로, 상기 제 1 및 제 2 입력들을 사용하는, GF(2m)상에서의 다항식 곱셈의 수행(20)을 포함한다. 상기 다항식의 실행(20)의 결과로서, 제 1 명령의 실행(14)은 곱을 산출한다. 상기 곱은 제 2 명령의 실행(24)을 위한 입력들 중 하나(즉, 제 3 입력)가 될 수 있으며, 이는 도 2를 참조하여 논의된다. 도 1은 트랜지션 블록(22)을 포함하며, 이는 상기 방법(10)이 도 2에 계속됨을 표시한다.
도 2는 방법(10)의 나머지를 상세화한다. 상기 방법(10)은 제 2 명령의 실행(24)을 계속한다. 도 2에 상세화된 바와 같이, 제 2 명령을 구성하는 4개의 동작들이 존재한다. 상기 4개의 연산들 중 첫번째는 26에 있으며, 여기서 방법(10)은 제 1 명령으로부터의 곱일 수 있는 제 3 입력을 수신한다. 28에서, 방법(10)은 상기 곱에 대해 연산할 미리 결정된 생성기 다항식인 제 4 입력을 수신한다. 30에서, 방법(10)은 상기 곱에 대한 상기 미리 결정된 생성기 다항식의 연산을 제한하는, 상기 미리 결정된 생성기 다항식의 길이인, 제 5 입력을 수신한다. 32에서, 방법(10)은 상기 길이에 의해 제한되는 미리 결정된 생성기 다항식을 통해, 제수(divisor)에 대한 곱의 모듈러스를 계산한다. 방법(10)은 34에서 종료한다.
방법(10)에 대한 한가지 참작되는 변형에 있어서, 제 1 명령은 gfmul 명령을 포함하고, 제 2 명령은 gfnorm 명령을 포함한다.
방법(10)에 대한 또다른 참작되는 변형에 있어서, 제 1 변수는 피승수 1을 포함하고, 제 2 변수는 피승수 2를 포함한다.
상기 길이가 정수 m이고, 상기 곱이 2m-1 비트의 길이가 되도록 방법(10)이 실행될 수 있다는 점 역시 참작된다. 이러한 방법에 일치하도록, 다항식 곱셈은 m-비트 곱셈일 수 있다. 따라서, 제수는 m+1 비트의 길이가 될 수 있다. 한가지 대안적인 실시예에서, 상기 길이는 정수 m-1이라는 점이 참작된다.
위에서 주지된 바와 같이, 제 2 명령이 제 1 명령의 빈도보다 더 적은 빈도로 실행되도록, 방법 10은 14에서 제 1 명령을, 그리고 24에서 제 2 명령을 실행할 것이라는 점이 참작된다. 이것은 단계(14)의 다수의 실행들의 결과가 제 3 출력으로서 단계(24)로 송신되기 전에 함께 XOR되는 경우 발생한다.
본 발명의 또다른 참작되는 실시예에서, 방법(10)은 제 1 명령들의 미리 결정된 수인 n번의 곱들에 대한 합산이 이루어지는 동작을 포함할 수 있다. 이 참작되는 실시예에서, 최종 모듈러스는 제 1 명령들의 미리 결정된 수의 곱들의 합산 이후에 실행될 수 있다. 명백해야 하는 바와 같이, 이 실시예에서 n은 정수이다.
위에서 표시되는 바와 같이, 제 1 및 제 2 입력들에 대한 값들이 대응하는 레지스터들 내의 최상위 비트들에 저장되도록 방법(10)이 실행될 수 있다는 점이 참작된다.
추가적으로, 현재 나머지의 리딩 비트가 1과 동일한지의 여부를 평가함으로써 제 2 명령(24)이 수정될 수 있다는 점이 참작된다. 현재 나머지의 리딩 비트가 1과 동일한 경우, 제 2 명령(24)은 제수의 적어도 한번의 감산을 수행한다. 그 결과, 제 2 명령(24)은 나머지를 산출할 수 있다. 상기 나머지에 대한 값들은 대응하는 레지스터 내의 최상위 비트들에 저장될 수 있다.
대안적으로, 방법(10)은 제 1 입력 및 제 2 입력 간의 비교를 포함할 수 있다. 상기 비교 이후, 방법(10)은 제 1 또는 제 2 입력들 중 하나 내의 미리 결정된 대응하는 비트가 1과 동일한지의 여부를 평가할 수 있다. 제 1 또는 제 2 입력들 중 하나 내의 미리 결정된 대응하는 비트가 1과 동일한 경우, 방법(10)은 제 1 또는 제 2 입력들 중 적어도 하나에 대해 적어도 한번의 가산을 실행할 수 있다. 그 결과, 방법(10)은 결과 곱을 산출할 것이다. 결과 곱에 대한 값들은 대응하는 레지스터 내의 최상위 비트들에 저장될 수 있다.
한가지 참작되는 변형에 있어서, 대응하는 레지스터 내의 모든 미사용 비트들은 영이 될 수 있다. 또다른 참작되는 변형에 있어서, 제 1 변수, 제 2 변수, 길이, 곱 및 제수 중 적어도 하나는 좌측-시프트되는 데이터를 포함할 수 있다.
또한, 미리 결정된 생성기 다항식의 리딩 비트가 제 4 입력으로부터 배제되고 이에 의해 m 비트의 길이를 가지는 제 4 변수를 생성하도록 방법(10)을 수정하는 것이 참작된다.
도 3 및 도 4를 참조하면, 본 발명은 또한 하드웨어 블록들(36 및 38)을 각각 포함한다. 하드웨어 블록(36)은 gfmul 로직에 대한 하나의 참작되는 실시예를 예시한다. 하드웨어 블록(38)은 gfnorm 로직에 대한 하나의 참작되는 실시예를 제공한다. 이들 두 실시예들은 본원의 범위에 있는 것으로 참작되는 많은 하드웨어 블록들 중 단지 둘(36,38) 만을 예시하는 것으로 의도된다.
도 3에 주지되는 바와 같이, 하드웨어 블록(36)은 N개의 계산 스테이지 블록들(48, 50, 및 52)을 포함한다. 이들 계산 스테이지 블록들(48, 50, 52) 각각은 이전의 계산 스테이지 블록에 의해 산출되는 중간값(intermediate value)을 판독하고, 다음 계산 스테이지 블록에 의해 사용(consumption)될 중간값을 기록한다. 계산 스테이지 블록들에 의해 사용되는 값들은 도면에서 46, 54, 56 및 58로 표시된다. 값(58)은 하드웨어 블록(36)의 출력이다. 계산 스테이지 블록들(48, 50, 52) 각각은 가수 값(40) 및 길이 값(44)을 판독한다. 하드웨어 블록(36)은 추가적인 소프트웨어 명령들을 가지고, 또는 추가적인 소프트웨어 명령들 없이, 특정 명령들을 실행하도록 구성되는 프로세서, 예를 들어, 반도체 컴포넌트가 되도록 의도된다. 당업자에 의해 이해되어야 하는 바와 같이, 이는 매우 다양한 디바이스들을 포함할 수 있다.
도 3을 계속 참조하면, 이 도면은 블록이 gmful 로직을 실행하기 위해 어떻게 접속되는지를 표시한다. 그것은 제 1 입력(40) 및 제 2 입력(42)을 포함한다. 제 1 입력(40)은 피승수1 변수일 수 있는 제 1 변수를 포함하는 신호들을 수신하는 컴포넌트 또는 접속이다. 제 2 입력(42)은 피승수2 변수와 같은 제 2 변수를 수신하는 컴포넌트 또는 접속일 수 있다.
도 3에 예시된 바와 같이, 가수 값(44)은 N개의 영들에 의해 프리펜딩되는(prepended) 제 1 입력값(40)으로 세팅된다. 상기 가수 값(44)은 제 1 계산 스테이지 블록(48), 제 2 계산 스테이지 블록(50), 및 제 3 계산 스테이지 블록(52)에 제공된다. 추가적으로, 중간값(46)이 제 1 계산 스테이지 블록(48)에 제공된다. 상기 중간값(46)은 이 예시에서 0으로 세팅된다. 중간값(46)은, 하드웨어 블록(36)에 의해 요구될 때, 0이 아닌 값으로 세팅될 수 있다는 점에 유의한다.
도 3으로부터 명백한 바와 같이, 각각의 계산 스테이지(48, 50, 52)는 제 2 입력(38)의 적어도 한 비트를 판독한다. 다시 말해, 제 2 입력(38)은 데이터를 계산 스테이지들(48, 50, 52) 각각에 제공한다. 길이값(44)은 계산 스테이지들의 수와 등가인 N으로 세팅된다. 도 3에서 주지되는 바와 같이, 컴퓨터 스테이지들은 0...N-1로 넘버링된다. i번째 스테이지는 최상위 비트로 시작하는 i번째 비트를 판독할 것이다. 따라서, 계산 스테이지#0(48)는 MSB 비트(60)를 판독하고, 계산 스테이지#1(50)는 그 다음의 MSB 비트(62)를 판독하고, 마지막 스테이지(52)는 N번째 최상위 비트(64)를 판독한다.
이제, gfnorm 로직에 대한 하드웨어 블록(38)을 다이어그램으로 도시하는(diagram) 도 4에 대한 참조가 이루어진다. 바로 명백한 바와 같이, 도 3에 예시된 하드웨어 블록(36)과 하드웨어 블록(38) 간의 몇 가지 유사성들이 존재한다.
도 4에서, 계산 스테이지들은 66, 68, 70으로 넘버링된다. gfnorm 로직 블록(38)은 피제수들(dividend)(일반적으로, gfmul의 곱)을 홀딩하는 제 3 입력(72), 제수(일반적으로, 생성기 다항식)인 제 4 입력(74), 및 일반적으로 생성기 다항식의 길이보다 2만큼 더 작은 단계들의 수인 제 5 입력(76)을 포함한다. 가수 값(78)은 제 4 입력(74)으로부터 카피된다. 초기 중간값(80)은 제 3 입력으로부터 카피된다. 길이값(82)은 제 5 입력(76)으로부터 카피된다. 또한 도시되는 바와 같이, 중간값(84)은 계산 스테이지 #1(68)로 입력된다. 유사하게, 중간값(86)은 계산 스테이지 #N-1(70)로 입력된다. 출력은 참조 번호(88)로 표기된다.
도 5는 계산 스테이지 블록들(48, 50, 52, 66, 68, 70)에 대한 하나의 참작되는 실시예의 상세내용을 제공한다. 도 3 및 4에 도시되는 바와 같이, 각각의 계산 스테이지 블록(48, 50, 52, 66, 68, 70)은 합산된 값(90), 중간값(92) 및 길이(94)를 판독한다. 추가적으로, gfmul에 대해 구성되는 경우, 계산 스테이지 블록은 가산-비트(96)를 판독한다. 중간값은 하드웨어 블록(98)에서 1만큼 좌측-시프트되어, 값 시프트된 값(100)이 된다. 이후 이 값은 합산된 값(90)과 상기 시프트된 값을 XOR시키는 XOR 블록(102)에 제공된다. 리딩 부호 로직 유닛(104)은 제 1 선택값(106)을 생성한다. gfnorm 명령에 대해 구성되는 경우, 제 1 선택값(106)은 중간값(92)의 MSB(107)이다. gfmul 명령에 대해 구성되는 경우, 제 1 선택값(106)은 가산-비트(96)이다. 제 1 선택값(106)이 1인 경우, 제 1 멀티플렉서(108)는 XOR의 XOR-결과(110)를 선택한다. 그렇지 않은 경우, 제 1 멀티플렉서(108)는 시프트된-값(100)을 선택하여 제 1 먹스(mux) 결과(112)를 생성한다. 길이 비교 로직(114)은 제 2 선택값(116)을 생성한다. 제 2 선택값(116)은, i가 제공되는 길이(94)보다 작은 경우, i번째 계산 스테이지에 대해 1이다. 제 2 선택 먹스(118)는, 제 2 선택값(116)이 1인 경우 제 1 먹스 결과(112)를 선택하고, 그렇지 않은 경우, 중간값(92)을 선택하여 출력 중간값(120)을 산출한다. 당업자에 의해 이해되어야 하는 바와 같이, 다른 변형들 역시 참작된다.
전술내용으로부터 명백해야 하는 바와 같이, 도 3,4 및 5에 설명되는 하드웨어 블록들이 병렬 프로세싱을 위해 복제될 수 있다는 점이 참작된다. 만약 그렇다면, 이들 복제물들은 서로 병렬로 동작되는 것으로 참작된다. 이 실시예에 대해, 상기 하드웨어 블록들 중 임의의 하드웨어 블록은 병렬 gfmul 로직들의 개별 로직들로부터의 결과들을 합산하여 합산된 결과를 산출하는 합산 로직을 포함할 수 있다. 상기 합산된 결과를 저장하기 위해 스칼라 레지스터가 사용될 수 있다. 상기 스칼라 레지스터는 누산기일 수 있다. 병렬 프로세싱은 SIMD 프로세서를 통해 수행될 수 있다.
위에서 주지된 바와 같이, 본 발명은 위에서 전술된 특정 실시예들에만 제한되는 것으로 의도되지 않는다. 반면, 당업자들은 본 발명의 범위에서 벗어남이 없이 사용될 수 있는 실시예들에 대한 다수의 등가물들 및 변형들이 존재한다는 점을 쉽게 인지해야 한다. 상기 변형들 및 등가물들은 본 발명의 범위 내에 있는 것으로 의도된다.

Claims (30)

  1. 프로세서에 의해 수행되는, 갈루아 필드(galois field) 곱을 수행하기 위한 방법으로서,
    갈루아 필드의 멤버(member)인 다항식의 복수의 계수들을 포함하는 제 1 입력을 수신하는 단계, 상기 갈루아 필드의 멤버인 다항식의 복수의 계수들을 포함하는 제 2 입력을 수신하는 단계, 및 상기 제 1 및 제 2 입력들을 곱함으로써 곱을 생성하는 단계를 포함하는, 제 1 명령을 실행하는 단계; 및
    다항식의 복수의 계수들을 포함하는 제 3 입력을 수신하는 단계, 상기 갈루아 필드의 미리 결정된 생성기 다항식을 나타내는 복수의 계수들을 포함하는 제 4 입력을 수신하는 단계, 상기 미리 결정된 생성기 다항식의 길이를 포함하는 제 5 입력을 수신하는 단계, 및 제수(divisor)에 대한 상기 제 3 입력의 모듈러스(modulus)를 생성하는 단계를 포함하는, 제 2 명령을 실행하는 단계를 포함하고,
    상기 모듈러스는 상기 제 4 입력을 사용하여 상기 제 3 입력에 대한 다수번의 연산들을 수행함으로써 생성되고, 상기 연산들의 횟수는 상기 제 5 입력에 의해 제한되는, 갈루아 필드 곱을 수행하기 위한 방법.
  2. 제1항에 있어서,
    상기 제 3 입력은 상기 제 1 명령에 의해 생성된 곱을 포함하는,
    갈루아 필드 곱을 수행하기 위한 방법.
  3. 제1항에 있어서,
    상기 제 1 입력, 상기 제 2 입력, 상기 제 4 입력, 상기 제 5 입력 및 상기 제수 중 적어도 하나는 데이터의 리딩(leading) 비트가 대응하는 레지스터의 최상위 비트에 저장되도록 구성되기 위해 좌측-시프트되는 데이터를 포함하고,
    상기 대응하는 레지스터 내의 미사용 비트들은 영(zero)들로 채워지는,
    갈루아 필드 곱을 수행하기 위한 방법.
  4. 제3항에 있어서,
    상기 미리 결정된 생성기 다항식의 리딩 계수는 상기 제 4 입력으로부터 배제되는,
    갈루아 필드 곱을 수행하기 위한 방법.
  5. 제1항에 있어서,
    상기 제 5 입력은 상기 제 1 및 제 2 입력들의 계수들의 수와 동일한 수를 포함하는,
    갈루아 필드 곱을 수행하기 위한 방법.
  6. 제1항에 있어서,
    상기 제 5 입력은 상기 제 1 및 제 2 입력들의 계수들의 수보다 하나(1) 더 작은 수와 동일한 수를 포함하는,
    갈루아 필드 곱을 수행하기 위한 방법.
  7. 제1항에 있어서,
    상기 제 2 명령은 상기 제 1 명령의 빈도보다 더 적은 빈도로 실행되는,
    갈루아 필드 곱을 수행하기 위한 방법.
  8. 제1항에 있어서,
    상기 제 3 입력은 상기 제 1 명령들의 미리 결정된 수의 곱들의 합을 포함하는,
    갈루아 필드 곱을 수행하기 위한 방법.
  9. 제1항에 있어서,
    상기 제 1 및 제 2 입력들에 대한 값들은 대응하는 레지스터들 내의 최상위 비트들에 저장되는,
    갈루아 필드 곱을 수행하기 위한 방법.
  10. 제1항에 있어서,
    상기 모듈러스를 생성하는 단계는,
    현재의 나머지의 리딩 비트가 1과 동일한지를 평가하는 단계;
    상기 현재의 나머지의 리딩 비트가 1과 동일하면, 상기 제수의 갈루아 필드 상에서 적어도 한번의 감산을 실행하는 단계; 및
    나머지를 생성하는 단계를 더 포함하고,
    상기 나머지에 대한 값들은 대응하는 레지스터 내의 최상위 비트들에 저장되는,
    갈루아 필드 곱을 수행하기 위한 방법.
  11. 제1항에 있어서,
    상기 곱을 생성하는 단계는,
    상기 제 1 입력을 상기 제 2 입력과 비교하는 단계;
    상기 제 1 또는 제 2 입력들 중 하나 내의 미리 결정된 대응하는 비트가 1과 동일한지를 결정하는 단계;
    상기 제 1 또는 제 2 입력들 중 하나 내의 미리 결정된 대응하는 비트가 1과 동일하면, 상기 제 1 또는 제 2 입력들 중 적어도 하나에 대한 갈루아 필드 상에서 적어도 한번의 가산을 실행하는 단계; 및
    결과적인 곱을 생성하는 단계를 더 포함하고,
    상기 결과적인 곱에 대한 값들은 대응하는 레지스터 내의 최상위 비트들에 저장되는,
    갈루아 필드 곱을 수행하기 위한 방법.
  12. 제9항에 있어서,
    상기 대응하는 레지스터 내의 모든 미사용 비트들은 영(zero)들로 채워지는,
    갈루아 필드 곱을 수행하기 위한 방법.
  13. 제10항에 있어서,
    상기 대응하는 레지스터 내의 모든 미사용 비트들은 영들로 채워지는,
    갈루아 필드 곱을 수행하기 위한 방법.
  14. 제11항에 있어서,
    상기 대응하는 레지스터 내의 모든 미사용 비트들은 영들로 채워지는,
    갈루아 필드 곱을 수행하기 위한 방법.
  15. 갈루아 필드 곱을 수행하도록 구성되는 프로세서로서,
    갈루아 필드의 멤버(member)인 다항식의 복수의 계수들을 수신하도록 구성되는 제 1 입력, 상기 갈루아 필드의 멤버인 다항식의 복수의 계수들을 수신하도록 구성되는 제 2 입력, 및 상기 제 1 및 제 2 입력들을 곱함으로써 곱을 출력하도록 구성되는 다항식 곱셈기 회로를 포함하는, 제 1 명령을 실행하도록 구성되는 제 1 회로; 및
    다항식의 복수의 계수들을 수신하도록 구성되는 제 3 입력, 상기 갈루아 필드의 미리 결정된 생성기 다항식을 나타내는 복수의 계수들을 수신하도록 구성되는 제 4 입력, 상기 미리 결정된 생성기 다항식의 길이를 수신하도록 구성되는 제 5 입력, 및 제수에 대한 상기 제 3 입력의 모듈러스(modulus)를 출력하도록 구성되는 모듈로(modulo) 계산 회로를 포함하는, 제 2 명령을 실행하도록 구성되는 제 2 회로를 포함하고,
    상기 모듈러스는 상기 제 4 입력을 사용하여 상기 제 3 입력에 대한 다수번의 연산들을 수행함으로써 생성되고, 상기 연산들의 횟수는 상기 제 5 입력에 의해 제한되는, 갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  16. 제15항에 있어서,
    상기 제 3 값은 상기 제 1 회로로부터의 곱인,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  17. 제15항에 있어서,
    복수의 스테이지들을 포함하는, 상기 다항식 곱셈기 회로 및 상기 모듈로 계산 회로 모두에 의해 사용되도록 구성되는 스테이지 계산 회로를 더 포함하고,
    상기 스테이지 계산 회로는,
    중간값을 수신하도록 구성되는 제 6 입력; 및
    가수 값(addend value)을 수신하도록 구성되는 제 7 입력을 더 포함하고,
    배타적 OR 결과를 산출하기 위해 배타적 OR 연산이 상기 중간값 및 상기 가수 값에 대해 수행되고,
    출력 중간값을 산출하기 위해 상기 배타적 OR 결과가 좌측-시프트되고,
    상기 출력 중간값은 다음 스테이지에 입력으로서 제공되는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  18. 제17항에 있어서,
    제 1 스테이지의 중간 입력값을,
    상기 프로세서가 상기 제 1 명령을 실행하고 있는 경우 0으로, 또는
    상기 제 2 명령을 실행하고 있는 경우 상기 제 3 입력으로
    세팅하도록 구성되는 제 1 선택 회로를 더 포함하는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  19. 제17항에 있어서,
    상기 가수의 값을,
    상기 프로세서가 상기 제 1 명령을 실행하고 있는 경우 현재 스테이지를 표시하는 수에 대응하는 영들로 프리펜딩(prepend)되는 상기 제 1 입력으로, 또는
    상기 프로세서가 상기 제 2 명령을 실행하고 있는 경우 상기 제 4 입력으로
    세팅하도록 구성되는 제 2 선택 회로를 더 포함하는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  20. 제17항에 있어서,
    상기 스테이지의 현재 중간 입력의 리딩 비트가 1과 동일한지를 결정하도록 구성되는 각각의 스테이지 내의 리딩 비트 회로를 더 포함하고,
    상기 스테이지 수가 상기 제 5 입력보다 더 작은 경우, 그리고 상기 프로세서가 상기 제 2 명령을 실행하고 있는 경우, 상기 스테이지 계산 회로는 상기 가수 및 상기 중간값에 대해 배타적 OR 연산을 수행하도록 구성되는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  21. 제18항에 있어서,
    리딩 비트로부터 카운트되는, 상기 제 2 입력의 현재 스테이지를 표시하는 수에 대응하는 비트가 1인지를 결정하도록 구성되는 각각의 스테이지 내의 곱셈 비트 회로를 더 포함하고,
    상기 프로세서가 상기 제 1 명령을 실행하고 있는 경우, 상기 스테이지 계산 회로는 상기 가수 및 상기 중간값에 대해 배타적 OR 연산을 수행하도록 구성되는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  22. 제17항에 있어서,
    상기 스테이지 수가 상기 제 5 입력보다 작은지를 결정하도록 구성되는 각각의 스테이지 내의 시프트 회로를 더 포함하고,
    상기 프로세서가 상기 제 2 명령을 실행하고 있는 경우, 상기 스테이지 계산 회로는 상기 배타적 OR 결과를 시프트하도록 구성되는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  23. 제17항에 있어서,
    상기 프로세서가 상기 제 1 명령을 실행하고 있는 경우, 상기 배타적 OR 결과를 시프트하도록 구성되는 각각의 스테이지 내의 곱 시프트 회로를 더 포함하는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  24. 제15항에 있어서,
    제 1 명령을 실행하도록 구성되는 상기 제 1 회로 및 제 2 명령을 수행하도록 구성되는 상기 제 2 회로는 병렬 프로세싱을 위해 복제되며, 병렬로 실행되는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  25. 제24항에 있어서,
    합산된 결과를 산출하기 위해 병렬로 실행되는 각각의 복제된 제 1 회로의 출력을 합산하도록 구성되는 합산 회로를 더 포함하는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  26. 제25항에 있어서,
    상기 합산된 결과를 저장할 스칼라 레지스터를 더 포함하는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  27. 제26항에 있어서,
    상기 스칼라 레지스터는 누산기인,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  28. 제24항에 있어서,
    상기 병렬 프로세싱은 SIMD 프로세서를 통해 수행되는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  29. 갈루아 필드 곱을 수행하도록 구성되는 프로세서로서,
    갈루아 필드의 멤버인 다항식의 복수의 계수들을 포함하는 제 1 입력을 수신하기 위한 수단, 상기 갈루아 필드의 멤버인 다항식의 복수의 계수들을 포함하는 제 2 입력을 수신하기 위한 수단, 및 상기 제 1 및 제 2 입력들을 곱함으로써 곱을 생성하기 위한 수단을 포함하는, 제 1 명령을 실행하기 위한 수단; 및
    다항식의 복수의 계수들을 포함하는 제 3 입력을 수신하기 위한 수단, 상기 갈루아 필드의 미리 결정된 생성기 다항식을 나타내는 복수의 계수들을 포함하는 제 4 입력을 수신하기 위한 수단, 상기 미리 결정된 생성기 다항식의 길이를 포함하는 제 5 입력을 수신하기 위한 수단, 및 제수에 대한 상기 제 3 입력의 모듈러스를 생성하기 위한 수단을 포함하는, 제 2 명령을 실행하기 위한 수단을 포함하고,
    상기 모듈러스는 상기 제 4 입력을 사용하여 상기 제 3 입력에 대한 다수번의 연산들을 수행함으로써 생성되고, 상기 연산들의 횟수는 상기 제 5 입력에 의해 제한되는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
  30. 제29항에 있어서,
    상기 제 3 입력은 상기 제 1 명령으로부터의 곱을 포함하는,
    갈루아 필드 곱을 수행하도록 구성되는 프로세서.
KR1020107027863A 2008-05-12 2009-05-07 프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현 KR101616478B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5248208P 2008-05-12 2008-05-12
US61/052,482 2008-05-12

Publications (2)

Publication Number Publication Date
KR20110010771A KR20110010771A (ko) 2011-02-07
KR101616478B1 true KR101616478B1 (ko) 2016-04-28

Family

ID=41319003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107027863A KR101616478B1 (ko) 2008-05-12 2009-05-07 프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현

Country Status (6)

Country Link
US (1) US9146708B2 (ko)
EP (1) EP2283417B1 (ko)
JP (1) JP5456766B2 (ko)
KR (1) KR101616478B1 (ko)
CN (2) CN102084335B (ko)
WO (1) WO2009140142A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9526419B2 (en) * 2009-09-01 2016-12-27 Adidas Ag Garment for physiological characteristics monitoring
US9326705B2 (en) * 2009-09-01 2016-05-03 Adidas Ag Method and system for monitoring physiological and athletic performance characteristics of a subject
US20110054289A1 (en) * 2009-09-01 2011-03-03 Adidas AG, World of Sports Physiologic Database And System For Population Modeling And Method of Population Modeling
US9545222B2 (en) * 2009-09-01 2017-01-17 Adidas Ag Garment with noninvasive method and system for monitoring physiological characteristics and athletic performance
US8475371B2 (en) * 2009-09-01 2013-07-02 Adidas Ag Physiological monitoring garment
US8971936B2 (en) 2009-09-01 2015-03-03 Adidas Ag Multimodal method and system for transmitting information about a subject
US20110050216A1 (en) * 2009-09-01 2011-03-03 Adidas Ag Method And System For Limiting Interference In Magnetometer Fields
US20110054290A1 (en) * 2009-09-01 2011-03-03 Adidas AG, World of Sports Method and System for Interpretation and Analysis of Physiological, Performance, and Contextual Information
US9186136B2 (en) 2009-12-09 2015-11-17 Covidien Lp Surgical clip applier
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
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
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
CN103729162A (zh) * 2012-10-15 2014-04-16 北京兆易创新科技股份有限公司 伽罗瓦域运算系统和方法
KR101511909B1 (ko) * 2014-07-07 2015-04-14 한국과학기술원 적외선 코드를 이용한 원거리 디바이스 간 컨텐츠 이동 시스템 및 방법
CN104407837B (zh) * 2014-12-16 2017-09-19 中国电子科技集团公司第三十八研究所 一种实现伽罗瓦域乘法的装置及其应用方法
IL239880B (en) * 2015-07-09 2018-08-30 Kaluzhny Uri Simplified montgomery multiplication
CN105024707B (zh) * 2015-07-31 2018-05-11 福建联迪商用设备有限公司 一种rs纠错解码方法
US10110376B1 (en) 2016-03-28 2018-10-23 Secturion Systems, Inc. Systolic parallel Galois hash computing device
US11379230B2 (en) 2018-05-30 2022-07-05 Lg Electronics, Inc. Modulus calculation that leverages computer architecture and/or operand clustering
CN113946312A (zh) * 2019-11-21 2022-01-18 华为技术有限公司 一种乘法器及算子电路
US11507813B2 (en) * 2020-06-01 2022-11-22 Arm Limited Modulo operation unit

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1985003371A1 (en) * 1984-01-21 1985-08-01 Sony Corporation Circuit for calculating finite fields
US5396502A (en) * 1992-07-09 1995-03-07 Advanced Hardware Architectures, Inc. Single-stack implementation of a Reed-Solomon encoder/decoder
US5768168A (en) * 1996-05-30 1998-06-16 Lg Semicon Co., Ltd. Universal galois field multiplier
JP3556461B2 (ja) * 1998-03-18 2004-08-18 富士通株式会社 M系列の位相シフト係数算出方式
JP3238128B2 (ja) * 1998-06-02 2001-12-10 松下電器産業株式会社 リードソロモン符号化装置および方法
JP2001194996A (ja) * 2000-01-11 2001-07-19 Toyo Commun Equip Co Ltd 多項式の除算装置
US6760742B1 (en) * 2000-02-18 2004-07-06 Texas Instruments Incorporated Multi-dimensional galois field multiplier
JP2002057586A (ja) * 2000-08-11 2002-02-22 Alps Electric Co Ltd 演算処理装置
US6766345B2 (en) * 2001-11-30 2004-07-20 Analog Devices, Inc. Galois field multiplier system
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
US20030140302A1 (en) * 2002-01-23 2003-07-24 Litwin, Louis Robert Chien search cell for an error-correcting decoder
JP3726966B2 (ja) * 2003-01-23 2005-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 乗算器及び暗号回路
US7162679B2 (en) 2003-12-12 2007-01-09 Analog Devices, Inc. Methods and apparatus for coding and decoding data using Reed-Solomon codes
KR100610367B1 (ko) * 2004-06-19 2006-08-10 삼성전자주식회사 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치
CN101031904A (zh) * 2004-07-13 2007-09-05 3加1科技公司 带有两类子处理器以执行多媒体应用的可编程处理器系统
KR100670780B1 (ko) * 2004-10-29 2007-01-17 한국전자통신연구원 유한체 GF(2^m)에서의 하이브리드 곱셈 연산 장치및 연산 방법
US20060106910A1 (en) * 2004-11-16 2006-05-18 Analog Devices, Inc. Galois field polynomial multiplication
US7512647B2 (en) * 2004-11-22 2009-03-31 Analog Devices, Inc. Condensed Galois field computing system
CN101005346A (zh) * 2006-01-19 2007-07-25 华为技术有限公司 一种时频资源的分配方法
RU2011107568A (ru) * 2011-03-01 2012-09-10 ЭлЭсАй Корпорейшн (US) Устройство (варианты) и способ генерирования конструкции комбинационного умножителя конечного поля малой глубины

Also Published As

Publication number Publication date
CN102084335B (zh) 2015-01-07
KR20110010771A (ko) 2011-02-07
CN102084335A (zh) 2011-06-01
US20110153701A1 (en) 2011-06-23
US9146708B2 (en) 2015-09-29
CN104391675B (zh) 2020-03-24
CN104391675A (zh) 2015-03-04
JP5456766B2 (ja) 2014-04-02
WO2009140142A1 (en) 2009-11-19
EP2283417A1 (en) 2011-02-16
EP2283417B1 (en) 2014-01-29
JP2011520404A (ja) 2011-07-14
EP2283417A4 (en) 2013-01-09

Similar Documents

Publication Publication Date Title
KR101616478B1 (ko) 프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현
WO2011142133A1 (ja) 誤り訂正符号処理方法及びその装置
KR101027855B1 (ko) Crc 에러 검출 방법, 장치, 시스템 및 crc 에러 검출방법을 수행하는인스트럭션 세트를 포함하는 머신판독가능한 매체
US8229993B2 (en) Method for performing decimal division
US9928037B2 (en) Modulo calculation using polynomials
JP2004326112A (ja) マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ
Cho et al. Strength-reduced parallel Chien search architecture for strong BCH codes
Cho et al. Efficient software-based encoding and decoding of BCH codes
US6687725B1 (en) Arithmetic circuit for finite field GF (2m)
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
Rashidi Throughput/area efficient implementation of scalable polynomial basis multiplication
US8099655B1 (en) Galois field multiplier system and method
CN108809323B (zh) 循环冗余校验码的生成方法和装置
JP2004227344A (ja) 乗算器及び暗号回路
US6912558B2 (en) Multiplication module, multiplicative inverse arithmetic circuit, multiplicative inverse arithmetic control method, apparatus employing multiplicative inverse arithmetic circuit, and cryptographic apparatus and error correction decoder therefor
JP2001034167A (ja) 演算装置及び暗号処理装置
JP3239522B2 (ja) データ消失訂正方法とその回路
Popovici et al. Algorithm and architecture for a Galois field multiplicative arithmetic processor
JP4177125B2 (ja) 演算装置及び演算装置の演算方法
Shukla LFSR based versatile divider architectures for BCH and RS error correction encoders
JP2797570B2 (ja) ユークリッドの互除回路
Cho et al. A hardware implementation of word-parallel bit-serial polynomial basis multiplier
Chourasia et al. 18 Years of Redundant Basis Multipliers over Galois Field
JP2797569B2 (ja) ユークリッドの互除回路
Ozturk Low Power Elliptic Curve Cryptography

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee