KR20150006004A - 프로세서 명령 세트 내의 술어 계산 - Google Patents

프로세서 명령 세트 내의 술어 계산 Download PDF

Info

Publication number
KR20150006004A
KR20150006004A KR1020147032976A KR20147032976A KR20150006004A KR 20150006004 A KR20150006004 A KR 20150006004A KR 1020147032976 A KR1020147032976 A KR 1020147032976A KR 20147032976 A KR20147032976 A KR 20147032976A KR 20150006004 A KR20150006004 A KR 20150006004A
Authority
KR
South Korea
Prior art keywords
condition
bits
condition code
instruction
multiplexers
Prior art date
Application number
KR1020147032976A
Other languages
English (en)
Other versions
KR101716014B1 (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 KR20150006004A publication Critical patent/KR20150006004A/ko
Application granted granted Critical
Publication of KR101716014B1 publication Critical patent/KR101716014B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

플래그 비트(flag bit)들을 계산하기 위한 장치 및 방법이 개시된다. 플래그 비트들은 분기 술어 기법(branch predication)을 이용하는 프로세서에 사용될 수 있다. 더욱 구체적으로는, 장치 및 방법은, 분기 유닛에 의해 분기가 취해질지(taken) 여부를 평가하는 데 사용될 수 있는 술어(predicate)를 계산하기 위해 사용될 수 있다. 일 실시예에서, 장치는, 명령과 연관된 조건 코드(condition code), 및 명령의 실행에 응답하여 생성되는 플래그 비트를 수신하도록 결합된다. 조건 코드는 명령의 실행으로 인한 체크되는 조건을 나타낸다. 이어서, 장치는 조건이 참인지 여부의 표시를 제공할 수 있다.

Description

프로세서 명령 세트 내의 술어 계산{PREDICATE CALCULATION IN PROCESSOR INSTRUCTION SET}
본 개시 내용은 프로세서, 더욱 구체적으로는, 분기 명령들에 대한 술어 계산(predicate calculation)을 처리하기 위한 방법 및 장치 실시예들에 관한 것이다.
많은 현대 프로세서들은 성능을 강화하기 위해 분기 예측(branch prediction) 및 분기 술어 기법(branch predication)과 같은 실행 기법들을 이용한다. 분기 예측은 조건부 분기(conditional branch)를 갖는 명령의 결과가 미리 예측되는 기법이다. 예측된 경로 내의 분기 명령 다음의 명령들은 추론적으로(speculatively) 실행될 수 있다. 예측이 정확하면, 추론적으로 실행된 명령들의 결과들은 그들이 필요하게 되자마자 레지스터들에 위탁(commit)될 수 있다. 그렇지 않으면, 예측된 경로 내의 명령들의 추론적 실행으로부터 획득된 결과들은 폐기(discard)되는 한편, 정확한 경로 내의 명령들은 실행될 수 있다.
분기 예측의 대안으로서, 분기 술어 기법은 조건부 분기의 두 가능한 경로들 모두에 대한 명령들이 추론적으로 실행되는 기법이다. 정확한 경로는 조건부 분기를 갖는 명령의 실행에 의해 후속적으로 결정될 수 있다. 일단 정확한 경로가 결정되면, 대응하는 명령들로부터의 결과들은 레지스터들에 위탁될 수 있는 한편, 부정확한 경로 내의 명령들의 결과들은 폐기될 수 있다.
일부 명령에 대해, 플래그 비트(flag bit)들이 그들의 실행 동안에 설정될 수 있다. 조건 코드(condition code)들은 또한 특정 명령들과 연관될 수 있다. 조건부 분기들을 갖는 그러한 명령들에 대하여, 조건 코드들은 분기가 취해지는지(taken) 여부를 결정하기 위해 어느 플래그들이 체크될지를 나타낸다. 일부 명령 세트 아키텍처(instruction set architecture)에서, 플래그들을 설정하고 조건 코드들에 따라 플래그들을 체크하는 명령들이 결합될 수 있다. 이에 따라, 플래그의 설정 및 특정 조건의 결정은 단일 사이클에서 일어날 수 있다. 이러한 결합된 명령들은 분기 술어 기법에 사용될 수 있다.
플래그 비트들을 계산하기 위한 장치 및 방법이 개시된다. 플래그 비트들은 분기 술어 기법을 이용하는 프로세서에서 사용될 수 있다. 더욱 구체적으로는, 장치 및 방법은, 분기 유닛에 의하여 분기가 취해질지 여부를 평가하는 데 사용될 수 있는 술어를 계산하는 데 사용될 수 있다. 일 실시예에서, 장치는, 명령과 연관된 조건 코드, 및 명령의 실행에 응답하여 생성되는 플래그 비트들을 수신하도록 결합된다. 조건 코드는 명령의 실행으로 인한 체크될 조건을 나타낸다. 이어서, 장치는 조건이 참인지 여부의 표시를 제공할 수 있다.
일 실시예에서, 술어 계산 장치는 다수의 멀티플렉서를 포함한다. 멀티플렉서들 각각은 대응하는 수정된(modified) 조건 코드를 수신하도록 결합된 데이터 입력들을 포함한다. 멀티플렉서들은 비수정된(unmodified) 조건 코드(변경된 조건 코드들의 기초가 되는)와 연관된 명령의 실행 동안에 생성되는 플래그 비트들을 수신하도록 결합된 선택 입력(select input)들을 추가로 포함한다. 멀티플렉서들로부터의 출력들을 수신하도록 결합된 출력 논리 회로는, 조건 코드에 의해 나타내어지는 조건이 참인지 여부를 나타내는 출력을 제공할 수 있다. 술어 계산 장치는 또한, 그렇지 않으면 멀티플렉서들을 사용하여 결정되지 않는 조건을 계산하도록 배열된 하나 이상의 추가 논리 회로를 포함할 수 있다. 하나 이상의 추가 논리 회로는 또한 출력 논리 회로에 결합되는 최종 출력을 가질 수 있다.
분기 유닛은 술어 계산 장치로부터 최종 출력을 수신하도록 결합될 수 있다. 조건이 참인지 여부에 기초하여, 분기 유닛은, 분기가 명령들의 시퀀스 내에서 취해질지 여부를 결정할 수 있다. 더욱이, 술어 계산 장치는 추론적으로 실행되는 명령들과 함께 사용될 수 있다. 예를 들어, 명령의 시퀀스는, 분기 명령과 연관된 특정 조건의 결과들에 따른 두 가능한 경로를 포함할 수 있다. 두 가능한 경로의 명령들은 둘 모두 레지스터 파일 내에 보유된 대응하는 결과들로 추론적으로 실행될 수 있다. 분기 명령은 두 동작을 포함하는 명령일 수 있는데, 그 중 제1 동작은 하나 이상의 플래그 비트의 상태를 결정하며, 제2 동작은 하나 이상의 플래그 비트의 상태에 기초하여 (조건 코드에 의해 정의되는 바로서) 조건이 참인지 여부를 결정한다. 따라서, 분기 명령의 실행은 어느 경로가 취해지는지를 결정할 수 있다. 일단 정확한 경로가 결정되면, 다른 경로로부터의 결과들은 폐기될 수 있는 한편, 정확한 경로로부터의 결과들은 구조화된 레지스터(architected register)에 위탁되기 위해 보유될 수 있다.
하기의 발명을 실시하기 위한 구체적인 내용은 첨부 도면을 참조하며, 이제 도면들이 간단히 설명된다.
<도 1>
도 1은 프로세서의 일 실시예의 블록도이다.
<도 2>
도 2는 술어적(predicated) 분기 동작을 위한 예시적인 명령 흐름을 예시하는 도면이다.
<도 3>
도 3은 술어 계산 유닛의 일 실시예의 논리도이다.
<도 4>
도 4는 다양한 조건 코드들 및 대응하는 수정된 조건 코드들의 계산의 실례이다.
<도 5>
도 5는 술어 계산을 수행하기 위한 방법의 일 실시예를 예시하는 흐름도이다.
<도 6>
도 6은 예시적인 시스템의 일 실시예의 블록도이다.
본 발명은 다양한 수정 및 대안적인 형태를 수용할 수 있지만, 본 발명의 특정 실시예들은 예로서 도면에 도시되고 본 명세서에서 상세히 설명될 것이다. 그러나, 이들 도면과 그에 대한 발명을 실시하기 위한 구체적인 내용은 개시된 특정 형태로 본 발명을 제한하고자 하는 것이 아니라, 오히려 첨부된 특허청구범위로 정의된 본 발명의 기술사상 및 범위 내에 있는 모든 수정물, 동등물 및 대안물을 커버하고자 하기 위함이라고 이해되어야 한다. 본 명세서에서 이용되는 표제들은 오직 구성을 위한 것이며 설명의 범위를 한정하기 위해 사용되는 것으로 여겨지지 않는다. 본원 전체에 걸쳐 이용된 바와 같이, "~수 있다(may)"라는 단어는 강제적인 의미(즉, 해야 함(must)을 의미함)가 아닌 허용적인 의미(즉, 그에 대한 가능성을 가짐을 의미함)로 이용된 것이다. 유사하게, "포함한다(include)", "포함하는(including)" 및 "포함한다(includes)"라는 단어들은 포함하지만 이에 한정되지는 않음을 의미한다.
각종 유닛, 회로, 또는 기타 컴포넌트들은 태스크 또는 태스크들을 수행"하도록 구성되는" 것으로서 설명될 수 있다. 이러한 문맥들에서, "~도록 구성되는"은 일반적으로 동작 중에 태스크 또는 태스크들을 수행하는 "회로를 갖는" 것을 의미하는 구조의 포괄적인 설명이다. 이와 같이, 유닛/회로/컴포넌트는, 유닛/회로/컴포넌트가 현재 온(on) 상태가 아닐지라도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "~도록 구성되는"에 대응하는 구조를 형성하는 회로는 하드웨어 회로를 포함할 수 있다. 유사하게, 각종 유닛/회로/컴포넌트는 본 설명에서 편의상 태스크 또는 태스크들을 수행하는 것으로 설명될 수 있다. 이러한 설명들은 "~도록 구성되는"이라는 어구를 포함하는 것으로 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성되는 유닛/회로/컴포넌트를 열거하는 것은 명시적으로 그러한 유닛/회로/컴포넌트에 대한 35 U.S.C. §112, 6항의 해석을 적용하려는 것이 아니다.
이제 도 1을 참조하면, 프로세서(10)의 일 실시예의 블록도가 도시되어 있다. 프로세서(10)는 집적회로 상에서 구현되는 하나 이상의 프로세서 중 하나일 수 있다. 예시된 실시예에서, 프로세서(10)는 인출 제어 유닛(12), 명령 캐시(14), 디코드 유닛(16), 매퍼(mapper)(18), 스케줄러(20), 레지스터 파일(22), 및 실행 코어(24)를 포함한다. 예시된 실시예에서, 실행 코어(24)는 산술 논리 유닛(arithmetic logic unit, ALU)(242), 술어 계산 유닛(predicate calculation unit, PCU)(30), 및 분기 유닛(245)을 포함한다. 인출 제어 유닛(12)은 명령 캐시(14)로부터 인출하기 위한 프로그램 카운터(PC)를 제공하도록 결합된다. 명령 캐시(14)는 디코드 유닛(16)에 명령들을 제공하도록 결합되고, 디코드 유닛(16)은 매퍼(18)에 마이크로옵(microop)들을 제공하도록 결합된다. 매퍼(18)는 마이크로옵들, 스케줄러 번호(SCH#), 및 소스 피연산자 번호(source operand number, SO#)들을 스케줄러(20)에 제공하도록 결합된다. 스케줄러(20)는 실행 코어(24)로부터 재실행(replay) 신호와 SCH# 및 예외 표시(exception indication)들을 수신하도록 결합되며, 또한 레지스터 파일(22)에도 결합된다. 레지스터 파일(22)은 피연산자들을 실행 코어에 제공하도록 결합되며, 그것으로부터 레지스터 파일(22)에 기록될 결과들을 수신하도록 결합된다. 더욱이, 레지스터 파일(22)은 또한 특정 명령들에 관한 다양한 정보를 저장하는 하나 이상의 상태 레지스터(221)를 포함할 수 있다. 이 정보 내에는 조건 코드들뿐만 아니라, 설정될 때, 대응하는 명령의 실행에 응답하여 특정 조건 코드와 연관된 조건이 언제 체크될지를 나타내는, 하나 이상의 비트도 포함될 수 있다. 그러한 조건들은, 다른 이유들 중에서도 특히, 명령 시퀀스 내의 조건부 분기가 취해지는지 취해지지 않는지의 여부를 결정하기 위해 체크될 수 있다.
인출 제어 유닛(12)은 명령들을 인출하기 위한 PC들을 생성하는 데 사용되는 임의의 회로를 포함할 수 있다. 예를 들어, 인출 제어 유닛(12)은 분기 명령들을 예측하고 예측된 경로를 인출하는(fetch down) 데 사용되는 분기 예측 하드웨어를 포함할 수 있다. 인출 제어 유닛(12)은 또한 (예를 들어, 예측 오류(misprediction), 예외, 인터럽트, 플러시(flush) 등을 통해) 리다이렉트(redirect)될 수 있다.
명령 캐시(14)는 프로세서(10)에 의해 실행될 명령들을 저장하기 위한 캐시 메모리일 수 있다. 명령 캐시(14)는 임의의 용량 및 구조(예를 들어, 직접 매핑(direct mapped), 세트 연관(set associative), 완전 연관(fully associative) 등)를 가질 수 있다. 명령 캐시(14)는 임의의 캐시 라인 크기를 가질 수 있다. 예를 들어, 64 바이트 캐시 라인이 일 실시예에서 구현될 수 있다. 다른 실시예들은 보다 큰 또는 보다 작은 캐시 라인 크기를 사용할 수 있다. 인출 제어 유닛(12)으로부터의 주어진 PC에 응답하여, 명령 캐시(14)는 최대 수의 명령까지 출력할 수 있다. 예를 들어, 최대 4개의 명령이 일 실시예에서 출력될 수 있다. 다른 실시예들은 보다 많은 또는 보다 적은 명령을 최대로써 사용할 수 있다.
디코드 유닛(16)은 일반적으로 명령 캐시(14)로부터 제공되는 각각의 명령에 대한 마이크로옵들을 생성하도록 구성될 수 있다. 마이크로옵들은 명령 동작들의 예이다. 일반적으로, 명령 동작은 실행 코어(24) 내에 포함된 하드웨어가 실행할 수 있는 동작일 수 있다. 각각의 명령은 하나 이상의 명령 동작(예를 들어, 마이크로옵들)으로 변환(translate)될 수 있고, 이 명령 동작들은, 실행될 때, 명령 세트 아키텍처에 따라 그 명령에 대하여 정의된 동작들이 수행되게 한다. 디코드 유닛(16)은 명령들에 대한 마이크로옵들을 생성하기 위하여 회로 및/또는 마이크로코딩의 임의의 조합을 포함할 수 있다. 예를 들어, 비교적 간단한 마이크로옵 생성들(예를 들어, 명령당 1개 또는 2개의 마이크로옵)은 하드웨어에서 취급될 수 있는 한편, 보다 광범위한 마이크로옵 생성들(예를 들어, 명령에 대한 3개 초과의 마이크로옵)이 마이크로코드에서 취급될 수 있다. 마이크로코드에 비해 하드웨어에서의 명령당 생성되는 마이크로옵의 수는 실시예에 따라 달라질 수 있다.
디코드 유닛(16)에 의해 생성되는 마이크로옵들은 매퍼(18)에 제공될 수 있다. 매퍼(18)는 마이크로옵들로부터의 소스 레지스터 주소들을 재명명된 소스 레지스터들을 식별해주는 소스 피연산자 번호(SO#)들에 매핑하기 위해, 레지스터 재명명을 구현할 수 있다. 또한, 매퍼(18)는 SCH#에 의해 식별되는, 각각의 마이크로옵을 저장할 스케줄러 엔트리(entry)를 할당할 수 있다. 일 실시예에서, SCH#는 또한 마이크로옵의 목적지에 할당된 재명명 레지스터를 식별할 수 있다. 다른 실시예들에서, 매퍼(18)는 별도의 목적지 레지스터 번호를 할당할 수 있다.
매퍼(18)는 마이크로옵들을, 각각의 마이크로옵에 대한 SCH#, SO#들 및 LSQ#(적용가능한 경우)와 함께 스케줄러(20)에 제공할 수 있다. 스케줄러(20)는, SO#들 및 LSQ#와 함께, 각자의 SCH#들에 의해 식별되는 스케줄러 엔트리들에 마이크로옵들을 저장할 수 있다. 스케줄러(20)는 실행 코어(24)에서 실행하기 위해 마이크로옵들을 스케줄링할 수 있다. 마이크로옵이 스케줄링될 때, 스케줄러(20)는 그의 소스 피연산자들을 레지스터 파일(22)로부터 판독할 수 있고, 소스 피연산자들은 실행 코어(24)에 제공될 수 있다. 로드/저장 동작들을 위해, 소스 피연산자들은 로드/저장 동작에 의해 액세스되는 메모리 위치의 주소를 생성하는 데 사용되는 주소 피연산자들을 포함한다. 로드/저장 동작의 주소 피연산자들은 레지스터 파일(22)로부터 제공되는 레지스터 피연산자들뿐만 아니라 로드/저장 마이크로옵 자체 내에서 인코딩된 변위(displacement) 피연산자들도 포함할 수 있다.
도시된 실시예에서, ALU(242)는 명령들을 실행하도록 구성된 하나 이상의 실행 유닛을 포함할 수 있다. 일 실시예에서, ALU(242)는 고정 소수점 피연산자로 명령을 실행하는 고정 소수점 유닛, 부동 소수점 피연산자로 명령을 실행하는 부동 소수점 유닛, 및 정수 피연산자로 명령을 실행하는 정수 유닛을 포함할 수 있다. ALU(242)는 또한 로드/저장 유닛, 하나 이상의 시프터 등과 같은 기타 유형의 회로도 포함할 수 있다.
도시된 일 실시예에서, 프로세서(10)는 명령들의 추론적인 실행을 지원할 수 있다. 구조화된 레지스터에 더하여, 레지스터 파일(22)은 레지스터들 각각의 추가적인 복사본들을 포함할 수 있다. 매퍼(18)는 임의의 주어진 시간에 레지스터 파일(22)의 레지스터들 중 어느 것이 논리 레지스터이고 어느 것이 물리적 레지스터인지를 나타낼 수 있으며, 이 매핑은 동작 동안에 빈번히 변할 수 있다. 논리 레지스터는 구조화된 레지스터에 대한 비-추론적 상태를 저장하는 레지스터로서 정의될 수 있다. 물리적 레지스터는 구조화된 레지스터에 대한 비-추론적 상태를 현재 저장하고 있지 않은 레지스터로서 정의될 수 있다. 따라서, 물리적 레지스터는 추론적으로 실행된 명령으로 인한 추론적 상태를 저장하는 레지스터를 포함할 수 있다. 명령 시퀀스가 실행될 때, 물리적 레지스터들 중 일부는 그들의 개별적으로 저장된 상태들이 비-추론적으로 됨에 따라 논리 레지스터가 되도록 재명명될 수 있다.
프로세서(10) 상에서 실행되는 일부 명령 시퀀스는 조건부 분기 명령을 포함할 수 있다. 조건부 분기 명령의 실행에 응답하여, 결과적인 조건은 두 경로 중 어느 것이 취해질 수 있는지를 결정할 수 있다. 일부 경우에서, 분기 명령 다음의 하나 또는 둘 모두의 경로 내의 명령들은 추론적으로 실행될 수 있고, 이때 그들의 대응하는 결과들은 물리적 레지스터들에 저장된다. 도시된 실시예에서 프로세서(10)는 몇몇 분기에 대해 분기 술어 기법를 수행하도록 구성된다. 분기 술어 기법를 사용하여, 조건부 분기 명령 다음의 두 경로 내의 명령들은 그 분기 명령 이전에 추론적으로 실행된다. 이 명령들의 결과들은 물리적 레지스터들에 저장될 수 있다. 분기 명령의 실행에 응답하여, 정확한 경로(즉, 분기에 의해 취해진 경로)의 결과들은, 물리적 레지스터들에 저장된 채로 있을 수 있고, 이 물리적 레지스터들은 후속적으로 논리 레지스터들로서 재명명될 수 있다. 취해지지 않은 경로와 연관된 명령들의 결과들은 폐기될 수 있다.
도시된 실시예에서, 일부 조건부 분기 명령은 술어적 분기 명령으로 지칭될 수 있다. 술어적 분기 명령은 술어적 분기(예측된 분기와 대조됨)와 연관된 조건부 분기 명령일 수 있다. 앞서 논의된 바와 같이, 술어적 분기 명령 뒤의 가능한 두 경로 내의 다수의 명령은 추론적으로 실행될 수 있다. 술어적 분기 명령은 두 동작을 포함할 수 있다(그리고 융합된 분기 명령으로서 지칭될 수 있다). 제1 동작의 실행은 다수의 상이한 플래그 비트의 상태들이 설정되도록 할 수 있다. 제2 동작의 실행은 플래그 비트들의 상태에 기초하여 조건을 결정할 수 있다. 조건은 조건 코드에 의해 정의될 수 있고, 따라서 제2 동작은 사실상, 생성된 플래그 비트들 중 하나 이상에 대해 조건 코드를 비교하는 것일 수 있다. 예를 들어, 동작의 결과가 주어진 값보다 크면 분기를 취하는 결과를 가져오는 조건 코드가 정의될 수 있다. 제1 동작의 실행은, 플래그 비트들 중 하나 이상으로 하여금, 결과 값이 주어진 값보다 큰지 여부를 나타내도록 설정할 수 있다. 제2 동작의 실행은 조건(예를 들어, 그 값이 주어진 값보다 큼)이 참인지를 결정하는 비교 동작을 수행할 수 있다. 도시된 실시예에서, PCU(30)는 타이밍 요구조건들을 여전히 충족시키면서 하나의 명령 사이클에서 술어적 분기 명령의 실행을 가능하게 할 수 있다.
도시된 실시예에서, PCU(30)는 ALU(242)로부터 4개의 플래그 비트(N, Z, C, V)를 수신하도록 결합된다. 이 실시예에 대한 플래그들은 다음과 같이 정의될 수 있다: N = ALU로부터의 음(negative)의 결과, Z = ALU로부터의 영(zero)의 결과, C = ALU로부터의 자리올림(carry) 동작, V = ALU로부터의 오버플로(overflow) 동작. 상이한 그리고/또는 추가적인 플래그들을 사용하는 실시예들이 가능하고 고려된다.
PCU(30)는 또한 레지스터 파일(22)의 상태 레지스터(221)들로부터 조건 코드들을 수신하도록 결합된다. 앞서 언급된 바와 같이, 조건 코드들은 술어적 분기 명령의 실행에 응답하여 체크될 조건을 나타낼 수 있다. 일 실시예에서, 조건 코드들은 4 비트를 포함할 수 있고, 따라서 최대 16개의 상이한 조건 중 하나의 존재를 체크할 수 있다. 이 조건 코드들은, 플래그 비트들에 의해 나타내어지는 바와 같이, 융합된 분기 명령의 제1 동작의 실행으로 인한 조건에 대해 PCU(30)에 의해 비교될 수 있다. 조건이 참인지 아닌지 평가하는 것에 응답하여, PCU(30)는 분기 유닛(245)에 제공되는 표시를 생성할 수 있다. 조건이 참인지의 여부에 따라, 분기 유닛(245)은 분기가 취해졌는지 아닌지의 여부를 나타내고, 대응하는 표시를 생성할 수 있다. 실행 코어(24)는 분기 유닛(245)에 의해 생성된 표시를 레지스터 파일(22)로 전달할 수 있으며, 이는 취해지지 않은 경로로부터의 결과들에 대응하는 물리적 레지스터들을 무효화할 수 있다.
PCU(30)의 일 실시예의 동작은 이제 도 2 내지 도 4와 함께 설명될 것이다. 도 2는 PCU(30)의 일 실시예를 예시한다. 도시된 실시예에서, PCU(30)는 한 쌍의 멀티플렉서(31A, 31B), 수정 유닛(modification unit)(32), 논리 유닛(33), 및 OR 게이트(G3)로 구현된 출력 회로를 포함한다. 멀티플렉서들(31A, 31B)은 생성된 플래그 비트들을 선택 입력들로서 사용하는 한편, 수정된 조건 코드들을 데이터 입력들로서 사용한다.
도시된 실시예에서 수정 유닛(32)은 상태 레지스터로부터 4 비트의 비수정된 조건 코드(CC3 내지 CC0)를 수신하도록 결합된다. 수신된 조건 코드에 기초하여, 수정 유닛(32)은 멀티플렉서들(31A, 31B)에 제공되는 대응하는 수정된 조건 코드들을 생성할 수 있다.
앞서 언급된 바와 같이, 도 1에 도시된 실시예에서 프로세서(10)는 플래그 비트들(N, Z, C, V)을 생성하도록 구성된 ALU(242)를 포함한다. 도 2에 도시된 PCU(30)의 실시예에서, Z 및 C 비트는 멀티플렉서(31A)로의 선택 입력들에 제공되는 한편, N 및 V 비트는 멀티플렉서(31B)로의 선택 입력들에 제공된다. 또한, 논리 유닛(33)은 N, V, 및 Z 비트를 수신하도록 결합된다.
멀티플렉서들(31A, 31B)의 출력들은, 논리 회로(33)의 출력과 함께, OR 게이트(G3)에 의해 결합되어 본 명세서에서 '조건(Condition)'으로 표기된 신호를 생성할 수 있다. 조건 코드에 의해 나타내어진 조건이 참이면, 조건 신호는 논리 1로 어서트(assert)될 수 있다. 그와 달리, 조건이 거짓이면, 조건 신호가 논리 0으로 디-어서트(de-assert)될 수 있다. 조건 신호는 분기 유닛(245)에 제공될 수 있는데, 분기 유닛(245)은 PCU(30)로부터 수신된 결과에 따라 분기가 취해지도록 하거나 하지 않을 수 있다.
도 3은 예시적인 분기 명령에 대한 가능한 경로들을 도시하는 실례이다. 도시된 예에서, 조건 코드에 의해 연관되는 조건부 분기 명령('분기[CC]')은 I1 내지 I6의 명령 시퀀스가 뒤따르는 것으로 도시된다. 명령들(I1 내지 I6)은, 조건부 분기 명령의 실행 결과는 제외하고, 이전의 모든 종속성(dependency)이 충족되면, 추론적으로 실행될 수 있다. 이 예에서, 분기가 취해지는 경우, 명령 시퀀스는 명령들(I1, I2, 및 I3)을 건너뛰고, 대신에 명령(I4)으로의 직접 점프를 야기한다. 분기가 취해지지 않는 경우, I1 내지 I4가 도시된 시퀀스에서 실행된다. 따라서 도 1에 도시된 프로세서(10)는 분기가 취해진 것처럼 그리고 분기가 취해지지 않은 것처럼 명령들의 시퀀스를 추론적으로 실행할 수 있다. 두 경우 모두에 대한 결과들은, 조건부 분기 명령이 실행될 때까지 레지스터 파일(22) 내의 물리적 레지스터들에 기록되고 그 내부에 저장될 수 있다. 조건부 분기 명령의 실행이 분기가 취해졌다고 결정하는 경우, 분기된(branched) 경로로부터의 결과들은 보유되고 후속적으로 논리 레지스터들에 위탁될 수 있는 한편, 비분기된(unbranched) 경로와 연관된 결과들은 폐기될 수 있다. 분기가 취해지지 않는 경우, 비분기된 경로로부터의 결과들은 보유되어 후속적으로 논리 레지스터들에 위탁될 수 있는 한편, 분기된 경로에 대응하는 결과들은 폐기된다.
앞서 언급된 바와 같이, 조건 코드에 의해 나타내어진 조건은 분기가 취해지는지 아닌지를 결정하는 데 사용될 수 있다. 도 4에 도시된 바와 같이, 조건들은 다음 3개의 상이한 세트로 분할될 수 있다: 멀티플렉서(31A)에 적용가능한 세트, 멀티플렉서(31B)에 적용가능한 세트, 및 논리 회로(33A)에 적용가능한 특수 조건. 멀티플렉서들(31A, 31B)에 대하여, 주어진 비수정된 조건 코드가 이 실시예의 수정 유닛(32)에 제공되면, 그 결과, 수정된 조건 코드가 멀티플렉서들 중 하나에 제공되고, 모두 논리 영들(all logic zeros)이 다른 멀티플렉서에 제공된다. 예를 들어, 비수정된 조건 코드가 멀티플렉서(31A)와 연관된 것으로 열거된 조건 코드들 중 하나라면, 대응하는 수정된 조건 코드가 멀티플렉서(31A)에 제공되는(입력 A3 내지 A0) 한편, 모두 논리 영들은 멀티플렉서(31B)에 제공된다(입력 A7 내지 A4). 비수정된 조건 코드가 논리 유닛(33)과 연관된 특수 조건에 대응하는 경우, 모두 논리 영들이 멀티플렉서들 둘 모두에 제공된다.
도 4는 또한 조건부 분기 명령의 실행으로 인한 플래그 비트들의 설정에 기초하여 체크되는 조건들을 나타내는 다수의 식을 포함한다. 예를 들어, 멀티플렉서(31A)에서, Z 및 C(Z and C)가 둘 다 논리 1이면 입력(A3)이 선택되는 한편, Z가 논리 1이고 C가 논리 0이면(Z and C_) 입력(A2)이 선택된다. 따라서, 조건부 분기 명령의 실행의 결과가 Z 플래그의 설정(Z =1)인 경우, C 플래그의 상태에 따라, 입력들(A3 또는 A2) 중 하나의 상태가 멀티플렉서(31A)로부터의 출력으로서 제공된다. 체크되는 조건이 Z 플래그가 Z = 1 인지 여부인 경우, C의 값에 관계없이, 수정 유닛(32)은 A3 및 A2 둘 모두를 논리 1로 설정할 수 있다. 체크되는 조건이 Z = 1 인 경우, 수정 유닛(32)은 또한 입력들(A1 및 A0)을 논리 0으로 설정할 수 있다 (A1 = Z_ and C 인 한편, A0 = Z_ and C_ 이므로). 명령의 실행의 결과가 Z = 1 인 경우, 논리 1은 따라서 멀티플렉서(31A)의 Z 선택 입력 상에 제공된다. 이 예에서 체크되는 조건이 Z = 1 인지 여부이기 때문에, 논리 1은 (이 특정 예에서 C 플래그에 관계 없이) 멀티플렉서(31A)의 출력으로 곧바로 전달되며, 그에 따라 OR 게이트(G3)를 통해 조건 출력으로 전달된다. 따라서, 이 예에서, 논리 1로서의 조건 출력의 어서트는, 비수정된 조건 코드에 대응하는 조건이 참임을 나타낸다.
이 예에서 명령의 실행의 결과가 Z = 0 인 경우, 논리 0이 멀티플렉서(31A)의 Z 입력에 제공된다. 다시, 이 예에서 체크되는 조건이 Z = 1 인지 여부(C와 관계 없이)이기 때문에, 따라서 Z = 0의 결과는 논리 0이 A1 또는 A0 중 하나로부터 멀티플렉서(31A)의 출력으로, 그리고 그에 따라 OR 게이트(G3)를 통한 PCU(30)의 출력으로 전파되는 것으로 이어진다. OR 게이트(G3)의 출력에서의 논리 0은 체크된 조건, Z = 1,이 참이 아니었음을 나타낸다.
다른 예로서, 조건이 입력 조건 코드(1000)에 대응할 때 - 이 때 C = 1 and Z = 0 임 - 를 고려한다. 이 조건은 A1 = 1이면서, A3, A3, 및 A0 각각은 논리 0인 것에 대응한다. 따라서, 이 조건이 수정 유닛(32)에 입력되면, A1은 논리 1로 설정되고, A3, A3, 및 A0는 논리 0으로 설정되며, 멀티플렉서(31B)로의 데이터 입력들(A7 내지 A4) 각각은 또한 논리 0으로 설정된다. 대응하는 분기 명령의 실행이 C 플래그가 논리 1로 설정되고 Z 플래그가 논리 0으로 설정되는 것을 야기하면, A1로부터의 논리 1은 멀티플렉서(31A)를 통해 PCU(30)의 조건 출력으로 전파되며, 이는 조건 코드에 의해 규정된 입력 조건이 참임을 나타낸다. Z 및 C의 임의의 다른 결합이 대응하는 분기 명령(예를 들어, Z = 1 및/또는 C = 0)의 실행으로 인한 것이면, 논리 0이 멀티플렉서(31A)를 통해 조건 출력으로 출력 전송됨으로써, 비수정된 조건 코드에 의해 규정된 입력 조건의 체크가 거짓임을 나타낸다.
PCU(30)의 동작의 세번째 예는, N의 값이 V의 값과 일치하지 않을 때(N != V) 일어난다. N != V 인 경우, N = 1일 때, V = 0 이고, N = 0일 때, V = 1이다. 도 4의 우측 하단 부분의 식들을 볼 때, 이 두 경우들은 A6 = N and V_이고 A5 = N_ and V 인 것에 대응함을 알 수 있다. 따라서, N != V 에 대응하는 조건 코드(1011)가 수신되면, 수정 유닛(32)은 논리 1을 멀티플렉서(31B)의 A6 및 A5에 제공하는 한편, 논리 0을 A7 및 A4에 제공함으로써 응답할 수 있다. 수정 유닛(32)은 또한 N != V에 대응하는 조건 코드를 수신하는 것에 응답하여 멀티플렉서(31A)의 데이터 입력들(A3 내지 A0)에 모두 논리 0을 제공할 수 있다. 플래그 비트들이 선택 입력들에 제공될 때, A6은 N = 1이고 V = 0일 때 선택되는 반면, A5는 N = 0이고 V = 1이면 선택될 것이다. A6 또는 A5 중 하나가 선택되는 경우, N != V의 조건은 참이고, 따라서 논리 1은 멀티플렉서(31B)를 통해 PCU(30)의 조건 출력으로 전파될 것이다. N과 V가 둘 다 논리 1이거나 둘 다 논리 0이면,
마지막 예로, 논리 유닛(33)을 이용하는 특수 조건이 이제 논의된다. 멀티플렉서들(31A, 31B)에 대하여, 플래그 비트들이 두 상호 배타적인 그룹의 선택 입력들로서 제공된다(Z 및 C는 멀티플렉서(31A)에, N 및 V는 멀티플렉서(31B)에). 논리 유닛(33)에 대하여는, 이 그룹들의 각각으로부터의 플래그 비트들이 제공된다. 더욱 상세하게는, 도시된 실시예에서 논리 유닛(33)은 하나의 그룹으로부터 N 및 V 비트를 수신하고, 다른 그룹으로부터 Z 비트를 수신하도록 결합된다. 논리 유닛(33)은 Z = 0 and N != V인 '보다 큰(greater than)' 조건(조건 코드(1100)에 대응함)에 대해 체크하는 데 사용될 수 있다. 조건 코드(1100)의 수신에 응답하여, 수정 유닛(32)은 멀티플렉서들(31A, 31B) 둘 모두로의 데이터 입력들로서 모두 논리 0을 제공할 수 있다.
도시된 실시예의 논리 유닛(33)은 N 및 V 플래그 비트를 수신하도록 결합된 XOR 게이트(G1)와, Z 플래그 비트를 수신하도록 결합된 인버터(I1)를 포함한다. NOR 게이트(G1) 및 인버터(I1)의 각자의 출력들은 AND 게이트(G2)의 대응하는 입력들에 결합된다. N 및 V 플래그 비트가 논리적 상보 상태로 제공되면(예를 들어, N = 1이고 V = 0), NOR 게이트(G1)는 논리 1을 출력한다. 유사하게, Z가 논리 0으로서 제공되면, 인버터(I1)는 Z_를 논리 1로서 출력한다. 그것의 입력들이 둘 모두 논리 1일 때, AND 게이트(G2)는 그에 상응하여 논리 1을 출력한다. 따라서, 조건 코드(1100)와 연관된 분기 명령의 실행에 응답하여 생성되는 플래그 비트들이 Z = 0 and N != V을 가져오면, 논리 유닛(33)은 논리 1을 출력하고, 이는 조건 출력으로 전파되며 조건이 참임을 나타낸다. Z = 1, 또는 N 및 V가 논리적으로 동일하면(예를 들어, 둘 모두가 논리 1), 논리 유닛(33)은 논리 0을 출력하고, 따라서 조건은 참이 아닌 것으로 나타내어진다.
일반적으로, PCU(30)의 동작은 하기와 같이 설명될 수 있다. 앞서 언급된 바와 같이, 융합된 분기 명령은 두 동작을 포함하는데, 하나는 플래그 비트들이 생성되는 동작이고, 다른 하나는 플래그 비트들의 측면에서 조건이 체크되는 동작이다. 도시된 실시예에서 PCU(30)는 제2 동작을 수행하도록 구성된다. 융합된 분기 명령의 실행 전에, 대응하는 조건 코드가 PCU(30)에 제공되고, 더욱 상세하게는, 수정 유닛(32)에 제공될 수 있다. 비수정된 조건 코드의 수신에 응답하여, 수정 유닛(32)은 멀티플렉서들(31A, 31B)에 데이터 입력들로서 제공되는 대응하는 수정된 조건 코드를 생성할 수 있다. 융합된 분기 명령의 제1 동작이 실행될 때, 플래그 비트들이 생성되고 이에 따라 멀티플렉서들(31A, 31B)에 선택 입력들로서 제공될 뿐만 아니라, 논리 유닛(33)의 입력들에도 제공될 수 있다. 따라서, 융합된 분기 명령의 제2 동작의 실행은 플래그 비트들의 생성에 응답하여 일어날 수 있으며, 이는 결국 PCU(30)로 하여금 수신된 조건 코드에 의해 나타내는 조건이 참인지 여부의 표시를 제공하게 한다.
도 2에 도시된 배열은 종래 기술 실시예들에 관한 술어적 분기 명령들에 대하여 보다 빠른 술어 계산을 가능하게 할 것이다. 일 종래 기술 실시예에서, 16-1 멀티플렉서는 선택 입력들로서 조건 코드들을 수신하도록 결합되는 한편, 데이터 입력들로서 (제1 동작의 실행으로 인한) 계산된 조건들의 표시들을 수신한다. 이러한 실시예에서, 제1 동작의 실행으로 인한 가능한 조건들의 각각의 계산은 조건 코드들을 선택 입력들에 입력하기 전에 수행된다. 이러한 실시예에서, 최소 7 게이트 지연이 존재하는데, 이는 타이밍 목적들을 만족시키는 능력에 부정적으로 작용할 수 있다. 반대로, 도 2의 실시예에서, 데이터 및 선택 입력들은 효과적으로 교체되고(swap), 이때 조건 코드들(수정된 형태의)은 데이터 입력들로서 제공되고, 명령 실행으로 인한 플래그 비트들은 선택 입력들로서 제공된다. 조건 코드들이 제1 동작의 실행에 의존하지 않으므로, 이들은 융합된 분기 명령을 ALU(242) 내의 실행 유닛에 디스패치하기 전에 제공될 수 있다. 또한, 배열은, 다양한 케이스들이 료단일의 멀티플렉서를 통해 실행되는 대신에, 다수의 멀티플렉서로 분할되는 것을 허용한다. 그 결과, 게이트 지연은 최소 7 게이트에서 4로 감소될 수 있고, 이는 융합된 분기 명령들을 보다 빠르게 실행할 수 있게 한다.
PCU(30)는 술어적 분기 명령들이 아닌 명령들에 이용될 수 없다는 점을 유의해야 한다. 따라서, 일부 실시예에서, PCU(30)는 이러한 명령들의 실행을 위해 디스에이블될 수 있다. 명시적으로 도시되지는 않았지만, PCU(30)는, 그것의 동작을 인에이블하도록 어서트되고 그것의 동작을 디스에이블하도록 디-어서트되는 신호를 갖는, 인에이블 입력을 포함할 수 있다. 이러한 실시예에서 신호 입력은, 주어진 명령과 연관되는 상태 레지스터 엔트리에 저장된 비트에 기초하여 어서트 또는 디어서트될 수 있다. 비트는 각 술어적 분기 명령에 대하여 설정될 수 있고, 그럼으로써 PCU(30)를 인에이블할 수 있다.
이제 도 5로 넘어가서, 술어 계산을 수행하기 위한 방법의 일 실시예의 흐름도가 도시된다. 방법(500)은 PCU의 다양한 실시예에 적용될 수 있고, 이 PCU는 도 2에 도시되고 앞서 논의된 PCU(30)를 포함한다.
방법(500)은 PCU에 조건 코드를 제공하는 것으로부터 시작한다(블록 505). 이는, 대응하는 술어적 분기 명령을 실행 유닛에 디스패치하기 전에 일어날 수 있다. 이는, 술어적 분기 명령의 실행을 시작하기 전에 (또는 그것의 제1 동작의 완료 전에) 수정된 조건 코드들의 생성을 가능하게 할 것이다(블록 510).
수정된 조건 코드들이 생성되고 PCU의 하나 이상의 멀티플렉서에 데이터 입력들로서 제공되면서, 술어적 분기 명령의 제1 동작의 실행이 일어날 수 있다(블록 515). 술어적 분기 명령의 제1 동작을 실행하는 것에 응답하여, 플래그 비트들이 생성되고 PCU의 멀티플렉서들에 선택 입력들로서 제공될 수 있다(블록 520). 멀티플렉서들에 데이터로서 제공되는 수정된 조건 코드들 및 플래그 비트들의 상태(이는 또한 특수한 경우들에서는 별개의 논리 유닛들에 제공될 수 있음)에 기초하여, 수신된(비수정된) 조건 코드에 대응하는 조건이 참인지를 나타내는 표시가 생성될 수 있다(블록 525).
술어적 분기 명령들의 실행 전에, 취해진 분기 및 취해지지 않는 분기와 연관된 명령 시퀀스들은 둘 모두 추론적으로 실행될 수 있다. 이 명령 시퀀스들 둘 모두로부터의 결과들은 물리적 레지스터들에 저장될 수 있다. PCU에 의해 결정된 조건의 상태가 분기 조건에 대응하면(즉, 분기가 취해짐; 블록 530, 예), 분기가 취해진 경로로부터의 추론적 결과들은 보유될 수 있는 한편, 분기가 취해지지 않은 경로로부터의 추론적 결과들은 폐기될 수 있다(블록 535). 그와 달리, 조건이 분기가 취해지지 않음에 대응하면(블록 530, 아니오), 분기가 취해진 경로로부터의 결과들은 폐기되는 한편, 분기가 취해지지 않은 경로로부터의 결과들은 보유된다. 분기가 취해지는지 여부에 관계없이, 보유된 결과들은 결국 논리 레지스터들에 위탁될 수 있다.
예시적인 시스템:
다음으로 도 6를 참조하면, 시스템(150)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 시스템(150)은 하나 이상의 주변장치(154) 및 외부 메모리(158)에 결합된 IC(5)(예를 들어, 도 1의 프로세서(10)를 구현하는)의 적어도 일례를 포함한다. 또한, IC(10)에 공급 전압을 공급할 뿐만 아니라, 메모리(158) 및/또는 주변장치(154)들에 하나 이상의 공급 전압을 공급하는 전원 장치(156)가 제공된다. 일부 실시예에서, IC(10)의 둘 이상의 예가 포함될 수 있다 (그리고 둘 이상의 외부 메모리(158) 또한 포함될 수 있다).
주변장치(154)들은 시스템(150)의 유형에 따라 임의의 원하는 회로를 포함할 수 있다. 예를 들어, 일 실시예에서, 시스템(150)은 모바일 디바이스(예를 들어, 개인 휴대 정보 단말기(personal digital assistant, PDA), 스마트 폰 등)일 수 있고, 주변장치(154)들은 wifi, 블루투스(Bluetooth), 셀룰러, 글로벌 포지셔닝 시스템 등과 같은 다양한 유형의 무선 통신용 디바이스들을 포함할 수 있다. 또한, 주변장치(154)들은 RAM 저장 장치, 솔리드 스테이트 저장 장치(solid state storage) 또는 디스크 저장 장치를 비롯한 추가 저장 장치를 포함할 수 있다. 주변장치(154)들은 터치 디스플레이 스크린 또는 멀티터치 디스플레이 스크린을 비롯한 디스플레이 스크린과 같은 사용자 인터페이스 디바이스들, 키보드 또는 다른 입력 디바이스들, 마이크로폰, 스피커 등을 포함할 수 있다. 다른 실시예들에서, 시스템(150)은 임의의 유형의 컴퓨팅 시스템(예를 들어, 데스크톱 개인용 컴퓨터, 랩톱, 워크스테이션, 넷 톱(net top) 등)일 수 있다.
외부 메모리(158)는 임의의 유형의 메모리를 포함할 수 있다. 예를 들어, 외부 메모리(158)는 SRAM, 동적 RAM(DRAM), 예컨대, 동기 DRAM(SDRAM), 이중 데이터율(double data rate)(DDR, DDR2, DDR3, LPDDR1, LPDDR2 등) SDRAM, RAMBUS DRAM 등일 수 있다. 외부 메모리(158)는 메모리 디바이스들이 장착되는 하나 이상의 메모리 모듈, 예컨대 단일 인라인 메모리 모듈(single inline memory module, SIMM), 듀얼 인라인 메모리 모듈(dual inline memory module, DIMM) 등을 포함할 수 있다.
전술한 개시 내용이 완전하게 이해된다면, 다양한 변형 및 수정이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이다. 이하의 특허청구범위는 모든 그러한 변형 및 수정을 포괄하도록 해석되어야 하는 것으로 의도된다.

Claims (15)

  1. 각각이 명령의 조건 코드(condition code)와 연관된 제1 및 제2 복수의 데이터 비트들을 각자 수신하도록 구성되는 제1 및 제2 멀티플렉서들;
    상기 명령의 실행에 응답하여, 제1 세트의 플래그 비트(flag bit)들을 상기 제1 멀티플렉서에 선택 비트들로서 제공하고, 제2 세트의 플래그 비트들을 상기 제2 멀티플렉서에 선택 비트들로서 제공하도록 구성되는 실행 유닛; 및
    상기 제1 및 제2 멀티플렉서들로부터 수신되는 출력들에 기초하여, 상기 조건 코드와 연관된 조건이 참인지 여부의 표시를 출력하도록 구성되는 제1 논리 회로
    를 포함하는, 장치.
  2. 제1항에 있어서, 상기 조건 코드를 수신하도록 결합된 수정 유닛(modification unit)을 추가로 포함하며, 상기 수정 유닛은 상기 조건 코드에 기초하여 상기 제1 및 제2 복수의 데이터 비트들을 생성하도록 구성되는, 장치.
  3. 제1항에 있어서, 상기 제1 세트의 플래그 비트들 중 적어도 하나 및 상기 제2 세트의 플래그 비트들 중 적어도 하나를 수신하도록 결합된 제2 논리 회로를 추가로 포함하는, 장치.
  4. 제3항에 있어서, 상기 제1 논리 회로는, 상기 제2 논리 회로, 상기 제1 멀티플렉서, 및 상기 제2 멀티플렉서로부터의 출력들에 기초하여, 상기 조건 코드와 연관된 조건이 참인지 거짓인지 여부의 상기 표시를 출력하도록 구성되는, 장치.
  5. 제1항에 있어서, 상기 제1 논리 회로의 상기 출력을 수신하도록 결합된 분기 유닛을 추가로 포함하며, 상기 분기 유닛은 상기 제1 논리 회로의 상기 출력에 기초하여 조건부 분기(conditional branch)가 취해질지를(taken) 결정하도록 구성되는, 장치.
  6. 제1 및 제2 복수의 데이터 비트들을 제1 및 제2 멀티플렉서들에 각자 제공하는 단계 - 상기 제1 및 제2 복수의 데이터 비트들은 명령의 조건 코드와 연관됨 -;
    상기 명령의 실행에 응답하여, 상기 제1 멀티플렉서의 선택 입력들에 제1 세트의 플래그 비트들을 제공하는 단계;
    상기 명령의 실행에 응답하여, 상기 제2 멀티플렉서의 선택 입력들에 제2 세트의 플래그 비트들을 제공하는 단계;
    상기 제1 및 제2 멀티플렉서들에 의해 제공된 출력들에 기초하여, 상기 조건 코드와 연관된 조건이 참인지 여부의 표시를 생성하는 단계
    를 포함하는, 방법.
  7. 제6항에 있어서, 상기 제1 복수의 비트들을 생성하기 위한 상기 조건 코드의 제1 수정 및 상기 제2 복수의 비트들을 생성하기 위한 상기 조건 코드의 제2 수정을 수행하는 단계를 추가로 포함하는, 방법.
  8. 제6항에 있어서, 제1 논리 회로가 상기 표시를 생성하도록 구성되며, 상기 방법은,
    제2 논리 회로가 상기 제1 세트의 플래그 비트들 중 적어도 하나 및 상기 제2 세트의 플래그 비트들 중 적어도 하나를 수신하는 단계를 추가로 포함하는, 방법.
  9. 제8항에 있어서, 상기 제1 멀티플렉서, 상기 제2 멀티플렉서, 및 상기 제2 논리 회로에 의해 제공되는 출력들에 기초하여, 상기 표시를 생성하는 단계를 추가로 포함하는, 방법.
  10. 제6항에 있어서, 분기 유닛이 상기 표시에 기초하여, 상기 명령과 연관된 조건부 분기가 취해지는지를 결정하는 단계를 추가로 포함하는, 방법.
  11. 프로세서로서,
    명령과 연관된 조건 코드를 제공하도록 구성되는 상태 레지스터;
    상기 명령의 실행에 응답하여 복수의 플래그 비트들을 생성하도록 구성되는 실행 유닛; 및
    술어 유닛(predicate unit)
    을 포함하며, 상기 술어 유닛은,
    상기 조건 코드에 기초하여 생성되는 각자의 복수의 데이터 비트들을 수신하도록 각각 결합된 복수의 멀티플렉서들 - 상기 복수의 멀티플렉서들의 각각은 상기 플래그 비트들 중 하나 이상을 선택 입력들로서 수신하도록 추가로 구성됨 -; 및
    상기 복수의 멀티플렉서들의 각각으로부터의 각자의 출력들에 기초하여, 상기 조건 코드에 의해 나타내어지는 조건이 참인 경우 출력 비트를 설정하도록 구성되는 출력 유닛을 포함하는, 프로세서.
  12. 제11항에 있어서, 상기 복수의 멀티플렉서들 중 제1 멀티플렉서에 제공된 상기 데이터 비트들은 상기 조건 코드의 제1 수정된(modified) 버전이고, 상기 복수의 멀티플렉서들 중 제2 멀티플렉서에 제공된 상기 데이터 비트들은 상기 조건 코드의 제2 수정된 버전인, 프로세서.
  13. 제12항에 있어서, 상기 복수의 멀티플렉서들 중 상기 제1 멀티플렉서는 제1 세트의 플래그 비트들을 선택 입력들로서 수신하도록 결합되고, 상기 멀티플렉서들 중 상기 제2 멀티플렉서는 상기 제1 세트의 플래그 비트들과 상호 배타적인 제2 세트의 플래그 비트들을 선택 입력들로서 수신하도록 결합되는, 프로세서.
  14. 제13항에 있어서, 상기 제1 세트의 플래그 비트들 중 적어도 하나 및 상기 제2 플래그 비트들 중 적어도 하나를 수신하도록 결합된 논리 회로를 추가로 포함하며, 상기 출력 유닛은, 상기 복수의 멀티플렉서들의 각각 및 상기 논리 회로로부터의 각자의 출력들에 기초하여, 상기 조건 코드에 의해 나타내어지는 상기 조건이 참인 경우 상기 출력 비트를 설정하도록 구성되는, 프로세서.
  15. 제13항에 있어서, 상기 조건 코드를 상기 복수의 멀티플렉서들 중 상기 제1 멀티플렉서에 의해 수신되는 제1 복수의 데이터 비트들로 변환하도록 구성되고, 상기 조건 코드를 상기 복수의 멀티플렉서들 중 상기 제2 멀티플렉서에 의해 수신되는 제2 복수의 데이터 비트들로 변환하도록 추가로 구성되는 수정 유닛을 추가로 포함하는, 프로세서.
KR1020147032976A 2012-05-02 2013-04-26 프로세서 명령 세트 내의 술어 계산 KR101716014B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/461,950 2012-05-02
US13/461,950 US9652242B2 (en) 2012-05-02 2012-05-02 Apparatus for predicate calculation in processor instruction set
PCT/US2013/038425 WO2013165845A1 (en) 2012-05-02 2013-04-26 Predicate calculation in processor instruction set

Publications (2)

Publication Number Publication Date
KR20150006004A true KR20150006004A (ko) 2015-01-15
KR101716014B1 KR101716014B1 (ko) 2017-03-13

Family

ID=48193169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147032976A KR101716014B1 (ko) 2012-05-02 2013-04-26 프로세서 명령 세트 내의 술어 계산

Country Status (6)

Country Link
US (1) US9652242B2 (ko)
EP (1) EP2660717A3 (ko)
KR (1) KR101716014B1 (ko)
CN (1) CN104272248B (ko)
TW (1) TWI476686B (ko)
WO (1) WO2013165845A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9684514B2 (en) 2014-09-10 2017-06-20 International Business Machines Corporation Inference based condition code generation
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061583B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387158B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10303525B2 (en) 2014-12-24 2019-05-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061589B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9904546B2 (en) * 2015-06-25 2018-02-27 Intel Corporation Instruction and logic for predication and implicit destination
US10503507B2 (en) * 2017-08-31 2019-12-10 Nvidia Corporation Inline data inspection for workload simplification
US10553207B2 (en) 2017-12-29 2020-02-04 Facebook, Inc. Systems and methods for employing predication in computational models

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408620A (en) * 1991-01-31 1995-04-18 Fujitsu Limited Circuit for executing conditional branch instructions in pipeline process

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1134780B (it) 1980-12-18 1986-08-13 Honeywell Inf Systems Unita' di controllo microprogrammata con rete di salti multipli
DE68927218T2 (de) * 1988-10-18 1997-02-06 Hewlett Packard Co Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
US5349671A (en) 1989-03-23 1994-09-20 Matsushita Electric Industrial Co., Ltd. Microprocessor system generating instruction fetch addresses at high speed
US5504867A (en) * 1992-09-29 1996-04-02 Texas Instruments Incorporated High speed microprocessor branch decision circuit
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5958046A (en) 1996-11-26 1999-09-28 Texas Instruments Incorporated Microprocessor with reduced microcode space requirements due to improved branch target microaddress circuits, systems, and methods
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6366999B1 (en) 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
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
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
JP2006270735A (ja) 2005-03-25 2006-10-05 Fujitsu Ltd 符号変換回路
US20090113174A1 (en) 2007-10-31 2009-04-30 Texas Instruments Incorporated Sign Operation Instructions and Circuitry
JP2009163624A (ja) 2008-01-09 2009-07-23 Nec Electronics Corp プロセッサ装置及び条件分岐処理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408620A (en) * 1991-01-31 1995-04-18 Fujitsu Limited Circuit for executing conditional branch instructions in pipeline process

Also Published As

Publication number Publication date
TWI476686B (zh) 2015-03-11
CN104272248B (zh) 2017-06-09
EP2660717A3 (en) 2013-12-25
KR101716014B1 (ko) 2017-03-13
US20130297918A1 (en) 2013-11-07
US9652242B2 (en) 2017-05-16
TW201403473A (zh) 2014-01-16
WO2013165845A1 (en) 2013-11-07
EP2660717A2 (en) 2013-11-06
CN104272248A (zh) 2015-01-07

Similar Documents

Publication Publication Date Title
KR101716014B1 (ko) 프로세서 명령 세트 내의 술어 계산
US9639369B2 (en) Split register file for operands of different sizes
US9501286B2 (en) Microprocessor with ALU integrated into load unit
US20150227374A1 (en) Early loop buffer entry
US9201658B2 (en) Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
US10838729B1 (en) System and method for predicting memory dependence when a source register of a push instruction matches the destination register of a pop instruction
WO2017019286A1 (en) Backward compatibility by restriction of hardware resources
US9405544B2 (en) Next fetch predictor return address stack
KR20210116651A (ko) 바이패스 최적화, 가변 그리드 아키텍처 및 융합된 벡터 동작들을 갖는 코프로세서들
US20130138931A1 (en) Maintaining the integrity of an execution return address stack
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
US11928467B2 (en) Atomic operation predictor to predict whether an atomic operation will complete successfully
US9626185B2 (en) IT instruction pre-decode
US20120311009A1 (en) Hybrid adder using dynamic and static circuits
US10747539B1 (en) Scan-on-fill next fetch target prediction
US20190220417A1 (en) Context Switch Optimization
US11294684B2 (en) Indirect branch predictor for dynamic indirect branches
US11422821B1 (en) Age tracking for independent pipelines
US8171258B2 (en) Address generation unit with pseudo sum to accelerate load/store operations
US11036514B1 (en) Scheduler entries storing dependency index(es) for index-based wakeup
US11914511B2 (en) Decoupling atomicity from operation size
US10628164B1 (en) Branch resolve pointer optimization
US20200241876A1 (en) Range Mapping of Input Operands for Transcendental Functions

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

Year of fee payment: 4