KR100570906B1 - 데이터처리기에서조건부분기실행을제어하기위한장치및방법 - Google Patents
데이터처리기에서조건부분기실행을제어하기위한장치및방법 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title description 5
- 230000004044 response Effects 0.000 claims description 8
- 230000009191 jumping Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 13
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative 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)
- 적어도 하나의 흐름 변화 명령을 포함하는 복수의 명령들을 실행하는 데이터 프로세서에 있어서:상기 복수의 명령들 중 선택된 명령들을 순차적으로 페치하기 위한 명령 프리페치 유닛(instruction prefetch unit);상기 명령 프리페치 유닛에 연결되어 상기 명령 프리페치 유닛에 의해 페치된 복수의 명령들 중 선택된 명령들을 선택적으로 디코딩하는 명령 디코드 유닛;상기 명령 디코드 유닛에 연결되고, 상기 명령 디코드 유닛에 의해 디코딩된복수의 명령들을 선택적으로 실행하는 명령 실행 유닛; 및상기 명령 프리페치 유닛, 상기 명령 디코드 유닛 및 상기 명령 실행 유닛에연결된 제어 유닛으로서, 상기 제어 유닛은 저장된 제어값을 가지고, 상기 저장된 제어값은, 상기 명령 디코드 유닛에 의해 검출되는 조건부 흐름 명령에 직접 응답해서 미리 결정된 시간동안 상기 명령 프리페치 유닛이 임의의 다른 명령들을 페치하는 것을 선택적으로 디스에이블링함으로써 상기 명령 프리페치 유닛을 직접적으로 제어하고, 상기 명령 프리페치 유닛의 디스에이블링은 상기 미리 결정된 시간이 경과할 때까지 폐치 동작을 완전히 회피함으로써 상기 데이터 프로세서의 오버헤드 를 감소시키며, 상기 미리 결정된 시간이 경과한 때, 상기 명령 프리페치 유닛에 의한 프리페치가 자동적으로 재개되는, 상기 제어 유닛을 포함하는, 데이터 프로세서.
- 데이터 프로세서에서, 조건부 분기 명령 실행을 제어하기 위한 장치에 있어서 :명령 인코딩 값을 얻기 위해 명령 어드레스를 제공하는 명령 페치 회로로서,제어 입력을 구비하는 상기 명령 페치 회로;상기 명령 인코딩 값을 수신하기 위해 상기 명령 페치 회로에 연결된 입력을 구비하는 명령 디코더로서, 상기 명령 인코딩 값을 상기 데이터 프로세서에 의해 실행될 수 있는 포맷으로 변환함으로써 상기 명령 인코딩 값을 준비하는 상기 명령 디코더;상기 명령 디코더에 연결되어 명령들을 실행하는 실행 유닛; 및상기 명령 페치 회로, 상기 명령 디코더 및 상기 실행 유닛 각각에 연결된 제어 유닛으로서, 상기 제어 유닛은 상기 제어 유닛에 의해 제공되는 분기 제어값에 응답하여, 제어 신호를 상기 명령 페치 회로의 제어 입력에 제공하고, 상기 분기 제어값은, 상기 명령 디코더가 조건부 분기 명령을 만났다고 결정할 때 상기 명령 페치 회로가 다른 명령들을 페치하는 복수의 동작 모드들 중 하나를 결정하고,상기 복수의 동작 모드들은 상기 조건부 분기 명령에 의해 나타난 명령 흐름의 방향에 의해 결정되는, 상기 제어 유닛을 포함하는, 조건부 분기 명령 실행 제어 장치.
- 데이터 프로세서에서, 조건부 분기 명령 실행을 제어하기 위한 장치에 있어서:명령 인코딩 값을 얻기 위해 명령 어드레스를 제공하는 명령 페치 회로로서,제어 입력을 구비하는 상기 명령 페치 회로;상기 명령 페치 회로에 연결되어 상기 명령 인코딩 값을 수신하는 입력을 구비하는 명령 디코더로서, 상기 명령 인코딩 값을 상기 데이터 프로세서에 의해 실행될 수 있는 포맷으로 변환함으로써 상기 명령 인코딩 값을 준비하는 상기 명령 디코더;상기 명령 디코더에 연결되어 명령들을 실행하는 실행 유닛; 및상기 명령 페치 회로, 상기 명령 디코더 및 상기 실행 유닛 각각에 연결된 제어 유닛으로서, 상기 제어 유닛은 조건부 분기 명령을 검출하는 것에 응답하여 분기 제어 신호를 상기 명령 페치 회로의 제어 입력에 제공하고, 상기 분기 제어 신호는 명령 흐름의 변화 방향이 순방향인지 또는 역방향인지의 지시에 기초해서,부가적인 명령들의 프리페치 및 조건부 실행, 또는 조건이 해결될 때까지 상기 부가적인 명령들의 실행을 허용하지 않으면서 부가적인 명령들의 프리페치를 각각 결정하는, 상기 제어 유닛을 포함하는, 조건부 분기 명령 실행 제어 장치.
- 조건부 분기 실행을 갖는 데이터 프로세서에 있어서:실행될 복수의 명령들을 페치하고, 제어 입력을 구비하는 페치 유닛;상기 페치 유닛에 연결되고, 상기 페치 유닛으로부터 명령들을 수신하며 실행을 위해 상기 명령들을 디코딩하는 디코더;상기 디코더에 연결되고, 페치된 명령들을 수신하며 상기 페치된 명령들을 실행하는 실행 유닛;상기 페치 유닛, 상기 디코더 및 상기 실행 유닛 각각에 연결되어 상기 데이터 프로세서의 동작을 제어하는 제어 회로로서, 상기 제어 회로는 조건부 분기 명령을 검출하는 것에 응답하여 제어 신호를 상기 페치 유닛의 제어 입력에 제공하고, 상기 제어 신호는 상기 조건부 분기 명령에 의해 요구된 명령 흐름의 변화 방향이 순방향인지 또는 역방향인지의 결정에 기초해서, 순차적 방식으로 부가적인 명령들을 페치 및 조건적으로 실행하거나, 또는 예측된 목적지 명령으로 점프함으로써 부가적인 명령들을 페치 및 조건적으로 실행하도록 상기 페치 유닛을 제어할지 여부를 각각 결정하는, 상기 제어 회로를 포함하는, 데이터 프로세서.
- 데이터 프로세서에서, 명령 흐름의 변화를 구현하는 방법에 있어서:복수의 명령들 중 선택된 명령들을 명령 프리페치 유닛으로 순차적으로 페치하는 단계;상기 페치된 복수의 명령들 중 선택된 명령들을 선택적으로 디코딩하는 단계;상기 디코딩된 복수의 명령들 중 선택된 명령들을 선택적으로 실행하는 단계; 및검출되는 조건부 흐름 명령에 직접 응답해서, 미리 결정된 시간 동안 상기 명령 프리페치 유닛이 임의의 다른 명령들을 페치하는 것을 선택적으로 디스에이블링함으로써, 상기 명령 프리페치 유닛을 직접적으로 제어하는 제어값을 사용하는 단계로서, 상기 디스에이블링하는 것은 상기 미리 결정된 시간이 경과할 때까지 페치 동작을 완전히 회피함으로써 상기 데이터 프로세서의 오버헤드를 감소시키며, 상기 미리 결정된 시간이 경과한 때, 상기 명령 프리페치 유닛에 의한 프리페치가자동적으로 재개되는, 상기 제어값 사용 단계를 포함하는, 명령 흐름 변화 구현 방법.
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)
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)
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)
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 |
-
1997
- 1997-07-25 US US08/900,796 patent/US5951678A/en not_active Expired - Lifetime
-
1998
- 1998-06-02 EP EP98109970A patent/EP0893756B1/en not_active Expired - Lifetime
- 1998-06-02 DE DE69831370T patent/DE69831370T2/de not_active Expired - Fee Related
- 1998-07-14 JP JP21492898A patent/JP3977931B2/ja not_active Expired - Fee Related
- 1998-07-24 KR KR1019980029786A patent/KR100570906B1/ko not_active IP Right Cessation
Patent Citations (2)
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 |