KR20130088285A - 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 - Google Patents
데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 Download PDFInfo
- Publication number
- KR20130088285A KR20130088285A KR1020120009426A KR20120009426A KR20130088285A KR 20130088285 A KR20130088285 A KR 20130088285A KR 1020120009426 A KR1020120009426 A KR 1020120009426A KR 20120009426 A KR20120009426 A KR 20120009426A KR 20130088285 A KR20130088285 A KR 20130088285A
- Authority
- KR
- South Korea
- Prior art keywords
- simulation
- basic block
- generating
- code
- level
- Prior art date
Links
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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 데이터 처리 시스템 및 그 시스템에서 시뮬레이션을 수행하는 방법에 관한 것으로, 어시뮬레이션이 수행될 어플리케이션 코드를 입력하는 과정과, 상기 입력된 어플리케이션 코드를 어셈블리 데이터 구성으로 변환하는 과정과, 상기 어셈블리 데이터 구성으로부터 기본 블록을 생성하는 과정과, 상기 생성된 기본 블록을 통해 상기 시뮬레이션을 수행하는 과정으로 구성된다. 따라서 시뮬레이션이 인스트럭션 단위에서 기본 블록 단위로 수행되기 때문에 시뮬레이션 수행 시간이 단축된다.
Description
본 발명은 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법에 관한 것으로, 다양한 Computing Resource가 있는 HMA(Heterogeneous Multi/Many Core) 환경에서 효율적인 CPU 활용을 위해 특정 CPU 상에서 소프트웨어 성능을 예측하는 방법에 관한 것이다.
일반적으로 사용자에 의해 선택되는 소프트웨어가 하드웨어에서 수행되기 위해서는 컴파일 과정을 거쳐야 한다. 그리고 효율적인 CPU 활용을 위해 특정 CPU상에서 소프트웨어 성능을 예측하기 위해 시뮬레이션을 수행해야 한다. 그러기 위해 해당 CPU를 목적으로 하는 Assembly 코드가 수신되면, 이를 Simulation 가능한 Host Assembly-level C 코드로 변환한다.
좀 더 상세히 설명하면, 우선 측정하고자 하는 C 코드가 Target Compiler를 이용하여 Assembly 코드로 컴파일된다. 그리고 Translator는 컴파일된 Assembly 코드를 Simulation이 가능한 C 코드로 생성한다. 생성된 Simulation C 코드는 Host Compiler를 이용하여 Simulation Object 파일로 컴파일 된다. 마지막으로 앞의 절차를 통하여 생성된 다른 Object 파일과 Simulation 등을 위한 Library와 링크되어 실행 가능한 Simulation 파일이 생성된다.
Translator는 Assembly 코드를 Main Data Structure로 변환하고, 이 데이터 구조체를 중심으로 다중의 연산을 수행한다. 이러한 연산으로 WORD EXPANSION, DEPENDENCY RESOLUTION, SYMBOL EXTRACTION 등이 대표적이다.
WORD EXPANSION은 TARGET CPU에 따라 해당 Assembly Instruction을 확장/축소하여 변환하는 연산이다. DEPENDENCY RESOLUTION은 Assembly Instruction이 수행하기 위하여 필요한 H/W Resource의 의존관계를 분석하여 시간정보를 삽입하는 연산이다. SYMBOL EXTRACTION은 Assembly File으로부터 함수 이름, 전역 변수, 정적 변수, Assembly 라벨 등의 Symbol 정보를 추출하여 SYMBOL TABLE를 생성한다. ELEMENTARY SIMULATION MODEL GENERATION, SIMULATION ASSEMBLY, SIMULATION EXPORT는 앞에서 생성한 정보를 통해 Assembly Instruction 단위로 Host Simulation C 코드를 생성하는 연산이다.
이러한 과정들을 통해 시뮬레이션을 수행하는 경우, 실행되는 시간이 오래 걸린다는 문제점이 발생한다. 즉 시뮬레이션 수행시, Assembly Instruction 단위로 시뮬레이션이 수행되기 때문에, 소요되는 시간이 늘어난다는 문제점이 발생한다.
따라서 본 발명에서는 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법을 제안한다.
상기와 같은 문제점을 해결하기 위해 본 발명에서 데이터 시뮬레이션 방법은 시뮬레이션이 수행될 어플리케이션 코드를 입력하는 과정과, 상기 입력된 어플리케이션 코드를 어셈블리 데이터 구성으로 변환하는 과정과, 상기 어셈블리 데이터 구성으로부터 기본 블록을 생성하는 과정과, 상기 생성된 기본 블록을 통해 상기 시뮬레이션을 수행하는 과정을 포함한다.
또한 본 발명에서 상기 기본 블록을 생성하는 과정은 상기 기본 블록의 수행 요소를 예측하여 시뮬레이션 레벨을 설정하는 과정과, 상기 설정된 시뮬레이션 레벨에 따라 시뮬레이션 코드를 생성하는 과정을 포함하는 것을 특징으로 한다.
그리고 본 발명에서 상기 기본 블록을 생성하는 과정은 상기 시뮬레이션 목적에 따라 상기 시뮬레이션 레벨을 설정하는 과정을 포함하는 것을 특징으로 한다.
다음으로 본 발명에서 상기 기본 블록을 생성하는 과정은 상기 어셈블리 데이터 구성에서 기본 블록(Basic Block)을 생성하기 위한 Entry Point와 Exit Point를 검색하는 과정과, 상기 검색한 Entry Point와 Exit Point 중 동일한 Entry Point와 Exit Point를 갖는 어셈블리 데이터 구성을 그룹핑하여 기본 블록으로 생성하는 과정을 포함하는 것을 특징으로 한다.
그리고 상기와 같은 문제점을 해결하기 위해 본 발명에서 데이터 시뮬레이션 시스템은 시뮬레이션이 수행될 어플리케이션 코드를 입력하는 타겟 컴파일 시스템과, 상기 입력된 어플리케이션 코드를 어셈블리 데이터 구성으로 변환하고, 어셈블리 데이터 구성으로부터 기본 블록을 생성하는 수행 추정 코드 생성 시스템과, 상기 생성된 기본 블록을 통해 상기 시뮬레이션을 수행하는 호스트 컴파일 시스템을 포함한다.
그리고 본 발명에서 상기 수행 추정 코드 생성 시스템은 상기 기본 블록의 수행 요소를 예측하여 시뮬레이션 레벨을 설정하고, 상기 설정된 시뮬레이션 레벨에 따라 시뮬레이션 코드를 생성하는 것을 특징으로 한다.
또한 본 발명에서 상기 수행 추정 코드 생성 시스템은 상기 시뮬레이션 목적에 따라 상기 시뮬레이션 레벨을 설정하는 것을 특징으로 한다.
다음으로 본 발명에서 상기 수행 추정 코드 생성 시스템은 상기 어셈블리 데이터 구성에서 기본 블록(Basic Block)을 생성하기 위한 Entry Point와 Exit Point를 검색하고, 상기 검색한 Entry Point와 Exit Point 중 동일한 Entry Point와 Exit Point를 갖는 어셈블리 데이터 구성을 그룹핑하여 기본 블록으로 생성하는 것을 특징으로 한다.
본 발명에 따르면, 시뮬레이션이 인스트럭션 단위에서 기본 블록 단위로 수행되기 때문에 시뮬레이션 수행 시간이 단축된다. 또한 기본 블록 단위로 시뮬레이션이 수행됨으로써, 인스트럭션별로 수행되던 시뮬레이션 수행 시간이 단축된다. 그리고 기본 불록 단위에서 시뮬레이션하고자 하는 레벨에 따라 선택적인 시뮬레이션 코드가 생성됨으로써, 시뮬레이션 수행 시간이 단축된다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 도시한 도면.
도 2는 본 발명의 실시예에 따라 구성된 기본 블록을 이용하여 시뮬레이션 레벨을 설정하는 과정을 도시한 도면.
도 3은 본 발명의 실시예에 따라 데이터 시뮬레이션 방법을 도시한 도면.
도 2는 본 발명의 실시예에 따라 구성된 기본 블록을 이용하여 시뮬레이션 레벨을 설정하는 과정을 도시한 도면.
도 3은 본 발명의 실시예에 따라 데이터 시뮬레이션 방법을 도시한 도면.
'데이터 처리 시스템'은 데이터를 생성하거나, 외부로부터 송수신되는 데이터를 처리할 수 있는 정보 처리 기기를 의미한다. 여기서 데이터 처리 시스템은 컴퓨터, 노트북, 테블릿 PC, 휴대 단말, 스마트 폰 등이 포함되며, 적어도 두 개의 처리 장치 다시 말해, 중앙 처리 장치 및 그래픽 처리 장치를 포함한다.
'컴파일러(Compiler) 또는 컴파일(Compile)'은 고급 언어로 작성된 어플리케이션을 그와 의미적으로 동등하며, 단말에서 즉시 실행될 수 있는 형태의 목적 어플리케이션으로 바꾸어 주는 프로그램 또는 과정을 의미한다. 즉 단말에서 특정 어플리케이션이 수행되기 위해서 단말이 직접 이해할 수 있는 언어로 바꿔야 한다. 그리고 이러한 일을 하는 프로그램이 컴파일러이다.
컴파일을 하기 위해 입력되는 어플리케이션은 원시 어플리케이션이라 하고, 이 어플리케이션을 기술한 언어는 소스 코드(Source Code)라고 한다. 그리고 컴파일되어 출력되는 어플리케이션을 목적 어플리케이션이라 하고, 목적 어플리케이션을 기술한 언어가 목적 코드(Object Language 또는 Target Language)라 한다. 하나의 어플리케이션을 컴파일되어 목적 어플리케이션으로 변경되면, 원시 어플리케이션을 수정하지 않는 한 계속 반복해서 수행할 수 있다.
'중앙 처리 장치(CPU; Central Processing Unit)'는 단어 그대로 단말의 중앙에서 모든 데이터를 처리하는 장치라는 의미로, 사용자로부터 입력된 명령어를 해석, 연산한 다음 그 결과를 출력하는 기능을 수행한다. CPU의 가장 기본적인 역할은 연산/계산 작업이다.
'그래픽 처리 장치(GPU;Graphics Processing Unit)'는 단말의 그래픽을 담당하는 장치로, 3D 그래픽을 주로 처리한다. 이에 GPU가 함께 구성된 단말에서 그래픽과 관련된 연산이 수행될 때 CPU의 부담이 줄어들 수 있다. 또한 GPU는 대량의 행렬과 벡터를 처리할 수 있으므로, 이러한 연산을 많이 사용하는 어플리케이션들을 수행할 수 있다.
이하 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템은 타겟 컴파일 시스템(TARGET Compile System), 수행 추정 코드 생성 시스템(Performance Estimation Code Generation System;110), 호스트 컴파일 시스템(Host Compile System)으로 구성된다.
TARGET Compile System은 성능을 예측하기 위한 S/W 코드를 TARGET Assembly Code를 생성하는데 사용된다. 다시 말해 TARGET Compile System은 Soft Ware가 실행될 Hard Ware인 CPU 또는 GPU에 맞는 Compiler를 이용하여 C 코드를 이용하여 Simulation Code 생성을 위한 Assembly Code를 생성한다. 이때 Compiler는 실제 개발에 사용될 Compiler를 사용할 수 있으며, 예로 GNU GCC(GNU Compiler Collection)를 들 수 있다.
Performance Estimation Code Generation System(110)은 TARGET Compile System에서 생성한 Assembly Code를 입력으로 받아 Simulation C 코드를 생성하는 기능을 담당한다. 그러기 위해 Performance Estimation Code Generation System(110)은 파서(Parser;115), 기본 블록 생성부(Generate Basic Block;120), 기본 블록 수행 추정부(Estimate Performance of basic block; 130), 심레벨 선택부(Sim Level;140), 기본 블록 변환부(Translate Basic Blocks Into SIM C Code;150)로 구성된다.
파서(115)는 TARGET Compile System에서 처리된 Assembly 파일을 읽어, 시스템이 인식할 수 있는 Assembly Data Structure로 변환을 수행한다.
기본 블록 생성부(120)는 파서(115)에서 변환된 Assembly Data Structure로부터 기본 블록(Basic Block)을 생성하기 위한 Entry Point와 Exit Point를 검색한다. 그리고 기본 블록 생성부(120)는 검색한 Entry Point와 Exit Point 중 동일한 Entry Point와 Exit Point를 갖는 Assembly Data Instruction을 그룹핑하여 기본 블록으로 생성한다. 여기서 Entry Point가 될 수 있는 곳은 함수의 시작 지점, Label, Branch 명령의 다음 Assembly Instruction 지점, Branch 명령의 목적 주소가 되는 지점이 될 수 있다. 그리고 Exit Point가 될 수 있는 곳을 Branch 명령이 있는 지점, Return 되는 지점, Program Counter Register를 조작하는 지점이 될 수 있다.
기본 블록 수행 추정부(130)는 기본 블록 생성부(120)에서 생성된 기본 블록별로 예측 가능한 요소인 해당 Assembly Instruction의 Performance를 예측한다. 이때 예측 가능한 요소로 Cycles, Power 등이 있으며, Performance 측정 중 선택 가능한 옵션으로 CPU Execution Cycles, Cache Hit/Miss Count, Power Consumption 등 있다. 그리고 기본 블록 수행 추정부(130)는 기본 블록 별로 Instruction 실행을 위하여 필요한 Resource를 계산한다. 그리고 기본 블록 수행 추정부(130)는 계산된 Resource를 기본 블록을 구성하는 Performance_T 필드에 저장한다.
심레벨 선택부(Sim Level;140)는 코드 분석을 통하여 Simulation의 레벨을 설정할 수 있다. 여기서 Simulation 중 선택 가능한 옵션으로 Branch에 영향을 주는 Assembly Instruction 만을 선택하여 Simulation을 하도록 하는 Control-Only 옵션, Cache Hit/Miss Count를 측정하기 위하여 Memory Access Address 계산에 영향을 주는 Assembly Instruction 만을 선택하여 Simulation을 하도록 하는 Cache-Effect 옵션, 모든 Assembly Instruction 이 수행되어 기능적으로 완전하도록 하는 ALL 옵션 등이 있을 수 있다. Control-Only 옵션은 Simulation을 위하여 기본적으로 선택되는 옵션이다. Cache-Effect 옵션은 Memory Read/Write 시에 Cache Effect를 예측하기 위하여 Cache Model에 입력을 생성하는 코드를 생성하도록 선택되는 옵션이다. Simulation의 레벨을 설정하는 방법에 대하여 도 2를 참조하여 설명한다.
기본 블록 변환부(150)는 앞서 생성된 기본 블록을 변환하여 통해 Simulation C 코드(SIM C code)를 표 1과 같이 생성한다.
좀 더 상세히 설명하면, 기본 블록 변환부(150)는 Simulation Level에 따라 Assembly Instruction의 Functionality를 C 코드로 변환한다. 그리고 기본 블록 변환부(150)는 기본 블록이 호출될 때마다 Performance 코드를 작성한다.
Host Compiler System은 Simulation Code Generator를 통하여 생성된 C 코드를 Simulation이 수행되는 Host인 Hard Ware에서 실행 가능한 파일로 생성할 수 있다. 다시 말해 Host Compile System은 생성된 Simulation 코드와 Simulation Library, 다른 Simulation 코드를 컴파일하고 링크하여 실행 가능한 Simulation 파일을 생성한다. 이때 사용 가능한 Host Compiler로 GNU GCC를 예로 들 수 있다.
도 2는 본 발명의 실시예에 따라 구성된 기본 블록을 이용하여 시뮬레이션 레벨을 설정하는 과정을 도시한 도면이다.
도 2를 참조하면, 기본 블록(210a, 210b, 210c)은 적어도 하나의 Simulation으로 구성된다. 그리고 하나의 Simulation은 Entry Point와 Exit Point를 가진 연속된 코드들로 구성된다. 이에 기본 블록(210a, 210b, 210c)을 구성하는 각 instruction들은 연속적으로 실행될 수 있다. 따라서 기본 블록(210a, 210b, 210c)은 각 Assembly instruction과 마찬가지로 실행의 단위로 생각할 수 있다. 기본 블록(210a, 210b, 210c)을 이용하여 데이터 처리 시스템에서 Instruction 단위보다 큰 단위인 Basic Block Simulation 수행이 가능하다. 그리고 Simulation 시간의 단축이 가능하다.
다음으로 기본 블록(210a, 210b, 210c)을 통해 Multi-level Simulation이 가능하다. 즉 코드 분석을 통하여 다양한 Level의 Simulation이 가능하다. 그러기 위해 각 기본 블록(210a, 210b, 210c)을 구성하는 Instruction들에 공통으로 적용된 Performance와 각 Instruction별 functionality(220a, 220b, 220c)가 Simulation을 수행하기 위해 추출된다. 이때 Simulation 목적에 따라 Basic Block의 시뮬레이션 레벨이 설정된다. 그리고 각 Instruction별로 추출된 Functionality 중에서 Simulation하고자 하는 레벨에 따라 코드 분석을 하여 Functionality(230a, 230b, 230c)가 선택된다.
이와 같이 functionality를 선택하기 위해 각 기본 블록에 설정되는 Simulation Level은 다음과 같다.
-Level 1 : 가장 Minimal한 Simulation으로 Branch에 관련된 Instruction만 Simulation을 수행한다.
-Level 2 : Memory 접근 주소와 관련된 Instruction만 Simulation 수행하여 Cache Effect를 고려한 성능 측정이 예측을 가능하게 한다.
-Level 3 : Target 이 되는 코드가 다른 소스 코드에서 호출 등으로 사용될 경우, Out에 관련된 Instruction의 Simulation을 수행한다.
-Level 4 : 모든 Functionality에 대한 Simulation을 수행한다.
예를 들어 기본 블록이 Level 1로 설정된 경우, Simulation은 표 2와 같이 구현될 수 있다.
Performance Estimation Code Generation System은 Level 1로 설정된 Basic Block을 구성하는 Instruction 중에서 Condition을 생성하는 Instruction을 찾는다. 그리고 Performance Estimation Code Generation System은 계산을 위해 사용되는 Register를 목적 Register로 사용하는 Instruction을 찾는다. 마지막으로 Host Compiler System은 찾은 Instruction을 이용하여 Simulation을 수행한다.
이외에도 설정된 Level에 따라 Simulation 수행시, 기본적인 CPU Execution Time 예측을 위해 Branch 조건 계산을 위한 Dependency에 해당하는 instructions가 simulation될 수 있다. 또한 Cache Effect 를 고려하기 위해 Memory Access Address 관련된 instructions이 추가로 simulation될 수 있다. 또는 다른 함수들과 함께 Simulation 등을 위하여, 모든 기능들이 C 코드로 구현되어 simulation될 수 있다. 이와 같이 Simulation 목적에 따라 Basic Block의 시뮬레이션 레벨이 설정됨으로써, Functionality가 선택적으로 Simulation될 수 있다. 따라서 Simulation 시간의 단축이 가능하다.
도 3은 본 발명의 실시예에 따라 데이터 시뮬레이션 방법을 도시한 도면이다.
도 3을 참조하면, 데이터 처리 시스템은 310단계에서 시뮬레이션이 수행될 어플리케이션 코드를 입력한다. 그리고 데이터 처리 시스템은 320단계에서 입력된 어플리케이션 코드를 이용하여 어셈블리 데이터 구성으로 변환한다. 다음으로 데이터 처리 시스템은 330단계에서 변환된 데이터 구성으로부터 기본 블록을 생성한다. 좀 더 상세히 설명하면, 데이터 처리 시스템은 Assembly Data Structure로부터 기본 블록(Basic Block)을 생성하기 위한 Entry Point와 Exit Point를 검색한다. 그리고 데이터 처리 시스템은 검색한 Entry Point와 Exit Point 중 동일한 Entry Point와 Exit Point를 갖는 Assembly Data Instruction을 그룹핑하여 기본 블록으로 생성한다.
데이터 처리 시스템은 340단계에서 기본 블록의 수행 요소를 예측한다. 다음으로 데이터 처리 시스템은 350단계에서 예측한 수행 요소로 시뮬레이션 레벨을 설정한다. 이때 데이터 처리 시스템은 Simulation을 수행하기 위해 기본 블록을 구성하는 Instruction들에 공통으로 적용된 Performance와 각 Instruction별 functionality를 추출한다. 이때 Simulation 목적에 따라 Basic Block의 시뮬레이션 레벨이 설정된다. 그리고 데이터 처리 시스템은 각 Instruction별로 추출된 Functionality 중에서 Simulation하고자 하는 레벨에 따라 코드 분석을 하여 Simulation을 수행할 Functionality를 선택한다.
데이터 처리 시스템은 360단계에서 설정된 시뮬레이션 레벨에 따른 시뮬레이션 코드를 생성한다. 즉 데이터 처리 시스템은 선택된 Functionality를 C 코드로 변환한다. 그리고 데이터 처리 시스템은 기본 블록이 호출될 때마다 Performance 코드를 작성한다. 다음으로 데이터 처리 시스템은 변환된 C 코드를 Simulation이 수행되는 Host인 Hard Ware에서 실행 가능한 파일로 생성한다.
데이터 처리 시스템은 370단계에서 시뮬레이션을 수행할 해당 하드웨어에서 처리하기 위한 컴파일을 수행한다. 마지막으로 데이터 처리 시스템은 380단계에서 해당 하드웨어를 통해 시뮬레이션을 수행한다.
이러한 과정들을 통해 Simulation이 Instruction 단위에서 기본 블록 단위로 수행되기 때문에 시뮬레이션 수행 시간이 단축된다. 또한 기본 블록 단위별로 설정된 레벨에 따라 Simulation이 수행됨으로써, Instruction별로 수행되던 시뮬레이션 수행 시간이 단축된다. 그리고 기본 불록 단위에서 Simulation하고자 하는 레벨에 따라 선택적인 Simulation 코드가 생성됨으로써, Simulation 수행 시간이 단축된다.
한편 본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되지 않으며, 후술되는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
Claims (10)
- 데이터 처리 시스템의 데이터 시뮬레이션 방법에 있어서,
시뮬레이션이 수행될 어플리케이션 코드를 입력하는 과정과,
상기 입력된 어플리케이션 코드를 어셈블리 데이터 구성으로 변환하는 과정과,
상기 어셈블리 데이터 구성으로부터 기본 블록을 생성하는 과정과,
상기 생성된 기본 블록을 통해 상기 시뮬레이션을 수행하는 과정을 포함하는 데이터 시뮬레이션 방법. - 제1항에 있어서, 상기 기본 블록을 생성하는 과정은
상기 기본 블록의 수행 요소를 예측하여 시뮬레이션 레벨을 설정하는 과정과,
상기 설정된 시뮬레이션 레벨에 따라 시뮬레이션 코드를 생성하는 과정을 포함하는 것을 특징으로 하는 데이터 시뮬레이션 방법. - 제2항에 있어서, 상기 기본 블록을 생성하는 과정은
상기 시뮬레이션 목적에 따라 상기 시뮬레이션 레벨을 설정하는 과정을 포함하는 것을 특징으로 하는 데이터 시뮬레이션 방법. - 제3항에 있어서, 상기 시뮬레이션 레벨을 설정하는 과정은
상기 기본 블록을 구성하는 적어도 하나의 인스트럭션에 공통으로 적용된 Performance와 각 인스트럭션 별 functionality를 추출하는 과정과,
상기 인스트럭션별로 추출된 Functionality 중에서 시뮬레이션을 수행할 Functionality를 선택하는 과정을 포함하는 것을 특징으로 하는 데이터 시뮬레이션 방법. - 제1항에 있어서, 상기 기본 블록을 생성하는 과정은
상기 어셈블리 데이터 구성에서 기본 블록(Basic Block)을 생성하기 위한 Entry Point와 Exit Point를 검색하는 과정과,
상기 검색한 Entry Point와 Exit Point 중 동일한 Entry Point와 Exit Point를 갖는 어셈블리 데이터 구성을 그룹핑하여 기본 블록으로 생성하는 과정을 포함하는 것을 특징으로 하는 데이터 시뮬레이션 방법. - 시뮬레이션이 수행될 어플리케이션 코드를 입력하는 타겟 컴파일 시스템과,
상기 입력된 어플리케이션 코드를 어셈블리 데이터 구성으로 변환하고, 어셈블리 데이터 구성으로부터 기본 블록을 생성하는 수행 추정 코드 생성 시스템과,
상기 생성된 기본 블록을 통해 상기 시뮬레이션을 수행하는 호스트 컴파일 시스템을 포함하는 데이터 시뮬레이션 시스템. - 제6항에 있어서, 상기 수행 추정 코드 생성 시스템은
상기 기본 블록의 수행 요소를 예측하여 시뮬레이션 레벨을 설정하고, 상기 설정된 시뮬레이션 레벨에 따라 시뮬레이션 코드를 생성하는 것을 특징으로 하는 데이터 시뮬레이션 시스템. - 제7항에 있어서, 상기 수행 추정 코드 생성 시스템은
상기 시뮬레이션 목적에 따라 상기 시뮬레이션 레벨을 설정하는 것을 특징으로 하는 데이터 시뮬레이션 시스템. - 제8항에 있어서, 상기 수행 추정 코드 생성 시스템은
상기 기본 블록을 구성하는 적어도 하나의 인스트럭션에 공통으로 적용된 Performance와 각 인스트럭션 별 functionality를 추출하고, 상기 인스트럭션별로 추출된 Functionality 중에서 시뮬레이션을 수행할 Functionality를 선택하는 것을 특징으로 하는 데이터 시뮬레이션 시스템. - 제6항에 있어서, 상기 수행 추정 코드 생성 시스템은
상기 어셈블리 데이터 구성에서 기본 블록(Basic Block)을 생성하기 위한 Entry Point와 Exit Point를 검색하고, 상기 검색한 Entry Point와 Exit Point 중 동일한 Entry Point와 Exit Point를 갖는 어셈블리 데이터 구성을 그룹핑하여 기본 블록으로 생성하는 것을 특징으로 하는 데이터 시뮬레이션 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120009426A KR20130088285A (ko) | 2012-01-31 | 2012-01-31 | 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 |
PCT/KR2013/000757 WO2013115561A1 (ko) | 2012-01-31 | 2013-01-30 | 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 |
US14/376,129 US9606779B2 (en) | 2012-01-31 | 2013-01-30 | Data processing system and data simulation method in the system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120009426A KR20130088285A (ko) | 2012-01-31 | 2012-01-31 | 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130088285A true KR20130088285A (ko) | 2013-08-08 |
Family
ID=48905534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120009426A KR20130088285A (ko) | 2012-01-31 | 2012-01-31 | 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9606779B2 (ko) |
KR (1) | KR20130088285A (ko) |
WO (1) | WO2013115561A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130088285A (ko) * | 2012-01-31 | 2013-08-08 | 삼성전자주식회사 | 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 |
US10162611B2 (en) | 2016-01-04 | 2018-12-25 | Syntel, Inc. | Method and apparatus for business rule extraction |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
EP1159693A2 (en) * | 1999-02-05 | 2001-12-05 | Tensilica, Inc. | Automated processor generation system & method for designing a configurable processor |
KR100323372B1 (ko) * | 1999-02-26 | 2002-02-19 | 서평원 | 이엠 코드에 대한 실행시간 스택의 타입 분석 방법 |
US6751583B1 (en) * | 1999-10-29 | 2004-06-15 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating a target processor using binary translation |
US7702499B1 (en) * | 2000-05-02 | 2010-04-20 | Cadence Design Systems, Inc. | Systems and methods for performing software performance estimations |
US7080365B2 (en) * | 2001-08-17 | 2006-07-18 | Sun Microsystems, Inc. | Method and apparatus for simulation system compiler |
JP2005216177A (ja) * | 2004-01-30 | 2005-08-11 | Toshiba Corp | コンフィグラブル・プロセッサの設計装置、設計方法、ライブラリの最適化方法、プロセッサ、及びプロセッサを備えた半導体装置の製造方法 |
JP4599270B2 (ja) * | 2004-10-05 | 2010-12-15 | ダッソー システムズ ソリッドワークス コーポレイション | 最小許容差スタックおよび最大許容差スタックの自動的計算を実行可能な方法、コンピュータ可読データ記憶媒体、およびコンピュータ支援設定システム |
US7730470B2 (en) * | 2006-02-27 | 2010-06-01 | Oracle America, Inc. | Binary code instrumentation to reduce effective memory latency |
US8219378B1 (en) * | 2007-09-28 | 2012-07-10 | The Mathworks, Inc. | Automatic numerical simulation of processor environment |
KR100938489B1 (ko) * | 2007-10-25 | 2010-01-28 | 김태효 | Ipet기법을 이용하여 실시간 시스템의 최장수행시간을분석하는 자동화된 도구 및 방법 |
US7844928B2 (en) * | 2008-01-11 | 2010-11-30 | International Business Machines Corporation | Method and apparatus for evaluating integrated circuit design performance using enhanced basic block vectors that include data dependent information |
US7904870B2 (en) * | 2008-04-30 | 2011-03-08 | International Business Machines Corporation | Method and apparatus for integrated circuit design model performance evaluation using basic block vector clustering and fly-by vector clustering |
JP5151722B2 (ja) * | 2008-06-20 | 2013-02-27 | ソニー株式会社 | データ処理装置およびその方法、並びにプログラム |
US20120144380A1 (en) * | 2010-12-07 | 2012-06-07 | Samsung Electronics Co. Ltd. | Method for generating delta file using basic blocks |
US20120197625A1 (en) * | 2011-01-28 | 2012-08-02 | National Tsing Hua University | Data-dependency-Oriented Modeling Approach for Efficient Simulation of OS Preemptive Scheduling |
JP5961971B2 (ja) * | 2011-10-12 | 2016-08-03 | 富士通株式会社 | シミュレーション装置,方法,およびプログラム |
KR20130088285A (ko) * | 2012-01-31 | 2013-08-08 | 삼성전자주식회사 | 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 |
-
2012
- 2012-01-31 KR KR1020120009426A patent/KR20130088285A/ko not_active Application Discontinuation
-
2013
- 2013-01-30 WO PCT/KR2013/000757 patent/WO2013115561A1/ko active Application Filing
- 2013-01-30 US US14/376,129 patent/US9606779B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US9606779B2 (en) | 2017-03-28 |
WO2013115561A1 (ko) | 2013-08-08 |
US20140372992A1 (en) | 2014-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112352219B (zh) | 自动化编译的系统和方法 | |
US20080178165A1 (en) | Computation of elementwise expression in parallel | |
EP2561441A1 (en) | Improved embedded system performance | |
KR101448410B1 (ko) | 알고리즘들 및 사양으로부터의 자동 최적 집적 회로 생성기 | |
US7356672B2 (en) | Warp processor for dynamic hardware/software partitioning | |
Mikushin et al. | KernelGen--The Design and Implementation of a Next Generation Compiler Platform for Accelerating Numerical Models on GPUs | |
CN107038060B (zh) | 一种页面着色器代码调试方法、装置 | |
US12039305B2 (en) | Method for compilation, electronic device and storage medium | |
Tanaka et al. | mruby--Rapid Software Development for Embedded Systems | |
Zhu et al. | An ultra-fast instruction set simulator | |
Moren et al. | Automatic mapping for OpenCL-programs on CPU/GPU heterogeneous platforms | |
CN104407968A (zh) | 一种通过静态分析测算代码指令最长运行时间的方法 | |
Wang et al. | Software performance simulation strategies for high-level embedded system design | |
CN110210046B (zh) | 应用程序及专用指令集处理器一体化敏捷设计方法 | |
KR20130088285A (ko) | 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법 | |
Yang et al. | An approach to build cycle accurate full system VLIW simulation platform | |
US11556357B1 (en) | Systems, media, and methods for identifying loops of or implementing loops for a unit of computation | |
Stripf et al. | A cycle-approximate, mixed-ISA simulator for the KAHRISMA architecture | |
JP2007080049A (ja) | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 | |
Helmstetter et al. | Fast instruction set simulation using LLVM-based dynamic translation | |
Thomsen et al. | From safety critical Java programs to timed process models | |
Basthikodi et al. | Classifying a program code for parallel computing against hpcc | |
Rashid | An efficient cycle accurate performance estimation model for hardware software co-design | |
de Aledo Marugán et al. | Hardware performance estimation by dynamic scheduling | |
JPH08180094A (ja) | アーキテクチャ・シミュレータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |