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

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

Info

Publication number
KR100872293B1
KR100872293B1 KR1020027003655A KR20027003655A KR100872293B1 KR 100872293 B1 KR100872293 B1 KR 100872293B1 KR 1020027003655 A KR1020027003655 A KR 1020027003655A KR 20027003655 A KR20027003655 A KR 20027003655A KR 100872293 B1 KR100872293 B1 KR 100872293B1
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
KR20020035608A (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

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
    • 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}
본 발명은 데이터 프로세싱에 관한 것이며, 특히 프로그램 흐름에 있어서 분기 변경이 발생하는지의 여부를 판정하기 위해 이전 인스트럭션의 해석이 가능하기 전에 인스트럭션이 프리페치(prefetch)되는 데이터 프로세싱에 관한 것이다.
인스트럭션을 인스트럭션 메모리 내에 어드레스하는 것과 어드레스된 인스트럭션을 인스트럭션 메모리로부터 수신하는 것 간의 지연은 데이터 프로세서에 의한 인스트럭션의 실행 속도를 떨어뜨릴 수 있는 요인이 된다. 이러한 속도 감소를 줄이기 위해, 인스트럭션이 바람직하게는 프리페치된다. 즉, 이전 인스트럭션의 어드레스를 발행한 이후, 이전 인스트럭션의 실행이 완료되기 전에, 극단적인 경우에는 이전 인스트럭션이 디코드되기 전에, 현 인스트력션의 어드레스가 가능한한 신속하게 발행된다.
이에 따라 상기 이전 인스트럭션이 분기 인스트럭션일 경우에 잘못된 인스트럭션을 프리페치할 수도 있다. 이러한 문제를 극복하기 위해, 분기 인스트력션의 타겟 어드레스를, 분기 인스트럭션의 인스트럭션 어드레스로 어드레스될 수 있는 이른바 "분기 타겟 버퍼(branch target buffer:BTB)"라는 메모리 내에 저장하는 방법이 알려져 있다. 현 인스트럭션의 인스트럭션 어드레스가 결정되어야 하는 경우, 이전 인스트럭션의 어드레스가 BTB를 어드레스하는데 사용된다. BTB가 이전 인스트럭션의 어드레스에 대한 분기 타겟의 어드레스를 저장하면, 분기 타겟의 그 어드레스는 현 인스트럭션을 프리페치하는데 있어서 현 인스트럭션 어드레스로 사용될 수 있다. 이로써, 현 인스트럭션이 프리페치되는 현 인스트럭션 어드레스는 이전 인스트럭션이 디코드되기 전에도 결정될 수 있다. 물론, 이러한 방식으로 결정되는 현 인스트럭션 어드레스는 다만 예측된 것이다. 만일 이러한 방식으로 잘못된 인스트럭션이 프리페치되었음이 판명되면, 올바른 인스트럭션이 나중에 페치될 것이다.
"Proceedings of the 28th Annual 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)를 가지며, 절대 어드레스는, 분기 타겟 버퍼 내에 저장될 때, 갱신 값을 저장하기 위한 적어도 두 개의 저장 장소에 걸쳐 분산된다.
본 발명에 따른 회로 및 방법에 대한 이들 측면 및 다른 측면은 다음 도면을 참조하여 보다 상세하게 설명될 것이다.
도 1은 데이터 프로세싱 회로의 도면,
도 2는 분기 타겟 정보를 저장하는 흐름도,
도 3은 인스트럭션 프리페치 유닛의 도면.
도 1은 데이터 프로세싱 회로를 도시한 도면이다. 데이터 프로세싱 회로는 인스트럭션 실행 유닛(10), 인스트럭션 메모리(12), 인스트럭션 프리페치 유닛(14)을 포함한다. 인스트럭션 프리페치 유닛(14)은 인스트럭션 메모리(12)의 어드레스 입력에 접속되며 실행 유닛(10)에 접속되는 인스트럭션 어드레스 출력을 갖는다. 인스트럭션 메모리(12)는 인스트럭션 실행 유닛(10)의 인스트럭션 입력에 접속된 인스트럭션 출력을 갖는다. 실행 유닛(10)은 인스터럭션 프리페치 유닛(14)에 접속되는 제어 출력을 가진다.
동작 시에, 인스트럭션 프리페치 유닛(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,140b)를 포함하며, 상기 두 부분 중 제 1 부분(140a)은 인스트럭션 어드레스의 N-M 비트 상위 부분을 저장하며, 제 2 부분(140b)은 인스트럭션 어드레스의 M 비트 하위 부분을 저장한다(여기서, 0<M<N). 인스트럭션 어드레스 레지스터의 제 1 부분 및 제 2 부분(140a,140b)의 어드레스 출력(141a,141b)은 인스트럭션 메모리(12)의 어드레스 입력에 접속된다. 인스트럭션 프리페치 유닛은 어드레스 증분 유닛(adress incrementation unit)(142) 및 제 1 및 제 2 부분(143a,143b)을 포함하는 어드레스 멀티플렉서를 포함한다. 어드레스 레지스터(140a,140b)의 어드레스 출력(141a,141b)은 증분 유닛(142)에 접속되며, 이 증분 유닛은 각기 증분된 어드레스의 상위 부분 및 하위 부분을 위한 제 1 및 제 2 출력을 가지며, 상기 제 1 및 제 2 출력은 각기 어드레스 멀티플렉서의 제 1 및 제 2 부분(143a,143b)의 제 1 입력에 접속된다. 어드레스 멀티플렉서의 제 1 및 제 2 부분(143a,143b)은 각기 어드레스 레지스터의 제 1 및 제 2 부분(140a,140b)에 접속된 출력을 갖는다.
인스트럭션 프리페치 유닛(14)은 인스트럭션 어드레스 레지스터(140a,140b)의 어드레스 출력(141a,141b)에 접속된 (바람직하게는 연관(associative)) 어드레스 입력과, 어드레스 멀티플렉서의 제 1 및 제 2 부분(143a,143b)의 제어 입력에 접속된 "히트" 신호 출력과, 어드레스 멀티플렉서의 제 2 부분(143b)의 제 2 입력에 접속된 분기 타겟 정보 출력을 구비한 메모리(148)를 포함한다. 인스트럭션 어드레스 레지스터의 제 1 부분(140a)의 어드레스 출력(141a)은 어드레스 멀티플렉서의 제 1 부분(143a)의 제 2 입력에 접속된다. 메모리(148)는 인스트럭션 실행 유닛(10)에 접속된 내용 갱신 입력을 갖는다. 실행 유닛(10)은 제 1 및 제 2 어드레스 멀티플렉서(143a,143b)의 제 3 입력에 접속된 어드레스 보정 출력과, 제 1 및 제 2 어드레스 멀티플렉서(143a,143b)의 다른 제어 입력에 접속된 멀티플렉서 제어 출력을 갖는다.
동작시에, 인스트럭션 프리페치 유닛(14)은 인스트럭션 싸이클 클록(도시되지 않음)의 제어 하에서 인스트럭션 실행 유닛(10)에 의한 인스트럭션 실행과 동기적으로(synchronously) 동작한다. 메모리(148)는 인스트럭션 메모리(12) 내의 분기 인스트럭션의 타겟 어드레스에 대한 정보를 저장한다. 이러한 정보는, 이용가능하다면, 분기 인스트럭션의 인스트럭션 어드레스를 메모리(148)에 인가함으로써 검색될 수 있다. 바람직하게는, 메모리(148)는 (세트) 연관적(associative)이다.
메모리(148)는 인스트럭션 어드레스 레지스터(140)로부터 수신된 인스트럭션 어드레스에 의해 어드레스된 분기 타겟 정보를 검색한다. 메모리(148)가 "히트" 신호(인스트럭션 어드레스에 대한 분기 타겟 정보가 존재함)를 표시할 때, 이 신호는 어드레스 멀티플렉서(143a,143b)에 전송된다. 이에 응답하여, 어드레스 멀티플렉서(143a,143b)는 인스트럭션 어드레스 레지스터의 제 1 부분(140a)으로부터의 인스트럭션 어드레스의 N-M 상위 부분을 인스트럭션 어드레스 레지스터의 제 1 부분(140a)에 돌려 보낸다. 또한, 히트의 검출에 응답하여, 인스트럭션 어드레스 멀티플렉서의 제 2 부분(143b)은 메모리(148)로부터 검색된 분기 타겟 정보를 인스트럭션 레지스터의 제 2 부분(140b)으로 전달한다.
메모리(148)가 히트를 보고하지 않을 때, 인스트럭션 어드레스 멀티플렉서(143a,143b)는 어드레스 증분 유닛(142)의 출력의 N-M 비트 상위 부분과 M 비트 하위 부분을 인스트럭션 어드레스 레지스터(140a,140b)로 전달한다. 이로써, 다음 인스트럭션 어드레스는 인스트럭션 메모리(12) 내의 이전 인스트럭션을 따르는 인스트럭션의 어드레스가 된다.
이와 대조적으로, 메모리(148)가 히트를 보고하는 경우, 이전 인스트럭션 어드레스의 N-M 상위 비트와 메모리(148)로부터 검색된 M 하위 비트를 포함하는 다음 인스트럭션 어드레스가 인스트럭션 어드레스 레지스터(140a,140b)로 로드된다. 이로써, 이전 인스트럭션 어드레스와 동일한 상위 N-M 비트를 갖는 인스트럭션 어드레스만이 로드될 수 있다. 메모리(148)는 다수의 인스트럭션 어드레스에 대한 어드레스를 계산(computation)하기 위해 필요한 M 하위 비트만을 저장한다. 이로써, 메모리는 동일한 수의 인스트럭션 어드레스를 위해 전체 N 비트 분기 타겟 어드레스를 저장하는데 필요한 메모리보다 작게 된다. 하위 비트의 정확한 수 M 은 보다 작아진 메모리 크기로 인한 이득과 타겟 어드레스 예측력의 손실 간의 적절한 조정으로 결정되는데, 그 이유는 모든 가능한 분기 타겟 어드레스 값이 상기 방식으로 표현될 수 없기 때문이다. 분기 타겟 어드레스의 하위 비트를 M이 10과 동일하거나 이보다 크게 하여 메모리(148)에 저장함으로써, 분기 타겟 어드레스를 저장하는데 있어서 (86% 이상의) 양호한 능력을 가질 수 있음이 실제 벤치마크를 통해 알게 되었다. 이로써, 인스트럭션 어드레스 레지스터의 제 2 부분(140b) 및 어드레스 멀티플렉서의 제 2 부분(143b)의 비트는 M이 10과 동일하거나 보다 크도록 하는 것이 바람직하다.
물론, 이러반 방식으로 계산되는 다음 인스트럭션 어드레스는 올바르지 않을 수 있다. 가령, 이는 분기 인스트럭션이 취해지지 않거나, 또는 분기 인스트럭션의 분기 타겟에 대한 정보가 존재하지 않을 경우이다. 인스트럭션 프리페치 유닛(14)에 의해 발행된 인스트럭션 어드레스를 인스트럭션 실행의 결과로 계산된 인스트럭션 어드레스와 비교함으로써, 실행 유닛(10)은 이와 같은 경우를 검출한다. 만일 두 인스트럭션 어드레스가 동일하지 않다면, 실행 유닛(10)은 인스트럭션 실행 동안 계산된 보정 인스트럭션 어드레스를 어드레스 멀티플렉서(143a,143b)에 출력하며 어드레스 멀티플렉서(143a,143b)가 보정된 어드레스를 인스트럭션 레지스터(140a,140b)에 출력하도록 명령한다.
몇몇 프로세서는 인스트럭션 메모리를 어드레싱하는 두 기본 단위의 제곱의 인스트럭션 크기를 갖는다. 가령, 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,141b)으로부터 수신된 인스트럭션 어드레스의 부분이 메모리(148)를 어드레스하는데 사용되며, 메모리는 어드레스 출력(141a,141b)으로부터의 인스트럭션 어드레스의 다른 부분에 대응하는 "태그" 및 분기 타겟 어드레스에 대한 정보를 저장한다. 태그는 메모리(148)에 인가된 인스트럭션 어드레스의 대응 부분과 비교된다. 만약 이들이 서로 동일하다면, 히트가 보고된다. 세트 연관 어드레스에서, 태그의 세트 및 분기 타겟 정보 아이템은 어드레스 출력(141a,141b)으로부터 수신된 인스트럭션 어드레스의 부분에 의해 어드레스되는 저장 장소에 저장된다. 태그가 어드레스 출력(141a,141b)으로부터 수신된 인스트럭션 어드레스의 대응 부분과 동일하는지의 여부에 따라, 이들 저장 장소 중의 하나가 선택되거나 아무것도 선택되지 않는다. 완전 연관 메모리에서는, 인스트럭션 어드레스에 대한 분기 타겟 정보가 메모리(148) 내의 임의의 장소에서 저장될 수 있으며 전체 인스트럭션 어드레스는 태그로서 사용된다.
메모리(148)에 대한 메모리 크기를 더 감소시키기 위해, 완전 연관 메모리, 세트 연관 메모리 또는 직접 메모리 내에 오직 태그의 일부만을 위한 저장 공간을 제공할 수 있다. 메모리로부터 인스트럭션 어드레스를 검색하기 위해, 오직 인스트럭션 어드레스의 태그 중 저장된 부분만이 어드레스 출력(141a,141b)으로부터 수신된 이전 인스트럭션 어드레스의 대응 부분과 비교된다. 상기 부분들이 동일하다면, 히트가 보고되며, 메모리(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 단계에서는, 분기 인스트럭션 I(A(n))이 취해졌다면, 분기 타겟의 어드레스 A(n+1)의 M 하위 비트가 분기 인스트럭션 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,140b)의 내용을 갱신하는데 사용된다면, 실행 유닛(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,30b)과, 어드레스 증분 유닛(32)과, 어드레스 멀티플렉서의 두 부분(33a,33b)과 메모리(38)를 포함한다. 인스트럭션 어드레스 레지스터(30a,30b)의 인스트럭션 어드레스 출력(31a,31b)은 증분 유닛(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,33b)는 인스트럭션 프리페치 유닛(도시되지 않음) 및 메모리(38)에 접속된 제어 입력(e)을 갖는다. 메모리(38)는 인스트럭션 실행 유닛(도시되지 않음)에 접속된 제어 입력(f)을 갖는다.
동작시에, 도 3의 인스트럭션 프리페치 유닛은, 인스트럭션 어드레스 레지스터(30a,30b)가 메모리(38)로부터의 다음 인스트럭션 어드레스의 감소된(M 비트) 하위 부분 또는 전체 N 비트 다음 인스트럭션 어드레스를 로드하도록 하는 선택을 메모리(38)가 가진다는 점을 제외하면, 도 1의 인스트럭션 프리페치 유닛과 유사하게 동작한다. 메모리(38)은 인스트럭션 어드레스 레지스터(30a,30b)의 출력(31a,31b)으로부터의 이전 인스트럭션 어드레스를 수신한다. 이 이전 인스트럭션 어드레스에 응답하여, 메모리(38)는 제어 신호를 어드레스 멀티플렉서(33a,33b)에 출력하는데, 이 제어 신호는 히트가 존재하는지의 여부 및 상기 히트가 전체 분기 타겟 어드레스에 대한 것인지 아니면 오직 분기 타겟 어드레스의 하위 부분에만 대한 것인지를 나타낸다. 메모리(38)는 전체 분기 타겟 어드레스 또는 하위 부분을 출력한다.
도 3의 어드레스 멀티플렉서(33a,33b)는, 메모리(38)가 히트 신호를 보낼 때, 이 히트 신호가 전체 분기 타겟 어드레스에 대한 것인지 아니면 오직 분기 타겟 어드레스의 하위 부분에 대한 것인지에 따라, 어드레스 멀티플렉서의 제 1 부분(33a)이 인스트럭션 어드레스 레지스터의 제 1 부분(30a)으로부터의 이전 인스트럭션 어드레스의 N-M 비트 상위 부분을 전달하거나 메모리(38)로부터의 N-M 비트 상위 부분을 전달한다는 점을 제외하면, 도 1의 어드레스 멀티플렉서(143a,143b)와 유사하게 기능한다.
바람직하게는, 메모리(38)는 전체 분기 타겟 어드레스가 저장되었는지의 여부를 나타내는 정보에 추가하여 분기 타겟 어드레스의 M 비트 하위 부분을 저장하기 위한 메모리 저장 장소를 갖는다. 전체 분기 타겟 어드레스가 저장되지 않았다면, 분기 타겟 어드레스의 비트들은 논리적으로 인접한 두 저장 장소에 걸쳐 분산된다. 메모리(38)가 이전 인스트럭션 어드레스를 수신하고 히트를 검출할 때, 메모리(38)는 메모리의 제 2 출력(39b)으로부터 검출된 히트와 관련된 메모리 제 1 저장 장소의 내용의 일부 및 제 1 출력 (39a) 상의 제 1 저장 장소에 인접한 제 2 기억 장소로부터의 정보를 출력한다. 만약 제 1 저장 장소가 전체 분기 타겟 어드레스가 사용될 것이라는 정보를 포함하면, 메모리는 이를 멀티플렉서(33a,33b)에 신호한다. 이로써, 전체 분기 타겟이 필요할 경우 메모리(38)의 두 저장 장소가 사용되며, 만약 오직 하위 부분만이 필요하면, 단일 저장 장소가 사용된다.
메모리(38)가 저장된 분기 타겟 정보와 관련된 인스트럭션 어드레스를 식별하기 위해 부분적 태그를 사용할 때, 이 부분적 태그는 제 2 저장 장소에 대해서는 필요하지 않다. 제 2 저장 장소의 태그를 저장하기 위한 메모리 공간은 분기 타겟 어드레스의 비트를 저장하는데 사용될 수 있다. 이들 비트와 메모리(38)에 공급된 인스트럭션 어드레스와의 정합으로 인한 잘못된 히트는 가령 태그 정보가 저장되는지의 여부를 나타내기 위해 제 2 저장 장소의 비트를 사용하거나 전체 분기 타겟 어드레스가 이를 위해 인접하는 제 1 저장 장소로부터 저장되었는지의 여부를 나타내는 정보를 컨설팅(consulting)함으로써 억제될 수 있다.
세트 연관 메모리(38)의 경우, 제 1 및 2 저장 장소는 바람직하게는 동일한 세트로부터 기원한다. 이로써, 오직 하나의 세트만이 한 번에 판독될 필요가 있다.
본 발명의 범위 내에서, 필요한 경우, 두 개 이상의 메모리 저장 장소가 전체 분기 타겟 어드레스를 저장하는데 사용될 수 있거나, 메모리(38)는 두 개 이상의 다른 길이(alternative lengths)의 분기 타겟 정보 간에 선택할 수 있다. 가령, 4개의 상이한 길이의 M, 2M, 3M, 4M 비트의 하위 부분을 갖는 분기 타겟 어드레스 및 전체 분기 타겟 어드레스가 저장되어 인스트럭션 어드레스 레지스터(30a,30b)에 공급될 수 있다.
또한, 메모리 저장 장소 간의 사전결정된 관계가 존재하는 한, 또는 상이한 부분이 발견될 수 있는 장소를 나타내는 정보가 메모리 저장 장소 내에 저장될 때, 분기 타겟 어드레스의 부분을 저장하기 위한 논리적으로 인접한 메모리 저장 장소를 사용할 필요가 없다.
실행 유닛(도시되지 않음)은, 이전 인스트럭션 어드레스와 분기 타겟 어드레스의 상위 비트의 충분한 수가 동일하는지의 여부에 따라, 어느 길이의 분기 타겟 정보가 메모리(38) 내에 저장될 것인가를 메모리(38)에 신호로 보낸다.

Claims (9)

  1. 인스트럭션 메모리와,
    상기 인스트럭션 메모리로부터의 인스트럭션을 실행하는 인스트럭션 실행 유닛과,
    실행 전에 인스트럭션을 어드레싱하기 위해 상기 인스트럭션 메모리에 접속되는 인스트럭션 어드레스 출력부를 갖는 인스트럭션 프리페치 유닛(an instruction prefetch unit)을 포함하되,
    상기 인스트럭션 프리페치 유닛은
    어드레스 입력부를 구비하며, 상기 인스트럭션에 대한 부분적인 분기 타겟 정보(partial branch target information)를 저장하는 분기 타겟 메모리 - 상기 프리페치 유닛의 인스트럭션 어드레스 출력부는 상기 어드레스 입력부에 접속되며, 제 1 인스트럭션 어드레스를 공급하여 상기 제 1 인스트럭션 어드레스에 대한 부분적 분기 타겟 정보를 검색함 - 와,
    프로그램 흐름의 분기 변경이 예상되면, 상기 제 1 인스트럭션 어드레스에 대해 규정된 인스트럭션 어드레스 공간의 일부분 내의 제 2 인스트럭션 어드레스의 위치를 나타내기 위해 상기 검색된 부분적 분기 타겟 정보를 이용하여, 상기 인스트럭션 출력부로의 발행을 위한 상기 제 2 인스트럭션 어드레스를 선택하는 인스트럭션 어드레스 선택 유닛을 포함하고,
    상기 분기 타겟 메모리는, 상기 인스트럭션 어드레스 공간의 상기 일부분 또는 상기 분기 타겟 메모리 내에 저장된 정보에 의해 규정된 다른 어드레스 공간을 이용하여, 상기 제 2 인스트럭션 어드레스가 결정되어야하는지의 여부를 나타내는 표시를 저장하며,
    상기 제 2 인스트럭션 어드레스 선택 유닛은 상기 제 2 인스트럭션 어드레스의 위치가 어드레싱되면 상기 표시에 따라 상기 인스트럭션 어드레스를 선택하는
    데이터 프로세서.
  2. 제 1 항에 있어서,
    상기 인스트럭션 어드레스 공간의 상기 일부분은 상기 제 1 인스트럭션 어드레스로부터 결정된 상위 부분과, 상기 제 2 인스트럭션 어드레스의 하위 부분을 공급하는 갱신값을 가진 인스트럭션 어드레스의 공간인
    데이터 프로세서.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 분기 타겟 메모리는 상기 제 1 인스트럭션 어드레스의 다른값에 대한 부분적 분기 타겟 정보를 저장하기 위한 여러 위치를 가지며,
    적어도, 상기 분기 타겟 메모리 내에 저장된 정보에 의해 규정된 상기 다른 어드레스 공간를 이용하여, 상기 제 2 인스트럭션 어드레스가 결정되어야함을 상기 표시가 나타낼 때, 상기 분기 타겟 메모리는 상기 제 1 인스트럭션 어드레스에 의해 어드레싱된 제 1 저장 장소의 내용과, 상기 제 1 저장 장소에 대해 사전결정된 상대 위치를 갖는 저장 장소의 내용을 상기 인스트럭션 어드레스 선택 유닛에 출력하며,
    상기 부분적 분기 타겟 정보 및 상기 다른 어드레스 공간을 규정하는 상기 정보는, 서로에 대해 사전 결정된 상대 위치를 갖는 각각의 저장 장소에 저장되는
    데이터 프로세서.
  5. 제 4 항에 있어서,
    상기 각 저장 장소는 태그들을 저장하기 위한 공간을 포함하며,
    상기 태그 각각은 상기 제 1 인스트럭션 어드레스에 대한 상기 부분적 분기 타겟 정보의 위치를 결정하는데 사용하기 위해 상기 저장 장소에 부분적 분기 타겟 정보가 저장되는 인스트럭션 어드레스의 적어도 일부를 나타내며,
    상기 다른 어드레스 공간을 이용하여 상기 제 2 인스트럭션 어드레스가 결정되어야 함을 상기 표시가 나타내면, 상기 공간은 상기 태그 대신 상기 다른 어드레스 공간을 규정하는 정보를 상기 각 저장 장소 중 적어도 하나에 저장하는
    데이터 프로세서.
  6. 데이터 프로세서에 의해 인스트럭션을 실행하는 방법으로서,
    이전 인스트럭션 어드레스로부터 현 인스트럭션 어드레스를 결정하는 단계를 포함하며,
    상기 결정 단계는,
    상기 이전 인스트럭션 어드레스에 대해 저장된 정보 - 상기 정보는 이전 인스트럭션 어드레스에서의 인스트럭션의 실행 후에 프로그램 흐름의 분기 변경이 예상되는지의 여부와, 상기 분기 변경에 대응하는 갱신 값을 나타냄 - 를 검색하는 단계와,
    상기 정보가 상기 프로그램 흐름의 분기 변경이 예상됨을 나타내면, 상기 이전 인스트럭션 어드레스에 대해 규정된 영역 내의 현 인스트럭션 어드레스의 위치를 나타내는 인덱스로서 상기 갱신 값을 사용하여, 상기 현 인스트럭션 어드레스를 선택하는 단계를 포함하되,
    상기 이전 인스트럭션 어드레스에 대해 저장된 정보는 상기 갱신 값이 상기 영역 내의 위치 또는 상기 현 인스트럭션 어드레스의 절대 값을 나타내는지의 여부에 대한 표시를 포함하며,
    이에 대응하게 상기 현 인스트럭션 어드레스가 선택되는
    데이터 프로세서에 의한 인스트럭션 실행 방법.
  7. 제 6 항에 있어서,
    상기 영역은 상기 이전 인스트럭션 어드레스와 동일한 상위 부분을 갖는 인스트럭션 어드레스의 영역이며,
    상기 갱신 값은 상기 현 인스트럭션 어드레스의 하위 부분을 공급하는
    데이터 프로세서에 의한 인스트럭션 실행 방법.
  8. 삭제
  9. 제 6 항에 있어서,
    상기 정보는 상기 이전 인스트럭션 어드레스와 연관되어 어드레싱된 저장 장소들의 메모리 내에 저장되며,
    상기 방법은 상기 갱신 값이 상기 영역 내의 상기 위치를 나타내는지 여부 및 상기 현 인스트럭션 어드레스의 절대값이 상기 현 인스트럭션 어드레스를 결정하는데 사용되어야 하는지 여부를 나타내는 표시를 저장하는 단계를 포함하며,
    상기 절대 값은 적어도 2개의 상기 저장 장소에 걸쳐 분산되어 저장되는
    데이터 프로세서에 의한 인스트럭션 실행 방법.
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 KR20020035608A (ko) 2002-05-11
KR100872293B1 true 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 日本電気株式会社 分岐予測回路、プロセッサおよび分岐予測方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0480193A2 (en) * 1990-10-09 1992-04-15 International Business Machines Corporation Multi-prediction branch prediction mechanism
US6067616A (en) * 1990-02-26 2000-05-23 Advanced Micro Devices, Inc. Branch prediction device with two levels of branch prediction cache

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067616A (en) * 1990-02-26 2000-05-23 Advanced Micro Devices, Inc. Branch prediction device with two levels of branch prediction cache
EP0480193A2 (en) * 1990-10-09 1992-04-15 International Business Machines Corporation Multi-prediction branch prediction mechanism

Also Published As

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

Similar Documents

Publication Publication Date Title
US5553255A (en) Data processor with programmable levels of speculative instruction fetching and method of operation
US7165168B2 (en) Microprocessor with branch target address cache update queue
KR100333470B1 (ko) 세트 예측을 사용하여 세트 연상 캐시에서 대기 시간을감소시키기 위한 방법 및 장치
US6088789A (en) Prefetch instruction specifying destination functional unit and read/write access mode
US5805877A (en) Data processor with branch target address cache and method of operation
US5687349A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5761723A (en) Data processor with branch prediction and method of operation
US7152154B2 (en) Apparatus and method for invalidation of redundant branch target address cache entries
US7788473B1 (en) Prediction of data values read from memory by a microprocessor using the storage destination of a load operation
US7185186B2 (en) Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
JPH06242949A (ja) キュー管理式命令キャッシュ
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
US20060224870A1 (en) Information processing device
KR100872293B1 (ko) 데이터 프로세서 및 이에 의한 인스트럭션 실행 방법
US7346741B1 (en) Memory latency of processors with configurable stride based pre-fetching technique
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
US11526356B2 (en) Prefetch mechanism for a cache structure
US20030204705A1 (en) Prediction of branch instructions in a data processing apparatus
GB2299879A (en) Instruction/data prefetching using non-referenced prefetch cache
US6016532A (en) Method for handling data cache misses using help instructions
US7836288B2 (en) Branch prediction mechanism including a branch prediction memory and a branch prediction cache
GB2283595A (en) Data processor with both static and dynamic branch prediction, and method of operation

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