KR20110081964A - 브랜치 오버라이드를 이용하는 시뮬레이션된 프로세서 실행 - Google Patents
브랜치 오버라이드를 이용하는 시뮬레이션된 프로세서 실행 Download PDFInfo
- Publication number
- KR20110081964A KR20110081964A KR1020117007762A KR20117007762A KR20110081964A KR 20110081964 A KR20110081964 A KR 20110081964A KR 1020117007762 A KR1020117007762 A KR 1020117007762A KR 20117007762 A KR20117007762 A KR 20117007762A KR 20110081964 A KR20110081964 A KR 20110081964A
- Authority
- KR
- South Korea
- Prior art keywords
- branch
- processor
- execution
- directive
- instruction
- Prior art date
Links
- 238000004088 simulation Methods 0.000 claims abstract description 40
- 230000004044 response Effects 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 23
- 238000011156 evaluation Methods 0.000 abstract description 8
- 230000006399 behavior Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000011664 signaling Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008846 dynamic interplay Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 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/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- 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
-
- 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
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
프로세서 시뮬레이션 환경은 타깃 프로세서의 특성들에 따라 프로세서 명령어들의 실행을 시뮬레이션하도록 동작하는 프로세서 실행 모델, 및 브랜치 오버라이드 로직을 포함한다. 프로세서 실행 모델은 브랜치 명령어를 디코딩할 때, 브랜치 오버라이드 로직으로부터 브랜치 지시문을 요청한다. 이 요청에 응답하여, 브랜치 오버라이드 로직은 브랜치 평가를 분석하는 브랜치 지시문을 제공한다. 요청은 브랜치 명령어 어드레스를 포함할 수 있다. 브랜치 오버라이드 로직은 브랜치 명령어 어드레스를 이용하여, 타깃 프로세서와 호환가능한 프로세서 상에서 실행된 명령어들의 실행 트레이스를 인덱싱할 수 있다. 브랜치 지시문은 명령어 트레이스로부터 획득될 수 있거나 그렇지 않으면 브랜치 오버라이드 로직에 의해 계산될 수 있는 오버라이드 브랜치 타깃 어드레스를 포함할 수 있다. 이러한 방식으로, 복잡한 I/O가 모델링되지 않는 시뮬레이션 환경에서, 정밀한 프로그램 실행 오더가 시뮬레이션될 수 있다.
Description
본 발명은 일반적으로 프로세서 시뮬레이션에 관한 것이고, 구체적으로는 브랜치 오버라이드 로직(branch override logic)에 의해 브랜치 명령어들을 리졸빙(resolving)하는 시뮬레이션 방법론에 관한 것이다.
프로세서 디자인의 시뮬레이션은 본 기술 분야에 잘 알려져 있다. 실제로, 새로운 프로세서 디자인의 프로세스에는 광대한 시뮬레이션이 필수적이다. 시뮬레이션은 타깃 프로세서의 컴포넌트 기능 유닛들(component functional units)의 특성들(characteristics)을 정량(quantifying)하고, 새로 만들어진 모델(즉, 관련된 특성들의 총합)이 실제 프로세서 거동의 근접한 표현을 제공하도록, 그러한 특성들을 서로에 관련시킴으로써, 타깃 프로세서를 모델링하는 것을 수반한다.
한가지 알려진 시뮬레이션 방법은 HDL(Hardware Description Language) 구성들 또는 합성(synthesis)에 후속하는 그들의 게이트-레벨 실현들(gate-level realizations)과 같은 시스템 컴포넌트들의 하드웨어-정밀 모델(hardware-accurate model)을 제공하며, 컴포넌트들 간에서 전달되는 실제의 장치 상태들 및 신호들을 시뮬레이션한다. 이러한 시뮬레이션들은 매우 정밀하긴 하지만, 비교적 느리고, 계산적으로 부담이 크고, 하드웨어-정밀 모델이 개발된 때에만 디자인 프로세스 내에서 제대로 이루어질 수 있다. 따라서, 이들은 아키텍처 상의 트레이드오프를 분명하게 하고, 기본 성능을 벤치마킹하는 등에 있어서 유용한 초기의 시뮬레이션에 적합하지 않다.
보다 효율적인 시뮬레이션 방법은 하드웨어 기능 유닛들의 상위 레벨의 사이클-정밀 모델(cycle-accurate model)을 제공하며, 트랜잭션-지향 메시징 시스템(transaction-oriented messaging system)을 통한 그들의 상호작용을 모델링한다. 메시징 시스템은 각각의 클럭 사이클을 "업데이트" 페이즈 및 "통신" 페이즈로 분할함으로써 실시간 실행을 시뮬레이션한다. 실제의 기능 유닛 거동을 시뮬레이션하기 위해, 사이클-정밀 유닛 기능성은 적합한 업데이트 페이즈에서 시뮬레이션된다. 사이클-정밀 시스템 실행을 달성하기 위해, 컴포넌트간 시그널링(inter-component signaling)이 통신 페이즈들에 할당된다. 시뮬레이션의 정밀도는, 기능 유닛 모델들이 실제 유닛 기능성을 정밀하게 반영하고 컴포넌트간 시그널링을 정밀하게 연출하는 정도에 의존한다. 매우 정밀한 기능 유닛 모델들, 심지어는 프로세서와 같은 복합 시스템의 모델들이 본 기술분야에 알려져 있으며, 많은 애플리케이션들에서 실세계의 하드웨어 결과들을 높은 정밀도로 매칭시키는 시뮬레이션을 산출해낸다.
그러나, 기능 유닛 정밀도는 프로세서와 같은 복합 시스템의 고충실도 시뮬레이션을 획득하는 도전과제의 일부에 지나지 않는다. 의미있는 시뮬레이션은 명령어 실행 오더와 같이, 프로세서 상에서의 액티비티를 정밀하게 모델링할 것을 더 요구한다. 많은 애플리케이션들에서, 프로세서 액티비티는 단순히 관련 프로그램들을 프로세서 모델 상에서 실행함으로써 정밀하게 모델링될 수 있다. 그러나, 특히 실시간 프로세서 시스템을 모델링할 때, 이것이 항상 가능한 것은 아니다. 예를 들어, 입력/출력 거동(I/O)은 조사할 중요한 영역일 수 있지만, 실제의 I/O 환경은 정밀한 I/O 모델의 개발을 불가능하게 또는 비현실적이게 할 만큼 충분히 복잡하다. 모바일 통신 장치와 같은 많은 통신-지향 시스템들에서 상황이 그러하다.
프로세서 시뮬레이션 정밀도의 한 중대한 양태는 명령어 실행 오더이다. 모든 실세계 프로그램은 조건부 브랜치 명령어들(conditional branch instructions)을 포함하는데, 그러한 명령어들의 평가는 런타임까지 알려지지 않는다. 실제로, 많은 경우들에서, 프로세서 파이프라인 내에 깊게 있는 실행 스테이지에서 명령어가 평가될 때까지, 브랜치 평가가 발생하지 않는다. 파이프라인 정지(pipeline stalls) - 즉, 브랜치 조건이 평가될 때까지 실행을 중지하는 것 - 를 방지하기 위해, 최신 프로세서들은 정교한 브랜치 예측 기법들을 이용한다. 조건부 브랜치 명령어들의 평가는 명령어들이 디코딩될 때, 과거의 브랜치 거동 및/또는 다른 메트릭에 기초하여 예측되며, 그 예측에 기초하여 명령어 인출이 계속된다. 즉, 브랜치가 선택되는(taken) 것으로 예측되는 경우, 브랜치 타깃 어드레스(미리 알려질 수도 있고, 또는 동적으로 계산될 수도 있음)로부터 명령어들이 인출된다. 브랜치가 선택되지 않는 것으로 예측되는 경우, 명령어 인출은 (브랜치 명령어 어드레스에 후속하는 어드레스에서) 순차적으로 진행된다. 올바르지 않게 예측된 브랜치는 올바르지 않게 인출된 명령어들의 파이프를 클리어하기 위한 파이프라인 플러시(pipeline flush)뿐만 아니라, 올바른 명령어가 인출되는 동안의 정지(stall)를 요구하여, 실행 속도 및 전력 소모 모두에서 부정적인 영향을 미칠 수 있다. 따라서, 정밀한 브랜치 예측은 프로세서 성능의 주된 양태이며, 따라서 프로세서 시뮬레이션에서 큰 관심이 있는 영역이다. 그러나, 많은 브랜치 조건들의 레졸루션을 결정하는 I/O 환경은 시뮬레이션에서 정확하게 모델링하기에는 지나치게 복잡할 수 있다.
프로세서 시뮬레이션 환경은 타깃 프로세서의 특성들에 따라 프로세서 명령어들의 실행을 시뮬레이션하도록 동작하는 프로세서 실행 모델, 및 브랜치 오버라이드 로직(branch override logic)을 포함한다. 프로세서 실행 모델은 브랜치 명령어를 디코딩할 때, 브랜치 오버라이드 로직으로부터 브랜치 지시문(branch directive)을 요청한다. 이 요청에 응답하여, 브랜치 오버라이드 로직은 브랜치 평가를 분석하는 브랜치 지시문을 제공한다. 요청 및 브랜치 지시문은 다양한 형태를 취할 수 있다. 일 실시예에서, 요청은 시뮬레이션되고 있는 브랜치 명령어의 어드레스를 포함하고, 선택적으로는 예측된 브랜치 타깃 어드레스를 포함한다. 브랜치 오버라이드 로직은 브랜치 명령어 어드레스를 이용하여, 타깃 프로세서와 호환가능한 프로세서 상에서 실행된 명령어들의 실행 트레이스를 인덱싱할 수 있다. 브랜치 지시문은 명령어 트레이스로부터 획득될 수 있거나 그렇지 않으면 브랜치 오버라이드 로직에 의해 계산될 수 있는 오버라이드 브랜치 타깃 어드레스를 포함할 수 있다. 이러한 방식으로, 복잡한 I/O가 모델링되지 않는 시뮬레이션 환경에서, 정밀한 프로그램 실행 오더가 시뮬레이션될 수 있다.
도 1은 프로세서 시뮬레이션 환경의 기능 블록도이다.
도 2는 프로세서 실행을 시뮬레이션하는 방법의 흐름도이다.
도 2는 프로세서 실행을 시뮬레이션하는 방법의 흐름도이다.
도 1은 프로세서 실행 모델(12)을 포함하는 프로세서 시뮬레이션 환경(10)을 도시한 것이다. 프로세서 실행 모델(12)은 타깃 프로세서의 특성들에 따라 명령어들의 실행을 시뮬레이션한다. 타깃 프로세서는 기존의 프로세서일 수 있고, 더 가능성있게는 개발 중인 신규 프로세서일 수 있다. 프로세서 실행 모델(12)은 IU(instruction unit), FPU(floating point unit), MMU(memory management unit) 또는 그와 유사한 것과 같은 타깃 프로세서 내의 하나 이상의 기능 유닛들의 하드웨어-정밀 모델을 포함할 수 있다. 대안적으로 또는 추가적으로, 하나 이상의 기능 유닛은 기능 유닛 모델들 간에서의 제로-시뮬레이션-시간(zero-simulation-time) 데이터 및 매개변수 전달로, 사이클-정밀 기능 모델에 의해 모델링될 수 있다. 일반적으로, 프로세서 실행 모델(12)은 본 기술분야에 알려진 임의의 프로세서 시뮬레이션 모델을 포함할 수 있다.
프로세서 실행 모델(12)은 명령어 저장소(14)로부터 검색된 명령어들을 실행함으로써 타깃 프로세서의 동작을 시뮬레이션한다. 명령어 저장소(14)는 그 자체가 명령어 캐시(I-캐시)와 같은 메모리 기능의 시뮬레이션 모델을 포함할 수 있다. 대안적으로, 명령어 저장소(14)는 단순히 메모리에 로드되어 타깃 프로세서에 의해 실행될 수 있는 컴파일러/링커에 의해 생성된 객체 모델 등에서의 명령어들의 순차적인 리스팅을 포함할 수 있다. 일 실시예에서, 프로세서 실행 모델(12)은 명령어 어드레스(IA)(16)를 제공함으로써 명령어 저장소(14)로부터 하나 이상의 명령어를 인출한다. 다음으로, 명령어 저장소(14)는 하나 이상의 대응하는 명령어(18)를 프로세서 실행 모델(12)에 제공한다.
다양한 실시예들에서, 프로세서 시뮬레이션 환경(10)은 요청이나 요구에 따라 메모리의 시뮬레이션 모델들(20), 입력/출력 기능(I/O)(24) 등을 추가로 포함할 수 있다. 예를 들어, 메모리 모델(20)은 하나 이상의 캐시로서 구현될 수 있다. I/O 모델(24)은 UART, 병렬 포트, USB 인터페이스, 또는 기타 I/O 기능을 에뮬레이션할 수 있다. 프로세서 시뮬레이션 환경(10)은 다른 시뮬레이션 모델들, 또는 그래픽 프로세서, 암호화 엔진, 데이터 압축 엔진 또는 그와 유사한 것(도시되지 않음)과 같은 다른 회로에 대한 인터페이스의 모델들을 추가로 포함할 수 있다.
일부 경우들에서, 프로세서 시뮬레이션 환경(10)은 프로세서 실행 모델(12)의 의미있는 시뮬레이션을 보장하기 위해 충분히 정교한 I/O 모델을 제공하지 못한다. 예를 들어, 타깃 프로세서는 무선 통신 시스템 모바일 단말기 내에 배치될 수 있다. 모바일 단말기(및 그것의 프로세서)와 무선 통신 시스템 간의 복잡하고 동적인 상호작용은 정밀하게 시뮬레이션될 수 없다. 그러나, 모바일 단말기에 배치될 때의 타깃 프로세서의 성능은 매우 중요하고, 개발자들은 그러한 환경에서의 그것의 동작의 많은 양태를 반드시 시뮬레이션할 수 있어야 한다.
구체적으로, 타깃 프로세서의 성능에 직접적으로 깊게 영향을 주는 타깃 프로세서의 동작의 한 양태는 프로그램 실행 경로, 즉 브랜치 명령어들의 동적 레졸루션이다. 본 발명의 하나 이상의 실시예에 따르면, 알려진 또는 원하는 브랜치 명령어 거동이 브랜치 오버라이드 로직(26)에 의해 프로세서 실행 모델(12) 상에 부과된다. 브랜치 오버라이드 로직(26)은 프로세서 실행 모델(12)이 조건부 브랜치 명령어를 만날 때, 그 프로세서 실행 모델로부터 브랜치 지시문에 대한 요청(28)을 수신한다. 이에 응답하여, 브랜치 오버라이드 로직(26)은 프로세서 실행 모델(12)에 대해 브랜치 평가의 레졸루션(즉, 선택 또는 비선택)을 나타내는 브랜치 지시문(30)을 제공한다.
브랜치 오버라이드 로직(26)은 여러가지 방법으로 브랜치 지시문(30)을 도출할 수 있다. 예를 들어, 그 로직은 실행 트레이스(execution trace)(32) 내에 저장된, 관심 대상인 I/O 조건들 하에서(예를 들어, 무선 통신에 참가하고 있는 동안) 다른 프로세서(예를 들어, 타깃 프로세서의 이전 버전)에서 실제로 실행된 명령어들을 조사할 수 있다. 대안적으로, 브랜치 오버라이드 로직(26)은 랜덤, 프로그램 및 I/O 환경의 동적인 분석에 의한 환경에 관한 지식 및 코드의 분석에 기초하는 선택되지 않은 브랜치 평가에 대한 선택된 브랜치 평가의 미리 정해진 확률 분포, 또는 다른 접근방식과 같은 다양한 알고리즘에 따라 브랜치 지시문(30)을 계산할 수 있다. 이러한 방식으로, 타깃화된 I/O 환경이 정밀하게 시뮬레이션될 수 없더라도, 프로세서 실행 모델(12)의 의미있는 시뮬레이션 및 분석이 가능하다.
프로세서 실행 모델(12)로부터의 브랜치 지시문 요청(28) 및 브랜치 오버라이드 로직(26)으로부터의 브랜치 지시문(30)은 다양한 형태를 취할 수 있다. 예를 들어, 확률론적 테스트에 적합한 일 실시예에서, 프로세서 실행 모델(12)은 단순히 요청(28)으로서 신호를 어써트(assert)하고, 브랜치 지시문(30)으로서 단일 비트(예를 들어, 1=선택, 0=비선택)를 수신할 수 있다. 이러한 경우에, 브랜치 오버라이드 로직(26)은 실행되고 있는 코드 내의 각각의 개별 명령어 또는 그것의 기능에 무관하게, 소정의 확률 분포에 따라 브랜치 명령어들의 브랜치 레졸루션을 제어한다.
다른 실시예에서, 프로세서 실행 모델(12)로부터의 브랜치 지시문 요청(28)은 BIA(branch instruction address), 즉 실행이 시뮬레이션되고 있는 브랜치 명령어의 어드레스의 형태를 취할 수 있다. 본 실시예에서, 브랜치 오버라이드 로직(26)은 이전에 실행된 것으로서 대응 브랜치 명령어의 실제 브랜치 레졸루션을 발견하기 위해 BIA(및 선택적으로는 오프셋)를 이용하여 실행 트레이스(32)를 인덱싱할 수 있다. 본 실시예에서, 브랜치 오버라이드 로직(26)으로부터의 브랜치 지시문(30)은 OBTA(override branch target address), 즉 프로세서 실행 모델(12)이 새로운 명령어들을 실행하기 시작해야 하는 어드레스의 형태를 취할 수 있다.
프로세서 실행 모델(12) 내의 브랜치 예측 로직을 시뮬레이션하는데 특히 적합한 또 다른 실시예에서, 프로세서 실행 모델(12)로부터의 브랜치 지시문 요청(28)은 BIA 및 예측된 BTA(branch target address) 둘 다를 포함할 수 있다. 이러한 실시예에서, 브랜치 오버라이드 로직(26)으로부터의 브랜치 지시문(30)은 브랜치 예측의 정밀도를 나타내는 단일 비트(예를 들어, 1=올바르게 예측됨, 0=올바르지 않게 예측됨)를 포함할 수 있다. 브랜치 오버라이드 로직(26)은 브랜치 예측의 정밀도를 계산할 수 있고, 또는 BIA를 이용하여, 실행 트레이스(32) 내의 대응 브랜치 명령어의 실제 브랜치 레졸루션에 대한 비교에 의해 그것을 확인할 수 있다. 대안적으로, 브랜치 오버라이드 로직(26)은 OBTA의 형태로 브랜치 지시문(30)을 제공할 수 있다. OBTA는 선택되지 않은 브랜치 지시문(30)에 대한 적절하게 증분된 BIA이거나, 또는 선택된 브랜치 지시문(30)에 대한 BTA일 것이다. BTA는 프로세서 실행 모델(12)에 의해 계산된 바와 같은 예측된-선택 BTA에 매칭될 필요는 없음에 유의해야 하는데, 예를 들어, 브랜치 오버라이드 로직(26)은 적합한 OBTA를 제공함으로써 프로그램 실행 경로 내에 인터럽트 또는 다른 변경을 강제할 수 있다.
도 2는 프로세서 실행을 시뮬레이션하는 방법(100)을 도시한 것이다. 블록(102)에서 시작하여, 이 방법은 하나 이상의 명령어를 인출하는 것에 의해 개시된다(블록(104)). 본 기술분야에 알려져 있는 바와 같이, 프로세서 실행 모델(12)은 명령어들을 순차적으로 인출할 수 있고, 또는 I-캐시 라인과 같이 그룹으로 명령어들을 인출할 수 있다. 각각의 인출된 명령어에 대하여, 프로세서 실행 모델(12)은 명령어를 디코딩한다(블록(105)). 명령어가 브랜치 명령어가 아닌 경우(블록(106)), 프로세서 실행 모델(12)은 실행 파이프라인의 모델 내에 명령어를 로드하는 것 등에 의해 명령어의 실행을 시뮬레이션한다(블록(108)). 프로세서 실행 모델(12)이 브랜치 명령어를 디코딩할 때(블록(106)), 그것은 브랜치 오버라이드 로직(26)에 브랜치 지시문에 대한 요청(28)을 발행한다(블록(110)). 그 다음, 프로세서 실행 모델(12)은 브랜치 오버라이드 로직(26)으로부터 브랜치 지시문(30)을 수신한다(블록(112)). 그 다음, 프로세서 실행 모델(12)은 브랜치 지시문(30)에 의해 결정된 어드레스에서 명령어들을 인출 및 실행함으로써, 브랜치 명령어의 실행을 시뮬레이션한다(블록(114)).
요청(28) 및 브랜치 지시문(30)은 시뮬레이션된 전기 신호들을 포함할 수 있는데, 여기서 프로세서 실행 모델(12)(또는 적어도 그것의 인터페이스의 모델)은 HDL(hardware description language) 모델, 게이트 레벨 기능 모델 또는 그와 유사한 것과 같은 하드웨어-정밀 시뮬레이션 모델을 포함한다. 대안적으로, 프로세서 실행 모델(12)이 사이클-정밀 기능 모델을 포함하는 경우, 요청(28) 및 브랜치 지시문(30)은 프로세서 시뮬레이션 환경(10)에 대하여 정의된 트랜잭션 지향 메시징 시스템에 따라 프로세서 실행 모델(12)과 브랜치 오버라이드 로직(26) 간에서 전달되는 제로-시뮬레이션-시간 메시지들을 포함할 수 있다. 본 기술분야에 지식을 가진 자들은 임의의 특정한 시뮬레이션 환경에 대하여 적합한 요청(28) 및 브랜치 지시문(30) 시그널링을 쉽게 구현할 수 있다.
브랜치 오버라이드 로직(26)에 의해 브랜치 지시문(30)을 제공하면, 프로세서 시뮬레이션 환경(10)은 최소 I/O 모델링 또는 에뮬레이션으로 프로세서 실행 모델(12)을 시뮬레이션할 수 있게 된다. 프로세서 실행 모델(12)은 브랜치 결정 시점에서의 개입만으로, 타깃 프로세서와 같이 명령어들을 시뮬레이션할 수 있다. 이것은 고도의 시뮬레이션 정밀도가 요구되는 경우에 특히 중요하다. 또한, 브랜치 오버라이드 로직(26)을 프로세서 실행 모델(12)로부터 분리함으로써, 특정 시뮬레이션에 대한 요구나 요청에 따라, 다양한 브랜치 오버라이드 스킴들이 구현될 수 있다.
본 발명은 물론 본 발명의 본질적인 특성들을 벗어나지 않고서 여기에 구체적으로 제시된 것들과 다른 방식으로 실시될 수 있다. 본 실시예들은 모든 면에서 제한적인 것이 아니라 예시적인 것으로 고려되어야 하며, 첨부된 청구항들의 의미 및 균등 범위 내에 드는 모든 변화들이 거기에 포괄되도록 의도된다.
Claims (17)
- 프로세서 실행을 시뮬레이션하는 방법으로서,
프로세서 명령어를 디코딩하여, 상기 명령어가 브랜치 명령어(branch instruction)인지를 결정하는 단계; 및
브랜치 오버라이드 로직(branch override logic)으로부터 브랜치 지시문(branch directive)을 요청하는 것,
상기 요청에 응답하여 브랜치 오버라이드 로직으로부터 브랜치 지시문을 수신하는 것, 및
상기 브랜치 오버라이드 로직으로부터의 상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하는 것
에 의해, 상기 브랜치 명령어의 실행을 시뮬레이션하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 브랜치 오버라이드 로직으로부터 브랜치 지시문을 요청하는 것은 상기 오버라이드 로직에 브랜치 명령어 어드레스를 제공하는 것을 포함하는 방법. - 제2항에 있어서,
상기 브랜치 오버라이드 로직으로부터 브랜치 지시문을 요청하는 것은 상기 오버라이드 로직에 브랜치 타깃 어드레스를 제공하는 것을 더 포함하는 방법. - 제1항에 있어서,
상기 브랜치 오버라이드 로직으로부터 수신된 상기 브랜치 지시문은 오버라이드 브랜치 타깃 어드레스를 포함하는 방법. - 제5항에 있어서,
상기 브랜치 오버라이드 로직으로부터의 상기 브랜치 지시문에 응답하여 브랜치 프로세서 명령어의 실행을 시뮬레이션하는 것은 상기 오버라이드 브랜치 타깃 어드레스에서 시작하는 하나 이상의 명령어의 실행을 시뮬레이션하는 것을 포함하는 방법. - 제1항에 있어서,
상기 브랜치 오버라이드 로직으로부터 수신된 상기 브랜치 지시문은 1 비트를 포함하는 방법. - 프로세서 시뮬레이션 환경으로서,
타깃 프로세서의 특성들(characteristics)에 따라 프로세서 명령어들의 실행을 시뮬레이션하도록 동작하고, 브랜치 명령어를 디코딩할 때에 브랜치 지시문을 요청하고, 상기 요청에 응답하여 브랜치 지시문을 수신하며, 상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하도록 더 동작하는 프로세서 실행 모델; 및
상기 프로세서 실행 모델로부터 브랜치 지시문 요청을 수신하며, 상기 요청에 응답하여 브랜치 지시문을 제공하도록 동작하는 브랜치 오버라이드 로직
을 포함하는 프로세서 시뮬레이션 환경. - 제7항에 있어서,
상기 브랜치 오버라이드 로직에 의해 액세스가능한 명령어 실행 트레이스(instruction execution trace)를 더 포함하며,
상기 명령어 실행 트레이스는 상기 타깃 프로세서와 호환가능한 프로세서에 의해 이전에 실행된 명령어들을 포함하는 프로세서 시뮬레이션 환경. - 제7항에 있어서,
명령어 저장소(instruction store)를 더 포함하며,
상기 프로세서 실행 모델은 상기 명령어 저장소로부터 명령어들을 인출하는 프로세서 시뮬레이션 환경. - 제7항에 있어서,
명령어 저장소는 명령어 캐시를 모델링하는 프로세서 시뮬레이션 환경. - 제7항에 있어서,
상기 브랜치 지시문 요청은 시뮬레이션되고 있는 상기 브랜치 명령어의 어드레스를 포함하는 프로세서 시뮬레이션 환경. - 제11항에 있어서,
상기 브랜치 지시문 요청은 브랜치 타깃 어드레스를 더 포함하는 프로세서 시뮬레이션 환경. - 제7항에 있어서,
상기 브랜치 지시문은 오버라이드 브랜치 타깃 어드레스를 포함하는 프로세서 시뮬레이션 환경. - 제13항에 있어서,
상기 프로세서 실행 모델은, 상기 오버라이드 브랜치 타깃 어드레스에서 시작하는 하나 이상의 명령어의 실행을 시뮬레이션함으로써 상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하도록 동작하는 프로세서 시뮬레이션 환경. - 제7항에 있어서,
상기 브랜치 지시문은 1 비트를 포함하는 프로세서 시뮬레이션 환경. - 프로세서 실행 모델로서,
타깃 프로세서의 특성들에 따라 프로세서 명령어들의 실행을 시뮬레이션하도록 집합적으로(collectively) 동작하는 기능 유닛 모델들을 포함하며,
상기 기능 유닛 모델들은,
브랜치 명령어를 디코딩할 때에 브랜치 지시문을 요청하고,
상기 요청에 응답하여 브랜치 지시문을 수신하며,
상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하도록
더 동작하는 프로세서 실행 모델. - 제16항에 있어서,
상기 브랜치 지시문은 오버라이드 브랜치 타깃 어드레스를 포함하며,
상기 기능 유닛 모델들은, 상기 오버라이드 브랜치 타깃 어드레스에서 시작하는 하나 이상의 명령어의 실행을 시뮬레이션함으로써 상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하도록 집합적으로 동작하는 프로세서 실행 모델.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/204,047 | 2008-09-04 | ||
US12/204,047 US20100057427A1 (en) | 2008-09-04 | 2008-09-04 | Simulated processor execution using branch override |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20110081964A true KR20110081964A (ko) | 2011-07-15 |
Family
ID=41528650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117007762A KR20110081964A (ko) | 2008-09-04 | 2009-09-04 | 브랜치 오버라이드를 이용하는 시뮬레이션된 프로세서 실행 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20100057427A1 (ko) |
EP (1) | EP2335170A1 (ko) |
JP (1) | JP5514211B2 (ko) |
KR (1) | KR20110081964A (ko) |
CN (1) | CN102144232A (ko) |
MX (1) | MX2011001796A (ko) |
WO (1) | WO2010026475A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8966324B2 (en) * | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9256451B2 (en) * | 2012-06-29 | 2016-02-09 | Oracle International Corporation | Emulation time correction |
CN106383926A (zh) * | 2016-08-29 | 2017-02-08 | 北京中电华大电子设计有限责任公司 | 一种基于Cortex‑M系列处理器的指令预取方法及电路 |
CN110472372B (zh) * | 2019-09-10 | 2020-12-11 | 中国石油大学(北京) | 基于双重介质的渗透率预测方法及*** |
CN111324948B (zh) * | 2020-02-10 | 2023-04-25 | 上海兆芯集成电路有限公司 | 模拟方法及模拟*** |
KR102324259B1 (ko) * | 2021-07-02 | 2021-11-10 | 주식회사 페이크아이즈 | 복수의 플랫폼을 단일 소스코드로 개발 가능한 플랫폼 통합 sdk 제공 방법 및 장치 |
CN116302994B (zh) * | 2023-02-28 | 2023-10-10 | 浙江大学 | 一种程序路径的层次化匹配方法、装置、设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4306286A (en) * | 1979-06-29 | 1981-12-15 | International Business Machines Corporation | Logic simulation machine |
US6662360B1 (en) * | 1999-09-27 | 2003-12-09 | International Business Machines Corporation | Method and system for software control of hardware branch prediction mechanism in a data processor |
US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
US6263302B1 (en) * | 1999-10-29 | 2001-07-17 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating the cache of a target processor |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
WO2006054265A2 (en) * | 2004-11-19 | 2006-05-26 | Koninklijke Philips Electronics, N.V. | Co-simulation of a processor design |
US7870369B1 (en) * | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US7840397B2 (en) * | 2005-12-02 | 2010-11-23 | Derek Chiou | Simulation method |
-
2008
- 2008-09-04 US US12/204,047 patent/US20100057427A1/en not_active Abandoned
-
2009
- 2009-09-04 EP EP09786219A patent/EP2335170A1/en not_active Withdrawn
- 2009-09-04 WO PCT/IB2009/006759 patent/WO2010026475A1/en active Application Filing
- 2009-09-04 MX MX2011001796A patent/MX2011001796A/es not_active Application Discontinuation
- 2009-09-04 CN CN2009801344579A patent/CN102144232A/zh active Pending
- 2009-09-04 JP JP2011525640A patent/JP5514211B2/ja active Active
- 2009-09-04 KR KR1020117007762A patent/KR20110081964A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
MX2011001796A (es) | 2011-03-30 |
JP2012502340A (ja) | 2012-01-26 |
JP5514211B2 (ja) | 2014-06-04 |
WO2010026475A1 (en) | 2010-03-11 |
US20100057427A1 (en) | 2010-03-04 |
EP2335170A1 (en) | 2011-06-22 |
CN102144232A (zh) | 2011-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5298444B2 (ja) | プロセッサ設計を特徴付けるための方法、装置、論理プログラム及びシステム | |
US7558719B1 (en) | System and method for runtime analysis of system models for variable fidelity performance analysis | |
Stattelmann et al. | Fast and accurate source-level simulation of software timing considering complex code optimizations | |
KR20110081964A (ko) | 브랜치 오버라이드를 이용하는 시뮬레이션된 프로세서 실행 | |
US6772106B1 (en) | Retargetable computer design system | |
Meyerowitz et al. | Source-level timing annotation and simulation for a heterogeneous multiprocessor | |
US9235669B2 (en) | Method and an apparatus for automatic processor design and verification | |
US20170193055A1 (en) | Method and apparatus for data mining from core traces | |
US9235670B2 (en) | Method and an apparatus for automatic generation of verification environment for processor design and verification | |
CN113868068B (zh) | 一种内核性能测试方法、计算设备及存储介质 | |
Condia et al. | Evaluating the impact of transition delay faults in gpus | |
US20120185231A1 (en) | Cycle-Count-Accurate (CCA) Processor Modeling for System-Level Simulation | |
Desmet et al. | Archexplorer for automatic design space exploration | |
US8438003B2 (en) | Methods for improved simulation of integrated circuit designs | |
Frid et al. | Elementary operations: a novel concept for source-level timing estimation | |
US20140258688A1 (en) | Benchmark generation using instruction execution information | |
Zaman et al. | CAPE: A cross-layer framework for accurate microprocessor power estimation | |
US20110119044A1 (en) | Processor simulation using instruction traces or markups | |
Kim et al. | Performance simulation modeling for fast evaluation of pipelined scalar processor by evaluation reuse | |
Srinivasan et al. | Montesim: a monte carlo performance model for in-order microachitectures | |
Ibrahim et al. | Power consumption model at functional level for VLIW digital signal processors | |
Ashouri | Design space exploration methodology for compiler parameters in VLIW processors | |
Boespflug et al. | Predicting the Effect of Hardware Fault Injection | |
Chang et al. | Configurable fast cycle-approximate timing estimation for instruction-level emulators | |
Oki et al. | Evaluating the Effects of Hardware Configurations on the Execution of Radar Tracking Simulink Models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |