KR100805272B1 - 부호화를 이용하는 곱셈 장치 및 그 방법 - Google Patents

부호화를 이용하는 곱셈 장치 및 그 방법 Download PDF

Info

Publication number
KR100805272B1
KR100805272B1 KR1020060037460A KR20060037460A KR100805272B1 KR 100805272 B1 KR100805272 B1 KR 100805272B1 KR 1020060037460 A KR1020060037460 A KR 1020060037460A KR 20060037460 A KR20060037460 A KR 20060037460A KR 100805272 B1 KR100805272 B1 KR 100805272B1
Authority
KR
South Korea
Prior art keywords
bit
value
input value
sum
carry
Prior art date
Application number
KR1020060037460A
Other languages
English (en)
Other versions
KR20070105415A (ko
Inventor
임종인
장남수
김성경
지성연
임대성
이상진
Original Assignee
고려대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고려대학교 산학협력단 filed Critical 고려대학교 산학협력단
Priority to KR1020060037460A priority Critical patent/KR100805272B1/ko
Publication of KR20070105415A publication Critical patent/KR20070105415A/ko
Application granted granted Critical
Publication of KR100805272B1 publication Critical patent/KR100805272B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction 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/5336Reduction 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

부호화를 이용하는 곱셈 장치 및 그 방법이 개시된다.
본 발명은 임의의 자리 비트인 i번째 비트가 부호를 나타내는 부호비트와 크기를 나타내는 크기비트로 구성되는 부호수인 제1 부호수 및 제2 부호수에 대하여,상기 제1 부호수의 i번째 비트와 상기 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트와 부호수인 제1 캐리의 i+1번째 비트를 생성하는 제1연산부, 상기 제1 합의 i번째 비트를 부호를 갖지 않는 이진수로 변환한 제2 합의 i번째 비트를 생성하고, 상기 제2 합의 i번째 비트에 따라 상기 제1 캐리의 i+1번째 비트를 변환시켜 부호수인 제2 캐리의 i+1번째 비트를 생성하는 제2연산부, 상기 제2 캐리의 i번째 비트와 상기 제2 합의 i번째 비트를 합산하여 덧셈 결과값을 생성하는 결과값 산출부, 제1입력값에 따라, 제2입력값, 상기 제1입력값 및 제2입력값을 이용한 모듈러값, 상기 모듈러값과 제2입력값을 합산한 값 또는 0 중 어느 하나를 선택하여 상기 제1연산부의 제2부호수로 출력하는 멀티플렉서, 상기 제1입력값에 따라 상기 멀티플레서를 제어하여 제2입력값의 덧셈 여부를 결정하는 변환기, 상기 결과값 산출부의 덧셈 결과값을 쉬프트 연산한 쉬프트값을 상기 제1연산부의 제1부호수로 출력하는 쉬프트 레지스터, 및 상기 쉬프트값을 이용하여 제1입력값 및 제2입력값의 곱셈 연산 결과를 생성하는 입출력 버퍼부를 포함한다.
본 발명에 의하면, 공간 복잡도와 시간 복잡도를 줄여 성능을 향상시키고, 제조 비용을 감소시킬 수 있는 효과가 있다. 또한, 또한, 부호수의 특징을 이용하여 하이 래딕스(High-radix) 연산을 적용 할 경우, 2의 보수 연산에서 고려해야 하는 캐리 전파를 고려하지 않아도 되는 추가적인 성능 향상을 가능하게 한다.

Description

부호화를 이용하는 곱셈 장치 및 그 방법 {Appratus for multipying with sign encoding and Method thereof}
도 1a 및 도 1b는 종래의 곱셈 장치의 블럭도이다.
도 2는 본 발명에 따른 덧셈 장치의 블럭도이다.
도 3a 및 도 3b는 도 2에 적용되는 부호화 기법을 표로 도시한 것이다.
도 4a는 도 2의 상세 블럭도이다.
도 4b는 본 발명의 일 실시예에 따른 덧셈 장치의 회로도이다.
도 5a는 본 발명에 따른 곱셈 장치의 블럭도이다.
도 5b는 도 5a의 변환기에 대한 상세 블럭도이다.
도 6a는 본 발명에 따른 덧셈 방법의 흐름도이다.
도 6b는 도 6a의 상세 알고리즘을 도시한 것이다.
도 6c는 도 6b에 의한 연산 과정의 일 예를 도시한 것이다.
도 6d는 종래의 덧셈 방법 및 본 발명에 따른 덧셈 방법의 공간 복잡도와 시간 복잡도를 도시한 표이다.
도 7은 본 발명에 따른 곱셈 방법을 도시한 것이다.
도 8은 종래의 곱셈 방법 및 본 발명에 따른 곱셈 방법의 지연 시간을 도시한 표이다.
본 발명은 연산 장치에 관한 것으로, 특히, 부호화를 이용하는 곱셈 장치 및 그 방법에 관한 것이다.
RSA(Rivest-Shamir-Adleman) 암호 시스템은 키 분배와 관리의 용이, 인증과 디지털 서명(digital signature)이 가능한 장점으로 인해 널리 이용되고 있다. RSA 암호 시스템은 IC카드, 모바일 및 WPKI, 전자화폐, SET, SSL 시스템 등에 많이 이용된다. RSA 공개키 암호 시스템은 매우 큰 정수에 대한 소인수분해가 어렵고 해를 찾아내는데 많은 시간을 요구한다는 점을 이용한 암호시스템이다. 그러나 최근 연산 환경의 발전 및 알고리즘의 효율성 개선 등으로 인수분해가 가능한 정수의 크기가 점차 커지고 있고 앞으로도 증가할 것이다. 따라서 RSA 암호 시스템의 안전성을 위해서 키 길이는 길어지게 되고 상대적으로 연산량이 증가하게 된다. 그러므로 RSA 암호 시스템의 효율적인 구성은 매우 중요한 연구 과제이다.
RSA 암호 시스템은 모듈러 지수승 연산을 통하여 수행이 되고, 모듈러 지수승 연산은 반복적인 모듈러 곱셈연산을 통하여 구성이 된다. 따라서 모듈러 곱셈 장치의 효율적인 구현과 반복 연산의 횟수는 RSA 암호 시스템의 효율성에 있어 중요한 문제이다.
최근 RSA 암호시스템에서 이용되어지는 모듈러 연산을 위해 개발 된 방법 중 에 몽고메리(Montgomery) 모듈러 곱셈 알고리즘이 효율적이라고 알려져 있다. 몽고메리(Montgomery) 곱셈 장치는 세 입력 값의 덧셈 연산이 필요하고, 덧셈 연산의 지연시간이 곱셈 장치의 시간 복잡도를 결정한다.
몽고메리(Montgomery) 모듈러 곱셈 알고리즘의 시간 복잡도는 세 입력 값의 덧셈 과정에서 발생하는 지연시간에 의존하게 되며, 덧셈 연산을 위하여 구성되는 대표적인 덧셈 장치는 캐리 전파 가산기(Carry Propagation Adder; 캐리 전파 가산기(CPA))와 캐리 저장 가산기(Carry Save Adder; CSA)가 있다. 캐리 저장 가산기(CSA)를 이용하여 구성할 경우 캐리 전파 가산기(CPA)의 캐리 전파 지연 시간이 발생하지 않으므로 캐리 전파 가산기(CPA)보다 효율적인 곱셈 장치를 구성할 수 있다. 그러나, 캐리 저장 가산기(CSA)를 이용한 결과 캐리와 합 즉, 두개의 값으로 표현 되므로, 연산의 입력 값의 개수가 증가한다.
종래의 캐리 저장 가산기(CSA)를 이용한 몽고메리(Montgomery) 곱셈 장치는 다음과 같다.
몽고메리(Montgomery) 곱셈 알고리즘에서, 세 연산자의 덧셈과정에서 발생하는 캐리 전파를 처리하는 과정이 알고리즘 지연 시간의 대부분을 차지하므로, 알고리즘에서 세 입력 값에 대한 덧셈을 수행하는 과정이 알고리즘의 시간 복잡도에서 가장 큰 부분을 차지한다.
캐리 저장 가산기(CSA) 는 세 개의 입력 값을 갖고, 연산(
Figure 112006029079928-pat00001
)을 수행하고 두 개의 값(캐리인
Figure 112006029079928-pat00002
, 합인
Figure 112006029079928-pat00003
)을 출 력하는 덧셈 장치이다.
도 1a 및 도 1b는 종래의 곱셈 장치의 블럭도이다.
도 1a는 캐리 저장 가산기(CSA) 덧셈 장치를 이용한 5개의 입력 값과 2개의 출력 값을 가지는 곱셈 장치(종래의(McIvor의 1) 방법)를 도시하고, 도 1b는 4개의 입력 값과 2개의 출력 값을 가지는 곱셈 장치(종래의(McIvor의 2) 방법)를 도시한다.
몽고메리(Montgomery) 곱셈 알고리즘에서
Figure 112006029079928-pat00004
의 연산 결과는 캐리 저장 가산기(CSA)를 이용하여 합
Figure 112006029079928-pat00005
과 캐리
Figure 112006029079928-pat00006
로 나타낼 수 있고,
Figure 112006029079928-pat00007
는 다음 곱셈의 입력으로 이용되므로 Y 또한
Figure 112006029079928-pat00008
으로 표현 한다. 따라서
Figure 112006029079928-pat00009
의 연산은
Figure 112006029079928-pat00010
를 X의 i번째 비트라 할 때
Figure 112006029079928-pat00011
으로 나타낼 수 있으므로 다섯 개의 입력 값과 두 개의 출력 값을 갖는 종래의(McIvor의 1) 방법이 된다. 종래의(McIvor의 1) 방법은 도 1a과 같이 3단계의 캐리 저장 가산기(CSA) 지연 시간을 요구한다.
이와 같은 지연 시간을 줄이기 위한 종래의(McIvor의 2) 방법은 도 1b와 같은 2단계의 캐리 저장 가산기(CSA)로 구성된다.
Figure 112006029079928-pat00012
Figure 112006029079928-pat00013
의 연산에서
Figure 112006029079928-pat00014
Figure 112006029079928-pat00015
의 값에 따라 덧셈에 필요한 피 연산자의 조합은 달라진다.
Figure 112006029079928-pat00016
인 경우 단지
Figure 112006029079928-pat00017
의 연산이 되고,
Figure 112006029079928-pat00018
인 경우
Figure 112006029079928-pat00019
의 연산이 되며,
Figure 112006029079928-pat00020
의 경우
Figure 112006029079928-pat00021
의 연산이 된다. 그러나,
Figure 112006029079928-pat00022
의 경우 다섯 개의 피 연산자로 구성 된
Figure 112006029079928-pat00023
의 연산을 수행하게 된다. 피 연산자의 항의 개수가 증가하는 것을 방지하기 위하여 곱셈이 시작하기 전 사전 연산을 통하여
Figure 112006029079928-pat00024
Figure 112006029079928-pat00025
의 연산을 수행하고 합
Figure 112006029079928-pat00026
와 캐리
Figure 112006029079928-pat00027
을 저장한 후 멀티플렉서(MUX)를 이용하여
Figure 112006029079928-pat00028
Figure 112006029079928-pat00029
의 모든 경우에 따라서
Figure 112006029079928-pat00030
와 같이 연산한다.
그러나, 종래의 덧셈 장치 및 곱셈 장치는 캐리 저장 가산기(CSA)를 2단계 이상 요구하고, 1단계의 캐리 저장 가산기(CSA)마다 많은 면적과 게이트 지연시간이 필요하므로, 덧셈 장치 및 곱셈 장치의 성능을 저하시키고, 그 제조 비용을 증가시키는 문제점이 있다.
따라서, 본 발명이 이루고자 하는 첫번째 기술적 과제는 공간 복잡도와 시간 복잡도를 줄여 성능을 향상시키고, 제조 비용을 감소시킬 수 있는 부호화를 이용하는 덧셈 장치를 제공하는데 있다.
본 발명이 이루고자 하는 두번째 기술적 과제는 상기의 덧셈 장치를 이용하여 뎃셈 연산을 수행하는 부호화를 이용하는 곱셈 장치를 제공하는데 있다.
본 발명이 이루고자 하는 세번째 기술적 과제는 상기의 덧셈 장치에 적용되는 부호화를 이용하는 덧셈 방법을 제공하는데 있다.
본 발명이 이루고자 하는 세번째 기술적 과제는 싱기의 곱셈 장치에 적용되는 부호화를 이용하는 곱셈 방법을 제공하는데 있다.
상기의 첫번째 기술적 과제를 이루기 위하여, 본 발명은 임의의 자리 비트인 i번째 비트가 부호를 나타내는 부호비트와 크기를 나타내는 크기비트로 구성되는 부호수인 제1 부호수 및 제2 부호수에 대하여, 상기 제1 부호수의 i번째 비트와 상기 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트와 부호수인 제1 캐리의 i+1번째 비트를 생성하는 제1연산부, 상기 제1 합의 i번째 비트를 부호를 갖지 않는 이진수로 변환한 제2 합의 i번째 비트를 생성하고, 상기 제2 합의 i번째 비트에 따라 상기 제1 캐리의 i+1번째 비트를 변환시켜 부호수인 제2 캐리의 i+1번째 비트를 생성하는 제2연산부 및 상기 제2 캐리의 i번째 비트와 상기 제2 합의 i번째 비트를 합산하여 덧셈 결과값을 생성하는 결과값 산출부를 포함하는 부호화를 이용하는 덧셈 장치를 제공한다.
상기의 두번째 기술적 과제를 이루기 위하여, 본 발명은 상기 제1 부호수의 i번째 비트와 상기 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트와 부호수인 제1 캐리의 i+1번째 비트를 생성하는 제1연산부, 상기 제1 합의 i 번째 비트를 부호를 갖지 않는 이진수로 변환한 제2 합의 i번째 비트를 생성하고, 상기 제2 합의 i번째 비트에 따라 상기 제1 캐리의 i+1번째 비트를 변환시켜 부호수인 제2 캐리의 i+1번째 비트를 생성하는 제2연산부, 상기 제2 캐리의 i번째 비트와 상기 제2 합의 i번째 비트를 합산하여 덧셈 결과값을 생성하는 결과값 산출부, 제1입력값에 따라, 제2입력값, 상기 제1입력값 및 제2입력값을 이용한 모듈러값, 상기 모듈러값과 제2입력값을 합산한 값 또는 0 중 어느 하나를 선택하여 상기 제1연산부의 제2부호수로 출력하는 멀티플렉서, 상기 제1입력값에 따라 상기 멀티플레서를 제어하여 제2입력값의 덧셈 여부를 결정하는 변환기, 상기 결과값 산출부의 덧셈 결과값을 쉬프트 연산한 쉬프트값을 상기 제1연산부의 제1부호수로 출력하는 쉬프트 레지스터 및 상기 쉬프트값을 이용하여 제1입력값 및 제2입력값의 곱셈 연산 결과를 생성하는 입출력 버퍼부를 포함하는 부호화를 이용하는 곱셈 장치를 제공한다.
상기의 세번째 기술적 과제를 이루기 위하여, 본 발명은 상기 제1 부호수의 i번째 비트와 상기 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트와 부호수인 제1 캐리의 i+1번째 비트를 생성하는 단계, 상기 제1 합의 i번째 비트를 부호를 갖지 않는 이진수로 변환한 제2 합의 i번째 비트를 생성하고, 상기 제2 합의 i번째 비트에 따라 상기 제1 캐리의 i+1번째 비트를 변환시켜 부호수인 제2 캐리의 i+1번째 비트를 생성하는 단계 및 상기 제2 캐리의 i번째 비트와 상기 제2 합의 i번째 비트를 합산하여 덧셈 결과값을 생성하는 단계를 포함하는 부호화를 이용하는 덧셈 방법을 제공한다.
상기의 네번째 기술적 과제를 이루기 위하여, 본 발명은 제1입력값에 따라, 제2입력값, 상기 제1입력값 및 제2입력값을 이용한 모듈러값, 상기 모듈러값과 제2입력값을 합산한 값 또는 0 중 어느 하나를 선택하여 제2부호수로 출력하는 단계, 상기 제1 부호수의 i번째 비트와 상기 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트와 부호수인 제1 캐리의 i+1번째 비트를 생성하는 단계, 상기 제1 합의 i번째 비트를 부호를 갖지 않는 이진수로 변환한 제2 합의 i번째 비트를 생성하고, 상기 제2 합의 i번째 비트에 따라 상기 제1 캐리의 i+1번째 비트를 변환시켜 부호수인 제2 캐리의 i+1번째 비트를 생성하는 단계 및 상기 제2 캐리의 i번째 비트와 상기 제2 합의 i번째 비트를 합산하여 덧셈 결과값을 생성하는 단계를 반복하고, 상기 제1입력값에 따라 제어하여 제2입력값의 덧셈 여부를 결정하고, 상기 덧셈 결과값을 쉬프트 연산한 쉬프트값을 제1부호수로 출력하여 제1입력값 및 제2입력값의 곱셈 연산 결과를 생성하는 단계를 포함하는 부호화를 이용하는 곱셈 방법을 제공한다.
본 발명은 부호화 기법을 이용하여 종래의(McIvor의 2) 방법에 비해 게이트 수와 지연시간을 줄인 덧셈 장치 즉, 덧셈 장치(Nadder)를 제공하고, 본 발명에 따른 덧셈 장치(Nadder)를 이용하여 구성된 새로운 곱셈 장치를 제공한다. 또한, 본 발명은 본 발명에 따른 덧셈 장치(Nadder) 및 본 발명에 따른 곱셈 장치에 적용되는 방법을 제공한다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다.
도 2는 본 발명에 따른 덧셈 장치의 블럭도이다.
본 발명에 따른 덧셈 장치(Nadder)는 도 2와 같이 두 개의 입력 값과 하나의 출력 값을 가지는 덧셈 장치이다. 몽고메리 곱셈에서
Figure 112006029079928-pat00031
의 연산은
Figure 112006029079928-pat00032
을 한 개의 값으로 표현하면 두개의 피 연산자 덧셈으로 표현이 가능하다. 그러나, 양수인 두 값에 대해 캐리 전파 없이 덧셈을 수행하는 것은 불가능하므로, 두 수를 캐리 전파 없이 한 값으로 표현하는 부호화 기법을 이용한다.
따라서, 본 발명에 따른 덧셈 장치(Nadder)의 두 입력은 부호수가 되고, 출력 역시 부호수가 된다.
부호화 기법을 이용하기 위해서 n 비트 X와 Y의 덧셈 결과를 (n+1)비트 캐리 C와 n비트 합 S로 나타낸다. C와 S는 각각
Figure 112006029079928-pat00033
Figure 112006029079928-pat00034
라고 가정한다.
두 비트
Figure 112006029079928-pat00035
Figure 112006029079928-pat00036
의 덧셈 결과를 캐리
Figure 112006029079928-pat00037
와 합
Figure 112006029079928-pat00038
으로 표현하면 수학식 1과 같이 표현된다.
Figure 112006029079928-pat00039
, 0≤ i < n-1
도 3a 및 도 3b는 도 2에 적용되는 부호화 기법을 표로 도시한 것이다.
도 3a는 부호화 기법을 이용한 두 부호수
Figure 112006029079928-pat00040
의 덧셈에 대한 표이고, 도 3b는 부호화 기법을 이용한 부호수
Figure 112006029079928-pat00041
와 음의수
Figure 112006029079928-pat00042
의 덧셈에 대한 표이다. 이때, 제1 캐리인 C1, 제1 합인 S1, 제2 캐리인 C2, 제2 합인 S2 는 중간 과정에서 제거된다.
부호수를 표현하기 위해
Figure 112006029079928-pat00043
,
Figure 112006029079928-pat00044
를 부호자리와 값의 자리를 이용하여 각각
Figure 112006029079928-pat00045
Figure 112006029079928-pat00046
와 같이 표현한다(즉,
Figure 112006029079928-pat00047
,
Figure 112006029079928-pat00048
,
Figure 112006029079928-pat00049
). 연산 과정의
Figure 112006029079928-pat00050
와 출력 결과인
Figure 112006029079928-pat00051
또한 부호가 있는 형태로 표현한다.
본 발명에 이용되는 부호화 기법부호화 기법을 설명하기 위해 0과
Figure 112006029079928-pat00052
로 이루어진 수를 음의수라고 가정한다.
Figure 112006029079928-pat00053
인 경우
Figure 112006029079928-pat00054
이며, 부호수를 이용하여
Figure 112006029079928-pat00055
로 표현할 수 있다. 두 양수 X, Y 덧셈의
Figure 112006029079928-pat00056
에서
Figure 112006029079928-pat00057
가 1인 경우는
Figure 112006029079928-pat00058
,
Figure 112006029079928-pat00059
두 가지가 있고, 이 때 합은
Figure 112006029079928-pat00060
이 되고,
Figure 112006029079928-pat00061
는 항상 0이므로 부호수로 표기하는 경우, 캐리 전파 없이
Figure 112006029079928-pat00062
를 음수로 표현할 수 있다.
따라서 X+Y=C+S이므로 S를 부호수로 만들면 C+S단계에서 캐리 전파 없이 부호수로 표현된다. 본 발명에 따른 곱셈 장치에서 초기 Y와 M은 양수이지만 Y+M은 부호수가 되므로 곱셈 장치의 모든 입출력 값을 부호수로 고려한다. 종래의(McIvor의 2) 방법에서 A는 캐리를 포함하는
Figure 112006029079928-pat00063
의 형태인 반면, 본 발명의 A는 두 부호수의 덧셈 결과로써 한 개의 부호수 A로 표현된다.
두 부호수의 덧셈은
Figure 112006029079928-pat00064
인 경우와
Figure 112006029079928-pat00065
에서 캐리가 발생할 수 있다. 그러나, 도 3a 및 도 3b의 두 가지 부호화 기법을 이용한 두 부호수의 덧셈은 캐리 전파 없이 하나의 값으로 출력할 수 있다. 본 발명에 따른 방법은 두 부호수의 덧셈을 부호수와 음의수의 덧셈으로 변환하고 그 결과를 부호수와 이진수로 변환시켜 캐리 전파 없이 더하는 방법이다.
도 4a는 도 2의 상세 블럭도이다.
먼저, 임의의 자리 비트인 i번째 비트가 부호를 나타내는 부호비트와 크기를 나타내는 크기비트로 구성되는 부호수인 제1 부호수(X) 및 제2 부호수(Y)를 가정한다.
제1연산부(410)는 제1 부호수의 i번째 비트와 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트(
Figure 112006029079928-pat00066
)와 부호수인 제1 캐리의 i+1번째 비트(
Figure 112006029079928-pat00067
)를 생성한다.
제2연산부(420)는 제1 합의 i번째 비트(
Figure 112006029079928-pat00068
)를 부호를 갖지 않는 이진수로 변환한 제2 합의 i번째 비트(
Figure 112006029079928-pat00069
)를 생성하고, 제2 합의 i번째 비트(
Figure 112006029079928-pat00070
)에 따라 제1 캐리의 i+1번째 비트(
Figure 112006029079928-pat00071
)를 변환시켜 부호수인 제2 캐리의 i+1번째 비트(
Figure 112006029079928-pat00072
)를 생성한다.
결과값 산출부(430)는 제2 캐리의 i번째 비트(
Figure 112006029079928-pat00073
)와 제2 합의 i번째 비트(
Figure 112006029079928-pat00074
)를 합산하여 덧셈 결과값(A)을 생성한다.
도 4b는 본 발명의 일 실시예에 따른 덧셈 장치의 회로도이다.
이하에서는, 0≤ i ≤ n+1 인 i에 대하여, i=0인 경우 즉, 0번째 비트를 중심으로 설명한다.
본 발명의 일 실시예에 따르면, 제1연산부(410)는 제1게이트부(411), 제2게이트부(412) 및 제3게이트부(413)를 포함하고, 제2연산부(420)는 제4게이트부(424) 및 제5게이트부(425)를 포함하며, 결과값 산출부(430)는 제6게이트부(436)를 포함한다.
제1게이트부(411)는 제1 부호수의 크기비트 및 제2 부호수의 크기비트의 배타적 논리합 연산을 수행하여 제1 합의 i번째 크기비트 및 부호비트를 생성한다. 바람직하게는, 제1게이트부(411) XOR 게이트를 포함할 수 있다.
제2게이트부(412)는 제1 부호수의 부호비트 및 제2 부호수의 부호비트의 논리곱을 연산하여 제1 캐리의 i+1번째 부호비트를 생성한다. 바람직하게는, 제2게이트부(412)는 AND 게이트를 포함할 수 있다.
제3게이트부(413)는 제1 부호수의 부호비트 및 제2 부호수의 부호비트의 배 타적 논리합의 인버스 연산 결과와 제1 부호수의 크기비트 및 제2 부호수의 크기비트의 논리합 연산 결과 사이의 논리곱 연산을 수행하여 제1 캐리의 i+1번째 크기비트를 생성한다. 바람직하게는, 제3게이트부(413)는 OR 게이트, XOR 게이트, NOT 게이트, AND 게이트를 포함할 수 있다.
제4게이트부(424)는 제2 합의 i번째 부호비트에 비트값 0을 할당하고, 제1 캐리의 크기비트 및 제1 합의 크기비트의 배타적 논리합을 연산하여 제2 합의 i번째 크기비트를 생성한다. 바람직하게는, 제4게이트부(424)는 XOR 게이트를 포함할 수 있다.
제5게이트부(425)는 제1 캐리의 부호비트 및 제1 캐리의 크기비트의 배타적 논리합의 인버스 연산 결과와 제1 캐리의 부호비트 및 제1 합의 부호비트의 논리합 연산 결과 사이의 논리곱 연산을 수행하여 제2 캐리의 i+1번째 비트를 생성한다. 바람직하게는, 제5게이트부(425)는 OR 게이트, XOR 게이트, NOT 게이트, AND 게이트를 포함할 수 있다.
제6게이트부(436)는 제2 캐리의 i번째 비트와 제2 합의 i번째 비트를 합산하여 부호비트와 크기비트로 구성된 덧셈 결과값(A)을 생성한다. 바람직하게는, 제6게이트부(436)는 XOR 게이트, NOT 게이트, AND 게이트를 포함할 수 있다.
1≤ i ≤ n+1 인 경우도 상술한 바와 같은 구성을 갖는다. 다만, i= n+1인 경우, 부호 비트를 입력으로 하지 않는 점, 제1 캐리의 n+2번째 비트와 제2 캐리의 n+2번째 사이의 배타적 논리합 연산에 따라 덧셈 결과값(A)의 n+2번째 크기 비트를 생성하는 점은 나머지 자리 비트와 구별된다.
도 5a는 본 발명에 따른 곱셈 장치의 블럭도이다.
본 발명에 따른 덧셈 장치(Nadder)를 이용하는 곱셈 장치는 입력 값을 제어하기 위하여 Y+M의 사전 연산이 요구된다. 이 연산은 곱셈 장치의 반복 연산을 수행하기 전에 연산되어 저장되고
Figure 112006029079928-pat00075
,
Figure 112006029079928-pat00076
에 따라 사전 연산 값들을 선택해서 이용해야 하므로 멀티플렉서(MUX, 530)가 필요하다.
따라서 본 발명에 따른 곱셈 장치는 본 발명에 따른 덧셈 장치(Nadder, 540), 4:1 멀티플렉서(MUX, 530), 1비트 변환기(521)를 포함한다.
이하에서는, 임의의 자리 비트인 i번째 비트가 부호를 나타내는 부호비트와 크기를 나타내는 크기비트로 구성되는 부호수인 제1 부호수 및 제2 부호수를 가정한다. 또한, 곱셈 연산의 두 입력값을 제1입력값, 제2입력값으로 정의한다.
입출력 버퍼부(500)는 제2입력값, 모듈러값, 미리 연산된 제2입력값과 모듈러값의 덧셈값, 0를 각각 Y 레지스터(511), M 레지스터(512), Y+M 레지스터(513), 0 레지스터(514)에 전송하고, 쉬프트 레지스터(550)에 의한 쉬프트값을 이용하여 제1입력값 및 제2입력값의 곱셈 연산 결과를 생성하여 출력한다.
Y 레지스터(511), M 레지스터(512), Y+M 레지스터(513), 0 레지스터(514)는 각각, 제2입력값, 모듈러값, 미리 연산된 제2입력값과 모듈러값의 덧셈값, 0를 저장한다.
변환기(521) 및 컨트롤러(522)는 제1입력값에 따라 멀티플레서(530)를 제어한다. 이에 따라, 제2입력값의 덧셈 여부가 결정된다.
멀티플렉서(530)는 제1입력값에 따라, 제2입력값, 상기 제1입력값 및 제2입력값을 이용한 모듈러값, 상기 모듈러값과 제2입력값을 합산한 값 또는 0 중 어느 하나를 선택하여 본 발명에 따른 덧셈 장치(Nadder, 540)에 제2부호수로 입력한다.
본 발명에 따른 덧셈 장치(Nadder, 540)는 도 4a의 제1연산부(410), 제2연산부(420) 및 결과값 산출부(430)를 포함한다.
쉬프트 레지스터(550)는 본 발명에 따른 덧셈 장치(Nadder, 540)의 덧셈 결과값을 쉬프트 연산한 쉬프트값을 본 발명에 따른 덧셈 장치(Nadder, 540)에 제1부호수로 다시 입력한다.
곱셈이 시작되기 전 한 번의 연산으로 Y+M을 연산하고 레지스터에 저장한다. 두 (n+1)비트의 덧셈이므로 캐리 전파를 고려하면 (n+2)비트까지 확장된다.
Figure 112006029079928-pat00077
는 부호수이므로 변환기(521)를 이용해서 한 비트씩 이진수로 표현하고, 이진수
Figure 112006029079928-pat00078
,
Figure 112006029079928-pat00079
에 따라 멀티플렉서(MUX, 530)를 이용하여 피 연산자
Figure 112006029079928-pat00080
중에서 어느 하나를 선택한다.
중간 결과 A와 멀티플렉서(MUX, 530)를 통해
Figure 112006029079928-pat00081
,
Figure 112006029079928-pat00082
에 따라
Figure 112006029079928-pat00083
에서 선택된 피 연산자가 본 발명에 따른 덧셈 장치(Nadder)에 입력된다. Y+M은 최대 (n+2)비트의 크기를 갖고 A는 최대 (n+3)비트까지 확장되어 쉬프트 연산을 수행하면 (n+2)비트가 된다. 또한, 변형 몽고메리(Montgomery) 곱셈 알고리즘을 이용한 본 발명에 따른 곱셈 장치에서 출력 결과 A는 (n+1)비트가 된 다.
본 발명에 따른 곱셈 장치에서, 두 (n+1)비트 피 연산자의 덧셈은 곱셈을 수행하는 동안 (n+3)비트까지 연산이 확장되며 곱셈 수행이 종료되어 출력되는 결과는 2M보다 작은 (n+1)비트 값이 된다.
본 발명에 따른 곱셈 장치에서 입력의 최상위 두 비트는 [1, 1]이 되는 경우가 나타나지 않는다. 따라서 최상위 두 비트가 [1, 1]이 아닌 경우, 즉 [1, 0], [1,
Figure 112006029079928-pat00084
]은 연산 2단계에서
Figure 112006029079928-pat00085
,
Figure 112006029079928-pat00086
가 되므로 XOR 연산을 통해서 0이 된다. 따라서
Figure 112006029079928-pat00087
은 (n+2)비트가 되고 쉬프트 연산을 통해 (n+1)비트를 유지할 수 있다.
도 5b는 도 5a의 변환기(521)에 대한 상세 블럭도이다.
도 5b는 본 발명에 따른 부호수를 이진수로 바꾸는 변환기를 도시한 것이다. 몽고메리(Montgomery) 곱셈에서 Y의 덧셈 여부를 결정하는
Figure 112006029079928-pat00088
는 부호수를 이용하므로
Figure 112006029079928-pat00089
이 될 수 있다.
Figure 112006029079928-pat00090
는 Y의 뺄셈을 의미한다. 따라서, Y의 음수 값을 구하기 위하여 Y의 2의 보수를 연산해야 하는 비용을 추가로 부담해야 하는 문제가 발생한다. 변환기(521)를 본 발명에 따른 곱셈 장치에 적용 가능하면, 추가적인 연산을 줄이고, 효율적인 구성을 가능하게 할 수 있다.
X는 부호수로 표현되지만 양수이므로 X는 부호수에서 이진수로 표현이 가능 하다. 예를 들어, X가
Figure 112006029079928-pat00091
이라고 가정하면, 최하위 비트가
Figure 112006029079928-pat00092
이므로
Figure 112006029079928-pat00093
과 같이 표현 가능하고, 따라서 곱셈 장치에 이용할
Figure 112006029079928-pat00094
은 1이 되며, 다음 비트로 넘어가는 캐리는
Figure 112006029079928-pat00095
이 된다. 두 번째 비트가
Figure 112006029079928-pat00096
이므로 이전 캐리
Figure 112006029079928-pat00097
과 덧셈을 수행하면 합, 즉 곱셈 장치에 이용되는
Figure 112006029079928-pat00098
은 0이 되고 캐리는
Figure 112006029079928-pat00099
이 된다. 이와 같은 방법으로 곱셈 장치가 반복 연산하는 동안 한 비트씩 연산되어 Y의 덧셈 여부를 결정하게 된다.
도 6a는 본 발명에 따른 덧셈 방법의 흐름도이다.
먼저, 임의의 자리 비트인 i번째 비트가 부호를 나타내는 부호비트와 크기를 나타내는 크기비트로 구성되는 부호수인 제1 부호수 및 제2 부호수를 가정한다.
다음, 제1 부호수의 i번째 비트와 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트와 부호수인 제1 캐리의 i+1번째 비트를 생성한다(610 과정).
제1 합의 i번째 비트와 제1 캐리의 i+1번째 비트가 생성되면, 제1 합의 i번째 비트를 부호를 갖지 않는 이진수로 변환한 제2 합의 i번째 비트를 생성하고, 제2 합의 i번째 비트에 따라 제1 캐리의 i+1번째 비트를 변환시켜 부호수인 제2 캐리의 i+1번째 비트를 생성한다(620 과정).
마지막으로, 제2 캐리의 i번째 비트와 제2 합의 i번째 비트를 합산하여 덧셈 결과값을 생성한다(630 과정).
도 6b는 도 6a의 상세 알고리즘을 도시한 것이다.
논리 회로에서 이용하는 기호에 대해 ∨는 OR 연산, ∧는 AND 연산, (+)는 XOR 연산, ∼는 NOT 연산이라 정의한다.
Figure 112006029079928-pat00100
Figure 112006029079928-pat00101
에 대한 덧셈의 경우의 수는 총 9가지이며 결과는 캐리와 합으로 나타낸다. 논리 회로는 다음과 같이 구성된다.
Figure 112006029079928-pat00102
Figure 112006029079928-pat00103
으로 생성되고
Figure 112006029079928-pat00104
Figure 112006029079928-pat00105
Figure 112006029079928-pat00106
으로 생성된다. 합 [
Figure 112006029079928-pat00107
,
Figure 112006029079928-pat00108
]은 음의 수 이므로 동일한 값을 갖는다. 따라서
Figure 112006029079928-pat00109
으로 두 값이 동시에 생성되고,
Figure 112006029079928-pat00110
을 제외한 나머지 연산은 게이트 지연 시간 1단계에서 수행되고
Figure 112006029079928-pat00111
의 정확한 값은 게이트 지연 시간 2단계에서 결정된다.
i번째 비트의 연산에서 연산 2단계의 두 입력은
Figure 112006029079928-pat00112
Figure 112006029079928-pat00113
이다.
Figure 112006029079928-pat00114
는 i번째 비트의 연산 1단계의 결과이고
Figure 112006029079928-pat00115
는 (i-1)번째 비트에서 연산된 값이다. 연산 2단계의 연산의 논리 회로는 다음과 같이 구성된다. 캐리
Figure 112006029079928-pat00116
는 음의 수 이므로
Figure 112006029079928-pat00117
Figure 112006029079928-pat00118
Figure 112006029079928-pat00119
의 연산을 통해 동일한 값을 갖는다. 합
Figure 112006029079928-pat00120
는 이진수이므로 부호 비트는 0이 되고
Figure 112006029079928-pat00121
Figure 112006029079928-pat00122
의 연산을 통해 결정된다.
연산 3단계는 연산 2단계의 출력들에 대한 XOR 연산을 통해 하나의 값으로 표현한다.
Figure 112006029079928-pat00123
Figure 112006029079928-pat00124
의 연산을 통해서 구할 수 있고
Figure 112006029079928-pat00125
Figure 112006029079928-pat00126
의 연산을 통해서 구할 수 있다.
피 연산자 X, Y는 2M 보다 작은 범위에 있고 (n+1)비트의 크기이므로 본 발명에 따른 곱셈 장치는 (n+2)번째 자리까지 고려해야 한다. 그러나, 피 연산자는 음수가 아니므로 피 연산자의 최상위 비트는
Figure 112006029079928-pat00127
이 될 수 없다. 그러므로 부호 비트는 고려하지 않는다.
최상위 두 비트에 대한 연산 또한 3단계와 지연 시간 5단계로 구성된다. 연산 1단계는 앞에서 언급한 바와 같이 음수가 아니므로 두 이진수의 덧셈에 대한 부호화 기법을 이용한다.
Figure 112006029079928-pat00128
는 이진수로 표현되고
Figure 112006029079928-pat00129
는 음의수로 표현되므로
Figure 112006029079928-pat00130
은 0이 되고
Figure 112006029079928-pat00131
Figure 112006029079928-pat00132
Figure 112006029079928-pat00133
의 연산을 통해 동일한 값을 갖는다.
Figure 112006029079928-pat00134
Figure 112006029079928-pat00135
Figure 112006029079928-pat00136
을 통해 연산된다. 연산 2단계와 3단계는 n번째 자리까지의 연산과 동일하게 수행된다. 연산 1단계에서 발생하는 캐리와 연산 2단계에서 발생하는 캐리는 XOR 연산을 통해
Figure 112006029079928-pat00137
를 결정한다.
도 6c는 도 6b에 의한 연산 과정의 일 예를 도시한 것이다.
두 부호수의 덧셈을 단계 1이라 하고 부호수와 음의수의 덧셈을 단계 2라고 가정한다. 또한, 단계 1의 결과를
Figure 112006029079928-pat00138
이라 하고 단계 2의 결과를
Figure 112006029079928-pat00139
라고 가정한다. 최종 결과를 A라 할 때, 두 부호수
Figure 112006029079928-pat00140
Figure 112006029079928-pat00141
의 덧셈은 도 6c과 같이 수행된다.
Figure 112006029079928-pat00142
값이
Figure 112006029079928-pat00143
또는
Figure 112006029079928-pat00144
인 경우, 출력 결과
Figure 112006029079928-pat00145
Figure 112006029079928-pat00146
에서 도 3a와 같이
Figure 112006029079928-pat00147
로 대체하면,
Figure 112006029079928-pat00148
은 부호수가 되고
Figure 112006029079928-pat00149
은 음의수가 된다. 부호수
Figure 112006029079928-pat00150
와 음의수
Figure 112006029079928-pat00151
의 덧셈 결과를
Figure 112006029079928-pat00152
라 할 때, 도 3b와 같이
Figure 112006029079928-pat00153
Figure 112006029079928-pat00154
또는
Figure 112006029079928-pat00155
인 경우 출력 결과의
Figure 112006029079928-pat00156
에서
Figure 112006029079928-pat00157
로 대체하면
Figure 112006029079928-pat00158
는 음의수가 되고
Figure 112006029079928-pat00159
는 이진수가 된다. 따라서
Figure 112006029079928-pat00160
Figure 112006029079928-pat00161
의 덧셈은 캐리 전파 없이 수행된다.
도 6d는 종래의 덧셈 방법 및 본 발명에 따른 덧셈 방법의 공간 복잡도와 시간 복잡도를 도시한 표이다.
도 6d에서와 같이 본 발명에 따른 덧셈 장치(Nadder)의 공간 복잡도는 게이트의 개수는 종래의(McIvor의 2) 방법보다 약 8% 감소하고, 지연 시간은 종래의(McIvor의 2) 방법보다 약 17% 줄어든다.
도 7은 본 발명에 따른 곱셈 방법을 도시한 것이다.
입력으로 n+1비트의 제1입력값(X) 및 제2입력값(Y), 제1입력값(X) 및 제2입력값(Y)에 따른 n비트의 모듈러 값(M)을 가정한다.
먼저, 곱셈 연산 결과 변수 A를 0으로 초기화시킨다(1).
다음, 본 발명에 따른 덧셈 방법(Nadder)을 이용하여 Y와 M을 더한 값을 변수 D에 저장한다(2).
다음의 과정은 제1입력값(X) 및 제2입력값(Y)의 0번째 비트부터 n+1번째 비트까지 반복하여 수행한다(3).
곱셈 연산 결과 변수 A의 0번째 비트, 제1입력값의 i번째 비트, 제2입력값의 0번째 비트를 이용하여 변수 ui를 결정한다(3.1).
제1입력값의 i번째 비트값과 변수 ui의 값에 다라 결과 변수 A를 갱신한다(3.2).
이때, 제1입력값의 i번째 비트값이 0이고 변수 ui의 값이 0이면, A+0을 본 발명에 따른 덧셈 방법(Nadder)을 이용하여 연산한 결과를 쉬프트 시킨 값을 A에 저장한다.
이때, 제1입력값의 i번째 비트값이 1이고 변수 ui의 값이 0이면, A+Y를 본 발명에 따른 덧셈 방법(Nadder)을 이용하여 연산한 결과를 쉬프트 시킨 값을 A에 저장한다.
이때, 제1입력값의 i번째 비트값이 0이고 변수 ui의 값이 1이면, A+M을 본 발명에 따른 덧셈 방법(Nadder)을 이용하여 연산한 결과를 쉬프트 시킨 값을 A에 저장한다.
이때, 제1입력값의 i번째 비트값이 1이고 변수 ui의 값이 1이면, A+D를 본 발명에 따른 덧셈 방법(Nadder)을 이용하여 연산한 결과를 쉬프트 시킨 값을 A에 저장한다.
위의 과정을 제1입력값(X) 및 제2입력값(Y)의 0번째 비트부터 n+1번째 비트까지 반복하여 수행한다.
도 8은 종래의 곱셈 방법 및 본 발명에 따른 곱셈 방법의 지연 시간을 도시한 표이다.
캐리 저장 가산기(CSA)를 이용하는 전형적인 알고리즘 종래의 방법 1은 클럭사이클이 n+34로 길고, 32개의 전가산기에 의한 지연시간을 필요로 한다. 또한, 캐리 저장 가산기(CSA)와 멀티플렉서를 이용하는 종래의 방법 2는 캐리 전파에 의한 지연 시간을 필요로 한다.
종래의 방법 3(McIvor의 2)을 이용하는 곱셈 장치 본 발명에 따른 덧셈 장치(Nadder)를 이용한 곱셈 장치를 비교하여 효율성을 알아보면 다음과 같다. 이때, 곱셈 장치의 다른 부분을 제외하고 덧셈 부분만 비교 하여 두 곱셈 장치의 효율성 비교가 가능하다. 본 발명에 따른 덧셈 장치(Nadder)를 이용한 곱셈 장치는 종래의 방법 3(McIvor의 2)을 이용한 곱셈 장치의 덧셈 연산 부분과 비교하여 공간 복잡도는 8% 감소한고, 시간 복잡도는 17% 감소한다.
따라서 본 발명에 따른 덧셈 장치(Nadder)를 이용한 곱셈 장치는 종래의 곱셈 방법 중 고비도에서 효율적인 종래의(McIvor의 2) 방법을 이용한 곱셈 장치보다 효율적이다.
특히, 복잡도를 줄이기 위해서 연산을 수행하는 동안, 부호수의 특징을 이용하여 하이 래딕스(High-radix) 연산에 적용할 경우, 2의 보수 연산에서 이진수로 표현할 때 고려해야 하는 캐리 전파를 고려하지 않아도 되는 추가적인 성능 향상을 갖는다. 부호수를 이용한 다양한 부호화 기법은 여러 분야에 적용될 수 있다.
바람직하게는, 본 발명의 부호화를 이용하는 덧셈 방법을 컴퓨터에서 실행시키기 위한 프로그램을 컴퓨터로 읽을 수 있는 기록매체에 기록하여 제공할 수 있다.
바람직하게는, 본 발명의 부호화를 이용하는 곱셈 방법을 컴퓨터에서 실행시키기 위한 프로그램을 컴퓨터로 읽을 수 있는 기록매체에 기록하여 제공할 수 있다.
본 발명은 소프트웨어를 통해 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되거나 전송 매체 또는 통신망에서 반송파와 결합된 컴퓨터 데이터 신호에 의하여 전송될 수 있다.
본 발명은 도면에 도시된 일 실시예를 참고로 하여 설명하였으나 이는 예시적인 것에 불과하며 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 실시예의 변형이 가능하다는 점을 이해할 것이다. 그러나, 이와 같은 변형은 본 발명의 기술적 보호범위내에 있다고 보아야 한다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다.
상술한 바와 같이, 본 발명에 의하면, 부호와 기법을 적용하여 덧셈 연산을 하거나 부호와 기법을 적용한 덧셈 연산을 이용하여 곱셈 연산을 수행함으로써, 공간 복잡도와 시간 복잡도를 줄여 성능을 향상시키고, 제조 비용을 감소시킬 수 있는 효과가 있다. 또한, 또한, 부호수의 특징을 이용하여 하이 래딕스(High-radix) 연산을 적용 할 경우, 2의 보수 연산에서 고려해야 하는 캐리 전파를 고려하지 않아도 되는 추가적인 성능 향상을 가능하게 하는 효과가 있다.

Claims (9)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 임의의 자리 비트인 i번째 비트가 부호를 나타내는 부호비트와 크기를 나타 내는 크기비트로 구성되는 부호수인 제1 부호수 및 제2 부호수에 대하여,
    상기 제1 부호수의 i번째 비트와 상기 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트와 부호수인 제1 캐리의 i+1번째 비트를 생성하는 제1연산부;
    상기 제1 합의 i번째 비트를 부호를 갖지 않는 이진수로 변환한 제2 합의 i번째 비트를 생성하고, 상기 제2 합의 i번째 비트에 따라 상기 제1 캐리의 i+1번째 비트를 변환시켜 부호수인 제2 캐리의 i+1번째 비트를 생성하는 제2연산부;
    상기 제2 캐리의 i번째 비트와 상기 제2 합의 i번째 비트를 합산하여 덧셈 결과값을 생성하는 결과값 산출부;
    제1입력값에 따라, 제2입력값, 상기 제1입력값 및 제2입력값을 이용한 모듈러값, 상기 모듈러값과 제2입력값을 합산한 값 또는 0 중 어느 하나를 선택하여 상기 제1연산부의 제2부호수로 출력하는 멀티플렉서;
    상기 제1입력값에 따라 상기 멀티플레서를 제어하여 제2입력값의 덧셈 여부를 결정하는 변환기;
    상기 결과값 산출부의 덧셈 결과값을 쉬프트 연산한 쉬프트값을 상기 제1연산부의 제1부호수로 출력하는 쉬프트 레지스터; 및
    상기 쉬프트값을 이용하여 제1입력값 및 제2입력값의 곱셈 연산 결과를 생성하는 입출력 버퍼부를 포함하는 부호화를 이용하는 곱셈 장치.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 임의의 자리 비트인 i번째 비트가 부호를 나타내는 부호비트와 크기를 나타내는 크기비트로 구성되는 부호수에 대하여,
    제1입력값에 따라, 제2입력값, 상기 제1입력값 및 제2입력값을 이용한 모듈러값, 상기 모듈러값과 제2입력값을 합산한 값 또는 0 중 어느 하나를 선택하여 제2부호수로 출력하는 단계;
    상기 제1 부호수의 i번째 비트와 상기 제2 부호수의 i번째 비트를 합산하여 음의수인 제1 합의 i번째 비트와 부호수인 제1 캐리의 i+1번째 비트를 생성하는 단계;
    상기 제1 합의 i번째 비트를 부호를 갖지 않는 이진수로 변환한 제2 합의 i 번째 비트를 생성하고, 상기 제2 합의 i번째 비트에 따라 상기 제1 캐리의 i+1번째 비트를 변환시켜 부호수인 제2 캐리의 i+1번째 비트를 생성하는 단계; 및
    상기 제2 캐리의 i번째 비트와 상기 제2 합의 i번째 비트를 합산하여 덧셈 결과값을 생성하는 단계를 반복하고,
    상기 제1입력값에 따라 제어하여 제2입력값의 덧셈 여부를 결정하고,
    상기 덧셈 결과값을 쉬프트 연산한 쉬프트값을 제1부호수로 출력하여 제1입력값 및 제2입력값의 곱셈 연산 결과를 생성하는 단계를 포함하는 부호화를 이용하는 곱셈 방법.
KR1020060037460A 2006-04-26 2006-04-26 부호화를 이용하는 곱셈 장치 및 그 방법 KR100805272B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060037460A KR100805272B1 (ko) 2006-04-26 2006-04-26 부호화를 이용하는 곱셈 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060037460A KR100805272B1 (ko) 2006-04-26 2006-04-26 부호화를 이용하는 곱셈 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20070105415A KR20070105415A (ko) 2007-10-31
KR100805272B1 true KR100805272B1 (ko) 2008-02-20

Family

ID=38818861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060037460A KR100805272B1 (ko) 2006-04-26 2006-04-26 부호화를 이용하는 곱셈 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR100805272B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101977873B1 (ko) * 2017-08-25 2019-08-28 국방과학연구소 하드웨어 구현된 모듈러 역원 모듈

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Computer Arithmetic Algorithms. 2nd ed., Israel Koren(2002)

Also Published As

Publication number Publication date
KR20070105415A (ko) 2007-10-31

Similar Documents

Publication Publication Date Title
Miyamoto et al. Systematic design of RSA processors based on high-radix Montgomery multipliers
Kwon et al. Two implementation methods of a 1024-bit RSA cryptoprocessor based on modified Montgomery algorithm
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
Wang et al. A high-speed residue-to-binary converter for three-moduli (2/sup k/, 2/sup k/-1, 2/sup k-1/-1) RNS and a scheme for its VLSI implementation
JP4554239B2 (ja) モンゴメリー類型のモジュラー乗算装置及び方法
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
Timarchi et al. Arithmetic circuits of redundant SUT-RNS
Sutikno et al. Simplified VHDL coding of modified non-restoring square root calculator
JP4273071B2 (ja) 除算・開平演算器
US7318080B2 (en) Split radix multiplication
KR100805272B1 (ko) 부호화를 이용하는 곱셈 장치 및 그 방법
Raafat et al. A decimal fully parallel and pipelined floating point multiplier
Mohan et al. Evaluation of Mixed-Radix Digit Computation Techniques for the Three Moduli RNS {2 n− 1, 2 n, 2 n+ 1− 1}
US6684236B1 (en) System of and method for efficiently performing computations through extended booth encoding of the operands thereto
Basha et al. Design and Implementation of Radix-4 Based High Speed Multiplier for ALU's Using Minimal Partial Products
Son et al. Design and implementation of scalable low-power Montgomery multiplier
Zhao et al. An efficient signed digit montgomery modular multiplication algorithm
EP1710689A1 (en) Combining circuitry for multipliers
Kwak et al. High-speed CORDIC based on an overlapped architecture and a novel σ-prediction method
US20130117341A1 (en) Decimal elementary functions computation
CN113434115B (zh) 一种浮点数尾数域余数运算电路及方法
Iyer et al. Generalised Algorithm for Multiplying Binary Numbers Via Vedic Mathematics
Kang et al. A novel systolic VLSI architecture for fast RSA modular multiplication
Vassalos et al. Reverse converters for RNSs with diminished-one encoded channels
Artem et al. Area&power optimized modulo (2 n±2 p±1) multiplier

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
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20111209

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130111

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee