KR101179932B1 - 모듈러 3 연산 장치 및 방법 - Google Patents

모듈러 3 연산 장치 및 방법 Download PDF

Info

Publication number
KR101179932B1
KR101179932B1 KR1020080125157A KR20080125157A KR101179932B1 KR 101179932 B1 KR101179932 B1 KR 101179932B1 KR 1020080125157 A KR1020080125157 A KR 1020080125157A KR 20080125157 A KR20080125157 A KR 20080125157A KR 101179932 B1 KR101179932 B1 KR 101179932B1
Authority
KR
South Korea
Prior art keywords
value
modular
memory
bits
binary number
Prior art date
Application number
KR1020080125157A
Other languages
English (en)
Other versions
KR20100066730A (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 KR1020080125157A priority Critical patent/KR101179932B1/ko
Priority to EP09177691A priority patent/EP2196900A1/en
Priority to US12/630,150 priority patent/US20100146021A1/en
Publication of KR20100066730A publication Critical patent/KR20100066730A/ko
Application granted granted Critical
Publication of KR101179932B1 publication Critical patent/KR101179932B1/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/727Modulo N arithmetic, with N being either (2**n)-1,2**n or (2**n)+1, e.g. mod 3, mod 4 or mod 5
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

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

Abstract

본 발명은 디지털 전자 기기의 모듈러 연산 장치 및 모듈러 연산 방법에 관한 것으로, 더욱 상세하게는 모듈러 3 연산 장치 및 모듈러 3 연산 방법에 관한 것이다.
본 발명에서는 복잡도를 줄일 수 있으며, 로직으로 구현이 간단하고, 전자기기의 소모 전력을 줄일 수 있으며, 메모리를 줄일 수 있고, 계산이 빠른 모듈러 3 연산 장치 및 방법을 제공한다.
본 발명의 일 실시 예에 따른 방법은, 이진수의 모듈러 3 연산 장치에서의 모듈러 3 연산 방법으로, 모듈러 3 계산을 위한 대상 값이 입력되면, 이진수 값 중에서 MSB로부터 연속된 두 개의 1이 존재하는가를 검사하여 연속된 두 개의 1이 존재할 때마다 두 개의 1을 모두 0으로 치환하여 제1이진수를 생성하는 과정과, 상기 제1이진수를 모듈러 3 연산하는 과정과, 상기 모듈러 3 연산의 결과를 판정하는 과정을 포함한다.
Figure R1020080125157
모듈러 연산, 모듈러 3

Description

모듈러 3 연산 장치 및 방법{APPARATUS AND METHOD FOR CALCULATING MODULAR-3}
본 발명은 디지털 전자 기기의 모듈러 연산 장치 및 모듈러 연산 방법에 관한 것으로, 더욱 상세하게는 모듈러 3 연산 장치 및 모듈러 3 연산 방법에 관한 것이다.
일반적으로 모듈러 연산은 디지털 신호를 처리하는 전자 기기에서 널리 사용된다. 2진수의 특성상 모듈러 2n 계산은 상대적으로 쉽다. 예를 들어, 모듈러 2 연산은 대상 숫자의 최하위 한 비트만을 취하여 결과를 얻을 수 있고, 모듈러 4의 연산은 대상 숫자의 최하위 두 비트만을 취하여 쉽게 결과를 얻을 수 있다.
그러나 2n 단위의 모듈러 연산이 아닌 경우는 앞의 방법을 적용할 수가 없다. 따라서 디지털 신호 처리 시 이러한 계산을 하기 위해서 다양한 방법이 이용되고 있다. 예를 들어, 모듈러 3 연산을 하는 경우, 하기의 2가지 방법을 사용하여 연산이 이루어진다.
첫 번째 방법은, 나누기 3 연산의 나머지를 구하는 방법을 이용하는 방법이다. 두 번째 방법은, 나누기 연산이 여의치 않은 경우 대상 숫자에서 3을 반복적으로 빼기 연산하여 남은 수의 값이 3보다 작은 수가 남은 경우 결과를 얻어내는 방법이다. 이러한 첫 번째 방법과 두 번째 방법이 모듈러 3 연산에서 널리 사용되고 있는 방법이다.
이러한 모듈러 3 계산을 위한 첫 번째 방법은 나누기 연산이 복잡하다는 문제가 있다. 즉, 디지털 신호처리 분야에서 나누기 연산은 많은 연산량으로 인하여 가능하면 피하려고 하는 방법이다. 또한, 이를 로직으로 구현하는 경우에도 많은 소자들이 필요하므로, 로직이 복잡해지며, 많은 전류 소모가 발생하게 된다. 따라서 나누기 연산을 피하기 위하여 대부분 미리 만들어 둔 룩-업-테이블(look-up-table)을 사용하기도 한다. 그러나 룩-업-테이블의 경우 비트 수가 큰 경우 많은 메모리를 요구하게 되며, 가변적인 비트가 사용되는 경우에 적절하지 못하다는 단점이 있다. 또 다른 방법으로 소정의 수식을 통해 근사치를 구하는 방법을 이용하기도 한다.
또한, 모듈러 3 연산을 위한 두 번째 방법은 나눗셈을 피하는 방법 중의 하나이다. 그런데, 모듈러 3 연산을 위해 뺄셈을 사용하는 방법은 연산하고자 하는 값이 클수록 반복의 횟수가 증가하고, 값에 따라 반복회수의 편차가 커서 디지털 신호처리 로직으로 구현하는 데에 불편함이 있다.
따라서 본 발명에서는 복잡도를 줄일 수 있는 모듈러 3 연산 장치 및 방법을 제공한다.
본 발명에서는 로직으로 구현이 간단한 모듈러 3 연산 장치 및 방법을 제공한다.
본 발명에서는 전자기기의 소모 전력을 줄일 수 있는 모듈러 3 연산 장치 및 방법을 제공한다.
본 발명에서는 메모리를 줄일 수 있는 모듈러 3 연산 장치 및 방법을 제공한다.
본 발명에서는 계산이 빠른 모듈러 3 연산 장치 및 방법을 제공한다.
본 발명의 일 실시 예에 따른 방법은, 이진수의 모듈러 3 연산 장치에서의 모듈러 3 연산 방법으로, 모듈러 3 계산을 위한 대상 값이 입력되면, 이진수 값 중에서 MSB로부터 연속된 두 개의 1이 존재하는가를 검사하여 연속된 두 개의 1이 존재할 때마다 두 개의 1을 모두 0으로 치환하여 제1이진수를 생성하는 과정과, 상기 제1이진수를 모듈러 3 연산하는 과정과, 상기 모듈러 3 연산의 결과를 판정하는 과정을 포함한다.
본 발명의 일 실시 예에 따른 장치는, 이진수의 모듈러 3 연산 장치로, 모듈러 3 계산을 위한 대상 값과 갱신된 값을 입력으로 하여 두 값 중 하나의 값을 출력하는 선택 수단과, 상기 선택 수단의 출력을 저장하는 제1메모리와, 상기 제1메모리에 저장된 값과 동일한 비트의 값을 저장할 수 있는 제2메모리와, 상기 제1메모리와 상기 제2메모리의 값의 차를 계산하는 연산기와, 상기 제1메모리에 저장된 값을 MSB부터 연속된 1의 값이 존재할 시 연속된 한 쌍 단위로 모두 0으로 치환하도록 제어하며, 상기 제1메모리에 저장된 값 중 최상위에 존재하는 1의 위치 정보를 추출하고, 상기 위치 정보가 하위 2비트보다 큰 경우 상기 제2메모리의 값을 모두 0이 되도록 제어하고, 상기 위치 값보다 1 작은 위치로부터 연속된 한 쌍이 1의 값을 갖도록 상기 제2메모리의 값을 치환하며, 상기 연산기의 동작을 제어하고, 상기 위치 정보가 하위 2비트 이하인 경우 상기 제1메모리에 저장된 값을 하위 2비트를 이용하여 판정하는 제어기를 포함한다.
본 발명의 다른 실시 예에 따른 장치는, 이진수의 모듈러 3 연산 장치로, 모듈러 3 계산을 위한 대상 값과 갱신된 값을 입력으로 하여 두 값 중 하나의 값을 출력하는 선택 수단과, 상기 선택 수단의 출력을 저장하는 제1메모리와, 상기 제1메모리에 저장된 값과 동일한 비트의 값을 저장할 수 있는 제2메모리와, 상기 제1메모리와 상기 제2메모리의 값의 차를 계산하는 연산기와, 상기 제1메모리에 저장된 값을 MSB부터 연속된 1의 값이 존재할 시 연속된 한 쌍 단위로 모두 0으로 치환하도록 제어하며, 상기 제1메모리에 저장된 값 중 최상위에 존재하는 1의 위치 정보를 추출하고, 상기 위치 정보가 하위 2비트보다 큰 경우 상기 제2메모리의 값을 모두 0이 되도록 제어하고, 상기 위치 값을
Figure 112012012597494-pat00001
연산하여 상기 제1메모리의 위치 값보다 1 작은 위치부터 LSB 방향으로 연속한 "1"의 쌍의 개수를 결정하고, 상기 제2메모리에 상기 위치 값보다 1 작은 위치에서부터 결정된 쌍의 개수만큼 연속된 1의 쌍이 되도록 갱신을 제어하며, 상기 연산기의 동작을 제어하고, 상기 위치 정보가 하위 2비트 이하인 경우 상기 제1메모리에 저장된 값을 하위 2비트를 이용하여 판정하는 제어기를 포함한다.
본 발명은 3의 배수의 특성을 적절히 활용함으로써, 기존의 모듈러 3 연산 방법보다 계산량을 크게 줄일 수 있다. 따라서 디지털 신호처리에 본 발명을 활용하는 경우, 보다 빠른 연산이 가능하고, 사용되는 로직의 수가 줄어들게 되므로 발열/소비전력 측면에서도 긍정적인 효과를 제공한다.
이하 첨부된 도면을 참조하여 본 발명을 설명한다. 본 발명을 설명함에 있어 당업자에게 자명한 부분에 대하여는 본 발명의 요지를 흩뜨리지 않도록 생략하기로 한다. 또한, 이하에서 설명되는 각 용어들은 본 발명의 이해를 돕기 위해 사용된 것일 뿐이며, 각 제조 회사 또는 연구 그룹에서는 동일한 용도임에도 불구하고 서로 다른 용어로 사용될 수 있음에 유의해야 한다.
본 발명에서는 종래에 사용되는 기술보다 효율적인 모듈러 3 연산 방법에 대하여 개시할 것이다. 본 발명에서는 아래와 같이 3의 배수의 두 가지 특성을 활용한다.
- 특성 1 : 3의 배수와 또 다른 3의 배수와의 차는 3의 배수이다.
- 특성 2 : 2진수에서 연속된 두 개의 1값은 3의 배수이다. 예를 들면 8bit 2진수인 00000011, 00001100, 00110000, 11000000 들은 모두 3의 배수이다.
상술한 특성을 적용하여 본 발명의 모듈러 3 연산 방법을 예로 들면 다음과 같다. 임의의 8bit 2진수 A0 = 00111001(57, 3의 배수임)을 대상으로 모듈러 3 연산을 해보자. LSB를 0번째 비트라 하고 MSB를 7번째 비트라 하자.
5번째와 4번째 비트가 연속 1이므로, 3의 배수인 00110000을 빼주어도 3의 배수를 판별하는 데에 지장을 주지 않는다. 즉, 5번째와 4번째 비트를 모두 0으로 치환하는 것과 같다. 결과적으로 그리하여 A0에서 연속된 1의 두 비트를 모두 "0"으로 치환한 값을 A1이라 할 때, A1은 하기 <수학식 1>과 같다.
A1 = 00001001
그런 후, A1의 값에서 가장 큰 가중치를 갖는 1의 위치를 검사한다. 여기서, 가장 큰 가중치를 갖는다는 것은 MSB에 가장 가깝다는 것을 의미한다. 따라서 A1의 값에서 MSB에 가장 가까운 즉, 가장 큰 가중치를 갖는 1의 위치는 3번째 비트가 된다. 그런데, 만일 A1의 값에서 가장 큰 가중치를 갖는 1의 위치가 1번째 비트라면 더 이상 연산이 필요하지 않다. 결과적으로 연산은 가장 큰 가중치를 갖는 1의 위치가 1번째 비트 이내로 바뀔 때까지 추가적인 연산을 수행하게 된다.
위의 예에서 A1의 값 중 가장 큰 가중치를 갖는 값은 1번째 비트 이내에 위치하지 않는다. 따라서 임의의 3의 배수 숫자 B를 활용한다. 이때, B의 값은 A1의 값에서 가장 큰 가중치를 갖는 1의 위치 다음에 연속적인 두 개의 1의 값을 갖는 값으로 정한다. 즉, B는 하기 <수학식 2>와 같이 결정한다.
B = 00000110
위와 같이 B의 값이 결정되면, 본 발명의 서두에서 언급한 특성 1을 이용하여 하기 <수학식 3>과 같은 연산을 수행한다.
A2 = A1 - B
위 연산에서 B는 A1에서 가장 큰 가중치를 가지는 1의 위치에서 LSB 측으로 하나 다음 위치에서 연속하여 2개의 1을 생성하였으므로, B는 3의 배수가 된다. 그러므로 A1에서 3의 배수 값을 빼더라도 모듈러 3 연산에 영향을 끼치지 않게 된다. 결과적으로 A2는 A1의 모듈러 3 연산 결과와 동일한 값을 가지게 되는 것이다. 따라서 이와 같은 연산을 수행하면, A2는 하기 <수학식 4>와 같은 결과를 가진다.
A2 = 00000011
그러면, 다시 A2에서 가장 큰 가중치를 갖는 1의 위치는 1번째 비트이다. 그러면, 가장 큰 가중치를 가지는 1의 위치가 1번째 비트이므로, 3의 배수 여부를 결정할 수 있다. 위의 값을 보면, "00000011"이므로, "1*21 + 1*20"이므로 3이 되어 위 값은 3의 배수임을 알 수 있다.
이상에서 설명한 과정을 도 1을 참조하여 살펴보기로 한다.
도 1은 본 발명의 바람직한 실시 예에 따라 모듈러 3 연산을 위한 제어 흐름도이다. 도 1에서는 32비트의 입력 값이 수신되는 경우를 가정하여 설명할 것이다.
먼저, 100단계에서 모듈러 3 계산을 위한 대상 값을 수신한다. 이는 앞에서 살펴본 A에 해당한다. 그런 후, 102단계에서 입력된 대상 값 A의 최상위 비트의 위치를 POS 변수에 저장한다. 여기서, POS 변수는 비트 위치(bit position)를 의미한다. 최초 모듈러 3 연산을 위한 값을 수신한 후 POS 변수가 설정되면, 104단계에서 입력된 이진수 A 값 중에서 LSB에서부터 연속적인 2개의 "1"을 모두 "0"으로 치환한다. 즉, LSB에서부터 검사하여 "11"의 패턴이 존재하면, "11"의 패턴마다 "00"의 값으로 치환한다. 이러한 치환 과정이 완료되면, 106단계로 진행하여 이진수 A 값에서 가장 큰 가중치를 갖는 1의 위치를 POS 변수에 저장한다. 이후, 108단계에서 POS 값이 1보다 큰가를 검사한다. 108단계의 검사결과 POS의 값이 1보다 큰 경우 110단계로 진행하고, 그렇지 않은 경우 120단계로 진행한다. 여기서, POS의 값이 1보다 큰가를 검사하는 것은 모듈러 3 연산에 의해 계산된 값의 판정이 가능한가를 검사하기 위함이다. 즉, POS의 값이 1보다 크지 않다는 것은 POS의 값이 1이거나 또는 0인 경우이다. 따라서 마지막 2비트에 1이 존재하거나 존재하지 않는 경우가 된다. 이와 같이 마지막 2비트만 남게 되면, 모듈러 3 연산에 의한 결과를 도출할 수 있다.
그러면, 먼저 110단계로 진행하는 경우를 살펴보기로 한다. 110단계로 진행하면, B 값을 모두 0으로 초기화하고, 새롭게 설정할 B 값에 POS-1의 위치와 POS-2의 위치에 1의 값을 설정한다. 즉, 앞에서 설명한 바와 같이 B 값을 치환된 값에서 가장 큰 가중치를 갖는 1의 위치 다음에 연속적인 두 개의 값을 1로 설정하는 것이다. 이와 같이 생성된 B 값은 A 값보다 작은 3의 배수 값이 된다. 따라서 112 단계에서는 A 값에서 임의의 3의 배수로 생성된 B 값을 뺀다. 이와 같이 A 값에서 임의의 3의 배수인 B 값을 빼더라도 A 값을 모듈러 3 연산하는 경우와 동일한 결과를 가지므로, 결과 값에 영향이 없게 된다. 이와 같이 계산된 값을 다시 A 값으로 결정한다. 이후, 106단계로 진행하여 상술한 과정을 되풀이 하게 된다.
한편, 108단계에서 120단계로 진행하면, 이미 LSB쪽의 2비트에만 1이 존재하거나 존재하지 않는 경우이므로, A 값이 0x00 또는 0x03인가를 검사한다. 즉, 120단계에서는 A 값이 3의 배수에 해당하는 값인가를 검사하는 것이다. 상기 검사결과, A 값이 0x00 또는 0x03 중 하나를 만족하면, 122단계로 진행하여 모듈러 3 연산 결과 값을 0으로 출력한다. 그러나 120단계의 검사결과 A 값이 0x00 또는 0x03가 아닌 경우 130단계로 진행하여 A 값이 0x01인가를 검사한다. A 값이 0x01를 만족하면, 132단계로 진행하여 모듈러 3 연산 결과 값을 1로 결정한다. 그러나 A 값이 0x01를 만족하지 않는다면, 134단계로 진행하여 모듈러 3 연산 결과 값을 2로 결정한다.
이상의 과정을 예를 들어 88의 값을 가지는 8비트 값을 이용하여 다시 살펴보기로 한다. 십진수 88은 이진수 "01011000"이 된다. 그러면, 이와 같은 값이 입력되면, POS의 값은 102단계에서 7로 설정된다. 그리고 104단계에서 연속된 1의 값을 "00"으로 치환한다. 위 값에서 연속된 11의 값은 네 번째 및 세 번째 위치가 된다. 이와 같은 치환 과정이 이루어지면, 결과 값은 "01000000"이 된다. 그리고 106단계에서 가장 큰 가중치를 갖는 1의 위치는 6번째 위치가 된다. 이 값을 POS 변수에 저장하고, 108단계에서 POS 값이 1보다 큰 경우이므로 110단계로 진행하여 B 값을 모두 0으로 초기화한 후 POS-1의 위치와 POS-2의 위치를 1로 치환한 값을 B의 값으로 생성한다. 즉, 110단계에서 생성된 B 값은 "00110000"이 된다. 그리고 112단계로 진행하여 A 값에서 B의 값을 빼는 감산을 수행한다. 이와 같이 두 값의 차를 계산한 결과는 "00010000"이 된다. 따라서 112단계에서는 계산한 결과 값이 다시 A 값이 된다. 이후, 106단계로 진행하여 A 값에서 가장 큰 가중치를 갖는 1의 위치를 다시 POS 값으로 갱신한다. 이때 POS 값은 4가 된다. 그리고 108단계로 진행하면, 위에서 생성된 POS 값은 4이므로 1보다 큰 값이다. 따라서 다시 110단계로 진행하여 B 값을 상술한 방법에 따라 "00001100"으로 생성한다. 그리고 112단계에서 두 값의 차를 계산하여 "00000100"을 얻을 수 있으며, 이 값이 다시 A 값이 된다. 그러면, 다시 106단계에서 POS인 2로 설정하며, 108단계의 비교 과정을 통해 110단계로 진행한다. 110단계에서는 다시 B 값을 "00000011"을 설정한다. 그리고 112단계에서 A 값에서 B 값의 차를 계산하면, "00000001"이 되고, 이를 다시 A 값으로 결정한다. 이후, 106단계에서 POS는 0 값을 가지게 되며, 108단계에서 120단계로 진행하게 된다. 그러면, 120단계에서 A가 0x00 또는 0x03이 아니므로 130단계로 진행하고, 130단계의 검사결과 A 값은 0x01의 값을 가지게 되므로 132단계로 진행하여 모듈러 3 연산 결과를 1로 도출할 수 있게 된다.
이를 다시 검증하여 살펴보면, "88 = 3*27 + 1"이 된다. 따라서 모듈러 3 연산 결과가 1이 됨을 확인할 수 있다.
이상의 실시 예에서는 POS 값의 위치에서 바로 아래에 한 쌍의 1을 배치하여 검사하는 것만을 설명하였다. 그러나 비트 수가 큰 경우 위와 같은 방법으로 쌍의 1을 여러 개 배치할 수도 있다. 이를 다시 88의 예를 들어 설명하면, 아래와 같다. 먼저, 88을 이진수로 표기하면, "01011000"이 된다. 따라서 연속된 11의 위치를 모두 치환하면, "01000000"이 된다. 이후, POS 값은 6이 되며, 새로운 B 값을 생성할 때, POS 값을 2로 나눈 값만큼 연속한 쌍의 "1"을 배치할 수 있다. 즉, POS 값이 6이므로 이를 2로 나눈 값은 3이 된다. 따라서 연속된 쌍의 "1"의 값은 3개가 되므로 새롭게 생성되는 B 값은 "00111111"과 같이 생성할 수 있다. 이와 같이 생성된 값은 "00110000"과 "00001100"과 "00000011"의 합이며, 모두 3의 배수이므로, "00111111"은 3의 배수가 된다. 따라서 B의 값을 위와 같이 생성하면 한 번의 뺄셈으로 결과를 도출할 수 있다.
만일, POS 값이 홀수인 경우는
Figure 112012012597494-pat00002
연산을 이용할 수 있다. 여기서,
Figure 112012012597494-pat00003
Figure 112012012597494-pat00004
를 넘지 않는 최대 정수를 의미한다. 따라서 POS 값이 5인 경우는 연속한 "1"의 쌍은 2가 될 수 있다. 이를 예를 들어 설명하면, 8비트로 이루어진 2진수가 입력되고, 그 값이 46인 경우 2진수는 "00101110"이 된다. 위 값을 앞에서 설명한 바와 같이 MSB에서부터 연속된 1의 쌍이 존재할 때 이를 0으로 치환하면, "00100010"이 되며, 이 값은 A 값이 된다. 여기서, POS 값은 5가 된다. 따라서 B 값의 결정 시 "11"의 값은 위 계산과 같이 2 쌍의 "11"을 연속하여 생성할 수 있다. 즉, B 값은 "00011110"이 된다. 그런 후, "A - B"의 연산 결과는 "00000100"이 되며, 이 값은 다시 A 값이 된다. 그러면, POS 값은 3이 되므로 상기 연산을 수행하면, "11"의 쌍은 하나만 존재하게 되며, 이를 이용하여 다시 B 값을 생성하면, "00000011"이 된다. 따라서 "A - B" 연산을 수행하면, "00000001"이 되며, 이 값이 A 값이 된다. 따라서 POS는 0 값이 되며, 판정을 수행하면, 모듈러 3 연산 결과는 1이 된다.
이상에서 설명한 두 번째 방법은 모듈러 연산을 수행해야 하는 비트의 수가 많은 경우 뺄셈 연산을 줄일 수 있는 이점이 있다.
도 2는 본 발명의 일 실시 예에 따른 모듈러 3 연산 장치의 블록 구성도이다.
다중화기(212)는 모듈러 연산 대상 값과 본 발명에 따라 갱신된 대상 값을 입력으로 하며, 후술될 제어기(211)의 제어에 의해 입력 값들 중 하나의 값을 출력하게 된다. 여기서, 다중화기(212)는 스위치로 대체될 수 있다. 즉, 모듈러 연산 대상 값과 본 발명에 따라 갱신된 대상 값 중 하나와 연결되도록 하는 스위치로 대체하여 구성할 수도 있다. 제1메모리(213)는 모듈러 연산 대상 값을 저장하며, 본 발명에 따라 갱신된 대상 값 및 모듈러 연산 대상 값 중 일부 치환된 값을 저장할 수 있는 영역을 가진다. 여기서, 제1메모리(213)는 레지스터 또는 버퍼 등 다양한 소자를 이용할 수 있다. POS 값 저장부(215)는 본 발명에 따라 모듈러 연산 대상 값에서 가장 큰 가중치를 갖는 1의 값의 위치 정보를 저장하는 메모리이다. 즉, POS 값은 최상위 1의 비트가 존재하는 위치 값이다. 그리고 제2메모리(214)는 본 발명에 따라 모듈러 3 연산 수행 시 모듈러 연산 대상 값과 POS 값으로부터 계산되는 3의 배수 값을 저장하기 위한 메모리이다. 제2메모리(214)에서 출력된 값은 가산기(216)에서 제1메모리(213)에 저장된 값과 차를 계산하여 다중화기(212)로 입력된다. 제어기(211)는 본 발명에 따른 POS 값 및 제2메모리(214)에 저장될 값을 생성하며, 제1메모리(213)에 저장된 값에서 치환 동작을 수행하고, 다중화기(212)의 출력 경로를 제어한다. 만일, 다중화기(212)를 스위치로 대치하는 경우 제어기(211)는 스위치의 연결 경로를 제어한다.
그러면, 이상의 구성에 따른 동작을 첫 번째 실시 예와 두 번째 실시 예로 구분하여 살펴보기로 한다. 먼저, 첫 번째 실시 예에 따른 방법을 살펴본다.
모듈러 연산 대상 값이 다중화기(212)로 입력될 때, 또는 그 직전에 제어기(211)는 모듈러 연산 대상 값이 입력됨을 인지하게 된다. 따라서 제어기(211)는 다중화기(212)의 출력, 즉 모듈러 연산 대상 값의 출력이 제1메모리(213)로 입력되도록 제어한다. 이상의 과정은 도 1의 100단계에 해당한다. 그리고 이와 같이 제1메모리(213)에 모듈러 연산 대상 값이 입력되면, 제어기(211)는 POS 값을 설정하고, 이를 POS 값 저장부(215)에 저장한다. 이는 도 1의 102단계에 해당한다. 그런 후, 제어기(211)는 제1메모리(213)에 저장된 대상 값을 MSB로부터 연속된 1이 존재하면, 이를 한 쌍 단위로 "00"으로 치환한다. 이는 도 1의 104단계에 해당한다. 그런 후, 제어기(211)는 제1메모리(213)에 저장된 대상 값에서 가장 큰 가중치를 갖는 1의 위치 값을 찾아 POS 저장부(215)에 저장한다. 이는 도 1의 106단계에 해당한다. 그리고 제어기(211)는 제2메모리(214)에 저장된 값에서 POS-1의 위치와 POS-2의 위치 값을 1로 치환한다. 이는 도 1의 110단계에 해당한다. 그런 후, 제1메모리(213)에 저장된 값에서 제2메모리(214)에 저장된 값을 가산기(216)를 제어하여 뺄셈 연산되도록 한다. 여기서, 가산기(216)를 뺄셈기로 구현할 수도 있고, 제2메모리(214)에서 출력되는 값을 2의 보수를 적용한 값으로 가산되도록 구성할 수도 있다. 이러한 뺄셈 연산은 도 1의 112단계에 해당한다.
상기와 같이 뺄셈 연산이 이루어진 결과는 다시 다중화기(212)로 입력된다. 그러면, 제어기(211)는 다중화기(212)의 입력 중 가산기(216)로부터 입력된 값이 제1메모리(213)에 저장되도록 제어한다. 이후, 제어기(211)는 제1메모리(213)에 저장된 값을 이용하여 다시 POS 값을 결정하고, 뺄셈 연산을 수행하거나 또는 판정을 수행한다. 여기서, 제어기(211)에서 이루어지는 판정은 120 단계 ~ 134 단계에 해당하는 과정이 된다.
다음으로, 두 번째 실시 예에 따른 경우에 대하여 살펴보기로 한다.
제어기(211)는 모듈러 연산 대상 값이 다중화기(212)로 입력될 때, 또는 그 직전에 모듈러 연산 대상 값이 입력됨을 인지하게 된다. 따라서 제어기(211)는 다중화기(212)의 출력, 즉 모듈러 연산 대상 값의 출력이 제1메모리(213)로 입력되도록 제어한다. 그리고 제1메모리(213)에 모듈러 연산 대상 값이 입력되면, 제어기(211)는 POS 값을 설정하고, 이를 POS 값 저장부(215)에 저장하며, 제1메모리(213)에 저장된 대상 값을 MSB로부터 연속된 1이 존재하면, 이를 한 쌍 단위로 "00"으로 치환한다. 그런 후, 제어기(211)는 제1메모리(213)에 저장된 대상 값에서 가장 큰 가중치를 갖는 1의 위치 값을 찾아 POS 저장부(215)에 저장한다.
그리고 제어기(211)는 본 발명의 두 번째 실시 예에 따라 제2메모리(214)에서 저장된 값을 POS-1의 위치부터 몇 쌍의 값을 1로 치환할 것인가를 계산한다. 즉, 앞에서 상술한 바와 같이
Figure 112012012597494-pat00005
연산을 수행하여 1로 치환할 쌍의 개수를 결정한 후 "11" 단위로 결정된 쌍의 수만큼 연속하여 LSB 방향으로 치환을 수행한다. 그런 후, 제1메모리(213)에 저장된 값에서 제2메모리(214)에 저장된 값을 가산기(216)를 제어하여 뺄셈 연산되도록 한다. 여기서, 뺄셈 연산의 구성은 앞에서 설명한 바와 같이 구성할 수 있다.
상기와 같이 뺄셈 연산이 이루어진 결과는 다시 다중화기(212)로 입력된다. 그러면, 제어기(211)는 다중화기(212)의 입력 중 가산기(216)로부터 입력된 값이 제1메모리(213)에 저장되도록 제어한다. 이후, 제어기(211)는 제1메모리(213)에 저장된 값을 이용하여 다시 POS 값을 결정하고, 뺄셈 연산을 수행하거나 또는 판정을 수행한다. 두 번째 실시 예의 경우는 많은 비트 값이 입력되는 경우에 한 번 또는 두 번의 뺄셈 연산만으로 모듈러 3 연산이 완료되므로 빠른 연산이 가능한 이점이 있다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
도 1은 본 발명의 바람직한 실시 예에 따라 모듈러 3 연산을 위한 제어 흐름도,
도 2는 본 발명의 일 실시 예에 따른 모듈러 3 연산 장치의 블록 구성도.

Claims (11)

  1. 이진수의 모듈러 3 연산 장치에서의 모듈러 3 연산 방법에 있어서,
    모듈러 3 계산을 위한 대상 값이 입력되면, 이진수 값 중에서 MSB로부터 연속된 두 개의 1이 존재하는가를 검사하여 연속된 두 개의 1이 존재할 때마다 두 개의 1을 모두 0으로 치환하여 제1이진수를 생성하는 과정과,
    상기 제1이진수를 모듈러 3 연산하는 과정과,
    상기 모듈러 3 연산의 결과를 판정하는 과정
    을 포함하는 모듈러 3 연산 방법.
  2. 제 1 항에 있어서, 상기 모듈러 3 연산하는 과정은,
    상기 제1이진수에서 가장 가중치가 큰 "1"의 위치 값을 검사하여 저장하는 단계와,
    상기 위치 값이 하위 2비트 이하인 경우 상기 모듈러 3 연산의 결과를 판정하는 과정으로 진행하는 단계와,
    상기 위치 값이 하위 2비트보다 큰 위치인 경우 상기 제1이진수와 동일한 비트수를 갖는 제2이진수를 모두 0으로 설정하고, 상기 제1이진수의 위치 값보다 1 작은 위치부터 LSB 방향으로 연속해서 한 쌍의 1이 되도록 상기 제2이진수를 갱신하는 단계와,
    상기 제1이진수에서 상기 제2이진수의 차를 계산하고, 상기 차 계산 결과를 상기 제1이진수로 설정한 후 상기 위치 값을 검사하여 저장하는 단계로 진행하는 단계
    를 포함하는, 모듈러 3 연산 방법.
  3. 제 2 항에 있어서, 상기 모듈러 3 연산의 결과를 판정하는 과정은,
    상기 제1이진수의 값 중에서 하위 2비트만으로 모듈러 3 연산의 결과를 판정하는, 모듈러 3 연산 방법.
  4. 제 1 항에 있어서, 상기 모듈러 3 연산하는 과정은,
    상기 제1이진수에서 가장 가중치가 큰 "1"의 위치 값을 검사하여 저장하는 단계와,
    상기 위치 값이 하위 2비트 이하인 경우 상기 모듈러 3 연산의 결과를 판정하는 과정으로 진행하는 단계와,
    상기 위치 값이 하위 2비트보다 큰 위치인 경우 상기 제1이진수와 동일한 비트수를 갖는 제2이진수를 모두 0으로 설정하는 단계와,
    상기 위치 값을
    Figure 112012012597494-pat00006
    연산하여 상기 제1이진수의 위치 값보다 1 작은 위치부터 LSB 방향으로 연속한 "1"의 쌍의 개수를 결정하고, 상기 제2이진수를 상기 위치 값보다 1 작은 위치에서부터 결정된 쌍의 개수만큼 연속된 1의 쌍이 되도록 상기 제2이진수를 갱신하는 단계와,
    상기 제1이진수에서 상기 제2이진수의 차를 계산하고, 상기 차 계산 결과를 상기 제1이진수로 설정한 후 상기 위치 값을 검사하여 저장하는 단계로 진행하는 단계를 포함하며,
    여기서
    Figure 112012012597494-pat00007
    Figure 112012012597494-pat00008
    를 넘지 않는 최대 정수인, 모듈러 3 연산 방법.
  5. 제 4 항에 있어서, 상기 모듈러 3 연산의 결과를 판정하는 과정은,
    상기 제1이진수의 값 중에서 하위 2비트만으로 모듈러 3 연산의 결과를 판정하는, 모듈러 3 연산 방법.
  6. 이진수의 모듈러 3 연산 장치에 있어서,
    모듈러 3 계산을 위한 대상 값과 갱신된 값을 입력으로 하여 두 값 중 하나의 값을 출력하는 선택 수단과,
    상기 선택 수단의 출력을 저장하는 제1메모리와,
    상기 제1메모리에 저장된 값과 동일한 비트의 값을 저장할 수 있는 제2메모리와,
    상기 제1메모리와 상기 제2메모리의 값의 차를 계산하는 연산기와,
    상기 제1메모리에 저장된 값을 MSB부터 연속된 1의 값이 존재할 시 연속된 한 쌍 단위로 모두 0으로 치환하도록 제어하며, 상기 제1메모리에 저장된 값 중 최상위에 존재하는 1의 위치 정보를 추출하고, 상기 위치 정보가 하위 2비트보다 큰 경우 상기 제2메모리의 값을 모두 0이 되도록 제어하고, 상기 위치 값보다 1 작은 위치로부터 연속된 한 쌍이 1의 값을 갖도록 상기 제2메모리의 값을 치환하며, 상기 연산기의 동작을 제어하고, 상기 위치 정보가 하위 2비트 이하인 경우 상기 제1메모리에 저장된 값을 하위 2비트를 이용하여 판정하는 제어기
    를 포함하는 모듈러 3 연산 장치.
  7. 제 6 항에 있어서, 상기 선택 수단은,
    스위치 또는 다중화기로 구현한, 모듈러 3 연산 장치.
  8. 제 6 항 또는 제 7 항에 있어서,
    상기 위치 값을 저장하는 위치값 저장부
    를 더 포함하는 모듈러 3 연산 장치.
  9. 이진수의 모듈러 3 연산 장치에 있어서,
    모듈러 3 계산을 위한 대상 값과 갱신된 값을 입력으로 하여 두 값 중 하나의 값을 출력하는 선택 수단과,
    상기 선택 수단의 출력을 저장하는 제1메모리와,
    상기 제1메모리에 저장된 값과 동일한 비트의 값을 저장할 수 있는 제2메모리와,
    상기 제1메모리와 상기 제2메모리의 값의 차를 계산하는 연산기와,
    상기 제1메모리에 저장된 값을 MSB부터 연속된 1의 값이 존재할 시 연속된 한 쌍 단위로 모두 0으로 치환하도록 제어하며, 상기 제1메모리에 저장된 값 중 최상위에 존재하는 1의 위치 정보를 추출하고, 상기 위치 정보가 하위 2비트보다 큰 경우 상기 제2메모리의 값을 모두 0이 되도록 제어하고, 상기 위치 값을
    Figure 112012012597494-pat00009
    연산하여 상기 제1메모리의 위치 값보다 1 작은 위치부터 LSB 방향으로 연속한 "1"의 쌍의 개수를 결정하고, 상기 제2메모리에 상기 위치 값보다 1 작은 위치에서부터 결정된 쌍의 개수만큼 연속된 1의 쌍이 되도록 갱신을 제어하며, 상기 연산기의 동작을 제어하고, 상기 위치 정보가 하위 2비트 이하인 경우 상기 제1메모리에 저장된 값을 하위 2비트를 이용하여 판정하는 제어기를 포함하며,
    여기서
    Figure 112012012597494-pat00010
    Figure 112012012597494-pat00011
    를 넘지 않는 최대 정수인, 모듈러 3 연산 장치.
  10. 제 9 항에 있어서, 상기 선택 수단은,
    스위치 또는 다중화기로 구현된, 모듈러 3 연산 장치.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 위치 값을 저장하는 위치값 저장부
    를 더 포함하는 모듈러 3 연산 장치.
KR1020080125157A 2008-12-10 2008-12-10 모듈러 3 연산 장치 및 방법 KR101179932B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020080125157A KR101179932B1 (ko) 2008-12-10 2008-12-10 모듈러 3 연산 장치 및 방법
EP09177691A EP2196900A1 (en) 2008-12-10 2009-12-02 Modulo 3 reduction
US12/630,150 US20100146021A1 (en) 2008-12-10 2009-12-03 Modular-3 calculation apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080125157A KR101179932B1 (ko) 2008-12-10 2008-12-10 모듈러 3 연산 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20100066730A KR20100066730A (ko) 2010-06-18
KR101179932B1 true KR101179932B1 (ko) 2012-09-07

Family

ID=41479034

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080125157A KR101179932B1 (ko) 2008-12-10 2008-12-10 모듈러 3 연산 장치 및 방법

Country Status (3)

Country Link
US (1) US20100146021A1 (ko)
EP (1) EP2196900A1 (ko)
KR (1) KR101179932B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4190893A (en) 1977-11-17 1980-02-26 Burroughs Corporation Modular modulo 3 module
JPS63145542A (ja) 1986-07-03 1988-06-17 Nec Corp モジュロw回路

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644524A (en) * 1993-11-30 1997-07-01 Texas Instruments Incorporated Iterative division apparatus, system and method employing left most one's detection and left most one's detection with exclusive or
US5751696A (en) * 1996-01-02 1998-05-12 Lucent Technologies Inc. Multiplexed-communications network having mixed protection against faults and errors
FR2786579A1 (fr) * 1998-11-30 2000-06-02 St Microelectronics Sa PROCEDE ET DISPOSITIF DE CALCUL BINAIRE DE RESTE D'UNE DIVISION PAR UN FACTEUR CORRESPONDANT A (2n-1)
US6529716B1 (en) * 2000-01-11 2003-03-04 Skyworks Solutions, Inc. RF transmitter with extended efficient power control range
US7023544B2 (en) * 2000-10-30 2006-04-04 Sru Biosystems, Inc. Method and instrument for detecting biomolecular interactions
US7497992B2 (en) * 2003-05-08 2009-03-03 Sru Biosystems, Inc. Detection of biochemical interactions on a biosensor using tunable filters and tunable lasers
US7916812B2 (en) * 2005-03-10 2011-03-29 Qualcomm Incorporated Determining modulo count in sleep capable system
US20070018718A1 (en) * 2005-06-20 2007-01-25 National Sun Yat-Sen University Microwave transmitter and the method for increasing envelope bandwidth
JP4671133B2 (ja) * 2007-02-09 2011-04-13 富士フイルム株式会社 画像処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4190893A (en) 1977-11-17 1980-02-26 Burroughs Corporation Modular modulo 3 module
JPS63145542A (ja) 1986-07-03 1988-06-17 Nec Corp モジュロw回路

Also Published As

Publication number Publication date
KR20100066730A (ko) 2010-06-18
US20100146021A1 (en) 2010-06-10
EP2196900A1 (en) 2010-06-16

Similar Documents

Publication Publication Date Title
JP5456766B2 (ja) プログラム可能なプロセッサにおける随意選択的なガロア域計算の実行
US20090184695A1 (en) Method and system for rms computation on digitized samples
US20190146756A1 (en) Segment divider, segment division operation method, and electronic device
US20200117426A1 (en) Efficient modulo calculation
KR100398859B1 (ko) 데이터 연산 처리 장치
CN102004627B (zh) 乘法舍入实现方法和装置
US7400688B2 (en) Path metric normalization
KR101794807B1 (ko) 몽고메리 역원 계산 장치 및 이를 이용한 몽고메리 역원 계산 방법
US6662201B1 (en) Modular arithmetic apparatus and method having high-speed base conversion function
Itabashi et al. Efficient modular polynomial multiplier for NTT accelerator of Crystals-Kyber
KR101179932B1 (ko) 모듈러 3 연산 장치 및 방법
US10387492B2 (en) Information processing system, information processing method, and program
CN100517214C (zh) 一种实现二进制多项式运算的硬件配置方法及硬件***
KR20130128701A (ko) 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
JPWO2011036746A1 (ja) 演算装置
US20210141601A1 (en) Digital calculation processing circuit
KR20140077675A (ko) 디지털 전치 왜곡 장치
US7472147B2 (en) Random number string output apparatus, random number string output method, program, and information recording medium
CN113253972A (zh) 一种lac中稀疏多项式乘法加速器的fpga实现方法
JP3953397B2 (ja) リードソロモン符号化回路およびリードソロモン復号化回路
Kukade et al. A Novel Parallel Multiplier for 2's Complement Numbers Using Booth's Recoding Algorithm
KR101753162B1 (ko) 이진수 연산의 선행 제로 비트수 계산방법 및, 그 장치
JP4293665B2 (ja) 剰余乗算装置
CN116822537A (zh) 用于随机计算的多加数加法电路
JP2013069000A (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
LAPS Lapse due to unpaid annual fee