KR100233220B1 - 파이프라인 처리기 - Google Patents

파이프라인 처리기 Download PDF

Info

Publication number
KR100233220B1
KR100233220B1 KR1019960010897A KR19960010897A KR100233220B1 KR 100233220 B1 KR100233220 B1 KR 100233220B1 KR 1019960010897 A KR1019960010897 A KR 1019960010897A KR 19960010897 A KR19960010897 A KR 19960010897A KR 100233220 B1 KR100233220 B1 KR 100233220B1
Authority
KR
South Korea
Prior art keywords
instruction
branch
address
notice
command
Prior art date
Application number
KR1019960010897A
Other languages
English (en)
Other versions
KR960038602A (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 KR960038602A publication Critical patent/KR960038602A/ko
Application granted granted Critical
Publication of KR100233220B1 publication Critical patent/KR100233220B1/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions

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

본 발명에 따르면, 파이프 라인 처리기는 제어 흐름이 변화되기 전에 예고 브랜치 명령이 주어진 이후 이어 실행될 적어도 하나의 명령의 수를 한정하는 예고 브랜치 명령을 실행하기 위해 제공된다. 상기 파이프 라인 처리기는 페치해야 할 명령의 어드레스를 유지하는 프로그램 카운터와, 상기 프로그램 카운터에 의해 유지된 어드레스에 대응하는 명령을 출력하는 명령 메모리와, 상기 명령 메모리로부터 출력된 명령을 페치하고 유지하는 명령 레지스터와, 상기 명령 레지스터에 의해 유지된 명령을 디코딩하여 상기 명령이 상기 예고 브랜치 명령인지의 여부를 판단하는 명령 디코딩부와, 카운트 값을 유지하고, 예고 브랜치 명령 내에 저장된 수로 초기화되고 상기 프로그램 카운터의 증가와 동기하여 감소되는 카운트 값을 소정 임계값과 비교하는 카운터부와, 상기 프로그램 카운터에 의해 유지된 어드레스를 증가시키고 순차 명령 어드레스로서 증가된 어드레스를 제공하는 가산기와, 상기 예고 브랜치 명령의 브랜치 타겟 어드레스를 제공하는 브랜치 타겟 어드레스 레지스터와, 상기 카운터부에 의해 얻어진 비교 결과에 따라 상기 순차 명령 어드레스와 상기 예고 브랜치 명령의 브랜치 타겟 어드레스 중 하나를 선택하는 선택기를 구비한다.

Description

파이프라인 처리기
제1도는 본 발명에 따른 파이프 라인 처리기(100)의 구성을 도시하는 블럭도.
제2도는 파이프 라인 처리기(100)에 사용된 브랜치 명령의 포맷을 도시하는 포맷도.
제3도는 카운터부(4)의 구성을 도시하는 블록도.
제4(a)도는 제어 신호 발생부(38)의 구성을 도시하는 블록도.
제4(b)도는 제어 신호 발생부(38)의 신호들의 파형을 도시하는 파형도.
제5(a)도는 예고 브랜치 명령을 포함하는 프로그램 코드 순차를 도시하는 도면.
제5(b)도는 A=2, B=3인 경우의 파이프 라인 처리기(100)의 동작을 설명하는 타이밍도.
제6도는 A=3, B=3인 경우의 파이프 라인 처리기(100)의 동작을 설명하는 타이밍도.
제7도는 A=3, B=2인 경우의 파이프 라인 처리기(100)의 동작을 설명하는 타이밍도.
제8도는 A=3인 경우의 종래의 파이프 라인 처리기(100)의 동작을 설명하는 타이밍도.
제9도는 조건 판단부(13)의 구성을 도시하는 블록도.
제10(a)도는 종래의 브랜치 명령을 포함하는 프로그램 코드 순차를 도시하는도면.
제10(b)도는 예고 브랜치 명령을 포함하는 프로그램 코드 순차를 도시하는 도면.
제11도는 BTB를 사용하는 종래의 처리기의 구성을 도시하는 블록도.
제12도는 BTB의 예시적 포맷을 도시하는 도면.
* 도면의 주요부분에 대한 부호의 설명
3 : 명령 디코딩부 5 : 선택기
31 : 다운 카운터 63 : AND 회로
[발명의 분야]
본 발명은 다수의 명령어들에 대해 파이프 라인 처리를 실행할 수 있는 파이프라인 처리기에 관한 것이다.
[관련 기술의 설명]
현재 사용되고 있는 모든 처리기들은 실질적으로 파이프 라인 처리를 실행한다.“파이프 라인 처리”는 한 명령의 한 실행 처리를 다수의 스테이지들로 분할하고 그 다수의 스테이지들을 오버랩핑(over lapping)함으로써 병렬로 다수의 명령들을 처리함으로써 처리기의 성능이 향상될 수 있는 것을 의미한다. 그러한 파이프 라인 처리를 실행하는 처리기를“파이프 라인 처리”라 부른다.
브랜치 명령을 실행하기 위해, 파이프 라인 처리기는 상기 명령을 페치하거나 디코당함으로써 브랜치가 실행되어야 하는지의 여부를 결정하기 위한 조건을 판단하고, 타겟 브랜치의 어드레스(하기에서, 그러한 어드레스를“브랜치 타겟 어드레스”라고 함)를 계산하고, 다음에 페치해야 할 명령의 어드레스를 변화시켜 브랜치 명령으로서의 소정 명령을 인식해야 한다. 그러나, 다음에 페치해야 할 명령의 어드레스가 브랜치 명령에 따라 변화되는 포인트에서, 상기 브랜치 명령에 이어지는 순차적 명령(또는 순차적 명령들)은 이미 페치되었다. 그러므로, 잘못 페치된 명령은 버려져야 하고 타겟 브랜치의 명령이 리페치(re-fetch)되어야 한다. 사이클들의 수는 잘못 페치된 명령이 포기될 때부터 타겟 브랜치 명령의 리페치가 브랜치 명령의 실행에 의해 야기된 지연과 동일해질 때가지의 주기 동안 소비된다.
그러한 브랜치 명령은 명령이 파이프 라인에 매끄럽게 공급되는 것을 방해하여 파이프 라인을 스톨(stall)시키기 때문에, 제어 흐름을 변화시키는 브랜치 명령은 파이프 라인 처리기의 실행을 상당히 하락시킨다.
일반적으로 사용되는 응용 프로그램에서, 모든 명령들에 대한 브랜치 명령들의 비율은 20% 내지 30% 범위 내에 있다. 3개의 사이클 손실이 하나의 브랜치 명령을 실행할 때마다 야기된다고 한다면, 파이프 라인 처리기의 전체 실행은 60% 내지 90% 만큼 하락하는데 이것은 상기 브랜치 명령들의 실행이 파이프 라인을 스톨시키기 때문이다.
따라서, 브랜치 명령의 실행으로부터 발생되는 지연, 즉 패널티는 파이프 라인 처리기의 실행 하락에 있어서 중요한 요소가 된다.
파이프 라인의 스톨을 방지하기 위해 사용된 다수의 접근법들은 일반적으로 다음의 두 카테고리로 분류될 수 있다. 즉, 그들 중 하나는 판단 조건에서 지연을 제거함으로써 파이프 라인의 스톨을 방지하는 접근법을 포함하며, 다른 것은 브랜치 타겟 어드레스를 계산하는데 있어서 지연을 제거함으로써 파이프 라인의 스톨을 방지하는 접근법들을 포함한다.
다수의 브랜치 예고 방법들은 판단 조건에 있어서 지연을 제거하는 절차로서 알려져 있다. 그러나, 일부의 방법들만 브랜치 타겟 어드레스 계산시 지연을 제거하는 절차로서 공지된다.
브랜치 타겟 버퍼(하기에서 버퍼를“BTB”로 약칭함)를 사용하는 방법은 브랜치 타겟 어드레스 계산시 지연을 제거하는 예시적 방법으로서 알려져 있다. 이 방법에 따르면 이전에 계산된 브랜치 타겟 어드레스는 BTB에 저장되어 브랜치 타겟어드레스를 재사용한다. 그러므로, 이 방법은 브랜치 명령을 디코딩하기 전에 브랜치 명령의 브랜치 타겟 어드레스를 얻을 수 있게 한다.
제11도는 BRB(10)을 사용하는 종래의 처리기의 구성을 도시한다. 제12도에 도시된 바와 같이, 상기 BTB(10)은 각각의 로우에서 태그를 저장하기 위한 영역(41)과, 브랜치 타겟 어드레스를 저장하기 위한 영역(42), 브랜치 히스토리를 저장하는 영역(43)을 갖는다. 브랜치 명령이 실행될 때, 명령 메모리(1) 내의 브랜치 명령의 어드레스 중 상부 비트들은 영역(41)에 저장되고, 상기 브랜치 명령의 브랜치 타겟 어드레스는 영역(42)에 저장되며, 상기 브랜치 명령의 브랜치 히스토리는 영역(43)에 저장된다. 상기 BTB(10)에서 영역(41,42,43)의 낮은 위치들은 브랜치 명령의 하의 어드레스에 의해 결정된다.
다음 페치해야 할 명령의 어드레스(하기에서, 그러한 어드레스는“PC 어드레스”라함)는 프로그램 카운터(2)에 저장된다. 인덱스로서 PC 어드레스는 하위 비트들, 예컨대 8비트를 사용하여, BTB(10)이 영역(41)에 저장된 PC 어드레스의 상위 비트들과 태그는 BTB(10)을 참조하여 서로 비교된다.
PC 어드레스의 상부 비트들이 BTB(10)의 영역(41) 내에 저장된 태그와 동일하면, PC 어드레스에 대응하는 브랜치 명령은 결국 이전에 실행된 명령이 된다. 상기 브랜치 명령의 브랜치 타겟 어드레스는 BTB(10)에서 대응하는 영역(42)에 저장된다. 그러므로, PC 어드레스의 상부 비트들이 BTB(10)의 영역(41)내에 저장된 태그와 동일한 경우, PC 어드레스가 아니고 그 대신에 BTB(10)의 영역(42)에 저장된 브랜치 타겟가 명령 메모리(1)에 출력된다. BTB(10)의 영역(43)에 저장된 브랜치 히스토리는 BTB(10)내의 영역(42)에 저장된 브랜치 타겟 어드레스가 PC 어드레스 대신 명령 메모리(1)에 출력되어야 하는지의 여부를 판단하는 데에 적용될 수 있다. 상기 브랜치 히스토리는 브랜치가 발생할 지의 여부를 예고하는데 사용될 수 있다.
PC 어드레스의 상위 비트들이 BTB(10)의 영역(41)내에 저장된 태그와 동일하지 않은 경우, 상기 PC 어드레스는 명령 페칭의 정규 사이클과 유사한 방법으로 명령 메모리(1)에 출력된다.
따라서, 상기 PC 어드레스의 상위 비트들이 BTB(10)의 영역(41)내에 저장된 태그와 동일한 경우에 브랜치 명령의 브랜치 타겟 어드레스는 명령 페칭의 사이클과 동일한 사이클로 얻어질 수 있다. 바꿔 말하면, 브랜치 타겟 어드레스의 계산은 명령 디코딩의 사이클을 실행하기 전에 이미 완성되었다.
브랜치 타겟 어드레스를 계산하는데 있어서 지연을 제거하는 또 다른 방법의 예시는 지연된 브랜치를 아키텍처적으로 한정하는 방법이다. 이 방법에 따르면 브랜치 타겟 어드레스 계산시 지연은 브랜치가 실제로 야기되는지의 여부에 상관없이 브랜치 명령을 따르는 소정수의 명령들을 실행함으로써 제거될 수 있다.
위에서 기술한 BTB를 사용하는 방법에서, BTB는 큰 용량의 메모리를 필요로 한다. 실제적인 효과를 얻기 위해, 그러한 BTB에 필요한 엔트리수는 적어도 1024이다. 이러한 엔트리수는 6 내지 7 킬로바이트의 메모리에 대응하며, 그러한 메모리는 칩상에서 상당한 영역을 차지한다. 또한, 파이프 라인에서 스톨을 방지하기 위해, 한 사이클 내에서 BTB를 액세스하는 것이 필요하며, 그것은 처리기의 동작 속도를 매우 방해한다.
한편, 앞에서 설명한 지연 브랜치 방법에서, 지연 브랜치의 성능은 컴파일러에 의해 유효한 명령들으로 채워져 있는 지연 슬롯들의 비율에 따라 다르다. 지연 슬롯들을 채우는 명령들은 브랜치가 발생되는지의 여부와 무관하게 실패없이 실행되기 때문에, 그러한 명령들은 브랜치 조건에 영향을 주어서는 않된다. 일반적으로 명령들을 실행하기 전에 명령들이 브랜치 조건에 영향을 주는지의 여부를 판단하기 어렵기 때문에, 그러한 명령들을 컴파일러가 발견하기는 쉽지 않다.
하나의 명령을 페치하는데 필요한 사이클들의 수가 1인 경우, 유효한 명령들로 지연 슬롯들의 약 90%를 채울 수 있다. 그러나 하나의 명령을 페치하는데 필요한 사이클들의 수가 증가함에 따라, 지연 슬롯들을 유효한 명령들로 채우는 것은 점점 어려워지는데 이것은 지연 슬롯들을 채우기 위한 명령들의 수가 증가하기 때문이다. 그러므로, 지연 브랜치 방법을 멀티 스테이지 파이프 라인 처리기 또는 수퍼 스칼라(scalar) 머신에 공급하기는 어렵다.
지연 슬롯들을 유효한 명령들로 채우는 것이 불가능한 경우, 컴파일러는 NOP(no operation) 명령들로 지연 슬롯들을 채우며, 그로써 프로그램 크기는 과다하게 증가한다.
[발명의 요약]
본 발명에 따르면, 파이프 라인 처리기는 제어 흐름이 변화되기 전에 예고 브랜치 명령이 주어진 이후 이어 실행될 적어도 하나의 명령의 수를 한정하는 예고 브랜치 명령을 실행하기 위해 제공된다. 파이프 라인 처리기는 페치해야 할 명령의 어드레스를 유지하는 프로그램 카운터, 프로그램 카운터에 의해 유지된 어드레스에 대응하는 명령을 출력하는 명령 메모리, 명령 메모리로부터 출력되는 명령을 페치하여 유지하는 명령 레지스터, 명령 레지스터에 의해 유지된 명령을 디코딩하여 명령이 예고 브랜치 명령인지의 여부를 판단하는 명령 디코딩부와, 카운트 값을 유지하여 소정의 임계값과, 카운터 예고 브랜치 명령 내에 저장된 수로 초기화되고 프로그램 카운터의 증가와 동기하여 감소되는 카운트 값을 비교하는 카운터부와, 프로그램 카운터에 의해 유지된 어드레스를 증가시키고 순차 명령 어드레스로서 증가된 어드레스를 제공하는 가산기와, 예고 브랜치 명령의 브랜치 타겟 어드레스를 제공하는 브랜치 타겟 어드레스 레지스터와, 카운터부에 의해 얻어진 비교 결과에 따라 예고 브랜치 명령의 브랜치 타겟 어드레스와 순차 명령 어드레스 중 하나를 선택하는 선택기를 구비한다.
한 실시예에서, 예고 브랜치 명령은 일종의 명령을 식별하는 오피코드를 저장하는 영역과, 브랜치 타겟 어드레스를 지정하는 영역과, 제어 흐름이 변화되기 전에 예고 브랜치 명령이 주어진 이후 이어 실행될 적어도 하나의 명령의 수를 저장하는 영역을 구비한다.
또 다른 실시예에서, 소정의 임계값은 한 명령은 페치하는데 필요한 사이클의 수와 동일하다.
또 다른 실시예에서, 카운트 값이 소정의 임계값과 동일한 경우, 카운터부는 예고 브랜치 명령의 브랜치 타겟 어드레스를 선택하는 선택 신호를 선택기에 출력한다.
다른 실시예에서, 예고 브랜치 명령에 의해 한정된 수가 소정의 임계값 보다 작은 경우, 카운터부는 예고 브랜치 명령의 브랜치 타겟 어드레스를 선택하는 선택신호를 선택기에 출력한다.
또 다른 실시예에서, 예고 브랜치 명령에 의해 한정된 수가 소정의 임계값 보다 작은 경우, 카운터부는 명령 레지스터에 의해 유지된 명령을 삭제하는 삭제 신호를 명령 레지스터에 출력한다.
또 다른 실시에에서, 파이프 라인 처리기는 제어 흐름이 예고 브랜치 명령으로 변화하는지의 여부를 판단하는 조건 판단부를 더 구비한다. 카운트 값이 소정값에 도달하면, 카운터부는 제어 흐름이 예고 브랜치 명령으로 변화되는지의 여부가 판단되는 타이밍을 한정하는 신호를 조건 판단부에 출력한다.
다른 실시예에서, 조건 판단부가 제어 흐름이 예고 브랜치 명령으로 변화되지 않는다고 판단하는 경우에, 조건 판단부는 명령 레지스터에 의해 유지된 명령을 삭제하는 신호를 명령 레지스터에 출력하며 명령 디코딩부에 의해 디코드될 명령을 삭제하는 신호를 명령 디코딩부에 출력한다.
다음에는, 본 발명의 기능에 대해서 설명한다.
본 발명에 따른 파이프 라인 처리기에서, 제어 흐름의 실제적 변화는 제어 흐름을 변화시키기 위해 명령을 페치하고 디코딩한 후 즉시 실행되지 않지만 그 대신에 다수의 명령들이 제어 흐름을 변화시키기 위한 명령이 주어진 포인트에서 인코드된 제어 흐름이 변화되는 포인트까지의 주기 동안 실행된 이후 실행된다. 제어의 타겟 어드레스는 제어 흐름을 변화시키기 위한 명령이 디코드되는 포인트에서 이미 계산되었으며, 따라서 타겟 어드레스는 제어 흐름이 실제로 변화되는 포인트에서 이미 준비되었다. 그러므로, 제어 흐름, 즉 페치의 타겟을 페치의 타겟이 변화되는 포인트에서 빠르게 변화시킬 수 있다. 결국 종래의 브랜치 명령의 경우와는 다르게 더 이상 잘못 페치된 순차 명령을 버리고 타겟 브랜치의 명령을 리페치할 필요가 없다.
따라서, 본 명세서에 기재된 본 발명은 (1) 대용량의 메모리를 사용하거나 동작 속도에 영향을 주지 않고 브랜치 명령을 실행함으로써 지연을 방지할 수 있는 파이프 라인 처리기를 제공하고 (2) 하나의 명령을 페치하는데 필요한 사이클 수가 증가될 때도 브랜치 명령을 실행함으로써 지연을 방지할 수 있는 파이프 라인 처리기를 제공하는 장점을 가능하게 한다.
당업자들은 첨부된 도면들을 참조하여 다음의 상세한 설명을 정독하고 이해함으로써 본 발명의 다른 장점들을 명백히 알 수 있을 것이다.
[바람직한 실시예의 설명]
하기에, 본 발명이 실시예들을 첨부한 도면을 참조하여 설명한다.
제1도는 본 발명에 따른 파이프 라인 처리기(100)의 구성을 도시한다.
프로그램 카운터(2)는 다음번에 페치해야 할 명령의 어드레스(101)를 유지한다. 프로그램 카운터(2)는 유지된 어드레스(101)를 명령 메모리(1)에 출력한다. 다수의 명령들은 명령 메모리(1) 내에 저장된다. 지정되는 명령(102)이 명령 메모리(1) 내에 저장된 다수의 명령들 중에서 프로그램 카운터(2)로부터 출력된 어드레스(101)에 의해 명령 레지스터(8)에 페치되어 그 안에 유지된다.
여러 종류의 명령들은 명령 메모리(1) 내에 저장될 수 있다.
이들 명령들은 순차 명령들과 브랜치 명령들로 분류된다.
이 명세서에서,“순차 명령”이란 제어의 흐름을 변화시키지 않는 명령으로 정의된다. 그러므로, 순차 명령 다음으로 순차 명령이 저장되어 있는 명령 메모리(1) 내의 어드레스의 다음 어드레스에 대응하는 명령이 실행된다.“브랜치 명령”이란 제어의 흐름을 변화시키는 명령으로 정의된다. 그러므로,“브랜치 명령”은 예컨대 조건 브랜치 명령, 무조건 점프 명령, 서브루틴 호출 명령, 리턴 명령 등을 포함한다.
제2도는 파이프 라인 처리기(100)에 사용되는 명령의 포맷을 도시한다. 이 명세서에서는, 제2도에 도시된 브랜치 명령은“예고 브랜치 명령”이라고 한다.“예고 브랜치 명령”이란“예고 브랜치 명령”으로부터 소정수의 명령이 실행된 후 브랜치 타겟 어드레스로 브랜치하는 명령이다. 이 소정의 수는 예고 브랜치 명령의 오퍼랜드로서 주어진다.
예컨대,“2개의 명령들을 실행한 이후 명령 x로 브랜치하는 예고 브랜치 명령”이 프로그램 코드로는“Branch after 2 to X”로 표시된다. 명령 x의 어드레스는 파이프 라인 처리기(100)에 의하여 브랜치 명령의 브랜치 타겟 어드레스로서 계산된다.
예고 브랜치 명령은 오피코드를 저장하는 영역(21), 브랜치 타겟 어드레스를 지정하는 영역(22), 제어 흐름이 변화되기 전, 즉 브랜치 포인트에 예고 브랜치 명령이 주어진 이후 이어 실행될 적어도 하나의 명령의 수를 저장하는 영역(23)을 갖는다.
“오피코드”는 일종의 소정 명령을 식별하는 코드이다. 오피코드는 일반적으로 복수의 비트들로 구성된다.
브랜치 타겟 어드레스는 예컨대, 직접 어드레스 모드 또는 예고 어드레스 모드로 지정된다.
직접 어드레스 모드에서, 브랜치 타겟 어드레스는 예컨대 절대 어드레스에 의해 지정된다. 이 경우, 직접 어드레스 모드와 절대 어드레스를 표시하는 코드는 영역(22)에 저장된다.
간접 어드레스 모드에서, 브랜치 타겟 어드레스는 베이스 어드레스에 대해 상대 어드레스에 의해 지정된다. 이 경우, 간접 어드레스 모드를 표시하는 코드와 관련 어드레스(또는 예고 브랜치 명령에서 브랜치 포인트로의 이동)는 영역(22)에 저장된다. 통상적으로, 프로그램 카운터(2)에 유지된 어드레스는 베이스 어드레스로서 사용된다. 한편, 또 다른 레지스터에 유지된 어드레스는 또한 베이스 어드레스로서 사용될 수 있다.
현재의 실행 명령이, 제어 흐름이 변화되는 포인트, 즉 브랜치 포인트에 주어진 포인트로부터 실행되는 명령들의 수는 영 또는 양의 정수로 지정된다. 영 또는 양의 정수는 예고 브랜치 명령의 오퍼랜드로서 주어진다. 예컨대, 예고 브랜치 명령이“Branch after 2 to X”로서 프로그램 코드로 표시되어 있는 경우에, 양의 정수“2”는 영역(23)에 저장된다.
제1도로 돌아가, 명령 레지스터(8) 내에 유지된 명령(102)은 명령 디코딩부(3)와, 명령 레지스터(8)로부터의 출력(103)으로서 브랜치 타겟 어드레스 계산부(7)에 공급된다.
명령 디코딩부(3)는 명령(103)을 디코드하여 명령(103)의 종류를 식별한다. 며열(103)의 종류의 식별은 명령(103)의 상부 영역에 저장된 오피코드를 식별함으로써 이루어진다.
명령 디코딩부(3)가 순차 명령이 될 명령(103)을 식별하는 경우, 명령(103)의 종류를 표시하는 정보(106)는 실행부(11)에 공급되며 명령(103)에 의해 지정된 레지스터를 표시하는 정보(107)는 레지스터 파일(12)에 공급된다. 정보(107)에 의해 지정된 레지스터의 값은 정보(108)로서 실행부(11)에 공급된다. 예컨대, 명령(103)이 레지스터(2)의 값을 레지스터(1)의 값에 가산하여 그 가산된 결과를 레지스터(1) 내에 저장하라는 가산 명령일 경우,“가산 명령”을 표시하는 정보는 명령(103)의 종류를 표시하는 정보로서 실행부(11)에 공급되며“레지스터(1) 및 (2)”를 표시하는 정보는 명령(103)에 의해 지정된 레지스터를 표시하는 정보(107)로서 레지스터 파일(12)에 공급된다.
실행부(11)는 명령 디코딩부(3)로부터 공급된 정보(106)와 레지스터 파일(12)로부터 공급된 정보(108)에 기초한 명령을 실행한다. 실행부(11)에 의해 얻어진 실행 결과는 필요한 경우 출력(109)으로서 레지스터 파일(12)에 출력된다.
명령 디코딩부(3)가 예고 브랜치 명령이 될 명령(103)을 식별하는 경우, 명령 디코딩부(3)는 초기값 설정 신호(104)를 카운터부(4)에 공급하며, 예고 브랜치 명령의 영역(23)에 저장된 값을 초기값(105)으로서 카운터부(4)에 공급한다.
초기값 설정 신호(104)의 레벨은 초기값(105)이 설정되는 동안의 사이클에서 하이로 되고 다른 사이클 들에서는 로우가 된다.
카운터부(4)는 카운트 값을 유지한다. 카운터 값은 예고 브랜치 명령의 브랜치 타이밍을 한정하기 위해 사용된다. 예컨대 카운트 값은 정수이다. 카운터부(4)에 유지된 카운트 값은 초기값 설정 신호(104)에 응답하여 초기값(105)으로 초기화된다. 초기값(105)은 예고 브랜치 명령의 영역(23)에 저장된 값이다. 카운터부(4)에 유지된 카운트 값은 프로그램 카운터(2)로부터 공급된 신호(110)에 응답하여 1만큼 감소된다. 신호(110)는 프로그램 카운터(2) 값의 1만큼이 증가와 동기하여 카운터부(4)에 출력된다.
카운터부(4)는 카운터부(4)에 유지된 카운트 값과 소정의 임계값을 비교한다. 카운트 값이 소정의 임계값과 동일한 경우에, 카운터부(4)는 하이 레벨을 갖는 선택 신호(111)를 선택기(5)에 출력하며 하이 레벨을 갖는 삭제 신호(116)를 명령 레지스터(8)에 출력한다. 다른 경우에, 카운터부(4)는 로우 레벨을 갖는 선택 신호(111)를 선택기(5)에 출력하며 로우 레벨을 갖는 삭제 신호(116)를 명령 레지스터(8)에 출력한다. 선택 신호(111)는 다음에 페치해야 할 명령의 어드레스를 브랜치 타겟 어드레스로 변환시키는데 사용된다. 삭제 신호(116)는 명령 레지스터(8)에 페치된 명령을 삭제하는데 사용된다.
선택기(5)는 선택 신호(111)의 레벨에 따라 브랜치 타겟 어드레스 레지스터(6)로부터의 출력(113)과 가산기(9)로부터의 출력(112) 중 하나를 선택한다. 선택 신호(111)가 하이 레벨을 갖는 경우, 선택기(5)는 브랜치 타겟 어드레스 레지스터(6)로부터 출력(113)을 선택한다. 다른 한편, 선택 신호(111)가 로우 레벨인 경우, 선택기(5)는 가산기(9)로부터 출력(112)을 선택한다. 선택기(5)의 출력(115)은 프로그램 카운터(2)에 공급한다.
계산 결과(114), 즉 예고 브랜치 명령의 브랜치 타겟 어드레스는 브랜치 타겟 어드레스 계산부(7)에 의해 얻어진다.
계산 결과(114)는 브랜치 타겟 어드레스 레지스터(6)에 공급된다. 브랜치 타겟 어드레스 레지스터(6)는 계산 결과(114)를 출력(113)으로서 선택기(5)에 공급한다. 따라서, 브랜치 타겟 어드레스 레지스터(6)는 선택기(5)를 통해 프로그램 카운터(2)를 위해 예고 브랜치 명령의 브랜치 타겟 어드레스를 제공한다.
가산기(9)는 프로그램 카운터(2)의 값을 1만큼 증가시키며 그 증가된 값을 출력(112)으로서 선택기(5)에 공급한다. 가산기(9)는 순차 명령을 따르는 명령의 어드레스를 계산하는데 사용된다.
어드레스(101)가 프로그램 카운터(2)로부터 출력되는 포인트에서 어드레스(101)에 대응하는 명령(102)이 명령 레지스터(8)에 페치되는 포인트까지의 주기 동안 실행된 처리는“명령 페치”로 불린다.
명령 디코딩부(3)에 의해 실행된 처리는“명령 디코드”로 불린다. 브랜치 타겟 어드레스의 계산이 브랜치 타겟 어드레스 계산부(7)에 의해 시작되는 포인트에서 계산 결과가 프랜치 타겟 어드레스의 레지스터(6)에 저장되는 포인트까지의 주기 동안 실행된 처리는“브랜치 타겟 어드레스 계산”으로 불린다. 파이프 라인 처리기(100)는 동일한 사이클 내에서“명령 디코드”및“브랜치 타겟 어드레스 계산”을 실행한다.
정보(106) 및 (108)에 기초한 명령들을 실행하는 실행부(11)의 처리는“명령 실행”으로 불린다. 레지스터 파일(12) 내에 정보(109)를 저장하는 실행부(11)의 처리는“라이트 백(write back)”으로 불린다.
이러한 방식으로 파이프 라인 처리기(100)에서의 처리는 예컨대“명령 페치”,“명령 디코드”,“명령 실행” 및“라이트 백”을 반복함으로써 실행된다.
제3도는 카운터부(4)의 구성을 도시한다. 카운터부(4)는 카운트 값 Z를 유지하는 다운 카운터(31)를 구비한다.
초기값(105) 및 초기값 설정 신호(104)는 다운 카운터(31)에 입력된다. 초기값 설정 신호(104)가 하이 레벨을 갖는 경우, 다운 카운터(31)에 유지된 카운트 값(Z)은 초기값(105)으로 초기화된다. 앞에서 설명한 바와 같이, 초기값(105)은 예고 브랜치 명령에서 브랜치 포인트까지, 예고 브랜치 명령의 영역(23) 내에 저장된 명령들의 수와 동일하다. 다음의 설명에서, 초기값(105)은 값 B와 동일하다고 가정한다.
신호(110)는 또한 다운 카운터(31)에 입력된다. 신호(110)에 응답하여, 다운 카운터(31)에 유지된 카운트 값 Z는 1만큼 감소된다. 카운트 값 Z는 비교기(33)에 출력된다.
비교기(33)는 카운트 값 Z가 임계값 A와 동일한지의 여부를 판단한다. 임계값 A는 임계값 설정부(32)로부터 공급된다. 임계값 A는 하나의 명령을 페치하기 위해 필요한 사이클들의 수(하기에서, 그러한 수는“명령 페치 사이클 수”로 불림)와 동일하게 되는 임계값 설정부(32)에 의해 미리 설정된다. 카운트 값 Z가 임계값 A와 동일한 경우, 비교기(33)는 하이 레벨을 갖는 신호르 OR 회로(36)의 입력부들 중 하나에 공급한다. 다른 경우들에 있어서, 비교기(33)는 로우 레벨을 갖는 신호를 OR 회로(36)의 입력부들 중 하나에 공급한다. AND 회로(37)의 출력은 OR 회로(36)의 다른 입력부에 공급된다.
감산기(34)는 초기값 B로부터 임계값 A를 감산한다. 감산 결과 Y는 판단부(35) 및 제어 신호 발생부(38)에 공급된다.
판단부(35)는 감산 결과 Y가 영보가 작은 지의 여부를 판단한다. 감산 결과 Y가 영보다 작은 경우에, 판단부(35)는 하이 레벨을 갖는 신호를 AND 회로(37)의 입력 중 하나에 공급한다. 다른 경우들에 있어서, 판단부(35)는 로우 레벨을 갖는 신호를 AND 회로(37)의 입력부들 중 하나에 공급한다. 초기값 설정 신호(104)는 AND 회로(37)의 다른 입력에 공급된다.
따라서, (B〈A) 또는 (Z=A)인 경우에만, OR 회로(36)로부터의 출력 레벨이 하이로 된다. 다른 경우들에 있어서, OR 회로(36)로부터의 출력은 로우가 된다. 그러므로, (B〈A) 또는 (Z=A)인 경우에만 브랜치 타겟 어드레스 레지스터(6)의 출력(113)이 선택기(5)로부터 출력된다. 다른 경우들에 있어서, 가산기(9)의 출력(112)은 선택기(5)로부터 출력된다.
제어 신호 발생부(38)는 초기값 설정 신호(104)와 감산 결과 Y에 따라 삭제 신호(116)를 발생시킨다.
제4(a)도는 명령 페치 사이클 수가 3인 제어 신호 발생부(38)의 구성예를 도시한다. 명령 페치 사이클 수가 3 이외인 경우, 제어 신호 발생부(38)는 제4(a)도에 도시된 제어 신호 발생부(38)와 유사한 방식으로 구성될 수 있다.
제어 신호 발생부(38)는 카운터 (51) 내지 (53), 논리 회로(54) 및 선택기(55)를 구비한다.
카운터들(51) 내지 (53) 각각은 초기값 설정 신호(104)에 응답하여 신호를 출력한다. 카운터들 (51) 내지 (53)의 출력들은 논리 회로(54)를 통해 선택기(55)의 입력 단자들 Y1내지 Y3각각에 입력된다.
선택기(55)는 감산기(34)로부터 입력되는 감산 결과 Y의 값에 따라 입력 단자들 Y1내지 Y3에 입력된 3개의 신호들 중 하나를 출력한다. Y=1인 경우, 선택기(55)는 신호 입력을 입력 단자 Y1에 출력하며, Y=2인 경우, 선택기(55)는 입력 단자 Y2에 입력된 신호를 출력하며 Y=3인 경우, 선택기(55)는 입력 단자 Y3에 입력된 신호를 출력한다. 선택기(55)의 출력은 삭제신호(116)로서 명령 레지스터(8)에 공급된다.
제4(b)도는 선택기(55)의 출력 파형과 카운터 (51)내지 (53)의 출력 파형을 도시한다. 명령 레지스터(8) 내에 유지된 명령은 선택기(55) 출력 레벨이 하이로 되는 동안이 사이클에서 삭제된다.
제5(a)도는 예고 브랜치 명령을 포함하는 프로그램 코드 순차를 도시한다. 제5(a)도에서, I1,I2,I4,I5및 I6는 순차 명령들을 나타내며, I3는 예고 브랜치 명령“Branch after 3 to X”를 표시하고 X는 예고 브랜치 명령의 브랜치 타겟 명령을 나타낸다.
제5(b)도는 명령 페치 사이클의 수가 2인 경우의 파이프 라인 처리기(100)의 동작을 도시하며, 현재의 실행 명령에서 브랜치 포인트까지의 명령의 수가 3인 예고 브랜치 명령 I3가 실행된다. 이 경우 A=2 및 B=3이다.
제5(b)도에서, IF1및 IF2는 각각의“명령 페치” 사이클들을 나타내며, ID는“명령 디코드”사이클을 나타내고, EX는“명령 실행”사이클을 나타내고, WB는“라이트 백” 사이클을 나타낸다.
사이클 C3에서, 예고 브랜치 명령 I3는 명령 디코딩부(3)에 의해 디코드된다. 결과로서, 예고 브랜치 명령 I3의 영역(23) 내에 저장된 값 B(=3)는 초기값(105)으로서 다운 카운터(31)(제3도)에 입력된다. 다운 카운터(31)에 유지된 카운트 값 Z는 3으로 초기화된다. 다운 카운터(31)에 유지된 카운트 값 Z는 각각의 사이클들 C4내지 C6에서 1만큼 감소된다.
사이클 C4에서, 다운 카운터(31)에 유지된 카운트 값 Z는 임계값 설정부(32)(제3도)에 의해 설정된 임계값 A와 동일하게 된다. 결국, 사이클 C4에서, 선택 신호(111)의 레벨은 하이로 되고 선택기(5)의 출력은 가산기(9)의 출력(112)에서 브랜치 타겟 어드레스 레지스터(6)의 출력(113)으로 전환된다.
제5(b)도에서, S는 선택기(5)의 출력(115)은 출력(112)(순차 명령 어드레스)인 것을 표시하고, B는 선택기(5)의 출력(115)이 출력(113)(브랜치 타겟 어드레스)인 것을 표시한다.
제6도는 명령 페치 사이클의 수가 3인이고, 현재의 실행 명령으로부터 브랜치 포인트까지의 명령의 수가 3인 예고 브랜치 명령 I3가 실행되는 파이프 라인 처리기(100)의 동작을 도시한다. 이 경우, A=3 및 B=3이다.
제6도에서, IF1및 IF3는 각각의“명령 페치” 사이클들을 나타내며, ID는“명령 디코드”사이클을 나타내고, EX는“명령 실행”사이클을 나타내고, WB는“라이트 백” 사이클을 나타낸다.
사이클 C3에서, 다운 카운터(31)(제3도) 내에 유지된 카운트 값 Z는 3으로 초기화된다. 다운 카운터(31)에 유지된 카운트 값 Z는 각각의 사이클들 C4내지 C6에서 1만큼 감소된다.
사이클 C3에서, 다운 카운터(31)에 유지된 카운트 값 Z는 임계값 설정부(32)(제3도)에 의해 설정된 임계값 A(=3)와 동일하게 된다. 결국, 사이클 C3에서, 선택 신호(111)의 레벨은 하이로 되고 선택기(5)의 출력은 가산기(9)의 출력(112)에서 브랜치 타겟 어드레스 레지스터(6)의 출력(113)으로 전환된다.
제6도에서, 선택기(5)의 출력(115)이 출력(112)(순차 명령 어드레스)인 것을 표시하며, B는 선택기(5)의 출력(115)이 출력(113)(브랜치 타겟 어드레스)인 것을 표시한다.
따라서, A≤B인 경우, 지연은 파이프 라인 처리기(100)의 브랜치 명령 실행에 의해 발생되지 않는다. 그러므로 파이프 라인 내의 스톨들은 발생되지 않는다.
제7도는 명령 페치 사이클의 수가 3이고, 현재의 실행 명령에서 브랜치 포인트까지의 명령의 수가 2인 예고 브랜치 명령 I3가 실행되는 경우의 파이프 라인 처리기(100)의 동작을 도시한다. 이 경우, A=3 및 B=2 이다.
제7도에서, IF1및 IF3는 각각의“명령 페치” 사이클들을 나타내며, ID는“명령 디코드”사이클을 나타내고, EX는“명령 실행”사이클을 나타내고, WB는“라이트 백” 사이클을 나타낸다.
사이클 C3에서, 초기값(115)으로서 주어진 값 B(=2)는 명령 페치 사이클 수 A(=3) 보다 작다. 결국, 사이클 C3에서, 선택 신호(111)의 레벨은 하이로 되고 선택기(5)의 출력은 가산기(9)의 출력(112)에서 브랜치 타겟 어드레스 레지스터(6)의 출력(113)으로 전환된다.
제7도에서, S는 선택기(5)의 출력(115)이 출력(112)(순차 명령 어드레스)인 것을 나타내며, B는 선택기(5)의 출력(115)이 출력(113)(브랜치 타겟 어드레스)인 것을 나타낸다.
따라서, A>B인 경우, 지연은 파이프 라인 처리기(100)의 브랜치 명령의 실행에 의해 발생된다. 그러나 제7도에 도시된 경우에서, 지연에 대응하는 사이클들의 수(하기에서, 그러한 수는“지연 사이클수”로 불린다)는 1이다. 다른 한편, A=3인 경우, 지연 사이클수는 브랜치 명령이 종래의 방식으로 실행되면 3이 된다.(제8도 참조)
따라서, 파이프 라인 처리기(100)는 종래의 처리기를 사용하는 경우와 비교하여 예고 브랜치 명령의 실행에 의해 발생된 지연을 감소시킬 수 있다. 결과적으로, 파이프 라인에서의 스톨이 최소화된다.
다음으로, 예고 브랜치 명령을 위한 브랜치 조건이 판단되는 타이밍을 설명한다. 제5(b)도, 제6도, 제7도에 도시된 바와 같이, 예고 브랜치 명령 I3의“명령 실행(EX)”사이클은 다운 카운터(31)(제3도)에 유지된 카운트 값 Z가 영으로 되는 사이클의 다음 사이클이다. 이 사실은 예고 브랜치 명령 I3에 대한 브랜치 조건이 판단되는 타이밍이 현재의 실행 명령에서 브랜치 포인트까지의 명령의 수 B에 따라 연기되는 것을 포함한다. 따라서, 예고 브랜치 명령을 따르는 순차 명령이 예고 브랜치 명령의 브랜치 조건 판단에 영향을 주는 명령인 경우에도 브랜치 조건을 정확하게 판단할 수 있다.
브랜치 조건이 판단되는 그러한 타이밍은 카운터부(4)에 판단 회로(39)(제3도)를 제공함으로써 한정될 수 있다.
판단 회로(39)는 다운 카운터(31)에 유지된 카운트 값 Z가 영과 동일한 지의 여부를 판단한다. 다운 카운터(31)에 유지된 카운트 값 Z가 영인 경우, 판단 회로(39)는 하이 레벨을 갖는 신호(117)를 출력한다. 다른 경우들에 있어서, 판단 회로(39)는 로우 레벨을 갖는 신호(117)를 출력한다. 신호(117)는 조건 판단부(13)에 공급된다.
제9도는 조건 판단부(13)의 구성을 도시한다. 조건 판단부(13)는 제어 흐름이 예고 브랜치 명령에 대해 변환되어야 하는지의 여부(또는 브랜치가 브랜치 타겟 어드레스로 실행되어야 하는지의 여부를)를 판단한다.
조건 판단부(13)는 조건 코드(61), 예고 브랜치 명령의 영역(21) 내에 저장된 오피 코드에 의해 한정된 브랜치 조건에 기초하여 조건 코드(61)의 값을 판단하는 브랜치 조건 판단부(62), AND 회로(63)를 구비한다.
실행부(11)는 실행 결과(109)에 기초하여 조건 코드(61)의 값을 갱신한다. 조건 코드(61)는 예컨대 4개의 비트들, 즉 Z(1비트), N(1비트), V(1비트), C(1비트)로 구성된다. Z는 제로 플래그, N은 네가티브 플래그, V는 오버플로우 플래그, C는 캐리 플래그를 표시한다. 이들 플래그 각각은 예컨대 0 또는 1의 값을 갖는다.
이들 플래그들의 값은 실행부(11)에 의해 갱신된다.
예고 브랜치 명령의 영역(21) 내에 저장된 오피 코드는 명령 디코딩부(3)에서 브랜치 조건 판단부(62)로 입력된다.
표 1은 예고 브랜치 명령의 영역(21) 내에 저장된 여러 오피 코드들의 다수의 형태들을 도시한다. 이 예시에서, 오피 코드는 3개의 비트들로 구성된다. 오피 코드는 3 이외의 임의의 비트 수로 구성될 수 있다.
[표 1]
예컨대, 오피 코드“100”은 동일하지 않은 브랜치“명령, 즉“조건 코드(61)의 제로 플래그 Z의 값이 영과 동일하지 않다는 조건이 만족되면 브랜치 타겟 어드레스의 브랜치”명령에 대응한다. 브랜치 판단부(62)가 명령 디코딩부(3)로부터 오피 코드“100”를 수신하는 경우, 브랜치 조건 판단부(62)는 조건 코드(61)의 제로 플래그 Z의 값이 영인지의 여부를 판단한다.
제로 플래그 Z의 값이 영이 아닌 경우(또는 오피 코드“100”에 의해 한정된 브랜치 조건이 만족되는 경우), 브랜치 조건 판단부(62)는 하이 레벨을 갖는 신호를 AND 회로(63)의 반전 입력부에 공급한다. 다른 한편, 제로 플래그 Z의 값이 영인 경우(또는 오피 코드“100”에 의해 한정된 브랜치 조건이 만족되지 않는 경우), 브랜치 판단부(62)는 로우 레벨을 갖는 신호를 AND 회로(63)의 반전 입력부에 공급한다.
브랜치 조건이 판단되는 타이밍을 한정하는 신호(117)은 카운터부(4)의 판단 회로(39)에서 AND 회로(63)의 입력부로 공급된다.
따라서, AND 회로(63)의 출력 레벨은 브랜치 조건이 판단되는 타이밍에서 브랜치 조건이 만족되지 않는 경우에 하이로 된다. 다른 경우들에 있어서, AND 회로(63)의 출력 레벨은 로우로 된다.
AND 회로(63)의 출력은 명령 레지스터(8)에 공급되고, 명령 디코딩부(3)와 실행부(11)는 신호로서 파이프 라인에서 명령을 삭제한다. AND 회로(63)의 출력 레벨이 하이로 되는 동안의 사이클에서, 명령 레지스터(8), 명령 디코딩부(3), 실행부(11)는 각각 명령을 삭제한다.
제9도에 도시된 예시에서, 조건 판단부(13)는, 설명을 간단히 하기 위해 조건 코드(61)에 기초하여 브랜치가 실행되는지의 여부를 판단한다고 가정된다. 그러나 조건 판단부(13)는 브랜치가 다른 조건에 기초하여 실행되는지의 여부를 판단하도록 구성될 수 있다. 예컨대 조건 판단부(13)는 레지스터 파일(12)의 특정 레지스터(또는 레지스터들)의 값에 기초하여 브랜치가 실행되는지의 여부를 판단할 수 있다.
하기에, 프로그램 코드의 예고 브랜치 명령의 위치에 대해서 설명한다.
제10(a)도는 종래의 브랜치 명령을 포함하는 프로그램 코드 순차를 예시한다. 제10(a)도에서, S1내지 S3및 S4내지 S7은 순차 명령들을 표시하며 B1및 B2는 브랜치 명령을 표시한다.
제10(b)도는 예고 브랜치 명령을 포함하는 프로그램 코드 순차를 예시한다. 제10(b)도에서, S1내지 S3및 S4내지 S7은 순차 명령들을 표시하며, B1은 3개의 명령들이 실행된 이후에 브랜치하기 위한 예고 브랜치 명령을 표시하며, B2는 4개 명령들이 실행된 이후에 브랜치하기 위한 예고 브랜치 명령을 표시한다. 명령들이 제10도에 도시된 프로그램 코드로 실행되는 순서는 명령들이 제10(a)도에 도시된 프로그램 코드로 실행되는 순서와 동일하다.
프로그램 코드로 된 예고 브랜치 명령들의 최적 배열에 있어서, 각각이 예고 브랜치 명령들은 제10(b)도에 도시된 바와 같이, 이전의 브랜치 포인트(또는 브랜치가 실제로 발생되는 포인트)에 바로 인접하여 위치된다. 예고 브랜치 명령들의 그러한 배열은 예고 브랜치 명령들에 대한 조건의 판단에 불리한 영향을 주지 않는다. 브랜치 조건이 예고 브랜치 조건에 대해 판단되는 타이밍은 다운 카운터(31)에 유지된 카운트 값 Z에 기초하여 적합하게 연기된다.
그러므로, 예고 브랜치 명령을 따르는 순차 명령이 예고 브랜치 명령에 대한 브랜치 조건의 판단에 영향을 주는 경우에도, 브랜치 조건은 그로부터 영향에 의해 발생된 결과에 의해 판단될 수 있다.
앞에서 설명한 처리기(100)는 하드웨어 측면 뿐만 아니라, 소프트웨어 측면도 개선시킬 수 있다. 즉, 파이프 라인 처리기(100)는 프로그램 코드의 이식성(potability)도 향상시킬 수 있다.
예컨대, 본 파이프 라인 처리기(100)는 종래의 브랜치 명령을 포하하는 프로그램 코드를 실행시킬 수 있다. 이는 예고 브랜치 명령“Branch after 0 to X”(또는“명령의 수 0을 실행한 이후 명령 X로 브랜치”하기 위한 예고 브랜치 명령)가 종래의 브랜치 명령과 동일하기 때문에,그것은 과거에 생성된 프로그램 코드의 계속적인 사용을 보증한다.
또한, 파이프 라인 처리기(100)가 각각 다른 명령 페치 사이클수들을 갖는 하드웨어의 2종류로 실행되는 경우, 2종류의 하드웨어에 대해 동일한 프로그램 코드를 사용할 수 있고, 그것은 또한 과거에 생성된 프로그램 코드의 계속적인 사용을 보증한다.
지연 브랜치 방법은 프로그램 코드의 계속적인 사용을 보증할 수 없다. 예컨대 지연 슬롯 = 3에 대응하는 하드웨어에서 지연 슬롯 = 2 에서 생성된 프로그램 코드를 실행시키는 것은 불가능하다. 그러한 실행이 강제로 발생되게 하여도 하드웨어의 실행은 상당히 감소된다. 본 발명의 방법은 이러한 측면의 지연 브랜치 방법과 상당히 대조된다.
명령 페치 사이클수가 계속적으로 증가하는 최근의 경향을 따라가기 위해, 하드웨어는 갱신되기만 할 뿐이다. 그러나 소프트웨어를 갱신하는 것은 하드웨어를 갱신하는 것 보다 훨씬 더 많은 비용을 필요로 한다. 그러므로, 과거에 생성된 프로그램의 계속적인 사용을 보증하는 것을 매우 중요하다.
본 발명에 따른 파이프 라인 처리기에서는 큰 용량의 메모리를 사용하거나 또는 동작 속도에 영향을 주지 않고 브랜치 명령의 실행에 의해 발생된 지연을 방지할 수 있다. 또한, 하나의 명령을 페치시키기 위해 필요한 사이클들의 수가 증가할 때도 브랜치 명령의 실행에 의한 지연을 방지할 수 있다.
게다가, 본 발명의 파이프 라인 처리기는 임의의 특정 하드웨어를 필요로 하지 않는다.
더구나, 본 발명의 파이프 라인 처리기에서, 브랜치 타겟 어드레스는 브랜치 포인트에 도달하기 전에 계산될 수 있어서 순차 명령에서 브랜치 타겟 명령으로의 페치 전환 동작에서 브랜치 타겟 어드레스의 계산이 끝나도록 더 이상 대기할 필요가 없다. 결과적으로, 브랜치 명령의 실행에 의해 종래에 발생된 파이프 라인에서 스톨을 제거할 수 있다.
당업자들은 본 발명의 사상과 범위에서 벗어나지 않고 다수의 다른 변형들을 쉽게 이룰 수 있을 것이다. 따라서, 여기에 첨부된 청구항들의 범위는 본 명세서에서 주장한 바와 같은 설명에만 국한시키지 말고 넓게 해석해야 한다.

Claims (8)

  1. 파이프 라인 처리기에 있어서, 페치해야 할 명령의 어드레스를 유지하는 프로그램 카운터와, 상기 프로그램 카운터에 의해 유지된 어드레스에 대응하는 명령을 출력하는 명령 메모리와, 상기 명령 메모리로부터 출력된 명령을 페치하고 유지하는 명령 레지스터와, 상기 명령 레지스터에 의해 유지된 명령을 디코딩하여 상기 명령이 상기 예고 브랜치 명령인지의 여부를 판단하는 명령 디코딩부와, 카운트 값을 유지하고, 상기 예고 브랜치 명령 내에 저장된 수로 초기화되고 상기 프로그램 카운터의 증가와 동기하여 감소되는 상기 카운트 값을 소정의 임계값과 비교하는 카운터부와, 상기 프로그램 카운터에 의해 유지된 어드레스를 증가시키고 순차 명령 어드레스로서 증가된 어드레스를 제공하는 가산기와, 상기 예고 브랜치 명령의 브랜치 타겟 어드레스를 제공하는 브랜치 타겟 어드레스 레지스터와, 상기 카운터부에 의해 얻어진 비교 결과에 따라 상기 순차 명령 어드레스 및 상기 예고 브랜치 명령의 상기 브랜치 타겟 어드레스 중 하나를 선택하는 선택기를 구비하며, 제어 흐름이 변화되기 전에 예고 브랜치 명령이 주어진 이후 이어 실행될 적어도 하나의 명령의 수를 저장하는 영역을 갖는 예고 브랜치 명령을 실행하는 것을 특징으로 하는 파이프 라인 처리기.
  2. 제1항에 있어서, 상기 예고 브랜치 명령은 명령의 종류를 식별하는 오피 코드를 저장하는 영역과, 상기 브랜치 타겟 어드레스를 지정하는 영역과, 제어 흐름이 변화되기 전에 예고 브랜치 명령이 주어진 이후 이어 실행될 적어도 하나의 명령의 수를 저장하는 영역을 구비하는 파이프 라인 처리기.
  3. 제1항에 있어서, 상기 소정의 임계값은 하나의 명령을 페치하는데 필요한 사이클의 수와 동일한 파이프 라인 처리기.
  4. 제1항에 있어서, 상기 카운트 값이 소정의 임계값과 동일한 경우, 상기 카운터부는 상기 예고 브랜치 명령의 상기 브랜치 타겟 어드레스를 선택하는 선택 신호를 상기 선택기에 출력하는 파이프 라인 처리기.
  5. 제1항에 있어서, 상기 예고 브랜치 명령에 의해 한정된 수가 상기 소정의 임계값 보다 작은 경우에, 상기 카운터부는 상기 예고 브랜치 명령의 상기 브랜치 타겟 어드레스를 선택하는 선택 신호를 상기 선택기에 출력하는 파이프 라인 처리기.
  6. 제1항에 있어서, 상기 예고 브랜치 명령에 의해 한정된 수가 상기 소정의 임계값 보다 작은 경우, 상기 카운터부는 상기 명령 레지스터에 의해 유지된 명령을 삭제하는 삭제 신호를 상기 명령 레지스터에 출력하는 파이프 라인 처리기.
  7. 제1항에 있어서, 사익 제어 흐름이 상기 예고 브랜치 명령으로 변화되는 지의 여부를 판단하는 조건 판단부를 더 구비하며, 상기 카운트 값이 소정값에 도달할 때, 상기 카운터부는 제어 흐름이 상기 예고 브랜치 명령으로 변화될지의 여부가 판단되는 타이밍을 한정하는 신호를 상기 조건 판단부에 출력하는 파이프 라인 처리기.
  8. 제7항에 있어서, 상기 조건 판단부가 제어 흐름이 상기 예고 브랜치 명령으로 변화되지 않는다고 판단하는 조건 판단부의 경우에, 상기 조건 판단부는 명령 레지스터에 의해 유지된 명령을 삭제하는 신호를 명령 레지스터에 출력하며 상기 명령 디코딩부에 의해 디코드될 명령을 삭제하는 신호를 상기 명령 디코딩부에 출력하는 파이프 라인 처리기.
KR1019960010897A 1995-04-12 1996-04-12 파이프라인 처리기 KR100233220B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP95-86844 1995-04-12
JP8684495 1995-04-12

Publications (2)

Publication Number Publication Date
KR960038602A KR960038602A (ko) 1996-11-21
KR100233220B1 true KR100233220B1 (ko) 1999-12-01

Family

ID=13898127

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960010897A KR100233220B1 (ko) 1995-04-12 1996-04-12 파이프라인 처리기

Country Status (3)

Country Link
US (1) US5724563A (ko)
KR (1) KR100233220B1 (ko)
TW (1) TW360852B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100856774B1 (ko) * 2005-12-22 2008-09-05 인터내셔널 비지네스 머신즈 코포레이션 효율적이고 유연성있는 메모리 복사 동작

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6170053B1 (en) * 1996-06-27 2001-01-02 Texas Instruments Incorporated Microprocessor with circuits, systems and methods for responding to branch instructions based on history of prediction accuracy
JPH1185515A (ja) * 1997-09-10 1999-03-30 Ricoh Co Ltd マイクロプロセッサ
US6016555A (en) * 1997-11-19 2000-01-18 Texas Instruments Incorporated Non-intrusive software breakpoints in a processor instruction execution pipeline
US6334184B1 (en) * 1998-03-24 2001-12-25 International Business Machines Corporation Processor and method of fetching an instruction that select one of a plurality of decoded fetch addresses generated in parallel to form a memory request
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7178138B2 (en) * 2001-01-24 2007-02-13 Texas Instruments Incorporated Method and tool for verification of algorithms ported from one instruction set architecture to another
DE60138805D1 (de) * 2001-06-29 2009-07-09 Texas Instruments Inc Verfahren zur Verbesserung der Sichtbarkeit von Berechnung der effektiven Adressen in Pipelinearchitektur
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US7634640B2 (en) * 2002-08-30 2009-12-15 Infineon Technologies Ag Data processing apparatus having program counter sensor
JP2004206389A (ja) * 2002-12-25 2004-07-22 Denso Corp Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US8966228B2 (en) * 2009-03-20 2015-02-24 Arm Limited Instruction fetching following changes in program flow
JP2011209905A (ja) * 2010-03-29 2011-10-20 Sony Corp 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法
US9535701B2 (en) 2014-01-29 2017-01-03 Telefonaktiebolaget Lm Ericsson (Publ) Efficient use of branch delay slots and branch prediction in pipelined computer architectures
US9430245B2 (en) 2014-03-28 2016-08-30 Telefonaktiebolaget Lm Ericsson (Publ) Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size
GB2548604B (en) * 2016-03-23 2018-03-21 Advanced Risc Mach Ltd Branch instruction
US10936318B2 (en) * 2018-11-14 2021-03-02 International Business Machines Corporation Tagged indirect branch predictor (TIP)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108345A (ja) * 1991-10-16 1993-04-30 Nec Corp 分岐命令処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100856774B1 (ko) * 2005-12-22 2008-09-05 인터내셔널 비지네스 머신즈 코포레이션 효율적이고 유연성있는 메모리 복사 동작

Also Published As

Publication number Publication date
KR960038602A (ko) 1996-11-21
TW360852B (en) 1999-06-11
US5724563A (en) 1998-03-03

Similar Documents

Publication Publication Date Title
KR100233220B1 (ko) 파이프라인 처리기
US5193205A (en) Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
US4777587A (en) System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US6189091B1 (en) Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
KR100395763B1 (ko) 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기
US7836287B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US6609194B1 (en) Apparatus for performing branch target address calculation based on branch type
US6247122B1 (en) Method and apparatus for performing branch prediction combining static and dynamic branch predictors
US7203827B2 (en) Link and fall-through address formation using a program counter portion selected by a specific branch address bit
US4775927A (en) Processor including fetch operation for branch instruction with control tag
US8572358B2 (en) Meta predictor restoration upon detecting misprediction
KR20070118135A (ko) 인덱스당 2개 이상의 분기 타겟 어드레스를 저장하는 분기타겟 어드레스 캐시
US20070266228A1 (en) Block-based branch target address cache
JPH06236270A (ja) スーパースカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム
JP2004533695A (ja) 分岐目標を予測する方法、プロセッサ、及びコンパイラ
US6230261B1 (en) Method and apparatus for predicting conditional branch instruction outcome based on branch condition test type
US4541047A (en) Pipelined data processing system
US4739470A (en) Data processing system
US20030065912A1 (en) Removing redundant information in hybrid branch prediction
JP3486690B2 (ja) パイプライン方式プロセッサ
US5440704A (en) Data processor having branch predicting function
US6421774B1 (en) Static branch predictor using opcode of instruction preceding conditional branch
JP2883035B2 (ja) パイプライン・プロセッサ
US20040003213A1 (en) Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack
JP2006053830A (ja) 分岐予測装置および分岐予測方法

Legal Events

Date Code Title Description
A201 Request for examination
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: 20040823

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee