KR20110081964A - 브랜치 오버라이드를 이용하는 시뮬레이션된 프로세서 실행 - Google Patents

브랜치 오버라이드를 이용하는 시뮬레이션된 프로세서 실행 Download PDF

Info

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
Application number
KR1020117007762A
Other languages
English (en)
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 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘)
Publication of KR20110081964A publication Critical patent/KR20110081964A/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/10Processors

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

브랜치 오버라이드를 이용하는 시뮬레이션된 프로세서 실행{SIMULATED PROCESSOR EXECUTION USING BRANCH OVERRIDE}
본 발명은 일반적으로 프로세서 시뮬레이션에 관한 것이고, 구체적으로는 브랜치 오버라이드 로직(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는 프로세서 실행을 시뮬레이션하는 방법의 흐름도이다.
도 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)

  1. 프로세서 실행을 시뮬레이션하는 방법으로서,
    프로세서 명령어를 디코딩하여, 상기 명령어가 브랜치 명령어(branch instruction)인지를 결정하는 단계; 및
    브랜치 오버라이드 로직(branch override logic)으로부터 브랜치 지시문(branch directive)을 요청하는 것,
    상기 요청에 응답하여 브랜치 오버라이드 로직으로부터 브랜치 지시문을 수신하는 것, 및
    상기 브랜치 오버라이드 로직으로부터의 상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하는 것
    에 의해, 상기 브랜치 명령어의 실행을 시뮬레이션하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 브랜치 오버라이드 로직으로부터 브랜치 지시문을 요청하는 것은 상기 오버라이드 로직에 브랜치 명령어 어드레스를 제공하는 것을 포함하는 방법.
  3. 제2항에 있어서,
    상기 브랜치 오버라이드 로직으로부터 브랜치 지시문을 요청하는 것은 상기 오버라이드 로직에 브랜치 타깃 어드레스를 제공하는 것을 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 브랜치 오버라이드 로직으로부터 수신된 상기 브랜치 지시문은 오버라이드 브랜치 타깃 어드레스를 포함하는 방법.
  5. 제5항에 있어서,
    상기 브랜치 오버라이드 로직으로부터의 상기 브랜치 지시문에 응답하여 브랜치 프로세서 명령어의 실행을 시뮬레이션하는 것은 상기 오버라이드 브랜치 타깃 어드레스에서 시작하는 하나 이상의 명령어의 실행을 시뮬레이션하는 것을 포함하는 방법.
  6. 제1항에 있어서,
    상기 브랜치 오버라이드 로직으로부터 수신된 상기 브랜치 지시문은 1 비트를 포함하는 방법.
  7. 프로세서 시뮬레이션 환경으로서,
    타깃 프로세서의 특성들(characteristics)에 따라 프로세서 명령어들의 실행을 시뮬레이션하도록 동작하고, 브랜치 명령어를 디코딩할 때에 브랜치 지시문을 요청하고, 상기 요청에 응답하여 브랜치 지시문을 수신하며, 상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하도록 더 동작하는 프로세서 실행 모델; 및
    상기 프로세서 실행 모델로부터 브랜치 지시문 요청을 수신하며, 상기 요청에 응답하여 브랜치 지시문을 제공하도록 동작하는 브랜치 오버라이드 로직
    을 포함하는 프로세서 시뮬레이션 환경.
  8. 제7항에 있어서,
    상기 브랜치 오버라이드 로직에 의해 액세스가능한 명령어 실행 트레이스(instruction execution trace)를 더 포함하며,
    상기 명령어 실행 트레이스는 상기 타깃 프로세서와 호환가능한 프로세서에 의해 이전에 실행된 명령어들을 포함하는 프로세서 시뮬레이션 환경.
  9. 제7항에 있어서,
    명령어 저장소(instruction store)를 더 포함하며,
    상기 프로세서 실행 모델은 상기 명령어 저장소로부터 명령어들을 인출하는 프로세서 시뮬레이션 환경.
  10. 제7항에 있어서,
    명령어 저장소는 명령어 캐시를 모델링하는 프로세서 시뮬레이션 환경.
  11. 제7항에 있어서,
    상기 브랜치 지시문 요청은 시뮬레이션되고 있는 상기 브랜치 명령어의 어드레스를 포함하는 프로세서 시뮬레이션 환경.
  12. 제11항에 있어서,
    상기 브랜치 지시문 요청은 브랜치 타깃 어드레스를 더 포함하는 프로세서 시뮬레이션 환경.
  13. 제7항에 있어서,
    상기 브랜치 지시문은 오버라이드 브랜치 타깃 어드레스를 포함하는 프로세서 시뮬레이션 환경.
  14. 제13항에 있어서,
    상기 프로세서 실행 모델은, 상기 오버라이드 브랜치 타깃 어드레스에서 시작하는 하나 이상의 명령어의 실행을 시뮬레이션함으로써 상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하도록 동작하는 프로세서 시뮬레이션 환경.
  15. 제7항에 있어서,
    상기 브랜치 지시문은 1 비트를 포함하는 프로세서 시뮬레이션 환경.
  16. 프로세서 실행 모델로서,
    타깃 프로세서의 특성들에 따라 프로세서 명령어들의 실행을 시뮬레이션하도록 집합적으로(collectively) 동작하는 기능 유닛 모델들을 포함하며,
    상기 기능 유닛 모델들은,
    브랜치 명령어를 디코딩할 때에 브랜치 지시문을 요청하고,
    상기 요청에 응답하여 브랜치 지시문을 수신하며,
    상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하도록
    더 동작하는 프로세서 실행 모델.
  17. 제16항에 있어서,
    상기 브랜치 지시문은 오버라이드 브랜치 타깃 어드레스를 포함하며,
    상기 기능 유닛 모델들은, 상기 오버라이드 브랜치 타깃 어드레스에서 시작하는 하나 이상의 명령어의 실행을 시뮬레이션함으로써 상기 브랜치 지시문에 따라 상기 브랜치 명령어의 실행을 시뮬레이션하도록 집합적으로 동작하는 프로세서 실행 모델.
KR1020117007762A 2008-09-04 2009-09-04 브랜치 오버라이드를 이용하는 시뮬레이션된 프로세서 실행 KR20110081964A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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