KR19990014132A - 데이터 프로세서에서 조건부 분기 실행을 제어하기 위한 방법 및 장치 - Google Patents
데이터 프로세서에서 조건부 분기 실행을 제어하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR19990014132A KR19990014132A KR1019980029786A KR19980029786A KR19990014132A KR 19990014132 A KR19990014132 A KR 19990014132A KR 1019980029786 A KR1019980029786 A KR 1019980029786A KR 19980029786 A KR19980029786 A KR 19980029786A KR 19990014132 A KR19990014132 A KR 19990014132A
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- unit
- execution
- instructions
- control
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 4
- 230000004044 response Effects 0.000 claims description 7
- 230000009191 jumping Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 23
- 238000010586 diagram Methods 0.000 description 13
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 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 or 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 or 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
파이프라인 데이터 처리 시스템(10)은 순방향 분기 예측 및 역방향 분기 예측뿐만 아니라 여러 분기 시나리오에 대한 명령어의 예비 인출 및 조건부 실행을 선택적으로 제어하기 위한 고안(scheme)을 포함한다. 3 비트의 프로그래머가 액세스 가능한 제어 필드(19)는 순방향 및 역방향 조건부 분기 둘 다에 대한 명령어의 예비 인출의 독립적인 제어를 허용함으로써 조건부 분기 명령어와 함께 사용될 동작 형태를 특정하기 위해 사용된다. 또한, 조건부 실행에 대한 제어는 순방향 분기 및 역방향 분기 둘 다에 대해 제공된다. 순방향 및 역방향 분기 예측 및 조건부 실행에 대한 독립적인 제어를 허용함으로써, 파이프라인 정지는 감소될 수 있고 보다 유연한 프로그램 실행이 상이한 환경에 대해 성취될 수 있다.
Description
기술분야
본 발명은 데이터 처리에 관한 것으로, 특히 데이터 프로세서에서 조건부 분기 실행(conditional branch execution)을 제어하기 위한 방법 및 장치에 관한 것이다.
배경 기술
데이터 처리 시스템이 프로그램 실행을 위한 다수의 단계(stages)를 포함하는 경우 데이터 처리 시스템은 파이프라인화(pipelined)된다. 예를들면, 4 단계의 파이프라인은 인출 단계(fetch stage), 디코드 단계, 실행 단계 및 재기록(write back) 단계를 포함한다. 인출 단계동안, 다음 명령어가 메모리 위치로부터 검색된다. 그 다음 명령어는 디코드되고, 실행되어, 메모리 위치, 또는 레지스터에 다시 기록된다. 이들 단계의 각각은 수행을 위해 하나 이상의 클록 싸이클을 필요로 할 것이다. 또한, 첫 번째 명령어가 디코드되는 것과 동시에, 두 번째 명령어가 인출되고, 첫 번째 명령어가 실행되는 동안, 두 번째 명령어가 디코드 되는 식으로 계속 수행되어, 파이프라인은 가득 찬 상태로 유지된다.
파이프라인 데이터 처리 시스템(pipelined data processing system)은 실행되는 프로그램이 흐름 명령어의 변화를 포함하는 경우 실행의 불이익을 초래할 것이다. 흐름의 변화가 발생하게 되면, 데이터 처리 시스템은 명령어 파이프라인을 다시 채우기 위해 프로그램 흐름의 실행을 중지해야 할 것이다.
흐름의 변화가 초래되는 경우 실행 효과를 향상시키기 위해 사용되는 기법에는 분기 예측(branch prediction), 예비 인출(prefetching) 및 조건부 실행(conditional execution)과 같은 여러 고안이 있다. 그러나, 이들 많은 고안은 데이터 처리 시스템을 복잡하게 하고, 모든 환경에서 효과적이지는 않다. 따라서, 상이한 환경에 대해 적합 가능한 분기 예측 목적지 예비 인출 및 조건부 실행에 대한 제어를 제공할 필요가 있다.
양호한 실시예의 상세한 설명
일반적으로, 본 발명은 순방향(forward) 분기 예측 및 역방향 분기 예측, 및 여러 분기 시나리오에 대한 명령어의 예비 인출 및 조건부 실행을 선택적으로 제어하기 위한 데이터 처리 시스템 및 방법을 제공한다. 3 비트의 프로그래머가 액세스 가능한 제어 필드는 순방향 및 역방향 조건부 분기 둘 다에 대한 명령어의 예비 인출의 독립적인 제어를 허용함으로써 조건부 분기 명령어와 함께 사용될 동작(activity)의 형태를 특정하기 위해 사용된다. 또한, 조건부 실행에 대한 제어는 순방향 및 역방향 분기 둘 다에 대해 제공된다. 순방향 및 역방향 분기 예측 및 조건부 실행의 독립적인 제어를 허용함으로써, 파이프라인 정지(stalls)가 감소될 수 있고 더욱 유연한 프로그램 실행이 상이한 환경에 대해 성취될 수 있다. 특히, 본 발명은 첨부된 도면을 참조로 더욱 상세히 설명될 것이다.
도 1은 본 발명에 따른 파이프라인 데이터 처리 시스템의 블록도.
도 2는 본 발명을 설명하는데 유익한 일련의 명령어.
도 3 내지 도 11은 본 발명에 다른 분기 제어를 설명하기 위한 여러 경우를 나타내는 블록도.
도 12는 도 1의 분기 제어 필드에 대한 제어값 및 각각의 제어값과 관련된 액션에 대응하는 응용 가능한 CASES 1∼9를 나타내는 표.
* 도면의 주요 부분에 대한 부호의 설명 *
10 : 데이터 처리 시스템 12 : 메모리
14 : 데이터 프로세서 16 : 어드레스 버퍼
18 : 제어 유닛 19 : 분기 제어 비트 필드
20 : 데이터 입력 버퍼 22 : 데이터 출력 버퍼
23 : 버스 인터페이스 유닛 24 : 어드레스 멀티플렉서
26 : 명령어 인출 유닛 28 : 프로그램 제어 계산 블록
32 : 명령어 디코더 40 : 실행 유닛
도 1은 본 발명에 다른 파이프라인 데이터 처리 시스템의 블록도이다. 데이터 처리 시스템(10)은 메모리(12)와 데이터 프로세서(14)를 포함한다. 데이터 프로세서(14)는 어드레스 버퍼(16), 어드레스 멀티플렉서(24), 제어 유닛(18), 분기 제어 비트 필드(19), 명령어 인출 유닛(26), 명령어 디코더(32), 실행 유닛(40), 버tm 인터페이스 유닛(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을 포함하면 - 역방향 분기의 목적지를 예비 인출하고, 예측된 역방향 분기의 조건부 실행을 허용한다(즉, 예측이 취해지고 목적지를 예비 인출하며, 조건부 실행을 허용한다). 순방향 분기에 대해 순차적인 명령어를 예비 인출한다(즉, 예측이 취해지지 않고, 조건부 실행을 허용한다).
예측의 예비 인출 및 분기 명령어에 대한 조건부 실행에 대한 제어를 독립적으로 허용함으로써, 부정확한 예측의 결과로 발생하는 파이프라인 정지가 감소될 수 있기 때문에 처리 시간은 보다 효율적으로 사용될 것이다.
본 발명이 그 특정 실시예를 참조로 설명되고 도시되었지만, 본 발명을 이들 예증적인 실시예에 제한하려는 것은 아니다. 기술적인 분야에서 능숙한 자들은 본 발명의 취지 및 영역을 벗어나지 않으면서 수정예 및 변형예가 수행될 수 있음을 이해할 수 있을 것이다. 따라서, 첨부된 특허청구의 범위의 영역 내에 있는 이러한 모든 변형예 및 수정예는 본 발명에 포함된다.
Claims (5)
- 적어도 하나의 흐름 변화 명령어를 포함하는 다수의 명령어를 실행하는 데이터 프로세서에 있어서,상기 다수의 명령어 중 선택된 명령어를 순차적으로 인출하기 위한 명령어 예비 인출 유닛과;상기 명령어 예비 인출 유닛에 연결되어 상기 명령어 예비 인출 유닛에 의해 인출된 다수의 명령어 중 선택된 명령어를 선택적으로 디코딩하기 위한 명령어 디코드 유닛과;상기 명령어 디코드 유닛에 연결되고, 상기 명령어 디코드 유닛에 의해 디코드된 다수의 명령어를 선택적으로 실행하기 위한 명령어 실행 유닛; 및상기 명령어 예비 인출 유닛, 상기 명령어 디코드 유닛 및 상기 명령어 실행 유닛에 연결되고, 상기 명령어 디코드 유닛에 의해 검출되는 조건부 흐름 명령어에 직접 응답해서 소정 시간동안 상기 명령어 예비 인출 유닛이 더 이상 다른 명령어를 인출하는 것을 선택적으로 디스에이블함으로써 상기 명령어 예비 인출 유닛을 직접적으로 제어하는 저장된 제어값을 구비하는 제어 유닛으로서, 상기 명령어 예비 인출 유닛의 디스에이블이 상기명령어 예비 인출 유닛에 의한 예비 인출이 자동적으로 재개되는 소정 시간이 경과할 때까지 인출 동작을 완전히 방지함으로써 데이터 프로세서의 오버헤드를 감소시키는, 제어 유닛을 포함하는 데이터 프로세서.
- 조건부 분기 명령어 실행을 제어하기 위한 데이터 프로세서 내의 장치에 있어서,명령어 인코딩 값을 얻기 위해 명령어 어드레스를 제공하며, 제어 입력을 구비하는 명령어 인출 회로와;상기 명령어 인코딩 값을 수신하기 위한 상기 명령어 인출 회로에 연결된 입력을 구비하며, 상기 명령어 인코딩 값을 상기 데이터 프로세서에 의해 실행될 수 있는 포맷으로 변환함으로써 상기 명령어 인코딩 값을 준비하는 명령어 디코더와;상기 명령어 디코더에 연결되어 명령어를 실행하기 위한 실행 유닛; 및상기 명령어 인출 회로와, 상기 명령어 디코더 및 상기 실행 유닛의 각각에 연결되고, 조건부 분기 명령어에 의해 나타내어지는 명령어 흐름의 방향에 의해 결정되며 조건부 분기 명령을 만났을 때 상기 명령어 인출 회로가 다른 명령어를 인출하는 다수의 동작 모드 중 하나를 결정하는 분기 제어 값에 응답해서 명령어 인출 회로의 제어 입력으로 제어 신호를 제공하는 제어 유닛을 포함하는 장치.
- 조건부 분기 명령어 실행을 제어하기 위한 데이터 프로세서 내의 장치에 있어서,명령어 인코딩 값을 얻기 위해 명령어 어드레스를 제공하며, 제어 입력을 구비하는 명령어 인출 회로와;상기 명령어 인코딩 값을 수신하기 위한 상기 명령어 인출 회로에 연결된 입력을 구비하며, 상기 명령어 인코딩 값을 상기 데이터 프로세서에 의해 실행될 수 있는 포맷으로 변환함으로써 상기 명령어 인코딩 값을 준비하는 명령어 디코더와;상기 명령어 디코더에 연결되어 명령어를 실행하기 위한 실행 유닛; 및상기 명령어 인출 회로와, 상기 명령어 디코더 및 상기 실행 유닛의 각각에 연결되고, 명령어 흐름의 변화 방향이 순방향인지 역방향인지의 지시에 기초해서 부가적인 명령어의 예비 인출, 조건부 실행 또는 조건이 결정될 때까지 부가적인 명령어의 실행을 허용하지 않으면서 부가적인 명령어의 예비 인출을 각각 결정하는 분기 제어 신호를 조건부 분기 명령어에 응답하여 상기 명령어 인출 회로의 제어 입력으로 제공하는 제어 유닛을 포함하는 장치.
- 조건부 분기 실행을 구비하는 데이터 프로세서에 있어서,제어 입력을 구비하며, 실행될 다수의 명령어를 인출하기 위한 인출 유닛과;상기 인출 유닛에 연결되고, 상기 인출 유닛으로부터 명령어를 수신하며 실행을 위해 상기 명령어를 디코딩하는 디코더와;상기 디코더에 연결되고, 인출된 명령어를 수신하며 인출된 명령어를 실행하는 실행 유닛과;상기 데이터 프로세서의 동작을 제어하기 위해 상기 인출 유닛과, 상기 디코더 및 상기 실행 유닛 각각에 연결되고, 조건부 분기 명령어에 의해 요구되는 명령어 흐름 변화의 방향이 순방향인지 역방향인지의 결정에 기초해서 순차적인 방식으로 부가적인 명령어를 인출하고 조건부적으로 실행하는 상기 인출 유닛을 제어할 것인지 또는 예측된 목적지 명령어로 점프함으로써 부가적인 명령어를 인출하고 조건부적으로 실행할 것인지를 각각 결정하는 제어 신호를 조건부 분기 명령어의 검출에 응답하여 상기 인출 유닛의 제어 입력으로 제공하는 제어 회로를 포함하는 데이터 프로세서.
- 데이터 프로세서에서 명령어 흐름의 변화를 구현하는 방법에 있어서,다수의 명령어 중 선택된 명령어를 명령어 예비 인출 유닛으로 순차적으로 인출하는 단계와;인출된 다수의 명령어 중 선택된 명령어를 선택적으로 디코딩하는 단계와;디코드된 다수의 명령어 중 선택된 명령어를 선택적으로 실행하는 단계; 및검출되는 조건부 흐름 명령어에 직접 응답해서 소정의 시간 동안 상기 명령어 예비 인출 유닛이 더 이상 다른 명령어를 인출하는 것을 선택적으로 디스에이블함으로써 상기 명령어 예비 인출 유닛을 직접적으로 제어하는 제어값을 사용하는 단계로서, 상기 명령어 예비 인출 유닛이 자동적으로 재개되는 소정의 시간이 경과할 때까지 인출 동작을 완전히 방지함으로써 상기 디스에이블이 데이터 프로세서의 오버헤드를 감소시키는, 제어값 사용 단계를 포함하는 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/900,796 | 1997-07-25 | ||
US08/900,796 | 1997-07-25 | ||
US08/900,796 US5951678A (en) | 1997-07-25 | 1997-07-25 | Method and apparatus for controlling conditional branch execution in a data processor |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990014132A true KR19990014132A (ko) | 1999-02-25 |
KR100570906B1 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020025687A (ko) * | 2000-09-28 | 2002-04-04 | 포만 제프리 엘 | 마이크로프로세서의 명령 처리 방법 및 마이크로프로세서 |
KR100591769B1 (ko) * | 2004-07-16 | 2006-06-26 | 삼성전자주식회사 | 분기 예측 정보를 가지는 분기 타겟 버퍼 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69836056T2 (de) * | 1997-08-29 | 2007-04-12 | Matsushita Electric Industrial Co., Ltd., Kadoma | Prozessor mit verringerter Zahl von bedingten Befehlen |
US6353880B1 (en) * | 1998-07-22 | 2002-03-05 | Scenix Semiconductor, Inc. | Four stage pipeline processing for a microcontroller |
EP1049100B1 (en) * | 1999-04-28 | 2005-01-19 | STMicroelectronics S.r.l. | Semiconductor device with selectionable pads |
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 |
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 |
US7167954B2 (en) * | 2002-09-09 | 2007-01-23 | Broadcom Corporation | System and method for caching |
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 |
US8145890B2 (en) * | 2009-02-12 | 2012-03-27 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state |
US8521996B2 (en) * | 2009-02-12 | 2013-08-27 | Via Technologies, Inc. | Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution |
Family Cites Families (9)
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 |
US5228131A (en) * | 1988-02-24 | 1993-07-13 | Mitsubishi Denki Kabushiki Kaisha | Data processor with selectively enabled and disabled branch prediction operation |
US4974155A (en) * | 1988-08-15 | 1990-11-27 | Evans & Sutherland Computer Corp. | Variable delay branch system |
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 DE DE69831370T patent/DE69831370T2/de not_active Expired - Fee Related
- 1998-06-02 EP EP98109970A patent/EP0893756B1/en not_active Expired - Lifetime
- 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
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020025687A (ko) * | 2000-09-28 | 2002-04-04 | 포만 제프리 엘 | 마이크로프로세서의 명령 처리 방법 및 마이크로프로세서 |
KR100591769B1 (ko) * | 2004-07-16 | 2006-06-26 | 삼성전자주식회사 | 분기 예측 정보를 가지는 분기 타겟 버퍼 |
US7471574B2 (en) | 2004-07-16 | 2008-12-30 | Samsung Electronics Co., Ltd. | Branch target buffer and method of use |
US7609582B2 (en) | 2004-07-16 | 2009-10-27 | Samsung Electronics Co., Ltd. | Branch target buffer and method of use |
Also Published As
Publication number | Publication date |
---|---|
JPH1196004A (ja) | 1999-04-09 |
DE69831370D1 (de) | 2005-10-06 |
US5951678A (en) | 1999-09-14 |
DE69831370T2 (de) | 2006-03-09 |
KR100570906B1 (ko) | 2006-10-24 |
EP0893756A3 (en) | 2000-11-15 |
EP0893756B1 (en) | 2005-08-31 |
EP0893756A2 (en) | 1999-01-27 |
JP3977931B2 (ja) | 2007-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100570906B1 (ko) | 데이터처리기에서조건부분기실행을제어하기위한장치및방법 | |
JP3771273B2 (ja) | 述語レジスタ・セットをレストアする方法および装置 | |
US5235686A (en) | Computer system having mixed macrocode and microcode | |
KR101225075B1 (ko) | 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법 | |
US6151673A (en) | Data processor | |
JP2845646B2 (ja) | 並列演算処理装置 | |
CN104978284B (zh) | 处理器子程序高速缓冲存储器 | |
US20020078330A1 (en) | Computer system for executing branch instructions | |
US6401196B1 (en) | Data processor system having branch control and method thereof | |
KR100266424B1 (ko) | 롬(rom)용량을 저감한 데이타 프로세서 | |
US5887129A (en) | Asynchronous data processing apparatus | |
US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
JPH0816394A (ja) | システムメモリから命令コードを先取りするための先取り装置および方法 | |
US5835746A (en) | Method and apparatus for fetching and issuing dual-word or multiple instructions in a data processing system | |
US7234046B2 (en) | Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping | |
US20020116598A1 (en) | Computer instruction with instruction fetch control bits | |
US5404471A (en) | Method and apparatus for switching address generation modes in CPU having plural address generation modes | |
EP0279953A2 (en) | Computer system having mixed macrocode and microcode instruction execution | |
JPH11345121A (ja) | プログラム制御ユニット用の命令取り出し装置および方法 | |
JP3830236B2 (ja) | クイック・デコード命令を用いるための方法およびデータ処理システム | |
KR900010552A (ko) | 명령을 페치(fetch)하기 위한 제어 시스템 | |
US6430682B1 (en) | Reliable branch predictions for real-time applications | |
US20040019772A1 (en) | Microprocessor | |
KR920006613B1 (ko) | 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트 | |
KR100632317B1 (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 |