KR100684134B1 - 몽고메리 승산에 기초한 모듈의 승산 및 누승을 위한 개선된 장치와 방법 - Google Patents
몽고메리 승산에 기초한 모듈의 승산 및 누승을 위한 개선된 장치와 방법 Download PDFInfo
- Publication number
- KR100684134B1 KR100684134B1 KR1019997010171A KR19997010171A KR100684134B1 KR 100684134 B1 KR100684134 B1 KR 100684134B1 KR 1019997010171 A KR1019997010171 A KR 1019997010171A KR 19997010171 A KR19997010171 A KR 19997010171A KR 100684134 B1 KR100684134 B1 KR 100684134B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- bits
- multiplier
- multiplication
- input
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/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
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
Description
본 발명은 모듈(modular)의 승산과 누승, 및 직렬 정수 제산에 관한 장치와 방법에 관한 것이다.
큰 수들에 대한 모듈의 승산과 누승을 위한 소형의 마이크로 전자 장치가 출원인의 미국 특허 5,513,133호에 기술되어 있고 이것의 개시는 참조에 의해 여기에 구체화되었다.
명세서에 언급된 모든 공보와 그 안에 인용된 공보의 개시는 여기에서 참조에 의해 구체화되었다.
본 발명은 모듈의 승산과 누승 및 직렬 정수 제산을 위한 개선된 장치와 방법을 얻기 위한 것이다.
그러므로 본 발명의 바람직한 실시예에 의하면, 단일 캐리 세이브 가산기를 포함하는 단일 승수를 포함한 직/병렬 산술 논리 유닛(ALU)과 바람직하게는 어떤 비트 길이의 피젯수와 젯수를 받고 몫과 나머지를 계산하는데 있어 작용하는 직렬 제산 장치를 포함한다.
또 본 발명의 바람직한 실시예에 의하면, 시스템은 적어도 한 쌍의 어떤 비트 길이를 갖는 정수 입력을 승산하는데 있어 작용한다.
또한 본 발명의 바람직한 실시예에 의하면, 적어도 한 쌍의 정수 입력은 두 쌍의 정수 입력들을 포함한다.
또 본 발명의 바람직한 실시예에 의하면, ALU는 정수 입력의 곱을 발생시키고 사전에 제로 강제 몽고메리 상수(J0)를 계산하지 않고 곱의 크기를 감소시키는데 있어 작용한다.
또한 본 발명의 또다른 바람직한 실시예에 의하면, 어떤 비트 길이의 피젯수와 젯수를 받고 몫과 나머지를 계산하는데 있어 작용하는 직렬 제산 장치를 포함하는 직렬 정수 제산 장치가 제공된다.
또 본 발명의 바람직한 실시예에 의하면, 장치는 한 쌍의 정수 입력을 기억하고, 인터리빙(interleaving) 하지 않고 적어도 그 중의 하나가 각각의 레지스터의 비트 길이를 초과하는 한 쌍의 정수 입력을 승산하는데 있어 작용하는 한 쌍의 레지스터를 포함한다.
또한 본 발명의 또다른 바람직한 실시예에 의하면, 단지 하나의 캐리 세이브 누산기를 가지고 한 쌍의 승산을 수행하고 그것의 결과를 합하는데 있어 작용하는 직/병렬 승산 장치를 포함하는 모듈의 승산과 누승 시스템이 제공된다.
또한 본 발명의 또다른 바람직한 실시예에 의하면, 단일 캐리 세이브 가산기를 갖는 단일 모듈의 승산 장치를 포함한 직/병렬 산술 논리 유닛(ALU)을 제공하는 것과 모듈의 승산과 누승을 수행하기 위해 직/병렬 ALU를 사용하는 것을 포함하는 모듈의 승산과 누승 방법이 제공된다.
또한 본 발명의 또다른 바람직한 실시예에 의하면, 큰 정수들의 자연(모듈이 아닌) 승산 방법과 단일 캐리 세이브 가산기를 갖는 단일 모듈의 승산 장치를 포함한 직/병렬 산술 논리 유닛(ALU)를 제공하고 큰 정수들의 자연(모듈이 아닌) 승산을 수행하기 위해 직/병렬 ALU를 사용하는 것을 포함하는 방법이 제공된다.
또 본 발명의 바람직한 실시예에 의하면, 이용하는 단계에서 첫 번째 곱을 얻기 위해 어떤 비트 길이의 제 1 정수와 어떤 비트 길이의 제 2 정수를 곱하고, 두번째 곱을 얻기 위해 어떤 비트 길이의 제 3 정수와 어떤 비트 길이의 제 4 정수를 곱하여 합을 얻기위해 어떤 비트 길이의 제 5 정수로 첫 번째 곱과 두 번쩨 곱을 합하는 것이 포함된다.
또한 본 발명의 바람직한 실시예에 의하면, 이용하는 단계에서 피승수, 승수 및 어떤 비트 길이의 모듈러스(modulus)로 모듈의 승산과 제산을 수행하는 것이 포함된다.
또한 본 발명의 바람직한 실시예에 의하면, 시스템은 또한 단지 하나의 사전 계산된 상수로 몽고메리 모듈의 승산을 수행하기 위한 이중 피승수 사전 계산 시스템을 포함한다.
또한 본 발명의 바람직한 실시예에 의하면, 이용하는 단계에서 승수와 피승수를 포함하는 정수 입력들의 곱을 발생시키는 것을 포함하는 몽고메리 승산을 수행하고 사전에 몽고메리 상수(J0)를 계산하지 않고 모듈의 감산을 실행하는 것이 포함된다.
또 본 발명의 바람직한 실시예에 의하면, 몽고메리 상수(J0)는 N이 모듈 감산의 모듈러스이고 k가 피승수의 비트 길이인 N mod 2k의 함수를 포함한다.
또 본 발명의 바람직한 실시예에 의하면, 이용하는 단계에서 인터리브된 몽고메리 승산 연산의 일련의 절차를 수행하는 것이 포함된다.
또 본 발명의 바람직한 실시예에 의하면, 각각의 인터리브된 몽고메리 승산 연산은 모듈러스가 적어도 k 유효 제로들로 결과를 강제하기 위해 승산 연산의 합동식에 합해져야 하는 횟수의 수를 사전에 계산하지 않고 수행된다.
또 본 발명의 바람직한 실시예에 의하면, 시스템은 또한 i번째 인터리브된 몽고메리 승산 연산에서 발생된 피승수를 직렬 합산하고 수집하는데 있어 유효한 데이터 사전 처리기를 포함하고 그것에 의해 합을 발생시키고i+1번째 몽고메리 승산 연산에 합을 공급하게 된다.
또한 본 발명의 바람직한 실시예에 의하면, 함수는 N mod 2k의 승산 역의 첨가 역을 포함한다.
또 본 발명의 바람직한 실시예에 의하면, 상기 방법은 Ai를 리셋하여 J0를 계산하고 S0=1로 하여 B를 0으로 하는 것으로 이루어져 있다.
본 발명은 또한 모듈과 매우 큰 정수들에 대한 보통의(자연수의, 즉 음의 정수가 아닌) 승산, 제산, 가산, 감산 및 누승을 수행하기 위한 소형의 미소 전자 산술 논리 유닛, 즉 ALU에 관한 것이다. 몽고메리 방법을 이용한 모듈의 승산과 제곱화를 가리킬 때, 장치의 특정 부분을 가리키는 모듈의 산술 보조 처리기로서, 약어로 MAP이 참조된다. 또한 몽고메리 승산 방법으로서 MM이 참조된다.
본 발명은 또한 큰 정수들의 산술 처리에 관한 것이다. 이들 큰 수들은 (음이 아닌) 정수들의 자연수 영역 또는 소수, 즉 GF(p)의 Galois 영역에서의 수일 수 있고 또한 복합 소수 모듈 영역의 수일 수 있다. 좀더 구체적으로는 본 발명은 큰 수들의 모듈의 승산화/누승화를 이행할 수 있는 장치에 관한 것으로 Public Key 암호법의 확인과 암호화 프로토콜에 필수적인 동작을 수행하는데 적절하며, 점점 더 큰 오퍼랜드에 걸쳐 작용할 수 있고 현세대의 모듈 산술 보조 처리기로 효율적으로 실행될 수 없으며 소프트웨어 실현으로 안전하게 실행될 수 없다. 본 발명은 4비트 또는 그 이상 비트의 프로세서로 구동될 수 있으며 현재 디지털 신호 처리기를 능가할 수 있는 속도를 실현한다.
본 발명은 또한 큰 오퍼랜드 정수 산술의 하드웨어 실현에 관한 것으로, 특히 소프트웨어 순응 시스템의 암호화에 종종 사용되는 인터리브된 몽고메리 다중 정밀 모듈 승산법으로 알려진 절차의 파생물에서의 수의 조작에 관한 것뿐만 아니라 또한 긴 오퍼랜드 정수에 대한 기본 산술 연산에서의 고유치, 특히 A·B+C·D+S, A,B,C,D 또는 S의 크기에 있어 이론적인 제한이 없는 것에 관한 것이다. 게다가 이 장치는 모듈의 승산과 누승을 수행하기 위해 특별히 조절되었다. 이 장치는 특히 모듈의 산술 보조 프로세서(MAP)에 적합하고 또한 매우 큰 정수의 제산을 수행하기 위한 장치를 포함하며 여기서 젯수는 모듈러스 레지스터(N)만큼이나 긴 비트 길이를 가지며 피젯수의 비트 길이는 2개의 연결된 레지스터의 비트 길이만큼 클 수 있다.
이 장치는 바람직하게 기계 클록 주기 사이클 수의 반보다 작게 논리 게이트와 같은 순서로 미국 특허 5,513,133의 모든 기능을 수행한다. 이것은 대개 종래의 직렬 병렬 승산기의 주성분과 같은 캐리 세이브 누산기 메카니즘을 사용하여 2개의 1/2 크기의 승산기 대신에 오직 하나의 이중 동작 직/병렬 승산기가 있기 때문이다. 새로운 산술 논리 유닛, ALU 또는 특히 모듈의 산술 보조처리기, MAP 바람직하게는 본래 새로운 과정에 선행하였던 개개의 승산 과정을 제거한다. 이 과정은 또한 현재 바람직하게 제거된 제 2 몽고메리 상수(J0)를 요구하였다. 달리 기술되면 이전의 몽고메리 절차에서의 2개의 상수 대신에 지연이라는 문제가 발생하고 1개의 상수만이 현재는 계산되며 현재 여분의 J형 승산(나중에 설명됨)에 의해 발생하는 지연은 바람직하게 제거된다.
또한 데이터 조작을 보다 좋게 제어함으로써 CPU와 이 주변 장치 사이에 장치의 보통 레지스터 크기보다 긴 오퍼랜드 상에 수행되는 오퍼랜드가 더 적은 임시 기억 메모리를 사용하여 감소된 처리 시간에서 바람직하게 수행될 수 있다.
몽고메리 방법론으로 모듈의 승산을 수행하기 위한 3개의 관련된 방법이 공지되어 있다.[P.L.Montgomery,"Modular multiplication without trial division”, Mathematics of Computation, vol. 44, pp. 519-521, 1985], 이후에는 “Montgomer y”라 칭함,[S.R.Dusse and B.S.Kaliski Jr.,“A crytographic library for the Motorola DSP 56000”, Proc Eurocrypt ´90, Springer-Verlag, Berlin, 1990] 이하에 “Dusse”라고 칭함, 그리고 Miyaguchi의 미국 특허 4,514,592의 방법, Evan의 미국 특허 5,101,431의 방법, Iwamura의 미국 특허 5,321,752의 방법과 Arazi의 미국 특허 5,448,639의 방법 및 Gressel의 미국 특허 5,513,133의 방법 등이다.
어떤 마이크로 제어기 설계에도 통합될 수 있고 호스트 제어기의 메모리에 이식될 수 있으며 데이터 전달 메카니즘에 오퍼랜드를 빈번하게 바꾸거나 공급하는 매우 긴 명령어에 대해 제어기와 평행하게 작용하고, 조작에 필요한 보조 처리기 비휘발성 메모리의 크기가 가장 큰 오퍼랜드 길이의 거의 3배보다 큰 어떤 보통 길이의 모듈 산술 계산을 허용하는 기계를 구성하는 것이 바람직하다.
이 해결책은 바람직하게는 종래에는 본질적으로 2개의 승산기 장치의 기능을 하는 1개의 승산기 장치만을 사용한다. 현재 유행하는 기술을 사용하면, 4×4.5×0.2mm의 초소형 전자 회로 상에 메모리를 가진 마이크로 제어기를 포함한 완전한 해결책의 통합이 가능하게 된다.
이 발명은 또한 종래의 디지털 프로세서에 하기에 기술된 바와 같은 Montgomery와 Dusse에 의해 공표된 절차에 대해 상대적인 계산적이고 논리적이며 구조학적인 신규 특징들을 가진 주변 기기가 되도록 고안된 디지털 장치의 구조를 지향한다.
바람직하게는 각각의 연산에 승산과 제산을 같이 수행하였던 종래의 승산/제산 장치로 수행되었던 연산들과 같은 수로 제산을 하지 않고, 모듈의 누승을 수행하기 위해 동시에 존재하는 과정과 독특한 하드웨어 구성이 제공된다. 본 발명의 바람직한 실시예의 특별한 특징은 중단없는 자원의 효율적 이용과 기본적인 큰오퍼랜드 정수 산술 기능을 허용하고 무제한의 오퍼랜드 길이를 허용하는 장치에 의해 수행되는 연산의 동시 발생이다.
직렬 과정들의 동기화된 순서로 인한 본 발명의 바람직한 실시예에 의해 실현된 장점들은 (n+k) 유효 클록 사이클에서의 하나의 다중화된 k비트 직렬/병렬 승산기를 사용하고 Montgomery에 의해 기술된 바와 같이 3개의 승산 계산의 등가물을 완성함으로써 n비트 오퍼랜드에 대한 3개의 승산 연산을 동시에(평행하게) 이룰 수 있도록 합해진다.
동기화하고 동작중에 (on the fly) 감지하고 동작중에 사전로드(preload)하며 오퍼랜드로 쓰일 다음의 것을 동시 가산함으로써 기계는 결정론적인 방식으로 동작하고 모든 승산과 누승은 소정의 클록 사이클의 수내에서 실행된다. 조건 분기들은 국부 감지와 보상 장치로 대체되고 그것에 의해 간단한 타입의 제어 메카니즘에 대한 기초가 제공되며 정제될 때, 그것들은 보통 일련의 자체 여기 직렬 접속 카운터를 포함한다. 여기서 기술된 기본 동작들은 상표명 SC-49으로 Scotland East Kilvride의 모토롤라사와, 상표명 ST16-CF54으로 프랑스 루세(Rousset)에서 SGS-Thomson에 의해, 미국 특허 5,513,133에 기술된 장치를 사용하여 결정적인 시간 내에서 실행될 수 있다.
오퍼랜드가 연산의 총 길이에 대해서 장치에 로드되고 기억되므로 상기 기계는 대부분의 연산에 대해서 휘발성의 메모리에 대해 특별히 의존성이 적다. 하지만 기계는 잇다른 명령들을 기계로의 간단한 로드와 언로드를 실행하기 위해 그것이 부착된 곳에서 CPU를 바람직하게 이용하는 한편, 그것의 큰 수 계산들을 수행한다. 누승 과정 시간은 그것을 제어하는 CPU에 가상적으로 의존한다. 실제로 기계를 CPU에 부착할 때 아무런 구조상의 변화가 필요치 않다. 하드웨어 장치는 모든 것이 완비되었고 어떠한 CPU버스에도 부착될 수 있다.
필요한 상수들을 미리 계산하기 위한 수단을 포함하여 모듈의 승산과 누승 과정을 가속화하기 위한 장치가 제공된다.
여기에 기술된 발명의 바람직한 실시예는 휴대용 스마트 카드에 공개키 암호화 응용에 대한 모듈의 수학적인 연산자를 제공한다. 유사한 스마트 카드(미국 특허 5,513,133에 대한)가 상업적이고 군사적이며 국내 업무에서의 데이트 흐름을 조절하고 확보하며 암호화된 유료 TV 프로그램을 해독하기 위해서 컴퓨터, 데이터베이스 및 중요한 설비들에 대한 접근을 제어하기 위한 공개키 암호화 장치의 새로운 생성에 쓰이고 있다.
이러한 장치들은 또한 컴퓨터와 팩스 단말기, 도어 록, 자동 판매기 등에서 또한 구체화되어 있다는 것을 인식해야 한다.
기술된 하드웨어는 새로운 방식으로 연산자를 적용함으로써 모듈의 승산과 누승을 수행한다. 또한 제곱은 그것에 동등한 피승수와 승수를 적용함으로써 같은 방식으로 실행된다. 모듈의 누승은 연속적인 모듈의 승산과 제곱을 포함하고 따라서 반복적이고 적절히 조합되며 상술한 승산과 제곱 및 누승 방법의 적응된 응용으로 구성된 방법으로 수행된다.
ALU의 바람직한 실시예의 동작을 기술할 때, 유닛이 산술 연산을 수행할 때의 사이클을 가리키는 유효 클록 사이클로 동기화를 묘사하고, 실제 클록 사이클과 반대이므로 ALU가 멈춰 있을 수 있는 그 곳에서 휴지 사이클을 포함하게 되고 새로운 단계의 연산을 준비하기 위해, 멀티플렉서, 플립플롭 및 다른 장치 세팅이 변경될 수 있다.
바람직한 실시예에서, 각각 k 비트의 m 문자로 구성되는, 피승수(A)(CPU의 휘발성 RAM이나 SA 레지스터(130)에 저장될 수 있는), 70과 80의 연결인 B 레지스터(1000)의 승수(B), 및 200과 210의 연결인 N 레지스터(1005)에서의 모듈러스(N)을 가지고 몽고메리 모듈의 승산(제곱 및 정규의 승산을 참고하여)을 실행하는 방법은 다음의 단계를 포함한다. 이 때 피승수와 승수는 일반적으로 모듈러스보다 크지 않다.
1)승수(B)와 모듈러스(N)를 n=m·k인 n비트 길이의 각각의 레지스터로 로 딩{정규의 영역에서 양이고 자연수이며 정수를 승산하고, N은 제2 승수이다.}
{만약 n이 B,N,S 레지스터보다 길다면, 반복되는 과정 동안에 값들이 이들 레지스터로 로드되거나 언로드되며, 이로 인해 기계는 어떤 길이의 모듈러스라도 가상적으로 조작할 수 있다}
2)레지스터(SB)의 출력을 0으로 세팅, 첫번째 반복에 대해 S*d Flush(250)=1
3)외부 빌림(borrow)과 캐리 플래그(flag)(제어,특허에는 명시되 있지 않음)를 리셋팅
4) m반복을 실행, 각각의 반복은 다음 연산으로 이루어짐
(0≤i≤m-1)
a)피승수(A)의 다음 문자(Ai-1)를 휘발성 기억 장소에서 Ai 부하 버퍼(290)로 이송.
b)Ci 부하 버퍼(320)를 N0(N의 LS k 비트)로 동시에 직렬 로딩하고 동시에 Ai 부하 버퍼의 내용물을 순환시켜 Ai 부하 버퍼의 내용물을 N0와 직렬 가산기(FA1 , 330)에 의해 직렬 합산하여 Ai+Ci 부하 버퍼를 합(N0+Ai-1)과 직렬 로딩.
사전 로딩 단계는 여기서 끝난다. 이 단계는 보통 MAP가 이전의 승산 반복을 수행하는 동안 실행된다. 처리 과정 a)와 b)는 동시에 실행될 수 있고 문자 Ai-1은 그것의 각각의 레지스터에 로드되며 한편, Ai 스트림이 N0 레지스터와 R2(320)의 로딩의 순환으로 동기화된다. 동시에 Ai 스트림과 N0 스트림이 합해지고 R3 레지스터(340)로 로드된다.
B 레지스터의 양을 제곱하는 것은 초기화 단계 a) b)에서 실행될 수 있고, B0 레지스터가 순환할 때, N0 레지스터와 동시에 Bd의 첫번째 k 비트는 R1으로 삽입된다. 다음 k비트 Bi스트링은 그것들이 ALU로 직렬 공급될 때, R1 레지스터로 미리 로드된다.
c)기계는 정지된다. 버퍼의 오퍼랜드(R1,R2 및 R3)는 래치 L1(360), L2( 370) 및 L3(380)로 래치된다.
L0-“0”래치는 의사(pseudo) 래치이고 이것은 단순히 멀티플렉서(390)의 입력들 또는 출력들에서의 각각의 AND 게이트로 들어가는 실질상의 명령어 신호이다.
d)다음 k유효 클록 사이클에 대해서,
ⅰ)각각의 유효 클록 사이클에서 Y0 SENSE는 Y0의 다음 비트를 예측하고이 비트를 M3 멀티플렉서(300)를 통해 Ci부하 버퍼로 로드하는 한편 Ai비트를 R1 레지스터로부터 시프트 아웃하고, 동시에 Ci부하 버퍼를 Y0의 k비트로 로딩하고 R1의 출력을 Y0와 더하고 이 값을 R3 버퍼로 로딩한다.
ⅱ)M_K 멀티플렉서(390)를 통해 4개의 래치(L0,L1,L2,L3)중 하나로부터 원하는 값을 논리적으로 선택함으로써, N0(L2,Ci래치에서)를 들어오는 Y0비트와 동시에 승산하고, Ai를 다음에 들어오는 Bd의 비트와 승산하여, 그 두 결과를 더한다. 만약 Y0비트와 B비트가 1이 아니면, 모든 0의 값은 CSA로 다중화되고 만약 N0비트만이 1이라면, N0만이 CSA로 다중화되고 가산되며, 만약 B비트만이 1이라면, Ai-1이 CSA로 가산되고 만약 B비트와 N0비트 모두가 1이라면 Ai-1+N0가 CSA에 가산된다.
ⅲ)그 다음, 캐리 세이브 k+1비트 누산기는 비트 단위로 직렬로 존재하므로(X 스트림), 직렬 가산기 FA2(460)를 통해 Sd의 다음 적절한 비트를 이들 합에 더한다.
몽고메리 방법에서 Z스트림의 이들 제1 k비트들은 0이다.
첫번째 단계에서 Y0·N0+Ai-1·B0+S0의 결과는 계산되었고, LS k의 모든 0비트는 Z*아웃 스트림 상에 나타났으며, 승산기 장치의 MS k+1비트는 CSA 캐리 세이브 누산기에 세이브되었다. R1,R2 및 R3 미리 로드 버퍼는 Ai-1, Y0와 Y0+Ai-1의 값을 각각 가지고 있다.
e)마지막으로 유효한 (m+1)·k번째 클록 사이클에서 기계는 멈춘다. 버퍼(R2,R3)는 L2와 L3로 래치된다.
L1의 값은 변하지 않는다.
다음 k·(m-1)유효 클록 사이클에 대한 처음의 연속적인 조건은
승수는 B의 k번째 비트로부터 시작하는 B로부터의 비트 스트림과 또한 N의 k번째 비트로부터 시작하는 N으로부터의 남아있는 비트 스트립이다.
그리고 L1,L2 및 L3에서의 피승수는 Ai-1,Y0 및 Y0+Ai-1이고, 시작할 때 CS 가산기는 d)에서 기술된 값을 가지며, S스트림은 다음 k·(m-1)비트를 FA2 전가산기로 공급한다.
다음 k·m 유효 클록 사이클(Nd) 동안에, 유닛(470)에서 지연된 k 클록 사이클은 결과가 B 또는 S 레지스터로 가는 결과(Z/2k mod 2k*m)이 N보다 크거나 같은지를 감지하기 위해 직렬 감산기(480)에서 Z스트림으로부터 감산된다. 직렬 감산기(460)에 의해 감지된 것에 관계없이 만약 {(m+1)·k}번째 유효 클록 사이클에서 CSA의 SO1 플립-플롭이 1이라면 그 결과가 부분적이거나 최종적으로 그것의 레지스터에 존재하므로 총 결과는 분명히 N보다는 크고 N은 이 결과로부터 감산될 것이다.
f)다음 k·(m-1) 유효 클록 사이클에 대해,
N0 레지스터(210)는 들어오는 Ai비트와 동기적으로 순환하거나 또다른 적절한 타이밍으로 다음 반복에 대해 a)와 b)에 기술된 바와 같이, R1,R2 및 R3를 로드한다.
이들 k·(m-1) 유효 클록 사이클에 대해, 현재 N의 남아있는 MS비트는 Y0를 곱하고 남아있는 MS B비트는 Ai-1를 계속해서 곱한다. 만약 N비트나 B비트가 1이 아니라면, 모든 0의 값이 CSA로 다중화된다. 만약 N비트만이 1이면, Y0만이 CSA로 다중화/가산된다. 만약 B비트만이 1이라면, Ai-1이 CSA로 가산된다. 만약 B비트와 Y0비트 모두 1이면, Ai-1+Y0가 CSA에 가산된다.
동시에 CSA에서의 직렬 출력이 다음 k·(m-1)S비트에 FA2 가산기와 그것의 출력이 Z 스트림인 유닛(460)을 통해서 가산된다.
Z출력 스트림의 적절한 부분은 Z의 첫번째 0이 아닌 k·(m-1)비트이다.
마지막 반복에서 언급되었듯이 Z스트림은 SB 레지스터와 첫번째 m-1반복에 대해서 SB 또는 B 레지스터로 스위치된다.
마지막 반복에서 Z스트림은 LS k 제로 비트에 관계없이, B*스트림이 된다. 이 스트림은 만약 필요하면 다음 승산과 제곱에 사용된 것처럼, N에 의해 감소되어 B 레지스터로 향하게 된다.
마지막 반복에서 지연된 k 클록 사이클인 Nd는 B로 가는 결과가 N보다 큰지, 같은지를 감지하기 위해 직렬 감산기에 의해 Z스트림으로부터 감산된다.
이 단의 마지막에서 N,B 및 SB 레지스터에서의 모든 비트는 ALU로 공급되었고 결과의 최종 k+1비트는 유출되기 쉽게 CSA에 있게 된다.
g) 디바이스가 멈춘다. S 플러시(250), B플러시(240) 및 N플러시(260)는 다음 단계에서 마지막 k+1 MSB(Most significant bit)가 CSA의 밖으로 유출하는지를확인하기 위해 출력 0스트링에 세트된다.(보통 승산에 있어서, M7 MUX(450)는 S의 이전 반복에서 마지막 캐리를 받아들이기 위해 세트된다) S는 m·k+1 유의 비트를 가지나 S레지스터는 이 데이터를 받기 위한 mk 셀만을 가지고 있다. 이 마지막 비트는 본래 오버플로 메카니즘에서 세이브된다.
e에서 설명된 바와 같이, 470에서 지연된 k클록 사이클(Nd)은 B 또는 S 레지스터로 가는 결과가 N보다 크거나 같은지를 결정하기 위한 감지 메카니즘에 미세 조정을 제공하기 위해, X로부터의 유의 출력과 동기되어 Z스트림으로부터 감산된다 . 480과 490은 직렬 비교기 장치를 구성하고, 모듈 계산을 위한 오직 마지막 빌림 명령어 비트와 정수의 자연수 영역에서의 보통의 승산을 위한 (k·m+1)번째 비트만이 저장된다.
이러한 오버플로/빌림 명령어는 m·k번째 유효 클록 사이클에서 감지된다.
h)장치는 또다른 k사이클로 시간이 재어져서 CSA를 완전히 플러시 아웃하고 또다른 k비트는 Z를 정의된 출력 레지스터로 내보낸다.
다음 출구 스트림에서 N의 감산을 행하기 위한 적절한 플립 플롭 관리 직렬 감산기(90 또는 500)에 대한 명령은, 만약 (Z/2k-N)≥N이면,(Z는 m·k번째 MS비트를 포함한다) 다음 신호들 즉,
CSA의 제 2 LSB(least significant bit)에서의 데이터 출력인 SO1비트가 1이거나
X+S가산기(460)에서의 내부 캐리 아웃인 COZ비트가 1이거나
480 감지 감산기에서의 빌림 비트가 세트되지 않음
에 의해 감지된 반복의 마지막 유효 (m+1)·k번째 클록 사이클에서 세트된다.
이 메카니즘은 Motorola와 SGS-Thomson에 의해 제조된 바와 같이, 미국 특허 5,513,133에 나타나 있다.
자연수 영역에서의 승산을 위해, 만약 m-k번째 MS 비트가 1이라면, 오버플로가 수퍼스칼라 승산기에서 발생할 수 있다는 것과 미국 특허 5,513,133의 메카니즘에서 발생할 수 없다는 것을 발견하는 것이 바람직하다. 이 오버플로는 S(일시적인 결과)스트림에서 MS 비트를 삽입하기 위해 다음 반복에서 사용될 수 있다.
j)이것이 마지막 반복?
NO면, c)로 복귀
YES면, m)으로 계속
k)결과의 올바른 값은 B나 S 레지스터로부터 나올 수 있다.
Y0비트는 Y0S-Y0SENSE 유닛(430)에서 5개의 결정적인 양에서 다음과 같은 방식으로 예상된다.
ⅰ Ai-L1 래치의 LS비트 AND Bd 스트림의 다음 비트;A0·Bd;
ⅱ 캐리 세이브 누산기에서의 LS 캐리 아우트 비트 ;CO0;
ⅲ CSA의 제 2 LS 셀에서의 Sout비트;SO1;
ⅳ S스트림에서의 다음 비트 Sd
ⅴ 전 가산기(460)에서의 캐리 아우트 비트, COz;
이들 5개의 값은 다음 Y0비트;Y0i를 만들어내기 위해 함께 XOR된다.
만약 Y0i비트가 1이라면, 같은 랭크(rank)(필요한 지수가 2로서 승산된)의 또다른 N이 보통 더해지고 그렇지 않으면 모듈러스(N)가 보통 더해지지 않는다.
수들의 보통 영역에서의 긴 자연수들의 승산.
이 장치는 보통 정수들의 승산과 가산을 효율적으로 수행하는데 적합하다. 만약 이들 오퍼랜드가 모두 k비트 길이보다 길지 않다면, 인터리브하지 않고 바람직하게 과정이 실행되며 2k+1비트의 Z스트림은 최종 기억 장소로 향하게 된다. k비트보다 긴 정수에 대해서는 결과가 잠재적으로 가장 긴 오퍼랜드의 길이의 2배보다 1비트 길 것이라는 점을 제외하고는 과정이 상술된 인터리브된 모듈의 산술 과 정과 유사하다. 또 본 발명의 장치는 상기된 장치에서의 이용가능한 자원들을 사용하여 2개의 다른 승산을 동시에 수행할 수 있다. 즉, 바람직하게 R1-Ai레지스터에서의 세그먼트에 로드되는 A(피승수)×이전에 지정된 바와 같이 바람직하게 B레지스터로 로드되는 B(A의 승수)+N 레지스터로 바람직하게 로드되는 N(제 2 승산기)×R2 레지스터로 로드되는 오퍼랜드(C)+제 1 반복에서 오직 Sd와 신호선, 바람직하게는 SA레지스터로부터 장치로 들어가는 비트 스트림(S). Y0 SENSE장치는 쓰이지 않는다. 피승수는 반복의 시작 전에 R3레지스터로 가산된다. 반복을 시작할 때, 레지스터(R1, R2, R3)는 반복이 끝날 때까지 래치(L1, L2, L3)로 복사된다. 한편 반복의 유효 클록 사이클(mk+k+1) 동안에 A와 C의 다음 세그먼트는 다음 반복을 준비하기 위해 다시 미리 로드되고 가산된다.
각 반복의 단계에서 Z스트림 상에서의 결과의 제 1 LS k비트는 이제(몽고메리 방법에서와 같이, 정의에 의해 0이 아님) 분리된 기억 장소로 향하게 되고 결과의 LS 부분을 다시 SA레지스터에 적합하게 누적시키기 위해 비워지게 된다. 가장 유의한 mk+1비트는 다음 반복을 위해 일시적인 양(SB)을 구성한다. 마지막 단계에서 g,i,j와 유사하게 CSA는 축적된 값을 유출한다. 승산기 레지스터보다 긴 수들에 대한 LS 부분은 보통의 데이터 출력 레지스터와 언로더를 통해 각각 유닛(60,30 )으로 배출될 수 있다.
결과의 MS, 2m번째 비트는 OVERFLOW 신호선을 통해 FA2 유닛(460)의 LAST CARRY 비트로부터 읽혀진다.
본 발명은 다음의 상세한 기술과 도면과 함께 이해되고 인식된다.
도 1A-1B는 함께 본 발명의 1 실시예에 따라 구성되고 동작하는 직/병렬 수퍼 스칼라 산술 논리 유닛(ALU)의 간략화된 블록도를 형성한다.
도 2는 특히 매우 긴 수들에 대해서 또한 개별적으로 직렬 정수 제산 응용에 유용한 도 1A의 직렬 정수 제산 장치의 바람직한 실현의 간략화된 블록도이다.
도 3은 도 1A-1B의 직/병렬 산술 논리 유닛을 포함한 스마트 카드나 단자에 대한 공공 핵심 암호화 컴퓨터의 간략화된 블록도이다.
도 4는 젯수의 유효 비트 길이가 피젯수의 유효 비트 길이의 반인 경우에 대해 도 2의 제산 장치를 이용하여 젯수에 의한 피젯수의 승산 연산의 단계를 보여주는 표이다.
도 5는 젯수의 유효 비트 길이가 피젯수의 유효 비트 길이의 반보다 작은 경우에 대해 도 2의 제산 장치를 이용하여 젯수에 의한 피젯수의 승산 연산의 단계를 보여주는 표이다.
도 1A-1B는 함께 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 직/병렬 산술 논리 유닛(ALU)의 간략화된 블록도를 형성한다. 도 1A-1B는 바람직하게 다음의 성분을 포함한다.
단일 멀티플렉서- 신호 입력의 다중성으로부터 하나의 신호나 비트 스트림을 선택하는 제어된 스위칭 소자와 이 선택된 신호를 단일 출력으로 향하도록 하는 것. M1에서 M13까지 표시된 멀티플렉서는 더 큰 소자의 본래의 부분들이다.
M_K 멀티플렉서(390)는 k+1 단일 멀티플렉서의 배열로 4개의 k 또는 k+1 입력중 어느 것이 CSA(410)에 가산될 것인지를 선택한다.
B(1000), SA(130), SB(180), N(1005)은 바람직한 실시예에서의 4개의 주요 직렬 메인 레지스터이다. SA는 개념상으로 그리고 실질적으로 군더더기이지만 매우 긴 수의 계산을 상당히 촉진시킬 수 있으며 특히, 모듈러스의 길이가 2·k·m비트 길이인 경우에 휘발성 메모리 자원을 저장하고 또한 긴 제산 계산을 단순화시킨다.
직렬 가산기와 직렬 감산기는 2개의 직렬 입력과 하나의 단일 출력을 가진 논리 소자이고 비트의 2개의 긴 스트링에 대한 가산과 감산을 수행한다. 부품(90, 480)은 감산기이고 330과 460은 직렬 가산기이다. 입력에서 출력으로의 전파 시간은 매우 작다. 직렬 감산기(90)는 만약 B*이 N보다 크거나 같다면 B*를 B로 감소시킨다. 직렬 감산기(480)는 B*이 N보다 크거나 같을지를 감지하기 위한 비교기 성분의 부품으로 사용된다. 전 가산기(330)는 로드 버퍼(340)에 290과 320로드 버퍼에서의 값의 합과 같은 값을 공급하는 2개의 비트 스트림을 더한다.
고속 로더와 언로더, 10과 20 30과 40은 각각 CPU 제어기에서의 데이터 흐름을 가속화하기 위한 장치이다. 이것은 바람직한 실시예에서 DMA나 다른 하드웨어 가속기를 구성할 수 있다. 20과 40은 도 2의 제산 입력과 출력을 조절하는데 필요한 데이터 워드를 거꾸로 하기 위한 것이다.
데이터 인(50)은 현재의 ALU장치는 직렬 공급 단축 처리기이고 데이터가 병 렬로 공급되며 직렬로 처리되므로 직렬 출력 장치에 있어서 병렬이다.
데이터 아웃(60)은 처리기에서 결과물을 출력하기 위한 병렬 출력 장치에서 직렬이다. 몫 발생기는 제산 메카니즘의 각각의 반복에서 몫 비트를 발생시키는 도 2의 부품이다.
누산기의 MS k+1비트를 회수하기 위해 대체물이 복잡한 k+1비트 평행 출력 소자가 될 것이므로 Bd(240), S*d(250), Nd(260)에 대한 플러시 신호가 마지막 k+1비트가 CSA비트를 플러시 아웃할 수 있도록 발생된다.
부하 버퍼 R1(290), R2(320), R3(340)는 0이상의 가능한 3개의 피승수 조합을 받을 수 있도록 적합한 직렬 입력 병렬 출력 시프트 레지스터이다.
래치 L1(360), L2(370), L3(380)는 로드 버퍼로부터 출력을 받아서 로드 버퍼로 하여금 일시적으로 다음 단계의 데이터가 바람직하게 L2,L2 및 L3로 래치되기 전에 처리될 수 있도록 생성된다.
Y0감지(430)는 LS제로의 k비트 스트링이 몽고메리 승산과 제곱으로 Z에서 빠져 나오도록 모듈러스가 누산되는 배수를 결정하는 논리 장치이다.
1비트 지연 장치(100,200,230)는 도 1A에서의 데이터 준비 장치와 도 1B에서의 데이터 처리 장치 사이의 동기화 문제를 조정하기 위한 각각의 데이터 흐름에 삽입된다.
k비트 지연, 쉬프트 레지스터(470)는 만약 Z/2k이 N보다 크거나 같다면, Z/2k와 N의 비교가 동기적으로 이루어질 것을 보증한다.
캐리 세이브 누산기는 직/병력 승산기의 입력으로 흔히 단일값이 래치되는 대신, 제로값보다 큰 3개의 다른값들이 더해질 수 있다는 사실을 제외하고는 직/병렬 승산기와 거의 동일하다.
삽입 마지막 캐리(440)는 S레지스터가 오직 mk비트 길이이므로 S 스트림의 mk+1번째 비트를 삽입하기 위해 쓰인다.
빌림/오버플로 감지(490)는 결과가 모듈러스(N으로부터의)보다 크거나 같은지 또는 mk번째 비트가 1인지를 감지할 수 있다.
제어 메카니즘은 도시되어 있지 않으나 바람직하게는 단축된 데이터 흐름을 위한 스위치 세트와 함께, 연결된 계수기 장치의 한 세트로 이해될 수 있다.
수의 소수와 복합 소수 영역에서의 모듈의 계산을 위해, A와 B를 각각 피승수와 승수로 정의하고 N을 보통 A 또는 B보다 큰 모듈러스라고 정의한다. N은 또한 모듈러스의 값이 기억되는 레지스터를 뜻한다. N은 어떤 경우에는 A보다 작을 수 있다. 우리는 m·k=n비트 길이의 오퍼랜드라고 A,B 및 N을 정의한다. 각각의 k비트 그룹은 문자라고 불리우고 그룹의 크기는 승산기 장치의 크기로 정의된다. 그 다음 A,B 및 N 각각은 m문자 길이이다. 이어지는 단계별 과정 설명의 편의를 위해, A,B 및 N을 512비트 길이(n=512)라고 가정하고 승산기와 같은 현재의 비용 효과 길이와 간단한 CPU의 데이터 조작 속도 때문에 k는 64비트 길이라고 가정하며 m=8은 오퍼랜드에서의 문자의 수이며 512비트 오퍼랜드를 가진 제곱 또는 승산 루프에서의 반복 회수이기도 하다. 모든 오퍼랜드는 양의 정수이다. 좀더 일반적으로는 A,B,N,n,k와 m은 어떠한 적절한 값이라도 취할 수 있다.
비모듈 기능에 있어서, 레지스터(N,S)는 다른 산술 오퍼랜드의 임시 기억장소로 사용될 수 있다.
우리는 모듈수의 일치를 나타내기 위해 기호 ‘≡’를 사용한다. 예를 들어 , 16≡2 mod 7,인 경우 2는 16을 7로 나누었을 때의 나머지이므로 우리는 이것을 “16은 2 모듈로 7과 일치한다”라고 말한다. 우리가 Y mod N≡X mod N이라고 표시했을 때 Y와 X 둘다 N보다 클 수 있지만, 양의 X와 Y에 대해서는 나머지는 동일할 것이다. 음의 정수 Y의 합동식은 Y+uN이고 여기서 N은 모듈러스이며 만약 Y의 합동식이 N보다 작다면 u가 양의 결과를 줄 가장 작은 정수가 될 것이라는 점도 또한 주목하라.
우리는 보다 한정적인 의미에서 합동식을 표시하기 위해 기호 ‘¥’를 사용한다. 여기에 기술된 과정 동안에 값은 종종 원하는 값이거나 원하는 값+모듈러스가 된다. 예를 들어, X¥2 mod 7. X는 2 또는 9일 수 있다. 우리는 X가 2 mod 7로 한정된 식을 가졌다고 말한다.
우리가 X=A mod N이라고 썼을 때, X는 A를 N으로 나눈 나머지라고 정의한다. 예를 들어, 3=45 mod 7이다.
수의 이론상, 모듈의 역승산은 기본 개념이다. 예를 들어, X의 모듈 역승은 X-1이라고 표시되고, 이것은 XX-1 mod N=1에 의해 정의된다. 만약 X=3이라면 N=13이고 X-1=9이다. 예를 들어, 3·9를 13으로 나눈 나머지는 1이다.
약어 MS와 LS는 비트들과 문자들 및 완전한 오퍼랜드 값들을 참조할 때, 관습상 디지털 명명법에서 최상위(most significant)와 최하위(least signific ant)를 뜻할 때 사용된다.
이 명세서 전반에 걸쳐 N은 값 N과 N을 가지고 있는 시프트 레지스터의 이름을 모두 지칭한다. 값의 아래쪽에 붙여진 별표는 값이 잠재적으로 불완전하거나 변하기 쉽다는 것을 의미한다. A는 누승될 수의 값이고 n은 N 오퍼랜드의 비트 길이이다. 초기화 후에 A가 A*로(A*=2nA-후에 설명됨)“몽고메리 정규화”될 때, A*와 N은 누승에서 중간 단계를 통한 상수값이다. 제 1 반복 동안에, 누승의 초기화 후에 B는 A*와 같아진다. B는 또한 상기 누산된 값이 누승 존재시의 원하는 결과와 같게 되는 레지스터의 이름이다. S*는 임시값이며 S,SA,SB는 또한 대부분 S의 단일 MS비트가 저장되는 레지스터나 레지스터들을 가리킨다.(이 MS비트와 연결된 S*는 S와 같다)S(i-1)은 i번째 반복 시작에서의 S의 값을 뜻하고 S0는 S(i)번째 값의 LS값을 뜻한다.
이중 작용 직/병렬 승산기의 구성을 위한 기초로서 우리가 직/병렬 승산기의 표준 구조를 사용하였으므로 우리는 캐리 세이브 누산기(올림수 예견 가산기 또는그것의 첫번째는 꽤 복잡하고 두번째는 매우 느린 리플 가산기와 반대되는)에 기초한 승산기의 가산 부분과 캐리 세이브 가산기 또는 누산기의 구분을 짓고 미리 로 딩하는 메카니즘과 멀티플렉서, 래치들을 별개로 취급하여 우리가 A와 B를 곱하고 C와 D를 동시에 곱하여 양쪽의 결과를 더하는 것, 즉 A·B+C·D가 가능하게 되며 이로써 이 누산기는 매우 강력한 엔진으로 변환되는 것이다. 매우 큰 수에 대한 강력한 모듈 연산과 보통의 정수 산술 연산을 제공하는데 필요한 모듈의 감소와 직렬 가산에 필요한 기대되는 감지 연산을 제공하기 위해 부가적인 논리가 이 승산기에 첨가된다.
몽고메리 모듈 승산
모듈의 승산, A·B mod N을 계산하는 데 있어서의 고전적인 접근은 곱,A·B의 나머지는 제산 과정에 의해 계산된다. 큰 오퍼랜드들의 재래식 제산을 수행하는 것은 직/병렬 승산보다도 수행하는 것이 더 힘들다.
몽고메리 모듈 감산법을 사용하면, 제산은 2개의 미리 계산된 상수들을 사용하는 승산에 의해 본질적으로 대체된다. 여기에 예시된 과정에서는 모듈러스의 함수인 1개의 미리 계산된 상수만이 존재한다. 이 상수는 이 ALU 장치를 사용하여 계산될 수 있다.
이 장치에 사용된 바와 같이, 몽고메리 과정의 단순화된 표현은 지금부터 후술하는 완전한 바람직한 기술에 의해 제시된다.
만약 우리가 홀수(LS비트 1), 예컨대 1010001(=8110)를 가지고 있다면, 우리는 언제나 이 홀수를 그것에 또다른 고정, 보상 홀수, 예컨대 1111(=1510)를 더함으 로써 짝수(단일 LS비트 0)로 변환할 수 있다(1111+1010001=1100000(9610). 이러한 특별한 경우에, 우리가 미리 전체의 스트링(81)을 알기 때문에 5개의 LS 제로들을발생시킨 수들을 찾아냈고, 81에 더할 수 있는 2진수를 쉽게 결정할 수 있었고 우리가 필요로 하는 만큼 많은 LS 제로들을 가질 수 있는 새로운 2진수를 만들어 낼 수 있었다. 이 고정수는 홀수이여만 하고 그렇지 않으면 결과의 점진적인 LS비트에 영향을 줄 수 없다.
만약 우리의 절차가 시간이 재어지는 직/병렬 캐리 세이브 절차라면 LS 제로의 연속적인 수를 가지는 것이 바람직하고 매 클록 사이클에서 우리는 단지 다음 비트를 고정하기만 하면된다. 매 클록에서 다음 비트가 잠재적으로 1이면 고정수를 더하기에 충분하지만 잠재 비트가 0이 된다면 고정수를 더하기가 충분치 않다. 하지만 비트간 오버플로(이중 캐리들)를 발생시키기 않도록 관련된 승산기 비트가 1이고 Y Sense가 또한 1을 탐지할 때, 이 고정수는 바람직하게 미리 피승수와 가산되고 누산기로 더해진다.
이제 모듈의 산술에 있어서, 모듈러스로 나누어진 값의 나머지에만 관심이 있고 모듈러스를 어떤 값에 여러번 더할 수 있고 같은 나머지를 가진 어떤 값을 가지고 있다는 것을 알고 있다. 이것은 우리가 YN=∑yi2iN을 어떤 정수에 더할 수 있고 여전히 같은 나머지를 가지고 있다는 것이며, Y는 원하는 LS제로들을 얻기 위해 모듈러스 N에 우리가 더하는 회수이다. 상술한 바와 같이, 우리가 더하는 모듈러스는 홀수일 수밖에 없다. i가 짝수에서의 LS제로들의 수일 때 발생하는 홀수의 2i배로 정의되는 모듈러스들에서도 방법은 존재한다.
몽고메리 인터리브된 변화에 의한 문제 해결은 수들과 승산기들의 비용 유효 크기에 대해 우리가 가지고 있는 제한된 기억 장소를 감소시키는 것에 목표를 두고 있다. 이것은 특히, 예컨대 n=1024비트의 경우 우리가 계속해서 하나의 큰 정수를 또다른 큰 정수(보통 이중 길이의 2048비트의 정수를 발생시키는 과정)로 곱하는 공개키 암호화 기능을 수행할 때 특히 유용한다.
우리는 Ns(모듈러스)에서 A·B=X 또는 A·B+S=X에 승산(또는 제곱)의 과정 동안에 충분한 시간을 더할 수 있고 따라서 우리는 n LS제로들을 가진 기껏해야 n+1비트인 수 Z를 가지게 된다.
만약 우리가 이들 제로들을 무시함으로써 원하는 결과를 2n으로 나누었다는 것을 기억한다면 LS n 비트들을 무시하고 그러한 수들을 계속해서 사용할 수 있게 된다.
LS n 비트들이 무시되었을 때, 그리고 우리가 MS n(또는 n+1)비트만을 사용한다면 효과적으로 결과에 2n의 역 모듈러인 2-n을 곱했다. 만약 우리가 이 결과에 계속해서 2n mod N(또는 2n)을 곱한다면 원하는 결과(같은 몫을 가지는)인 A·B+S mod N와 일치하는 값을 얻게 될 것이다. 앞으로 보게 되는 바와 같이, 몽고메리 방법을 사용하여 이 방법에 의해 재도입되는 기생 요소인 2-n을 극복하기 위해 결과에 바람직하게 22n이 곱해진다.
예:
A·B+S mod N=(12·11+10)mod 13=(1100·1011+1010)2 mod 10112
우리는 고정수가 n LS비트중 하나에 필요할 때는 언제나 2iN을 더해 넣을 것이다.
B 1011
×A 1100
add S 1010
add A(0)·B 0000
---- LS비트의 합=0 N을 더하지 않음
add 20 (N·0) 0000
합 0101 →0 LS비트는 캐리 세이브 가산기를 남김
add A(1)·B 0000
---- LS비트의 합=0 - add N
add 21(N·1) 1101
합 1001 →0 LS비트는 CS 가산기를 남김
add A(2)·B 1011
---- LS비트의 합=0 N을 더하지 않음
add 22(N·0) 0000
합 1010 →0 LS비트는 CS 가산기를 남김
add A(3)·B 1011
---- LS비트의 합=1 더하기 N
add 23(N·1) 1101
합 10001 →0 LS비트는 CS 가산기를 남김
그리고 이 결과는 10001 00002mod 13=17·24mod 13.
17이 13보다 크므로 13을 빼고 그 결과는
17·24≡4·24mod 13.
분명히 2-n(AB+S)mod N=9(12·11+10)mod 13≡4
몽고메리 산술에서 우리는 오직 MS 0이 아닌 결과(4)를 이용하고 실제의 결과가 2n으로 나누어졌다는 것을 효과적으로 기억한다; n제로들이 MM 결과로 강제되었다.
우리는 결과에 24mod 13≡3을 효과적으로 곱한 (8+2)·13=10·13을 더해 넣었다. 사실상 우리가 여분의 제로들을 사용하였다면 A·B+Y·N+S-(12·11+10·13+10)을 하나의 과정으로 수행하였다고 말할 수 있고 이것은 바람직한 실시예에서 가능한 것으로 기술될 것이다.
점검-(12·11+10)mod 13=12;4·3=12.
요약하면 몽고메리 승산의 결과는 2-n이 곱해진 원하는 결과이다.
이전의 결과를 같은 승산 방법을 사용하여 원하는 결과로 복구하기 위해, 우리는 이전의 결과를 22n으로 몽고메리 승산을 해야하고 우리는 이것을 각각의 MM이 기생 요소 2-n을 남기기 때문에, H라고 부른다.
몽고메리 승산 함수 (A·B)N은 P 필드로의 A·B 프로덕트의 모듈로 N의 승산을 수행한다(상기 예에서 우리는 4를 이끌어냈다). P 필드로부터 정규의 모듈의 필드로의 복구는 미리 계산된 상수 H를 사용하여 (A·B)N의 결과 상에 P를 행함으로써 수행된다. 이제 만약 P≡(A·B)N이라면 (A·B)N≡A·B mod N이라는 식이 도출되고 이것으로 2개의 P 필드 승산에서의 정규의 모듈 승산을 수행하게 된다 .
몽고메리 모듈 감산은 n 또는 n+1비트 길이의 오퍼랜드에 일련의 승산, 가산 및 감산을 행함으로써 n과 2n비트 길이의 오퍼랜드에 대한 일련의 승산과 제산 연산을 피하게 된다. 전 과정은 N보다 작거나 같은 결과를 낳게 된다. 주어진 A,B와 홀수 N에 대해 항상 A·B+Q·N가 그것의 n LS비트가 0인 수를 발생시키는 Q가 존재하게 된다. 또는
P·2n=A·B+Q·N
이것은 2n비트 길이의 표현식과 그것의 n LS비트가 0이라는 것을 뜻한다.
이제, I·2n≡1 mod N(I는 모든 홀수 N에 대해 존재함)이라 한다. 이전 등식의 양변에 I를 곱하면 다음의 등식이 도출된다.I
등식의 좌변은
P·I·2n≡P mod N;(I·2n≡1 mod N인 것을 기억하라)
등식의 우변은
A·B·I+Q·N·I≡AB·Imod N(Q·N·I≡0 mod N인 것을 기억하라)
그러므로
P≡A·B·Imod N.
이것은 또한 기생 인자 I=2-nmod N이 P필드 승산이 수행될 때마다 도입된다는 것을 의미한다.
그리고 이것을 “P필드에서의 A와 B의 승산”, 또는 몽고메리 승산이라고 부른다.
우리는 H의 값을 이전의 등식에서 P를 대체시킴으로써 유도할 수 있다.
(A·B·I←P; H←H;인 것을 보라. I←그리고 어떤 승산 연산이라고 기생(I)를 도입한다)
만약 H가 I2의 다중역과 같다면, 등식은 유효하다. 그러므로
H=I-2mod N≡22nmod N(H는 N의 함수이고 그것을 H 파라미터라고 부른다)
1) X=A·B
2) Y=(X·J)mod 2n(n LS비트만이 필요하다)
3) Z=X+Y·N
4) S=Z/2n(J에 대해 필요한 것은 Z로 하여금 2n으로 나누어질 수 있게 한다는 점이다)
5) P¥S mod N(만약 S≥N이면, N은 S에서 빼진다)
마지막으로 5단계에서):
[N의 감산 후에 만약 필요하다면,
상기에 따라
Y=A·B·Jmod 2n(오직 n LS비트만을 사용);
그리고:
Z=A·B+(A·B·Jmod 2n)·N.
Z가 2n(Z의 n LS비트는 바람직하게는 0임)으로 나누어질 수 있도록 다음 등식이 존재할 것이다.
[A·B+(A·B·Jmod 2n)·N]mod 2n≡0
이 등식이 존재하도록 N·Jmod 2n 은 -1과 같거나 또는
J≡-N-1mod 2n
그리고 상수 J를 찾았다.
그러므로 J는 N만의 함수인 미리 계산된 상수이다. 그러나 MM결과를 비트 단위로 출력시킨 기계에서 LS 스트링의 출력 비트가 0이었던 매 경우에 있어서 Ns를 더해 넣기 위해 공급이 발생해야 하고 그로 인해 Y가 하드와이어드 로직을 이용하여 비트 단위로 감지될 수 있으므로 J를 미리 계산하고 계속해서 Y=A·B·Jmod 2n을 계산해야 할 필요성을 회피할 수 있게 된다. 또한 이러한 방식은 홀수인 Ns에 대해서만 적용할 수 있다는 점이 기술되었다.
그러므로 명백할 것처럼, 기술된 과정은 3개의 승산을 채택하고 있고 그 중 하나는 합, 또 하나는 주어진 A,B,N에 대한 한 감산의 최대치와 마지막으로 (A·B)N을 얻기 위한 미리 계산된 상수이다. 이 결과와 같은 과정 및 미리 계산된 상수(H)(모듈 N의 함수)를 이용하여, AB mod N을 찾을 수 있다.
A가 B와 또한 같을 수 있으므로 이 기본 연산자는 모듈의 산술에서 제곱 또는 승산을 하기 위한 장치로서 사용될 수 있다.
인터리브된 몽고메리 모듈의 승산
이전의 단원은 모두 0비트 길이였던 오퍼랜드의 승산과 관련된 모듈의 승산 방법을 기술하였고 결과는 2n+1비트의 저장 공간을 요구하였다.
몽고메리의 인터리브된 환산을 사용하면(Dusse에 의해 상술된 논문에서 묘사되었듯이), 보다 짧은 오퍼랜드와 레지스터 및 하드웨어 승산기로 승산 연산을 수행하는 것이 가능하고 이것은 상대적으로 적은 수의 논리 게이트로 전자 장치를 실현하는 것을 가능케 한다.
우선 장치가 어떻게 동작할 수 있는가를 기술할 것이고 인터리브의 각 반복에서 우리는 J0상수를 사용하여 N이 가산되는 회수를 계산한다. 나중에 Y0의 고정 배선 유도를 사용하여 각 승산{다음의 예제에서의 2)} 단계에서 J0+를 제거하고 2개의 별개인 직렬/승산기의 기능을 유사한 실리콘 재료를 사용하는 2배의 속도보다 빠르게 A·B+C·N+S를 수행할 수 있는 새로운 단일 총괄 승산기로의 통합을 가능케 할 인터리브 방법을 기술한다.
k비트 승산기를 사용하면 k비트 길이의 문자를 정의하기 편리하다; n비트의 m문자가 있다.;즉, m·k=n.
J0는 J의 LS문자
그러므로 J0≡-N0
-1mod 2k(N이 홀수이므로 J0존재)
J와 J0 상수는 잠재적인 출력에 행해질 때, 최하위 제로들의 소정의 수를 가지도록 모듈러스를 얼마나 여러번 더해야 할지를 알려주는 보상을 위한 수이다. 나중에 본 직렬 장치에 대한 부가적인 장점을 기술할 것이다;왜냐하면, 출력의 다음 직렬 비트가 쉽게 결정될 수 있으므로 우리는 언제나 모듈러스(항상 홀수)를 다음 중간 결과에 더할 수 있다. 이것은 CSA를 나오는 LS 직렬 비트인 출력 비트가이러한 가산이 없이 “1”이 되었을 경우이고 이로 인해 모듈러스에서 이전의 것을 심지어 중간 결과에도 더하고 또다른 LS 제로를 출력 스트링에서 약속한다. 아무리 많이 모듈러스가 결과에 더해지더라고 나머지는 일정하므로 일치성이 유지된다는 것을 기억하라.
처음에 S(0)=0(제 1 반복의 시작에서 S의 ¥값)
i=1,2....m에서:
1) X=S(i-1)+Ai-1·B(Ai-1은 A의 i-1번째 문자;S(i-1)은 i번째 반복의 시작에서 S의 값)
2) Y0=X0·J0 mod 2k(X0·J0의 곱의 LS k비트)
(이 과정은 k LS비트만을 사용하고 계산한다. 예컨대, 최하위 64비트)
바람직한 실시예에 있어서, 직렬 기계(Y0)는 비트 단위로 예상될 수 있으므로 이 단계는 회피된다.
3) Z=X+Y0·N
4) S(i)=Z/2k(Z의 k LS비트는 항상 0, 그러므로 Z는 항상 2k로 나눌 수 있다. 이 제산은 Z의 LS k비트는 모두 0이므로, k비트 우측 시프트와 같다. 또는 회로에서 예시되는 것과 같이, Z의 LS k비트는 단지 무시된다.
5) S(i)=S(i) mod N(N은 N보다 큰 S(i)들로부터 감산된 것임).
바람직할 실시예에서, 모든 S(i)에 대해, S(i)는 2N보다 작다는 것을 알 필요가 있다. 이것은 또한 마지막 결과(S(m))는 항상 N의 1 감산으로 N보다 작은 양으로 감소될 수 있다는 것을 의미한다.
과정에서 사용되는 오퍼랜드들에 대해서 다음의 내용들을 알 수 있다.
S(i-1)<2n+1(임시 레지스터는 B 또는 N 레지스터보다 1비트 길다),
B<N<2n 과 Ai-1<2k.
정의를 내리면,
S(i)=Z/2k(가능한 감산 전에, 과정의 끝에서의 S값)
모든 Z에 대해 Z(i)<2n+k+1.
Xmax=Smax+Ai·B<2n+1-1+(2k-1)(2n-1)
Qmax=Y0N<(2k-1)(2n-1)
그러므로 Zmax<2k+n+1-2k+1+1<2k+n+1-1.
이고 Zmax가 2k로 나누어지므로:
S(m)<2n+1-21.
Nmin>2n-2이고, S(m)max는 항상 2·Nmin이므로 마지막 결과에는 1번의 감산만이 필요하다.
S(m)max-Nmin=(2n+1-21-1)-(2n-1)=2n-4<Nmin
몽고메리 인터리브된 모듈의 승산예:
16진수 형식으로의 다음의 계산은 인터리브된 방법의 의미를 명확히 해준다.
N=a59(모듈로),A=99b(승수),B=5c3(피승수),n=12(N의 비트 길이),k=4(승산기의 비트 크기와 문자의 크기) 및 n=k·m이므로 m=3.
7·9=-1 mod 16과 H=22·12 mod a59≡44b이므로 J0=7.
예상된 결과는 F≡A·B mod N≡99b·5c3 mod a59≡375811 mod a59=22016.
처음에: S(0)=0
단계 1 X=S(0)+A0·B=0+b·5c3=3f61
Y0=X0·J0 mod 2k=7(Y0- 새로운 MAP에서 예측된 고정 배선)
Z=X+Y0·N=3f61+7·a59=87d0
S(1)=Z/2k=87d
단계 2 X=S(1)+A1·B=87d+9·5c3=3c58
Y0=X0·J0 mod 2k=8·7 mod 24=8(예측된 고정 배선)
Z=X+Y0·N=3c58+52c8=8f20
S(2)=Z/2k=8f2
단계 3 X=S(2)+A2·B=8f2+9·5c3=3ccd
Y0=d·7 mod 24=b(예측된 고정 배선)
Z=X+Y0·N=3ccd+b·a59=aea0
S(3)=Z/2k=aea
S(3)>N이므로
S(m)=S(3)-N=aea-a59=1
다시 처음에: S(0)=0
단계 1 X=S(0)+C0·H=0+1·44b=44b
Y0=d(새로운 MAP에서 예측된 고정 배선)
Z=X+Y0·N=44b+8685=8ad0
S(1)=Z/2k=8ad
단계 2 X=S(1)+C1·H=8ad+9·44b=2f50
Y0=0(새로운 MAP에서 예측된 고정 배선)
Z=X+Y0·N=2f50+0=2f50
S(2)=Z/2k=2f5
단계 3 X=S(2)+C2·H=2f5+0·44b=2f5
Y0=3(새로운 MAP에서 예측된 고정 배선)
Z=X+Y0·N=2f5+3·a59=2200
S(3)=Z/2k=22016
이것은 99b 5c3 mod a59의 기대치이다.
만약 각 단계에서 k LS 제로들을 무시하면, 반드시 n MS비트를 2k와 승산해야 한다. 마찬가지로 각 단계에서 승산기의 i번째 세그먼트는 또한 2ik로 곱해진 수이고 그것에 S(i)와 같은 등급를 부여한다.
또다른 바람직한 실시예에서는 J0상수를 안다는 것은 어떤 잠재적인 값을 뜻한다는 것을 주목해야 한다.
누승
다음 수열의 유도[D.Kruth, The art of computer programming, vol. 2:Seminumerical algorithm, Addison Wesley, Reading Mass.,1981](이후에는 (이후에는“Kruth”라 칭함)는 일련의 제곱과 승산을 설명하고 이것은 모듈의 누승을 실현한다.
이 장치가 P 필드에서 제곱하고 승산하므로 몽고메리 상수(H=22n)를 미리 계산한 후에, 다음을 계산한다.
C=AE mod N.
E(j)를 지수 E의 2진수 표현에서의 j비트를 뜻한다고 하면 그것의 지수가 1인 MS비트와 그것의 지수가 q인 LS비트로 시작하면 홀수인 지수에 대해 다음과 같이 누승을 할 수 있다.
B=A*
FOR j=2 TO q-1
IF E(j)=1 THEN
ENDFOR
C=B
C=C-N 만약 C≥N.
마지막 반복이 종료한 후에, B값은 ¥부터 AE mod N까지이고 C는 최종치이다.
명확하게 하기 위해, 다음의 예를 들겠다.
E=1011→E(1)=1;E(2)=0;E(3)=1;E(4)=1;
A1011 mod N을 찾기 위해;q=4
B=A*
FOR j=2 to q
E(2)=0; B=A2I-1
E(4)가 홀수였으므로, 마지막 승산은 기생 I-1를 제거하기 위해 A에 의해 행해진다.
C=B
H파라미터를 계산하기 위한 방법은 미국 특허 5,513,133에 기술되어 있다.
긴 제산 과정
도 2는 도 1A의 처리기에 이용가능한 데이터 조작 장치를 사용하여 긴 제산을 수행하기 위한 결정적인 처리 장치의 바람직한 실시예를 보여준다.
도 4와 도 5는 도 2의 장치의 동작예이다.
제산 과정에서 젯수(d)는 2n-1<d<2n의 범위에 있고 피젯수(D)는 22n-1<D<2
2n의 범위에 있다. 장치는 가장 단순하게 사용된다. d는 도 2에서의 N-우측 시프트 레 지스터(100 5)(N0레지스터(210)와 N1레지스터(200)의 연결체)로 미리 로드되고 피젯수(D)의 MS n비트는 B-우측 시프트 레지스터(1000)로 미리 로드되며, D의 n LS비트는 SA-우측 시프트 레지스터(130)로 역로드된다. 이것은 누군가가 각각의 새로운 시험 감산에서 새 LS비트가 SA에서 SB로 공급되도록 실현하는 긴 제산을 위해 숫자를 수작업으로 배치할 것이므로 반드시 있어야 한다.
초기화 반복에서 도 2의 오버플로 플립 플롭(170)은 처음에 리셋된다. 지금 젯수(d)를 포함하는 정수(N)은 D의 MS비트 B로부터 시험 감산되며 B와 N레지스터 모두 순환되고 거기서 그들의 출력은 직렬 감산기(90)로부터 공급되며 그 출력은 B-fN이고 감산의 경우는 f=1이고 감산하기 않는 경우 f=0이다. 몫 발생기(120)는 90에서 B≥N인지를 결정해서 d가 B로부터 빼질지를 결정하는 NEXT SUBTRACT를 보내고 다음 반복에서 B가 N보다 크거나 같을 때에만 신호가 1이다. 이 NEXT SUBTRACT비트는 성공을 뜻하고 몫의 MSB(most significant bit)이며 SB레지스터(180)로 또한 클록 신호에 맞추어 들어간다. 이것이 SB레지스터로 클록 신호에 맞추어 들어가므로 0이 SB레지스터 밖으로 나와 SA레지스터로 시프트되어 SA레지스터의 NEW LS BIT를 나오게 한다. 이들 레지스터가 모두 우측 시프트 레지스터이므로 SB에서의 몫과 SA에서의 피젯수값이 역순으로 놓이게 된다.
다음 반복시, 제 1 유효 클록 사이클에서 SA에서 시프트 아웃된 NEW LS BIT는 90의 출력(R)을 앞서게 되고 R에 2를 곱하고 NEW LS BIT의 값을 2R에 더한다. 이 연결된 값은 다음 회에서 f=1 또는 f=0인지 결정하기 위해, B 레지스터로 역순환되고 120에서 또한 테스트된다.
마지막으로 나머지는 B레지스터에 있게 되고 몫의 n비트는 SB 레지스터에 있게 되며 몫의 MSB는 SA 레지스터에 있게 된다.
피젯수와 젯수중 가장 중요한 것은 바람직하게는 D와 d의 모든 크기에 대해 B 레지스터와 N 레지스터의 MSB에 있다. 결과를 얻기 위한 반복의 횟수는 22n-1보다 작은 Ds에 대해서는 감소하고 2n-1보다 작은 ds에 대해서는 감소한다. 장치는 하드웨어 구동되고 펌웨어 보상이 장치를 언로딩할 때 오퍼랜드를 시프팅하기 위해 제공될 수 있다.
도 3의 비휘발성 메모리에 상주하는 프로그램은 바람직하게 레지스터가 로드되는 지를 확인하고 제어 레지스터에 대해 성공적인 제산 과정에 대해 필요한 반복횟수를 정의한다. 몫 비트는 역 데이터 출력 언로드인 유닛(60,40)을 통해 처리될때 다시 순서가 바이트 단위로 거꾸로 된다.
이 처리기는 H 파라미터를 계산하는 데 유용한 소자이며 또한 바람직하게는 유클리드 함수의 계산에 이용된다.
A×B+C×D+S를 수행하는 도 1A의 직렬 정수 제산 장치와 도 1B의 이중 작용 승산기는 보통 동시에 작동하지 않는다.
도 4의 예에서 피젯수(B)는 187(10111011), 젯수(N)은 7(111)이고 일단 제산 이 실행되면 몫은 20(10100)이 되고 나머지는 7(111)이 된다.
도 5의 예에서 피젯수(B)는 173(10101101), 젯수(N)은 5(101)이고 일단 제산이 실행되면 몫은 34(100010)이 되고 나머지는 3(11)이 된다.
Gressel의 미국 특허 5,513,133의 캐리 세이브 누산기가 도 5에 예시되어 있다.
Gressel의 상기 참조된 미국 특허의 직렬 전 가산기가 도 7에 예시되어 있다.
Gressel의 상기 참조된 미국 특허의 직렬 감산기가 도 8에 예시되어 있다.
Gressel의 상기 참조된 미국 특허의 제산 장치가 도 9에 예시되어 있다.
“정수의 정규 영역”이라는 용어는 음이 아닌 정수, 즉 자연수를 지칭한다.
본 발명의 바람직한 실시예에 의하면, 여기서 나타나고 기술된 시스템은 a와 b를 0으로 리셋하고 S0=1로 맞춤으로써 J0를 계산하는데 이용된다.
이 특허 서류의 개시 부분은 저작권 보호법의 적용을 받는 자료를 가지고 있다. 저작권 소유자는 그것이 특허와 상표 특허청의 특허 화일과 기록에 나타나 있으므로 누군가가 특허 서류나 특허 공개물의 모사 재생을 하는데는 반대하지 않지만 그렇지 않으면, 여하튼 모든 저작권을 유지시킨다.
본 발명의 소프트웨어 구성 요소는 원한다면 ROM(판독 전용 메모리)으로 구현될 수 있다는 것이 평가되어 있다. 일반적으로 소프트웨어 구성 요소는 원한다면 재래의 기술을 사용하여 하드웨어로도 구현할 수 있다.
명확성을 기하기 위해 별개의 실시예의 문맥에 기술된 본 발명의 여러가지 특징들은 단일 실시예에서의 조합으로 또한 제공될 수 있다는 것이 평가되어 있다. 거꾸로 말하면, 간략화를 기하기 위해 단일 실시예의 문맥에 기술되어 있는 본 발명의 다양한 특징들은 또한 별개로 제공될 수 있거나 어떤 적절한 부속 조합으로 제공될 수 있다.
본 발명은 특별히 지금까지의 상기 보여지고 기술된 것에 한정되지 않는다는 것은 당업자에게 있어서 자명한 것이다. 오히려, 본 발명의 영역은 다음의 청구항에 의해서만 정해질 뿐이다.
Claims (33)
- P(A·B)N의 몽고메리 모듈 승산을 수행하는 마이크로전자 논리연산 장치로서, P(A·B)N은 A·B·I mod N에 모듈적으로 일치하고, I는 2-n mod N이고, A,B,N은 n 비트 길이 오퍼랜드이고, N은 홀수인 마이크로전자 논리연산 장치에 있어서, 상기 장치는,각각이 n 비트 길이 오퍼랜드를 유지하고, 승수(B) 및 모듈러스(N)를 각각 저장하도록 적용되어 있는 제1 (70,80;1000) 및 제2 (200,210;1005) 주메모리 레지스터;제1 k 비트 스트링(Ai)을 제1 들어오는 비트(Bd)로 그리고 제2 k 비트 스트링(N0,Y0)을 제2 들어오는 비트(Y0,Nd)로 동시에 승산하고 그 결과를 누산하는 디바이스(390)로서, 적어도 k+1 비트 길이의 하나의 캐리-세이브 가산기(410)를 가지고, 모두-제로 스트링 값, 상기 제1 k 비트 스트링, 상기 제2 k 비트 스트링, 또는 상기 제1 및 제2 k 비트 스트링의 미리 계산된 합중의 하나를 상기 캐리세이브 가산기로의 입력으로 선택하도록 적용된 디바이스(390);제 1 단계에서 캐리-세이브 가산기로부터 출력되는 k 하위 비트가 제로가 되도록 하는 Y0를 결정하는 논리 디바이스(430); 및제 2 단계에서 상기 캐리-세이브 가산기로부터 최종 P(A·B)N 결과를 출력하도록 적용된 출력 전달 매커니즘을 포함하고 있으며,상기 장치는 제1 단계에서,상기 제1 들어오는 비트로서 B의 연속하는 하위 비트;상기 디바이스로 입력되는 상기 제2 들어오는 비트로서 동작중 발생된 예측값 Y0의 연속하는 비트;상기 제 1k 비트 스트링으로서 피승수(A)의 연속하는 k 비트; 및상기 제2 k 비트 스트링으로서 N의 연속하는 k 하위비트를 입력하도록 적용되고상기 장치는 제2 단계에서,상기 제1 들어오는 비트로서 B의 연속하는 하위 비트;상기 디바이스로 입력되는 상기 제2 들어오는 비트로서 N의 연속하는 비트;상기 제1 k 비트 스트링으로서 피승수(A)의 연속하는 k 비트 및상기 제2 k 비트 스트링으로서, 제1 단계에서 발생된 Y0의 연속하는 k 하위비트를 입력하도록 적용되고,상기 논리 디바이스(430)는 입력으로서,제1 k 비트 스트링의 하위 비트(Ai);상기 제1 들어오는 비트(Bd);상기 캐리세이브 가산기(410)로부터 하위 캐리 아웃 비트;상기 캐리 세이브 가산기로부터 하위비트의 다음 비트;일시 저장 레지스터(S)로부터의 다음 비트; 및가산기(460)으로부터 캐리 아웃 비트;를 수신하고,상기 캐리-세이브 가산기(410)는 피승수가 상기 캐리-세이브 가산기(410)내로 가산됨과 동시에 값을 출력하도록 적용되는 것을 특징으로 하는 마이크로전자 논리연산장치.
- 제 1 항에 있어서, 상기 캐리-세이브 가산기내로 합산은 직렬적으로 차례로 로드된 연속적으로 더 상위의 승수 비트에 의해 활성화되는 것을 특징으로 하는 장치.
- 제 2 항에 있어서, 상기 연속적으로 로드된 승수 비트는:상기 입력 승수 비트 및 대응 입력 Y0 비트가 제로이면 캐리-세이브 가산기내로 합산을 야기하지 않도록 적용되고;상기 입력 승수 비트가 1이고 대응 입력 Y0 비트가 제로이면 Ai 피승수만을 가산하도록 적용되고;상기 입력 승수 비트가 제로이고 대응 입력 Y0 비트가 1이면 모듈러스 N 만을 가산하도록 적용되고;상기 입력 승수 비트 및 대응 입력 Y0 비트가 1이면 피승수 Ai 와 모듈러스 N 의 합산을 가산하도록 적용되는 것을 특징으로 하는 장치.
- 제 3 항에 있어서, 피승수 값 Ai 및 모듈러스 값 N을 2개의 지정된 사전로드 버퍼에 사전로드하고, 이 값들을 제 3 피승수 사전로드 버퍼내로 합산하도록 적용되어, 대응 승수 및 Y0 비트가 모두 1일때 각각의 피승수 값에 각각 가산할 필요를 없애는 것을 특징으로 하는 장치.
- 제 4 항에 있어서, 상기 사전로드 버퍼는 직렬로 공급되고, 피승수 값은 상기 레지스터중의 하나로부터 또는 상기 레지스터중의 하나를 통해 CPU로부터 상기 사전로드 버퍼로 동작중에 사전로드되는 것을 특징으로 하는 장치.
- 제 1 항에 있어서, 상기 승수 값은 직렬로 입력되고 캐리-세이브 가산기의 출력은 직렬로 출력되고, 상기 논리 디바이스가 하나의 비트로 모듈러스 값이 캐리-세이브 가산기내로 가산되어야 하는지를 예측하도록 적용되는 것을 특징으로 하는 장치.
- 제 1 항 또는 제 6 항에 있어서, k 하위 제로가, Y0비트를 예측할 때 다음의 3가지 특성:i) Ai 레지스터의 최하위 비트와 B 스트림의 다음 비트의 논리곱, A0·Bd;ii) 캐리-세이브 가산기로부터 하위 캐리 아웃 비트, CO0; 및iii) 캐리-세이브 가산기의 제2 하위 셀로부터 Sout 비트, SO1에 의해 제어되는 모듈 승산 디바이스로부터 빠져 나가는 것을 특징으로 하는 장치.
- 제 7 항에 있어서, 상기 3개의 값 A0·Bd, CO0 및 SO1은 유효한 Y0 예측 비트를 출력하도록 배타적 논리합되는 것을 특징으로 하는 장치.
- 제 1 항에 있어서, 그 출력의 최하위 k 비트가 폐기되는 모듈 승산 디바이스로부터의 출력을 감지하도록 적용된 비교기를 더 포함하고, 상기 출력이 모듈러스 N 보다 크고 2N보다 적고, 상기 비교기는 상기 승산 디바이스로부터 출력 스트림이 예정되는 메모리 레지스터로부터의 출력값을 이용하여 모듈 감산을 제어하도록 적용되어, 제2 메모리 저장 디바이스를 더 작은 몽고메리 곱 값을 위해 할당할 필요를 없애는 것을 특징으로 하는 장치.
- 제 1 항에 있어서, 직렬 비교기가 상기 모듈 승산 디바이스로부터의 출력 Z/2k가 2n보다 적을 때를 감지하도록 적용되어, 오버플로 비트를 설정하도록 적용되는 것을 특징으로 하는 장치.
- 제 1 항에 있어서, Y0 승수 입력이 상수 제로 입력으로 교체되는 경우, 정수의 정규 영역에서 Ai·B의 자연 정수 승산을 수행하도록 적용되는 것을 특징으로 하는 장치.
- 제 1 항에 있어서, Y0 승수 입력이 상수 제로 입력으로 교체되는 경우, Ai·B의 자연 정수 승산을 수행하도록 적용되고, n 비트 레지스터로부터 나오는 다른 값 S는 값 Ai·B+S를 발생시키기 위해 합산될 수 있는 것을 특징으로 하는 장치.
- 제 1 항에 있어서, Y0 승수 입력이 오퍼랜드 C를 공급하도록 적용된 메모리 레지스터의 출력으로 교체되고, 오퍼랜드 N이 대체 오퍼랜드 D로 교체되는 경우, Ai·B+C·D의 자연 정수 승산을 수행하도록 적용되고, 또 다른 레지스터로부터 나오는 다른 값 S는 값 Ai·B+C·D+S를 발생시키기 위해 정수의 정규 영역에서 합산될 수 있는 것을 특징으로 하는 장치.
- 제 1 항에 있어서, 몽고메리 모듈 승산이 몽고메리 상수 J0의 사용을 요구하지 않고, 단지 하나의 미리 계산된 몽고메리 변수를 가지고 수행될 수 있는 것을 특징으로 하는 장치.
- 제 1 항에 있어서, 몽고메리 상수 J0는 Ai 오퍼랜드 값 및 B 오퍼랜드 값을 제로로 재설정하고, 부분 결과 값 S0를 1로 설정함으로써 계산되는 것을 특징으로 하는 장치
- 제 1 항에 있어서, 상기 디바이스는 몽고메리 모듈 누승을 수행하도록 적용되는 것을 특징으로 하는 장치.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IL120776 | 1997-05-04 | ||
IL12077697A IL120776A0 (en) | 1997-05-04 | 1997-05-04 | Apparatus and methods for modular multiplication and exponentiation based on montgomery multiplication |
IL12131197A IL121311A (en) | 1997-07-14 | 1997-07-14 | Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication |
IL121311 | 1997-07-14 | ||
PCT/IL1998/000148 WO1998050851A1 (en) | 1997-05-04 | 1998-03-29 | Improved apparatus & method for modular multiplication & exponentiation based on montgomery multiplication |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010012222A KR20010012222A (ko) | 2001-02-15 |
KR100684134B1 true KR100684134B1 (ko) | 2007-02-16 |
Family
ID=26323418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019997010171A KR100684134B1 (ko) | 1997-05-04 | 1998-03-29 | 몽고메리 승산에 기초한 모듈의 승산 및 누승을 위한 개선된 장치와 방법 |
Country Status (9)
Country | Link |
---|---|
US (1) | US6185596B1 (ko) |
EP (1) | EP1008026B1 (ko) |
JP (2) | JP2001527673A (ko) |
KR (1) | KR100684134B1 (ko) |
AT (1) | ATE372541T1 (ko) |
AU (1) | AU6516498A (ko) |
DE (1) | DE69838390T2 (ko) |
ES (1) | ES2293677T3 (ko) |
WO (1) | WO1998050851A1 (ko) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317769B1 (en) * | 1996-09-18 | 2001-11-13 | International Business Machines Corporation | Apparatus for calculating of Bc (mod n) with repeatedly shifting a holding value |
US7587044B2 (en) | 1998-01-02 | 2009-09-08 | Cryptography Research, Inc. | Differential power analysis method and apparatus |
US6304658B1 (en) * | 1998-01-02 | 2001-10-16 | Cryptography Research, Inc. | Leak-resistant cryptographic method and apparatus |
EP1090480B1 (en) * | 1998-06-03 | 2019-01-09 | Cryptography Research, Inc. | Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems |
US6539092B1 (en) | 1998-07-02 | 2003-03-25 | Cryptography Research, Inc. | Leak-resistant cryptographic indexed key update |
IL128007A (en) * | 1999-01-11 | 2003-02-12 | Milsys Ltd | Enhancements on compact logic devices and also for accelerating and securing computations in modular arithmetic especially for use in public key cryptographic co-processors designed for elliptic curve and rsa type computations |
FR2791155B1 (fr) * | 1999-03-17 | 2001-05-11 | St Microelectronics Sa | Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery |
FR2791156B1 (fr) | 1999-03-17 | 2001-05-11 | St Microelectronics Sa | Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery |
FR2791157A1 (fr) * | 1999-03-17 | 2000-09-22 | St Microelectronics Sa | Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery |
IL135247A0 (en) * | 2000-03-23 | 2003-06-24 | Cipherit Ltd | Method and apparatus for the calculation of modular multiplicative inverses |
US7240204B1 (en) * | 2000-03-31 | 2007-07-03 | State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University | Scalable and unified multiplication methods and apparatus |
US6691143B2 (en) | 2000-05-11 | 2004-02-10 | Cyberguard Corporation | Accelerated montgomery multiplication using plural multipliers |
KR100848412B1 (ko) | 2000-05-15 | 2008-07-28 | 엠-시스템스 플래쉬 디스크 파이오니어스 리미티드 | 정수연산필드의 범위를 확장하는 장치 및 방법 |
FR2809894B1 (fr) * | 2000-05-31 | 2002-10-25 | France Telecom | Procede de cryptographie, microcircuit pour carte a puce et cartes a puce incluant un tel microcircuit |
IL140267A0 (en) | 2000-12-13 | 2003-09-17 | Milsys Ltd | Dual processor trusted computing environment |
US6963977B2 (en) * | 2000-12-19 | 2005-11-08 | International Business Machines Corporation | Circuits and methods for modular exponentiation |
US20020116429A1 (en) * | 2000-12-19 | 2002-08-22 | International Business Machines Corporation | System and method for modular multiplication |
US7607165B2 (en) * | 2001-03-09 | 2009-10-20 | The Athena Group, Inc. | Method and apparatus for multiplication and/or modular reduction processing |
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 |
JP3820909B2 (ja) * | 2001-04-24 | 2006-09-13 | ソニー株式会社 | 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム |
DE10127195A1 (de) * | 2001-06-05 | 2002-12-19 | Infineon Technologies Ag | Prozessor mit interner Speicherkonfiguration |
US6917956B2 (en) * | 2001-08-14 | 2005-07-12 | Sun Microsystems, Inc. | Apparatus and method for efficient modular exponentiation |
US20030072442A1 (en) * | 2001-10-01 | 2003-04-17 | Blakley George Robert | Cisponentiation method, software, and device for exponentiation |
US7376235B2 (en) * | 2002-04-30 | 2008-05-20 | Microsoft Corporation | Methods and systems for frustrating statistical attacks by injecting pseudo data into a data system |
US20040010470A1 (en) * | 2002-07-09 | 2004-01-15 | Mills Charles A. | Anti-piracy system for software and digital entertainment |
KR100458031B1 (ko) | 2003-03-14 | 2004-11-26 | 삼성전자주식회사 | 몽고메리 유형의 모듈라 곱셈 장치 및 방법 |
US7050475B2 (en) | 2003-05-02 | 2006-05-23 | Litelaser Llc | Waveguide laser |
ATE472769T1 (de) | 2003-11-16 | 2010-07-15 | Sandisk Il Ltd | Verbesserte natürliche montgomery- exponentenmaskierung |
CN1985458B (zh) * | 2003-11-16 | 2013-05-08 | 桑迪斯克以色列有限公司 | 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置 |
US7664810B2 (en) * | 2004-05-14 | 2010-02-16 | Via Technologies, Inc. | Microprocessor apparatus and method for modular exponentiation |
US7583717B2 (en) * | 2004-08-30 | 2009-09-01 | Videojet Technologies Inc | Laser system |
US7296359B2 (en) * | 2004-10-27 | 2007-11-20 | Videojet Technologies | Laser alignment system and method |
DE102006025677B4 (de) * | 2005-10-28 | 2020-03-12 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge |
DE102006025569A1 (de) * | 2005-10-28 | 2007-05-03 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation |
DE102006025673B9 (de) | 2005-10-28 | 2010-12-16 | Infineon Technologies Ag | Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls |
DE102006025713B9 (de) | 2005-10-28 | 2013-10-17 | Infineon Technologies Ag | Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation |
EP1975906B1 (en) | 2006-01-13 | 2012-07-04 | Fujitsu Ltd. | Montgomery s algorithm multiplication remainder calculator |
JP5027422B2 (ja) * | 2006-02-09 | 2012-09-19 | ルネサスエレクトロニクス株式会社 | 剰余演算処理装置 |
US7805479B2 (en) * | 2006-03-28 | 2010-09-28 | Michael Andrew Moshier | Scalable, faster method and apparatus for montgomery multiplication |
US8229109B2 (en) * | 2006-06-27 | 2012-07-24 | Intel Corporation | Modular reduction using folding |
US20080043406A1 (en) * | 2006-08-16 | 2008-02-21 | Secure Computing Corporation | Portable computer security device that includes a clip |
US7925011B2 (en) * | 2006-12-14 | 2011-04-12 | Intel Corporation | Method for simultaneous modular exponentiations |
US20080263115A1 (en) * | 2007-04-17 | 2008-10-23 | Horizon Semiconductors Ltd. | Very long arithmetic logic unit for security processor |
US8042025B2 (en) * | 2007-12-18 | 2011-10-18 | Intel Corporation | Determining a message residue |
US8402078B2 (en) * | 2008-02-26 | 2013-03-19 | International Business Machines Corporation | Method, system and computer program product for determining required precision in fixed-point divide operations |
US8626816B2 (en) * | 2008-02-26 | 2014-01-07 | International Business Machines Corporation | Method, system and computer program product for detecting errors in fixed point division operation results |
EP2334006B1 (en) * | 2009-12-10 | 2016-03-23 | Nxp B.V. | Side-channel resistant modular exponentiation |
FR2974201B1 (fr) | 2011-04-18 | 2013-04-12 | Inside Secure | Circuit de multiplication de montgomery |
FR2974202B1 (fr) | 2011-04-18 | 2013-04-12 | Inside Secure | Procede de multiplication de montgomery |
CN103699358B (zh) * | 2013-12-05 | 2016-11-23 | 西安交通大学 | 一种适用于大数的快速模平方运算电路 |
US10025556B2 (en) * | 2014-09-08 | 2018-07-17 | Atmel Corporation | Optimized multi-precision division |
US11468797B2 (en) | 2020-06-24 | 2022-10-11 | Western Digital Technologies, Inc. | Low complexity conversion to Montgomery domain |
US11508263B2 (en) | 2020-06-24 | 2022-11-22 | Western Digital Technologies, Inc. | Low complexity conversion to Montgomery domain |
WO2022115108A1 (en) * | 2020-11-27 | 2022-06-02 | Pqsecure Technologies, Llc | An architecture for small and efficient modular multiplication using carry-save adders |
TWI802095B (zh) | 2021-11-22 | 2023-05-11 | 財團法人工業技術研究院 | 模數乘法電路與對應之計算模數乘法之方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5073870A (en) * | 1989-01-30 | 1991-12-17 | Nippon Telegraph And Telephone Corporation | Modular multiplication method and the system for processing data |
EP0566498A2 (en) * | 1992-04-16 | 1993-10-20 | FORTRESS U&T Ltd. | Digital signature device and process |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3621218A (en) * | 1967-09-29 | 1971-11-16 | Hitachi Ltd | High-speed divider utilizing carry save additions |
US4110832A (en) * | 1977-04-28 | 1978-08-29 | International Business Machines Corporation | Carry save adder |
US4514592A (en) | 1981-07-27 | 1985-04-30 | Nippon Telegraph & Telephone Public Corporation | Cryptosystem |
US4538238A (en) * | 1983-01-18 | 1985-08-27 | Honeywell Information Systems Inc. | Method and apparatus for calculating the residue of a signed binary number |
KR19990024971A (ko) * | 1997-09-09 | 1999-04-06 | 정선종 | 모듈러 승산장치 |
JP2710412B2 (ja) * | 1989-06-20 | 1998-02-10 | 日本電気株式会社 | 乗除算回路 |
US5185714A (en) * | 1989-09-19 | 1993-02-09 | Canon Kabushiki Kaisha | Arithmetic operation processing apparatus |
US5101431A (en) | 1990-12-14 | 1992-03-31 | Bell Communications Research, Inc. | Systolic array for modular multiplication |
DE69229766T2 (de) * | 1991-09-05 | 2000-03-23 | Canon K.K., Tokio/Tokyo | Verfahren und Gerät zum Verschlüsseln und Entschlüsseln von Kommunikationsdaten |
US5513133A (en) * | 1992-11-30 | 1996-04-30 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
US5349551A (en) * | 1993-07-30 | 1994-09-20 | The United States Of America As Represented By The Director Of National Security Agency | Device for and method of preforming an N-bit modular multiplication in approximately N/2 steps |
GB2332542B (en) * | 1997-12-20 | 2002-08-07 | Motorola Ltd | Data processing system for performing multiplication and multiplication method |
-
1998
- 1998-03-29 ES ES98910967T patent/ES2293677T3/es not_active Expired - Lifetime
- 1998-03-29 EP EP98910967A patent/EP1008026B1/en not_active Expired - Lifetime
- 1998-03-29 JP JP54788398A patent/JP2001527673A/ja not_active Withdrawn
- 1998-03-29 AU AU65164/98A patent/AU6516498A/en not_active Abandoned
- 1998-03-29 DE DE69838390T patent/DE69838390T2/de not_active Expired - Lifetime
- 1998-03-29 WO PCT/IL1998/000148 patent/WO1998050851A1/en active IP Right Grant
- 1998-03-29 KR KR1019997010171A patent/KR100684134B1/ko not_active IP Right Cessation
- 1998-03-29 AT AT98910967T patent/ATE372541T1/de not_active IP Right Cessation
- 1998-04-01 US US09/050,958 patent/US6185596B1/en not_active Expired - Lifetime
-
2009
- 2009-06-12 JP JP2009140914A patent/JP2009230153A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5073870A (en) * | 1989-01-30 | 1991-12-17 | Nippon Telegraph And Telephone Corporation | Modular multiplication method and the system for processing data |
EP0566498A2 (en) * | 1992-04-16 | 1993-10-20 | FORTRESS U&T Ltd. | Digital signature device and process |
Also Published As
Publication number | Publication date |
---|---|
EP1008026A4 (en) | 2000-06-14 |
AU6516498A (en) | 1998-11-27 |
EP1008026B1 (en) | 2007-09-05 |
ATE372541T1 (de) | 2007-09-15 |
WO1998050851A1 (en) | 1998-11-12 |
JP2009230153A (ja) | 2009-10-08 |
ES2293677T3 (es) | 2008-03-16 |
DE69838390D1 (de) | 2007-10-18 |
DE69838390T2 (de) | 2008-05-29 |
KR20010012222A (ko) | 2001-02-15 |
JP2001527673A (ja) | 2001-12-25 |
EP1008026A1 (en) | 2000-06-14 |
US6185596B1 (en) | 2001-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100684134B1 (ko) | 몽고메리 승산에 기초한 모듈의 승산 및 누승을 위한 개선된 장치와 방법 | |
JP3636740B2 (ja) | モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法 | |
US7805478B2 (en) | Montgomery modular multiplier | |
JP4955182B2 (ja) | 整数の計算フィールド範囲の拡張 | |
US6820105B2 (en) | Accelerated montgomery exponentiation using plural multipliers | |
US7424504B2 (en) | Arithmetic processor for accomodating different field sizes | |
US6748410B1 (en) | Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication | |
US5764554A (en) | Method for the implementation of modular reduction according to the Montgomery method | |
KR20110105555A (ko) | 효율적인 하드웨어 구성을 갖는 몽고메리 승산기 | |
US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
US7240204B1 (en) | Scalable and unified multiplication methods and apparatus | |
Huai et al. | Efficient architecture for long integer modular multiplication over Solinas prime | |
US20070168411A1 (en) | Reduction calculations | |
Findlay et al. | Modular exponentiation using recursive sums of residues | |
US20070016635A1 (en) | Inversion calculations | |
Feldhofer et al. | A self-timed arithmetic unit for elliptic curve cryptography | |
US7426529B2 (en) | Processor and method for a simultaneous execution of a calculation and a copying process | |
Chiou et al. | Parallel modular multiplication with table look-up | |
KR100400210B1 (ko) | 디지털 서명을 위한 모듈라 곱셈장치 | |
IL106923A (en) | Device for performing modular multiplication | |
Großschädl | A new serial/parallel architecture for a low power modular multiplier | |
Pekmestzi et al. | A systolic, high speed architecture for an RSA cryptosystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E801 | Decision on dismissal of amendment | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE AMENDMENT REQUESTED 20051219 Effective date: 20060428 Free format text: TRIAL NUMBER: 2005102000073; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE AMENDMENT REQUESTED 20051219 Effective date: 20060428 |
|
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120203 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20130117 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |