KR20150047007A - 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치 - Google Patents
복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20150047007A KR20150047007A KR1020130126705A KR20130126705A KR20150047007A KR 20150047007 A KR20150047007 A KR 20150047007A KR 1020130126705 A KR1020130126705 A KR 1020130126705A KR 20130126705 A KR20130126705 A KR 20130126705A KR 20150047007 A KR20150047007 A KR 20150047007A
- Authority
- KR
- South Korea
- Prior art keywords
- simulation
- processors
- detail
- scenario
- processor
- Prior art date
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 401
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000009826 distribution Methods 0.000 claims description 53
- 238000005457 optimization Methods 0.000 claims description 46
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/02—CAD in a network environment, e.g. collaborative CAD or distributed simulation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치가 제공된다. 방법은 시뮬레이션 시나리오를 N개로 나누어 각각의 프로세서에 분배하는 단계, 나누어진 시뮬레이션 시나리오의 시작 부분을 포함하는 제1 프로세서에서 하이-디테일 시뮬레이션(high-detail simulation)을 수행하는 단계, N개의 프로세서들 중에서 제1 프로세서를 제외한 N-1개의 프로세서 각각에서, 빠른 시뮬레이션(fast simulation)을 수행하는 단계 및 상기 N-1개의 프로세서 각각에서, 빠른 시뮬레이션(fast simulation)종료 후 생성된 스냅샷에 기초하여 하이-디테일 시뮬레이션(high-detail simulation)을 수행하는 단계를 포함한다.
Description
멀티 패스 시뮬레이션 방법 및 장치에 관한 것으로, 보다 상세하게는, 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치에 관한 것이다.
시뮬레이션은 오랜 기간 다양한 과학 및 기술 분야에서 사용된 도구이다. 시뮬레이션은 현실 세계에서 작업이 불편하거나, 비용이 비싸거나, 비현실적이거나, 불가능한 경우에 사용된다. 실험자는 시뮬레이션을 통해 입력 데이터 및 매개변수를 더 원활이 통제하면서 작업을 수행할 수 있으며, 결과를 도출하는 과정에서 결과 및 시스템의 상태에 대해 더 잘 파악할 수 있다. 또한 실험 비용의 절감, 개발 기간의 단축, 제품의 품질 개선뿐 아니라 아직 실물 형태로 존재하지 않는 시스템을 실험에 사용할 수도 있다. 동일한 이유로 컴퓨터를 다른 컴퓨터의 시뮬레이션에 사용할 수도 있다.
마이크로 아키텍쳐 시뮬레이터는 개발자가 디자인을 실행하기에 앞서 디자인을 평가할 수 있게 한다. 시뮬레이션의 문제점은 실제 시스템에서 실행하는 것과 비교하여 실행 시간이 훨씬 느린데 있다. 이러한 문제점을 완화시키기 위해 두 가지 유형의 시뮬레이션을 선택적으로 이용할 수 있는데, 명령어 집합 시뮬레이션(instruction-set simulation)과 정밀 사이클 시뮬레이션(cycle accurate simulation)이 그것이다. 명령어 집합 시뮬레이션이란, Java, FORTRAN, COBOL, PASCAL, C, LISP 및 Prolog 등과 같은 고급 프로그래밍 언어(high-level programming language)를 이용하여, 대상 프로세서의 ISA(Instruction Set Architecture) 동작을 모방하는 시뮬레이션으로, 실행속도가 빠르지만 시뮬레이션 정보가 적다. 정밀 사이클 시뮬레이션이란, 마이크로 아키텍쳐를 매 사이클 단위로 시뮬레이션하는 것으로, 많은 시뮬레이션 정보를 얻을 수 있지만, 실행 속도가 비교적 느리다.
본 발명의 일 실시예는 시뮬레이션 시나리오를 프로세서의 수로 나누어 각각의 프로세서에 분배하고, 각각의 프로세서에서 빠른 시뮬레이션을 수행하고, 빠른 시뮬레이션 종료 후 생성된 스냅샷에 기초하여 각각의 프로세서에서 하이-디테일 시뮬레이션을 수행하는 방법 및 장치를 제공한다.
본 발명의 한 측면에 따라, N개(상기 N은 2 이상의 자연수)의 프로세서들 각각에 대해 시뮬레이션 시나리오를 분배하기 위하여, 상기 시뮬레이션 시나리오를 N개로 나누는 단계; 상기 나누어진 시뮬레이션 시나리오의 시작 부분을 포함하는 부분이 분배된 제1 프로세서에서 하이-디테일 시뮬레이션(high-detail simulation)을 수행하는 단계; 상기 N개의 프로세서들 중에서 상기 제1 프로세서를 제외한 N-1개의 프로세서 각각에서, 빠른 시뮬레이션(fast simulation)을 수행하는 단계; 및 상기 N-1개의 프로세서 각각에서, 상기 빠른 시뮬레이션(fast simulation)종료 후 생성된 스냅샷에 기초하여 상기 하이-디테일 시뮬레이션(high-detail simulation)을 수행하는 단계를 포함하는, 프로세서들을 병렬적으로 사용하여 시뮬레이션을 수행하는 방법이 제공된다.
또한, 상기 시뮬레이션 시나리오는 프로그램이며, 상기 시뮬레이션을 수행하는 단계는, 상기 프로세서상에서 상기 프로그램을 실행시킬 수 있다.
또한, 상기 시뮬레이션 시나리오를 N개로 나누는 단계는, 상기 나누어진 x번째 시뮬레이션 시나리오가 상기 시뮬레이션 시나리오에서 차지하는 비율이 하기 최적화 분배식을 만족하도록 나눌 수 있다.
<최적화 분배식>
상기 최적화 분배식에서 M은, 상기 빠른 시뮬레이션(fast simulation)이 상기 하이-디테일 시뮬레이션(high-detail simulation)보다 M배 빠른 것을 나타낸다.
또한, 상기 빠른 시뮬레이션을 수행하는 단계는, 상기 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 상기 시뮬레이션 시나리오의 이전 부분에 대하여 상기 빠른 시뮬레이션을 수행하며, 상기 하이-디테일 시뮬레이션을 수행하는 단계는, 상기 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 상기 시뮬레이션 시나리오 부분에 대하여 상기 하이-디테일 시뮬레이션을 수행할 수 있다.
또한, 상기 빠른 시뮬레이션(fast simulation)은 명령어 집합 시뮬레이션(instruction-set simulation)일 수 있다.
또한, 상기 하이-디테일 시뮬레이션(high-detail simulation)은 정밀 사이클 시뮬레이션(cycle accurate simulation)일 수 있다.
또한, 상기 프로세서의 개수는 사용자 입력에 기초하여 결정될 수 있다.
또한, 상기 스냅샷은 상기 명령어 집합 시뮬레이션의 수행 결과 얻어진 데이터 및 명령어 트레이스(instruction trace) 정보로부터 생성될 수 있다.
또한, 방법은 상기 하이-디테일 시뮬레이션(high-detail simulation)의 수행 결과에 따른 성능 정보(performance information)를 수집하는 단계; 및 상기 수집된 성능 정보를 출력하는 단계를 더 포함할 수 있다.
또한, 방법은 상기 하이-디테일 시뮬레이션(high-detail simulation)의 수행 결과에 따른 성능 정보(performance information)를 수집하는 단계; 및 상기 성능 정보에 기초하여 성능 통계(performance statistics)를 생성하는 단계를 더 포함하며, 상기 성능 통계는 상기 프로그램을 실행하기 위해 필요한 전체 사이클 수, 상기 프로그램의 인스트럭션을 실행하기 위한 평균 사이클 수, 캐시 미스 정보 및 스톨 사이클 정보(stall cycle information) 중 적어도 하나를 포함할 수 있다.
본 발명의 다른 측면에 따라, 시뮬레이션 시나리오에 대한 입력을 수신하는 입력부; N개(상기 N은 2 이상의 자연수)의 프로세서들 각각에 대해 상기 시뮬레이션 시나리오를 분배하기 위하여, 상기 시뮬레이션 시나리오를 N개로 나누는 제어부; 및 상기 나누어진 시뮬레이션 시나리오의 시작 부분을 포함하는 부분이 분배된 제1 프로세서에서 하이-디테일 시뮬레이션(high-detail simulation)을 수행하고, 상기 N개의 프로세서들 중에서 상기 제1 프로세서를 제외한 N-1개의 프로세서 각각에서, 빠른 시뮬레이션(fast simulation)을 수행하고, 상기 N-1개의 프로세서 각각에서, 상기 빠른 시뮬레이션(fast simulation)종료 후 생성된 스냅샷에 기초하여 상기 하이-디테일 시뮬레이션(high-detail simulation)을 수행하는 프로세서부를 포함하는, 프로세서들을 병렬적으로 사용하여 시뮬레이션을 수행하는 장치가 제공된다.
또한, 상기 시뮬레이션 시나리오는 프로그램이며, 상기 프로세서부는, 상기 프로세서상에서 상기 프로그램을 실행시킬 수 있다.
또한, 상기 제어부는, 상기 나누어진 x번째 시뮬레이션 시나리오가 상기 시뮬레이션 시나리오에서 차지하는 비율이 하기 최적화 분배식을 만족하도록 나눌 수 있다.
<최적화 분배식>
상기 최적화 분배식에서 M은, 상기 빠른 시뮬레이션(fast simulation)이 상기 하이-디테일 시뮬레이션(high-detail simulation)보다 M배 빠른 것을 나타낸다.
또한, 상기 프로세서부는, 상기 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 상기 시뮬레이션 시나리오의 이전 부분에 대하여 상기 빠른 시뮬레이션을 수행하며, 상기 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 상기 시뮬레이션 시나리오 부분에 대하여 상기 하이-디테일 시뮬레이션을 수행할 수 있다.
또한, 상기 빠른 시뮬레이션(fast simulation)은 명령어 집합 시뮬레이션(instruction-set simulation)일 수 있다.
또한, 상기 하이-디테일 시뮬레이션(high-detail simulation)은 정밀 사이클 시뮬레이션(cycle accurate simulation)일 수 있다.
또한, 상기 스냅샷은 상기 명령어 집합 시뮬레이션의 수행 결과 얻어진 데이터 및 명령어 트레이스(instruction trace) 정보로부터 생성될 수 있다.
또한, 상기 제어부는, 상기 하이-디테일 시뮬레이션(high-detail simulation)의 수행 결과에 따른 성능 정보(performance information)를 수집하고, 장치는 상기 수집된 성능 정보를 출력하는 출력부를 더 포함할 수 있다.
또한, 상기 제어부는, 상기 하이-디테일 시뮬레이션(high-detail simulation)의 수행 결과에 따른 성능 정보(performance information)를 수집하고, 상기 성능 정보에 기초하여 성능 통계(performance statistics)를 생성하며, 상기 성능 통계는 상기 프로그램을 실행하기 위해 필요한 전체 사이클 수, 상기 프로그램의 인스트럭션을 실행하기 위한 평균 사이클 수, 캐시 미스 정보 및 스톨 사이클 정보(stall cycle information) 중 적어도 하나를 포함할 수 있다.
본 발명의 또 다른 측면은, 상기 방법을 수행하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
스냅샷의 생성을 최소화할 수 있고, 프로세서간의 스냅샷 전송을 없앨 수 있다. 따라서, 오버헤드를 최소화 하고, 시뮬레이션을 가속화할 수 있다.
또한, 최적화 분배식을 이용하여 멀티 패스 시뮬레이션의 효율을 최적화 시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법을 설명하기 위한 흐름도다.
도 2는 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법을 설명하기 위한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법을 설명하기 위한 예시도이다.
도 4는 도 3의 변형예로, 사용되는 프로세서의 수를 증가시킨 것을 보여주는 예시도이다.
도 5는 본 발명의 일 실시예에 따른 최적화 분배식을 적용한 예시도이다.
도 6은 도 5의 변형예로, 사용되는 프로세서의 개수를 늘려 최적화 분배식을 적용한 예시도이다.
도 7은 도 5의 변형예로, 빠른 시뮬레이션과 하이-디테일 시뮬리이션의 속도 차이가 도 5와 다른 경우 최적화 분배식을 적용한 예시도이다.
도 8은 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 장치를 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법을 설명하기 위한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법을 설명하기 위한 예시도이다.
도 4는 도 3의 변형예로, 사용되는 프로세서의 수를 증가시킨 것을 보여주는 예시도이다.
도 5는 본 발명의 일 실시예에 따른 최적화 분배식을 적용한 예시도이다.
도 6은 도 5의 변형예로, 사용되는 프로세서의 개수를 늘려 최적화 분배식을 적용한 예시도이다.
도 7은 도 5의 변형예로, 빠른 시뮬레이션과 하이-디테일 시뮬리이션의 속도 차이가 도 5와 다른 경우 최적화 분배식을 적용한 예시도이다.
도 8은 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 장치를 나타내는 블록도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법을 설명하기 위한 흐름도다.
단계 110에서, N개(상기 N은 2 이상의 자연수)의 프로세서들 각각에 대해 시뮬레이션 시나리오를 분배하기 위하여, 시뮬레이션 시나리오를 N개로 나눈다.
일 실시예에서, 각각의 프로세서에 대해 동일한 양으로 시뮬레이션 시나리오를 나누어 분배할 수 있다. 다른 실시예에서는, 후술할 최적화 분배식에 따라 시뮬레이션 시나리오를 나누어 분배할 수 있다. 이에 대해서는 도 5에서 자세히 설명한다.
일 실시예에서, 시뮬레이션에 사용될 프로세서의 개수는 사용자 입력에 기초하여 결정될 수 있다.
단계 120에서, 실행되는 프로세서가, 나누어진 시뮬레이션 시나리오의 시작 부분을 포함하는 부분이 분배된 제1 프로세서인지 판단한다.
판단 결과, 실행되는 프로세서가, 나누어진 시뮬레이션 시나리오의 시작 부분을 포함하는 부분이 분배된 제1 프로세서인 경우, 단계 150이 수행되어, 바로 하이-디테일 시뮬레이션을 수행할 수 있다. 판단 결과, 실행되는 프로세서가, 제1 프로세서가 아닌 경우, 단계 130이 수행되어, 먼저 빠른 시뮬레이션을 수행할 수 있다.
단계 130에서, N개의 프로세서들 중에서 제1 프로세서를 제외한 N-1개의 프로세서 각각에서, 빠른 시뮬레이션을 수행한다. 빠른 시뮬레이션은, 시뮬레이션 시나리오 중 각각의 프로세서에 분배된 시뮬레이션 시나리오의 이전 부분에 대하여 수행할 수 있다.
일 실시예에서, 빠른 시뮬레이션은 명령어 집합 시뮬레이션과 같은 기능적 시뮬레이션(functional simulation)일 수 있다. 예를 들어, 마이크로 아키텍쳐를 대상으로 한 실행 가능한 프로그램이 명령어 집합 시뮬레이션 상에서 실행될 수 있다.
단계 140에서, N개의 프로세서들 중에서 제1 프로세서를 제외한 N-1개의 프로세서 각각에서, 빠른 시뮬레이션(fast simulation)종료 후 스냅샷을 생성한다.
일 실시예에서, 각각의 스냅샷은 특정 시점에서의 시뮬레이션의 전체적인 상태를 포함할 수 있으나, 이에 제한되지 않는다. 예를 들어, 스냅샷은 하나 이상의 수정된 레지스터 값과 수정된 메모리 위치 및 영역을 포함할 수 있다.
빠른 시뮬레이션이 명령어 집합 시뮬레이션인 경우, 스냅샷은 명령어 집합 시뮬레이션의 수행 결과 얻어진 데이터 및 명령어 트레이스(instruction trace) 정보로부터 생성될 수 있다.
일 실시예에서, 빠른 시뮬레이션 수행 단계에서 실행 가능한 프로그램이 외부 엔티티(external entity)와 상호작용 할 수 있다. 예를 들어, 실행 가능한 프로그램은 입력 및 출력을 위하여 외부의 파일 시스템이나 콘솔 등을 활용할 수 있다.
N개의 프로세서들 중에서 제1 프로세서를 제외한 N-1개의 프로세서 하이-디테일 시뮬레이션을 수행하기 위하여, 시뮬레이션 시나리오 중 각각의 프로세서에 분배된 시뮬레이션 시나리오의 이전 부분에 대하여 빠른 시뮬레이션을 진행한다. 그러면, 각각의 프로세서에서 빠른 시뮬레이션 결과 스냅샷이 생성되고, 생성된 스냅샷 기초하여 하이-디테일 시뮬레이션을 수행할 수 있다.
단계 150에서, N-1개의 프로세서 각각에서, 빠른 시뮬레이션(fast simulation)종료 후 생성된 스냅샷에 기초하여 하이-디테일 시뮬레이션(high-detail simulation)을 수행한다. 하이-디테일 시뮬레이션은 각각의 프로세서에 분배된 시뮬레이션 시나리오 이전 단계까지 수행 결과에 따른 스냅샷을 시작점으로 하여 수행될 수 있다. 또한, 하이-디테일 시뮬레이션은 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 상기 시뮬레이션 시나리오 부분에 대하여 수행될 수 있다.
하이-디테일 시뮬레이션에는 예를 들어, 정밀 사이클 시뮬레이션, 파이프 어큐레이트 시뮬레이션(pipe accurate simulaiton) 및 레지스터 변환 레벨 시뮬레이션(register-transfer level simulation) 등이 있으나, 이에 제한되지 않는다. 하이-디테일 시뮬레이션 수행 결과 빠른 시뮬레이션에 비해 더 많은 정보를 얻을 수 있다.
하이-디테일 시뮬레이션은 각각의 프로세서에서 분배된 시뮬레이션 시나리오에 대하여 병렬적으로 동시에 수행될 수 있다. 각각의 프로세서에 분배된 시뮬레이션 시나리오에 대하여 하이-디테일 시뮬레이션이 모두 수행된 경우, 각각의 프로세서는 하이-디테일 시뮬레이션을 종료할 수 있다.
일 실시예에서, 하이-디테일 시뮬레이션의 수행 결과에 따른 성능 정보를 수집할 수 있으며, 수집된 성능 정보를 출력할 수 있다. 또한, 성능 정보에 기초하여 성능 통계를 생성할 수 있다. 성능 통계는 프로그램을 실행하기 위해 필요한 전체 사이클 수, 프로그램의 인스트럭션을 실행하기 위한 평균 사이클 수, 캐시 미스 정보 및 스톨 사이클 정보(stall cycle information) 중 적어도 하나를 포함할 수 있다.
본 발명의 일 실시예에 따른 시뮬레이션은 멀티 코어 컴퓨터나 클라우드 컴퓨팅 리소스에서 디버그와 유지 및 보수를 하는데 효율적으로 사용될 수 있다. 특히, 제1 프로세서를 제외한 각각의 프로세서에서 빠른 시뮬레이션 종료 후 한 번의 스냅샷만 생성하면 되므로, 스냅샷의 생성을 최소화할 수 있다. 또한, 프로세서간의 스냅샷 전송을 없앨 수 있다. 따라서, 오버헤드를 최소화 하고, 시뮬레이션을 가속화할 수 있다.
도 2는 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법을 설명하기 위한 흐름도이다.
본 발명의 일 실시예에 따라, 시뮬레이션 시나리오는 프로그램일 수 있다. 일 실시예에서, 컴파일되지 않은 프로그램이 곧바로 시뮬레이션 입력으로 수신된 경우, 기계어로 번역하기 위한 컴파일이 수행될 수 있다.
프로그램의 시작부분이 포함된 부분이 분배된 제1 프로세서에서는 곧바로 하이-디테일 시뮬레이션이 수행할 수 있다.
제2 프로세서에서는 제2 프로세서에 분배된 프로그램의 이전 부분에 대하여 빠른 시뮬레이션을 진행하고, 적어도 하나의 스냅샷을 생성할 수 있다. 생성된 스냅샷을 기초로, 제2 프로세서에 분배된 프로그램에 대하여 하이-디테일 시뮬레이션을 수행할 수 있다. 분배된 프로그램에 대한 시뮬레이션이 모두 수행되고 나면, 하이-디테일 시뮬레이션을 종료할 수 있다.
제3 프로세서에서는 제3 프로세서에 분배된 프로그램의 이전 단계까지 빠른 시뮬레이션을 진행하고, 적어도 하나의 스냅샷을 생성할 수 있다. 생성된 스냅샷을 기초로, 제3 프로세서에 분배된 프로그램에 대하여 하이-디테일 시뮬레이션을 수행할 수 있다. 분배된 프로그램에 대한 시뮬레이션이 모두 수행되고 나면, 하이-디테일 시뮬레이션을 종료할 수 있다.
제n 프로세서에서는 제n 프로세서에 분배된 프로그램의 이전 단계까지 빠른 시뮬레이션을 진행하고, 적어도 하나의 스냅샷을 생성할 수 있다. 생성된 스냅샷을 기초로, 제n 프로세서에 분배된 프로그램에 대하여 하이-디테일 시뮬레이션을 수행할 수 있다. 분배된 프로그램에 대한 시뮬레이션이 모두 수행되고 나면, 하이-디테일 시뮬레이션을 종료할 수 있다.
각각의 프로세서들은 병렬적으로 동시에 시뮬레이션을 수행할 수 있다.
일 실시예에서, 빠른 시뮬레이션 수행 단계에서 프로그램은 전자 설계 자동화 툴(Electronic Design Automation tool) 상에서 실행될 수 있다.
도 3은 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법을 설명하기 위한 예시도이다.
도 3은 각각의 프로세서에 대해 동일한 양으로 시뮬레이션 시나리오를 나누어 분배한 것을 나타낸다.
본 발명의 일 실시예에 따라, 시뮬레이션에 사용되는 프로세서는 네 개 이며, 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 10배 빠르게 수행할 수 있다고 가정한다. 또한, 시뮬레이션 수행 시간 비교를 위해 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정한다. 여기서, 스냅샷을 생성하는데 걸리는 시간은 전체 시뮬레이션 시간과 비교하여 무시할 수 있다.
시뮬레이션 시나리오를 프로세서의 개수인 4로 동일하게 나눈 첫 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 a, 두 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 b, 세 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 c, 네 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 d라 한다. 그러면, 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정한 것에 따라 다음과 같은 수학식1이 성립한다.
<수학식1>
a = b = c = d,
a+b+c+d = 1,
a = b = c = d = 0.25
또한, 시뮬레이션 시나리오를 프로세서의 개수인 4로 동일하게 나눈 첫 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 A, 두 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 B, 세 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 C, 네 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 D라 한다. 그러면, 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 10배 빠르게 수행할 수 있다고 가정한 것에 따라 다음과 같은 수학식2가 성립한다.
<수학식2>
A = B = C = D = 10 X a = 2.5
제1 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 4로 동일하게 나눈 첫 번째 부분에 대하여 하이-디테일 시뮬레이션만을 수행하므로, 수학식 3과 같이 시뮬레이션에 2.5의 시간이 걸린다.
<수학식3>
A = 2.5
제2 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 4로 동일하게 나눈 첫 번째 부분에 대하여 빠른 시뮬레이션 수행 후, 생성된 스냅샷에 기초하여 첫 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하므로, 수학식 4와 같이 시뮬레이션에 2.75의 시간이 걸린다.
<수학식4>
a + B = 2.75
제3 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 4로 동일하게 나눈 첫 번째 부분 및 두 번째 부분에 대하여 빠른 시뮬레이션 수행 후, 생성된 스냅샷에 기초하여 세 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하므로, 수학식 5와 같이 시뮬레이션에 3의 시간이 걸린다.
<수학식5>
a + b + C = 3
제4 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 4로 동일하게 나눈 첫 번째 부분, 두 번째 부분 및 세 번째 부분에 대하여 빠른 시뮬레이션 수행 후, 생성된 스냅샷에 기초하여 네 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하므로, 수학식 6과 같이 시뮬레이션에 3.25의 시간이 걸린다.
<수학식6>
a + b + c + D = 3.25
결과적으로, 전체 시뮬레이션에 걸리는 시간은 가장 늦게 시뮬레이션이 종료되는 제4 프로세서의 실행 시간과 같으므로, 총 시뮬레이션에 걸리는 시간은 3.25가 된다.
즉, 본 발명의 일 실시예에 따른 시뮬레이션 방법에 의하면, 전체 시뮬레이션 시간 단축 효과가 있으며, 특히, 오버헤드를 많이 발생시키는 시뮬레이션에 필요한 스냅샷의 개수도 크게 감소시킬 수 있다. 게다가, 프로세서간 스냅샷의 송수신 과정이 필요 없으므로, 프로세서 간의 스냅샷을 송수신하는 과정에서 발생하는 오버헤드를 없앨 수 있다.
도 4는 도 3의 변형예로, 사용되는 프로세서의 수를 증가시킨 것을 보여주는 예시도이다.
도 4는 각각의 프로세서에 대해 동일한 양으로 시뮬레이션 시나리오를 나누어 분배한 것을 나타낸다. 도 3과의 차이점은, 도 3의 경우 프로세서의 개수를 네 개로 한 것이며, 도 4의 경우 프로세서의 개수를 다섯 개로 한 것이다.
본 발명의 일 실시예에 따라, 시뮬레이션에 사용되는 프로세서는 다섯 개 이며, 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 10배 빠르게 수행할 수 있다고 가정한다. 또한, 시뮬레이션 수행 시간 비교를 위해 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정한다. 여기서, 스냅샷을 생성하는데 걸리는 시간은 전체 시뮬레이션 시간과 비교하여 무시할 수 있다.
시뮬레이션 시나리오를 프로세서의 개수인 5로 동일하게 나눈 첫 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 a, 두 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 b, 세 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 c, 네 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 d, 다섯 번째 부분에 대하여 빠른 시뮬레이션을 수행하는데 걸리는 시간을 e라 한다. 그러면, 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정한 것에 따라 다음과 같은 수학식7이 성립한다.
<수학식7>
a = b = c = d = e,
a + b + c + d + e = 1,
a = b = c = d = e = 0.2
또한, 시뮬레이션 시나리오를 프로세서의 개수인 5로 동일하게 나눈 첫 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 A, 두 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 B, 세 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 C, 네 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 D, 다섯 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하는데 걸리는 시간을 E라 한다. 그러면, 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 10배 빠르게 수행할 수 있다고 가정한 것에 따라 다음과 같은 수학식8이 성립한다.
<수학식8>
A = B = C = D = E = 10 X a = 2
제1 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 5로 동일하게 나눈 첫 번째 부분에 대하여 하이-디테일 시뮬레이션만을 수행하므로, 수학식 9에 따라 시뮬레이션에 2의 시간이 걸린다.
<수학식9>
A = 2
제2 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 5로 동일하게 나눈 첫 번째 부분에 대하여 빠른 시뮬레이션 수행 후, 생성된 스냅샷에 기초하여 첫 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하므로, 수학식 10에 따라 시뮬레이션에 2.2의 시간이 걸린다.
<수학식10>
a + B = 2.2
제3 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 5로 동일하게 나눈 첫 번째 부분 및 두 번째 부분에 대하여 빠른 시뮬레이션 수행 후, 생성된 스냅샷에 기초하여 세 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하므로, 수학식 11에 따라 시뮬레이션에 2.4의 시간이 걸린다.
<수학식11>
a + b + C = 2.4
제4 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 5로 동일하게 나눈 첫 번째 부분, 두 번째 부분 및 세 번째 부분에 대하여 빠른 시뮬레이션 수행 후, 생성된 스냅샷에 기초하여 네 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하므로, 수학식 12에 따라 시뮬레이션에 2.6의 시간이 걸린다.
<수학식12>
a + b + c + D = 2.6
제5 프로세서에서는 시뮬레이션 시나리오를 프로세서의 개수인 5로 동일하게 나눈 첫 번째 부분, 두 번째 부분, 세 번째 부분 및 네 번째 부분에 대하여 빠른 시뮬레이션 수행 후, 생성된 스냅샷에 기초하여 다섯 번째 부분에 대하여 하이-디테일 시뮬레이션을 수행하므로, 수학식 13에 따라 시뮬레이션에 2.8의 시간이 걸린다.
<수학식13>
a + b + c + d + E = 2.8
결과적으로, 전체 시뮬레이션에 걸리는 시간은 가장 늦게 시뮬레이션이 종료되는 제5 프로세서의 실행 시간과 같으므로, 총 시뮬레이션에 걸리는 시간은 2.8이 된다.
즉, 본 발명의 일 실시예에 따른 시뮬레이션 방법에 의하면, 시뮬레이션에 이용하는 프로세서의 개수를 늘임으로써, 시뮬레이션에 필요한 최소한의 스냅샷의 개수는 네 개로 늘어났지만, 전체 시뮬레이션 시간 단축 효과가 있다.
도 5는 본 발명의 일 실시예에 따른 최적화 분배식을 적용한 예시도이다.
도 3 내지 4와 같이, 각각의 프로세서에 대해 동일한 양으로 시뮬레이션 시나리오를 나누어 분배할 경우, 제1 프로세서 내지 제n-1 프로세서에서 시뮬레이션이 먼저 종료되어 제n 프로세서가 시뮬레이션을 종료할 때까지 기다리는 시간이 발생한다. 따라서, 각각의 프로세서에서 수행되는 시뮬레이션이 동일한 시간에 종료되도록 하는 최적화 분배식을 적용하여, 시뮬레이션의 효율성을 높일 수 있다.
시뮬레이션에 사용되는 프로세서는 N개 이고, 같은 구간을 시뮬레이션 할 때 하이-디테일 시뮬레이션이 빠른 시뮬레이션에 비하여 M배 시간이 더 걸린다고 가정한다. 그러면, 시뮬레이션 시나리오를 프로세서의 개수인 N으로 나눈 x 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 아래의 <최적화 분배식>과 같다.
<최적화 분배식>
최적화 분배식을 도출하기 위하여, 시뮬레이션에 사용되는 프로세서는 n개 이며, 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정하면, 수학식14가 성립한다.
<수학식14>
또한, 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 M배 빠르게 수행할 수 있다고 가정하면, 수학식15가 성립한다.
<수학식15>
…
그러면, 각 프로세서에서 시뮬레이션이 동시에 종료되도록 하기 위하여, 각각의 프로세서에서의 시뮬레이션 수행 시간을 같다고 놓으면, 다음과 같은 수학식16을 도출할 수 있다.
<수학식16>
또한, 수학식 16에 수학식 15를 대입하면, 수학식 17이 성립한다.
<수학식17>
이렇게 만들어진 연립 방정식을 풀면, 다음과 같은 일반식을 얻을 수 있고, 이를 최적화 분배식으로 사용할 수 있다.
본 발명의 일 실시예에 따라, 최적화 분배식을 적용한 경우 수행결과를 본다. 도 3에서 가정한 바와 같이, 시뮬레이션에 사용되는 프로세서는 네 개 이며, 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 10배 빠르게 수행할 수 있다고 가정한다. 또한, 시뮬레이션 수행 시간 비교를 위해 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정한다. 여기서, 스냅샷을 생성하는데 걸리는 시간은 전체 시뮬레이션 시간과 비교하여 무시할 수 있다.
최적화 분배식을 적용하여 구한 첫 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식18로부터 구할 수 있다.
<수학식18>
(최적화 분배식에 M=10, N=4, x=1을 대입)
최적화 분배식을 적용하여 구한 두 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식19로부터 구할 수 있다.
<수학식19>
(최적화 분배식에 M=10, N=4, x=2를 대입)
최적화 분배식을 적용하여 구한 세 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식20으로부터 구할 수 있다.
<수학식20>
(최적화 분배식에 M=10, N=4, x=3을 대입)
최적화 분배식을 적용하여 구한 네 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식21으로부터 구할 수 있다.
<수학식21>
(최적화 분배식에 M=10, N=4, x=4를 대입)
결과적으로, 총 시뮬레이션에 걸리는 시간은 수학식22에서와 같이 계산된다.
<수학식22>
a + b + c + d = 1
a = 0.29, b = 0.26, c = 0.24, d = 0.21
a + b + c + d x 10 = a + b + c x 10 = a + b x 10 = a x 10 = 2.9
즉, 총 시뮬레이션에 걸리는 시간은 2.9로, 시뮬레이션 시나리오를 각 프로세서에 동일하게 분배한 것에 비하여 개선 효과가 있다.
도 6은 도 5의 변형예로, 사용되는 프로세서의 개수를 늘려 최적화 분배식을 적용한 예시도이다.
시뮬레이션에 사용되는 프로세서는 다섯 개 이며, 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 10배 빠르게 수행할 수 있다고 가정한다. 또한, 시뮬레이션 수행 시간 비교를 위해 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정한다. 여기서, 스냅샷을 생성하는데 걸리는 시간은 전체 시뮬레이션 시간과 비교하여 무시할 수 있다.
최적화 분배식을 적용하여 구한 첫 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식23으로부터 구할 수 있다.
<수학식23>
(최적화 분배식에 M=10, N=5, x=1을 대입)
최적화 분배식을 적용하여 구한 두 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식24로부터 구할 수 있다.
<수학식24>
(최적화 분배식에 M=10, N=5, x=2를 대입)
최적화 분배식을 적용하여 구한 세 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식25로부터 구할 수 있다.
<수학식25>
(최적화 분배식에 M=10, N=5, x=3을 대입)
최적화 분배식을 적용하여 구한 네 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식26으로부터 구할 수 있다.
<수학식26>
(최적화 분배식에 M=10, N=5, x=4를 대입)
최적화 분배식을 적용하여 구한 다섯 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식27로부터 구할 수 있다.
<수학식27>
(최적화 분배식에 M=10, N=5, x=5를 대입)
결과적으로, 총 시뮬레이션에 걸리는 시간은 수학식28에서와 같이 계산된다.
<수학식28>
a + b + c + d + e = 1
a = 0.24, b = 0.22, c = 0.20, d = 0.18, e = 0.16
a + b + c + d + e x 10 = a + b + c + d x 10 = a + b + c x 10
= a + b x 10 = a x 10 = 2.4
즉, 총 시뮬레이션에 걸리는 시간은 2.4로, 시뮬레이션 시나리오를 각 프로세서에 동일하게 분배한 것에 비하여 개선 효과가 있다. 또한, 시뮬레이션에 이용하는 프로세서의 개수를 늘임으로써, 시뮬레이션에 필요한 최소한의 스냅샷의 개수는 늘어났지만, 전체 시뮬레이션 시간 단축 효과가 있다.
도 7은 도 5의 변형예로, 빠른 시뮬레이션과 하이-디테일 시뮬리이션의 속도 차이가 도 5와 다른 경우 최적화 분배식을 적용한 예시도이다.
시뮬레이션에 사용되는 프로세서는 네 개 이며, 상술한 실시예들과 달리, 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 8배 빠르게 수행할 수 있다고 가정한다. 또한, 시뮬레이션 수행 시간 비교를 위해 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정한다. 여기서, 스냅샷을 생성하는데 걸리는 시간은 전체 시뮬레이션 시간과 비교하여 무시할 수 있다.
최적화 분배식을 적용하여 구한 첫 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식29로부터 구할 수 있다.
<수학식29>
(최적화 분배식에 M=8, N=4, x=1을 대입)
최적화 분배식을 적용하여 구한 두 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식30으로부터 구할 수 있다.
<수학식30>
(최적화 분배식에 M=8, N=4, x=2를 대입)
최적화 분배식을 적용하여 구한 세 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식31로부터 구할 수 있다.
<수학식31>
(최적화 분배식에 M=8, N=4, x=3을 대입)
최적화 분배식을 적용하여 구한 네 번째 부분이 시뮬레이션 시나리오에서 차지하는 비율은 수학식32로부터 구할 수 있다.
<수학식32>
(최적화 분배식에 M=8, N=4, x=4을 대입)
결과적으로, 총 시뮬레이션에 걸리는 시간은 수학식33에서와 같이 계산된다.
<수학식33>
a + b + c + d = 1
a = 0.30, b = 0.27, c = 0.23, d = 0.20
a + b + c + d x 8 = a + b + c x 8 = a + b x 8 = a x 8 = 2.4
즉, 총 시뮬레이션에 걸리는 시간은 2.4이다.
참고로, 도 7에서의 실시예는 도 3 내지 도 6에서의 실시예와 객관적인 시뮬레이션 실행 시간을 비교할 수 없다. 이는 도 3 내지 도 6에서의 실시예가 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 10배 빠르게 수행할 수 있다고 가정한 것에 비해, 도 7에서의 실시예는 같은 구간을 시뮬레이션 할 때 빠른 시뮬레이션은 하이-디테일 시뮬레이션에 비하여 8배 빠르게 수행할 수 있다고 가정하였기 때문이다. 따라서, 시뮬레이션 시나리오를 빠른 시뮬레이션에 의해 수행하는데 걸리는 시간을 1이라 가정한 것이 같은 기준으로 적용될 수 없는 것이다.
도 8은 본 발명의 일 실시예에 따른 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 장치를 나타내는 블록도이다.
장치(800)는 입력부(810), 제어부(820) 및 프로세서부(830)를 포함할 수 있다. 입력부(810)는 시뮬레이션 시나리오에 대한 입력을 수신할 수 있다. 일 실시예에서, 시뮬레이션 시나리오는 프로그램일 수 있다. 입력된 프로그램이 컴파일되지 않은 프로그램인 경우, 장치(800)는 프로그램을 기계어로 번역하기 위한 컴파일러를 더 포함할 수 있다.
제어부(820)는 시뮬레이션 시나리오를 N개로 나누어 각각의 프로세서에 분배할 수 있다. 일 실시예에서, 제어부(820)는 N개의 동일한 양으로 시뮬레이션 시나리오를 나누어 각각의 프로세서에 분배할 수 있다. 다른 실시예에서, 제어부(820)는 최적화 분배식에 따라 시뮬레이션 시나리오를 나누어 각각의 프로세서에 분배할 수 있다.
또한, 제어부(820)는, 하이-디테일 시뮬레이션의 수행 결과에 따른 성능 정보를 수집할 수 있다. 또한, 성능 정보에 기초하여 성능 통계(performance statistics)를 생성할 수 있다.
프로세서부(830)는 나누어진 시뮬레이션 시나리오의 시작 부분을 포함하는 제1 프로세서에서 하이-디테일 시뮬레이션을 수행하고, N개의 프로세서들 중에서 제1 프로세서를 제외한 N-1개의 프로세서 각각에서, 빠른 시뮬레이션을 수행하고, N-1개의 프로세서 각각에서, 빠른 시뮬레이션 종료 후 생성된 스냅샷에 기초하여 하이-디테일 시뮬레이션을 수행할 수 있다.
본 발명의 일 실시예에 따라 시뮬레이션 시나리오가 프로그램인 경우, 프로세서부(830)는 프로세서상에서 프로그램을 실행시킬 수 있다.
일 실시예에서, 빠른 시뮬레이션은 명령어 집합 시뮬레이션과 같은 기능 시뮬리션(functional simulation)일 수 있다. 예를 들어, 마이크로 아키텍쳐를 대상으로 한 실행 가능한 프로그램이 명령어 집합 시뮬레이션 상에서 실행될 수 있다. 하이-디테일 시뮬레이션에는 예를 들어, 정밀 사이클 시뮬레이션, 파이프 어큐레이트 시뮬레이션(pipe accurate simulaiton) 및 레지스터 변환 레벨 시뮬레이션(register-transfer level simulation) 등이 있으나, 이에 제한되지 않는다.
본 발명의 일 실시예에서, 장치(800)는 시뮬레이션 수행 결과를 출력하는 출력부(도면에 미도시)를 더 포함할 수 있다. 출력부는 외부 콘솔에 연결된 디스플레이 장치일 수 있으며, 이 경우 출력부는 성능 통계를 디스플레이상에 시각적으로 나타낼 수 있다.
본 발명의 다른 실시예에서, 장치(800)는 수집된 성능 정보를 저장하는 저장부(도면에 미도시)를 더 포함할 수 있다. 저장부는 성능 정보에 기초하여 생성된 성능 통계를 더 저장할 수 있다. 또한, 저장부는 빠른 시뮬레이션 과정에서 생성된 스냅샷을 저장할 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
Claims (20)
- N개(상기 N은 2 이상의 자연수)의 프로세서들을 병렬적으로 사용하여 시뮬레이션을 수행하는 방법에 있어서,
상기 프로세서들 각각에 대해 시뮬레이션 시나리오를 분배하기 위하여, 상기 시뮬레이션 시나리오를 N개로 나누는 단계;
상기 N개의 프로세서들 중에서 상기 나누어진 시뮬레이션 시나리오의 시작 부분을 포함하는 부분이 분배된 제1 프로세서에서 하이-디테일 시뮬레이션(high-detail simulation)을 수행하는 단계;
상기 제1 프로세서를 제외한 N-1개의 프로세서 각각에서, 빠른 시뮬레이션(fast simulation)을 수행하는 단계; 및
상기 N-1개의 프로세서 각각에서, 상기 빠른 시뮬레이션(fast simulation)종료 후 생성된 스냅샷에 기초하여 상기 하이-디테일 시뮬레이션(high-detail simulation)을 수행하는 단계;
를 포함하는 시뮬레이션 수행 방법. - 제1항에 있어서,
상기 시뮬레이션 시나리오는 프로그램이며,
상기 시뮬레이션을 수행하는 단계는, 상기 프로세서상에서 상기 프로그램을 실행시키는, 시뮬레이션 수행 방법. - 제1항에 있어서,
상기 빠른 시뮬레이션을 수행하는 단계는, 상기 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 시뮬레이션 시나리오의 이전 부분에 대하여 상기 빠른 시뮬레이션을 수행하며,
상기 하이-디테일 시뮬레이션을 수행하는 단계는, 상기 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 시뮬레이션 시나리오 부분에 대하여 상기 하이-디테일 시뮬레이션을 수행하는, 시뮬레이션 수행 방법. - 제2항에 있어서,
상기 빠른 시뮬레이션(fast simulation)은 명령어 집합 시뮬레이션(instruction-set simulation)인 시뮬레이션 수행 방법. - 제2항에 있어서,
상기 하이-디테일 시뮬레이션(high-detail simulation)은 정밀 사이클 시뮬레이션(cycle accurate simulation)인 시뮬레이션 수행 방법. - 제1항에 있어서,
상기 프로세서의 개수는 사용자 입력에 기초하여 결정되는 시뮬레이션 수행 방법. - 제5항에 있어서,
상기 스냅샷은 상기 명령어 집합 시뮬레이션의 수행 결과 얻어진 데이터 및 명령어 트레이스(instruction trace) 정보로부터 생성되는 시뮬레이션 수행 방법. - 제1항에 있어서,
상기 하이-디테일 시뮬레이션(high-detail simulation)의 수행 결과에 따른 성능 정보(performance information)를 수집하는 단계; 및
상기 수집된 성능 정보를 출력하는 단계를 더 포함하는 시뮬레이션 수행 방법. - 제6항에 있어서,
상기 하이-디테일 시뮬레이션(high-detail simulation)의 수행 결과에 따른 성능 정보(performance information)를 수집하는 단계; 및
상기 성능 정보에 기초하여 성능 통계(performance statistics)를 생성하는 단계를 더 포함하며,
상기 성능 통계는 상기 프로그램을 실행하기 위해 필요한 전체 사이클 수, 상기 프로그램의 인스트럭션을 실행하기 위한 평균 사이클 수, 캐시 미스 정보 및 스톨 사이클 정보(stall cycle information) 중 적어도 하나를 포함하는 시뮬레이션 수행 방법. - N개(상기 N은 2 이상의 자연수)의 프로세서들을 병렬적으로 사용하여 시뮬레이션을 수행하는 장치에 있어서,
시뮬레이션 시나리오에 대한 입력을 수신하는 입력부;
상기 프로세서들 각각에 대해 상기 시뮬레이션 시나리오를 분배하기 위하여, 상기 시뮬레이션 시나리오를 N개로 나누는 제어부; 및
상기 N개의 프로세서들 중에서 상기 나누어진 시뮬레이션 시나리오의 시작 부분을 포함하는 부분이 분배된 제1 프로세서에서 하이-디테일 시뮬레이션(high-detail simulation)을 수행하고, 상기 제1 프로세서를 제외한 N-1개의 프로세서 각각에서, 빠른 시뮬레이션(fast simulation)을 수행하고, 상기 N-1개의 프로세서 각각에서, 상기 빠른 시뮬레이션(fast simulation)종료 후 생성된 스냅샷에 기초하여 상기 하이-디테일 시뮬레이션(high-detail simulation)을 수행하는 프로세서부를 포함하는, 시뮬레이션 수행 장치. - 제11항에 있어서,
상기 시뮬레이션 시나리오는 프로그램이며,
상기 프로세서부는, 상기 프로세서상에서 상기 프로그램을 실행시키는 시뮬레이션 수행 장치. - 제11항에 있어서,
상기 프로세서부는, 상기 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 시뮬레이션 시나리오의 이전 부분에 대하여 상기 빠른 시뮬레이션을 수행하며, 상기 시뮬레이션 시나리오 중 상기 각각의 프로세서에 분배된 시뮬레이션 시나리오 부분에 대하여 상기 하이-디테일 시뮬레이션을 수행하는, 시뮬레이션 수행 장치. - 제12항에 있어서,
상기 빠른 시뮬레이션(fast simulation)은 명령어 집합 시뮬레이션(instruction-set simulation)인 시뮬레이션 수행 장치. - 제12항에 있어서,
상기 하이-디테일 시뮬레이션(high-detail simulation)은 정밀 사이클 시뮬레이션(cycle accurate simulation)인 시뮬레이션 수행 장치. - 제15항에 있어서,
상기 스냅샷은 상기 명령어 집합 시뮬레이션의 수행 결과 얻어진 데이터 및 명령어 트레이스(instruction trace) 정보로부터 생성되는 시뮬레이션 수행 장치. - 제11항에 있어서,
상기 제어부는, 상기 하이-디테일 시뮬레이션(high-detail simulation)의 수행 결과에 따른 성능 정보(performance information)를 수집하고,
상기 수집된 성능 정보를 출력하는 출력부를 더 포함하는 시뮬레이션 수행 장치. - 제16항에 있어서,
상기 제어부는, 상기 하이-디테일 시뮬레이션(high-detail simulation)의 수행 결과에 따른 성능 정보(performance information)를 수집하고, 상기 성능 정보에 기초하여 성능 통계(performance statistics)를 생성하며,
상기 성능 통계는 상기 프로그램을 실행하기 위해 필요한 전체 사이클 수, 상기 프로그램의 인스트럭션을 실행하기 위한 평균 사이클 수, 캐시 미스 정보 및 스톨 사이클 정보(stall cycle information) 중 적어도 하나를 포함하는 시뮬레이션 수행 장치. - 제1항 내지 제10항 중 어느 한 항에 의한 방법을 수행하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130126705A KR102160251B1 (ko) | 2013-10-23 | 2013-10-23 | 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치 |
US14/521,656 US10296671B2 (en) | 2013-10-23 | 2014-10-23 | Method of and apparatus for performing simulation using plurality of processors in parallel |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130126705A KR102160251B1 (ko) | 2013-10-23 | 2013-10-23 | 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150047007A true KR20150047007A (ko) | 2015-05-04 |
KR102160251B1 KR102160251B1 (ko) | 2020-09-25 |
Family
ID=52826935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130126705A KR102160251B1 (ko) | 2013-10-23 | 2013-10-23 | 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10296671B2 (ko) |
KR (1) | KR102160251B1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101668294B1 (ko) * | 2015-05-19 | 2016-10-21 | (주)클루닉스 | 에이젼트 기반 모델 시뮬레이션에 사용되는 모수의 참값을 추정하는 병렬 시뮬레이션 방법 |
KR20190022434A (ko) * | 2017-02-20 | 2019-03-06 | 핑안 테크놀로지 (션젼) 컴퍼니 리미티드 | 데이터베이스 시스템의 최적화 방법, 시스템, 전자장치 및 저장매체 |
USD884369S1 (en) | 2018-08-16 | 2020-05-19 | Samsung Electronics Co., Ltd. | Hanger |
USD909693S1 (en) | 2018-08-16 | 2021-02-02 | Samsung Electronics Co., Ltd. | Clothing care machine |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011058836A1 (ja) | 2009-11-10 | 2011-05-19 | 日本電気株式会社 | 偽指判定装置、偽指判定方法および偽指判定プログラム |
KR102440948B1 (ko) * | 2016-02-11 | 2022-09-05 | 삼성전자주식회사 | 반도체 장치 및 반도체 장치의 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816828B1 (en) * | 1999-03-04 | 2004-11-09 | Nec Electronics Corporation | Logic simulation method in which simulation is dynamically switchable between models |
US20070192079A1 (en) * | 2006-02-16 | 2007-08-16 | Karl Van Rompaey | Run-time switching for simulation with dynamic run-time accuracy adjustment |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6983234B1 (en) * | 1999-04-01 | 2006-01-03 | Sun Microsystems, Inc. | System and method for validating processor performance and functionality |
US8543367B1 (en) * | 2006-02-16 | 2013-09-24 | Synopsys, Inc. | Simulation with dynamic run-time accuracy adjustment |
US20130275585A1 (en) * | 2010-10-22 | 2013-10-17 | Infosys Limited | System and method for performance measurement of networked enterprise applications |
US20130013283A1 (en) | 2011-07-06 | 2013-01-10 | Ari Gam | Distributed multi-pass microarchitecture simulation |
-
2013
- 2013-10-23 KR KR1020130126705A patent/KR102160251B1/ko active IP Right Grant
-
2014
- 2014-10-23 US US14/521,656 patent/US10296671B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816828B1 (en) * | 1999-03-04 | 2004-11-09 | Nec Electronics Corporation | Logic simulation method in which simulation is dynamically switchable between models |
US20070192079A1 (en) * | 2006-02-16 | 2007-08-16 | Karl Van Rompaey | Run-time switching for simulation with dynamic run-time accuracy adjustment |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101668294B1 (ko) * | 2015-05-19 | 2016-10-21 | (주)클루닉스 | 에이젼트 기반 모델 시뮬레이션에 사용되는 모수의 참값을 추정하는 병렬 시뮬레이션 방법 |
KR20190022434A (ko) * | 2017-02-20 | 2019-03-06 | 핑안 테크놀로지 (션젼) 컴퍼니 리미티드 | 데이터베이스 시스템의 최적화 방법, 시스템, 전자장치 및 저장매체 |
USD884369S1 (en) | 2018-08-16 | 2020-05-19 | Samsung Electronics Co., Ltd. | Hanger |
USD909693S1 (en) | 2018-08-16 | 2021-02-02 | Samsung Electronics Co., Ltd. | Clothing care machine |
Also Published As
Publication number | Publication date |
---|---|
KR102160251B1 (ko) | 2020-09-25 |
US20150112662A1 (en) | 2015-04-23 |
US10296671B2 (en) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754495B1 (en) | Data processing method and related products | |
KR20150047007A (ko) | 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치 | |
CN112352219B (zh) | 自动化编译的系统和方法 | |
US11868908B2 (en) | Processor compiler for scheduling instructions to reduce execution delay due to dependencies | |
KR20090092617A (ko) | 프로세서 및 컴파일 방법 | |
JP6021342B2 (ja) | 並列化方法、システム、及びプログラム | |
CN103955394B (zh) | 一种基于推迟提交的gpu虚拟化优化方法 | |
We et al. | Functionally and temporally correct simulation of cyber-systems for automotive systems | |
US7162403B2 (en) | System and method for efficiently tracing simulation data in hardware acceleration simulation systems | |
Punniyamurthy et al. | GATSim: Abstract timing simulation of GPUs | |
US10467120B2 (en) | Software optimization for multicore systems | |
JP2015169997A (ja) | プログラム解析装置及びプログラム解析方法及びプログラム | |
US20090112568A1 (en) | Method for Generating a Simulation Program Which Can Be Executed On a Host Computer | |
Cornelis et al. | The pipeline performance model: a generic executable performance model for GPUs | |
Ittershagen et al. | A workload extraction framework for software performance model generation | |
Terrosi et al. | Modeling of GPGPU architectures for performance analysis of CUDA programs | |
CN112418930B (zh) | 一种测试方法、系统及计算机设备 | |
Galindo Figuerola | Evaluation of the embedded AMD GPUs archicture for safety critical systems | |
Mayer et al. | The data-parallel Ada run-time system, simulation and empirical results | |
US10713167B2 (en) | Information processing apparatus and method including simulating access to cache memory and generating profile information | |
Yu et al. | Runtime Profiling of OpenCL Workloads Using LLVM-based Code Instrumentation | |
Sarkar et al. | Execution profile driven speedup estimation for porting sequential code to gpu | |
US9880841B2 (en) | Computation method for computing performance value when processor executes code, computation apparatus for computing performance value when processor executes code, and computer readable storage medium storing computation program for computing performance value when processor executes code | |
Schulz et al. | Rotated parallel mapping: A novel approach for mapping data parallel applications on cgras | |
Müller et al. | RTOS-aware modeling of embedded hardware/software systems |
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 |