KR102073474B1 - 비트스트림의 임의성을 검증하는 방법 및 그 시스템 - Google Patents

비트스트림의 임의성을 검증하는 방법 및 그 시스템 Download PDF

Info

Publication number
KR102073474B1
KR102073474B1 KR1020180059172A KR20180059172A KR102073474B1 KR 102073474 B1 KR102073474 B1 KR 102073474B1 KR 1020180059172 A KR1020180059172 A KR 1020180059172A KR 20180059172 A KR20180059172 A KR 20180059172A KR 102073474 B1 KR102073474 B1 KR 102073474B1
Authority
KR
South Korea
Prior art keywords
bitstream
cpu
random number
randomness
cores
Prior art date
Application number
KR1020180059172A
Other languages
English (en)
Other versions
KR20190134031A (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 KR1020180059172A priority Critical patent/KR102073474B1/ko
Priority to US16/421,657 priority patent/US11157239B2/en
Publication of KR20190134031A publication Critical patent/KR20190134031A/ko
Application granted granted Critical
Publication of KR102073474B1 publication Critical patent/KR102073474B1/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/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/588Random number generators, i.e. based on natural stochastic processes
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead

Abstract

본 개시는 비트스트림의 임의성을 검증하는 방법에 관한 것이다. 비트스트림의 임의성을 검증하는 방법은, n 개의 연속된 비트들로 구성된 비트스트림을 수신하는 단계 및 비트스트림을 복수의 비트블록으로 분할하는 단계를 포함할 수 있다. 여기서, n은 2 이상의 자연수이며, 복수의 비트블록의 각각은 m개의 연속된 비트로 구성되고, m은 2 이상의 자연수이고, n보다 작은 수이다. 또한, 비트스트림의 임의성을 검증하는 방법은, 복수의 비트블록의 각각을 GPU(Graphic Processing Unit) 내의 복수의 코어 그룹의 각각에 할당하는 단계, 복수의 코어 그룹의 각각에서 할당된 비트 블록을 병렬 처리하여, 할당된 비트 블록에 대한 난수 레벨값을 산출하는 단계 및 산출된 난수 레벨값을 기초로 비트스트림의 임의성 여부를 결정하는 단계를 더 포함할 수 있다. 여기서, 복수의 코어 그룹의 각각은 별도의 동기화 없이 동일한 작업이 수행가능한 복수의 코어를 포함할 수 있다.

Description

비트스트림의 임의성을 검증하는 방법 및 그 시스템 {METHOD OF VERIFYING RANDOMNESS OF BITSTREAM AND SYSTEM THEREOF}
본 개시는 비트스트림의 임의성을 검증하는 방법 및 그 시스템에 관한 것으로, 특히 GPU의 복수의 코어들을 이용하여 비트스트림을 병렬 처리함으로써 비트스트림의 임의성을 검증하는 데에 필요한 처리 속도를 향상시킬 수 있는 비트스트림의 임의성 검증 방법 및 그 시스템에 관한 것이다.
난수 생성기에 의해 생성된 난수는 난수로서 응용 분야 등에서 사용되기 위해서 임의성 또는 무작위성(randomness)이 있는지 검증이 요구된다. 예를 들어, NIST(미국국립표준연구소; National Institute of Standards and Technology)에서 개발한 복수의 테스트(예를 들어, 15개의 테스트)를 포함한 통계 검증 프로그램 패키지가 난수의 검증을 위하여 가장 널리 사용되고 있다. 그러나, 이러한 통계 검증 프로그램 패키지의 처리 속도가 느려서, 통계 검증 프로그램 패키지를 이용한 난수의 임의성 검사에 큰 장애가 되었다.
이러한 통계 검증 프로그램 패키지의 느린 처리속도를 해결하기 위하여, 통계 검증 프로그램 패키지 내의 테스트들의 최적화에 대한 많은 연구들이 행해져 오고 있다. 특히, 통계 검증 프로그램 패키지가 제공하는 15개의 테스트 중에서 가장 많은 처리 시간을 할애하는 Linear Complexity Test의 처리 시간을 줄이기 위한 연구가 행해지고 있다. 예를 들어, 한 연구에서는, Linear Complexity Test에서 실행되는 BM(Berlekamp-Massey) 알고리즘 중에서, Linear Complexity Test에서 불필요한 부분을 삭제하거나, 여러 비트를 하나의 단어로 묶어서, 단일의 CPU에서 순차적인 계산을 통해 Linear Complexity Test의 처리 시간을 향상시켰다. 그러나, 이러한 Linear Complexity Test의 처리 시간을 향상시켰음에도 불구하고, 여전히 난수의 임의성 검증을 위해 많은 처리 시간을 필요로 한다.
본 명세서에서 개시되는 실시예들은, 비트스트림을 분할하고 GPU의 아키텍쳐를 기초로 분할된 비트스트림을 GPU의 복수의 코어에 할당하여 병렬 처리함으로써, 비트스트림의 임의성을 검증하는 처리 속도를 향상시킬 수 있는 비트스트림의 임의성 검증 방법 및 그 시스템에 관한 것이다.
본 개시는 방법, 시스템, 장치 또는 방법을 구현하는 명령어들을 포함한 저장매체를 포함한 다양한 방식으로 구현될 수 있다.
본 개시에 따른 비트스트림(bitstream)의 임의성을 검증하는 방법은, n 개의 연속된 비트들로 구성된 비트스트림을 수신하는 단계 및 비트스트림을 복수의 비트블록으로 분할하는 단계를 포함할 수 있다. 여기서, n은 2 이상의 자연수이며, 복수의 비트블록의 각각은 m개의 연속된 비트로 구성되고, m은 2 이상의 자연수이고, n보다 작은 수이다. 또한, 비트스트림의 임의성을 검증하는 방법은, 복수의 비트블록의 각각을 GPU(Graphic Processing Unit) 내의 복수의 코어 그룹의 각각에 할당하는 단계, 복수의 코어 그룹의 각각에서 할당된 비트 블록을 병렬 처리하여, 할당된 비트 블록에 대한 난수 레벨값을 산출하는 단계 및 산출된 난수 레벨값을 기초로 비트스트림의 임의성 여부를 결정하는 단계를 더 포함할 수 있다. 여기서, 복수의 코어 그룹의 각각은 별도의 동기화 없이 동일한 작업이 수행가능한 복수의 코어를 포함할 수 있다.
본 개시의 일부 실시예에 따른 비트스트림의 임의성을 검증하는 방법은, 주어진 비트스트림을 비트블록, 나아가 워드 단위로 분할하고, 이러한 분할된 비트블록 또는 워드들을 GPU 아키텍처에 따라 할당되어 병렬처리를 실행함으로써, 비트스트림의 임의성 검증 여부에 대한 처리 속도를 대폭 향상시킬 수 있다.
본 개시의 일부 실시예에 따른 비트스트림의 임의성을 검증하는 방법은, 난수로서 입력된 비트스트림을 비트블록, 나아가 워드 단위로 분할하고, 이러한 분할된 비트블록 또는 워드들을 GPU와 CPU를 동시에 이용하여 병렬 처리함으로써, 비트스트림의 임의성 검증에 필요한 처리 시간을 크게 줄일 수 있다.
본 개시의 일부 실시예에 따른 비트스트림의 임의성을 검증하는 방법은, 주어진 비트스트림을 Linear Complexity Test에서 난수인지 여부를 검증함에 있어서, Linear Complexity Test에서 실행되는 BM 알고리즘의 처리를 병렬화함으로써, BM 알고리즘의 처리 속도를 대폭 향상시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 임의성 검증 장치를 개략적으로 나타내는 블록 구성도이다.
도 2는 본 개시의 일 실시예에 따른 임의성 검증 장치의 내부 구성 요소를 나타내는 블록 구성도이다.
도 3은 본 개시의 일 실시예에 따른 임의성 검증 방법을 나타내는 순서도이다.
도 4는 본 개시의 일 실시예에 따른 비트스트림의 임의성을 검증하는 방법을 나타내는 흐름도이다.
도 5는 본 개시의 일 실시예에 따른 비트스트림의 임의성을 검증하기 위해 비트스트림의 복수의 비트블록이 할당되는 복수의 코어 그룹을 포함하는 GPU를 보여주는 도면이다.
도 6은 본 개시의 일 실시예에 따른 비트스트림의 임의성을 검증하기 위해 비트스트림의 복수의 워드가 할당되는 복수의 코어들을 포함하는 GPU를 나타내는 도면이다.
도 7은 본 개시의 다른 실시예에 따른 비트스트림의 임의성을 검증하기 위해 비트스트림의 복수의 워드가 할당되는 복수의 코어들을 포함하는 GPU를 나타내는 도면이다.
도 8은 본 개시의 일 실시예에 따른 공유 메모리를 이용하여 비트스트림의 복수의 워드 각각을 BM 알고리즘을 통해 병렬 처리하는 쓰레드들 사이에서 데이터를 교환하는 방법을 나타내는 블록 구성도이다.
도 9는 본 개시의 일 실시예에 따른 비트스트림의 임의성을 검증하기 위하여, 비트스트림의 연속된 워드들의 각각을 BM 알고리즘을 통해 병렬 처리할 때 결정되는 난수 레벨값을 수집하는 방법을 나타내는 블록 구성도이다.
도 10은 본 개시의 다른 일 실시예에 따른 비트들이 CPU와 GPU에 의해 임의성 검증을 위해 병렬처리되는 비트스트림을 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 개시의 실시예들을 상세히 설명한다. 다만, 통상의 기술자는 이들 도면에 관해 여기에 주어진 상세한 설명이 예시의 목적을 위함이며, 본 개시는 이들 제한된 실시예들을 넘어 확장된다는 것을 쉽게 이해할 것이다.
도 1은 본 개시의 일 실시예에 따른 임의성 검증 장치(100)를 개략적으로 나타내는 블록 구성도이다. 임의성 검증 장치(100)는 난수 생성기(130) 로부터 생성된 n개의 연속된 비트들로 구성된 비트스트림(110)을 수신하도록 구성될 수 있다. 여기서, n은 2 이상의 자연수를 지칭할 수 있다. 난수 생성기(130)는 난수를 생성할 수 있는 임의의 난수 생성 장치일 수 있다. 또한, 생성된 난수의 크기는 생성된 난수에 따라 달라질 수 있다. 예를 들어, 비트스트림(110)의 크기는 160M bit 내지 2G bit일 수 있다.
일 실시예에 따르면, 임의성 검증 장치(100)는 수신된 비트스트림(110)의 임의성을 검증하기 위하여, 비트스트림(110)을 복수의 비트 블록으로 분할하도록 구성될 수 있다. 여기서, 복수의 비트 블록 각각은 m 개의 연속된 비트로 구성될 있으며, m은 2 이상의 자연수이고, n보다 작은 수일 수 있다. 분할된 복수의 비트 블록은 GPU의 아키텍처(architecture)에 따라 GPU 내의 코어들에 할당되어 병렬 처리될 수 있다. 하나의(single) 코어는 GPU 내에 포함되고, 싱글 쓰레드를 처리할 수 있는 유닛으로 지칭될 수 있다.
일 실시예에 따르면, 복수의 비트 블록의 각각이 다시 복수의 워드로 분할되고 분할된 워드들의 각각이 GPU 내의 코어들에 할당되어 병렬 처리될 수 있다. 이러한 병렬 처리 방식에 대해서는 아래 도 5 내지 9를 참조하여 상세히 설명된다. 이러한 병렬 처리 방식을 통해 할당된 비트 블록에 대한 난수값이 산출될 수 있으며, 이러한 산출된 난수 레벨 값이 미리 설정된 통계학적 기준을 만족하는지 여부에 따라 비트스트림(110)의 임의성 검증 결과가 결정될 수 있다.
도 2는 본 개시의 일 실시예에 따른 임의성 검증 장치(100)의 내부 구성 요소를 나타내는 블록 구성도이다. 임의성 검증 장치(100)는 I/O(Input/Output) 장치(210), GPU(Graphic Processing Unit; 240) 및 CPU(Central Processing Unit; 250)를 포함할 수 있다. GPU(240)는 비트블록 난수 레벨값 결정부(242)를 포함하도록 구성될 수 있으며, CPU(250)는 비트스트림 분할모듈(220), 비트블록 할당모듈(230), 비트블록 난수 레벨값 결정부(252) 및 비트스트림 임의성 결정부(254)를 포함할 수 있다. 이 실시예에서는, GPU(240)뿐만 아니라 CPU(250)도 비트블록 난수 레벨값 결정부(252)를 포함하도록 도시되어 있지만, 비트블록 난수 레벨값 결정부는 GPU(240)에서만 포함되도록 구성될 수 있다.
I/O 장치(210)는 난수 생성기(130)로부터 생성된 난수, 즉, 비트스트림을 수신하고, 비트스트림의 임의성 검증 결과를 출력하도록 구성될 수 있다. 일 실시예에 따르면, 임의성 검증 장치(100)는 난수 생성기(130)로부터 비트스트림을 수신할 수 있다. 예를 들어, 비트스트림은 컴퓨터 내부의 버스 또는 외부 장치와의 통신이 가능한 통신 모듈을 통해 수신될 수 있다. 이와 달리, 임의성 검증 장치(100)는 I/O 장치(210)를 통해 사용자로부터 비트스트림을 입력받을 수 있다. 일 실시예에 따르면, 임의성 검증 장치(100)는 비트스트림의 임의성을 검증한 후, 그러한 임의성 검증 결과를 I/O 장치(210)를 통해 출력하도록 구성될 수 있다. 예를 들어, I/O 장치(210)는 터치 스크린, 키패드, 터치 패드 등과 같은 입력 장치 및 디스플레이 스크린, 스피커 등과 같은 출력 장치를 포함할 수 있다.
CPU(250)의 비트스트림 분할모듈(220)은 I/O 장치(210), 내부 버스(미도시) 또는 통신 모듈(미도시)을 거쳐 n개의 연속된 비트들(여기서, n은 2 이상의 자연수)로 구성된 비트스트림을 수신하고, 이러한 비트 스트림을 m개의 비트 블록(m은 n보다 작고, 2 이상의 자연수)으로 분할하도록 구성될 수 있다. 일 실시예에 따르면, 수신된 비트스트림은 첫 비트부터 마지막 비트 방향, 즉 순방향으로, 일정한 개수의 비트블록으로 분할될 수 있다. 예를 들어, 수신된 비트스트림은 500 내지 5000 비트 중 하나의 비트 개수를 기준으로 복수의 비트 블록으로 분할될 수 있다. 다른 실시예에 따르면, 수신된 비트스트림은 다양한 비트 개수를 가진 비트블록(예를 들어, 500 내지 5000 비트 중 복수의 비트 개수)으로 분할될 수 있다.
일 실시예에 따르면, 비트스트림 분할모듈(220)은 수신된 비트스트림을 복수의 비트 블록으로 분할하고, 분할된 복수의 비트블록의 각각을 병렬처리를 위하여 복수의 워드로 분할하도록 구성될 수 있다. 여기서, 복수의 워드의 각각의 개수는 32비트의 배수일 수 있다. 예를 들어, 복수의 워드의 개수는 32비트 또는 64비트일 수 있다. 또한, 복수의 비트 블록이 분할될 때, 복수의 워드의 개수는 일정한 비트로 분할될 수 있다. 이와 달리, 복수의 워드의 개수는 다양한 비트로 분할될 수 있다. 비트스트림 분할모듈(220)에 의해 분할된 복수의 비트 블록 및/또는 복수의 워드는 비트블록 할당모듈(230)에 제공될 수 있다.
비트블록 할당모듈(230)은 수신된 복수의 비트 블록의 각각을 GPU(240) 내의 복수의 코어 그룹의 각각에 할당하도록 구성될 수 있다. 여기서, 복수의 코어 그룹의 각각은 그룹 내의 코어들 사이에 별도의 동기화 없이 또는 단위 스케줄링 내에서 동일 또는 유사한 작업이 수행가능한 복수의 코어를 포함할 수 있다. 여기서, 동기화는 독립적으로 작동하는 복수 개의 코어들에서 수행되는 쓰레드 또는 작업 사이에 데이터를 교환하는데 있어서, 작업 순서나 처리 시간을 맞추기 위해 추가적인 시간을 소모하는 별도의 작업 (예를 들어, 동기화 명령어의 수행)이 필요한 경우를 지칭한다. 예를 들어, 복수의 코어 그룹의 각각 내의 복수의 코어들 각각은, 자신의 쓰레드를 수행하는데 있어서, 처리 속도를 저하시키는 로컬 메모리의 접근 없이 복수의 쓰레드(쓰레드 블록) 실행에서 데이터를 공유할 수 있도록 사용될 수 있는 공유 메모리를 사용함으로써, 처리 속도를 향상시킬 수 있다. 여기서, 코어 그룹은 다양한 GPU의 제조사의 스펙에 따라 달라질 수 있다. 일 실시예에 따르면, 복수의 코어 그룹의 각각은, Nvidia Corporation의 GPU에서 사용되는 warp 또는 streaming multiprocessors를 지칭할 수 있다. 예를 들어, 하나의 warp에는 각각이 싱글 쓰레드 처리가 가능한 32개의 코어를 포함할 수 있으며, 하나의 warp 내에 포함된 32개의 코어는 별도의 동기화 작업 없이 동일 또는 유사한 작업을 수행할 수 있다. 다른 실시예에 따르면, 복수의 그룹의 각각은, AMD Corporation의 wavefront를 지칭할 수 있으며, wavefront는 64개의 쓰레드를 실행할 수 있는 64개의 코어들을 포함할 수 있다.
비트블록 할당모듈(230)은 하나의 코어 그룹에 하나의 비트 블록을 할당하도록 구성될 수 있다. 일 실시예에 따르면, 복수의 비트블록이 비트스트림 내에 배치된 순서대로 복수의 코어 그룹의 각각에 할당될 수 있다. 비트스트림이 분할된 비트블록의 개수가 복수의 코어 그룹의 개수보다 많은 경우, 복수의 코어 그룹의 각각에는 하나 이상의 비트블록이 할당될 수 있다.
비트블록 할당모듈(230)은 수신된 복수의 워드의 각각을 GPU(240) 내의 코어들 각각에 할당하도록 구성될 수 있다. 일 실시예에 따르면, 하나의 비트블록 내의 복수의 워드의 각각은 GPU 내의 하나의 코어 그룹 내의 코어들에 할당될 수 있다. 여기서, 하나의 비트블록 내의 복수의 워드의 개수가 단일의 코어 그룹의 코어 개수보다 크다면, 하나의 코어에는 복수 개의 워드가 할당될 수 있다. 이와 관련하여, 단일의 코어 그룹 내의 코어에 복수의 워드를 할당하는 방식은 도 7을 참조하여 상세히 설명한다. 도 2에서, 비트스트림 분할모듈(220)이 복수의 비트블록을 복수의 워드로 분할하는 모듈로 설명되어 있지만, 이에 제한되지 않으며, 비트블록 할당모듈(230)이 비트스트림 분할모듈(220)로부터 비트스트림이 분할된 복수의 비트블록을 수신하고, 수신된 복수의 비트블록의 각각을 복수의 워드로 분할하고 그 이후에 복수의 워드 각각을 GPU(240)의 코어 그룹의 복수의 코어 각각에 할당하도록 구성될 수 있다.
GPU(240)의 비트블록 난수 레벨값 결정부(242)는 GPU(240)의 복수의 코어 그룹 내의 코어들에 의해 구현될 수 있다. 하나의 코어 그룹에 할당된 하나의 비트블록에 대한 난수 레벨값을 생성하기 위하여 단일의 코어 그룹 내의 코어들이 이용될 수 있다. 일 실시예에 따르면, 주어진 워드들로 구성된 비트블록에 대한 난수 레벨값을 결정하기 위하여, 코어 그룹 내의 각 코어에 하나 이상의 워드가 할당되어, 워드 단위의 병렬 처리를 통하여 각 코어 단위로 분산 처리가 실행될 수 있다.. . 각 코어에서 워드 단위로 병렬 처리한 결과를 종합하여 하나의 비트 블록에 대한 난수 레벨값이 결정될 수 있다. 또한, 각 코어 그룹에 하나 이상의 비트 블록이 할당된 경우에는, 각 비트블록에 대한 난수 레벨값이 결정될 수 있다. 하나의 비트블록에 대한 난수 레벨값을 결정하기 위하여, 난수 검증 분야에서 알려진 다양한 알고리즘 중 하나가 사용될 수 있다. 예를 들어, 난수 레벨값을 결정하기 위하여 BM(Berlekamp-Massey) 알고리즘 등이 사용될 수 있다. 이와 같이, 비트블록 난수 레벨값 결정부(242)에서 생성된 비트스트림 내의 각 비트블록에 대한 난수 레벨값은 비트스트림비트스트림 임의성 결정부(254)에 제공될 수 있다.
일 실시예에 따르면, NIST에서 제공하는 통계 검증 프로그램 패키지의 여러 테스트를 이용하여 비트스트림의 각 비트블록에 대한 난수 레벨값을 생성할 수 있다. 이러한 테스트들 중에서, Linear Complexity Test를 이용하여 이러한 난수 레벨값이 결정될 수 있는데, Linear Complexity Test는 BM(Berlekamp-Massey) 알고리즘에 기초하여 실행될 수 있다. BM 알고리즘은 비트시퀀스(예를 들어, 워드, 비트블록, 비트스트림)의 임의성 검증하기 위하여 비트 시퀀스의 LFSR(Linear-feedback shift register)의 길이를 산출할 수 있다.
일 실시예에 따르면, 비트시퀀스(예를 들어, 비트스트림, 비트블록, 또는 워드) 내에서 가장 짧은 LFSR이 BM 알고리즘을 통해 결정될 수 있다. 예를 들어, i번째 반복(iteration)에서, BM 알고리즘은 비트블록의 i번째까지의 비트시퀀스를 생성하는 가장 짧은 LFSR을 결정할 수 있다. 이러한 방식에서, L은 C(x)에서 나타나는 현재의 가장 짧은 LFSR의 길이를 나타낸다. 여기서,
Figure 112018051112238-pat00001
, c0=1을 나타낼 수 있다.
일 실시예에 따르면, GPU(240)의 비트블록 난수 레벨값 결정부(242)는 BM 알고리즘을 복수의 비트블록의 각각에 적용하여 각 비트블록에 대한 LSFR의 길이를 수집할 수 있다. 또한, GPU(240)의 비트블록 난수 레벨값 결정부(242)는 각 비트블록의 워드 단위로 BM 알고리즘을 병렬화 처리하도록 구성될 수 있다. GPU의 각 코어에서 비트블록이 워드 단위로 BM 알고리즘을 이용하여 병렬화처리될 때 요구되는 데이터 교환 방식 및 난수레벨값의 수집 방식에 대해 도 8 및 9를 참조하여 상세히 설명한다. CPU(250)의 비트스트림 임의성 결정부(254)는 수신된 각 비트블록에 대한 난수 레벨값을 기초로 비트스트림의 임의성을 결정하도록 구성될 수 있다. 이러한 임의성의 검증을 위하여, 난수 검증 분야에서 잘 알려진 다양한 통계적 검증 방법 중 하나가 채택될 수 있다. 예를 들어, χ 2 (Chi-square) 분포 테스트 등이 통계적 검증 방법으로서 사용될 수 있다. 이와 같이, 비트스트림 임의성 결정부(254)에 의해 결정된 비트스트림의 임의성 검증 결과는 I/O 장치(210)를 통해 출력될 수 있다. 예를 들어, 비트스트림의 각 비트블록에 대한 난수 레벨값을 결정하기 위하여, BM 알고리즘을 통해 각 비트블록에 대한 LSFR 길이가 결정된 경우, LSFR 길이를 종합하여 통계학적인 분포를 분석하고, 미리 결정된 임계치 분포 이상의 통계학적 분포를 가지는 경우, 비트스트림의 임의성이 있다고 판정할 수 있다.
비트블록 할당모듈(230)은 비트스트림이 분할된 복수의 비트블록의 일부를 GPU(240)뿐만 아니라 CPU(250)의 비트블록 난수 레벨값 결정부(252)에도 할당하도록 구성될 수 있다. CPU(250)의 비트블록 난수 레벨값 결정부(252)는 CPU(250)의 복수의 코어에 의해 구현될 수 있다. 일 실시예에 따르면, 비트블록 할당모듈(230)은 첫번째 비트가 포함된 비트블록부터 순방향(비트스트림의 첫 비트부터 마지막 비트 방향) 순으로 복수의 비트블록을 GPU(240)의 비트블록 난수 레벨값 결정부(242)에 할당할 수 있고, GPU(240)의 복수의 코어들 각각을 이용하여 복수의 코어 각각에 할당된 비트블록에 대한 난수 레벨값을 결정할 수 있다. 이와 동시에, 마지막 비트가 포함된 비트블록부터 역방향(비트스트림의 마지막 비트부터 첫 비트 방향) 순으로 복수의 비트블록을 CPU(250)의 비트블록 난수 레벨값 결정부(252)에 할당할 수 있으며, 비트블록 난수 레벨값 결정부(252)는 CPU(250)의 복수의 코어들 각각을 이용하여 각 코어에 할당된 비트블록의 난수 레벨값을 결정할 수 있다. 다른 실시예에 따르면, 비트블록 할당모듈(230)은 CPU(250)의 비트블록 난수 레벨값 결정부(252)에 첫 비트가 포함된 비트블록부터 비트블록을 순방향 순으로 할당할 수 있고, GPU(240)의 비트블록 난수 레벨값 결정부(242)에 마지막 비트가 포함된 비트블록부터 비트블록을 역방향 순으로 할당할 수 있다. 그리고 나서, GPU(240)의 비트블록 난수 레벨값 결정부(242) 및 CPU(250)의 비트블록 난수 레벨값 결정부(252)의 각각에서 결정된 난수 레벨값들은 비트스트림 임의성 결정부(254)에 제공되어 비트스트림의 임의성을 검증할 수 있다.
도 3은 본 개시의 일 실시예에 따른 임의성 검증 방법(300)을 나타내는 순서도이다. 단계 S310에서, 임의성 검증 장치(100)는 n개의 연속된 비트들로 구성된 비트스트림을 수신할 수 있다. 단계 S311에서, 임의성 검증 장치(100)는 비트스트림을 복수의 비트블록으로 분할할 수 있다. 예를 들어, 복수의 비트블록의 각각의 크기는 500 내지 5000비트일 수 있다.
단계 S330에서, 분할된 복수의 비트블록의 각각이 GPU(240) 내의 복수의 코어 그룹의 각각에 할당될 수 있다. 단계 S340에서, 복수의 코어 그룹의 각각에서 할당된 비트 블록을 병렬 처리하여 할당된 비트 블록에 대한 난수 레벨값을 산출할 수 있다. 일 실시예에 따르면, GPU(240)의 비트블록 난수 레벨값 결정부(242)가 GPU 내의 복수의 코어 그룹 각각의 코어들을 이용하여 비트 블록에 대한 난수 레벨값을 산출할 수 있다. 단계 S350에서, 각 비트블록에 대한 산출된 난수 레벨값을 기초로 비트스트림의 임의성 여부를 결정할 수 있다. 일 실시예에 따르면, 각 비트 블록에 대한 난수 레벨값의 통계학적 분석값이 미리 결정된 난수 조건을 충족시키는 경우, 비트스트림이 임의성을 가지고 있다고 판정될 수 있다.
도 4는 본 개시의 일 실시예에 따른 비트스트림(410)의 임의성을 검증하는 방법을 나타내는 흐름도이다. 비트스트림(410)이 난수로서의 임의성을 갖는지 검증하기 위하여, 임의성 검증 장치(100)의 비트스트림 분할모듈(220)은 n 비트로 구성된 비트스트림(410)을 난수로서 입력받고, 먼저 비트스트림(410)을 각각이 m 비트로 구성된 복수의 비트블록으로 분할할 수 있다. 예를 들어, m은 100 내지 10000비트일 수 있다. 그리고 나서, 도 4에서 도시된 바와 같이, 복수의 비트블록의 각각은 v 비트로 구성된 복수의 워드로 분할될 수 있다. 일 실시예에 따르면, 비트블록(420)은 50개의 v 비트로 이루어진 워드(421 내지 470)로 분할될 수 있다. 이와 마찬가지로, 다른 비트블록의 각각도 동일한 방식으로 복수의 워드로 분할될 수 있다.
비트블록 난수 레벨값 결정부(242, 252)는 분할된 복수의 워드를 수신하고 (421 내지 470). 비트블록에 대한 난수 레벨값을 결정할 수 있다.
비트스트림 임의성 결정부(254)는 각 비트블록의 난수 레벨값을 수집할 수 있다. 도 4에서, 예를 들어, 비트스트림 임의성 결정부(254)는 비트블록(420)이 분할된 복수의 워드(421 내지 470)의 각각에 대한 난수 레벨값을 수집하여, 비트블록(420)에 대한 난수 레벨값(480)을 결정할 수 있다. 이러한 방식으로, 비트스트림 임의성 결정부(254)는 비트스트림(410)의 모든 비트 블록의 각각에 대한 난수 레벨값을 결정하고, 모든 비트블록의 난수 레벨값을 기초로, 비트스트림(410)의 임의성을 검증할 수 있다. 예를 들어, 모든 비트블록의 난수 레벨값이 통계적인 분포가 미리 결정된 통계적 분포값 이상인 경우 비트스트림(410)의 임의성이 검증되었다고 판정될 수 있다.
이러한 비트스트림을 비트블록 단위로, 나아가 워드 단위로 분할하고 GPU 및/또는 CPU를 이용하여 분할된 비트블록 및 워드의 각각에 대한 난수 레벨값을 수집하여 비트스트림의 임의성을 검증하는데 있어서, Linear Complexity Test의 BM 알고리즘을 기초로 각 비트블록에 대한 난수 레벨값(예를 들어, LSFR 길이)을 수집하고 비트스트림의 임의성을 검증하는 실험을 수행한 결과, 기존의 NIST에서 제공하는 Linear Complexity Test의 처리 속도보다 대략 4000 배 이상 빠른 처리 속도를 얻을 수 있었다.
도 5는 본 개시의 일 실시예에 따른 비트스트림(410)의 임의성을 검증하기 위해 비트스트림(410)의 복수의 비트블록(420, 430)이 할당되는 복수의 코어 그룹(510, 520)을 포함하는 GPU(240)를 보여주는 도면이다. 도 5에서 도시된 바와 같이, GPU(240)는 복수의 코어 그룹을 포함할 수 있다. 도 5에서는, 예시적으로, GPU(240) 내에 두 개의 코어 그룹(510, 520)만을 명시적으로 도시되어 있으나, 세 개 이상의 코어 그룹이 GPU(240)에 포함될 수 있다. GPU(240) 내의 복수의 코어 그룹의 개수는 GPU(240)의 아키텍처에 따라 달라질 수 있다.
복수의 코어 그룹의 각각은 복수의 코어를 포함하도록 구성될 수 있다. 도 5에 도시된 바와 같이, 첫 번째 코어 그룹(510)은 세 개의 코어(522, 524, 526)를 포함한 복수의 코어를 포함할 수 있으며, 두 번째 코어 그룹(520)은 세 개의 코어(528, 530, 532)를 포함한 복수의 코어를 포함할 수 있다. 예를 들어, 코어 그룹(510, 520)이 Nvidia 사에서 제조된 CUDA 장치의 warp에 대응되는 경우, 단일의 코어 그룹에는 32개의 코어를 포함할 수 있다.
비트스트림(410)이 분할된 비트블록의 각각이 GPU(240)의 복수의 코어 그룹의 각각에 할당될 수 있다. 복수의 코어 그룹(예를 들어, 복수의 워프) 사이에서 하나의 비트 블록을 분산 처리한다면, 각 복수의 코어 그룹 사이에 별도의 동기화 작업이 필요하고, 이러한 동기화 작업은 처리 속도를 저하시킬 수 있다. 이와 달리, 하나의 코어 그룹 내에서는 복수의 쓰레드가 처리되더라도, 하나의 쓰레드 블록, 즉, 하나의 스케줄링으로 처리되는 것이 가능하기 때문에, 하나의 비트 블록이 하나의 복수의 코어 그룹에서 처리될 경우에는 처리속도에 대한 오버헤드가 실질적으로 없는 것과 같이, 별도의 동기화가 필요하지 않기 때문에, 비트블록의 난수 레벨값을 결정하는 데에 필요한 처리 속도를 크게 향상시킬 수 있다.
일 실시예에 따르면, 비트스트림(410)의 첫 비트를 포함한 비트블록(420)이 GPU(240)의 첫 번째 코어 그룹(510)에 할당될 수 있다. 이러한 방식으로, 다음 비트블록(430)이 GPU(240)의 다음 코어 그룹(520)에 할당될 수 있으며, 그 다음 비트블록은 그 다음 코어 그룹에 할당될 수 있다. 비트스트림(410)의 비트블록의 개수가 GPU(240)의 코어 그룹의 개수보다 크다면, 비트블록 할당모듈(230)은 GPU(240)의 코어 그룹에 할당되지 않은 비트 블록들을 순방향으로 첫 번째 코어 그룹부터 다음 코어 그룹 순으로 할당할 수 있다. 이와 달리, 비트블록 할당모듈(230)은 GPU(240)의 코어 그룹들에 할당할 때 할당되지 않는 비트블록이 없도록 GPU(240)의 첫 번째 코어 그룹부터 2개 이상의 비트 블록을 할당할 수 있다. 예를 들어, 비트스트림(410)의 비트블록의 개수가 49개이고, GPU(240)의 복수의 코어 그룹의 개수가 24개인 경우, 비트블록 할당모듈(230)은 GPU(240)의 첫 번째 코어 그룹에 처음 3개의 비트블록을 할당하고, GPU(240)의 두 번째 코어 그룹부터, 나머지 비트블록을 차례로 각각 두 개의 비트블록을 각 코어 그룹에 할당할 수 있다.
도 6은 본 개시의 일 실시예에 따른 비트스트림(410)의 임의성을 검증하기 위해 비트스트림(410)의 복수의 워드(432, 434, 436, 438, 440, 442)가 할당되는 복수의 코어들(522, 524, 526, 528, 530, 532)을 포함하는 GPU(240)를 나타내는 도면이다. 각 비트블록을 코어가 실행하는 하나의 쓰레드에서 처리할 경우에, 쓰레드가 사용할 수 있는 레지스터 공간의 최대 크기를 초과할 수 있어서, 전체 처리 속도를 저하시킬 수 있다. 이러한 속도 저하를 방지하기 위하여, 각 비트블록을 각 코어의 쓰레드가 사용할 수 있는 레지스터 공간에 적합한 워드들로 분할할 수 있다. 예를 들어, 하나의 비트블록은 warp 내의 하나의 코어에 적합한 워드의 크기일 수 있는 64비트로 이루어진 워드들로 분할될 수 있다.
일 실시예에 따르면, 비트스트림(410)의 각 비트블록이 분할된 복수의 워드들 각각은 GPU(240)의 비트블록이 할당되는 코어 그룹의 코어들에 할당될 수 있다. GPU(240)의 비트블록 난수 레벨값 결정부(242)는 각 코어들이 쓰레드를 실행시켜서 비트블록의 난수 레벨값을 결정하는 병렬처리를 실행할 수 있다.
비트블록의 각 워드들은 할당된 코어 그룹의 코어들에 순방향으로 할당될 수 있다. 일 실시예에 따르면, 도 6에서 도시된 바와 같이, 비트블록에 포함된 복수의 워드의 개수가 코어 그룹의 코어들의 개수와 동일하다면, 비트블록의 워드들이 하나의 코어에 순방향으로 하나씩 할당될 수 있다. 예를 들어, 비트블록(420)의 첫 번째 워드(432) 및 두 번째 워드(434)는 코어 그룹(510)의 첫 번째 코어(522) 및 두 번째 코어(524)에 각각 할당될 수 있으며, 마지막 워드(436)는 마지막 코어(526)에 할당될 수 있다. .
이와 달리, 비트블록에 포함된 복수의 워드의 개수가 코어 그룹의 코어들의 개수와 다르다면, 하나의 코어 그룹에 하나 이상의 워드가 할당될 수 있다. 일 실시예에서, 도 7에서와 같이, 비트블록에 포함된 복수의 워드의 개수가 코어 그룹의 코어들의 개수보다 세 배가 많다면, 각 코어에 세 개의 워드들이 할당될 수 있다. 예시적으로, 첫 번째부터 세 번째 워드(702, 704, 706)는 코어 그룹 내의 첫 번째 코어(522)에 할당될 수 있으며, 네 번째부터 여섯 번째 워드(708, 710, 712)는 코어 그룹 내의 두 번째 코어(524)에 할당될 수 있으며, 마지막 세 워드(714, 716, 718)는 마지막 코어에 할당될 수 있다.
하나의 코어 그룹에 포함된 코어들 각각에 할당되는 워드 수를 비트를 기준으로 산출하면 아래와 같은 수식 1이 이용될 수 있다.
Figure 112018051112238-pat00002
여기서, N은 복수의 코어 그룹 각각에 포함된 코어들 각각에 할당되는 워드 수를 나타내고, m은 각 비트블록의 비트 수를 지칭하고, v는 워드들의 비트 수를 나타내고, E는 v mod (m mod v)이 0이면 0이고, v mod (m mod v)이 0이 아니면 1이고, L은 복수의 코어 그룹의 각각에 포함된 복수의 코어의 개수를 나타낼 수 있다.
도 8은 본 개시의 일 실시예에 따른 공유 메모리(810, 812, 814, 816, 818, 820)를 이용하여 비트스트림의 복수의 워드(802, 804, 806, 808) 각각을 BM 알고리즘을 통해 병렬 처리하는 쓰레드들 사이에서 데이터를 교환하는 방법을 나타내는 블록 구성도이다. 도 8에서, 하나의 쓰레드(i-1, i, i+1)의 각각은, 위 수식에 따른 산출된 결과값에 따라, 하나의 비트 블록 내의 세 개의 워드가 할당되는 것을 가정한다. 여기서, C는 현재 가장 짧은 LFSR(Linear-feedback shift register)의 값을 나타내고, sm은 공유메모리를 나타내며, 파란색 블록은 공유메모리 내에 저장된 것을 지칭할 수 있다.
일 실시예에 따르면, 도 8에서는 하나의 쓰레드에서 연속된 세 개의 워드들을 BM 알고리즘을 이용하여 처리할 때, 각 워드의 난수 레벨값을 결정하는 방식을 보여준다. 예를 들어, 도 8의 쓰레드 사이의 공유 방식은 r-shift라는 함수에서 사용될 수 있다. r-shift 함수는 워드 단위의 비트들의 임의성을 판단할 때, 현재 워드의 C를 구하고, 다음 워드의 C를 구할 때 현재 워드의 C를 시프트시킬 수 있는, 즉, 다음 워드의 C를 산출할 때 현재 워드의 C를 고려할 수 있도록 제공해주는 함수이다. 도 8에서 보는 바와 같이, 하나의 쓰레드 i에서, 세 개의 현재 워드들의 C를 산출할 때 공유메모리에 저장된 이전 워드들의 C를 사용하고, 다음 쓰레드 i+1의 워드의 C를 산출할 때 공유메모리에 바로 이전 워드의 C를 이용할 수 있다. 이러한 산출 방식을 통하여, 하나의 비트블록이 분할된 복수의 워드들이 하나의 코어 그룹 내의 코어들에 할당되어 별도의 동기화 없이 하나의 단위 스케줄링 하에서 처리되어, 복수의 워드들의 난수 레벨값을 빠른 처리 속도로 산출할 수 있다.
도 9는 본 개시의 일 실시예에 따른 비트스트림의 임의성을 검증하기 위하여, 비트스트림의 연속된 워드들(910, 920, 930)의 각각을 BM 알고리즘을 통해 병렬 처리할 때 결정되는 난수 레벨값을 수집하는 방법을 나타내는 블록 구성도이다. 도 8과 마찬가지로, 하나의 쓰레드(i-1, i, i+1)의 각각은, 위 수식에 따른 산출된 결과값에 따라, 하나의 비트 블록 내의 세 개의 워드가 할당되는 것을 가정한다. 여기서, _popc는 워드 레벨의 패리티(parity) 작업, 즉, 워드 내의 비트 수가 홀수라면 1이고, 짝수라면 0의 결과값을 산출하는 작업을 지칭하고, X는 연산(예를 들어, 더하기, 곱하기, XOR 등)을 통해 산출된 값을 나타내고, atomicXor은 Nvidia CUDA에서 제공하는 함수로서, 주어진 공유된 변수(d)를 자동적으로 변경시키는 데에 사용될 수 있다. 여기서, 공유된 변수(d)는 비트스트림의 임의성을 검증하는데 사용되는 변수일 수 있다. 예를 들어, d는 아래의 수식 2를 이용하여 산출될 수 있다.
Figure 112018051112238-pat00003
공유된 변수 d값을 위 수식을 이용하여 산출함으로써, i번째 비트 시퀀스의 현재 가장 짧은 LFSR의 값인 C에서 i번째 비트를 생성할 수 있다.
삭제
일 실시예에 따르면, 도 9에서, 하나의 쓰레드 i에서 세 개의 워드들의 각각에 대한 비트에 관한 XOR 결과값을 산출하고, 세 XOR의 결과값의 _popc 값을 산출할 수 있다. 그리고나서, _popc 값이 1이라면 atomicXor을 수행하여 공유변수 d를 변경할 수 있다. 이와 같이, 하나의 코어에서 실행되는 하나의 쓰레드에서 세 개의 워드들을 별도의 동기화 작업이나 별도의 리소스 투입 없이 하나의 단위 스케줄링 하에서 처리되어, 복수의 워드들의 난수 레벨값을 빠른 처리 속도로 산출할 수 있다.
도 10은 본 개시의 일 실시예에 따른 비트들이 GPU(240)와 CPU(250)에 의해 임의성 검증을 위해 병렬처리되는 비트스트림(1010)을 나타내는 도면이다. 주어진 비트스트림(1010)은 GPU(240) 및 CPU(250)의 코어들을 이용하여 비트스트림(1010)의 부분들을 동시에 처리할 수 있다. 일 실시예에 따르면, 비트스트림(1010)이 분할된 각각이 m비트로 이루어진 복수의 비트블록의 일부가 GPU(240)에 할당될 수 있으며, 나머지 비트블록을 CPU(250)에 할당할 수 있다.
일 실시예에 따르면, 도 10에 도시된 바와 같이, GPU(240)의 코어들에는 비트스트림(1010)의 첫 비트를 포함한 비트시퀀스(예를 들어, 비트블록 또는 워드)가 할당될 수 있다. 이와 동시에, CPU(250)의 코어들에는 비트스트림(1010)의 마지막 비트를 포함한 비트시퀀스(예를 들어, 비트블록 또는 워드)가 할당될 수 있다. 비트스트림 임의성 결정부(254)는 GPU(240)에서 처리된 비트블록 또는 워드들에 대한 난수 레벨값 및 CPU(250)에서 처리된 비트블록 또는 워드들에 대한 난수 레벨값을 수신하여, 통계적인 분석 방법을 이용하여 비트스트림(1010)의 임의성을 검증할 수 있다. 이와 달리, CPU(250)의 코어들에는 마지막 비트를 포함한 비트시퀀스가, GPU(240)의 코어들에는 첫번째 비트를 포함한 비트시퀀스가 각각 할당되어 처리될 수 있다.
일 실시예에 따르면, 비트스트림 임의성 결정부(254)는 GPU(240) 및 CPU(250)가 처리하고 있는 비트시퀀스가 중복되지 않았는지 여부를 주기적으로 체크할 수 있다. 이러한 중복 체크는 비트시퀀스의 인덱스를 체크함으로써 실행될 수 있기 때문에, 전체 비트스트림의 임의성을 검증하기 위한 처리 속도에 큰 영향을 주지 않는다.
일반적으로, 본원에 설명된 임의성 검증 장치는, 무선 전화기, 셀룰러 전화기, 랩탑 컴퓨터, 무선 멀티미디어 디바이스, 무선 통신 PC (personal computer) 카드, PDA, 외부 모뎀이나 내부 모뎀, 무선 채널을 통해 통신하는 디바이스 등과 같은 다양한 타입들의 디바이스들을 나타낼 수도 있다. 디바이스는, 액세스 단말기 (access terminal; AT), 액세스 유닛, 가입자 유닛, 이동국, 모바일 디바이스, 모바일 유닛, 모바일 전화기, 모바일, 원격국, 원격 단말, 원격 유닛, 유저 디바이스, 유저 장비 (user equipment), 핸드헬드 디바이스 등과 같은 다양한 이름들을 가질 수도 있다. 본원에 설명된 임의의 디바이스는 명령들 및 데이터를 저장하기 위한 메모리, 뿐만 아니라 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합들을 가질 수도 있다.
본원에 기술된 기법들은 다양한 수단에 의해 구현될 수도 있다. 예를 들어, 이러한 기법들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다. 본원의 개시와 연계하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로 구현될 수도 있음을 당업자들은 더 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호교환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능성의 관점에서 일반적으로 위에서 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지의 여부는, 특정 애플리케이션 및 전체 시스템에 부과되는 설계 제약들에 따라 달라진다. 당업자들은 각각의 특정 애플리케이션을 위해 다양한 방식들로 설명된 기능을 구현할 수도 있으나, 그러한 구현 결정들은 본 개시의 범위로부터 벗어나게 하는 것으로 해석되어서는 안된다.
하드웨어 구현에서, 기법들을 수행하는 데 이용되는 프로세싱 유닛들은, 하나 이상의 ASIC들, DSP들, 디지털 신호 프로세싱 디바이스들 (digital signal processing devices; DSPD들), 프로그램가능 논리 디바이스들 (programmable logic devices; PLD들), 필드 프로그램가능 게이트 어레이들 (field programmable gate arrays; FPGA들), 프로세서들, 제어기들, 마이크로제어기들, 마이크로프로세서들, 전자 디바이스들, 본원에 설명된 기능들을 수행하도록 설계된 다른 전자 유닛들, 컴퓨터, 또는 이들의 조합 내에서 구현될 수도 있다.
따라서, 본원의 개시와 연계하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, DSP, ASIC, FPGA나 다른 프로그램 가능 논리 디바이스, 이산 게이트나 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에 설명된 기능들을 수행하도록 설계된 것들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안에서, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들면, DSP와 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성의 조합으로서 구현될 수도 있다.
펌웨어 및/또는 소프트웨어 구현에 있어서, 기법들은 랜덤 액세스 메모리 (random access memory; RAM), 판독 전용 메모리 (read-only memory; ROM), 불휘발성 RAM (non-volatile random access memory; NVRAM), PROM (programmable read-only memory), EPROM (erasable programmable read-only memory), EEPROM (electrically erasable PROM), 플래시 메모리, 컴팩트 디스크 (compact disc; CD), 자기 또는 광학 데이터 스토리지 디바이스 등과 같은 컴퓨터 판독가능 매체 상에 저장된 명령들로서 구현될 수도 있다. 명령들은 하나 이상의 프로세서들에 의해 실행가능할 수도 있고, 프로세서(들)로 하여금 본원에 설명된 기능의 특정 양태들을 수행하게 할 수도 있다.
소프트웨어로 구현되면, 상기 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능한 매체 상에 저장되거나 또는 컴퓨터 판독 가능한 매체를 통해 전송될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체들일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다.
예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 본원에서 사용된 디스크 (disk) 와 디스크 (disc) 는, CD, 레이저 디스크, 광 디스크, DVD (digital versatile disc), 플로피디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크들 (disks) 은 보통 자기적으로 데이터를 재생하고, 반면 디스크들 (discs) 은 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체 내에 상주할 수도 있다. 예시적인 저장 매체는, 프로세가 저장 매체로부터 정보를 판독하거나 저장 매체에 정보를 기록할 수 있도록, 프로세서에 커플링될 수 있다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서와 저장 매체는 ASIC 내에 존재할 수도 있다. ASIC은 유저 단말 내에 존재할 수도 있다. 대안으로, 프로세서와 저장 매체는 유저 단말에서 개별 컴포넌트들로서 존재할 수도 있다.
본 개시의 앞선 설명은 당업자들이 본 개시를 행하거나 이용하는 것을 가능하게 하기 위해 제공된다. 본 개시의 다양한 수정예들이 당업자들에게 쉽게 자명할 것이고, 본원에 정의된 일반적인 원리들은 본 개시의 취지 또는 범위를 벗어나지 않으면서 다양한 변형예들에 적용될 수도 있다. 따라서, 본 개시는 본원에 설명된 예들에 제한되도록 의도된 것이 아니고, 본원에 개시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위가 부여되도록 의도된다.
비록 예시적인 구현예들이 하나 이상의 독립형 컴퓨터 시스템의 맥락에서 현재 개시된 주제의 양태들을 활용하는 것을 언급할 수도 있으나, 본 주제는 그렇게 제한되지 않고, 오히려 네트워크나 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 연계하여 구현될 수도 있다. 또 나아가, 현재 개시된 주제의 양상들은 복수의 프로세싱 칩들이나 디바이스들에서 또는 그들에 걸쳐 구현될 수도 있고, 스토리지는 복수의 디바이스들에 걸쳐 유사하게 영향을 받게 될 수도 있다. 이러한 디바이스들은 PC들, 네트워크 서버들, 및 핸드헬드 디바이스들을 포함할 수도 있다.
비록 본 주제가 구조적 특징들 및/또는 방법론적 작용들에 특정한 언어로 설명되었으나, 첨부된 청구항들에서 정의된 주제가 위에서 설명된 특정 특징들 또는 작용들로 반드시 제한되는 것은 아님이 이해될 것이다. 오히려, 위에서 설명된 특정 특징들 및 작용들은 청구항들을 구현하는 예시적인 형태로서 설명된다.
이 명세서에서 언급된 방법은 특정 실시예들을 통하여 설명되었지만, 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 명세서에서는 본 개시가 일부 실시예들과 관련하여 설명되었지만, 본 발명이 속하는 기술분야의 통상의 기술자가 이해할 수 있는 본 개시의 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다는 점을 알아야 할 것이다. 또한, 그러한 변형 및 변경은 본 명세서에 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
삭제
100: 임의성 검증 장치 110: 비트스트림
130: 난수 생성기 210: I/O 장치
220: 비트스트림 분할모듈 230: 비트블록 할당모듈
240: GPU 242: 비트블록 난수 레벨값 결정부
250: CPU
252: 비트블록 난수 레벨값 결정부 254: 비트스트림 임의성 결정부
400: 인공신경망 410: 비트스트림
420, 430: 비트블록 421, 422, 470: 워드
510, 520: 코어 그룹
522, 524, 526, 528, 530, 532: 출력층
702, 704, 706, 708, 710, 712, 714, 716, 718: 워드
1010: 비트스트림

Claims (9)

  1. 비트스트림(Bitstream)의 임의성을 검증하는 방법에 있어서,
    CPU에 의해, n 개의 연속된 비트들로 구성된 비트스트림을 수신하는 단계 - n은 2 이상의 자연수임 -;
    상기 CPU에 의해, 상기 비트스트림을 복수의 비트블록으로 분할하는 단계 - 상기 복수의 비트블록의 각각은 m개의 연속된 비트로 구성되고, m은 2 이상의 자연수이고, n보다 작은 수임 -;
    상기 CPU에 의해, 상기 복수의 비트블록의 각각을 복수의 워드로 분할하는 단계 - 상기 복수의 워드의 각각은 v개의 연속된 비트로 구성되고, v는 32 비트의 배수임 -;
    상기 CPU에 의해, 상기 복수의 비트블록의 각각을 GPU(Graphic Processing Unit) 내의 복수의 코어 그룹의 각각에 할당하는 단계 - 상기 복수의 코어 그룹의 각각은 별도의 동기화 없이 동일 또는 유사한 작업이 수행가능한 복수의 코어를 포함함 -;
    상기 CPU에 의해, 상기 할당된 비트블록이 분할된 상기 복수의 워드 중 적어도 하나의 워드를 대응되는 상기 코어 그룹의 복수의 코어들 각각에서 실행되는 쓰레드(thread)에 할당하는 단계;
    상기 복수의 코어들 각각에서 실행되는 쓰레드에 의해, 상기 할당된 복수의 워드의 각각에 대한 난수 레벨값을 산출하는 단계;
    상기 GPU 내의 복수의 코어 그룹의 각각에 의해, 상기 복수의 워드의 각각에 대한 난수 레벨값을 기초로 상기 할당된 비트블록에 대한 난수 레벨값을 산출하는 단계;
    상기 CPU에 의해, 상기 산출된 비트블록에 대한 난수 레벨값을 기초로 상기 비트스트림의 임의성 여부를 결정하는 단계
    를 포함하는, 비트스트림의 임의성을 검증하는 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 CPU에 의해, 상기 산출된 비트블록에 대한 난수 레벨값을 기초로 상기 비트스트림의 임의성 여부를 결정하는 단계는,
    상기 CPU에 의해, 상기 복수의 비트블록에 대해 산출된 난수 레벨값들이 미리 설정된 통계학적 기준을 만족하는지 여부를 검사하는 단계
    를 포함하는, 비트스트림의 임의성을 검증하는 방법.
  7. 제1항에 있어서,
    상기 CPU에 의해, 상기 할당된 비트 블록이 분할된 상기 복수의 워드 중 적어도 하나의 워드를 상기 대응되는 코어 그룹의 복수의 코어들 각각에서 실행되는 쓰레드에 할당하는 단계는,
    상기 CPU에 의해, 상기 대응되는 코어 그룹의 복수의 코어들 각각에 N 개의 워드를 할당하는 단계를 포함하고,
    Figure 112019075248370-pat00004
    이고,
    E는 v mod (m mod v)이 0이면 0이고, v mod (m mod v)이 0이 아니면 1이고,
    L은 상기 복수의 코어 그룹의 각각에 포함된 복수의 코어의 개수를 나타내는, 비트스트림의 임의성을 검증하는 방법.
  8. 제1항에 있어서,
    상기 CPU에 의해, 상기 복수의 비트블록의 각각을 GPU(Graphic Processing Unit) 내의 복수의 코어 그룹의 각각에 할당하는 단계는, 상기 CPU에 의해, 상기 복수의 비트블록 중 일부를 상기 CPU의 복수의 코어에 할당하는 단계를 포함하고,
    상기 방법은, 상기 CPU의 복수의 코어의 각각에서 상기 할당된 복수의 비트블록의 일부를 병렬 처리하여, 상기 할당된 복수의 비트블록의 일부에 대한 난수 레벨값을 산출하는 단계를 더 포함하고,
    상기 CPU에 의해, 상기 산출된 비트블록에 대한 난수 레벨값을 기초로 상기 비트스트림의 임의성 여부를 결정하는 단계는, 상기 CPU에 의해, 상기 CPU의 복수의 코어의 각각에서 병렬 처리되어 산출된 복수의 비트블록의 일부에 대한 난수 레벨값을 기초로 결정하는 단계를 포함하는,
    비트스트림의 임의성을 검증하는 방법.
  9. 제8항에 있어서,
    상기 CPU에 의해, 상기 복수의 비트블록 중 일부를 상기 CPU의 복수의 코어에 할당하는 단계는,
    상기 CPU에 의해, 상기 복수의 비트블록 중에서 상기 비트스트림의 역방향 순으로 상기 복수의 비트블록 중 일부를 상기 CPU의 복수의 코어에 할당하는 단계를 포함하고,
    상기 CPU의 복수의 코어의 각각에서 상기 할당된 복수의 비트블록의 일부를 병렬 처리하여, 상기 할당된 복수의 비트블록의 일부에 대한 난수 레벨값을 산출하는 단계는 상기 CPU에 의해, 상기 할당된 복수의 비트블록의 일부에 대한 난수 레벨값이 상기 GPU의 복수의 코어 그룹에서 처리되었는지 확인하는 단계를 포함하는,
    비트스트림의 임의성을 검증하는 방법.
KR1020180059172A 2018-05-24 2018-05-24 비트스트림의 임의성을 검증하는 방법 및 그 시스템 KR102073474B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180059172A KR102073474B1 (ko) 2018-05-24 2018-05-24 비트스트림의 임의성을 검증하는 방법 및 그 시스템
US16/421,657 US11157239B2 (en) 2018-05-24 2019-05-24 Method of verifying randomness of bitstream and system thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180059172A KR102073474B1 (ko) 2018-05-24 2018-05-24 비트스트림의 임의성을 검증하는 방법 및 그 시스템

Publications (2)

Publication Number Publication Date
KR20190134031A KR20190134031A (ko) 2019-12-04
KR102073474B1 true KR102073474B1 (ko) 2020-02-04

Family

ID=68614221

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180059172A KR102073474B1 (ko) 2018-05-24 2018-05-24 비트스트림의 임의성을 검증하는 방법 및 그 시스템

Country Status (2)

Country Link
US (1) US11157239B2 (ko)
KR (1) KR102073474B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11740872B2 (en) 2020-09-29 2023-08-29 International Business Machines Corporation Detection of unintended dependencies in hardware designs with pseudo-random number generators
US20220240408A1 (en) * 2021-01-22 2022-07-28 Nvidia Corporation Static data center power balancing and configuration

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100499966B1 (ko) * 1996-11-27 2005-09-20 소니 유나이티드 킹덤 리미티드 신호처리기
KR100709675B1 (ko) * 2004-06-28 2007-04-20 가부시키가이샤 엔티티 도코모 감소된 비트스트림 후보 기반의 수신기 및 수신된 신호처리방법
KR100801630B1 (ko) * 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
KR101583471B1 (ko) * 2014-12-31 2016-01-08 고려대학교 산학협력단 임의성을 검증하는 통계적 기법을 이용하여 난수를 공급하는 장치 및 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2319932B (en) 1996-11-27 2001-07-25 Sony Uk Ltd Signal processors
US20030158876A1 (en) * 2002-02-21 2003-08-21 Koninklijke Philips Electronics N.V. On-line randomness test through overlapping word counts
US6675113B2 (en) * 2002-03-26 2004-01-06 Koninklijke Philips Electronics N.V. Monobit-run frequency on-line randomness test
KR20090012528A (ko) * 2007-07-30 2009-02-04 삼성전자주식회사 난수 발생 장치의 자발적인 온라인 테스트 장치 및 방법
JP6176076B2 (ja) * 2013-11-22 2017-08-09 富士通株式会社 物理乱数生成装置、物理乱数生成方法、及び物理乱数生成システム
US10380222B2 (en) * 2016-10-17 2019-08-13 International Business Machines Corporation Matrix factorization with two-stage data block dispatch associated with graphics processing units
US11151275B2 (en) * 2019-04-05 2021-10-19 International Business Machines Corporation Randomness detection in network data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100499966B1 (ko) * 1996-11-27 2005-09-20 소니 유나이티드 킹덤 리미티드 신호처리기
KR100709675B1 (ko) * 2004-06-28 2007-04-20 가부시키가이샤 엔티티 도코모 감소된 비트스트림 후보 기반의 수신기 및 수신된 신호처리방법
KR100801630B1 (ko) * 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
KR101583471B1 (ko) * 2014-12-31 2016-01-08 고려대학교 산학협력단 임의성을 검증하는 통계적 기법을 이용하여 난수를 공급하는 장치 및 방법

Also Published As

Publication number Publication date
US11157239B2 (en) 2021-10-26
US20190361678A1 (en) 2019-11-28
KR20190134031A (ko) 2019-12-04

Similar Documents

Publication Publication Date Title
Lin et al. Pagraph: Scaling gnn training on large graphs via computation-aware caching
US10332008B2 (en) Parallel decision tree processor architecture
JP5950285B2 (ja) 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
KR102594657B1 (ko) 비순차적 리소스 할당을 구현하는 방법 및 장치
KR102519580B1 (ko) 다수 코어 처리를 위한 고속 동기화 장벽 기술
US11263529B2 (en) Modifying machine learning models to improve locality
JP2022511716A (ja) 非集中的な分散型深層学習
US20150262062A1 (en) Decision tree threshold coding
US9892149B2 (en) Parallelized in-place radix sorting
KR102073474B1 (ko) 비트스트림의 임의성을 검증하는 방법 및 그 시스템
Sha et al. Gpu-based graph traversal on compressed graphs
US20150262063A1 (en) Decision tree processors
CN112256599A (zh) 一种数据预取方法、装置及存储设备
US10599638B2 (en) System and method for identifying maximal independent sets in parallel
CN109412865B (zh) 一种虚拟网络资源分配方法、系统及电子设备
US20110125805A1 (en) Grouping mechanism for multiple processor core execution
US9189382B2 (en) Noncontiguous representation of an array
CN111448545A (zh) 并行多值归约
GB2525613A (en) Reduction of processing duplicates of queued requests
US9632762B2 (en) Extending superword level parallelism
Koike et al. A novel computational model for GPUs with applications to efficient algorithms
Li et al. An application-oblivious memory scheduling system for DNN accelerators
CN113467974A (zh) 一种标识信息生成方法
US20200125573A1 (en) Implementing in-storage data processing across multiple computational storage devices
US20230068120A1 (en) Vector processing of decision trees to form inferences

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