KR100597328B1 - 브랜치 제어를 하는 데이터 처리 시스템 및 그 방법 - Google Patents

브랜치 제어를 하는 데이터 처리 시스템 및 그 방법 Download PDF

Info

Publication number
KR100597328B1
KR100597328B1 KR1019990023079A KR19990023079A KR100597328B1 KR 100597328 B1 KR100597328 B1 KR 100597328B1 KR 1019990023079 A KR1019990023079 A KR 1019990023079A KR 19990023079 A KR19990023079 A KR 19990023079A KR 100597328 B1 KR100597328 B1 KR 100597328B1
Authority
KR
South Korea
Prior art keywords
instruction
branch
address
command
output
Prior art date
Application number
KR1019990023079A
Other languages
English (en)
Other versions
KR20000006302A (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 KR20000006302A publication Critical patent/KR20000006302A/ko
Application granted granted Critical
Publication of KR100597328B1 publication Critical patent/KR100597328B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

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)
  • Executing Machine-Instructions (AREA)

Abstract

파이프라인(pipeline)된 데이터 처리 시스템(10)은 어드레스 발생 유닛(30)을 포함한다. 어드레스 발생 유닛(30)은 타겟 어드레스 레지스터(58), 단축 역방향 브랜치(SBB) 어드레스 레지스터(60), 및 작은 루프들을 더 효율적으로 실행시키고 브랜치 명령을 페치하지 않으면서 브랜치 폴딩(branch folding)을 허용하는 카운터 레지스터(74)를 포함한다.
데이터 처리기, 버스 인터페이스 모듈, 명령 레지스터, 브랜치 제어부, 상태 머신

Description

브랜치 제어를 하는 데이터 처리 시스템 및 그 방법{Data processor system having branch control and method thereof}
도 1은 단축 역방향 브랜치(SBB: Short Backwards Branch) 명령들을 위한 명령 포맷을 예시한 도면.
도 2는 단축 순방향 브랜치(SFB: Short Forwards Branch) 명령들을 위한 명령 포맷을 예시한 도면.
도 3은 루프의 끝에 SBB를 포함하는 프로그램 루프를 예시한 도면.
도 4는 본 발명에 따른 데이터 처리 시스템을 블록도 형태로 예시한 도면.
도 5는 도 4의 CPU(12)를 블록도 형태로 예시한 도면.
도 6은 도 5의 어드레스 발생 유닛(30)을 부분 블록도 형태 및 부분 논리도 형태로 더 상세히 예시한 도면.
도 7은 도 5의 브랜치 제어부(34)를 부분적인 블록도 형태 및 부분적인 논리도 형태로 더 상세히 예시한 도면.
도 8은 브랜치 제어부(34)의 상태 머신의 동작을 설명하기 위한 부분적인 상태도.
도 9는 본 발명에 따른 도 4의 데이터 처리 시스템의 여러 가지 신호들의 타이밍도를 예시한 도면.
도 10은 SBB 및 SFB를 포함한 프로그램 루프를 예시한 도면.
도 11은 대안적 실시예를 위해 도 5의 브랜치 제어부(34)를 부분적인 블록도 및 부분적인 논리도 형태로 예시한 도면.
도 12는 본 실시예에 따라 대안적 실시예를 이용한 도 4의 데이터 처리 시스템의 여러 가지 신호들의 타이밍도를 예시한 도면.
* 도면의 주요부분에 대한 부호의 설명 *
10: 데이터 처리기 12: 중앙 처리 장치(CPU)
14: 메모리 16: 버스 인터페이스 모듈
20: 버스 22, 24, 28: 집적 회로 단자
26: 외부 버스
본 발명은 일반적으로 데이터 처리에 관한 것으로서, 특히 최적의 브랜치 제어를 하는 데이터 처리 시스템 및 그 방법에 관한 것이다.
저 전력 설계 기술들은 휴대용 및 핸드헬드 애플리케이션들(handheld applications)의 광범위한 이용으로 인해 마이크로프로세서 및 마이크로컨트롤러 설계에서 중요해지고 있다. 이러한 애플리케이션들은 긴 배터리 수명 및 낮은 시스템 비용을 요구한다. 휴대용 애플리케이션은 일반적으로, 다음의 2개의 동작 모드들 사이에서 선택적으로 동작한다 : (ⅰ) 능동 계산들이 수행되는 버스트 모드(burst mode), 및 (ⅱ) 시스템이 슬립 상태(sleep)로 되어 새로운 계산 이벤트가 발생하기를 대기하는 전력 다운 모드(또는, 슬립 모드). 서브시스템(마이크로프로세서가 포함됨)이 전체 시스템 전력 중 소량만을 소비한다면, 서브시스템을 위한 저 비용 및 고 성능이 설계 목적이 되어야 한다.
브랜치들이 파이프라인(pipeline)된 기계의 성능을 낮추는 주요 요인으로 인식되어 왔다. 이것은 브랜치들이 명령 스트림의 연속적인 흐름을 중단시키기 때문이다. 또한, 브랜치들은 종종, 실행 파이프라인으로 깊게 리졸브될(resolve) 수 있다. 브랜치 예측 및 추론적 실행과 같은 기술들이 브랜치의 역효과를 줄이기 위해 폭넓게 이용된다. 이러한 기술들은 불행하게도 종종 하드웨어 집약적 구현들을 요구한다. 브랜치들에 대한 성능을 향상시키기 위해 다른 대안적인 저 비용 방법들이 필요하다.
마이크로프로세서들에 의해 취해진 브랜치 경로들을 최적화하기 위해 이용되는 종래의 방법이 이용되었다. 브랜치 명령들의 실행을 최적화시키는 한가지 종래의 방법으로는 소프트웨어 루프 전개(software loop unrolling)로서 알려져 있다. 소프트웨어 루프 전개는 특정 루프가 여러 번 실행될 것임이 알려진 컴파일 시점에서 발생한다. 소프트웨어 루프 전개는 루프 내의 코드를 복사하여, 코드가 복사된 횟수와 동일한 인자만큼 루프를 통과하는 반복 횟수를 감소시킨다. 예를 들면, 특정 소프트웨어 루프가 100회 실행되는 컴파일 시점으로 알려지면, 전개된 루프 내에 포함된 코드의 2개의 사본들을 배치할 수 있으며 실제 브랜치를 50회만 실행한다. 그러나 상기 기술은 잠재적으로 반복에 대한 사이클들을 줄일 수 있지만 더 큰 정적 프로그램 크기를 생성해야 한다.
브랜치를 최적화하기 위한 다른 공지된 종래의 기술은 특정 루프 명령을 이용하는 것이었다. 종래의 특정 루프 명령들은 브랜치 및 루프 카운터의 감소(또는 증가)가 단일 명령 내에서 발생하도록 설계된다. 그 결과, 반복시마다 한 클록 사이클이 줄어든다. 그러나 각 특정 루프 명령들은 고유한 명령 연산 코드(opcode)를 필요로 한다. 따라서, 특정 브랜치 명령들의 이용이 반복시마다 클록 사이클을 줄일 수 있지만, 더 큰 명령 세트의 비용이 수반된다.
다른 종래의 방법은 특정 루프 명령들을 따라 루프 모드를 통합하는 것이다. 루프 모드는 이전 명령이 특정한 횟수로 반복됨을 나타내는 명령이다. 상기 구현은 여러 번 순차적으로 실행될 명령을 페치하는 것을 회피할 수 있다. 그러나 이러한 기술은 특정 루프 명령들의 존재를 필요로 하며 루프 몸체(loop body)를 단일 명령으로 제한한다.
따라서, 프로그램 루프들을 실행시키기 위해 필요한 클록 사이클들의 수를 최소화시키는 더욱 다양한 브랜치 방법이 요구된다.
도 1은 SBB로 표시된 단축 역방향 브랜치 명령들을 위한 명령 포맷을 예시한 것이다. 도 2는 SFB로 표시된 단축 순방향 명령들을 위한 명령 포맷을 예시한 것이다. SBB 및 SFB는 조건적 또는 비조건적 PC 관련 브랜치 명령들이다. 상이한 브랜치 명령들(상이한 연산 코드들을 가짐)은 총체적으로 SBB 명령들 또는 SFB 명령들로 규정될 수 있다.
이들 명령들은 다음의 2가지 필드로 분리될 수 있다: (ⅰ) 브랜치의 유형을 명시하는 연산 코드, 및 (ⅱ) 브랜치 타겟 어드레스를 형성하기 위하여 프로그램 카운터(PC)에 부가된 브랜치 변위(branch displacement). SBB 명령들에 대하여, 브랜치 변위는, 음의 브랜치 변위를 갖는 것을 나타내는 선행하는 1들(leading ones)을 가지며, PC에 부가될 때 역방향 브랜치 타겟을 생성한다. 마찬가지로, SFB 명령들에 대하여, 브랜치 변위는 음의 브랜치 변위를 갖는 것을 나타내는 선행하는 0들을 갖는다.
브랜치 변위 필드는 2가지 필드로 더 분리될 수 있다: (ⅰ) UD로 표현되는 상측 변위 필드, 및 (ⅱ) LD로 표현되는 하측 변위 필드. 상측 변위 필드는 SBB에 대한 모든 "1들", 및 SFB에 대한 모든 "0들"이다. 한 실시예에서, SBB 및 SFB의 LD 필드의 폭은 같은데, 즉 w 비트 폭이다. 규정에 의해 SBB는 2w로 주어진 제한된 역방향 브랜치 거리를 갖는다. 여기서 w는 LD 필드의 폭이다. 마찬가지로, SFB는 2w로 주어진 제한된 순방향 브랜치 거리를 갖는다.
도 3은 루프의 끝에 SBB 명령을 갖는 프로그램 루프를 예시한다. SBB 명령은 어드레스 ASBB에 위치된다. SBB 다음의 명령은 어드레스 AFT에 위치된 폴-스루 명령(fall-through instruction; IFT)으로 설계된다. 마찬가지로, IFT 다음의 명령은 어드레스 AFT+1에 위치된 IFT+1이다.
도 4는 본 발명의 일 실시예에 따른 데이터 처리기(10)를 블록도 형태로 예시한다. 일 실시예에서, 데이터 처리기(10)는 중앙 처리 장치(CPU)(12), 메모리(14), 버스 인터페이스 모듈(16) 및 다른 모듈(18)을 포함하며, 이들은 모두 버스(20)에 의해 서로 양방향으로 결합된다. 버스 인터페이스 모듈(16)은 외부 버스(26)에 의해 데이터 처리기(10)의 외부에 결합될 수 있다. 다른 모듈(18)은 하나 이상의 집적 회로 단자들(28)에 의해 데이터 처리기(10)의 외부와 선택적으로 결합된다. 메모리(14)는 하나 이상의 집적 회로 단자들(24)에 의해 데이터 처리기(10)의 외부와 선택적으로 결합된다. 중앙 처리 장치(12)는 하나 이상의 집적 회로 단자들(22)에 의해 데이터 처리기(10)의 외부와 선택적으로 결합된다.
도 4를 다시 참조하면, 본 발명의 다른 실시예들은 데이터 처리기(10)에 대한 소정 형태의 구성을 이용할 수 있다. 또한, 데이터 처리기(10)는 폭넓은 다양한 기능들을 수행할 수 있다. 예를 들면, 데이터 처리기(10)는 RISC(Reduced Instruction Set Computer: 축소 명령 세트 컴퓨터) 구조를 이용할 수 있고, 하바드(Harvard) 구조를 이용할 수 있고, 벡터 처리기를 이용할 수 있고, SIMD(Single Instruction Multiple Data: 단일 명령 복수 데이터) 처리기를 이용할 수 있고, 부동 소수점 구조를 이용할 수 있으며, 디지털 신호 처리 계산들 등을 이용할 수 있다.
도 5는 본 발명에 따른 CPU(12)를 블록도 형태로 예시한다. CPU(12)는 발생 유닛(30), 제어 유닛(32), 명령 레지스터(IR)(36), 멀티플렉서(38), 폴-스루 명령 레지스터(IRFT)(40), 실행 유닛(44), 데이터 입력 버퍼(46) 및 데이터 출력 버퍼(48)를 포함한다. 제어 유닛(32)은 브랜치 제어부(34)를 포함한다.
메모리(14)는 "ADDRESS"로 라벨이 붙여진 어드레스를 수신하기 위하여 어드레스 버스에 결합되며, "DATA"로 라벨이 붙여진 데이터를 제공하기 위하여 결합된다. 메모리(14)는 정적 랜덤 액세스 메모리들(SRAMs)과 동적 랜덤 액세스 메모리들(DRAMs)과 같은 휘발성 메모리들과 또는 전기적으로 프로그램 가능한 판독 전용 메모리들(EPROM)과 플래시 메모리와 같은 비휘발성 메모리들을 포함한 소정 유형의 종래의 메모리일 수 있다. 또한, 메모리(14)는 CPU(12)와 동일한 집적 회로 상에 있거나 CPU(12)와 외부적으로 위치될 수 있다. 어드레스 발생 유닛(30)은 "OPERAND ADDRESS"로 라벨이 붙여진 오퍼랜드 어드레스를 실행 유닛(44)으로부터 수신하기 위한 제 1 복수의 입력 단자들, 명령 레지스터(36)로부터 브랜치 변위 필드를 수신하기 위한 제 2 복수의 입력 단자들, 및 어드레스 신호들 "ADDRESS"을 메모리(14)에 제공하기 위한 복수의 출력 단자들을 구비한다. 어드레스 발생 유닛 및 메모리(14)는 "CONTROL"로 라벨이 붙여진 제어 신호들을 통해 제어 유닛(32)에 의해 제어된다.
멀티플렉서(38)는 데이터 입력 버퍼(46)로부터의 명령들을 수신하기 위한 제 1 복수의 입력 단자들, 폴-스루 명령 레지스터(IRFT)(40)의 출력 단자에 결합된 제 2 복수의 입력 단자들, 및 데이터 입력 버퍼(46)로부터의 명령 또는 레지스터(40)에 저장된 폴-스루 명령 중 어느 하나를 제공하기 위한 복수의 출력 단자들을 구비한다. 브랜치 제어부(34)는 명령 레지스터(36), 멀티플렉서(38) 및 폴-스루 명령 레지스터(40)의 동작을 제어하기 위한 제어 신호들을 제공한다.
데이터 입력 버퍼(46)는 메모리(14)로부터 데이터를 수신하고, 버퍼링된 데이터를 실행 유닛(44)에 제공하고 및/또는 명령들을 멀티플렉서(38)의 제 1 복수의 입력 단자들에 제공한다. 데이터 출력 버퍼(48)는 실행 유닛(44)으로부터 출력 데이터를 수신하고, 기입될 데이터를 메모리(14)에 제공한다. 데이터 입력 버퍼(46) 및 데이터 출력 버퍼(48)는 제어 유닛(32)에 의해 제공된 제어 신호들에 의해 제어된다.
명령 디코더(42)는 명령을 수신하기 위해 명령 레지스터(36)에 결합된다. 명령 디코더(42)는 실행 유닛(44)에 결합된다. 실행 유닛(44)은 메모리(14)로부터 데이터를 수신하기 위해 데이터 입력 버퍼(46)에 결합된다. 마찬가지로, 실행 유닛(44)은 데이터를 메모리(14)에 제공하기 위해 데이터 출력 버퍼(48)에 결합된다. 실행 유닛(44)은 명령 디코더(42)에 의해 디코딩된 명령들을 선택적으로 실행하고, 그 결과를 데이터 출력 버퍼(48) 또는 어드레스 발생 유닛(30)에 제공한다. 실행 유닛(44)은 예를 들면 연산 논리 유닛(ALU)을 포함한다.
제어 유닛(32)은 명령들을 수신하기 위해 명령 레지스터(36)에 결합되고, 응답시 어드레스 발생 유닛 및 메모리(14)의 동작을 제어하기 위해 "CONTROL"로 라벨이 붙여진 제어 신호들을 제공한다. 제어 유닛(32)은 명령 디코더(42)에 결합되고 실행 유닛(44)에 결합된다. 실행 유닛(44)은 조건 코드 정보를 제어 유닛(32)에 제공한다.
데이터 처리 시스템(10)은 4단계 파이프라인으로 명령을 실행한다. 4단계는 페치 단계, 디코딩 단계, 실행 단계 및 후기입(write-back) 단계를 포함한다. 명령 페치 단계 동안, 명령은 메모리(14)와 같은 메모리로부터 검색된다. 다음에, 명령은 명령 디코더(42)에 디코딩된다. 디코딩된 명령은 실행 유닛(44)에 제공되어 실행 유닛(44)의 동작을 제어한다. 다음에, 실행 유닛(44)은 명령 실행의 결과를 데이터 출력 버퍼(48)를 통해 메모리(14)에 후기입한다.
도 6은 도 5의 어드레스 발생 유닛(30)을 부분적인 블록도 및 부분적인 논리도 형태로 상세히 예시한다. 어드레스 발생 유닛(30)은 어드레스 멀티플렉서(50), 레지스터(52), 프로그램 카운터(54), 타겟 어드레스 레지스터(58), 가산기(56), SBB 어드레스 레지스터(60), 멀티플렉서(62), 멀티플렉서(64), 가산기(66) 및 멀티플렉서(68)를 포함한다. 어드레스 멀티플렉서(50)는 "OPERAND ADDRESS"로 라벨이 붙여진 어드레스를 수신하기 위한 제 1 복수의 입력 단자들, 가산기(66)의 출력 단자들에 결합된 제 2 복수의 입력 단자들, 멀티플렉서(68)의 출력 단자들에 결합된 제 3 복수의 입력 단자들 및 레지스터(52)의 입력 단자들에 결합된 복수의 출력 단자들을 구비한다. 레지스터(52)는 "ADDRESS"로 라벨이 붙여진 어드레스 신호들을 프로그램 카운터(54)의 입력 단자들 및 레지스터(58)의 입력 단자들에 제공하기 위한 복수의 출력 단자들을 구비한다. 프로그램 카운터(54)는 가산기(56)의 제 1 복수의 입력 단자들, 및 멀티플렉서(62)의 제 1 복수의 입력 단자들에 결합된 복수의 출력 단자들을 구비한다. 가산기(56)는 프로그램 카운터(54)의 출력을 "2"에 가산하고, 출력 단자들 상의 결과를 멀티플렉서(68)의 제 2 복수의 입력 단자들 및 레지스터(60)의 입력 단자들에 제공한다. "2"는 프로그램 카운터(54)에 가산되는데, 그 이유는 명령 폭이 2바이트와 동일하기 때문이다. "2"가 예시된 실시예에서 프로그램 카운터 값에 가산됨을 유념하고, 다른 명령 폭들을 갖는 다른 실시예들에서는 다른 번호를 이용할 수 있다. "ASBB"로 라벨이 붙여진 레지스터(60)의 출력 단자들은 멀티플렉서(62)의 제 2 복수의 입력 단자들에 결합된다. 멀티플렉서(64)는 입력으로 "4"를 수신하기 위한 제 1 복수의 입력 단자들, 및 명령의 브랜치 변위 필드를 수신하기 위해 명령 레지스터(36)에 결합된 제 2 복수의 입력 단자들을 구비한다. "4"는 ASBB에 가산되어, AFT+1이 메모리(14)에 제공될 수 있도록 한다. AFT+1은 SBB 이후의 2개의 명령들인 IFT+1에 대한 어드레스이다. 다른 실시예에서, AFT+1은 다른 방법들을 이용하여 발생될 수 있다. 멀티플렉서(64)는 가산기(66)의 제 2 복수의 입력 단자들에 결합된 복수의 출력 단자들을 구비한다. "BRANCH ADDRESS"로 라벨이 붙여진 가산기(66)의 출력 단자들은 어드레스 멀티플렉서(50)의 입력 단자들에 결합된다.
도 7은 도 5의 브랜치 제어부(34)를 부분적인 블록도 형태 및 부분적인 논리도 형태로 더욱 상세히 예시한다. 브랜치 제어부(34)는 상태 머신(상기 도면에서는 도시되지 않음), LD 레지스터(70), 멀티플렉서(72), 카운트_레지스터(74), 가산기(76) 및 비교기(78)를 포함한다. LD 레지스터(70)는 명령의 브랜치 변위 필드의 하측 변위 비트들을 명령 레지스터(36)로부터 수신하기 위한 복수의 입력 단자들, 및 멀티플렉서(72)의 제 1 복수의 입력 단자들에 결합된 복수의 출력 단자들을 구비한다. 멀티플렉서(72)는 또한 하측 변위 비트들을 명령 레지스터(36)로부터 수신하기 위한 제 2 복수의 입력 단자들, 및 가산기(76)의 출력부에 결합된 제 3 복수의 입력 단자들을 구비한다. "COUNT"로 라벨이 붙여진 멀티플렉서(72)의 복수의 출력 단자들은 카운트_레지스터(74)의 입력 단자들에 결합된다. 카운트_레지스터(74)의 출력 단자들은 가산기(76)의 제 1 복수의 입력 단자들에 결합된다. 가산기(76)는 "1"을 수신하기 위한 제 2 복수의 입력 단자들을 구비한다. 레지스터(70, 74) 및 멀티플렉서(72)는 제어 유닛(32)으로부터 제어된다. 비교기(78)는 멀티플렉서(72)의 출력부에 결합된 제 1 복수의 입력 단자들, "1"을 수신하기 위한 제 2 복수의 입력 단자들, 및 "PREDICT_TAKEN"으로 라벨이 붙여진 루프 신호의 끝을 제어 유닛(32)에 제공하기 위한 출력부를 구비한다. 다른 실시예들에서, 다른 수단은 예를 들면 어드레스 비교와 같은 PREDICT_TAKEN 신호를 발생하기 위해 이용될 수 있다.
도 8은 도 5의 브랜치 제어의 상태 머신의 동작을 설명하기 위한 단순화된 상태도를 예시한다. 브랜치 제어부(34)의 상태 머신은 2개의 동작 상태들을 갖는다. 제 1 상태, 즉 유휴 상태(IDLE state; 40)는 단축 역방향 브랜치(SBB)가 검출되지 않음을 나타낸다. SBB의 검출시, SBB가 취해지면, 브랜치 제어부(34)의 상태 머신은 유휴 상태(40)를 빠져나가 활성 상태(ACTIVE state; 42)로 진입한다. 일 실시예에서, 활성 상태에 있을 때, 다른 SBB가 검출되어 취해지면, 상태 머신은 유휴 상태로 복귀될 수 있다. 다른 실시예에서, 활성 상태에 있을 때, 다른 SBB가 검출되어 취해지면, 상태 머신은 활성 상태로 남게 된다. 이 경우, 도 7의 LD 레지스터(70) 및 COUNT는 새롭게 마주친 SBB의 LD 필드에 재로드될 수 있다. 상태 머신은 다음의 2가지 조건들이 만족될 때 유휴 상태로 복귀될 수 있다: (1) 유휴 상태에서 활성 상태로의 전이를 트리거시킨 검출된 SBB 명령이 취해지지 않거나, 또는 (2) 흐름의 변화가 발생되었고 트리거링 SBB에 의해 야기되지 않는다. 조건 (1)은 루프가 루프의 끝에서의 SBB를 통해 연속적으로 빠져나가는 경우에 대응한다. 조건 (2)는 루프 몸체 내에 있거나 또는 없는 목적지를 갖는 루프 몸체 내에 흐름의 변화가 있는 경우에 대응한다.
도 9는 본 발명에 따른 도 4의 데이터 처리 시스템의 여러 가지 신호들의 타이밍도를 예시한다. 도 1 내지 도 9를 참조하면, 데이터 처리 시스템의 동작은 이후에 설명된다.
데이터 처리 시스템(10)은 일반적으로 브랜치 명령과 같은 흐름 명령의 변화가 일어날 때까지 메모리(14)로부터 연속적으로 검색된 명령들을 실행한다. 도 9는 연속적인 클록 사이클들 상에서의 어드레스들 A0 내지 A2의 발생을 예시한다. 또한, 각 발생된 어드레스에 대응하는 데이터가 각 다음의 클록 사이클 상에서 검색된다. 예를 들면, 어드레스 A0에 대응하는 명령 IO는 사이클 2 상에서 메모리로부터 검색되고, 명령 I1은 어드레스 A1 등의 발생 후에 사이클 3에서 검색된다. 클록 사이클 4에서, SBB 명령에 대응하는 어드레스, 즉 ASBB는 메모리(14)에 발생된다. SBB 명령은 클록 사이클 6에서 검출된다. 검출된 SBB 명령에 응답하여, 타겟 어드레스, 즉 어드레스 AO는 레지스터(58)에 로드된다. 이와 동시에, 폴-스루 명령 IFT는 IRFT 레지스터(40)에 로드된다. IFT 명령은 정적 프로그램 순서로 SBB 명령 바로 다음의 명령이다.
각 어드레스 후에 반 클록 사이클은 명령을 검색하기 위해 메모리(14)에 제공되며, 어드레스는 도 9에 예시된 바와 같이 프로그램 카운터(54)에 래치된다. 클록 사이클들 3 내지 7은 제 1 반복을 규정한다. SBB 검출은 디코딩 단계에서 발생한다. SBB가 사이클 후에 취해지면, 제어 유닛(32)의 상태 머신은 유휴 상태에서 활성 상태로 진행한다. 또한, SBB가 검출되면, 명령 레지스터(36)로부터의 변위 필드 ID는 LD 레지스터(70)(도 7)에 로드된다. 실행된 각 다음 명령에 대하여, 도 4의 루프값 또는 COUNT가 1씩 증가된다. 루프 신호 PREDICT_TAKEN(도 7) 의 끝은 비교기(78)로부터 제어 유닛(32)에 제공된다. PREDICT_TAKEN은 도 7의 COUNT가 -1에 도달할 때 삽입된다.
루프의 제 2 반복은 COUNT가 클록 사이클(9)에서의 -1의 값에 도달할 때까지 진행한다. 클록 사이클 9에서, 예측은 PREDICT_TAKEN 신호가 제어 유닛(32)에 삽입될 때 이루어져, 타겟 어드레스 AO가 어드레스 버스 상의 타겟 어드레스 레지스터(58)로부터 메모리(14)로 로드된다.
또한, 클록 사이클 9에서, 프로그램 카운터(54)는 어드레스 A2를 포함한다. 상기 어드레스는 ASBB의 결과를 생성하는 가산기(56)를 이용하여 2씩 증가된다. 다음에, 상기 결과 어드레스는 SBB 어드레스 레지스터(60)에 로드된다. 프로그램 흐름은 다른 예측이 이루어지는 사이클 12까지 제 3 반복으로부터 지속된다. 어드레스 AO는 타겟 어드레스 레지스터(58)로부터 다시 취해져서 메모리(14)에 제공된다. 상기 예에서 도시된 바와 같이, 클록 사이클 14의 끝에서, 브랜치가 잘못 예측된 것으로 결정된다. 브랜치는 조건 코드의 값 및 브랜치의 형태에 의해 잘못 예측된 것으로 결정된다. 명령 IO는 이미 페치되어 잘못된 예측이 사이클 14에서 식별될 때 디코딩된다. SBB 어드레스 레지스터(60)에 미리 로드된 어드레스는 명령 페치가 AFT+1으로부터 개시하도록 한다. 다음에, 이 결과 어드레스는 어드레스 버스를 통해 메모리(14)에 로드된다. 이것은 명령 페치는 AFT+1으로부터 개시하도록 하며, 따라서 실행 버블(execution bubble)이 발생하는 것을 방지할 수 있다. 복구는 잘못된 예측 다음의 한 클록 사이클을 개시하며, 상기 포인트 명령 IO에서 실행 단계에 있다. Io의 실행은 종료된다. Io의 종료 후에, 잘못된 예측에 응답하여 명령 IFT는 IRFT(40)로부터 명령 레지스터(36)로 로드된다. 다음에, 명령 실행이 IFT로 지속된다. 잘못된 예측은 또한 도 8의 상태 머신이 활성에서 유휴 상태로 전이하도록 한다.
이와 동시에 명령 레지스터(36) 및 발생 어드레스 AFT+1에 복구 사이클, 즉 사이클 15와 같은 사이클로 제공함으로써, 제로 사이클 잘못된 예측 패널티가 구현된다. 또한, 도 9에 도시된 루프의 제 1 반복이 5 사이클을 취함을 주지한다. 정확한 예측을 갖는 제 2 반복은 3개의 사이클만을 취하며, 이는 폴딩 브랜치들 없이 정상적으로 취해지는 것보다 2개 더 작다. 잘못된 예측을 갖는 제 3 반복은 4개의 사이클만을 취한다(IFT가 상기 사이클에서 디코딩됨에 따라 복구 사이클을 포함하지 않는다).
상술한 실시예에서, 활성 상태일 때, SBB에 의해 유휴에서 활성 상태로의 전이를 트리거하는 것이 일어나지 않는 흐름의 변화가 있고, 흐름의 변화 타겟이 루프 몸체 내에 있다면, 상태 머신은 활성 상태로 빠져나간다. 이것은 흐름의 변화 목적지가 아직 루프 몸체 내에 있더라도 발생한다. 이러한 제한을 극복하기 위하여, 다음의 실시예에서 개선된 브랜치 폴딩 기술을 제공한다.
도 10은 루프의 끝에서 SBB를 포함하는 프로그램 루프를 예시한다. 또한, A1에 위치된 루프 몸체 내에 SFB를 포함한다. SFB의 목적지는 A4이고, 순방향 브랜치 거리는 +3이다. 도 10은 도 12와 연관하여 개선된 브랜치 폴딩 동작을 설명하기 위하여 이용된다.
도 11은 도 5의 브랜치 제어부(34)를 부분적인 블록도 형태 및 부분적인 논리도 형태로 예시한다. 브랜치 제어부(34)는 상태 머신(상기 도면에는 도시되지 않음), LD 레지스터(94), 멀티플렉서(90), 카운트_레지스터(82), 가산기(80), 비교기(98), 비-음 검출기(non-negative detector; 100), 보정_카운트 레지스터(corrected_count register; 92) 및 가산기(96)를 포함한다. 레지스터(94)는 명령 레지스터(36)로부터의 명령의 브랜치 변위 필드의 하측 변위 비트들을 수신하기 위한 복수의 입력 단자들, 및 멀티플렉서(90)의 제 1 복수의 입력 단자들에 결합된 복수의 출력 단자들을 포함한다. 멀티플렉서(90)는 또한 명령 레지스터(36)로부터의 하측 변위 비트들을 수신하기 위한 제 2 복수의 입력 단자들, 가산기(80)의 출력부에 결합된 제 3 복수의 입력 단자들, 및 보정_카운트 레지스터(92)의 출력부에 결합된 제 4 복수의 입력 단자들을 포함한다. "COUNT"로 라벨이 붙여진 멀티플렉서(90)의 복수의 출력 단자들은 카운트_레지스터(82)의 입력 단자에 결합된다.
카운트_레지스터(82)의 출력 단자들은 가산기(80)의 제 1 복수의 입력 단자들에 결합된다. 가산기(80)는 "1"을 수신하기 위한 제 2 복수의 입력 단자들을 구비한다. LD 레지스터(94), 카운트_레지스터(82) 보정_카운트 레지스터(92) 및 멀티플렉서(90)는 제어 유닛(32)으로부터 제어된다. 비교기(98)는 멀티플렉서(90)의 출력부에 결합된 "COUNT"로 라벨이 붙여진 제 1 복수의 입력 단자들, 및 "-1"을 수신하기 위한 제 2 복수의 입력 단자들, 및 "PREDICT_TAKEN"으로 라벨이 붙여진 루프 신호의 끝을 제어 유닛(32)에 제공하기 위한 출력부를 포함한다. 비-음 검출기(100)는 멀티플렉서(90)의 출력부에 결합된 복수의 입력 단자들, 및 "INVALIDATE"로 라벨이 붙여진 신호를 제어 유닛(32)에 제공하기 위한 출력부를 구비한다. 보정_카운트 레지스터(92)는 가산기(96)의 출력부에 결합된 복수의 입력 단자들을 구비한다. 카운트_레지스터(82)는 가산기(96)의 제 2 복수의 입력 단자들에 결합된 "LATCH_CNT"으로 라벨이 붙여진 복수의 출력 단자들을 구비한다. 다른 실시예들에서, 다른 수단이 예를 들면 어드레스 비교와 같은 PREDICT_TAKEN을 발생하기 위하여 이용될 수 있다.
도 12는 개선된 동작에 따른 도 4의 데이터 처리 시스템의 여러 가지 신호들의 타이밍도를 예시한다. 도 10 내지 도 12를 참조하면, 데이터 처리 시스템(10)의 동작은 개선된 구조에 대하여 설명된다.
제 1 반복 실행 중, 어드레스 ASBB에 위치된 SBB가 검출된다(사이클 2에서). 이것의 하측 변위 필드는 도 11의 COUNT로 로드된다. SBB는 다음의 사이클에서 취해지는 것으로 확인된다. 상태 머신은 동일한 사이클(사이클 3)에서 활성 상태로 진입한다. 실행은 Io로부터 지속된다. 사이클 5에서, SFB가 검출된다. 상기 사이클 동안, COUNT는 -4이고, LATCH_CNT는 -5이다. +3인 SFB의 하측 변위 필드는 LATCH_CNT에 가산된다. 제 2 반복의 끝을 향하여, 예측은 SBB에 대하여 이루어진다(사이클 7). COUNT는 LD 레지스터(94)로부터 -6으로 재로드된다. SBB는 정확하게 예측되도록 취해지기 때문에, 실행은 Io로부터 지속된다. 사이클 10에서, 동일한 SFB가 다시 검출된다. 상기 예에서 SFB는 사이클 11에서 취해지지 않는 것으로 확인된다. 그 결과, 멀티플렉서(90)는 보정_카운트 레지스터(92)의 출력부 대신에 가산기(80)의 출력부로부터 그 입력을 소싱(source)하기 위한 선택을 한다. 따라서, COUNT는 각 명령이 실행될 때마다 1씩 계속해서 증가된다. COUNT가 -1에 도달하는 사이클 13에서, 다른 예측이 SBB에 대하여 이루어진다. 실행은 이후에 설명되는 바와 같이 지속된다.
일반적으로, 본 발명은 브랜치 명령을 페치하지 않는 브랜치 폴딩을 허용한다. 단일 발생 4단계 파이프라인 데이터 처리 시스템에 대하여, 반복 횟수가 2 미만이면, 저장된 사이클들의 수는 제로가 된다. 3회 반복에 대하여, 저장된 사이클들의 수는 2이고, 4회 반복에 대하여, 저장된 사이클들의 수는 4이며, 5회 반복에 대하여 저장된 사이클들의 수는 6이다. 저장된 사이클들의 수는 2m-4로 표현될 수 있으며, 여기서 m은 반복 횟수와 같다. 또한, 예측이 "잘못 예측(mispredicted)"되었으면, 종래의 브랜치 예측 기술과 같이 어떠한 사이클 패널티도 없다.
저장된 사이클들의 수는 부가된 최소 하드웨어로 구현된다. 또한, 브랜치 명령 및 폴-스루 명령은 페치, 디코딩 및 제 1 반복 후에 실행되지 않기 때문에, 에너지가 절감되고 성능이 향상된다.
본 발명은 특정 실시예의 문맥으로 설명되었지만, 본 발명이 다양한 방식으로 변형될 수 있으며, 특정하게 상술된 것 이외의 많은 실시예를 가정할 수 있음을 당업자는 이해할 수 있다. 예를 들면, 카운트 레지스터에 저장된 계수 또는 루프값은 실제로 증가되고 제 2 어드레스 값과 비교되는 어드레스 값일 수 있다. 따라서, 첨부된 클레임들이 본 발명의 진정한 범주 내에서 본 발명의 모든 변형을 수용하도록 이루어진다.

Claims (5)

  1. 데이터 처리 시스템을 제어하는 방법에 있어서:
    브랜치 어드레스에 위치된 역방향 브랜치 명령을 페치하는 단계로서, 상기 역방향 브랜치 명령은 오프셋 값을 가지며, 상기 역방향 브랜치 명령은 프로그램 루프를 규정하기 위해 메모리 내의 타겟 어드레스에 대한 브랜치를 역으로 수행하는, 상기 페치 단계;
    상기 역방향 브랜치 명령을 패치한 후에 미리 결정된 레지스터 내에 폴 스루 명령(fall through instruction)을 패치 및 저장하는 단계;
    상기 역방향 브랜치 명령에 기초하여, 카운터를 상기 프로그램 루프의 크기와 같은 값으로 설정하는 단계;
    상기 타겟 어드레스에 대응하는 명령에 후속하는 각각의 명령을 실행한 후에 상기 카운터값을 증가시키는 단계;
    브랜치 예측(branch prediction)이 취해져야 하는지를 결정하고 상기 프로그램 루프를 반복하는 단계; 및
    취해진 브랜치 예측이 잘못 예측된 것인지를 결정하고 상기 폴 스루 명령을 검색하는 단계를 포함하는, 데이터 처리 시스템 제어 방법.
  2. 데이터 처리 시스템에서의 루프화 방법에 있어서:
    명령 Ibr-1 및 브랜치 명령 I 을 포함하는 명령 메모리를 제공하는 단계로서, 상기 명령 Ibr-1은 명령 메모리 어드레스 공간 내에서 브랜치 명령 I 바로 앞에 있는, 상기 명령 메모리 제공 단계;
    브랜치 명령 I 을 페치 및 처리하는 단계;
    상기 브랜치 명령을 페치 및 처리하는 단계 후에 타겟 어드레스에서 타겟 명령을 페치 및 처리하는 단계;
    명령 Ibr-1을 페치하는 단계; 및
    명령 Ibr-1을 페치하는 상기 단계 직후에 상기 타겟 어드레스에서 상기 타겟 명령을 페치하는 단계; 및
    값 Ibr+(2*inc)를 어드레스 버스에 제공하는 단계로서, 상기 inc는 명령의 바이트 크기를 표시하는, 상기 값 Ibr+(2*inc) 제공 단계를 포함하는, 루프화 방법.
  3. 데이터 처리 시스템에서의 루프화 방법에 있어서:
    명령 Ibr-1, 브랜치 명령 I , 및 명령 Ibr+1을 포함하는 명령 메모리를 제공하는 단계로서, 상기 명령 Ibr-1은 명령 메모리 어드레스 공간 내에서 상기 브랜치 명령 I 바로 앞에 저장되고, 상기 명령 Ibr+1은 명령 메모리 어드레스 공간 내에서 상기 브랜치 명령 I 바로 다음에 저장되는, 상기 명령 메모리 제공 단계;
    브랜치 명령 I 을 페치 및 처리하는 단계로서, 타겟 어드레스를 저장하는 부단계를 포함하는 상기 브랜치 명령 I 페치 및 처리 단계;
    상기 명령 Ibr+1을 저장된 명령(saved instruction)으로서 페치 및 저장하는 단계;
    상기 명령 Ibr+1을 페치 및 저장하는 단계 후에 브랜치 예측에 기초하여 상기 타겟 어드레스에서 타겟 명령을 페치 및 처리하는 단계로서, 상기 타겟 명령을 레지스터 내에 저장하는 부단계를 포함하는 상기 타겟 명령 페치 및 처리 단계;
    상기 브랜치 예측이 부정확했음을 결정하고 상기 저장된 명령으로 명령 레지스터를 겹쳐 쓰는 단계; 및
    값 Ibr+(2*inc)를 어드레스 버스에 제공하는 단계로서, 상기 inc는 명령의 바이트 크기를 표시하는, 상기 값 Ibr+(2*inc) 제공 단계를 포함하는, 루프화 방법.
  4. 어드레스 발생 유닛을 구비한 데이터 처리 시스템에 있어서:
    상기 어드레스 발생 유닛은:
    제 1 입력부, 제 2 입력부 및 출력부를 구비한 제 1 멀티플렉서;
    상기 제 1 멀티플렉서 출력부에 결합된 입력부 및 출력부를 구비한 프로그램 카운터 레지스터(program counter register);
    제 1 입력부, 상기 프로그램 카운터 레지스터의 출력부에 결합된 제 2 입력부 및 출력부를 구비한 제 2 멀티플렉서;
    상기 제 1 멀티플렉서의 출력부의 결합된 입력부 및 출력부를 구비한 타겟 어드레스 레지스터(target address register);
    상기 프로그램 카운터 레지스터의 출력부에 결합된 제 1 입력부, 제 1 증가값을 수신하기 위한 제 2 입력부 및 출력부를 구비한 제 1 가산기;
    상기 제 1 가산기의 출력부에 결합된 입력부, 및 상기 제 2 멀티플렉서의 제 1 입력부에 결합된 출력부를 구비한 브랜치 어드레스 레지스터; 및
    상기 타겟 어드레스 레지스터의 출력부에 결합된 제 1 입력부, 상기 제 1 가산기의 출력부에 결합된 제 2 입력부, 및 상기 제 1 멀티플렉서의 제 1 입력부에 결합된 출력부를 구비한 제 3 멀티플렉서를 포함하는, 데이터 처리 시스템.
  5. 어드레스 발생 유닛을 구비한 데이터 처리 시스템에 있어서:
    상기 어드레스 발생 유닛은:
    제 1 입력부, 제 2 입력부, 및 페치 어드레스를 제공하기 위한 출력부를 구비한 멀티플렉서 수단;
    상기 페치 어드레스를 수신하도록 결합된 프로그램 카운터;
    브랜치 타겟 어드레스를 상기 멀티플렉서의 제 1 입력에 제공하기 위한 브랜치 타겟 어드레스 발생기 수단으로서, 상기 브랜치 타겟 어드레스는 취해진 브랜치 다음의 브랜치 목적지 어드레스를 나타내는, 상기 브랜치 타겟 어드레스 발생기 수단; 및
    브랜치 명령 다음의 제 2 명령의 어드레스를 상기 멀티플렉서 수단의 제 2 입력에 제공하기 위한 스킵-다음-순차-어드레스 발생기 수단(skip-next-sequential address generator means)을 포함하는, 데이터 처리 시스템.
KR1019990023079A 1998-06-19 1999-06-19 브랜치 제어를 하는 데이터 처리 시스템 및 그 방법 KR100597328B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/100,669 1998-06-19
US09/100,669 US6401196B1 (en) 1998-06-19 1998-06-19 Data processor system having branch control and method thereof

Publications (2)

Publication Number Publication Date
KR20000006302A KR20000006302A (ko) 2000-01-25
KR100597328B1 true KR100597328B1 (ko) 2006-07-10

Family

ID=22280928

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990023079A KR100597328B1 (ko) 1998-06-19 1999-06-19 브랜치 제어를 하는 데이터 처리 시스템 및 그 방법

Country Status (7)

Country Link
US (1) US6401196B1 (ko)
EP (1) EP0965910B1 (ko)
JP (1) JP2000029700A (ko)
KR (1) KR100597328B1 (ko)
CN (1) CN1189816C (ko)
DE (1) DE69919081T2 (ko)
TW (1) TW442753B (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3470948B2 (ja) * 1999-01-28 2003-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
DE50004566D1 (de) * 1999-03-17 2004-01-08 Infineon Technologies Ag Cachen kurzer programmschleifen innerhalb eines instruktions-fifos
US6539541B1 (en) * 1999-08-20 2003-03-25 Intel Corporation Method of constructing and unrolling speculatively counted loops
US6604163B1 (en) * 2000-05-16 2003-08-05 Koninklijke Philips Electronics N.V. Interconnection of digital signal processor with program memory and external devices using a shared bus interface
EP1369774A1 (fr) * 2002-06-06 2003-12-10 CSEM Centre Suisse d'Electronique et de Microtechnique SA Recherche et Développement Dispositif d'élaboration d'adresses pour un processeur de signaux numériques
US20040003210A1 (en) * 2002-06-27 2004-01-01 International Business Machines Corporation Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination
US7130963B2 (en) * 2003-07-16 2006-10-31 International Business Machines Corp. System and method for instruction memory storage and processing based on backwards branch control information
KR100877138B1 (ko) * 2004-03-29 2009-01-09 고쿠리츠 다이가쿠 호진 교토 다이가쿠 데이터 처리장치, 데이터 처리 프로그램, 및 데이터 처리프로그램을 기록한 기록매체
US7269710B1 (en) 2004-07-23 2007-09-11 Zilog, Inc. Program memory space expansion for particular processor instructions
US7415599B1 (en) * 2005-11-01 2008-08-19 Zilog, Inc. Instruction operation and operand memory location determined based on preceding instruction operation and operand memory location
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
TW200723094A (en) * 2005-12-01 2007-06-16 Ind Tech Res Inst Dynamic branch prediction system and method
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
DE602007006215D1 (de) * 2006-09-06 2010-06-10 Silicon Hive Bv Datenverarbeitungsschaltung mit mehreren anweisungchaltung und scheduling-verfahren für eine solche datenschaltung
US20090182984A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore
CN102369941B (zh) * 2010-08-20 2014-04-23 海利尔药业集团股份有限公司 一种含有联苯肼酯和溴虫腈的杀虫杀螨组合物
JPWO2013069551A1 (ja) * 2011-11-09 2015-04-02 日本電気株式会社 デジタル信号プロセッサ、プログラム制御方法、および制御プログラム
US20120185714A1 (en) * 2011-12-15 2012-07-19 Jaewoong Chung Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques
US9436473B2 (en) * 2013-10-08 2016-09-06 Arm Limited Scheduling program instructions with a runner-up execution position
WO2017054132A1 (zh) * 2015-09-29 2017-04-06 华为技术有限公司 一种生成地址的方法及数据处理设备
US10846097B2 (en) * 2018-12-20 2020-11-24 Samsung Electronics Co., Ltd. Mispredict recovery apparatus and method for branch and fetch pipelines
CN112988233B (zh) * 2021-02-06 2024-03-26 江南大学 一种面向分支指令预测的偏差矫正器及方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3573854A (en) * 1968-12-04 1971-04-06 Texas Instruments Inc Look-ahead control for operation of program loops
US4566063A (en) * 1983-10-17 1986-01-21 Motorola, Inc. Data processor which can repeat the execution of instruction loops with minimal instruction fetches
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
EP0374419A3 (en) 1988-12-21 1991-04-10 International Business Machines Corporation Method and apparatus for efficient loop constructs in hardware and microcode
US5778423A (en) * 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor

Also Published As

Publication number Publication date
DE69919081T2 (de) 2005-01-27
DE69919081D1 (de) 2004-09-09
EP0965910A3 (en) 2000-05-24
TW442753B (en) 2001-06-23
KR20000006302A (ko) 2000-01-25
CN1189816C (zh) 2005-02-16
US6401196B1 (en) 2002-06-04
EP0965910B1 (en) 2004-08-04
JP2000029700A (ja) 2000-01-28
EP0965910A2 (en) 1999-12-22
CN1240279A (zh) 2000-01-05

Similar Documents

Publication Publication Date Title
KR100597328B1 (ko) 브랜치 제어를 하는 데이터 처리 시스템 및 그 방법
US8543796B2 (en) Optimizing performance of instructions based on sequence detection or information associated with the instructions
KR100571322B1 (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
US5822602A (en) Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity
US6263427B1 (en) Branch prediction mechanism
US7437537B2 (en) Methods and apparatus for predicting unaligned memory access
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
JP4484925B2 (ja) Simdデバイスにおける制御フロー管理のための方法及び装置
KR100423910B1 (ko) 코프로세서 명령 실행 장치 및 방법
US7010676B2 (en) Last iteration loop branch prediction upon counter threshold and resolution upon counter one
US6748523B1 (en) Hardware loops
EP1310864A2 (en) Method and circuit for conditional-flag rewriting control
US7065636B2 (en) Hardware loops and pipeline system using advanced generation of loop parameters
US6766444B1 (en) Hardware loops
KR100576560B1 (ko) 추측 레지스터 조정 방법 및 장치
KR970011209B1 (ko) 실행된 명령 스트림을 추적하기 위해 사용되는 신호를 발생하기 위한 회로를 포함하는 마이크로프로세서
US20240111541A1 (en) Reducing Overhead In Processor Array Searching
KR100631318B1 (ko) 파이프라인 아키텍처를 갖는 프로세서에서 조건 점프 명령을 처리하기 위한 방법 및 명령어 디코더
JPH0212429A (ja) ディレイド・ジャンプ対応機能付情報処理装置
US20130305017A1 (en) Compiled control code parallelization by hardware treatment of data dependency
KR19990084909A (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: 20130612

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140612

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee