KR19990014132A - 데이터 프로세서에서 조건부 분기 실행을 제어하기 위한 방법 및 장치 - Google Patents

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

Info

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
Application number
KR1019980029786A
Other languages
English (en)
Other versions
KR100570906B1 (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 or 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 or 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

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)

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

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* 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
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

Cited By (4)

* Cited by examiner, † Cited by third party
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