KR100276138B1 - 브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서 - Google Patents

브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서 Download PDF

Info

Publication number
KR100276138B1
KR100276138B1 KR1019970072661A KR19970072661A KR100276138B1 KR 100276138 B1 KR100276138 B1 KR 100276138B1 KR 1019970072661 A KR1019970072661 A KR 1019970072661A KR 19970072661 A KR19970072661 A KR 19970072661A KR 100276138 B1 KR100276138 B1 KR 100276138B1
Authority
KR
South Korea
Prior art keywords
branch
instruction
entry
history table
address
Prior art date
Application number
KR1019970072661A
Other languages
English (en)
Other versions
KR19980079539A (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 KR19980079539A publication Critical patent/KR19980079539A/ko
Application granted granted Critical
Publication of KR100276138B1 publication Critical patent/KR100276138B1/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/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/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/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

수퍼 스칼라 마이크로프로세서에서 브랜치 이력 테이블 내의 적절한 브랜치 목표 어드레스의 검출 및 선택은, 브랜치 이력 테이블 선택 로직의 복잡성을 감소시키고, 보다 큰 명령어 펫치 블록 크기로 확장가능한 구조를 제공하므로써 단순화된다. 이것은 명령어 펫치 블록 내의 다른 브랜치(현재의 엔트리에 의해 정의되지 않은 브랜치)의 존재를 나타내는 브랜치 패턴 필드를 브랜치 이력 테이블 엔트리로 삽입하므로써 실현된다.

Description

브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈 프로세서
본 발명은 일반적으로 디지탈 프로세서에 관한 것으로서, 특히, 브랜치 이력 테이블을 구비하고, 복수의 명령어 및/또는 펫치되는 메모리 블록에 관해 임의적으로 정렬된 명령어를 펫치하는 프로세서에 관한 것이다.
수퍼 스칼라 마이크로프로세서와 같은 현대의 디지탈 프로세서는 각각의 머신 사이클에서 복수의 명령어를 디코드하고 디스패치(dispatch)하고 실행한다. 이와 같은 수퍼 스칼라 마이크로프로세서의 설계를 최적화하기 위해서는, 적어도 디코드/실행 콤플렉스(complex)가 한 머신 사이클에서 처리할 수 있는 만큼 많은 명령어를 기억장치(storage)로부터 펫치(fetch)하는 것이 필요하다. 펫치된 명령어의 필드는 복수의 브랜치 명령어를 포함할 수도 있기 때문에, 수행될 가능성이 있는 차기(next) 브랜치 명령어의 위치(location)를 예측하게 되는 브랜치 이력(history) 테이블 어드레스 캐시를 설계하는 것이 바람직하다. 프로세서의 사이클 타임을 최적화하는데 있어서, 예측되는 브랜치를 발견하고(discover)(즉, 그 어드레스의 목표 어드레스를 판단하고) 그 메모리 블록에 대한 명령어 펫치를 개시하기 위해 선택된 방법은 비교적 간단해야 한다.
몇가지 브랜치 예측 메카니즘이 제안되어 구현되었으며, 이들 각각의 메카니즘은 소정의 장점 및 단점을 갖고 있다. 이들 방법 중 일부는 Emma 등의 미국 특허 제 5,353,421호에 복수-예측 브랜치 예측 메카니즘(multi-prediction branch prediction mechanism)에 대해 기재되어 있다. 본 명세서에서 설명되는 바와 같이, 브랜치 명령어의 결과를 예측하기 위해 시도하므로써, 프로세서는 파이프라인을 명령어로 충만되게 유지할 수 있으며, 브랜치의 결과가 정확하게 추측되는 경우에는 파이프라인 혼란을 피할 수 있다. Emma 등은 브랜치 예측 메카니즘의 일시적인 이력을 제공한다.
또한, Levitan의 미국 특허 제 5,367,703호는 메모리 블록을 펫치하는데 사용되는 명령어 펫치 어드레스로부터의 거리와 메모리 블록에서의 브랜치의 위치에 따라 상이한 예측자(predictors)를 이용하여 브랜치의 결과를 예측하는 기술을 기재하고 있다. 각각의 가능한 거리에 대해, 상이한 셋트의 예측자 비트가 그 거리에 대한 브랜치의 이력을 반영한다.
Veh와 Patt는 1993년의 컴퓨터 아키텍쳐에 관한 9년차 국제 심포지엄의 회의록에서, 현재의 브랜치 명령어의 결과 뿐만 아니라 하나 또는 그 이상의 (시간적으로) 이전의 브랜치의 결과에 의존하는 예측자 셋트를 기재하고 있다.
따라서, 본 발명의 한 목적은 명령어 펫치 블록 내에서 복수의 브랜치 명령어를 나타낼 수도 있는 브랜치 이력 테이블 내의 적절한 브랜치 목표 어드레스의 검출 및 선택을 단순화하는 것이다.
본 발명의 다른 목적은 브랜치 이력 테이블 선택 로직의 복잡성을 감소시키고, 보다 큰 명령어 펫치 블록 크기로 확장될 수 있는 구조를 제공하는 것이다.
본 발명에 따르면, 본 발명의 전술한 목적 및 다른 목적은 명령어 펫치 블록 내의 다른 브랜치(현재 엔트리에 의해 정의되지 않은 브랜치)의 존재를 나타내는 브랜치 패턴 필드를 브랜치 이력 테이블에 삽입하므로써 실현된다. 본 발명을 구현하는 수퍼 스칼라 마이크로프로세서는 명령어 블록 펫치의 발생에 근거하여 미래의 브랜치를 예측하기 위한 개선된 시스템을 포함한다. 이 마이크로프로세서는 다수의 브랜치 명령어를 포함할 수도 있는 메모리의 한 블록을 펫치하는 명령어 펫치 메카니즘을 포함한다. 이 펫치 메카니즘은 하나 또는 그 이상의 엔트리를 가진 브랜치 이력 테이블을 포함하고, 각각의 엔트리는 명령어 펫치 블록 내의 패턴 브랜치와 함께 명령어 펫치 블록 내에 포함된 브랜치에 대한 브랜치 어드레스 및 목표 어드레스를 저장한다. 저장된 브랜치 어드레스 및 목표 어드레스와 브랜치 이력 테이블로부터의 브랜치 패턴 필드는 명령어 블록 펫치의 차기 발생시 검색된다. 브랜치 패턴 필드는 브랜치 엔트리 중 오직 하나의 엔트리만이 예측되게 되도록 보장하기 위해 사용된다. 실행 유닛은 브랜치 명령어를 실행하고, 그 결과를 판단하고, 상기 브랜치 명령어의 목표 어드레스를 정정한다.
도1은 본 발명이 구현되는 수퍼 스칼라 마이크로프로세서의 블록도.
도2는 브랜치 이력 테이블을 보다 상세하게 도시하는 블록도.
도3은 브랜치 이력 테이블 갱신을 위한 브랜치 패턴 발생기를 보다 상세하게 도시하는 블록 및 논리 회로도.
* 도면의 주요 부분에 대한 부호의 설명
10:수퍼 스칼라 마이크로프로세서 시스템 18:메모리
20:캐시/메모리 인터페이스 22:명령어 큐
24:부동소수점 유닛 26:고정소수점 유닛
28:브랜치 유닛 30:펫처
32:조건 레지스터 201:브랜치 이력 테이블
204:브랜치 큐 205:명령어 어드레스 레지스터
206:목표 어드레스 확인 로직 207:증분기
본 발명의 상기 및 다른 목적, 관점 및 장점은 도면을 참조하여 이루어지는 본 발명의 다음의 상세한 설명으로부터 보다 잘 이해될 것이다.
본 발명이 적용되는 2개의 구별되는 브랜치 이력 테이블 구성이 존재한다. 첫 번째의 가장 일반적인 구성은 n-엔트리 m-방식 셋트 연합 캐시로 이루어진 캐시이다. 다음의 테이블1은 이러한 브랜치 이력 테이블 엔트리에서 발견되는 필드를 도시하고 있다.
테이블 1
브랜치 어드레스 - 일반적으로 브랜치 어드레스 필드로 불린다.
이 필드는 브랜치 이력 테이블을 어드레스하기 위해 사용되는 인덱스 비트를 포함하지 않는다. 또한, 명령어 펫치 블록에서 브랜치의 개시 위치 를 식별하는 하위 비트도 포함하지 않는다. 또한, 브랜치 어드레 스 필드로부터 브랜치의 어드레스의 고위 비트도 배제될 수도 있다. 이 필드는 또한 앤티-앨리어스(anti-alias) 필드로도 불린다.
브랜치 오프셋 - 이 브랜치 오프셋 필드는 명령어 펫치 블록에서 브랜치의 개시 위치를 식별한다.
유효 - 이것은 유효(valid) 엔트리이다.
브랜치 목표 어드레스 - 브랜치 명령어가 성공적인(즉, 수행되는) 경우에 실행될 차기 명령어의 메모리 위치.
명령어의 차기 블록을 펫치하기 위해 사용되는 어드레스는 4개의 독립된 필드, 즉, 워드 오프셋, 인덱스, 앤티-앨리어스 필드, 및 폐기 비트(discarded bits)로 분할된다. 워드 오프셋은 명령어 디코딩이 시적되는 메모리 펫치 블록 내의 위치를 나타내는 하위(low-order) 어드레스 비트로 이루어진다. 인덱스 필드는 브랜치 이력 테이블을 어드레스하기 위해 사용되는 log2(n) 비트이다. m 엔트리는 캐시로부터 판독된다. 만일 앤티-앨리어스 필드가 동일하면, 그 엔트리는 (통상적으로는 브랜치 이력 테이블 질의(interrogation)와 동시에) 펫치되고 있는 메모리 블록 내의 브랜치를 지정하는것으로서 받아들여진다. 브랜치 이력 테이블 엔트리는 브랜치 결과를 예측하기 위해 사용되는 정보를 포함하는 것으로 가정하자. 브랜치 결과 예측은 캐시로부터 판독되는 m 엔트리에 적용된다. 복수의 명령어가 펫치되기 때문에, 명령어 펫치 메모리 블록 내에서 식별되는 복수의 예측되어 행해진 브랜치가 존재할 수도 있다. 명령어 디코딩은 명령어 펫치 메모리 블록 내의 어떤 위치에서도 시작될 수 있다. 그 워드 오프셋이 명령어 펫치 어드레스의 워드 오프셋 보다 적은 모든 예측되어 행해진 브랜치는 무시되는데, 그 이유는 이들 명령어가 디코드되지 않게 되기 때문이다. 브랜치 이력 테이블의 목적은 단일 명령어 펫치 어드레스를 차기 명령어 메모리 펫치 어드레스로서 제공하는 것이기 때문에, 그 워드 오프셋이 명령어 디코딩이 시작되게 되는 워드 오프셋 보다 크거나 같은 복수의 브랜치가 예측될 때, 보다 적은 워드 오프셋을 가진 엔트리가 선택된다. 선택된 엔트리로부터의 브랜치 목표 어드레스는 차기 명령어 메모리 펫치를 위해 사용된다.
이 기술 분야에 통상의 지식을 가진 자는 브랜치 이력 테이블 엔트리의 워드 오프셋이 명령어 펫치 어드레스의 워드 오프셋 및 모든 다른 엔트리의 워드 오프셋과 비교(a>b)되어야 한다는 것을 인식할 것이다. 결과적으로, 비교기(comparators)의 요구되는 수(required number)는 (m2+ m)/2 이다. 펫치된 명령어의 수가 증가함에 따라, 2가지 결과가 브랜치 이력 테이블 설계에 영향을 준다. 먼저, 워드 오프셋 필드 내의 비트의 수가 증가한다. 또한, 명령어 펫치 블록 내의 복수의 브랜치가 모두 인식되도록 보장하기 위해 결합법칙 클래스(associativity classes)의 수를 증가시킬 필요가 있다. 이들 결과의 조합은 정확한 브랜치 이력 테이블 엔트리를 선택하기 위해 요구되는 회로에서의 기하학적(geometric) 증가를 유발한다.
브랜치 이력 테이블 선택 로직의 복잡성을 감소시키고, 보다 큰 명령어 펫치 블록 크기로 확장될 수 있는 구조를 제공하기 위해, 브랜치 이력 테이블 내의 각각의 엔트리는 그 엔트리에 부가된 브랜치 패턴 필드를 갖고 있다. 이 브랜치 패턴 필드는 명령어 펫치 블록 내의 위치 중에서 최우측(rightmost) 위치를 제외하고 명령어 디코딩이 시작될 수 있는 각각의 위치에 대한 2진 비트를 갖고 있다. 브랜치 이력 테이블 엔트리가 갱신될 때, 명령어 펫치 블록 내의 예측되어 행해진 브랜치의 패턴은, 현재의 엔트리에 의해 지시되는 브랜치 명령어 보다 하위의 어드레스에 있는 명령어 펫치 블록 내의 소정의 예측되어 행해진 브랜치에 대응하는 비트 셋트를 가진 필드를 제공하기 위해 특정 브랜치 이력 테이블 엔트리의 워드 오프셋과 조합된다. 본 발명의 양호한 실시예에서, 워드 오프셋 비교기는 구현에서 제거되고, 간단한 2-AND j-AND 3-AND 로직 구조로 대치되는데, 여기서, j는 브랜치 패턴 필드 내의 비트수 이상의 수이다.
본 발명은 또한, 내용 어드레스가능 메모리(content addressable memory) (CAM)로서 구현되는 브랜치 이력 테이블에도 유용하게 적용될 수 있다. 이 실시예는 보다 일반적인 셋트 연관(associative) 메모리 캐시 설계의 퇴보된 경우로서 생각될 수도 있으며, 여기서, 인덱스 필드는 제로 비트를 갖고 있고, 브랜치 이력 테이블 내의 각각의 엔트리는 그 고유의 앤티-앨리어스 필드 비교기와 히트(hit) 검출 로직을 갖고 있다. 브랜치 패턴 필드는 각 사이클 마다 복수의 명령어를 펫치하는 컴퓨터 시스템에서 내용 어드레스가능 메모리의 사용에 관해 발생하는 중요한 문제점을 해결한다.
브랜치 이력 테이블의 가장 일반적인 구현에 있어서, 예측된 브랜치 명령어에 대한 브랜치 이력 테이블을 검색(search)하기 위해 펫치 어드레스가 사용될 때, 브랜치 오프셋은 고려되지 않는다. 명령어 펫치 블록 내에서 예측될 수 있는 별개의 브랜치의 수는 히트에 대해 검사되는 엔트리의 수인 m에 의해 결정된다. m이 작으면, 예측을 위한 브랜치로서 펫치 어드레스에 가장 가까운 브랜치 명령어를 선택하는 것이 실용적이다. 그러나 m이 커지게 되면, 완전 연관(fully associative) 내용 어드레스가능 메모리의 경우에서와 같이, 본 발명이 없이는 복수의 앤티-앨리어스 필드 정합을 허용하는 것이 비현실적이다. 결과적으로, 이와 같은 브랜치 이력 테이블 내에서 한 명령어 펫치 블록당 하나 이상의 브랜치를 예측하는 것은 일반적으로 불가능하다. 이러한 어려움에 대한, PowerPCTM604e 마이크로프로세서에 의해 구현되는 한 가지 해결책은 앤티-앨리어스 필드 비교시 브랜치 오프셋으로부터의 비트를 포함시키는 것이다. 이러한 방법은 한 명령어 펫치 블록 내에서 복수의 브랜치의 인식을 허용한다. 그러나, 이러한 방법의 단점은 단일 브랜치가 복수의 브랜치 이력 테이블 엔트리를 필요로할 수도 있다는 것이다. 실제적으로, 만일 브랜치 오프셋 필드로부터의 j 비트가 앤티-앨리어스 필드 비교에 포함되어 있다면, 단일 브랜치 명령어를 예측하기 위해, 브랜치 이력 테이블 내의 최대 2j의 엔트리가 할당될 수도 있다는 것이다. 내용 어드레스가능 메모리에 브랜치 패턴 필드를 적용하는 것은 한 브랜치 명령어당 단지 하나의 엔트리를 갖고 한 명령어 펫치 블록 내의 복수의 브랜치의 예측을 할 수 있도록 한다.
이제, 도면, 특히 도1을 참조하면, 본 발명의 방법 및 시스템을 구현하기 위해 사용될 수도 있는 수퍼 스칼라 마이크로프로세서 시스템(10)의 고 레벨 블록도가 도시되어 있다. 도시된 바와 같이, 마이크로프로세서 시스템(10)은 데이터, 명령어 등을 저장하는 메모리(18)를 포함하고 있다. 메모리(18)에 저장된 데이터 또는 명령어는 이 기술 분야에 통상의 지식을 가진 자에게 잘 알려진 방법으로 캐시/메모리 인터페이스(20)를 이용하여 억세스된다. 캐시 메모리 시스템의 사이징(sizing) 및 이용에 대해서도 데이터 처리 기술 분야에서 잘 알려져 있으며, 따라서 본 발명에서는 언급되지 않는다. 그러나, 이 기술 분야에 통상의 지식을 가진 자는, 현대의 연관 캐시 기술을 이용하므로써, 대부분의 메모리 억세스가 캐시/메모리 인터페이스(20) 내에 일시적으로 저장된 데이터를 이용하여 실현될 수 있다는 것을 이해할 것이다.
캐시/메모리 인터페이스(20)로부터의 명령어는 통상적으로, 바람직하게는 다수의 큐 위치(queue positions)를 포함하는 명령어 큐(22)로 로드된다. 수퍼 스칼라 마이크로프로세서 시스템의 통상적인 예에서, 명령어 큐는 8개의 명령어 위치를 포함할 수 있으며, 따라서, 주어진 사이클에서, 캐시/메모리 인터페이스(20)에 의해 얼마나 많은 유효 명령어가 전달되는가에 따라, 또한 명령어 큐(22) 내에서 얼마나 많은 공간이 이용가능한가에 따라, 제로부터 8개 사이의 명령어가 명령어 큐(22)로 로드될 수 있다.
이와 같은 수퍼 스칼라 마이크로프로세서 시스템에서 통상적인 바와 같이, 명령어 큐(22)는 명령어를 복수의 실행 유닛으로 디스패치하기 위해 사용된다. 도1에 도시된 바와 같이, 마이크로프로세서 시스템(10)은 부동소수점 프로세서 유닛(24), 하나 또는 그 이상의 고정소수점 또는 정수 프로세서 유닛(26), 및 브랜치 프로세서 유닛(28)을 포함한다. 그러므로, 명령어 큐(22)는, 각각의 실행 유닛에 대해 하나씩, 제로부터 3개의 (또는, 특정 마이크로프로세서의 고정소수점 프로세서 유닛 및/또는 다른 실행 유닛의 수에 따라서는 그 이상의) 명령어를 한 사이클 동안에 디스패치할 수 있다.
명령어 큐(22)로부터 디스패치되는 순차적인 명령어에 부가하여, 브랜치 프로세서 유닛(28)에 의한 실행을 위해 소위 "조건부(conditional) 브랜치 명령어"가 명령어 큐(22)로 로드될 수 있다. 조건부 브랜치 명령어는 하나 또는 그 이상의 순차적인 명령어를 처리한 선택된 결과에 응답하여 그 애플리케이션 내에서 행해질 관련된 조건부 브랜치를 지정하는 명령어이다. 마이크로프로세서 시스템(10)과 같은 파이프라인 방식의 프로세서 시스템에서의 실행-시간(run-time) 지연을 최소화하기 위한 노력으로, 펫처(fetcher)(30)로서 언급되는 펫치 메카니즘의 일부인 브랜치 이력 테이블에 의해 한 블록의 명령어가 명령어 큐(22)로 펫치될 때, 명령어 큐 내의 조건부 브랜치 명령어의 존재가 예측된다. 이 브랜치 이력 테이블에 대해서는 다음에 상세하게 설명된다. 이 기술 분야에 통상의 지식을 가진 자에 명백한 바와 같이, 한 조건부 브랜치가 "행해지지 않음(not taken)"으로서 예측될 때, 명령어 큐 내의 순차적인 명령어는 단순히 현재의 경로를 따라 계속되고, 변경되는 명령어는 없다. 그러나, 브랜치의 발생에 관한 예측이 부정확한 경우에는, 조건부 브랜치 명령어 프로그램 순서를 뒤따르는 순차적인 명령어를 명령어 큐에서 소거해야 하며, 목표 명령어가 펫치되어야 한다. 이와 달리, 만일 조건부 브랜치가 "행해짐(taken)"으로서 예측되면, 그 예측이 정확한 것으로 결정되는 경우에 조건부 브랜치를 뒤따르도록 목표 명령어가 펫치되어 이용된다. 물론, "행해짐(taken)" 이란 예측이 부정확한 경우에는, 목표 명령어는 소거되어야 하며, 프로그램 순서대로 조건부 브랜치 명령어를 뒤따르는 순차적인 명령어가 검색되어야 한다.
도시된 바와 같이, 마이크로프로세서 시스템(10)은 또한 조건(condition) 레지스터(32)를 포함하고 있다. 이 조건 레지스터(32)는 마이크로프로세서 시스템(10) 내에서 처리되는 순차적인 명령어의 결과로서 발생할 수도 있는 다양한 비교의 결과를 일시적으로 저장하기 위해 사용된다. 그러므로, 부동소수점 프로세서 유닛(24)과 고정소수점 프로세서 유닛(26) 및 브랜치 프로세서 유닛(28)은 모두 조건 레지스터(32)에 결합된다. 조건 레지스터(32) 내의 특정 조건의 상태(status)는 검출되어, 목표 어드레스를 발생하기 위해 브랜치 프로세서 유닛(28)으로 결합될 수도 있으며, 브랜치 프로세서 유닛(28)은 다음에 펫처(30)에 결합된다.
도2는 펫처(30)를 보다 상세하게 도시하고 있다. 목표 어드레스는 목표 어드레스 확인(confirmation) 로직(206)에서 브랜치 큐(204)로부터의 예측된 목표 어드레스와 비교된다. 만일 브랜치 목표가 정확하게 예측되었다면, 아무런 동작도 요구되지 않는다. 그러나, 브랜치가 예측되지 않았거나 또는 브랜치 목표 어드레스가 부정확한 것이면, 다음에 계속되는 명령어는 소거되어야 하며, 정확한 목표 어드레스가 펫치되어야 한다. 또한, 브랜치 이력 테이블(201)은 브랜치 어드레스와 정확한 목표 어드레스 및 브랜치 패턴을 이용하여 갱신되어야 한다.
브랜치 목표 어드레스가 펫처(30)로 제공되고 목표 어드레스 확인이 실패하면, 브랜치 목표 어드레스는 명령어 어드레스 레지스터(205)로 로드되고, 브랜치 목표 어드레스와 브랜치 어드레스는 브랜치 큐(204)로 로드된다. 명령어 어드레스 레지스터(205)의 내용은 캐시/메모리 인터페이스(20)로 결합된다. 브랜치 큐(204)의 내용은 브랜치 이력 테이블(201)로 결합된다. 이 기술 분야에 알려진 몇 가지 최근 최소 사용(least recently used)(LRU) 알고리즘 중 소정의 알고리즘을 이용하여, m 엔트리 중 한 엔트리가 대치되도록 선택된다. 잔여 엔트리 각각은 그 엔트리의 앤티-앨리어스 필드가 브랜치 어드레스로부터의 앤티-앨리어스 필드에 정합하는지 판단하기 위해 질의된다.
도3에 도시된 바와 같이, 브랜치 큐(204)로부터의 브랜치 오프셋 필드 뿐만 아니라 각각의 정합하는 엔트리에 대한 브랜치 오프셋 필드도 여러 코드 중 하나의(one-of-many) 코드로 인코드된다. 이들 코드는 브랜치 어드레스에 의해 펫치되게 되는 명령어 펫치 블록 내의 예측된 브랜치의 패턴을 제공하기 위해 도3에 도시된 바와 같이 함께 OR 연산하므로써 조합된다. 도3은 4-경로(four way) 셋트 연관 브랜치 이력 테이블에 대한 설계를 도시하고 있다. 이 기술 분야에 통상의 지식을 가진 자는 이러한 설계를 소정의 수의 "경로(ways)" 및 명령어 펫치 블록 크기로 쉽게 확장할 수 있다. 이러한 브랜치 패턴은 예측되어 행해진 브랜치를 포함하는 명령어 펫치 블록 내의 각각의 위치에 대응하는 "1"을 포함하게 된다.
소정의 구현에 있어서는, 사용된 LRU 알고리즘이 다른 브랜치에 의해 오버레이될 브랜치 오프셋에서 브랜치를 유발한 경우를 제외하고 예측되어 행해지는 브랜치 명령어가 존재할 수도 있다. 양호한 구현에 있어서는, 브랜치 이력 테이블(201)을 갱신하는 목적을 위해, m 엔트리 셋트가 갱신되었으며, 이들 엔트리의 앤티-앨리어스 필드가 브랜치 어드레스의 앤티-앨리어스 필드에 비교되었다는 것을 상기하자. 그 앤티-앨리어스 필드가 정합된 m 엔트리의 서브셋트에 있어서, 이들 엔트리의 브랜치 패턴 필드는 브랜치 이력 테이블(201)에 부가되는 브랜치의 브랜치 위치를 반영하도록 갱신되어야 한다. 양호한 구현에 있어서, 브랜치 패턴은 그 브랜치 패턴 엔트리가 갱신되는 브랜치 이력 테이블 엔트리의 브랜치 오프셋과 조합된다. 엔트리 특유의(specific) 브랜치 패턴으로 불리는 새로운 브랜치 패턴은, 대응하는 브랜치 패턴 비트가 셋트된 엔트리 특유의 브랜치 패턴 내의 각각의 비트를 셋팅하므로써 생성되며, 이 브랜치 패턴은 브랜치 오프셋이 나타내는 브랜치 어드레스 보다 낮은 브랜치 어드레스를 나타낸다. 이러한 인코딩 방식의 목적은 히트 검출 로직에서 "달성한(winning)" 브랜치 이력 테이블 엔트리를 선택하는 로직을 단순화시키는 것이다. 테이블 2는 4개의 가능한 브랜치 오프셋, 즉, 명령어를 포함할 수도 있는 명령어 펫치 블록 내의 4개의 위치를 포함하는 명령어 펫치 블록을 구비한 마이크로프로세서에 대한 엔트리 특유의 브랜치 패턴의 생성예를 도시하고 있다.
테이블2:엔트리 특유의 브랜치 패턴 필드에 대한 인코딩
Figure kpo00001
테이블 2에서, 최우측의 비트는 항상 제로이며, 브랜치 이력 테이블에 저장될 필요가 없다는 것을 주목하자.
명령어 펫치 블록 어드레스가 명령어 블록 펫치를 개시하기 위한 목적으로 캐시/메모리 인터페이스(20)에 결합될 때마다, 명령어 펫치 블록 어드레스도 또한, 버스(208) 상의 브랜치 이력 테이블(201)에 결합된다. 명령어 펫치 어드레스는 앤티-앨리어스 필드와 인덱스 필드 및 펫치 오프셋으로 분할된다. 인덱스 필드는 m 브랜치 이력 테이블 엔트리의 셋트를 선택하기 위해 사용된다. 명령어 펫치 어드레스로부터의 앤티-앨리어스 필드는 m 브랜치 이력 테이블 엔트리로부터의 앤티-앨리어스 필드와 비교된다. 명령어 펫치 어드레스 앤티-앨리어스 필드와 동일한 앤티-앨리어스 필드를 가진 셋트 m 내의 모든 브랜치 이력 테이블 엔트리는 셋트 m'를 형성한다. 여기서, 셋트 m'는 비어 있을 수도 있고, 단일 엔트리를 포함할 수도 있으며, 또는 복수의 엔트리를 포함할 수도 있다. 만일 셋트 m'가 비어 있으면, 이 명령어 블록에 대한 브랜치 예측은 없다. 만일 셋트 m'가 단일 엔트리를 포함하고 있으면, 그 엔트리는 브랜치를 예측하기 위해 사용된다. 셋트 m'에 복수의 엔트리가 존재하는 경우에, 그 명령어 펫치 오프셋은 펫치 오프셋 보다 높은 오프셋에 있거나 일치하는 명령어 위치를 나타내는 브랜치 패턴내의 각각의 비트에 대응하는 비트 셋트를 가진 필드로 인코드된다. 테이블 3은 4개의 가능한 브랜치 오프셋을 포함하는 명령어 펫치 블록을 구비한 마이크로프로세서에 대한 펫치 오프셋 레코딩의 생성예를 도시하고 있다.
테이블3:명령어 펫치 어드레스 레코딩
펫치 오프셋 레코드된 값
0 1111
1 111
10 11
11 1
각각의 브랜치 이력 테이블 엔트리는 그 엔트리 특유의 브랜치 패턴 필드를 갖고 있기 때문에, 그 엔트리가 브랜치 예측에 사용하기에 올바른 엔트리인지에 관한 판단은 다음과 같이 행해진다. 한 엔트리가 올바른 엔트리가 되기 위해서는 다음의 조건이 정합되어야 한다. 즉, 다시 말하면,
* 브랜치 오프셋은 명령어 펫치 어드레스에 일치하거나 그 우측에 있어야 된다.
* 명령어 펫치 어드레스와 브랜치 오프셋 사이에 있는 명령어 펫치 블록에 다른 브랜치가 없어야 된다.
양호한 구현에 있어서, 브랜치 오프셋은 브랜치 이력 테이블 엔트리에서 디코드된 값으로서 표현된다. 즉, 브랜치 명령어를 포함할 수도 있는 명령어 펫치 블록에서 각각의 위치에 대응하는 저장된 비트가 존재한다. 이 엔트리에는, 현재의 엔트리가 표현하고 있는 브랜치의 위치를 나타내는 오직 하나의 비트가 셋트될 수도 있다. 이러한 논의의 목적을 위해, 이 엔트리를 오프셋(offset)으로서 명명한다. 브랜치 이력 테이블 엔트리 브랜치 패턴은 패턴(pattern)으로서 명명한다. 레코드된 명령어 펫치 어드레스는 펫치(fetch)로서 명명한다. 최우측의 비트가 절단된 펫치는 펫치는 펫치!(fetch !)로서 명명된다. 엔트리 히트(entry hit)에 대한 방정식은 다음과 같다.
entry hit <= {(fetch AND offset)≠0} AND
{(fetch! AND pattern)=0}
본 발명의 장점은 어떤 엔트리가 펫치 요구에 대해 유효한지에 관한 판단이 앤티-앨리어스 비교와 병렬로 행해진다는 것이다. 엔트리 히트(entry hit)와 앤티-앨리어스 정합이 한 엔트리에 대해 모두 참(true) 이면, 브랜치 이력 테이블 엔트리의 목표 어드레스 필드가 명령어 어드레스 레지스터(205)에 결합된다. 모든 m개의 선택된 브랜치 이력 테이블 엔트리에 대한 엔트리 히트 또는 앤티-앨리어스 정합이 거짓(false) 이면, 펫치된 명령어 블록에 대한 브랜치 예측은 없으며, 증분기(incrementer)(207)의 출력은 명령어 어드레스 레지스터(208)에 결합된다. 다음에는, 차기 순서의 명령어 블록이 펫치된다. 목표 어드레스가 명령어 레지스터(205)에 결합되면, 목표 어드레스 및 브랜치 어드레스도 또한, 브랜치 큐(204)에 결합되며, 여기서 예측된 브랜치가 실행될 때까지 유지된다. 본 설명에서 펫처 연산의 상세내용 중 많은 부분이 생략되었는데, 그 이유는 이러한 상세내용이 브랜치 패턴 필드의 부가 및 브랜치 이력 테이블 갱신과 브랜치 히트 검출에 있어서의 후속 변형에 의해 영향을 받지 않기 때문이다. 이 기술분야에 숙련되고 종래 기술을 알고 있는 사람은 누락된 상세내용을 특정 응용을 위해 지원할 수 있을 것이다.
비록 본 발명이 수퍼 스칼라 마이크로프로세서에서 구현되는 단일의 특정 실시예에 관해 설명되었지만, 이 기술분야에 통상의 지식을 가진 자는 본 발명이 첨부된 특허청구의 범위의 사상 및 범위 내에서 변형되어 실시될 수 있다는 것을 인식할 것이다. 예를 들어, 본 발명은, 메인 프레임 및 디지탈 신호 처리기를 포함하여, 브랜치 이력 테이블을 포함하고, 하나 이상의 명령어를 펫치하는 모든 컴퓨팅 장치에 적용될 수 있다.
전술한 바와 같은 본 발명에 따른 디지탈 프로세서에 있어서는, 명령어 펫치 블록 내에서 복수의 브랜치 명령어를 나타낼 수도 있는 브랜치 이력 테이블 내의 적절한 브랜치 목표 어드레스의 검출 및 선택을 단순화하는 효과가 있다.

Claims (7)

  1. 명령어 블록 펫치의 발생에 근거하여 미래의 브랜치를 예측하기 위한 개선된 시스템을 구비한 디지탈 프로세서에 있어서,
    (1) 다수의 브랜치 명령어를 포함할 수 있는 메모리 블록을 펫치하는 명령어 펫치 메카니즘,
    (2) 하나 또는 그 이상의 엔트리 - 여기서, 각각의 엔트리는 명령어 펫치 블록 내에 포함된 브랜치에 대한 브랜치 어드레스 및 브랜치 목표 어드레스와 상기 명령어 펫치 블록 내의 브랜치의 브랜치 패턴 필드를 저장함 - 를 가진 브랜치 이력 테이블,
    (3) 명령어 블록 펫치의 차기 발생시 상기 브랜치 이력 테이블로부터 상기 저장된 브랜치 어드레스와 브랜치 목표 어드레스 및 브랜치 패턴 필드를 검색하기 위한 검색 수단,
    (4) 브랜치 패턴 필드를 사용하여 오직 하나의 브랜치 엔트리만이 예측되도록 보장하기 위한 선택 수단 및
    (5) 브랜치 명령어를 실행하고, 그 결과를 판단하고, 상기 브랜치 명령어의 목표 어드레스를 정정하는 실행 유닛을 포함하는 디지탈 프로세서.
  2. 제1항에 있어서, 브랜치 명령어 결과에 근거하여 상기 브랜치 이력 테이블을 갱신하기 위한 갱신 수단을 더 포함하는 디지탈 프로세서.
  3. 제2항에 있어서, 상기 갱신 수단은 브랜치 목표 어드레스를 갱신하기 위해 최근 최소 사용(LRU) 알고리즘을 구현하는 디지탈 프로세서.
  4. 제2항에 있어서, 브랜치 이력 테이블 내의 엔트리는 앤티-앨리어스 필드와 인덱스 필드 및 펫치 오프셋을 더 포함하고, 상기 인덱스 필드는 m 브랜치 이력 테이블 엔트리의 셋트를 선택하기 위해 사용되고, 명령어 펫치 어드레스로부터의 앤티-앨리어스 필드는 m 브랜치 이력 테이블 엔트리로부터의 앤티-앨리어스 필드와 비교되고, 명령어 펫치 어드레스의 앤티-앨리어스 필드와 동일한 앤티-앨리어스 필드를 가진 모든 브랜치 이력 테이블 엔트리는 셋트 m'를 형성하고, 상기 셋트 m'는 비어 있는 경우에 명령어 블록에 대한 브랜치 예측이 없다는 것을 나타내고, 상기 셋트 m'가 단일 엔트리를 포함하는 경우에는 그 엔트리가 브랜치 예측을 사용된다는 것을 나타내는 디지탈 프로세서.
  5. 제4항에 있어서, 상기 셋트 m'가 복수의 엔트리를 포함하는 경우에, 명령어 펫치 오프셋은 펫치 오프셋 보다 높은 오프셋에 있거나 일치하는 명령어 위치를 나타내는 브랜치 패턴 내의 각각의 비트에 대응하는 비트 셋트를 가진 필드로 인코드되는 디지탈 프로세서.
  6. 제5항에 있어서, 브랜치 이력 테이블 엔트리에 저장된 브랜치 패턴은 상기 브랜치 패턴에 대응하는 비트가 셋트되도록 각각의 비트를 셋팅하므로써 인코드된 엔트리 특유의 브랜치 패턴이고, 상기 비트의 위치는 그 엔트리가 나타내는 브랜치의 브랜치 오프셋에 의해 표현되는 브랜치 어드레스 보다 낮은 브랜치 어드레스를 나타내는 디지탈 프로세서.
  7. 제6항에 있어서, 상기 디지탈 프로세서는 수퍼 스칼라 마이크로프로세서인
    디지탈 프로세서.
KR1019970072661A 1997-03-26 1997-12-23 브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서 KR100276138B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/823628 1997-03-26
US08/823,628 US5822576A (en) 1997-03-26 1997-03-26 Branch history table with branch pattern field
US8/823,628 1997-03-26

Publications (2)

Publication Number Publication Date
KR19980079539A KR19980079539A (ko) 1998-11-25
KR100276138B1 true KR100276138B1 (ko) 2000-12-15

Family

ID=25239276

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970072661A KR100276138B1 (ko) 1997-03-26 1997-12-23 브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서

Country Status (4)

Country Link
US (1) US5822576A (ko)
KR (1) KR100276138B1 (ko)
CN (1) CN1093658C (ko)
TW (1) TW434511B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346737B2 (en) 2004-05-29 2008-03-18 Samsung Electronics Co., Ltd. Cache system having branch target address cache

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333908A (ja) * 1997-05-30 1998-12-18 Mitsubishi Electric Corp 分岐予測方法
US6385720B1 (en) * 1997-07-14 2002-05-07 Matsushita Electric Industrial Co., Ltd. Branch prediction method and processor using origin information, relative position information and history information
US7434036B1 (en) * 2002-08-30 2008-10-07 Verisilicon Holdings Co. Ltd. System and method for executing software program instructions using a condition specified within a conditional execution instruction
DE102005037248A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Steuerung eines Speicherzugriffs bei einem Rechnersystem mit wenigsterns zwei Ausführungseinheiten
DE102005037250A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Steuerung eines Speicherzugriffs bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten
US7640400B2 (en) * 2007-04-10 2009-12-29 International Business Machines Corporation Programmable data prefetching
JP2008299795A (ja) * 2007-06-04 2008-12-11 Nec Electronics Corp 分岐予測制御装置及びその方法
US9778934B2 (en) * 2010-11-16 2017-10-03 Advanced Micro Devices, Inc. Power efficient pattern history table fetch in branch predictor
US8886920B2 (en) * 2011-05-13 2014-11-11 Oracle International Corporation Associating tag to branch instruction to access array storing predicted target addresses for page crossing targets for comparison with resolved address at execution stage
US10007522B2 (en) * 2014-05-20 2018-06-26 Nxp Usa, Inc. System and method for selectively allocating entries at a branch target buffer
US9940262B2 (en) * 2014-09-19 2018-04-10 Apple Inc. Immediate branch recode that handles aliasing
US20170185402A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Instructions and logic for bit field address and insertion

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3559183A (en) * 1968-02-29 1971-01-26 Ibm Instruction sequence control
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
GB8608494D0 (en) * 1986-04-08 1986-05-14 Davy Mckee Sheffield Strip guiding for downcoilers
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
JPH0820950B2 (ja) * 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
US5394530A (en) * 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
CA2124333A1 (en) * 1992-02-27 1993-09-02 John A. Saba Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5471597A (en) * 1993-12-23 1995-11-28 Unisys Corporation System and method for executing branch instructions wherein branch target addresses are dynamically selectable under programmer control from writable branch address tables

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346737B2 (en) 2004-05-29 2008-03-18 Samsung Electronics Co., Ltd. Cache system having branch target address cache

Also Published As

Publication number Publication date
CN1196522A (zh) 1998-10-21
KR19980079539A (ko) 1998-11-25
CN1093658C (zh) 2002-10-30
TW434511B (en) 2001-05-16
US5822576A (en) 1998-10-13

Similar Documents

Publication Publication Date Title
US4942520A (en) Method and apparatus for indexing, accessing and updating a memory
US5507028A (en) History based branch prediction accessed via a history based earlier instruction address
US7434037B2 (en) System for target branch prediction using correlation of local target histories including update inhibition for inefficient entries
US5903750A (en) Dynamic branch prediction for branch instructions with multiple targets
US5941980A (en) Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
KR100333470B1 (ko) 세트 예측을 사용하여 세트 연상 캐시에서 대기 시간을감소시키기 위한 방법 및 장치
KR100341431B1 (ko) 다수의 예측 분기 명령을 통한 명령 페치의 정렬 명령캐시 제어
US4477872A (en) Decode history table for conditional branch instructions
US4894772A (en) Method and apparatus for qualifying branch cache entries
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US5740415A (en) Instruction supplying apparatus with a branch target buffer having the contents so updated as to enhance branch prediction accuracy
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
JP2000029701A (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US20020124156A1 (en) Using "silent store" information to advance loads
JPH10198563A (ja) マイクロプロセッサ内の動的にロード可能なパターン履歴表
KR20070118135A (ko) 인덱스당 2개 이상의 분기 타겟 어드레스를 저장하는 분기타겟 어드레스 캐시
KR100276138B1 (ko) 브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
JP2006520964A5 (ko)
US5842008A (en) Method and apparatus for implementing a branch target buffer cache with multiple BTB banks

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee