KR20070101393A - 조건 평가를 위한 에미서리 명령을 통한 조건 명령 실행 - Google Patents

조건 평가를 위한 에미서리 명령을 통한 조건 명령 실행 Download PDF

Info

Publication number
KR20070101393A
KR20070101393A KR1020077020700A KR20077020700A KR20070101393A KR 20070101393 A KR20070101393 A KR 20070101393A KR 1020077020700 A KR1020077020700 A KR 1020077020700A KR 20077020700 A KR20077020700 A KR 20077020700A KR 20070101393 A KR20070101393 A KR 20070101393A
Authority
KR
South Korea
Prior art keywords
instruction
condition
base
emission
command
Prior art date
Application number
KR1020077020700A
Other languages
English (en)
Other versions
KR100916168B1 (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 퀄컴 인코포레이티드
Publication of KR20070101393A publication Critical patent/KR20070101393A/ko
Application granted granted Critical
Publication of KR100916168B1 publication Critical patent/KR100916168B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Control Of Transmission Device (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Electronic Switches (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

해저드 검출은 조건이 충족되는 경우에 연산을 수행하도록 동작하는 조건 명령을, 조건을 평가하도록 동작하는 에미서리 명령 및 연산을 수행하도록 동작하는 비조건 베이스 명령으로 변환함으로써 단순화된다. 에미서리 명령이 실행되는 동안, 베이스 명령은 중지된다. 에미서리 명령은 조건을 평가하고 그 조건 평가를 베이스 명령에 역으로 보고한다. 이 조건 평가에 기초하여, 베이스 명령은 실행을 위해 파이프라인으로 런치되거나, 폐기 (또는, NOP, 또는 이를 위해 대체된 널 명령) 된다. 어느 경우에서나, 후속 명령의 의존성이 결정될 수도 있다.
해저드 검출, 조건 명령, 에미서리 명령, 비조건 베이스 명령

Description

조건 평가를 위한 에미서리 명령을 통한 조건 명령 실행{CONDITIONAL INSTRUCTION EXECUTION VIA EMISSARY INSTRUCTION FOR CONDITION EVALUATION}
배경
본 발명은 일반적으로 프로세서의 분야에 관한 것으로, 특히 조건 평가를 위한 에미서리 (emissary) 명령을 통한 조건 명령 실행의 방법에 관한 것이다.
마이크로프로세서는 광범위한 애플리케이션에서 계산적 작업을 수행한다. 특히, 휴대 전자 디바이스와 같은 내장형 애플리케이션에서, 높은 실행 속도, 낮은 전력 소모 및 소형 사이즈가 일반적으로 프로세서 설계자에게 중요한 목적이다. 그러나, 중요한 고려사항은 정확성이다. 어떤 구성적 특징이 실행 속도 또는 다른 메트릭을 개선시키기 위해 프로세서 설계에 포함되더라도, 소프트웨어 코드의 정확한 실행을 보장하는 것을 또한 필요로 한다.
다수의 현대 프로세서는 다중 실행 단계를 각각 갖는 순차적 명령이 실행시에 오버랩되는 파이프라인화된 아키텍처를 채용한다. 개선된 성능을 위해, 이 명령은 파이프라인을 통해 연속적으로 흘러야 한다. 그러나, 명령은 데이터 해저드 (hazard) 로서 또한 알려진 명령 사이의 데이터 의존성과 같은 다양한 이유로 인해 파이프라인에서 스톨 (stall) 될 수도 있다. 고성능 프로세서는 파이프라인의 일부가 반복되는 수퍼스칼라 설계를 채용할 수도 있다. 다중 파이프라인은 스톨된 파이프라인을 대기하는 명령이 즉시 실행을 위해 다른 파이프라인으로 디스패치될 수도 있기 때문에, 전체 시스템 성능에 대한 파이프라인 스톨의 영향을 최소화할 수 있다.
수퍼스칼라 파이프라인에 의해 제공된 잠재된 성능 이득의 최대 이점을 취하기 위해, 통상적으로 고성능 프로세서는 비순차적 실행을 지원한다. 즉, 명령은 그들의 프로그램 순서 이외의 순서로 실행될 수도 있고, 그러한 경우에, 명령중의 상호-의존성에 의해 배제되지 않는다. 이러한 의존성의 일례로서, 레지스터로부터의 피연산 함수를 판독하는 논리적 또는 수학적 연산을 수행하는 명령은 상기 레지스터에 결과를 기록하는 이전 명령이 그 결과를 계산하기까지 실행할 수 없다 (완료가 명령이 파이프라인에 남아 있다는 것을 의미할 수도 있는 데이터가 전송될 수 있다). 이들 2개의 명령은 비순차적으로 실행될 수 없거나, 부정확한 결과가 발생한다. 명령중에서 의존성을 검출하는 프로세스가 해저드 검출로서 공지되어 있다. 해저드 검출은 일반적으로 실행 파이프라인으로의 명령의 디스패치 이전에 파이프라인에서 매우 초기에 수행된다.
대부분의 명령 설정 아키텍처는 일부 연산을 수행하거나, 그렇지 않으면 조건의 평가에 의존하는 명령인 조건 명령을 포함한다. 통상적으로, 조건 평가는 파이프라인에서 깊은 실행 파이프 스테이지에서 수행된다. 조건 명령은 깊은 파이프라인까지 연산이 수행될지의 인식을 지연시킴으로써 해저드 검출을 매우 복잡하게 할 수 있다. 그러나, 연산이 예를 들어, 레지스터의 컨텐츠에 영향을 미치는지 여부의 인식은 해저드 검출을 위해 파이프라인에서 초기에 요구된다. 아래의 예시적인 코드 세그먼트는 이러한 문제점을 예시한다.
Figure 112007065548403-PCT00001
최종 AND 명령은 ADDNE 명령에 대한 r1 의존성을 갖는다. 즉, ADDNE 는 AND 실행 이전에 그 결과를 계산해야 해서, ADDNE에 의해 r1에 기록된 데이터는 AND에 이용가능하다. 그러나, ADDNE 는 조건 명령이며, ADD 연산을 실행할 수 없을 수도 있다. 이러한 경우에, AND 명령의 사실 의존성은 ADDEQ 명령에 대한 것이다. (공통 소프트웨어 구성을 나타내는) 이전의 예에서, 조건 EQ (동일) 및 NE (비동일) 가 서로 배타적 및 포괄적 (exhaustive) 이기 때문에, ADDEQ 및 ADDNE 명령중 정확하게 하나는 실행될 것이다. 그러나, 일반적으로, ADDEQ 명령이 조건적이기 때문에, AND 는 초기 명령, 이 경우 초기 ADD 에 대한 의존성을 실제로 가질 수도 있다. 또한, 이전의 조건 명령이 실행되지 않으면, 후속 명령은 의존성을 전혀 갖지 않을 수도 있다.
조건 명령에 의해 제공된 우발적인 의존성, 및 특히 가능한 다중 레벨의 우발적인 의존성은 정확한 해저드 검출의 작업을 매우 복잡하게 하고, 이것은 비순차적 프로그램 실행을 정확하게 실시하는 것을 필요로 한다.
요약
일 실시형태에서, 조건이 충족되는 경우에 연산을 수행하도록 동작하는 조건 명령은 조건을 평가하도록 동작하는 에미서리 명령 및 상기 연산을 수행하도록 동작하는 비조건 베이스 명령으로 변환된다. 에미서리 명령은, 베이스 명령이 중지되는 동안 실행된다. 에미서리 명령은 조건을 평가하고 그 조건 평가를 베이스 명령으로 역으로 보고한다. 이 조건 평가에 기초하여, 베이스 명령은 실행을 위해 파이프라인으로 런치되거나, 폐기 (또는, NOP, 또는 이를 위해 대체된 널 명령) 된다. 어느 경우에서나, 후속하는 명령의 의존성은 결정될 수도 있다.
또 다른 실시형태에서, 프로세서는 명령 전송 파이프 스테이지 및 조건 평가 파이프 스테이지를 포함하는 명령 실행 파이프라인을 포함한다. 이 프로세서는 조건 평가 파이프 스테이지로부터 명령 전송 파이프 스테이지까지의 피드백 경로를 포함한다. 이 프로세서는 명령 전송 파이프 스테이지에서 조건 명령을 에미서리 명령 및 비조건 베이스 명령으로 변환하고, 에미서리 명령을 전송하며, 에미서리 명령에 의한 조건 평가 파이프 스테이지로부터의 피드백에 응답하여 베이스 명령을 조건적으로 전송하도록 동작하는 파이프라인 제어기를 더 포함한다.
또 다른 실시형태에서, 조건이 충족되는 경우에만 연산을 수행하도록 동작하는 조건 명령이 디코딩된다. 이 조건 명령은 조건을 평가하도록 동작하는 에미서리 명령, 및 상기 연산을 수행하도록 동작하는 비조건 베이스 명령으로 변환된다. 에미서리 명령이 실행된다. 조건이 충족되지 않는 경우에, 어떠한 다른 명령도 조건 명령에 의존하지 않는다는 것을 판정한다.
또 다른 실시형태는 파이프라인화된 프로세서에서 해저드 검출을 수행하는 방법에 관한 것이다. 조건 명령이 디코딩되고, 여기서, 이 조건 명령은 조건이 사실 (TRUE) 인 경우에만 연산을 수행하도록 동작가능하다. 이 조건 명령은 2개의 개별 명령, 즉, 상기 연산을 수행하기 위한 실행시에 동작하는 비조건 베이스 명령, 및 에미서리 명령으로 변환된다. 에미서리 명령이 실행되어 조건을 평가게 된다. 베이스 명령은 에미서리 명령에 의한 조건의 평가에 의존하여 실행되거나 실행되지 않는다. 하나 이상의 후속 명령과 베이스 명령 사이의 데이터 의존성이 검출된다.
또 다른 실시형태는 조건 명령을 실행하는 방법에 관한 것이다. 이 조건 명령은 에미서리 명령 및 베이스 명령으로 변환된다. 에미서리 명령이 실행된다. 베이스 명령은 에미서리 명령에 의한 조건 평가에 응답하여 조건적으로 실행된다.
도면의 간단한 설명
도 1은 프로세서의 기능 블록도이다.
도 2는 수퍼스칼라 파이프라인의 기능 블록도이다.
도 3은 조건 명령 실행의 흐름도이다.
상세한 설명
도 1은 프로세서 (10) 의 기능 블록도를 도시한다. 프로세서 (10) 는 제어 로직 (14) 에 따라 명령 실행 파이프라인 (12) 에서 명령을 실행한다. 파이프라인 (12) 은 12a 및 12b와 같은 다중 병렬 파이프라인을 갖는, 수퍼스칼라 설계일 수도 있다. 파이프라인 (12a, 12b) 은 파이프 스테이지에서 조직된 다양한 레지스터 또는 래치 (16), 및 하나 이상의 산술 로직 유닛 (ALU: 18) 을 포함한다. 범용 레지스터 (GPR) 파일 (20) 은 메모리 계층의 상부를 포함하는 레지스터를 제공한다. 파이프라인 (12a, 12b) 은 명령측 변환 색인 버퍼 (Instruction-side Translation Lookaside Buffer (ITLB) : 24) 에 의해 관리된 메모리 주소 및 사용권한 (permission) 을 갖는, 명령 캐시 (I-캐시 또는 I$ : 22) 로부터의 명령을 페치한다.
데이터는 메인 변환 색인 버퍼 (TLB : 28) 에 의해 관리된 메모리 주소 및 사용권한을 갖는, 데이터 캐시 (D-캐시 또는 D$ : 26) 로부터 액세스된다. 다양한 실시형태에서, ITLB 는 TLB 일부의 카피를 포함할 수도 있다. 또 다른 방법으로는, ITLB 및 TLB 는 통합될 수도 있다. 유사하게, 프로세서 (10) 의 다양한 실시형태에서, I-캐시 (22) 및 D-캐시 (26) 는 통합되거나, 단일화될 수도 있다. I-캐시 (22) 및/또는 D-캐시 (26) 에서의 부적중 (miss) 은 메모리 인터페이스 (30) 의 제어하에서, 메인 (오프-칩) 메모리 (32) 로의 액세스를 초래한다. 프로세서 (10) 는 다양한 주변 디바이스 (36) 로의 액세스를 제어하는, 입/출력 (I/O) 인터페이스 (34) 를 포함할 수도 있다. 프로세서 (10) 의 다양한 변형이 가능하다는 것을 당업자는 인식할 것이다. 예를 들어, 프로세서 (10) 는 I 캐시 및 D 캐시 중 하나 또는 둘 모두를 위한 제 2 레벨 (L2) 캐시를 포함할 수도 있다. 또한, 프로세서 (10) 에 도시된 하나 이상의 기능 블록도는 특정한 실시형태로부터 생략될 수도 있다.
도 2는 수퍼스칼라 파이프라인 아키텍처를 도시한다. 프로세서 파이프라인 (12) 은 I-캐시 (22) 로부터 명령을 페치하는, 명령 페치 파이프 스테이지 (40) 를 포함한다. 명령은 디코딩 파이프 스테이지 (42) 에서 디코딩된다. 명령이 알려지면, 해저드 검출 로직 (44) 은 디코딩된 명령에 의해 필요로 되는 피연산 함수를 생성하는 명령과 같은 현재 실행중인 명령과 디코딩된 명령 사이의 의존성을 검출한다. 해저드 검출 로직 (44) 에 후속하여, 디코딩된 명령을 다중 실행 파이프라인 (12a, 12b) 중 하나로 전송하는 전개/전송 파이프 스테이지 (46) 가 있다.
상술한 바와 같이, 해저드 검출은 조건 명령에 의해 매우 복잡해진다. 이러한 작업을 간단하게 하기 위해, 조건 명령은 2개의 관련 명령 : 에미서리 명령 및 베이스 명령으로 변환될 수도 있다. 여기에서 사용되는 바와 같이, "에미서리 명령" 은 유일한 연산이 조건 명령의 조건의 평가이고, 그 조건 평가를 베이스 명령에 역으로 보고하는 명령이다. 에미서리 명령은 임의의 범용 레지스터를 판독 또는 기록하지 않고, 임의의 조건 코드를 변경하지 않으며, 임의의 메모리 액세스를 수행하지 않는다. 예를 들어, 조건 명령 "ADDEQ r1,r3,r4" 에 대응하는 에미서리 명령은 예를 들어, 이전의 비교 또는 다른 명령에 의해 설정된 조건 레지스터에서 EQ 비트를 검사함으로써, EQ (동일) 조건을 검출 및 보고하는 명령이다. 이 에미서리 명령은 r3 또는 r4를 판독하지 않고 r1을 기록하지도 않는다.
여기에서 사용되는 바와 같이, "베이스 명령" 은 동일한 피연산 함수 및 용도를 이용하여, 조건 명령이 그것의 조건이 사실로 평가되는 경우에 실행하는 것과 동일한 연산을 수행하는 비조건 명령이다. 예를 들어, 조건 명령 "ADDEQ r1,r3,r4" 에 대응하는 베이스 명령은 "ADD r1,r3,r4" 이다. 일 실시형태에서, 베이스 명령은 그것의 조건의 평가를 기다리는 동안, 전송 파이프 스테이지 (46) 에서 중지된다.
조건 명령이 에미서리 명령 및 베이스 명령으로 변환되면, 에미서리 명령은 실행 파이프라인 (12a, 12b) 으로 런치되고, 베이스 명령은 중지된다. 에미서리 명령은 조건 평가 파이프 스테이지 (48, 50) 에 도달할 때 까지 진행된다. 여기서, 에미서리 명령은 조건 명령에 관한 조건을 평가하고, 전송 파이프 스테이지 (46) 에서 중지된 베이스 명령에 이 조건 평가를 역으로 보고한다. 그 후, 에미서리 명령은 나머지 파이프라인 (12a, 12b) 을 통해 진행할 수도 있고, 나머지 파이프라인 (12a, 12b) 을 통해 진행하는 NOP (no-op 또는 널 명령) 으로 대체될 수도 있거나, 폐기될 수도 있고, 결과적인 파이프 "버블" 은 파이프라인 (12a, 12b) 에서 다음의 후속 명령에 의해 채워진다. 요약하면, 에미서리 명령의 유용한 수명은 조건 명령의 조건 평가의 평가 및 보고시에 종료되고, 그 후 에미서리 명령은 당업자가 또한 이해하는 바와 같이, 프로세서의 프로그램 상태에 영향을 미치지 않는 임의의 방식으로 처리될 수도 있다.
에미서리 명령에 의한 조건 평가의 보고시에, 전송 파이프 스테이지 (46) 에서 중지된 베이스 명령은 조건 평가가 사실인 경우에 이용가능한 실행 파이프라인 (12a, 12b) 으로 런치된다. 조건 평가는 그 조건이 충족되거나 조건 테스트가 통과 (PASS) 인 경우에 사실로 고려된다. 반대로, 조건 평가는 그 조건이 충족되지 않거나 조건 테스트가 실패 (FAIL) 인 경우에 거짓 (FALSE) 이다. 사실 조건 평가의 경우에서, 비조건 베이스 명령을 실행하고, 레지스터 파일 또는 메모 리에 대한 그 영향이 알려진다. 따라서, 해저드 검출 로직 (44) 은 베이스 명령이 기록하는 임의의 레지스터 또는 메모리 위치를 판독하는 베이스 명령에 후속하는 모든 명령에 대한 해저드 검출을 수행할 수도 있다.
에미서리 명령에 의해 보고된 조건 평가가 거짓인 경우에, 베이스 명령은 실행되지 않는다. 베이스 명령은 이용가능한 실행 파이프라인 (12a, 12b) 으로 런치되는 NOP 로 대체될 수도 있다. 또 다른 방법으로는, 베이스 명령은 폐기될 수도 있으며, 후속 명령이 파이프라인 버블을 채우기 위해 전진된다. 어느 경우에서나, 해저드 검출 로직 (44) 은 베이스 명령 (및 대응하게는, 원래 조건 명령) 이 임의의 레지스터 또는 메모리 위치를 변경시키지 않고, 원래 조건 명령에 대한 임의의 의존성을 갖는 후속 명령이 없다는 것을 알고 있다. 그 후, 해저드 검출 로직 (44) 은 후속 명령의 실제 의존성(들)을 결정하기 위해, 하나 이상의 이전 명령에 대한 조건 명령을 되돌아 볼 수도 있다.
이러한 프로세스가 도 3의 흐름도 형태로 도시되어 있다. 명령 디코딩 (블록 52) 에 후속하여, 명령이 조건 명령인 경우에 (블록 54), 에미서리 명령 및 베이스 명령으로 변환된다 (블록 56). 베이스 명령은 명령 전송 파이프 스테이지 (46) 에서 중지되며, 에미서리 명령은 이용가능한 실행 파이프라인 (12a, 12b) 으로 전송된다 (블록 58). 에미서리 명령이 조건 평가 파이프 스테이지 (48, 50) 에 도달할 때, 조건을 평가하고 (블록 60), 그 조건 평가를 베이스 명령에 보고한다. 그 조건이 사실로 평가되는 경우에, 베이스 명령은 이용가능한 파이프라인 (12a, 12b) 으로 전송된다 (블록 62). 그 조건이 거짓으로 평가되는 경우 에, 베이스 명령은 폐기되거나 NOP 로 변환되며, 이것은 파이프라인 (12a, 12b) 으로 전송된다 (블록 64). 어느 경우에서나, 그리고 디코딩된 명령이 조건 명령이 아닌 경우에 (블록 54), 조건 명령을 실행할지 여부가 알려져 있기 때문에, 해저드 검출은 후속 명령에 대해 수행된다 (블록 66).
본 발명의 개념을 본 발명의 특정한 특징, 양태 및 실시형태에 관하여 본 명세서에 설명하였지만, 다수의 변경, 변형 및 다른 실시형태가 본 발명의 개념의 넓은 범위 내에서 가능하며, 따라서, 모든 변경, 변형 및 실시형태는 본 명세서에 개시된 본 발명의 개념의 범위 이내인 것으로 간주된다. 따라서, 본 실시형태들은 제한적인 것이 아니라 예시적인 것으로서 모든 양태에서 해석되어야 하고, 첨부한 청구범위의 의미 및 등가 범위 내에서 나오는 모든 변경은 그 안에 포함되는 것으로 의도된다.

Claims (19)

  1. 파이프라인화된 프로세서에서, 조건이 충족되는 경우에 연산을 수행하도록 동작하는 조건 명령을 실행하는 방법으로서,
    상기 조건 명령을, 상기 조건이 충족되는지의 여부를 결정하도록 동작하는 에미서리 명령 및 상기 연산을 수행하도록 동작하는 비조건 베이스 명령으로 변환하는 단계,
    상기 에미서리 명령을 실행하는 단계, 및
    상기 에미서리 명령의 실행이 상기 조건이 충족된다는 것을 나타내는 경우에 상기 비조건 베이스 명령을 실행하는 단계를 포함하는, 조건 명령 실행 방법.
  2. 제 1 항에 있어서,
    상기 에미서리 명령의 실행이 상기 조건이 충족되지 않는다는 것을 나타내는 경우에 상기 비조건 베이스 명령 대신에 NOP 명령을 실행하는 단계를 더 포함하는, 조건 명령 실행 방법.
  3. 제 1 항에 있어서,
    상기 에미서리 명령의 실행이 상기 조건이 충족되지 않는다는 것을 나타내는 경우에 상기 베이스 명령을 폐기하는 단계를 더 포함하는, 조건 명령 실행 방법.
  4. 제 1 항에 있어서,
    상기 에미서리 명령의 실행 이후에, 상기 조건 명령에 후속하는 명령에 대한 해저드 검출을 수행하는 단계를 더 포함하는, 조건 명령 실행 방법.
  5. 명령 전송 파이프 스테이지 및 조건 평가 파이프 스테이지를 포함하는 명령 실행 파이프라인,
    상기 조건 평가 파이프 스테이지로부터 상기 명령 전송 파이프 스테이지로의 피드백 경로, 및
    상기 명령 전송 파이프 스테이지에서 조건 명령을 에미서리 명령 및 비조건 베이스 명령으로 변환하고, 상기 에미서리 명령을 전송하며, 상기 에미서리 명령에 의한 상기 조건 평가 파이프 스테이지로부터의 피드백에 응답하여 상기 베이스 명령을 조건적으로 전송하도록 동작하는 파이프라인 제어기를 포함하는, 프로세서.
  6. 제 5 항에 있어서,
    상기 조건 평가 이후에, 후속 명령에 의한 상기 조건 명령에 대한 의존성을 검출하도록 동작하는 해저드 검출 로직을 더 포함하는, 프로세서.
  7. 파이프라인화된 프로세서에서 해저드 검출을 수행하는 방법으로서,
    조건이 충족되는 경우에만 연산을 수행하도록 동작하는 조건 명령을 디코딩하는 단계,
    상기 조건 명령을, 상기 조건을 평가하도록 동작하는 에미서리 명령 및 상기 연산을 수행하도록 동작하는 비조건 베이스 명령으로 변환하는 단계,
    조건 평가를 획득하기 위해 상기 에미서리 명령을 실행하는 단계, 및
    상기 조건이 충족되지 않는 경우에 후속 명령이 상기 조건 명령에 대해 의존하지 않는다는 것을 결정하는 단계를 포함하는, 해저드 검출 수행 방법.
  8. 제 7 항에 있어서,
    상기 조건이 충족되는 경우에 상기 조건 명령에 의해 기록된 레지스터 또는 메모리 위치를 판독하는 임의의 후속 명령의 의존성을 검출하는 단계를 더 포함하는, 해저드 검출 수행 방법.
  9. 제 8 항에 있어서,
    상기 조건이 충족되는 경우에 상기 비조건 베이스 명령을 실행하는 단계를 더 포함하는, 해저드 검출 수행 방법.
  10. 제 9 항에 있어서,
    상기 의존성은 상기 비조건 베이스 명령의 실행 이전에 검출되는, 해저드 검출 수행 방법.
  11. 제 10 항에 있어서,
    상기 비조건 베이스 명령이 실행을 완료할 때 까지, 의존성이 검출되는 후속 명령을 스톨 (stall) 하는 단계를 더 포함하는, 해저드 검출 수행 방법.
  12. 제 7 항에 있어서,
    상기 조건이 충족되지 않는 경우에 상기 비조건 베이스 명령 대신에 NOP 명령을 실행하는 단계를 더 포함하는, 해저드 검출 수행 방법.
  13. 제 7 항에 있어서,
    상기 조건이 충족되지 않는 경우에 상기 베이스 명령을 폐기하는 단계를 더 포함하는, 해저드 검출 수행 방법.
  14. 파이프라인화된 프로세서에서 해저드 검출을 수행하는 방법으로서,
    조건이 사실 (TRUE) 인 경우에만 연산을 수행하도록 동작하는 조건 명령을 디코딩하는 단계,
    상기 조건 명령을, 2개의 개별 명령, 즉, 에미서리 명령 및 상기 연산을 수행하기 위한 실행시에 동작하는 비조건 베이스 명령으로 변환하는 단계,
    상기 에미서리 명령을 실행하고, 상기 에미서리 명령으로 하여금 상기 조건을 평가하게 하는 단계,
    상기 에미서리 명령에 의한 상기 조건의 평가에 의존하여 상기 베이스 명령을 실행 또는 비실행하는 단계, 및
    하나 이상의 후속 명령과 상기 베이스 명령 사이의 데이터 의존성을 검출하는 단계를 포함하는, 해저드 검출 수행 방법.
  15. 제 14 항에 있어서,
    상기 의존성의 검출에 응답하여, 상기 베이스 명령이 상기 연산을 수행할 때 까지 상기 후속 명령 중 하나 이상의 실행을 지연시키는 단계를 더 포함하는, 해저드 검출 수행 방법.
  16. 제 14 항에 있어서,
    하나 이상의 후속 명령에 의한, 상기 베이스 명령에 대한 의존성이 없다는 검출에 응답하여, 실행을 위해 상기 하나 이상의 후속 명령을 즉시 런치하는 단계를 더 포함하는, 해저드 검출 수행 방법.
  17. 조건 명령을 에미서리 명령 및 베이스 명령으로 변환하는 단계,
    상기 에미서리 명령을 실행하는 단계, 및
    상기 에미서리 명령에 의한 조건 평가에 응답하여 상기 베이스 명령을 조건적으로 실행하는 단계를 포함하는, 조건 명령 실행 방법.
  18. 제 17 항에 있어서,
    상기 조건 명령에 후속하는 하나 이상의 명령에 대한 해저드 검출을 수행하 는 단계를 더 포함하는, 조건 명령 실행 방법.
  19. 제 18 항에 있어서,
    상기 베이스 명령이 실행되지 않는 경우에, 하나 이상의 후속 명령과 상기 조건 명령 사이에는 의존성이 존재하지 않는, 조건 명령 실행 방법.
KR1020077020700A 2005-02-10 2006-02-10 조건 평가를 위한 에미서리 명령을 통한 조건 명령 실행 KR100916168B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/055,919 US7210024B2 (en) 2005-02-10 2005-02-10 Conditional instruction execution via emissary instruction for condition evaluation
US11/055,919 2005-02-10

Publications (2)

Publication Number Publication Date
KR20070101393A true KR20070101393A (ko) 2007-10-16
KR100916168B1 KR100916168B1 (ko) 2009-09-08

Family

ID=36676060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077020700A KR100916168B1 (ko) 2005-02-10 2006-02-10 조건 평가를 위한 에미서리 명령을 통한 조건 명령 실행

Country Status (11)

Country Link
US (1) US7210024B2 (ko)
EP (1) EP1846817B1 (ko)
JP (1) JP4903720B2 (ko)
KR (1) KR100916168B1 (ko)
CN (1) CN100498693C (ko)
AT (1) ATE463787T1 (ko)
BR (1) BRPI0606973A2 (ko)
DE (1) DE602006013415D1 (ko)
IL (1) IL185066A0 (ko)
TW (1) TW200641675A (ko)
WO (1) WO2006086713A2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008079433A1 (en) * 2006-12-20 2008-07-03 Rowley, Richard Method and system for installing a root certificate on a computer with a root update mechanism
KR100854720B1 (ko) * 2007-03-23 2008-08-27 삼성전자주식회사 루프 통합 방법 및 루프 통합 장치
US7793079B2 (en) * 2007-06-27 2010-09-07 Qualcomm Incorporated Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
CN101739237B (zh) * 2009-12-21 2013-09-18 龙芯中科技术有限公司 微处理器功能性指令实现装置和方法
US8527804B2 (en) * 2010-11-01 2013-09-03 Qualcomm Incorporated Architecture and method for eliminating store buffers in a DSP/processor with multiple memory accesses
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
EP2508980B1 (en) * 2011-04-07 2018-02-28 VIA Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9032189B2 (en) * 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9639359B2 (en) * 2013-05-21 2017-05-02 Advanced Micro Devices, Inc. Thermal-aware compiler for parallel instruction execution in processors

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5533235A (en) * 1978-08-30 1980-03-08 Toshiba Corp Microprogram control system
US6016543A (en) * 1997-05-14 2000-01-18 Mitsubishi Denki Kabushiki Kaisha Microprocessor for controlling the conditional execution of instructions
US6505296B2 (en) * 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US6170052B1 (en) * 1997-12-31 2001-01-02 Intel Corporation Method and apparatus for implementing predicated sequences in a processor with renaming
EP0992891A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. A processor
JP3437135B2 (ja) * 1999-02-08 2003-08-18 松下電器産業株式会社 プログラム実行制御システム及びその方法
US6598153B1 (en) 1999-12-10 2003-07-22 International Business Machines Corporation Processor and method that accelerate evaluation of pairs of condition-setting and branch instructions
US6877086B1 (en) 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
JP3900485B2 (ja) * 2002-07-29 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体
GB2402510A (en) * 2003-06-05 2004-12-08 Advanced Risc Mach Ltd Predication instruction within a data processing system

Also Published As

Publication number Publication date
US20060179288A1 (en) 2006-08-10
CN100498693C (zh) 2009-06-10
EP1846817A2 (en) 2007-10-24
ATE463787T1 (de) 2010-04-15
TW200641675A (en) 2006-12-01
JP2008530693A (ja) 2008-08-07
BRPI0606973A2 (pt) 2009-07-28
WO2006086713A3 (en) 2006-11-16
DE602006013415D1 (de) 2010-05-20
KR100916168B1 (ko) 2009-09-08
JP4903720B2 (ja) 2012-03-28
CN101151591A (zh) 2008-03-26
IL185066A0 (en) 2007-12-03
WO2006086713A2 (en) 2006-08-17
EP1846817B1 (en) 2010-04-07
US7210024B2 (en) 2007-04-24

Similar Documents

Publication Publication Date Title
KR100916168B1 (ko) 조건 평가를 위한 에미서리 명령을 통한 조건 명령 실행
KR100938367B1 (ko) 분기 예측 오류를 정정하는 시스템 및 방법
JP5059623B2 (ja) プロセッサ及び命令プリフェッチ方法
JP5198879B2 (ja) ループ末尾に置かれた分岐により分岐履歴レジスタの更新を抑制すること
KR100953856B1 (ko) 조건부 명령이 무조건적으로 출력을 제공하는 시스템 및방법
KR101459536B1 (ko) 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치
KR101099203B1 (ko) 명시적 서브루틴 호출의 브랜치 예측 동작을 에뮬레이트하기 위한 방법 및 장치
JP2011100466A5 (ko)
JP2008532142A5 (ko)
KR20010109354A (ko) 프로세서내의 기록 트래픽을 감소시키는 시스템 및 방법
US5799180A (en) Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken
US9851973B2 (en) Dynamic branch hints using branches-to-nowhere conditional branch
US7020766B1 (en) Processing essential and non-essential code separately
KR101723711B1 (ko) 조건부 쇼트 포워드 브랜치들을 산술적으로 동등한 술어적 명령어들로 변환
US8250344B2 (en) Methods and apparatus for dynamic prediction by software
JP2021174513A (ja) データ依存脆弱分岐の機会主義的再誘導のための命令セットアーキテクチャベース自動負荷追跡
JP2008537208A (ja) 条件付命令を実行しない時のソース・オペランドの停止待機
US10235173B2 (en) Program code optimization for reducing branch mispredictions
Nayak Dynamic branch prediction for embedded system applications
US20240192958A1 (en) Branch target buffer operation with auxiliary indirect cache

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120830

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130830

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140828

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 11