KR100888356B1 - 선택적인 분기 예측을 갖는 처리기 - Google Patents

선택적인 분기 예측을 갖는 처리기 Download PDF

Info

Publication number
KR100888356B1
KR100888356B1 KR1020027016869A KR20027016869A KR100888356B1 KR 100888356 B1 KR100888356 B1 KR 100888356B1 KR 1020027016869 A KR1020027016869 A KR 1020027016869A KR 20027016869 A KR20027016869 A KR 20027016869A KR 100888356 B1 KR100888356 B1 KR 100888356B1
Authority
KR
South Korea
Prior art keywords
address
mode
branch
signal
input
Prior art date
Application number
KR1020027016869A
Other languages
English (en)
Other versions
KR20030007952A (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 KR20030007952A publication Critical patent/KR20030007952A/ko
Application granted granted Critical
Publication of KR100888356B1 publication Critical patent/KR100888356B1/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/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/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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

Abstract

본 발명은 어드레스 예측 인에이블 신호의 상태에 기초하여 어드레스 예측을 이용하는 지의 여부를 선택할 수 있는 데이터 시스템에 관한 것이다. 어드레스 예측을 사용하는 경우, 분기 명령들의 결과는 그 명령의 분석에 앞서 분기 명령들의 결과가 추정된다. 어드레스 예측을 사용하지 않는 경우, 그 시스템은 실행될 다음 어드레스를 페치(fetch)하기 전에 분기 명령이 분석될 때까지 대기한다. 본 명세서에 기재된 방법 및 데이터 시스템의 적어도 제 1 실시예가 예측 및 비-예측 동작 모드들을 사용하는 경우, 사용가능한 다른 셋업 타이밍을 사용한다.
어드레스 예측 인에이블 신호, 분기 명령, 예측 동작 모드

Description

선택적인 분기 예측을 갖는 처리기{Processor having selective branch prediction}
발명의 분야
본 발명은 일반적으로 데이터 처리 시스템들에 관한 것이며, 특히 선택적인 분기 예측을 사용하는 데이터 처리기들에 관한 것이다.
종래 기술
분기 예측은 데이터 처리기 성능을 개선하는데 사용되는 한가지 기술이다. 분기 예측 기술들을 사용하는 데이터 처리기들은 그들이 결과가 분석되지 않은 분기 명령을 수신할 때마다, "추측(guess)"하고, 그 추측(또는 "분석되지 않은 분기 명령(unresolved branch instruction)"의 예측된 결과)에 따라 동작하며, 이어서 그 "분석된 분기 명령(resolved branch instruction)"에 후속하는 추측이 정확한 지를 결정한다. 그러한 데이터 처리기는 궁극적으로 분기가 취해져서 연속하지 않는(non-sequential) 타겟 명령 어드레스로 점프할 것인지, 아니면 다음의 연속 명령에 대해 "실패로 끝날(fall through)" 것인 지를 예측한다. 대부분의 예들에서, 데이터 처리기들이 정확한 추측들을 하고, 조건 분기 명령의 결과를 분석하기 전에 분기 타겟 명령 어드레스로부터 페치할(fetch) 수 있기 때문에, 조건 분기 명령들을 예측하는 데이터 처리기들이 성능을 달성할 수 있다. 그러나, 일반적으로 잘못된 추측들과 연관된 성능 패널티가 존재한다. 분기 명령들이 연속 명령 스트림 페치 패턴의 변화를 야기하기 때문에, 부정확한 어드레스 추론이 손실된 처리기 사이클들을 초래할 수 있다. 잘못된 추측의 경우, 그 부정확하게 페치된 명령 스트림이 버려지고, 정확한 명령 스트림이 처리기 파이프라인(processor pipeline)으로 리로드(reload)되어야 하기때문에, 이러한 처리기 사이클들이 손실된다. 이러한 분기 예측 성능 가속의 형태(조건 분기 명령의 결과를 예측하고, 그 결과의 예측된 명령 스트림으로부터의 프리페치하는 명령을 수행하는 능력)는 "분기 어드레스 예측(branch address prediction)"으로서 알려져 있다.
다른 처리기들은 분기 예측 기술들을 사용하지 않는다. 이러한 처리기들에서, 분기 명령들은 분기 타겟 명령이 페치되기 이전에 분석된다. 분기 예측을 사용하지 않는 처리기와 비교하여, 분기 예측을 사용하는 처리기를 설계하기 위한 결정은 설계 인자들의 수에 기초할 수 있지만, 보통은 클럭 사이클들을 절약하기 위한 소망에 기초한다. 몇가지 경우에서, 추론적인 명령 페치를 사용하는 처리기들에 의해 초래되는 분기 예측 패널티를 제거하기 위해서, 분기 예측을 사용하지 않는 처리기들을 사용하는 것이 더 바람직하다.
그러므로, 보다 넓은 범위의 응용들, 보다 낮은 설계 및 생산 비용들에 대한 그 처리기의 확장성(scalability)을 개선하는데 도움을 줄 수 있는 분기 예측 시스템 및 비-분기 예측 시스템 둘 모두에 사용하기 위한 단일 처리기가 필요하게 된다.
관련 구성 요소들의 방법들, 동작들 및 기능들 및 그 부분들의 조합, 제조의 경제성들뿐만 아니라 본 발명의 목적들, 이점들, 특징들, 및 특성들도 본 명세서의 부분을 형성하는 모든 것을 첨부 도면들을 참조하여 다음의 상세한 설명 및 청구 범위들의 고려시 분명해 질 것이다. 동일한 참조 번호들은 여러 도면들의 대응하는 부분들을 지정한다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 시스템의 블록도.
도 2는 본 발명의 적어도 일실시예에 따른 도 1에 도시된 중앙 처리 유닛의 블록도.
도 3은 본 발명의 일실시에에 따른 도 2의 어드레스 선택 제어에 대한 진리표.
도 4는 본 발명의 적어도 일실시예에 따라서, 어드레스 예측이 인에이블되고, 정확한 예측이 이루어진 경우에 대한 처리기 타이밍을 설명하는 타이밍도.
도 5는 본 발명의 적어도 일실시예에 따라서, 어드레스 예측이 인에이블되고, 부정확한 예측이 이루어진 경우에 대한 처리기 타이밍을 설명하는 타이밍도.
도 6은 어드레스 예측이 디스에이블되고, 분기 명령에 의해 지시되는 타겟 어드레스가 페치된 경우에 대한 처리기 타이밍을 설명하는, 본 발명의 일실시예에 따른 타이밍도.
도 7은 어드레스 예측이 디스에이블되고, 분기 명령이 "실패로 끝나고", 다음의 연속 명령이 페치되는 경우를 설명하는, 본 발명의 일실시예에 따른 타이밍 도.
당업자들은 도면들의 소자들이 간단하고 명료하게 도시되었으며, 반드시 일정한 비율로 그려질 필요는 없음을 이해해야 한다. 예를 들어, 도면들 내의 소자들 몇몇의 크기들은 본 발명의 실시예들의 이해를 개선시키는데 도움을 주기 위해 다른 요소들에 비해 과장될 수 있다.
상세한 설명
본 명세서에 사용된 바와 같이, 용어들 "분기 어드레스 예측", "분기 예측", 및 "어드레스 예측"이 일반적으로 서로 교체가능하도록 사용된다. 용어들 "단언하다(assert)" 및 "취소하다(negate)"는 신호, 상태 비트 또는 논리적 참 또는 논리적 거짓 상태 각각으로 유사 장치들의 렌더링(rendering)을 언급할 때 사용된다. 논리적 참 상태가 논리 레벨 1(one)인 경우, 논리적 거짓 상태는 논리 레벨 0(zero)이다. 그리고, 논리적 참 상태가 논리 레벨 0인 경우, 논리적 거짓 상태는 논리 레벨 1이다.
본 발명의 적어도 하나의 실시예가 제 1 동작 모드 및 제 2 동작 모드를 갖는 데이터 처리 시스템을 제공한다. 그 데이터 처리 시스템은 제 1 신호를 수신하기 위한 제 1 입력을 갖는 중앙 처리 유닛을 포함한다. 제 1 신호의 제 1 상태가 분기 예측을 이용하는 제 1 동작 모드를 인에이블하고, 제 1 신호의 제 2 상태가 실질적으로 어떠한 분기 예측도 이용하지 않는 제 2 동작 모드를 인에이블한다. 또 다른 실시예에서, 제 1 동작 모드는 제 1 어드레스 셋업 타이밍이 되고, 제 2 동작 모드는 제 2 어드레스 셋업 타이밍이 된다. 제 2 어드레스 셋업 타이밍은 제 1 어드레스 셋업 타이밍과 비교되는 보다 이른 어드레스 유효 시간을 허용한다. 본 발명의 적어도 하나의 실시예에서, 데이터 처리 시스템은 연속 어드레스들과 타겟 어드레스들을 명령 페치 유닛과 관련 제어 회로 사이에서, 선택하기 위한 선택 회로를 포함한다.
본 발명의 적어도 하나의 실시예가 또한 어드레스 셋업 시간을 변경하기 위한 방법을 제공한다. 그 방법은 제 1 동작 모드 및 제 2 동작 모드를 갖는 데이터 처리 시스템에서 사용될 수 있다. 그 방법은 제 1 입력 신호를 수신하는 단계를 포함한다. 그 제 1 입력 신호가 제 1 상태를 갖는 경우, 그 시스템은 제 1 동작 모드로 동작하고, 제 1 어드레스 셋업 타이밍이 된다. 그 제 1 입력 신호가 제 2 상태를 갖는 경우, 그 시스템은 제 2 동작 모드로 동작하고, 제 1 어드레스 셋업 타이밍과 비교하여 보다 이른 유효 시간을 갖는 제 2 어드레스 셋업 타이밍이 된다.
도 1을 참조하면, 데이터 처리 시스템이 도시되며, 일반적으로 참조 번호(100)로 지정된다. 데이터 처리 시스템(100)은 중앙 처리 유닛(CPU)(102), 버스 인터페이스 유닛(BIU)(104), 및 메모리(106)를 포함한다. CPU(102)는 메모리(106)와 BIU(104)에 어드레스 요청들을 제공하기 위해서 결합된다. CPU(102)는 또한 페치 요청(fetch request)들과 같은 트랜잭션 요청(TREQ) 신호들을 메모리(106) 및 BIU(104)에 제공하기 위해 결합된다. 부가적으로 CPU(102)는 어드레스 예측 신호(APRED*)(130)를 수신하기 위해 결합된다. CPU(102)는 분기 어드레스 예측 인에이블 모드 또는 분기 어드레스 예측 디스에이블 모드 중 하나로 동작할 수 있도록 구성된다.
본 발명의 일실시예에서, 데이터 처리 시스템(100)은 분기 타겟 어드레스들로부터 페치하는데 사용되는 클럭 사이클들의 수를 감소시키기 위해서 분기 어드레스 예측을 사용하는 것이 바람직한 시스템의 일부로서 구현된다. 그러한 시스템에서, CPU(102)가 조건 분기 진술들의 결과를 예측하는 것이 바람직하다. CPU(102)가 조건 분기 진술의 결과를 정확하게 예측한다면, 그 다음의 소망되는 명령은 이미 CPU(102)에 로딩되고, 처리를 시작할 것이다. 그러나, CPU(102)가 조건 분기 진술의 결과들을 부정확하게 예측한다면, 그 예측된 데이터는 폐기되어야 하고, 정확한 정보가 CPU(102)에 로딩되어, 부정확한 분기 예측에 대한 효과적인 처리 패널티가 된다. 다른 예들에서, 데이터 처리 시스템(100)은 분기 예측을 사용하는 것이 바람직하지 못한 시스템에서 구현될 수 있다. 예를 들어, 그러한 시스템은 최소의 어드레스 셋업 시간이 요구되는 메모리들을 포함할 수 있다. 그러한 메모리들은 느린 메모리들만큼 정보를 액세스하기 위해 많은 클럭 사이클을 요구하지 않기 때문에, 그러한 시스템에 분기 예측 기술들을 사용함으로써 실현되는 시간 절약은 잘못된 분기 예측들에 기인하여 발생되는 패널티들을 오프셋(offset)할 수 없다. 사실상, 그러한 시스템에서 구현되는 데이터 처리 시스템(100)은 분기 예측을 사용하지 않고도 보다 빠르게 동작할 수 있다.
본 발명의 적어도 일실시예에서, 어드레스 예측 신호(APRED*)(130)는 두가지 다른 동작 모드들 간의 CPU(102)를 효과적으로 토글(toggle)한다. 제 1 동작 모드에서, 분기 어드레스 예측이 사용되는 반면, 제 2 동작 모드에서, 분기 어드레스 예측이 억제된다. 본 발명의 상세한 설명에서, 신호명(APRED*)의 '*'는 신호의 단언된 레벨이 로우(low)임을 나타낸다. 즉, 액티브 로우는 분기 어드레스 예측이 인에이블됨을 나타낸다. 그러나, 대안의 실시예들이 본 발명의 다양한 양상들을 구현하기 위해서 임의의 액티브 레벨의 신호를 이용할 수 있다. 본 발명의 일실시예에서, 어드레스 예측 제어 신호(APRED*)(130)는 데이터 처리 시스템(100)이 보다 큰 시스템에 집적되는 시간에 하이(high) 또는 로우(low) 중 하나로 묶여진다(tied). 그러나, 일실시예에서 CPU(102)의 동작 모드가 분기 예측을 이용하거나 또는 분기 예측을 이용하지 않도록 고정될지라도, 대안의 실시예에서, 어드레스 예측 제어 신호(APRED*)(130)는 CPU(102)의 모드가 소망되는 바와 같이 변경될 수 있도록 제어 레지스터 또는 다른 제어 회로에 의해 공급될 수 있다.
다음에 도 2를 참조하면, CPU(102)의 동작이 보다 상세하게 기재될 것이다. 도 1의 참조 번호와 같거나 유사하거나 동일한 도 2의 참조 번호들은 같거나 유사하거나 동일한 특징들 또는 소자들을 지시한다. 일실시예에서, CPU(102)는 실행 유닛(204), 디코드 제어(206), 명령 페치 유닛(220), 및 어드레스 멀티플렉서(226)를 포함한다. 실행 유닛(204)은 프로그램 명령들이 수행되고, 조건 분기 명령 조건들이 추정되는 CPU(102)의 부분이다. 실행 유닛(204)은 조건 발생기(202)를 포함하고, 조건 추정 명령의 결과들에 기초하여 참 또는 거짓 신호를 생성하는데 사용된다. 예를 들어, 본 발명의 적어도 하나의 실시예에서, 조건적인 추정 명령의 결과들이 지정된 조건이 일치됨을 지시한다면, 조건 발생기(202)는 참 신호를 생성한다. 다른 실시예들이 다른 논리를 사용할 수 있으며, 그래서 지정된 조건이 일치하지 않음을 나타내기 위해 거짓 신호를 생성할 수 있으며, 이처럼 그 논리 구성은 적절하게 사용된다. 조건 추정 명령의 일례는 그들이 동등한 지의 여부를 결정하기 위해서 두 데이터 항목들의 값들을 비교하고 이어서 결과의 조건(또는 조건 코드)을 생성하는 명령이다. 다수의 다른 비교 유형들 및 다른 조건 생성 명령들이 본 기술 분야에 잘 알려져 있다. 조건 분기 명령들은 조건 추정 명령의 특정값 또는 결과에 대해 테스트할 수 있으며, 또는 몇가지 경우들에서, 조건 분기 명령 자체의 일부로서 테스트되어야 할 조건을 포함할 수 있다. 테스트의 결과에 기초하여, 통상의 연속 명령 실행 시퀀스는 분기하기 위한 조건이 일치하는 경우 그 분기 명령의 타겟 위치로 다시 방향 전환될(redirected) 수 있다.
디코드 제어(206)는 실행 유닛(204)에 의한 실행에 대비하여 INSTRUCTION(212)을 디코드하고, BRANCH DECODE(210) 및 CONTROL(208)을 명령 페치 유닛(220)에 제공한다. 명령 페치 유닛(220)은 어드레스 제어(216), 홀딩 레지스터(242), 프로그램 카운터(244), 명령 레지스터(214), 및 가산기(246)를 포함한다.
어드레스 제어(216)는 CONDITION(218), CONTROL(208), BRANCH DECODE(210), APRED*(130)을 입력으로서 수신한다. 이러한 입력들 각각의 상태에 기초하여, ADDRESS SELECT(225)가 참 또는 거짓 상태로 설정된다. 일실시예에서, 참 상태는 멀티플렉서(226)가 ADDR(232)로서 SEQUENTIAL ADDR(222)을 출력할 것임을 나타내는 반면, 거짓 상태는 TARGET ADDR(224)이 ADDR(232)로서 출력되어야 함을 나타낸다. 어드레스 멀티플렉서(226)의 출력은 홀딩 레지스터(242)로 피드백된다. 일실시예에서, 홀딩 레지스터(242)에 저장된 값은 그후 SEQUENTIAL ADDR(222)을 생성하기 위해서 4만큼 증분된다. 가산기(246)는 분기 명령 옵코드(opcode)의 일부로부터 획득된 명령 레지스터(214)에 의해 제공되는 어드레스 오프셋에 프로그램 카운터(244)에 저장된 값을 추가함으로써 TARGET ADDR(224)을 결정한다. 이어서 멀티플렉서(226)는 ADDR SELECT(225)에 기초하여 SEQUENTIAL ADDR(222)와 TARGET ADDR(224) 사이에서 선택한다. 이어서, 그 선택된 어드레스는 ADDR(232)로서 출력된다.
DATA(234)는 CPU(102)에 의해 생성된 트랜잭션 요청(TREQ)(228) 및 ADDR(232)에 응답하여 CPU(102)에 의해 수신된다. TREQ(228) 및 ADDR(232)는 BIU(104) 및 MEMORY(106)에 제공된다(도 1 참조). BIU(104) 또는 MEMORY(106)는 ADDR(232)에 의해 지시된 요청된 메모리 어드레스로부터의 정보를 검색하고, 이어서 이러한 정보를 DATA(234)로서 CPU(102)에 전달한다. DATA(234)는 CPU(102)에 의해 수행된 명령들과, 그 명령들에 의해 지령된 임의의 요구되는 동작들을 수행하는데 사용될 데이터 둘 모두를 포함할 수 있다.
DATA(234)에 포함된 INSTRUCTION(212)과 같은 임의의 명령이 명령 레지스터(214)로 통과되고, 이는 차례대로 실행 유닛(204)에 의해 사용하기 위해 준비되어 있는 디코드 제어(206)에 INSTRUCTION(212)을 통과시킨다. 이어서, 디코드 제어(206)가 INSTRUCTION(212)에 의해 지정된 동작들이 수행되는 실행 유닛(204)에 INSTRUCTION(212)을 통과시킨다. INSTRUCTION(212)이 분기 명령을 포함할 경우, 디코드 제어(206)는 분기 명령을 디코딩하기 시작하고, 바람직하게 BRANCH DECODE(210)를 참으로 설정한다. 분기 디코드(210)는 어드레스 멀티플렉서(226)가 SEQUENTIAL ADDRESS(222)와 TRAGET ADDRESS(224) 사이에서 선택할 수 있도록 사용된 입력들 중 하나이다. 디코드 제어(206)는 또한 CONTROL(208)과 같은 다른 제어 신호들을 어드레스 제어(216)에 제공한다.
앞서 언급된 바와 같이, 조건 발생기(202)는 신호 CONDITION(218)을 생성하고, 이는 어드레스 멀티플렉서(226)에 의해 SEQUENTIAL ADDR(222) 또는 TARGET ADDR(224)의 선택을 제어하는데 사용되는 어드레스 제어(216)에 대한 입력들 중 하나이다. CONDITION(218)은 실행 유닛(204)에 의해 실행된 조건 생성 명령의 결과에 응답하여 생성된다. 분기 명령이 실행되는 경우, CONDITION(218)이 분기 조건 추정의 결과들, 및 분기가 다음의 연속 명령에 대해 취해지는 지 또는 실패로 끝나는 지의 여부를 결정하는데 사용된다. 어드레스 제어(216)는 분기 명령들의 결과(조건)의 예측에 기초하여, TARGET ADDR(224)를 ADDR(232)로서 출력하기 위해 어드레스 멀티플렉서(226)를 제어할 수 있다. 그러나, CPU(102)가 분기 예측 동작 모드로 동작하는 것을 억제하도록 어드레스 예측 제어 신호(APRED*)(130)가 구성되는 경우에는, 어드레스 멀티플렉서(226)가 ADDR(232)로서 타겟 어드레스(TARGET ADDR)(224)를 출력하는 것을 어드레스 제어(216)가 지시하는 것을 억제할 수 있다. 그러한 경우, 어드레스 제어(216)의 출력은 분기 명령의 조건이 추정될 때까지 유지될 것이며, 페치에 대한 정확한 다음 명령의 결정이 이루어진다. 그 정확한 명령은 분기 조건이 일치하는 경우, 그 분기 목적지(branch destination)에서의 타겟 명령 또는 분기 조건이 일치하지 않을 경우, 그 분기 명령(으로부터 연속하여)에 후속하는 명령 중 하나가 될 수 있다.
분기 어드레스 예측 모드가 인에이블될 때, 그 예측이 부정확한 것으로 결정되면, MISPREDICT(229)는 홀딩 레지스터(242)가 예측된 어드레스를 캡쳐하는 것을 방지하는 홀딩 레지스터(242)로 단언된다. 이는 최종의 연속 어드레스가 홀딩 레지스터(242)에 저장되고, 예측된 어드레스에 의해 오버라이팅되지(over-written) 않기 때문에, 미스프레딕션(misprediction)으로부터 회복하도록 허용한다. 일단, 그 프로세서가 미스프레딕션(misprediction)이 발생되었음이 결정되면, 그 프로세서는 ADDR(232)로서 구동되도록 SEQUENTIAL ADDR(222)를 선택하기 위해 ADDR SELECT(225)를 단언함으로써, 연속 명령 스트림을 갖는 명령 파이프라인(instruction pipeline)을 다시 채우기(refilling) 시작해야 한다.
이후 도 3을 참조하면, 어드레스 제어(216)에 대한 진리표가 도시되고, 일반적으로 참조 번호(300)로 표시된다. 어드레스 제어(216)가 어드레스 예측 인에이블 모드 또는 어드레스 예측 디스에이블 모드 중 하나로 동작할 수 있음을 주목하라. 행들(310 내지 340)은 어드레스 예측이 인에이블되는 경우, 어드레스 제어(216)의 기능(functioning)을 설명하는 반면, 행들(350 내지 380)은 어드레스 예측이 디스에이블되는 경우, 어드레스 제어(216)의 기능을 설명한다. 행들(350, 360)은 APRED*(130)가 취소되는 경우(어드레스 예측 디스에이블 모드를 나타내는 경우), 및 BRANCH DECODE가 거짓인 경우(어떠한 분기 명령도 수신되지 않음을 나타내는 경우)의 어드레스 제어(216)를 설명한다. 이들 두 경우들에서, 다음의 연속 어드레스가 CONDITION(218)의 상태에 무관하게 선택되는 것을 나타내는 ADDR SELECT(225)가 참이다. 행들(370, 380)은 APRED*(130)이 취소되는 경우 및 BRANCH DECODE가 참인 경우(분기 명령이 수신됨을 나타내는 경우)의 어드레스 제어(216)를 설명한다. 이러한 두 경우들에서, ADDR SELECT(225)의 상태는 CONDITION(218)에 의존하고, 분기가 행(380)에 도시된 바와 같이 취해질 경우, 거짓이 될 것이며, 분기가 행(370)에 도시된 바와 같이 취해지지 않을 경우, 참이 될 것이다. MISPREDICT(229)는 어떠한 어드레스 예측도 사용되지 않기 때문에, APRED*(130)이 취소되는 경우 거짓으로 남아야 한다. 그러나, APRED*(130)이 취소되는 경우, MISPREDICT(229)는 간단히 무시되거나 상관없는 것으로서 다루어 질 수 있다.
행들(310, 320)은 APRED*(130)가 단언되는 경우(어드레스 예측 인에이블 모드를 나타냄)와 BRANCH DECODE가 거짓인 경우(어떠한 분기 명령도 수신되지 않음을 나타냄), 어드레스 제어(216)를 설명한다. 이러한 두 경우들에서, ADDR SELECT(225)는 CONDITION(218)의 상태와 무관하게 참이다(다음의 연속 어드레스가 선택될 것임을 나타냄). 부가적으로, MISPREDICT(229)는 어떠한 분기 명령도 수신되지 않기 때문에 두 행들(310, 320) 둘 모두 거짓이다. 행들(330, 340)은 APRED*(130)이 단언되고 BRANCH DECODE가 참인 경우(분기 명령이 수신되었음을 나타내는 경우)의 어드레스 제어(216)를 설명한다. 이러한 두 경우들에서, ADDR SELECT(225)의 상태는 CONDITION(218)의 상태가 아직 알려진 바 없고, 예측이 행해져야 하기 때문에, 거짓이다. 행(330)은 부정확한 예측이 행해진 경우, MISPREDICT(229)가 참임을 설명한다.
다음으로 도 4를 참조하면, 본 발명의 일실시예에 따른 타이밍도가 도시된다. 도 4는 처리기 파이프라인의 세가지 단(stage)들(FETCH, DECODE, EXECUTE 단들)의 동작을 설명하지만, 조건 설정 명령 및 조건 분기 명령을 포함하는 일련의 명령들을 실행한다. 그 처리기 파이프라인은 각각의 명령이 연속하여 이러한 세가지 단들을 통해 흐르도록 동작한다. 도 4는 조건 설정 명령이 파이프라인(BRANCH-1)의 실행단에 있는 동안, 다음의 연속 명령인, 조건 분기 명령(BRANCH)이 파이프라인의 디코딩단에 있고, 페치가 분기 명령에 연속으로 후속하는 명령(BRANCH+1)을 발생시킨다. 도 4와 다음의 도면들에서, 교차-빗금친 부분(cross-hatched legend)이 그들이 현재 유효하지 않음(또는 완료됨)을 나타내기 위한 신호들 및 동작에 사용된다.
도 4의 타이밍도는 어드레스 예측이 인에이블되는 경우, 정확한 예측이 행해진 경우, 및 버블을 취한 단일 분기(single branch taken bubble)가 그 파이프라인에 도입되는 경우에 대한 처리기 타이밍을 설명한다. 그 처리기 파이프라인의 페치 단계 동안, 그 명령 어드레스(ADDR로 도시됨)는 다음의 액세스동안 구동되고, 현재 액세스 동안의 명령 데이터(DATA로 도시됨)는 CPU로 로딩된다. 이러한 및 다음의 예들에서, "BRANCH INST"로 표시된 명령 데이터는 조건 분기 명령을 포함하는 것으로 가정된다. 일단 로딩되면, 그 분기 명령은 디코딩되고, 사용될 분기 타겟 어드레스를 얻기 위해 계산이 수행된다.
분기 타겟 어드레스 계산이 완료된 후, 그 처리기는 분기 타겟 어드레스 계산(이것은 예측된 어드레스임)으로 표시된 메모리 위치로부터 정보에 대한 페치 요청을 보낸다. 이러한 페치 요청은 분기 명령 디코딩이 완료되는 시간과 거의 동시에 발생하며, 그 분기 조건 코드는 분석된다. 그러므로, 분기 타겟 어드레스 계산이 완료되고, 분기 타겟 어드레스가 페치된 후의 어느 때에, 그 조건 코드가 분기 타겟 어드레스로부터 페치하기 위해 행해지는 예측이 정확한 지의 여부를 나타낼 것이다. 그 어드레스가 유효화되는 시간(Tav, pred)은 클럭(K)의 하강(fall) 후 짧은 시간을 발생시킴을 주목하라. 도 4에 도시된 경우에서, 그 조건 코드가 분석되고, 정확한 예측이 수행됨(즉, 분기 타겟 어드레스 페치가 정확한 동작임)을 나타낸다. 이러한 예에 도입된 처리에 대한 지연만이 버블을 취한 단일 분기이며, 이는 분기 명령으로부터 계산된 타겟 어드레스가 명령 실행 스트림을 방향 전환하는데 사용되는 임의의 시간을 초래한다. 본 발명의 일실시예에서, 예측된 타겟 어드레스가 조건 추정에 의존하는 것이 아니라, 타겟 어드레스 계산(가산기(246)에 의해)이 완료되자마자 유효하고 어드레스 멀티플렉서(226)에 의해 구동되는 것이기 때문에, 유효 어드레스 출력(ADDR)에 대한 클럭(K)의 하강 에지(fall edge)로부터의 지연 Tav,pred가 조건 추정의 완료시까지 대기하는 것에 관련하여 최소화되며, 통상적으로 타겟 어드레스 계산의 결과보다 더 이후에 발생한다.
다음으로 도 5를 참조하면, 본 발명의 일실시예에 따른 또 다른 타이밍도가 도시된다. 도 4의 참조 부호들과 같거나 유사하거나 동일한 도 5의 참조 부호들은 같거나 유사하거나 동일한 특징들 또는 요소들을 나타낸다. 도 5에 도시된 타이밍 도는 어드레스 예측이 인에이블되는 경우에 대한 것이고, 부정확한 예측은 결국 스톨(stall) 사이클로 행해진다. 그 어드레스 유효 타이밍은 도 4에서와 같이 도 5에서도 동일함을 주목하라. 즉, 조건 추정에 의존하는 것이 아니라, 타겟 어드레스 계산(가산기(246)에 의해)이 완료되자마자 유효하고, 어드레스 멀티플렉서(226)에 의해 구동되는 것이다. 처리기 파이프라인의 페치 단계동안, 그 명령 어드레스 및 명령 데이터는 로딩된다. 디코딩 단계에서, 분기 명령이 디코딩되고, 분기 타겟 어드레스 계산의 결과들을 사용하도록 예측이 행해진다. 분기 타겟 어드레스 계산에 의해 귀환된 어드레스는 다음 클럭 사이클동안(조건 설정 명령이 실행되는 시간과 동일한 시간에 근접하여) 페치를 위해 사용된다. 조건 코드 계산의 완료시, 그 분기가 의존하는 조건 코드가 분석되므로, 분기 예측이 정확한지 아닌지의 여부를 알게 된다. 도 5는 분기 타겟 어드레스로부터의 명령을 페치할 시 부정확한 예측이 행해지는 경우의 타이밍을 설명한다. 조건 코드 추정의 완료시, 그 분기는 미스프레딕트된 것으로 결정되며, 그래서, 다음의(정확한) 연속 명령의 어드레스가 페치되어야 한다. 이러한 명령은 도 5에서 "BRANCH+2"로서 표시된다. 처리기 파이프라인에 기인하여, 분기 명령("BRANCH+1")으로부터 바로 연속하는 명령은 분기 명령 자체가 파이프라인의 디코드단으로 진입하는 동안 미리 페치된다. 분기 타겟 어드레스로부터의 페치시의 이러한 미스프레딕션은 그 예측된(잘못된) 어드레스를 페치할 시 사용되는 임의의 클럭 사이클들을 효과적으로 제거한다.
분기 타겟 어드레스 계산의 결과가 일반적으로 조건 생성에 앞서, 그러므로 분기 명령의 분석을 사용할 수 있기 때문에, 이른 어드레스 유효 타이밍이 분기 어 드레스 예측 모드로 동작하는 경우 획득됨을 도 4 및 도 5에서 확인할 수 있다. 또한, 분기 예측이 부정확한 경우, 이러한 이른 어드레스 유효 타이밍에 대한 패널티는 이후에 버려질 분기 타겟 어드레스로부터 제거되는 페치이다.
다음으로 도 6을 참조하면, 본 발명의 일실시에에 따른 타이밍도가 논의될 것이다. 도 4 및 도 5의 참조 부호와 같거나, 유사하거나 또는 동일한 도 6의 참조 부호는 같거나, 유사하거나 또는 동일한 요소들을 나타낸다. 도 6에 도시된 타이밍도는 어드레스 예측이 디스에이블되고(취소된 APRED*(130) 신호), 분기 명령이 수신되는 경우를 다룬다. 도 4 및 도 5에서와 같이, 페치 단계동안, 명령 어드레스 및 명령 데이터가 페치된다. 이어서, 그 분기 명령은 디코딩되고, 분기 타겟 어드레스가 계산된다. 그러나, 도 4 및 도 5에 도시된 타이밍과는 달리, 그 분기 타겟 어드레스는 즉시 페치되지 않는다. 대신에, 그 처리기는 조건 코드 계산이 완료된 후까지, 다음 어드레스가 페치되도록 선택하기 위해 대기하며, 분기 명령은 취해지거나 또는 취해지지 않도록 분석되며, 정확한 다음 페치 어드레스가 알려진다. 또한, 어드레스 예측이 인에이블되는, 도 4 및 도 5와는 달리, 유효 어드레스가 사용가능한 시간(Tav,nopred)은 (Tav,pred와 비교하여) 클럭 하강 시간으로부터 더 멀어진다. 적절한 다음 어드레스의 선택은 조건 코드의 게산의 완료 후까지, 발생하지 않으며, 통상적으로 분기 타겟 어드레스 계산보다 더 낮다. 조건 코드 계산이 완료할 때까지 대기함으로써 부정확한 어드레스 예측에 기인한 잘못된 어드레스를 페치하는 어떠한 가능성도 없게 된다.
다음으로 도 7을 참조하면, 본 발명의 적어도 하나의 실시예에 따른 타이밍도가 도시된다. 도 4 내지 도 6의 참조 부호들과 같거나 유사하거나 또는 동일한 도 7의 참조 번호들은 같거나, 유사하거나 또는 동일한 요소들 또는 특징들을 나타낸다. 다시, 명령 데이터 및 명령 어드레스는 페치 사이클동안 수신되며, 그 분기 명령은 디코딩되고, 분기 타겟 계산이 수행된다. 다시, 그 분기 타겟 어드레스 계산은 즉시 다음 메모리 어드레스를 페치하도록 사용되지는 않는다. 대신에, 그 조건 코드 계산이 완료된 후에, 페치되어야 할 적절한 메모리 어드레스(다음의 연속하는 메모리 위치 또는 그 계산된 타겟 어드레스 중 하나)가 선택된다. 이러한 방식으로, 어떠한 잘못된 예측들도 행해지지 않는다. 도 7에서, 그 분기 조건이 일치하지 않으므로, 그 분기는 취해지지 않는 것으로 분석하고, 정확한 다음의 페치 어드레스가 명령 "BRABCH+2"이 된다. 이러한 연속 어드레스는 조건 코드 계산의 완료에 후속하여 구동된다.
그러므로, 인에이블되는 어드레스 예측을 갖는 동작의 모드와 디스에이블되는 어드레스 예측을 갖는 동작의 모드 간의 어드레스 셋업 타이밍의 차이는 분명해진다. 어드레스 예측이 인에이블되면, 보다 이른 어드레스 유효 시간이 어드레스 예측이 디스에이블되는 경우와 비교하여 제공된다. 즉, Tav,pred는 일반적으로 Tav,nopred이하이다. 메모리 액세스 타이밍(유효 데이터를 귀환시키기 위해 메모리 어드레스에 요구되는 시간의 양) 요구조건들은 어드레스 예측 인에이블 모드에서보다 넌-어드레스 예측 모드에서 더 엄격하다. 즉, 메모리 장치에 대한 어드레스 입력들이 클럭 사이클에서 이후 유효하기 때문에, 어드레스 예측 억제 모드에 관련하여 사용되는 메모리들은 분기 어드레스 예측 모드에 사용되는 메모리들보다 더 빠르게 유효 데이터를 귀환시킬 수 있어야 한다. 대안의 실시예들은 어드레스 예측 인에이블 모드에서 보다 더 적극적인 형태의 어드레스 예측을 수행하고, 어드레스 예측이 디스에이블되는 모드에서 보다 덜 적극적인 형태의 어드레스 예측을 수행한다. 이러한 실시예에서, 보다 더 적극적인 형태의 어드레스 예측이 보다 덜 적극적인 형태와 비교하여 일반적으로 보다 이른 어드레스 유효 시간을 초래할 것이다. 보다 덜 적극적인 형태는 보다 적은 분기 예측 또는 실질적으로 어떠한 분기 예측도 없이 수행될 수 있으며, 그러므로, 보다 늦은 어드레스 유효 시간이 된다. 그러므로, 도 4 내지 도 7과 관련하여 기재된 이점들은 모두 함께 분기 예측을 간단히 인에이블 또는 디스에이블함으로써 얻어진다기보다는 다른 레벨들의 분기 예측을 허용함으로써 얻어질 수 있다.
어드레스 예측이 사용되지 않는 경우에는, 조건 분기 명령이 실행되는 동안, 정확한 다음 어드레스를 페치하는데 사용되는 클럭 사이클들의 수는 그 분기가 취해지든 취해지지 않든 동일한 반면, 그 어드레스 예측 인에이블 모드에서는, 그 사용된 클럭 사이클들의 수는 정확한 예측이 행해지는지 또는 행해지지 않는지에 따라서 변동한다.
메모리 어드레스들이 부정확한 예측에 대해 대응하는 패널티를 갖고 보다 일찍 생성되는 분기 어드레스 예측 모드 또는 어드레스 지연이 지연되지 않는, 비-예측 모드 중 하나로 동작하기 위해 유연성을 제공함으로써, 어떠한 부가적인 명령 페치들도 수행되지 않으며, 본 발명의 실시예들은 종래 기술의 데이터 처리 시스템들보다 더 넓은 범위의 응용들에 적절한 이점을 허용한다. 예측 정확성 및 메모리 액세스 시간 트레이드오프(time tradeoff)들은 기재된 데이터 처리 시스템의 동작의 최적화를 허용하여 사용가능하다.
앞서 말한 설명에서, 본 발명은 특정 실시예들에 관해 설명되었다. 그러나, 당업자들은 첨부 청구항들에서 설명되는 바와 같이 본 발명의 범위로부터 벗어나지 않고 다양한 변경들 및 변화들이 행해질 수 있음을 이해해야 한다. 따라서, 명세서 및 도면들은 제한적인 의미로서보다 설명적인 것으로 고려되어야 하며, 그러한 모든 변경들이 본 발명의 범위 내에 포함되도록 의도된다.
이익들, 다른 이점들, 및 문제들에 대한 해결책들이 특정 실시예들에 관해 앞서 기재되었다. 그러나, 임의의 이익, 이점, 또는 해결책이 발생하여 보다 더 표명되도록 할 수 있는 이익들, 이점들, 문제점들의 해결책들, 및 임의의 요소(들)이 임의의 청구항들 또는 모든 청구항들의 중요한, 요구되는, 또는 필수적인 특징들 또는 소자들로서 추론되어서는 안된다. 본 명세서에 사용된 바와 같이, 용어들 "포함하다" 또는 그 용어의 임의의 다른 변형은 비-배타적인(non-exclusive) 포함까지 커버하도록 의도된 것이며, 따라서 요소들의 리스트를 포함하는 처리, 방법, 물품 또는 장치가 그러한 소자들을 포함할뿐 아니라 그러한 처리, 방법, 물품, 또는 장치에 대해 고유의 또는 명백히 리스트되지 않은 다른 소자들까지도 포함할 수 있다.

Claims (10)

  1. 제 1 및 제 2 동작 모드를 갖는 데이터 처리 시스템(100)에 있어서,
    제 1 신호(130)를 수신하기 위한 제 1 입력을 갖는 중앙 처리 유닛(102)으로서, 상기 제 1 신호의 제 1 상태가 상기 제 1 동작 모드를 인에이블하고, 상기 제 1 신호의 제 2 상태가 상기 제 2 동작 모드를 인에이블하는, 상기 중앙 처리 유닛(102)을 포함하고,
    상기 제 1 동작 모드는 분기 예측(branch prediction)을 이용하고,
    상기 제 2 동작 모드는 분기 예측을 이용하지 않으며,
    상기 중앙 처리 유닛은,
    연속 어드레스(222)를 수신하기 위한 제 1 입력, 타겟 어드레스(224)를 수신하기 위한 제 2 입력, 및 상기 연속 어드레스를 수신하기 위한 제 1 입력과 상기 제 2 입력 중에서 선택하도록 제어 신호(225)를 수신하기 위한 제 3 입력과, 상기 연속 어드레스를 수신하기 위한 제 1 입력과 상기 제 2 입력 중 하나를 제공하기 위한 출력을 갖는 선택 회로(226);
    상기 선택 회로에 결합되어, 상기 연속 어드레스를 제공하기 위한 제 1 출력과, 상기 타겟 어드레스를 제공하기 위한 제 2 출력을 갖는 명령 페치 유닛(220);
    상기 선택 회로에 결합되어, 상기 제 1 신호를 수신하기 위한 제 1 입력, 조건 신호(218)를 수신하기 위한 제 2 입력, 및 분기 디코드 신호(210)을 수신하기 위한 제 3 입력을 가지고, 상기 제 1 신호, 상기 조건 신호, 및 상기 분기 디코드 신호 중 적어도 하나에 기초하여 상기 제어 신호를 제공하기 위한 제 1 출력을 갖는 제어 회로(216)를 포함하는, 데이터 처리 시스템(100).
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제 1 및 제 2 동작 모드를 갖는 데이터 처리 시스템에 있어서,
    제 1 신호를 수신하기 위한 제 1 입력으로서, 상기 제 1 신호의 제 1 상태가 상기 제 1 동작 모드를 인에이블하고, 상기 제 1 신호의 제 2 상태가 상기 제 2 동작 모드를 인에이블하는, 상기 제 1 입력을 포함하고,
    상기 제 1 동작 모드는 첫번째 구동된 어드레스에 대응하는 제 1 어드레스 유효 시간을 허용하고, 상기 제 1 어드레스 유효 시간은 상기 제 1 어드레스가 구동되는 클럭 사이클 내에서 제 1 메모리 액세스 시간을 제공하며,
    상기 제 2 동작 모드는 두번째 구동된 어드레스에 대응하는 제 2 어드레스 유효 시간을 허용하고, 상기 제 2 어드레스 유효 시간은 상기 제 2 어드레스가 구동되는 클럭 사이클 내에서 상기 제 1 메모리 액세스 시간과 비교하여 부가적인 메모리 액세스 시간을 제공하는, 데이터 처리 시스템.
  6. 삭제
  7. 삭제
  8. 제 1 및 제 2 동작 모드를 갖는 데이터 처리 시스템에서, 어드레스 셋업 시간을 변경하기 위한 방법에 있어서,
    제 1 입력 신호를 수신하는 단계,
    상기 제 1 입력 신호가 제 1 상태를 갖는 경우, 상기 제 1 동작 모드로 동작하는 단계로서, 상기 제 1 동작 모드는 첫번째 구동된 어드레스에 대응하는 제 1 어드레스 유효 시간을 허용하고, 상기 제 1 어드레스 유효 시간은 상기 제 1 어드레스가 구동되는 클럭 사이클 내에서 제 1 메모리 액세스 시간을 제공하는, 상기 제 1 동작 모드로 동작하는 단계,
    상기 제 1 입력 신호가 제 2 상태를 갖는 경우, 상기 제 2 동작 모드로 동작하는 단계로서, 상기 제 2 동작 모드는 두번째 구동된 어드레스에 대응하는 제 2 어드레스 유효 시간을 허용하고, 상기 제 2 어드레스 유효 시간은 상기 제 2 어드레스가 구동되는 클럭 사이클 내에서 상기 제 1 메모리 액세스 시간과 비교하여 부가적인 메모리 액세스 시간을 제공하는, 상기 제 2 동작 모드로 동작하는 단계를 포함하는, 어드레스 셋업 시간 변경 방법.
  9. 제 8 항에 있어서,
    상기 제 1 동작 모드는 제 1 레벨의 분기 예측을 이용하고, 상기 제 2 동작 모드는 제 2 레벨의 분기 예측을 이용하는, 어드레스 셋업 시간 변경 방법.
  10. 삭제
KR1020027016869A 2000-06-12 2001-05-10 선택적인 분기 예측을 갖는 처리기 KR100888356B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/592,449 2000-06-12
US09/592,449 US6859875B1 (en) 2000-06-12 2000-06-12 Processor having selective branch prediction
PCT/US2001/015042 WO2001097021A1 (en) 2000-06-12 2001-05-10 Processor having selective branch prediction

Publications (2)

Publication Number Publication Date
KR20030007952A KR20030007952A (ko) 2003-01-23
KR100888356B1 true KR100888356B1 (ko) 2009-03-11

Family

ID=24370679

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027016869A KR100888356B1 (ko) 2000-06-12 2001-05-10 선택적인 분기 예측을 갖는 처리기

Country Status (7)

Country Link
US (1) US6859875B1 (ko)
EP (1) EP1295202A1 (ko)
JP (1) JP2004503865A (ko)
KR (1) KR100888356B1 (ko)
AU (1) AU2001263026A1 (ko)
TW (1) TW569139B (ko)
WO (1) WO2001097021A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100980076B1 (ko) 2003-10-24 2010-09-06 삼성전자주식회사 저전력 분기 예측 시스템 및 분기 예측 방법
KR100591769B1 (ko) * 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
US7725695B2 (en) * 2005-05-31 2010-05-25 Arm Limited Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch
US7376807B2 (en) * 2006-02-23 2008-05-20 Freescale Semiconductor, Inc. Data processing system having address translation bypass and method therefor
US7401201B2 (en) * 2006-04-28 2008-07-15 Freescale Semiconductor, Inc. Processor and method for altering address translation
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US8521996B2 (en) * 2009-02-12 2013-08-27 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
US8131984B2 (en) * 2009-02-12 2012-03-06 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state
KR102526610B1 (ko) * 2015-09-16 2023-04-28 엘지디스플레이 주식회사 메모리 제어장치 및 그 제어방법과 이를 포함한 유기발광 표시장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02283595A (ja) * 1989-04-25 1990-11-21 Suzuki Motor Corp 小型艇の操舵装置
JPH0893756A (ja) * 1994-09-20 1996-04-09 Ntn Corp 円筒ころ軸受

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH081599B2 (ja) * 1988-02-24 1996-01-10 三菱電機株式会社 データ処理装置
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
US5835967A (en) * 1993-10-18 1998-11-10 Cyrix Corporation Adjusting prefetch size based on source of prefetch address
TW261676B (ko) 1993-11-02 1995-11-01 Motorola Inc
IE940855A1 (en) 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
US5996071A (en) * 1995-12-15 1999-11-30 Via-Cyrix, Inc. Detecting self-modifying code in a pipelined processor with branch processing by comparing latched store address to subsequent target address
US5701448A (en) * 1995-12-15 1997-12-23 Cyrix Corporation Detecting segment limit violations for branch target when the branch unit does not supply the linear address
US5752014A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US5901307A (en) * 1996-07-22 1999-05-04 International Business Machines Corporation Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US5949995A (en) * 1996-08-02 1999-09-07 Freeman; Jackie Andrew Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5951678A (en) 1997-07-25 1999-09-14 Motorola, Inc. Method and apparatus for controlling conditional branch execution in a data processor
JPH1185515A (ja) * 1997-09-10 1999-03-30 Ricoh Co Ltd マイクロプロセッサ
US6151672A (en) 1998-02-23 2000-11-21 Hewlett-Packard Company Methods and apparatus for reducing interference in a branch history table of a microprocessor
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02283595A (ja) * 1989-04-25 1990-11-21 Suzuki Motor Corp 小型艇の操舵装置
JPH0893756A (ja) * 1994-09-20 1996-04-09 Ntn Corp 円筒ころ軸受

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"Branch Prediction Assist", IBM Technical Disclosure Bulletin, IBM Corp. New York, US, Vol. 32, No.4B, 1 Sept. 1989, pp 225-226
영국공개특허공보 제2283595호
유럽공개특허공보 제893756호

Also Published As

Publication number Publication date
KR20030007952A (ko) 2003-01-23
EP1295202A1 (en) 2003-03-26
JP2004503865A (ja) 2004-02-05
AU2001263026A1 (en) 2001-12-24
TW569139B (en) 2004-01-01
US6859875B1 (en) 2005-02-22
WO2001097021A1 (en) 2001-12-20

Similar Documents

Publication Publication Date Title
US8060730B2 (en) Selective MISR data accumulation during exception processing
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
US7278012B2 (en) Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
CA1165453A (en) Microcode instruction sequencing in pipeline processors
US6189091B1 (en) Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US6550004B1 (en) Hybrid branch predictor with improved selector table update mechanism
US20080052500A1 (en) Processor with branch predictor
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JP2001142705A (ja) プロセッサおよびマイクロプロセッサ
JPH1124929A (ja) 演算処理装置およびその方法
US8028180B2 (en) Method and system for power conservation in a hierarchical branch predictor
US6230261B1 (en) Method and apparatus for predicting conditional branch instruction outcome based on branch condition test type
KR100888356B1 (ko) 선택적인 분기 예측을 갖는 처리기
KR100570906B1 (ko) 데이터처리기에서조건부분기실행을제어하기위한장치및방법
US20040225866A1 (en) Branch prediction in a data processing system
JP2020119504A (ja) 分岐予測器
US6948054B2 (en) Simple branch prediction and misprediction recovery method
IE940854A1 (en) Data processor with branch prediction and method of¹operation
JP3759729B2 (ja) スペキュレーティブ・レジスタの調整
US10318303B2 (en) Method and apparatus for augmentation and disambiguation of branch history in pipelined branch predictors
US20020166042A1 (en) Speculative branch target allocation
US10990403B1 (en) Predicting an outcome of an instruction following a flush
US11157284B1 (en) Predicting an outcome of an instruction following a flush
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
US7124281B1 (en) Processing system having sequential address indicator signals

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130225

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140224

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150225

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160223

Year of fee payment: 8