KR20040092376A - 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법 - Google Patents
몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법 Download PDFInfo
- Publication number
- KR20040092376A KR20040092376A KR1020040002393A KR20040002393A KR20040092376A KR 20040092376 A KR20040092376 A KR 20040092376A KR 1020040002393 A KR1020040002393 A KR 1020040002393A KR 20040002393 A KR20040002393 A KR 20040002393A KR 20040092376 A KR20040092376 A KR 20040092376A
- Authority
- KR
- South Korea
- Prior art keywords
- modulus
- carry
- bit
- multiplier
- compressors
- Prior art date
Links
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
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/60—Methods 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/72—Methods 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/728—Methods 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 using Montgomery reduction
-
- 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
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
- G06F7/5336—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
-
- 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
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
- G06F7/5336—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
- G06F7/5338—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
- Control Of Positive-Displacement Pumps (AREA)
Abstract
몽고메리 모듈러스 곱셈 모듈의 모듈러스 곱셈 동작에서의 전력 소비를 감소시키고, 계산 속도를 증가시키는 방법이 제공된다. 코딩 스킴은 멀티플 모듈러스 값들을 얻기위한 가산기 및 메모리 소자의 필요성을 감소시키고, 캐리 저장 가산 및 캐리 전파 가산의 사용은 곱셈 모듈의 계산 속도를 향상시킨다. 특히, 본 발명은 정수 모듈러 연산 뿐만 아니라 다항식 모듈러 연산을 수행할 수 있다.
Description
본 발명은 데이타 보안을 위한 암호화(cryptography) 시스템에 관한 것으로서, 특히 암호화시스템에서의 모듈러 곱셈연산을 위한 장치 및 방법에 관한 것이다.
타원 곡선 암호법(Elliptic Curves CryptoSystem, ECC)은 정수 모듈러 연산을 바탕으로 한 GF(p) 연산과 다항식 모듈러 연산을 바탕으로 한 GF(2m)의 연산으로 구성된다.
정수 모듈러 연산인 몽고메리 모듈러 곱셈 알고리즘은 다음 수학식 1과 같다.
모듈러 지수 알고리즘(modular exponential algorithm)에서, A, B 및 N은 각각 승수, 피승수 및 모듈러 수(modular number)이고, 각각은 n 비트이다.
도 1은 모듈러스 선택기(1), 부스 레코더(12) 및 누산기(2)를 이용하여 구현된 종래의 몽고메리 모듈러 곱셈 알고리즘의 하드웨어 구성을 보여주고 있다. 다중 모듈러스 선택기(1)는 다중 모듈러스(0, M, 2M 및 3M) 중 하나의 값을 선택하고, 선택된 값을 캐리 전파 가산기(carry propagation adder, CPA)(14)으로 출력한다. 값 3M을 얻기 위해서는 부가적인 가산기가 요구되고, 하드웨어 크기의 증가와 계산 속도의 저하를 초래한다. 누산기(2)는 2 개의 CPA들(14, 11)을 포함한다. 각 CPA는 누산기의 전달 지연 시간을 증가시키고 계산 속도를 저하시킨다.CPA(11)는 피승수 선택기(13)로부터의 부분곱(partial product value)과 누산기(2)의 이전 출력 P[i]를 받아들인다. 피승수 선택기(13)는 부분곱(-2A, -A, 0, A, 2A)을 얻기 위하여 승수와 부스 레코더(Booth Recoder)(12)의 출력을 받아들인다. CPA(11)는 부분곱 및 P[i]를 더한다. 누산값 P{i+1]을 얻기 위해 CPA(11)의 출력은 CPA(14)로 입력된다. 그 결과, 몽고메리 곱셈 P[i+1]=ABR-1 mod M을 얻을 수 있다.
다항식 모듈러 연산은 수학식 2와 같다.
A(x) 및 B(x)는 GF(2m)의 원소이고, G(x)는 차수 m인 원시 다항식이다. A(x), B(x) 및 G(x)는 수학식 3과 같이 표현된다.
B(x)=bn-1xn-1+ bn-2xn-2+ … + b1x + b0
G(x)=gn-1xn-1+ gn-2xn-2+ … + g1x + g0
일반적으로 정수 모듈러 연산을 위한 곱셈기와 다항식 모듈러 연산을 위한 곱셈기는 각각 별도로 구성된다. 정수 모듈러 연산 및 다항식 모듈러 연산을 모두할 수 있는 곱셈기가 구현된다면 하드웨어 크기는 크게 감소될 수 있을 것이다.
따라서, 본 발명의 목적은 하드웨어의 크기를 늘리지 않으면서 모듈러 연산속도를 향상시키는 곱셈 연산장치를 제공함에 있다.
본 발명의 다른 목적은 래딕스-4 논리연산을 기반으로 하여 몽고메리 곱셈 알고리즘의 하드웨어 구성 및 동작을 효율적으로 실현하는 곱셈 연산장치를 제공함에 있다.
도 1은 모듈러스 선택기, 부스 레코더 및 누산기를 이용하여 구현된 종래의 몽고메리 모듈러 곱셈 알고리즘의 하드웨어 구성을 보여주는 도면;
도 2는 본 발명의 바람직한 실시예에 따른 모듈러 곱셈기의 전체적인 구성을 보여주는 도면;
도 3은 본 발명의 바람직한 실시예에 따른 모듈러스 레코더의 코딩 스킴을 보여주는 도면;
도 4는 모듈러스 레코더의 구체적인 구성 예를 보여주는 도면;
도 5는 본 발명의 바람직한 실시예에 따른 부스 레코더의 코딩 스킴을 보여주는 도면;
도 6은 부스 레코더의 구체적인 구성 예를 보여주는 도면;
도 7은 CSA를 사용한 본 발명의 실시예를 보여주는 도면;
도 8은 완전 컴프레서(201)의 일 예;
도 9는 축소된 컴프레서(203)의 일 예;
도 10은 도 9에 도시된 축소된 컴프레서들을 포함하는 누산기(171a)를 상세히 보여주는 도면;
도 11은 CPA를 사용한 본 발명의 실시예;
도 12는 본 발명의 실시예에 따른 k번째 비트 멀티플렉서 그룹;
도 13은 도 11에 도시된 멀티플렉서 그룹이 도 10에 도시된 누산기에 포함된 상세 회로도;
도 14는 본 발명의 다른 실시예에 따른 곱셈기;
도 15는 도 14에 도시된 부스 레코더의 코딩 스킴;
도 16은 도 15의 코딩 스킴에 따라서 부스 레코더를 구현한 회로의 실시예;
도 17은 정수 모듈러 연산과 다항식 모듈러 연산을 선택적으로 수행할 수 있는 본 발명의 바람직한 실시예에 따른 곱셈기;
도 18은 bIA를 구하기 위한 본 발명의 바람직한 실시예에 따른 분해값 선택기의 코딩 스킴을 보여주는 도면;
도 19는 본 발명의 바람직한 실시예에 따른 모듈러스 선택기의 코딩 스킴을 보여주는 도면;
도 20은 도 17에 도시된 누산기의 상세한 회로 구성; 그리고
도 21은 본 발명의 실시에에 따른 k번째 비트 멀티플렉서 그룹들을 보여주고 있다
본 발명의 실시예에서는, 래딕스-4 논리연산을 기반으로 하여 몽고메리 곱셈알고리즘을 적용하며, 이를 래딕스-4 인터리브 몽고메리 곱셈 알고리즘(Radix-4 Interleaved Montgomery Multiplication Algorithm)이라 하고 R4IMM로 약칭한다.
본 발명의 실시예에서 보이는 곱셈장치의 논리연산체계는 공개키 방식의 암호화알고리즘을 적용하는 컴퓨터 시스템 또는 통신망에 적용될 수 있으며, 또한 휴대가능한 집적회로 카드(또는 스마트카드)에 내장되어 운용될 수 있다.
본 발명에 따른 실시예는 적어도 1224비트 이상의 큰 정수를 기반으로 하는 모듈로연산에 적용될 수 있다.
본 발명의 실시예를 설명하기에 앞서, 본 발명에 적용되는 모듈러 곱셈 알고리즘 R4IMM에서 참조되는 패래미터들(parameters)을 다음과 같이 정의한다.
M은 모듈러스(mudulus)로서 2보다 큰 양의 정수(integer)로서 홀수값(예컨대, 3, 7 등)을 가진다.
M'는 조건식 (-M*M') mod 4 = 1을 만족하는 정수이다.
n은 모듈러스 M의 비트길이(bit length)를 나타내는 값으로서 양의 정수이다. 본 발명의 실시예에서는 8로 할 것이다.
N은 모듈러스 M의 디지트길이(digit length)를 나타내는 값으로서 양의 정수이다.
여기서, n은 N의 2배값(n = 2N)으로서, n이 8이라면 N은 4가 된다.
R은 R = 2n= 22N의 조건을 만족하는 양의 정수이다. n이 8이라면 R은 256이 된다.
R-1은, R의 모듈로 역곱수로서, 조건식 (R*R-1) mod M = 1을 만족하는 양의 정수이다.
A는, 피승수(multiplicand)로서, 0 ≤ A < M의 조건을 만족하는 정수이다.
B는, 승수(multiplier)로서, 0 ≤ B < M의 조건을 만족하는 정수이다. 여기서,, bI∈ {0, 1, 2, 3}이다. bI는 2비트이다.
본 발명에 적용되는 R4IMM 알고리즘은 다음과 같다.
S0:= 0
for I := 0 to (N-1)
qI:= (((SI+ bIA) mod 4)*M') mod 4
SI+1:= (SI+ bIA + qIM) / 4
endfor
if (SN≥ M) SN:= SN- M
R4IMM 알고리즘에서 I는 디지트 인덱스 또는 연산의 반복회수를 나타내며, 알고리즘을 수행한 총 곱의 결과는 SN= A*B*R-1(mod M)으로 나타난다. 총 곱 SN의 범위는 0 ≤ SN< M이다. 상기 알고리즘에서 몫 qI는 'SI+ bIA + qIM의 하위 2비트가 "00"이 될 수 있도록 더해 줄 M의 갯수'를 나타낸다. 리던던트수 체계(residue number system; RNS)에서 어떤 수에 계수 M의 정수배를 더한 수는 원래의 수와 같으므로, 계수 M의 정수배인 모듈러스곱 qIM(이하, MMI; multiple of modulus)을 더한 수는 원래의 수와 같다. 또한, SI+ bIA + qIM의 하위 2비트를 "00"으로 만든 후에 래딕스값 4로 나누면(즉, 2비트씩 오른쪽으로 쉬프트함) 유효자리의 숫자는 그대로 보존되기 때문에 정보가 유실되지 않는다.
이와 같은 R4IMM 알고리즘을 하드웨어적으로 구현하기 위해서는, 부분곱 PPI와 모듈러스곱 MMI를 구해야 한다. 단위승수 bI와 몫 qI가 2비트이므로, 부분곱 PPI와 모듈러스곱 MMI는 다음과 같이 4가지 경우의 가능값들을 각각 가지도록 설정될 수 있을 것이다(여기서, bI∈ {0, 1, 2, 3}이고 qI∈ {0, 1, 2, 3}으로 함).
bIA = PPI∈ {0, A, 2A, 3A}
qIM = MMI∈ {0, M, 2M, 3M} 식 1
그러나,위 [식 1]과 같이 부분곱 PPI와 모듈러스곱 MMI를 설정하게 되면, 값 3A와 3M를 계산할 때 A 또는 M을 1비트 쉬프트한 값과 원래 값의 합을 구해야 한다(2A+A, 2M+M). 이를 하드웨어로 구현하기 위해서는 이러한 값을 계산할 독립된 가산기(adder)를 사용하거나 또는 이 값들을 미리 계산하여 메모리 등에 저장해 놓고 필요할 때마다 참조하는 방법을 사용하여야 한다. 그러한 방법은 하드웨어의 낭비를 초래하고, 또한 그 값들(3A, 3M)을 구하는 시간(미리 계산해 두거나 실시간으로 계산함)을 추가적으로 고려하여 하드웨어들 설계하여야 하므로 성능 저하의 요인이 될 수 있다.
그리하여, 본 발명에서는, 부분곱 PPI와 모듈러스곱 MMI를 구함에 따른 하드웨어 부담을 줄이고자 한다.
도 2는 본 발명의 바람직한 실시예에 따른 모듈러 곱셈기의 전체적인 구성을 보여 준다.
도 2의 모듈러 곱셈기(1000)는 모듈러스 레지스터(M_REG, 100)에 저장된 모듈러스(A), 피승수 레지스터(A_REG, 101)에 저장된 피승수(A), 승수 레지스터(B_REG, 102)에 저장된 승수(B), 모듈러스 레코더(Modulus recoder, 110),부스 레코더(Booth recoder, 140), 멀티플 모듈러스(multiple modulus, MMI)의 계산을 돕는 멀티플렉서(120), 부분곱(partial product, PPI)의 계산을 돕는 멀티플렉서(130), 그리고 모듈러 곱셈 연산을 돕는 누산기(170)를 포함한다. 누산기(170)는 부분곱(PPI), 멀티플 모듈러스(MMI) 및 보상 워드 신호(CW)를 입력받아 몽고메리 곱셈 결과를 출력한다. 본 발명의 실시예에서, 모듈러스 M은 양수이고, n비트(M[n-1:0])이다. 피승수 A는 양수 또는 음수이며, n+1비트(A[n:0])이고, 1 비트의 부호 비트를 가지며, 승수 B는 짝수 비트들을 갖는다. n이 짝수이면, B는 n+2 비트이고, 부호 비트는 2 비트이다. 또는 n이 홀수 이면, B는 n+1비트이고, 부호 비트는 1 비트이다. 승수 B는 매 클럭 사이클마다 2비트씩 우측으로 쉬프트된다. 승수 B의 하위 2비트 b1 및 b0와 비트 bR(비트 bR은 이전 사이클의 비트 b1)는 부스 레코더(140)로 제공된다.
본 발명의 바람직한 실시예에 따른 레지스터(100)는 모듈러스 M과 모듈러스 M의 1의 보수값M을 제공한다. 유사하게 레지스터(201)는 피승수 A와 피승수 A의 1의 보수값A을 제공하고, 레지스터(102)는 승수(B)를 제공한다.
곱셈기(1000)는 반복적인 프로세스로 모듈러 곱셈의 해답을 찾는다. 모듈러스 레코더(110) 및 멀티플렉서(120)는 모듈러스(MMI)를 선택하기 위해 사용된다. 모듈러스(MMI)를 선택하기 위하여, 모듈러스 레코더(110)는 누산기(170)로부터 반복적인 데이터를 받아들인다. 본 발명의 실시예에서 반복적인 데이터 SPPI[1:0]는,누산기(170)에 저장된 합(SI[1:0])과 캐리(CI[1:0])의 최하위 2 비트, 부분곱(PPI[1:0]) 그리고 부분곱 반전 표시 신호(NEG_PP)에 근거한다. 합(SI[1:0])과 캐리(CI[1:0])는 2-비트 가산기(181)에서 결합되어 SI[1:0]를 형성한다. 결합된 신호는 2-비트 가산기(182)에서 부분곱(PPI[1:0])과 부분곱 반전 표시 신호(NEG_PP)와 결합되어 SPPI[1:0]를 형성한다. 모듈러스 레코더(110)는 모듈러스의 최하위 비트 M[1]를 더 받아들인다. 모듈러스 레코더(110)는 SPPI[1:0] 및 모듈러스 M[1]를 이용하여 복수의 모듈러스 MMI의 선택을 결정하기 위한 출력 신호를 발생한다. 본 발명의 실시예에 따른 상술한 설명에서 비트 크기는 한정되지 않는다. SPPI는 2 비트 이상일 수 있으며 그에 따라 본 발명의 다른 구성들은 변경될 것이다.
모듈러스 레코더(110)는 복수의 신호들을 출력한다. 이 실시예에서, 모듈러스 레코더(110)는 2M, M, 0,M가운데 하나를 선택하기 위해 멀티플렉서로 선택 신호(SEL_MM[1:0])를 출력한다. 멀티플렉서(120)는 모듈러스 M과 모듈러스 선택 신호(SEL_MM[1:0])를 입력받고, MMI를 출력한다. MMI는 누산기(170)로 입력된다. 보상 워드 신호(CW)를 얻기 위해 모듈러스 반전 표시 신호(NEG_MM)는 반가산기(160)에서 부분곱 반전 표시 신호(NEG_PP)와 결합된다. 보상 워드 신호(CW)는 누산기(170)로 입력된다.
모듈러스 반전 표시 신호(NEG_MM)는 선택된 값I이 비트 반전될 것인 지의 여부를 나타내기 위해 사용된다. 또한, 부분곱 반전 표시 신호(NEG_PP)는 선택된 부분곱(PPI)이 비트 반전될 것인 지의 여부를 나타내기 위해 사용된다. 부분곱(PPI)은 부스 레코더(140), 멀티플렉서(130) 및 AND 게이트(150)에 의해 수행되는 동작에 근거한다. 부분곱(PPI)는 MMI및 CW와 함께 누산기(170)로 입력된다. 도 2에서 4:1 멀티플레서들이 도시되었으나 멀티플렉서의 특정비는 한정되지 않으며, 누산기는 5-2 컴프레서에 한정되지 않는다. 4:1 멀티플렉서는 2:1 멀티플렉서들 3 개로 대체될 수 있다.
도 3은 본 발명의 바람직한 실시예에 따른 모듈러스 레코더(110)의 코딩 스킴을 보여주고 있다. 도 3에는 모듈러스 레코더(110)로 입력되는 3 개의 입력 M[1] 및 SPPI[1:0]을 보여주고 있으나 본 발명은 입력들 및 출력들을 다양하게 변경할 수 있다.
전형적으로 복수의 모듈러스 MMI은 0, M, 2M 및 3M이다. 3M을 구하기 위해서는 1M에 2M을 더하기 위한 부가적인 가산기 또는 메모리 소자가 필요하다. 부가적인 가산기 및/또는 메모리 소자는 하드웨어 크기 및/또는 계산 지연 등을 초래하고 이는 계산 속도 및 전력 소모에 영향을 끼친다. 도 3의 코딩 스킴은 MMI의 값을 얻기 위해 부가적인 가산기 또는 메모리 소자없이 비트 반전 및 비트 쉬프트를 이용한다. 모듈러스 레코더(110)는 모듈러스 M의 두번째 최하위 비트 M[1]과 SPPI의 최하위 2비트를 입력받는다. 모듈러스 레코더(110)는 모듈러스 선택 신호(SEL_MM[1:0])를 출력한다. 선택된 모듈러스 값 MMI는 누산기(250)로 전송된다. 본 발명의 상술한 설명에서 값들의 비트 크기는 한정되지 않는다. SPPI는 2 비트 이상일 수 있으며, 그에 따라 본 발명의 다른 소자들은 변경될 수 있다.
도 4는 모듈러스 레코더(110)의 구체적인 구성 예를 보여주고 있다. 도 4에 도시된 예에서는, 모듈러스 레코더(110)가 인버터들(301-301)과 낸드 게이트들(311-317)로 구성되나, 모듈러스 레코더(110)의 회로 구현은 다양하게 변경될 수 있다.
감소된 하드웨어 크기 및 증가된 계산 속도 및 전력 감소를 위한 유사한 방법이 도 2 및 도 6에 도시된 바와 같은 부스 레코더(140)에 사용될 수 있다. 앞서 언급한 곱셈기(1000)는 모듈러스(MMI) 및 부분곱(PPI)을 누산기(170)로 입력해서 반복적인 프로세스로 모듈러 곱셈을 수행한다.
부스 레코더(140) 및 멀티플렉서(130)는 누산기(250)로 제공될 부분곱 PPI의 값들 0, A, 2A,A,2A을 선택하기 위해 사용된다. 도 5는 본 발명의 바람직한 실시예에 따른 부스 레코더(140)의 코딩 스킴을 보여주고 있다. 부스 레코더(140)는 승수 B[1] 및 B[0]의 최하위 2비트와 반복값 B[1]의 이전 값인 B[R]을 입력받고, 부분곱 선택 신호(SEL_PP[1:0]), 부분곱 인에이블 신호(EN_PP) 및 부분곱 반전 표시 신호(NEG_PP)를 출력한다. 도 5에는 부스 레코더(140)로 입력되는 3 개의 입력 B[1], B[0] 및 B[R]을 보여주고 있으나 본 발명은 입력들 및 출력들을 다양하게 변경할 수 있다.
PPI를 선택하기 위해, 부스 레코더(140)는 4 가지 값들2A,A, A, 2A 중 하나를 선택하기 위한 부분곱 선택 신호(SEL_PP[1:0])를 멀티플렉서(130)로 출력한다. 도 6은 부스 레코더(140)의 구체적인 구성 예를 보여주고 있다. 도 6에 도시된 예에서는, 부스 레코더(140)가 인버터들(321-323)과 낸드 게이트들(331-340)로 구성되나, 부스 레코더(140)의 회로 구현은 다양하게 변경될 수 있다.
다시 도 2를 참조하면, 멀티플렉서(130)는 피승수 A의 값 및 신호(SEL_PP[1:0])를 받아들이고, 출력을 AND 게이트(150)로 출력한다. AND 게이트(150)는 멀티플렉서(240)로부터의 입력과 부스 레코더(140)로부터의 부분곱 인에이블 신호(EN_PP)를 받아들인다. AND 게이트(150)는 부분곱(PPI)의 선택된 값을 누산기(170)로 출력한다. 부분곱 인에이블 신호(EN_PP)가 0일 때 AND 게이트(150)는 0인 PPI를 누산기(250)로 출력한다. 부분곱 반전 신호(NEG_PP)는 반가산기(160)로 입력된다. 부분곱 반전 신호(NEG_PP)의 1의 값은 새로운 부분곱(PPI)을 누산기(170)로 입력하기 위해서2A또는A중 하나를 구하기 위한 부분곱(PPI)에 대한 비트 반전이 수행될 것임을 나타낸다.
부분곱(PPI) 및 모듈러스(MMI)의 덧셈에서, 보상 워드 신호(CW)는 반가산기(160)로부터 누산기(170)로 전달된다. 누산기(170)는 부분곱(PPI), 모듈러스(MMI) 및 보상 워드 신호(CW)를 컴프레스 네트워크(171)로 입력한다. 컴프레스네트워크(171)는 CSA(Carry Save Adder) 및 CPA(Carry Propagate Adder)에서 사용된다. 앞서 설명한 도 1의 누산기는 CPA를 사용하여 전파 지연(propagation delay)으로 인해 동작 속도가 느렸다. CSA의 사용은 전파 지연을 감소시키고 계산 속도를 향상시키며 전력 소모를 감소시키므로써 동작 속도를 향상시킨다.
본 발명의 바람직한 실시예에서는 CSA 및 CPA를 혼합하여 계산 속도를 증가시키고, 전력 소모를 감소시킨다. 본 발명의 실시예에서 CPA는 마지막 반복에서 사용되고, CSA는 이전 반복에서 사용된다. 도 7 및 도 11은 CSA 및 CPA를 사용한 본 발명의 두 가지 실시예를 보여주고 있다.
본 발명의 바람직한 실시예에 따른 누산기(170a)가 도 7에 도시되어 있다. 누산기(170a)는 직렬로 연결된 n+2 개의 5-2 컴프레서들로 구성되며, 컴프레서들은 완전(full) 컴프레서들(예를 들면, 202)과 축소된(reduced) 컴프레서들(예를 들면, 203)로 나뉘어진다. 여기서, n은 모듈러스 값 M의 비트 길이이다. 누산기(170a)는 합(S)과 캐리(C)를 합 레지스터(S_REG, 173)와 캐리 레지스터(C_REG, 172)에 각각 저장한다. 합 레지스터(173) 및 캐리 레지스터(172)의 출력들은 캐리 전파 가산기(174)에 입력된다. 캐리 전파 가산기(174)는 리던던트 수(redundant number)를 정상 수(normal number)로 변환하고, 변환된 수를 최종 레지스터(175)에 저장한다.
이 실시예에서, 누산기(170a)로의 입력은 보상 워드 CW[1:0], 멀티플 모듈러스 값(MMI) 및 부분곱(PPI)이다. 처음 2 개의 완전 컴프레서들(201, 202)은 모듈러스(MMI[1:0]) 및 부분곱(PPI[1:0])과 함께 보상 워드(CW[1:0])를 입력받는다. 나머지 축소된 컴프레서들(203, 204, 205 등)은 멀티플 모듈러스의 나머지 비트들(MMI[n+1:2]) 및 부분곱(PPI[n+1:2])을 사용한다. 마지막 컴프레서(n+2 번째 컴프레서)(205)는 오버플로우를 방지하고, 첫번째 컴프레서는 세번째 전가산기가 없는 완전 컴프레서이다.
완전 컴프레서(201) 및 축소된 컴프레서(203)의 일 예가 도 8 및 도 9에 각각 도시되어 있다. 각 컴프레서는 현재 값(I) 및 다른 입력들을 이용하여 다음 값(I+1)을 얻기 위해 사용된다. 도 8은 본 발명의 바람직한 실시예에 따른 완전 컴프레서(201)를 보여주고 있다. 완전 컴프레서(201)는 복수의 입력들을 갖는다. 이 실시예에서, 완전 컴프레서(201)는 다섯 개의 입력들 즉, 1 비트 높은 컴프레서로부터의 다음 캐리 워드 비트값으로부터 얻어진 현재 캐리 워드 비트(CI), 2 비트 높은 컴프레서로부터의 다음 합 워드 비트로부터 얻어진 합 워드 비트(SI), 보상 워드(CW), 부분곱(PPI) 및 멀티플 모듈러스(MMI). 현재 컴프레서로 입력된 현재 캐리 워드 비트는 인덱스 "I"를 가지며, 나머지 고차 비트 컴프레서는 다음 캐리 워드 비트값(CI+1[k+1])을 출력한다. k는 "k"번째 컴프레서를 나타낸다. 다음 캐리 워드 비트 값(CI+1[k+1])은 캐리 레지스터(172)로 입력되고, 캐리 레지스터(172)는 현재 캐리 워드 비트값(CI)을 k번째 컴프레서로 출력한다. 현재 합 워드비트값(SI[k])은 k+2 컴프레서로부터의 다음 합 워드 비트값(SI+1[k+2])이 합 레지스터(173)로 입력되는 것에 의해서 구해진다. 상기 값들은 특정 비트 k, CI+1[k] 및 SI+1[k]에 대한 다음 캐리 워드 비트 및 다음 합 워드 비트 값을 구하기 위해 완전 컴프레서(201)에 의해서 사용된다. 이러한 값들은 각각 캐리 및 합 레지스터들(172, 173)을 통과한다. 앞서 설명한 바와 같이, 캐리 및 합 레지스터들(172, 173) 각각은 낮은 비트 컴프레서들로 입력들을 제공한다. 다음 캐리 워드 비트(CI+1[k]) 및 다음 합 워드 비트(SI+1[k])는 수학식 4와 같다.
= (CI[k]+SI[k])+PPI[k]+MMI[k]+CW[k]+CI1[k]+CI2[k]
단, k>1 이면, CW[k]는 입력되지 않는다.
본 발명의 실시예에서, 완전 컴프레서(201)는 3 개의 전가산기들을 포함한다. 제 1 전가산기(211)는 CI, SI및 CW를 입력받고, 제 1 전가산기 캐리(FCO1) 및 제 1 전가산기 합(FSO1)을 출력한다. 제 1 전가산기 캐리(FCO1)는 제 1 출력 캐리(CO1)로서 출력되어서 다음 높은 비트 컴프레서(k+1)의 입력(CI1[k+1])이 된다. 제 2 전가산기(212)는 제 1 전가산기 합(FSO1), 부분곱의 비트값(PPI[k]) 및 멀티플 모듈러스 비트값(MMI[k])을 받아들이고, 제 2 전가산기 캐리(FCO2) 및 제 2전가산기 합(FSO2)을 출력한다. 제 2 전가산기 캐리(FOC2)는 제 1 출력 캐리(CO2)로서 출력되어서 다음 높은 비트 컴프레서(k+1)의 입력(CI2[k+1])이 된다. 제 3 전가산기(213)는 제 2 전가산기 합(FSO2)과 낮은 비트 컴프레서(k-1)로부터의 CI1 및 CI2를 입력받고 제 3 전가산기 캐리(FCO3) 및 제 3 전가산기 합(FSO3)을 출력한다. 제 3 전가산기 캐리(FCO3)는 다음 캐리 워드 비트 값(CI+1)으로서 출력되어서 낮은 비트 컴프레서(k-1)로 입력되는 캐리 CI로 사용된다. 제 3 전가산기 합(FS03)은 2 비트 낮은 컴프레서(k-2)로 입력되는 SI로 사용된다. 비트 0에 대응하는 제 1 완전 컴프레서(201)는 다음 캐리 또는 합 워들을 출력하지 않는다. 따라서 제 3 완전 컴프레서는 제 1 전가산기를 필요로하지 않는다. 반면, 비트 1에 대응하는 제 2 완전 컴프레서(202)는 다음 합 워드 비트를 출력하지 않는다.
보상 워드(CW[1:0])는 2 비트를 가지므로 각각의 비트에 대한 2 개의 컴프레서들이 필요하다. 2 개의 컴프레서들(201, 202)은 복수의 값들을 입력받는 완전 컴프레서들이다. 본 발명의 실시예에서 컴프레서들(201, 202)은 5 가지 값들을 입력받는다. 높은 비트 컴프레서들[2:n+2]은 컴프레서들(201, 202)에 비해 적은 수의 값들을 입력받는 축소된 컴프레서들이다. 도 9에 도시된 축소된 컴프레서들은 제 1 전가산기가 반가산기로 대체된다. 따라서, 축소된 컴프레서 내의 반가산기(211)는 캐리(CI)와 합(SI)을 입력받고 제 1 반가산기 캐리(HCO1) 및 제 1 반가산기 합(HSO1)을 출력한다. 제 1 반가산기 캐리(HCO1)는 제 1 출력 캐리(CO1)로서, 다음 높은 비트 컴프레서(k+1)의 두번째 제 1 입력(CI1[k+1])으로 제공된다.제 2 전가산기(212)는 제 1 반가산기 합(HSO1), 컴프레서의 비트와 관련있는 부분곱 비트값(PPI[k]) 및 멀티플 모듈러스 비트값(MMI[k])을 입력받는다. 제 2 전가산기(212)는 제 2 전가산기 캐리(FCO2) 및 제2 전가산기 합(FSO2)을 출력한다. 제 2 전가산기 합(FSO2)은 제 2 출력 캐리(CO2)로서, 다음 높은 비트 컴프레서(k+1)의 제 2 입력(CI2[k+1]으로 제공된다. 제 3 전가산기(213)는 제 3 전가산기 캐리(FCO3) 및 제 3 전가산기 합(FSO3)을 출력한다. 제 3 전가산기 캐리(FCO3)는 다음 캐리 워드 비트(CI+1)로서, 캐리 레지스터(172)를 통과한 후 낮은 비트 컴프레서(k-1)의 입력(CI)으로 제공된다. 제 3 전가산기 합(FSO3)은 다음 합 워드 비트(SI+1)로서, 합 레지스터(173)를 통과하여 두 비트 낮은 컴프레서(k-2)의 입력(SI)으로 제공된다. 도 10은 도 9에 도시된 바와 같은 축소된 컴프레서들을 포함하는 누산기(171a)를 상세히 보여주고 있다.
본 발명의 실시예에 따른 도 10에 도시된 누산기(170a)는, 완전 컴프레서들과 축소된 컴프레서들이 직렬로 연결되고, 컴프레서들의 수는 멀티플 모듈러스 값(MMI) 및 부분곱 값(PPI)의 비트 크기에 따라 결정된다. 최하위 2 비트 컴프레서들은 보상 워드(CW)를 입력으로서 사용하는 완전 컴프레서들이다. 첫번째 비트 컴프레서(201)는 캐리들(CO1[0], CO2[0])을 출력한다. 캐리들(CO1[0], CO2[0])은 각각 다음 높은 비트(두번째 비트) 컴프레서(202)의 입력(CI1[1], CI2[1])이 된다. 이러한 구조는 마지막 컴프레서(n+2)까지 계속되고, 가장 높은 비트 컴프레서는 캐리 출력들(CO1[n+2], CO2[n+2])을 출력하지 않는다. 가장 높은 비트 컴프레서는 오버플로우를 방지하고, 가장 높은 비트 컴프레서의 다음 캐리 워드 비트 및 다음 합 워드 비트 값들로부터 두번째 입력들이 구해진다.
각 컴프레서들의 다음 캐리 워드 비트값 및 다음 합 워드 비트값은 각각 캐리 및 합 레지스터들(172, 173)에 저장된다. 마지막 결과는 합 레지스터(173) 내에 저장된 일부분과 캐리 레지스터(172)에 저장된 다른 부분 형태로 분할되어서 발생된다. 최종 단일 워드 결과(SN[n:0])를 얻기 위해서, 합 레지스터(172)와 캐리 레지스터(173)에 저장된 값들은 캐리 전파 가산기(174)에서 더해지고, 최종 단일 워드 결과(SN[n:0])는 최종 레지스터(175)에 저장된다. 종래 시스템의 CPA 모드 대신에 본 발명의 실시예에 따른 시스템은 도 7에 도시된 바와 같이, CSA 모드를 사용한다. CSA 컴프레서는 각각의 가산기와 관련있는 3 개의 지연 경로들을 갖는다. 종래의 누산기에서, 지연 경로는 각 비트마다 존재하였다.
그러므로, 본 발명의 바람직한 실시예에 따른 도 7에서, 비트 크기 n과 무관하게 모든 컴프레서들에 대해 세 개의 지연 경로들이 존재한다. 종래의 기술에서는 "n"개의 지연 경로가 있었다. 따라서 본 발명은 모듈러 곱셈의 계산 속도를 현저하게 향상시킬 수 있다. 예를 들어, 종래의 1024 비트 곱셈기는 1024 지연(전가산기 경로)을 갖는 누산기를 포함하였으나, 본 발명의 바람직한 실시예에 따른 경로 지연은 단일 완전 컴프레서 또는 축소된 컴프레서에서 3이다. 이 예에서, 본 발명은 종래의 시스템에 비해 300배 빠르다.
본 발명의 다른 실시예는 누산기에서 CSA 및 CPA 사이를 스위칭할 수 있는 다양한 조합들을 포함한다. 도 11는 본 발명의 다른 실시예에 따른 누산기(170b)를 보여주고 있다. 누산기(170b)는 컴프레서들와 결합하여 원할 때마다 CPA 및 CSA 모드 사이를 스위칭하는데 사용되는 멀티플렉서들(MXGn+1~MXG0)을 포함한다. 이와 같은 구성에서 캐리 전파 가산기(174)는 리던던트 수(redundant number)를 노말 수(normal number)로 변환하지 않는다. 도 10의 누산기(170b)는 CSA 또는 CPA 모드에서 선택적으로 동작하고, 출력은 이미 노말 수 형태이다. 캐리 전파 가산기(174)를 제거함으로서 요구되는 하드웨어 크기가 감소된다.
멀티플렉서들(MXGn+1~MXG0)은 컴프레서들 내의 전가산기들 사이의 전기적 연결을 제어할 수 있다. 도 11에서, 처음 두 비트 컴프레서들(301, 302)은, 낮은 비트 컴프레서(301)에 의해서 사용되는 현재 캐리 워드 비트값(CI[k-1])을 얻기 위해 다음 캐리 워드 비트값(CI+1[k])이 캐리 레지스터(172)를 통과하지 않는다는 점을 제외하고는 컴프레서들(201, 202)과 각각 유사하게 동작한다. CI+1[k]는 다음 높은 비트 컴프레서(k+1)를 통과하여 높은 비트 컴프레서의 멀티플렉서 그룹(400-2)으로 입력된다.
도 12는 본 발명의 실시예에 따른 k번째 비트 멀티플렉서 그룹(400)을 보여주고 있고, 도 13은 도 11에 도시된 멀티플렉서 그룹(400)이 도 10에 도시된 누산기(170b)에 포함된 상세 회로도이다. 계산 모드(CSA 사용 모드 또는 CPA 사용 모드)는 스위칭 신호(SW)에 의해서 제어될 수 있다. 본 발명의 실시예에서, k번째 비트의 멀티플렉서(400)는 도 9의 축소된 컴프레서(203)의 제 2 가산기(212)와 제 3 가산기(213) 사이에 위치한다. 따라서, 제 1 멀티플렉서(410)로 입력되는 제 1 입력(401)은 가산기(212)로부터의 FSO2이다. 제 1 멀티플렉서(410)의 제 2 입력(402)은 k-1번째 비트 컴프레서로부터의 현재 캐리 워드 비트값(CI[k-1])이다. 현재 캐리 워드 비트값은 k-1번째 비트 컴프레서에 대한 다음 캐리 워드 비트값 CI+1[k-1]으로부터 구해진다. 제 2 멀티플렉서(411)는 두 가지 값들을 입력받는데, 하나(403)는 k-1번째 비트 컴프레서로부터의 제 1 출력 캐리값(CO1[k-1])이고, 다른 하나(404)는 k번째 비트 컴프레서로부터의 현재 합 워드 비트값(SI[k])이다. 현재 합 워드 비트값은 다음 합 워드 비트값(SI+1[k])이 합 레지스터(173)를 통과하면서 구해진다. 제 3 멀티플렉서(412)의 두 입력들(405, 406)은 각각 k-1 비트 컴프레서로부터의 제 2 출력 캐리값(CO2[k-1]) 및 k-1 비트 컴프레서로부터의 다음 캐리 워드 비트값(CI+1[k-1])이다.
스위칭 신호(SW)는 각 멀티플렉서들(410, 411, 412)의 두 입력들 중 어느 것을 제 3 전가산기(213)로 전달할 것인지를 결정한다. 어떤 값이 멀티플렉서들(410, 411, 412)을 통과하느냐에 따라서 캐리 저장 가산 또는 캐리 전파 가산의 동작 모드가 결정된다. 스위칭 신호(SW)의 값이 0이면, 스위칭 컴프레서들은 캐리 세이브 가산 모드로 동작된다. 만일 스위칭 신호(SW)의 값이 1이면,컴프레서들의 아래 전가산기들은 직렬로 연결되고, 캐리 전파 가산 모드로 동작된다. 전가산기(213)는 다음 캐리 워드 비트값과 다음 합 워드 비트 값을 앞서 설명한 방법으로 출력한다.
캐리 및 합 워드들은 N번 반복해서 계산된다. N은 n이 짝수일 때 (n+2)/2이고, n이 홀수일 때 (n+1)/2이다. 현재 반복 사이클에서 출력되는 캐리 및 합 값들은 이전 반복 사이클의 캐리 및 합 값들과 더해지고 캐리 레지스터(172) 및 합 레지스터(173)에 각각 더해진다. 최종 결과(SN[n:0])는 스위칭 신호(SW)의 변경에 따라서 레지스터들(172, 173)에 각각 저장된 캐리 및 합을 더하는 것에 의해서 구해진다.
CPA 가산기(174)와 레지스터(175)를 더한 것보다 멀티플렉서 그룹들(400)의 크기가 매우 작기 때문에 도 10에 도시된 실시예는 하드웨어 크기를 감소시킨다.
도 14는 본 발명의 다른 실시예에 따른 곱셈기(2000)를 보여주고 있다. 도 14에 도시된 곱셈기(2000)는, 도 2에 도시된 곰셈기(1000)의 하나의 멀티플렉서(130)를 세 개의 멀티플렉서들(131, 132, 133)로 대체하였다. 또한, 멀티플렉서가 분할됨에 따라, 도 2에 도시된 부스 레코더(140)가 멀티플렉서들(131, 132, 133)로 제공될 신호들(SFT_PP, NEG_PP)을 발생하기 위한 부스 레코더(190)로 대체된다.
도 15는 도 14에 도시된 부스 레코더(190)의 코딩 스킴을 보여주고 있고, 도 16은 도 15의 코딩 스킴에 따라서 부스 레코더(190)를 구현한 회로의 실시예를 보여준다. 부스 레코더(190)는 인버터들(401-403)과 낸드 게이트들(411-419)을 포함한다.
도 17은 정수 모듈러 연산과 다항식 모듈러 연산을 선택적으로 수행할 수 있는 본 발명의 바람직한 실시예에 따른 곱셈기를 보여주고 있다. 도 2에 도시된 곱셈기(1000) 및 도 14에 도시된 곱셈기(2000)는 정수 모듈러 연산만을 수행할 수 있었으나 도 17에 도시된 곱셈기(3000)는 주어진 선택 신호(SEL_FLD)에 따라서 정수 모듈러 연산과 다항식 모듈러 연산을 선택적으로 수행할 수 있다. 이 실시예에서, 곱셈기(3000)는 선택 신호(SEL_FLD)가 '0'일 때 정수 모듈러 연산 모드를 수행하고, 선택 신호(SEL_FLD)가 '1'일 때 다항식 모듈러 연산 모드를 수행한다. 곱셈기(3000)의 정수 모듈러 연산 모드는 도 2에 도시된 곱셈기(1000)의 정수 모듈러 연산과 동일하므로 이하 다항식 모듈러 연산 모드만을 설명한다. 또한, 도 17에 도시된 곱셈기(1000)에서 도 2의 곱셈기(1000)와 동일하게 동작하는 구성 요소들은 동일한 참조 번호를 병기한다.
몽고메리 모듈러 곱셈 알고리즘으로 다항식 연산을 수행할 때 곱의 결과는 S(x)I+1:= (S(x)I+ bIA(x) + qIM(x))이다. 앞서 설명한 정수 연산과 마찬가지로, qI는 (S(x)I+ bIA(x) + qIM(x))의 최하위 2비트가 "00"이 되도록 설정되어야 한다. 그리고, bI∈ {0, 1, 2, 3}이고 bIA ∈ {0, A, 2A, 3A}이다. 본 발명의 실시예에서는 3A를 구하기 위해서 2A+A를 수행한다. 그러므로, bIA ∈ {0, A, 2A, 2A+A}이다.
레지스터(101)에 저장된 승수 B는 매 사이클마다 2비트씩 우측으로 쉬프트된다. 승수 B의 최하위 2비트 b1 및 b0는 분해값 선택기(530)로 제공된다. 분해값 선택기(530)는 승수 B의 최하위 2비트 b1 및 b0를 입력받고, PPI[n+1:0]가 0, A 또는 2A가 되도록 그리고 AI[2+1:0]이 0 또는 A가 되도록 신호들(SEL_A1[1:0], SEL_A2, SEL_A3)을 출력한다. 도 18은 bIA를 구하기 위한 본 발명의 바람직한 실시예에 따른 분해값 선택기(530)의 코딩 스킴을 보여주고 있다.
PPI[n+1:0]을 선택하기 위해, 분해값 선택기(530)는 3 가지 값들 0, A 및 2A 중 하나를 선택하기 위한 선택 신호(SEL_A1[1:0])를 멀티플렉서(520)로 출력한다. 멀티플렉서(520)는 다항식 모듈러 연산 모드일 때(즉, SEL_FLD가 '1'일 때) 선택 신호(SEL_A1[1:0])를 멀티플렉서(130)로 출력한다. 멀티플렉서(130)는 피승수 A의 값들 및 선택 신호(SEL_A1[1:0])를 받아들이고, 출력을 AND 게이트(150)로 출력한다. 멀티플렉서(550)는 모드 신호(SEL_FLD)가 '1'일 때 분해값 선택기(530)로부터의 선택 신호(SEL_A2)를 AND 게이트(150)로 출력한다. AND 게이트(150)는 멀티플렉서(130)로부터의 입력과 멀티플렉서(550)로부터의 선택 신호(SEL_A2)를 받아들이고, 제 1 분해값(PPI[n+1:0])을 누산기(580)로 출력한다.
AI[n+1:0]를 선택하기 위해, 분해값 선택기(530)는 0 또는 A 중 하나를 선택하기 위한 선택 신호(SEL_A3)를 멀티플렉서(540)로 출력한다. 멀티플렉서(540)는 0, 피승수 A의 값 및 선택 신호(SEL_A3)를 받아들이고, 제 2 분해값(AI[n+1:0])을출력한다. 멀티플렉서(540)의 출력 중 최하위 2비트(AI[1:0])는 멀티플렉서(560)와 가산기(591)로 입력되고, 나머지 비트(AI[n+1:2])는 누산기(580)로 입력된다.
멀티플렉서(560)는 다항식 모듈러 연산 모드일 때 멀티플렉서(540)로부터의 출력중 최하위 2비트(AI[1:0])를 CW[1:0]으로서 출력한다. 멀티플렉서(560)의 출력(CW[1:0])은 누산기(580)로 입력된다.
가산기(591)는 제 1 분해값(PPI[n+1:0])의 최하위 2비트(PPI[1:0])와 제 2 분해값(AI[n+1:0])의 최하위 2비트(AI[1:0])를 더하고, 결과를 가산기(592)로 출력한다. (PPI[1:0]+AI[1:0])는 bIA(x)[1:0]이다.
가산기(592)는 가산기(591)의 출력과 합 레지스터(583)에 저장된 값의 하위 2 비트(SI[1:0])를 더하고, 결과(SSPPI[1:0])를 모듈러스 선택기(570)로 출력한다.
모듈러스 선택기(570)는 (S(x)I+ bIA(x) + qIM(x))의 최하위 2비트가 '00'이 될 수 있도록 모듈러스(MMI[n+1:0])를 선택한다. 몽고메리 알고리즘에서, 모듈러스의 최하위 비트(MMI[0])는 항상 1이다. 그러므로, (S(x)I+ bIA(x))와 M[1]로부터 qI가 결정된다.
도 19는 본 발명의 바람직한 실시예에 따른 모듈러스 선택기(570)의 코딩 스킴을 보여주고 있다.
MMI[n+1:0]을 선택하기 위해, 모듈러스 선택기(570)는 3 가지 값들 0, M 및 2M 중 하나를 선택하기 위한 선택 신호(SEL_M1[1:0])를 멀티플렉서(510)로 출력한다. 멀티플렉서(510)는 다항식 모듈러 연산 모드일 때(즉, SEL_FLD가 '1'일 때) 선택 신호(SEL_M1[1:0])를 멀티플렉서(120)로 출력한다. 멀티플렉서(120)는 모듈러스 M의 값들 및 선택 신호(SEL_M1[1:0])를 받아들이고, 출력(MMI[n+1:0])을 누산기(580)로 출력한다.
누산기(580)의 상세한 회로 구성이 도 20에 도시되어 있다. 누산기(580)는 도 13에 도시된 누산기(170b)와 동일하게, 직렬로 연결된 n+2 개의 5-2 컴프레서들로 구성되며, 컴프레서들은 완전 컴프레서들과 축소된 컴프레서들로 나뉘어진다. 여기서, n은 모듈러스 값 M의 비트 길이이다. 본 발명의 실시예에 따른 누산기(580)는 도 13에 도시된 누산기(170b)의 구성 요소들에 멀티플렉서 그룹(620)과 멀티플렉서들 (640, 650)을 더 포함한다. 멀티플렉서 그룹(620)은 멀티플렉서 그룹(610)과 전가산기(630) 사이에 위치한다.
정수 모듈러 연산 모드(SEL_FLD='0')에서, 멀티플렉서 그룹(610)으로부터의 출력은 멀티플렉서 그룹(620)을 통해 전가산기(630)로 입력되고, 전가산기(630)로부터 출력되는 캐리는 낮은 비트 컴프레서의 캐리 입력으로 전달된다. 누산기(580)의 정수 모듈러 연산 모드는 도 13에 도시된 누산기(170b)의 동작과 동일하다.
도 21은 본 발명의 실시에에 따른 k번째 비트 멀티플렉서 그룹들(610, 620)을 보여주고 있다. 멀티플렉서 그룹(610)은 도 12에 도시된 멀티플렉서 그룹(400)과 동일하게 제 1 내지 제 3 멀티플렉서들(611, 612, 613)을 가지며 제 1 내지 제 6 입력들(601-606)을 받아들인다. 도 12 및 도 21에 도시된 멀티플렉서 그룹들(400, 610)은 인출 번호만 다를 뿐 동일한 신호를 받아들여서 동일하게 동작하므로 상세한 설명은 생략한다.
멀티플렉서 그룹(620)은 다항식 모듈러 연산 모드동안 멀티플렉서(540)로부터의 제 2 분해값(AI[n+1:2])을 제 1 분해값(PPI[n+1:2])과 더하기 위해 제공된다. 제 2 분해값(AI[n+1:2])의 하위 2비트는 멀티플렉서(560)를 통하여 CW[1:0]로서 출력되어서 누산기(581)로 입력된다. 그러므로, CW[1:0]은 누산기(580)에 의해서 제 1 분해값의 하위 2비트(PPI[1:0])와 더해진다. 멀티플렉서 그룹(620)은 제 4 및 제 5 멀티플렉서들(621, 622)을 포함한다. 제 4 멀티플렉서(621)는 제 2 멀티플렉서(612)로부터의 출력과 멀티플렉서(540)로부터의 제 2 분해값(AI[k])를 받아들인다. 제 5 멀티플렉서(622)는 제 3 멀티플렉서(613)로부터의 출력과 '0'을 받아들인다. 제 4 및 제 5 멀티플렉서들(621, 622)은 정수 모듈러 연산 모드(SEL_FLD='0')에서 제 2 및 제 3 멀티플렉서들(612, 613)로부터의 입력들을 각각 출력하고, 다항식 모듈러 연산 모드(SEL_FLD="1")에서 AI[k] 및 0을 출력한다. 멀티플렉서들(621, 622)의 출력들(I12, I13)은 전가산기(630)로 제공된다.
다시 도 20을 참조하면, k번째 비트 멀티플렉서들(640, 650)은 다항식 모듈러 연산 모드(SEL_FLD='1') 동안 제 2 분해값(MI[k])을 k번째 컴프레서의 캐리 입력으로 선택적으로 제공한다. 이는 제 1 분해값(MMI[n+1:0])과 제 2 분해값(MI[n+1:0])을 더해서 qIM(x)를 구하기 위함이다.
멀티플렉서(650)는 모듈러스 선택기(570)로부터의 선택 신호(SEL_M2)에 응답해서 모듈러스(M[k]) 또는 '0'을 제 2 분해값(MI[k])으로서 멀티플렉서(640)로 출력한다. 멀티플렉서(640)는 정수 모듈러 연산 모드(SEL_FLD='0')일 때 캐리 레지스터(582)의 k번째 캐리 비트를 그리고 다항식 모듈러 연산 모드(SEL_FLD='1')일 때 멀티플렉서(650)로부터의 제 2 분해값(MI[k])을 낮은 비트 컴프레서의 캐리 비트로서 제공한다.
도 2에 도시된 정수 모듈러스 연산을 위한 곱셈기(1000)에 몇몇 구성 요소들을 부가한 도 17의 곱셈기(3000)는 정수 모듈러스 연산 뿐만 아니라 다항식 모듈러스 연산을 수행할 수 있다.
전술한 본 발명의 실시예에 의하면, 본 발명은 모듈러 곱셈기에서 최소한의 구성요소만으로 캐리-세이브 모드와 캐리전파 모드로 선택적으로 동작할 수 있는 누산기의 구조를 제공함으로써, 하드웨어적인 부담을 줄이면서 모듈러 연산속도를 향상시키는 효과가 있다.
Claims (75)
- n-비트 모듈러스 M 및 이전 합 그리고 현재 부분곱을 받아들이고, 선택 신호를 발생하는 모듈러스 레코더; 그리고입력들 -M, 0, M 및 2M을 받아들이고, 상기 선택 신호에 근거해서 상기 입력들 중 하나를 선택하는 멀티플렉서를 포함하는 멀티플 모듈러스 선택기.
- 제 1 항에 있어서,상기 입력 -M은 상기 모듈러스 M을 반전시키는 것에 의해서 구해지는 멀티플 모듈러스 선택기.
- 제 1 항에 있어서,상기 입력 2M은 상기 모듈러스 M을 쉬프트하는 것에 의해서 구해지는 멀티플 모듈러스 선택기.
- 제 1 항에 있어서,상기 모듈러스 M은 레지스터에 저장되는 멀티플 모듈러스 선택기.
- 제 1 항에 있어서,상기 모듈러스 레코더는 누산기로 입력되는 멀티플 모듈러스 반전 표시신호(NEG_MM)를 더 발생하는 멀티플 모듈러스 선택기.
- 제 1 항에 있어서,상기 n-비트 모듈러스 M은 둘째 최하위 비트 M[1] 그리고 이전 합과 현재 부분곱의 합인 SPPI[1:0]을 포함하는 멀티플 모듈러스 선택기.
- 제 1 항에 있어서,상기 선택 신호는 2비트 SEL_MM[1:0]을 포함하는 멀티플 모듈러스 선택기.
- 캐리 가산 모드로 동작하고, 각각이 멀티플 모듈러스, 부분곱, 대응하는 현재 합 및 대응하는 현재 캐리를 받아들이고, 대응하는 다음 합 및 대응하는 다음 캐리를 발생하는 복수의 컴프레서들과;상기 복수의 컴프레서들 각각으로부터 상기 대응하는 다음 합을 받아들이고, 대응하는 갱신된 현재 합을 출력하는 합 레지스터; 그리고상기 복수의 컴프레서들로부터 상기 대응하는 다음 캐리를 받아들이고, 대응하는 갱신된 현재 캐리를 출력하는 캐리 레지스터를 포함하는 누산기.
- 제 8 항에 있어서,상기 합 레지스터 및 상기 캐리 레지스터는 분리된 레지스터인 누산기.
- 제 8 항에 있어서,상기 멀티플 모듈러스는 모듈러스로부터 생성되는 누산기.
- 제 10 항에 있어서,상기 n은 상기 모듈러스의 비트 길이이고 상기 복수의 컴프레서들은 n+3 컴프레서들을 포함하는 누산기.
- 제 11 항에 있어서,상기 모듈러스는 n-비트 레지스터에 저장되는 누산기.
- 제 8 항에 있어서,상기 부분곱은 승수 및 피승수로부터 구해지는 누산기.
- 제 13 항에 있어서,상기 승수의 비트 길이는 n+1인 누산기.
- 제 14 항에 있어서,상기 승수는 (n+1)-비트 레지스터에 저장되는 누산기.
- 제 13 항에 있어서,n이 짝수이면, 상기 승수의 비트 길이는 n+2이고, n이 홀수이면, 상기 승수의 비트 길이는 n+1인 누산기.
- 제 16 항에 있어서,n이 짝수이면, 상기 승수는 (n+2)-비트 레지스터에 저장되고, n이 홀수이면, 상기 승수는 (n+1)-비트 레지스터에 저장되는 누산기.
- 제 8 항에 있어서,상기 복수의 컴프레서들은 5:2 컴프레서인 누산기.
- 제 8 항에 있어서,상기 복수의 컴프레서들의 제 1 그룹은 상기 대응하는 다음 합 및 상기 대응하는 다음 캐리를 발생하기 위한 보상 워드를 더 받아들이는 누산기.
- 제 19 항에 있어서,상기 복수의 컴프레서들의 제 1 그룹은 완전 컴프레서들인 누산기.
- 제 19 항에 있어서,상기 복수의 컴프레서들의 제 2 그룹은 상기 보상 워드를 받아들이지 않는누산기.
- 제 21 항에 있어서,상기 복수의 컴프레서들의 상기 제 2 그룹은 축소된 컴프레서들인 누산기.
- 제 8 항에 있어서,상기 부분곱 및 상기 멀티플 모듈러스는 각각 n+2 비트인 누산기.
- 제 19 항에 있어서,상기 보상 워드는 2 비트인 누산기.
- 제 19 항에 있어서,상기 완전 컴프레서는 3 개의 전가산기들로 구성되는 누산기.
- 제 22 항에 있어서,상기 축소된 컴프레서는 1 개의 반가산기와 2 개의 전가산기들로 구성되는 누산기.
- 제 8 항에 있어서,최종 갱신된 현재 합 및 최종 갱신된 현재 캐리를 받아들이고, 최종 합을 출력하는 캐리 전파 가산기; 그리고상기 최종 합을 저장하기 위한 최종 레지스터를 더 포함하는 누산기.
- 제 8 항에 있어서,상기 복수의 컴프레서들은 캐리 가산 모드 및 캐리 전파 모드로 동작하는 누산기.
- 제 9 항에 있어서,상기 캐리 가산 모드 및 상기 캐리 전파 모드는 제어 신호에 의해서 결정되는 누산기.
- 제 28 항에 있어서,복수의 컴프레서들의 제 1 그룹은 보상 워드를 더 수신히고 상기 대응하는 다음 합 및 상기 대응하는 다음 캐리를 발생하는 누산기.
- 제 30 항에 있어서,상기 복수의 컴프레서들의 제 1 그룹은 완전 컴프레서들인 누산기.
- 제 30 항에 있어서,상기 복수의 컴프레서들의 제 2 그룹은 상기 보상 워드를 수신하지 않는 누산기.
- 제 32 항에 있어서,상기 복수의 컴프레서들의 제 2 그룹은 축소된 컴프레서들인 누산기.
- 제 33 항에 있어서,상기 축소된 컴프레서들 각각은,캐리 가산 모드 및 캐리 전파 모드로 동작할 수 있도록 상기 축소된 컴프레서들을 변형하는 멀티플렉서 그룹을 포함하는 누산기.
- 제 34 항에 있어서,각 멀티플렉서 그룹은 3 개의 2:1 멀티플렉서들을 포함하는 누산기.
- 제 33 항에 있어서,각각의 축소된 컴프레서들은,상기 제어 신호에 따라서 상기 캐리 가산 모드 또는 상기 캐리 전파 모드 중 어느 하나로 동작하도록 상기 축소된 컴프레서들을 변형하는 멀티플렉서 그룹을 포함하는 누산기.
- 제 36 항에 있어서,상기 캐리 가산 모드는,현재 컴프레서의 중간 전가산기로부터 현재 컴프레서의 하부 전가산기로 전달되는 제 1 신호, 낮은 비트 컴프레서의 상부 가산기로부터 상기 현재 컴프레서의 하부 전가산기로 전달되는 제 2 신호 그리고 낮은 비트 컴프레서의 중간 전가산기로부터 상기 현재 컴프레서의 하부 전가산기로 전달되는 제 3 신호를 포함하는 누산기.
- 제 36 항에 있어서,상기 캐리 전파 모드는 하위 비트 컴프레서의 하부 전가산기로부터 상위 비트 컴프레서의 멀티플렉서 그룹으로 전달되는 제 1 신호와 상기 상위 비트 컴프레서의 멀티플렉서 그룹으로부터 상기 상위 비트 컴플레서의 하위 전가산기로 전달되는 제 2 신호를 포함하는 누산기.
- 제 33 항에 있어서,상기 축소된 컴프레서들 각각은,상기 현재 컴프레서의 중간 전가산기의 합, 낮은 비트 컴프레서의 대응하는 갱신된 현재 캐리, 상기 낮은 비트 컴프레서의 제 1 및 제 2 출력들, 상기 현재 컴프레서의 갱신된 현재 합 그리고 낮은 컴프레서의 대응하는 다음 캐리를 받아들이고 제 1 내지 제 3 출력들을 출력하는 멀티플렉서 그룹을 포함하는 누산기.
- 제 31 항에 있어서,상기 전가산기는 3 로의 전가산기들로 구성되는 누산기.
- 제 33 항에 있어서,상기 축소된 컴프레서는 1개의 반가산기와 2 개의 전가산기 그리고 3 개의 2:1 멀티플렉서들로 구성되는 누산기.
- -M, 0, M 및 2M(단, M은 n-비트 모듈러스 수) 중 하나를 멀티플 모듈러스로 선택하는 멀티플 모듈러스 선택기와;부분곱 값을 구하기 위해 사용되는 제 1 값을 제공하는 부스 레코더; 그리고몽고메리 곱셈 결과를 구하기 위한 제 2 값들을 누산하는 누산기를 포함하는 몽고메리 곱셈기.
- 제 42 항에 있어서,모듈러스 값을 저장하는 모듈러스 수 레지스터와;피승수 값을 저장하는 피승수 레지스터와;승수 값을 저장하는 승수 레지스터와;상기 승수 값 및 피승수 값을 결합하는 AND 게이트; 그리고상기 누산기 및 상기 AND 게이트로부터의 값들을 결합하고, 결합된 값을 출력하는 두 개의 가산기들을 더 포함하되;상기 결합된 값은 상기 멀티플 모듈러스 선택기로 입력되는 몽고메리 곱셈기.
- 모듈러스를 수신하는 단계; 그리고이전 합과 현재 부분곱을 받아들이는 단계를 포함하되;상기 모듈러스 및 상기 이전 합 그리고 상기 현재 부분곱은 멀티플 모듈러스 값들 -M, 0, M 및 2M을 발생하기 위해 사용되는 멀티플 모듈러스 발생 방법.
- 제 44 항에 있어서,상기 모듈러스의 두번째 최하위 비트인 상기 모듈러스의 일부를 수신하는 단계를 더 포함하는 멀티플 모듈러스 발생 방법.
- 제 44 항에 있어서,상기 이전 합 및 현재 부분곱의 최하위 2 비트인 이전 합 및 현재 부분곱의 일부를 받아들이는 단계를 더 포함하는 멀티플 모듈러스 발생 방법.
- 제 44 항에 있어서,상기 생성된 멀티플 모듈러스 값들 중 하나를 선택하기 위한 선택 신호를 발생하는 단계를 더 포함하는 멀티플 모듈러스 발생 방법.
- 제 47 항에 있어서,상기 선택된 값을 반전시키기 위한 모듈러스 반전 표시 신호를 발생하는 단계를 더 포함하는 멀티플 모듈러스 발생 방법.
- 승수를 받아들이는 단계; 및적어도 하나의 부분곱 값을 발생하기 위해 부분곱 선택 신호, 부분곱 인에이블 신호, 부분곱 반전 표시 신호를 발생하는 단계를 포함하는 부분곱 발생 방법.
- 제 49 항에 있어서,상기 승수를 2비트씩 쉬프트하는 단계를 더 포함하는 부분곱 발생 방법.
- 대응하는 다음 합 및 다음 캐리를 발생하기 위해 복수의 멀티플 모듈러스, 부분곱들, 대응하는 현재 합들 및 대응하는 현재 캐리들을 수신하는 단계와;갱신된 현재 합 및 갱신된 현재 캐리들을 발생하는 단계와;리던던트 형식의 결과를 발생하기 위해 승수가 모두 사용될때까지 상기 수신 및 발생 단계들을 반복하는 단계; 그리고노말 형식의 결과를 발생하기 위해서 캐리 전파 가산을 수행하는 단계를 포함하는 누산 방법.
- 제 51 항에 있어서,상기 반복 단계는 캐라 저장 가산기에 의해서 캐리 저장 가산을 수행하는 누산 방법.
- 제 51 항에 있어서,상기 캐리 전파 가산 수행 단계는 캐리 전파 가산기에 의해서 수행되는 누산 방법.
- 제 53 항에 있어서,스위칭 신호를 발생하는 단계를 더 포함하는 누산 방법.
- 제 54 항에 있어서,상기 스위칭 신호를 이용하여 캐리 저장 가산 및 상기 캐리 전파 가산 사이를 스위칭하는 단계를 더 포함하는 누산 방법.
- 라딕스 2N(N>1) 몽고메리 곱셈을 수행하는 방법에 있어서:피승수, 모듈러스 및 승수를 받아들이는 단계와;리던던트 형식의 결과를 발생하기 위해서 상기 피승수, 모듈러스 및 승수와 연관된 복수의 입력들을 캐리 저장 가산하는 단계; 그리고노말 형식의 결과를 발생하기 위해서 캐리 전파 가산을 수행하는 단계를 포함하는 곱셈 방법.
- 제 56 항에 있어서,상기 캐리 저장 가산은 캐리 저장 가산기에 의해 수행되고, 상기 캐리 전파 가산은 캐리 전파 가산기에 의해서 수행되는 곱셈 방법.
- 제 56 항에 있어서,상기 캐리 저장 가산 및 상기 캐리 전파 가산은 누산기에 의해서 수행되는 곱셈 방법.
- 제 56 항에 있어서,스위칭 신호를 발생하는 단계를 더 포함하는 곱셈 방법.
- 제 59 항에 있어서,상기 스위칭 신호를 사용하여 캐리 저장 모드 및 캐리 전파 모드 사이를 스위칭하는 단계를 더 포함하는 곱셈 방법.
- 라딕스 2N(N>1) 몽고메리 곱셈을 수행하는 방법에 있어서:피승수, 모듈러스 및 승수를 받아들이는 단계와;리던던트 형식의 결과를 발생하기 위해서 상기 피승수, 모듈러스 및 승수와 연관된 복수의 입력들을 캐리 저장 가산하는 단계; 그리고상기 리던던트 형식의 결과인 캐리 전파 모드를 노말 형식의 결과로의 변환을 수행하는 단계를 포함하는 곱셈 방법.
- n-비트 모듈러스 M 및 이전 합, 그리고 현재 부분곱을 받아들이고, 제 1 선택 신호를 발생하는 모듈러스 레코더와;상기 n-비트 모듈러스 M 및 상기 이전 합, 상기 현재 부분곱 그리고 피승수를 받아들이고, 제 2 선택 신호를 발생하는 모듈러스 선택기와;입력들 -M, 0, M 및 2M을 받아들이고, 정수 모듈러 연산 모드일 때 상기 제 1 선택 신호에 근거해서 상기 입력들 중 하나를 선택하고, 다항식 모듈러 연산 모드일 때 상기 제 2 선택 신호에 근거해서 상기 입력들 중 하나를 선택하는 멀티플렉서를 포함하는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 입력 -M은 상기 모듈러스 M을 반전시키는 것에 의해서 구해지는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 입력 -2M은 상기 모듈러스 M을 쉬프트하는 것에 의해서 구해지는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 모듈러스 M은 레지스터에 저장되는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 모듈러스 레코더는 누산기로 입력되는 멀티플 모듈러스 반전 표시 신호(NEG_MM)를 더 발생하는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 n-비트 모듈러스 M은 둘째 최하위 비트 M[1] 그리고 이전 합과 현재 부분곱의 합인 SPPI[1:0]을 포함하는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 제 1 선택 신호는 2비트 SEL_MM[1:0]을 포함하는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 모듈러스 선택기는 누산기로 입력되는 멀티플 모듈러스 누산 표시신호(SEL_M2)를 더 발생하는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 이전 합, 상기 현재 부분곱 그리고 피승수인 SSPPI[1:0]을 포함하는 멀티플 모듈러스 선택기.
- 제 62 항에 있어서,상기 제 2 선택 신호는 2비트 SEL_M1[1:0]을 포함하는 멀티플 모듈러스 선택기.
- 정수 모듈러 연산 모드일 때 -M, 0, M 및 2M(단, M은 n-비트 모듈러스 수) 중 하나를 멀티플 모듈러스로 선택하고, 다항식 모듈러 연산 모드일 때 0, M 및 2M 중 하나를 멀티플 모듈러스로 선택하고, 멀티플 모듈러스 누산 표시 신호(SEL_M2)를 출력하는 멀티플 모듈러스 선택기와;부분곱 값을 구하기 위해 사용되는 제 1 값을 제공하는 부스 레코더; 그리고몽고메리 곱셈 결과를 구하기 위한 제 2 값들을 누산하는 누산기를 포함하되;상기 누산기는 상기 다항식 모듈러 연산 모드일 때 상기 멀티플 모듈러스 누산 표시 신호(SEL_M2)에 근거해서 상기 제 2 값들에 상기 M을 더하는 몽고메리 곱셈기.
- 제 72 항에 있어서,모듈러스 값을 저장하는 모듈러스 수 레지스터와;피승수 값을 저장하는 피승수 레지스터와;승수 값을 저장하는 승수 레지스터와;승수 값 및 피승수 값을 결합하는 AND 게이트; 그리고상기 누산기 및 상기 AND 게이트로부터의 값들을 결합하고, 결합된 값을 출력하는 두 개의 가산기들을 더 포함하되;상기 결합된 값은 상기 멀티플 모듈러스 선택기로 입력되는 몽고메리 곱셈기.
- 제 72 항에 있어서,상기 멀티플 모듈러스 선택기는,n-비트 모듈러스 M 및 이전 합, 그리고 현재 부분곱을 받아들이고, 제 1 선택 신호를 발생하는 모듈러스 레코더와;상기 n-비트 모듈러스 M 및 상기 이전 합, 상기 현재 부분곱 그리고 피승수를 받아들이고, 제 2 선택 신호를 발생하는 모듈러스 선택기; 그리고입력들 -M, 0, M 및 2M을 받아들이고, 정수 모듈러 연산 모드일 때 상기 제 1 선택 신호에 근거해서 상기 입력들 중 하나를 선택하고, 다항식 모듈러 연산 모드일 때 상기 제 2 선택 신호에 근거해서 상기 입력들 0, M 및 2M 중 하나를 상기 멀티플 모듈러스로서 선택하는 멀티플렉서를 포함하는 몽고메리 곱셈기.
- 제 72 항에 있어서,상기 부스 레코더는,승수를 받아들이고, 제 3 선택 신호(SEL_PP[1:0])를 발생하는 제 1 선택기와;상기 승수를 받아들이고, 제 4 선택 신호(SEL_A1[1:0])를 발생하는 제 2 선택기; 그리고입력들 -A, 0, A 및 2A를 받아들이고, 정수 모듈러 연산 모드일 때 상기 제 3 선택 신호에 근거해서 상기 입력들 중 하나를 선택하고, 다항식 모듈러 연산 모드일 때 상기 제 4 선택 신호에 근거해서 상기 입력들 0, A 및 2A 중 하나를 선택하는 멀티플렉서를 포함하는 몽고메리 곱셈기.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004127206A JP2004326112A (ja) | 2003-04-25 | 2004-04-22 | マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ |
EP08021725A EP2037357A3 (en) | 2003-04-25 | 2004-04-23 | Montgomery modular multiplier and method thereof using carry save addition |
EP07015586A EP1855190A3 (en) | 2003-04-25 | 2004-04-23 | Montgomery modular multiplier and method therof using carry save addition |
EP04252390A EP1471420A3 (en) | 2003-04-25 | 2004-04-23 | Montgomery modular multiplier and method thereof using carry save addition |
US10/830,041 US7543011B2 (en) | 2003-04-25 | 2004-04-23 | Montgomery modular multiplier and method thereof using carry save addition |
CN200410055212.6A CN1570848A (zh) | 2003-04-25 | 2004-04-25 | 使用进位存储加法的蒙哥马利模乘器及其方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030026482 | 2003-04-25 | ||
KR20030026482 | 2003-04-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040092376A true KR20040092376A (ko) | 2004-11-03 |
KR100591761B1 KR100591761B1 (ko) | 2006-06-22 |
Family
ID=33509583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040002393A KR100591761B1 (ko) | 2003-04-25 | 2004-01-13 | 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20040252829A1 (ko) |
EP (2) | EP2037357A3 (ko) |
KR (1) | KR100591761B1 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100123361A (ko) * | 2009-05-15 | 2010-11-24 | 삼성전자주식회사 | 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법 |
KR20130128701A (ko) * | 2012-05-17 | 2013-11-27 | 삼성전자주식회사 | 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법 |
KR20130128695A (ko) * | 2012-05-17 | 2013-11-27 | 삼성전자주식회사 | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 |
US8756268B2 (en) | 2010-03-19 | 2014-06-17 | Samsung Electronics Co., Ltd. | Montgomery multiplier having efficient hardware structure |
KR20150114104A (ko) * | 2014-03-31 | 2015-10-12 | 삼성전자주식회사 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100458031B1 (ko) * | 2003-03-14 | 2004-11-26 | 삼성전자주식회사 | 몽고메리 유형의 모듈라 곱셈 장치 및 방법 |
JP2004326112A (ja) * | 2003-04-25 | 2004-11-18 | Samsung Electronics Co Ltd | マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ |
JP4170267B2 (ja) * | 2004-07-09 | 2008-10-22 | Necエレクトロニクス株式会社 | 乗算剰余演算器及び情報処理装置 |
US7801937B1 (en) * | 2004-09-01 | 2010-09-21 | Altera Corporation | Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication |
KR100617384B1 (ko) * | 2004-09-24 | 2006-08-31 | 광주과학기술원 | Rsa 보안 모듈의 몽고메리 곱셈기 |
JP4182226B2 (ja) * | 2005-08-24 | 2008-11-19 | 国立大学法人名古屋大学 | 剰余系の計算方法及び装置並びにプログラム |
TWI310656B (en) * | 2006-03-07 | 2009-06-01 | Princeton Technology Corp | An image processing device and related method for improving image quality with a csa accumulator |
US20080114820A1 (en) * | 2006-11-15 | 2008-05-15 | Alaaeldin Amin | Apparatus and method for high-speed modulo multiplication and division |
FR2974202B1 (fr) | 2011-04-18 | 2013-04-12 | Inside Secure | Procede de multiplication de montgomery |
FR2974201B1 (fr) | 2011-04-18 | 2013-04-12 | Inside Secure | Circuit de multiplication de montgomery |
RU2589361C1 (ru) * | 2015-03-10 | 2016-07-10 | Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Северо-Кавказский федеральный университет" | Умножитель по модулю |
RU2628179C1 (ru) * | 2016-11-28 | 2017-08-15 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Устройство деления модулярных чисел |
CN110262773B (zh) * | 2019-04-28 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种计算机数据处理方法及装置 |
CN110493003B (zh) * | 2019-06-24 | 2021-08-17 | 广东工业大学 | 一种基于四基二进制底层模运算的快速加密系统 |
CN113805840B (zh) * | 2021-11-18 | 2022-05-03 | 南京风兴科技有限公司 | 快速累加器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4718034A (en) | 1984-11-08 | 1988-01-05 | Data General Corporation | Carry-save propagate adder |
US5073870A (en) * | 1989-01-30 | 1991-12-17 | Nippon Telegraph And Telephone Corporation | Modular multiplication method and the system for processing data |
US5394351A (en) * | 1994-03-11 | 1995-02-28 | Nexgen, Inc. | Optimized binary adder and comparator having an implicit constant for an input |
US5796645A (en) * | 1996-08-27 | 1998-08-18 | Tritech Microelectronics International Ltd. | Multiply accumulate computation unit |
WO2000038047A1 (en) * | 1998-12-18 | 2000-06-29 | Motorola Inc. | Circuit and method of cryptographic multiplication |
FR2822260A1 (fr) * | 2001-03-14 | 2002-09-20 | Bull Sa | Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire |
US20020172355A1 (en) * | 2001-04-04 | 2002-11-21 | Chih-Chung Lu | High-performance booth-encoded montgomery module |
US7035889B1 (en) * | 2001-12-31 | 2006-04-25 | Cavium Networks, Inc. | Method and apparatus for montgomery multiplication |
JP2004326112A (ja) * | 2003-04-25 | 2004-11-18 | Samsung Electronics Co Ltd | マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ |
-
2003
- 2003-12-17 US US10/736,832 patent/US20040252829A1/en not_active Abandoned
-
2004
- 2004-01-13 KR KR1020040002393A patent/KR100591761B1/ko not_active IP Right Cessation
- 2004-04-23 EP EP08021725A patent/EP2037357A3/en not_active Withdrawn
- 2004-04-23 EP EP07015586A patent/EP1855190A3/en not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100123361A (ko) * | 2009-05-15 | 2010-11-24 | 삼성전자주식회사 | 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법 |
US8756268B2 (en) | 2010-03-19 | 2014-06-17 | Samsung Electronics Co., Ltd. | Montgomery multiplier having efficient hardware structure |
KR20130128701A (ko) * | 2012-05-17 | 2013-11-27 | 삼성전자주식회사 | 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법 |
KR20130128695A (ko) * | 2012-05-17 | 2013-11-27 | 삼성전자주식회사 | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 |
KR20150114104A (ko) * | 2014-03-31 | 2015-10-12 | 삼성전자주식회사 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
Also Published As
Publication number | Publication date |
---|---|
EP2037357A2 (en) | 2009-03-18 |
KR100591761B1 (ko) | 2006-06-22 |
EP1855190A3 (en) | 2008-02-13 |
US20040252829A1 (en) | 2004-12-16 |
EP2037357A3 (en) | 2009-04-08 |
EP1855190A2 (en) | 2007-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100591761B1 (ko) | 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법 | |
US7543011B2 (en) | Montgomery modular multiplier and method thereof using carry save addition | |
JP4870932B2 (ja) | 多重精度を支援する拡張型モンゴメリモジュラ掛け算器 | |
EP1293891B1 (en) | Arithmetic processor accomodating different finite field size | |
CA2225899A1 (en) | A method and apparatus for finite field multiplication | |
US5261001A (en) | Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands | |
Dimitrov et al. | Area-efficient multipliers based on multiple-radix representations | |
KR100459732B1 (ko) | 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법 | |
US6917956B2 (en) | Apparatus and method for efficient modular exponentiation | |
Seidel et al. | Binary multiplication radix-32 and radix-256 | |
US7480691B2 (en) | Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic | |
EP0428942B1 (en) | Plural-bit recoding multiplier | |
Morita | A fast modular-multiplication algorithm based on a higher radix | |
US20230086090A1 (en) | Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit | |
US7266577B2 (en) | Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus | |
JP3660075B2 (ja) | 除算装置 | |
Huai et al. | Efficient architecture for long integer modular multiplication over Solinas prime | |
KR20070062901A (ko) | 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법 | |
KR100480997B1 (ko) | GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치 | |
Son et al. | Design and implementation of scalable low-power Montgomery multiplier | |
EP0281303A2 (en) | Modulo arithmetic processor chip | |
Ibrahim et al. | High-performance, low-power architecture for scalable radix 2 montgomery modular multiplication algorithm | |
KR100946256B1 (ko) | 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기 | |
KR20040045152A (ko) | 모듈러 곱셈 장치 | |
KR100858559B1 (ko) | 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기 |
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: 20120531 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20130531 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |