KR20070121842A - 조건부 명령이 무조건적으로 출력을 제공하는 시스템 및방법 - Google Patents

조건부 명령이 무조건적으로 출력을 제공하는 시스템 및방법 Download PDF

Info

Publication number
KR20070121842A
KR20070121842A KR1020077026476A KR20077026476A KR20070121842A KR 20070121842 A KR20070121842 A KR 20070121842A KR 1020077026476 A KR1020077026476 A KR 1020077026476A KR 20077026476 A KR20077026476 A KR 20077026476A KR 20070121842 A KR20070121842 A KR 20070121842A
Authority
KR
South Korea
Prior art keywords
register
condition
target
instruction
satisfied
Prior art date
Application number
KR1020077026476A
Other languages
English (en)
Other versions
KR100953856B1 (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 KR20070121842A publication Critical patent/KR20070121842A/ko
Application granted granted Critical
Publication of KR100953856B1 publication Critical patent/KR100953856B1/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

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)
  • Executing Machine-Instructions (AREA)

Abstract

입력으로서 하나 이상의 피연산자를 수신하고, 조건이 만족한다면 피연산자에 대하여 수행된 연산의 결과를 타겟에 출력하고, 조건이 만족하지 않는다면 출력을 제공하지 않도록 구성된 조건부 명령이 실행되어 무조건적으로 타겟에 출력을 제공한다. 조건부 명령은 타겟의 이전 값을 얻는다 (즉, 가장 최근의 명령에 의해 생성된 값은 그 타겟을 업데이트한 조건부 명령에 선행한다). 조건이 평가된다. 조건이 만족되는 경우, 연산이 수행되고 연산의 결과는 타겟으로 출력된다. 조건이 만족하지 않는 경우, 이전 값이 타겟으로 출력된다. 후속 명령은, 조건 평가에 앞서, 피연산자 소스 (레지스터로 기록되었는지 또는 명령으로 포워딩 되었는지 여부) 에 따라 타겟에 의존할 수도 있다.
조건부 명령, 조건 평가, 파이프라인 프로세서, 피연산자, 레지스터

Description

조건부 명령이 무조건적으로 출력을 제공하는 시스템 및 방법{SYSTEM AND METHOD WHEREIN CONDITIONAL INSTRUCTIONS UNCONDITIONALLY PROVIDE OUTPUT}
배경
본 발명은 일반적으로 프로세서 분야에 관한 것으로, 특히 조건이 만족하지 않는 경우 출력을 제공하지 않도록 구성된 조건부 명령을 실행하는 시스템 및 방법에 관한 것이다.
마이크로프로세서는 다양한 애플리케이션에서 계산적 작업을 수행한다. 프로세서 설계의 공통 목적은 소프트웨어 평가를 통해 보다 빠른 연산 및/또는 증가된 기능성을 허용하는 개선된 성능이다. 많은 현대의 프로세서는 파이프라인 아키텍처를 이용하는데, 실행시, 다중의 실행 단계를 각각 갖는 순차적 명령이 중첩된다. 보다 많은 명령 처리량을 위해, 명령은 파이프라인을 통해 연속적으로 흘러야한다. 명령들이 파이프라인에서 정지 (stall) 하도록 야기하는 임의의 상태는 명령 처리량과 이에 따른 프로세서 성능에 불리한 영향을 미친다.
명령은 메모리로부터 얻어진 데이터를 연산하고 그 결과를 메모리에 기록한다. 현대의 프로세서는 최상위 레벨의 레지스터와 같은 소수의 빠르고, 값비싼 메모리 엘리먼트를 포함하는 계층적 메모리 구조를 이용한다. 메모리 계층은 각각 캐시 메모리 (SRAM), 고체 상태 메인 메모리 (DRAM), 및 디스크 (마그네틱 또는 광학 매체) 와 같이, 보다 낮은 레벨의 잇따라서 더 느리지만 보다 덜 비싼 메 모리 기술을 포함한다. 휴대용 전자 디바이스와 같은 애플리케이션에 대해, DRAM은 종종 가장 낮은 레벨의 메모리 계층이다.
많은 프로세서 명령 세트 아키텍처 (ISA) 는 GPR (General Purpose Registers) 의 세트를 포함하는데, 이는 데이터를 명령들 사이, 및 메모리로, 그리고 메모리로부터 전달하는데 사용되도록 구성된 레지스터이다. 데이터에 대해 논리적 및 산술적 연산을 수행하는 명령은 특정된 GPR로부터 그 피연산자를 판독하여 그 결과를 특정된 GPR에 기록한다. 유사하게, 메모리 액세스 명령은 메모리에 기록될 데이터를 GPR로부터 판독하고 메모리로부터 판독된 데이터를 GPR에 기록한다. 컴파일러는 소스 및 타겟 GPR 식별자를 각각의 명령에 할당하고 그 명령을 순서대로 정렬하여, 적절한 결과가 계산된다. 즉, 명령은, 특정된 GPR에 결과를 저장하도록 초기 명령을 디렉팅하고, 부가적인 프로세싱을 위한 피연산자를 얻기 위해 이들 GPR을 판독하도록 후기 명령을 디렉팅함으로써 정확한 결과를 보증하는 "프로그램 순서"로 배열된다.
그러나, 많은 프로세서는 "비순차적 (Out-of-Order)"으로 명령을 실행하는데, 즉, 명령의 프로그램 순서대로 실행하지 않는다. 비순차적 실행이 발생하는 경우의 일 예는 슈퍼스칼라 설계에 있고, 2 이상의 명령은 상이한 실행 파이프라인에서 병렬로 실행될 수도 있다. 명령이 하나의 파이프라인에서 정지한다면, 다음 명령이 즉각적인 실행을 위해 사용 가능 파이프 라인으로 디스페치될 수도 있다. 비순차적 실행은 슈퍼스칼라 설계에 한정되지 않고, 단일 발행 설계 (single-issue designs) 에서 발생할 수도 있다. 어느 하나의 경우에, 비순차 적 실행은 일정한 문제를 나타낸다.
독립 명령은 원래의 프로그램 순서를 고려하지 않고 실행될 수도 있다. 그러나, 많은 명령은 "해저드 (hazards)"로 알려진 다른 명령들에 대한 의존성을 나타낸다. (비순차적 명령 발행에 의해 야기된 것과 같은) 명령의 순서 재정렬이 종속 상태와 관련되어 피연산자에 대한 액세스의 순서를 변경할 때 데이터 해저드가 발생한다. 중요한 데이터 해저드가 3가지 유형으로 분류될 수도 있다. 2개의 명령, i와 j를 고려하면, 프로그램 순서에서 i는 j 에 앞서 발생한다.
데이터 해저드의 일 유형은 RaW (Read after Write) 해저드이다. 이것은 i가 j에 대한 피연산자 소스인 타겟 레지스터를 기록할 때 발생한다. j가, i가 레지스터에 기록하기 전에, 레지스터를 판독하려고 시도할 경우, j는 부적절하게 이전 값을 검색한다. WaW (Write after Write) 해저드는, 명령 i와 j 둘 다가 동일한 타겟 레지스터에 기록하고 j가 그 타겟이 i에 의해 기록되기 전에 이것을 기록하려고 시도할 때 발생한다. 이 경우, j에 의해 기록된 값 보다는 i에 의해 기록된 값을 레지스터에 두어, 잘못된 순서로 기록이 수행된다. WaR (Write after Read) 해저드는, i가 레지스터를 판독하기 전에 j가 i에 대한 피연산자 소스인 타겟 레지스터에 기록할 때 발생한다. 이것은, i가 이전의 명령에 의해 기록된 정확한 값 보다는, j에 의해 기록된 새로운 값을 부정확하게 검색하게 한다. RaR (Read after Read) 경우는 데이터 해저드가 아님을 주목한다; 판독은 임의의 순서로 수행될 수도 있다.
예를 들어, 다음의 대표적인 코드 프래그먼트를 고려한다.
AND r2, r10, r12 r10의 콘텐츠를 r12의 콘텐츠에 논리 AND, r2에 결과를
위치시킴
ST r2, mem 메모리 위치 mem에 r2의 콘텐츠를 저장
ADD r2, r5, r6 r5 및 r6의 콘텐츠를 가산, r2에 합계를 위치시킴
ST는 AND에 대하여 RaW 의존성을 갖는다. 이 데이터 해저드는 이들 명령이 프로그램 순서로 실행될 것을 요구한다. 부가적으로, ADD는 ST에 대하여 WaR 의존성을 나타낸다. 의미론적으로, ADD는, ST가 r2의 그 판독을 완료한 이후 까지 r2에 그 결과를 기록할 수 없다. 그렇지 않으면, ST가 AND의 결과를 기록해야할 때, ST는 ADD의 결과를 메모리에 기록할 것이다. WaR과 WaW 데이터 해저드는 네임 의존성이고 트루 데이터 의존성은 아닌데, 하나의 명령으로부터 다음으로 어떤 데이터도 전달되지 않기 때문이다 (유일한 의존성은, 일 명령은 다른 명령이 판독할 또는 기록한 레지스터의 콘텐츠를 손상시키지 않는다는 것이다). 네임 의존성은 레지스터 리네이밍으로 알려진 기술에 의해 해결될 수도 있다.
레지스터 리네이밍 시스템에서, 각각 물리 레지스터 번호 (PRN) 를 갖는 큰 세트의 물리 레지스터는 논리 레지스터 번호 (LRN) 를 물리 레지스터에 동적으로 할당함으로써 관리된다. LRN은, 예를 들어, 논리 GPR 식별자 (r0, r1, r2,...) 를 포함할 수도 있다. 바람직하게는, 물리 레지스터의 수는 LRN의 수, 또는 구성화된 GPR의 수 보다 크다. 리네이밍 테이블 (RT;Renaming Table) 은 LRN과 PRN 사이의 동적 매핑을 유지한다.
파이프라인의 초기에 (예를 들어, 디코드 단계에서 또는 디코드 단계 이후), 명령의 레지스터 액세스 특성이 조사되고, 명령과 연관된 LRN (예를 들어, GPR 식별자) 은 RT를 통해 PRN으로 번역된다. 레지스터를 기록하는 명령으로서, 새로운 LRN-PRN 매핑은 RT에 엔터링되고, LRN을 미사용 PRN으로 매핑하여, 기록은 연관된 물리 레지스터로 디렉팅된다 (즉, LRN은 "리네이밍"된다). 레지스터를 판독하는 명령은 그 LRN을 RT 룩업을 통해 PRN으로 번역한다. PRN은 파이프 라인을 통하여 그 보유기간 내내 레지스터-판독 명령과 연관된다.
레지스터-판독 명령은 동일한 LRN에 기록된 이전 값을 "손상"시키지 않는다; (LRN이 새로운 PRN으로 리네이밍 될 때) 기록은 새로운, 미사용 PRN으로 디렉팅된다. 프로그램 순서로 기록 명령을 뒤따르는 명령은 동일한 PRN으로 디렉팅되어 기록 값을 얻는다. 프로그램 순서로 기록 명령에 선행하는 명령은 RT에 의해 (리네이밍 동작에 앞서) 상이한 물리 레지스터로 매핑되었고, 그 물리 레지스터를 계속적으로 액세스할 것이다. 따라서, 주어진 LRN을 기록하는 명령은, LRN로부터의 이전 값을 판독하거나 (WaR) LRN에 이전 결과를 기록하는 (WaW) 명령보다 앞서 실행될 수도 있다. 이 방식으로, WaR 및 WaW 네임 해저드가 방지된다.
프로세서가 예외, 잘못된 예측 분기 등으로부터 복구하게 하기 위해서, 데이터가 기록되는 물리 레지스터의 (부가적인 리네이밍에 대한) 유용성 상에 제한이 가해진다. 예를 들어, LRN은 PRN1로 리네이밍될 수도 있고, 제 1 명령의 결과는 그 LRN에 기록되고, 따라서 PRN1로 기록된다. 제 2 명령도 그 LRN에 데이터를 기록할 수도 있고, 이는 PRN2로 리네이밍되고, 따라서 PRN2는 제 2 명령의 결과를 저장한다. 이 경우, PRN1은 제 2 명령이 수행될 때까지 PRN1로 리네이밍될 다른 LRN에 대해 자유롭지 않다 (이것과, 이것에 앞선 모든 명령은 완전히 예외-체크되고 실행 완료가 보증된다는 것을 의미한다). 부가적으로, 그 LRN을 참조하는 제 1 명령과 제 2 명령 사이의 모든 명령 (즉, PRN1을 판독하는 모든 명령) 은 PRN1의 판독을 완료해야하고 그렇지 않으면 결국 그 값을 수신하는 것이 보증된다. 이후, PRN1만이 해제되고, 이것으로 리네이밍될 다른 LRN에 대해 이용 가능하게 된다.
상기 예시적인 코드 프래그먼트로 돌아가서, AND 명령이 디코딩되고, RT내에서 LRN r2가 물리 레지스터, 즉 PRN x로 할당된다. 따라서, AND의 결과가 물리 레지스터 x에 기록된다. ST 명령이 디코딩될 때, LRN r2로부터의 그 판독이 검출되고, RT가 액세스된다. LRN r2는 PRN x로 매핑되고, 따라서 ST 명령은 물리 레지스터 x를 판독한다 (따라서 AND에 의해 기록된 결과를 얻는다). ADD 명령이 디코딩되고 LRN r2에 대한 그 기록이 검출될 때, LRN r2는 상이한 물리 레지스터, 예를 들어 PRN y로 재할당-또는"리네이밍"-된다. LRN r2를 판독하는 후속 명령은 RT에 의해 물리 레지스터 y로 디렉팅된다. ADD는 ST에 앞서 실행될 수도 있고; ST는 PRN x로부터 정확한 결과를 검색하여, WaR 해저드가 해결됨을 주목한다.
레지스터 리네이밍 시스템이 갖는 하나의 문제는 조건부 실행으로부터 발생한다. 조건부 명령은, 조건이 만족하는 경우에만 산술 또는 논리 연산을 수행 하도록 구성된 명령이다. (종종 파이프라인의 깊은 곳에서 발생하는) 조건이 평가될 때까지, 조건부 명령이 레지스터를 기록할지 여부가 결정될 수 없다. 조건이 만족하지 않는다면, 조건부 명령은 사실상 NOP 이거나, 비-연산 명령이고, 이는 어떤 GPR도 변경하지 않는다. 조건부 명령이 레지스터를 기록할지 아닐지 여부가 불확실하기 때문에, 후속 명령은, 조건부 명령에 대한 의존성이 조건이 평가될 때까지 존재할지 여부를 확신할 수 없다. 예를 들어, 다음 코드 프래그먼트를 고려한다:
CMP r1, r12 r1과 r12의 콘텐츠를 비교 (비교의 결과를 반영하기
위해 코드 또는 플래그를 설정)
AND r2, r10, r12 r10의 콘텐츠를 r12의 콘텐츠에 논리 ADD, r2에
결과를 위치시킴
SUBEQ r2, r7, r8 이전의 비교가 동일한 경우, r8의 콘텐츠를 r7에서
감산하고 r2에 결과를 위치시킴. 그렇지 않으면 r2는
변경되지 않음
ST r2, mem r2의 콘텐츠를 메모리 위치 mem에 저장
ADD r2, r5, r6 r5와 r6의 콘텐츠를 가산, r2에 합계를 위치시킴
이 예에서, ST는, EQ 조건이 평가될 때까지, SUBEQ에 관하여 이것이 데이터 해저드를 갖는지 아닌지 여부를 확인할 수 없다. 즉, ST는 r2가 AND 또는 SUBEQ 명령에 의해 기록될지 여부를 결정할 수 없다. 프로그램 순서로 항상 명령을 발행하는 프로세서에서 의미론적으로, 및 실제로, AND 및 SUBEQ 둘 다는 항상 실행되고, SUBEQ는 r2 레지스터의 값을 업데이트할 수도 하지 않을 수도 있다; ST는 상관하지 않고 r2의 콘텐츠를 단순히 저장한다. 그러나, 비순차적 설계에서, 프로세서는 ST 의존성이 AND 에 대한 것인지 또는 SUBEQ에 대한 것인지 여부를 결정해야만 한다.
특히, 레지스터 리네이밍 시스템에서, 프로세서는 파이프라인을 초기에 정지 (stall) 해야하고, 레지스터 리네이밍 단계에서, EQ 조건이 평가될 때까지 SUBEQ가 실제로 r2를 기록할지 여부가 결정될 수 있다. 조건이 파이프라인의 깊은 곳에서 평가되기 때문에, 이것은 원하지 않는 파이프라인 정지를 초래한다. 대안으로는, RT는 추론적으로 r2를 SUBEQ 명령에 대한 새로운 PRN으로 리네이밍할 수도 있다. 이 경우, EQ 조건이 만족하지 않는다면, RT는 리네이밍이 원상태가 되게 하는 메커니즘을 가져야하는데, 즉, LRN r2의 매핑을 이전에 명명된 PRN으로 복구한다. 조건이 만족하지 않는다면, SUBEQ가 실제로 새로운 PRN을 기록하지 않고, RT는 정의되지 않은 데이터를 포함하는 물리 레지스터로 LRN r2를 매핑하게 남겨두기 때문에 이것은 필수적이다. 이 부가적 회로는 복잡성을 부가하고 RT에서의 전력 소비를 증가시킨다.
그 출력이 조건 평가에 의존하는, 본 기술에 알려진 일 유형의 명령은, 조건부 선택이다. 조건부 선택 명령은 항상 결과를 기록 (즉, 무조건적으로) 하기 위한 명령 세트 구성에 의해 정의된다. 출력이 기록되었는지 여부가 아니라, 기록된 값만이 조건 평가에 의존한다. 예를 들어, EQ 조건이 맞는다면, 조건부 선택 ADD 명령, ADDSEQ r2, r3, r4, r5는 r4 및 r5의 콘텐츠를 가산하고, r2에 결 과를 위치시킨다. EQ 조건이 맞지 않는다면, 명령은 r2에 r3의 콘텐츠를 위치시킨다. 이 명령이 구성적으로 그리고 의미론적으로, 대안적인 결과 (이 예에서, r3의 판독) 에 대한 명시적인 입력을 갖는다는 것을 주목한다. 그러면, 출력은 조건 평가에 의존하여 대안적인 결과 또는 동작의 결과 사이에서 선택한다.
조건부 명령은 조건부 선택과 구별된다. 본 명세서에 사용된 바와 같이, "조건부 명령"은 조건이 만족 된다면 연산의 결과를 타겟에 기록하고 조건이 만족 되지 않는다면 타겟에 기록하지 않도록 구성된 명령이다. 즉, 조건이 실패라면, 조건부 명령은 NOP로 효과적으로 변경하고, 어떤 레지스터도 기록하지 않거나 피연산자 포워딩 환경에서 임의의 결과를 포워딩한다. 조건부 명령이 출력을 제공할지 여부가 정확하게 불확실하므로, (종종, 파이프라인에서 후기에 발생하는) 조건이 평가될 때까지 프로세서로 하여금 강제적으로 (일반적으로 파이프라인에서 초기에 발생하는) 레지스터 리네이밍 스테이지에서 파이프라인을 정지시키게 한다. 조건부 명령이 사실상 존재하는 NOP인지 여부가 알려질 때에만 다음 명령의 데이터 의존성이 해결될 수 있다. 이 유형의 조건부 명령은 현대 프로세서 ISA에 공통이다.
요약
입력으로서 하나 이상의 피연산자를 수신하고, 조건이 만족하는 경우 피연산자에 대해 수행된 연산의 결과를 타겟에 출력하고, 조건이 만족하지 않는 경우 출력을 제공하지 않도록 구성된 조건부 명령이 실행되어, 무조건적으로 출력을 타겟에 제공한다. 조건부 명령은 타겟의 이전 값 (즉, 그 타겟을 업데이트한 조건 부 명령에 선행하는 가장 최근의 명령에 의해 생성된 값) 을 얻는다. 조건이 평가된다. 조건이 만족하는 경우, 피연산자에 대하여 수행된 연산의 결과는 타겟으로 출력된다. 조건이 만족하지 않는 경우, 이전 값이 타겟으로 출력된다. 후속 명령은, 조건 평가에 앞서, 피연산자 소스 (레지스터로 기록되었는지 또는 명령으로 포워딩 되었는지 여부) 에 따라 타겟에 의존할 수도 있다.
파이프라인 프로세서에서 조건부 명령을 실행하는 방법과 관련된 일 실시 형태에서, 입력으로서 하나 이상의 피연산자를 수신하도록 구성된 조건부 명령은 조건이 만족한다면 피연산자에 대해 수행된 연산의 결과를 타겟에 출력하고 조건이 만족하지 않는다면 출력을 제공하지 않는다. 하나 이상의 피연산자 값과 타겟의 이전 값이 수신되고, 조건이 평가된다. 조건이 만족한다면, 피연산자 값에 대해 연산이 수행되어 결과 값을 생성하고 결과는 타겟에 출력된다. 조건이 만족하지 않는다면, 이전 타겟 값이 타겟으로 출력된다.
다른 실시 형태는, 논리 레지스터를 물리 레지스터로 동적으로 매칭하는 레지스터 리네이밍 시스템을 이용하는 파이프라인 프로세서에서 조건이 만족한다면 피연산자의 결과를 논리 타겟 레지스터에 기록하고 조건이 만족하지 않는다면 어떤 레지스터도 기록하지 않도록 구성된 조건부 명령을 실행하는 방법과 관련된다. 제 1 값은 논리 타겟 레지스터와 연관된 제 1 물리 레지스터로부터 판독된다. 논리 타겟 레지스터는 제 2 물리 레지스터로 리네이밍된다. 조건이 평가된다. 조건이 만족한다면, 연산이 수행되어 결과 값을 생성하고, 결과 값이 제 2 물리 레지스터에 기록된다. 조건이 만족하지 않는다면, 제 1 값이 제 2 물리 레지스 터에 기록된다.
다른 실시 형태는, 조건이 만족한다면 연산의 결과를 논리 타겟 레지스터로 기록하고 조건이 만족하지 않는다면 어떤 레지스터도 기록하지 않도록 구성된 조건부 명령을 실행하는 방법과 관련된다. 방법은 논리 타겟 레지스터와 연관된 제 1 물리 레지스터로부터 이전 값을 판독하는 단계를 포함한다.
다른 실시 형태는, 조건이 만족한다면 연산의 결과를 논리 타겟 레지스터로 기록하고 조건이 만족하지 않는다면 어떤 레지스터도 기록하지 않도록 구성된 조건부 명령을 실행하는 방법과 관련된다. 방법은 값을 논리 타겟 레지스터에 무조건적으로 기록하는 단계를 포함한다.
다른 실시 형태는, 논리 레지스터 식별자를 물리 레지스터와 동적으로 연관시키도록 작동하는 리네이밍 테이블과 복수의 물리 레지스터를 포함하는 프로세서와 관련된다. 프로세서는 프로그램 순서를 벗어나 명령을 실행하도록 작동하는 명령 실행 파이프라인도 포함한다. 파이프라인은 조건의 평가 전에, 조건부 명령에 대한 부수적인 의존성을 갖는 명령에 대한 피연산자 소스로서 그리고 조건부 명령에 대한 타겟으로서 물리 레지스터를 무조건적으로 할당하도록 더 작동한다. 조건부 명령은 조건이 만족한다면 연산의 결과를 타겟에 기록하고 조건이 만족하지 않는다면 타겟에 기록하지 않도록 구성된다.
도면의 간단한 설명
도 1은 프로세서의 기능적 블록 다이어그램이다.
도 2는 조건부 명령을 실행하는 방법을 도시하는 흐름도이다.
도 3은 조건부 명령의 출력 결정을 도시하는 기능적 블록도이다.
상세한 설명
도 1은 프로세서 (10) 의 기능적 블록 다이어그램을 도시한다. 프로세서 (10) 는 제어 로직 (14) 에 따라 명령 실행 파이프라인 (12) 에서 명령을 실행한다. 파이프라인 (12) 은 12a 및 12b와 같이 평행한 다중 파이프라인을 갖는 슈퍼스칼라 설계일 수도 있다. 파이프라인 (12a, 12b) 은 파이프 단계에서 조직된 다양한 레지스터 또는 래치 (16), 및 하나 이상의 ALU (Arithmetic Logic Units;18) 를 포함한다. RRF (Renaming Register File;20) 는, 구성된 GPR (General Purpose Registers) 의 수를 초과하여, 많은 복수의 물리 레지스터를 제공한다. RRF (20) 의 레지스터는 프로세서 메모리 계층의 상부를 포함하고 1차 피연산자(들) 소스와 명령에 대한 목적지 타겟으로서 역할한다. RT (Renaming Table;21) 는 RRF (20) 와 연관되고, RT (21) 는 논리 GPR 식별자를 RRF (20) 의 물리 레지스터와 동적으로 연관시킨다.
파이프라인 (12a, 12b) 은 ITLB (Instruction-side Translation Lookaside Buffer;24) 에 의해 관리되는 메모리 어드레싱 및 허가로써, I-캐시 (Instruction Cache;22) 로부터 명령을 페치한다. TLB (Translation Lookaside Buffer;28) 에 의해 관리되는 메모리 어드레싱 및 허가로써, D-캐시 (Data Cache;26) 로부터 데이터가 액세스된다. 다양한 실시 형태에서, ITLB는 TLB의 일부의 사본을 포함할 수도 있다. 대안으로는, ITLB와 TLB는 통합될 수도 있다. 유사하게, 프로세서 (10) 의 다양한 실시 형태에서, I-캐시 (22) 및 D-캐시 (26) 는 통합, 또 는 단일화될 수도 있다. I-캐시 (22) 및/또는 D-캐시의 실패 (misses) 는, 메모리 인터페이스 (30) 의 제어 하에서, 메인 (오프칩;off-chip) 메모리 (32) 를 액세스하게 한다.
프로세서 (10) 는 다양한 주변 디바이스 (36) 에 액세스하는 것을 제어하는 입력/출력 (I/O) 인터페이스 (34) 를 포함할 수도 있다. 프로세서 (10) 의 수 많은 변화가 가능하다는 것을 당업자는 이해한다. 예를 들어, 프로세서 (10) 는 I 캐시 및 D 캐시 둘 다 또는 어느 하나에 대한 제 2 레벨 (L2) 캐시를 포함할 수도 있다. 부가적으로, 프로세서 (10) 에 도시된 하나 이상의 기능적 블록은 특정 실시 형태로부터 생략될 수도 있다.
하나 이상의 실시 형태에 따라, 조건부 명령이 레지스터를 기록할지 하지 않을지 여부의 불확실성 - 이 불확실성은 조건이 평가될 때까지 해결되지 않는다 - 은 파이프라인의 정지를 발생시키지 않는다. 불확실성은 그 타겟 레지스터를 항상 (즉, 무조건적으로) 기록하는 조건부 명령에 의해 제거된다. 타겟 레지스터에 기록된 값은 조건 평가에 의존한다. 조건부 명령은 그 자신 타겟의 이전 값 (즉, 그 타겟을 업데이트한 조건부 명령에 선행하는 가장 최근의 명령에 의해 생성된 값) 을 판독하고, 조건 평가시 (조건이 만족하지 않는다면) 이전값 또는 (조건이 만족한다면) 동작의 결과 중 어느 하나를 타겟에 기록한다. 이 방식에서, 조건부 명령을 따르는 명령은 평가를 위해 조건을 대기하지 않고 그 피연산자의 소스-조건부 명령의 타겟-를 보장한다. 특히, 레지스터 리네이밍 시스템은 조건 평가를 따르는 정확한 값 (조건부 동작의 결과 또는 이전 명령 또는 메모리 액세스의 결과 중 어느 하나) 을 포함하는 PRN을 신뢰하여 조건부 명령의 타겟 LRN을 PRN으로 리네이밍할 수도 있다.
조건부 명령을 실행하는 방법의 일 실시 형태는 도 2에 형성된 흐름도에 도시된다. 조건부 명령은 그 타겟의 이전 값을 입력한다 (블록 40). 이것은 명령으로 할당된 타겟 LRN (예를 들어, GPR 식별자) 을 판독하는 단계를 포함하는데, 이는 레지스터 리네이밍이 사용된다면, 조건부 명령이 디코딩될 때 RT가 LRN을 매핑하는 PRN을 판독하는 단계와 동등하다. 대안으로, 피연산자 포워딩 연산에서, 타겟의 이전 값을 입력하는 것은 이전 명령의 출력을 직접적으로 얻는 단계를 포함할 수도 있다. 어느 한 경우에, 이전 값은 메모리 액세스 연산 또는 이전 명령의 결과이다. 조건부 명령은 명령을 실행하는 본 발명의 방법으로 인해 이전 값을 판독한다; 이것은 조건부 명령에 대해 구성된 피연산자가 아니다. 도 2의 방법의 제 1 단계에 타겟의 이전 값을 판독하는 단계가 도시되었지만, 이것은 필수적으로 요구되지는 않는다. 이전 값이 (메모리 액세스 동작 등으로부터 처럼) 조건부 명령으로 포워딩된다면, 타겟의 논리 식별자의 리네이밍에 앞서 어느 때나 타겟의 이전 값이 판독될 수도 있고, 또는 리네이밍 이후도 타겟의 이전 값이 판독될 수도 있다.
조건부 명령에 관계된 조건이 평가된다 (블록 42). 이것은, 실행 단계에서와 같이, 파이프라인의 깊은 곳에서 발생할 수도 있다. 이 이유로 인해, 명령이 어떤 출력을 생성할 것인가의 여부가 조건 평가 때까지 확실하게 되지 않기 때문에, 종래 기술의 조건부 명령은 레지스터 리네이밍 단계에서 파이프라인을 정 지시키게 한다. 대안으로, 조건부 명령에 의해 레지스터에 기록될 값의 예측시 레지스터가 리네이밍되었다면, 조건이 만족하지 않고 기록이 발생하지 않는다면 리네이밍 연산은 완료되지 않아야 한다.
조건이 만족한다면, 하나 이상의 피연산자는 조건부 명령으로 입력된다 (블록 44). 이것은 GPR의 판독 또는 피연산자 포워딩 연산을 포함할 수도 있다. 본 기술의 숙련된 기술자는, 피연산자 입력 단계가 조건 평가에 앞선다는 것을 주목한다; 조건이 만족하지 않는다면, 피연산자는 간단히 폐기된다. 피연산자에 대하여 산술적 또는 논리적 연산이 수행되어 (블록 46) 결과를 생성하고, 결과가 출력된다 (블록 48). LRN (즉, RT를 통해 LRN과 연관된 PRN) 에 기록하거나 결과를 다른 명령으로 직접 포워딩함으로써 출력될 수도 있다.
조건이 만족하지 않는다면 (블록 42), 조건부 명령은 (다시, 타겟 LRN을 기록함으로써 또는 레지스터 포워딩에 의해) 그 타겟으로부터 입력되었던 이전 값을 출력하며 (블록 50), 따라서, 만족 되지않은 조건의 경우에는 긍정적으로 이전 값을 제공한다. 도 2에 도시된 실시 형태에서, 조건이 만족 되지 않는다면 피연산자는 판독되지 않고 연산도 수행되지 않는다. 다른 실시 형태에서, 피연산자를 판독하는 단계와, 심지어 연산을 수행하는 단계가, 조건 평가에 앞서 피연자산자에 행해질 수도 있고, 생성된다면 그 결과는, 조건이 만족 되지않는 경우, 단순히 폐기된다. 조건부 평가에 관계없이, 조건부 명령은 출력을 제공한다는 것을 주목한다 (블록 48, 50). 이것은 구성된 바와 같이 명령을 실행하는, 조건부 명령을 실행하는 종래 기술의 방법-즉, 조건이 만족하는 경우에만 출력을 제공하고 조건이 만족하지 않는 경우 어떤 출력 (레지스터 기록 또는 피연산자 포워딩) 도 제공하지 않는 것과는 대조적이다.
상기의 대표적인 코드 프래그먼트, 특히 SUBEQ r2, r7, r8 명령을 이용하는, 일 실시 형태에 따른 출력 선택이 도 3에 개략적으로 도시된다. RT (21) 매핑에 뒤따라서 LRN r2의 이전 값이 PRN x로부터 판독된다. 이 값 (또는 적어도, PRN 식별자) 은 파이프라인을 통해 이것이 진행함에 따라 조건부 명령에 의해 유지된다. 레지스터 리네이밍 시스템은 조건 평가에 앞서 RT (21) 를 업데이트할 수도 있는데, LRN r2를 새로운 물리 레지스터, PRN y로 리네이밍한다. 피연산자는 r7 및 r8로부터 판독되고, ALU (18) 에서 감산 연산이 수행된다. 조건이 평가되고, 평가 결과는, 연산의 결과 또는 이전 값이 조건부 명령의 타겟 LRN r2 (PRN y로 리네이밍된) 에 기록될지 여부를 결정한다. 본 기술의 숙련된 기술자는, 도 3은 대표적일 뿐 다른 실시 형태에서, r7 및 r8의 판독과 감산 연산은 조건이 만족하는 경우에만 수행될 수도 있음을 이해한다.
하나 이상의 실시 형태에 따른 조건부 명령 실행이 무조건적으로 출력을 제공하기 때문에 - 연산의 결과 또는 그 타겟의 이전 값 중 어느 하나는 조건 평가에 의존한다 - 많은 경우에 조건 평가를 대기하기 위해 파이프라인이 정지될 필요가 없다. 예를 들어, RT (21) 는 조건 평가에 대한 대기 없이 조건부 명령의 타겟 LRN을 RRF (20) 의 이용 가능한 물리 레지스터로 리네이밍할 수도 있다. 그 LRN을 판독하는 후속 명령은 조건부 명령에 의해 기록된 물리 레지스터로부터 적합한 결과를 얻는 것을 확신한다. 그 물리 레지스터는, 레지스터 리네이밍에 앞 서 (조건이 만족하지 않는다면) LRN과 이전에 연관되었된 PRN으로부터의 값 또는 연산의 결과 (조건이 만족한다면) 중 어느 하나를 포함한다. 따라서, 파이프라인은 조건 평가를 대기하기 위해 레지스터 리네이밍 단게에서 정지할 필요가 없다.
일 실시 형태에서, 조건의 평가에 앞서, 하나 이상의 피연산자가 조건부 명령에 의해 직접적으로 제공될 수도 있을 때, 피연산자 포워딩은 파이프라인 제어기 (14) 로 하여금 명령의 피연산자(들)의 소스를 결정하게 함으로써 단순화된다. 본 기술에서 잘 알려진 바와 같이, 피연산자 포워딩은, 제 1 명령에 의해 레지스터에 기록하고 제 2 명령에 의해 레지스터를 판독할 것을 요구하지 않고, 한 명령의 출력이 다른 명령으로 직접적으로 포워딩되는 기술이다. 종래 기술에서, 조건부 명령에 뒤따른 명령은 그 피연산자가 조건부 명령 (조건이 만족하는 경우) 또는 이전 명령 (조건이 만족하지 않고 조건부 명령이 출력을 생성하지 않는 경우) 에 의해 포워딩될 것인지 여부를 확인할 수 없고, 따라서, 그 피연산자 소스를 결정하기 위해 조건 평가를 대기해야만 한다. 무조건적으로 출력을 제공함으로써, 이 실시 형태의 조건부 명령 실행의 방법은 이 불확실성을 제거하고, 조건의 평가에 앞서 피연산자의 소스에 관하여 결정이 되도록 허용한다. 특히, 조건부 명령 실행 방법이 무조건적으로 출력을 포워딩할 것이기 때문에, 파이프라인 제어기 (14) 는 조건의 평가에 앞서 다음 명령에 대한 피연산자 소스로서 조건부 명령을 신뢰성 있게 할당할 수도 있다. 그 출력은 이전 명령 (조건이 만족하지 않는다면) 또는 연산의 결과 (조건이 만족한다면) 에 의해 조건부 명령으로 포워딩된 이전 값일 수도 있다.
본 발명은 특별한 특징, 그 양태 및 실시 형태에 관하여 본 명세서에 기재되었지만, 수 많은 변화, 수정, 및 다른 실시 형태가 본 발명이 넓은 범위 내에 있고, 따라서, 모든 변화, 수정, 및 실시 형태는 본 발명의 범위로 여겨진다는 것은 명확하다. 따라서, 본 실시 형태는 모든 양태에서 제한이 아닌 설명으로서 해석되고 첨부된 청구 범위의 의미와 등가적 범위에 있는 모든 변경이 그 안에 포함될 것을 의도한다.

Claims (23)

  1. 파이프라인 프로세서에서, 입력으로서 하나 이상의 피연산자를 수신하고, 조건이 만족한다면 상기 피연산자에 대하여 수행된 연산의 결과를 타겟에 출력하고, 상기 조건이 만족하지 않는다면 출력을 제공하지 않도록 구성된 조건부 명령을 실행하는 방법으로서,
    하나 이상의 피연산자 값을 수신하는 단계;
    상기 타겟의 이전 값을 수신하는 단계;
    조건을 평가하는 단계;
    상기 조건이 만족한다면, 상기 피연산자 값에 대하여 연산을 수행하여 결과 값을 생성하고 상기 결과를 상기 타겟에 출력하는 단계; 및
    상기 조건이 만족하지 않는다면, 상기 이전 타겟 값을 상기 타겟에 출력하는 단계를 포함하는, 조건부 명령 실행 방법.
  2. 제 1 항에 있어서,
    상기 타겟의 이전 값을 수신하는 단계는 제 1 레지스터로부터 상기 이전 값을 판독하는 단계를 포함하는, 조건부 명령 실행 방법.
  3. 제 2 항에 있어서,
    상기 결과를 출력하는 단계 또는 상기 타겟의 상기 이전 값을 출력하는 단계 는 각각의 값을 제 2 레지스터로 기록하는 단계를 포함하는, 조건부 명령 실행 방법.
  4. 제 3 항에 있어서,
    상기 제 1 및 제 2 레지스터는 레지스터 리네이밍 시스템 내의 물리 레지스터이고, 논리 레지스터는 상기 조건의 평가에 앞서 상기 제 1 레지스터로부터 상기 제 2 레지스터로 무조건적으로 리네이밍되는, 조건부 명령 실행 방법.
  5. 제 4 항에 있어서,
    상기 조건부 명령에 후속하는 명령은 상기 조건의 평가 이전에 피연산자 페치를 위하여 상기 제 2 레지스터로 무조건적으로 디렉팅되는, 조건부 명령 실행 방법.
  6. 제 1 항에 있어서,
    상기 타겟의 상기 이전 값은 이전에 실행된 명령의 출력인, 조건부 명령 실행 방법.
  7. 제 1 항에 있어서,
    상기 결과 값을 출력하는 단계 또는 상기 타겟의 상기 이전 값을 출력하는 단계는 각각의 값을 후속 명령로 포워딩하는 단계를 포함하는, 조건부 명령 실행 방법.
  8. 제 7 항에 있어서,
    상기 조건부 명령은 상기 조건의 평가에 앞서 후속 명령에 대한 피연산자의 소스로서 무조건적으로 선택되는, 조건부 명령 실행 방법.
  9. 논리 레지스터를 물리 레지스터로 동적으로 매핑하는 레지스터 리네이밍 시스템을 이용하는 파이프라인 프로세서에서, 조건이 만족한다면 연산의 결과를 논리 타겟 레지스터로 기록하고 상기 조건이 만족하지 않는다면 어떤 레지스터도 기록하지 않도록 구성된 조건부 명령을 실행하는 방법으로서,
    상기 논리 타겟 레지스터와 연관된 제 1 물리 레지스터로부터 제 1 값을 판독하는 단계;
    상기 논리 타겟 레지스터를 제 2 물리 레지스터로 리네이밍하는 단계;
    조건을 평가하는 단계;
    상기 조건이 만족한다면, 연산을 수행하여 결과 값을 생성하고 상기 결과 값을 상기 제 2 물리 레지스터에 기록하는 단계; 및
    상기 조건이 만족하지 않는다면, 상기 제 1 값을 상기 제 2 물리 레지스터에 기록하는 단계를 포함하는, 조건부 명령 실행 방법.
  10. 제 9 항에 있어서,
    상기 조건의 평가에 앞서, 상기 조건부 명령에 후속하는 명령에 대한 피연산자 소스로서 상기 제 2 물리 레지스터를 할당하는 단계를 더 포함하는, 조건부 명령 실행 방법.
  11. 조건이 만족한다면 연산의 결과를 논리 타겟 레지스터로 기록하고 상기 조건이 만족하지 않는다면 어떤 레지스터도 기록하지 않도록 구성된 조건부 명령을 실행하는 방법으로서,
    상기 논리 타겟 레지스터와 연관된 제 1 물리 레지스터로부터 이전 값을 판독하는 단계를 포함하는, 조건부 명령 실행 방법.
  12. 제 11 항에 있어서,
    상기 논리 타겟 레지스터를 제 2 물리 레지스터로 리네이밍하는 단계를 더 포함하는, 조건부 명령 실행 방법.
  13. 제 12 항에 있어서,
    조건을 평가하는 단계;
    상기 조건이 만족한다면, 연산을 수행하여 결과를 생성하고, 상기 결과를 상기 제 2 물리 레지스터에 기록하는 단계; 및
    상기 조건이 만족하지 않는다면, 상기 이전 값을 상기 제 2 물리 레지스터로 기록하는 단계를 더 포함하는, 조건부 명령 실행 방법.
  14. 조건이 만족한다면 연산의 결과를 논리 타겟 레지스터로 기록하고 상기 조건이 만족하지 않는다면 어떤 레지스터도 기록하지 않도록 구성된 조건부 명령을 실행하는 방법으로서,
    소정의 값을 상기 논리 타겟 레지스터로 무조건적으로 기록하는 단계를 포함하는, 조건부 명령 실행 방법.
  15. 제 14 항에 있어서,
    소정의 값을 상기 논리 타겟 레지스터로 기록하는 단계는 소정의 값을 상기 논리 타겟 레지스터와 연관된 제 2 물리 레지스터에 기록하는 단계를 포함하는, 조건부 명령 실행 방법.
  16. 제 14 항에 있어서,
    상기 논리 타겟 레지스터와 이전에 연관된 제 1 물리 레지스터로부터 이전 값을 판독하는 단계와, 상기 논리 타겟 레지스터를 상기 제 1 물리 레지스터로부터 상기 제 2 물리 레지스터로 리네이밍하는 단계를 더 포함하는, 조건부 명령 실행 방법.
  17. 제 16 항에 있어서,
    무조건적으로 기록된 데이터는, 조건이 만족한다면 상기 조건부 명령에 의해 수행된 연산의 상기 결과이고, 상기 조건이 만족하지 않는다면 상기 이전 값인, 조건부 명령 실행 방법.
  18. 제 17 항에 있어서,
    상기 조건 평가에 앞서, 상기 조건부 명령에 뒤따르는 명령에 대한 피연산자 소스로서 상기 제 2 물리 레지스터를 무조건적으로 할당하는 단계를 더 포함하는, 조건부 명령 실행 방법.
  19. 복수의 물리 레지스터;
    논리 레지스터 식별자를 상기 물리 레지스터와 동적으로 연관시키도록 작동하는 리네이밍 테이블;
    프로그램 순서를 벗어나 명령을 실행하도록 작동하고, 상기 조건의 평가 전에, 상기 조건부 명령에 대한 부수적인 의존성을 갖는 명령에 대한 피연산자 소스로서 그리고 조건부 명령에 대한 타겟으로서 논리 레지스터 식별자를 무조건적으로 할당하도록 작동하는 명령 실행 파이프라인으로서, 상기 조건부 명령은 조건이 만족한다면 연산의 결과를 타겟에 기록하고 상기 조건이 만족하지 않는다면 상기 타겟에 기록하지 않도록 구성되는, 상기 명령 실행 파이프라인을 포함하는, 프로세서
  20. 제 19 항에 있어서,
    상기 조건부 명령은 상기 논리 레지스터 식별자와 연관된 제 1 물리 레지스 터로부터 이전 값을 판독하도록 작동하는, 프로세서.
  21. 제 20 항에 있어서,
    상기 리네이밍 테이블은 상기 논리 레지스터 식별자를 상기 제 1 물리 레지스터로부터 제 2 물리 레지스터로 리네이밍하도록 작동하는, 프로세서.
  22. 제 20 항에 있어서,
    상기 조건부 명령은 상기 조건이 만족한다면 연산을 수행하고 결과를 상기 제 2 물리 레지스터에 기록하도록 작동하고, 또는 상기 조건이 만족하지 않는다면 상기 이전 값을 상기 제 2 물리 레지스터에 기록하도록 작동하는, 프로세서.
  23. 제 22 항에 있어서,
    상기 조건부 명령에 뒤따르는 명령은 상기 조건 평가에 앞서, 피연산자 소스로서 상기 제 2 물리 레지스터가 무조건적으로 할당되는, 프로세서.
KR1020077026476A 2005-04-14 2006-04-14 조건부 명령이 무조건적으로 출력을 제공하는 시스템 및방법 KR100953856B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/106,803 US7624256B2 (en) 2005-04-14 2005-04-14 System and method wherein conditional instructions unconditionally provide output
US11/106,803 2005-04-14

Publications (2)

Publication Number Publication Date
KR20070121842A true KR20070121842A (ko) 2007-12-27
KR100953856B1 KR100953856B1 (ko) 2010-04-20

Family

ID=37016156

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077026476A KR100953856B1 (ko) 2005-04-14 2006-04-14 조건부 명령이 무조건적으로 출력을 제공하는 시스템 및방법

Country Status (9)

Country Link
US (1) US7624256B2 (ko)
EP (1) EP1869547B1 (ko)
JP (3) JP2008537231A (ko)
KR (1) KR100953856B1 (ko)
CN (1) CN101194225B (ko)
BR (1) BRPI0610222A2 (ko)
IL (1) IL186632A (ko)
TW (1) TWI317906B (ko)
WO (1) WO2006113420A2 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
CN101324838A (zh) * 2008-07-31 2008-12-17 华为技术有限公司 一种指令执行方法和装置
US8140780B2 (en) * 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
JP5072889B2 (ja) * 2009-03-16 2012-11-14 株式会社東芝 事前条件生成装置および事後条件生成装置、ならびにこれらの方法
GB2480285A (en) * 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
GB2484654B (en) * 2010-10-12 2013-10-09 Advanced Risc Mach Ltd Conditional selection of data elements
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
US9032189B2 (en) * 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction 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
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
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
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
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
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
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
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
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
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked 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
JP6422381B2 (ja) * 2015-03-18 2018-11-14 ルネサスエレクトロニクス株式会社 プロセッサ、プログラムコード変換装置及びソフトウェア
JP7081922B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置及びゲームを実行するための方法
CN111209039B (zh) * 2018-11-21 2022-08-02 展讯通信(上海)有限公司 指令处理方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2933027B2 (ja) * 1996-08-30 1999-08-09 日本電気株式会社 複数命令並列発行/実行管理装置
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6170052B1 (en) * 1997-12-31 2001-01-02 Intel Corporation Method and apparatus for implementing predicated sequences in a processor with renaming
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US20020112148A1 (en) * 2000-12-15 2002-08-15 Perry Wang System and method for executing predicated code out of order
US6883089B2 (en) * 2000-12-30 2005-04-19 Intel Corporation Method and apparatus for processing a predicated instruction using limited predicate slip
US20050066151A1 (en) 2003-09-19 2005-03-24 Sailesh Kottapalli Method and apparatus for handling predicated instructions in an out-of-order processor
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output

Also Published As

Publication number Publication date
TWI317906B (en) 2009-12-01
BRPI0610222A2 (pt) 2010-06-08
EP1869547A2 (en) 2007-12-26
JP6009608B2 (ja) 2016-10-19
US7624256B2 (en) 2009-11-24
IL186632A (en) 2012-04-30
TW200705266A (en) 2007-02-01
JP2008537231A (ja) 2008-09-11
JP2012212433A (ja) 2012-11-01
KR100953856B1 (ko) 2010-04-20
WO2006113420A2 (en) 2006-10-26
CN101194225A (zh) 2008-06-04
WO2006113420A3 (en) 2006-12-21
IL186632A0 (en) 2008-01-20
CN101194225B (zh) 2013-10-23
EP1869547B1 (en) 2016-09-21
US20060236078A1 (en) 2006-10-19
JP2015164048A (ja) 2015-09-10

Similar Documents

Publication Publication Date Title
KR100953856B1 (ko) 조건부 명령이 무조건적으로 출력을 제공하는 시스템 및방법
Jourdan et al. A novel renaming scheme to exploit value temporal locality through physical register reuse and unification
EP2018609B1 (en) Pre-decoding variable length instructions
TWI507980B (zh) 最佳化暫存器初始化操作
KR100402185B1 (ko) 컴퓨터 처리 시스템에서 순서화된 시퀀스의 명령어를실행하는 방법 및 장치
US5758112A (en) Pipeline processor with enhanced method and apparatus for restoring register-renaming information in the event of a branch misprediction
US6665776B2 (en) Apparatus and method for speculative prefetching after data cache misses
JP5866259B2 (ja) 誤予測された分岐のためにフラッシュするセグメント化パイプライン
CN108196884B (zh) 利用生成重命名的计算机信息处理器
US7660971B2 (en) Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
US20070033385A1 (en) Call return stack way prediction repair
KR101154628B1 (ko) 확장형 명령의 구성 명령들 사이에 중간 결과들을 포워딩하는 레지스터 리네이밍 시스템의 사용
US7051193B2 (en) Register rotation prediction and precomputation
US20150227371A1 (en) Processors with Support for Compact Branch Instructions & Methods
US9841974B2 (en) Renaming with generation numbers
US7496734B1 (en) System and method for handling register dependency in a stack-based pipelined processor
US7783692B1 (en) Fast flag generation

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: 20130329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 10