KR100324312B1 - 레머알고리즘을이용한난수발생기 - Google Patents
레머알고리즘을이용한난수발생기 Download PDFInfo
- Publication number
- KR100324312B1 KR100324312B1 KR1019980041593A KR19980041593A KR100324312B1 KR 100324312 B1 KR100324312 B1 KR 100324312B1 KR 1019980041593 A KR1019980041593 A KR 1019980041593A KR 19980041593 A KR19980041593 A KR 19980041593A KR 100324312 B1 KR100324312 B1 KR 100324312B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- carry
- output
- sum
- generator
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- 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/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
- G06F7/586—Pseudo-random number generators using an integer algorithm, e.g. using linear congruential method
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
본 발명은 난수발생기(random number generator)에 있어서, 특히 레머 난수발생기(Lehmer random number generator)를 보다 빠른 하드웨어로 구현하는 것에 관한 것으로, 본 발명은 30번째 비트발생기의 출력캐리를 0번째 비트발생기로 입력시키지 않고, 31개의 비트발생기에서 각각 발생된 최종합에 상기 최종출력캐리를 가산하여 난수를 발생시키도록 하는 레머 알고리즘을 이용한 난수발생기를 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위하여 본 발명은 총 31비트의 합비트를 발생시키기 위하여 0부터 30번째의 합비트를 각각 발생시키는 31개의 비트발생기로 구성된 비트발생부와; 상기 비트발생부의 최종 비트발생기로부터 출력되는 복수개의 최종출력캐리를 입력받아 3비트 신호로 변환하여 출력하는 캐리비트 변환부와; 상기 비트발생부로부터 발생된 31비트의 합비트와 상기 캐리비트 변환부로부터 출력되는 3비트의 출력캐리를 가산하여 31비트의 난수를 발생시키는 난수발생부를 포함하여 구성된다.
이와 같은 본 발명은 31비트 난수를 구하는데 있어서, 최종 비트발생기에서 발생된 최종 출력캐리와 각각의 비트발생기에 의해 발생된 31비트의 합비트를 가산하여 난수를 발생시키므로 난수를 구하는 경로가 짧아져 그 시간이 단축되는 효과가 있다.
Description
본 발명은 난수발생기(random number generator)에 관한 것으로, 특히 레머 난수발생기(Lehmer random number generator)를 보다 빠른 하드웨어로 구현한 것이다.
일반적으로, 승산 선형 합동식 의사난수 발생기(Mutiplicative linear congruential pseudorandom number generator)는 많은 소프트웨어 루틴을 위해 가장 많이 사용된다. 여기서, 난수(random number)란 이미 알고 있는 어떤 수의 집합에서 어느 것이나 같은 출현 확률을 갖도록 선택되는 수를 말하는데, 이를 컴퓨터에 발생시키면 커다란 주기를 가지게 되어 이를 의사난수(pseudorandom number)라 한다.
이와 같은 난수를 발생시키기 위한 난수발생기는 컴퓨터 프로그래밍(computer programming), 시뮬레이션(simulation), 및 네트워크 라우팅(network routing) 등의 많은 분야에서 사용되어 지며, 그 중에서 상기 승산식 선형 합동법을 이용한 레머 발생기(Lehmer generator)가 대표적으로 사용된다.
A.P.Paplinski 및 N. Bhattacharjee 에 의해 제시된 "Hardware implementation of the Lehmer random number generator"(IEE Proc.-Compute. Digit. Tech., Vol.143, p93-95, January 1996) 이라는 논문을 토대로 하여 레머 난수발생기의 원리와 이를 하드웨어로 구현한 종래의 기술을 설명한다.
레머 발생기는 난수 발생기를 소프트 웨어로 구현한 대중적인 방법으로, 그 원리는 다음과 같다.
먼저, 정수의 의사난수열 z(1), z(2), z(3), ....의 발생은 다음의 (식1)과 같이 표현된다.
여기서, 발생 함수 f(·)는 다음의 (식 2)와 같이 정의된다.
이때, 상기 레머 발생기를 위해 Mersenne primeM= 231-1 이고,a=75=16807, 즉 15비트의 2진수a 14:0= {1 0 0 0 0 0 1 1 0 1 0 0 1 1 1}로 나타낼 수 있고, 난수z ( n )은 31비트로 표현되는 정수이다.
이제, 상기 (식 2)와 같이 2진수 곱셈법mod M을 이용하여 이전의 난수z로부터 다음의 난수r을 발생시키기 위한 알고리즘의 병렬 버전(parallelised version)을 고려한다.
수 알고리즘의 하드웨어 구현을 설명할 때, 수와 그 수의 2진수를 구별하는 것이 편리할 때가 있다.a가 정수일 때,a의 (n+1)-비트 2진수는a n:0 으로 표기할 것이다. 행렬 표기식을 사용하면a는a의 2진수인a n:0 의 내적과 2의 가중값(weight)w n:0 벡터로 다음의 (식 3)과 같이 나타낼 수 있다.
여기서,a n:0 = { a n a n-1 ... a 1 a 0 }는a {a ∈ {0,1)}의 수 표시(nunmeral)이고,w n:0 = { 2 n 2 n-1 ... 2 1 2 0 }은 2진 가중값의 벡터이다.
상기의 표기식을 사용하면, 수의 곱셈식은 승수의 행렬곱과 피승수의 실버스터 종결 행렬(Sylvester resultant matrix)로 나타낼 수 있다. 만약 m-비트 피승수가z m-1:0 = { z m-1 z m-2 ... z 1 z 0 }라면, 두 수a와z의 곱은 다음의 (식 4)와 같이 2진수 행렬식으로 표현될 것이다.
여기서,(z) n 은 (n+1)×(n+m) 실버스타 종결 행렬(또는 컨벌루션 행렬로 알려진)이고, 이것은 쉬프트된 수z m-1:0 로부터 다음의 (식 5)와 같은 방식으로 형성된다.
여기서, 상기 대괄호는 상기 종결행렬을 표시하는데 사용되었고, 상기 종결식에서의 0 의 값은 적절한 삼각형을 이룬다.
상기 레머 발생기의 경우,m = 31, n = 14이므로, 상기 (식 4)에서 수a 14:0 은 1×15 크기이고, 상기 종결행렬(z)n의 크기는 15×45 이며, 결과적으로a와z의 곱은 1 ×45 수로 표현된다.
일반적으로, 상기 (식 4)는 두 수의 곱의 병렬 표현으로 생각되어 질 수 있다. 상기 종결식의 각 행(row)은 승수의 각각의 자리수에 의해 곱해진 쉬프트된 수z m-1:0 을 나타내고, 상기 종결식의 각 열(column)은 의사난수 결과를 제공하기 위하여 더해진다.
상기 알고리즘의 다음 단계는a·z를M = 2 31 -1 으로 나눈 나머지를 결정하는 것으로, 즉mod M연산을 수행하는 것이다. 상기 곱을 다음의 (식 6)과 같이 전개하기 위하여, 상기 종결행렬은 다음의 두 개의 종속행렬, 즉 다음의 (식 7)과 같이, 좌측의 (n+1)×n 크기의 C 와, 우측의 (n+1)×m 크기의 D 로 나뉘어 진다. 여기서q는 몫이고,r은 나머지이다.
그리고, 상기 (식 4)와 (식 6)을 조합하면 다음의 (식 8)을 얻을 수 있다.
여기서,w n+m-1:0 = w n-1:0· 2 m + w m-1:0 라는 관계를 사용하였다. 임의의 정수q를 고려하여 생각하면 다음의 (식 9)와 같으므로,
상기 (식 1)은 다음의 (식 10)과 같이 표현할 수 있다.
따라서, 최종적으로 다음의 (식 11)과 같은 결과를 얻을 수 있다.
여기서, 상기 E 는 다음의 (식 12)와 같이 수 zm-1:0으로부터 (n+1)×m 순환 컨벌루션 행렬로 형성된다.
이때, 만약 승수a가a 14 , a 8 , a 7 , a 5 , a 2 , a 1 , a 0 의 비트만이 '1'인 2진수라는 것을 고려하면, 상기 (식 11)은 다음의 (식 13)와 같이 쓸 수 있다.
이때,(1 1 1) 2 = (1 0 0 -1) 2 로 표현할 수 있으므로, 상기 승수a에서 3개의 열은 적절한 위치에서 +1 과 -1 이 대치될 수 있다. 따라서, 최종적으로 상기 구현식은 다음의 (식 14)와 같이 표현된다.
여기서, 상기 E 값의 행렬식은 다음의 (식 15)와 같이 나타낼 수 있다.
따라서, 의사난수를 발생시키기 위한 레머 알고리즘은, 상기 (식 14)와 같이, 여섯 개의 31비트수mod M을 더하거나 빼는 문제로 줄일 수 있었다. 상기 각각의 수는 적절히 순환된 현재의 난수z이다.
이제, 여섯 개의 31비트수mod M의 가산 및 감산을 설명한 상기 (식 14)의 하드웨어 구현에 대하여 상세히 설명한다.
먼저,mod M연산은 두 개의 m-비트수의 가산 또는 감산 연산과 관련하여 수행된다는 것을 알아야 한다.a m-1:0 와b m-1:0 을mod M에 가산되는 두 수라 하고,s m-1:0 과d m 은 상기 가산기로부터 출력된 합과 출력캐리라 하면, 다음의 (식 16)과 같이 쓸 수 있다.
여기서, 가산 및 감산 연산을 모두 수행하기 위해서 상기 출력캐리d m ∈{-1,0,+1}이다. 만약 상기 출력캐리가 0 이 아니라면,mod M연산의 결과로부터M을감산한다. 그러면 다음의 (식 17)과 같이 주어진다.
따라서, 최종적으로 다음의 (식 18)을 얻을 수 있다.
다음으로, 상기 (식 14)의 연산은 상기 (식 15)의 행렬식에서 각 열의 수를 계산하는 문제와 같다는 것을 알 수 있다. 각각의 열에서 여섯 개의 요소들 중의 하나는 감산되고, 각 열에서의 상기 요소들의 수는 -1 에서 5 까지 가변된다.
여기서, 문제는 다음의 위치와 합 비트로 전파되는 상기 출력캐리 비트 형식에서 그 수를 표현하는 회로를 설계하는 것이다. 만약, 연산을 완결하기 위해 요구되는 입력캐리 비트의 계산을 포함하여 고려하면, 다음의 (식 19)와 같이 표현할 수 있다.
여기서,z a는 상기 행렬 (식 15)의i번째 열과 관련된 비트들이고,cj및d j 는 각각 입력 및 출력캐리이며, s4는 합 비트이다.
상기 (식 19)를 구현하는 회로는 9:5 비율로 정보의 압축을 수행한다. 9개의 입력비트와 5개의 출력비트는 모두 -2 부터 +7 까지의 수를 나타낸다. 이제, 상기 (식 19)는 3개의 입력요소들의 집합과 2개의 출력합으로 변환될 수 있다. 최종 캐리-전파 가산기를 포함하면, 상기 구현식은 다음의 (식 20)을 취한다.
도 1은 상기 (식 20)을 구현한 레머 발생기의i번째의 비트를 발생시키기 위한 비트발생기(i)를 도시한 것으로, 상기 도면에서 입력신호z a , ... ,z f 는 상기 (식 15) 행렬식의i번째 열의 각 엔트리로 대체되었고, 입력 및 출력신호c j ,d j 는c j i ,c j i+1 로 대체되었다.
상기 도면에 도시된 바와 같이, 종래 레머 발생기의 비트발생기는 상기 (식 15)의 순환 컨벌루션 행렬식에서i번째 칼럼의 제 1, 제 2 및 제 3 신호(z i +17,z i +23,z i -7)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(c 1, i +1)를 발생시키는 제 1 캐리-누적 가산기(101)와; 상기 제 1 캐리-누적 가산기(101)로부터 출력된 합과 상기i번째 칼럼의 제 4 및 제 5 신호(z i -5,z i -3)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(c 2, i +1)를 발생시키는 제 2 캐리-누적 가산기(102)와; 상기 제 2 캐리-누적 가산기(102)로부터 출력된 합으로부터 상기i번째 칼럼의 제 6 신호(z i ) 와i-1번째 비트발생기의 캐리-전파 감산기(도면에 미도시)로부터 입력되는 입력캐리비트(c 3, i )를 감산하여 1비트의 합과 1비트의 출력캐리(c 3, i +1)를 발생시키는 캐리-전파 감산기(103)와; 상기 캐리-전파 감산기(103)로부터 출력된 합과i-1번째 비트발생기의 제 1 및 제 2 캐리-누적 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c 1, i ,c 2 , i )를 가산하여 1비트의 합과 1비트의 출력캐리(c 4, i +1)를 발생시키는 제 3 캐리-누적 가산기(104)와; 상기 제 3 캐리-누적 가산기(104)로부터 출력된 합과i-1번째 비트 발생기의 제 3 캐리-누적 가산기 및 캐리-전파 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c 4, i ,c 5, i )를 가산하여 최종적으로 31비트 난수의i번째 비트(r i )와 출력캐리(c 5, i +1)를 발생시키는 캐리-전파 가산기(105)로 구성된다.
그리고, 도 2는 상기 도 1과 같이 구성된 비트발생기 31개가 병렬연결되어 31비트의 난수(r 30:0)를 발생시키는 난수발생기를 전체적으로 도시한 블록도로서, 이에 도시된 바와 같이 상기 난수발생기는 상기 (식 18)에서 설명한mod M연산을 수행하기 위하여 최상위 비트발생기(30)의 출력캐리가 최하위 비트발생기(0)로 입력된다. 상기의 도면을 참조하여 종래 난수발생기의 동작과정을 보다 상세히 설명한다.
상기 0번째 비트발생기(0) 내지 30번째 비트발생기(30)는 각각 동일한 과정으로 1비트의 데이터를 발생하여 총 31비트의 난수(r 30:0 )를 발생하므로, 대표적으로i번째의 비트발생기에 대하여 설명하기로 한다.
i번째의 비트를 발생시키기 위하여 상기i번째 비트발생기에는 상기 (식 15)의 행렬에서i번째 칼럼(열)의 6개의 엔트리가 입력되는데, 먼저 제 1 캐리-누적 가산기(101)는i번째 칼럼의 제 1, 제 2 및 제 3 신호(z i +17, z i +23, z i -7)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(c 1, i +1)를 발생시킨다.
그리고, 제 2 캐리-누적 가산기(102)는 상기 제 1 캐리-누적 가산기(101)로부터 출력된 합 비트와i번째 칼럼의 제 4 및 제 5 신호(z i -5,z i -3)를 입력받아, 상기 3개의 입력신호를 가산하여 그 결과를 1비트의 합과 출력캐리(c 2, i +1)로 발생시킨다.
캐리-전파 감산기(103)는 상기 제 2 캐리-누적 가기(102)로부터 출력된 합비트로부터 상기i번째 칼럼의 제 6 신호(z i )와 이전의 비트발생기, 즉i-1번째 비트발생기의 캐리-전파 감산기(도면에 미도시)에 의해 발생되어 입력되는 입력캐리비트(c 3, i )를 감산하여 그 결과를 1비트의 합과 출력캐리(c 3, i +1)로 발생시킨다.
그러면, 제 3 캐리-누적 가산기(104)는 상기 캐리-전파 감산기(103)로부터 출력된 합비트와i-1번째 비트발생기의 제 1 및 제 2 캐리-누적 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c 1, i ,c 2, i )를 가산하여 1비트의 합과 1비트의 출력캐리(c 4, i +1)를 발생시킨다.
마지막으로, 캐리-전파 가산기(105)는 상기 제 3 캐리-누적 가산기(104)로부터 출력된 합과i-1번째 비트발생기의 제 3 캐리-누적 가산기 및 캐리-전파 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c 4, i ,c 5 , i )를 가산하여i번째의 난수 1비트(r i )와 1비트의 출력캐리(c 5, i +1)를 발생시킨다.
이와 같은 과정으로 각각의 비트발생기(0 ~ 30)에서 1비트씩의 데이터가 발생하여 총 31비트의 난수(r 30:0 )가 발생되는 것이다.
이와 같은 종래의 난수발생기는 0번째 비트를 발생시키기 위하여 30번째 출력캐리를 0번째 입력캐리로 입력하여, 이것이 전파되어 사용되어지기 때문에 그 수행 경로가 길어져서 처리시간이 오래 걸리게 되는 단점이 있었다.
상기의 문제점을 해결하기 위하여 본 발명은 30번째 비트발생기의 출력캐리를 0번째 비트발생기로 입력시키지 않고, 31개의 비트발생기에서 각각 발생된 최종합에 상기 최종출력캐리를 가산하여 난수를 발생시키도록 하는 난수발생기를 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명은 총 31비트의 합비트를 발생시키기 위하여 0부터 30번째의 합비트를 각각 발생시키는 31개의 비트발생기로 구성된 비트발생부와; 상기 비트발생부의 최종 비트발생기로부터 출력되는 복수개의 최종출력캐리를 입력받아 3비트 신호로 변환하여 출력하는 캐리비트 변환부와; 상기 비트발생부로부터 발생된 31비트의 합비트와 상기 캐리비트 변환부로부터 출력되는 3비트의 출력캐리를 가산하여 31비트의 난수를 발생시키는 난수발생부를 포함하여 구성된다.
도 1은 종래 레머 난수발생기의i번째 비트발생기를 도시한 블록도.
도 2는 종래 31비트 레머 난수발생기의 전체적인 블록도.
도 3은 본 발명에 따른 난수발생기를 개략적으로 도시한 블록도.
도 4는 상기 도 3의 비트발생부를 보다 상세히 도시한 블록도.
도 5는 상기 도 4의i번째 비트발생기의 제 1실시예를 도시한 블록도.
도 6은 상기 도 4의i번째 비트발생기의 제 2실시예를 도시한 블록도.
도 7은 본 발명에 따른 제 1 및 제 2 실시예를 구현하여 그 성능을 비교한 도표.
***** 도면의주요부분에대한부호설명*****
200 : 비트발생부 210 : 캐리비트 변환부
220 : 난수발생부 200-0 ~ 200-30 : 비트발생기
201, 202, 204, 301~306 : 캐리-누적 가산기 203 : 캐리-전파 감산기
205 : 캐리-전파 가산기
도 3은 본 발명에 따른 31비트의 난수를 발생시키기 위한 난수발생기를 도시한 블록도이고, 도 4는 상기 도 3에서의 비트발생부(200)를 보다 상세히 도시한 블록도이다.
이에 도시된 바와 같이, 본 발명은 총 31비트의 합비트를 발생시키기 위하여 0부터 30번째의 합비트를 각각 발생시키게 순차 연결된 31개의 비트발생기(200-0 ~ 200-30)로 구성된 비트발생부(200)와; 상기 비트발생부(200)의 최종 비트발생기(200-30)로부터 출력되는 복수개의 최종출력캐리(carry)를 입력받아 3비트의 2진 신호(c2:0)로 변환하여 출력하는 캐리비트 변환부(210)와; 상기 비트발생부(200)의 각 비트발생기(200-0 ~ 200-30)로부터 각각 1비트씩 발생된 31비트(s0, s1, ... ,s30)의 합비트와 상기 캐리비트 변환부(210)로부터 출력되는 3비트의 출력캐리(c2:0)를 더하여 31비트의 난수(r30:0)를 발생시키는 난수발생부(220)로 구성된다.
이와 같이 구성된 본 발명에 따른 난수발생기의 동작과정을 상세히 설명하면 다음과 같다.
본 발명은 상기 종래의 기술에서 상세히 설명한 레머 알고리즘을 이용하여 31비트의 난수를 발생시키기 위한 레머 난수발생기의 응용이라 할 수 있다. 따라서, 상기 레머발생기의 상세한 원리는 본 발명의 기술에서는 생략하고, 필요한 부분만 발췌해서 사용하기로 한다.
먼저, 31개의 비트발생기(200-0 ~ 200-30)는 각각 1비트씩의 최종 합비트(s0, s1, ... , s30)를 발생시키는데, 이를 보다 상세히 설명하기 위해 상기 각각의 비트발생기(200-0 ~ 200-30)의 두 가지 실시예를 도 5 및 도 6에 도시하였다.
도 5는 그 일 실시예로서, 3개의 캐리-누적 가산기(201, 202, 204)와, 1개의 캐리-전파 감산기(203), 및 1개의 캐리-전파 가산기(205)로 구성한 것으로, 이는 이미 설명한 종래의 비트발생기와 동일한 구조를 가진다.
즉, 위에서 언급한 (식 14)에 따라i번째의 비트를 발생시키기 위하여 상기 (식 15)의 행렬식에서i번째 칼럼의 6개의 앤트리가 입력된다.
따라서, 도 5에 도시한 본 발명의 일실시예에 따른i번째 비트발생기는 상기 (식 15)의 순환 컨벌루션 행렬식에서i번째 칼럼의 제 1, 제 2 및 제 3 신호(z i +17, z i +23, z i -7)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(d1)를 발생시키는 제 1 캐리-누적 가산기(201)와; 상기 제 1 캐리-누적 가산기(201)로부터 출력된 합과 상기i번째 칼럼의 제 4 및 제 5 신호(z i -5,z i -3)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(d2)를 발생시키는 제 2 캐리-누적 가산기(202)와; 상기 제 2 캐리-누적 가산기(202)로부터 출력된 합으로부터 상기i번째 칼럼의 제 6 신호(z i ) 와i-1번째 비트발생기의 캐리-전파 감산기(도면에 미도시)로부터 입력되는 입력캐리비트(c1)를 감산하여 1비트의 합과 1비트의 출력캐리(d3)를 발생시키는 캐리-전파 감산기(203)와; 상기 캐리-전파 감산기(203)로부터 출력된 합과i-1번째 비트발생기의 제 1 및 제 2 캐리-누적 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c2, c3)를 가산하여 1비트의 합과 1비트의 출력캐리(d4)를 발생시키는 제 3 캐리-누적 가산기(204)와; 상기 제 3 캐리-누적 가산기(204)로부터 출력된 합과i-1번째 비트 발생기의 제 3 캐리-누적 가산기 및 캐리-전파 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c4, c5)를 가산하여i번째의 최종 합비트(si)와 1비트의 출력캐리(d5)를 발생시키는 캐리-전파 가산기(205)로 구성된다.
이와 같이 구성된 비트발생기의 동작을 보다 쉽게 설명하기 위해, 일예로 30번째 비트발생기(200-30), 즉 i = 30 인 경우에 대해 설명하기로 한다.
30번째의 비트를 발생시키기 위하여 상기 30번째 비트발생기에는 상기 (식15)의 행렬에서 30번째 칼럼(열)의 6개의 엔트리가 입력되는데, 먼저 제 1 캐리-누적 가산기(201)는 30번째 칼럼의 제 1, 제 2 및 제 3 신호(z 16, z 22, z 23)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(d1)를 발생시킨다.
그리고, 제 2 캐리-누적 가산기(202)는 상기 제 1 캐리-누적 가산기(201)로부터 출력된 합 비트와 30번째 칼럼의 제 4 및 제 5 신호(z 25,z 27)를 입력받아, 상기 3개의 입력신호를 가산하여 그 결과를 1비트의 합과 출력캐리(d2)로 발생시킨다.
캐리-전파 감산기(203)는 상기 제 2 캐리-누적 가산기(202)로부터 출력된 합 비트로부터 상기 30번째 칼럼의 제 6 신호(z 30)와 이전의 비트발생기, 즉 29번째 비트발생기의 캐리-전파 감산기(도면에 미도시)에 의해 발생되어 입력되는 입력캐리비트(c1)를 감산하여 그 결과를 합과 출력캐리(d3)로 발생시킨다.
그러면, 제 3 캐리-누적 가산기(204)는 상기 캐리-전파 감산기(203)로부터 출력된 합 비트와 29번째 비트발생기의 제 1 및 제 2 캐리-누적 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c2, c3)를 가산하여 1비트의 합과 1비트의 출력캐리(d4)를 발생시킨다.
마지막으로, 캐리-전파 가산기(205)는 상기 제 3 캐리-누적 가산기(204)로부터 출력된 합과 29번째 비트발생기의 제 3 캐리-누적 가산기 및 캐리-전파 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c4, c5)를 가산하여 30번째의 최종 합비트(s30)와 출력캐리(d5)를 발생시킨다.
이와 같은 과정으로 31개의 비트발생기(200-0 ~ 200-30)에서 각각 1비트씩의 데이터가 순차 발생하여 총 31비트의 최종 합비트(s0, s1, ... , s30)가 발생되는 것이다.
또한, 본 발명의 제 2실시예에 따른 비트발생기는, 도 6에 도시된 바와 같이, 6개의 캐리-누적 가산기(301 ~ 306)로 구성되는데, 이는 상기 도 5에서 설명한 제 1실시예에서 감산을 수행하기 위해 보다 많은 하드웨어 수가 필요하게 되므로 이를 줄이기 위해 가산기만으로 구성한 것이다.
즉, 위에서 언급한 (식 13)에 따라i번째의 비트를 발생시키기 위하여 아래의 (식 21)의 행렬식에서i번째 칼럼의 7개의 앤트리가 입력된다.
따라서, 도 6에 도시한 본 발명의 제 2실시예에 따른i번째 비트발생기는 상기 (식 21)의 순환 컨벌루션 행렬식에서i번째 칼럼의 제 1, 제 2 및 제 3신호(z i +17, z i +23, z i -7)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(d1')를 발생시키는 제 1 캐리-누적 가산기(301)와; 상기i번째 칼럼의 제 4, 제 5 및 제 6 번째 신호(z i -5,z i -2,z i -1)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(d2')를 발생시키는 제 2 캐리-누적 가산기(302)와; 상기i번째 칼럼의 제 7 신호(z i ) 와i-1번째 비트발생기의 제 1 및 제 2 캐리-누적 가산기(도면에 미도시)로부터 각각 입력되는 입력캐리비트(c1', c2')를 가산하여 1비트의 합과 1비트의 출력캐리(d3')를 발생시키는 제 3 캐리-누적 가산기(303)와; 상기 제 1, 제 2 및 제 3 캐리-누적 가산기(301, 302, 303)로부터 출력된 합비트를 가산하여 1비트의 합과 1비트의 출력캐리(d4')를 발생시키는 제 4 캐리-누적 가산기(304)와; 상기 제 4 캐리-누적 가산기(304)로부터 출력된 합과i-1번째 비트 발생기의 제 3 및 제 4 캐리-누적 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c3', c4')를 가산하여 1비트의 합과 1비트의 출력캐리(d5')를 발생시키는 제 5 캐리-누적 가산기(305)와; 상기 제 5 캐리-누적 가산기(305)로부터 출력된 합과i-1번째 비트 발생기의 제 5 및 제 6 캐리-누적 가산기(도면에 미도시)로부터 각각 입력되는 두 개의 입력캐리(c5', c6')를 가산하여 최종 합비트(si)와 1비트의 출력캐리(d6')를 발생시키는 제 6 캐리-누적가산기(306)로 구성된다.
이와 같이 구성된 비트발생기의 동작을 보다 쉽게 설명하기 위해, 일예로 0번째 비트발생기(200-0)의 경우에 대해 설명하기로 한다.
0번째의 비트를 발생시키기 위하여 상기 0번째 비트발생기(200-0)에는 상기 (식 21)의 행렬식에서 0번째 칼럼(열)의 7개의 엔트리가 입력되는데, 먼저 제 1 캐리-누적 가산기(301)는 0번째 칼럼의 제 1, 제 2 및 제 3 신호(z 17, z 23, z 24)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(d1')를 발생시킨다.
그리고, 제 2 캐리-누적 가산기(302)는 상기 0번째 칼럼의 제 4, 제 5 및 제 6 신호(z 26,z 29,z 30)를 입력받아, 상기 3개의 입력신호를 가산하여 그 결과를 1비트의 합과 출력캐리(d2')로 발생시킨다.
또한, 제 3 캐리-누적 가산기(303)는 상기 0번째 칼럼의 제 7 신호(z 0)와 두 개의 입력캐리(c1',c2')를 가산하여 그 결과를 1비트의 합과 1비트의 출력캐리(d3)로 발생시키는데, 이때, 상기 0번째 비트발생기(200-0)의 입력캐리는 모두 '0'으로 설정되어 있다.
그리고, 제 4 캐리-누적 가산기(304)는 상기 제 1, 제 2 및 제 3 캐리-누적 가산기(301, 302, 303)로부터 각각 1비트씩 출력된 3개의 합비트를 가산하여 1비트의 합과 1비트의 출력캐리(d4')를 발생시킨다.
또한, 제 5 캐리-누적 가산기(305)는 상기 제 4 캐리-누적 가산기(304)로부터 출력된 합과 두 개의 입력캐리(c3', c4')를 가산하여 1비트의 합과 1비트의 출력캐리(d5')를 발생시킨다.
마지막으로, 제 6 캐리-누적 가산기(306)는 상기 제 5 캐리-누적 가산기(305)로부터 출력된 합과 두 개의 입력캐리(c5', c6')를 가산하여 0번째의 최종 합비트(s0)와 1비트의 출력캐리(d6')를 발생시킨다.
이와 동일한 과정으로 31개의 비트발생기(200-0 ~ 200-30)에서 각각 1비트씩의 데이터가 발생하여 총 31비트의 최종 합비트(s0, s1, ... , s30)가 발생되는 것이다.
한편, 본 발명이 종래 기술과 대비되는 가장 큰 차이점은, 상기 도 4에 도시한 바와 같이, 상기 최종 비트발생기, 즉 30번째 비트발생기(200-30)에서 발생되는 복수개(상기 제 1 실시예의 경우에는 5개(d1~ d5), 제 2 실시예의 경우에는 6개(d1' ~ d6'))의 출력캐리를 0번째 비트발생기로 다시 입력시키지 않는다는 것이다.
상기 도 3에 도시된 캐리비트 변환부(210)는 상기 비트발생부(200)의 최종 비트발생기(200-30)에서 발생된 출력캐리가 최대 6을 넘지 않으므로, 상기 출력캐리를 3비트의 2진 신호(c2:0)로 변환하여 출력한다.
그러면, 난수발생부(220)는 상기 비트발생부(200)의 각각의 비트발생기(200-0 ~ 200-30)로부터 1비트씩 출력된 31비트의 최종 합비트(s0, s1, ... , s30)와 상기 캐리비트 변환부(210)에서 출력된 3비트의 캐리비트(c2:0)를 더하여 최종적으로 31비트의 난수(r30:0)를 발생시키는 것이다.
도 7은 본 발명의 제 1 및 제 2 실시예를 SUMMIT 사의 VHDL로 설계하고, FPGA로 구현하여 측정한 도표이다.
상기 도면에 도시된 바와 같이, 본 발명의 제 1 실시예 및 제 2 실시예는 모두 종래 Paplinski 및 Bhattachajee에 의해 제시된 방법에 비해 1개의 난수를 구하는데 걸리는 시간이 현격히 줄어들었음을 알 수 있다.
또한, 하드웨어 구현상에서 상기 본 발명의 두 실시예를 비교해 보면, FPGA 에서의 전체 셀 수 768개에 대해, 본 발명의 제 1 실시예는 613개로 79.80%가 사용되었고, 제 2 실시예는 566개로 73.70%가 사용되었다.
따라서, 상기 제 2 실시예는 제 1 실시예에 비해 시간상으로는 5ns 느리지만 하드웨어 구현상으로는 많은 감소를 보이므로 성능면에서 향상되었음을 알 수 있다.
상술한 바와 같이, 본 발명은 31비트 난수를 구하는데 있어서, 최종 비트발생기에서 발생된 최종 출력캐리와 각각의 비트발생기에 의해 발생된 31비트의 합비트를 가산하여 난수를 발생시키므로 난수를 구하는 경로가 짧아져 그 시간이 단축되는 효과가 있다.
Claims (3)
- 31비트의 수를 발생시키기 위하여 0부터 30번째의 합 비트를 각각 발생시키게 순차 연결된 31개의 비트발생기로 구성된 비트발생부와;상기 비트발생부의 최종 비트발생기로부터 출력되는 복수개의 최종출력캐리를 입력받아 3비트의 2진 신호로 변환하여 출력하는 캐리비트 변환부와;상기 비트발생부로부터 발생된 31합비트에 상기 캐리비트 변환부로부터 출력되는 3비트를 더하여 31비트의 난수를 발생시키는 난수발생부를 포함하여 구성된 것을 특징으로 하는 레머 알고리즘을 이용한 난수발생기.
- 제 1항에 있어서, 상기 비트발생기는 레머 알고리즘에 따른 최종 순환 컨벌루션 행렬식에서i번째 칼럼의 제 1, 제 2 및 제 3 신호를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 제 1 캐리-누적 가산기와;상기 제 1 캐리-누적 가산기로부터 출력된 합과 상기i번째 칼럼의 제 4 및 제 5 신호를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 제 2 캐리-누적 가산기와;상기 제 2 캐리-누적 가산기로부터 출력된 합으로부터 상기i번째 칼럼의 제 6 신호와i-1번째 비트발생기의 캐리-전파 감산기로부터 입력되는 입력캐리비트를 감산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 캐리-전파 감산기와;상기 캐리-전파 감산기로부터 출력된 합과i-1번째 비트발생기의 제 1 및 제 2 캐리-누적 가산기로부터 각각 입력되는 두 개의 입력캐리를 가산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 제 3 캐리-누적 가산기와;상기 제 3 캐리-누적 가산기로부터 출력된 합과i-1번째 비트 발생기의 제 3 캐리-누적 가산기와 캐리-전파 가산기로부터 각각 입력되는 두 개의 입력캐리를 가산하여i번째의 최종 합비트와 출력캐리를 발생시키는 캐리-전파 가산기를 포함하여 구성된 것을 특징으로 하는 레머 알고리즘을 이용한 난수발생기.
- 제 1항에 있어서, 상기 비트발생기는 레머 알고리즘에 따른 최종 순환 컨벌루션 행렬식에서i번째 칼럼의 제 1, 제 2 및 제 3 신호를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 제 1 캐리-누적 가산기와;상기i번째 칼럼의 제 4, 제 5 및 제 6 번째 신호를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 제 2 캐리-누적 가산기와;상기i번째 칼럼의 제 7 신호와i-1번째 비트발생기의 제 1 및 제 2 캐리-누적 가산기로부터 각각 입력되는 입력캐리비트를 가산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 제 3 캐리-누적 가산기와;상기 제 1, 제 2 및 제 3 캐리-누적 가산기로부터 출력된 합비트를 가산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 제 4 캐리-누적 가산기와;상기 제 4 캐리-누적 가산기로부터 출력된 합과i-1번째 비트 발생기의 제 3 및 제 4 캐리-누적 가산기로부터 각각 입력되는 두 개의 입력캐리를 가산하여 1비트의 합과 1비트의 출력캐리를 발생시키는 제 5 캐리-누적 가산기와;상기 제 5 캐리-누적 가산기로부터 출력된 합과i-1번째 비트 발생기의 제 5 및 제 6 캐리-누적 가산기로부터 각각 입력되는 두 개의 입력캐리를 가산하여i번째의 최종 합비트와 1비트의 출력캐리를 발생시키는 제 6 캐리-누적 가산기를 포함하여 구성된 것을 특징으로 하는 레머 알고리즘을 이용한 난수발생기.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980041593A KR100324312B1 (ko) | 1998-10-02 | 1998-10-02 | 레머알고리즘을이용한난수발생기 |
US09/369,398 US6480870B1 (en) | 1998-10-02 | 1999-08-06 | Random number generator using lehmer algorithm |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980041593A KR100324312B1 (ko) | 1998-10-02 | 1998-10-02 | 레머알고리즘을이용한난수발생기 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000024841A KR20000024841A (ko) | 2000-05-06 |
KR100324312B1 true KR100324312B1 (ko) | 2002-06-20 |
Family
ID=19553078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980041593A KR100324312B1 (ko) | 1998-10-02 | 1998-10-02 | 레머알고리즘을이용한난수발생기 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6480870B1 (ko) |
KR (1) | KR100324312B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102191305B1 (ko) * | 2019-07-09 | 2020-12-15 | 국민대학교산학협력단 | 경량 엔트로피 관리 장치 및 방법 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3626105B2 (ja) * | 2001-03-05 | 2005-03-02 | Necマイクロシステム株式会社 | 疑似ランダム信号発生回路 |
KR100422345B1 (ko) * | 2001-05-25 | 2004-03-10 | 주식회사 하이닉스반도체 | 난수 발생기 |
US20030086564A1 (en) * | 2001-09-05 | 2003-05-08 | Kuhlman Douglas A. | Method and apparatus for cipher encryption and decryption using an s-box |
US7194496B2 (en) * | 2003-05-02 | 2007-03-20 | Spirent Communications Of Rockville, Inc. | System and method for producing functions for generating pseudo-random bit sequences |
US7263540B1 (en) | 2004-03-03 | 2007-08-28 | The United States Of America As Represented By The Director National Security Agency | Method of generating multiple random numbers |
US7379955B1 (en) | 2004-03-16 | 2008-05-27 | The United States Of America As Represented By The Director, National Security Agency | Device for and method of generating pseudo-random sequence uniformly distributed over any range |
US7233212B2 (en) * | 2005-03-31 | 2007-06-19 | International Business Machines Corporation | Oscillator array with row and column control |
US7890561B2 (en) * | 2005-08-16 | 2011-02-15 | International Business Machines Corporation | Random number generator |
US20140197865A1 (en) | 2013-01-11 | 2014-07-17 | International Business Machines Corporation | On-chip randomness generation |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL99660A0 (en) * | 1991-10-07 | 1992-08-18 | Ibm Israel | Random number generator |
JPH1153173A (ja) * | 1997-08-07 | 1999-02-26 | Nec Corp | 擬似乱数発生方法及び装置 |
KR100250466B1 (ko) * | 1997-12-27 | 2000-04-01 | 정선종 | 난수기의 효율적 구현방법 |
-
1998
- 1998-10-02 KR KR1019980041593A patent/KR100324312B1/ko not_active IP Right Cessation
-
1999
- 1999-08-06 US US09/369,398 patent/US6480870B1/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102191305B1 (ko) * | 2019-07-09 | 2020-12-15 | 국민대학교산학협력단 | 경량 엔트로피 관리 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
US6480870B1 (en) | 2002-11-12 |
KR20000024841A (ko) | 2000-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
Pettenghi et al. | RNS reverse converters for moduli sets with dynamic ranges up to $(8n+ 1) $-bit | |
KR100324312B1 (ko) | 레머알고리즘을이용한난수발생기 | |
Vassiliadis et al. | A general proof for overlapped multiple-bit scanning multiplications | |
JP4273071B2 (ja) | 除算・開平演算器 | |
Premkumar | A formal framework for conversion from binary to residue numbers | |
JP2005513532A (ja) | モンゴメリ乗算器のパイプライン型コア | |
Molahosseini et al. | New arithmetic residue to binary converters | |
JP2001222410A (ja) | 除算器 | |
EP0428942B1 (en) | Plural-bit recoding multiplier | |
Zheng et al. | Low power and high speed multiplication design through mixed number representations | |
da Rosa et al. | The Radix-2 m Squared Multiplier | |
Piestrak | Design of multi-residue generators using shared logic | |
Parhami | On equivalences and fair comparisons among residue number systems with special moduli | |
JP3660075B2 (ja) | 除算装置 | |
US7472147B2 (en) | Random number string output apparatus, random number string output method, program, and information recording medium | |
KR100422345B1 (ko) | 난수 발생기 | |
US5883825A (en) | Reduction of partial product arrays using pre-propagate set-up | |
CN116991359B (zh) | Booth乘法器、混合Booth乘法器及运算方法 | |
Sahoo et al. | A high speed FIR filter architecture based on novel higher radix algorithm | |
KR100805272B1 (ko) | 부호화를 이용하는 곱셈 장치 및 그 방법 | |
Jiang et al. | Residue-Weighted Number Conversion with Moduli Set {2^ p-1, 2^ p+ 1, 2^{2p}+ 1, 2^ p} Using Signed-Digit Number Arithmetic | |
JP2556300B2 (ja) | 乗算装置 | |
Wang et al. | A high-speed residue-to-binary converter and a scheme for its VLSI implementation | |
Rajkumar et al. | VLSI Implementation of Signed Multiplier using Quaternary Signed Digit Number System |
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: 20051223 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |