KR100324312B1 - 레머알고리즘을이용한난수발생기 - Google Patents

레머알고리즘을이용한난수발생기 Download PDF

Info

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
Application number
KR1019980041593A
Other languages
English (en)
Other versions
KR20000024841A (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 KR1019980041593A priority Critical patent/KR100324312B1/ko
Priority to US09/369,398 priority patent/US6480870B1/en
Publication of KR20000024841A publication Critical patent/KR20000024841A/ko
Application granted granted Critical
Publication of KR100324312B1 publication Critical patent/KR100324312B1/ko

Links

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/58Random or pseudo-random number generators
    • 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/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/586Pseudo-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 으로 표기할 것이다. 행렬 표기식을 사용하면aa의 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 }라면, 두 수az의 곱은 다음의 (식 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 이며, 결과적으로az의 곱은 1 ×45 수로 표현된다.
일반적으로, 상기 (식 4)는 두 수의 곱의 병렬 표현으로 생각되어 질 수 있다. 상기 종결식의 각 행(row)은 승수의 각각의 자리수에 의해 곱해진 쉬프트된 수z m-1:0 을 나타내고, 상기 종결식의 각 열(column)은 의사난수 결과를 제공하기 위하여 더해진다.
상기 알고리즘의 다음 단계는a·zM = 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 순환 컨벌루션 행렬로 형성된다.
이때, 만약 승수aa 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번째 열과 관련된 비트들이고,cjd 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)

  1. 31비트의 수를 발생시키기 위하여 0부터 30번째의 합 비트를 각각 발생시키게 순차 연결된 31개의 비트발생기로 구성된 비트발생부와;
    상기 비트발생부의 최종 비트발생기로부터 출력되는 복수개의 최종출력캐리를 입력받아 3비트의 2진 신호로 변환하여 출력하는 캐리비트 변환부와;
    상기 비트발생부로부터 발생된 31합비트에 상기 캐리비트 변환부로부터 출력되는 3비트를 더하여 31비트의 난수를 발생시키는 난수발생부를 포함하여 구성된 것을 특징으로 하는 레머 알고리즘을 이용한 난수발생기.
  2. 제 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번째의 최종 합비트와 출력캐리를 발생시키는 캐리-전파 가산기를 포함하여 구성된 것을 특징으로 하는 레머 알고리즘을 이용한 난수발생기.
  3. 제 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 캐리-누적 가산기를 포함하여 구성된 것을 특징으로 하는 레머 알고리즘을 이용한 난수발생기.
KR1019980041593A 1998-10-02 1998-10-02 레머알고리즘을이용한난수발생기 KR100324312B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102191305B1 (ko) * 2019-07-09 2020-12-15 국민대학교산학협력단 경량 엔트로피 관리 장치 및 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 정선종 난수기의 효율적 구현방법

Cited By (1)

* Cited by examiner, † Cited by third party
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