KR101148495B1 - 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치 - Google Patents

파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR101148495B1
KR101148495B1 KR1020097025056A KR20097025056A KR101148495B1 KR 101148495 B1 KR101148495 B1 KR 101148495B1 KR 1020097025056 A KR1020097025056 A KR 1020097025056A KR 20097025056 A KR20097025056 A KR 20097025056A KR 101148495 B1 KR101148495 B1 KR 101148495B1
Authority
KR
South Korea
Prior art keywords
condition code
register
pipeline
instruction
value
Prior art date
Application number
KR1020097025056A
Other languages
English (en)
Other versions
KR20100003309A (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 KR20100003309A publication Critical patent/KR20100003309A/ko
Application granted granted Critical
Publication of KR101148495B1 publication Critical patent/KR101148495B1/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, 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, 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/46Multiprogramming arrangements

Abstract

다수의 파이프라인들을 갖는 파이프라인 프로세서 내에서 조건 명령을 실행하는 방법으로서, 상기 파이프라인 프로세서는 제 1 파이프라인과 연관된 제 1 조건 코드 레지스터와 제 2 파이프라인과 연관된 제 2 조건 코드 레지스터를 가지는 방법이 개시된다. 상기 방법은, 최신(most recent) 조건 코드 값을 상기 제 1 조건 코드 레지스터 또는 상기 제 2 조건 코드 레지스터 중 하나의 레지스터에 저장한다. 상기 방법은 또한 상기 제 2 조건 코드 레지스터가 상기 최신 조건 코드 값을 갖는지 여부를 표시하는 표시자를 설정하고 상기 표시자에 기초하여 상기 제 1 또는 제 2 조건 코드 레지스터 중 하나로부터 상기 최신 조건 코드 값을 리트리빙(retrieving)한다. 상기 방법은 상기 조건 명령이 실행되어야하는지 여부를 결정하기 위하여 상기 최신 조건 코드 값을 이용한다.

Description

파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치{A SYSTEM AND METHOD FOR USING A LOCAL CONDITION CODE REGISTER FOR ACCELERATING CONDITIONAL INSTRUCTION EXECUTION IN A PIPELINE PROCESSOR}
본 발명은 일반적으로 컴퓨터 시스템들에 관한 것이며, 보다 상세하게는 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치에 관한 것이다.
프로세서 파이프라인은 다수의 스테이지들로 구성되며, 각 스테이지는 명령과 연관된 특정 기능을 수행한다. 각 스테이지는 파이프 스테이지 또는 파이프 세그먼트로 불린다. 스테이지들은 서로 연결되어 파이프라인을 형성한다. 명령들은 파이프라인의 일단으로 입력되어 타단에서 나오게 된다. 명령들은 스트림(stream)으로 순차적으로 파이프라인 스테이지들을 통해 흐르게 된다. 스테이지들은 수 개의 스테이지들이 수 개의 명령들을 동시에 처리하고 있을 수 있도록 배치된다. 상이한 파이프라인 스테이지들에서 다수의 명령들을 동시에 처리하는 것은 한 번에 하나의 명령을 처리하는 것보다 프로세서가 명령들을 더 빨리 처리하는 것을 가능하게 하며, 따라서 프로세서의 실행 속도를 향상시킨다.
프로세서 내에, 복수 개의 파이프라인들 처리 명령들이 존재할 수 있다. 개별 파이프라인들은 특별 프로세서 기능들을 수행할 수 있다. 예를들어, 프로세서는 정수 명령들 실행하기 위한 한 파이프라인을 갖고 부동 소숫점 또는 벡터 명령들을 실행하기 위한 다른 파이프라인을 가질 수 있다. 명령의 기능성에 기초해서 파이프라인을 분리함에 의해, 프로세서는 명령들을 실행할 때 자신의 자원들을 보다 효율적으로 이용할 수 있다.
개별 파이프라인에서 처리될 수 있는 일부 예시적인 명령들은 조건(conditional) 명령들일 수 있다. 당업자가 이해할 수 있듯이, 조건 명령들은 조건이 충족되거나 되지 않는 경우에 실행되거나 실행되지 않을 수 있는 명령들이다. 조건 명령들을 실행하기 위하여, 조건 코드 레지스터가 다음 조건 명령들을 처리하는데 이용될 수 있는 최신(most recent) 조건 코드를 저장하는데 이용된다. 조건 명령들은 프로세서 내의 파이프라인들 중 임의의 것에서 실행될 수 있다.
통상적으로, 이전 ARM(진보된 RISC 머신) 프로세서들에서, 복수의 파이프라인들을 지원하는데 이용되는 조건 코드 값들을 갖는 단지 하나의 액세스가능 또는 판독가능 조건 코드 레지스터가 존재하였다. 이 조건 코드 레지스터는 단지 하나의 파이프라인과 물리적으로 함께 위치하나 다른 파이프라인들과도 연결되었다. 단지 하나의 판독 액세스가능 조건 코드 레지스터를 갖는 것은 특히 다른 원격 위치 파이프라인들에서 조건 명령들을 실행하는 경우 프로세서의 실행에 영향을 미쳤다. 조건 명령들이 로컬 조건 코드 레지스터를 갖지 않는 파이프라인들에서 조건 명령들이 실행될 때 효율 영향이 설명된다. 조건 명령이 실행을 시도할 때 조건 코드 레지스터에 저장된 조건 코드 값이 로컬 조건 코드 레지스터를 갖지 않는 파이프라인 내의 요청 조건 명령으로 전송된다. 그러나, 조건 코드 값은 조건 명령이 조건 코드 값을 요청하는 경우 이전 명령으로부터 업데이팅되고 있을 수 있다. 새로운 조건 코드 값이 조건 코드 레지스터로 기록되고 있는 동안, 조건 명령을 요청하는 것은 새로운 조건 코드 값이 이용가능할 때까지 중단될 수 있다. 조건 코드 레지스터의 업데이트가 완결된 후에, 새로운 조건 코드 값이 판독되고 로컬 조건 코드 레지스터를 갖지 않은 파이프라인의 요청 조건 명령으로 재 전송된다. 그 결과, 로컬 조건 코드 레지스터들을 갖지 않는 파이프라인들에서의 조건 코드 값 리트리벌(retrieval) 프로세스는 완결하는데 수 개의 프로세서 사이클들이 걸릴 수 있다. 조건 코드 값을 변경하는 명령이 로컬 조건 코드 레지스터를 갖지 않는 파이프라인에서 실행되고 뒤이은 조건 명령이 동일한 파이프라인에서 실행된다면 조건 코드 값을 수신하는데 있어서의 지연이 합성될(compounded) 수 있다. 이 경우, 업데이트할 새로운 조건 코드 값이 판독되고 파이프라인으로 재 전송될 수 있을 때까지, 뒤이은 조건 명령은 업데이트할 새로운 조건 코드 값을 대기해야만 할 수 있다.
따라서, 파이프라인들 각각의 사용에 대하여 조건 코드 레지스터의 로컬 카피를 생성함에 의해 프로세서 내의 다중 파이프라인들에서의 조건 명령들의 실행을 촉진하는 방식에 대한 산업계의 필요성이 존재하게 된다. 조건 코드 레지스터의 로컬 카피를 다중 파이프라인들에 제공하는 것은 파이프라인들에서 조건 명령들의 실행을 신속하게 하고 프로세서가 그 자원을 보다 효과적으로 이용할 수 있도록 하여, 프로세서의 효율성을 증가시킨다. 본 개시내용은 이러한 필요를 인식하고 이러한 프로세서를 개시하고 있다.
다수의 파이프라인들을 갖는 파이프라인 프로세서 내에서 조건 명령을 실행하는 방법으로서, 상기 파이프라인 프로세서는 제 1 파이프라인과 연관된 제 1 조건 코드 레지스터와 제 2 파이프라인과 연관된 제 2 조건 코드 레지스터를 가지는 방법이 개시된다. 상기 방법은, 최신 조건(most recent) 코드 값을 상기 제 1 조건 코드 레지스터 또는 상기 제 2 조건 코드 레지스터 중 하나에 저장한다. 상기 방법은 또한 상기 제 2 조건 코드 레지스터가 상기 최신 조건 코드 값을 갖는지 여부를 표시하는 표시자를 설정하고 상기 표시자에 기초하여 상기 제 1 또는 제 2 조건 코드 레지스터 중 하나로부터 상기 최신 조건 코드 값을 리트리빙(retrieving)한다. 상기 방법은 상기 조건 명령이 리트리빙된 상기 최신 조건 코드 값에 응답하여 실행되어야하는지 여부를 결정한다.
또한, 다수의 파이프라인들을 갖는 파이프라인 프로세서 내에서 조건 명령을 실행하는 방법으로서, 상기 파이프라인 프로세서는 제 1 파이프라인과 연관된 제 1 조건 코드 레지스터와 제 2 파이프라인과 연관된 제 2 조건 코드 레지스터를 가지는 방법이 개시된다. 상기 방법은 최신 조건 코드 값을 상기 제 1 조건 코드 레지스터 또는 상기 제 2 조건 코드 레지스터 중 하나의 레지스터에 저장한다. 상기 방법은 또한 상기 프로세서 내의 발행(issue) 스테이지에서 처리될 때 조건 코드를 설정하는 명령에 응답하여 표시자를 설정하며, 상기 조건 코드 표시자는 상기 제 2 조건 코드 레지스터가 상기 최신 조건 코드 값을 갖는지 여부를 표시한다. 상기 방법은 상기 표시자에 기초하여 상기 제 1 또는 제 2 조건 코드 레지스터 중 하나의 레지스터로부터 상기 최신 조건 코드 값을 리트리빙하고 상기 조건 명령이 리트리빙된 상기 최신 조건 코드 값에 응답하여 실행되어야하는지 여부를 결정한다.
명령들을 실행하기 위한 다수의 파이프라인들을 갖는 파이프라인 프로세서가 개시된다. 상기 파이프라인 프로세서는 최신 조건 코드 값을 수용하도록 구성되며 제 1 파이프라인과 연관된 제 1 조건 코드 레지스터를 포함한다. 상기 파이프라인 프로세서는 또한 상기 최신 조건 코드 값을 수용하도록 구성된 제 2 조건 코드 레지스터를 포함한다. 상기 제 2 조건 코드 레지스터는 제 2 파이프라인과 연관된다. 상기 파이프라인 프로세서는 상기 제 2 조건 코드 레지스터가 상기 최신 조건 코드 값을 갖는지 여부를 표시하도록 구성된 표시자를 포함하며, 상기 파이프라인 프로세서는 상기 표시자에 기초하여 상기 최신 조건 코드 값을 리트리브하고 리트리브된 상기 최신 조건 코드 값에 응답하여 조건 명령을 실행할지 여부를 결정하도록 구성된다.
본 발명의 보다 완전한 이해와 본 발명의 특징들 및 이점에 대한 이해는 다음의 상세한 설명과 첨부 도면들로부터 명확해 질 것이다.
도1은 본 발명의 실시예를 이용하는 프로세서의 하이(high) 레벨 로직 하드웨어 블록도이다.
도2는 도1의 CPU의 상위 파이프라인의 보다 상세한 블록도를 도시한다.
도3은 도1의 CPU의 하위 파이프라인들의 보다 상세한 블록도를 도시한다.
도4는 도1의 프로세서에 의해 실행되는 예시적인 명령들의 그룹을 나타낸다.
도5는 도4의 명령들이 도1의 프로세서의 다양한 스테이지들을 통해 실행될 때 도4의 명령들의 예시적인 그룹의 타이밍도를 나타낸다.
도6은 도1의 프로세서의 상위 및 하위 파이프라인들을 통한 예시적인 명령 흐름을 나타내는 흐름도이다.
첨부된 도면과 관련하여 이하에서 제시되는 상세한 설명은 본 발명의 다양한 실시예들의 설명으로서 의도된 것이며 본 발명이 실행될 수 있는 유일한 실시예들을 나타내도록 의도된 것은 아니다. 상세한 설명은 본 발명의 심도있는 이해를 제공하기 위한 목적의 특정 상세들을 포함한다. 그러나, 이들 특정 상세들없이도 본 발명이 실행될 수 있음을 당업자에게 자명할 것이다. 일부 경우들에서, 주지의 구조들 및 컴포넌트들이 본 발명의 개념을 모호하게 함 없이 블록도의 형태로 도시된다. 두문자 약어(acronym)들과 다른 기술적 용어들이 단지 편리성과 간명성을 위해 사용될 수 있으며 본 발명의 범위를 제한하는 것으로 의도되지 않는다.
도1은 설명되는 바와 같이 본 발명의 일 실시예를 이용하는 수퍼스칼라(superscalar) 프로세서(100)의 하이(high) 레벨 도면이다. 프로세서(100)는 전용 고속 버스(104)를 통해 명령 캐시(106)로 연결된 중앙 처리 장치(central processing unit, CPU)(102)를 갖는다. 명령 캐시(106)는 또한 범용 버스(110)를 통해 메모리(108)에 연결된다. CPU(102)는 하위 파이프라인들(160 및 165)에 연결된 상위 파이프라인(150)을 갖는다. CPU(102)는 메모리(108)로부터 명령 캐시(106)로의 명령 로딩을 제어한다. 명령 캐시(106)가 명령들로 로딩되면, CPU(102)는 고속 버스(104)를 통해 명령들을 액세스할 수 있다. 명령들은 명령 캐시(106)로부터 상위 파이프라인(150)으로 인출(fetch)된다. 명령들이 상위 파이프라인(150)에서 처된 후에, 명령들은 추가 처리를 위해 하위 파이프라인들(160 또는 165)로 전송된다. 일 실시예에서, 하위 파이프라인(160)은 정수 파이프라인이고 하위 파이프라인(165)은 부동 소수점/벡터 파이프라인일 수 있다.
명령들은 상위 파이프라인(150)을 시퀀셜(sequential) 프로그램 순서로 떠나게 된다. 상위 파이프라인(150)을 떠난 후에, 명령들은 보다 효율적인 처리를 위하여 하위 파이프라인들(160 또는 165)에서 재배열될 수 있다. 상위 파이프라인(150)의 명령들 상에서 수행되는 일부 예시적인 처리 기능들은 명령들을 인출, 명령들을 할당, 명령들을 디코딩, 명령들을 하위 파이프라인들(160 또는 165)에 발행(issue)하는 것 등이 포함된다. 하위 파이프라인들(160 및 165) 내에서의 명령 처리는 명령을 추적(tracking), 명령을 실행, 명령 결과를 기록하는 것 등이 포함된다.
하위 파이프라인들(160 및 165)은 산술 로직 유닛들, 부동 소숫점 유닛들, 저장 유닛들, 로드 유닛들 등과 같은 다양한 실행 유닛(execution unit, EU)들(130)을 포함할 수 있다. 예를들어, EU(130)는 정수 합산, 정수 감산, 정수 승산, 비트형 로직 동작들(예를들어, AND, NOT, OR, XOR), 비트 시프팅 등과 같은 광범위한 산술 함수들을 실행하기 위한 산술 로직 유닛들을 가질 수 있다. 또한, EU(130)은 부동 소숫점 비교, 부동 소숫점 복사 등과 같은 부동 소숫점 동작들을 수행하기 위한 실행 유닛들을 가질 수 있다. 프로세서(100)의 효율을 증가시키기 위하여, 하위 파이프라인들(160 및 165)은 어떠한 함수들을 수행하도록 조직될 수 있다. 예를들어, 하위 파이프라인(160)은 정수 명령들을 실행하는 EU들(130)을 포함하고, 하위 파이프라인(165)는 부동 소숫점 명령들을 실행하는 EU들(130)을 포함할 수 있다. 명령 기능성을 개별 파이프라인들(160 또는 165)로 분리함에 의해, 복제(duplicate) EU들(130)이 필요할 수 있다. 이하 제시되는 발명적 개념은 두 개 이상의 하위 파이프라인들을 갖는 프로세서에 적용될 수 있다.
하위 파이프라인들(160 및 165) 내에서 조건 코드 레지스터들이 프로세서에 의해 결정된 바와 같은 최신 코드들을 추적(track)할 수 있다. 프로세서(100)는 이들 조건 코드 레지스터들과 연관된 표시자들을 업데이트함에 의해 이들 조건 코드 레지스터들의 일부의 상태를 추적한다. 표시자들과 조건 코드 레지스터들이 도2 내지 도5를 참조하여 추가로 설명된다.
당업자가 이해할 수 있는 바와 같이, 파이프라인 스테이지는 명령을 보유(hold)하는 레지스터 또는 레지스터들의 그룹으로 이루어질 수 있다. 명령이 특정 스테이지에 입력되면, 프로세서는 상기 명령을 이 스테이지와 링크된 레지스터 또는 레지스터들의 그룹으로 로딩한다. 이 스테이지 내에서, 로직 회로들이 명령에 따라 동작들을 수행할 수 있다. 로직 회로들이 의도된 동작을 수행한 후에, 명령은 다음 차례의 스테이지 상으로 전달된다.
도2는 CPU(102)의 상위 파이프라인(150)의 보다 상세한 블록도를 도시한다. 상위 파이프라인(150)은 고속 버스(104)에 의해 명령 캐시(16)로 연결된 인출 로직 회로(202)를 포함한다. 인출 로직 회로(202)는 디코드 스테이지(205)에 연결된 명 령 인출 스테이지(203)에 또한 연결되며, 디코드 스테이지(205)는 차례로 발행(issue) 스테이지(207)로 연결된다. 디코드 스테이지(205)는 디코드 로직 회로(204)에 또한 연결되며 발행 스테이지(207)는 최신 조건 코드를 추적하는 표시자(208)와 통신하는 발행 로직 회로(206)에 연결된다. 도2에 도시된 실시예에서, 표시자(208)는 하위 파이프라인(160 또는 165) 중 하나와 연관된(예를들어, 프로세서가 조건 코드 값을 필요로 하는 명령을 처리하는 경우에 파이프라인 내에서 프로세서에 의해 물리적으로 위치되거나 보여지는) 조건 코드 레지스터와 링크될 수 있다. 표시자(208)는 관련 파이프라인의 조건 코드 레지스터가 최신 조건 코드 값을 갖는지 여부를 표시하는 값을 가질 수 있다. 최신 조건 코드 값은 상위 파이프라인(150)에서 프로세서(100)가 명령들을 처리할 때 변경될 수 있다.
명령 인출 스테이지(203)로부터 디코드 스테이지(205) 및 발행 스테이지(207)를 통해 명령들이 흐르게 된다. 발행 스테이지(207)로부터 명령들은 하위 파이프라인들(160 및 165)로 전송된다. 상위 파이프라인(150) 내에서, 인출 로직 회로(202)가 명령 캐시(106)로부터 명령들을 결정하고 뒤이어 명령들을 인출한다. 명령 캐시(106)에서, 명령들은 캐시 라인들로 알려진 섹션들로 그룹화된다. 각 캐시 라인은 다수의 명령들을 가질 수 있다. 그 결과, 명령들은 명령 캐시(106)로부터 수개의 명령들을 한 번에 인출하고 디코드할 수 있다. 명령들이 인출 로직 회로(202)에 의해 인출된 후에, 명령들은 디코드 스테이지(205)로 전송된다.
디코드 스테이지(205)에서, 명령들은 명령의 식별을 결정하기 위하여 디코드 로직 회로(204)에 의해 디코드된다. 디코드 스테이지(205)에서 디코드 로직 회로(204)에 의해 리트리브(retrieve)되거나 식별된 정보는 하위 파이프라인들(160 또는 165) 중 어느 것이 추가 처리를 위하여 명령을 수신할 것인지 여부를 프로세서가 결정하는 것을 허용한다. 발행 스테이지(207), 보다 구체적으로는 발행 로직 회로(206)는 하위 파이프라인(160 또는 165) 중 어느 것이 명령들을 수신할지를 결정한다. 하위 파이프라인(160)은 정수 명령들을 실행하도록 설계될 수 있고 하위 파이프라인(165)은 부동 소숫점 명령들을 실행하도록 설계될 수 있다. 발행 로직 회로(206)는 실행을 위해 적절한 하위 파이프라인(160 또는 165)에 명령들을 전송한다. 발행 로직 회로(206)가 적절한 하위 파이프라인(160 또는 165) 상에 명령을 전송할 때, 발행 로직 회로(206)는 표시자(208)를 또한 업데이트할 수 있다. 표시자(208)는 파이프라인과 연관된 로컬 조건 코드 레지스터가 특정 명령을 실행한 후 최신 조건 코드를 포함하는지를 반영하도록 업데이트된다.
일 실시예에서, 명령이 발행 스테이지(207)에서 처리될 때 하위 파이프라인(165) 내의 로컬 조건 코드 레지스터가 최신 조건 코드 값을 갖는지 여부를 식별하기 위하여 표시자(208)가 프로세서(100)에 의해 사용될 수 있다. 최신 조건 코드 값은 조건 명령이 실행될 것인지 아닌지 여부를 결정하기 위하여 프로세서(100)에 의해 사용된다. 당업자가 이해할 수 있는 바와 같이, ARM 프로세서 내의 조건 코드 값은 NZCV 상태 비트들(N = 네거티브(negative), Z = 제로(zero), C = 캐리(carry), V = 오버플로우(overflow))에 대응될 수 있다. 조건 코드 값 또는 NZCV 비트들은 조건 플래그(flag)들로 불릴 수 있다. 이 실시예에서, 표시자(208)는 레지스터에 저장된 단일 상태 비트이며, 여기서 표시자(208) 내의 "1"은 하위 파이프라인(165)의 로컬 조건 코드 레지스터가 최신 조건 코드 값을 가질 수 있음을 표시할 수 있다. 대응하여, 표시자(208) 내의 "0"은 하위 파이프라인(165) 내의 로컬 조건 코드 레지스터가 최신 조건 코드 값을 갖지 않음을 표시할 수 있으며, 하위 파이프라인(160) 내의 글로벌(global) 조건 코드 레지스터는 디폴트로 최신 조건 코드 값을 가질 수 있다. 파이프라인들의 각각의 조건 코드 레지스터들 및 표시자(208)는 도3 내지 도5의 설명에서 추가로 설명된다.
도3은 본 발명의 일 실시예를 이용하는 하위 파이프라인들(160 및 165)의 보다 상세한 도면을 도시한다. 이전에 설명된 예시적인 실시예를 이용하면, 하위 파이프라인(160)은 정수 명령들을 실행하고 하위 파이프라인(165)은 부동 소숫점 명령들을 실행할 수 있다. 하위 파이프라인(160)은 예비(reservation) 스테이지(310A), 실행 스테이지(320A) 및 글로벌 조건 코드 레지스터(global condition code register, GCCR)(330)를 갖는다. GCCR(330)은 당업계에서 CPSR(Central Processing Status Register, 중앙 처리 상태 레지스터)로도 불릴 수 있으며 하위 파이프라인들(160 및 165) 모두에 조건 코드 값들을 제공할 수 있다. 하위 파이프라인(165)은 예비 스테이지(310B), 실행 스테이지(320B), 로컬 조건 코드 레지스터(local condition code register, LCCR)(370) 및 부동 소숫점 조건 코드 레지스터(floating point condition code register, FCCR)(380)를 갖는다. FCCR(380)은 당업계에서 FPSCR(floating point status control register, 부동 소숫점 상태 제어 레지스터)로도 불릴 수 있다.
명령들이 발행 스테이지(207)를 떠날 때, 정수 명령들이 하위 파이프라인(160)으로 전송되고 부동 소숫점 명령들이 하위 파이프라인(165)으로 전송된다. 하위 파이프라인들(160 및 165) 모두 내의 예비 스테이지들(310A-310B) 및 실행 스테이지들(320A-320B)은 이하에서 설명되는 바와 같은 비슷한 기능들을 수행할 수 있다.
명령들이 하위 파이프라인들(160 또는 165)로 입력될 때, 명령들은 예비 로직(설명 편이를 위해 미도시됨)에 의해 예비 스테이지(310A-310B)에서 먼저 처리된다. 명령들이 실행을 위한 추가적인 정보를 필요로 하는 경우에 명령들은 하나 이상의 프로세서 사이클들 동안 예비 스테이지들(310A-310B)에서 유지될 수 있다. 예를들어, 조건 명령이 예비 스테이지들(310A 또는 310B) 중 하나의 스테이지로 로드된 경우에, 프로세서(100)는 조건 명령이 실행될 지 여부를 결정하기 위해 최신 조건 코드 값이 필요할 수 있다는 것을 식별할 수 있다. 조건 명령은 최신 조건 코드 값이 리트리브될 때까지 예비 스테이지(310A 또는 310B)에 유지된다. 최신 조건 코드 값이 수신된 후에, 조건 명령이 예비 스테이지(310A 또는 310B)로부터 실행 스테이지(32OA 또는 320B)로 배정(dispatch)된다. 명령이 실행된 후에, 상기 명령 실행으로부터의 결과들이 프로세서(100)에 의해 저장되고 임의의 다음 명령들에 의한 사용을 위해 레지스터 파일(설명 편이를 위해 미도시됨)에 기록된다.
GCCR(330) 내에 저장된 조건 코드 값은 양의 정수 비교(positive integer compare, CMP), 음의 정수 비교(negative integer compare, CMN), 관련 업데이트 명령을 갖는 부동 소숫점 비교(floating point compare, FCMP) 등과 같은 명령들을 프로세서(100)가 실행한 후에 변경될 수 있다. 유사하게, LCCR(370)에 저장된 조건 코드 값은 부동 소숫점 비교 명령(FCMP) 및 관련 부동 소숫점 업데이트 명령이 하위 파이프라인(165)에서 실행되는 때에 변경될 수 있다. 당업자가 이해할 수 있는 바와 같이, 부동 소숫점 파이프라인에서 실행되는 한 예시적인 부동 소숫점 업데이트 명령은 FMSTAT 명령이다. 도3에 도시된 실시예에서, LCCR(370)이 최신 조건 코드 값을 갖고 조건 부동 소숫점 명령이 관련 파이프라인(165)에서 실행되는 경우에, LCCR(370)은 그 관련 파이프라인(즉, 하위 파이프라인(165))에 의해 이용될 수 있다. 도4 및 도5의 설명에서 보다 상세히 설명되는 바와 같이, GCCR(330)은 결과적으로 동조(sync up)되고 LCCR(370)에 저장될 수 있는 동일한 조건 코드 값을 가질 수 있다. 프로세서(100)가 다른 하위 파이프라인들(설명 편이를 위해 미도시됨)을 가진다면, 조건 명령들이 이들 파이프라인들에서 실행되고 관련 로컬 조건 코드 레지스터들이 최신 조건 코드 값을 갖지 않는 경우에, GCCR(330) 내에 저장된 값이 이용될 수 있다.
통상의 프로세서들은 조건 명령들을 처리하기 위해서 모든 파이프라인이 GCCR 내에 저장된 조건 코드 값들을 이용하는 것을 요구하였다. 이들 통상의 프로세서들에서, GCCR은 정수 파이프라인과 같은 하나의 파이프라인 내에 물리적으로 위치하였고 그 결과, 부동 소숫점 파이프라인과 같은 다른 파이프라인에서 실행된 임의의 조건 명령은 실행될 수 있기 전에 GCCR로부터 최신 조건 코드 값을 리트리브하여야 했다. 그 결과, 통상의 프로세서들은 GCCR 내에 물리적으로 위치하지 않은 파이프라인 내의 조건 명령을 실행할 때 지연을 경험할 수 있다.
위에서 설명한 바와 같은 잠재적 지연을 경감시키기 위하여, 일 실시예는 조건 부동 소숫점 명령들을 위한 관련 파이프라인에 최신 조건 코드 값을 제공하기 위하여 LCCR(370)을 이용한다. LCCR(370)을 이용하면, 프로세서(100)는 완결시키기 위하여 GCCR 업데이트와 검색(retrieval) 기능들을 조건 부동 소숫점 명령을 실행하기 전에 대기할 필요가 없을 것이다. 이 실시예에서, 프로세서(100)는 LCCR(370)이 최신 조건 코드 값을 갖는지 여부를 식별하기 위하여 식별자(208)를 이용한다. 식별자(208)가 LCCR(370)이 최신 조건 코드 값을 포함하는 것으로 표시한 경우, 최신 조건 코드값이 LCCR(370)로부터 리트리브되며 조건 부동 소숫점 명령이 하위 파이프라인(165)의 예비 스테이지(310B) 내에 있는 동안에 조건 부동 소숫점 명령으로 전송된다. 표시자(208)가 LCCR(370)이 최신 조건 코드 값을 갖지 않는 것으로 표시하면(즉, GCCR(330)이 최신 조건 코드 값을 가지면), 조건 부동 소숫점 명령이 실행될 때 GCCR(330) 내의 값이 리트리브되며 뒤이어 하위 파이프라인(165)의 예비 스테이지(310B)로 전송된다.
조건 부동 소숫점 명령이 발행 스테이지(207)에서 처리되는 경우에, 표시자(208) 내의 값이 포획(capture)된다. 일 실시예에서, 표시자(208) 내의 값은 조건 부동 소숫점 명령이 하위 파이프라인(165) 내에서 처리될 때 조건 부동 소숫점 명령을 따른다. 이 실시예에서, 조건 부동 소숫점 명령이 하위 파이프라인(165)의 실행 스테이지(320B)에서 실행될 때, LCCR(370) 내의 조건 코드 값을 사용하라는 결정이 프로세서(100)에 의해 내려진다. 대안적인 실시예에서, 조건 부동 소숫점 명령이 발행 스테이지(207) 내에서 처리될 때 프로세서(100)는 표시자(208) 내의 값을 판독하고 LCCR(370) 내에 저장된 조건 코드 값을 이용할 것인지 여부를 결정한다.
표시자(208) 내의 값은 특정 조건 부동 소숫점 명령이 발행 스테이지(207) 내에서 처리될 때의 LCCR(370)의 상태를 반영한다. 따라서, 프로세서(100)는 하위 파이프라인(165)에 입력되는 명령 이전에 LCCR(370)이 최신 조건 코드 값을 가질 수 있는지 여부를 결정한다. 이 결정에 기초하여, 프로세서(100)는 표시자(208)가 "1"인 경우에 LCCR(370) 내에 저장된 값을 이용한다. 조건 부동 소숫점 명령이 발행 스테이지(207) 내에서 처리되었을 때 표시자가 "0" 이라면, 조건 부동 소숫점 명령이 하위 파이프라인(165) 내에서 실행될 때 GCCR(330) 내의 최신 조건 코드 값이 리트리브되고 이용된다.
처리 효율을 증가시키기 위하여, 프로세서(100)가 LCCR(370)을 업데이트할 때 GCCR(330)이 최신 조건 코드 값으로 업데이트될 수 있다. 이 실시예에서, 프로세서(100)는 부동 소숫점 업데이트 명령(floating point update instruction, FMSTAT)이 실행될 때 LCCR(370) 및 GCCR(330) 모두를 업데이트한다. GCCR(330)을 업데이트하는 것은 LCCR(370)을 업데이트하는 것보다 시간이 더 오래 걸리는데, 그 이유는 LCCR(370)이 부동 소숫점 파이프라인 내에 위치하고 GCCR(330)이 다른 파이프라인(즉, 정수 파이프라인) 내에 위치하기 때문이다. GCCR(330)의 업데이트는 업데이트가 WAW(write after write, 기록 후 기록), RAW(read after write, 기록 후 판독), 및 WAR(write after read, 판독 후 기록) 위반들과 같은 임의의 데이터 해저드(hazard)들을 야기하지 않는 것을 보장하기 위하여 추가적인 처리 단계들을 또한 필요로 할 수 있다. 이들 데이터 해저드들은 GCCR(330)의 값이 팬딩중인 조건 정수 명령을 실행하는데 이용되기 전에 상기 업데이트가 GCCR(330)의 값을 덮어 쓰기(overwrite)하는 경우에 존재할 수 있다. GCCR(330)이 최신 조건 코드 값으로 업데이트된 후에, 프로세서(100)는 임의의 다음 조건 명령들을 실행하기 위하여 GCCR(330) 내의 최신 조건 코드 값을 이용할 수 있게 된다.
프로세서(100)가 최신 조건 코드 값으로 GCCR(330) 및 LCCR(370) 모두를 업데이트하는 한 방법은 FCCR(380)을 이용하는 것이다. FCCR(380)은 판독이 액세스되지 않는 기록 전용 레지스터일 수 있다(즉, 조건 코드 값이 FCCR(380)으로부터 판독되지 않고 조건 명령들의 조건성(conditionality)을 결정하는데 이용된다). FCCR(380) 내에 저장된 조건 코드 값은 LCCR(370) 및 GCCR(380) 모두를 업데이트하는데 이용된다.
상기 실시예에서, 부동 소숫점 비교 명령이 실행을 완료하는 때 FCCR(380) 내의 조건 코드 값이 업데이트된다. 부동 소숫점 업데이트 명령(floating point update instruction, FMSTAT)이 실행된 후에, LCCR(370)이 FCCR(380) 내에 저장된 값으로 업데이트된다. GCCR(330)의 업데이트가 FMSTAT 명령에 의해 개시되나 FMSTAT 명령이 부동 소숫점 파이프라인 내에서 실행된 후 수 개의 프로세서 사이클들까지 물리적으로 업데이트되지 않을 수 있다. FCCR(380)을 LCCR(370)과 분리하는 것은 상기 두 개의 레지스터들이 서로로부터 독립적으로 동작하는 것을 가능하게 한다. 독립적인 동작은 GCCR(330)이 물리적으로 업데이트되고 있는 동안 LCCR(370)이 다음 조건 부동 소숫점 명령들을 처리하는데 이용되는 것을 가능하게 한다.
도4는 도1의 프로세서에 의해 실행되는 명령들(400)의 예시적인 그룹을 도시 한다. 명령들(400)의 그룹은 부동 소숫점 파이프라인(즉, 하위 파이프라인(165)) 내에서 실행될 수 있다. 명령들(400)의 그룹은 다양한 부동 소숫점 레지스터들 내에 저장된 부동 소숫점 값들을 비교하고 최저 값을 식별한다. 최저 값이 결정되면, 프로세서(100)는 상기 최저 값에 기초하여 특정 동작을 취할 것이다.
명령들(400)의 그룹 내의 명령 A는 레지스터 F0 내에 저장된 값을 취하고 이를 레지스터 F1 내에 저장된 값과 비교하는 부동 소숫점 비교 명령이다. 명령 A 실행의 결과는 FCCR(380) 내의 조건 코드 값을 변경시킬 수 있다. 명령 B는 부동 소숫점 업데이트 명령으로서, FCCR(380) 내에 저장된 새로운 조건 코드 값으로 GCCR(330), 및 LCCR(370)을 업데이트한다. 명령 C는 조건 부동 소숫점 명령으로서, 구체적으로는, F1에 저장된 값이 F0 미만이었던 경우에 FO의 결과를 F1에 복사한다. 명령 D는 또다른 부동 소숫점 비교 명령으로서, F2에 저정된 값을 F1에 저장된 새로운 가능한 값과 비교한다. 명령 D가 실행된 후, FCCR(380) 내에 저장된 조건 코드 값이 변경될 수 있다. 명령 E는 또다른 부동 소숫점 업데이트 명령으로서, 명령 D에 의해 결정된 새로운 조건 코드 값으로 GCCR(330) 및 LCCR(370)을 업데이트한다. 명령 F는 조건 부동 소숫점 명령으로서, 구체적으로는, F2 내에 저장된 값이 FO 미만이었던 경우에 F2의 결과를 F0로 복사한다.
도5는 명령들(400)이 발행 스테이지(207)로부터 전송되고 하위 파이프라인(165) 내의 스테이지들 내에서 실행될 때의 명령들(400) 그룹의 타이밍 도(500)를 도시한다. 타이밍 도(500)에서, 프로세서 사이클(502)은 Y 축(504)을 따라 도시되고 프로세서(100) 내의 스테이지(발행 스테이지(207), 예비 스테이지(310B) 및 실행 스테이지(320B)) 및 표시자(208)는 X 축(506)을 따라 식별된다. 설명 편이를 위하여, 상기 타이밍 도는 각 프로세서 사이클에서 프로세서(100)에 의해 하나의 명령이 처리되고 있는 것을 도시한다. 그러나, 프로세서(100)는 프로세서 사이클 당 다수의 명령들을 처리할 수 있다. 제시된 교시사항들은 단일 명령 발행 또는 다중 명령 발행 프로세서들에 적용될 수 있다. 또한, 표시자(208)의 값은 프로세서 사이클 1 이전의 초기에 "0"이 된다.
도5에 도시된 바와 같이, 명령 A는 프로세서 사이클 1 내의 발행 로직 회로(206)에 의해 발행 스테이지(207) 내에서 처리된다. 명령 A가 부동 소숫점 비교 명령이기 때문에, 프로세서(100)는 명령 A를 부동 소숫점 파이프라인(이 실시예에서 하위 파이프라인(165))으로 보낸다. 도5에 도시된 바와 같이, 표시자(208)는 프로세서 사이클 1에서 "0"이다. "0"은 정수 파이프라인 내의 GCCR(330)이 최신 조건 코드 값을 갖는다는 것을 표시하며, 디폴트로, LCCR(370)은 최신 조건 코드 값을 갖지 않는다. 비교 명령과 같은 정수 명령이 정수 파이프라인(하위 파이프라인(160))에서 실행될 때마다 표시자(208)는 "0"으로 설정되며, 그 결과 GCCR(330)은 최신 조건 코드 레지스터를 갖는다.
프로세서 사이클 2에서, 명령 A가 예비 스테이지(310B)에서 처리되고 명령 B가 발행 스테이지(207)에서 처리된다. 명령 A는 예비 스테이지(310B) 내에 명령 A를 머무르게 할 하였을 어떠한 조건과도 만나지(encounter) 않으며 그 결과 명령 A는 다음 프로세서 사이클 동안에 실행 스테이지(320B)로 보내진다. 명령 B가 발행 스테이지(207)에서 처리되고 있는 동안에, 발행 로직 회로(206)가 명령 B가 부동 소숫점 업데이트 명령인지를 결정한다. 그 결과, 발행 로직 회로(206)는 명령 B가 실행될 때 명령 B가 LCCR(370)을 최신 조건 코드 값으로 업데이트할 것임을 반영하기 위하여 프로세서 사이클 2에서 표시자(208)를 변경한다. 표시자(208)의 새로운 값은 "1"이며, 명령 B가 실행되면 LCCR(370)이 최신 조건 코드 값을 가질 것임을 나타낸다.
명령 B는 부동 소숫점 업데이트 명령(FMSTAT)이기 때문에, 명령 B는 발행 로직 회로(206)에 의해 복제될 수 있으며 복제 명령이 정수 파이프라인(하위 파이프라인(160))으로 전송된다. 복제 명령은 그림자(shadow) 명령으로 또한 불리며, 정수 파이프라인 내에서 실행되지는 않으나 그 대신 FCCR(380)로부터 GCCR(330)으로의 업데이트를 조정(coordinate)하기 위한 마커(marker)로서 사용된다. GCCR(330)의 업데이트가 부동 소숫점 파이프라인(하위 파이프라인(165)) 및 정수 파이프라인(하위 파이프라인(160)) 간의 추가적인 동작들 및 조정(coordination)을 필요로 할 수 있기 때문에 복제 명령이 필요할 수 있다. 그림자 명령 B가 정수 파이프라인(하위 파이프라인(160))의 실행 스테이지(320A) 내에 있는 때에, FCCR(380)의 값이 판독되고 GCCR(330)의 업데이트가 수행된다. 설명 편이를 위하여, 정수 파이프라인을 통한 명령 B의 진행은 도시되지 않는다.
프로세서 사이클 3에서, 명령 A는 실행 스테이지(32OB)에 있는 동안에 실행되고 명령 B는 예비 스테이지(310B)에서 처리되며, 명령 C는 발행 스테이지(207)에서 처리된다. 명령 A가 실행을 완료한 후에, 프로세서(100)는 FCCR(380)을 새로운 조건 코드 값으로 업데이트한다. 명령 B가 어떠한 스톨링(stalling) 조건들과 만나지 않기 때문에, 명령 B는 프로세서 사이클 3의 끝에서 실행 스테이지(320B)로 배정된다. 명령 C는 프로세서 사이클 3 도중에 발행 스테이지(207) 내에서 발행 로직 회로(206)에 의해 처리된다. 발행 로직 회로(206)는 명령 C가 최신 조건 코드 값을 필요로 하는 조건 부동 소숫점 명령인지를 식별한다. 프로세서(100)는 표시자(208)를 액세스하고 표시자(208)가 "1"인지를 결정하며, 따라서 LCCR(370)은 명령 B 실행 후에 최신 조건 코드 값을 갖게 될 것이다. 명령 C는 실행을 위하여 부동 소숫점 파이프라인(하위 파이프라인(165))으로 전송된다.
프로세서 사이클 4에서, 명령 D는 발행 로직 회로(206)에 의해 발행 스테이지(207) 내에서 처리되며, 명령 C는 예비 스테이지(310B)로 입력되며 명령 B는 실행 스테이지(320B) 내에서 실행된다. 명령 D가 부동 소숫점 비교 명령이기 때문에, 명령 D는 프로세서 사이클 4의 끝에서 부동 소숫점 파이프라인(하위 파이프라인(165))으로 전송된다. 명령 C는 한 프로세서 사이클 동안 예비 스테이지(310B) 내에서 처리된다. 표시자(208)의 값이 LCCR(370)이 명령 C 실행 시 최신 조건 코드 값을 가질 것임을 식별하였다. 명령 B가 실행되면(프로세서 사이클 4의 끝에서) 최신 조건 코드 값이 이용가능해지며, 따라서 명령 C는 한 프로세서 사이클 동안 예비 스테이지(310B) 내에 잔류할(remain) 것이다. 조건 코드 값이 이용가능해지는 경우에, 조건 코드 값은 예비 스테이지(310B) 내에 있는 동안에 명령 C로 전송되고 명령 C는 다음 프로세서 사이클(프로세서 사이클 5)의 시작에서 실행 스테이지(320B)로 해제(release)된다.
명령 B가 프로세서 사이클 4에서 실행되는 경우, FCCR(380)은 업데이트된 조건 코드 값을 LCCR(370)로 기록한다. GCCR(330)을 업데이트하기 위하여 프로세서(100)가 정수 파이프라인으로 FCCR(380) 내의 조건 코드 값을 전송하기 전에, 프로세서(100)는 그림자 명령 B가 정수 파이프라인(하위 파이프라인(160)) 내의 실행 스테이지(320A)에 도달하는 것을 대기하고 있다. 위에 언급된 바와 같이, 이 업데이트는 LCCR(370)이 업데이트된 후 수 개의 프로세서 사이클들까지 일어나지 않을 수 있다.
프로세서 사이클 5에서, 명령 E는 명령 E가 발행 스테이지(207) 내에 있는 동안에 발행 로직 회로(206)에 의해 처리된다. 발행 로직 회로(206)는 LCCR(370)이 명령 E 실행 후에 최신 조건 코드 값을 가질 것임을 표시하기 위하여 표시자(208)를 업데이트한다. 이 예시적인 실시예에서, 개입된(intervening) 정수 비교 명령이 존재하지 않았기 때문에 표시자(208)의 값은 동일하게 유지된다. 명령 E가 부동 소숫점 업데이트 명령(FMSTAT)이기 때문에, 명령 E는 발행 로직 회로(206)에 의해 복제될 수 있으며 복제 명령이 명령 B와 유사하게 정수 파이프라인으로 전송될 수 있다. 위에 언급된 바와 같이 복제 명령은 "그림자(shadow)" 명령으로서, 그림자 명령 E가 정수 파이프라인 내의 실행 스테이지(320B)에 도달하는 때에, 정수 파이프라인에 의해 실행되지는 않으나 FCCR(380)로부터 GCCR(330)으로의 업데이트를 조정하기 위한 마커로서 사용된다. 프로세서 사이클 5 동안에, 명령 C가 실행 스테이지(320B)로 보내지며 명령 D는 예비 스테이지(310B)로 로딩된다. 명령 D는 예비 스테이지(310B) 내에서 스톨(stall)을 야기하는 어떠한 조건과도 만나지 않으며 다음 프로세서 사이클에서 실행 스테이지(320B)로 배정될 것이다.
프로세서 사이클 6에서, 명령 D는 실행 스테이지(320B)로 배정된다. 명령 D가 실행된 후에, FCCR(380)이 명령 D에 의해 결정된 바대로 새로운 조건 코드 값으로 업데이트될 수 있다. 또한, 프로세서 사이클 6에서, 명령 E는 예비 스테이지(310B)로 입력되고, 명령 F가 발행 로직 회로(206)에 의해 발행 스테이지(207)에서 처리된다. 명령 F가 조건 부동 소숫점 명령이기 때문에, 조건 F는 실행을 위하여 최신 조건 코드 값을 필요로 한다. 표시자(208)의 값에 의해 식별되어, 최신 조건 코드 값이 명령 F가 실행될 때 LCCR(270) 내에 포함될 것이다. 이 실시예에서, 최신 조건 코드 값은 명령 E 실행 후에(프로세서 사이클 7의 끝에서) LCCR(370) 내에서 변경될 수 있다.
명령 E가 프로세서 사이클 7에서 실행될 때, FCCR(380)은 업데이트된 조건 코드 값을 LCCR(370)로 기록한다. 프로세서(100)가 FCCR(380)의 값을 정수 파이프라인 내의 GCCR(330)으로 전송하기 전에 프로세서(100)는 그림자 명령 E가 정수 파이프라인 내의 실행 스테이지(320A)에 도달될 때까지 대기한다. 위에 언급된 바와 같이, GCCR(330)의 업데이트는 LCCR(370)이 업데이트된 후 수 개의 프로세서 사이클들까지 일어나지 않을 수 있다.
명령 E가 실행되면(프로세서 사이클 7의 끝에서) 최신 조건 코드 값이 명령 F에 대하여 이용가능해지며 LCCR(370)이 업데이트된다. 그 결과, 명령 F는 한 프로세서 사이클 동안 예비 스테이지(310B) 내에 잔류할 것이다. 프로세서 사이클 8에서, 명령 F가 실행 스테이지(320B)로 로딩되고 실행된다.
명령들(400)의 동일 그룹이 LCCR(370) 없이 부동 소숫점 파이프라인 내에서 실행되었다면, 프로세서(100)는 조건 부동 소숫점 명령들이 실행될 때마다 GCCR(330) 내의 조건 코드 값을 리트리브해야 했을 것이다. 위에 언급한 바와 같이, GCCR(330)의 업데이트는 명령 B가 부동 소숫점 파이프라인(하위 파이프라인(165)) 내에서 실행된 후에 업데이트를 위해 수 개의 추가 프로세서 사이클들을 필요로 할 수 있다. 그림자 명령 B는 자원 해저드를 만날 수 있고 수 개의 프로세서 사이클들 동안 정수 파이프라인 내의 예비 스테이지(310A) 내에서 스톨될 수 있어서, 명령 C의 실행과 뒤이은 명령 F의 실행에서의 지연을 악화시킨다. 최신 조건 코드 값이 먼저 GCCR(330)로 기록되고 다음 GCCR(330)로부터 리트리브될 때까지 명령 C 및 명령 F는 부동 소숫점 파이프라인(하위 파이프라인(165)) 내의 예비 스테이지(310B) 내에서 스톨되었을 것이다. LCCR(370)을 이용함에 의해, 명령 C 및 F와 같은 조건 부동 소숫점 명령들이 GCCR(330)로부터 최신 조건 코드를 리트리브함에 의해 야기되는 지연을 경험하지 않고 실행될 수 있으며, 따라서 명령들의 실행이 촉진되고 프로세서(100)의 효율이 증가된다.
도6은 본 발명의 일 실시예에 의해 수행되는 방법(600)을 나타내는 흐름도이다. 방법(600)은 명령이 발행 스테이지(207)로 입력되는 때 시작 블록(602)에서 시작된다. 블록(604)에서, 프로세서(100)는 명령을 처리하기 위하여 발행 로직 회로(206)를 이용한다. 명령을 블록(604)에서 처리한 후에, 방법(600)은 결정 블록(606)으로 진행한다.
결정 블록(606)에서, 프로세서(100)는 명령이 조건 명령인지 여부를 결정한 다. 상기 명령이 조건 명령이면, 조건 명령을 실행하기 위하여 최신 조건 코드 값이 요구되며 방법(600)은 결정 블록(608)으로 진행한다. 상기 명령이 조건 명령이 아니라면, 방법(600)은 블록(616)으로 진행한다. 결정 블록(608)에서, 프로세서(100)는 상기 명령이 조건 정수 명령인지 여부를 결정한다. 상기 명령이 조건 정수 명령이라면, 방법은 블록(614)으로 진행하며 GCCR(300)에 저장된 조건 코드 값이 리트리브된다. 상기 조건 명령이 조건 명령이 아니라면(즉, 부동 소숫점 명령이라면), 방법(600)은 결정 블록(608)으로부터 결정 블록(610)으로 진행한다.
결정 블록(610)에서, 프로세서(100)는 표시자(208)가 "1"인지 여부를 결정한다. 표시자(208)가 "1"이면, LCCR(370)은 조건 명령이 발행 스테이지(207)에서 처리되었던 때에 최신 조건 코드 값을 갖는다. 그 결과, 방법(600)은 블록(612)으로 계속된다. 블록(612)에서, 프로세서(100)는 LCCR(370) 내에 저장된 조건 코드 값을 리트리브하고 조건 명령이 실행되어야 하는지 여부를 결정하기 위하여 상기 리트리브된 코드 값을 이용한다. 블록(612)으로부터, 방법이 블록(624)에서 종료한다.
결정 블록(610)에서 프로세서(100)가 표시자(208)가 "1"이 아니라면(즉, "0"이라면), 디폴트로, 최신 조건 코드 값이 GCCR(330)에 존재한다. 프로세서(100)는 조건 명령이 발행 스테이지(207)에서 처리되는 때 표시자(208)의 값이 "O"이었던 것으로 식별하였다. 표시자가 "1"이 아닌 경우에, 방법(600)은 블록(614)으로 진행한다. 블록(614)에서, 프로세서(100)는 GCCR(330)로부터 최신 조건 코드 값을 리트리브하고 상기 리트리브된 조건 코드 값이 조건 명령이 실행되어야 하는지 여 부를 결정하는데 이용된다. 블록(614)으로부터, 방법(600)이 블록(624)에서 종료된다.
결정 블록(616)에서, 프로세서(100)는 발행 로직 회로(206)에 의해 발행 스테이지 내에서 처리된 명령이 조건 코드(condition code, CC) 값을 변경시킬지 여부를 결정한다. 위에 언급된 바와 같이, FMSTAT 명령과 함께의 부동 소숫점 비교 명령과 정수 비교 명령은 조건 코드 값을 변경할 수 있는 명령들의 단지 2개의 예이다. 상기 명령이 조건 코드 값을 변경시키면, 방법(600)은 결정 블록(618)으로 계속된다. 상기 명령이 조건 코드 값을 변경시키지 않으면, 방법(600)은 블록(624)에서 종료한다.
결정 블록(618)에서, 프로세서(100)는 로컬 조건 코드 레지스터(local condition code register, LCCR)(370) 내의 조건 코드 값이 수정될 것인지 여부를 결정한다. 이전에 설명된 예시적인 실시예를 다시 참조하면, FMSTAT 명령은 LCCR(370) 내의 조건 코드 값을 변경한다. 대조적으로, 정수 비교 명령은 GCCR(330) 내의 조건 코드 값을 변경하며 LCCR(370) 내의 조건 코드 값은 변경하지 않는다. 명령이 정수 비교 명령이라면, 방법(600)은 블록(620)으로 진행하고 "0"이 표시자(208)로 기록된다. 대안적으로, 결정 블록(618)에서, 프로세서(100)가 명령이 FMSTAT 명령인 것으로 결정하였다면, 방법(600)은 블록(622)으로 진행한다. 블록(622)에서, 프로세서는 FMSTAT 명령이 수행될 때 LCCR(370)이 최신 조건 코드를 갖는다는 것을 구체화하기 위하여 "1"을 표시자(208)에 기록한다. 블록들(620 및 622)로부터, 방법(600)은 블록(624)에서 종료한다.
개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 엘리먼트들, 및/또는 컴포넌트들은 범용 프로세서; 디지털 신호 처리기, DSP; 주문형 집적회로, ASIC; 필드 프로그램어블 게이트 어레이, FPGA; 또는 다른 프로그램어블 논리 장치; 이산 게이트 또는 트랜지스터 논리; 이산 하드웨어 컴포넌트들; 또는 이러한 기능들을 구현하도록 설계된 것들의 조합을 통해 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로 프로세서 일 수 있지만; 대안적 실시예에서, 이러한 프로세서는 기존 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수 있다. 프로세서는 예를 들어, DSP 및 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로 프로세서, 또는 이러한 구성들의 조합과 같이 계산 장치들의 조합으로서 구현될 수 있다.
특정 실시예들이 예시되고 설명되었으나, 당업자는 동일한 목적을 달성하도록 계산된 임의의 변경이 도시된 특정 실시예를 대치할 수 있음과 본 발명은 다른 환경하에서 다른 응용들을 가짐을 이해할 수 있을 것이다. 본 출원은 본 발명의 임의의 적응 또는 변형을 커버하는 것으로 의도된다. 청구범위는 설명된 실시예에 대하여 본 발명의 범위를 제한하기 위해 의도된 것은 아니다.

Claims (32)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 다수의 파이프라인들을 갖는 파이프라인 프로세서 내에서 조건 명령을 실행하는 방법으로서, 상기 파이프라인 프로세서는 제 1 파이프라인과 연관된 제 1 조건 코드 레지스터와 제 2 파이프라인과 연관된 제 2 조건 코드 레지스터를 가지며, 상기 방법은,
    최신(most recent) 조건 코드 값을 상기 제 1 조건 코드 레지스터 및 상기 제 2 조건 코드 레지스터 중 적어도 하나의 레지스터에 저장하는 단계;
    처리 시에 조건 코드를 설정하는 명령에 응답하여 제 1 값을 가지거나 또는 제 2 값을 가지도록 조건 코드 표시자를 설정하는 단계 ? 상기 조건 코드 표시자의 상기 제 1 값은 상기 제 2 조건 코드 레지스터가 상기 최신 조건 코드 값을 가짐을 표시하고 그리고 상기 조건 코드 표시자의 상기 제 2 값은 상기 제 2 조건 코드 레지스터가 상기 최신 조건 코드 값과 상이한 조건 코드 값을 가짐을 표시함 ? ;
    상기 조건 코드 표시자에 기초하여 상기 제 1 조건 코드 레지스터 및 상기 제 2 조건 코드 레지스터 중 하나의 조건 코드 레지스터로부터 상기 최신 조건 코드 값을 리트리빙하는 단계; 및
    리트리빙된 상기 최신 조건 코드 값에 응답하여 상기 조건 명령이 실행되어야하는지 여부를 결정하는 단계를 포함하는, 조건 명령 실행 방법.
  9. 제 8 항에 있어서,
    상기 제 1 조건 코드 레지스터는 글로벌 레지스터이고, 상기 제 2 조건 코드 레지스터는 상기 제 2 파이프라인에 로컬한(local) 로컬 레지스터이고, 그리고 상기 조건 코드 표시자는 상기 로컬 레지스터가 상기 최신 조건 코드 값을 가짐을 표시하는 상기 제1 값을 보유하고 상기 글로벌 레지스터 및 상기 로컬 레지스터가 상기 최신 조건 코드 값을 보유하는 경우에, 상기 최신 조건 코드 값이 상기 제 1 파이프라인에 의한 사용을 위하여 상기 글로벌 레지스터로부터 리트리빙되고 상기 최신 조건 코드 값이 상기 제 2 파이프라인에 의한 사용을 위하여 상기 로컬 레지스터로부터 리트리빙되는, 조건 명령 실행 방법.
  10. 제 8 항에 있어서,
    상기 제 2 파이프라인은 부동 소숫점 명령들을 실행하고 그리고 상기 최신 조건 코드 값은 부동 소숫점 업데이트 명령을 실행하는 것에 응답하여 상기 제 1 조건 코드 레지스터 및 상기 제 2 조건 코드 레지스터로 자동으로 저장되는, 조건 명령 실행 방법.
  11. 제 8 항에 있어서,
    상기 제 1 조건 코드 레지스터는 글로벌 조건 코드 레지스터인, 조건 명령 실행 방법.
  12. 제 8 항에 있어서,
    상기 제 2 조건 코드 레지스터는 로컬 조건 코드 레지스터인, 조건 명령 실행 방법.
  13. 제 8 항에 있어서,
    상기 제 1 조건 코드 레지스터는 네거티브(Negative), 제로(Zero), 캐리(Carry), 및 오버플로우(Overflow) 조건 비트들의 제 1 세트를 포함하고 그리고 상기 제 2 조건 코드 레지스터는 네거티브, 제로, 캐리, 오버플로우 조건 비트들의 제 2 세트를 포함하는, 조건 명령 실행 방법.
  14. 제 8 항에 있어서,
    상기 조건 코드 표시자는 단일 상태 비트인, 조건 명령 실행 방법.
  15. 파이프라인 프로세서로서,
    명령들을 실행하기 위한 다수의 파이프라인들;
    제 1 파이프라인과 연관된 제 1 조건 코드 레지스터;
    제 2 파이프라인과 연관된 제 2 조건 코드 레지스터;
    상기 제 2 파이프라인과 연관된 제 3 조건 코드 레지스터 ? 상기 제 1 조건 코드 레지스터 및 상기 제 2 조건 코드 레지스터는 상기 제 3 코드 레지스터를 통해 업데이트됨 ? ; 및
    조건 코드 표시자 ? 상기 조건 코드 표시자는 상기 제 2 조건 코드 레지스터가 최신 조건 코드 값을 포함하는지 여부를 표시하도록 구성됨 ? 를 포함하고,
    상기 프로세서는 부동 소숫점 업데이트 명령이 실행되는 경우에 상기 제 1 조건 코드 레지스터의 상기 최신 조건 코드 값 및 상기 제 2 조건 코드 레지스터의 상기 최신 조건 코드 값을 업데이트하도록 구성되고 그리고 상기 프로세서는 상기 조건 코드 표시자에 기반하여 상기 제 1 조건 코드 레지스터 및 상기 제 2 조건 코드 레지스터 중 하나의 레지스터로부터의 상기 최신 조건 코드 값을 리트리빙하도록 구성되고 그리고 상기 리트리빙된 최신 조건 코드 값에 응답하여 조건 명령을 실행할지 여부를 결정하도록 구성되는, 파이프라인 프로세서.
  16. 제 15 항에 있어서,
    상기 제 2 파이프라인은 부동 소숫점 명령들을 실행하는, 파이프라인 프로세서.
  17. 제 15 항에 있어서,
    상기 제 1 조건 코드 레지스터는 글로벌 조건 코드 레지스터인, 파이프라인 프로세서.
  18. 제 15 항에 있어서,
    상기 제 2 조건 코드 레지스터는 로컬 조건 코드 레지스터인, 파이프라인 프로세서.
  19. 삭제
  20. 제 15 항에 있어서,
    상기 제 1 파이프라인은 상기 조건 코드 표시자의 값과 독립적으로 상기 제 1 조건 코드 레지스터로부터 상기 최신 조건 코드 값을 리트리빙하도록 구성되는, 파이프라인 프로세서.
  21. 파이프라인 프로세서로서,
    부동 소숫점 업데이트 명령이 실행되는 경우에 최신 조건 코드 값을 상기 프로세서의 제 1 조건 코드 레지스터 및 제 2 조건 코드 레지스터로 저장하기 위한 수단;
    처리 시에 조건 코드를 설정하는 명령에 응답하여 조건 코드 표시자를 설정하기 위한 수단 ? 상기 조건 코드 표시자의 제 1 값은 상기 제 2 조건 코드 레지스터가 상기 최신 조건 코드 값을 가짐을 표시하고 그리고 상기 조건 코드 표시자의 제 2 값은 상기 제 2 조건 코드 레지스터가 상기 최신 조건 코드 값과 상이한 조건 코드 값을 가짐을 표시함 ? ;
    상기 조건 코드 표시자에 기반하여 상기 제 1 조건 코드 레지스터 및 상기 제 2 조건 코드 레지스터 중 하나의 레지스터로부터의 상기 최신 조건 코드 값을 리트리빙하기 위한 수단; 및
    상기 리트리빙된 최신 조건 코드 값에 응답하여 조건 명령이 실행되어야 하는지를 결정하기 위한 수단을 포함하는, 파이프라인 프로세서.
  22. 제 21 항에 있어서,
    정수 명령들을 실행하기 위한 파이프라인 수단을 더 포함하는, 파이프라인 프로세서.
  23. 제 21 항에 있어서,
    부동 소숫점 명령들을 실행하기 위한 파이프라인 수단을 더 포함하는, 파이프라인 프로세서.
  24. 제 21 항에 있어서,
    상기 제 1 조건 코드 레지스터는 글로벌 조건 코드 레지스터인, 파이프라인 프로세서.
  25. 제 21 항에 있어서,
    상기 제 2 조건 코드 레지스터는 로컬 조건 코드 레지스터인, 파이프라인 프로세서.
  26. 제 21 항에 있어서,
    상기 조건 코드 값은 네거티브, 제로, 캐리, 및 오버플로우 조건 비트들을 포함하는, 파이프라인 프로세서.
  27. 제 8 항에 있어서,
    발행(issue) 스테이지는 발행 로직을 통해 상기 조건 코드 표시자와 통신하는, 조건 명령 실행 방법.
  28. 제 27 항에 있어서,
    상기 발행 로직은 상기 발행 스테이지로부터 디코딩된 명령들을 명령 유닛에 의한 실행을 위하여 다수의 하위 파이프라인들 중 하나의 파이프라인으로 전송하도록 구성되는, 조건 명령 실행 방법.
  29. 제 8 항에 있어서,
    발행 스테이지는 상기 파이프라인 프로세스의 디코드 스테이지로부터 디코딩된 명령들을 수신하도록 구성되는, 조건 명령 실행 방법.
  30. 제 15 항에 있어서,
    상기 제 3 조건 코드 레지스터는 명령을 실행하는 상기 제 2 파이프라인에 응답하여 업데이트되는, 파이프라인 프로세서.
  31. 제 30 항에 있어서,
    상기 명령은 부동 소숫점 비교 명령인, 파이프라인 프로세서.
  32. 제 15 항에 있어서,
    상기 제 3 조건 코드 레지스터는 판독 전용(write only) 레지스터인, 파이프라인 프로세서.
KR1020097025056A 2007-05-03 2008-05-05 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치 KR101148495B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/743,698 US8555039B2 (en) 2007-05-03 2007-05-03 System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
US11/743,698 2007-05-03
PCT/US2008/062652 WO2008137842A1 (en) 2007-05-03 2008-05-05 A system and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor

Publications (2)

Publication Number Publication Date
KR20100003309A KR20100003309A (ko) 2010-01-07
KR101148495B1 true KR101148495B1 (ko) 2012-05-21

Family

ID=39529441

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097025056A KR101148495B1 (ko) 2007-05-03 2008-05-05 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US8555039B2 (ko)
EP (1) EP2153316A1 (ko)
JP (1) JP5431308B2 (ko)
KR (1) KR101148495B1 (ko)
CN (1) CN101681259B (ko)
WO (1) WO2008137842A1 (ko)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
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
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store 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
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
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
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
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
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
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
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
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file 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)
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
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
EP2508979B1 (en) * 2011-04-07 2018-10-10 VIA Technologies, Inc. Efficient conditional alu instruction in read-port limited register file microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783282B1 (en) * 2011-11-22 2020-06-24 Intel Corporation A microprocessor accelerated code optimizer and dependency reordering method
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9760375B2 (en) * 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
GB2572664B (en) * 2018-04-05 2020-07-08 Imagination Tech Ltd Verification of hardware design for data transformation pipeline
US11487506B2 (en) 2019-08-09 2022-11-01 International Business Machines Corporation Condition code anticipator for hexadecimal floating point
US11314512B2 (en) 2019-08-09 2022-04-26 International Business Machines Corporation Efficient checking of a condition code anticipator for a floating point processor and/or unit
US11080059B1 (en) 2020-03-30 2021-08-03 Sandisk Technologies Llc Reducing firmware size and increasing firmware performance

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085305A (en) * 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US6629235B1 (en) * 2000-05-05 2003-09-30 International Business Machines Corporation Condition code register architecture for supporting multiple execution units

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US465785A (en) * 1891-12-22 Brick-truck
JPS6043751A (ja) 1983-08-18 1985-03-08 Hitachi Ltd 情報処理装置
JPH0643751A (ja) 1992-07-24 1994-02-18 Toshiba Corp 電子写真装置における容器
US5537538A (en) * 1993-12-15 1996-07-16 Silicon Graphics, Inc. Debug mode for a superscalar RISC processor
US6697064B1 (en) * 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
US6981131B2 (en) * 2002-09-04 2005-12-27 Arm Limited Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
KR100628573B1 (ko) * 2004-09-08 2006-09-26 삼성전자주식회사 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085305A (en) * 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US6629235B1 (en) * 2000-05-05 2003-09-30 International Business Machines Corporation Condition code register architecture for supporting multiple execution units

Also Published As

Publication number Publication date
EP2153316A1 (en) 2010-02-17
JP2010526392A (ja) 2010-07-29
CN101681259B (zh) 2014-05-14
US8555039B2 (en) 2013-10-08
KR20100003309A (ko) 2010-01-07
CN101681259A (zh) 2010-03-24
US20080276072A1 (en) 2008-11-06
WO2008137842A1 (en) 2008-11-13
JP5431308B2 (ja) 2014-03-05

Similar Documents

Publication Publication Date Title
KR101148495B1 (ko) 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치
US10664275B2 (en) Speeding up younger store instruction execution after a sync instruction
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US6115808A (en) Method and apparatus for performing predicate hazard detection
US20170097891A1 (en) System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions
US6349382B1 (en) System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
US8074060B2 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
JP3096427B2 (ja) 複数ロード命令の実行方法、複数ストア命令の実行方法およびマイクロプロセッサ
US20070043934A1 (en) Early misprediction recovery through periodic checkpoints
JP5209933B2 (ja) データ処理装置
US20080148282A1 (en) Mechanism and method to track oldest processor event
TWI502500B (zh) 微處理器、微處理器操作方法及其電腦程式產品
US10042647B2 (en) Managing a divided load reorder queue
US10970079B2 (en) Parallel dispatching of multi-operation instructions in a multi-slice computer processor
JP2008090848A (ja) データ処理システム内のレジスタリネーミング
US7203821B2 (en) Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands
US8127114B2 (en) System and method for executing instructions prior to an execution stage in a processor
JP2004529405A (ja) 依存性を決定するためのコンテンツ・アドレス指定可能メモリを実装したスーパースケーラ・プロセッサ
KR20220065048A (ko) 대기열 압축 해제
US20100100709A1 (en) Instruction control apparatus and instruction control method
EP1050805A1 (en) Transfer of guard values in a computer system
US10552156B2 (en) Processing operation issue control
JPH10333905A (ja) スーパースカラー方式の情報処理装置

Legal Events

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

Payment date: 20160330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee