KR20020035608A - 데이터 프로세서 및 이에 의한 인스트럭션 실행 방법 - Google Patents

데이터 프로세서 및 이에 의한 인스트럭션 실행 방법 Download PDF

Info

Publication number
KR20020035608A
KR20020035608A KR1020027003655A KR20027003655A KR20020035608A KR 20020035608 A KR20020035608 A KR 20020035608A KR 1020027003655 A KR1020027003655 A KR 1020027003655A KR 20027003655 A KR20027003655 A KR 20027003655A KR 20020035608 A KR20020035608 A KR 20020035608A
Authority
KR
South Korea
Prior art keywords
instruction
address
instruction address
branch target
memory
Prior art date
Application number
KR1020027003655A
Other languages
English (en)
Other versions
KR100872293B1 (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 KR20020035608A publication Critical patent/KR20020035608A/ko
Application granted granted Critical
Publication of KR100872293B1 publication Critical patent/KR100872293B1/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/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
    • 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
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

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

데이터 프로세서 및 이에 의한 인스트럭션 실행 방법{DATA PROCESSOR WITH BRANCH TARGET BUFFER}
인스트럭션을 인스트럭션 메모리 내에 어드레스하는 것과 상기 어드레스된 인스트럭션을 상기 인스트럭션 메모리로부터 수신하는 것 간의 지연은 데이터 프로세서에 의한 인스트럭션의 실행의 속도를 떨어뜨릴 수 있는 요인이 된다. 이러한 속도 감소를 줄이기 위해, 인스트럭션이 바람직하게는 프리페치된다. 즉, 이전 인스트럭션의 어드레스를 발행한 후에, 이전 인스트럭션의 실행이 완료되기 전에, 극단적인 경우에는 이전 인스트럭션이 디코드되기 전에, 현 인스트력션의 어드레스가 가능한한 신속하게 발행된다.
이러한 프리페치는 상기 이전 인스트럭션이 분기 인스트럭션일 경우에 잘못된 인스트럭션을 프리페치할 수도 있다. 이러한 문제를 극복하기 위해, 분기 인스트력션의 타겟 어드레스를, 분기 인스트럭션의 인스트럭션 어드레스로 어드레스될 수 있는 이른바 "분기 타겟 버퍼(branch target buffer:BTB)" 메모리 내에 저장하는 방법이 알려져 있다. 현 인스트럭션의 인스트럭션 어드레스가 결정되어야 할 때, 이전 인스트럭션의 어드레스는 BTB를 어드레스하는데 사용된다. BTB가 이전 인스트럭션의 어드레스에 대한 분기 타겟의 어드레스를 저장하면, 상기 분기 타겟의 어드레스는 현 인스트럭션을 프리페치하는데 있어서 현 인스트럭션 어드레스로 사용될 수 있다. 이로써, 현 인스트럭션이 프리페치되는 현 인스트럭션 어드레스는 극단적인 경우에 이전 인스트럭션이 디코드되기 전에도 결정될 수 있다. 물론, 이러한 방식으로 결정되는 현 인스트럭션 어드레스는 다만 예측된 것이다. 만일 이러한 방식으로 잘못된 인스트럭션이 프리페치되었음이 판명되면, 올바른 인스트럭션이 나중에 페치될 것이다.
"Proceedings of the 28thAnnual International Symposium on Microarchitecture, pages 193-198, Ann Arbor Michigan, November 29-December 1,1995"에 공보된, Barry Fagin 및 Kathryn Russel에 의한 논문 "Partial resolution in branch target buffers"에서, 분기 타겟 버퍼(BTB)를 사용하는 것이 알려져 있다.
분기 타겟 버퍼는 매우 신속한 메모리이어야 하며, 상기 버퍼는 매 인스트럭션 싸이클에서 액세스될 것이다. 이는 분기 타겟 버퍼가 상당한 전력을 소비하게 한다. 이러한 전력 소비를 줄이는 것이 바람직하며, 이는 BTB에 사용되는 메모리의 크기가 감소될 수 있다면 성취될 수 있다. Fagin 등에 의한 상기 논문에서 BTB의 크기를 줄이는 방법, 즉 BTB의 연관 분해(associative resolution)의 감소가 알려져 있다. 즉, BTB는 이전 인스트럭션의 어드레스의 최하위부(a least significant part)만으로 어드레스된다.
발명의 개요
본 발명은 분기 타겟 버퍼의 크기를 감소시키는 방법을 제공하는 것이다.
본 발명에 따른 데이터 프로세싱 회로는 청구범위 제 1 항에서 제안되며, 상기 데이터 프로세싱 회로를 동작시키는 방법은 청구범위 제 6 항에서 제안된다. 본 발명에 따른 방법 및 회로에서는, 분기 타겟 버퍼는 전체 분기 타겟 어드레스를 저장할 필요가 없다. 이는 분기 타겟 어드레스를 위해 필요한 메모리의 양을 감소시킨다. 본 발명에 따르면, 전체 분기 타겟 어드레스보다 작은 오직 업데이트 값만이 저장된다. 프로그램 흐름시에 분기 변경이 예상될 때, 상기 업데이트 값을 이전 인스트럭션 어드레스에 대해 규정된 영역 내에서의 현 인스트럭션 어드레스의 위치를 지시하는 인덱스로 사용함으로써, 현 인스트럭션 어드레스가 선택된다. 물론, 이러한 방식으로 장거리에 걸쳐있는 분기의 분기 타겟은 저장될 수 없다. 그러나, 상기 장거리 분기는 비교적 자주 발생하지 않는다. 그러한 장거리 분기는, 장거리 분기에 대한 전체 분기 타겟 어드레스를 저장함으로써 또는 이전 인스트럭션의 실행이 요구된 분기 타겟 어드레스를 생성할 때까지 대기함으로써, 처리될 수 있다.
바람직한 실시예에서, 업데이트 값은 현 인스트럭션 어드레스의 오직 하위 부분만을 제공하며, 이전 인스트럭션은 현 인스트럭션 어드레스의 상위 부분을 제공한다. 이와 달리, 현 인스트럭션 어드레스는 이전 인스트럭션 어드레스에 업데이트 값을 산술적으로 더함으로써 획득될 수 있다. 후자의 방법은 전자의 방법에 비해, 인스트럭션 어드레스의 상위 부분이 변경(상기 변경은 임의의 거리에 걸쳐있는 분기에 대해서도 발생할 수 있음)되는 경계를 교차하는 분기에 대해서도 유효하다는 장점을 갖는다. 그러나, 후자의 방법은 업데이트 값을 검색하기 위해 필요한 시간 이외의 상기 업데이트 값을 산술적으로 더하기 위한 시간을 필요로 한다. 이는 현 인스트럭션이 어드레스되는 시간을 지연시키며, 이로써 실행 속도를 떨어뜨린다. 이러한 지연을 감소하기 위해, 바람직한 실시예는, 업데이트 값은 현 인스트럭션 어드레스의 오직 하위 부분만을 제공하며 이전 인스트럭션 어드레스가 현 인스트럭션 어드레스의 상위 부분을 제공하는 것이다.
실시예에서, 업데이트 값 및 분기 인스트럭션의 절대 분기 타겟 어드레스 모두는, 현 인스트럭션 어드레스를 결정하는데 사용되기 위해, 분기 타겟 버퍼 내에 저장된다. 정보가 이전 인스트럭션 어드레스에 대한 분기 타겟 버퍼로부터 검색될 때, 상기 정보의 타입에 의존하여, 상기 정보는 현 인스트럭션 어드레스로 직접적으로 사용되거나, 업데이트 값 및 이전 인스트럭션 어드레스를 이용하여 현 인스트럭션 어드레스를 선택하는데 사용된다.
바람직하게는, 분기 타겟 버퍼는 업데이트 값을 저장하기에 적합한 크기, 즉 절대 타겟 어드레스를 저장하기에 필요한 크기보다 작은 크기를 갖는 저장장소(locations)를 가지며, 절대 어드레스는, 분기 타겟 버퍼 내에 저장될 때, 업데이트 값을 저장하기 위한 적어도 두 개의 저장 장소에 걸쳐 분포한다.
본 발명에 따른 회로 및 방법에 대한 이들 측면 및 다른 측면은 다음 도면을 참조하여 보다 상세하게 설명될 것이다.
본 발명은 데이터 프로세싱에 관한 것이며, 특히 프로그램 흐름시에 분기 변경이 발생할지의 여부를 결정하기 위해 이전 인스트럭션의 해석이 가능하기 전에 인스트럭션이 프리페치(prefetch)되는 데이터 프로세싱에 관한 것이다.
도 1은 데이터 프로세싱 회로의 도면,
도 2는 분기 타겟 정보를 저장하는 흐름도,
도 3은 인스트럭션 프리페치 유닛의 도면.
도 1은 데이터 프로세싱 회로의 도면이다. 데이터 프로세싱 회로는 인스트럭션 실행 유닛(10), 인스트럭션 메모리(12), 인스트럭션 프리페치 유닛(14)을 포함한다. 인스트럭션 프리페치 유닛(14)은 인스트럭션 메모리(12)의 어드레스 입력에 접속되며 실행 유닛(10)에 접속되는 인스트럭션 어드레스 출력을 갖는다. 인스트럭션 메모리(12)는 인스트럭션 실행 유닛(10)의 인스트럭션 입력에 접속된 인스트럭션 출력을 갖는다.
동작 시에, 인스트럭션 프리페치 유닛(14)은 인스트럭션 어드레스를 인스트럭션 메모리(12)에 연속적으로 발행한다. 인스트럭션 메모리(12)는 인스트럭션 어드레스에 의해 어드레스된 인스트럭션을 검색하여 검색된 인스트럭션을 실행 유닛(10)에 공급한다. 실행 유닛(10)은 프로그램 흐름에서 요구되는 인스트럭션을 실행한다. 인스트럭션 실행 유닛(10)이, 실행되어야하는 인스트럭션의 어드레스가 인스트럭션 프리페치 유닛(14)에 의해 발행된 인스트럭션 어드레스와 동일하지 않음을, 검출한다면, 인스트럭션 실행 유닛(10)은 보정 신호를 인스트럭션 프리페치 유닛(14)에 전송하여 인스트럭션 어드레스를 보정한다.
인스트럭션 프리페치 유닛(14)은 분기 타겟 구성 요소(a branch target component)를 포함하며 분기 이력 구성 요소(a branch history component)를 포함할 수 있다. 분기 타겟 구성 요소는 인스트럭션 메모리(12) 내의 분기 인스트럭션이 분기되는 인스트럭션 어드레스에 대한 정보를 저장한다. 분기 이력 구성 요소는 분기 인스트럭션이 취해질 가능성의 여부를 나타내는 정보를 저장한다. 분기 타겟 어드레스에 대한 정보가 이용가능하며 분기가 취해질 가능성이 있다면, 인스트럭션 프리페치 유닛(14)은 인스트럭션을 분기 타겟 어드레스로부터 프리페치할 것이다. 분기 이력 구성 요소는 본 발명에서 필수 요소는 아니어서 도시되거나 이후에 설명되지 않는다.
메모리 내에 데이터를 로딩하며 저장하기 위한 접속부는 도 1에 도시되지 않는데, 그 이유는 이러한 접속부가 본 발명을 이해하는데 필요하지 않기 때문이다. 실행 동안, 실행 유닛(10)은 데이터 메모리로부터 데이터 값을 필요로 할 수 있다. 이를 위해, 그 자신의 어드레스 및 실행 유닛(10)으로의 데이터 접속부를 갖는 개별 데이터 메모리(도시되지 않음)가 제공될 수 있거나, 인스트럭션 메모리(12)가 인스트럭션 페치(fetch)와 함께 시간 다중화 방식으로 데이터 메모리로 사용될 수있다.
인스트럭션 프리페치 유닛(14)은 두 부분으로 도시된 N-비트 인스트럭션 어드레스 레지스터(140a,b)를 포함하며, 상기 두 부분 중 제 1 부분(140a)은 인스트럭션 어드레스의 N-M 비트 상위 부분을 저장하며, 제 2 부분(140b)은 인스트럭션 어드레스의 M 비트 하위 부분을 저장한다(여기서, 0<M<N). 인스트럭션 어드레스 레지스터의 제 1 부분 및 제 2 부분(140a,b)의 어드레스 출력(141a,b)은 인스트럭션 메모리(14)의 어드레스 입력에 접속된다. 인스트럭션 프리페치 유닛은 어드레스 증분 유닛(adress incrementation unit)(142) 및 제 1 및 제 2 부분(143a,b)을 포함하는 어드레스 멀티플렉서(142)를 포함한다. 어드레스 레지스터(140a,b)의 어드레스 출력(141a,b)은 증분 유닛(142)에 접속되며, 각기 상기 증분 유닛은 증분된 어드레스의 상위 부분 및 하위 부분에 대해 각기 제 1 및 제 2 출력을 가지며, 상기 제 1 및 제 2 출력은 각기 어드레스 멀티플렉서의 제 1 및 제 2 부분(143a,b)의 제 1 입력에 접속된다. 어드레스 멀티플렉서의 제 1 및 제 2 부분(143a,b)은 각기 어드레스 레지스터의 제 1 및 제 2 부분(140a,b)에 접속된 출력을 갖는다.
인스트럭션 프리페치 유닛(14)은 인스트럭션 어드레스 레지스터(140a,b)의 어드레스 출력(141a,b)에 접속된 (바람직하게는 연관(associative)) 어드레스 입력과, 어드레스 멀티플렉서의 제 1 및 제 2 부분(143a,b)의 제어 입력에 접속된 "히트" 신호 출력과, 어드레스 멀티플렉서의 제 2 부분(143b)의 제 2 입력에 접속된 분기 타겟 정보 출력을 구비한 메모리(148)를 포함한다. 인스트럭션 어드레스레지스터의 제 1 부분(140a)의 어드레스 출력(141a)은 어드레스 멀리플렉서의 제 1 부분(143a)의 제 2 출력에 접속된다. 메모리(148)는 인스트럭션 실행 유닛(10)에 접속된 내용 업데이트 입력을 갖는다. 실행 유닛(10)은 제 1 및 제 2 어드레스 멀티플렉서(143a,b)의 제 3 입력에 접속된 어드레스 보정 출력과, 제 1 및 제 2 어드레스 멀티플렉서(143a,b)의 다른 제어 입력에 접속된 멀티플렉서 제어 출력을 갖는다.
동작시에, 인스트럭션 프리페치 유닛(14)은 인스트럭션 싸이클 클록(도시되지 않음)의 제어 하에서 인스트럭션 실행 유닛(10)에 의한 인스트럭션 실행과 동기적으로(synchronously) 동작한다. 메모리(148)는 인스트럭션 메모리(12) 내의 분기 인스트럭션의 타겟 어드레스에 대한 정보를 저장한다. 이러한 정보는, 이용가능하다면, 분기 인스트럭션의 인스트럭션 어드레스를 메모리(148)에 인가함으로써 검색될 수 있다. 바람직하게는, 메모리(148)는 (세트) 연관적(associative)이다.
메모리(148)는 인스트럭션 어드레스 레지스터(140)로부터 수신된 인스트럭션 어드레스에 의해 어드레스된 분기 타겟 정보를 수신한다. 메모리(148)가 "히트" 신호(인스트럭션 어드레스에 대한 분기 타겟 정보의 존재함)를 표시할 때, 이 신호는 어드레스 멀티플렉서(143a,b)에 전송된다. 이에 응답하여, 어드레스 멀티플렉서(143a,b)는 인스트럭션 어드레스 레지스터의 제 1 부분(140a)으로부터의 인스트럭션 어드레스의 N-M 상위 부분을 다시 상기 인스트럭션 어드레스 레지스터의 제 1 부분(140a)에 돌려 보낸다. 또한, 히트의 검출에 응답하여, 인스트럭션 어드레스 멀리플렉서의 제 2 부분(143b)은 메모리(148)로부터 검색된 분기 타겟 정보를인스트럭션 레지스터의 제 2 부분(140b)으로 전달한다.
메모리(148)가 히트를 보고하지 않을 때, 인스트럭션 어드레스 멀리플렉서(143a,b)는 어드레스 증분 유닛(142)의 출력의 N-M 비트 상위 부분과 M 비트 하위 부분을 인스트럭션 어드레스 레지스터(140a,b)로 통과시킨다. 이로써, 다음 인스트럭션 어드레스는 인스트럭션 메모리(12) 내의 이전 인스트럭션을 따르는 인스트럭션의 어드레스가 된다.
이와 대조적으로, 메모리(148)가 히트를 보고하는 경우, 이전 인스트럭션 어드레스의 N-M 상위 비트와 메모리(148)로부터 검색된 M 하위 비트를 포함하는 다음 인스트럭션 어드레스가 인스트럭션 어드레스 레지스터(140a,b)로 로드된다. 이로써, 이전 인스트럭션 어드레스와 동일한 상위 N-M 비트를 갖는 인스트럭션 어드레스만이 로드될 수 있다. 메모리(148)는 다수의 인스트럭션 어드레스에 대한 어드레스를 계산(computation)하기 위해 필요한 M 하위 비트만을 저장한다. 이로써, 메모리는 동일한 수의 인스트럭션 어드레스를 위해 전체 N 비트 분기 타겟 어드레스를 저장하는데 필요한 메모리보다 작아진다. 하위 비트의 정확한 수 M 은 보다 작아진 메모리 크기로 인한 이득과 타겟 어드레스 예측력의 손실 간의 적절한 조정으로 결정되는데, 그 이유는 모든 가능한 분기 타겟 어드레스 값이 상기 방식으로 표현될 수 없기 때문이다. 분기 타겟 어드레스의 하위 비트를 M이 10과 동일하거나 이보다 크게 하여 저장함으로써, 분기 타겟 어드레스를 저장하는데 있어서 (86% 이상의) 양호한 능력을 가질 수 있음이 실제 벤치마크를 통해 발견되었다. 이로써, 인스트럭션 어드레스 레지스터의 제 2 부분(140b) 및 어드레스 멀티플렉서의제 2 부분(143b)의 비트는 M이 10과 동일하거나 보다 크도록 하는 것이 바람직하다.
물론, 이러반 방식으로 계산되는 다음 인스트럭션 어드레스는 올바르지 않을 수 있다. 가령, 이는 분기 인스트럭션이 취해지는 경우, 또는 분기 인스트럭션에 대한 분기 타겟에 대한 정보가 존재하지 않을 경우이다. 인스트럭션 프리페치 유닛(14)에 의해 발행된 인스트럭션 어드레스를 인스트럭션 실행의 결과로 계산된 인스트럭션 어드레스와 비교함으로써, 실행 유닛(10)은 이와 같은 경우를 검출한다. 만일 두 인스트럭션 어드레스가 동일하지 않다면, 실행 유닛(10)은 인스트럭션 실행 동안 계산된 보정 인스트럭션 어드레스를 어드레스 멀티플렉서(143a,b)에 출력하며 어드레스 멀티플렉서(143a,b)가 보정된 어드레스를 인스트럭션 레지스터(140a,b)에 출력하도록 명령한다.
몇몇 프로세서는 어드레싱 인스트럭션 메모리의 두 기본 단위의 제곱의 인스트럭션 크기를 갖는다. 가령, MIPS 프로세서는 4 바이트 인스트럭션을 갖는다. 이 경우에, 인스트럭션 어드레스의 최하위 비트는 항상 동일한 값을 갖는다. 분명하게 말하자면, 이 경우에, 이 최하위 비트는 메모리(148) 내에 저장된 M 하위 비트에 또는 메모리(148)를 어드레스하는데 사용되는 인스트럭션 어드레스 내에 포함될 필요가 없다. 또한, MIPS 프로세서와 같은 몇몇 프로세서는 지연된 분기 인스트럭션을 갖는다. 이 경우에, 메모리 내의 분기 인스트럭션을 따르는 하나 또는 그 이상의 인스트럭션은 분기가 인스트럭션 어드레스에 영향을 미치기 전에 실행된다. 이 경우에, 메모리(148)는, 지연된 분기 인스트럭션의 인스트럭션 어드레스를 수신한 후에, 인스트럭션 싸이클의 대응하는 수 만큼 히트 및 분기 타겟 어드레스의 하위 부분을 나타내는 신호의 출력을 지연시킬 수 있으며, 메모리(148)에 의해 출력된 분기 타겟 어드레스는 이전 인스트럭션의 예상 분기 타겟이 되지만, 바로 앞선 인스트럭션에 대해서는 필수적으로 예상 분기 타겟이 되지 않는다. 또한, 실행 유닛이 지연된 분기를 가지지 않을지라도, 가령 메모리(148)가 분기 타겟 정보를 검색하는데 있어서 보다 많은 시간을 주기 위해, 분기 인스트럭션 이전에 인스트럭션을 어드레스하는 이전 인스트럭션 어드레스에 의해 어드레스된 메모리(148) 내의 분기 인스트럭션에 대한 분기 타겟 정보를 저장하는 것이 바람직 할 수 있다.
도 1은 인스트럭션 레지스터의 제 1 부분(140a)으로부터의 인스트럭션 어드레스의 상위 부분을 다음 인스트럭션 어드레스의 상위 부분으로 사용하는 것을 도시한다. 본 발명의 범위 내에서, 인스트럭션 레지스터(140a) 내의 이전 인스트럭션 어드레스에 대해 사전규정된 다음 인스트럭션 어드레스의 상위 부분이 사용될 수 있다. 가령, 이전 인스트럭션 어드레스가 상위 부분이 변경되는(하위 부분은 모두가 제로가 되거나 1이됨) 경계 이상의 제 1 임계값보다 작고, 분기 타겟 정보가 사전결정된 제 2 임계값(가령, 1과 동일한 최상위 비트를 갖는 값임) 이상의 하위 부분에 대한 값을 제공한다면, 하나의 인스트럭션 만큼 증분된 이전 인스트럭션 어드레스의 상위 부분의 버전(version)을 다음 인스트럭션 어드레스에 대해 사용할 수 있다. 이로써, 경계의 교차로 인한 오측의 빈도가 감소될 수 있다. 이는, 이전 인스트럭션 어드레스의 출력이 다음 인스트럭션 어드레스에 바로 앞서서 인스트럭션 메모리(12)로 발행된 인스트럭션 어드레스가 아니다면, 유효하다.
다른 실시예로서, 증분 유닛(142)으로부터의 증분된 인스트럭션 어드레스의 상위 비트가 다음 인스트럭션 어드레스에 대해 사용될 수 있다. 이로써, 인스트럭션 어드레스의 상위 부분을 인스트럭션 레지스터의 제 1 부분(140a)에서 멀티플렉서의 제 1 부분(143a)으로 공급하는 것이 생략될 수 있다. 메모리(148)로부터 검색된 인스트럭션 어드레스의 하위 부분이 충분하게 크다면, 상기 모든 인스트럭션 어드레스의 하위 부분은 실행 속도에 대해 비교적 큰 차이를 만들지 않는데, 그 이유는 인스트럭션 어드레스의 상위 비트가 인스트럭션 어드레스 증분으로 인해 드물게 변경되기 때문이다. 인스트럭션 어드레스 레지스터의 제 1 부분(140a)으로부터의 상위 비트를 다시 결합시키는 대신, 메모리(149)가 히트를 보고할 때 상기 인스트럭션 어드레스의 제 1 부분(140a)의 업데이트를 디스에이블할 수도 있다. 이는 전력 소비를 줄이며 회로의 복잡성을 줄인다.
바람직하게는, 메모리(148)는 완전 연관 메모리(fully associative memory)이며, 세트 연관 메모리(set-associative memory) 또는 직접 메모리(a direct memory)이다. 직접 메모리에서는, 어드레스 출력(141a,b)으로부터 수신된 인스트럭션 어드레스의 부분이 메모리(148)를 어드레스하는데 사용되며, 매모리는 어드레스 출력(141a,b)으로부터의 인스트럭션 어드레스의 다른 부분에 대응하는 "태그" 및 분기 타겟 어드레스에 대한 정보를 저장한다. 태그는 메모리(148)에 인가된 인스트럭션 어드레스의 대응 부분과 비교된다. 만약 이들이 서로 동일하다면, 히트가 보고된다. 세트 연관 어드레스에서, 태그의 세트 및 분기 타겟 정보 아이템은 어드레스 출력(141a,b)으로부터 수신된 인스트럭션 어드레스의 부분에 의해 어드레스되는 저장 장소에 저장된다. 태그가 어드레스 출력(141a,b)으로부터 수신된 인스트럭션 어드레스의 대응 부분과 동일하는지의 여부에 따라, 이들 저장 장소 중의 하나가 선택되거나 아무것도 선택되지 않는다. 완전 연관 메모리에서는, 인스트럭션 어드레스에 대한 분기 타겟 정보는 메모리(148) 내의 임의의 장소에서 저장될 수 있으며 전체 인스트럭션 어드레스는 태그로 사용된다.
메모리(148)에 대한 메모리 크기를 더 감소시키기 위해, 완전 연관 메모리, 세트 연관 메모리 또는 직접 메모리 내에 오직 태그의 일부만을 위한 저장 공간을 제공할 수 있다. 메모리로부터 인스트럭션 어드레스를 검색하기 위해, 오직 인스트럭션 어드레스의 태그 중 저장된 부분만이 어드레스 출력(141a,b)으로부터 수신된 이전 인스트럭션 어드레스의 대응 부분과 비교된다. 상기 부분들이 동일하다면, 히트가 보고되며, 다음 인스트럭션 어드레스가 메모리(148)를 사용하여 결정된다. 이는 분기 타겟 예측의 신뢰성을 보다 떨어뜨리는데, 그 이유는 비교되지 않은 인스트럭션 어드레스의 잔여 부분은 정합되지 않을 수 있기 때문이다. 그러나, 상기 떨어진 예측 신뢰성으로 인한 실행 속도의 손실은 매우 작다. 128 개의 또는 512 개의 저장 장소의 메모리와 함께, 8 또는 그 이상의 태그 비트는 만족할만한 신뢰성을 제공한다.
바람직하게는, 메모리(148)의 내용은 프로그램 흐름의 과정 동안 업데이트된다. (이와 달리, 프로그램 실행 이전에, 자주 실행될 것으로 예상되는 다수의 분기 인스트럭션에 대한 사전규정된 내용을 로드할 수 있다.) 이러한 업데이트를위해, 실행 유닛(10)은 메모리(148)의 업데이트 입력에 접속된 출력을 갖는다.
도 2는 메모리(148)를 업데이트하는 흐름도이다. 제 1 단계(21)에서, 실행 유닛(10)은 인스트럭션 메모리(12)의 어드레스 A(n)으로부터 페치된 인스트럭션 I(A(n))의 프로세싱을 시작한다(여기서, n은 인스트럭션 싸이클을 나타내기 위해 사용된 인덱스이며, n은 실행 유닛(10)에 의해 결정될 필요가 없으며, A(n)은 단지 현 인스트럭션의 어드레스이며, A(n+1)은 다음 인스트럭션의 어드레스이다). 제 2 단계(22)에서, 실행 유닛(10)은 인스트럭션 I(A(n))이 분기 인스트럭션인지를 결정한다. 만일 분기 인스트럭션이 아니라면, 흐름도는 다음 인스트럭션 싸이클(n+1)에 대해 반복된다. 만일 인스트럭션 I(A(n))이 분기 인스트럭션이라면, 실행 유닛(10)은 분기 인스트럭션 I(A(n)) 후에 실행되어야하는 인스트럭션의 어드레스 A(n+1) 및 분기 인스트럭션 I(A(n))의 어드레스를 발행한 후에 인스트럭션 프리페치 유닛(14)에 의해 발행된 인스트럭션 어드레스의 어드레스 F(n+1)를 결정한다. 제 3 단계에서, 실행 유닛(10)은 A(n+1)과 F(n+1)이 동일한지를 검출한다. 그렇다면, 존재한다면, 분기 타겟이 올바르게 예측된 것이며, 흐름도는 다음 인스트럭션(n+1)에 대해 반복된다.
만약 A(n+1)이 F(n+1)과 동일하지 않다면, 실행 유닛(10)은 제 4 단계(24)를 실행하는데, 이 제 4 단계에서 분기 타겟의 어드레스 A(n+1)의 M 하위 비트가, 분기 인스트럭션 I(A(n))이 취해졌다면, 분기 인스트럭션 I(A(n))의 어드레스 A(n)에 의해 어드레스된 메모리(148) 내의 저장 장소에 저장된다. 메모리(148)가 바람직하게는 연관 메모리이기 때문에, A(n+1)를 저장하는 메모리 저장 장소를 선택할 필요가 있으며 이로써 상기 메모리 저장 장소의 내용을 오버라이트할 수 있다. 메모리 저장 장소는 LRU (Least Recently Used) 알고리즘과 같은 알려진 캐시 대체 알고리즘에 따라 선택될 수 있다. 만약 A(n+1)이 F(n+1)과 동일하지 않고 분기 인스트럭션 I(A(n))이 취해지지 않는다면, 이는 분기 타겟 어드레스 F(n+1)가 A(n)에 의해 어드레스된 메모리(148) 내의 저장 장소에 이미 존재함을 의미한다. 이 경우에, 바람직하게는, 실행 유닛(10)은 상기 어드레스 F(n+1)를 그대로 남겨두어 나중에 사용되도록 한다. 제 4 단계(24) 후에, 흐름도는 다음 인스트럭션(n+1)에 대해 진행된다.
물론, 도 2에서 도시된 알고리즘에 대한 다양한 변경이 존재할 수 있다. 가령, 순방향 분기에 대해서는 분기 타겟 정보를 저장하지 않고 오직 역방향 분기에 대해서만 분기 타겟 정보를 저장할 수 있는데, 그 이유는 (가령, 역 루프 분기(loop branch back)와 같이) 역방향 분기가 보다 빈번하게 취해질 것이 예상되기 때문이다. 이로써, 보다 많은 메모리 저장 장소가 대부분의 실행(역방향 분기)에 대해 이용가능하게될 것이며, 이는 메모리(148) 내의 이들 분기의 타겟의 조기 대체의 위험을 줄인다.
발행된 어드레스 F(n+1)가 실행되어야 하는 인스트럭션의 어드레스 A(n+1)와 다르고 인스트럭션 I(A(n))이 분기 인스트럭션 또는 예측되지 않은 어드레스로 분기하는 취해진 분기 인스트럭션이 아닐 경우, 분기 타겟 정보가 상기 발행된 어드레스 F(n+1)와 함께 인스트럭션 레지스터(140a,b)의 내용을 업데이트하는데 사용된다면, 실행 유닛(10)은 상기 분기 타겟 정보를 무효화할 수 있다. 이는 오직 부분적 태그만이 정보를 메모리(148)로부터 검색하는데 사용되는 실시예에서 특히 유용하다. 이 경우에, 메모리(148)는 잘못된 인스트럭션 어드레스에 대한 히트를 생성할 수 있으며, 이는 메모리(148) 내에 저장된 분기 타겟 정보와 관계된 부분적 태그와 동일한 부분적 태그(직접 메모리 또는 세트 연관 메모리의 경우 메모리(148)의 저장 장소를 어드레스하는데 사용되는 어드레스의 부분)를 가질 수 있다. 물론, 다음 히트는 에러가 아닐 것임을 바라며, 상기 정보를 메모리(148) 내에서 유효하게 남겨둘 수도 있지만, 상기 정보가 무효화된다면 프로그램 실행은 보다 신속해진다.
도 1에서 도시된 실시예에서, N 비트 분기 타겟 어드레스 중 오직 M 하위 비트만이 메모리(148) 내에 저장된다. 그러나, 바람직하게는, M 하위 비트 어드레스 부분만을 저장하는 것과 달리, 전체 분기 타겟 어드레스 , 또는 분기 타겟 어드레스의 보다 큰 부분을 저장할 수도 있다. 이로써, 정보의 적어도 두 형태, 즉 M 하위 비트의 정보 또는 분기 타겟 어드레스의 보다 큰 부분에 대한 정보 또는 전체 분기 타겟 어드레스에 대한 정보를 저장할 수 있다. 실행 유닛(10)은 분기 타겟 어드레스를 예측하기에 충분한 최소 형태의 정보를 저장한다. 가령, 어드레스 A에서의 인스트럭션 I가 분기 타겟 T를 가지며 어드레스 A의 N-M 상위 비트가 타겟 I와 동일하다면, 작은 형태의 M 비트가 저장될 수 있으며, N-M 상위 비트가 타겟 I와 다르다면, 가령, 전체 분기 타겟 어드레스와 같은 보다 큰 형태의 정보가 저장될 수 있다.
도 3은 보다 큰 형태의 분기 타겟 정보의 저장 및 사용을 구현하는 인스트럭션 프리페치 유닛의 도면이다. 인스트럭션 프리페치 유닛은 인스트럭션 어드레스 레지스터의 두 부분(30a,b)과, 어드레스 증분 유닛(32)과, 어드레스 멀티플렉서의 두 부분(33a,b)과 메모리(38)를 포함한다. 인스트럭션 어드레스 레지스터(30a,b)의 인스트럭션 어드레스 출력(31a,b)은 증분 유닛(32) 및 메모리(38)의 입력에 접속된다. 어드레스 멀티플렉서의 제 1 부분(33a)은 인스트럭션 프리페치 유닛(도시되지 않음)에 접속된 제 1 입력(c)과, 증분 유닛(32)의 출력에 겁속된 제 2 입력(a)과, 인스트럭션 어드레스 레지스터의 제 1 부분(30a)의 어드레스 출력(31a)에 접속된 제 3 입력과, 메모리(38)의 제 1 출력(39a)에 접속된 제 4 입력을 갖는다. 어드레스 멀티플렉서의 제 2 부분(33b)은 인스트럭션 프리페치 유닛(도시되지 않음)에 접속된 제 1 입력(d)과, 증분 유닛(32)의 출력에 겁속된 제 2 입력(b)과, 메모리(38)의 제 2 출력(39b)에 접속된 제 3 및 제 4 입력을 갖는다. 멀티플렉서(33a,b)는 인스트럭션 프리페치 유닛(도시되지 않음) 및 메모리(38)에 접속된 제어 입력(e)을 갖는다. 메모리(38)는 인스트럭션 실행 유닛(도시되지 않음)에 접속된 제어 입력(f)을 갖는다.
동작시에, 도 3의 인스트럭션 프리페치 유닛은, 메모리(38)가 인스트럭션 어드레스 레지스터(30a,b)가 전체 N 비트 다음 인스트럭션 어드레스 또는 메모리(38)로부터의 다음 인스트럭션 어드레스의 감소된(M 비트) 하위 부분을 로드하도록 하는 선택을 가진다는 점을 제외하면, 도 1의 인스트럭션 프리페치 유닛과 유사하게 동작한다. 메모리(38)은 인스트럭션 어드레스 레지스터(30a,b)의 출력(31a,b)으로부터의 이전 인스트럭션 어드레스를 수신한다. 이 이전 인스트럭션 어드레스에응답하여, 메모리(38)는 제어 신호를 어드레스 멀티플렉서(33a,b)에 출력하여, 히트가 존재하는지의 여부 및 상기 히트가 전체 분기 타겟 어드레스에 대한 것인지 아니면 오직 분기 타겟 어드레스의 하위 부분에만 대한 것인지를 나타낸다. 메모리(38)는 전체 분기 타겟 어드레스 또는 하위 부분을 출력한다.
도 3의 어드레스 멀티플렉서(33a,b)는, 메모리(38)가 히트 신호를 보낼 때, 이 히트 신호가 전체 분기 타겟 어드레스에 대한 것인지 아니면 오직 분기 타겟 어드레스의 하위 부분에 대한 것인지에 따라, 어드레스 멀티플렉서의 제 1 부분(33a)이 인스트럭션 어드레스 레지스터의 제 1 부분(30a)으로부터의 이전 인스트럭션 어드레스의 N-M 비트 상위 부분 또는 메모리(38)로부터의 N-M 비트 상위 부분을 전달한다는 점을 제외하면, 도 1의 어드레스 멀티플렉서와 유사하게 기능한다.
바람직하게는, 메모리(38)는 전체 분기 타겟 어드레스가 저장되었는지의 여부를 나타내는 정보 이외에 분기 타겟 어드레스의 M 비트 하위 부분을 저장하기 위한 메모리 저장 장소를 갖는다. 이 경우에, 분기 타겟 어드레스의 비트는 두 논리적으로 인접한 저장 장소에 걸쳐 분포한다. 메모리(38)가 이전 인스트럭션 어드레스를 수신하고 히트를 검출할 때, 메모리(38)는 메모리의 제 2 출력(39b)으로부터 검출된 히트와 관련된 메모리 제 1 기억 장소의 내용의 일부 및 제 1 출력 (39a) 상의 제 1 기억 장소에 인접한 제 2 기억 장소로부터의 정보를 출력한다. 만약 제 1 저장 장소가 전체 분기 타겟 어드레스가 사용되어야 한다는 정보를 포함하면, 메모리는 이를 멀티플렉서(33a,b)에 신호로 보낸다. 이로써, 전체 분기 타겟이 필요할 경우 메모리(38)의 두 저장 장소가 사용되며, 만약 오직 하위 부분만이 필요하면, 단일 저장 장소가 사용된다.
메모리(38)가 저장된 분기 타겟 정보와 관련된 인스트럭션 어드레스를 식별하기 위해 부분적 태그를 사용할 때, 이 부분적 태그는 제 2 저장 장소에 대해서는 필요하지 않다. 제 2 저장 장소의 태그를 저장하기 위한 메모리 공간은 분기 타겟 어드레스의 비트를 저장하기 위해 사용될 수 있다. 이들 비트와 메모리(38)에 공급된 인스트럭션 어드레스와의 정합으로 인한 잘못된 히트는 가령 태그 정보가 저장되는지의 여부를 나타내는 제 2 저장 장소의 비트를 사용하거나 전체 분기 타겟 어드레스가 이를 위해 인접하는 제 1 저장 장소로부터 저장되었는지의 여부를 나타내는 정보를 컨설팅(consulting)함으로써 억제될 수 있다.
세트 연관 메모리(38)의 경우, 제 1 및 2 저장 장소는 바람직하게는 동일한 세트이다. 이로써, 오직 하나의 세트만이 한 번에 판독될 필요가 있다.
본 발명의 범위 내에서, 두 개 이상의 메모리 저장 장소가 필요하다면 전체 분기 타겟 어드레스를 저장하는데 사용될 수 있거나, 메모리(38)는 두 개 이상의 다른 길이(alternative lengths)의 분기 타겟 정보 간에 선택할 수 있다. 가령, M, 2M, 3M, 4M 비트의 네 개의 상이한 길이의 하위 부분을 갖는 분기 타겟 어드레스 및 전체 분기 타겟 어드레스가 저장되어 인스트럭션 어드레스 레지스터(30a,b)에 공급될 수 있다.
또한, 메모리 저장 장소 간의 사전결정된 관계가 존재하는 한, 또는 상이한 부분이 발견될 수 있는 장소를 나타내는 정보가 메모리 저장 장소 내에 저장될 때, 분기 타겟 어드레스의 부분을 저장하기 위한 논리적으로 인접한 메모리 저장 장소를 사용하는 것은 필요하지 않다.
실행 유닛(도시되지 않음)은, 이전 인스트럭션 어드레스와 분기 타겟 어드레스의 상위 비트의 충분한 수가 동일하는지의 여부에 따라, 어느 길이의 분기 타겟 정보가 메모리(38) 내에 저장될 것인가를 메모리(38)에 신호로 보낸다.

Claims (9)

  1. 인스트럭션 메모리와,
    상기 인스트럭션 메모리로부터의 인스트럭션을 실행하는 인스트럭션 실행 유닛과,
    그의 인스트럭션 어드레스 출력이 상기 인스트럭션 메모리에 접속되고, 인스트럭션을 실행하기 전에 인스트럭션을 어드레스하는 인스트럭션 프리페치 유닛을 포함하며,
    상기 인스트럭션 프리페치 유닛은
    어드레스 입력을 구비하며, 상기 인스트럭션에 대한 부분적인 분기 타겟 정보를 저장하는 분기 타겟 메모리━상기 프리페치 유닛의 인스트럭션 어드레스 출력은 상기 어드레스 입력에 접속되고, 제 1 인스트럭션 어드레스를 공급하여 상기 제 1 인스트럭션 어드레스에 대한 부분적 분기 타겟 정보를 검색함━와,
    프로그램 흐름의 분기 변경이 예상될 때, 상기 제 1 인스트럭션 어드레스에 대해 규정된 인스트럭션 어드레스 공간의 부분 내의 제 2 인스트럭션 어드레스의 위치를 나타내는 상기 검색된 부분적 분기 타겟 정보를 이용하여, 상기 인스트럭션 출력으로의 발행을 위한 상기 제 2 인스트럭션 어드레스를 선택하는 인스트럭션 어드레스 선택 유닛을 포함하는
    데이터 프로세서.
  2. 제 1 항에 있어서,
    상기 인스트럭션 어드레스 공간의 상기 부분은 상기 제 1 인스트럭션 어드레스로부터 결정된 상위 부분을 갖는 인스트럭션 어드레스의 공간이며,
    업데이트 값이 상기 제 2 인스트럭션 어드레스의 하위 부분을 공급하는
    데이터 프로세서.
  3. 제 1 항에 있어서,
    상기 분기 타겟 메모리는, 상기 인스트럭션 어드레스 공간의 상기 부분 또는 상기 분기 타겟 메모리 내에 저장된 정보에 의해 규정된 다른 어드레스 공간을 이용하여, 상기 제 2 인스트럭션 어드레스가 결정되어야하는지의 여부를 나타내는 표시를 저장하며,
    상기 제 2 인스트럭션 어드레스 선택 유닛은, 저장 장소가 어드레스될 때를 표시함에 따라, 상기 인스트럭션 어드레스를 선택하는
    데이터 프로세서.
  4. 제 3 항에 있어서,
    상기 분기 타겟 메모리는 여려 저장 장소를 가지며, 상기 저장 장소는 상기제 1 인스트럭션 어드레스의 상이값에 대한 부분적 분기 타겟 정보를 저장하며,
    적어도, 상기 분기 타겟 메모리 내에 저장된 정보에 의해 규정된 상기 다른 어드레스 공간를 이용하여, 상기 표시가 상기 제 2 인스트럭션 어드레스가 결정되어야함을 표시할 때, 상기 분기 타겟 메모리는 상기 제 1 인스트럭션 어드레스에 의해 어드레스된 제 1 저장 장소의 내용과, 상기 제 1 저장 장소에 대해 사전결정된 상대 위치를 갖는 저장 장소의 내용을 상기 인스트럭션 어드레스 선택 유닛에 출력하며,
    상기 부분적 분기 타겟 정보 및 상기 다른 어드레스 공간을 규정하는 상기 정보는 서로에 대해 사전결정된 상대 위치가 되는 위치를 갖는 각 저장 장소 내에 저장되는
    데이터 프로세서.
  5. 제 4 항에 있어서,
    상기 각 저장 장소는 태그를 저장하기 위한 공간을 포함하며,
    상기 태그 각각은 상기 저장 장소에 저장된 부분적 분기 타겟 정보와 관련된 인스트럭션 어드레스의 적어도 일부를 나타내며, 상기 제 1 인스트럭션 어드레스에 대한 상기 부분적 분기 타겟 정보의 위치를 찾는데 사용되며,
    상기 다른 어드레스 공간을 이용하여, 상기 표시가 상기 제 2 인스트럭션 어드레스가 결정되어야 함을 나타낼 때, 상기 공간은 상기 각 저장 장소 중 적어도하나 내에 상기 태그 대신 상기 다른 어드레스 공간을 규정하는 정보를 저장하는
    데이터 프로세서.
  6. 데이터 프로세서에 의해 인스트럭션을 실행하는 방법에 있어서,
    상기 방법은 이전 인스트럭션 어드레스로부터 현 인스트럭션 어드레스를 결정하는 단계를 포함하며,
    상기 결정 단계는
    상기 이전 인스트럭션 어드레스에 대해 저장된 정보━상기 정보는 이전 인스트럭션 어드레스에서의 인스트럭션의 실행 후에 프로그램 흐름시의 분기 변경이 예상되는지의 여부를 나타내며, 업데이트 값은 상기 분기 변경에 대응함━를 검색하는 단계와,
    상기 정보가 프로그램 흐름 시에 상기 분기 변경이 예상됨을 나타낼 때, 상기 이전 인스트럭션 어드레스에 대해 규정된 영역 내의 현 인스트럭션 어드레스의 위치를 나타내는 인덱스로서 상기 업데이트 값을 사용하여, 상기 현 인스트럭션 어드레스를 선택하는 단계를 포함하는
    데이터 프로세서에 의한 인스트럭션 실행 방법.
  7. 제 6 항에 있어서,
    상기 영역은 상기 이전 인스트럭션 어드레스와 동일한 상위 부분을 갖는 인스트럭션 어드레스의 영역이며,
    상기 업데이트 값은 상기 현 인스트럭션 어드레스의 하위 부분을 공급하는
    데이터 프로세서에 의한 인스트럭션 실행 방법.
  8. 제 6 항에 있어서,
    상기 이전 인스트럭션 어드레스에 대해 저장된 정보는 상기 업데이트 값이 상기 영역 내의 위치 또는 상기 현 인스트럭션 어드레스의 절대 값을 나타내는지의 여부를 표시하며,
    따라서, 상기 현 인스트럭션 어드레스가 선택되는
    데이터 프로세서에 의한 인스트럭션 실행 방법.
  9. 제 6 항에 있어서,
    상기 정보는 상기 이전 인스트럭션 어드레스와 연관되어 어드레스된 저장 장소들의 메모리 내에 저장되며,
    상기 방법은 상기 업데이트 값이 상기 영역 내의 상기 위치를 나타내는지 여부 및 상기 현 인스트럭션 어드레스의 절대값이 상기 현 인스트럭션 어드레스를 결정하는데 사용되어야 하는지 여부를 나타내는 표시를 저장하는 단계를 포함하며,
    상기 절대 값은 적어도 상기 두 저장 장소에 걸쳐 분포하는
    데이터 프로세서에 의한 인스트럭션 실행 방법.
KR1020027003655A 2000-07-21 2001-07-06 데이터 프로세서 및 이에 의한 인스트럭션 실행 방법 KR100872293B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP00202645 2000-07-21
EP00202645.8 2000-07-21

Publications (2)

Publication Number Publication Date
KR20020035608A true KR20020035608A (ko) 2002-05-11
KR100872293B1 KR100872293B1 (ko) 2008-12-05

Family

ID=8171852

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027003655A KR100872293B1 (ko) 2000-07-21 2001-07-06 데이터 프로세서 및 이에 의한 인스트럭션 실행 방법

Country Status (5)

Country Link
US (1) US20020013894A1 (ko)
EP (1) EP1305707A1 (ko)
JP (1) JP2004505345A (ko)
KR (1) KR100872293B1 (ko)
WO (1) WO2002008895A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
JP4393317B2 (ja) * 2004-09-06 2010-01-06 富士通マイクロエレクトロニクス株式会社 メモリ制御回路
US20060218385A1 (en) * 2005-03-23 2006-09-28 Smith Rodney W Branch target address cache storing two or more branch target addresses per index
US20070266228A1 (en) * 2006-05-10 2007-11-15 Smith Rodney W Block-based branch target address cache
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
FR2910144A1 (fr) * 2006-12-18 2008-06-20 St Microelectronics Sa Procede et dispositif de detection errones au cours de l'execution d'un programme.
US20090249048A1 (en) * 2008-03-28 2009-10-01 Sergio Schuler Branch target buffer addressing in a data processor
JP7152376B2 (ja) * 2019-09-27 2022-10-12 日本電気株式会社 分岐予測回路、プロセッサおよび分岐予測方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
JPH0820950B2 (ja) * 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
US6185676B1 (en) * 1997-09-30 2001-02-06 Intel Corporation Method and apparatus for performing early branch prediction in a microprocessor
US6622241B1 (en) * 2000-02-18 2003-09-16 Hewlett-Packard Development Company, L.P. Method and apparatus for reducing branch prediction table pollution

Also Published As

Publication number Publication date
US20020013894A1 (en) 2002-01-31
WO2002008895A1 (en) 2002-01-31
KR100872293B1 (ko) 2008-12-05
JP2004505345A (ja) 2004-02-19
EP1305707A1 (en) 2003-05-02

Similar Documents

Publication Publication Date Title
US5553255A (en) Data processor with programmable levels of speculative instruction fetching and method of operation
EP1441284B1 (en) Apparatus and method for efficiently updating branch target address cache
KR100333470B1 (ko) 세트 예측을 사용하여 세트 연상 캐시에서 대기 시간을감소시키기 위한 방법 및 장치
US6088789A (en) Prefetch instruction specifying destination functional unit and read/write access mode
US4860197A (en) Branch cache system with instruction boundary determination independent of parcel boundary
US5761723A (en) Data processor with branch prediction and method of operation
US5163140A (en) Two-level branch prediction cache
US5943687A (en) Penalty-based cache storage and replacement techniques
US5748932A (en) Cache memory system for dynamically altering single cache memory line as either branch target entry or prefetch instruction queue based upon instruction sequence
US5687349A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US7856548B1 (en) Prediction of data values read from memory by a microprocessor using a dynamic confidence threshold
EP1439460B1 (en) Apparatus and method for invalidation of redundant entries in a branch target address cache
US20040193858A1 (en) Zero-overhead loop operation in microprocessor having instruction buffer
US20030018875A1 (en) Apparatus and method for speculatively forwarding storehit data based on physical page index compare
US5553254A (en) Instruction cache access and prefetch process controlled by a predicted instruction-path mechanism
EP1439459B1 (en) Apparatus and method for avoiding instruction fetch deadlock in a processor with a branch target address cache
US5909566A (en) Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction
KR100872293B1 (ko) 데이터 프로세서 및 이에 의한 인스트럭션 실행 방법
US5748976A (en) Mechanism for maintaining data coherency in a branch history instruction cache
US5878252A (en) Microprocessor configured to generate help instructions for performing data cache fills
US20080172547A1 (en) Reusing a buffer memory as a microcache for program instructions of a detected program loop
US20030204705A1 (en) Prediction of branch instructions in a data processing apparatus
US11526356B2 (en) Prefetch mechanism for a cache structure
GB2299879A (en) Instruction/data prefetching using non-referenced prefetch cache
US6016532A (en) Method for handling data cache misses using help instructions

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee