KR20010108104A - 트레이스 기반의 명령어 캐시 - Google Patents

트레이스 기반의 명령어 캐시 Download PDF

Info

Publication number
KR20010108104A
KR20010108104A KR1020017008981A KR20017008981A KR20010108104A KR 20010108104 A KR20010108104 A KR 20010108104A KR 1020017008981 A KR1020017008981 A KR 1020017008981A KR 20017008981 A KR20017008981 A KR 20017008981A KR 20010108104 A KR20010108104 A KR 20010108104A
Authority
KR
South Korea
Prior art keywords
trace segment
data line
trace
data
control logic
Prior art date
Application number
KR1020017008981A
Other languages
English (en)
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 피터 엔. 데트킨
Priority claimed from PCT/US1999/000959 external-priority patent/WO2000042502A1/en
Publication of KR20010108104A publication Critical patent/KR20010108104A/ko

Links

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

캐시 메모리(10)는 데이터 어레이(14)와 제어 로직(26)으로 구성된다. 데이터 어레이(14)는 많은 데이터 라인을 포함하며, 제어 로직(26)은 명령어의 많은 트레이스 세그먼트를 데이터 라인에 저장하며, 다수의 데이터 라인을 확장시키는 트레이스 세그먼트를 포함한다. 일 실시예에서 각 트레이스 세그먼트는 명령어의 하나 또는 그 이상의 기본 블록을 갖는 하나 또는 그 이상의 트레이스 세그먼트 요소를 포함하며, 각 트레이스 세그먼트 요소는 하나의 데이터 라인을 점유하며, 멀티 라인 트레이스 세그먼트의 데이터 라인은 순차적으로(논리적으로) 연관된다. 멀티 라인 트레이스 세그먼트의 트레이스 요소의 검색은 먼저 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 데이터 라인의 위치를 탐색하고, 그 다음에 계속해서 데이터 라인의 논리적 순차 연관에 기초하여 나머지 트레이스 세그먼트 요소를 저장하는 나머지 데이터 라인의 위치를 탐색함으로써 행해진다.

Description

트레이스 기반의 명령어 캐시 {TRACE BASED INSTRUCTION CACHING}
캐시 저장 명령어들은 역사적으로 명령어의 공간적 관계에 따라 명령어 캐시에 저장되어 조직화된다. 각 캐시 라인은 통상 메인 메모리에서 공간적으로 서로 인접 위치되는 명령어들을 저장한다. 명령어를 캐시에 저장하는 이러한 공간적 접근 기법에는 프로그램의 수행이 캐시 라인의 중간에서 또는 캐시 라인의 중간으로 브랜치해야 할 때마다 접근될 복수의 캐시 라인을 통상 필요로 한다는 점에서 적어도 하나의 문제점이 있다.
Peleg 및 Weiser의 미국 특허 제5,381,533호에는 위의 문제점과 공간적 접근 기법의 다른 문제점을 극복하는 캐시 저장 명령어의 조직화에 대한 다른 접근 기법이 기재되어 있다. Peleg 및 Weiser의 접근 기법에서는 캐시 저장 명령어들을 예상되는 수행 순서에 따라 저장하고 조직화한다. 순차 수행될 것으로 예상되는 명령어들의 기본 블록들은 캐시 라인 당 하나씩의 트레이스 세그먼트(trace segment)로 조직화되어 캐시 라인에 저장된다. 앞에 있는 대응하는 기본 블록들의 끝에 위치되어 있는 브랜치 명령어가 취해질 것으로 예상되는 경우에는 하나의 트레이스 세그먼트를 형성하도록 캐시 라인에 저장된 뒤에 오는 기본 블록들은 브랜치 대상기본 블록들이 된다. 그렇지 않으면 뒤에 오는 기본 블록들은 기본 블록 내내 폴(fall) 상태이다. 캐시 라인 내의 연속되는 기본 블록들은 제1 명령어가 위치할 때 제1 기본 블록의 제1 명령어에 의해 순차 검색된다.
Peleg 및 Weiser 접근 기법이 복수의 캐시 라인에 걸치는 트레이스 세그먼트를 제공하지 않으므로 다음 캐시 라인을 위치시키는 어드레스 매칭은 캐시 라인에 저장된 명령어가 소진되는 그 시점에 수행되어야 한다. 이에 따라 Peleg 및 Weiser 접근 기법이 갖는 문제점은 한 주기의 시간에 걸쳐 프로세서의 수행 단위로 공급될 수 있는 명령어들의 양으로 제한된다는 것이다. 이러한 제한은 고속으로 명령을 수행하는 현대식 프로세서에는 특히 바람직하지 않다.
「Proceeding of the 21st Annual Workshop on Microprogramming and Microarchitecture, Nov. 30 - Dec. 2, 1998, San Diego, CA」에 "Hardware Support for Large Atomic Units in Dynamically Scheduled Machines"라고 하는 제목으로 실린 논문에서 Melvin 등은 캐시 저장 명령어들을 기본 수행 단위(execution atomic unit)로 저장하고 조직화하는 방식에 대해 제안하였다. 각 캐시 엔트리(대개는 캐시 라인)는 기본 수행 단위를 포함한다. 기본 수행 단위는 프로세서가 더 이상 분할할 수 없는 단위로서 처리하는 마이크로 연산의 최소 그룹이다. 마이크로 연산은 매크로 명령어를 구현하도록 프로세서가 채택하는 마이크로 명령어이다. 필 유닛(fill unit)이 기본 수행 단위를 구축하기 위해 제안되었다. 이 필 유닛은 프리페치 버퍼와 마이크로 연산 생성기로부터 마이크로 연산을 수신한다. 기본 수행 단위의 구축을 종료하는 조건이 적어도 두 가지 존재한다.첫째는 제어 신호의 변경이 검출될 때이고 둘째는 필 유닛에 다음의 매크로 명령어를 위한 빈 마이크로 연산 슬롯이 더 이상 충분하지 않을 때이다.
Melvin의 접근 기법이 갖는 문제점은 기본 수행 단위 당 하나의 기본 블록만을 허용하며 매크로 명령어를 부호화 한 모든 마이크로 연산을 캐시에 저장해야 한다는 것이다. 후자는 매크로 명령어 집합이 다수의 마이크로 연산으로 부호화 하는 복잡한 매크로 명령어를 포함하는 경우에 특히 바람직하지 않다.
따라서, Peleg 등과 Melvin 등의 접근 기법의 문제점을 가지지 않으면서 그 장점을 취하는 부호화 마이크로 연산을 포함하는 캐시 저장 명령어를 저장하고 조직화하는 새로운 접근 기법을 필요로 한다.
본 발명은 컴퓨터 시스템, 특히 명령어 캐시 기술 분야에 관한 것이다.
본 발명은 첨부되는 도면을 참고로 설명되는 실시예를 가지고 기술되지만 이에 한정되는 것은 아니다.
도 1은 본 발명의 한 실시예에 따른 캐시 메모리의 구성 및 동작을 나타내는 블록도,
도 2는 한 실시예에 따라 캐시 저장 명령어들이 데이터 어레이에서 조직화되는 방식을 나타내는 블록도,
도 3 - 5는 한 실시예에 따른 태그 엔트리, 데이터 라인 및 마이크로 연산의내용을 나타내는 도면,
도 6 - 7은 한 실시예에 따라 제어 로직이 캐시 메모리를 동작하는 방식을 나타내는 2개의 상태도,
도 8 - 9는 한 실시예에 따라 캐시 판독을 실행하는 방식을 나타내는 파이프라인도,
도 10 - 11은 한 실시예에 따라 마이크로코드가 상호 작용하는 방식을 나타내는 파이프라인도,
도 12는 한 실시예에 따라 후속 명령 포인터(IP) 생성 회로가 상호 작용하는 방식을 나타내는 파이프라인도,
도 13은 한 실시예에 따라 마이크로 연산의 인출을 실행하는 방식을 나타내는 파이프라인도,
도 14는 한 실시예에 따라 캐시 기록을 실행하는 방식을 나타내는 파이프라인도,
도 15는 한 실시예에 따라 트레이스 세그먼트를 중복 기록할 때 테일 유지를 실행하는 방식을 나타내는 블록도,
도 16은 한 실시예에 따라 본 발명을 구현하기에 적합한 컴퓨터 시스템을 나타내는 블록도.
캐시 메모리는 데이터 어레이와 제어 로직으로 구성된다. 데이터 어레이는 다수의 데이터 라인을 포함하며, 제어 로직은 복수의 데이터 라인에 걸치는 트레이스 세그먼트를 포함하는, 데이터 라인에 존재하는 명령어들의 다수의 트레이스 세그먼트를 저장하도록 동작한다.
한 실시예에서, 각 트레이스 세그먼트는 명령어들의 하나 이상의 기본 블록을 가지는 하나 이상의 트레이스 세그먼트 요소를 포함하는 데, 각 트레이스 세그먼트 요소는 하나의 데이터 라인을 점유하며 다중 라인 트레이스 세그먼트의 데이터 라인들은 순차적으로 연관된다(논리적으로). 다중 라인 트레이스 세그먼트의 트레이스 세그먼트 요소의 검색은 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 데이터 라인을 먼저 위치 지정한 후 계속해서 데이터 라인의 논리순차 관계에 기초하여 나머지 트레이스 세그먼트 요소를 저장하는 나머지 데이터 라인의 위치를 지정함으로써 수행된다. 한 실시예에서, 명령어들은 매크로 명령어들의 마이크로 연산들이다.
한 실시예에서, 위치 어드레스는 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 각 데이터 라인에 대해 유지된다. 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 데이터 라인은 액세스 어드레스를 유지된 위치 어드레스에 대해 어드레스 매칭함으로써 그 위치가 탐색된다. 한 실시예에서, 어드레스 매칭은 어드레스 비트의 서브세트를 사용하여 수행되며, 매칭된 데이터 라인이 데이터 라인이 탐색되고 있는 제1 트레이스 세그먼트 요소를 정말로 포함하는 지에 대해 실증된다. S 세트의 N 경로 실시예에서는, 데이터 라인 세트의 여러 경로 연관되어 유지되는 위치 어드레스의 어드레스 매칭 서브세트가 만약 있다면 그 서브세트가 유일함을 보증하는 어떤 기준에 의해서 트레이스 세그먼트 요소의 저장 조건이 더 한정된다.
한 실시예에서, 트레이스 세그먼트의 각 데이터 라인을 후속 데이터 라인은 물론 선행 데이터 라인과도 논리적 방식으로 순차 연관시키는 최소 부분 제어 정보가 해당 부분에 유지된다. 멀티 라인 트레이스 세그먼트의 후속 데이터 라인은 유지된 최소 부분 순차 연관 제어 정보에 적어도 일부라도 기초하여 그 위치가 탐색된다. S 세트 N 경로의 한 실시예에서는 트레이스 세그먼트의 각 데이터 라인에 대해서 후행 데이터 라인의 세트의 경로로 인덱싱하는 경로 인덱스는 물론, 선행 데이터 라인의 세트의 경로로 인덱싱하는 경로 인덱스가 해당 부분에 유지된다.또한, 멀티 라인 트레이스 세그먼트의 후행 데이터 라인들 간의 소정의 세트 관계가 유지된다.
한 실시예에서는 다수의 데이터 라인의 종료 조건이 채택되어 하나의 데이터 라인에 있는 트레이스 세그먼트의 명령어들을 캐시에 저장하는 것을 종료하고 다른 데이터 라인에 있는 트레이스 세그먼트의 명령어들을 캐시에 저장하는 것을 계속한다. 한 실시예에서는 다수의 트레이스 세그먼트 종료 조건이 또한 채택되어 하나의 트레이스 세그먼트로서 명령어들을 캐시에 저장하는 것을 종료하고 새로운 트레이스 세그먼트로서 명령어들을 캐시에 저장하는 것을 계속한다.
한 실시예에서, 제어 로직은 캐시 메모리를 실행 모드와 트레이스 세그먼트 구축 모드에서 동작시키는 두 가지 상태 머신을 포함한다. 각 모드는 다수의 동작 상태를 포함한다. 트레이스 세그먼트는 트레이스 세그먼트 구축 모드에서 만들어지고 그 요소들은 실행 모드에서 위치 탐색되어 검색된다.
다음의 설명에서는 본 발명의 여러 측면을 기술한다. 그러나, 본 발명이 본 발명의 모든 측면 또는 일부 측면만으로 구현될 수 있다는 것을 이 분야의 기술자들에게는 명백할 것이다. 도면 부호, 요소 및 구성이 설명됨으로써 본 발명을 명료히 이해하게 된다. 그러나, 본 발명은 또한 특별한 세부 사항이 없이도 구현될 수 있다는 것을 이 분야의 기술자들은 잘 알 것이다. 달리 말하면, 공지된 특징들은 본 발명을 모호하지 않게 하기 위해 생략되거나 단순화된다.
도 1은 본 발명의 캐시 메모리의 한 실시예를 나타내는 블록도이다. 여기에 나타내는 바와 같이 본 발명의 캐시 메모리(10)는 상호 연결되는 데이터 어레이(14)와 제어 로직(26)을 포함한다. 캐시 메모리(10)는 실시예에서 위의 구성 요소에 서로 연결되는 태그 어레이(12), 즉시 추출기(18) 및 충전(fill) 버퍼(20)를 더 포함한다.
종래의 캐시 메모리에서처럼, 데이터 어레이(14)는 복수의 데이터 라인을 포함하고, 태그 어레이(12)는 이 데이터 라인에 대응하는 복수의 태그 엔트리를 포함한다. 동시에, 이 태그 엔트리와 이 태그 엔트리에 대응하는 데이터 라인은 캐시 메모리(10)의 캐시 라인을 형성한다. 그러나 종래 캐시 메모리와는 달리, 제어 로직(26)은 캐시 메모리(10)가 복수의 데이터 라인을 연결하는 트레이스 세그먼트(trace segment, 예를 들면 28)를 포함하는 데이터 어레이(14)의 명령어들을 캐싱하도록 하여, 이 트레이스 세그먼트로 캐시된 명령들은 조직화한다. 각 트레이스 세그먼트는 명령으로 이루어지는 하나 이상의 기본 블록을 갖는 하나 이상의 트레이스 세그먼트 요소를 포함하고, 각 트레이스 세그먼트 요소는 하나의 데이터 라인을 차지하고, 멀티 라인 트레이스 세그먼트의 데이터 라인은 순차적으로(논리적으로) 연관된다. 멀티 라인 트레이스 세그먼트로 이루어지는 제1 트레이스 세그먼트 요소를 저장하는 데이터 라인을 먼저 위치 탐색(locating)하고, 그런 다음 데이터 라인의 논리적이고 순차적인 연관 관계(다음에 좀더 상세하게 기술함)에 기초하여 나머지 트레이스 세그먼트 요소를 저장하는 나머지 데이터 라인을 연속적으로 위치 탐색함으로써, 이 멀티 라인 트레이스 세그먼트로 이루어지는 상기 트레이스 세그먼트 요소를 검색할 수 있다. 본 발명의 일 실시예에서, 명령은 매크로 명령으로 이루어지는 마이크로 연산들(micor-ops)로 디코딩된다.
또한, 이런 방식에서의 트레이스 캐싱 명령이나 디코딩된 마이크로 연산에 의해 즉, 트레이스 세그먼트가 복수의 데이터 라인을 연결하도록 함으로써, 프로세서의 실행 유닛으로 공급될 수 있는 명령어의 양은 종래 기술로 접근할 때 유지될 수 있는 비율보다도 더 크게 된다는 것은 해당 분야의 당업자에겐 자명하다. 더욱이 멀티 데이터 라인을 트레이스 캐싱할 수 있으므로, 자동으로 전개되는(unrolled) 프로그램 루프의 크기가 증가하여, 프로세서 성능의 개발을 최대화하도록 루프 전개 최적화(loop unrolling optimization)를 수행하기 위한 컴파일러의 필요성을 감소시킨다. 결과적으로, 프로그램의 생성된 코드가 좀더 컴팩트하게 되어, 메모리 공간을 효율적으로 절약하고 명령 페치 시간을 효율적으로 줄일 수 있도록 한다.
도 2는 마이크로 명령의 마이크로 연산으로 디코딩되는 명령을 기억하는 데이터 어레이(14)에 대한 실시예인 예시적인 4-경로(way) 256 세트의 관계(context)로 보다 상세하게 본 발명의 트레이스 세그먼트(28)를 도시한다. 다음의 상세한 설명에 기초하여, 다른 크기를 갖는 세트 연관 캐시(set associate cache) 뿐만 아니라 다른 넌 세트 연관 구조화가 본 발명을 실현하기 위해 이용될 수 있다는 것은 당업자에게 자명하다. 또한 명령어는 모든 종류의 명령어일 수 있다. 더욱이 설명의 편의상, 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 트레이스 세그먼트 헤드로 칭하고, 트레이스 세그먼트의 마지막 트레이스 세그먼트 요소를 트레이스 세그먼트 테일로 칭하며, 중간의 트레이스 세그먼트 요소를 트레이스 세그먼트 보디로 칭한다. 2 요소 트레이스 세그먼트의 축퇴(degenerate) 경우에 제2 트레이스 세그먼트 요소는 트레이스 세그먼트 테일 뿐만 아니라 트레이스 세그먼트 보디이고, 단일 요소 트레이스 세그먼트의 축퇴 경우에, 단일 세그먼크 요소는 동시에 트레이스 세그먼트 테일 뿐만 아니라 트레이스 세그먼트 헤드, 트레이스 세그먼트 보디이다.
예시한 실시예에서, 위치 어드레스는 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 각 데이터 라인에 대해서 유지된다. 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 이 데이터 라인은 유지되는 위치 어드레스에 대해 액세스 어드레스(access address)를 어드레스 매칭함에 의해 그 위치가 탐색된다. 또한 어드레스 매칭은 어드레스의 서브세트를 이용하여 이루어지고, 탐색되는 제1 트레이스 세그먼트를 데이터 라인이 실제로 포함하는지의 여부에 관하여 매칭 데이터 라인을 검사한다. 부가적으로, 데이터 라인 세트의 여러 경로 연관되어 유지되는 위치 어드레스의 어드레스 매칭 서브세트가 만약 있다면 그 서브세트가 유일함을 보증하는 어떤 기준에 의해서 트레이스 세그먼트 요소의 저장 조건이 더 한정된다.
대안적인 실시예에서, 다른 트레이스 세그먼트 요소도 역시 메모리 어드레스와 연관된다. 또 다른 대안적인 실시예에서, 어드레스 매칭은 모든 어드레스 비트를 이용하여 행해진다.
예시한 실시예에서는, 트레이스 세그먼트 보디나 트레이스 세그먼트 테일을 저장하는 각 데이터 라인을 논리적인 방식으로 그 선행 데이터 라인과 순차적으로 연관시키는 부분 제어 정보가 유지된다. 유사하게, 트레이스 세그먼트 헤드나 트레이스 세그먼트 보디를 저장하는 각 데이터 라인을 논리적인 방식으로 그 후속 데이터 라인과 순차적으로 연관시키는 부분 제어 정보도 역시 유지하고 있다. 멀티 라인 트레이스 세그먼트의 후속 데이터 라인은 유지된 최소 부분 순차 연관 제어 정보에 적어도 일부라도 기초하여 그 위치가 탐색된다. 보다 구체적으로, 트레이스 세그먼트 보디나 트레이스 세그먼트 테일을 저장하는 각 데이터 라인에 대해서, 선행 데이터 라인의 세트의 경로로 인덱스하는 경로 인덱스가 유지되고, 트레이스 세그먼트 헤드나 트레이스 세그먼트 보디를 저장하는 각 데이터 라인에 대해서, 후속 데이터 라인의 세트의 경로로 인덱스하는 경로 인덱스가 유지된다. 또한, 멀티 라인 트레이스 세그먼트의 후속 데이터 라인들 간에 소정의 세트 관계가 유지된다.
예시한 실시예에 있어서, 하나의 데이터 라인에 있는 트레이스 세그먼트의 명령어에 대한 캐싱 동작을 종료하고, 다른 데이터 라인에 존재하는 트레이스 세그먼트의 명령어에 대한 캐싱 동작을 계속하기 위하여, 많은 데이터 라인 종료 조건이 이용된다. 또한, 하나의 트레이스 세그먼트로서의 명령어의 캐싱 동작을 종료하고, 새로운 트레이스 세그먼트로서의 명령어의 캐싱 동작을 계속하기 위하여, 많은 트레이스 세그먼트 종료 조건이 이용된다.
예시한 실시예에 있어서, 데이터 라인 종료 조건은 "다수의(large)" 마이크로 연산으로 디코딩되는 "복잡한(complex)" 마이크로 명령어를 만나는 조건을 포함한다. 만나게 된 복잡한 마이크로 명령어의 마이크로 연산 중 소정의 수만이 현재 데이터 라인에 저장되고, 다음 마이크로 명령어의 마이크로 연산은 새로운 데이터 라인에 캐싱된다. "복잡한" 매크로 명령어를 구성하는 것이 무엇인지는 애플리케이션에 달려있다. 본 발명은 캐싱되는 마이크로 명령어의 모든 디코딩된 마이크로 연산으로 실시되거나 어떤 마이크로 연산없이도 실시될 수 있다.
예시한 실시예에 있어서, 데이터 라인 종료 조건은 트레이스 세그먼트 당 최대 허용 가능한 브랜치 마이크로 연산(maximum allowable branch micro-op)의 소정의 임계값(threshold)에 도달된 후 브랜치 마이크로 연산을 실행하는 조건을 더 포함한다. 이 브랜치 마이크로 연산은 새로운 데이터 라인에서 캐싱된다. 일 실시예에서, 소정의 임계값은 2이다. 그러나 본 발명이 트레이스 세그먼트 당 최대 허용 가능한 브랜치 명령이나 최대 허용 가능한 브랜치 마이크로 연산을 위한 소정의 임계값으로 실시될 수 있거나 이 임계값 없이도 실시될 수 있고, 만약 본 발명이 임계값을 이용할 경우, 이 임계값은 2보다 작거나 클 수 있음은 당업자라면 잘 알 것이다.
예시한 실시예에 있어서, 데이터 라인 종료 조건은 "새로운" 마이크로 명령어에 대한 모든 마이크로 연산을 위한 충분한 공간(room)을 구비하지 않는다는 조건을 더 포함한다. 대신에 "새로운" 마이크로 명령에 대한 마이크로 연산은 새로운 데이터 라인에 캐싱된다. 즉, 예시한 실시예에 있어서, 마이크로 명령어에 대한 모든 마이크로 연산은 동일한 데이터 라인에 캐싱된다. 그러나 본 발명은 하나 이상의 데이터 라인에서 캐싱된 매크로 명령어에 대한 마이크로 연산으로 실시될 수 있음은 당업자에겐 자명하다.
예시한 실시예에 있어서, 데이터 라인 종료 조건은 충전 버퍼(20)를 완전히 채우기 위한 조건을 더 포함한다. 그러나 본 발명은 충전 버퍼로부터 충전된 것을 복수 개 획득하는 데이터 라인으로 실시될 수 있음은 당업자에겐 자명하다.
예시한 실시예에 있어서, 트레이스 세그먼트 종료 조건은 간접 브랜치 매크로 명령(indirect branch macro instruction), 호출(call), 복귀(return)을 만나는 곳을 포함한다. 그러나, 부가적인 트레이스 동작으로 본 발명은 하나 이상의 간접 브랜치 매크로 명령, 호출, 및/또는 호출 복귀을 구비하는 각 트레이스 세그먼트로 실시될 수 있다는 것은 당업자에겐 자명하다.
예시한 실시예에 있어서, 트레이스 세그먼트 종료 조건은 인터럽트/예외(interrupt/exception) 뿐만 아니라 브랜치 오예측 통지(branch misprediction notification)를 만나는 것을 더 포함한다.
예시한 실시예에 있어서, 트레이스 세그먼트 종료 조건은 트레이스 세그먼트당 마이크로 연산수에 있어 소정의 최대 허용 가능 트레이스 세그먼트 길이를 초과하는 수의 마이크로 연산을 갖는 "장기 실행(long running)" 트레이스 세그먼트를 실행하는 조건을 더 포함한다. 일 실시예에서, 이 소정의 최대 허용 가능 트레이스 세그먼트 길이는 64개 세트이다. 그러나 본 발명은 이 소정의 최대 허용 가능트레이스 세그먼트 길이를 갖고 실시될 수 있거나 이 소정의 최대 허용 가능 트레이스 세그먼트 길이 없이도 실시될 수 있으며, 본 발명이 최대 허용 가능 트레이스 세그먼트 길이를 갖고 실시될 경우, 이 최대 허용 가능 트레이스 세그먼트 길이의 값은 64개 세트 이상이거나 이하일 수 있음은 당업자에게 자명하다.
도 3은 본 발명에 따른 태그 어레이(12)의 태그 엔트리에 대한 좀더 상세한 일 실시예를 도시한다. 예시한 실시예에 있어서, 태그 엔트리(30)는 대응하는 데이터 라인이 트레이스 세그먼트 헤드 및/또는 트레이스 세그먼트 테일 인지를 나타내는 비트(36)(헤드)와 비트(38)(테일)를 포함한다. 세트된 비트가 없다면 그 데이터 라인은 트레이스 세그먼트 보디이다. 비트 모두가 세트되어 있다면 그 데이터 라인은 트레이스 세그먼트 헤드와 트레이스 세그먼트 테일 뿐만 아니라 트레이스 세그먼트 보디이다, 즉 이미 기술한 "단일 요소(singular-member)" 축퇴의 경우이다. 예시한 실시예에 있어서, 엔트리(30)는 대응하는 데이터 라인이 트레이스 세그먼트 헤드와 비트(34)가 유효(valid)하는지의 여부를 나타내기 위한 비트(32)(유효)일 경우에 선형 어드레스를 저정하기 위한 비트(34)(LA)를 더 포함한다.
도시된 실시예에 있어서, 태그 엔트리(tag entry)(30)는 당해 후행 트레이스 세그먼트 요소의 순차 검색 편의를 위해 비트들(40)(다음 경로)과 비트들(42)(이전 경로)을 더 포함한다. 더욱 자세하게는, 비트(40, 42)는 후행 및 선행 데이터 라인들의 "경로" 위치를 지정한다. 도시된 실시예에 있어서, 태그 엔트리(30)는 후행 및 선행 데이터 라인들의 세트 ID(set identifications)을 나타내기 위한 어떠한 비트들도 포함하지 않는다. 도시된 실시예에 있어서, 후행 및 선행 데이터라인들의 세트 ID 각각은 항상 X+1 모듈로 S와 X-1 모듈로 S이며, 여기서 X는 현재 데이터 라인의 세트 ID이고, S는 데이터 어레이(14)의 세트 수이다. 다른 실시예에서, 후행 및 선행 데이터 라인들의 세트 ID들을 지정하기 위해 부가적인 비트들을 사용할 수 있다. 다시 말해 후행 및 선행 데이터 라인들은 임의의 세트에 위치할 수 있다.
도시된 실시예에 있어서, 태그 엔트리(30)는 다음 마이크로 연산 명령 포인터(next micro-op instruction pointer, uIP), 다음 매크로 명령 선형 명령 포인터(next macro-instruction linear instruction pointer, NLIP) 및 uIP의 유효 여부를 식별하기 위한 비트들(48)(uIP), 비트들(NLIP) 및 비트(56)(uIP 유효 MS PTR)를 또한 포함한다. UIP는 또한 만나게 되는 복합 매크로 명령의 마이크로 연산들에 대한 ROM의 엔트리 포인트로서 사용되고, 또한 UIP 유효는, 세트되는 경우 복합 매크로 명령을 만난 결과로서 대응하는 데이터 라인의 캐싱(cashing) 명령이 종결되었다는 사실을 의미하기 위해 사용된다. 일 실시예에서, NLIP는 트레이스 세그먼트 테일(trace segment tail)을 위해서만 유지된다. 다른 실시예에서, NLIP는 트레이스 세그먼트 테일은 물론 트레이스 세그먼트 헤드(head)와 트레이스 세그먼트 보디(body)를 위해서도 유지된다. 각 트레이스 세그먼트 요소를 가지는 NLIP의 유지는 그것을 실시간으로 계산하지 않아도 된다는 이점을 가지며, 이벤트(event)에서 그것은 예를 들어, 나머지 트레이스 세그먼트가 여러 차례 겹쳐 쓰여진(overwritten clobbered) 경우에 표적 세그먼트 요소들을 액세스하는 동안에 필요하다(이하에서 더욱 완전하게 설명한다).
각 태그 엔트리는 대응하는 데이터 라인과 함께 놓이는 경우에 구축된다. 더욱 자세하게는, 도 1에 도시된 실시예의 캐시 메모리(10)의 경우, 각 태그 엔트리는 대응하는 데이터 라인이 구축되는 동안에 충전 버퍼(20) 내에 구축된다. 각 태그 엔트리가 구축되는 방식 그리고 이 필드들의 용법에 대해서는 이하에서 더욱 상세하게 설명한다.
도 4와 도 5는 데이터 어레이(14)의 데이터 라인의 일 실시예를 더욱 상세하게 나타낸 것이다. 도시된 바와 같이 도시된 실시예의 경우, 각 데이터 라인(52)은 6개의 마이크로 연산(uOPs)(54)을 포함한다. 각 uOP(54)는 uOP 코드 각각은 물론이고, uOP의 유효 여부를 나타내는 비트(58)(uOP 유효)와 소스 레지스터를 나타내는 비트들(70-76)(scr0, scr1, dest 및 uop 코드)을 포함한다. 도시된 실시예의 경우, 각 uOP(54)는 마이크로 명령의 명령 포인터에 대한 델타 증분(delta increment)을 나타내는 비트들(60)(델타 IP), 비트들(60)이 나타내는 델타 IP의 유효 여부를 나타내는 비트(62), uOP가 브랜치 마이크로 연산인 경우 브랜치 목표 어드레스(branch target address)를 지정하는 비트들(64)(Br Tgt) 그리고 uOP가 부동소수점 연산인 경우 부동소수점 연산코드를 나타내는 비트들(68)(FOP 코드)을 더 포함한다. 도시된 실시예에서, 이 정보는 매크로 명령어 디코더에 의해 제공된다. 이 필드들의 목적과 용법은 이 기술분야에 알려져 있으로 이들에 대해서는 더 이상 설명하지 않는다.
태그 엔트리(30)에 저장되어 있는 것으로 설명된 정보의 일부는 대응하는 데이터 라인(52)에 저장될 수 있고, 그 반대도 가능하다는 것을 유념하여야 한다.또한 각 필드에 사용된 특정 비트(들)의 수는 여러 설계 고려 사항에 따라 선택될 수 있으며, 본 명세서에서 특정된 수들은 본 발명의 이해를 용이하게 하기 위한 것이다.
도 1을 다시 참조하면, 앞서 설명한 바와 같이 도시된 실시예의 경우, 캐시 메모리(10)는 즉시 추출기(18)와 충전 버퍼(20)를 포함한다. 즉시 추출기(18)는 데이터 어레이(14)의 uOP(54)가 판독될 때, 브랜치 어드레스들을 계산하는 브랜치 어드레스 계산 회로를 위해 uOP(54)로부터 브랜치 목표 1차 명령어 포인터(Br Tgt)(64)를 추출하는데 사용된다. 게다가, 트레이스 세그먼트 헤드(대응 태그 엔트리(30)에 저장된)의 1차 명령 포인터(LA)(34)는 브랜치 주소들을 계산하는 브랜치 어드레스 계산 회로로 또한 라우팅된다. 또한 헤드 LA(34), NLIP(50)는 다음 명령 포인터를 계산하는 다음 명령 포인터 계산 회로로 라우팅되는데, 그것의 입력은 브랜치 어드레스 계산 회로의 출력을 포함한다. 마이크로 연산 명령 포인터(uIP)(48)와 MS Ptr(56)은 복합 매크로 명령의 나머지 uOPs를 페치하는 마이크로코드 시퀀서와 데이터 어레이(14)에 의한 uOPs 출력과 마이크로코드 시퀀서 사이에서 선택하는 멀티플렉서로 각각 라우팅 된다.
충전 버퍼들(20)은 메모리에서 디코더까지의 데이터 경로의 데이터 폭, 그리고 그 결과 디코더에서 충전 버퍼들(20)까지의 데이터 경로의 데이터 폭이 데이터 라인의 크기보다 작을 때에, 그들이 태그 및 데이터 어레이(12, 14)로 전송되기 전에 예측된 실행 방향을 따라 데이터 라인들을 구축하는 데 사용된다. 도시된 실시예의 경우, 충전 버퍼들(20)은 동시에 복수의 데이터 라인 구축을 용이하게 하는복수의 버퍼를 포함한다. 충전 버퍼들(20)은 태그 어레이(12)의 태그 엔트리들에 기록되고 각각 데이터 어레이(14)의 데이터 라인들에 대응하는 해독된 uOPs 뿐만 아니라 그 주소와 제어 정보를 수집한다.
태그와 데이터 어레이(12, 14) 외에 제어 로직(26)은 충전 버퍼들(20)의 동작을 또한 제어한다. 도 6 및 도 7은 도 1에 도시된 캐시 메모리(10)의 실시예에서 제어 로직(26)이 동작하는 방식을 나타낸다. 제어 로직(26)은 기본적으로 두 개의 상보 모드(complementary modes), 즉 도 6에 도시된 실행 모드와 트레이스 세그먼트 구축 모드 중 하나로 캐시 메모리(10)를 동작시킨다. 일 실시예에서 두 상보 모드는 다른 하나와 배타적으로 동작하고, 이에 반하여 다른 실시예에서는 공유 자원들(shared resources)을 위한 중재 회로를 제공하여 두 상보 모드는 동시에 동작할 수 있다. 일 실시예에서, 두 상보 모드는 두 개의 대응하는 상태 머신(state machines), 즉 실행 모드 상태 머신과 트레이스 세그먼트 구축 모드 상태 머신에 의해 제어된다. 물론, 본 발명은 더 많은 또는 더 적은 상태 머신들을 이용하여 실시될 수 있다.
실행 모드 상태 머신은 7개 상태, 즉 유휴 상태(idle state)(78), 헤드 탐색 상태(head lookup state)(80), 보디 탐색 상태(82), 테일 상태(84), 마이크로코드 시퀀서(MS) 상태(86), 보디 미스 상태(body miss state)(88) 그리고 트레이스 구축 상태(trace build state)(90) 중 하나로 동작한다.
도시된 바와 같이 실행 모드 상태 머신은 uOP 브랜치 오예측 조건(misprediction condition)의 실행 유닛에 의한 리세트(reset) 또는 탐지에 근거하여 유휴 상태(78)에서 시작한다. 실행 모드 상태 머신은 제어 로직(26)이 매크로 브랜치 오예측 조건의 실행 유닛에 의해 통지를 받거나, 또는 LIP로부터 페치를 탐지하거나 트레이스 세그먼트 구축 조건의 종료를 탐지한 경우에 유휴 상태(78)에서 헤드 탐색 상태(80)로 이행한다.
헤드 탐색 상태(80)인 동안에, 실행 모드 상태 머신은 트레이스 세그먼드 헤드들을 위해 유지되고 있는 메모리 주소들에 대해 다음 IP 계산 회로가 공급하는 다음 IP의 주소 매칭에 의해 트레이스 세그먼트 헤드를 탐색하도록 한다. 실행 모드 상태 머신은 현재의 탐색 완료 이전에 매크로 브랜치 오예측 조건이 실행 유닛에 의해 발견되는 경우에 "새로운" 다음 IP 주소를 갖고서 트레이스 세그먼트 탐색 프로세스를 다시 시작하도록 할 것이다. 헤드 탐색 프로세스가 끝까지 계속된다면, 이 프로세스는 캐시 히트(cache hit)나 캐시 미스(cache miss)로 끝날 것이다.
헤드 탐색 프로세스가 캐시 히트로 끝나고, 트레이스 세그먼트 헤드가 또한 트레이스 세그먼트 테일이 아니며, 트레이스 세그먼트 헤드 데이터 라인이 복합 매크로 명령으로 끝나지 않았다면, 실행 모드 상태 머신은 트레이스 세그먼트 헤드의 마이크로 연산이 실행 유닛들로 출력되도록 하고 보디 탐색 상태(82)로 이행한다. 헤드 탐색 프로세스가 캐시 히트로 끝나고, 트레이스 세그먼트 헤드가 또한 트레이스 세그먼트 테일이며, 트레이스 세그먼 헤드/테일 데이터 라인 복합 매크로 명령으로 끝나지 않았다면, 실행 상태 모드 머신은 트레이스 세그먼트 헤드/테일의 마이크로 연산들이 실행 유닛들로 출력되도록 하고 상태 머신을 테일 상태(84)로 이행한다. 헤드 탐색 프로세스가 캐시 히트로 끝나고, 트레이스 세그먼트 헤드 데이터 라인이 복합 매크로 명령어로 끝나면, 실행 모드 상태 머신은 트레이스 세그먼트 헤드의 마이크로 연산들이 실행 유닛들로 출력되도록 하고 상태 머신을 MS 상태(86)로 이행한다. 탐색 프로세스가 캐시 미스로 끝나면 캐시 메모리(10)는 그 상태 머신을 트레이스 구축 상태(90)로 이행한다.
한편 보디 탐색 상태(82)에서, 실행 모드 상태 머신은 다음 축적 세그먼트 보디가 탐색되도록 한다. 도시된 실시예의 경우, 앞서 설명한 바와 같이, 다음 트레이스 세그먼트 보디는 현재 태그 엔트리의 다음 경로 비트들(40)에 의해 인덱싱되는 경로 W 내에 세트 X+1 모듈로 S세트의 데이터 라인에서 위치 탐색되며, 여기서 X는 현재 세트이고, S는 데이터 어레이(14)의 세트 수이며, W는 인덱싱된 경로이다. 다른 실시예에서, 다름 트레이스 세그먼트 보디는 현재 태그 엔트리의 다음 경로 비트들(40)에 의해 인덱싱되는 경로 W 내의 세트 Y(세트 식별자 비트로 나타냄)의 데이터 라인에 위치된다. 일단 위치가 정해지면, 실행 모드 상태 머신은 트레이스 세그먼트 보디의 uOPs가 실행 유닛들로 출력되도록 한다. 실행 모드 상태 머신은 이 상태로 남으며, 그들의 위치를 정함에 따라 캐시 히트인 한 계속해서 다음 트레이스 세그먼트 보디들이 탐색되도록 하고 그들의 uOPs가 출력되도록 하며 트레이스 세그먼트 테일에 도달하지 않도록 하고, 복합 매크로 명령어로 끝나는 데이터 라인을 만나지도 않고, 실행 유닛들 중 하나에 의해 매크로/마이크로 브랜치 오예측 조건을 통지받지도 않는다. 도시된 실시예에서, 매크로 명령어의 해독된 마이크로 연산들은 하나 이상의 브랜치 마이크로 연산들을 포함할 수 있다.
보디 탐색 상태(body look up state)(82)에 있는 동안, 실행 유닛들 중 하나가 매크로 브랜치 오예측의 검출을 제어 로직(26)에 알리면, 실행 모드 상태 머신은 보디 탐색 처리를 중지하고 헤드 탐색 상태(80)로 다시 전이한다. 보디 탐색 처리가 캐시 히트로 끝나고 데이터 라인이 복합 매크로 명령어로 끝나는 것이 아니라 데이터 라인이 트레이스 세그먼트 테일이면, 실행 모드 상태 머신은 트레이스 세그먼트 테일의 uOPs가 출력된 후 테일 상태(84)로 전이한다. 보디 탐색 처리가 캐시 히트로 끝나고, 데이터 라인이 복합 매크로 명령어로 끝나면, 실행 모드 상태 머신은 데이터 라인의 uOP가 출력된 후 마이크로코드 시퀀서(MS) 상태(86)로 전이한다. 보디 탐색 처리가 캐시 미스로 끝나면, 실행 모드 상태 머신은 보디 미스 상태(88)로 전이한다.
테일 상태(84)에서, 실행 모드 상태 머신은 무조건적으로 헤드 탐색 상태(80)로 돌아간다. 마찬가지로, 보디 미스 상태(88)에서, 실행 모드 상태 머신도 무조건적으로 헤드 탐색 상태(80)로 돌아간다. 전술한 실시예에 대해서, 트레이스 세그먼트 보디가 대체 데이터 라인 목표가 (경로 예측, 최저 사용 빈도(LRU) 등에 의해) 선택되는 방식에 따라 다른 트레이스 세그먼트로 겹쳐 쓰이거나 지워질 수 있으므로, 트레이스 세그먼트 보디를 탐색하는 동안 캐시 미스가 얻어질 수 있다.
MS 상태(86)에서, 실행 모드 상태 머신은 마이크로코드 시퀀스가 복합 매크로 명령어를 종료하는 데이터 라인의 나머지 uOP를 출력하도록 한다. 실행 모드 상태 머신은 마이크로코드 시퀀서가 실행 유닛에 의해서 매크로/마이크로 브랜치오예측 상태의 검출을 전달받지 않는 한, 모든 나머지 uOP가 출력될 때까지 나머지 uOP를 출력하도록 한다. 실행 모드 상태 머신은 매크로 브랜치 오예측 상태의 검출을 전달받으면, 헤드 탐색 상태(80)로 다시 전이한다. 실행 모드 상태 머신은 마이크로 브랜치 오예측 상태의 검출을 전달받으면, 유휴 상태(idle state)(78)로 다시 전이한다.
그러나, 제어 로직(26)이 마이크로코드 시퀀서에 의해 복합 매크로 명령어를 종료하는 데이터 라인의 나머지 uOP의 출력을 마쳤다고 전달받으면, 실행 모드 상태 머신은 데이터 라인이 트레이스 세그먼트 테일이 아니면 보디 탐색 상태(82)로 전이하며, 데이터 라인이 트레이스 세그먼트 테일이면 테일 상태(84)로 전이한다.
트레이스 구축 상태(trace build state)(90)에서, 실행 모드 상태 머신은 (보완 트레이스 세그먼트 구축 모드 상태 머신으로 표시되는) 상태를 종료하는 트레이스 세그먼트의 검출시에 유휴 상태(78)로 무조건적으로 전이한다. [즉, 실행 모드의 트레이스 구축 상태(90)는 본질적으로 대기 상태이다.]
트레이스 세그먼트 구축 모드 상태 머신은 7개의 상태, 즉 유휴 상태(92), 페치 요구(fetch request) 상태(94), uOP 대기 상태(96), 바이패스 uOP 상태(98), 충전 버퍼의 어레이 기입 상태(100), MS 및 충전 버퍼의 어레이 기입 상태(102), 및 헤드 탐색 상태(104). 설명한 바와 같이, 트레이스 세그먼트 구축 상태 머신은, 매크로/마이크로 브랜치 오예측 상태의 실행 유닛에 의한 리셋 또는 검출시에, 유휴 상태(92)에서 출발한다. 트레이스 세그먼트 구축 모드 상태 머신은, 제어 로직(26)인 명령어 페치 요구를 내릴 필요를 검출할 때, 즉 캐시 메모리(10)로의 액세스가 캐시 미스로 끝났을 때, 유휴 상태(92)에서 페치 요구 상태(94)로 전이한다.
페치 요구 상태(94)에서, 트레이스 세그먼트 구축 모드 상태 머신은 명령어 페치 요구가 명령어 페치 유닛에서 발행되도록 하고, uOP 대기 상태(96)로 전이한다. uOP 대기 상태에서, 트레이스 세그먼트 구축 모드 상태 머신은 적당한 uOP가 충전 버퍼(22)에 제공될 때까지 그 상태에서 머무른다. 그러한 때에, 트레이스 세그먼트 구축 모드 상태 머신은 바이패스 uOP 상태(98)로 전이한다. 바이패스 uOP 상태(98)에서, 트레이스 세그먼트 구축 모드 상태 머신은 적당한 uOP가 충전 버퍼(22)에서 실행 유닛으로 바이패스되도록 하며, 데이터 라인 종료 조건을 접할 때까지 계속 그렇게 한다. 데이터 라인 종료 조건이 복합 매크로 명령어를 접하는 것이면, 트레이스 세그먼트 구축 모드 상태 머신은 마이크로코드 시퀀서 및 충전 버퍼의 태그 및 데이터 어레이 기입 상태(102)로 전이한다. 다른 데이터 라인 종료 조건에 대해서, 충전 버퍼(20) 내에 구축된 바이패스된 uOP가 캐시될 없다면, 트레이스 세그먼트 구축 모드 상태 머신은 uOP 대기 상태(96)로 돌아가며, 그렇지 않으며, 트레이스 세그먼트 구축 모드 상태 머신은 바이패스 uOP 상태(98)에서 충전 버퍼의 어레이 기입 상태(100)로 전이한다.
충전 버퍼의 어레이 기입 상태(100)에서, 완료된 데이터 라인은 태그 및 데이터 어레이(12, 14) 내의 해당 위치로 이동한다. 설명한 실시예를 상기하면, 데이터 어레이(14) 내의 위치는 세트 X+1 모듈로 S의 경로 중 하나의 위치이다. 대체예를 상기하면, 데이터 어레이(14) 내의 위치는 인덱스 세트의 경로 중 하나의위치이다. 일 실시예에서, 경로는 경로 예측으로 선택된다. 다른 방법으로, LRU 방법이 사용될 수 있다. 또한, 트레이스 세그먼트 헤드를 탐색하기 위한 부분 어드레스 매칭 방법(partial address matching approach)과 결합하여 사용될 때, LRU 방식은 세트 X+1 모듈로 S (또는 인덱스 세트)에 대한 태그 어드레스의 태그 매칭 서브세트는 유일할 것임을 보증하므로 더욱 적격일 것이다. 즉, 비LRU(non-LRU) 경로가 도입도니는 데이터 라인의 태그 어드레스의 태그 매칭 서브세트와 같은 태그 어드레스의 대응 태그 매칭 서브세트를 가지면, 비LRU 경로가 LRU 경로 대신 선택된다.
데이터 라인을 태그 및 데이터 어레이(12, 14)로 기입할 때, 데이터 어레이(14)로 기입된 데이터 라인이 트레이스 세그먼트 테일이 아니라면(즉, 트레이스 종료 상태에 접하지 않았다면), 트레이스 세그먼트 구축 모드 상태 머신은 uOP 대기 상태(96)로 전이한다. 기입된 데이터 라인이 트레이스 세그먼트 테일일 때, 다음 선형 명령어 포인터(next linear instruction pointer; NLIP)가 알려지지 않으면, 트레이스 세그먼트 구축 모드 상태 머신은 유휴 상태(92)로 다시 전이하고, 그렇지 않으면 트레이스 세그먼트 구축 모드 상태 머신은 헤드 탐색 상태(104)로 전이한다.
MS 및 충전 버퍼의 태그 및 데이터 어레이 기입 상태(102)에서, 상태(100)에 대해서 앞에서 설명한 바와 같이, 완성된 데이터 라인은 태그 및 데이터 어레이(12, 14)로 기입된다. 그러나, 트레이스 세그먼트 구축 모드 상태 머신은, 복합 매크로 명령어의 나머지 마이크로연산이 실행 유닛에 대해서 모두 출력된 MS가 신호를 보낼 때까지 상태에서 전이하지 않는다. MS에 의해 출력이 완성될 때, 상태(100)에서와 같이, 트레이스 세그먼트 구축 상태 머신은, 기입된 데이터 라인이 트레이스 세그먼트 테일이 아니라면(즉, 트레이스 종료 상태을 접하지 않았으면) uOP 대기 상태(96)로 전이한다. 기입된 데이터 라인이 트레이스 세그먼트 테일일 때, 트레이스 세그먼트 구축 모드 상태 머신은, NLIP가 알려지지 않으면 유휴 상태(92)로 전이하고 NLIP가 알려지면 헤드 탐색 상태(104)로 전이한다. 또한, 트레이스 세그먼트 구축 모드 상태 머신은, 제어 로직(26)이 마이크로 연산 브랜치 오예측이 실행 유닛 중 하나에 의해 검출되었다는 통지를 받으면 유휴 상태로 전이한다.
헤드 탐색 상태(104)에서, 트레이스 세그먼트 구축 모드 상태 머신은 트레이스 세그먼트 헤드가 알려진 NLIP에 기초하여 (상보적 실행 모드 상태 머신을 통하여) 탐색되도록 한다. 트레이스 세그먼트 구축 모드 상태 머신은, 탐색이 (상보적 실행 모드 상태 머신에 의해 전달받아서) 히트로 끝나면 유휴 상태(92)로 전이하고, 그렇지 않으면 트레이스 세그먼트 구축 모드 상태 머신은 페치 요구 상태(94)로 전이한다. 페치 요구 상태(94)로부터, 트레이스 세그먼트 구축 모드 상태 머신은 전술한 바와 같이 다른 상태로 전이한다.
이제, 도 8 내지 도 15를 참조하여, 전술한 다양한 기능을 파이프라인하는데 사용된 다양한 파이프라인 단계의 각 일실시예를 나타내는 8개의 파이프라인 다이어그램을 나타낸다. 이들 다이어그램은 전술한 다양한 기능을 파이프라인하는 각 일시예를 설명하기 위해 참조될 것이다. 기능 자체는 다시 설명되지 않을 것이다.이들 각 도면에, 수직 실선으로 표시한 기간은 1 클록 주기를 나타낸다. 수직 점선으로 표시한 기간은 1 클록 주기의 일부를 나타낸다. 당업자는 비파이프라인 방식도 포함하는 다른 시간 분할 또는 파이프라인 방식을 상기 기능을 수행하는데 사용할 수 있을 것이다.
도 8은 트레이스 세그먼트 헤드 탐색 기능을 파이프라인하는데 사용되는 파이프라인 단계의 일실시예를 나타낸다. 도시한 바와 같이, 트레이스 세그먼트 헤드를 탐색할 때, 클락 주기의 제1 반기(half) 동안 태그 어레이(12)가 액세스된다. 내용 어드레스 매칭(CAM) 탐색은 클락 주기의 제1 1/4기(quarter) 동안 실행된다. 설명한 실시예에 대해서, 태그 어드레스 비트의 소정 서브세트만이 CAM 탐색동안 사용된다. 차례로, 클락 주기의 제1 1/4기 동안 실행된 CAM 탐색의 결과를 사용하여, 데이터 어레이(14)가 클락 주기의 제2 및 제3 1/4기 동안 액세스된다. 풀(full) 태그 매칭이 클락 주기의 제3 1/4기 동안 잠재적 히트 태그 엔트리(potential hit tag entry)에 대해서 실행된다. 다음으로, 검색된 데이터는 풀 태그 매칭의 결과에 따라 클락 주기의 제4 1/4기 동안 출력되거나 무효로 될 것이다.
도 9는 비트레이스 세그먼트 헤드 탐색 즉, 트레이스 세그먼트 보디/테일 탐색을 파이프라인하도록 수용된 파이프라인 단계의 한 실시예를 나타낸다. 도시한 바와 같이, 트레이스 세그먼트 보디/테일을 찾는 경우, 클록 주기의 제1 반주기 동안 태그 어레이(12)에 접근한다. 동시에 선행 트레이스 세그먼트 헤드/보디에서 검출한 경로(way) 정보를 클록 주기의 제1 쿼터 동안에 얻는다. 차례로 클록 주기의 제2 쿼터 및 제3 쿼터동안에 얻은 경로 정보 및 기결정된 설정 관계를 이용하여 데이터 어레이(14)에 액세스한다. 다음으로 풀 태크 매칭을 클록 주기의 제3 쿼터 동안에 실행한다. "겹쳐쓰기"될 수 있는 트레이스 세그먼트 보디/테일을 재호출한다. 다음으로 검출된 데이터는 풀 태그 매칭의 결과에 따라 출력이 허가되거나 클록 주기의 제4 쿼터 동안 무효화된다.
도 10은 uOP 출력 스위칭을 마이크로코드 시퀀서에 파이프라인화하도록 수용된 파이프라인 단계의 한 실시예를 나타낸다. 제1 클록 주기의 제1 반주기동안 태그 어레이(12)에 접근한다. 제1 클록 주기의 제2 반주기동안 마이크로코드 시퀀서 스위치 조건에 대한 검출, 즉 현재의 데이터 라인이 복잡한 매크로 지시에 의하여 소멸되었는지를 탐지하기 위하여 실행된다. 조건이 탐지되는 경우, uOP IP 및, 마이크로코드 시퀀서에 의한 uOPs 출력을 선택하는 데 사용하기 위한 선택 신호를 출력한다. 제2 클록 주기의 제1 반주기에 마이크로코드 시퀀서의 ROM에 접근하고, 마이크로코드 시퀀서에 의해 요청되는 소정의 부가 처리는 제2 클록 주기의 제2 반주기에서 실행된다. 다음으로 출력 uOPs는 제3 클록 주기에서 다음 파이프라인 단계로 전달된다.
도 11은 마이크로코드 시퀀서로부터 uOP 출력 스위칭을 파이프라인화하도록 수용된 파이프라인 단계의 한 실시예를 나타낸다. 클록 제1 주기의 제1 반주기동안 마이크로코드 시퀀서의 ROM에 접근한다. 마이크로코드 시퀀서에 의하여 요청되는 부가 처리는 스위치 백(back) 조건에 대한 검출, 즉 복잡한 매크로 지시를 소멸시키는 데이터선의 나머지 uOP가 출력되는 것을 포함하며 제1 클록 주기의 제2 반주기에서 실행된다. 스위치 백 조건이 검출되는 경우, 마이크로코드 시퀀서는 "스위치 백" 신호를 캐쉬 메모리(10)에 출력한다. 다음으로 제2 클록 주기의 제1 반주기에서 태그 어레이(12)에 접근하고, 도 8 및 도 9를 참조하여 전술한 바와 같이, 제2 클록 주기의 제2 반주기 동안 동작을 계속한다.
도 12는 NLIP의 출력을 다음의 IP 계산 회로로 파이프라인화하도록 수용된 파이프라인 단계의 한 실시예를 나타낸다. 앞서 기재한 바와 같이, 제1 클록 주기의 제1 반주기동안 태그 어레이(12)에 접근한다. 제1 클록 주기의 제2 반주기동안 태그 매칭 등 트레이스 종료 조건의 검출을 포함하여 실행한다. 트레이스 종료 조건의 검출시, 현재 태그 엔트리용으로 태그 어레이(12)로부터 검출된 NLIP를 다음의 IP 연산 회로에 출력한다. "새로운" NLIP는 브랜치 목표가 예측되지 않는 경우 제2 클록 주기에서 복귀한다.
도 13은 캐쉬 미스에 응답하여 페치 요구를 파이프라인화하도록 수용된 다양한 파이프라인 단계의 한 실시예를 나타낸다. 나타낸 바와 같이, 디맨드(demand)형으로 일컬어지는 페치 요구는 다음 클록 주기에서 공급되며, 트레이스 헤드 탐색으로부터 귀결된 캐쉬 미스로 이어진다. 도시한 실시예에서 다음 클록 주기 동안 지시 번역 룩-어사이드 버퍼(iTLB)에 접근한다.
도 14는 완성된 데이터 라인의 기록을 데이터 어레이(14)로 파이프라인화하도록 수용된 다양한 파이프라인 단계의 한 실시예를 나타낸다. 나타낸 바와 같이, 현재설정치 X의 "LRU" 경로를 제1 클록 주기에서 결정한다. 전술한 바와 같이, 트레이스 세그먼트 헤드를 찾는 경우, 부분 태그 매칭이 실행되는 실시예에서 "LRU"경로는 모든 경로에 대한 유일한 부분 태그 어드레스를 확인하는 표준으로 자격을 부여한다. 동시에 제1 클록 주기 동안 현재 설정치 X의 선택된 경로용 설정치 X-1 모듈로 S를 설정하는 사전 방법을 결정한다. (설정치 X의 선택 방법에 있어서 설정치 X-1 모듈로 S의 사전 경로가 0이 아닌 경우, 이는 설정치 X의 선택된 경로를 겹쳐쓰기로 한 또 다른 트레이스 세그먼트로 현재 사용하는 것을 의미한다.) uOPs를 바이패스하고, 나타낸 바와 같이 제2 클록 주기 및 제3 클록 주기에서 데이터 어레이(14)에 기록한다. 동시에 제2 클록 주기 동안 설정치 X에 대한 LRU 정보를 갱신한다. 마지막으로 제3 클록 주기에서 설정치 X-1 모듈로 S에서의 사전 테일 정보를 갱신한다. 설정치 X의 선택된 경로에 대한 설정치 X-1 모듈로 S의 다음 경로가 0이 아닌 경우, 설정치 X-1 모듈로 S의 다음 설정에 일치하는 데이터 라인은 다른 트레이스 세그먼트의 트레이스 세그먼트 테일로서 설정된다. 또다른 실시예에서 트레이스 세그먼트 요소를 제2 클록 주기에서 트레이스 세그먼트 테일로서 무조건적으로 마킹한 후, 필요하면 제3 클록 주기에서 교정한다.
도 15는 테일 유지와 겹쳐쓰기 시나리오를 좀더 상세하게 도시한다. 2개의 대표적인 트레이스 세그먼트 TS1 및 TS2를 나타낸다. 설명을 쉽게 하자면, TS1은 트레이스 세그먼트 보디(202) 및 트레이스 세그먼트 테일(104)을 포함하고, 이들은 설정치 X-2 모듈로 S 경로 0 및 설정치 X-1 모듈로 S 경로 0에 각각 저장되는 반면에, TS2는 트레이스 세그먼트 보디(106, 108) 및 트레이스 세그먼트 테일(110)을 포함하고, 이들은 설정치 X-2 모듈로 S 경로 1, 설정치 X-1 모듈로 S 경로 1, 설정치 X 모듈로 S 경로 1에 각각 저장된다. TS1용의 새로운 트레이스 세그먼트테일(112)을 저장하도록 설정치 X, 경로 1을 선택한다. 설정치 X, 경로 1을 TS1에 적절히 관련시키기 위하여, 나타낸 바와 같이 설정치 X 및 경로 1의 사전 경로 필드를 인덱스화하여 경로 0으로 수정한다. 설정치 X, 경로 1의 테일 정보는 이미 설정되어 있으므로 변경이 필요 없다. 설정치 X 및 경로 1을 사전에 트레이스 세그먼트 테일을 저장하도록 사용하지 않는 경우, 테일 정보가 설정될 것이다.
또한 TS1의 트레이스 세그먼트로서 설정치 X 및 경로 1의 데이터 라인을 적절히 설정하기 위하여, 다음의 경로 필드 및 설정치 X-1 모듈로 S 경로 0에 저장된 TS1의 사전 테일의 테일 정보를 갱신해야 한다. 나타낸 바와 같이, 설정치 X-1 모듈로 S 경로 0에 대한 다음 경로 필드는 인덱스 경로 1으로 갱신되고, 테일 정보는 없어진다. 게다가, 한 실시예에서 TS2용 제어 정보를 갱신해야 한다. 나타낸 바와 같이, TS2의 이전 트레이스 세그먼트 보디(108)인 겹쳐쓰기 트레이스 세그먼트 테일(110)에 대한 당해 선행은 대신에 TS2용 트레이스 세그먼트 테일(108)로 변환된다. 이를 설정치 X-1 모듈로 S 경로 1에 대해 테일 비트를 설정함으로써 달성한다.
도 16은 본 발명은 실시하는 데 적합한 컴퓨터 시스템의 한 실시예를 나타낸다. 나타낸 바와 같이, 예시적인 컴퓨터 시스템(100)은 본 발명의 캐시 메모리(10')의 한 실시예를 포함한다. 또한, 예시적인 컴퓨터 시스템(100)은 트레이스 브랜치 예측 유닛(102)(이것은 다음의 IP 연산 회로뿐만 아니라 브랜치 목표 어드레스 연산 회로를 포함한다.), 마이크로코드 시퀀서(104), 멀티플렉서(106), 실행 유닛(108), 명령어 브랜치 예측 유닛(110), 명령어 테이블 룩-어사이드버퍼(iTLB)(112) 및 디코더(114)를 포함한다. 이러한 구성 요소들은 나타낸 바와 같이 서로 연결된다.
캐시 메모리(10')는 전술한 바와 같이 이루어져 동작한다. 다른 구성 요소들 중 나머지(102 내지 114)는 본 발명이 속하는 분야에서 발견되는 이러한 구성 요소의 넓은 부류를 나타내도록 의도된다. 한 실시예에서 이러한 구성 요소들 전부(10', 102 내지 114)는 동일한 프로세서 집적 회로(칩)에 놓인다. 다른 실시예에서 다양한 구성 요소들이 분리된 칩상에 놓일 수 있다.
본 발명의 방법 및 장치는 전술한 실시예에 따라 기재되었고, 당업자들은 본 발명이 전술한 실시예에 한정되지 않음을 인식할 것이다. 본 발명은 첨부한 청구 범위의 사상 및 범위내에서 수정 및 변경을 할 수 있다. 따라서 본 발명에서의 기재는 제한되지 않고 예시적인 것으로 간주한다.
따라서 명령어 캐싱에 기초한 트레이스용 방법 및 장치를 기재한다.

Claims (46)

  1. a) 다수의 데이터 라인을 갖는 데이터 어레이; 및
    b) 상기 데이터 어레이에 결합되어, 다수의 명령어 트레이스 세그먼트를 상기 데이터 라인들에 저장하며, 다수의 데이터 라인을 확장하는 트레이스 세그먼트를 포함하는 제어 로직
    을 포함하는 장치.
  2. 제1항에 있어서, 상기 제어 로직은 하나 또는 그 이상의 기본 블록 명령어를 갖는 트레이스 세그먼트 요소를 가지고 각 트레이스 세그먼트를 구성하고, 각 트레이스 세그먼트 요소를 데이터 라인에 저장하고, 그리고 멀티 라인 트레이스 세그먼트의 데이터 라인들을 논리적 방식으로 순차적으로 연관시키는 것을 특징으로 하는 장치.
  3. 제1항에 있어서, 상기 제어 로직은 먼저 상기 멀티 라인 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 데이터 라인의 위치를 찾아 상기 제1 트레이스 세그먼트 요소를 검색한 다음에, 상기 데이터 라인들의 논리적 순차 연관에 기초하여 나머지 트레이스 세그먼트 요소들을 저장하는 나머지 데이터 라인들의 위치를 연속해서 찾고 이들 나머지 트레이스 세그먼트 요소들이 점유하는 데이터 라인들의 위치가 찾아짐에 따라 상기 나머지 트레이스 세그먼트 요소들을 검색함으로써 멀티 라인 트레이스 세그먼트의 트레이스 세그먼트 요소를 검색하는 것을 특징으로 하는 장치.
  4. 제3항에 있어서, 상기 제어 로직은 상기 트레이스 세그먼트들 중 상기 제1 트레이스 세그먼트 요소들의 상기 검색을 용이하게 하기 위하여 상기 제1 트레이스 세그먼트를 저장하는 데이터 라인과 연관된 어드레스들을 유지하는 것을 특징으로 하는 장치.
  5. 제4항에 있어서,
    최소 부분 내용 어드레스 매칭 회로를 더 포함하며,
    상기 최소 부분 내용 어드레스 매칭 회로에도 결합된 상기 제어 로직은 상기 유지된 관련 어드레스들을 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 데이터 라인의 위치를 찾아내기 위한 액세스 어드레스에 최소 부분 내용 어드레스 매치시키는 것을 특징으로 하는 장치.
  6. 제5항에 있어서,
    상기 제어 로직은 상기 유지된 관련 어드레스들을 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 데이터 라인의 위치를 찾아내기 위한 액세스 어드레스에 최소 부분 내용 어드레스 매치시키고,
    상기 제어 로직은 부분 매칭 데이터 라인에 저장된 상기 제1 세그먼트 요소가 찾고 있는 올바른 제1 트레이스 세그먼트 요소임을 확증하는 것을 특징으로 하는 장치.
  7. 제1항에 있어서, 상기 제어 로직은 데이터 라인들을 적용 가능한 곳에서 그 후속 데이터 라인들과 논리적인 방식으로 순차적으로 연관시키기 위하여 멀티 라인 트레이스 세그먼트의 각 데이터 라인에 대한 최소 부분 제어 정보를 유지하는 것을 특징으로 하는 장치.
  8. 제7항에 있어서,
    상기 데이터 라인들은 S개 세트의 N개 경로로 구성되고,
    상기 제어 로직은 현재 후속 데이터 라인의 경로 위치를 인덱스하기 위하여 최종 데이터 라인을 제외하고 상기 멀티 라인 트레이스 세그먼트의 각 데이터 라인에 대한 다음 경로 인덱스를 유지하는 것을 특징으로 하는 장치.
  9. 제7항에 있어서,
    상기 데이터 라인들은 S개 세트의 N개 경로로 구성되고,
    상기 제어 로직은 후속 데이터 라인들 간의 소정의 세트 관계를 유지하면서 멀티 라인 트레이스 세그먼트의 후속 트레이스 세그먼트 요소를 후속 데이터 라인들에 저장하는 것을 특징으로 하는 장치.
  10. 제7항에 있어서,
    상기 데이터 라인들은 S개 세트의 N개 경로로 구성되고,
    상기 제어 로직은 현재 후속 데이터 라인의 세트 위치를 인덱스하기 위하여 최종 데이터 라인을 제외하고 상기 멀티 라인 트레이스 세그먼트의 각 데이터 라인에 대한 다음 세트 인덱스를 유지하는 것을 특징으로 하는 장치.
  11. 제1항에 있어서, 상기 제어 로직은 데이터 라인들을 적용 가능한 곳에서 그 선행 데이터 라인들과 논리적인 방식으로 순차적으로 연관시키기 위하여 멀티 라인 트레이스 세그먼트의 각 데이터 라인에 대한 최소 부분 제어 정보를 유지하는 것을 특징으로 하는 장치.
  12. 제11항에 있어서,
    상기 데이터 라인들은 S개 세트의 N개 경로로 구성되고,
    상기 제어 로직은 현재 선행 데이터 라인의 경로 위치를 인덱스하기 위하여 제1 데이터 라인을 제외하고 상기 멀티 라인 트레이스 세그먼트의 각 데이터 라인에 대한 이전 경로 인덱스를 유지하는 것을 특징으로 하는 장치.
  13. 제1항에 있어서, 상기 제어 로직은 상기 장치의 성능을 최적화하기 위하여 데이터 라인들 전부 또는 선택된 것들과 연관된 하나 또는 그 이상의 제어 정보를 유지하는 것을 특징으로 하는 장치.
  14. 제13항에 있어서, 상기 제어 로직은 트레이스 세그먼트의 최종 트레이스 세그먼트 요소를 저장한 데이터 라인을 위한 다음 명령어 포인터를 유지하는 것을 특징으로 하는 장치.
  15. 제13항에 있어서, 상기 제어 로직은 트레이스 세그먼트 요소를 저장한 각 데이터 라인을 위한 다음 명령어 포인터를 유지하는 것을 특징으로 하는 장치.
  16. 제13항에 있어서, 상기 제어 로직은 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장한 각 데이터 라인을 위한 제1 트레이스 세그먼트 요소 표시기를 유지하는 것을 특징으로 하는 장치.
  17. 제13항에 있어서, 상기 제어 로직은 트레이스 세그먼트의 최종 트레이스 세그먼트 요소를 저장한 각 데이터 라인을 위한 최종 트레이스 세그먼트 요소 표시기를 유지하는 것을 특징으로 하는 장치.
  18. 제13항에 있어서, 상기 제어 로직은 트레이스 세그먼트 요소를 저장한 각 데이터 라인을 위한 마이크로 op 포인터를 유지하는 것을 특징으로 하는 장치.
  19. 제13항에 있어서, 상기 제어 로직은 적용 가능한 곳에서 브랜치 목표 어드레스를 유지하는 것을 특징으로 하는 장치.
  20. 제1항에 있어서, 상기 제어 로직은 다수의 데이터 라인 종료 조건에 따라서 한 데이터 라인 내로의 트레이스 세그먼트의 명령어의 저장을 종료하고 다른 데이터 라인 내로의 트레이스 세그먼트의 명령어의 저장을 계속하는 것을 특징으로 하는 장치.
  21. 제20항에 있어서, 상기 데이터 라인 종료 조건은 적어도 M개의 - 여기서 M은 소정의 최대값보다 크거나 같음 - 마이크로 op들로 디코드되는 복잡한 마크로 명령어를 만나는 조건을 포함하는 것을 특징으로 하는 장치.
  22. 제20항에 있어서, 상기 데이터 라인 종료 조건은 트레이스 세그먼트 당 조건 브랜치 마이크로 op에 대한 소정의 최대 한계에 도달한 후에 조건 브랜치 마이크로 op를 만나는 조건을 포함하는 것을 특징으로 하는 장치.
  23. 제1항에 있어서, 상기 제어 로직은 다수의 트레이스 세그먼트 종료 조건에 따라서 현재 트레이스 세그먼트의 요소들로서의 명령어들의 저장을 종료하고, 새로운 트레이스 세그먼트의 요소들로서의 명령어들의 저장을 계속하는 것을 특징으로 하는 장치.
  24. 제23항에 있어서, 상기 트레이스 세그먼트 종료 조건은 간접 브랜치 마크로 명령어를 만나는 조건을 포함하는 것을 특징으로 하는 장치.
  25. 제23항에 있어서, 상기 데이터 라인 종료 조건은 트레이스 세그먼트 당 명령어에 대한 소정의 최대 한계에 도달한 후에 명령어를 만나는 조건을 포함하는 것을 특징으로 하는 장치.
  26. 제1항에 있어서, 예측 실행 방향을 따라 트레이스 세그먼트 요소들을 구축한 후에 이들을 데이터 라인들에 저장하는 다수의 버퍼를 더 포함하는 것을 특징으로 하는 장치.
  27. 제1항에 있어서, 상기 데이터 어레이에 결합되어 상기 데이터 어레이에 의해 내용이 출력되고 있는 데이터 라인과 연관된 브랜치 명령어 포인터를 추출하는 즉시 추출기를 더 포함하는 것을 특징으로 하는 장치.
  28. 제1항에 있어서,
    상기 제어 로직에 결합되어 데이터 라인의 다수의 대응 태그 엔트리를 갖는 태그 어레이를 더 포함하며,
    상기 제어 로직은 트레이스 세그먼트의 트레이스 세그먼트 요소의 저장과 검색을 용이하게 하기 위하여 제어 정보를 상기 태그 엔트리에 저장하는 것을 특징으로 하는 장치.
  29. a) 명령어의 제1의 하나 또는 그 이상의 기본 블록을 트레이스 세그먼트의 제1 트레이스 세그먼트 요소로서 제1 데이터 라인에 저장하는 단계;
    b) 명령어의 제2의 하나 또는 그 이상의 기본 블록을 트레이스 세그먼트의 제2 트레이스 세그먼트 요소로서 제2 데이터 라인에 저장하는 단계; 및
    c) 상기 제1 트레이스 세그먼트 요소의 위치 탐색 시에 상기 상기 제2 데이터 라인의 위치 탐색과 상기 제2 트레이스 세그먼트 요소의 검색을 용이하게 하기 위하여 상기 제1 데이터 라인과 연관하여 상기 제2 데이터 라인에 대한 최소 부분 제어 정보를 저장하는 단계
    를 포함하는 명령어 캐싱 방법.
  30. 제29항에 있어서,
    d) 명령어의 제3의 하나 또는 그 이상의 기본 블록을 트레이스 세그먼트의 제3 트레이스 세그먼트 요소로서 제3 데이터 라인에 저장하는 단계; 및
    e) 상기 제2 트레이스 세그먼트 요소의 검색 시에 상기 제3 데이터 라인의 위치 탐색과 상기 제3 트레이스 세그먼트 요소의 검색을 용이하게 하기 위하여 상기 제2 데이터 라인과 연관하여 상기 제3 데이터 라인에 대한 최소 부분 제어 정보를 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 명령어 캐싱 방법.
  31. 제30항에 있어서, 상기 단계 (a), (b) 및 (d)는 다수의 데이터 라인 종료 조건에 따라서 종료되는 것을 특징으로 하는 명령어 캐싱 방법.
  32. 제30항에 있어서, 상기 단계 (a), (b) 및 (d) 각각은 예측 실행 방향에 따라 트레이스 세그먼트 요소를 구축하기 위하여 버퍼 내에 상기 제1/제2/제3 데이터 라인을 구축하는 단계를 포함하는 것을 특징으로 하는 명령어 캐싱 방법.
  33. a) 트레이스 세그먼트의 제1 트레이스 세그먼트 요소와 연관하여 유지된 위치 어드레스에 대해 액세스 어드레스를 어드레스 매칭시킴으로써 트레이스 세그먼트의 제1 트레이스 세그먼트 요소를 저장하는 제1 데이터 라인의 위치를 탐색하는 단계;
    b) 상기 제1 트레이스 세그먼트 요소와, 트레이스 세그먼트의 제2 트레이스 세그먼트 요소를 저장하는 제2 데이터 라인에 대한 제1 최소 부분 제어 정보 - 상기 제1 최소 부분 제어 정보는 상기 제1 데이터 라인과 연관하여 유지됨 -를 검색하는 단계; 및
    c) 상기 제2 데이터 라인의 위치를 탐색하고, 상기 제2 데이터 라인에 대한 상기 검색된 제1 최소 부분 제어 정보에 적어도 부분적으로 의존하여 상기 제2 트레이스 세그먼트 요소를 검색하는 단계
    를 포함하는 명령어 캐싱 방법.
  34. 제33항에 있어서,
    상기 단계 (c)는 트레이스 세그먼트의 제3 트레이스 세그먼트 요소를 저장하는 제3 데이터 라인에 대한 제2 최소 부분 제어 정보 - 상기 제2 최소 부분 제어 정보는 상기 제2 데이터 라인과 연관하여 유지됨 -를 검색하는 단계를 더 포함하며,
    d) 상기 제3 데이터 라인의 위치를 탐색하고, 상기 제3 데이터 라인에 대한 상기 검색된 제2 최소 부분 제어 정보에 적어도 부분적으로 의존하여 상기 제3 트레이스 세그먼트 요소를 검색하는 단계
    를 더 포함하는 것을 특징으로 하는 명령어 캐싱 방법.
  35. 제34항에 있어서, 상기 단계 (b), (c) 및 (d) 중 하나 또는 그 이상의 단계는 마이크로코드 시퀀서로부터 마크로 명령어의 마이크로 op를 검색하는 단계를 더 포함하는 것을 특징으로 하는 명령어 캐싱 방법.
  36. 제33항에 있어서, 상기 단계 (c)는 데이터 어레이의 데이터 라인의 세트의 경로에 액세스하는 단계를 포함하되, 상기 세트의 상기 경로는 상기 제2 데이터 라인에 대한 상기 검색된 제1 최소 부분 제어 정보의 경로 인덱스에 의해 인덱스되고, 상기 세트는 상기 제1 과 제2 데이터 라인 사이의 소정의 세트 관계에 의해 조정되는 것을 특징으로 하는 명령어 캐싱 방법.
  37. 제33항에 있어서, 상기 단계 (c)는 데이터 어레이의 데이터 라인의 세트의 경로에 액세스하는 단계를 포함하되, 상기 경로와 세트는 각각 상기 제2 데이터 라인에 대한 상기 검색된 제1 최소 부분 제어 정보의 경로 인덱스와 세트 인덱스에 의해 인덱스되는 것을 특징으로 하는 명령어 캐싱 방법.
  38. 제33항에 있어서, 상기 단계 (a)의 상기 어드레스 매칭은 유지된 액세스 어드레스와 위치 어드레스의 대응 어드레스 비트 서브세트를 가지고 수행되며, 상기 단계 (a)는 매칭 데이터 라인이 검색되고 있는 상기 제1 트레이스 세스먼트 요소를 포함하고 있는지 확증하는 단계를 더 포함하는 것을 특징으로 하는 명령어 캐싱 방법.
  39. a) 다수의 데이터 라인에 저장된 명령어의 트레이스 세그먼트의 트레이스 세그먼트 요소가 탐색되어 출력되는 실행 모드에서 장치를 동작시키는 제1 상태 머신; 및
    b) 명령어의 트레이스 세그먼트의 트레이스 세그먼트 요소가 구축되어 데이터 라인에 저장되는 트레이스 세그먼트 구축 모드에서 장치를 동작시키는 제2 상태 머신
    을 포함하는 장치.
  40. 제39항에 있어서, 상기 실행 모드에서 동작 시, 트레이스 세그먼트 헤드, 트레이스 세그먼트 보디, 및 트레이스 세그먼트 테일 각각을 탐색하기 위한 트레이스 세그먼트 헤드 탐색 상태, 트레이스 세그먼트 보디 탐색 상태, 및 트레이스 세그먼트 테일 탐색 상태를 포함하는 다수의 상태 중 어느 한 상태에서 동작하는 것을 특징으로 하는 장치.
  41. 제40항에 있어서, 상기 다수의 상태는 마이크로코드 시퀀서로부터 마크로 명령어의 마이크로-op들을 검색하기 위한 마이크로코드 시퀀서 탐색 상태를 더 포함하는 것을 특징으로 하는 장치.
  42. 제39항에 있어서, 상기 트레이스 세그먼트 구축 모드에서 동작 시, 충전 버퍼로부터 데이터 어레이 내로 트레이스 세그먼트 요소를 전달하기 위한 충전 버퍼 전달 상태를 포함하는 다수의 상태 중 어느 한 상태에서 동작하되, 상기 제1 트레이스 세그먼트 요소는 예측 실행 방향에 따라 구축되는 것을 특징으로 하는 장치.
  43. a) 실행 유닛; 및
    b) 상기 실행 유닛에 결합되며, 다수의 데이터 라인을 갖는 데이터 어레이와, 명령어의 다수 트레이스 세그먼트를 다수 데이터 라인을 확장하는 트레이스 세그먼트를 포함하는 상기 데이터 라인에 저장하는 제어 로직을 포함하는 캐시 메모리
    를 포함하는 프로세서.
  44. a) 다수의 데이터 라인을 갖는 데이터 어레이와, 명령어의 다수 트레이스 세그먼트를 다수 데이터 라인을 확장하는 트레이스 세그먼트를 포함하는 상기 데이터 라인에 저장하는 제어 로직을 포함하는 캐시 메모리를 포함하는 프로세서; 및
    b) 상기 프로세서에 결합된 입/출력 장치
    를 포함하는 컴퓨터 시스템.
  45. a) 실행 유닛; 및
    b) 상기 실행 유닛에 결합되며, 다수의 데이터 라인에 저장된 명령어의 트레이스 세그먼트의 트레이스 세그먼트 요소가 탐색되어 출력되는 실행 모드에서 캐시 메모리를 동작시키는 제1 상태 머신, 및 명령어의 트레이스 세그먼트의 트레이스 세그먼트 요소가 구축되어 데이터 라인에 저장되는 트레이스 세그먼트 구축 모드에서 캐시 메모리를 동작시키는 제2 상태 머신을 갖는 캐시 메모리
    를 포함하는 프로세서.
  46. a) 다수의 데이터 라인에 저장된 명령어의 트레이스 세그먼트의 트레이스 세그먼트 요소가 탐색되어 출력되는 실행 모드에서 캐시 메모리를 동작시키는 제1 상태 머신, 및 명령어의 트레이스 세그먼트의 트레이스 세그먼트 요소가 구축되어 데이터 라인에 저장되는 트레이스 세그먼트 구축 모드에서 캐시 메모리를 동작시키는제2 상태 머신을 갖는 캐시 메모리를 포함하는 프로세서; 및
    b) 상기 프로세서에 결합된 입/출력 장치
    를 포함하는 컴퓨터 시스템.
KR1020017008981A 1999-01-15 1999-01-15 트레이스 기반의 명령어 캐시 KR20010108104A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1999/000959 WO2000042502A1 (en) 1997-10-23 1999-01-15 Trace based instruction caching

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020057019158A Division KR100742002B1 (ko) 2005-10-07 1999-01-15 캐시 메모리 장치, 및 이를 포함하는 프로세서 및 컴퓨터시스템

Publications (1)

Publication Number Publication Date
KR20010108104A true KR20010108104A (ko) 2001-12-07

Family

ID=69375129

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017008981A KR20010108104A (ko) 1999-01-15 1999-01-15 트레이스 기반의 명령어 캐시

Country Status (2)

Country Link
KR (1) KR20010108104A (ko)
HK (1) HK1043416A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117270000A (zh) * 2023-11-20 2023-12-22 北京凯芯微科技有限公司 一种gnss导航接收机及其跟踪通道交叉复用的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117270000A (zh) * 2023-11-20 2023-12-22 北京凯芯微科技有限公司 一种gnss导航接收机及其跟踪通道交叉复用的方法
CN117270000B (zh) * 2023-11-20 2024-01-30 北京凯芯微科技有限公司 一种gnss导航接收机及其跟踪通道交叉复用的方法

Also Published As

Publication number Publication date
HK1043416A1 (zh) 2002-09-13

Similar Documents

Publication Publication Date Title
US6018786A (en) Trace based instruction caching
US6170038B1 (en) Trace based instruction caching
US6216206B1 (en) Trace victim cache
US6073213A (en) Method and apparatus for caching trace segments with multiple entry points
US6076144A (en) Method and apparatus for identifying potential entry points into trace segments
US5933860A (en) Multiprobe instruction cache with instruction-based probe hint generation and training whereby the cache bank or way to be accessed next is predicted
KR100734529B1 (ko) 밀접하게 결합된 다중 프로세서를 위한 고속의 다중 스레딩
US5694568A (en) Prefetch system applicable to complex memory access schemes
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
JP3412575B2 (ja) 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法
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
CN101495962B (zh) 用于预取不连续指令地址的方法和设备
US6029228A (en) Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
US5802588A (en) Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
KR100804285B1 (ko) 변환 색인 버퍼 플러시 필터
US5790823A (en) Operand prefetch table
US7155574B2 (en) Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory
JPH10232827A (ja) 先取りキャッシュ書戻しの方法と装置
KR100266424B1 (ko) 롬(rom)용량을 저감한 데이타 프로세서
JP2005521924A (ja) シングルスレッドプログラムのマルチスレッドでのインプリシットな実行を可能にするマルチスレッドプロセッサ
JPH06242949A (ja) キュー管理式命令キャッシュ
US5893146A (en) Cache structure having a reduced tag comparison to enable data transfer from said cache
US6385720B1 (en) Branch prediction method and processor using origin information, relative position information and history information
JP3732234B2 (ja) スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法
KR100742002B1 (ko) 캐시 메모리 장치, 및 이를 포함하는 프로세서 및 컴퓨터시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
A107 Divisional application of patent
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20050907

Effective date: 20060926

WITB Written withdrawal of application