KR20060067964A - 프로세서 전력 감소를 위한 마이크로 tlb 및 마이크로태그 - Google Patents

프로세서 전력 감소를 위한 마이크로 tlb 및 마이크로태그 Download PDF

Info

Publication number
KR20060067964A
KR20060067964A KR1020067003890A KR20067003890A KR20060067964A KR 20060067964 A KR20060067964 A KR 20060067964A KR 1020067003890 A KR1020067003890 A KR 1020067003890A KR 20067003890 A KR20067003890 A KR 20067003890A KR 20060067964 A KR20060067964 A KR 20060067964A
Authority
KR
South Korea
Prior art keywords
cache
tag
hit
tlb
address
Prior art date
Application number
KR1020067003890A
Other languages
English (en)
Other versions
KR101014395B1 (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 KR20060067964A publication Critical patent/KR20060067964A/ko
Application granted granted Critical
Publication of KR101014395B1 publication Critical patent/KR101014395B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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, look ahead
    • G06F9/3824Operand accessing
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

프로세서(10)는 캐시(16), 제 1 TLB(30), 태그 회로(36)를 포함한다. 캐시(16)는 복수의 캐시 라인들을 저장하는 데이터 메모리(20)와 복수의 태그들을 저장하는 태그 메모리(22)를 포함한다. 제 1 TLB(30)는 복수의 가상 페이지들을 식별하는 가상 주소들의 복수의 페이지 부분들을 저장하는데, 여기서 복수의 가상 페이지들에 대한 물리적 주소 변환들이 제 1 TLB(30)에 저장된다. 태그 회로(36)는 캐시(16)에 저장되며, 복수의 가상 페이지들(16) 내에 있는 하나 이상의 복수의 캐시 라인들을 식별한다. 제 1 TLB(30)의 제 1 가상 주소에 의한 적중 및 태그 회로(36)의 제 1 가상 주소에 의한 적중에 응답하여, 태그 회로(36)는 캐시(16)의 태그 메모리(22) 판독을 방지한다.
캐시 메모리, 메모리 태그, 변환 참조 버퍼, 가상 페이지.

Description

프로세서 전력 감소를 위한 마이크로 TLB 및 마이크로 태그{MICROTLB AND MICRO TAG FOR REDUCING POWER IN A PROCESSOR}
본 발명은 프로세서들 분야에 관한 것으로서, 보다 구체적으로는, 프로세서들의 캐싱 구조들에 관한 것이다.
프로세서들은 전형적으로 가상 주소지정을 구현하며, 또한 전형적으로 최근에 액세스된 데이터 및/또는 명령들을 저장하기 위한 캐시들을 구현한다. 전형적으로, 프로세서는 액세스되는(예를 들어, 판독되거나 기록되는) 위치의 가상 주소를 생성하며, 가상 주소는 액세스가 캐시에서 적중(hit)되는지를 결정하기 위해 물리적 주소로 변환된다. 보다 구체적으로는, 캐시 액세스는 전형적으로 변환과 동시에 시작되며, 변환은 캐시 액세스가 적중되는지를 검출하는데 사용된다.
캐시 액세스는 전형적으로 프로세서에서 중요한 타이밍 경로들이며, 캐시 대기시간은 또한 전형적으로 프로세서에 의해 달성될 수 있는 성능 레벨에서 중요하다. 따라서, 프로세서 설계자들은 종종 캐시 대기시간을 감소하고, 타이밍 요건들을 충족하기 위해 캐시/변환 설계들의 최적화를 시도한다. 하지만, 많은 최적화 기법들은 캐시/변환 회로의 전력 소모를 증가시킬 수 있다. 많은 프로세서들에서, 캐시/변환 회로는 프로세서의 전체 전력 소모에 최대 공여자가 될 수 있다.
프로세서의 전력 소모가 시간이 지남에 따라 증가하였기에, 프로세서 전력 소모의 제어(그리고, 전력 소모 감소를 위한 프로세서 설계)의 중요성은 증대하였다. 캐시/변환 회로가 종종 프로세서 전력 소모에 주요한 공여자이기 때문에, 캐시/변환 회로에서 전력 소모 감소를 위한 기법들이 더욱 바람직하게 되었다.
성능을 개선을 위해, 세트-어소시에이티브 캐시(set associative cache)들이 종종 프로세서들에 구현된다. 세트-어소시에이티브 캐시에서, 캐시에 색인(index)하는 소정의 주소는 이 주소에 의해 표시되는 캐시 라인를 저장하는데 사용될 수 있는 둘 이상의 캐시 라인 저장 위치들 세트를 선택한다. 세트에서 캐시 라인 저장 위치들은 세트 방향으로서 지칭되며, W 방향을 갖는 캐시는 W-방향 세트-어소시에이티브로 지칭된다(여기서, W는 1보다 큰 정수이다). 세트-어소시에이티브 캐시는 전형적으로 같은 크기의 다이렉트-맵핑 캐시들에 비해 높은 적중률을 가지며, 이에 따라 다이렉트-맵핑 캐시들보다 고성능을 제공할 수 있다. 하지만, 종래 세트-어소시에이티브 캐시들은 또한 전형적으로 같은 크기의 다이렉트-맵핑 캐시들에 비해 많은 전력을 소모할 수 있다. 일반적으로, 캐시는 캐시된 데이터를 저장하는 데이터 메모리와 캐시된 데이터의 주소를 식별하는 태그를 저장하는 태그 메모리를 포함한다.
종래 세트-어소시에이티브 캐시에서, 데이터 메모리와 태그 메모리의 각 방향은 입력 주소에 응답하여 액세스된다. (가령, 있다면) 어느 방향이 주소에 의해 적중되는지를 결정하기 위해 세트의 각 방향에 대응하는 태그들이 비교되며, 대응 방향으로부터의 데이터가 캐시에 의한 출력을 위해 선택된다. 따라서, 데이터 메모 리와 태그 메모리의 각 방향이 액세스되며, 전력을 소모할 수 있다. 더욱이, 캐시 액세스가 종종 중요한 타이밍 경로이기 때문에, 태그 메모리와 데이터 메모리 액세스는 타이밍과 대기시간을 위해 최적화되는데, 이는 또한 전력 소모를 증가시킬 수 있다. 또한, 캐시들은 전형적으로 물리적 주소로 태그되며, 이에 따라 중요 경로에 전형적으로 변환 회로가 있으며, 타이밍과 대기시간을 위해 최적화되는데, 이는 변환 회로에서 전력 소모를 증가시킬 수 있다.
일 실시예에서, 프로세서는 캐시, 제 1 변환 참조 버퍼(TLB: translation lookaside buffer), 및 제 1 TLB에 결합된 태그 회로를 포함한다. 캐시는 복수의 캐시 라인들을 저장하는 데이터 메모리와 복수의 태그들을 저장하는 태그 메모리를 포함한다. 복수의 태그들 각각은 복수의 캐시 라인들 각각에 대응한다. 제 1 TLB(30)는 복수의 가상 페이지들을 식별하는 복수의 가상 주소들의 페이지 부분들을 저장하는데, 여기서 복수의 가상 페이지들을 위해 물리적 주소 변환들이 제 1 TLB(30)에 저장된다. 태그 회로는 캐시에 저장되는, 복수의 가상 페이지들 내에 있는 하나 이상의 복수의 캐시 라인들을 식별한다. 제 1 TLB의 제 1 가상 주소에 의한 적중 및 태그 회로의 제 1 가상 주소에 의한 적중에 응답하여, 태그 회로는 캐시의 태그 메모리 판독을 방지한다.
다른 실시예에서, 방법이 고려된다. 제 1 TLB는 제 1 가상 주소로 액세스된다. 제 1 TLB(30)는 복수의 가상 페이지들을 식별하는 가상 주소들의 복수의 페이지 부분들을 저장하는데, 여기서 복수의 가상 페이지들에 대한 물리적 주소 변환들이 제 1 TLB(30)에 저장된다. 제 1 TLB의 제 1 가상 주소에 의한 적중에 응답하여, 태그 회로는 액세스된다. 태그 회로는 캐시에 저장되는, 복수의 가상 페이지 내에 있는 복수의 캐시 라인들을 식별한다. 제 1 TLB와 태그 회로 내의 제 1 가상 주소에 의해 적중이 검출된다. 제 1 TLB와 태그 회로 내의 제 1 가상 주소에 의한 적중에 응답하여, 캐시의 태그 메모리의 판독이 방지된다.
또 다른 실시예에서, 프로세서는 캐시와 태그 회로를 포함한다. 캐시는 복수의 캐시 라인들을 저장하는 데이터 메모리와 복수의 태그들을 저장하는 태그 메모리를 포함한다. 복수의 태그들 각각은 복수의 캐시 라인들 각각에 대응한다. 태그 회로는 복수의 캐시 라인들의 서브세트에 대한 제 1 가상 주소에 의해 캐시에서 적중을 검출한다. 태그 회로의 제 1 가상 주소에 의한 적중에 응답하여, 태그 회로는 태그 메모리의 판독을 방지하며, 데이터 메모리는 제 1 가상 주소에 대응하는 제 1 캐시 라인의 적어도 일부를 출력한다.
하기의 상세한 설명은 간략히 설명되는 첨부 도면들을 참조한다.
도 1은 프로세서의 일 실시예 부분의 블록도이다.
도 2는 도 1에 도시된 변환 및 필터 블록의 일 실시예의 블록도이다.
도 3은 프로세서의 일 실시예에 의해 구현될 수 있는 파이프라인의 일 실시예를 도시하는 타이밍도이다.
도 4는 마이크로TLB 태그 회로의 일 실시예의 블록도이다.
도 5는 도 4에 도시된 제어 회로에 대응하는 진리표의 일 실시예의 블록도이 다.
도 6은 마이크로TLB 데이터 회로의 일 실시예의 블록도이다.
도 7은 마이크로 태그 회로의 일 실시예의 블록도이다.
도 8은 도 2에 도시된 블록들의 일 실시예의 동작을 도시하는 흐름도이다.
도 9는 도 1에 도시된 방향 예측기의 일 실시예의 블록도이다.
도 10은 캐시 적중실패에 응답하여 대체 방향을 선택하는 일 실시예의 흐름도이다.
도 11은 도 1에 도시된 데이터 캐시 데이터 메모리 부분의 일 실시예의 블록도이다.
도 12는 도 1에 도시된 데이터 캐시 데이터 메모리 부분의 제 2 실시예의 블록도이다.
도 13은 도 1에 도시된 데이터 캐시 데이터 메모리 부분의 제 3 실시예의 블록도이다.
도 14는 방향 예측을 생성하는 일 실시예의 흐름도이다.
도 15는 도 1에 도시된 프로세서를 포함하는 컴퓨터 시스템의 일 실시예의 블록도이다.
도 16은 도 1에 도시된 프로세서를 포함하는 컴퓨터 시스템의 제 2 실시예의 블록도이다.
본 발명의 다양한 변형물 및 대안 형태들이 가능하지만, 특정 실시예들은 도면들에서 예에 의해 도시되며, 본원에서 상세히 설명될 것이다. 하지만, 도면들 및 특정 실시예들은 본 발명을 개시된 특정 형태에 제한하지 않으며, 첨부된 청구항들에 의해 정의된 바와같이 본 발명의 사상 및 범주 내에 드는 모든 변형물들, 등가물들 및 대안물들을 포함하는 것으로 의도된다.
도 1을 참조하면, 프로세서(10)의 일 실시예의 일부의 블록도가 도시된다. 예시된 실시예에서, 프로세서(10)는 주소 생성 유닛(AGU)(12), 방향 예측기(14), 데이터 캐시(16), 및 변환/필터 회로(18)를 포함한다. 데이터 캐시(16)는 데이터 캐시 데이터 메모리(20)와 데이터 캐시 태그 메모리(22)를 포함한다. AGU(12)와 방향 예측기(14)는 피연산자들을 수신하도록 결합된다. AGU(12)는 가상 주소(VA)를 생성하며, 방향 예측기(14), 데이터 캐시(16)(보다 구체적으로는, 데이터 캐시 데이터 메모리(20) 및 데이터 캐시 태그 메모리(22)), 및 변환/필터 회로(18)에 가상 주소를 제공하도록 결합된다. 방향 예측기(14)는 데이터 캐시 데이터 메모리(20)에 방향 예측을 제공하도록 결합되는데, 상기 (20)은 방향 예측과 가상 주소에 응답하여 데이터를 포워딩한다. 방향 예측기(14)는 또한 초기 적중실패 표시(early miss indication)를 제공하도록 결합된다. 변환/필터 회로(18)는 데이터 캐시(16)에 결합되며, 변환 참조 버퍼(TLB) 적중실패 표시를 제공하도록 결합된다. 데이터 캐시(16)는 캐시 적중실패 표시를 생성한다.
AGU(12)는 메모리 동작을 위한 주소 피연산자들을 수신하도록 결합되며, 주소 피연산자들에 응답하여 가상 주소를 생성한다. 예를 들어, AGU(12)는 가상 주소를 발생하기 위해 주소 피연산자들을 가산하는 가산기 회로를 포함할 수 있다. 본 원에서 사용되는 바와같이, 메모리 동작들은 (메모리 위치를 읽는) 로드 동작들과 (메모리 위치를 기록하는) 저장 동작들을 포함할 수 있다. 메모리 동작들은 메모리 피연산자들을 특정하는 명령의 암시적(implicit) 부분이 되거나, 일부 실시예에서는 로드 또는 저장 명령(또한 종종 이동 명령으로서 지칭됨)에 응답하여 수행되는 명시적(explicit) 동작이 될 수 있다. 주소 피연산자들은 메모리 피연산자들의 주소를 생성하는데 사용하도록 정의되는 메모리 동작에 대응하는 명령의 피연산자들이 될 수 있다. 주소 피연산자들은 하나 이상의: 프로세서(10)에 의해 구현된 레지스터들로부터의 레지스터 값들, 명령에 엔코딩된 변위 데이터(displacement data), 일부 실시예들에서의 프로세서(10)에 의해 구현된 세그먼트 메커니즘으로부터의 세그먼트 기본 주소를 포함할 수 있다. 가상 주소는 페이징 변환 메커니즘을 통해 물리적 주소(프로세서(10)를 포함하는 컴퓨터 시스템의 메모리에 주소지정하는데 사용됨)로 아직 변환되지 않은 명령의 주소 피연산자들로부터 생성된 주소를 포함할 수 있다. 예를 들어, 일 실시예에서, 프로세서(10)는 x86 명령 세트 아키텍처(또한 IA-32로서 알려짐)를 구현할 수 있다. 이러한 실시예에서, 선형 주소가 가상 주소의 예이다. 만일 페이징 변환이 가능하지 않은 경우에, 가상 주소는 물리적 주소에 일치될 수 있다.
프로세서(10)에 의해 구현되는 페이징 메커니즘은 페이지 입도(page granularity)에서 가상 주소들을 물리적 주소로 변환한다. 즉, 대응 물리적 주소를 식별하기 위해 페이지의 각 가상 주소에 대해 사용되는 하나의 변환 엔트리가 있다. 페이지는 임의의 크기가 될 수 있다. 예를 들어, 4 킬로바이트는 전형적인 크 기이다. 또한, x86 명령 세트는 일부 방식들에서 2 메가바이트 페이지 크기와 4 메가바이트 크기를 특정한다. 가상 주소들의 최하위 비트들은 페이지 내의 오프셋을 정의하며, 페이징 메커니즘에 의해 변환되지 않는다. 예를 들어, 4 킬로바이트 페이지 크기에서, 가상 주소들의 최하위 12 비트들은 페이지 오프셋을 형성한다. 페이지 오프셋을 배제하는 가상 주소의 잔여 비트들은 가상 주소의 페이지 부분을 형성할 수 있다. 페이지 부분은 페이징 메커니즘에서 가상 주소에 대한 물리적 주소 변환을 선택하는데 사용될 수 있다. 다른 방식으로 볼 때에, 가상 주소의 페이지 부분은 물리적 주소 변환에 의해 물리적 페이지로 변환되는 가상 페이지를 정의할 수 있다.
프로세서(10)는 전력 소모를 줄이기 위해 하나 이상의 기법들을 이용할 수 있다. 예를 들어, 변환/필터 회로(18)는 비교적 작은 TLB(본원에서 마이크로TLB로서 지칭됨)와 태그 회로(본원에서 마이크로 태그 회로로 지칭됨)를 포함할 수 있다. 마이크로 태그 회로는 (ⅰ) 마이크로TLB가 변환들을 저장하는 가상 페이지들에 있는, (ⅱ) 데이터 캐시(16)에 저장된 캐시 라인들의 비교적 작은 수의 태그들을 저장할 수 있다.
마이크로TLB는 가상 주소에 응답하여 액세스되며, 만일 마이크로TLB에서 적중이 검출되는 경우에, 변환/필터 회로(18)의 큰 메인 TLB(또는 TLB들)로의 액세스를 피할 수 있다. 이러한 경우에 메인 TLB에 액세스하는데 소모되는 전력은 보존될 수 있다. 부가적으로, 마이크로TLB 적중이 검출되는 경우에, 마이크로 태그가 액세스될 수 있다. 마이크로 태그에서 적중이 검출되는 경우에, 캐시 적중/실패를 결정 하기 위한 데이터 캐시 태그 메모리(22)의 판독 역시 피할 수 있다(따라서, 데이터 캐시 태그 메모리(22)에 액세스하는데 소모되는 전력 또한 보존될 수 있다). (마이크로 태그에서 적중 또는 데이터 캐시 태그 메모리(22)에서 적중)어느 경우에서든, 적중 캐시 라인으로부터의 데이터는 데이터 캐시 데이터 메모리(20)로부터 포워딩될 수 있다. 따라서, 마이크로TLB는 메인 TLB에 액세스를 위한 필터로서 역할을 하며, 마이크로TLB와 마이크로 태그는 데이터 캐시 태그 메모리(22)로의 액세스를 위한 필터로서 역할을 한다.
프로세서(10)에서 구현되는 다른 전력 소모 기법은, 데이터 캐시(16)가 세트 어소시에이티브인 실시예들을 위한 방향 예측기(14)를 사용한다. 방향 예측기(14)는 데이터 캐시(16)에 액세스하는 메모리 동작에 대한 데이터 캐시 데이터 메모리(20)를 위한 방향 예측을 생성한다. 방향 예측 및 가상 주소에 응답하여, 데이터 캐시 데이터 메모리(20)는 데이터를 사용할 수 있는 다양한 프로세서 회로(도 1에 미도시)에 데이터를 포워딩할 수 있다(도 1의 데이터 포워드). 데이터 캐시 데이터 메모리(20)로부터 판독되고 포워딩된 데이터는 캐시 라인 또는 캐시 라인의 일부를 포함할 수 있다. 데이터가 방향 예측에 응답하여 포워딩되기 때문에, 변환 회로와 캐시 태그 회로는 더 이상 프로세서(10)의 중요 경로의 일부가 아니다. 일부 실시예들에서, 변환 회로와 캐시 태그 회로는 심지어 회로에서 일부 대기시간을 희생해서라도 저전력 소모를 갖는 회로를 사용하여 구현될 수 있다. 선택적으로, 마이크로TLB와 마이크로 태그와 같은 필터 구조들이 허용되며, 이는 변환 회로와 캐시 태그 비교들의 대기시간을 증가시킬 수 있다(이는 또한 큰 TLB 구조들과 데이터 캐시 데이터 메모리(22)에 액세스를 줄임으로써 전체 전력 소모를 줄일 수 있다). 더욱이, 방향 예측기(14)는 데이터 캐시 데이터 메모리(20)에서 전력 소모 감소를 허용함으로써 프로세서(10)의 전력 소모를 줄이는데 사용될 수 있다. 데이터 캐시 데이터 메모리(20)에 대한 다양한 설계들이 하기에서 도 9를 참조하여 더 상세히 설명된다.
방향 예측은 변환/필터 회로(18)의 마이크로TLB/마이크로 태그 및 데이터 캐시 태그 메모리(22)로부터의 태그 또는 태그들과의 태그 비교를 사용하여 유효화될 수 있다. 만일 방향 예측이 정확한 경우에, 동작은 방향 예측에 응답하여 데이터 캐시 데이터 메모리(20)에 의해 포워딩되는 데이터로 계속될 수 있다. 반면에, 방향 예측이 정확하지 않은 경우에, 메모리 동작은 재시도될 수 있다. 대안적으로, 일부 실시예들에서, 데이터 캐시(16)는, 방향 예측이 부정확한 경우에 데이터 캐시(16)에서 주소 적중실패가 되도록 대체(replacement)를 제어할 수 있다. 일부 실시예들에서, 정확한 방향 예측은 방향 예측 유효화 동안에 결정될 수 있으며, 정확한 방향은 재시도 동안에 액세스될 수 있다. 다른 실시예들에서, 재시도 동안에 적중을 위해 예측하지않은 방향이 검색될 수 있다(예를 들어, 데이터 캐시(16)에서 종래 세트 어소시에이티브 검색이 수행될 수 있다). 재시도는 다양한 방식으로 수행될 수 있다. 예를 들어, 일부 실시예들에서, 버퍼는 (예를 들어, 스케줄러 또는 예약 스테이션) 실행을 위해 발행된 명령들을 저장할 수 있다. 메모리 동작은 버퍼로부터 재발행될 수 있다. 다른 실시예들에서, 메모리 동작에 대응하는 명령 및 후속 명령들은 (예를 들어, 명령 캐시 또는 메모리부터) 다시 가져올 수 있다.
일부 실시예들에서, 방향 예측기(14)의 사용은 데이터 캐시 태그 메모리(22)에서 전력 소모를 줄일 수 있다. 방향 예측을 유효화하기 위해, 예측된 방향에서의 태그만이 액세스되어 비교될 필요가 있다. 따라서, (만일 마이크로 태그에서 적중실패가 검출되고, 캐시 적중실패가 발생하는지 여부를 검출하기 위해 데이터 캐시 태그 메모리(22)에 액세스가 수행되는 경우에) 일부 실시예들은 데이터 캐시 태그 메모리(22)에서 예측된 방향으로만 액세스할 수 있다. 만일 예측된 방향에서 적중실패가 검출되는 경우에, 메모리 동작은 상술한 바와같이 재시도될 수 있다. 이러한 실시예들에서, 데이터 캐시 태그 메모리(22)는 도 1의 점선 화살에 의해 도시된 바와같이 방향 예측을 수신할 수 있다.
방향 예측기(14)는 또한 만일 소정의 메모리 동작 동안에 어떠한 방향 예측도 생성되지 않는 경우에 초기 적중실패 표시를 제공할 수 있다. 방향 예측기는 캐시의 각 방향에 저장된 주소 표시를 저장하는 메모리를 포함할 수 있으며, 이 표시를 메모리 동작의 가상 주소의 대응 표시에 비교하여 메모리 동작의 방향 예측을 생성할 수 있다. 만일 대응 표시가 방향 예측기의 임의의 표시들과 매칭되지 않는 경우에, 어떠한 방향 예측도 이루어지지 않는다(그리고, 적중실패가 검출될 수 있다). 초기 적중 실패 표시는 (L1 캐시의 역할을 하는 데이터 캐시(16)와 함께) L2 캐시에 암시(hint)로서 사용될 수 있으며, 이에 따라 데이터 캐시(16)에서 적중실패가 발생하며, 변환/필터 회로(18)로부터 캐시 적중실패를 기다리기보다는 L2 캐시가 이른 시간에 액세스를 시작하도록 허용한다.
데이터 캐시(16)는 캐시 적중실패를 표시할 수 있고, 변환/필터 회로(18)는 정확한 동작(예를 들어, TLB들에 저장되는 변환을 위치시키는 테이블 워킹(table walking), 적중실패된 캐시 라인을 데이터 캐시(16)에 채우는 캐시 채움(cache fill) 등)을 위해 프로세서(10)의 다른 회로에 TLB 적중실패를 표시할 수 있다. 테이블 워킹을 위한, 적중실패된 캐시 라인을 검색하도록 메모리에 액세스하기 위한 회로는 도 1에 도시되지는 않는다.
예시된 실시예에서, 데이터 캐시(160)는 세트 어소시에이티브가 될 수 있다. 다른 실시예들은 완전 어소시에이티브(fully associative)가 될 수 있으며, 방향 예측기(14)는 데이터 캐시(16)의 임의 엔트리에서 적중을 검출하는데 사용될 수 있다. 방향 예측기(14)를 구현하지 않는 실시예들은 다른 구성들(예를 들어, 다이렉트-맵핑)을 가질 수 있다. 본원에서 사용되는 바와같이, 캐시 라인은 캐시(예를 들어, 데이터 캐시 또는 명령 캐시)의 할당/할당해제 유닛인 다수의 연속 바이트들이 될 수 있다. 예를 들어, 캐시 라인은 32 연속 바이트들 또는 64 연속 바이트들이 될 수 있지만, 임의 크기의 캐시 라인이 구현될 수 있다. 데이터 캐시 데이터 메모리(20)는 복수의 엔트리들을 포함할 수 있으며, 각 엔트리는 캐시 라인을 저장한다. 세트 어소시에이티브 실시예들에 대해, 엔트리들은 W 캐시 라인 세트들로 배열될 수 있다. 데이터 캐시 태그 메모리(22)는 또한 복수의 엔트리들을 포함하며, 각 엔트리는 데이터 캐시 데이터 메모리(20)의 대응 엔트리에 대한 태그를 저장한다. 데이터 캐시 태그 메모리(22) 엔트리들은 데이터 캐시 데이터 메모리(20)에 대응하는 W 세트들로 배열될 수 있다.
일부 실시예들에서, 데이터 캐시(16)는 물리적으로 태그될 수 있다(즉, 데이 터 캐시 태그 메모리(22)의 태그들은 물리적 주소들이 될 수 있다). 일반적으로, 소정의 물리적 주소에 대응하는 데이터가 데이터 캐시(16)에 저장되는 경우에, 데이터 캐시(16)에서 적중이 검출될 수 있다. 만일 소정의 물리적 주소에 대응하는 데이터가 데이터 캐시(16)에 저장되지 않는 경우에, 적중실패가 검출된다. 하지만, 일부 경우들에서, 심지어 데이터 캐시(16)가 물리적으로 태그되는 경우에도 데이터 캐시(16)에서 적중하는 가상 주소를 논의하는 것이 편리할 수 있다. 만일 (가상 주소가 변환되는) 대응 물리적 주소가 적중하는 경우에, 가상 주소는 데이터 캐시(16)에서 적중될 수 있다. 일부 경우들에서, 가상 주소는 (예를 들어, 하기에서 더 상세히 논의되는 마이크로 태그에서) 대응 물리적 주소의 실질적인 사용없이 적중으로서 검출될 수 있다.
일반적으로, 프로세서(10)는 바람직한 설계에 따라 임의의 다른 회로를 포함할 수 있다. 다양한 실시예들에서, 프로세서(10)는 슈퍼스칼라 또는 스칼라로 구현될 수 있으며, 순서 명령 실행 또는 순서를 벗어난(out of order) 명령 실행 등으로 구현될 수 있으며, 상기 특징들을 구현하는 회로를 포함할 수 있다. 일부 실시예들에서, 예를 들어, 하나 이상의 AGU(12)가 제공될 수 있으며, 주소를 병렬로 생성할 수 있다. 방향 예측기(14), 데이터 캐시(16), 및 변환/필터 회로(18)는 이러한 실시예들을 위해 다중 가상 주소들을 병렬로 처리하는 회로를 포함하거나, 다중 가상 주소들을 다르게 처리하기 위한 회로를 포함할 수 있다.
전력 소모 감소를 제공하기 위해 방향 예측기(14)와 변환/필터 회로(18)의 마이크로TLB/마이크로 태그 특징들이 함께 사용되는 것으로 설명되지만은, 마이크 로TLB/마이크로 태그의 구현없이 방향 예측기(14)를 구현하는 실시예들이 고려된다. 부가적으로, (예를 들어, 방향 선택이 결정될 때까지 데이터 캐시(16)에서의 데이터 포워딩을 지연시킴으로써) 방향 예측기(14) 없이 마이크로TLB/마이크로 태그가 구현되는 실시예들이 고려된다. 예를 들어, 일부 실시예들에서, 마이크로 태그는 내부에서 검출되는 적중을 위해 방향 선택을 출력할 수 있다.
마이크로TLB/마이크로 태그 회로 및 방향 예측기(14)가 데이터 캐시와 함께 사용되는 것으로서 도시되지만, 바람직하게는, 임의의 마이크로TLB, 마이크로 태그, 및/또는 방향 예측기(14)가 명령 캐시와 함께 사용될 수 있다.
도 2를 참조하면, 변환/필터 회로(18)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 변환/필터 회로(18)는 마이크로TLB(30)(마이크로TLB 태그 회로(32)와 마이크로TLB 데이터 회로(34)를 포함함), 마이크로 태그 회로(36), 메인 TLB(38)(메인 TLB 태그 회로(40)와 메인 TLB 데이터 회로(42)를 포함함), 먹스(44) 및 인버터들(46 및 48)을 포함한다. 또한, 데이터 캐시 태그 메모리(22), 캐시 적중/실패 회로(50), 및 비교기(52)를 포함하는 데이터 캐시(16) 부분이 도 2에 도시된다. 마이크로TLB(30)(보다 구체적으로는, 마이크로TLB 태그 회로(32)), 마이크로 태그 회로(36), 데이터 캐시 태그 메모리(22), 및 메인 TLB(38)(보다 구체적으로는, 메인 TLB 태그 회로(40))가 AGU(12)로부터 가상 주소를 수신하도록 결합된다. 마이크로TLB 태그 회로(32)는 적중 신호를 마이크로TLB 데이터 회로(34), 마이크로 태그 회로(36), 먹스(44), 및 인버터(46)(또한, 메인 TLB 태그 회로(40)에 결합됨)에 출력한다. 마이크로TLB 태그 회로(32)는 또한 엔트리 표시를 마이크로TLB 데이 터 회로(34) 및 마이크로 태그 회로(36)에 출력한다. 마이크로 TLB 데이터 회로(34)는 메인 TLB 데이터 회로(42)와 같이 물리적 주소(PA)를 먹스(44)에 출력한다. 먹스(44) 출력은 비교기(52)에 결합된다. 메인 TLB 태그 회로(40)는 메인 TLB 데이터 회로(42)에 결합되며, TLB 적중실패 표시를 제공한다. 마이크로 태그 회로(36)는 적중 신호를 인버터(또한, 데이터 캐시 태그 메모리(22)에 결합됨)와 캐시 적중/실패 회로(50)에 출력한다. 캐시 적중/실패 회로(50)는 또한 비교기(42)에 결합되며, 캐시 적중실패 표시를 제공한다.
마이크로TLB(30)는 AGU(12)로부터 가상 주소를 수신하며, 가상 주소의 페이지 부분을 마이크로TLB(30)에 저장되는 변환들에 대응하는 가상 주소들의 페이지 부분들과 비교한다. 보다 구체적으로는, 마이크로TLB 태그 회로(32)는 가상 주소들의 페이지 부분들을 저장하는 복수의 엔트리들을 포함할 수 있다. 대응 물리적 주소들 및 변환을 제공한 페이지 테이블들로부터의 다른 정보는 마이크로TLB 데이터 회로(34)에 저장될 수 있다. 마이크로TLB 태그 회로(32)는 비교를 수행하며, 가상 주소가 마이크로TLB에서 적중하는지 여부를 표시하는 적중 신호를 출력하며, 만일 적중이 표시되는 경우에, 엔트리 표시는 엔트리가 적중되는지를 표시한다. 마이크로TLB 데이터 회로(34)는 엔트리 표시를 수신하며, 대응 물리적 주소를 먹스(44)에 출력할 수 있다. 적중 신호는, 먹스(44)가 비교기(52)에 대한 출력으로서 마이크로TLB(30)로부터 물리적 주소를 선택하게 한다. 전체 어소시에이티브 실시예가 본원에서 더 상세히 도시되지만은, 다른 실시예들은 다른 구성들을 이용할 수 있다. 다양한 실시예들에서, 마이크로TLB(30)는 예를 들어, 전체 어소시에이티브, 세트 어 소시에이티브, 또는 다이렉트-맵핑 구성을 가질 수 있다.
부가적으로, 마이크로TLB(30)로부터의 적중 신호는 마이크로 태그 회로(36)에 인에이블(enable) 역할을 한다. 마이크로 태그 회로(36)는, 마이크로TLB(30)가 변환들을 저장하는 가상 페이지들 내의 복수의 캐시 라인들에 대한 태그들을 저장할 수 있다. 따라서, 마이크로TLB에 적중실패가 있는 경우에, 마이크로 태그 회로(36)는 또한 적중실패한다. 만일 마이크로TLB에 적중이 있는 경우에, 마이크로 태그 회로(36)가 적중하는 것이 가능하다. 부가적으로, 마이크로 태그 회로(36)는 엔트리 표시를 수신한다. 마이크로 태그 회로(36)는 가상 주소에 대해 마이크로 태그 회로(36)에서의 적중 여부를 결정하고, 적중 신호를 생성한다. 만일 마이크로 태그 회로(36)에서 적중이 있는 경우에, 가상 주소는 데이터 캐시(16)에서 적중하며, 데이터 캐시 태그 메모리(22)에서 태그 액세스는 방지될 수 있다. 따라서, 마이크로 태그 회로(36)에서의 적중 신호는 데이터 캐시 태그 메모리(22)에 대한 디스에이블(disable) 역할을 하며, 데이터 캐시 태그 메모리(22)가 가상 주소에 응답하여 임의의 태그들을 판독하는 것을 방지한다. 따라서, 인버터(48)는 마이크로 태그 회로(36)에서의 적중 신호를 반전시키며, 인에이블로서 출력을 데이터 캐시 태그 메모리(22)에 제공할 수 있다. 캐시 적중/실패 회로(50)는 또한 마이크로 태그 회로(36)에서의 적중 신호를 수신하며, 적중 신호가 마이크로 태그 회로(36)에서 적중을 표시하는 경우에 가상 주소에 대한 캐시 적중실패를 표시하지 않을 수 있다. 이 경우에, 비교기(52)에서의 적중/실패는 무시될 수 있다.
만일 마이크로 태그 회로(36)에서 적중실패가 있는 경우에(또는 마이크로TLB 회로(30)에서의 적중실패로 인하여 마이크로 태그 회로(36)가 인에이블 되지 않는 경우에), 데이터 캐시 태그 메모리(22)는 인에이블되며, 태그 또는 태그들을 비교기(52)에 출력한다. 방향 예측기(14)를 구현하는 일부 실시예들에서, 예측된 방향에서의 태그만이 출력될 수 있다. 데이터 캐시 태그 메모리(22)는 이러한 실시예를 위한 방향 예측(WP)을 수신하도록 결합될 수 있다. 다른 실시예들은 각 태그를 비교를 위해 색인된 세트로 출력할 수 있다. 이러한 실시예들에서, 캐시 적중실패 표시는 적중실패를 표시하거나, 예측된 방향에서 적중실패이지만 예측되지않은 방향에서 적중을 표시할 수 있으며, 이에 따라 예측하지않은 방향에서 적중이 발생하는 경우에 캐시 채움은 발생하지 않는다. 일부 실시예들에서, 캐시 적중실패가 발생하는 때에 대체 방향의 선택은 예측하지않은 방향에서 적중이 발생하지 않도록 제어될 수 있다. 이러한 대체의 예는 하기에서 도 9 및 10을 참조하여 논의된다. 비교기(52)는 비교 결과를 캐시 적중/실패 회로(50)에 제공하는데, 여기서 (50)은 이에 따라 캐시 적중실패 표시를 생성한다. 만일 데이터 캐시 태그 메모리(22)에서 적중이 있으며, 마이크로TLB(30)에서 적중이 있었던 경우에, 마이크로 태그 회로(36)는 데이터 캐시 태그 메모리(22)에서의 태그로 로딩(loading)될 수 있다.
마이크로 태그 회로(36)가 데이터 캐시 태그 메모리(22)에서도 있는 태그들을 저장하기 때문에, 마이크로 태그 회로(36)는 데이터 캐시 태그 메모리(22)와 코히어런트(coherent)로 유지될 수 있다. 캐시 라인은 적중실패한 캐시 라인의 캐시 채움에 의한 대체로 인하여 데이터 캐시(16)에서 무효화 되거나, 다른 프로세서 또는 프로세서(10)가 결합되는 상호연결 상의 에이전트(agent)에 의한 액세스로부터 생성되는 스누프 비트(snoop bit)로 인하여 무효화 될 수 있다. 일 실시예에서, 마이크로 태그 회로(36)의 전체 콘텐츠는 데이터 캐시 태그 메모리(22)에서의 갱신에 응답하여 무효화 될 수 있다. 대안적으로, 갱신이 발생하는 색인과 동일 캐시 색인을 갖는 마이크로 태그 회로(36)의 엔트리들만이 무효화 될 수 있다. 또 다른 대안에서, (ⅰ)갱신이 발생하는 색인과 동일 캐시 색인; 및 (ⅱ) 데이터 캐시(16)에서 무효화 되는 캐시 라인과 (대응 마이크로TLB 엔트리에서) 동일한 가상 주소를 갖는 마이크로 태그 회로(36)의 엔트리들만이 무효화 될 수 있다.
마이크로 태그 회로(36)는 마이크로TLB(30)의 엔트리들에 의해 변환되는 가상 페이지들 내에 태그들을 저장한다. 따라서, 마이크로TLB(30)가 갱신되는 때에, 마이크로 태그는 또한 갱신될 수 있다. 일 실시예에서, 마이크로TLB(30)가 갱신되는 경우에, 마이크로 태그 회로(36)의 전체 콘텐츠는 무효화 될 수 있다. 대안적으로, 변경되는 마이크로TLB 엔트리들에 대응하는 마이크로 태그 회로(36)의 태그들의 선택적 무효화가 구현될 수 있다.
마이크로TLB(30)는 또한 메인 TLB(30)에 대한 필터 역할을 한다. 즉, 마이크로TLB(30)에 적중이 있는 경우에, 메인 TLB(38)에 액세스가 방지된다. 따라서, 마이크로TLB(30)에 의한 적중 신호 출력은 인버터(46)에 의해 반전되어, 메인 TLB 태그 회로(40)의 인에이블 입력에 입력될 수 있다. 메인 TLB 태그 회로(40)는 인에이블 입력이 어서트(assert)되지 않는 경우에 메인 TLB 태그들에 액세스를 방지할 수 있다.
만일 마이크로TLB(30)에 적중실패가 있는 경우에, 메인 TLB 태그 회로(40)는 가상 주소가 메인 TLB(38)에서 적중이 있는지를 결정할 수 있다. 만일 적중이 있는 경우에, 메인 TLB 데이터 회로(42)는 대응 물리적 주소를 먹스(44)에 출력하도록 액세스될 수 있다. 부가적으로, 마이크로TLB(30)는 메인 TLB(38)에서의 변환으로 로딩될 수 있다. 마이크로TLB(30)에서 적중실패가 있기 때문에, 먹스(44)는 메인 TLB 데이터 회로(42)에 의한 물리적 주소 출력을 비교기(52)에 대한 출력으로서 선택한다. 메인 TLB(38)가 인에이블되고, 메인 TLB(38)에서의 적중실패가 검출되는 경우에, 메인 TLB(38)는 TLB 적중실패 표시를 생성하여, 바람직한 변환을 위치시키는 페이지 테이블들의 테이블 워크를 발생한다. 일부 실시예들에서, 테이블 워크 동안에, 프로세서(10)는 동작을 중지시켜 전력 소모를 줄일 수 있다. 일 실시예에서, 메인 TLB(38)가 로딩되는 때에 마이크로TLB(30)는 로딩되지 않을 수 있다. 마이크로TLB(30)가 로딩되는 때에, 마이크로TLB(30)에서 페이지에 대한 후속 적중실패가 검출될 수 있으며, 메인 TLB(30)에서 적중이 검출될 수 있다. 대안적으로, 마이크로TLB(30)는 메인 TLB(38)가 로딩되는 때와 동일한 시간에 로딩될 수 있다.
마이크로TLB(30)가 메인 TLB(38)에 또한 저장되는 변환들을 저장하기 때문에, 마이크로TLB(30)는 메인 TLB(38)와 코히어런트로 유지될 수 있다. (메인 TLB(38) 적중실패 및 성공적인 테이블 워크에 응답하여) 엔트리가 메인 TLB(38)에 겹쳐쓰여지는(overwrite) 때에, 대응 엔트리는 (만일 있다면) 마이크로TLB(30)에서 무효화될 수 있다. 일 실시예에서, 마이크로TLB(30)의 전체 콘텐츠는 메인 TLB(38)가 새로운 엔트리로 로딩되는 때에 무효화될 수 있다.
일 실시예에서, 메인 TLB(38)는 두 TLB들: 4 킬로바이트 페이지-크기 변환들 을 저장하는 것과 2 메가바이트 또는 4 메가바이트 페이지-크기 변환들을 저장하는 다른 것을 포함할 수 있다. 4 킬로바이트 TLB는 임의 구성을 포함할 수 있지만, 일 구현에서, 4-방향 512 엔트리 TLB가 될 수 있다. 2 메가바이트/4 메가바이트 TLB는 임의 구성을 포함할 수 있지만, 일 예에서, 8 엔트리, 완전 어소시에이티브 TLB가 될 수 있다. x86 명령 세트 아키텍처를 구현하는 일 실시예에서, CR3 구성 레지스터는 메모리에 페이지 테이블들의 기본 주소를 저장한다. 메인 TLB(38)의 엔트리들은 변환이 읽혀지는 CR3 주소로 태그될 수 있으며, 이에 따라 메인 TLB(38)는 CR3 주소 변경들에 응답하여 무효화될 필요가 없다. 마이크로TLB(30)의 엔트리들은 일부 실시예들에서 유사하게 태그될 수 있거나, 태그되지 않으며, 대신에 CR3 주소 변경에 응답하여 무효화될 수 있다.
적중 신호들이 마이크로TLB(30)와 마이크로 태그 회로(36)에 의해 제공되는 것으로서 설명되지만은, 일반적으로 적중이 검출되는지 여부를 표시하는 임의 개수의 신호들을 포함하는 적중 표시가 제공될 수 있다. 더욱이, 마이크로TLB(30)가 적중 표시와 적중되는 엔트리를 식별하는 엔트리 표시를 출력하는 것으로서 도시되지만, 임의의 적중 및 엔트리 표시가 제공될 수 있다. 예를 들어, 일 실시예에서, 적중 및 엔트리 표시들은 마이크로TLB(30)의 엔트리들에 대응하는 하나의-핫 엔코딩(one-hot encoding)으로 통합될 수 있다. 하나의-핫 엔코딩은 어서트되는 임의의 비트로 적중이 있음을 표시할 수 있으며, 비트가 어서트되는 적중이 있는 엔트리를 표시할 수 있다.
일부 실시예들에서, 변환/필터 회로(18)는 여러 파이프라인 스테이지들에 걸 쳐 동작할 수 있다. 파이프라인 저장 장치들(예를 들어, 플롭(flop)들, 레지스터들 등)은 도 2에 도시되지 않는다. 파이프라인 스테이지들로의 임의의 분할이 사용될 수 있다. 예를 들어, 도 3은 프로세서(10)의 일 실시예에 의해 구현될 수 있는 파이프라인의 일 예를 도시한다. 수직 점선들은 도 3의 클록 사이클들의 한계를 정한다. 클록 사이클들은 AG(주소 생성), DC1(데이터 캐시 1), DC2(데이터 캐시 2), 및 DC3(데이터 캐시 3)로 라벨(label)된다.
AG 스테이지 동안에, AGU(12)는 주소 동작들로부터 가상 주소(참조 번호 60)를 생성한다. 추가적으로, 본 실시예에서, 방향 예측기(14)는 방향 예측(참조번호 62)을 생성한다. 방향 예측기(14)는 주소 피연산자들을 수신하며, 방향 예측 값들을 저장하는 메모리에 주소지정을 위해 합산 주소 색인(하기에서 더 상세히 설명됨)을 수행할 수 있다. 대안적으로, AGU(12)로부터의 가상 주소는 방향 예측 메모리를 색인하는데 사용될 수 있다. 다른 실시예들에서, 방향 예측기(14)는 DC1 스테이지에서 동작할 수 있다.
DC1 스테이지 동안에, 마이크로TLB 태그 회로(32)가 액세스되며, 마이크로TLB(30)의 적중/실패가 결정된다(참조번호 64). 만일 마이크로TLB(30)에 적중이 있는 경우에, 마이크로 태그 회로(36)는 DC2 스테이지에서 액세스되며(참조번호 66), 마이크로TLB 데이터 회로(34)는 DC3 스테이지 동안에 액세스된다(참조번호 68). 만일 마이크로 태그 회로(36)에 적중이 있는 경우에, 데이터 캐시 태그 액세스를 피할 수 있으며, 데이터 캐시(16)에서의 적중은 마이크로 태그 회로(36)의 적중을 통해 검출된다. 만일 마이크로 태그 회로(36)에서 적중실패가 있는 경우에, 데이터 캐시 태그 메모리(22)가 DC3 스테이지에서 액세스되며(참조번호 70), 마이크로TLB 데이터 회로(34) 출력에 비교된다.
만일 마이크로TLB(30)에 적중실패가 있는 경우에, 메인 TLB 태그 회로(40)가 DC2 스테이지 동안에 액세스되며(참조번호 72), 만일 메인 TLB 태그 회로(40)에 적중이 있는 경우에, TLB 데이터 회로(42)가 DC3 스테이지에서 액세스된다(참조 번호 74). TLB 데이터 회로(42) 출력은 DC3 스테이지에서 데이터 캐시 태그 메모리(22) 출력에 비교된다.
부가적으로 DC1 스테이지 동안에, 데이터 캐시 데이터 메모리(20)가 액세스되며, 예측된 방향에서의 데이터가 출력된다(참조번호 76). 데이터는 DC2 스테이지에서 포워딩된다(참조번호 78).
도 4를 참조하면, 마이크로TLB 태그 회로(32)의 일 실시예의 블록도가 도시된다. 도 4의 실시예에서, 마이크로TLB 태그 회로(32)는 엔트리들(80A 및 80B)을 포함하는 엔트리들 세트(각각이 엔트리들(80A 및 80B)에 결합한 비교 회로들(82A 및 82B)에 대응함), 엔트리들(80A 및 80B)에 결합한 제어 회로, 및 비교 회로들(82A 및 82B)을 포함한다. 비교 회로들(82A 및 82B)은 AGU(12)에서의 가상 주소를 수신하도록 결합된다. 제어 회로(84)는 최근 최소 사용(LRU: least recently used) 저장소(86)를 포함하며, 마이크로TLB 태그 회로(32)의 적중 신호 및 엔트리 표시 출력들을 생성한다.
마이크로TLB 태그 회로(32)는 임의 개수의 엔트리들(80A-80B)을 포함할 수 있다. 예를 들어, 4 엔트리들이 일 실시예에서 구현될 수 있다. 다른 실시예들은 보다 다수의 또는 소수의 엔트리들을 구현할 수 있다. 각 엔트리(80A-80B)는 유효 비트(V), 엔트리(및 마이크로TLB(30)의 엔트리를 함께 형성하는 마이크로TLB 데이터 회로(34)의 대응 엔트리)에 의해 변환되는 가상 주소의 페이지 부분을 저장하는 가상 주소 필드(VA[N-1:12]), 및 변환이 2 메가바이트 페이지 변환으로부터 유도되는지 여부를 표시하는 2M 비트를 포함할 수 있다. 따라서, N-비트 가상 주소가 본 발명에서 사용되는데, 여기서 N은 정수이다. 예를 들어, N은 일부 실시예들에서 32가 될 수 있다. 다른 실시예들에서, N은 48이 될 수 있다. 다른 실시예들에서, N은 32 내지 64를 포함하는 임의의 정수가 될 수 있다. 일반적으로, 엔트리들은 임의 타입의 저장소를 포함할 수 있다. 예를 들어, 레지스터들, 플립-플롭들, 또는 다른 타입들의 클록 저장 장치들이 일 실시예에서 사용될 수 있다.
비교 회로들(82A-82B)은 AGU(12)로부터 가상 주소의 적어도 페이지 부분을 수신하며, 가상 주소의 페이지 부분을 대응 엔트리(80A-80B)에 저장된 페이지 부분과 비교한다. 예시된 실시예는 4 킬로바이트의 최소 페이지 크기를 구현하며(따라서, 11:0 비트들은 가상 주소의 페이지 부분에 포함되지 않는다), 또한 x86 명령 세트 아키텍처와의 호환을 위해 2 메가바이트 페이지 크기를 구현한다. 다른 페이지 크기들이 구현될 수 있다. 예시된 실시예에서, 비교 회로들(82A-82B)은 두 매칭 신호들: match_lower 및 match_upper를 생성한다. 만일 유효 비트가 엔트리에 세팅되며, 2M 페이지 영역에 포함되는 가상 주소들의 부분이 매칭하는(즉, VA[N-1:21]) 경우에, match_upper가 어서트된다. 만일 가상 주소들의 나머지가 매칭하는(즉, VA[20:12]) 경우에, match_lower가 어서트될 수 있다.
제어 회로(84)는 비교 회로들(82A-82B)의 출력들을 수신하도록 결합되며, 이에 응답하여 적중 신호와 엔트리 표시를 생성한다. 만일 적중이 엔트리들 중 하나에서 표시되는 경우에, 제어 회로(84)는 적중 신호를 어서트하며, 엔트리 표시를 제공할 수 있다. 만일 적중이 표시되지 않는 경우에, 제어 회로(84)는 적중 신호를 어서트하지 않을 수 있다.
도 5는 엔트리가 가상 주소에 의해 적중되는지를 결정하기 위한 제어 회로(84)에 의해 구현될 수 있는 진리표(90)의 일 실시예이다. 표(90)에서, 엔트리로부터의 2M 비트(본 실시예에서, 2M 변환을 표시하도록 세팅됨), match_upper 및 match_lower 신호들(어서트됨을 표시하는 표(90)에서 일(1)과 어스트되지 않음을 표시하는 제로(0)를 가짐), 2M 비트, match_upper 신호 및 match_lower 신호의 각 조합이 표시하는 것을 진술하는 결과 칼럼이 도시된다.
만일 match_upper 신호가 어스트 해제되는 경우에, 제어 회로(84)는 가상 주소에 대한 마이크로TLB 적중실패를 검출한다. 마이크로TLB는 2M 비트 세팅과 match_lower 신호 상태에 상관없이 적중실패한다. 따라서, 마이크로 태그 회로(36)는 또한 적중실패한다.
2M 비트가 세팅되는 경우에, 2 메가바이트 페이지에 대한 대응 변환이 있게 된다. 따라서, VA[20:12]는 일반적으로 비교에서 포함되지 않을 것이다. 하지만, 마이크로 태그 회로(36)에 비트들을 제공하기 위해, 이 비트들은 2 메가바이트 페이지 내의 프로세서(10)에 의해 액세스되는 최후 4 킬로바이트 페이지가 되도록 정의될 수 있다. 만일 match_upper 신호가 어서트되는 경우에, 2M 비트가 세팅되며, 마이크로TLB가 적중한다. 하지만, match_lower 신호가 어서트 해제되는 경우에, 마이크로 태그 회로(36)는 이 페이지에 대해 적중실패한다. 만일 match_lower 신호가 어서트되는 경우에, 마이크로 태그 회로(36)는 적중할 수 있으며, 이에 따라 마이크로 태그 검색이 수행된다.
만일 2M 비트가 소거되는 경우에, 4 킬로바이트 페이지에 대한 대응 변환이 있게 된다. 따라서, match_upper 및 match_lower 모두가 마이크로TLB 적중(및 가능한 마이크로 태그 적중, 이에 따라 마이크로 태그 검색이 수행됨)을 표시하도록 어서트된다. 만일 match_lower가 어서트되지 않는 경우에, 마이크로TLB 및 마이크로 태그 적중실패가 검출된다.
도 5의 실시예를 구현하는 제어 회로(84)에 대하여, 마이크로 태그 회로(36)에 제공되는 적중 표시는 메인 TLB(38)에 제공되는 적중 표시와 다를 수 있다. 메인 TLB(38)에 대한 적중 표시는, 심지어 마이크로 태그 회로(36)가 적중실패하는 경우에도, 변환이 적중(마이크로TLB 적중을 진술하는 표(90)의 엔트리들)하는 한 마이크로TLB(30)의 적중을 표시할 수 있다. 마이크로 태그 회로(36)에 대한 적중 표시는, 만일 마이크로 태그 검색(마이크로 태그 검색을 진술하는 표(90)의 엔트리들)이 표시되는 경우에 적중을 표시할 수 있다.
도 4 및 5의 실시예는 두개의 다른 페이지 크기들을 지원한다. 다른 실시예들은 단일 페이지 크기를 지원하며, 이에 따라 각 비교 회로들(82A-82B)로부터의 단일 매칭 신호가 제공될 수 있으며, 2M 비트는 엔트리들(80A-80B)로부터 제거될 수 있다. 다른 실시예들은, 지원되는 페이지 크기들에 따라 가상 주소의 페이지 부 분을 더 나눔으로써 두개 이상의 페이지 크기들을 지원할 수 있다. x86 명령 세트 아키텍처는 또한 4 메가바이트 명령 크기를 지원한다. 도 4 및 5의 실시예는 마이크로TLB(30)의 두개의 2 메가바이트 엔트리들을 사용하여 4 메가바이트 페이지 크기를 지원할 수 있다. 다른 실시예들은 (예를 들어, 2M 비트에 유사한 각 엔트리의 4M 비트를 사용하여) 4 메가바이트 페이지 크기를 직접 지원할 수 있다.
상기 실시예가 2 메가바이트 페이지에 대한 엔트리를 사용하여 2 메가바이트 페이지 크기를 지원하고, VA[20:12]를 사용하여 2 메가바이트 페이지 내의 가장 최근에 액세스된 4 킬로바이트 페이지를 식별하지만은, 다른 실시예들은 소정의 2 메가바이트 페이지에 대한 다중 마이크로TLB 엔트리들을 허용할 수 있다. 엔트리들 각각은 액세스된 다른 4 킬로바이트 페이지들에 대해 VA[20:12]에서 다른 엔코딩을 가질 수 있다. 또 다른 대안에서, VA[20:12]는 2 메가바이트 페이지들을 위한 마이크로 태그 회로(36)에 포함될 수 있으며, 2 메가바이트 페이지 상의 적중은 2 메가바이트 페이지 내의 캐시 라인에 대한 적중을 검출하기 위해 마이크로 태그에 액세스하는데 사용될 수 있다.
마이크로TLB(30)에서의 적중실패와 메인 TLB(38)에서의 적중의 경우에, 제어 회로(84)는 메인 TLB(38)로부터의 적중 변환으로 대체될 엔트리(80A-80B)를 선택할 수 있다. 예시된 실시예에서, 제어 회로(84)는 엔트리들(80A-80B)의 LRU를 유지할 수 있고, 대체를 위해 최근 최소 사용 엔트리를 선택할 수 있다. 임의의 다른 대체 알고리즘(예를 들어, 유사-LRU, 랜덤 등)이 구현될 수 있다. 엔트리들(80A-80B)은 제어 회로(84)의 제어하에서 엔트리들 중 하나에 저장되는 2M 비트 및 가상 주소 (VA[N-1:12])의 입력 페이지 부분(도 4에 도시되지 않은 입력 주소 및 2M 비트)을 수신하도록 결합될 수 있다. 입력 가상 주소와 2M 비트의 소스는 다양한 실시예들에서 메인 TLB(38) 또는 테이블 워크 회로가 될 수 있다.
도 6은 마이크로TLB 데이터 회로(34)의 일 실시예의 블록도이다. 도 6의 실시예에서, 메인 TLB 데이터 회로(34)는 엔트리들(92A-92B)을 포함하는 엔트리들 세트를 포함한다. 엔트리들(92A-92B) 각각은 도 4의 엔트리들(80A-80B) 각각에 대응한다. 부가적으로, 엔트리들(92A-92B)에 결합되며, 마이크로TLB 태그 회로(32)로부터 엔트리 표시를 수신하는 먹스(94)가 도시된다. 먹스(94)는 출력을 위해 엔트리 표시에 의해 표시되는 엔트리의 콘텐츠를 선택할 수 있다. 일 구현에서, 어떠한 엔트리도 표시되지 않는(즉, 적중실패되는) 경우에, 먹스(94)에 의해 어떠한 엔트리(92A-92B)도 선택되지 않는다(이는 전력 소모를 줄일 수 있다). 도 4의 엔트리들(80A-80B)에 유사하게도, 엔트리들(92A-92B)은 임의 타입의 저장소(예를 들어, 일 실시예에서 다양한 클록 저장 장치들)로 구현될 수 있다.
예시된 실시예에서, 각 엔트리(92A-92B)의 콘텐츠는 더티 비트(dirty bit)(D), 사용자/감독자(U/S) 비트, 판독/기록(R/W) 비트, 메모리 타입 필드(MemType[4:0}), 및 물리적 주소 필드(PA[M-1:12])를 포함한다. 일 실시예에서, 비트들은 x86 명령 세트 아키텍처에서 정의된 페이징 메커니즘과 호환 가능하다. 더티 비트는 물리적 페이지가 수정되었는지 여부(예를 들어, 프로세서가 페이지에 저장 명령을 실행하였는지 여부)를 표시할 수 있다. 사용자/감독자 비트는 감독자 (특권화된 페이지)에 대한 사용자 (특권없는) 페이지들을 표시할 수 있다. 판독/기 록 비트는 페이지가 판독-전용인지 또는 판독/기록인지를 표시할 수 있다. 메모리 타입 필드는 메모리 타입이 페이지에 대해 사용되는지를 식별할 수 있다.
예시된 실시예에서, M 비트 물리적 주소가 지원된다. M은 임의의 정수가 될 수 있다. 특히, M은 N과는 다를 수 있다. 일 구현에서, M은 32 내지 64를 포함하는 임의의 정수가 될 수 있다. 다른 구현에서, M은 32 내지 52를 포함하는 임의의 정수가 될 수 있다. 예를 들어, 일 특정 구현에서, M은 40이 될 수 있다.
도 7을 참조하면, 마이크로 태그 회로(36)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 마이크로 태그 회로(36)의 복수의 엔트리들은 엔트리들의 그룹으로 나뉘어진다. 각 엔트리 그룹들은 다른 마이크로TLB 엔트리에 할당된다. 예를 들어, 예시된 실시예에서, 그룹들(100A 내지 100D)이 마이크로TLB(30)의 네 엔트리들에 대응하여 도시된다. 다른 실시예들은 임의 개수의 엔트리들에 대응하는 임의 개수의 그룹들을 포함할 수 있다. 그룹들(100A 내지 100D)이 제어 회로(102)에 결합되며, 여기서 (102)는 인에이블 입력(En)(마이크로TLB 태그 회로(32)로부터의 적중 신호), 마이크로TLB 태그 회로(32)로부터의 엔트리 표시, AGU(12)로부터의 가상 주소를 수신하도록 결합된다. 제어 회로(102)는 마이크로 태그 회로(36)에 의한 적중 표시 출력을 생성한다.
선택된 그룹(100A 내지 100D)의 엔트리들은 마이크로TLB 태그 회로(32)의 엔트리들 중 하나에 할당되며, 데이터 캐시(16)에 또한 저장되는 이 엔트리에 의해 표시되는 가상 페이지의 캐시 라인들을 식별한다. 임의 개수의 엔트리들이 그룹에 포함될 수 있다. 예를 들어, 일 실시예에서, 네 엔트리들이 각 그룹에 포함될 수 있다. 마이크로TLB 적중이 검출되는 경우 마이크로 태그 회로(36)가 액세스되기 때문에, VA[N-1:12]가 AGU(12)로부터의 가상 주소 및 선택된 그룹(100A 내지 100D)에서 나타나는 캐시 라인들의 가상 주소에 매칭됨이 알려진다. 따라서, 가상 태그 비교를 완료하기 위해, 선택된 그룹(100A 내지 100D)의 엔트리들은 가상 주소의 페이지 오프셋 부분(캐시 라인 오프셋을 형성하는 주소 비트들을 배제함)을 저장할 수 있다. 예시된 실시예에 대해, 64 바이트의 캐시 라인 크기가 가정되며, 따라서 5:0 주소 비트들이 배제된다. 다른 실시예들에서, 다른 캐시 라인 크기들이 선택될 수 있다. 따라서, 가상 태그 비교를 완료하기 위한 잔여 가상 주소 비트들은 본 실시예에 대해 VA[11:6]이며, 각 마이크로 태그 엔트리는 도 7에 도시된 바와같이 VA[11:6]을 저장한다.
만일 인에이블 입력이 어서트되는 경우에, 제어 회로(102)는 각 엔트리로부터의 주소 비트들(VA[11:6])을 AGU(12)로부터의 가상 주소의 대응 비트들에 비교할 수 있다. 따라서, 제어 회로(102)는 AGU(12)로부터의 가상 주소의 적어도 페이지 오프셋 부분(캐시 라인 오프셋 비트들을 배제함)을 수신하도록 결합될 수 있다. 만일 선택된 그룹(100A 내지 100D) 내의 엔트리들에서 매칭이 검출되며, 이 엔트리의 유효 비트(V)가 세팅되는 경우에, 가상 주소는 마이크로 태그 회로(36)에서 적중되며, 따라서 데이터 캐시(16)에서 적중이 있게 된다. 적중/실패를 결정하기 위해, 데이터 캐시 태그 메모리(22)는 액세스될 필요가 없다. 반면에, 선택된 그룹(100A 내지 100D) 내의 엔트리들에서 매칭이 검출되지 않는 경우에, 데이터 캐시(16)에서 주소가 적중 또는 실패인지를 결정하기 위해, 데이터 캐시 태그 메모리(22)가 액세 스될 수 있다. 제어 회로(102)는 비교 결과들에 따라 적중 신호를 생성한다.
만일 데이터 캐시(16)가 물리적으로 태그되며(즉, 데이터 캐시 태그 메모리(22)가 가상 태그들보다는 물리적 태그들을 저장하며), 적어도 하나의 변환된 주소 비트가 데이터 캐시(16)에 대한 색인에서 사용(예를 들어, 4 킬로바이트 페이지 실시예에서, 적어도 비트 12가 사용됨)되는 경우에, 다중 가상 주소들의 동일한 물리적 주소에 대한 에일리어싱(aliasing)이 마이크로 태그 회로(36) 동작에 영향을 미칠 수 있다(이는 색인이 비교에 사용된 가상 주소 비트들과 다르기 때문이다). 이러한 하나의 실시예에서, 데이터 캐시(16)가 물리적으로 태그될 수 있지만, 프로세서(10)는 동일 물리적 주소에 에일리어싱된 기껏해야 하나의 가상 주소가 소정의 시간에 데이터 캐시(16)에 저장됨을 보장할 수 있다. 즉, 만일 제 1 에일리어싱이 여전히 캐시에 상주하는 동안에 제 2 에일리어싱이 데이터 캐시(16)로 로딩되는 경우에, 제 1 에일리어싱은 데이터 캐시(16)에서 무효화 된다.
캐시 색인이 적어도 하나의 변환된 주소 비트를 포함하는 일부 실시예들에서, 마이크로 태그 회로(36)는 캐시 색인에 포함되는 각 주소 비트를 저장할 수 있으며, 변환된 주소 비트들은 물리적 비트가 될 수 있다. 만일 (예를 들어, 데이터 캐시(16) 콘텐츠 또는 마이크로TLB(30) 콘텐츠의 변경들에 응답하여) 모든 엔트리들의 무효화가 바람직하지 않은 경우에, 이러한 비트들의 저장은 마이크로 태그 회로(36) 엔트리들의 표적(target) 무효화를 허용할 수 있다.
마이크로TLB(30)에서의 적중, 마이크로 태그 회로(36)에서의 적중실패, 데이터 캐시 태그 메모리(22)에서의 적중인 경우에, 대응 그룹(100A 내지 100D)의 엔트 리들 중 하나는 적중 태그로 대체될 수 있다. 제어 회로(102)는 각 그룹(100A 내지 100D) 내의 LRU 정보(각 엔트리에서 LRU 필드로 도시됨)를 유지할 수 있는데, 이 정보는 대체를 위해 선택된 그룹(100A 내지 100D) 내의 LRU 엔트리를 선택하는데 사용될 수 있다. 다른 실시예들은 다른 대체 방식들(예를 들어, 랜덤, 유사-LRU 등)을 이용할 수 있다. 일부 실시예들에서(도 7에 도시되지 않음), 그룹들(100A 내지 100D)은 적중실패 인덱스를 마이크로 태그 회로(36)에 저장하기 위해 데이터 캐시(16)로부터 VA[11:6]를 수신하도록 결합될 수 있다.
예시된 실시예에서, 마이크로 태그 회로(36)의 엔트리들이 마이크로TLB 엔트리들에 정적으로 할당되는 반면에, 다른 실시예들에서, 엔트리들은 각 마이크로TLB 엔트리에 필요한 때에 동적으로 할당될 수 있다. 이러한 실시예에서, 마이크로TLB 엔트리 필드는 각 마이크로 태그 엔트리에 포함될 수 있으며, 마이크로 태그 엔트리가 현재 할당되는 마이크로TLB 엔트리 표시를 저장한다. 제어 회로(102)는 엔트리 표시를 액세스 동안에 마이크로TLB(30)로부터 수신된 표시에 비교하며, 만일 엔트리 표시가 매칭되며, VA[11:6] 필드가 AGU(12)로부터의 가상 주소의 대응 부분에 매칭되는 경우에 적중을 검출할 수 있다.
본 실시예에서, 마이크로 태그 회로(36)가 마이크로TLB와 함께 사용되지만은, 다른 실시예들은 마이크로TLB 없이 마이크로 태그 회로(36)를 구현할 수 있다. 이러한 실시예들은 마이크로 태그 회로(36)의 각 엔트리에 전체 태그들을 구현하며, 캐시 적중을 검출하며, 전체 태그를 비교함으로써 데이터 캐시 태그 메모리(22)의 판독을 방지할 수 있다. 적중이 마이크로 태그 회로(36) 또는 데이터 캐시 태그 메모리(22)에서 검출되면, 데이터는 데이터 캐시 데이터 메모리(20)로부터 포워딩될 수 있다.
대안 실시예에서, 마이크로 태그 회로(36)는 마이크로TLB 엔트리당 단일 엔트리를 포함할 수 있다. 마이크로 태그 엔트리는 마이크로TLB 엔트리에 의해 식별되는 페이지 내에 캐시 라인당 한 비트를 저장할 수 있으며, 이는 캐시 라인이 데이터 캐시(16)에서 적중인지 여부를 표시한다. 따라서, 예를 들어, 만일 캐시 라인들이 64 바이트이며, 4 킬로바이트가 사용되는 경우에, 마이크로 태그 엔트리는 64 비트들을 포함할 수 있다. 소정의 캐시 라인에 대응하는 비트는 비트가 세팅되는 경우에 적중 및 비트가 소거되는 경우에 적중실패를 표시할 수 있다(또는 반대 엔코딩이 사용될 수 있다). 제어 회로는 캐시 적중/실패를 결정하도록 적절한 비트를 선택하기 위해 캐시 라인 오프셋 부분(예를 들어, 64 바이트 캐시 라인 실시예에서 11:6 비트들)을 배제하는 VA의 인-페이지(in-page) 부분을 사용할 수 있다. 이러한 실시예에서, 마이크로 태그 회로는 마이크로TLB 회로에 포함될 수 있다. 용어 "태그 회로" 또는 "마이크로 태그 회로"는 마이크로 태그 회로가 마이크로TLB에 포함되는 이러한 실시예들을 포함하도록 의도된다.
도 8을 참조하면, AGU(12)로부터의 가상 주소에 응답하여 도 2에 도시된 블록도들의 일 실시예의 예시적 동작을 도시하는 흐름도이다. 도 8의 블록도들이 이해의 편이를 위해 특정 순서로 도시되지만은, 임의의 순서가 사용될 수 있다. 블록들은 조합 논리 회로에 의해 병렬로 수행되거나, 바람직하게는 파이프라인 방식으로 두개 이상의 클록 사이클에 걸쳐 수행될 수 있다.
가상 주소에 응답하여, 마이크로TLB 태그 회로(32)가 액세스된다(블록 110). 만일 마이크로TLB 적중이 검출되는 경우에(결정 블록(112)에서 "예"), 마이크로 태그 회로(36)가 액세스된다(블록 114). 만일 마이크로 태그에서 적중이 검출되는 경우에(결정 블록(116)에서 "예"), 캐시 적중/실패 회로(50)는 캐시 적중을 표시하며(예를 들어, 캐시 적중실패 표시가 적중실패를 표시하지 않으며), 가상 주소에 응답하여 데이터 캐시 태그 메모리(22)가 액세스되지 않는다(블록 118). 만일 마이크로 태그에서 적중이 검출되지 않는 경우에(결정 블록(116)에서 "아니오"), 마이크로TLB 데이터 회로(34)가 액세스된다(블록 120). 일부 실시예들에서, 마이크로TLB 데이터 회로(34)는 마이크로 태그가 적중되는지 여부에 상관없이 마이크로TLB 태그 적중에 응답하여 액세스될 수 있다. 데이터 캐시 태그 메모리(22)가 또한 액세스된다(블록 122). 데이터 캐시 태그 메모리(22)로부터의 태그와 마이크로TLB 데이터 회로(34)로부터의 주소간에 적중이 검출되는 경우에(결정 블록(124)에서 "예"), 캐시 적중/실패 회로(50)는 캐시 적중을 표시할 수 있다(블록 126). 부가적으로, 이 경우에 마이크로 태그 적중실패가 검출되었기 때문에, 마이크로 태그는 적중 태그로 로딩될 수 있다. 만일 데이터 캐시 태그 메모리(22)로부터의 태그와 마이크로TLB 데이터 회로(34)로부터의 물리적 주소간의 적중실패가 검출되는 경우에(결정 블록(124)에서 "아니오"), 캐시 적중/실패 회로(50)는 캐시 적중실패를 표시할 수 있으며(블록 128), 적중실패 캐시 라인은 데이터 캐시(16)로 로딩될 수 있다(그리고, 선택적으로 마이크로 태그 회로(36)는 또한 적중실패 캐시 라인의 태그로 갱신될 수 있다).
만일 마이크로TLB 적중실패가 검출되는 경우에(결정블록(112)에서 "아니오"), 메인 TLB 태그 회로(40)가 액세스될 수 있다(블록 130). 만일 메인 TLB에서 적중이 검출되는 경우에(결정블록(132)에서 "예"), 메인 TLB로부터 마이크로TLB가 로딩되며(블록 134), 로딩되는 마이크로TLB 엔트리에 대응하는 마이크로 태그 엔트리들이 무효화될 수 있다. 부가적으로, 블록들(122, 124, 126 및 128)이 메인 TLB로부터의 물리적 주소와의 태그 비교를 위해 반복된다. 하지만, 블록(126)에서, 마이크로 태그는 바람직한 경우에 선택적으로 로딩되지 않을 수 있다. 반면에, 메인 TLB에서 적중이 검출되는 경우에(결정블록(132)에서 "아니오"), 메인 TLB(38)는 TLB 적중실패를 생성할 수 있으며, 메인 TLB는 적중실패 변환으로 로딩될 수 있다(또는 어떠한 변환도 발견되지 않는 경우 예외가 발생할 수 있다)(블록 136). 선택적으로, 또한 메인 TLB 적중실패의 경우에 마이크로TLB가 로딩될 수 있으며, 로딩되는 마이크로TLB 엔트리에 대응하는 마이크로 태그 엔트리들을 무효화하기 위해, 마이크로 태그가 갱신될 수 있다.
상기 설명이 마이크로TLB(30) 또는 메인 TLB(38)로부터의 물리적 주소를 데이터 캐시 태그 메모리(22)로부터의 태그와 비교하는 것을 언급하지만은, TLB들은 일반적으로 물리적 주소의 페이지 부분을 출력할 수 있다. 비교를 위한 잔여 캐시 태그는, 물리적 주소의 페이지 부분을 가상 주소의 페이지 오프셋 부분에 연결(concatenate)함으로써 형성될 수 있다.
도 9를 참조하면, 방향 예측기(14)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 방향 예측기(14)는 방향 예측이 이루어지는 가상 주소에 대응하는 하나 이상의 주소 피연산자들을 수신하도록 결합되며, 추가적으로 메모리(142)에 결합되는 합산 주소(SA) 디코더를 포함한다. SA 디코더(140)는 하기에서 더 상세히 설명되는 합산-주소 색인을 구현할 수 있다. 메모리(142)는 (데이터 캐시(16)와 동일한) W-방향 세트 어소시에이티브가 될 수 있으며, 이에 따라 방향(0) 내지 방향(W-1)으로 배열되는 복수의 엔트리들을 가질 수 있다. 메모리(142)의 각 엔트리는 P 비트들([WP[P-1:0])을 포함하는 방향 예측값을 저장한다. 비교기들(146A-146B)을 포함하는 복수의 비교기들이 메모리(142)에 결합된다. 비교기(146A-146B)가 방향 예측기(14)의 각 방향에 대해 포함될 수 있다. 비교기들(146A-146B)은 AGU(12)로부터의 가상 주소(VA) 부분 또는 선택적 방향 예측 생성 유닛(148)(또는 다른 선택에서, 주소 피연산들 부분)을 수신하도록 결합된다. 비교기들(146A-146B) 출력은 방향 예측기(14)의 방향 예측 출력을 형성할 수 있다. 부가적으로, 어떤 비교기들(146A-146B)도 매칭을 검출하지 않는 경우에, 방향 예측기(14)는 초기 적중실패 신호(도 9에서 비교기들(146A-146B) 출력을 수신하는 NOR 게이트(150)로서 도시됨)를 출력할 수 있다.
디코더(140)는 메모리(142)의 세트(144)를 선택하기 위해 (본 실시예에서 합산-주소 디코딩을 사용하여) 주소 피연산자들을 디코딩하며, 메모리(142)는 세트(144)의 콘텐츠를 비교기들(146A-146B)에 출력한다. 비교기들(146A-146B) 각각은 메모리(142)의 각 방향으로부터의 방향 예측값을 입력 가상 주소에 대응하는 방향예측값에 비교한다. 만일 매칭이 검출되는 경우에, 방향 예측기(14)는 대응 방향이 데이터 캐시(16)에서 적중됨을 예측한다. 예시된 실시예에서, 방향 예측은 방향들 에 대한 하나의-핫 엔코딩을 포함할 수 있으며, 여기서 비트는 예측된 방향에 대해 어서트된다. 만일 어떤 방향 예측 비트들도 입력 방향 예측 비트들과 매칭하지 않는 경우에, 어떤 방향 예측도 생성되지 않는다(그리고, 초기 적중실패 신호가 어서트된다). 다른 실시예들은 다른 방식들로 방향 예측을 엔코딩하며, 방향 예측기(14)는 비교기들(146A-146B) 출력을 수신하도록 결합되며, 방향 예측 엔코딩을 생성하는 회로를 포함할 수 있다.
방향 예측값은 바람직하게는 임의 방식으로 생성될 수 있으며, 임의 개수의 비트들을 포함할 수 있다(예를 들어, P는 1보다 큰 임의의 정수가 될 수 있다). 방향 예측기(14)에 저장된 방향 예측값들은 데이터 캐시(16)의 대응 캐시 라인들에 따라 생성된다. 예를 들어, 일 실시예에서, 방향 예측값은 데이터 캐시(16)와 동일 색인 및 방향으로 저장되는 캐시 라인에 대응하는 가상 주소의 부분 태그가 될 수 있다. 즉, 방향 예측값은 선택된 가상 주소 비트들(캐시 태그의 일부인 적어도 하나의 주소 비트를 배제함)의 연결을 포함할 수 있다. 이러한 실시예에 대해, 가장 자주 변하는(또는, 다른 방식으로 볼 때에, 연속 액세스들 사이에서 가장 무작위성을 보여주는) 가상 주소 비트들을 선택하는 것이 바람직할 수 있다. 예를 들어, 여전히 캐시 태그의 일부(캐시 라인 오프셋의 일부가 아님)인 최하위 주소 비트들이 선택될 수 있다. 이러한 실시예에 대해, 방향 예측 생성 회로(148)가 사용될 수 없으며, 입력 가상 주소로부터 선택된 가상 주소 비트들이 비교기들(146A-146B)에 입력으로서 결합될 수 있다. 다른 실시예에서, 하나 이상의 방향 예측값 비트들이 둘 이상의 가상 주소 비트들의 논리적 조합으로서 생성될 수 있다. 이러한 실시예에 서, 자주 변경되는 가상 주소 비트들은 예를 들어, 덜 자주 변경되는 가상 주소 비트들과 조합될 수 있다. 일 실시예에서, 논리적 조합은 배타적 OR를 포함할 수 있다. 이러한 실시예에 대해, 논리적 조합은 방향 예측 생성 회로(148)에 의해 가상 주소 비트들 상에서 수행될 수 있으며, 그 출력은 비교기들(146A-146B)에 결합될 수 있다. 또 다른 실시예에서, 비트들은 가상 주소를 생성하는 가산(addition) 이전에 주소 피연산자들로부터 선택될 수 있다. 비트들은 방향 예측기 생성 유닛(148)을 사용하여 논리적으로 조합되거나, 상기 제공된 가상 주소 예들에 유사하게 연결될 수 있다.
둘 이상의 엔트리들이 동일 방향 예측값을 갖는(따라서, 방향 예측기(14)에서 하나 이상의 방향의 매칭이 발생하는) 상황을 피하기 위해, 데이터 캐시(16)의 캐시 라인들의 대체는 소정 세트의 방향 예측기(14)의 방향 예측값들의 고유성(uniqueness)을 보장하도록 제어될 수 있다. 이러한 절차의 예는 도 10의 흐름도에서 도시된다. 방향 예측값들의 고유성을 유지하기 위해, 상기 대체 전략이 종종 캐시 라인들의 조급한 대체를 초래하지 않도록, 방향 예측값들에 충분한 비트들을 포함하는 것이 바람직하다. 예를 들어, 방향 예측값들을 생성하기 위해, 가상 주소 비트들의 연결이 사용되는 경우에, 대략 7 비트의 방향 예측값이 선택될 수 있다.
일부 실시예들에서, 데이터 캐시 태그 메모리(22)에 비해 비교적 작은 크기의 방향 예측기(14)로 인하여, 방향 예측기(14)는 AGU의 데이터 경로에 포함될 수 있으며, 이는 바람직한 회로에 도달하기 위해 가상 주소가 이동하는 거리를 줄일 수 있다).
상술한 바와같이, 디코더(140)는 주소 피연산자를 디코딩하고, 가상 주소에 대응하는 세트(144)를 선택하는데에 합산-주소 디코딩을 사용할 수 있다. 다른 실시예들은 가상 주소를 수신하도록 결합되는 종래 디코더를 사용할 수 있다. 따라서, 일반적으로, 디코더(140)는 캐시에 액세스하는 주소 표시를 수신할 수 있다. 이 표시는 일부 실시예들에서 가상 주소를 형성하는데 사용되는 주소 피연산자를 포함하거나, 다른 실시예들에서 가상 주소 자체를 포함할 수 있다.
합산-주소 디코딩은 주소를 생성하는데 사용되는 주소 피연산자들을 수신하며, 주소 자체가 디코딩되었던 경우에 선택되는 것과 같이 동일 세트의 메모리를 정확하게 선택한다. 일반적으로, 합산-주소 디코딩은, 테스트(A+B=K)가 A와 B를 가산하여 그 합산을 K에 비교하기보다는 상수(K)에 대해 더 신속하게 추정될 수 있다는 원리에 의존한다. 디코딩 환경에서, 상수(K)는 소정의 세트를 선택하는 A+B의 값이다. 세트에 대한 워드라인을 생성하는 회로는 이 세트에 대해 상수(K)를 가정한다. 합산 디코딩의 개관은 하기에서 제공된다.
만일 A가 비트 벡터(an-1an-2...a0)로 표시되며, B가 비트 벡터(bn -1bn -2...b0)로 표시되며, K가 비트 벡터(kn -1kn -2...k0)로 표시되며, A+B=K인 경우에, 가산(A+B)의 소정 비트 위치(i-1)의 캐리 아웃(carry out)(Couti -1) 및 후속 비트 위치(i)의 캐리 인(carry in)(Cini)은 하기의 식(1 및 2)에 의해 제공될 수 있다(여기서, "!"는 반전을 나타내며, "XOR"은 배타적 OR을 나타내며, "&"는 AND를 나타내며, "|"는 OR를 나타낸다):
Couti -1 = ((ai-1 XOR bi-1) & !ki -1)|(ai-1 & bi-1) (1)
Cini = ki XOR ai XOR bi (2)
만일 A+B=K인 경우에, Couti - 1는 모든 i(0에서 n-1 범위)에 대해 Cini에 일치한다. 즉, A+B=K인 경우에, 하기의 식 3에 제시된 바와같이 항(ei)은 모든 i에 대해 1이다.
ei = Cini XOR !Couti -1 (3)
디코더(140)에 사용될 수 있는 식(ei)를 생성하기 위해, K에 종속하지 않는 항들을 생성하는 것이 바람직하다(여기서, 식(1 및 2) 각각 및 이에 따른 식(3)은 종속적이다). 특히, 식(3)은 (Cini을 통한) ki 및 (Couti -1을 통한) ki -1에 종속한다. 따라서, 4개의 ei항들이 각 비트 위치(i)에 대해 생성될 수 있다. 각 ei항은 ki 및 ki-1에 대한 값들의 일 세트를 가정할 수 있다. 이 항들은 ei kiki -1로서 표기되며, 여기서 ki 및 ki - 1는 표기법에서 각 비트에 대해 가정된 값으로 대체될 수 있다(예를 들어, ei 01은 ki=0 및 ki -1=1의 가정에 대응한다). 식 4 내지 7은 각 비트 위치에 대한 4개의 ei항들을 예시한다. 식 4 내지 7 각각은 식(1 및 2)을 식(3)으로 대체하고, ki 및 ki -1에 가정된 값을 제공하며, 불린 대수(Boolean algebra)를 사용하여 항 들을 줄임으로써 형성된다.
ei 00 = ai XOR bi XOR !(ai-1 | bi-1) (4)
ei 01 = ai XOR bi XOR !(ai-1 & bi-1) (5)
ei 10 = !(ai XOR bi) XOR !(ai-1 | bi-1) (6)
ei 00 = !(ai XOR bi) XOR !(ai-1 & bi-1) (7)
부가적으로, 색인의 비트 위치(0)에 대해, 캐리 인 항(c-1)은 식(8 및 9)을 형성하기 위해 i-1 항들을 대체한다.
e0 0c = ai XOR bi XOR !c-1 (8)
e0 1c = !(ai XOR bi) XOR !c-1 (9)
상기 식들은 색인의 각 비트 위치에 대한 방향 예측 메모리(142)로의 로직으로 구현될 수 있으며, 여기서 캐리 인(c-1)은 캐시 라인 오프셋 가산으로부터의 캐리 인에 일치한다. 이 캐리 인은 예를 들어, 가상 주소 가산으로부터의 AGU(12)에 의해 제공될 수 있다. 캐리 인은 늦게 도달할 수 있으며, 예를 들어, 그 사이에 짝수 및 홀수 색인들을 갖는 뱅크(bank)들 사이에서 선택할 수 있다.
소정의 세트에 대한 워드라인을 생성하기 위해, 각 비트 위치에 대한 ei 00, ei 01, ei 10, 및 ei 11중 하나가 (생성되는 워드라인에 대응하는 색인값에 기초하여) 선택되며, 선택된 값들은 워드라인을 생성하기 위해 논리적으로 AND된다. 예를 들어, 색인(0)에 대한 워드라인은 각 비트 위치에 대한 ei 00과 e0 0c의 논리 AND가 될 수 있다. 색인(1)(k0=1, 다른 모든 ki=0)에 대한 워드라인은 2와 n-1 사이의 각 i에 대한 ei 00, e1 01 및 e0 1c의 논리 AND가 될 수 있다. 색인(2)(k1=1, 다른 모든 ki=0)에 대한 워드라인은 3과 n-1 사이의 각 i에 대한 ei 00, e2 01 , e1 10 및 e0 0c의 논리 AND가 될 수 있다. 색인(3)(k1 및 k0=1, 다른 모든 ki=0)에 대한 워드라인은 3과 n-1 사이의 각 i에 대한 ei 00, e2 01 , e1 11 및 e0 1c의 논리 AND가 될 수 있다. 다른 색인들에 대한 추가의 워드라인들이 유사하게 선택될 수 있다.
합산 주소 디코딩의 일 실시예에 관한 추가 세부사항들은 William L. Lynch, Gary Lauterbach 및 Joseph I. Chamdani에 의한 컴퓨터 아키텍처에 관한 제 25차 연간 국제 심포지엄의 학회지, 1998, 페이지 369-379인 " 합산-주소 메모리(SAM)를 통한 낮은 로드 대기시간" 문헌에서 발견될 수 있다.
방향 예측기(14)는 데이터 캐시 데이터 메모리(20)의 소모 감소를 허용함으로써 프로세서(10)의 전력 소모를 줄이는데 사용될 수 있다. 예를 들어, 일부 실시예에서, 데이터 캐시 데이터 메모리(20)는 랜덤 액세스 메모리(RAM)를 포함할 수 있다. RAM의 위치들은 워드라인을 활성화함으로써 인에이블 될 수 있다. 인이에블된 위치들은 위치에 부속되는 일정 비트라인들을 방전할 수 있으며, 위치의 각 비트를 나타내는 비트라인 쌍들에 차이(differential)를 제공한다. 비트라인 쌍들은 차이들을 출력 비트들로 변환할 수 있는 감지 증폭기들(sense amplifier)에 입력될 수 있다. 일부 구현들에서, 데이터 캐시 데이터 메모리(20) RAM은 개별 워드라인 신호들을 데이터 캐시 데이터 메모리(20)의 각 방향에 제공할 수 있다. 가상 주소는 세트 선택을 제공하기 위해 디코딩될 수 있으며, 세트 선택은 각 방향에 대한 워드라인을 생성하는 방향 예측에 적격이 될 수 있다. 따라서, 예측된 방향은 인에이블 되며, 다른 방향들은 인에이블 될 수 없게 되며, 인에이블 되지않은 방향들에서 발생할 수 있었던 비트라인 방전에서 전력 소모를 줄인다. 비트라인 전력 소모는 종종 이러한 메모리의 전력 소모에서 가장 중요한 인자들 중 하나가 될 수 있다(또한 가장 중요한 요소가 될 수 있다). 데이터 캐시 데이터 메모리(20)의 이러한 실시예 부분의 예가 도 11에 도시되는데, 여기서 가상 주소(VA)는 디코더에 의해 수신되며, 디코더는 세트 선택(예를 들어, 도 11의 세트 0 및 도 11에 도시되지 않은 다른 세트들)을 생성한다. AND 게이트들은 방향(0)이 예측되거나(WP0) 방향(1)이 예측되는(WP1) 표시를 수신하며, 방향(0) 및 방향(1)에 대한 대응 워드라인들이 생성된다. 각 방향의 비트(0)가 도 1에 도시되는데, 대응 방향 워드라인을 수신한다. 각 방향에서의 비트(0)는 (예측된 방향에서의 비트(0)를 선택하기 위해) 또한 예측 방향들에 의해 제어되는 먹스에 의해 컬럼-먹스(column-mux)되며, 감지 증폭기(SA0)는 예측된 방향에서의 비트(0)를 감지하며, 데이터 캐시 데이터 메모리(20) 로부터의 비트(0)를 드라이브(drive) 한다. 다른 비트들은 유사하게 취급될 수 있으며, 추가 AND 게이트들과 방향 예측들을 제공함으로써 추가 방향들이 제공될 수 있다.
다른 실시예들에서, 방향 예측은 선택적 워드라인 생성을 제공할 만큼 충분히 일찍 이용가능하지 않을 수 있다. 이러한 실시예들에 대해, 각 방향으로의 워드라인들은 주소 디코딩에 기초하여 드라이브할 수 있으며, 비트라인 방전은 각 방향에서 발생할 수 있다. 일부 구현들에서, 각 방향에서의 비트들은 물리적으로 인터리브(interleave)되어, 감지 증폭기로 컬럼-먹스된다. 즉, 각 방향의 비트(0)는 물리적으로 서로 인접하여 위치될 수 있으며, 먹스는 비트(0) 출력을 위해 선택된 방향에서 감지 증폭기 입력으로의 비트(0)를 선택할 수 있다. 다른 출력 비트들이 유사하게 선택될 수 있다. 방향 예측은 컬럼 먹스에 선택 제어를 제공하는데 사용될 수 있으며, 따라서, 감지 증폭기의 개수는 (방향들의 개수로 방향에서의 비트 출력들 개수를 곱한 것이라기보다는) 방향에서의 비트 출력 개수가 될 수 있다. 감지 증폭기에서 소모된, 감지 증폭기에서 데이터를 드라이브하는데 소모된 전력은 각 방향에 대해 감지 증폭기를 갖는 것에 비할 때에 감소될 수 있다. 감지 증폭기 드라이브 전력은 이러한 메모리의 전력 소모에서 종종 가장 중요한 요소들 중 하나가 될 수 있다(그리고 비트라인 전력 소모와 다른 가장 중요한 요소가 될 수 있다). 이러한 실시예 부분의 예는 도 12에 도시된다. (도 11의 디코더에 유사한) 디코더는 워드라인들(예를 들어, 도 12의 워드라인(0) 및 도 12에 도시되지 않은 다른 세트들에 대한 다른 워드라인들)을 생성하기 위해 입력 가상 주소(VA)를 디코딩한다. 방향들(0 및 1)에서의 비트(0)가 도시되며, 각 비트는 워드라인 어서트에 응답하여 그 비트라인들을 방전한다. 도 12의 먹스는 비트(0)(도 12의 SA0)를 위해 예측된 방향에서 감지 증폭기로의 비트(0)를 선택하도록 방향 예측들에 의해 제어된다. 예측된 방향에서 판독되는 다른 비트들은 유사하게 취급될 수 있으며, 추가의 방향들이 유사한 방식으로 처리될 수 있다.
다른 구현들에서, 각 방향에 개별 감지 증폭기들이 제공될 수 있지만, 감지 증폭기들은 동작을 가능하게 하기 위해 인에이블 입력을 가질 수 있다. 방향 예측이 이러한 구현들을 위해 예측된 방향에서 감지 증폭기들만을 인에이블 하는데 사용될 수 있으며, 감지 증폭기에서 소모된, 감지 증폭기들에서 데이터를 드라이브하는데 소모된 전력은 컬럼-먹스 기법을 사용하는 것과 유사하게 감소될 수 있다. 도 13은 데이터 캐시 데이터 메모리(20)의 이러한 실시예의 예이다. 또한, 디코더는 입력 가상 주소(VA)를 디코딩할 수 있으며, 워드라인들을 생성할 수 있는데, 여기서 워드라인들은 방향(0) 및 방향(1) 저장소에 제공된다. 각 방향은 방향을 위해 다수의 비트라인들을 감지 증폭기들 세트에 출력한다. 감지 증폭기들 각 세트는 이 방향(방향들(0 및 1) 각각에 대한 WP0 및 WP1)에 대하여 방향 예측기에 의해 제어되는 인에이블을 수신한다. 본 실시예에서의 데이터 캐시 데이터 메모리(20)는 또한 감지 증폭기들의 출력들에서의 예측된 방향을 선택하는 먹스를 포함할 수 있다.
또 다른 실시예들에서, 단지 입력 가상 주소를 예측되는 방향으로 드라이브하는 것이 가능할 수 있으며, 이는 주소를 예측하지않은 방향들로 드라이브하지 않음으로써 전력을 감소시킨다.
도 10을 참조하면, 캐시 적중실패에 응답하여 데이터 캐시(16)에 의해 이용될 수 있는 대체 메커니즘을 도시하는 흐름도이다. 도 10의 블록들이 이해의 편이를 위해 특정 순서로 도시되지만은, 임의의 순서가 사용될 수 있다. 블록들은 조합 논리 회로에 의해 병렬로 수행되거나, 바람직하게는 파이프라인 방식으로 둘 이상의 클록 사이클에 걸쳐 수행될 수 있다.
만일 방향 예측기(14)가 캐시 적중실패를 발생시키는 가상 주소에 대한 방향 예측을 한 경우에(결정블록 160), 대체를 위해 예측된 방향이 선택된다(블록 162). 이와 달리, 대체 방법은 캐시에 의해 구현되는 대체 방식에 따라 선택된다(블록 164). 임의의 대체 알고리즘(예를 들어, LRU, 유사-LRU, 랜덤 등)이 사용될 수 있다.
상기 알고리즘은 캐시에서 적중실패하지만 방향 예측기(14)의 현재 방향 예측값과 매칭하는 캐시 블록이 이 방향 예측값에 대응하는 캐시 라인을 대체하도록 한다. 따라서, 동일한 방향 예측값이 세트의 하나 이상의 위치에 저장될 수 없다.
도 14는 방향 예측기(14)의 일 실시예에 따라 방향 예측을 형성하는 흐름도이다. 도 14의 블록들이 이해의 편이를 위해 특정 순서로 도시되지만은, 임의의 순서가 사용될 수 있다. 블록들은 조합 논리 회로에 의해 병렬로 수행되거나, 바람직하게는 파이프라인 방식으로 둘 이상의 클록 사이클에 걸쳐 수행될 수 있다.
방향 예측기(14)는 주소(예를 들어, 일부 실시예들에서 주소 피연산자들, 주소 자체) 표시를 디코딩할 수 있다(블록 170). 방향 예측기(14)는 디코딩에 의해 표시되는 세트로부터 복수의 방향 예측값들을 출력할 수 있다(블록 172). 출력 방 향 예측값들은 블록(170)에서 디코딩된 입력 주소에 대응하는 값에 비교될 수 있다. 만일 상기 비교 결과가 허가인 경우에(결정블록(176)에서 "예"), 매칭이 검출되는 방향에 일치하는 방향 예측이 생성될 수 있다(블록 178). 이와 다른 경우에서(결정블록(176)에서 "아니오"), 어떠한 방향 예측도 생성될 수 없으며, 방향 예측기(14)는 초기 적중실패 표시(블록 180)를 생성할 수 있다. 이와 함께, 블록들(176, 178, 및 180)은 방향 예측을 생성하는 일 실시예를 포함할 수 있다.
컴퓨터 시스템들
도 15를 참조하면, 버스 브릿지(202)를 통해 다양한 시스템 구성요소들에 결합된 프로세서(10)를 포함하는 컴퓨터 시스템(200)의 일 실시예의 블록도가 도시된다. 도시된 시스템에서, 메인 메모리(204)가 메모리 버스(206)를 통해 버스 브릿지(202)에 결합되며, 그래픽 제어기(208)는 AGP 버스(210)를 통해 버스 브릿지(202)에 결합된다. 마지막으로, 복수의 PCI 장치들(212A-212B)이 PCI 버스(214)를 통해 버스 브릿지(202)에 결합된다. 보조 버스 브릿지(216)가 EISA/ISA 버스(220)를 통해 하나 이상의 EISA 또는 ISA 장치들(218)에 전기적 인터페이스를 용이하게 하도록 제공된다. 프로세서(10)가 CPU 버스(224)를 통해 버스 브릿지(202)와 선택적 L2 캐시(228)에 결합된다. 또한, CPU 버스(224)와 L2 캐시(228)에 인터페이스는 외부 인터페이스 유닛(18)이 결합될 수 있는 외부 인터페이스를 포함할 수 있다. 프로세서(10)는 도 1에 도시된 프로세서(10)가 될 수 있으며, 도 2 내지 14에 도시된 구조 및 동작 세부사항들을 포함할 수 있다.
버스 브릿지(202)는 프로세서(10), 메인 메모리(204), 그래픽 제어기(208), PCI 버스(214)에 부착된 장치들간의 인터페이스를 제공한다. 버스 브릿지(202)에 연결된 장치들 중 하나로부터 수신되는 때에, 버스 브릿지(202)는 동작의 타겟(예를 들어, PCI 버스(214)의 경우에, 타겟이 PCI 버스(214)상에 있는 특정 장치)을 식별한다. 버스 브릿지(202)는 동작을 타겟 장치로 라우팅한다. 버스 브릿지(202)는 일반적으로 소스 장치 또는 버스에 의해 사용되는 프로토콜을 타겟 장치 또는 버스에 의해 사용되는 프로토콜로 동작을 변환한다.
PCI 버스(214)에 ISA/EISA 버스에 대한 인터페이스를 제공함과 아울러, 보조 버스 브릿지(216)는 또한 바람직하게는 추가의 기능성을 포함할 수 있다. 보조 버스 브릿지(216)의 외부에서 또는 이와 집적되는 입력/출력 제어기(미도시)는 또한 바람직하게는 키보드 및 마우스(222)에 대한, 다양한 직렬 및 병렬 포트들에 동작 지원을 제공하도록 컴퓨터 시스템(200) 내에 포함될 수 있다. 다른 실시예들에서, 외부 캐시 유닛(미도시)이 또한 프로세서(10)와 버스 브릿지(202)간의 CPU 버스(224)에 결합될 수 있다. 대안적으로, 외부 캐시는 버스 브릿지(202)에 결합될 수 있으며, 외부 캐시에 대한 캐시 제어 로직이 버스 브릿지(202)에 집적될 수 있다. L2 캐시(228)가 또한 프로세서(10)의 후방 구성에 도시된다. L2 캐시(228)는 프로세서(10)와 개별적이거나, 프로세서(10)와 함께 카트리지(예를 들어, 슬롯(1) 또는 슬롯(A))로 집적되거나, 또는 프로세서(10)와 함께 반도체 기판상으로 집적될 수 있다.
메인 메모리(204)는 응용 프로그램이 저장되는, 프로세서(10)가 주로 실행되는 메모리이다. 적합한 메인 메모리(204)는 DRAM(동적 랜덤 액세스 메모리)를 포함 한다. 예를 들어, 복수의 뱅크(bank)의 SDRAM(동기화 DRAM), 더블 데이터 속도(DDR) SDRAM, 또는 Rambus DRAM(RDRAM)이 적합할 수 있다. 메인 메모리(204)는 도 1에 도시된 시스템 메모리(42)를 포함할 수 있다.
PCI 장치들(212A-21B)은 다양한 주변 장치들의 예시이다. 주변 장치들은 장치들이 결합될 수 있는 다른 컴퓨터 시스템(예를 들어, 네트워크 인터페이스 카드들, 모뎀들 등)과의 통신을 위한 장치들을 포함할 수 있다. 부가적으로, 주변 장치들은 예를 들어, 비디오 가속기들, 오디오 카드들, 하드 또는 플로피 디스크 드라이브들, 또는 드라이브 제어기들, SCSI(소형 컴퓨터 시스템 인터페이스) 어댑터들 및 전화용 카드들과 같은 다른 장치들을 포함할 수 있다. 유사하게는, ISA 장치(218)는 모뎀, 사운드 카드와 같은 다양한 타입들의 주변 장치들, 및 GPIB 또는 필드 버스 인터페이스 카드들과 같은 다양한 데이터 획득 카드들의 예시이다.
그래픽 제어기(208)는 텍스트와 이미지들을 디스플레이(226)상에 표시(rendering)를 제어하도록 제공된다. 그래픽 제어기(208)는 메인 메모리(204)로/메인 메모리로부터 효율적으로 이동될 수 있는 3-차원 데이터 구조들을 표시하는, 일반적으로 종래기술분야에서 잘 알려진 전형적인 그래픽 가속기를 구체화할 수 있다. 따라서, 그래픽 제어기(208)는 버스 브릿지(202) 내의 타겟 인터페이스에 대한 액세스를 요구 및 수신하며, 이에 따라 메인 메모리(204)에 대한 액세스를 얻을 수 있다는 점에서 AGP 버스(210)의 마스터가 될 수 있다. 전용 그래픽 버스는 메인 메모리(204)에서의 데이터의 고속 검색을 용이하게 한다. 일정 동작들에 대해, 그래픽 제어기(208)는 또한 AGP 버스(210)상에 PCI 프로토콜 트랜잭션(transaction)들 을 생성할 수 있다. 따라서, 버스 브릿지(202)의 AGP 인터페이스는 PCI 프로토콜 타겟 및 개시자 트랜잭션들뿐만 아니라 AGP 프로토콜 트랜잭션들 모두를 지원하는 기능성을 포함할 수 있다. 디스플레이(226)는 이미지 또는 텍스트가 제시될 수 있는 임의의 전자 디스플레이이다. 적합한 디스플레이(226)는 음극선 튜브("CRT"), 액정 디스플레이("LCD") 등을 포함한다.
AGP, PCI, 및 ISA 또는 EISA 버스들이 상기 설명에서 예로서 사용되었지만은, 바람직하게는 임의의 버스 아키텍처들이 대체될 수 있다. 또한, 컴퓨터 시스템(200)은 추가 프로세서들(예를 들어, 컴퓨터 시스템(200)의 선택적 구성요소로서 도시된 프로세서(10a))을 포함하는 멀티프로세싱 컴퓨터 시스템이 될 수 있다. 프로세서(10a)는 프로세서(10)에 유사할 수 있다. 보다 구체적으로는, 프로세서(10a)는 프로세서(10)의 동일한 복제가 될 수 있다. 프로세서(10a)는 개별 버스(도 15에 도시됨)를 통해 버스 브릿지(202)에 연결되거나, 프로세서(10)와 CPU 버스(224)를 공유할 수 있다. 더욱이, 프로세서(10a)는 L2 캐시(228)에 유사한 선택적 L2 캐시(228a)에 결합될 수 있다.
도 16을 참조하면, 컴퓨터 시스템(300)의 다른 실시예가 도시된다. 도 16의 실시예에서, 컴퓨터 시스템(300)은 여러 프로세싱 노드들(312A, 312B, 312C, 및 312D)을 포함한다. 각 프로세싱 노드는 각 프로세싱 노드(312A-312D) 내에 포함되는 메모리 제어기(316A-316D)에 의해 각 메모리(314A-314D)에 결합된다. 부가적으로, 프로세싱 노드들(312A-312D)은 프로세싱 노드들(312A-312D) 간에서 통신하는데 사용되는 인터페이스 로직을 포함한다. 예를 들어, 프로세싱 노드(312A)는 프로세 싱 노드(312B)와 통신하기 위한 인터페이스 로직(318A), 프로세싱 노드(312C)와 통신하기 위한 인터페이스 로직(312B), 및 또 다른 프로세싱 노드(미도시)와 통신하기 위한 제 3 인터페이스 로직(318C)을 포함한다. 유사하게는, 프로세싱 노드(312B)는 인터페이스 로직(318D, 318E, 및 318F)을 포함하며, 프로세싱 노드(312C)는 인터페이스 로직(318G, 318H, 및 318I)을 포함하며, 프로세싱 노드(312D)는 인터페이스 로직(318J, 318K, 및 318L)을 포함한다. 프로세싱 노드(312D)는 인터페이스 로직(318L)을 통해 복수의 입력/출력 장치들(예를 들어, 데이지 체인 구성(daisy chain configuration)에서 장치들(320A-320B))과 통신하도록 결합된다. 다른 프로세싱 노드들은 유사한 방식으로 다른 I/O 장치들과 통신할 수 있다.
프로세싱 노드들(312A-312D)은 프로세싱 노드간의 통신을 위해 패킷-기반 링크를 구현한다. 본 실시예에서, 링크는 단일방향 라인들 세트들로서 구현된다(예를 들어, 라인들(324A)은 프로세싱 노드(312A)에서 프로세싱 노드(312B)로 패킷들을 송신하는데 사용되며, 라인들(324B)은 프로세싱 노드(312B)에서 프로세싱 노드(312A)로 패킷들을 송신하는데 사용된다). 라인들(324C-324H)의 다른 세트들은 도 16에 도시된 바와같이 다른 프로세싱 노드들 간에서 패킷들을 송신하는데 사용된다. 일반적으로, 라인들(324)의 각 세트는 하나 이상의 데이터 라인들, 데이터 라인들에 대응하는 하나 이상의 클록 라인들, 및 전달되는 패킷 타입을 표시하는 하나 이상의 제어 라인들을 포함할 수 있다. 이 링크는 프로세싱 노드들 간의 통신을 위한 캐시 코히어런트 방식 또는 프로세싱 노드와 I/O 장치(또는 PCI 버스 또는 ISA 버스와 같은 종래 구성의 I/O 버스로의 버스 브릿지) 간의 통신을 위한 넌-코 히어런트 방식에서 동작할 수 있다. 더욱이, 링크는 도시된 바와같이 I/O 장치들 간의 연쇄 구성을 사용하여 넌-코히어런트 방식으로 동작할 수 있다. 일 프로세싱 노드로부터 다른 노드로 전송되는 패킷이 하나 이상의 중개 노드를 통해 전달될 수 있다. 예컨대, 프로세싱 노드(312A)에 의해 프로세싱 노드(312D)로 송신되는 패킷은 도 16에 도시된 바와같이 프로세싱 노드(312B) 또는 프로세싱 노드(312C)를 통해 전달될 수 있다. 임의의 적합한 라우팅 알고리즘이 사용될 수 있다. 다른 실시예의 컴퓨터 시스템(300)은 도 16에서 도시된 실시예 보다 많거나 또는 적은 프로세싱 노드들을 포함할 수 있다.
일반적으로, 패킷은 노드들 간의 라인(324) 상에서 하나 이상의 비트 횟수(bit time)로 전송될 수 있다. 비트 횟수는 대응 클록 라인상의 클록 신호의 상승 또는 하강 에지가 될 수 있다. 패킷들은 트랜잭션을 개시하기 위한 지령(command) 패킷들, 캐시 코히어런시를 유지하기 위한 프로브 패킷들, 및 프로브들과 지령들에 응답하기 위한 응답 패킷들을 포함할 수 있다.
메모리 제어기 및 인터페이스 로직 이외에, 프로세싱 노드(312A 내지 312D)는 하나 이상의 프로세서를 포함할 수 있다. 일반적으로, 프로세싱 노드는 적어도 하나의 프로세서를 포함하며, 바람직하게는 선택적으로 메모리 및 다른 로직과 통신하기 위한 메모리 제어기를 포함할 수 있다. 보다 구체적으로는, 각 프로세싱 노드(312A 내지 312D)는 도 1에 도시된 바와같이 하나 이상의 프로세서(10)의 복사를 포함할 수 있다(예를 들어, 도 2 내지 14에 도시된 다양한 구조 및 동작 세부사항들을 포함한다). 외부 인터페이스 유닛(18)은 노드 내에 인터페이스 로직(318)뿐만 아니라 메모리 제어기(316)를 포함할 수 있다.
메모리(314A 내지 314D)는 임의의 적합한 메모리 장치들을 포함할 수 있다. 예컨대, 메모리(314A 내지 314D)는 하나 이상의 RAMBUS DRAM(RDRAM)들, 동기화 DRAM(SDRAM)들, DDR SDRAM, 정적 RAM 등을 포함할 수 있다. 컴퓨터 시스템의 주소 공간(300)은 메모리들(314A 내지 314D) 사이에서 분배된다. 각 프로세싱 노드(312A 내지 312D)는 어느 주소들이 어느 메모리들(314A 내지 314D)에 맵핑되어야 하는지, 이에 따라 특정 주소에 대한 메모리 요구가 어느 프로세싱 노드(312A 내지 312D)에 라우팅되어야 하는지를 결정하는데 사용되는 메모리 맵을 포함할 수 있다. 일 실시예에서, 컴퓨터 시스템(300) 내의 주소에 대한 코히어런시 포인트는 주소에 대응하는 바이트들을 저장하는 메모리에 결합된 메모리 제어기(316A 내지 316D)이다. 바꾸어 말하면, 메모리 제어기(316A 내지 316D)는 대응 메모리들(314A 내지 314D)에 대한 각 메모리 액세스가 캐시 코히어런시 방식으로 일어나게 됨을 담당한다. 메모리 제어기(316A 내지 316D)는 메모리들(314A 내지 314D)에 대한 인터페이싱을 위한 제어 회로를 포함할 수 있다. 추가적으로, 메모리 제어기(316A 내지 316D)들은 메모리 요구들을 큐잉하기 위한 요구 큐(request queue)들을 포함할 수 있다.
일반적으로, 인터페이스 로직(318A 내지 318L)은 링크로부터 패킷을 수신하기 위한, 링크상으로 전송될 패킷을 버퍼링하기 위한 다양한 버퍼를 포함할 수 있다. 컴퓨터 시스템(300)은 패킷 송신을 위한 임의의 적합한 흐름 제어 메커니즘을 이용할 수 있다. 예컨대, 일 실시예에서, 각 인터페이스 로직(318)은, 인터페이스 로직이 연결되는 링크의 다른 단부의 수신기 내에 각 타입의 버퍼의 개수에 대한 카운트를 저장한다. 인터페이스 로직은 수신 인터페이스 로직이 패킷을 저장할 빈(free) 버퍼를 갖지 않는 경우에 패킷을 송신하지 않는다. 수신 버퍼가 전방으로 패킷을 라우팅함으로써 비어지는 때에, 수신 인터페이스 로직은 버퍼가 비어졌음을 나타내기 위해 송신 인터페이스에 메시지를 송신한다. 이러한 메커니즘은 "쿠폰-기반" 시스템으로서 지칭될 수 있다.
I/O 장치(320A 내지 320B)는 임의의 적합한 I/O 장치가 될 수 있다. 예컨대, I/O 장치(320A 내지 320B)는 장치들이 결합될 수 있는 다른 통신 시스템(예를 들어, 네트워크 인터페이스 카드들 또는 모뎀들)과 통신하기 위한 장치들을 포함할 수 있다. 더욱이, I/O 장치(320A 내지 320B)는 비디오 가속기, 오디오 카드들, 하드 또는 플로피 디스크 드라이브들 또는 드라이브 제어기들, SCSI(소형 컴퓨터 시스템 인터페이스) 어댑터들 및 전화용 카드들, 사운드 카드들, 및 GPIB 또는 필드 버스 인터페이스 카드들과 같은 다양한 데이터 획득 카드들을 포함할 수 있다. 용어 "I/O 장치" 및 용어 "주변 장치"는 본원에서 동의어인 것으로서 의도된다.
상기 개시내용이 완전히 이해되는 경우에, 많은 변화물 및 변형물은 당업자에게 자명하게 될 것이다. 하기의 청구항들은 이런 모든 변화물 및 변형물을 포함하는 것으로 의도된다.
본 발명은 일반적으로 프로세서들 분야에 응용가능하다.

Claims (9)

  1. 복수의 태그들을 저장하는 태그 메모리(22)와 복수의 캐시 라인들을 저장하는 데이터 메모리(20)를 포함하는 캐시와, 여기서 상기 복수의 태그들 각각은 상기 복수의 캐시 라인들 각각에 대응되며; 그리고
    상기 복수의 캐시 라인들의 서브세트에 대하여 제 1 가상 주소에 의해 상기 캐시(16)에서 적중을 검출하는 태그 회로(36)를 포함하며;
    상기 태그 회로(36)에서 상기 제 1 가상 주소에 의한 적중에 응답하여, 상기 태그 회로(36)는 상기 태그 메모리(22)의 판독을 방지하며, 상기 데이터 메모리(20)는 상기 제 1 가상 주소에 대응하는 제 1 캐시 라인의 적어도 일부를 출력하는 것을 특징으로 하는 프로세서(10).
  2. 제 1항에 있어서,
    복수의 가상 페이지들을 식별하는 가상 주소들의 복수의 페이지 부분들을 저장하는 제 1 변환 참조 버퍼(TLB)(30)를 더 포함하며, 여기서 상기 복수의 가상 페이지들에 대한 물리적 주소 변환들이 상기 제 1 TLB에 저장되고;
    여기서, 상기 태그 회로(36)는 상기 제 1 TLB(30)에 결합되고, 상기 복수의 캐시 라인들의 서브세트는 상기 복수의 가상 페이지들 내에 있고;
    또한, 상기 제 1 TLB에서 상기 제 1 가상 주소에 의한 적중에 응답하여, 상기 태그 회로(36)는 캐시(16)에서 태그 메모리(22) 판독을 방지하는 것을 특징으로 하는 프로세서(10).
  3. 제 2항에 있어서, 상기 제 1 TLB(30)에서 상기 제 1 가상 주소에 의한 적중 및 상기 태그 회로(36)의 상기 제 1 가상 주소에 의한 적중실패에 응답하여, 상기 캐시(16)는 상기 태그 메모리(22)에 저장된 하나 이상의 태그들을 판독하며, 상기 캐시(16)에서 상기 제 1 가상 주소가 적중하는지 여부를 검출하는 것을 특징으로 하는 프로세서(10).
  4. 제 3항에 있어서, 제 2 TLB(38)를 더 포함하며, 여기서 상기 제 2 TLB(38)는 상기 제 1 TLB(30)에서 적중실패에 응답하여 액세스되고, 상기 제 2 TLB(38)는 상기 제 2 TLB(38)에서 적중에 응답하여 상기 제 1 가상 주소에 대응하는 제 1 물리적 주소의 페이지 부분을 제공하고, 상기 캐시(16)는 상기 제 1 물리적 주소의 태그 부분을 수신하도록 결합되고, 상기 캐시(16)에서 적중을 검출하기 위해 상기 제 1 물리적 주소의 태그 부분을 상기 태그 메모리(22)로부터의 적어도 제 1 태그와 비교하는 것을 특징으로 하는 프로세서(10).
  5. 제 2항에 있어서, 상기 제 1 TLB(30)는 제 1 복수의 엔트리들(80A-80B)을 포함하며, 여기서 상기 제 1 복수의 엔트리들(80A-80B) 각각은 가상 주소들의 상기 복수의 페이지 부분들의 각 페이지 부분을 저장하고, 상기 제 1 TLB(30)는 상기 제 1 가상 주소에 의해 적중되는 상기 제 1 복수의 엔트리들의 제 1 엔트리 표시를 출 력하고, 상기 태그 회로(36)는 상기 제 1 엔트리의 표시를 수신하도록 결합되고, 상기 태그 회로(36)는 제 2의 복수의 엔트리들(100A-100D)을 포함하고, 상기 제 2의 복수의 엔트리들(100A-100D)의 서브세트는 상기 제 1 TLB(30)의 상기 제 1 복수의 엔트리들(80A-80B) 중 하나에 대응하고, 상기 캐시(16)에 저장되어 있음은 물론 상기 제 1 복수의 엔트리들(80A-80B) 중 하나에 저장된 상기 페이지 부분에 의해 표시되는 페이지 내에 있는 캐시 라인들을 식별하고, 그리고 상기 태그 회로(36)는 상기 제 1 엔트리 표시에 응답하여 적중을 위해 상기 서브세트를 체크하는 것을 특징으로 하는 프로세서(10).
  6. 제 5항에 있어서, 상기 제 2의 복수의 엔트리들(100A-100D) 각각은 상기 가상 주소의 페이지 부분에 포함되지 않음은 물론 상기 가상 주소의 캐시 라인 오프셋 부분에도 포함되지 않는 가상 주소 비트들을 저장하는 것을 특징으로 하는 프로세서(10).
  7. 복수의 가상 페이지들을 식별하는 복수의 가상 주소들의 페이지 부분들을 저장하는 제 1 변환 참조 버퍼(TLB)(30)에 제 1 가상 주소로 액세스하는 단계와, 여기서 상기 복수의 가상 페이지들에 대한 물리적 주소 변환들이 상기 제 1 TLB(30)에 저장되고;
    상기 제 1 TLB(30)의 상기 제 1 가상 주소에 의한 적중에 응답하여, 복수의 캐시 라인들-이 캐시 라인들은 캐시(16)에 저장되어 있음은 물론 상기 복수의 가상 페이지들 내에 존재한다-을 식별하는 태그 회로(36)에 액세스하는 단계와;
    상기 제 1 TLB(30)와 상기 태그 회로(36)의 상기 제 1 가상 주소에 의한 적중을 검출하는 단계와; 그리고
    상기 제 1 TLB(30)와 상기 태그 회로(36)의 상기 제 1 가상 주소에 의한 적중에 응답하여, 상기 캐시(16)의 태그 메모리(22)의 판독을 방지하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 제 7항에 있어서, 상기 제 1 TLB(30)의 상기 제 1 가상 주소에 의한 적중 및 상기 태그 회로(36)의 상기 제 1 가상 주소에 의한 적중실패에 응답하여, 상기 태그 메모리(22)에 저장된 하나 이상의 태그들을 판독하며, 상기 캐시(16)에서 상기 제 1 가상 주소가 적중하는지 여부를 검출하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제 7항에 있어서,
    상기 제 1 TLB(30)에서 적중실패에 응답하여 제 2 TLB(38)에 액세스하는 단계와, 여기서 상기 제 2 TLB(38)는 상기 제 2 TLB(38)에서 적중에 응답하여 상기 제 1 가상 주소에 대응하는 제 1 물리적 주소의 페이지 부분을 제공하고; 그리고
    상기 캐시(16)에서 적중을 검출하기 위해, 상기 캐시(16)가 상기 제 1 물리적 주소를 상기 태그 메모리(22)로부터의 적어도 제 1 태그와 비교하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020067003890A 2003-09-03 2004-06-04 프로세서 전력 감소를 위한 마이크로 tlb 및 마이크로태그 KR101014395B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/653,749 2003-09-03
US10/653,749 US7117290B2 (en) 2003-09-03 2003-09-03 MicroTLB and micro tag for reducing power in a processor

Publications (2)

Publication Number Publication Date
KR20060067964A true KR20060067964A (ko) 2006-06-20
KR101014395B1 KR101014395B1 (ko) 2011-02-15

Family

ID=34217964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067003890A KR101014395B1 (ko) 2003-09-03 2004-06-04 프로세서 전력 감소를 위한 마이크로 tlb 및 마이크로태그

Country Status (8)

Country Link
US (1) US7117290B2 (ko)
JP (1) JP2007504552A (ko)
KR (1) KR101014395B1 (ko)
CN (1) CN100485638C (ko)
DE (1) DE112004001608B4 (ko)
GB (1) GB2421826B (ko)
TW (1) TW200519590A (ko)
WO (1) WO2005024635A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8035650B2 (en) 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2836407B1 (fr) * 2002-02-28 2004-05-14 Thermagen Procede de fabrication d'emballage metallique
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US20070156992A1 (en) * 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US20060224857A1 (en) * 2005-03-29 2006-10-05 O'connor Dennis M Locking entries into translation lookaside buffers
KR100692976B1 (ko) * 2006-02-08 2007-03-12 삼성전자주식회사 프로세서간 데이터 전송 방법 및 시스템
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US7650465B2 (en) * 2006-08-18 2010-01-19 Mips Technologies, Inc. Micro tag array having way selection bits for reducing data cache access power
US7657708B2 (en) * 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US8688890B2 (en) * 2006-12-05 2014-04-01 Hewlett-Packard Development Company, L.P. Bit ordering for communicating an address on a serial fabric
EP2169556A4 (en) 2007-06-20 2010-10-13 Fujitsu Ltd COMPUTER, TLB CONTROL METHOD, AND TLB CONTROL PROGRAM
US8145876B2 (en) * 2007-08-06 2012-03-27 Advanced Micro Devices, Inc. Address translation with multiple translation look aside buffers
US8156309B2 (en) * 2007-10-18 2012-04-10 Cisco Technology, Inc. Translation look-aside buffer with variable page sizes
GB2458295B (en) * 2008-03-12 2012-01-11 Advanced Risc Mach Ltd Cache accessing using a micro tag
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8255629B2 (en) * 2009-06-22 2012-08-28 Arm Limited Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers
JP5526626B2 (ja) * 2009-06-30 2014-06-18 富士通株式会社 演算処理装置およびアドレス変換方法
EP3255555B1 (en) * 2009-07-21 2020-01-29 Tadao Nakamura A lower energy comsumption and high speed computer without the memory bottleneck
US8429378B2 (en) * 2010-07-06 2013-04-23 Qualcomm Incorporated System and method to manage a translation lookaside buffer
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8612690B2 (en) * 2012-01-17 2013-12-17 Qualcomm Incorporated Method for filtering traffic to a physically-tagged data cache
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US8984368B2 (en) 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
US9367468B2 (en) * 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US9015400B2 (en) * 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
US9311239B2 (en) 2013-03-14 2016-04-12 Intel Corporation Power efficient level one data cache access with pre-validated tags
US9208261B2 (en) * 2014-01-24 2015-12-08 Oracle International Corporation Power reduction for fully associated translation lookaside buffer (TLB) and content addressable memory (CAM)
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method
US10552338B2 (en) * 2017-02-21 2020-02-04 Arm Limited Technique for efficient utilisation of an address translation cache
WO2019005975A1 (en) * 2017-06-28 2019-01-03 Nvidia Corporation TYPE OF MEMORY THAT CAN BE HANGED WHILE INACCESSIBLE BY SPECULATIVE INSTRUCTIONS
GB2570665B (en) 2018-01-31 2020-08-26 Advanced Risc Mach Ltd Address translation in a data processing apparatus
JP2023056289A (ja) 2021-10-07 2023-04-19 富士通株式会社 演算処理装置および演算処理方法

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT354159B (de) 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4453212A (en) 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4928223A (en) 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
EP0109655B1 (en) 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4807115A (en) 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4764861A (en) 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
EP0229619B1 (en) 1986-01-07 1997-08-06 Nec Corporation Instruction prefetching device comprising a circuit for checking prediction for a branch instruction before the instruction is executed
EP0239081B1 (en) 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
US4914582A (en) 1986-06-27 1990-04-03 Hewlett-Packard Company Cache tag lookaside
EP0259095A3 (en) 1986-08-27 1990-02-28 Amdahl Corporation Cache storage queue
IT1202687B (it) 1987-03-25 1989-02-09 Honeywell Inf Systems Memoria tampone a predizione di hit
JPS6413649A (en) * 1987-07-07 1989-01-18 Nec Corp Information processor
JPH071484B2 (ja) * 1987-07-14 1995-01-11 日本電気株式会社 情報処理装置
US4943908A (en) 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
US5142634A (en) 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5067069A (en) 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5226126A (en) 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JPH0654477B2 (ja) * 1989-06-12 1994-07-20 松下電器産業株式会社 記憶装置
US5091851A (en) 1989-07-19 1992-02-25 Hewlett-Packard Company Fast multiple-word accesses from a multi-way set-associative cache memory
US5148538A (en) 1989-10-20 1992-09-15 International Business Machines Corporation Translation look ahead based cache access
US5226133A (en) * 1989-12-01 1993-07-06 Silicon Graphics, Inc. Two-level translation look-aside buffer using partial addresses for enhanced speed
US5251306A (en) 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5185868A (en) 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
JPH03232034A (ja) * 1990-02-08 1991-10-16 Oki Electric Ind Co Ltd キャッシュ制御装置
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5163140A (en) 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5230068A (en) 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
EP0449369B1 (en) 1990-03-27 1998-07-29 Koninklijke Philips Electronics N.V. A data processing system provided with a performance enhancing instruction cache
US5053631A (en) 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5058048A (en) 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
EP0459232B1 (en) 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
US5283873A (en) 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5235697A (en) 1990-06-29 1993-08-10 Digital Equipment Set prediction cache memory system using bits of the main memory address
JP2834289B2 (ja) 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
US5412787A (en) * 1990-11-21 1995-05-02 Hewlett-Packard Company Two-level TLB having the second level TLB implemented in cache tag RAMs
US5210845A (en) 1990-11-28 1993-05-11 Intel Corporation Controller for two-way set associative cache
JP2636088B2 (ja) 1991-03-15 1997-07-30 甲府日本電気株式会社 情報処理装置
JPH0535592A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
JPH0535591A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
US5345569A (en) 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
GB2263985B (en) 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
SG45269A1 (en) 1992-02-06 1998-01-16 Intel Corp End bit markers for instruction decode
JP2761688B2 (ja) 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
WO1993017385A1 (en) 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
US5418922A (en) 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
US5423011A (en) 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
WO1994003856A1 (en) 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache
JPH06314241A (ja) 1993-03-04 1994-11-08 Sharp Corp 高速半導体記憶装置及び高速連想記憶装置
US5454117A (en) 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
DE4333547A1 (de) * 1993-10-01 1995-04-06 Hoechst Ag Verfahren zur Verwertung von Reststoffen enthaltend cellulosische Fasern und aus synthetischen Polymeren
EP0651321B1 (en) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5606683A (en) * 1994-01-28 1997-02-25 Quantum Effect Design, Inc. Structure and method for virtual-to-physical address translation in a translation lookaside buffer
US5671444A (en) 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
EP0675443A1 (en) 1994-03-30 1995-10-04 Digital Equipment Corporation Apparatus and method for accessing direct mapped cache
US5521306A (en) * 1994-04-26 1996-05-28 Xerox Corporation Processes for the preparation of hydroxygallium phthalocyanine
US5559975A (en) 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
US5509119A (en) 1994-09-23 1996-04-16 Hewlett-Packard Company Fast comparison method and apparatus for error corrected cache tags
JP3456768B2 (ja) * 1994-09-28 2003-10-14 株式会社東芝 アドレス変換装置
US5640532A (en) 1994-10-14 1997-06-17 Compaq Computer Corporation Microprocessor cache memory way prediction based on the way of previous memory read
US5835951A (en) 1994-10-18 1998-11-10 National Semiconductor Branch processing unit with target cache read prioritization protocol for handling multiple hits
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5764946A (en) 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5752069A (en) 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5845323A (en) 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5893146A (en) 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5802594A (en) 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
US5918245A (en) 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
WO1998020421A1 (en) 1996-11-04 1998-05-14 Advanced Micro Devices, Inc. A way prediction structure
US6065091A (en) * 1997-05-30 2000-05-16 Via-Cyrix, Inc. Translation look-aside buffer slice circuit and method of operation
US5956746A (en) 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6016533A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6016545A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6212602B1 (en) * 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
US6138225A (en) 1997-12-24 2000-10-24 Intel Corporation Address translation system having first and second translation look aside buffers
JP3439350B2 (ja) * 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US6418521B1 (en) 1998-12-23 2002-07-09 Intel Corporation Hierarchical fully-associative-translation lookaside buffer structure
US6425055B1 (en) 1999-02-24 2002-07-23 Intel Corporation Way-predicting cache memory
US6687789B1 (en) 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
KR100351504B1 (ko) * 2000-06-05 2002-09-05 삼성전자 주식회사 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
JP3732397B2 (ja) * 2000-10-05 2006-01-05 株式会社日立製作所 キャッシュシステム
US6553477B1 (en) * 2000-11-06 2003-04-22 Fujitsu Limited Microprocessor and address translation method for microprocessor
JP2003196157A (ja) * 2001-12-25 2003-07-11 Mitsubishi Electric Corp プロセッサ装置及びメモリ管理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8035650B2 (en) 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs

Also Published As

Publication number Publication date
CN1846200A (zh) 2006-10-11
GB0605621D0 (en) 2006-04-26
US7117290B2 (en) 2006-10-03
DE112004001608B4 (de) 2018-09-06
GB2421826A (en) 2006-07-05
JP2007504552A (ja) 2007-03-01
DE112004001608T5 (de) 2006-08-10
KR101014395B1 (ko) 2011-02-15
CN100485638C (zh) 2009-05-06
TW200519590A (en) 2005-06-16
GB2421826B (en) 2007-04-11
WO2005024635A3 (en) 2005-05-26
US20050050277A1 (en) 2005-03-03
WO2005024635A2 (en) 2005-03-17

Similar Documents

Publication Publication Date Title
KR101014395B1 (ko) 프로세서 전력 감소를 위한 마이크로 tlb 및 마이크로태그
US20050050278A1 (en) Low power way-predicted cache
KR100884351B1 (ko) 타입 비트들을 이용한, 레벨 2 캐시에서의 ecc 및프리디코드 비트들의 저장 추적
US7284112B2 (en) Multiple page size address translation incorporating page size prediction
US8161246B2 (en) Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US4797814A (en) Variable address mode cache
US6594728B1 (en) Cache memory with dual-way arrays and multiplexed parallel output
KR100747127B1 (ko) 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬
US6604187B1 (en) Providing global translations with address space numbers
JP4437001B2 (ja) 変換索引バッファのフラッシュフィルタ
US7941631B2 (en) Providing metadata in a translation lookaside buffer (TLB)
KR100586057B1 (ko) 프리디코드 정보를 저장하기 위해 ecc/패리티 비트들의 이용
US6823427B1 (en) Sectored least-recently-used cache replacement
JP2012533135A (ja) Tlbプリフェッチング
KR20170100003A (ko) 가상 주소들을 사용하여 액세스된 캐시
WO2002093385A2 (en) Method and system for speculatively invalidating lines in a cache
JP2008542948A (ja) コンフィギュラブルトランスレーションルックアサイドバッファを備えたマイクロプロセッサ
JPH07160580A (ja) プロセッサ、キャッシュ、およびエイリアシングが発生するのを防ぐための方法
JP2001195303A (ja) 機能が並列に分散された変換索引バッファ
US20210042120A1 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
JPH07295889A (ja) アドレス変換回路
US10929306B2 (en) Arithmetic processor, information processing apparatus, and control method of arithmetic processor
US20050182903A1 (en) Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer
US6877069B2 (en) History-based carry predictor for data cache address generation
US7076635B1 (en) Method and apparatus for reducing instruction TLB accesses

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee