KR101247164B1 - 큰 수 곱셈 방법 및 디바이스 - Google Patents

큰 수 곱셈 방법 및 디바이스 Download PDF

Info

Publication number
KR101247164B1
KR101247164B1 KR1020077026682A KR20077026682A KR101247164B1 KR 101247164 B1 KR101247164 B1 KR 101247164B1 KR 1020077026682 A KR1020077026682 A KR 1020077026682A KR 20077026682 A KR20077026682 A KR 20077026682A KR 101247164 B1 KR101247164 B1 KR 101247164B1
Authority
KR
South Korea
Prior art keywords
multiplicand
multiplication
vector
digit
bits
Prior art date
Application number
KR1020077026682A
Other languages
English (en)
Other versions
KR20080016803A (ko
Inventor
이타이 드로어
보리스 돌구노프
Original Assignee
샌디스크 아이엘 엘티디
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 아이엘 엘티디 filed Critical 샌디스크 아이엘 엘티디
Publication of KR20080016803A publication Critical patent/KR20080016803A/ko
Application granted granted Critical
Publication of KR101247164B1 publication Critical patent/KR101247164B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • 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/525Multiplying only in serial-serial fashion, i.e. both operands being entered serially
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

제1피승수와 제2피승수를 곱셈하기 위한 부호있는 곱셈 방법 및 대응 디바이스가 개시된다. 본 디바이스는 제1피승수를 적어도 하나의 개별 디지트의 제1벡터로서 제1레지스터에 저장하고, 제2피승수를 적어도 하나의 개별 디지트의 제2벡터로서 제2레지스터에 저장하고, 각각의 디지트는 소정 개수의 비트를 가진다. 또한, 본 방법은 제1벡터 및 제2벡터의 디지트를 상기 소정 개수의 비트보다 한 비트가 작은 대응 디지트로 변환한다. 프로세서는 피승수의 부호있는 곱셈을 할 수 있다.
큰 수 곱셈 방법, 부호없는 곱셈, 피승수, 디지트, 레지스터, 프로세서.

Description

큰 수 곱셈 방법 및 디바이스{LARGE NUMBER MULTIPLICATION METHOD AND DEVICE}
본 발명은 큰 수의 곱셈 분야에 관한 것이다. 더욱 상세하게는, 본 발명은 부호있는 계산법만 사용하는 큰 수의 곱셈을 제공하는 방법 및 디바이스에 관한 것이다.
큰 수 곱셈은 종래의 주지된 수많은 컴퓨터 알고리즘에서 사용된다. 큰 수 계산법의 일반적인 사용은 공개 키 암호화 및 몽고메리 곱셈을 포함하고, 매우 큰 수(각각 수천 비트의 오더를 가진)의 수많은 곱셈 오퍼레이션이 구현된다.
"큰 수"는 W비트 폭의 레지스터 또는 워드 크기를 가진 프로세서에 의해 사용되는 N비트의 정수이고, 여기서 N > 2×W이다. 용어 "워드 크기"는 단일 정밀도 레지스터 내의 비트의 개수, 또는 사용되는 프로세서의 메모리 폭을 말한다. W비트의 워드 크기를 가진 일반적인 프로세서는 W비트의 두 워드를 곱셈하고, 그 결과를 2×W 비트인 두배-폭 레지스터에 저장할 수 있다. 곱셈할 오퍼랜드의 크기가 W비트보다 더 크다면, 전용 곱셈 알고리즘이 필요하다.
도 1은 펜과 종이를 사용한, 두 멀티플-디지트 수를 곱하기 위한 종래 기술의 곱셈 프로시저(10)의 설명이다. 각각의 수는 2개의 16진수로 구성된다. 제1수 는 (참조번호 (12)로 표시된) 3B이고, 제2수는 (참조번호 (14)로 표시된) CA이다. 곱셈 프로시저(10)는 제1중간 결과를 생성하기 위해, 제1수(12)의 두 디지트와 제2수(14)의 최하위 디지트(LSD)만 곱하는 단계로 시작한다. 제1중간 결과는 참조번호(16)으로 표시된다.
그 다음, 유사한 오퍼레이션이 제2중간 결과를 생성하기 위해, 제1수(12)의 두 디지트와 제2수(14)의 최상위 디지트(MSD)를 곱하는 단계로 수행된다. 참조번호(18)로 표시된 제2중간 결과는 제1중간 결과(16) 아래, 한 디지트 왼쪽에 쓰여진다.
곱셈 프로시저(10)를 완료한 후, 제1중간 결과(16)와 제2중간 결과(18)의 합은 (참조번호(20)로 표시된) 곱셈 결과 2E8E이다.
본 명세서에 도시된 바와 같이 16진수를 곱하는 것은 명료함을 위해 사용되었다. 주지된 컴퓨터 알고리즘은 2진수 곱셈에 적용한다.
도 2는 도 1의 두 멀티-워드 수의 곱셈에 적용되는 종래기술의 컴퓨터화된 곱셈 알고리즘(30)의 플로우 차트이다. 컴퓨터를 사용할 때, 각각의 수의 디지트는 W-비트 컴퓨터 워드로 표현된다. 용어 "디지트"는 컴퓨터 워드의 크기인 큰 수의 일부분을 말한다.
일반적으로, 컴퓨터화된 곱셈 알고리즘(30)은 종래기술의 프로시저(10)와 유사한 방법으로 적용된다(도 1 참조). 그러나, 도 1의 곱셈 프로시저(10)에 따라 - 부분 결과가 그들이 최종 단계에서 더해지기 전에 개별적으로 저장되지만, 컴퓨터화된 곱셈 알고리즘에 따라 - 각각의 중간 곱셈의 결과는 곱셈 알고리즘이 수행될 때, 결과 벡터에 더해진다.
최초 단계(32)에서, 두 피승수 벡터 X 및 Y, 및 그 결과를 홀딩하기 위한 결과 벡터 Z가 제공된다. 벡터 X, Y, 및 Z는 W-비트의 워드이다. 입력 벡터 X 및 Y의 길이는 각각 max_x 및 max_y이다. 곱셈 결과를 임시로 홀딩하기 위해 (2×W비트로 이루어진) 두배-폭 레지스터 r가 사용된다.
단계(34)에서, 결과 벡터 Z가 클리어된다.
단계(36)에서, 두 피승수 벡터 X 및 Y의 내부 변수 i, j, c1, 및 c2가 클리어되며, 여기서 i는 제1수 디지트 인덱스이고, j는 제2수 디지트 인덱스이고, c1은 이전 곱셈 오퍼레이션으로부터의 하이 워드이고, c2는 이전 덧셈 오퍼레이션으로부터의 올림값이다.
후속 단계(38, 40, 42, 44, 46, 및 48)는 메인 곱셈 루프를 포함한다. 단계(38)에서, 두 디지트가 곱해지고, 이전 곱셈 하이 워드 c1와 이전 덧셈 오퍼레이션으로부터의 올림값 c2이 더해진다. 그 결과는 두배-폭 레지스터 r에 임시적으로 저장된다.
단계(40)에서, 하이-워드 곱셈의 결과 r은 c1에 저장된다.
그 다음 단계(42)에서, 덧셈의 올림값이 계산되고 c2에 저장된다.
단계(44)에서, 결과 벡터 엘리먼트 zi+j는 그것에 곱셈 결과를 더함으로써 업데이트된다. 각각의 결과 벡터 엘리먼트의 폭이 W이기 때문에, r의 하위 워드만이 엘리먼트 zi+j에 더해진다.
단계(46)에서, X 피승수 인덱스 i가 증가된다.
그 다음 단계(48)에서, i의 값이 입력 벡터 X의 길이보다 큰지 판정된다. 큰 경우에, 컴퓨터화된 곱셈 알고리즘은 단계(50)로 진행한다. 그러나, 크지 않은 경우에, 컴퓨터화된 곱셈 알고리즘은 단계(38)로 복귀하고, 메인 곱셈 루프를 반복한다.
단계(50)에서, 다음 결과 워드가 그것에 c1 및 c2의 값을 더함으로써 업데이트된다.
단계(52)에서, 제2피승수 인덱스 j가 증가되고, 내부 변수 i, c1, 및 c2는 클리어된다.
그 다음 단계(54)에서, j의 값이 입력 벡터 Y의 길이보다 큰지 판정된다. 큰 경우에(즉, max_x 곱하기 max_y 번의 곱셈 오퍼레이션을 수행한 후), 컴퓨터화된 곱셈 알고리즘은 단계(56)에서 종료하고, 결과 벡터 Z는 최종 곱셈 결과를 홀딩한다. 그러나, 크지 않은 경우에, 컴퓨터화된 곱셈 알고리즘은 제1피승수와 제2피승수의 후속 워드를 곱함으로써, 단계(38)부터 내부 루프를 재진술한다(restate).
종래기술의 컴퓨터화된 곱셈 알고리즘은 부호없는 곱셈 오퍼레이션을 기초로 큰 수의 곱셈을 제공한다. 즉, 입력 벡터 X, Y는 물론, 결과 벡터 Z는 모두 디지트 당 W비트의 양수를 가진다(부호 비트가 없다).
그러나, 몇몇 주지된 디지털 신호 처리기(DSPs)는 부호있는 오퍼레이션만 지원하는 계산법을 가진다. 예를 들어, 부호없는 계산법을 지원하지 않는(즉, 부호있는 계산법에만 한정된) 종래기술의 DSP의 일 예는 'LSI Logic Corporation'으로부터 사용가능한 'ZSP200 DSP'이다.
이러한 타입의 DSPs에서, 각각의 워드의 최상위 비트(MSB)는 항상 부호 비트이다. 부호있는 곱셈 오퍼레이션을 수행하는 것으로 상술된 종래기술의 컴퓨터화된 곱셈 알고리즘을 사용하는 것은 잘못된 값을 발생시킨다. 예를 들어, 워드의 크기가 8비트라면(W=8), 수 0xFF×0xFF의 부호없는 곱셈 오퍼레이션의 결과는 0xFE01이다(255×255 = 65,025). 부호있는 오퍼레이션만 지원한다면, 수 255는 -1을 나타낸다. 수 -1×-1의 곱셈 오퍼레이션은, 부호없는 오퍼레이션을 사용하여 산출된 결과값과 다른, +1의 결과를 가진다.
부호있는 오퍼레이션만 수행할 수 있는 종래기술의 프로세서에서 사용되는 컴파일러는 부호있는 곱셈 결과를 부호없는 결과로 번역하는 일 시퀀스의 오퍼레이션을 수행함으로써 상술된 문제를 해결한다.
주지된 변환 프로세스는 전형적으로 다음과 같이 수행된다:
정의
W는 레지스터 내의 비트 개수, 또는 메모리 폭이다.
A 및 B는 피승수이다. 각각의 피승수는 W비트의 길이이다.
r은 부호없는 A×B 오퍼레이션의 결과를 저장하기 위해 사용되는 두배-폭 변수(2×W 비트)이다.
rs는 두 피승수 A 및 B의 부호있는 곱셈 프로덕트(2×W 비트)이다.
A의 MSB가 1이면(A가 음수로 간주되면), ~A는 A의 2의 보수로 정의된다. 즉, 0 - ~A = A이다.
부호있는 곱셈 오퍼레이션 A×B를 수행할 때, A가 (MSB가 1인) 음수이면, A는 A = 2W - ~A로 정의된다. 이 수와 B를 곱한 결과는 r = (2W-(~A))×B = 2W×B + -(~A×B) = 2W×B + rs이다.
그러므로, 음수 A와 양수 B의 부호없는 곱셈 오퍼레이션을 수행하기 위해, A와 B의 부호있는 곱셈 오퍼레이션을 수행하고, 그 다음 B×2W의 값을 그 결과에 더할 수 있다. B×2W의 곱셈 프로세스는 B를 W비트만큼 왼쪽으로 시프트시키는 것과 같음을 알아야 한다(B×2W = B<<W). 이와 유사하게, 피승수 A 및 B가 모두 음수라면, 그 결과는 r = 2W×A + 2W×B + rs 또는 r=(A<<W) + (B<<W) + rs이다.
결론적으로, 부호있는 계산 유닛으로 부호없는 곱셈을 구현하는 일반적인 종래 기술 프로세서는 다음의 오퍼레이션을 수행한다:
(1) 피승수 A 및 B의 부호있는 곱셈을 수행하고, 그리고,
(2) 각 피승수(A 및 B)의 부호 비트를 테스트한다. 한 피승수가 음수이면, 다른 피승수를 W비트 왼쪽으로 시프트시키고, 시프트된 다른 피승수를 부호있는 곱셈 오퍼레이션의 결과에 더한다.
수가 음수일 가능성은 50%이므로, 기존 프로세서는 평균적으로 곱셈 오퍼레이션마다 두배 크기의 수의 한번의 시프트 및 두배 크기의 수의 한번의 덧셈을 수행해야 한다. 또한, 이러한 프로세서는 피승수가 양수인지 음수인지를 판정하기 위해 각각의 피승수를 테스트해야 한다.
이러한 추가적인 계산 오퍼레이션은 부호없는 곱셈을 수행할 수 있는 프로세서와 비교하여 부호있는 곱셈만 가능한 프로세서의 곱셈 성능을 상당히 감소시킨다. DSP를 사용할 때, 이러한 상황은 훨씬 더 나빠진다. DSP는 곱셈 및 덧셈을 단일 오퍼레이션으로 수행할 수 있기 때문에, 상술된 바와 같은 추가적인 계산 오퍼레이션을 수행하기 위해 DSP의 곱셈 및 덧셈 명령의 이점인 단일 오퍼레이션을 사용하지 않는다.
그러므로, 기존 기술의 단점을 극복하고, 부호있는 계산으로 제한된 프로세서를 사용하여 큰 수의 곱셈을 효율적으로 수행하는 디바이스 및 방법에 대한 필요성과 그에 대한 높은 이점은 널리 인식되어 있다.
따라서, 본 발명의 주 목적은 부호있는 계산으로 제한된 프로세서를 사용하여 큰 수의 곱셈을 효율적으로 수행하는 디바이스 및 방법을 도입함으로써, 종래기술의 단점을 극복하고자 하는 것이다.
본 발명에 따라서, 제1피승수와 제2피승수를 곱하는 부호없는 곱셈 방법이 제공되며, 본 방법은 (a) 제1피승수를 각각의 디지트가 소정 개수의 비트를 가진 적어도 하나의 개별 디지트의 제1벡터로서 제1레지스터에 저장하는 단계; (b) 제2피승수를 각각의 디지트가 소정 개수의 비트를 가진 적어도 하나의 개별 디지트의 제2벡터로서 제2레지스터에 저장하는 단계; (c) 제1벡터의 디지트를 각각 소정 개수의 비트보다 한 비트 작은 디지트에 대응하도록 변환하는 단계; (d) 제2벡터의 디지트를 각각 소정 개수의 비트보다 한 비트 작은 디지트와 대응하도록 변환하는 단계; (e) 제1피승수에 대응하는 각각의 디지트와 제2피승수에 대응하는 각각의 디지트를 곱셈하는 단계를 포함함으로써, 모든 곱셈이 부호있는 곱셈으로 제한된, 프로세서를 사용하여 부호있는 곱셈 결과를 생성하는 단계를 포함한다.
바람직하게는, 상기 결과를 생성하는 단계는 부호있는 곱셈 결과의 디지트의 중간값을 마스킹하는 단계를 포함한다. 부호있는 곱셈 결과의 디지트의 중간값은 도 4의 박스(86) 내의 엘리먼트 Zi +j이다.
바람직하게는, 본 방법은 (f) 부호있는 곱셈 결과를 부호없는 곱셈 결과에 대응하도록 변환하는 단계를 더 포함한다.
또한, 본 발명에 따라, 제1피승수와 제2피승수를 곱셈하는 디바이스가 더 제공되며, 본 디바이스는 (a) 제1피승수를 각각의 디지트가 소정 개수의 비트를 가진 적어도 하나의 개별 디지트의 제1벡터로서 저장하는 제1레지스터; (b) 제2피승수를 각각의 디지트가 소정 개수의 비트를 가진 적어도 하나의 개별 디지트의 제2벡터로서 저장하는 제2레지스터; (c) 제1벡터 및 제2벡터를 각각 소정 개수의 비트보다 한 비트 작은 적어도 하나의 각각의 디지트의 대응 변환된 제1벡터 및 대응 변환된 제2벡터로 변환시키고, 부호있는 곱셈 결과를 생성하기 위해, 대응 변환된 제1벡터의 비트와 대응 변환된 제2벡터의 비트를 곱하고, 모든 곱셈이 부호있는 곱셈으로 제한된 프로세서를 포함한다.
바람직하게는, 프로세서는 기존의 제1 및 제2레지스터를 사용하여 그 자리에서 제1벡터 및 제2벡터의 변환을 적용한다. 대안으로써, 대응 변환된 제1벡터 및 대응 변환된 제2벡터를 저장하기 위해 제3저장 유닛이 제공된다.
바람직하게는, 프로세서는 부호있는 곱셈 결과의 디지트의 중간 값을 마스킹하는 마스킹 오퍼레이션을 적용한다.
본 발명의 부가적인 피처 및 이점은 하기 도면 및 설명으로부터 명백해질 것이다.
하기 첨부된 도면을 참조하여 본 발명의 실시예에 관하여 본 발명을 더 잘 이해할 수 있을 것이고, 유사한 번호는 대응 섹션 또는 엘리먼트를 나타낸다:
도 1은 펜과 종이를 사용하는 두 멀티플-디지트 수를 곱하는 종래기술의 곱셈 프로시저를 도시하고;
도 2는 도 1의 두 멀티플-워드 수의 곱셈에 적용된 종래기술의 컴퓨터화된 곱셈 알고리즘의 플로우 차트이고;
도 3은 W비트 워드를 W-1비트 워드로 변환하는 종래기술의 변환 프로시저의 블럭다이어 그램이고(예컨대, W=8);
도 4는 본 발명의 방법의 플로우 차트이고; 그리고,
도 5는 본 발명의 디바이스의 하이 레벨의 개략적인 블럭 다이어그램이다.
본 발명은 부호있는 계산만으로 제한된 프로세서를 사용하여 큰 수의 곱셈을 효율적으로 수행하는 혁신적인 디바이스 및 방법이다. 본 발명의 바람직한 방법은 두 메인 단계로 수행된다. 첫째로, W비트 워드로 표현된 승수는 최상위 비트가 0비트가 되도록 W-1비트 워드로 변환된다. 이러한 변환은 부호 비트(MSB)가 항상 0임을 보장한다. 두번째로, 주지된 곱셈 알고리즘을 사용하여 큰 수 곱셈 프로시저가 수행된다.
현재의 피승수는 항상 양수기 때문에, (주지된 곱셈 기술에 의해 필요했던) 부호있는 곱셈 결과를 부호없는 결과로 번역하기 위한 추가적인 시퀀스의 계산 오퍼레이션을 적용할 필요가 없다.
그러므로, 매우 큰 피승수에 대한 본 발명의 방법을 구현하는 것은 주지된 표준 곱셈 기술과 비교하여 상당한 비용을 절감할 수 있다. 또한, 본 발명은 덧셈 및 곱셈을 단일 오퍼레이션으로 수행하는 DSP의 능력을 이용하여 훨씬 더 높은 곱셈 성능을 야기한다.
주지된 다른 곱셈 시스템과 호환하도록 하기 위해, 곱셈 프로시저의 W-1 비트 워드 결과를 소정의 워드 표현(본 명세서에서 W비트 워드)으로 다시 변환하는 단계가 본 발명에 의해 선택적으로 제공된다. 이러한 변환은 적어도 하나의 출력 워드의 MSB가 '1' 비트일 수 있게 한다.
지금부터 도 3을 참조하면, 복수의 W비트 워드를 복수의 W-1비트 워드로 변환하는 종래의 변환 프로시저(60)의 블럭 다이어그램이 도시되어 있다, 여기서 예컨대, W = 8이다.
n비트를 가진 피승수의 워드 수는
Figure 112007082255092-pct00001
이고, W는 각 워드에서 비트의 개 수이다(예컨대, W=8). 예를 들어, 제1워드 w1의 8비트는 A0(LSB), A1, A2, A3, A4, A5, A6, 및 A7(MSB)로 표현되고, 제2워드 w2의 8비트는 B0(LSB), B1, B2, B3, B4, B5, B6, 및 B7(MSB)로 표현된다. 제3워드 w3의 8비트는 C0(LSB), C1, C2, C3, C4, C5, C6, 및 C7(MSB) 등으로 표현된다.
제1오퍼레이션은 제2워드 w2의 비트 B0, B1, B2, B3, B4 및 B5가 한 포지션 왼쪽으로 시프트되고, 피승수의 최하위 디지트(LSD)를 홀딩하는 제1워드 w1의 최상위 비트(MSB) A7을 제2워드 w2의 최하위 비트(LSB) B0로 복사하는 단계를 포함한다.
제2오퍼레이션은 제2워드 w2에 적용되지만, 현재 두 최상위 비트 B6 및 B7은 제3워드 w3의 두 최하위 비트 C0 및 C1로 복사되고, 제3워드 w3의 비트 C0, C1, C2, C3, 및 C4는 두 포지션 왼쪽으로 시프트된다.
유사한 오퍼레이션을 피승수의 모든
Figure 112007082255092-pct00002
워드에 적용한 후,
Figure 112007082255092-pct00003
새 변환된 워드가 생성되어, 각각의 새로운 변환된 워드는 지금 W-1비트로만 표현된다.
실제로, 상술된 W비트대 W-1비트 변환 프로시저가 (예컨대 공통 버퍼를 사용하여) 그 자리에서 수행되는 경우에, 이러한 오퍼레이션은 MSD(최상위 디지트)에서 LSD(최하위 디지트)로 적용된다. 예를 들어, 제2오퍼레이션의 경우에, 두 최상위 비트 B6 및 B7은 제3워드 w3의 비트 C0, C1, C2, C3, 및 C4가 두 포지션 왼쪽으로 시프트되기 전에 복사된다.
도 4를 참조하면, 본 발명의 방법(70)의 플로우 차트가 도시되어 있다.
최초 단계(72)에서, 도 3의 변환 프로시저(60)가 피승수의 W비트 워드 표현을 W-1비트 표현으로 변환하기 위해 수행된다. 두 입력 오퍼랜드 X 및 Y는 새로운 W-1비트 표현으로 변환된다(즉, 멀티플라이어를 홀딩하기 위해 사용된 각각의 워드는 W-1비트를 포함한다). 이 변환은 (충분한 메모리가 할당된다면) 입력 피승수를 "오리지널" W비트 워드 표현으로 홀딩하는 동일한 입력 버퍼를 채용하거나, 개별적으로 할당된 버퍼를 채용할 수 있다. 입력 벡터 X 및 Y의 길이는 각각 max_x 및 max_y이다.
max_x 및 max_y는 다음과 같이 계산된다:
max_x =
Figure 112012082499458-pct00004
이고, max_y =
Figure 112012082499458-pct00005
이고, 여기서, nx는 오퍼랜드 X의 길이(즉, 비트 개수)를 나타내고, ny는 오퍼랜드 Y의 길이(즉, 비트 개수)를 나타낸다.
단계(74)에서 결과를 홀딩하기 위한 결과 벡터 Z가 제공된다. (2×W비트로 이루어진) 두배-폭 레지스터 r은 이 곱셈 결과를 일시적으로 홀딩하기 위해 사용된다. 본 발명의 마스크는 2W-1-1(MSB 비트는 "0"이고, 모든 다른 비트는 "1")로 정의된다. 마스킹 오퍼레이션은 본 명세서에서, W비트 워드와 마스크의 논리적 앤드(AND) 오퍼레이션으로서 정의된다.
그 다음 단계(76, 78, 80, 82, 및 84)는 도 2에 서술된 컴퓨터화된 곱셈 알고리즘(30)의 대응 단계(34, 36, 38, 40, 및 42)와 동일하다.
단계(76)에서, 결과 벡터 Z가 클리어된다.
단계(78)에서, 두 피승수 벡터 X 및 Y의 내부 변수 i, j, c1, 및 c2가 클리어되고, 여기서 i는 제1수 디지트 인덱스이고, j는 제2수 디지트 인덱스이고, c1은 이전 곱셈 오퍼레이션으로부터의 하이 워드이고, c2는 이전 덧셈 오퍼레이션으로부터의 올림값이다.
단계(80, 82, 84, 86, 88, 및 90)는 메인 곱셈 루프를 포함한다. 단계(80)에서, 두 디지트가 곱해지고, 이전 곱셈 하이 워드 c1와 이전 덧셈 오퍼레이션으로부터의 올림값 c2이 더해진다. 그 결과는 두배-폭 레지스터 r에 임시적으로 저장된다.
단계(82)에서, 하이-워드 곱셈의 결과 r은 c1에 저장된다.
그 다음 단계(84)에서, 덧셈의 올림값이 계산되고 c2에 저장된다.
단계(86)에서, 결과 벡터 엘리먼트 zi+j는 그것에 곱셈 결과를 더함으로써 업데이트된다. 결과 벡터 엘리먼트의 폭이 W이기 때문에, r의 하위 워드만이 zi+j에 더해진다. 그 다음 마스킹 오퍼레이션이 이 결과 벡터 엘리먼트 zi+j에 적용된다. 결과 벡터 엘리먼트 zi+j의 부호 비트(MSB)는 부호있는 계산 오퍼레이션을 수행할 때 무의미하기 때문에, (W-1 '1' 비트 마스크의) 마스킹 오퍼레이션은 그 결과 벡터 엘리먼트 zi+j의 부호 비트(MSB)가 클리어되었음을 보장한다.
다음 단계(88, 90, 92, 94, 96, 및 98)는 도 2의 종래 기술의 대응 단계(46, 48, 50, 52, 54, 및 56)와 유사한 방식으로 적용된다.
단계(88)에서, X 피승수 인덱스 i가 증가된다.
그 다음 단계(90)에서, i의 값이 입력 벡터 X의 길이보다 큰지 판정된다. 큰 경우에, 큰 수 곱셈 프로시저는 단계(92)로 진행한다. 그러나, 크지 않은 경우에, 큰 수 곱셈 프로시저는 단계(78)를 적용하도록 복귀하여, 메인 곱셈 루프를 반복한다.
단계(92)에서, 후속 결과 워드가 그것에 c1 및 c2의 값을 더함으로써 업데이트된다.
단계(94)에서, 제2피승수 인덱스 j가 증가되고, 내부 변수 i, c1, 및 c2는 클리어된다.
그 다음 단계(96)에서, 내부 변수 j가 입력 벡터 Y의 길이보다 큰지 판정된다. 큰 경우에(즉, max_x 곱하기 max_y 번의 곱셈 오퍼레이션을 수행한 후), 최종 곱셈 결과를 홀딩하는 부호있는 결과 벡터 Z는 부호없는 결과 벡터로 변환된다. 이것은, 예를 들어, 복수의 W-1비트 워드를 복수의 W비트 워드로 변환하기 위해 종래기술의 변환 프로시저(예컨대, 도 3의 역 변환 프로시저)를 사용하여 적용된다. 그러나, 크지 않은 경우에, 큰 수 곱셈 프로시저는 제1피승수와 제2피승수의 후속 워드를 곱함으로써, 단계(80)부터 내부 루프를 재진술한다.
도 5를 참조하면, 본 발명의 디바이스(100)의 하이 레벨의 개략적인 블럭 다이어그램이 도시되어 있다. 레지스터(102)는 제1피승수를 각각 W비트로 표현된 제1벡터의 디지트로 저장하기 위해 제공된다. 레지스터(104)는 제2피승수를 각각 W비트로 표현된 제2벡터의 디지트로 저장하기 위해 제공된다.
부호있는 곱셈만으로 제한된, 프로세서(106)는 제1피승수 및 제2피승수의 각각의 디지트를 W-1비트 표현으로 변환시키고, 그 다음 부호있는 곱셈 결과를 생성하기 위해, 제1피승수의 변환된 디지트와 제2피승수의 변환된 디지트를 곱한다.
바람직하게는, 저장 유닛(103)(예컨대, RAM, 레지스터 등)이 제1피승수의 변환된 디지트 및 제2피승수의 변환된 디지트를 각각 저장하기 위해 제공된다. 또한, 프로세서(106)에 의해 생성된 부호있는 곱셈 결과가 각각 W-1비트로 표현된 워드로 저장 유닛(103)에 저장될 수 있다.
바람직하게는, 프로세서(106)는 또한 부호있는 곱셈 결과를 부호없는 곱셈 결과로 변환하고, 이 부호없는 곱셈 결과를 저장 유닛(103)에 각각 W비트로 표현된 워드로 저장한다.
대안으로서, 제1피승수 및 제2피승수의 W-1비트 표현으로의 변환은 프로세서(106)에 의해 그 자리에서(즉, 각각 레지스터(102) 및 레지스터(104)를 사용하여) 적용될 수 있다.
본 발명은 본 명세서에서 특정한 곱셈 알고리즘에 따라 구현된 것으로 서술되었다. 그러나, 큰 수의 곱셈을 효율적으로 실행하기 전에 W비트의 피승수를 W-1비트 워드로 각각 변환하는 임의의 방법 및 디바이스에 관한 가능한 다른 구현이 본 발명의 범위에 속함을 이해할 수 있을 것이다.
본 발명이 특정한 실시예에 관하여 서술되었으나, 그 설명은 제한의 의미가 아니며, 당업자들에게 가능한 변형은 첨부된 청구항의 범위에 속함을 이해해야 한다.

Claims (7)

  1. 제1피승수와 제2피승수를 곱하는 부호없는 곱셈 방법으로서,
    (a) 제1피승수를 각각의 디지트가 소정 개수의 비트를 가진, 적어도 하나의 개별 디지트의 제1벡터로 제1레지스터에 저장하는 단계;
    (b) 제2피승수를 각각의 디지트가 소정 개수의 비트를 가진, 적어도 하나의 개별 디지트의 제2벡터로 제2레지스터에 저장하는 단계;
    (c) 상기 제1벡터의 상기 디지트를 상기 소정 개수의 비트의 각각 보다 한 비트 작은 디지트에 대응하도록 변환하는 단계;
    (d) 상기 제2벡터의 상기 디지트를 상기 소정 개수의 비트의 각각 보다 한 비트 작은 디지트에 대응하도록 변환하는 단계; 및
    (e) 상기 제1피승수에 대응하는 상기 디지트의 각각과 상기 제2피승수에 대응하는 상기 디지트의 각각을 곱하는 단계를 포함함으로써, 모든 곱셈이 부호있는 곱셈으로 제한된 프로세서를 사용하여, 부호있는 곱셈 결과를 생성하는 단계;를 포함하는 것을 특징으로 하는 제1피승수와 제2피승수를 곱하는 부호없는 곱셈 방법.
  2. 제 1 항에 있어서, 상기 부호있는 곱셈 결과는 복수의 디지트를 포함하고, 상기 부호있는 곱셈 결과를 생성하는 단계는 상기 부호있는 곱셈 결과의 상기 복수의 디지트의 중간값을 마스킹하는 단계를 포함하는 것을 특징으로 하는 제1피승수와 제2피승수를 곱하는 부호없는 곱셈 방법.
  3. 제 1 항에 있어서,
    (f) 상기 부호있는 곱셈 결과를 대응하는 부호없는 곱셈 결과로 변환하는 단계를 더 포함하는 것을 특징으로 하는 제1피승수와 제2피승수를 곱하는 부호없는 곱셈 방법.
  4. 제1피승수와 제2피승수를 곱셈하기 위한 디바이스로서,
    (a) 제1피승수를 각각의 디지트가 소정 개수의 비트를 가진, 적어도 하나의 개별 디지트의 제1벡터로서 저장하기 위한 제1레지스터;
    (b) 제2피승수를 각각의 디지트가 소정 개수의 비트를 가진, 적어도 하나의 개별 디지트의 제2벡터로서 저장하기 위한 제2레지스터;
    (c) 상기 제1벡터 및 상기 제2벡터를 각각의 적어도 하나의 개별 디지트의 대응하는 변환된 제1벡터 및 대응하는 변환된 제2벡터로 변환시키고, 부호있는 곱셈 결과를 생성하기 위해 상기 대응하는 변환된 제1벡터와 상기 대응하는 변환된 제2벡터를 곱하는, 모든 곱셈이 부호있는 곱셈으로 제한된 프로세서로서, 각각의 상기 디지트는 상기 소정의 개수의 비트 보다 한 비트 작은, 프로세서;를 포함하는 것을 특징으로 하는 제1피승수와 제2피승수를 곱셈하기 위한 디바이스.
  5. 제 4 항에 있어서, 상기 프로세서는 상기 제 1 레지스터 및 상기 제 2 레지스터를 이용하여 상기 제1 벡터 및 상기 제2 벡터의 상기 변환을 적용하는 것을 특징으로 하는 제1피승수와 제2피승수를 곱셈하기 위한 디바이스.
  6. 제 4 항에 있어서,
    (d) 상기 대응하는 변환된 제1벡터 및 상기 대응하는 변환된 제2벡터를 저장하기 위한 저장 유닛을 더 포함하는 것을 특징으로 하는 제1피승수와 제2피승수를 곱셈하기 위한 디바이스.
  7. 제 4 항에 있어서, 상기 부호있는 곱셈 결과는 복수의 디지트를 포함하고, 상기 프로세서는 상기 부호있는 곱셈 결과의 상기 디지트의 중간값을 마스킹하기 위한 마스킹 오퍼레이션을 적용하는 것을 특징으로 하는 제1피승수와 제2피승수를 곱셈하기 위한 디바이스.
KR1020077026682A 2005-05-09 2006-05-09 큰 수 곱셈 방법 및 디바이스 KR101247164B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US67890705P 2005-05-09 2005-05-09
US60/678,907 2005-05-09
PCT/IL2006/000551 WO2006120680A2 (en) 2005-05-09 2006-05-09 Large number multiplication method and device

Publications (2)

Publication Number Publication Date
KR20080016803A KR20080016803A (ko) 2008-02-22
KR101247164B1 true KR101247164B1 (ko) 2013-03-25

Family

ID=37396968

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077026682A KR101247164B1 (ko) 2005-05-09 2006-05-09 큰 수 곱셈 방법 및 디바이스

Country Status (6)

Country Link
US (1) US7672989B2 (ko)
EP (1) EP1880275A4 (ko)
JP (1) JP4728392B2 (ko)
KR (1) KR101247164B1 (ko)
CN (1) CN101300544B (ko)
WO (1) WO2006120680A2 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
CN104115115B (zh) 2011-12-19 2017-06-13 英特尔公司 用于多精度算术的simd整数乘法累加指令
CN107145335B (zh) * 2011-12-23 2021-01-22 英特尔公司 用于大整数运算的向量指令的装置和方法
KR101615976B1 (ko) 2014-12-18 2016-04-28 한국건설기술연구원 공학용 목재 및 콘크리트 슬래브를 구비한 합성바닥판 구조

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02212927A (ja) * 1989-02-14 1990-08-24 Fujitsu Ltd 2進整数乗算処理方法
JPH1185471A (ja) * 1997-07-09 1999-03-30 Matsushita Electric Ind Co Ltd 演算方法および演算装置
JP2000353077A (ja) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd 多倍長演算装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH061438B2 (ja) 1984-04-26 1994-01-05 日本電気株式会社 倍精度乗算器
JPS62236030A (ja) * 1986-04-08 1987-10-16 Nec Corp 乗算回路
JPH03241421A (ja) * 1990-02-20 1991-10-28 Yamaha Corp 乗算器
JPH04367932A (ja) 1991-06-17 1992-12-21 Oki Electric Ind Co Ltd 倍精度乗算方法
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
WO1996017293A1 (en) * 1994-12-01 1996-06-06 Intel Corporation A microprocessor having a multiply operation
US6014684A (en) * 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
US6029184A (en) 1997-06-17 2000-02-22 Sun Microsystems, Inc. Method of performing unsigned operations with signed instructions in a microprocessor
US6144980A (en) * 1998-01-28 2000-11-07 Advanced Micro Devices, Inc. Method and apparatus for performing multiple types of multiplication including signed and unsigned multiplication
US6038583A (en) * 1997-10-23 2000-03-14 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products
US6026483A (en) * 1997-10-23 2000-02-15 Advanced Micro Devices, Inc. Method and apparatus for simultaneously performing arithmetic on two or more pairs of operands
US6393554B1 (en) * 1998-01-28 2002-05-21 Advanced Micro Devices, Inc. Method and apparatus for performing vector and scalar multiplication and calculating rounded products
US6347326B1 (en) * 1999-03-02 2002-02-12 Philips Electronics North America Corporation N bit by M bit multiplication of twos complement numbers using N/2+1 X M/2+1 bit multipliers
US6708193B1 (en) * 2000-02-21 2004-03-16 Hewlett-Packard Development Company, L.P. Linear summation multiplier array implementation for both signed and unsigned multiplication
KR20020047509A (ko) * 2000-12-13 2002-06-22 신경욱 여분 이진 부분곱을 이용한 복소수 승산방법 및 이를적용한 복소수 승산기
US6742012B2 (en) * 2000-12-27 2004-05-25 Arm Limited Apparatus and method for performing multiplication operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02212927A (ja) * 1989-02-14 1990-08-24 Fujitsu Ltd 2進整数乗算処理方法
JPH1185471A (ja) * 1997-07-09 1999-03-30 Matsushita Electric Ind Co Ltd 演算方法および演算装置
JP2000353077A (ja) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd 多倍長演算装置

Also Published As

Publication number Publication date
WO2006120680A2 (en) 2006-11-16
US20060253522A1 (en) 2006-11-09
US7672989B2 (en) 2010-03-02
EP1880275A2 (en) 2008-01-23
CN101300544B (zh) 2012-05-30
KR20080016803A (ko) 2008-02-22
CN101300544A (zh) 2008-11-05
EP1880275A4 (en) 2009-12-16
JP2008544344A (ja) 2008-12-04
WO2006120680A3 (en) 2007-05-03
JP4728392B2 (ja) 2011-07-20

Similar Documents

Publication Publication Date Title
KR100329339B1 (ko) 압축데이터에의한승산-가산연산수행장치
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
KR100715770B1 (ko) 연산을 수행하는 방법 및 시스템 및 장치
JP3711147B2 (ja) パック・データを処理する1組の命令
JP6882281B2 (ja) ベクトルの処理のためのレーン位置情報
JP7096828B2 (ja) 入力オペランド値を処理するための装置及び方法
JP6803381B2 (ja) 重複ビットを使用する数値の冗長表現
US10768898B2 (en) Efficient modulo calculation
US8532286B2 (en) System and method for reducing the computation and storage requirements for a montgomery-style reduction
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
KR101247164B1 (ko) 큰 수 곱셈 방법 및 디바이스
US20090268900A1 (en) Signed montgomery arithmetic
Gueron et al. Accelerating big integer arithmetic using intel ifma extensions
US6338135B1 (en) Data processing system and method for performing an arithmetic operation on a plurality of signed data values
JP6877812B2 (ja) 重複伝搬演算
US7219117B2 (en) Methods and systems for computing floating-point intervals
US7174015B1 (en) Methods and apparatus for variable radix scalable modular multiplication
JPH04355827A (ja) 開平演算装置
US20020161810A1 (en) Method and apparatus for multiplication and/or modular reduction processing
JP3660075B2 (ja) 除算装置
JP4223819B2 (ja) べき乗剰余演算装置及びそのプログラム
Pei et al. Efficient bit and digital reversal algorithm using vector calculation
JP2708013B2 (ja) Nポイントfftプロセッサ用メモリ制御回路
JPH05313861A (ja) 開平演算装置
JP2002530775A (ja) 複数の符号付きデータ値に算術演算を実施するデータ処理システムおよび方法

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: 20160218

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee