KR102457183B1 - 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법 - Google Patents

공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법 Download PDF

Info

Publication number
KR102457183B1
KR102457183B1 KR1020160001008A KR20160001008A KR102457183B1 KR 102457183 B1 KR102457183 B1 KR 102457183B1 KR 1020160001008 A KR1020160001008 A KR 1020160001008A KR 20160001008 A KR20160001008 A KR 20160001008A KR 102457183 B1 KR102457183 B1 KR 102457183B1
Authority
KR
South Korea
Prior art keywords
core
translation block
target instruction
shared
translation
Prior art date
Application number
KR1020160001008A
Other languages
English (en)
Other versions
KR20170081952A (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 KR1020160001008A priority Critical patent/KR102457183B1/ko
Priority to US15/222,940 priority patent/US9836401B2/en
Publication of KR20170081952A publication Critical patent/KR20170081952A/ko
Application granted granted Critical
Publication of KR102457183B1 publication Critical patent/KR102457183B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/10Processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명의 실시 예에 따른 복수의 코어 모델들에 대하여 시뮬레이션을 수행하는 멀티-코어 시뮬레이터를 포함하고, 상기 멀티-코어 시뮬레이터를 실행하는 호스트 프로세서를 포함하는 멀티-코어 시뮬레이션 시스템의 멀티-코어 시뮬레이션 방법은 상기 복수의 코어 모델들에 대하여 공통으로 사용되는 공유 번역 블록 캐시를 워킹 메모리에 할당하는 단계, 제 1 코어 모델에서 수행될 제 1 타겟 명령어를 읽는 단계, 상기 제 1 타겟 명령어에 대응하고, 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 제 1 번역 블록을 생성하는 단계, 상기 제 1 번역 블록을 공유 번역 블록 캐시에 저장한 후, 상기 제 1 코어 모델에서 상기 제 1 번역 블록을 수행하는 단계, 제 2 코어 모델에서 수행될 제 2 타겟 명령어를 읽는 단계, 상기 제 2 타겟 명령어와 동일한 내용을 포함하는 번역 블록을 상기 공유 번역 블록 캐시에서 검색하는 단계, 그리고 상기 제 1 타겟 명령어가 제 2 타겟 명령어와 동일한 내용을 포함하는 경우, 상기 제 2 코어 모델에서 상기 제 1 번역 블록을 수행하는 단계를 포함한다.

Description

공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법{MULTI-CORE SIMULATION SYSTEM AND METHOD BASED ON SHARED TRANSLATION BLOCK CACHE}
본 발명은 시뮬레이션 시스템에 관한 것으로, 좀 더 구체적으로는 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법에 관한 것이다.
최근 다양한 차세대 스마트폰, 휴대형 디바이스, 스마트 TV등의 등장에 따라 실감형 2D/3D의 다양한 그래픽 처리를 지원하기 위하여 멀티-코어 프로세서와 그래픽 가속기를 통합한 퓨전 프로세서 개발과 관련된 기술이 제안되고 있다.
현재 스마트폰에 사용되는 프로세서는 종래의 싱글 코어에서 현재 듀얼 코어로 진화하고 있고, 프로세서의 발달과 기기의 소형화 추세에 비추어 볼 때 쿼드 코어 이상의 멀티-코어 형태로 발전할 전망이다. 또한, 차세대 모바일 단말에서는 수십 내지 수백 개의 프로세서가 집적된 멀티-코어 프로세서를 사용하여 생체 인식 및 증강 현실을 가능하게 할 전망이다.
종래의 프로세서는 클럭 속도를 빠르게 하여 성능을 개선하였으나, 속도가 빨라지면 전력 소모가 커지고 발열이 많아져 더 이상 속도를 높이기가 어려운 문제점이 있었다. 이러한 문제점을 해결하기 위하여 제안된 멀티-코어 프로세서는 여러 개의 코어를 탑재하기 때문에 개별 코어가 보다 낮은 주파수에서 동작할 수 있고, 싱글 코어에서 소모되는 전력을 여러 코어에 분산시키게 된다.
멀티-코어 프로세서의 탑재는 중앙 처리 장치가 두 개 이상 탑재된 것과 같으므로, 멀티-코어 프로세서를 지원하는 프로그램으로 작업하는 경우, 싱글 코어 프로세서에 비하여 빠른 작업을 수행할 수 있고, 멀티미디어 처리를 기본으로 하는 차세대 모바일 단말에서 동영상의 압축 및 복원, 고사양의 게임 실행, 증강 현실 구현 등과 같은 작업에서 싱글 코어 프로세서에 비하여 높은 성능을 확보한다.
멀티-코어 프로세서 기반의 최적 SoC 구조의 개발을 위해서는 상위 수준에서 SoC의 기능 및 성능을 조기 분석하기 위한 가상 플랫폼 기반 시스템 수준의 설계 방법론이 요구되며, 가상 플랫폼 설계 시 가장 중요한 핵심 요소는 멀티-코어의 기능을 function-accurate 수준으로 모델링한 에뮬레이터를 설계하는 것이다.
본 발명의 목적은 복수의 코어 모델들을 신속하게 시뮬레이션하는 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 복수의 코어 모델들에 대하여 시뮬레이션을 수행하는 멀티-코어 시뮬레이터를 포함하고, 상기 멀티-코어 시뮬레이터를 실행하는 호스트 프로세서를 포함하는 멀티-코어 시뮬레이션 시스템의 멀티-코어 시뮬레이션 방법은 상기 복수의 코어 모델들에 대하여 공통으로 사용되는 공유 번역 블록 캐시를 워킹 메모리에 할당하는 단계, 제 1 코어 모델에서 수행될 제 1 타겟 명령어를 읽는 단계, 상기 제 1 타겟 명령어에 대응하고, 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 제 1 번역 블록을 생성하는 단계, 상기 제 1 번역 블록을 공유 번역 블록 캐시에 저장한 후, 상기 제 1 코어 모델에서 상기 제 1 번역 블록을 수행하는 단계, 제 2 코어 모델에서 수행될 제 2 타겟 명령어를 읽는 단계, 상기 제 2 타겟 명령어와 동일한 내용을 포함하는 번역 블록을 상기 공유 번역 블록 캐시에서 검색하는 단계, 그리고 상기 제 1 타겟 명령어가 제 2 타겟 명령어와 동일한 내용을 포함하는 경우, 상기 제 2 코어 모델에서 상기 제 1 번역 블록을 수행하는 단계를 포함한다.
실시 예로서, 제 3 코어 모델에서 수행될 제 3 타겟 명령어를 읽는 단계, 상기 제 3 타겟 명령어와 동일한 내용을 포함하는 번역 블록을 상기 공유 번역 블록 캐시에서 검색하는 단계, 상기 공유 번역 블록 캐시에 상기 제 3 타겟 명령어와 동일한 내용을 포함하는 번역 블록이 없는 경우, 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 제 2 번역 블록을 생성하는 단계, 그리고 상기 제 2 번역 블록을 공유 번역 블록 캐시에 저장한 후, 상기 제 3 코어 모델에서 상기 제 2 번역 블록을 수행하는 단계를 더 포함한다.
실시 예로서, 상기 제 1 및 제 2 타겟 명령어를 읽는 단계에서, 상기 멀티-코어 시뮬레이터는 상기 제 1 및 제 2 타겟 명령어 각각에 대응하는 특징값을 계산한다.
실시 예로서, 상기 공유 번역 블록 캐시는 입력되는 순서에 따라 연결 리스트로 번역 블록들을 저장한다.
실시 예로서, 상기 공유 번역 블록 캐시는 각 타겟 명령어에 대응하는 특징값에 기초하여 번역 블록들을 이진 트리 구조로 저장한다.
실시 예로서, 상기 제 1 및 제 2 타겟 명령어는 바이너리 코드로 구성된다.
실시 예로서, 상기 제 1 타겟 명령어는 역어셈블 과정을 통하여 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 제 1 번역 블록으로 번역된다.
실시 예로서, 상기 제 1 및 제 2 타겟 명령어는, 상기 호스트 프로세서에 의해, 상기 제 1 및 제 2 코어 모델에서 수행될 C 코드를 컴파일하여 생성된다.
본 발명에 실시 예에 따른 멀티-코어 시뮬레이션 시스템은 복수의 코어 모델들을 시뮬레이션하는 멀티-코어 시뮬레이터를 실행하는 호스트 프로세서, 그리고 상기 멀티-코어 시뮬레이터 및 상기 코어 모델들에서 수행되는 타겟 명령어들을 로드하고, 상기 코어 모델들에서 공통으로 사용되는 공유 번역 블록 캐시를 포함하는 워킹 메모리를 포함하되, 상기 공유 번역 블록 캐시는 상기 타겟 명령어들을 번역하여 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 번역 블록들을 저장하고, 상기 멀티-코어 시뮬레이터는 상기 코어 모델들 중 어느 하나에서 제 1 타겟 명령어를 수행하는 경우 상기 공유 번역 블록 캐시에서 상기 제 1 타겟 명령어에 대응하는 제 1 번역 블록을 검색하고, 상기 제 1 번역 블록이 존재하는 경우 상기 제 1 타겟 명령어의 번역없이 상기 제 1 번역 블록을 실행한다.
실시 예로서, 상기 공유 번역 블록 캐시에 상기 제 1 번역 블록이 존재하지 않는 경우, 상기 멀티-코어 시뮬레이터는 상기 제 1 타겟 명령어를 상기 제 1 번역 블록으로 번역하여 상기 공유 번역 블록 캐시에 저장한다.
실시 예로서, 상기 멀티-코어 시뮬레이터는 상기 제 1 타겟 명령어로부터 특징값을 계산하고, 상기 특징값에 기초하여 상기 공유 번역 블록 캐시에서 상기 제 1 번역 블록을 검색한다.
본 발명의 실시 예에 따르면, 복수의 코어 모델들 사이에서 번역 블록을 저장하는 공유 번역 블록 캐시를 공유하여 복수의 코어 모델들을 신속하게 시뮬레이션하는 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 멀티-코어 시뮬레이션 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 멀티-코어 시뮬레이션 방법을 보여주는 순서도이다.
도 3은 도 1의 공유 번역 블록 캐시의 관리 방법을 보여주는 도면이다.
도 4는 도 3의 공유 번역 블록 캐시의 관리 방법을 보여주는 순서도이다.
도 5는 본 발명의 실시 예에 따른 공유 번역 블록 캐시의 저장 방법을 보여주는 도면이다.
도 6은 본 발명의 다른 실시 예에 따른 공유 번역 블록 캐시의 저장 방법을 보여주는 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 또한, 명세서 전체에 걸쳐서 동일한 참조 번호로 표시된 부분들은 동일한 구성 요소를 나타낸다.
본 명세서에서 특정한 용어들이 사용되었으나, 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다. 본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성 요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다. 이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 멀티-코어 시뮬레이션 시스템을 보여주는 블록도이다. 도 1을 참조하면, 멀티-코어 시뮬레이션 시스템(100)은 호스트 프로세서(110), 워킹 메모리(120), 입출력 장치(130) 및 저장 장치(140)를 포함할 수 있다.
호스트 프로세서(110)는 멀티-코어 시뮬레이션 시스템(100)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 호스트 프로세서(110)는 워킹 메모리(120)에 로드되는 운영 체제(OS, 미도시됨)를 실행할 것이다. 호스트 프로세서(110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)이나 에뮬레이터들을 실행할 것이다. 예를 들면, 호스트 프로세서(110)는 워킹 메모리(120)에 로드되는 멀티-코어 시뮬레이터(121)를 구동할 수 있다.
워킹 메모리(120)에는 운영 체제(OS)나 응용 프로그램들(Application Program)이 로드될 것이다. 멀티-코어 시뮬레이션 시스템(100)의 부팅시에 저장 장치(140)에 저장된 OS 이미지(미도시됨)가 부팅 시퀀스에 의거하여 워킹 메모리(120)로 로드될 것이다. 운영 체제(OS)에 의해서 멀티-코어 시뮬레이션 시스템(100)의 제반 입출력 동작들이 지원될 수 있다. 마찬가지로, 사용자의 의하여 선택되거나 기본적인 서비스 제공을 위해서 응용 프로그램들이 워킹 메모리(120)에 로드될 수 있다. 특히, 본 발명의 멀티-코어 시뮬레이터(121) 및 타겟 명령어(123)가 워킹 메모리(120)에 로드될 수 있다. 워킹 메모리(120)는 SRAM(Static Random Access Memory)이나 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리이거나, PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등의 불 휘발성 메모리일 수 있다.
멀티-코어 시뮬레이터(121)는 복수의 코어 모델들을 시뮬레이션하기 위한 프로그램일 수 있다. 멀티-코어 시뮬레이터(121)는 복수의 코어 모델들의 시뮬레이션 모델을 포함할 수 있다. 멀티-코어 시뮬레이터(121)는 바이너리 코드(binary code) 형식의 타겟 명령어(123)로부터 타겟 코어에서 실행될 명령어 셋(instruction set)을 읽을 수 있다. 멀티-코어 시뮬레이터(121)는 타겟 코어의 명령어 셋(instruction set)을 기초하여 타겟 명령어(123)에 대응하는 번역 블록(translation block)을 생성할 수 있다. 번역 블록은 공유 번역 블록 캐시(122)에 저장될 수 있다.
번역 블록들은 호스트 프로세서(110)에서 사용하는 명령어 셋(instruction set)으로 구성될 수 있다. 멀티-코어 시뮬레이터(121)는 공유 번역 블록 캐시(122)에 번역 블록들을 저장하고, 추후에 동일한 타겟 명령어(123)에 대하여는 저장된 번역 블록들을 사용하여 시뮬레이션을 수행할 수 있다. 따라서, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)를 매번 역어셈블(disassemble)하는 경우보다 시뮬레이션 시간을 단축할 수 있다. 이러한 방법을 동적 코드 변환(Dynamic Code Translation)이라고 정의한다.
예를 들면, 멀티-코어 시뮬레이터(121)는 타겟 코어의 명령어 셋(instruction set)을 기초하여 타겟 명령어(123)에 대응하는 번역 블록을 공유 번역 블록 캐시(122)에서 검색할 수 있다. 만약 타겟 명령어(123)에 대응하는 번역 블록이 있는 경우, 멀티-코어 시뮬레이터(121)는 그 번역 블록을 대응하는 타겟 코어에서 실행할 수 있다. 만약 타겟 명령어(123)에 대응하는 번역 블록이 없는 경우, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)의 역어셈블(disassemble) 과정을 수행하여 번역 블록을 생성하고, 공유 번역 블록 캐시(122)에 저장할 수 있다.
또한, 멀티-코어 시뮬레이터(121)는 복수의 코어 모델들에 대하여 하나의 공유 번역 블록 캐시(122)를 할당할 수 있다. 예를 들면, 코어 모델들 중 어느 하나의 시뮬레이션을 위해 생성된 번역 블록은 나머지 코어 모델들의 시뮬레이션을 위해 사용될 수 있다. 즉, 복수의 코어 모델들은 하나의 공유 번역 블록 캐시(122)를 공유할 수 있다. 따라서, 각 코어 모델을 위해 각각의 번역 블록 캐시를 할당하는 경우에 비하여 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)를 번역 블록으로 변환하는 역어셈블(disassemble) 과정의 횟수를 줄일 수 있다.
입출력 장치(130)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 입출력 장치(130)는 키보드, 마우스, 터치패드와 같은 입력 장치와 모니터 등의 출력 장치를 구비하여 타겟 명령어(123)를 생성하기 위한 C 코드들을 입력받을 수 있다.
저장 장치(140)는 멀티-코어 시뮬레이션 시스템(100)의 저장 매체(Storage Medium)로서 제공된다. 예를 들면, 저장 장치(140)는 응용 프로그램들(Application Program), 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 또한, 저장 장치(140)는 멀티-코어 시뮬레이션을 수행하기 위한 멀티-코어 시뮬레이터(121) 및 타겟 명령어(123)를 생성하기 위한 C 코드를 저장할 수 있다. 저장 장치(140)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)나 하드디스크 드라이브(HDD)로 제공될 수도 있다. 저장 장치(140)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 저장 장치(140)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불 휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다.
시스템 버스(150)는 멀티-코어 시뮬레이션 시스템(100)의 내부에서 네트워크를 제공하기 위한 인터커넥터로 제공될 것이다. 시스템 버스(150)를 통해서 호스트 프로세서(110), 워킹 메모리(120), 입출력 장치(130), 그리고 저장 장치(140)가 전기적으로 연결되고 상호 데이터를 교환할 수 있다. 하지만, 시스템 버스(150)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
이상의 설명에 따르면, 본 발명의 실시 예에 따른 멀티-코어 시뮬레이션 시스템(100)은 공유 번역 블록 캐시(122)를 시뮬레이션의 대상이 되는 코어 모델들 사이에서 공유할 수 있다. 따라서, 멀티-코어 시뮬레이션 시스템(100)은 시뮬레이션의 대상이 되는 코어 모델들 각각에 번역 블록 캐시를 할당하는 경우보다 시뮬레이션 시간을 단축할 수 있다.
도 2는 본 발명의 실시 예에 따른 멀티-코어 시뮬레이션 방법을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, 멀티-코어 시뮬레이션 시스템(100)은 좀 더 신속하게 복수의 코어에 대하여 시뮬레이션을 수행할 수 있다.
S110 단계에서, 호스트 프로세서(110)는 C 코드 명령어를 수신할 수 있다. 예를 들면, 호스트 프로세서(110)는 입출력 장치(130)를 통하여 C 코드 명령어를 수신할 수 있다. 또한, 호스트 프로세서(110)는 저장 장치(140)에 저장된 C 코드 명령어를 로드할 수 있다.
S120 단계에서, 호스트 프로세서(110)는 수신된 C 코드 명령어를 컴파일(Compile)하여 타겟 명령어(123)를 생성할 수 있다. 예를 들면, 타겟 명령어(123)는 바이너리 코드(binary code)로 구성된 기계어일 수 있다.
S130 단계에서, 호스트 프로세서(110)는, 멀티-코어 시뮬레이터(121)를 실행하여, 멀티-코어 시뮬레이터(121)에 의해 시뮬레이션이 수행되는 복수의 코어 모델들을 위한 공유 번역 블록 캐시(122)를 워킹 메모리(120)에 할당할 수 있다. 예를 들면, 공유 번역 블록 캐시(122)는 멀티-코어 시뮬레이터(121)에 의해 생성되는 번역 블록들을 저장할 수 있다. 공유 번역 블록 캐시(122)는 복수의 코어 모델들에 대하여 공통으로 사용될 수 있다. 멀티-코어 시뮬레이터(121)는 공유 번역 블록 캐시(122)를 참조하여 복수의 코어 모델들에 대한 시뮬레이션을 수행할 수 있다.
S140 단계에서, 호스트 프로세서(110)는 멀티-코어 시뮬레이터(121)에 의해 타겟 명령어(123)를 번역하여 번역 블록을 생성할 수 있다. 생성된 번역 블록은 공유 번역 블록 캐시(122)에 저장될 수 있다. 예를 들면, 적어도 하나의 타겟 명령어(123)는 하나의 번역 블록으로 번역될 수 있다. 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)의 기능을 파악하고 역어셈블(disassemble) 과정을 통해 번역 블록을 생성할 수 있다. 번역 블록은 호스트 프로세서(110)에서 사용되는 명령어 셋(instruction set)으로 구성된다. 따라서, 번역 블록은 호스트 프로세서(110)에서 빠르게 실행될 수 있다.
타겟 명령어(123)를 번역하기 전에, 멀티-코어 시뮬레이터(121)는 실행하려는 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시(122)에 존재하는지 검색할 수 있다. 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시에 존재하면, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)를 번역할 필요없이 대응하는 번역 블록을 사용할 수 있다. 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시(122)에 존재하지 않으면, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)를 번역하여 공유 번역 블록 캐시(122)에 저장할 수 있다. 또한, 멀티-코어 시뮬레이터(121)는 복수의 코어 모델들에 대하여 공유 번역 블록 캐시를 공유할 수 있다. 따라서, 코어 모델들 각각이 동일한 타겟 명령어(123)를 수행하는 경우, 멀티-코어 시뮬레이터(121)는 코어 모델들 중 하나에 대하여 생성한 번역 블록을 다른 코어 모델들에 대하여 사용할 수 있다. 공유 번역 블록 캐시(122)를 사용하는 경우, 멀티-코어 시뮬레이터(121)는 코어 모델들 각각에 대하여 개별적으로 번역 블록 캐시(translation block cache)를 사용하는 경우보다 시뮬레이션 시간을 단축할 수 있다.
S150 단계에서, 호스트 프로세서(110)는 멀티-코어 시뮬레이터(121)를 통해 공유 번역 블록 캐시(122)에 저장된 번역 블록들을 사용하여 복수의 코어 모델들의 시뮬레이션을 수행할 수 있다. 예를 들면, 멀티-코어 시뮬레이터(121)는 복수의 코어 모델들의 시뮬레이션을 수행할 수 있다. 멀티-코어 시뮬레이터(121)는 코어 모델들 각각의 성능 및 특성에 관한 모델링 정보를 포함할 수 있다. 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)에 대응하는 번역 블록을 타겟 코어에서 실행시킬 수 있다.
도 3은 도 1의 공유 번역 블록 캐시의 관리 방법을 보여주는 도면이다. 도 1 및 도 3을 참조하면, 멀티-코어 시뮬레이션 시스템(100)은 워킹 메모리(120)에 멀티-코어 시뮬레이터(121), 공유 번역 블록 캐시(122) 및 타겟 명령어(123)를 로드할 수 있다.
멀티-코어 시뮬레이션 시스템(100)은 복수의 코어 모델들을 시뮬레이션하기 위한 C 코드(124)를 수신할 수 있다. 예를 들면, C 코드(124)는 사용자에 의해 입출력 장치(130)를 통해 입력될 수 있다. 또한, C 코드(124)는 저장 장치(140)에 미리 저장되어 있을 수 있다.
멀티-코어 시뮬레이션 시스템(100)은 C 코드(124)를 컴파일(Compile)하여 타겟 명령어(123)로 변환할 수 있다. 예를 들면, 호스트 프로세서(110)는 C 코드(124)를 타겟 명령어(123)로 변환하여 워킹 메모리(120)에 저장할 수 있다. 타겟 명령어(123)는 바이너리 코드(binary code) 형식의 파일일 수 있다.
멀티-코어 시뮬레이션 시스템(100)은 멀티-코어 시뮬레이터(121)를 실행할 수 있다. 예를 들면, 멀티-코어 시뮬레이터(121)는 복수의 코어 모델들을 시뮬레이션하기 위한 프로그램일 수 있다. 즉, 멀티-코어 시뮬레이터(121)는 코어들의 시뮬레이션 모델을 포함할 수 있다. 멀티-코어 시뮬레이터(121)는 바이너리 코드(binary code) 형식의 타겟 명령어(123)로부터 타겟 코어에서 실행될 명령어 셋(instruction set)을 읽을 수 있다.(과정①) 멀티-코어 시뮬레이터(121)는 타겟 코어의 명령어 셋(instruction set)을 기초하여 타겟 명령어(123)에 대응하는 번역 블록을 공유 번역 블록 캐시(122)에서 검색할 수 있다.(과정②) 만약 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시(122)에 있는 경우, 멀티-코어 시뮬레이터(121)는 그 번역 블록을 대응하는 타겟 코어에서 실행할 수 있다. 만약 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시(122)에 없는 경우, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)의 역어셈블(disassemble) 과정을 수행하여 번역 블록을 생성하고, 공유 번역 블록 캐시(122)에 저장할 수 있다.(과정③)
번역 블록들(TB1, TB2)은 호스트 프로세서(110)에서 사용하는 명령어 셋(instruction set)으로 구성될 수 있다. 멀티-코어 시뮬레이터(121)는 번역 블록들(TB1, TB2)을 저장하고, 추후에 동일한 타겟 명령어(123)에 대하여는 저장된 번역 블록들(TB1, TB2)을 사용하여 시뮬레이션을 수행할 수 있다. 따라서, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)를 매번 역어셈블(disassemble)하는 경우보다 시뮬레이션 시간을 단축할 수 있다.
또한, 본 발명의 실시 예에 따른 멀티-코어 시뮬레이터(121)는 공유 번역 블록 캐시(122)를 시뮬레이션의 대상이 되는 코어 모델들 사이에서 공유할 수 있다. 따라서, 멀티-코어 시뮬레이터(121)는 시뮬레이션의 대상이 되는 코어 모델들 각각에 번역 블록 캐시를 할당하는 경우보다 시뮬레이션 시간을 단축할 수 있다.
도 4는 도 3의 공유 번역 블록 캐시의 관리 방법을 보여주는 순서도이다. 도 3 및 도 4를 참조하면, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시(122)에 있는지에 따라 타겟 명령어(123)의 역어셈블(disassemble) 과정의 수행 여부를 결정할 수 있다.
S210 단계에서, 멀티-코어 시뮬레이터(121)는 타겟 코어에서 수행될 타겟 명령어(123)를 읽을 수 있다. 예를 들면, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)의 바이너리 코드(binary code)를 읽어서 타겟 명령어(123)에 대응하는 번역 블록을 찾기 위한 특징값을 계산할 수 있다.
S220 단계에서, 멀티-코어 시뮬레이터(121)는 공유 번역 블록 캐시(122)에서 타겟 명령어(123)에 대응하는 번역 블록이 있는지 검색할 수 있다. 예를 들면, 멀티-코어 시뮬레이터(121)는 S210 단계에서 계산된 특징값을 이용하여 타겟 명령어(123)에 대응하는 번역 블록을 찾을 수 있다. 만약 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시(122)에 존재하는 경우, S250 단계로 이동한다. 만약 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시(122)에 존재하지 않는 경우, S230 단계로 이동한다.
S230 단계에서, 멀티-코어 시뮬레이터(121)는 타겟 명령어(123)에 대응하는 번역 블록을 생성할 수 있다. 예를 들면, 타겟 명령어(123)는 바이너리 코드(binary code)로 구성될 수 있다. 멀티-코어 시뮬레이터(121)는 역어셈블(disassemble) 과정을 통하여 타겟 명령어(123)를 호스트 프로세서(110)의 명령어 셋(instruction set)으로 구성되는 번역 블록으로 변환할 수 있다.
S240 단계에서, 멀티-코어 시뮬레이터(121)는 새롭게 생성된 번역 블록을 공유 번역 블록 캐시(122)에 저장할 수 있다. 예를 들면, 새롭게 생성된 번역 블록은 코어 모델들 중 어느 하나에서 실행되기 위해 생성될 수 있다. 하지만, 추후에 나머지 코어 모델들 중 어느 하나에서 동일한 타겟 명령어(123)를 실행하는 경우, 이미 생성된 번역 블록이 나머지 코어 모델들 중 어느 하나의 시뮬레이션을 위해 사용될 수 있다.
S250 단계에서, 멀티-코어 시뮬레이터(121)는 S210 단계에서 읽어온 타겟 명령어(123)에 대응하는 번역 블록을 타겟 코어에서 실행할 수 있다. 예를 들면, 타겟 코어에서 실행되는 번역 블록은 공유 번역 블록 캐시(122)에서 찾은 번역 블록이거나 새롭게 생성된 번역 블록일 수 있다. 이때 실행되는 번역 블록을 공유 번역 블록 캐시(122)에 찾을 수 있는 경우, 멀티-코어 시뮬레이션 시스템(100)은 시뮬레이션 시간을 단축할 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 멀티-코어 시뮬레이션 시스템(100)은 공유 번역 블록 캐시(122)를 시뮬레이션의 대상이 되는 코어 모델들 사이에서 공유할 수 있다. 따라서, 멀티-코어 시뮬레이션 시스템(100)은 시뮬레이션의 대상이 되는 코어 모델들 각각에 번역 블록 캐시를 할당하는 경우보다 시뮬레이션 시간을 단축할 수 있다.
도 5는 본 발명의 실시 예에 따른 공유 번역 블록 캐시에서 번역 블록들의 저장 방법을 보여주는 도면이다. 도 5를 참조하면, 멀티-코어 시뮬레이터(121)는 복수의 코어 모델들(201~204)을 포함할 수 있다. 코어 모델들(201~204)은 하나의 공유 번역 블록 캐시(122)를 공유할 수 있다.
도 5에서, 번역 블록들(TB 1~TB 6)은 연결 리스트(linked list)로 관리될 수 있다. 예를 들면, 번역 블록들(TB 1~TB 6)은 생성된 순서대로 저장될 수 있다. 멀티-코어 시뮬레이터(121)는 코어 모델들(201~204) 각각에서 실행될 타겟 명령어(123)의 특징값을 번역 블록들(TB 1~TB 6)의 특징값과 순차적으로 비교하여 타겟 명령어(123)에 대응하는 번역 블록을 찾을 수 있다.
번역 블록들(TB 1~TB 6)은 코어 모델들(201~204)에서 필요에 따라 생성될 수 있다. 예를 들면, 번역 블록들(TB 1, TB 3, TB 6)은 제 1 코어 모델(201)에서 실행되기 위해 생성된 것이다. 번역 블록(TB 2)은 제 3 코어 모델(203)에서 실행되기 위해 생성된 것이다. 번역 블록들(TB 4, TB 5)은 제 2 코어 모델(202)에서 실행되기 위해 생성된 것이다. 하지만, 번역 블록들(TB 1~TB 6)은 생성된 이후에 코어 모델들(201~204)에서 모두 사용될 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 공유 번역 블록 캐시의 저장 방법을 보여주는 도면이다. 도 6을 참조하면, 멀티-코어 시뮬레이터(121)는 복수의 코어 모델들(201~204)을 포함할 수 있다. 코어 모델들(201~204)은 하나의 공유 번역 블록 캐시(122)를 공유할 수 있다.
도 6에서, 번역 블록들(TB 1~TB 6)은 이진 트리(Binary Tree)의 데이터 구조를 기반으로 관리될 수 있다. 예를 들면, 번역 블록들(TB 1~TB 6)은 대응하는 타겟 명령어(123)의 특징값을 기준으로 저장될 수 있다. 멀티-코어 시뮬레이터(121)는 코어 모델들(201~204) 각각에서 실행될 타겟 명령어(123)의 특징값을 번역 블록들(TB 1~TB 6)의 특징값과 비교하여 이진 트리를 검색할 수 있다. 번역 블록 엔트리는 미리 정해진 기준에 따라 생성될 수 있다.
예시적으로, 번역 블록(TB 1)의 특징값은 번역 블록(TB 2)의 특징값보다 작을 수 있다. 번역 블록(TB 1)에 연결되는 번역 블록들은 번역 블록(TB 2)의 특징값보다 더 작은 특징값을 가질 수 있다. 번역 블록(TB 2)에 연결되는 번역 블록들은 번역 블록(TB 1)의 특징값보다 더 큰 특징값을 가질 수 있다. 번역 블록(TB 4)의 특징값은 번역 블록(TB 6)의 특징값보다 작을 수 있다. 번역 블록(TB 3)의 특징값은 번역 블록(TB 5)의 특징값보다 작을 수 있다. 하지만, 이러한 이진 트리 생성 방법은 예시적인 것으로 이것에 제한되지 않는다.
번역 블록들(TB 1~TB 6)은 코어 모델들(201~204)에서 필요에 따라 생성될 수 있다. 예를 들면, 번역 블록들(TB 1, TB 3, TB 6)은 제 1 코어 모델(201)에서 실행되기 위해 생성된 것이다. 번역 블록(TB 2)은 제 3 코어 모델(203)에서 실행되기 위해 생성된 것이다. 번역 블록들(TB 4, TB 5)은 제 2 코어 모델(202)에서 실행되기 위해 생성된 것이다. 하지만, 번역 블록들(TB 1~TB 6)은 생성된 이후에 코어 모델들(201~204)에서 모두 사용될 수 있다. 공유 번역 블록 캐시(122)를 이진 트리 기반으로 관리하고, 타겟 명령어(123)에 대응하는 번역 블록이 공유 번역 블록 캐시(122) 내에 존재하는 경우, 최대 log2N 번(N은 총 번역 블록의 개수)의 탐색으로 타겟 명령어(123)에 대응하는 번역 블록은 검색될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 멀티-코어 시뮬레이션 시스템
110: 호스트 프로세서
120: 워킹 메모리
121: 멀티-코어 시뮬레이터
122: 공유 번역 블록 캐시
123: 타겟 명령어
130: 입출력 장치
140: 저장 장치
150: 시스템 버스

Claims (12)

  1. 복수의 코어 모델들에 대하여 시뮬레이션을 수행하는 멀티-코어 시뮬레이터를 포함하고, 상기 멀티-코어 시뮬레이터를 실행하는 호스트 프로세서를 포함하는 멀티-코어 시뮬레이션 시스템의 멀티-코어 시뮬레이션 방법에 있어서:
    상기 복수의 코어 모델들에 대하여 공통으로 사용되는 공유 번역 블록 캐시를 워킹 메모리에 할당하는 단계;
    상기 복수의 코어 모델들 중 제 1 코어 모델에서 수행될 제 1 타겟 명령어를 읽는 단계;
    상기 제 1 타겟 명령어에 대응하고, 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 제 1 번역 블록을 생성하는 단계;
    상기 제 1 번역 블록을 공유 번역 블록 캐시에 저장한 후, 상기 제 1 코어 모델에서 상기 제 1 번역 블록을 수행하는 단계;
    상기 복수의 코어 모델들 중 제 2 코어 모델에서 수행될 제 2 타겟 명령어를 읽는 단계;
    상기 제 2 타겟 명령어와 동일한 내용을 포함하는 번역 블록을 상기 공유 번역 블록 캐시에서 검색하는 단계; 그리고
    상기 제 1 타겟 명령어의 내용이 제 2 타겟 명령어의 내용과 동일한 경우, 상기 제 2 코어 모델에 의해, 상기 공유 번역 블록 캐시에 저장된 상기 제 1 번역 블록을 수행하는 단계를 포함하는 멀티-코어 시뮬레이션 방법.
  2. 제 1 항에 있어서,
    제 3 코어 모델에서 수행될 제 3 타겟 명령어를 읽는 단계;
    상기 제 3 타겟 명령어와 동일한 내용을 포함하는 번역 블록을 상기 공유 번역 블록 캐시에서 검색하는 단계;
    상기 공유 번역 블록 캐시에 상기 제 3 타겟 명령어와 동일한 내용을 포함하는 번역 블록이 없는 경우, 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 제 2 번역 블록을 생성하는 단계; 그리고
    상기 제 2 번역 블록을 공유 번역 블록 캐시에 저장한 후, 상기 제 3 코어 모델에서 상기 제 2 번역 블록을 수행하는 단계를 더 포함하는 멀티-코어 시뮬레이션 방법.
  3. 제 1 항에 있어서,
    상기 제 1 및 제 2 타겟 명령어를 읽는 단계에서, 상기 멀티-코어 시뮬레이터는 상기 제 1 및 제 2 타겟 명령어 각각에 대응하는 특징값을 계산하는 멀티-코어 시뮬레이션 방법.
  4. 제 3 항에 있어서,
    상기 멀티-코어 시뮬레이터는 상기 특징값에 기초하여 상기 공유 번역 블록 캐시에서 각 타겟 명령어에 대응하는 번역 블록을 검색하는 멀티-코어 시뮬레이션 방법.
  5. 제 1 항에 있어서,
    상기 공유 번역 블록 캐시는 입력되는 순서에 따라 연결 리스트로 번역 블록들을 저장하는 멀티-코어 시뮬레이션 방법.
  6. 제 1 항에 있어서,
    상기 공유 번역 블록 캐시는 각 타겟 명령어에 대응하는 특징값에 기초하여 번역 블록들을 이진 트리 구조로 저장하는 멀티-코어 시뮬레이션 방법.
  7. 제 1 항에 있어서,
    상기 제 1 및 제 2 타겟 명령어는 바이너리 코드로 구성되는 멀티-코어 시뮬레이션 방법.
  8. 제 1 항에 있어서,
    상기 제 1 타겟 명령어는 역어셈블 과정을 통하여 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 제 1 번역 블록으로 번역되는 멀티-코어 시뮬레이션 방법.
  9. 제 1 항에 있어서,
    상기 제 1 및 제 2 타겟 명령어는, 상기 호스트 프로세서에 의해, 상기 제 1 및 제 2 코어 모델에서 수행될 C 코드를 컴파일하여 생성되는 멀티-코어 시뮬레이션 방법.
  10. 복수의 코어 모델들을 시뮬레이션하는 멀티-코어 시뮬레이터를 실행하는 호스트 프로세서; 그리고
    상기 멀티-코어 시뮬레이터 및 상기 복수의 코어 모델들에서 수행되는 타겟 명령어들을 로드하고, 상기 복수의 코어 모델들에서 공통으로 사용되는 공유 번역 블록 캐시를 포함하는 워킹 메모리를 포함하되,
    상기 공유 번역 블록 캐시는 상기 타겟 명령어들을 번역하여 상기 호스트 프로세서에서 사용되는 명령어 셋으로 구성되는 번역 블록들을 저장하고,
    상기 멀티-코어 시뮬레이터는 상기 복수의 코어 모델들 중 제1 코어 모델에서 제 1 타겟 명령어를 수행하는 경우 상기 공유 번역 블록 캐시에서 상기 제 1 타겟 명령어에 대응하는 제 1 번역 블록을 검색하고, 상기 복수의 코어 모델들 중 제2 코어 모델에 의해 생성된 상기 제 1 번역 블록이 상기 공유 번역 블록 캐시 내에 존재하는 경우 상기 제 1 타겟 명령어의 번역 없이 상기 제 1 번역 블록을 실행하는 멀티-코어 시뮬레이션 시스템.
  11. 제 10 항에 있어서,
    상기 공유 번역 블록 캐시 내에 상기 제 1 번역 블록이 존재하지 않는 경우, 상기 멀티-코어 시뮬레이터는 상기 제 1 타겟 명령어를 번역하여 상기 제 1 번역 블록을 생성하고, 상기 제1 번역 블록을 상기 공유 번역 블록 캐시에 저장하는 멀티-코어 시뮬레이션 시스템.
  12. 제 10 항에 있어서,
    상기 멀티-코어 시뮬레이터는 상기 제 1 타겟 명령어로부터 특징값을 계산하고, 상기 특징값에 기초하여 상기 공유 번역 블록 캐시에서 상기 제 1 번역 블록을 검색하는 멀티-코어 시뮬레이션 시스템.
KR1020160001008A 2016-01-05 2016-01-05 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법 KR102457183B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160001008A KR102457183B1 (ko) 2016-01-05 2016-01-05 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법
US15/222,940 US9836401B2 (en) 2016-01-05 2016-07-28 Multi-core simulation system and method based on shared translation block cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160001008A KR102457183B1 (ko) 2016-01-05 2016-01-05 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20170081952A KR20170081952A (ko) 2017-07-13
KR102457183B1 true KR102457183B1 (ko) 2022-10-21

Family

ID=59226336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160001008A KR102457183B1 (ko) 2016-01-05 2016-01-05 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법

Country Status (2)

Country Link
US (1) US9836401B2 (ko)
KR (1) KR102457183B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10038744B1 (en) * 2015-06-29 2018-07-31 EMC IP Holding Company LLC Intelligent core assignment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043194B2 (en) * 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
US7805710B2 (en) * 2003-07-15 2010-09-28 International Business Machines Corporation Shared code caching for program code conversion
JP5093509B2 (ja) 2008-10-28 2012-12-12 日本電気株式会社 Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
US8458635B2 (en) * 2009-12-04 2013-06-04 Synopsys, Inc. Convolution computation for many-core processor architectures
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
KR101330609B1 (ko) 2012-04-03 2013-11-18 주식회사 알투소프트 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법
US10656945B2 (en) * 2012-06-15 2020-05-19 International Business Machines Corporation Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction
KR101684677B1 (ko) 2013-12-26 2016-12-09 한국전자통신연구원 멀티코어 시스템의 시스템 성능 최적화 장치 및 방법
KR102033434B1 (ko) * 2014-01-28 2019-10-17 한국전자통신연구원 동적 컨텍스트 스위칭 기반 멀티코어 에뮬레이션 장치 및 방법
KR20160046223A (ko) * 2014-10-20 2016-04-28 한국전자통신연구원 멀티 쓰레딩 기반 멀티 코어 에뮬레이션 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
이재진 외 2명. Aldebaran 에뮬레이터 기반의 버츄얼 프로토타입. 2014년 12월
이종복. 임베디드 멀티코어 프로세서의 성능 연구. 2013년

Also Published As

Publication number Publication date
KR20170081952A (ko) 2017-07-13
US9836401B2 (en) 2017-12-05
US20170192885A1 (en) 2017-07-06

Similar Documents

Publication Publication Date Title
US10942716B1 (en) Dynamic computational acceleration using a heterogeneous hardware infrastructure
US8316355B2 (en) Method and system for analyzing parallelism of program code
US10740152B2 (en) Technologies for dynamic acceleration of general-purpose code using binary translation targeted to hardware accelerators with runtime execution offload
JP6090452B2 (ja) コンピューティングデバイス、方法、プログラム、および機械可読ストレージ媒体
US8570333B2 (en) Method and system for enabling managed code-based application program to access graphics processing unit
US9292359B2 (en) System and method for memory management
US20180275909A1 (en) Memory management for sparse matrix multiplication
KR101640769B1 (ko) 가상화 시스템 및 그것의 명령어 실행 방법
US8436862B2 (en) Method and system for enabling managed code-based application program to access graphics processing unit
CN104133775A (zh) 一种用于管理存储器的方法和装置
CN104731569A (zh) 一种数据处理方法及相关设备
US20200371827A1 (en) Method, Apparatus, Device and Medium for Processing Data
CN114490023A (zh) 一种基于arm和fpga的高能物理可计算存储设备
KR102457183B1 (ko) 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법
US20160274996A1 (en) Method to efficiently implement synchronization using software managed address translation
KR102315102B1 (ko) 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체
US20100199067A1 (en) Split Vector Loads and Stores with Stride Separated Words
CN103955394A (zh) 一种基于推迟提交的gpu虚拟化优化方法
US20160335064A1 (en) Infrastructure to support accelerator computation models for active storage
US8577936B2 (en) Fixup cache tool for object memory compaction in an information handling system
CN114168151A (zh) 基于容器的程序编译方法、装置、电子设备及存储介质
US20210149673A1 (en) Pre-instruction scheduling rematerialization for register pressure reduction
US8555046B2 (en) Computer system and its HW abstraction method
CN117251118B (zh) 支持虚拟NVMe仿真与集成方法及系统
WO2012138376A1 (en) Method and devices for determining parallelism of tasks of a program

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant