KR100570906B1 - 데이터처리기에서조건부분기실행을제어하기위한장치및방법 - Google Patents

데이터처리기에서조건부분기실행을제어하기위한장치및방법 Download PDF

Info

Publication number
KR100570906B1
KR100570906B1 KR1019980029786A KR19980029786A KR100570906B1 KR 100570906 B1 KR100570906 B1 KR 100570906B1 KR 1019980029786 A KR1019980029786 A KR 1019980029786A KR 19980029786 A KR19980029786 A KR 19980029786A KR 100570906 B1 KR100570906 B1 KR 100570906B1
Authority
KR
South Korea
Prior art keywords
instruction
unit
control
instructions
command
Prior art date
Application number
KR1019980029786A
Other languages
English (en)
Other versions
KR19990014132A (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 KR19990014132A publication Critical patent/KR19990014132A/ko
Application granted granted Critical
Publication of KR100570906B1 publication Critical patent/KR100570906B1/ko

Links

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
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

Abstract

파이프라인 데이터 처리 시스템(10)은 순방향 분기 예측 및 역방향 분기 예측뿐만 아니라 여러 분기 시나리오들에 대한 명령들의 프리페치(prefetch) 및 조건부 실행을 선택적으로 제어하기 위한 방식(scheme)을 포함한다. 3 비트의 프로그래머 액세스 가능한 제어 필드(19)는 순방향 및 역방향 조건부 분기들 둘 다에 대한 명령들의 프리페치의 독립적인 제어를 허용함으로써 조건부 분기 명령과 함께 사용될 동작(activity)의 형태를 특정하기 위해 사용된다. 또한, 조건부 실행에 대한 제어는 순방향 분기 및 역방향 분기들 둘 다에 대해 제공된다. 순방향 및 역방향 분기 예측 및 조건부 실행에 대한 독립적인 제어를 허용함으로써, 파이프라인 정지(stall)가 감소될 수 있고 보다 유연한 프로그램 실행이 상이한 환경에 대해 성취될 수 있다.

Description

데이터 프로세서에서 조건부 분기 실행을 제어하기 위한 방법 및 장치
기술분야
본 발명은 데이터 처리에 관한 것으로, 특히 데이터 프로세서에서 조건부 분기 실행(conditional branch execution)을 제어하기 위한 방법 및 장치에 관한 것이다.
배경 기술
데이터 처리 시스템은 프로그램 실행을 위한 다수의 단계(stages)를 포함하는 경우 "파이프라인화(pipelined)"된다. 예를 들면, 4 단계의 파이프라인은 페치 단계(fetch stage), 디코드 단계, 실행 단계 및 재기록(write back) 단계를 포함한다. 페치 단계동안, 다음 명령이 메모리 위치로부터 검색된다. 그 다음 명령이 디코드되고, 실행되며, 메모리 위치, 또는 레지스터에 다시 기록된다. 이들 단계 각각은 완료를 위해 하나 이상의 클록 사이클을 필요로 할 것이다. 또한, 첫 번째 명령이 디코딩되는 것과 동시에, 두 번째 명령이 페치되고, 첫 번째 명령이 실행되는 동안, 두 번째 명령이 디코딩되는 식으로 계속 수행되어, "파이프라인"은 가득 찬 상태로 유지된다.
파이프라인 데이터 처리 시스템은 실행되는 프로그램이 흐름 변화의 명령을 포함하는 경우 실행의 불이익을 초래할 것이다. 흐름의 변화가 발생하게 되면, 데이터 처리 시스템은 명령 파이프라인을 다시 채우기 위해 프로그램 흐름의 실행을 중지해야 할 것이다.
흐름의 변화가 초래되는 경우 실행 효과를 향상시키기 위해 사용되는 기법에는 분기 예측(branch prediction), 프리페치 및 조건부 실행과 같은 여러 방식이 있다. 그러나 이들 많은 방식은 데이터 처리 시스템을 복잡하게 하고, 모든 환경에서 다 효과적인 것은 아닐 수 있다. 따라서 상이한 환경에 대해 적응 가능한 분기 예측 목적지 프리페치 및 조건부 실행에 대한 제어를 제공할 필요가 있다.
일반적으로, 본 발명은 순방향 분기 예측 및 역방향 분기 예측뿐만 아니라 여러 분기 시나리오들에 대한 명령들의 프리페치 및 조건부 실행을 선택적으로 제어하기 위한 데이터 처리 시스템 및 방법을 제공한다. 3 비트의 프로그래머 액세스 가능한 제어 필드는 순방향 및 역방향 조건부 분기들 둘 다에 대한 명령들의 프리페치의 독립적인 제어를 허용함으로써 조건부 분기 명령과 함께 사용될 동작의 형태를 특정하기 위해 사용된다. 또한, 조건부 실행에 대한 제어는 순방향 분기 및 역방향 분기들 둘 다에 대해 제공된다. 순방향 및 역방향 분기 예측 및 조건부 실행에 대한 독립적인 제어를 허용함으로써, 파이프라인 정지가 감소될 수 있고 보다 유연한 프로그램 실행이 상이한 환경에 대해 성취될 수 있다. 특히, 본 발명은 첨부된 도면을 참조로 더욱 상세히 설명될 것이다.
도 1은 본 발명에 다른 파이프라인 데이터 처리 시스템(10)의 블록도이다. 데이터 처리 시스템(10)은 메모리(12)와 데이터 프로세서(14)를 포함한다. 데이터프로세서(14)는 어드레스 버퍼(16), 어드레스 멀티플렉서(24), 제어 유닛(18), 분기 제어 비트 필드(19), 명령 페치 유닛(26), 명령 디코더(32), 실행 유닛(40), 버스 인터페이스 유닛(23), 데이터 입력 버퍼(20), 및 데이터 출력 버퍼(22)를 포함한다. 명령 페치 유닛(26)은 프로그램 카운터 계산 블록(28) 및 명령 버퍼(30)를 포함한다.
메모리(12)는 어드레스를 수신하기 위해 어드레스 버스에 연결되고, 데이터를 수신 및 제공하기 위해 데이터 버스에 연결된다. 메모리(12)는 정적 랜덤 액세스 메모리(SRAMs) 및 동적 랜덤 액세스 메모리(DRAMs)와 같은 휘발성 메모리나, 또는 전기적으로 프로그램 가능한 판독 전용 메모리(EPROM) 및 플래시 메모리(flash memory)와 같은 비휘발성 메모리를 포함하는 종래의 임의의 메모리일 수 있다. 또한, 메모리(12)는 프로세서(14)와 동일한 집적 회로 상에 있을 수도 있거나, 또는 프로세서(14) 외부에 있을 수도 있다. 어드레스 멀티플렉서(24)는 실행 유닛(40)으로부터 피연산자 어드레스를 수신하기 위한 제 1 복수의 입력 단자들, 명령 페치 유닛(26)으로부터 명령 어드레스를 수신하기 위한 제 2 복수의 입력 단자들, 및 어드레스 버퍼(16)에 연결된 복수의 출력 단자들을 구비한다. 어드레스 멀티플렉서(24)는 피연산자 어드레스 또는 명령 어드레스 중 하나를 메모리(12)로 향하게 하기 위해 버스 인터페이스 유닛(23)에 의해 제어된다. 명령 페치 유닛(26)은 메모리(12)로부터 선택된 명령을 순차적으로 페치하기 위해 데이터 입력 버퍼(20)에 연결된다.
명령 디코더(32)는 버스(42 및 44)를 통해 명령 페치 유닛(26)에 연결된다. 명령 페치 유닛(26)은 명령 인코딩 값을 얻기 위해 명령 어드레스를 제공한다. 명령 디코더(32)는 명령 페치 유닛(26)으로부터 명령 인코딩 값을 수신하고, 상기 명령 인코딩 값을 데이터 프로세서(14)에 의해 실행될 수 있는 포맷으로 변환함으로써 상기 명령 인코딩 값을 준비하고, 명령 페치 유닛(26)에 의해 페치된 명령을 선택적으로 디코딩한다. 명령 디코더(32)는 버스(42 및 44)를 통해 실행 유닛(40)에 연결된다. 실행 유닛(40)은 메모리(12)로부터 데이터를 수신하기 위해 데이터 입력 버퍼(20)에 연결된다. 또한, 실행 유닛(40)은 메모리(12)로 데이터를 제공하기 위해 데이터 출력 버퍼(22)에 연결된다. 실행 유닛(40)은 명령 디코더(32)에 의해 디코딩된 명령을 선택적으로 실행하고, 그 결과를 데이터 출력 버퍼(22)에 제공한다. 실행 유닛(40)은, 예를 들면, 산술 논리 유닛(ALU)을 포함할 것이다.
버스 인터페이스 유닛(23)은 피연산자 액세스 요구를 명령 유닛으로부터 수신하고, 이에 응답하여, 처리될 데이터를 액세스하기 위해서 액세스 제어 신호를 메모리(12)로 제공한다. 또한, 버스 인터페이스 유닛(23)은 명령에 대해 메모리를 액세스하기 위한 명령 액세스 요구를 수신하기 위해 명령 페치 유닛(26)에 연결된다. 버스 인터페이스 유닛(23)은 데이터 처리 시스템(10)에서 명령 배열을 조정하기 위해 버스(54)를 통해 제어 유닛(18)에 양 방향으로 연결된다.
제어 유닛(18)은 명령 패치 유닛(26)의 동작을 제어하기 위해 제어 버스(48)를 통해 명령 페치 유닛(26)에 양 방향으로 연결된다. 제어 유닛(18)은 제어 버스(50)를 통해 명령 디코더(32)에 양 방향으로 연결되고 제어 유닛(18)은 제어 버스(52)를 통해 실행 유닛(40)에 양 방향으로 연결된다. 실행 유닛(40)은 명령 페치 유닛(26)으로 조건 정보를 제공하기 위해 조건 버스(condition bus; 46)를 통해 명령 페치 유닛(26)에 연결된다. 도시된 실시예에 있어서, 분기 제어 필드(19)는 순방향 및 역방향 분기 프리페치 및 조건부 명령 실행을 제어하기 위한 정책을 선택하는 정보를 저장하는 제어 유닛(18) 내의 레지스터의 3 비트의 제어 필드이다. 다른 실시예에 있어서, 제어 필드는 하나 이상의 비트를 포함할 것이다. 제어 필드(19)는 명령 디코더(32)에 의해 검출되는 조건부 흐름 명령(조건부 분기 명령)에 응답하여 미리 결정된 시간동안 명령 페치 유닛(26)을 디스에이블링(disable)함으로써 명령 페치 유닛(26)을 직접 제어한다. 제어 유닛은 분기 제어 필드(19)에 저장된 값에 응답하여 명령 페치 유닛(26)으로 제어 신호를 제공한다. 분기 제어 필드(19)는 조건부 분기 명령이 충돌되었다고 명령 디코더(32)가 결정하는 경우, 명령 페치 유닛(26)이 다른 명령을 페치하는 여러 동작 모드 중 한 모드를 결정한다 (도 12 참조). 동작 모드는 조건부 분기 명령에 의해 나타내어지는 명령 흐름(역방향 분기 또는 순방향 분기)의 방향에 의해 결정된다. 조건부 흐름 명령은, 예를 들면, 트랩(trap) 또는 점프 명령일 것이다.
명령 페치 유닛(26)을 디스에이블링하는 것은 미리 결정된 시간이 경과할 때까지 페치 동작을 완전히 방지함으로써 데이터 처리 시스템(10)의 오버헤드(overhead)를 감소한다. 미리 결정된 시간이 경과한 후, 명령 페치 유닛(26)은 자동적으로 동작을 재개한다. 명령 페치 유닛(26)은 순방향 및 역방향 분기 둘 다에 대해서 또한 디스에이블링될 것이다.
데이터 처리 시스템(10)은 4 단계 파이프라인에서 명령을 실행한다. 상기 4 단계는 페치 단계, 디코딩 단계, 실행 단계, 및 재기록 단계를 포함한다. 명령 페치 단계동안, 명령은, 메모리(12)와 같은 메모리로부터 검색된다. 그 후 명령는 명령 디코더(32)에서 디코딩된다. 디코딩된 명령는 버스(42)를 통해 실행 유닛(40)으로 제공된다. 실행 유닛(40)은 상기 명령을 실행하고 그 다음 그 결과를 데이터 출력 버퍼(22)를 통해 메모리(12)에 다시 기록한다.
도 2는 본 발명을 설명하는데 유익한 일련의 명령을 도시한다. 본 발명을 설명하기 위해, 명령의 형태는 중요하지 않다. 따라서 각각의 명령 번호와 관련된 명령는 단일 문자로 표기된다. 도 2의 명령의 실행 중에, 데이터 처리 시스템(10)은, 상기 데이터 시스템(10)이 예를 들면 조건부 분기 명령와 같이, 다음의 순차 명령이 아닌 다른 명령으로 가는 것을 필요로 하는 명령을 만날 때까지 각각의 명령을 순차적으로 실행할 것이다. 도 2에 있어서, 명령 번호(4)는 "V"로 명명된 조건부 분기 명령을 나타낸다. 명령(V)를 실행한 후, 데이터 처리 시스템(10)은 시퀀스의 다음 명령을 수행하거나 또는 명령(V)를 실행한 후 얻어진 결과에 기초해서 명령(W)으로 가야만 된다. 조건부 흐름은 명령(V)에서 발원하는 곡선모양의 화살표로 표현된다. 도 2에 도시된 일련의 명령을 보다 효율적으로 실행하기 위해서, 데이터 처리 시스템(10)은 분기 제어 필드(19)에 포함된 소정의 제어 정보에 기초해서 분기가 명령(X)으로 향하는지 명령(W)으로 향하는지의 예측을 시도할 것이다. 분기 예측을 수행할 것인지 아닌지를 결정하는 것 외에도, 분기 제어 필드(19)는 예측된 다음 명령 단계의 조건부 실행이 수행되는지 아닌지를 결정하기 위해 또한 사용될 수 있다.
분기 제어 필드(19)는 조건부 흐름 명령과 관련된 프리페치, 예측 및 조건부 실행에 대한 독립적인 제어를 허용한다. 본 발명의 한 양상에 따르면, 분기 제어 필드(19)의 제어 비트에 기초해서, 실행되고 있는 현재의 명령에서 조건이 결정될 때까지 다음 명령는 페치되지 않는다. 다음 명령가 페치되지 않기 때문에, 데이터 처리 시스템(10)에서 나중에 버려질 명령을 프리페치함으로써 유발되는 지연이 감소된다. 또한, 불필요한 프리페치 및 실행을 제거함으로써 전력 소모가 감소될 것이다. 또한, 데이터 처리 시스템은 명령을 더 빠르고 더 효율적으로 실행한다. 또한, 본 발명은 사용자로 하여금 순방향 분기가 아니라 역방향 분기를 프리페치하도록 하는 것이 파이프라인 프로세서에서 특정 프로그램이 더 효율적으로 실행되게 한다면, 이것을 선택하게 함으로써 유연성을 증가시킨다.
도 3 내지 도 11은 본 발명에 따른 분기 제어를 설명하기 위한 여러 경우를 나타내는 타이밍도이다. 도 3 내지 도 11에 도시된 실시예는 설명의 목적을 위해 도 2의 명령 흐름을 사용한다.
도 3은 데이터 처리 시스템(10)에서 순방향 또는 역방향 분기 어디에서도 프리페치이 실행되지 않는 CASE 1의 타이밍도이다. 도 3에 있어서, 데이터 프로세서(10)의 4 파이프라인 단계 각각이 도시된다. 제 2의 클록 사이클 동안, 도 2에서 명령 번호가 2인 명령(T)가 페치된다. 제 2의 클록 사이클 동안, 명령(U)가 페치되고, 명령(U)가 페치되는 것과 동시에, 명령(T)가 디코딩된다. 클록 사이클 3에서, 명령(V)가 페치되고 동시에 명령(U)이 디코딩된다. 명령(V)는 명령(X) 또는 명령(W)를 지시하는 화살표에 의해 나타내어진 바와 같이 순방향 분기 명령으로 도시되었다. 분기 제어 필드(19)(도 1)에서 제어 비트가 어떠한 순방향 분기도 프리페치되지 않을 것임을 나타내면, 클록 사이클 4에서, 프로세서(10)는 "정지(stall)"라는 단어에 의해 나타내어진 바와 같이 다음 번 명령을 프리페치하지 않을 것이다. 그러나 명령(V)은 디코딩될 것이고 명령(U)은 실행될 것인데, 그 이유는 이들이 파이프라인의 더 뒤의 단계에 있기 때문이다. 클록 사이클 4에서의 정지는 명령(X) 또는 명령(W)이 다음 번 클록 사이클에서 페치될 것인지를 알기 위해서 명령(V)으로 하여금 결정하도록 한다. 클록 사이클의 끝에서 나타내어진 바와 같이 일단 조건이 결정되면, 적절한 명령가 페치된다. CASE 1에 적용되는 제어 필드 값은 도 12를 참조하라.
도 4는 프리페치 목적지가 올바르게 예측되는 CASE 2의 타이밍도를 도시한다. 설명의 목적을 위해서, 도 4는 역방향 분기를 도시한다. 그러나 도 4는 순방향 분기에도 동등하게 적용될 것이다. 클록 사이클 1에서, 도 2에 도시된 명령(Z)이 페치된다. 클록 사이클 2에서, 다음 순서의 명령, 즉 명령(W)가 페치되고 동시에 명령(Z)는 디코딩된다. 클록 사이클 3에서, 명령(Q)가 페치되고, 명령(W)는 디코딩되며, 명령(Z)는 실행된다. 명령(Q)는 다음 명령이 명령(S) 또는 명령(R)이 될 수 있는 조건부 역방향 분기 명령이다. 설명의 목적으로, 명령(S)이 다음 명령으로 예측된다. 그러면, 명령(S)는 페치되고, 명령(Q)는 디코딩되며, 명령(W)은 실행되고, 명령(Z)는 다시 기록된다. 클록 사이클 4의 끝에서, 명령(S)가 올바른 명령이었음을 나타내는 조건이 결정되고, 클록 사이클 5에서, 명령(S)은 디코드되고 동시에 명령(T)는 프리페치되고, 명령(Q)는 실행되며, 명령(W)은 다시 기록된다. CASE 2에서는 파이프라인 정지(pipeline stall)가 발생하지 않는다.
도 5는 프리페치 목적지가 부정확하게 예측되는 CASE 3의 타이밍도를 도시한다. 클록 사이클 1에서, 명령(Z)(도 2)이 페치된다. 클록 사이클 2에서, 명령(W)이 페치되고 클록 사이클 3에서, 명령(Q)이 페치되며, 명령(Q)은 조건부 역방향 분기 명령이다. 만약 역방향 분기 프리페치이 분기 제어 필드(19)에서 선택된다면, 명령(S)은 클록 사이클 4에서 프리페치된다. (CASE 3에 적용되는 제어 필드 값에 대해 도 12를 참조하라.) 클록 사이클 5동안, 명령(Q)이 실행되고 명령(S)의 프리페치가 잘못되었음이 결정된다. 파이프라인이 정지하고 동시에 올바른 명령, 즉 명령(R)이 페치된다. 일단 명령(R)이 클록 사이클 6에서 페치되면, 정상적인 실행이 재개한다.
도 6은 순차적인 프리페치이 올바르게 예측되는 CASE 4의 타이밍도를 도시한다. 클록 사이클 3에서, 프리페치가 순차적이어야 한다는 것을 분기 제어 필드(19)가 나타내기 때문에 분기 명령(V)이 페치된다. 클록 사이클 4동안, 명령(X)이 페치된다. 클록 사이클 5에서 명령(V)이 실행되고 프리페치에 대해 명령(X)이 올바른 명령이었음을 나타내는 조건이 결정된다. 정상적인 실행이 명령(X)으로 계속된다.
도 7은 명령 프리페치가 순차적이고 부정확하게 예측되는 CASE 5의 타이밍도를 도시한다. 클록 사이클 3에서, 명령(V)이 프리페치되는데, 여기서 명령(V)은 조건부 순방향 분기 명령이다. 다음 명령이 클록 사이클 4에서 명령(X)이기 때문에, 명령(X)가 페치된다. 클록 사이클 5에서, 명령(V)이 실행된다. 명령(X)이 프리페치에 대해 부정확한 명령이었음을 나타내는 조건이 결정된다. 프리페치가 부정확하기 때문에, 클록 사이클 6에서, 정확한 명령, 즉 명령(W)가 페치되고 파이프라인은 새로 채워진다.
도 8은 조건부 실행이 허용되고 취해진 분기의 예측이 정확한 CASE 6의 타이밍도를 도시한다. 클록 사이클 3에서, 순방향 분기 명령(V)이 페치된다. 상기 분기가 취해질 것으로 예측되기 때문에, 명령(W)이 페치된다. 조건이 결정되기 전에 명령(W)이 클록 사이클 6에서 실행된다. 클록 사이클 6 이후에, 조건이 결정되고, 예측이 정확했기 때문에 파이프라인 흐름은 계속될 수 있다.
도 9는 취해진 분기의 예측이 부정확한 조건부 실행을 도시하는 CASE 7의 타이밍도를 도시한다. 도 8에 대해 상기 언급된 바와 같이, 명령(W)이 다음 명령이 될 것으로 예측된다. 그러나 이 경우에 있어서 명령(W)는 부정확한 명령이다. 따라서 클록 사이클 6의 끝에서, 조건이 결정되고 클록 사이클 7에서, 정확한 명령, 즉 명령(X)가 페치되며 파이프라인은 올바른 명령으로 채워진다.
도 10은 취해지지 않은 분기의 예측이 정확한 조건부 실행을 나타내는 CASE 8의 타이밍도를 도시한다. 클록 사이클 3에서, 명령(V)은 순방향 분기 명령인데, 그 이유는 예측이 취해지지 않기 때문이며, 다음 번 명령, 즉 명령(X)가 페치된다. 클록 사이클 6의 끝에서 명령(X)이 실행될 때, 조건은 올바르게 결정되며 파이프라인 흐름은 방해받지 않은 상태로 유지된다.
도 11은 취해지지 않은 분기의 예측이 부정확한 조건부 실행을 나타내는 CASE 9의 타이밍도를 도시한다. 클록 사이클 3에서 분기 명령(V)를 페치한 후, 페치될 다음 번 명령는 명령(X)이다(도 2 참조). 도 11의 클록 사이클 6의 끝에서, 조건은 부정확하게 결정된다. 올바른 명령가 명령(X)가 되어야 하기 때문에, 명령(W)은 클록 사이클 7에서 페치되고 파이프라인은 정지되며 동시에 파이프라인은 올바른 명령으로 채워지게 된다.
도 12는 도 1의 분기 제어 필드(19)에 대한 제어값 및 각각의 제어값에 대응하는 응용 가능한 CASES 1∼9의 표를 도시한다. 분기 제어 필드(19)는 데이터 처리(10)에 대한 프로그래머의 방식의 일부이다. 도시된 실시예에 있어서, 분기 제어 필드(19)는 실행될 명령의 시퀀스 내에 적절한 명령을 삽입함으로써 갱신될 수 있다. 이것은 프리페치 및 조건부 실행 둘 다에 대해 순방향 및 역방향 조건부 분기 둘 다에서의 분기 예측의 효율적인 사용을 가능하게 한다.
도 12의 제어값 각각에 대해 취해지는 액션의 요약이 하기에 설명된다:
만약 분기 제어 필드가 000을 포함하면 - 순방향 또는 역방향 분기에 대한 프리페치 예측은 분기 조건이 결정될 때가지 이루어지지 않는다;
만약 분기 제어 필드가 001을 포함하면 - 역방향 분기의 목적지가 프리페치되지만, 순방향 분기에 대한 프리페치 예측은 존재하지 않는다;
만약 분기 제어 필드가 010을 포함하면 - 목적지를 프리페치하고 역방향 분기 목적지의 조건부 실행을 허용하고(즉, 역방향으로 예측이 취해지고 조건부 실행과 함께, 목적지를 프리페치한다), 순방향 분기에 대한 프리페치 예측은 없다;
만약 분기 제어 필드가 011을 포함하면 - 역방향 분기의 목적지를 프리페치하고(즉, 예측이 취해지고 목적지를 프리페치하지만, 조건부 실행은 없다),순방향 분기에 대한 순차적인 명령을 프리페치한다(즉, 예측이 취해지지 않고, 조건부 실행이 없다);
만약 분기 제어 필드가 100을 포함하면 - 양 방향의 분기에 대한 목적지를 프리페치한다(즉, 예측이 취해지고, 조건부 실행은 없다);
만약 분기 제어 필드가 101을 포함하면 - 양 방향의 분기에 대한 목적지를 프리페치하고, 예측된 역방향의 분기의 조건부 실행을 허용한다(즉, 예측이 취해지고, 순방향 분기에 대한 조건부 실행은 없다);
만약 분기 제어 필드가 110을 포함하면 - 양 방향의 분기에 대한 목적지를 페치하고, 예측된 분기의 조건부 실행을 허용한다(즉, 예측이 취해지고, 모든 분기에 대한 조건부 실행을 허용한다); 및
만약 분기 제어 필드가 111을 포함하면 - 역방향 분기의 목적지를 프리페치하고, 예측된 역방향 분기의 조건부 실행을 허용한다(즉, 예측이 취해지고 목적지를 프리페치하며, 조건부 실행을 허용한다). 순방향 분기에 대해 순차적인 명령을 프리페치한다(즉, 예측이 취해지지 않고, 조건부 실행을 허용한다).
예측의 프리페치 및 분기 명령에 대한 조건부 실행에 대한 제어를 독립적으로 허용함으로써, 부정확한 예측의 결과로 발생하는 파이프라인 정지가 감소될 수 있기 때문에 처리 시간은 보다 효율적으로 사용될 것이다.
본 발명이 그 특정 실시예를 참조로 설명되고 도시되었지만, 본 발명을 이들 예증적인 실시예에 제한하려는 것은 아니다. 기술적인 분야에서 능숙한 자들은 본 발명의 취지 및 영역을 벗어나지 않으면서 수정예 및 변형예가 수행될 수 있음을 이해할 수 있을 것이다. 따라서, 첨부된 특허청구의 범위의 영역 내에 있는 이러한 모든 변형예 및 수정예는 본 발명에 포함된다.
도 1은 본 발명에 따른 파이프라인 데이터 처리 시스템의 블록도.
도 2는 본 발명을 설명하는데 유익한 일련의 명령.
도 3 내지 도 11은 본 발명에 다른 분기 제어를 설명하기 위한 여러 경우를 나타내는 블록도.
도 12는 도 1의 분기 제어 필드에 대한 제어값 및 각각의 제어값과 관련된 액션에 대응하는 응용 가능한 경우들 1 내지 9를 나타내는 표.
* 도면의 주요 부분에 대한 부호의 설명 *
10 : 데이터 처리 시스템 12 : 메모리
14 : 데이터 프로세서 16 : 어드레스 버퍼
18 : 제어 유닛 19 : 분기 제어 비트 필드
20 : 데이터 입력 버퍼 22 : 데이터 출력 버퍼
23 : 버스 인터페이스 유닛 24 : 어드레스 멀티플렉서
26 : 명령 페치 유닛 28 : 프로그램 카운터 계산 블록
32 : 명령 디코더 40 : 실행 유닛

Claims (5)

  1. 적어도 하나의 흐름 변화 명령을 포함하는 복수의 명령들을 실행하는 데이터 프로세서에 있어서:
    상기 복수의 명령들 중 선택된 명령들을 순차적으로 페치하기 위한 명령 프리페치 유닛(instruction prefetch unit);
    상기 명령 프리페치 유닛에 연결되어 상기 명령 프리페치 유닛에 의해 페치된 복수의 명령들 중 선택된 명령들을 선택적으로 디코딩하는 명령 디코드 유닛;
    상기 명령 디코드 유닛에 연결되고, 상기 명령 디코드 유닛에 의해 디코딩된복수의 명령들을 선택적으로 실행하는 명령 실행 유닛; 및
    상기 명령 프리페치 유닛, 상기 명령 디코드 유닛 및 상기 명령 실행 유닛에연결된 제어 유닛으로서, 상기 제어 유닛은 저장된 제어값을 가지고, 상기 저장된 제어값은, 상기 명령 디코드 유닛에 의해 검출되는 조건부 흐름 명령에 직접 응답해서 미리 결정된 시간동안 상기 명령 프리페치 유닛이 임의의 다른 명령들을 페치하는 것을 선택적으로 디스에이블링함으로써 상기 명령 프리페치 유닛을 직접적으로 제어하고, 상기 명령 프리페치 유닛의 디스에이블링은 상기 미리 결정된 시간이 경과할 때까지 폐치 동작을 완전히 회피함으로써 상기 데이터 프로세서의 오버헤드 를 감소시키며, 상기 미리 결정된 시간이 경과한 때, 상기 명령 프리페치 유닛에 의한 프리페치가 자동적으로 재개되는, 상기 제어 유닛을 포함하는, 데이터 프로세서.
  2. 데이터 프로세서에서, 조건부 분기 명령 실행을 제어하기 위한 장치에 있어서 :
    명령 인코딩 값을 얻기 위해 명령 어드레스를 제공하는 명령 페치 회로로서,제어 입력을 구비하는 상기 명령 페치 회로;
    상기 명령 인코딩 값을 수신하기 위해 상기 명령 페치 회로에 연결된 입력을 구비하는 명령 디코더로서, 상기 명령 인코딩 값을 상기 데이터 프로세서에 의해 실행될 수 있는 포맷으로 변환함으로써 상기 명령 인코딩 값을 준비하는 상기 명령 디코더;
    상기 명령 디코더에 연결되어 명령들을 실행하는 실행 유닛; 및
    상기 명령 페치 회로, 상기 명령 디코더 및 상기 실행 유닛 각각에 연결된 제어 유닛으로서, 상기 제어 유닛은 상기 제어 유닛에 의해 제공되는 분기 제어값에 응답하여, 제어 신호를 상기 명령 페치 회로의 제어 입력에 제공하고, 상기 분기 제어값은, 상기 명령 디코더가 조건부 분기 명령을 만났다고 결정할 때 상기 명령 페치 회로가 다른 명령들을 페치하는 복수의 동작 모드들 중 하나를 결정하고,상기 복수의 동작 모드들은 상기 조건부 분기 명령에 의해 나타난 명령 흐름의 방향에 의해 결정되는, 상기 제어 유닛을 포함하는, 조건부 분기 명령 실행 제어 장치.
  3. 데이터 프로세서에서, 조건부 분기 명령 실행을 제어하기 위한 장치에 있어서:
    명령 인코딩 값을 얻기 위해 명령 어드레스를 제공하는 명령 페치 회로로서,제어 입력을 구비하는 상기 명령 페치 회로;
    상기 명령 페치 회로에 연결되어 상기 명령 인코딩 값을 수신하는 입력을 구비하는 명령 디코더로서, 상기 명령 인코딩 값을 상기 데이터 프로세서에 의해 실행될 수 있는 포맷으로 변환함으로써 상기 명령 인코딩 값을 준비하는 상기 명령 디코더;
    상기 명령 디코더에 연결되어 명령들을 실행하는 실행 유닛; 및
    상기 명령 페치 회로, 상기 명령 디코더 및 상기 실행 유닛 각각에 연결된 제어 유닛으로서, 상기 제어 유닛은 조건부 분기 명령을 검출하는 것에 응답하여 분기 제어 신호를 상기 명령 페치 회로의 제어 입력에 제공하고, 상기 분기 제어 신호는 명령 흐름의 변화 방향이 순방향인지 또는 역방향인지의 지시에 기초해서,부가적인 명령들의 프리페치 및 조건부 실행, 또는 조건이 해결될 때까지 상기 부가적인 명령들의 실행을 허용하지 않으면서 부가적인 명령들의 프리페치를 각각 결정하는, 상기 제어 유닛을 포함하는, 조건부 분기 명령 실행 제어 장치.
  4. 조건부 분기 실행을 갖는 데이터 프로세서에 있어서:
    실행될 복수의 명령들을 페치하고, 제어 입력을 구비하는 페치 유닛;
    상기 페치 유닛에 연결되고, 상기 페치 유닛으로부터 명령들을 수신하며 실행을 위해 상기 명령들을 디코딩하는 디코더;
    상기 디코더에 연결되고, 페치된 명령들을 수신하며 상기 페치된 명령들을 실행하는 실행 유닛;
    상기 페치 유닛, 상기 디코더 및 상기 실행 유닛 각각에 연결되어 상기 데이터 프로세서의 동작을 제어하는 제어 회로로서, 상기 제어 회로는 조건부 분기 명령을 검출하는 것에 응답하여 제어 신호를 상기 페치 유닛의 제어 입력에 제공하고, 상기 제어 신호는 상기 조건부 분기 명령에 의해 요구된 명령 흐름의 변화 방향이 순방향인지 또는 역방향인지의 결정에 기초해서, 순차적 방식으로 부가적인 명령들을 페치 및 조건적으로 실행하거나, 또는 예측된 목적지 명령으로 점프함으로써 부가적인 명령들을 페치 및 조건적으로 실행하도록 상기 페치 유닛을 제어할지 여부를 각각 결정하는, 상기 제어 회로를 포함하는, 데이터 프로세서.
  5. 데이터 프로세서에서, 명령 흐름의 변화를 구현하는 방법에 있어서:
    복수의 명령들 중 선택된 명령들을 명령 프리페치 유닛으로 순차적으로 페치하는 단계;
    상기 페치된 복수의 명령들 중 선택된 명령들을 선택적으로 디코딩하는 단계;
    상기 디코딩된 복수의 명령들 중 선택된 명령들을 선택적으로 실행하는 단계; 및
    검출되는 조건부 흐름 명령에 직접 응답해서, 미리 결정된 시간 동안 상기 명령 프리페치 유닛이 임의의 다른 명령들을 페치하는 것을 선택적으로 디스에이블링함으로써, 상기 명령 프리페치 유닛을 직접적으로 제어하는 제어값을 사용하는 단계로서, 상기 디스에이블링하는 것은 상기 미리 결정된 시간이 경과할 때까지 페치 동작을 완전히 회피함으로써 상기 데이터 프로세서의 오버헤드를 감소시키며, 상기 미리 결정된 시간이 경과한 때, 상기 명령 프리페치 유닛에 의한 프리페치가자동적으로 재개되는, 상기 제어값 사용 단계를 포함하는, 명령 흐름 변화 구현 방법.
KR1019980029786A 1997-07-25 1998-07-24 데이터처리기에서조건부분기실행을제어하기위한장치및방법 KR100570906B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/900,796 US5951678A (en) 1997-07-25 1997-07-25 Method and apparatus for controlling conditional branch execution in a data processor
US08/900,796 1997-07-25
US8/900,796 1997-07-25

Publications (2)

Publication Number Publication Date
KR19990014132A KR19990014132A (ko) 1999-02-25
KR100570906B1 true KR100570906B1 (ko) 2006-10-24

Family

ID=25413089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980029786A KR100570906B1 (ko) 1997-07-25 1998-07-24 데이터처리기에서조건부분기실행을제어하기위한장치및방법

Country Status (5)

Country Link
US (1) US5951678A (ko)
EP (1) EP0893756B1 (ko)
JP (1) JP3977931B2 (ko)
KR (1) KR100570906B1 (ko)
DE (1) DE69831370T2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100347668C (zh) * 1997-08-29 2007-11-07 松下电器产业株式会社 指令变换装置
US6353880B1 (en) * 1998-07-22 2002-03-05 Scenix Semiconductor, Inc. Four stage pipeline processing for a microcontroller
DE69923289D1 (de) * 1999-04-28 2005-02-24 St Microelectronics Srl Halbleitervorrichtung mit auswälbarer Anschlussfläche
US6859875B1 (en) 2000-06-12 2005-02-22 Freescale Semiconductor, Inc. Processor having selective branch prediction
US7168005B2 (en) * 2000-09-14 2007-01-23 Cadence Design Systems, Inc. Programable multi-port memory BIST with compact microcode
US6662294B1 (en) * 2000-09-28 2003-12-09 International Business Machines Corporation Converting short branches to predicated instructions
US6948054B2 (en) * 2000-11-29 2005-09-20 Lsi Logic Corporation Simple branch prediction and misprediction recovery method
TW477954B (en) * 2000-12-05 2002-03-01 Faraday Tech Corp Memory data accessing architecture and method for a processor
US6931494B2 (en) * 2002-09-09 2005-08-16 Broadcom Corporation System and method for directional prefetching
US7103757B1 (en) * 2002-10-22 2006-09-05 Lsi Logic Corporation System, circuit, and method for adjusting the prefetch instruction rate of a prefetch unit
US7139902B2 (en) * 2002-10-29 2006-11-21 Broadcom Corporation Implementation of an efficient instruction fetch pipeline utilizing a trace cache
US7140003B2 (en) * 2003-02-14 2006-11-21 International Business Machines Corporation Method and system for specifying sets of instructions for selection by an instruction generator
US7013383B2 (en) * 2003-06-24 2006-03-14 Via-Cyrix, Inc. Apparatus and method for managing a processor pipeline in response to exceptions
KR100591769B1 (ko) 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
US8131984B2 (en) * 2009-02-12 2012-03-06 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state
US7979675B2 (en) * 2009-02-12 2011-07-12 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
EP0355069A2 (en) * 1988-08-15 1990-02-21 EVANS & SUTHERLAND COMPUTER CORPORATION Variable delay branch system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5228131A (en) * 1988-02-24 1993-07-13 Mitsubishi Denki Kabushiki Kaisha Data processor with selectively enabled and disabled branch prediction operation
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
US5261063A (en) * 1990-12-07 1993-11-09 Ibm Corp. Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
JPH08106387A (ja) * 1994-10-06 1996-04-23 Oki Electric Ind Co Ltd 命令プリフェッチ回路及びキャッシュ装置
US5734881A (en) * 1995-12-15 1998-03-31 Cyrix Corporation Detecting short branches in a prefetch buffer using target location information in a branch target cache
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
EP0355069A2 (en) * 1988-08-15 1990-02-21 EVANS & SUTHERLAND COMPUTER CORPORATION Variable delay branch system

Also Published As

Publication number Publication date
DE69831370T2 (de) 2006-03-09
EP0893756A2 (en) 1999-01-27
EP0893756B1 (en) 2005-08-31
JPH1196004A (ja) 1999-04-09
EP0893756A3 (en) 2000-11-15
DE69831370D1 (de) 2005-10-06
US5951678A (en) 1999-09-14
JP3977931B2 (ja) 2007-09-19
KR19990014132A (ko) 1999-02-25

Similar Documents

Publication Publication Date Title
KR100570906B1 (ko) 데이터처리기에서조건부분기실행을제어하기위한장치및방법
US5193205A (en) Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
US8990543B2 (en) System and method for generating and using predicates within a single instruction packet
EP1003095B1 (en) A computer system for executing branch instructions
CA2659384C (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
CN104978284B (zh) 处理器子程序高速缓冲存储器
JP2845646B2 (ja) 並列演算処理装置
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
EP0378415A2 (en) Multiple instruction dispatch mechanism
US6859875B1 (en) Processor having selective branch prediction
US7234046B2 (en) Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping
KR20200090103A (ko) 분기 예측기
EP0279953A2 (en) Computer system having mixed macrocode and microcode instruction execution
KR900010552A (ko) 명령을 페치(fetch)하기 위한 제어 시스템
US6430682B1 (en) Reliable branch predictions for real-time applications
US11599361B2 (en) Flushing a fetch queue using predecode circuitry and prediction information
US20040019772A1 (en) Microprocessor
JPH06131180A (ja) 命令処理方式および命令処理装置
JPH07175650A (ja) 演算処理装置
JPH03291724A (ja) マイクロプログラム制御方式
JPH09311787A (ja) データ処理装置
JPH0425903A (ja) プログラマブルコントローラ
JPH0752402B2 (ja) データ処理装置
JPS6114536B2 (ko)
JPH0451858B2 (ko)

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20130325

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140319

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee