KR20120077177A - Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법 - Google Patents

Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법 Download PDF

Info

Publication number
KR20120077177A
KR20120077177A KR1020100139042A KR20100139042A KR20120077177A KR 20120077177 A KR20120077177 A KR 20120077177A KR 1020100139042 A KR1020100139042 A KR 1020100139042A KR 20100139042 A KR20100139042 A KR 20100139042A KR 20120077177 A KR20120077177 A KR 20120077177A
Authority
KR
South Korea
Prior art keywords
value
xor
bit
polynomial
pidget
Prior art date
Application number
KR1020100139042A
Other languages
English (en)
Other versions
KR101770122B1 (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 삼성전자주식회사
Priority to KR1020100139042A priority Critical patent/KR101770122B1/ko
Priority to US13/324,322 priority patent/US8898213B2/en
Publication of KR20120077177A publication Critical patent/KR20120077177A/ko
Application granted granted Critical
Publication of KR101770122B1 publication Critical patent/KR101770122B1/ko

Links

Images

Classifications

    • 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
    • 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/40Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
    • G06F7/44Multiplying; Dividing
    • 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
    • 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
    • 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
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

이진 다항식의 나눗셈을 처리하기 위한 방법 및 장치가 제공된다. 연산 장치는 복수 개의 XOR 연산부들을 포함한다. XOR 연산부는 피젯수 다항식의 1 조건 값 비트에 대해 선택적 XOR 연산을 수행한다. 복수 개의 XOR 연산부들이 병렬로 선택적 XOR 연산들을 수행함으로써, 이진 다항식에 대한 나눗셈 연산이 빠르게 수행될 수 있다. 이진 다항식에 대한 나눗셈 연산을 수행하기 위해, 연산 장치와 관련된 SIMD 명령어들이 제공된다. SIMD 명령어들을 사용하는 이진 다항식의 나눗셈 연산 방법이 제공된다.

Description

SIMD 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법{METHOD AND APPARATUS FOR DIVISION OF GALIOS FIELD BINARY POLYNOMIAL EXPRESSION USING SIMD PROCESSOR}
아래의 실시예들은 갈로아 필드 이진 다항식에 대한 나눗셈을 수행하기 위한 방법 및 장치에 관한 것이다.
SIMD 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법이 제시된다.
갈로아 필드(Galios field) 이진(binary) 다항식(polynomial expression) 나눗셈(division)은 오류 정정(error correction)을 위한 부호화(coding) 장치 또는 보안(security)을 위한 암호화(encryption) 장치에서 빈번하게 사용되는 연산이다.
갈로아 필드 이진 다항식의 나눗셈에서, 피젯수(dividend) 다항식의 길이가 긴 경우 나눗셈을 처리하기 위해 많은 시간이 소모된다.
처리 시간을 단축하기 위해 ASIC(Application Specific Integrated Circuit)을 이용하여 이진 다항식의 나눗셈을 처리하는 경우, 오류 정정 부호 및 암호화 방식의 변화에 따라 매번 ASIC이 새로 개발되어야 한다.
프로그램(programming) 가능한 프로세서를 사용하여 이진 다항식의 나눗셈을 사용하는 경우, 규격의 변화에 대해서는 유연한 대처가 제공될 수 있지만, 나눗셈의 처리량이 낮기 때문에 적용 범위가 제한한다.
본 발명의 일 실시에는 선택적 XOR 연산을 병렬 수행함으로써 이진 다항식 나눗셈을 연산하는 장치 및 방법을 제공할 수 있다.
본 발명의 일 실시에는 이진 다항식 나눗셈을 처리하기 위한 명령어들을 사용하는 장치 및 방법을 제공할 수 있다.
본 발명의 일측에 따르면, 제1 입력 값 및 제2 입력 값을 수신하여, 상기 제1 입력 값 및 상기 제2 입력 값이 선택적 XOR된 값에 기반하여 출력 값을 생성하는 n 개의 XOR 연산부들 - 상기 n은 2 이상의 정수임 -, 제1 이진 값을 저장하는 제1 저장부 및 제2 이진 값을 저장하는 제2 저장부를 포함하고, 상기 선택적 XOR 연산은 상기 제2 입력 값의 최 상위 비트가 1인 경우 상기 제1 입력 값 및 상기 제2 입력 값을 XOR한 값을 연산 결과로서 생성하고, 상기 제2 입력 값의 최 상위 비트가 0인 경우 상기 제2 입력 값을 연산 결과로서 생성하고, 상기 n 개의 XOR 연산부들 각각의 제1 입력 값은 상기 제1 이진 값이고, 상기 n 개의 XOR 연산부들 중 제1 연산부의 상기 제2 입력 값은 상기 제2 이진 값이고, 상기 n 개의 XOR 연산부들 중 제k 연산부의 제2 입력 값은 제k-1 연산부에 의해 상기 선택적 XOR된 값이 최 상위 비트 방향으로 1 비트 쉬프트된 값이고, 상기 k는 2 이상 n 이하의 정수인, 연산 장치가 제공된다.
상기 n 개의 XOR 연산부들은 병렬로 동작함으로써 SIMD 연산을 수행할 수 있다.
상기 제1 저장부 및 상기 제2 저장부는 상기 연산 장치의 레지스터일 수 있다.
상기 제1 이진 값은 젯수 이진 다항식을 나타내는 값일 수 있고, 상기 제2 이진 값은 피젯수 이진 다항식의 부분을 나타내는 값일 수 있다, 연산 장치.
상기 n 개의 XOR 연산부들 각각은 상기 제2 입력 값의 최 상위 비트가 1이면 상기 제1 입력 값 및 상기 제2 입력 값이 XOR된 값을 출력할 수 있고, 상기 제2 입력 값의 최 상위 비트가 0이면 상기 제2 입력값을 출력하는 선택적 XOR 연산을 수행할 수 있고, 상기 제k 연산부의 제2 입력 값은 상기 제k-1 연산부의 출력 값이 상기 최 상위 비트의 방향으로 1 비트 쉬프트된 값일 수 있다.
상기 제n XOR 연산부들 각각은, 상기 제2 입력 값의 최 상위 비트의 값에 기반하여 상기 제1 입력 값 및 상기 제2 입력 값의 선택적 XOR 연산을 수행함으로써 중간 출력 값을 생성하는 XOR 논리 회로 및 상기 중간 출력 값을 최 상위 비트 방향으로 1 비트 쉬프트함으로써 상기 출력 값을 생성하는 쉬프트 논리 회로를 포함할 수 있고, 상기 n 개의 XOR 연산부들 중 제k 연산부의 제2 입력 값은 제k-1 연산부의 출력 값일 수 있다.
상기 쉬프트 논리 회로는 중간 출력 값을 최 상위 비트 방향으로 1 비트 쉬프트할 수 있고, 상기 쉬프트된 중간 출력 값의 최 하위 비트로서 0을 삽입할 수 있다.
상기 연산 장치는, n 개의 조건 값 판단부들을 더 포함할 수 있고, 상기 n 개의 조건 값 판단부들 중 제m 조건 값 판단부는 상기 n 개의 XOR 연산부들 중 제m XOR 연산부의 상기 제2 입력 값의 최 상위 비트의 값을 검사하고, 상기 최 상위 비트의 값이 1이면 상기 제m XOR 연산부가 상기 제1 입력 값 및 상기 제2 입력 값을 XOR 하는 연산을 수행하도록 제어할 수 있다.
상기 연산 장치는, 상기 n 개의 조건 값 판단부들을 제어하는 연산 제어부를 더 포함할 수 있다.
상기 연산 제어부는 연산 횟수 값 p를 입력 받을 수 있고, 상기 연산 제어부는 상기 n 개의 XOR 연산부들 중 제p XOR 연산부의 상기 출력 값에 기반하여 결과 값을 생성할 수 있다.
상기 연산 제어부는 상기 결과 값을 상기 제2 저장부의 값으로 입력할 수 있다.
상기 연산 제어부는 상기 n 개의 조건 값 판단부들을 제어함으로써 상기 n 개의 XOR 연산부들 중 제1 XOR 연산부 내지 제p XOR 연산부 만이 동작하도록 제어할 수 있다.
본 발명의 다른 측에 따르면, 이진 다항식을 나누는 연산 장치를 사용하는 동작 방법에 있어서, 피젯수 저장부에 피젯수 다항식의 제1 부분이 나타내는 값을 저장하는 제1 로드 단계, 상기 피젯수 저장부에 저장된 값을 젯수 다항식으로 나눈 나머지가 q 비트만큼 상기 피젯수 저장부의 최상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하는 제1 나눗셈 단계, 상기 피젯수 저장부의 값 및 상기 피젯수 다항식의 제2 부분이 나타내는 값의 XOR 된 값으로 상기 피젯수 저장부의 값을 갱신하는 결과 전달 단계 및 상기 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 나눈 나머지가 상기 q 비트만큼 상기 피젯수 저장부의 최상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하는 제2 나눗셈 단계를 포함하고, 상기 제1 부분 및 상기 제2 부분은 상기 피젯수 다항식의 연속된 부분이고, 상기 q는 상기 피젯수 저장부의 비트 길이 및 상기 젯수 다항식의 비트 길이 간의 차인, 연산 장치의 동작 방법이 제공된다.
상기 제1 나눗셈 단계는, 상기 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 a 개의 조건 값 비트만큼 나눈 나머지가 상기 a 비트만큼 상기 피젯수 저장부의 최 상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하는 제1 부분 나눗셈 단계 및 상기 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 b 개의 조건 값 비트만큼 나눈 나머지가 상기 b 비트만큼 상기 피젯수 저장부의 최 상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하는 제2 부분 나눗셈 단계를 포함할 수 있고, 상기 a 및 상기 b의 합은 상기 피젯수 저장부의 비트 길이 이하일 수 있다.
상기 제1 나눗셈 단계는, 하나 이상의 부분 나눗셈 단계들를 포함할 수 있고, 상기 하나 이상의 부분 나눗셈 단계들 중 제d 부분 나눗셈 단계는, 상기 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 ad 개의 조건 값 비트만큼 나눈 나머지가 상기 ad 비트만큼 상기 피젯수 저장부의 최 상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신할 수 있고, 상기 하나 이상의 부분 나눗셈 단계들 각각이 나눗셈 연산에 사용한 상기 조건 값 비트들의 총 합은 상기 피젯수 저장부의 비트 길이일 수 있다.
상기 젯수 다항식은 상기 젯수 저장부에 저장될 수 있고, 상기 피젯수 저장부 및 상기 젯수 저장부는 상기 연산 장치의 레지스터일 수 있다.
상기 결과 전달 단계는, 임시 저장부에 상기 제2 부분이 나타내는 값을 저장하는 제2 로드 단계 및 상기 피젯수 저장부의 값 및 상기 임시 저장부의 값이 XOR된 값으로 상기 피젯수 저장부의 값을 갱신하는 나머지 적용 단계를 포함할 수 있다.
선택적 XOR 연산을 병렬 수행함으로써 이진 다항식 나눗셈을 연산하는 장치 및 방법이 제공된다.
이진 다항식 나눗셈을 처리하기 위한 명령어들을 사용하는 장치 및 방법이 제공된다.
도 1은 본 발명의 일 예에 따른 갈로아 필드 이진 다항식 나눗셈 과정을 설명한다.
도 2는 본 발명의 일 예에 따른 연산 장치의 구조도이다.
도 3은 본 발명의 일 예에 따른 나눗셈 연산의 흐름도이다.
도 4는 본 발명의 일 예에 따른 피젯수 다항식의 분할을 설명한다.
도 5는 본 발명의 일 예에 따른 SIMD 연산부 및 SIMD 레지스터부의 동작을 나타낸다.
도 6은 본 발명의 일 예에 따른 SIMD 연산 결과 사이의 상호 연관성을 설명한다.
도 7은 본 발명의 일 실시예에 따른 복수의 선택적 XOR 연산을 수행하는 연산 장치의 구조도이다.
도 8은 본 발명의 일 예에 따른 쉬프트 논리 회로가 포함된 XOR 연산부를 사용하는 연산 장치의 구조도이다.
도 9는 본 발명의 일 예에 따른 쉬프트 논리 회로가 추가된 연산 장치에서 반복적으로 나눗셈 연산들이 수행될 경우, 일련의 연산들 간에서 전달되는 데이터를 도시한다.
도 10은 본 발명의 일 예에 따른 갈로아 필드 이진 다항식 나눗셈을 의한 SIMD 명령어의 사용법을 설명한다.
도 11은 본 발명의 일 실시예에 따른 연산 장치의 동작 방법의 흐름도이다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 예에 따른 갈로아 필드 이진 다항식 나눗셈 과정을 설명한다.
피젯수(110)는 이진 다항식 "X11+X10+X9+X6"을 이진수(binary number)로 표현한 것이다.
젯수(120)는 이진 다항식 "X4+X2+1"을 이진으로 표현한 것이다.
상기 나눗셈의 몫(130)은 이진 값으로 "11110101"이다. 이진 값 "11110101"은 이진 다항식 "X7+X6+X5+X4+X2+1"을 나타낸다.
상기 나눗셈의 나머지(140)은 이진 값으로 "1111"이다. 이진 값 "1111"은 이진 다항식 " X3+X2+X+1"을 나타낸다.
나눗셈 과정에서, 피젯수의 최 상위 비트(Most Significant Bit; MSB)(112)에서부터 연산의 형태를 결정하는 조건 값이 취해진다.
1) 조건 값이 1이면, 젯수의 MSB 및 조건 값이 같은 열에 있도록, 젯수의 위치가 맞추어진다.
다음으로, 젯수 및 피젯수 중 젯수 다항식과 열이 맞춰진 부분에 대해 베타적 논리 합(exclusive OR; XOR) 연산이 수행된다. XOR 연산은 비트 단위의 XOR 연산이다.
상기의 XOR 연산 및 본 문서의 다른 XOR 연산들은 XOR 벡터(vector) 연산일 수 있다.
XOR 연산에 의해 피젯수를 나타내는 이진 값이 갱신된다.
예컨대, 첫 번째 조건 값에 대한 XOR 연산으로 인해, 피젯수는 "111001000000"에서 "10011000000"으로 갱신된다.
2) 조건 값이 0이면, XOR 연산은 수행되지 않는다. (또는, 피젯수 및 0들로 이루어진 비트들이 XOR되는 것으로 간주될 수 있다.)
3) 1) 또는 2) 다음으로. 현재의 조건 값의 오른 쪽에 위치한 비트가 새로운 조건 값으로 취해진다. 새로 취해진 조건 값에 대하여 전술된 1) 및 2)가 반복된다. 전술된 1) 및 2)를 선택적 XOR 연산으로 명명한다.
전술된 1) 내지 3)의 작업은 조건 값을 포함한 피젯수의 남은 부분 및 젯수의 길이가 동일해질 때까지 반복된다. 즉, 젯수 다항식이 n 비트일 때, 피젯수의 MSB(112)에서부터 젯수의 우측으로부터 n 번째 비트(114)가 순서대로 조건 값으로서 취해진다.
우측으로부터 n 번째 비트(114)가 조건 값으로서 취해지고, 상기 조건 값에 대해 1) 또는 2)가 수행되면, 남은 우측으로부터 n - 1 번째 비트 내지 우측으로부터 1 번째 비트가 나머지(140)가 된다.
갈로아 필드 이진 다항식 나눗셈은, 전술된 것과 같이, 일련의 순차적인 XOR 연산들로 이루어진다. XOR 연산들은 상호 연관성을 갖는다. 즉, 한 XOR 연산의 결과는 다음 XOR 연산의 결과에 영향을 미친다.
따라서, XOR 연산들은 계산 시간 단축을 위해 동시에 수행될 수 없다. 또한, 이러한 특징으로 인해, 피젯수 다항식의 길이가 길어지면, 나눗셈을 위해 요구되는 연산 시간도 같이 늘어난다.
도 2는 본 발명의 일 예에 따른 연산 장치의 구조도이다.
연산 장치(200)는 SIMD에 기반한 갈로아 필드 이진 다항식 나눗셈을 수행할 수 있다.
연산 장치(200)는 명령어 저장부(210), 제어부(220), 스칼라 연산부(230), 스칼라 레지스터(register)부(240), SIMD 연산부(250), SIMD 레지스터부(260) 및 데이터 저장부(270)를 포함할 수 있다.
명령어 저장부(210)는 명령어를 저장한다.
제어부(220)는 저장된 명령어를 사용하여 제어 신호를 생성한다.
데이터 저장부(270)는 연산에 필요한 입력 데이터 및 연산의 결과로 생성된 데이터를 저장한다.
스칼라 연산부(230)는 병렬로 처리되기 어려운 연산을 처리한다. 스칼라 레지스터부(240)는 스칼라 연산부(230)가 연산을 수행하기 위해 사용하는 레지스터들이다.
SIMD 연산부(250)는 하나의 명령어로 다수의 데이터를 처리하는 연산을 처리한다. SIMD 레지스터부(260)는 SIMD 연산부(250)가 연산을 수행하는 레지스터들이다.
도 3은 본 발명의 일 예에 따른 나눗셈 연산의 흐름도이다.
단계(S310)에서, 연산 장치(200)는 초기화 과정을 수행한다.
데이터 저장부(270)로부터 나눗셈 연산에 필요한 기본적인 정보가 독출된다.
기본적인 정보는 젯수, 피젯수 다항식의 길이, 젯수 다항식의 계수 등을 포함할 수 있다.
단계(S320)에서, 연산 장치(200)는 피젯수 다항식이 준비되기를 대기한다.
단계(S330)에서, 피젯수 다항식이 준비되면, 연산 장치(200)는 데이터 저장부(270)로부터 준비된 피젯수 다항식을 독출한다.
단계(S340)에서, SIMD 연산부(250)는 피젯수 다항식의 일부를 미리 준비된 젯수 다항식으로 나눈다.
단계(S350)에서, 피젯수 다항식 전체에 대한 나눗셈이 수행되었는지 여부가 검사된다. 피젯수 다항식 중 젯수 다항식에 의해 나뉘어진 부분이 남은 경우, 단계(S320)가 반복된다.
도 4는 본 발명의 일 예에 따른 피젯수 다항식의 분할을 설명한다.
길이가 긴 피젯수 다항식(400)은 SIMD 연산부(250)에서 한 번에 처리될 수 없다.
따라서, 피젯수 다항식(400)은 SIMD 연산부(250)가 처리할 수 있는 길이 단위로 읽혀진다. 피젯수 다항식(400)은, SIMD 연산부(250)가 처리할 수 있는 길이에 맞춰, 3 부분들(410, 420 및 430)로 분할된다. 이 때, 마지막 부분(430) 외의 부분들(410 및 420) 각각의 길이는 SIMD 연산부(250)가 처리할 수 있는 최대 길이일 수 있다. 마지막 부분(430)의 길이는 피젯수 다항식(400)에서 앞선 다른 부분들(410 및 420)을 제외한 나머지의 길이가 될 수 있다.
읽혀진 정보(즉, 피젯수 다항식의 부분(410, 420 또는 430)는 SIMD 레지스터부(260)의 레지스터에 저장될 수 있다.
도 5는 본 발명의 일 예에 따른 SIMD 연산부 및 SIMD 레지스터부의 동작을 나타낸다.
SIMD 레지스터부(260)는 VR0(500) 내지 VRN(590)의 N+1 개의 레지스터들을 포함한다.
전술된 피젯수 다항식의 부분(410, 420 또는 430)은 VR1(510)에 저장되었다. 젯수 다항식은 VR0(500)에 저장되었다. 젯수 다항식은 피젯수 다항식의 부분(410, 420 또는 430)이 VR1(510)로 로드(load)되기 전에 VR0(500)에 로드될 수 있다.
피젯수 다항식(400)(또는, 피젯수 다항식의 부분(410, 420 또는 430))을 젯수 다항식으로 나누는 동작은, 피젯수 다항식(400)(또는, 피젯수 다항식의 부분(410, 420 또는 430)) 및 젯수 다항식 간의 선택적 XOR 연산으로 표현된다.
연산 장치(200)를 사용한 이진 다항식 나눗셈이 수행될 경우 하기의 1) 및 2)가 고려되어야한다.
1) 처리량을 극대화하기 위해, 단위 시간 당 처리 가능한 다항식 연산의 수가 극대화되어야 한다. 이러한 극대화를 위해 복수의 XOR 연산을 효과적으로 동시 처리할 수 있는 기법이 요구된다.
2) 연산 장치(200)에 의해 수행될 수 있는 SIMD 연산의 길이는 한정된다.
따라서, 연산 장치(200)로 입력되는 데이터의 길이가 길면, 연산 장치(200)는 입력된 데이터를 처리될 수 있는 길이로 분할하여야 하고, 분할된 데이터를 여러 차례에 걸쳐 처리하여야 한다.
분할된 처리의 일 예가, 단계들(S330 내지 S350)에서 설명되었다.
입력된 데이터가 분할되어 처리되는 경우, 앞선 부분에 대한 연산의 결과가 다음 부분에 대한 연산에서 요구될 수 있다. 따라서, 앞선 연산의 결과가 다음 연산으로 전달될 필요가 있다.
도 6은 본 발명의 일 예에 따른 SIMD 연산 결과 사이의 상호 연관성을 설명한다.
우선, 피젯수 다항식(400)의 제1 부분(410)에 대해 나눗셈이 수행된다.
제1 부분(410)의 모든 비트들에 대해, MSB(412)로부터 최 하위 비트(Least Significant Bit; LSB)(418)의 순서로, 선택적 XOR 연산이 수행된다.
젯수 다항식의 열이 MSB(412)에 맞추어지고, 제1 선택적 XOR 연산(610)이 수행된다. 또한, 젯수 다항식의 열이 MSB(412)의 다음 비트에 맞추어지고, 제2 선택적 XOR 연산(620)이 수행된다.
젯수 다항식은 n 비트이다.
조건 값이 제1 부분(410)의 우측으로부터 n-1 번째 비트(414)일 때, 선택적 XOR 연산(650)의 결과 중 일부(654)(즉, 선택적 XOR 연산(650)의 결과의 마지막 비트)는 다음 제2 부분(420)에 대한 나눗셈 연산에 영향을 미칠 수 있다. 따라서, 상기의 일부(654)는 제2 부분(420)에 대한 나눗셈에서 반영되어야 한다.
조건 값이 제1 부분(410)의 우측으로부터 2 번째 비트(416)일 때, 선택적 XOR 연산(670)의 결과 중 일부(674)(즉, 선택적 XOR 연산(670)의 MSB 및 MSB의 다음 비트(672)를 제외한 나머지 비트들(674))는 다음 제2 부분(420)에 대한 나눗셈에서 반영되어야 한다.
조건 값이 제1 부분(410)의 LSB(418)일 때, 선택적 XOR 연산(680)의 결과 중 일부(684)(즉, 선택적 XOR 연산(680)의 MSB(682)를 제외한 나머지 비트들(684))는 다음 제2 부분(420)에 대한 나눗셈에서 반영되어야 한다.
도 9에서, 제2 부분(420)에 대한 나눗셈에서 반영되어야 하는 부분(690)이 도시되었다.
상기의 영항을 미치는 부분들(654, 674 및 684)이 제2 부분(420)과 XOR 됨으로써, 제1 부분(410)에 대한 나눗셈 연산의 결과가 제2 부분(420)에 대한 나눗셈에 반영된다. 영항을 미치는 부분들(654, 674 및 684) 각각의 열은 제2 부분(420)의 MSB에 맞추어진다.
이러한 반영은, 제1 부분(410)에 대한 나눗셈의 결과 중 일부가 제2 부분(420)으로 전달되는 것으로 간주될 수 있다. 이러한 전달을 결과 전달로 명명한다.
도 7은 본 발명의 일 실시예에 따른 복수의 선택적 XOR 연산을 수행하는 연산 장치(700)의 구조도이다.
연산 장치(700)는 제1 저장부(710), 제2 저장부(715) 및 n 개의 XOR 연산부들(720, 730, 740 및 750)을 포함한다. n은 2 이상의 정수이다.
연산 장치(710)는 n 개의 조건 값 판단부들(725, 735, 745 및 745) 및 연산 제어부(760)를 포함할 수 있다.
제1 저장부(710)는 SIMD 레지스터부(260)의 레지스터일 수 있다. 예컨대, 제1 저장부(710)는 VR0(500)일 수 있다. 제1 저장부(710)는 제1 이진 값을 저장한다. 제1 이진 값은 이진 다항식 나눗셈에서의 젯수 이진 다항식을 나타내는 값일 수 있다.
제2 저장부(715)는 SIMD 레지스터부(260)의 레지스터일 수 있다. 예컨대, 제2 저장부(715)는 VR1(510)일 수 있다. 제2 저장부(710)는 제2 이진 값을 저장한다. 제2 이진 값은 피젯수 이진 다항식의 전체(400) 또는 부분(410, 420 또는 430)을 나타내는 값일 수 있다.
n 개의 XOR 연산부들(720, 730, 740 및 750)은 각각 제1 입력 값 및 제2 입력 값을 수신한다.
n 개의 XOR 연산부들(720, 730, 740 및 750) 각각의 제1 입력 값은 상기 제1 이진 값(즉, 젯수 다항식을 나타내는 값)이다.
n 개의 XOR 연산부들(720, 730, 740 및 750) 중 제1 연산부(720)의 상기 제2 입력 값은 제2 이진 값(즉, 피젯수 다항식의 전체(400) 또는 부분(410, 420 또는 430)을 나타내는 값)이다.
n 개의 XOR 연산부들(720, 730, 740 및 750) 중 제k 연산부의 제2 입력 값은 제k-1 연산부의 출력 값에 기반하여 생성된 값이다. k는 2 이상 n 이하의 정수이다. 예컨대, 제2 연산부(730)의 제2 입력 값은 제1 연산부(720)의 출력 값에 기반하여 생성된 값이다.
n 개의 XOR 연산부들(720, 730, 740 및 750) 각각은 제1 입력 값 및 제 2 입력 값에 대한 선택적 XOR 연산을 수행한다. n 개의 XOR 연산부들(720, 730, 740 및 750) 각각은 제1 입력 값 및 제2 입력 값이 선택적 XOR된 값에 기반하여 출력 값을 생성한다.
전술된 것처럼, 선택적 XOR 연산은 제2 입력 값의 MSB(즉, 조건 값)가 1이면 제1 입력 값 및 제2 입력 값을 XOR한 값을 연산 결과로서 생성하고, 제2 입력 값의 MSB가 0인 경우, 제2 입력 값을 연산 결과로서 생성한다.
앞선 XOR 연산부(720, 730 또는 740)에 의한 선택적 XOR 연산의 결과 값은 MSB 방향으로 1 비트 쉬프트된 후, 다음 XOR 연산부(730, 740 또는 750)로 전달된다.
즉, n 개의 XOR 연산부들(720, 730, 740 및 750) 중 제k 연산부의 제2 입력 값은 제k-1 연산부에 의해 선택적 XOR된 값이 MSB 방향으로 1 비트 쉬프트된 값이다.
이러한 쉬프트 연산은 XOR 연산부(710, 720, 730 또는 740)의 외부에서 수행될 수 있다.
XOR 연산부(710, 720, 730 또는 740)는 하기의 1) 또는 2)의 동작을 수행할 수 있다.
1) XOR 연산부(710, 720, 730 또는 740)는 선택적 XOR 연산의 연산 결과를 쉬프트하지 않은 채 출력할 수 있다.
이 때, n 개의 XOR 연산부들(720, 730, 740 및 750) 각각은 제2 입력 값의 MSB가 1이면 제1 입력 값 및 제2 입력 값이 XOR된 값을 출력하고, 제2 입력 값의 MSB가 0이면 제2 입력값을 출력한다. 또한, 연산 장치(700)의 다른 부분은 앞선 XOR 연산부(720, 730 또는 740)의 출력 값을 쉬프트한다. 따라서, 쉬프트된 출력 값이 다음 XOR 연산부(730, 740 또는 750)로 제공된다.
2) 반면, 후술될 것처럼, XOR 연산부(710, 720, 730 또는 740)는, 선택적 XOR 연산의 연산 결과 값을 MSB 방향으로 1 비트 쉬프트한 다음, 쉬프트된 값을 출력할 수 있다.
n 개의 XOR 연산부들(720, 730, 740 및 750)은 병렬로 동작할 수 있다. 상기의 병렬 동작에 의해 SIMD 연산이 수행될 수 있다.
전술된 선택적 XOR 연산은 조건 값 판단부(725, 735, 745 또는 755)에 의해 제어될 수 있다.
n 개의 조건 값 판단부들(725, 735, 745 및 755) 중 제m 조건 값 판단부는 n 개의 XOR 연산부들(720, 730, 740 및 750) 중 제m XOR 연산부의 선택적 XOR 연산을 제어할 수 있다.
즉, 제m 조건 값 판단부는 제m XOR 연산부의 제2 입력 값의 MSB의 값을 검사하고, MSB의 값이 1이면 제m XOR 연산부가 제1 입력 값 및 제2 입력 값을 XOR 하는 연산을 수행하도록 제어할 수 있다. 또한, 제m 조건 값 판단부는 상기의 MSB의 값이 0이면 제m XOR 연산부가 XOR 연산 없이 제2 입력 값을 그대로 사용하도록 제어할 수 있다.
조건 값 판단부들(725, 735, 745 및 755)은 자신이 제어하는 XOR 연산부들(720, 730, 740 및 750)의 제2 값의 MSB의 값들을 SIMD 레지스터부(260)의 레지스터에 저장할 수 있다. MSB의 값들은 다항식 나눗셈의 몫을 나타낼 수 있다.
연산 제어부(760)는 조건 값 판단부들(725, 735, 745 및 755)을 제어할 수 있다.
연산의 유형에 따라, 모든 XOR 연산부들(720, 730, 740 및 750)이 동작하지 않아도 될 경우가 있다. 예컨대, 젯수 다항식의 길이가 n 보다 더 작은 경우, 나눗셈 연산을 위해서, 단지 젯수 다항식의 길이만큼의 개수의 XOR 연산부들(720, 730, 740 및 750)이 동작할 필요가 있다.
연산 제어부(760)는 연산 횟수 값 p를 입력 받을 수 있고, n 개의 XOR 연산부들(720, 730, 740 및 750) 중 제1 내지 제p XOR 연산부 만이 동작하도록 XOR 연산부들(720, 730, 740 및 750) 또는 조건 값 판단부들(725, 735, 745 및 755)을 제어할 수 있다.
연산 제어부(760)는 제p XOR 연산부의 출력 값(또는, 상기의 출력 값이 MSB의 방향으로 1 비트만큼 쉬프트된 값)에 기반하여 결과 값을 생성할 수 있다. 연산 제어부(760)는 상기의 결과 값을 제2 저장부(715)의 값으로 입력할 수 있다. 즉, 제2 저장부(715)의 값은 상기의 결과 값으로 갱신될 수 있다.
연산 장치(700)에 의해 수행되는 연산은 일반적인 산술 연산들과는 달리 캐리(carry) 신호를 발생시키지 않는다. 따라서, 상기의 연산은 회로 복잡도를 높이지 않으면서 구현될 수 있다. 또한, 상기의 연산은 메모리를 사용하지 않고, 논리 회로만을 사용한다. 따라서, 상기의 연산은 빠르게 처리될 수 있고, 적은 전력을 소모하여 처리될 수 있다.
도 8은 본 발명의 일 예에 따른 쉬프트 논리 회로가 포함된 XOR 연산부를 사용하는 연산 장치의 구조도이다.
SIMD 연산들(즉, XOR 연산부들(720, 730, 740 및 750)에 의해 병렬로 수행되는 연산들)이 적은 부하로 연결되기 위해서는, XOR 연산부들(720, 730, 740 및 750)에 비트 쉬프트 회로가 추가될 필요가 있다.
비트 쉬프트 회로는 피젯수 다항식의 조건 값이 항상 동일한 위치(즉, MSB)에서부터 취해질 수 있게 한다.
따라서, 비트 쉬프트 회로는 연산 장치(700)를 간략하게 만든다. 또한, 비트 쉬프트 회로는 이전 SIMD 연산의 결과(즉, 이전 XOR 연산부(720, 730 또는 740)에 의해 수행된 연산의 결과)가 다음 SIMD 연산(즉, 다음 XOR 연산부(730, 740 또는 750)에 의해 수행되는 연산)으로 간단히 전달되게 한다.
XOR 연산부들(720, 730, 740 및 750) 각각은 XOR 논리 회로(822, 832, 842 또는 852)를 포함하고, 쉬프트 논리 회로(824, 834, 844 또는 854)를 포함한다.
제1 XOR 논리 회로(822) 는 XOR 연산부(720)의 제2 입력 값의 MSB의 값에 기반하여 제1 입력 값 및 제2 입력 값의 선택적 XOR 연산을 수행함으로써 중간 출력 값을 생성한다.
제1 쉬프트 논리 회로(824)는 중간 출력 값을 MSB 방향으로 1 비트 쉬프트함으로써 출력 값을 생성한다. 제1 쉬프트 논리 회로(824)로부터 출력된 값은 제2 XOR 연산부(720)의 제2 입력 값이 된다.
제1 쉬프트 논리 회로(824)는 중간 출력 값을 MSB 방향으로 1 비트 쉬프트하고, 쉬프트된 중간 출력 값의 LSB로서 0을 삽입할 수 있다.
다른 XOR 논리 회로들(832, 842 및 852) 및 쉬프트 논리 회로들(834, 844 및 854) 간에도 전술된 설명이 적용된다.
전술된 연산 장치(700)는 복수 개의 XOR 연산부들(720, 730, 740 및 750)를 포함하는 SIMD 형태의 연산 장치이다. 한 명령어로 다수의 연산 장치를 제어함으로써 처리량을 향상시킨 SIMD(Single Instruction Multiple Data) 형태의 프로세서는 규격 변화에 유연하게 대처할 수 있으며, 높은 처리량을 제공할 수 있다.
또한, 연산 장치(700)는 병렬 처리를 수행함으로써 XOR 연산을 순차적으로 수행하는 연산 장치에 비해 처리 속도를 향상시킬 수 있다. 연산 장치(700)는 메모리를 사용하지 않기 때문에, 연산 장치(700)를 구현하기 위해 요구되는 칩(chip) 면적은 크게 증가하지 않는다.
도 9는 본 발명의 일 예에 따른 쉬프트 논리 회로가 추가된 연산 장치에서 반복적으로 나눗셈 연산들이 수행될 경우, 일련의 연산들 간에서 전달되는 데이터를 도시한다.
피젯수 다항식(910)의 길이는 L이다.
피젯수 다항식(910)은 전체 피젯수 다항식(400)의 일부일 수 있다. 이 경우, L은 SIMD 레지스터부(260)의 레지스터(예컨대, VR1(510))의 길이일 수 있다. 즉, 레지스터의 길이가 제한되어 전체 피젯수 다항식(400)이 한 번에 레지스터에 로드될 수 없는 경우, 피젯수 다항식(910)은 전체 피젯수 다항식(400)의 일부(410, 420 또는 430)를 나타낼 수 있다.
피젯수 다항식(910)은 복수 개의 블록들(930, 932 및 938)로 구성된다. 블록들(930, 932 및 938) 각각의 길이는 N이다.
피젯수 다항식(910)을 나타내는 이진 값 중, MSB는 b(L-1)로 표현되고, LSB는 b0으로 표현된다.
피젯수 다항식(910)은 제2 저장부(715)에 저장될 수 있다. 젯수 다항식(920)은 제1 저장부(710)에 저장될 수 있다.
N은 연산 장치(700)에 의해 한 번에 처리될 수 있는 조건 값 비트들의 개수일 수 있다. 즉, N은 연산 장치(700)가 포함하는 XOR 연산부들(720, 730, 740 및 750)의 개수일 수 있다.
또한 N은 연산 장치(700)에 한 번에 처리될 수 있는 조건 값 비트들의 개수 이하의 값일 수 있다. N은 연산 제어부(760)로 입력되는 연산 횟수의 값일 수 있다.
제1 나눗셈은 피젯수 다항식(910)의 앞 N 개의 비트들에 대한 이진 다항식 나눗셈이다. 즉, 피젯수 다항식(910)의 b(L-1) 내지 b(L-N)가 순서대로 조건 값 비트로서 사용된다.
제1 나눗셈은 연산 장치(700)에 의해 수행된다.
N 개의 조건 값 비트들 각각에 대하여, 연산 장치(700)의 XOR 연산부들(720, 730, 740 및 750) 중 하나의 XOR 연산부에 의해 선택적 XOR 연산이 수행된다. 또한, 선택적 XOR 연산의 결과 값은 XOR 연산부에 의해 MSB 방향으로 1 비트 쉬프트된다.
상기의 쉬프트에 의해, 제1 블록(930)에 해당하는 비트들은 피젯수 다항식(910)(즉, 제2 저장부(715))으로부터 제거된다.
제2 블록(932)의 비트들(즉, b(L-N-1) 내지 b(L-2N))에게 선택적 XOR 연산들이 적용되어, 비트들(b(L-N-1) 내지 b(L-2N))의 값이 변경된다. 또한, 선택된 XOR 연산들이 적용된 제2 블록(940)은 쉬프트 연산에 의해 제1 블록의 위치로 이동한다.
또한, 마지막 블록(938)의 비트들(즉, b(N-1) 내지 b0)에게 선택적 XOR 연산들이 적용되어, 비트들(b(N-1) 내지 b0)의 값이 변경된다. 또한, 선택된 XOR 연산들이 적용된 마지막 블록(946)은 쉬프트 연산에 의해 앞선 블록의 위치로 이동된다.
쉬프트 연산에 의해, 피젯수 다항식(910)의 마지막 블록으로서, N 개의 0 값들을 가진 블록(948)이 삽입된다.
N 개의 조건 값 비트들에 대한 다항식 나눗셈들이 반복되면서, 피젯수 다항식(910)의 블록들(930, 932 및 938)은, 선택적 XOR 연산의 결과를 반영하면서, N 비트 만큼씩 반복해서 MSB 방향으로 이동한다. 상기 이동에 의해 비워진 부분에는 N 개의 0 값을 가진 블록이(948, 958, 및 968) 반복해서 삽입된다.
마지막 다항식 나눗셈이 수행되면, 피젯수 다항식(910)에는 나눗셈 이전 마지막 블록(938)의 비트들(b(N-1) 내지 b0)이 제1 블록(930)의 위치로 이동한다. 나머지 블록들(962, 996 및 998)은 N 개의 0을 가진 블록이다.
마지막 다항식 나눗셈이 수행되면, 피젯수 다항식(910)(즉, 제2 저장부(715))의 값은 마지막으로 남은 블록(960) 및 0으로 채워진 블록들(962, 966 및 968)로 구성된다.
피젯수 다항식(400)의 다음 부분(420 또는 430)에 대한 다항식 나눗셈이 수행될 때, 마지막으로 남은 블록(960)이 전달되어야 한다. 즉 마지막으로 남은 블록(960)은 다음 나눗셈에서 반영되어야 하는 부분(690)이다.
즉, 도 9를 참조하여 설명된 다항식의 나눗셈 연산은, 피젯수 다항식(400)의 부분(410 또는 420)에 대한 다항식 나눗셈의 결과를, 다음 부분(420 또는 430)에 대한 나눗셈으로 적절하게 전달한다.
제2 저장부(715) 등에 로드된 피젯수 다항식의 부분(410 또는 420)에 대한 연산이 모두 종결되면, 새로운 부분(420 또는 430)에 대한 다항식 나눗셈 연산이 수행되어야 한다.
이 때, 이전 부분(410 또는 420)에 대한 연산 결과(970)가 새로운 부분(420 또는 430)에 대한 연산에 반영되어야 한다.
연산 장치(700)는 새로 로드된 피젯수 다항식의 부분(420 또는 430)에 이전의 다항식 나눗셈의 연산 결과(970)를 XOR 시킬 수 있다. XOR 연산에 의해 갱신된 피젯수 다항식의 부분은 이전 부분에 대한 다항식 나눗셈 연산의 결과(970)가 반영된 피젯수 다항식의 부분이다.
연산 장치(700)는 갱신된 피젯수 다항식의 부분을 사용하여 다항식 나눗셈 연산을 계속할 수 있다.
이러한 원리는, XOR 연산이 갖는 결합법칙을 이용한 것이다.
도 10은 본 발명의 일 예에 따른 갈로아 필드 이진 다항식 나눗셈을 의한 SIMD 명령어의 사용법을 설명한다.
하기의 표 1에서, 도 7 내지 도 9를 참조하여 설명된 동작을 수행하기 위해 SIMD 명령어들이 정의된다.
vgfpdiv SR, VRn, VRm vgfpdiv 명령은 피젯수 다항식 VRm을 젯수 다항식 VRn로 SR 비트만큼 나눈다.
vgfpdiv는 "Vector Galois Field Polynomial Division"의 약자이다.
SR은 레지스터이다. SR은 스칼라 레지스터부(240)의 레지스터일 수 있다.
SR은 연산 장치(700)에 의한 다항식 나눗셈 연산이 수행되는 동안, 몇 개의 조건 값 비트들이 처리될지를 결정한다. 즉, SR은 연산 제어부(760)로 입력되는 연산 횟수를 저장한다.
피젯수 다항식(400)의 길이는 XOR 연산부들(720, 730, 740 및 750)의 개수의 배수가 아닐 수 있다. 따라서, SR이 없으면, 피젯수 다항식(400)의 마지막 부분은 제대로 나뉘어지지 못할 수 있다.
예컨대, vgfpdiv 명령어가 한 번에 처리하는 선택적 XOR 연산의 개수가 N이고, 피젯수 다항식에 대한 나눗셈을 위해 M 번의 선택적 XOR이 필요한 경우, "M mod N ≠ 0"인 경우가 발생할 수 있다.
VRn은 젯수 다항식이 저장된 레지스터이다. VRn은 제1 저장부(710)일 수 있다.
VRm은 피젯수 다항식이 저장된 레지스터이다. VRm은 제2 저장부(715)일 수 있다.
또한, VRm은 다항식 나눗셈의 연산 결과(970)를 저장한다. 즉, vgfpdiv 명령에 의해 다항식 나눗셈이 수행되면 그 결과 값(970)이 VRm에 저장된다.
vld R2, VR3 vld 명령은 R2에 저장된 값을 VR3으로 로드한다.
R2는 레지스터이다. R2은 스칼라 레지스터부(240)의 레지스터일 수 있다.
R2은 다음 나눗셈 연산을 위해 필요한 피젯수 다항식(400)의 다음 부분(420 또는 430)을 저장할 수 있다.
VR2는 레지스터이다. VR2는 SIMD 레지스터부(260)의 레지스터일 수 있다.
즉, vld 명령은 스칼라 레지스터부(240)의 레지스터에 입력된 다항식(400)의 부분(410, 420 또는 430)을 SIMD 레지스터부(260)의 레지스터로 로드하는 명령일 수 있다.
vxor VR2 VR3 VR4 vxor 명령은 VR2 및 VR3에 저장된 값들을 XOR 하여 VR4에 저장한다.
VR4는 레지스터이다. VR4는 SIMD 레지스터부(260)의 레지스터일 수 있다.
vxor 명령은 "vxor VR2 VR3 VR2"와 같이 사용될 수 있다.
여기서, VR2는 이전 vgfpdiv에 의해 생성된 다음 다항식의 나눗셈으로 전달되어야할 결과 값(970)이다. VR3은 다음 다항식 나눗셈에서 사용될 다항식(400)의 부분(420 또는 430)이다. 두 값이 XOR 되어, VR2에 저장된다. 따라서, VR2는 이전 다항식 나눗셈의 결과 값(970)을 반영한 다항식(400)의 다음 부분(420 또는 430)이다.
도 10에서, 4 개의 "vgfpdiv R1, VR1, VR2" 명령어들(1010, 1020, 1030 및 1040)을 이용하여 다항식 나눗셈을 사용하는 예가 도시되었다.
도시된 예에서, 2 비트들에 대한 나눗셈이 수행된다. 즉, 하나의 "vgfpdiv" 명령어(1010, 1020, 1030 또는 1040)는 2 개의 조건 값 비트들을 처리한다. 예컨데, 제1 "vgfpdiv" 명령어는 MSB 조건 값 비트(1012) 및 다음 조건 값 비트(1014)에 대한 선택적 XOR 연산을 수행한다.
따라서, 모든 "vgfpdiv" 명령어들(1010, 1020, 1030 및 1040)에 대해, R1 = 2이고, VR1 = 100112이다. ("100112"는 이진수 10011을 나타낸다.)
제1 "vgfpdiv" 명령어(1010)에서, VR2 = 1110010000002이다.
제1 "vgfpdiv" 명령어(1010)가 실행되면, VR2의 값은 1100000000002로 갱신된다. 따라서, 제2 "vgfpdiv" 명령어(1020)의 VR2의 값은 1100000000002이다.
다음으로, 제2 "vgfpdiv" 명령어(1020) 내지 제4 "vgfpdiv" 명령어(1040)가 차례로 수행된다.
제4 "vgfpdiv" 명령어(1040)가 수행되면, VR2의 값은 1111000000002로 갱신된다.
VR2의 값은 다항식 나눗셈의 결과 값(970)이다.
VR2의 값 1111000000002 중 앞의 4 비트 "11112"이 다항식 나눗셈의 나머지이고, 뒤의 8 비트 "000000002"은 4 개의 "vgfpdiv" 명령어들(1010, 1020, 1030 및 1040)이 수행되면서 VR2의 LSB로 패딩된 0 비트들이다.
VR2에 저장된 값 1111000000002은 "vxor" 명령을 통해 피젯수 다항식의 다음 부분(420 또는 430)에 대한 나눗셈 연산으로 전달될 수 있다.
도 11은 본 발명의 일 실시예에 따른 연산 장치의 동작 방법의 흐름도이다.
연산 장치(700)는 이진 다항식의 나눗셈 연산을 수행한다.
도 11에서, 동작 방법의 단계들(S1110 내지 S1150) 및 단계들(S1110 내지 S1150) 각각에 대응하는 명령어들이 도시되었다.
젯수 저장부에 젯수 다항식이 저장될 수 있다. 젯수 저장부는 제1 저장부(710)일 수 있다. 젯수 저장부는 VR1일 수 있다.
제1 로드 단계(S1110)에서, 피젯수 저장부에 피젯수 다항식(400)의 제1 부분(410)이 나타내는 값이 저장된다. 피젯수 저장부는 제2 저장부(715)일 수 있다. 피젯수 저장부는 VR2일 수 있다.
제1 로드 단계(S1110)는 명령어 "vld R1 VR2"에 대응할 수 있다.
제1 나눗셈 단계(S1120)에서, 피젯수 저장부에 저장된 값을 젯수 다항식으로 나누는 연산이 수행되고, 나눗셈의 결과 값(970)으로 피젯수 저장부가 갱신된다.
결과 값(970)은 피젯수 저장부에 저장된 값을 젯수 다항식으로 나눈 나머지가 q 비트만큼 피젯수 저장부의 MSB 방향으로 쉬프트된 값이다. q는 다항식 나눗셈에 의해 패딩된 0 비트들의 개수이다. 즉, q는 피젯수 저장부의 비트 길이 및 젯수 다항식의 비트 길이 간의 차이일 수 있다.
제1 나눗셈 단계(S1120)는 하나 이상의 "vgfpdiv R1 VR1 VR2" 명령어들에 대응할 수 있다.
제1 나눗셈 단계(S1120)는 제1 부분 나눗셈 단계 및 제2 부분 나눗셈 단계를 포함할 수 있다.
제1 부분 나눗셈 단계에서, 우선, 피젯수 저장부에 저장된 값을 젯수 다항식으로 a 개의 조건 값 비트만큼 나눈 나머지가 계산된다. 다음으로, 상기 나머지가 a 비트만큼 피젯수 저장부의 MSB 방향으로 쉬프트된 값으로 피젯수 저장부가 갱신된다.
제1 부분 나눗셈 단계는 명령어 "vgfpdiv R1 VR1 VR2"에 대응할 수 있다. 이 경우, R1의 값은 a이다.
제2 부분 나눗셈 단계에서, 우선, 피젯수 저장부에 저장된 값을 젯수 다항식으로 b 개의 조건 값 비트만큼 나눈 나머지가 계산된다. 다음으로, 상기 나머지가 b 비트만큼 피젯수 저장부의 MSB 방향으로 쉬프트된 값으로 피젯수 저장부가 갱신된다.
제2 부분 나눗셈 단계는 명령어 "vgfpdiv R1 VR1 VR2"에 대응할 수 있다. 이 경우, R1의 값은 b이다.
a 및 b의 합은 피젯수 저장부의 비트 길이 이하이다.
또한, 제1 나눗셈 단계(S1120)는 하나 이상의 부분 나눗셈 단계들을 포함할 수 있다.
하나 이상의 부분 나눗셈 단계들 중 제d 부분 나눗셈 단계에서, 우선 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 ad 개의 조건 값 비트만큼 나눈 나머지가 계산된다. 다음으로, 상기 나머지가 ad 비트만큼 피젯수 저장부의 MSB 방향으로 쉬프트된 값으로 상기 피젯수 저장부가 갱신된다.
하나 이상의 부분 나눗셈 단계들 각각이 나눗셈 연산에 사용한 조건 값 비트들의 총 합은 상기 피젯수 저장부의 비트 길이일 수 있다.
다음으로, 결과 전달 단계(S1130 및 S1140)가 수행된다.
결과 전달 단계(S1130 및 S1140)에서, 피젯수 저장부의 값 및 피젯수 다항식(400)의 제2 부분(420)이 나타내는 값의 XOR 된 값으로 피젯수 저장부의 값이 갱신된다.
제2 로드 단계(S1130)에서, 임시 저장부에 피젯수 다항식(400)의 제2 부분(420)이 나타내는 값이 저장된다.
임시 저장부는 VR3일 수 있다.
제2 로드 단계(S1130)는 명령어 "vld R2 VR3"에 대응할 수 있다.
나머지 적용 단계(S1140)에서, 피젯수 저장부의 값 및 임시 저장부의 값이 XOR된 값으로 피젯수 저장부의 값이 갱신된다.
나머지 적용 단계(S1140)는 명령어 "vxor VR2 VR3 VR2"에 대응할 수 있다.
제2 나눗셈 단계(S1150)에서, 피젯수 저장부에 저장된 값을 젯수 다항식으로 나누는 연산이 수행되고, 나눗셈의 결과 값(970)으로 피젯수 저장부가 갱신된다.
제2 나눗셈 단계(S1150)는 하나 이상의 "vgfpdiv R1 VR1 VR2" 명령어들에 대응할 수 있다.
제1 부분(410) 및 제2 부분(420)은 피젯수 다항식(400)의 연속된 부분이다.
제2 나눗셈 단계(S1160) 이후, 피젯수 다항식(400)의 남은 부분(430)이 모두 처리될 때까지, 단계들(S1130 내지 S1150)과 유사한 단계들이 반복 수행된다.
앞서 도 1 내지 도 10을 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
700: 연산 장치
720: XOR 연산부
822: XOR 논리 회로
824: 쉬프트 논리 회로

Claims (19)

  1. 제1 입력 값 및 제2 입력 값을 수신하여, 상기 제1 입력 값 및 상기 제2 입력 값이 선택적 XOR된 값에 기반하여 출력 값을 생성하는 n 개의 XOR 연산부들 - 상기 n은 2 이상의 정수임 -;
    제1 이진 값을 저장하는 제1 저장부; 및
    제2 이진 값을 저장하는 제2 저장부
    를 포함하고, 상기 선택적 XOR 연산은 상기 제2 입력 값의 최 상위 비트가 1인 경우 상기 제1 입력 값 및 상기 제2 입력 값을 XOR한 값을 연산 결과로서 생성하고, 상기 제2 입력 값의 최 상위 비트가 0인 경우 상기 제2 입력 값을 연산 결과로서 생성하고, 상기 n 개의 XOR 연산부들 각각의 제1 입력 값은 상기 제1 이진 값이고, 상기 n 개의 XOR 연산부들 중 제1 연산부의 상기 제2 입력 값은 상기 제2 이진 값이고, 상기 n 개의 XOR 연산부들 중 제k 연산부의 제2 입력 값은 제k-1 연산부에 의해 상기 선택적 XOR된 값이 최 상위 비트 방향으로 1 비트 쉬프트된 값이고, 상기 k는 2 이상 n 이하의 정수인, 연산 장치.
  2. 제1항에 있어서,
    상기 n 개의 XOR 연산부들은 병렬로 동작함으로써 SIMD 연산을 수행하는, 연산 장치.
  3. 제1항에 있어서,
    상기 제1 저장부 및 상기 제2 저장부는 상기 연산 장치의 레지스터인, 연산 장치.
  4. 제1항에 있어서,
    상기 제1 이진 값은 젯수 이진 다항식을 나타내는 값이고, 상기 제2 이진 값은 피젯수 이진 다항식의 부분을 나타내는 값인, 연산 장치.
  5. 제1항에 있어서,
    상기 n 개의 XOR 연산부들 각각은 상기 제2 입력 값의 최 상위 비트가 1이면 상기 제1 입력 값 및 상기 제2 입력 값이 XOR된 값을 출력하고, 상기 제2 입력 값의 최 상위 비트가 0이면 상기 제2 입력값을 출력하는 선택적 XOR 연산을 수행하고, 상기 제k 연산부의 제2 입력 값은 상기 제k-1 연산부의 출력 값이 상기 최 상위 비트의 방향으로 1 비트 쉬프트된 값인, 연산 장치.
  6. 제1 항에 있어서,
    상기 제n XOR 연산부들 각각은,
    상기 제2 입력 값의 최 상위 비트의 값에 기반하여 상기 제1 입력 값 및 상기 제2 입력 값의 선택적 XOR 연산을 수행함으로써 중간 출력 값을 생성하는 XOR 논리 회로; 및
    상기 중간 출력 값을 최 상위 비트 방향으로 1 비트 쉬프트함으로써 상기 출력 값을 생성하는 쉬프트 논리 회로
    를 포함하고, 상기 n 개의 XOR 연산부들 중 제k 연산부의 제2 입력 값은 제k-1 연산부의 출력 값인, 연산 장치.
  7. 제6 항에 있어서,
    상기 쉬프트 논리 회로는 중간 출력 값을 최 상위 비트 방향으로 1 비트 쉬프트하고, 상기 쉬프트된 중간 출력 값의 최 하위 비트로서 0을 삽입하는, 연산 장치.
  8. 제1항에 있어서,
    n 개의 조건 값 판단부들
    을 더 포함하고, 상기 n 개의 조건 값 판단부들 중 제m 조건 값 판단부는 상기 n 개의 XOR 연산부들 중 제m XOR 연산부의 상기 제2 입력 값의 최 상위 비트의 값을 검사하고, 상기 최 상위 비트의 값이 1이면 상기 제m XOR 연산부가 상기 제1 입력 값 및 상기 제2 입력 값을 XOR 하는 연산을 수행하도록 제어하는, 연산 장치.
  9. 제1항에 있어서,
    상기 n 개의 조건 값 판단부들을 제어하는 연산 제어부를 포함하는, 연산 장치.
  10. 제1항에 있어서,
    상기 연산 제어부는 연산 횟수 값 p를 입력 받고,
    상기 p는 1 이하 n 이하의 정수이고, 상기 연산 제어부는 상기 n 개의 XOR 연산부들 중 제p XOR 연산부의 상기 출력 값에 기반하여 결과 값을 생성하는, 연산 장치.
  11. 제10항에 있어서,
    상기 연산 제어부는 상기 결과 값을 상기 제2 저장부의 값으로 입력하는, 연산 장치.
  12. 제10항에 있어서,
    상기 연산 제어부는 상기 n 개의 조건 값 판단부들을 제어함으로써 상기 n 개의 XOR 연산부들 중 제1 XOR 연산부 내지 제p XOR 연산부 만이 동작하도록 제어하는, 연산 장치.
  13. 이진 다항식을 나누는 연산 장치를 사용하는 동작 방법에 있어서,
    피젯수 저장부에 피젯수 다항식의 제1 부분이 나타내는 값을 저장하는 제1 로드 단계;
    상기 피젯수 저장부에 저장된 값을 젯수 다항식으로 나눈 나머지가 q 비트만큼 상기 피젯수 저장부의 최상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하는 제1 나눗셈 단계;
    상기 피젯수 저장부의 값 및 상기 피젯수 다항식의 제2 부분이 나타내는 값의 XOR 된 값으로 상기 피젯수 저장부의 값을 갱신하는 결과 전달 단계; 및
    상기 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 나눈 나머지가 상기 q 비트만큼 상기 피젯수 저장부의 최상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하는 제2 나눗셈 단계
    를 포함하고, 상기 제1 부분 및 상기 제2 부분은 상기 피젯수 다항식의 연속된 부분이고, 상기 q는 상기 피젯수 저장부의 비트 길이 및 상기 젯수 다항식의 비트 길이 간의 차인, 연산 장치의 동작 방법.
  14. 제13항에 있어서,
    상기 제1 나눗셈 단계는,
    상기 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 a 개의 조건 값 비트만큼 나눈 나머지가 상기 a 비트만큼 상기 피젯수 저장부의 최 상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하는 제1 부분 나눗셈 단계; 및
    상기 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 b 개의 조건 값 비트만큼 나눈 나머지가 상기 b 비트만큼 상기 피젯수 저장부의 최 상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하는 제2 부분 나눗셈 단계;
    를 포함하고, 상기 a 및 상기 b의 합은 상기 피젯수 저장부의 비트 길이 이하인, 연산 장치의 동작 방법.
  15. 제13항에 있어서,
    상기 제1 나눗셈 단계는,
    하나 이상의 부분 나눗셈 단계들
    를 포함하며,
    상기 하나 이상의 부분 나눗셈 단계들 중 제d 부분 나눗셈 단계는, 상기 피젯수 저장부에 저장된 값을 상기 젯수 다항식으로 ad 개의 조건 값 비트만큼 나눈 나머지가 상기 ad 비트만큼 상기 피젯수 저장부의 최 상위 비트 방향으로 쉬프트된 값으로 상기 피젯수 저장부를 갱신하고, 상기 하나 이상의 부분 나눗셈 단계들 각각이 나눗셈 연산에 사용한 상기 조건 값 비트들의 총 합은 상기 피젯수 저장부의 비트 길이인, 연산 장치의 동작 방법.
  16. 제13항에 있어서,
    상기 연산 장치는,
    제1 입력 값 및 제2 입력 값을 수신하여, 상기 제1 입력 값 및 상기 제2 입력 값이 선택적 XOR된 값에 기반하여 출력 값을 생성하는 n 개의 XOR 연산부들 - 상기 n은 2 이상의 정수임 -;
    제1 이진 값을 저장하는 젯수 저장부; 및
    제2 이진 값을 저장하는 상기 피젯수 저장부
    를 포함하고, 상기 선택적 XOR 연산은 상기 제2 입력 값의 최 상위 비트가 1인 경우 상기 제1 입력 값 및 상기 제2 입력 값을 XOR한 값을 연산 결과로서 생성하고, 상기 제2 입력 값의 최 상위 비트가 0인 경우 상기 제2 입력 값을 연산 결과로서 생성하고, 상기 n 개의 XOR 연산부들 각각의 제1 입력 값은 상기 제1 이진 값이고, 상기 n 개의 XOR 연산부들 중 제1 연산부의 상기 제2 입력 값은 상기 제2 이진 값이고, 상기 n 개의 XOR 연산부들 중 제k 연산부의 제2 입력 값은 제k-1 연산부에 의해 상기 선택적 XOR된 값이 최 상위 비트 방향으로 1 비트 쉬프트된 값이고, 상기 k는 2 이상 n 이하의 정수인, 연산 장치의 동작 방법.
  17. 제13항에 있어서,
    상기 젯수 다항식은 상기 젯수 저장부에 저장되고,
    상기 피젯수 저장부 및 상기 젯수 저장부는 상기 연산 장치의 레지스터인, 연산 장치의 동작 방법.
  18. 제13항에 있어서,
    상기 결과 전달 단계는,
    임시 저장부에 상기 제2 부분이 나타내는 값을 저장하는 제2 로드 단계; 및
    상기 피젯수 저장부의 값 및 상기 임시 저장부의 값이 XOR된 값으로 상기 피젯수 저장부의 값을 갱신하는 나머지 적용 단계
    를 포함하는, 연산 장치의 동작 방법.
  19. 제1항 내지 제18항 중 어느 한 항의 연산 장치의 동작 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
KR1020100139042A 2010-12-30 2010-12-30 Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법 KR101770122B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100139042A KR101770122B1 (ko) 2010-12-30 2010-12-30 Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법
US13/324,322 US8898213B2 (en) 2010-12-30 2011-12-13 Apparatus and method for division of a Galois field binary polynomial

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100139042A KR101770122B1 (ko) 2010-12-30 2010-12-30 Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120077177A true KR20120077177A (ko) 2012-07-10
KR101770122B1 KR101770122B1 (ko) 2017-08-23

Family

ID=46381739

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100139042A KR101770122B1 (ko) 2010-12-30 2010-12-30 Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법

Country Status (2)

Country Link
US (1) US8898213B2 (ko)
KR (1) KR101770122B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116561051A (zh) * 2023-04-10 2023-08-08 中科驭数(北京)科技有限公司 一种硬件加速卡和异构计算系统

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101770122B1 (ko) * 2010-12-30 2017-08-23 삼성전자주식회사 Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법
KR20140039371A (ko) * 2012-09-20 2014-04-02 한국전자통신연구원 데이터 처리 장치, 시스템 및 방법
EP3376369B1 (en) 2016-01-20 2020-03-04 Samsung Electronics Co., Ltd. Method, apparatus and recording medium for processing division calculation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3366721B2 (ja) 1994-03-11 2003-01-14 富士通株式会社 多数バイトのエラー訂正装置
US5602767A (en) 1995-08-29 1997-02-11 Tcsi Corporation Galois field polynomial multiply/divide circuit and a digital signal processor incorporating same
US6366941B1 (en) * 1998-02-03 2002-04-02 Texas Instruments Incorporated Multi-dimensional Galois field multiplier
ATE557342T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand
KR100493014B1 (ko) 1999-03-24 2005-06-07 삼성전자주식회사 비씨에이치/리드-솔로몬 디코더용 2중 패러랠 데이터패스를 갖는 갈로아필드 프로세서
US6721771B1 (en) * 2000-08-28 2004-04-13 Sun Microsystems, Inc. Method for efficient modular polynomial division in finite fields f(2{circumflex over ( )}m)
US6766344B2 (en) 2001-05-08 2004-07-20 International Business Machines Corporation Processing Galois Field arithmetic
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
US7508936B2 (en) * 2002-05-01 2009-03-24 Sun Microsystems, Inc. Hardware accelerator for elliptic curve cryptography
KR100610367B1 (ko) 2004-06-19 2006-08-10 삼성전자주식회사 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치
KR20060005156A (ko) 2004-07-12 2006-01-17 매그나칩 반도체 유한회사 갈루아 필드 역원 변환장치
KR20060101039A (ko) 2005-03-18 2006-09-22 엘지전자 주식회사 갈로이스 필드의 원소 재배열을 이용한 인터리빙 방법
KR20070069259A (ko) 2005-12-28 2007-07-03 매그나칩 반도체 유한회사 유한체 갈루아 필드 변환기
KR101770122B1 (ko) * 2010-12-30 2017-08-23 삼성전자주식회사 Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116561051A (zh) * 2023-04-10 2023-08-08 中科驭数(北京)科技有限公司 一种硬件加速卡和异构计算系统
CN116561051B (zh) * 2023-04-10 2024-02-02 中科驭数(北京)科技有限公司 一种硬件加速卡和异构计算系统

Also Published As

Publication number Publication date
KR101770122B1 (ko) 2017-08-23
US8898213B2 (en) 2014-11-25
US20120173598A1 (en) 2012-07-05

Similar Documents

Publication Publication Date Title
US10461778B2 (en) Interleaving and puncturing apparatus and method thereof
EP3407203A2 (en) Statically schedulable feed and drain structure for systolic array architecture
KR101522509B1 (ko) 갈루아 필드 산술을 사용하는 효율적이고 스케일링가능한 순환 중복 검사 회로
TWI771373B (zh) 向量處理器的序列對齊方法
US8261176B2 (en) Polynomial division
KR20080068555A (ko) Raid 장치 및 갈로아체의 곱 연산 처리 방법
US20210271795A1 (en) Implementing Fixed-Point Polynomials in Hardware Logic
KR20120077177A (ko) Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법
JP6907700B2 (ja) 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム
JP2008011025A (ja) 巡回冗長検査のための剰余計算装置
KR20120134549A (ko) Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법
JP5269137B2 (ja) 演算装置
KR20100139072A (ko) 다항식 데이터 처리연산
JP2001036414A (ja) Crc符号生成回路及びcrcエラー検出回路
JP6875661B2 (ja) 誤り検出用冗長ビットの生成方法および装置
CN106603085B (zh) 生成多项式的生成方法、生成装置、编码器、控制器及电子设备
US8117507B2 (en) Decompressing method and device for matrices
US7278090B2 (en) Correction parameter determination system
US11886719B2 (en) Memory circuit for storing parsimonious data
JP2010199811A (ja) 制御装置のメモリシステム
KR20230086275A (ko) 5G 통신시스템에의 응용을 고려한 딥러닝 가속기에서 global buffer에 대한 접근을 최소화하기 위해 재정렬된 연산 시퀀스를 기반으로 local register file을 사용하는 방법
WO2020084694A1 (ja) 演算処理装置及び演算処理装置の制御方法
JP6059287B2 (ja) 行列三角化装置およびプログラム
CN111106837A (zh) 一种ldpc译码方法、译码装置及存储介质
JP2010074210A (ja) 連接符号の演算回路及びアドレス制御方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant