KR101136141B1 - 캐시 메모리의 동적 재구성 - Google Patents
캐시 메모리의 동적 재구성 Download PDFInfo
- Publication number
- KR101136141B1 KR101136141B1 KR1020077007488A KR20077007488A KR101136141B1 KR 101136141 B1 KR101136141 B1 KR 101136141B1 KR 1020077007488 A KR1020077007488 A KR 1020077007488A KR 20077007488 A KR20077007488 A KR 20077007488A KR 101136141 B1 KR101136141 B1 KR 101136141B1
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- cache memory
- utilization
- unit
- memory
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 80
- 230000004044 response Effects 0.000 claims abstract description 16
- 238000012544 monitoring process Methods 0.000 claims abstract description 5
- 238000003860 storage Methods 0.000 claims description 14
- 238000000034 method Methods 0.000 claims 9
- 238000012545 processing Methods 0.000 abstract description 20
- 230000002093 peripheral effect Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 230000001427 coherent effect Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/27—Using a specific cache architecture
- G06F2212/271—Non-uniform cache access [NUCA] architecture
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Microcomputers (AREA)
Abstract
일 실시예에서, 프로세싱 노드는 복수의 프로세서 코어를 포함하고, 그 각각은 캐시 모니터 유닛과 구성 유닛에 연결된 캐시 메모리를 포함한다. 각각의 캐시 모니터 유닛은 그것이 연결된 캐시 메모리의 현재의 이용도를 독립적으로 모니터링 하도록 구성될 수 있고 그리고 이 현재의 이용도가 소정의 이용도 값 아래에 있는지 여부를 결정하도록 구성될 수 있다. 이 구성 유닛은, 현재의 이용도가 소정의 이용도 값 아래에 있다고 결정하는 캐시 메모리 유닛에 응답하여 캐시 메모리의 하나 또는 그 이상의 부분을 선택적으로 디스에이블링 할 수 있다.
프로세싱 노드, 프로세서 코어, 캐시 메모리, 이용도, 모니터링
Description
본 발명은 마이크로프로세서(microprocessors) 및 칩 멀티프로세서(Chip MultiProcessors, CMP) 분야에 관한 것이고, 특히 프로세서의 캐시(cache) 메모리의 재구성에 관한 것이다.
현대의 마이크로프로세서는 일반적으로 온-칩 캐시 메모리(on-chip cache memory)를 포함한다. 많은 경우에, 마이크로프로세서는 레벨(Level) 1(L1), 레벨 2(L2) 및 어떤 경우에 있어서는 레벨 3(L3) 캐시 메모리를 포함할 수 있는 온-칩 계층적 캐시 구조를 포함한다. 일반적인 캐시 계층은 작고 빠른 L1 캐시를 사용할 수 있고, L1 캐시는 가장 빈번하게 사용되는 캐시 라인(lines)을 저장하는 데 사용될 수 있다. L2는 억세스(access)되지만 L1 내에서는 적합하지 않은 캐시 라인을 저장하기 위한 더 크고 가능하게는 더 느린 캐시일 수 있다. L3 캐시는 억세스되지만 L2 캐시 내에서는 적합하지 않은 캐시 라인을 저장하는데 사용될 수 있다. 상기 설명된 바와 같이 캐시 계층을 가지는 것은 프로세서 코어(core)에 의한 메모리 억세스와 관련된 레이턴시(latency)를 감소시킴으로써 프로세서 성능을 개선할 수 있다.
그러나, 어떤 경우에 있어서는 성능에 있어서의 이러한 개선은 비용이 들 수 있다. 현대의 마이크로프로세서는 많은 양의 파워(power)를 소비할 수 있고 높은 열 비용(thermal budget)을 가질 수 있다는 것은 잘 알려져 있다. 캐시 메모리들은 그들이 사용되지 않는 경우조차도 정적 누설(static leakage)을 통해 파워를 소비할 수 있다. 따라서, 캐시가 더 크면 클수록 파워는 더 많이 소비된다.
효율성과 프로세서를 증가시키기 위한 노력에 있어서, 칩 멀티프로세서(CMP)는 점점 인기를 얻고 있는 떠오르는 기술이 되고 있다. CMP는 동일한 집적 회로(IC) 디바이스(device) 상에 구현된 두 개 또는 그 이상의 프로세서 코어들을 갖는다. 이러한 인기가 증가 되는 것은 적어도 부분적으로는 CMP가 예를 들어 더 정교한 단일 프로세서보다 집적 회로 상에 포함될 수 있는 수백만의 트랜지스터들을 더 효율적으로 사용할 수 있다는 생각에 기인한 것이다. 예를 들어, 프로세서 코어들 사이에 프로세싱 부하를 공유함으로써, CMP는 어떤 단일 코어 프로세서들에 의해 요구된 것보다 더 낮은 주파수에서 어떤 임무를 실행할 수 있다. 더 낮은 주파수는 어떤 경우에서는 파워에서의 절약 및 열 비용에서의 감소로 해석될 수 있다.
CMP들은 다수 프로세서 코어를 포함하기 때문에, 그들은 각각의 코어에 관련된 회로를 또한 포함할 수 있다. 예를 들어, CMP는 각각의 프로세서 코어에 대한 L1 및 L2 캐시 메모리를 포함할 수 있다. 따라서, 단일 코어 마이크로프로세서에 관한 상기 설명된 이유에 대해서, CMP의 파워 소비 및 열 비용은 여전히 높다. 따라서, 프로세서 성능을 유지하면서 파워 소비를 감소시키는 방법을 찾는 것이 요구될 수 있다.
캐시 메모리의 동적 재구성의 다양한 실시예들이 개시된다. 일 실시예에서, 프로세서는 예를 들어 캐시 모니터 유닛(cache monitor unit)과 구성 유닛에 연결된 L2 캐시와 같은 캐시 메모리를 포함한다. 이 캐시 모니터 유닛은 캐시 메모리의 현재의 이용도를 모니터링(monitoring) 하도록 구성될 수 있고 그리고 현재의 이용도가 소정의 이용도 값 아래에 있는지 여부를 결정하도록 구성될 수 있다. 이 구성 유닛은, 캐시 모니터 유닛이 현재 이용도가 소정의 이용도 값 아래에 있다고 결정하는 것에 응답하여, 캐시 메모리의 하나 또는 그 이상의 부분을 선택적으로 디스에이블링(disabling) 할 수 있다.
또 다른 실시예에서, 프로세싱 노드(processing node)는 복수의 프로세서 코어들을 포함하고, 그 각각은 캐시 모니터 유닛과 구성 유닛에 연결된 캐시 메모리를 포함한다. 각각의 캐시 모니터 유닛은 그것이 연결된 캐시 메모리의 현재의 이용도를 독립적으로 모니터링 하도록 구성될 수 있고, 그리고 현재의 이용도가 소정의 이용도 값 아래에 있는지 여부를 결정하도록 구성될 수 있다. 구성 유닛은 캐시 모니터 유닛이 주어진 현재의 이용도가 소정의 이용도 값 아래에 있다고 결정하는 것에 응답하여 캐시 메모리의 하나 또는 그 이상의 부분을 선택적으로 디스에이블링 할 수 있다.
도 1은 멀티-코어 프로세싱 노드와 구성가능한 캐시 메모리를 포함하는 컴퓨터 시스템의 일 실시예의 블록도이다.
도 2는 멀티-코어 프로세싱 노드와 구성가능한 캐시 메모리를 포함하는 컴퓨 터 시스템의 또 다른 실시예의 블록도이다.
도 3은 프로세싱 노드의 일 실시예의 동작을 설명하는 순서도이다.
도 4는 단일 프로세서 코어와 구성가능한 캐시 메모리를 포함하는 마이크로프로세서의 일 실시예의 블록도이다.
도 5는 도 4의 마이크로프로세서의 일 실시예의 동작을 설명하는 순서도이다.
본 발명은 다양한 수정과 대안적 형태가 가능하며, 이러한 것의 특정 실시예들은 도면에서 예로서 도시되고 상세한 설명에서 세부적으로 설명된다. 그러나 이것에 대한 도면 및 세부적 설명이 본 발명을 개시되는 특정 형태에 한정하려는 의도는 아니며, 그 반대로 본 발명이 첨부되는 특허청구범위에 의해 정의되는 바와 같이 본 발명의 사상 및 범위 내에 있는 모든 수정물, 등가물, 및 대안적인 것을 포괄하려는 의도임이 이해되어야 한다. 주의해야 할 것으로, 표제는 단지 조직화 목적을 위한 것이고 상기 설명 및 특허청구범위를 제한하거나 해석하기 위해 사용되도록 하려는 것이 아니다. 더욱이, 단어 "할 수 있다"는 허용적 의미(즉, 할 가능성을 갖는다, 하는 것이 가능하다)에서 본 명세서를 통해 사용되었으며, 강제적 의미(즉, 해야만 한다)로 사용된 것이 아님에 주의해야 한다. 용어 "포함한다" 및 그 파생어들은 "포함하지만 그것에 한정되는 것은 아니다"를 의미한다. 용어 "접속된다"는 "직접적으로 또는 간접적으로 접속된다'는 것을 의미하고, 그리고 용어 "연결된다"는 "직접적으로 또는 간접적으로 연결된다'는 것을 의미한다.
동적으로 구성가능한 캐시를 갖는 칩 멀티프로세서
이제 도 1로 돌아가서, 컴퓨터 시스템(10)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 컴퓨터 시스템(10)은 메모리(14)와 주변 장치(13A-13B)에 연결된 프로세싱 노드(12)를 포함한다. 노드(12)는 노드 제어기(20)에 연결된 프로세서 코어(15A-15B)를 포함하고, 노드 제어기(20)는 메모리 제어기(22)와 복수의 HyperTransportTM(HT) 인터페이스(interface) 회로(24A-24C)에 더 연결된다. 프로세서 코어(15A-15B)는 또한 공유된 레벨 3(L3) 캐시 메모리(60)에 연결되고, 이 캐시 메모리(60)는 L3 캐시 모니터(85)와 구성 유닛(50)에 연결된다. HT 회로(24C)는 주변 장치(13A)에 연결되고, 이 주변 장치(13A)는 데이지-체인(daisy-chain) 구성(이 실시예에서는 HT 인터페이스를 사용함)으로 주변 장치(13B)에 연결된다. 남아 있는 HT 회로(24A-24B)는 다른 HT 인터페이스(도시되지 않음)를 통해 다른 유사한 프로세싱 노드들(도시되지 않음)에 접속될 수 있다. 메모리 제어기(22)는 메모리(14)에 연결된다. 일 실시예에서, 노드(12)는 도 1에서 도시된 회로를 포함하는 단일 집적 회로 칩일 수 있다. 즉, 노드(12)는 칩 멀티프로세서(CMP)일 수 있다. 어떠한 레벨의 집적 또는 개별 컴포넌트(components)가 사용될 수 있다. 프로세싱 노드(12)가, 간단함을 위해 생략되어진 다양한 다른 회로들을 포함할 수 있다는 것에 주의해야 한다.
일 실시예에서, 노드 제어기(20)는 프로세서 코어(15A와 15B)를 서로에게, 다른 노드들로, 그리고 메모리로 상호접속시키기 위해 다양한 상호접속 회로(도시 되지 않음)를 포함할 수 있다. 노드 제어기(20)는 또한 복수의 값들을 나타내기 위해 제조 프로세스 동안 선택적으로 끊어질 수 있는 여러 세트(set)의 퓨즈(fuses)(도시되지 않음)를 포함할 수 있다. 어떤 실시예에서, 다양한 노드 성질(node properties)이 퓨즈에 의해 선택될 수 있다. 이 성질들은 노드에 대한 최대 및 최소 동작 주파수를 포함하고 그리고 노드에 대한 최대 및 최소 파워 공급 전압을 포함한다. 추가로, 퓨즈들은 프로세서-코어 특정 성질들을 선택할 수 있다.
노드 제어기(20)는 일반적으로 통신 타입, 통신 내의 어드레스(address), 등에 따라 HT 회로(24A-24C), 메모리 제어기(22), 프로세서 코어(15A-15B) 사이의 통신들을 러우팅(routing) 하도록 구성될 수 있다. 일 실시예에서, 노드 제어기(20)는 시스템 요구 큐(System Request Queue, SRQ)를 포함하며, 수신된 통신들은 노드 제어기(20)에 의해 SRQ에 기입(writing)된다. 노드 제어기(20)는 프로세서 코어(15A-15B), HT 회로(24A-24C), 및 메모리 제어기(22) 사이에서 목적지 또는 목적지들로의 라우팅을 위해 SRQ로부터의 통신을 스케쥴링(scheduling) 할 수 있다. 노드(12)의 동작과 그 컴포넌트들은 아래에서 더 세부적으로 설명된다.
일반적으로, 프로세서 코어(15A-15B)는 컴퓨터 시스템(10)의 다른 컴포넌트들(예를 들어, 주변 장치(13A-13B), 다른 프로세서 코어(도시되지 않음), 메모리 제어기(22), 등)과 통신하기 위해 노드 제어기(20)에 대한 인터페이스(들)를 사용할 수 있다. 이 인터페이스는 어떤 요구된 방식으로 설계될 수 있다. 어떤 실시예들에서, 캐시 코히런트(cache coherent) 통신은 인터페이스를 위해 정의될 수 있다. 일 실시예에서, 노드 제어기(20)와 프로세서 코어(15A-15B) 사이의 인터페이스 상에서의 통신은 HT 인터페이스 상에서 사용된 것과 유사한 패킷(packets)의 형태일 수 있다. 다른 실시예에서는, 어떤 요구된 통신이 사용될 수 있다(예를 들어, 버스 인터페이스(bus interface) 상에서의 트랜잭션(transaction), 다른 형태의 패킷, 등). 다른 실시예에서, 프로세서 코어(15A-15B)는 노드 제어기(20)에 대한 인터페이스를 공유할 수 있다(예를 들어 공유된 버스 인터페이스). 일반적으로 프로세서 코어(15A-15B)로부터의 통신은 (프로세서 코어의 외부에 있는 레지스터 또는 메모리 위치를 읽기 위한) 읽기 동작과 (외부 레지스터 또는 메모리 위치를 기입 하기 위한) 기입 동작과 같은 요구, (캐시 코히런트 실시예들에 대한) 프로브들에 대한 응답, 인터럽트 응답(interrupt acknowledgment), 및 시스템 관리 메시지 등을 포함할 수 있다.
메모리(14)는 어떤 적당한 메모리 디바이스를 포함할 수 있다. 예를 들어, 메모리(14)는 하나 또는 그 이상의 램버스 DRAM(Rambus DRAM, RDARM) 동기식 DRAM(synchronous DRAM), 더블 데이터 레이트(Double Data Rate, DDR) SDRAM, 스태틱(static) RAM 등을 포함할 수 있다. 메모리 제어기(22)는 메모리(14)로의 인터페이싱을 위한 제어 회로를 포함할 수 있다. 추가적으로, 메모리 제어기(22)는 메모리 요구 등을 큐잉(queuing)하기 위해 리퀘스트 큐들을 포함할 수 있다.
HT 회로(22A-24C)는 HT 링크(link)로부터 패킷들을 수신하고 HT 링크 상에 패킷들을 전송하기 위한 다양한 버퍼 및 제어 회로를 포함할 수 있다. HT 인터페이스는 패킷들을 전송하기 위한 단방향성 링크를 포함한다. 각 HT 회로(24A-24C)는 이러한 두 개의 링크들(전송을 위한 것 하나와 수신을 위한 것 하나)에 연결될 수 있다. 소정의 HT 인터페이스는 캐시 코히런트 방식으로 (예를 들어, 프로세싱 노드들 사이에서) 동작 될 수 있거나 또는 비-코히런트(non-coherent) 방식으로 (예를 들어, 주변 장치(13A-13B)로/로부터) 동작 될 수 있다. 예시된 실시예에서, HT 회로(24A와 24B)는 사용되지 않으며, 그리고 HT 회로(24C)는 주변 장치(13A-13B)에 대한 비-코히런트 링크들을 통해 연결된다.
주변 장치(13A-13B)는 어떤 타입의 주변 장치일 수 있다. 예를 들어, 주변 장치(13A-13B)는 또 다른 컴퓨터 시스템과 통신하기 위한 디바이스를 포함할 수 있고, 이 디바이스는 상기 또 다른 컴퓨터 시스템에 연결될 수 있다(예를 들어, 네트워크 인터페이스 카드, 컴퓨터 시스템의 메인(main) 회로 보드(board) 상에 집적되는 네트워크 인터페이스 카드와 유사한 회로, 또는 모뎀). 더욱이, 주변 장치(13A-13B)는 비디오 가속기, 오디오 카드, 하드 또는 플로피 디스크 드라이브 또는 드라이브 제어기 SCSI(Small Computor Systems Interface) 어댑터 및 전화통신 카드(telephony card), 사운드 카드, GPIB 또는 필드(field) 버스 인터페이스 카드와 같은 다양한 데이터 획득 카드를 포함할 수 있다. 용어 "주변 장치"는 입력/출력(I/O) 디바이스를 포함하려는 의도임을 주의해야 한다.
일반적으로, 프로세서 코어(15A-15B)는 소정의 명령 세트 구조에서 정의된 명령들을 실행하기 위해 설계된 회로를 포함할 수 있다. 즉, 프로세서 코어 회로는 명령 세트 구조 내에서 정의된 명령들의 결과를 가져오고(fetch), 디코딩(decodign)하고, 실행하고, 그리고 저장하도록 구성될 수 있다. 예를 들어, 일 실시예에서, 프로세서 코어(15A-15B)는 x86 구조를 구현할 수 있다. 프로세서 코어(15A-15B)는 수퍼파이프라인(superpipelined), 스퍼스칼라(superscalar), 또는 그것들의 조합을 포함하는, 어떤 요구된 구성을 포함할 수 있다. 다른 구성은 스칼라(scalar), 파이프라인(pipelined), 비-파이프라인(non-pipelined) 등을 포함할 수 있다. 다양한 실시예들이 비순서적 추론 실행(out of order speculative execution) 또는 순서적 실행을 사용할 수 있다. 프로세서 코어는, 상기 구성들 중 어느 하나와 함께, 하나 또는 그 이상의 명령들 또는 다른 기능들을 위한 마이크로코딩(microcoding)을 포함할 수 있다. 다양한 실시예들이 캐시, 변환 색인 버퍼(Translation Lookaside Buffers, TLBs) 등과 같은 다양한 다른 디자인 특성을 구현할 수 있다.
주의할 것으로, 본 실시예가 노드들 사이에서의 통신 및 노드와 주변 장치 사이에서의 통신을 위해 HT 인터페이스를 사용하는 반면, 다른 실시예는 앞서의 통신 중 어느 하나를 위한 어떤 요구된 인터페이스 또는 인터페이스들을 사용할 수 있다. 예를 들어, 다른 패킷 기반의 인터페이스가 사용될 수 있고, 버스 인터페이스가 사용될 수 있고, 다양한 표준 주변 인터페이스가 사용될 수 있는 등등이다(예를 들어, 주변 컴포넌트 상호연결(Peripheral Component Interconnect, PCI), PCI 익스프레스(express) 등).
구성가능한 캐시 제어
예시된 실시예에서, 프로세서 코어(15A)는 L2 캐시(17A)를 포함한다. 마찬가지로, 프로세서 코어(15B)는 L2 캐시(17B)를 포함한다. 각각의 L2 캐시는 마이크로프로세서 내에서 발견되는 어떠한 L2 캐시를 나타낼 수 있다. 그러나, 일 실시예에 서, L2 캐시(17A-17B)는 점선으로 표시된 바와 같이, 다수의 독립적으로 제어 가능한 메모리 블록들을 사용하여 구현될 수 있다. 일 실시예에서, 블록들 각각은 독립적으로 제어가능한 파워 그리드(grid)를 포함할 수 있다. 그래서 메모리 블록들 각각에 공급된 이러한 파워(VDD)는 독립적으로 제거될 수 있거나 또는 어떤 경우에 있어서는 개별 파워 그리드들에 의해 블록들에 공급된 전압은 독립적으로 낮추어 질 수 있다.
상기 설명된 L2 캐시와 같이, 예시된 실시예에서, L3 캐시(60)는 또한 점선으로 표시된 바와 같이, 다수의 독립적으로 제어가능한 메모리 블록들을 사용하여 구현될 수도 있고, 여기서 블록들 각각은 독립적으로 제어가능한 파워 그리드를 포함할 수 있다. 그래서 메모리 블록들 각각에 공급된 이러한 파워(VDD)는 독립적으로 제거될 수 있거나 또는 어떤 경우에 있어서는 개별 파워 그리드들에 의해 블록들에 공급된 VDD는 독립적으로 낮추어 질 수 있다.
예시된 실시예에서, L3 캐시와 유사하게, 각각의 L2 캐시 메모리들(17A-17B) 각각은 L2 캐시 모니터 유닛(18A-18B)에 각각 연결되고, 그리고 구성 유닛(19A-19B)에 각각 연결된다. 일 실시예에서, 각 캐시 메모리 유닛(예를 들어, 18A, 19A, 85)은 이 유닛에 연결된 각각의 캐시 메모리의 이용도를 모니터링 하도록 구성될 수 있다. 예를 들어, L2 캐시 모니터 유닛(18A)은 L2 캐시(17A)의 이용도를 모니터링 할 수 있다. 예시된 실시예에서, 각 캐시 모니터 유닛은 현재의 캐시 이용도를 결정할 수 있고 현재의 이용도가 소정의 이용도 한계 안에 있는지 여부를 결정할 수 있는 회로들(예를 들어, 40A, 40B, 86)을 포함한다. 더 특별하게는, 예로서, 캐시 모니터 유닛(18A)은 L2 캐시(17A)의 현재의 이용도가 소정의 스레시홀드(threhhold) 값 아래에 있는지 여부를 결정할 수 있다. 만약 그렇다면, 캐시 모니터 유닛(18A)은 구성 유닛(19A)에 통지할 수 있다.
일 실시예에서, 구성 유닛(19A)은 예를 들어 프로그램 가능한 레지스터들과 같은 42A로 표시된 하나 또는 그 이상의 저장소들을 포함하며, 이 저장소는 L2 캐시(17A)의 다양한 구성 선호도 및 상태에 대응하는 값들을 저장할 수 있다. 저장소(42A) 내에 저장된 값들에 따라, 구성 유닛(19A)은, L2 캐시 모니터(18A)로부터의 통지에 응답하여 L2 캐시(17A)의 하나 또는 그 이상의 독립적으로 제어가능한 메모리 블록들을 선택적으로 인에이블링(enabling)(활성화) 또는 디스에이블링(disabling)(또는 불활성화)하도록 프로그래밍(programming) 될 수 있다. 추가로, 저장소(42A) 내에 저장된 값들은 소정의 블록에 대한 파워 그리드가 턴오프(turn off)될 수 있는지 또는 전압이 낮추어질 수 있는지 여부를 결정할 수 있다. 예를 들어, 프로세서 코어가 콘텍스트 스위치(context switch)를 수행하는 때와 같은 어떤 경우에 있어서, L2 캐시는 새로운 스레드 또는 콘텍스트에 대해 사용될 수 없다. 그러나, 콘텍스트가 스위칭 백(switching back)되는 경우, L2 캐시(17A) 내에 저장된 데이터가 준비되어 있는 것이 바람직할 수 있다. 이러한 경우에, 하나 또는 그 이상의 블록들에 대한 전압을 간단히 낮추는 것은 이 블록 내에 저장된 데이터가 유지되도록 할 수 있지만, 더 이상의 억세스는, 블록들이 다시 인에이블링 되고 전압이 정상으로 다시 돌아올 때까지, 디스에이블링 되거나 또는 금지될 수 있다.
구성 유닛(50)은 프로세서 코어(15A)가 프로세서 코어(15B)의 L2 캐시(17B)를 공유하도록 더 구성될 수 있고, 그 반대의 경우도 가능하며, 이것은 그 안에 저장된 구성 값들에 따라 이루어진다. 예를 들어, L2 캐시(17A)의 현재의 이용도가 윗쪽(upper) 스레시홀드 값 위에 있다고 캐시 모니터(40A)가 결정하는 것에 응답하여, 구성 유닛(42A)은 L2 캐시(17B)에 대한 억세스를 요구할 수 있다. 이러한 경우에, 구성 유닛(42B)은, 만약 L2 캐시(17B)가 디스에이블링된 블록들을 가지고 따라서 공유 가능하다면 공유된 억세스를 허용할 수 있다.
일 실시예에서, 구성 유닛(19A, 19B, 및 50) 각각의 저장소(42A, 42B 및 51)은 디폴트(default) 선호 값을 포함할 수 있다. 대안적으로, 선호 값은 저장소들 안으로 프로그래밍 될 수 있다. 이러한 선호 값들은 대응하는 캐시 모니터 유닛으로부터의 통지를 수신하는 것에 응답하여 어떤 행동이 취해질 수 있는지를 결정하는데 사용될 수 있다. 예를 들어, 상기 설명된 바와 같이 구성 유닛들은, 파워를 제거하거나 또는 전압을 낮춤으로써 L3 캐시와 대응하는 프로세서 코어 내의 L2 캐시의 부분들을 디스에이블링 할지 여부를 결정하기 위해, 이러한 값들을 사용할 수 있다. 추가로, 일 실시예에서, 구성 유닛은 만약 있다면 파워-업(power-up)에서 L2 또는 L3 캐시 메모리의 어떤 부분들이 디스에이블링 되어야 할지를 결정하기 위해 이 값들을 사용할 수 있다.
일 실시예에서, 저장소(42A, 42B, 및 51)는 소프트웨어를 사용하여 프로그래밍될 수 있다. 예를 들어, 특별한 명령들이 저장소(42A, 42B, 및 51)에 억세스하기 위해 사용될 수 있다. 또 다른 실시예에서, 저장소(42A, 42B, 및 51)는 상기 설명된 바와 같이 하드 퓨즈(hard fuses)를 사용하여 더 영구적으로 프로그래밍될 수 있다. 이러한 실시예에서, 이 값들은 끊어진 퓨즈로부터 판독되고 그리고 저장소 내에 저장된다. 일 실시예에서, 하드 퓨즈는 외부 프로그래밍에 의해 오버라이딩(overriding) 될 수 있다. 이러한 실시예에서, 저장소(42A, 42B, 및 51)는 예를 들어 JTAG(Joint Test Action Group) 포트(port)와 같은 외부 포트를 통해 각각 구성 포트(44A, 44B, 및 54)를 통해 프로그래밍 될 수 있다. 이러한 방식으로 하드 퓨즈 구성을 오버라이딩하는 것은 때때로 소프트 퓨즈(soft fuses)를 통한 프로그래밍으로 언급된다.
일 실시예에서, 캐시 모니터(18A, 18B, 및 85)는, 각각의 캐시의 얼마나 많은 엔트리(entries)이 사용되고 있는지 그리고 각각의 캐시가 얼마나 빈번하게 억세스되고 있는지와 같은 파라미터(parameters)를 사용하여 현재의 이용도를 결정할 수 있다. 일 실시예에서, 사용되고 있는 소정의 캐시 내의 엔트리의 수는, 캐시에 대한 기입을 카운팅하기 위해 카운터(counter)(명확하게 도시되지 않았음, 40A, 40B 및 86의 일부)를 사용하는 프로브(probe)를 사용하지 않고 기입이 희생(victim)을 발생시키는지 발생시키지 않은지를 모니터링 함으로써 결정될 수 있다. 만약 희생이 발생되지 않는다면, 기입은 결국 새로운 엔트리의 할당임이 분명하다. 만약 희생이 발생된다면, 에트리의 수는 동일한 채로 있다. 따라서, 만약 희생이 발생 된다면, 기입은 카운팅되지 않을 수 있다. 추가로, 일 실시예에서 캐시가 억세스되는 빈도는 예를 들어 포화 카운터(명확하게 도시되지 않음, 회로(40A)의 일부)를 사용하여 결정될 수 있다. 일 실시예에서, 포화 카운터는 캐시가 억세스될 때마다 증가될 수 있다. 카운터는 어떤 클럭 간격(clock interval)에서 감소될 수 있지만 결코 제로(0) 아래로는 감소하지 않을 수 있다. 만약 카운터 값이 어떤 소정의 값 위에서 머무른 다면, 캐시 억세스 빈도가 높은 것으로 추정될 수 있고, 그럼으로써 높은 이용도를 표시할 수 있다. 이러한 두 개의 파라미터로부터 아래 쪽(lower) 소정의 이용도 값과 윗쪽 소정의 이용도 값이 계산될 수 있다. 다른 실시예에서 다른 매커니즘(mechanisms)이 요구에 따른 캐시 이용도를 결정하기 위해 사용될 수 있다는 것을 주의해야 한다.
도 1에서 예시된 컴퓨터 시스템(10)이 프로세싱 노드(12)를 포함하지만, 다른 실시예들은 어떠한 수의 프로세싱 노드들을 구현할 수 있다. 마찬가지로, 노드(12)와 같은 프로세싱 노드는, 다양한 실시예에서, 어떠한 수의 프로세서 코어들을 포함할 수 있다. 컴퓨터 시스템(10)의 다양한 실시예들은 또한 노드(12) 당 다른 개수의 HT 인터페이스들을 포함할 수도 있고, 노드에 연결된 다른 개수의 주변 장치들(13), 등등을 포함할 수 있다.
도 2로 돌아가서 컴퓨터 시스템(20)의 또 다른 실시예의 블록도가 도시된다. 도 1에서 도시된 것에 대응하는 컴포넌트들은 명료함과 간단함을 위해 동일하게 번호가 부여된다. 도 1의 컴퓨터 시스템(10)과 유사하게, 도 2의 컴퓨터 시스템(20)은 메모리(14)와 주변 장치(13A-13B)에 연결된 프로세싱 노드(22)를 포함한다. 프로세싱 노드(22)는 도 1의 노드(12)와 유사한 기능을 포함한다. 따라서, 노드(12)와 공통적인 기능의 설명은 여기서 간결함을 위해 생략되는 반면 다른 기능이 설명될 것이다. 도 2의 프로세싱 노드(12)가 간단함을 위해 생략된 다양한 다른 회로들을 포함할 수 있다는 것에 주의해야 한다.
도 2에 도시된 실시예에서, 프로세싱 노드(12)와 같이, 프로세싱 노드(22)는 또한 노드 제어기(20)에 연결된 프로세서 코어(15A-15B)를 포함하고, 노드 제어기(20)는 메모리 제어기(22)와 복수의 HyperTransportTM(HT) 인터페이스 회로(24A-24C)에 더 연결된다. 추가로, 프로세서 코어(15A-15B)는 또한 공유된 레벨 3(L3) 캐시 메모리(60)에 연결된다. 그러나, L3 캐시(60)는 캐시 모니터(95)와 구성 유닛(65)에 연결된다. 일 실시예에서, 노드(22)는 도 2에 도시된 회로를 포함하는 단일 집적 회로 칩일 수 있다. 즉, 노드(22)는 칩 멀티프로세서(CMP)일 수 있다.
예시된 실시예에서, 그리고 도 1의 실시예와 대조적으로, L2 캐시 메모리(17A-17B) 각각은 또한 캐시 모니터 유닛(95)와 구성 유닛(65)에 연결된다. 일 실시예에서, 캐시 모니터 유닛(95)은, 도 1의 설명과 함께 앞서 설명된 바와 같은 기능을 사용하여, 이 캐시 모니터 유닛(95)에 연결된 모든 캐시 메모리들(예를 들어, L2 캐시(17A-17B) 및 L3 캐시(60))의 이용도를 모니터링 하도록 구성될 수 있다.
일 실시예에서, 앞서 설명된 바와 유사하게 구성 유닛(65)은 예를 들어 프로그램가능 레지스터와 같은 61로 표시된 하나 또는 그 이상의 저장소를 포함하며, 이 저장소는 다양한 구성 선호도 및 L2 캐시(17A-17B)와 L3 캐시(60)의 상태에 대응하는 값들을 저장할 수 있다. 저장소(61) 내에 저장된 값들에 따라, 구성 유닛(65)은 캐시 모니터 유닛(95)으로부터의 통지에 응답하여 L2 캐시(17A-17B)와 L3 캐시(60)의 하나 또는 그 이상의 독립적으로 제어가능한 메모리 블록들을 선택적으로 인에블링 또는 디스에이블링 하도록 프로그래밍 될 수 있다. 마찬가지로, 저장 소(61) 내에 저장된 값들은 소정의 블록에 대한 파워 그리드가 턴오프 될 수 있는지 여부 또는 전압이 낮추어질 수 있는지 여부를 결정할 수 있다. 저장소(61)가 상기 설명된 저장소(42A, 42B, 및 51)와 유사하게 프로그래밍 될 수 있다는 것에 주의해야 한다.
더욱이, 구성 유닛(60)은, 프로세서 코어(15A)가 프로세서 코어(15B)의 L2 캐시(17B)를 공유하도록 구성될 수 있고, 그리고 그 반대의 경우도 가능하며, 이는 그 안에 저장된 구성 값들에 따라 이루어진다. 예를 들어, 캐시 모니터(95)가 L2 캐시(17A)의 현재의 이용도가 윗쪽 스레시홀드 값 위에 있다고 결정하는 것에 응답하여, 구성 유닛(65)은 프로세서 코어(15A)에 의해 L2 캐시(17B)에 대한 억세스를 인에이블링 할 수 있다. 이러한 경우에, 구성 유닛(65)은 만약 L2 캐시(17B)가 디스에이블링되고 공유가능한 블록들을 가지고 있다면 공유된 억세스를 허용할 수 있다.
도 3은 프로세싱 노드(12)의 일 실시예의 동작을 설명하는 순서도를 나타낸다. 도 1 및 도 3을 총체적으로 참조하면, 일 실시예에서, 노드(12)가 처음 파워 업되는 경우 또는 리세트(reset) 되는 경우, 구성 유닛(42A) 안에 저장된 구성 값들은 판독될 수 있고 L2 캐시(17A)를 구성하기 위해 사용될 수 있다. 마찬가지로, 구성 유닛(42B) 안에 저장된 구성 값들은 판독될 수 있고 L2 캐시(17B)를 구성하기 위해 사용될 수 있으며 그리고 구성 유닛(50) 안에 저장된 구성 값들은 판독될 수 있고 L3 캐시(60)를 구성하기 위해 사용될 수 있다. 노드(12)의 동작 동안, 캐시 모니터 유닛(18A, 18B, 및 85)은 그들 각각의 캐시 메모리의 현재의 이용도를 모니터링 하도록 구성된다(블록(300)). 예를 들어, 상기 설명된 바와 같이, 캐시 모니터 유닛(18A, 18B, 및 85)은, 그들 각각의 캐시에 대한 현재의 이용도를 결정하기 위해, 캐시 엔트리 사용 및 캐시 억세스 빈도를 추적할 수 있다.
블록(305)에서, 현재의 이용도에 기초하여, 캐시 모니터 유닛(85)은 각각의 현재의 이용도가 소정의 한계 내에 있는지 여부를 결정할 수 있다. 일 실시예에서, 캐시 모니터 유닛(85)은 L3 캐시(60)의 현재의 이용도를 위쪽 스레시홀드 값 및 아래쪽 스레시홀드 값과 비교할 수 있다.
만약 현재의 이용도가 소정의 스레시홀드 값들 안에 있다면, 캐시 모니터 유닛(85)은 블록(300)에서 앞서 설명된 바와 같이 L3 캐시(60)의 이용도를 계속 모니터링 한다. 그러나, 만약 현재의 이용도가 소정의 스레시홀드 값들 안에 있지 않고 아래쪽 스레시홀드 값 아래에 있다면(블록(305)), 캐시 모니터 유닛(85)은 구성 유닛(50)에 통지를 제공할 수 있다(블록(310)). 구성 유닛(50)은 L3 캐시(60)의 하나 또는 그 이상의 블록들을 선택적으로 디스에이블링 할 수 있다(블록(315)). 일 실시예에서, 구성 유닛(50)은 저장소(51) 안에 저장된 구성 선호도에 따라 그리고 상기 통지에 응답하여 블록들을 디스에이블링 할 수 있다. 예를 들어, 상기 설명된 바와 같이, 파워는 선택된 블록들로부터 제거될 수 있거나 더 낮은 전압으로 감소될 수 있다. 추가로, 일 실시예에서, 맨 처음 선택되는 블록들은 프로세서 코어(15A-15B)로부터 가장 멀리 떨어진 블록들일 수 있는데, 이것은 이러한 블록들이 가장 긴 경로 지연을 나타낼 수 있기 때문이다. 선택된 블록들이 디스에이블링 되면, 캐시 모니터(85)는 블록(300)에서 상기 설명된 바와 같이 이용도를 계속 모니터링 한다.
블록(305)으로 다시 돌아가서, 만약 현재의 이용도가 소정의 스레시홀드 값들 안에 있지 않고 위쪽 스레시홀드 값 위에 있다면, 캐시 모니터 유닛(85)은 구성 유닛(50)에 통지를 제공할 수 있다(블록(320)). 구성 유닛(50)은 만약 디스에이블링된 블록들이 존재한다면 L3 캐시(60)의 하나 또는 그 이상의 디스에이블링된 블록들을 선택적으로 인에이블링 할 수 있다(블록(315)). 일 실시예에서, 구성 유닛(50)은 저장소(51)에 저장된 구성 선호도에 따라 블록들을 인에이블링 할 수 있다. 선택된 블록들이 다시 인에이블링 되는 경우, 캐시 모니터(85)는 블록(300)에서 상기 설명된 바와 같이 이용도를 계속 모니터링 한다.
블록(330)에서, 현재의 이용도에 기초하여, 캐시 모니터 유닛(18A와 18B)은 각각의 현재의 이용도가 소정의 한계 내에 있는지 여부를 결정할 수 있다. 더 특별하게는, 일 실시예에서, 캐시 모니터 유닛(18A, 18B)은 L2 캐시(17A-17B)의 현재의 이용도를 위쪽 스레시홀드 값 및 아래쪽 스레시홀드 값과 비교할 수 있다.
만약 현재의 이용도가 소정의 스레시홀드 값들 안에 있다면, 캐시 모니터 유닛(18A, 18B)은 블록(300)에서 상기 설명된 바와 같이 L2 캐시(17A-17B)의 이용도를 계속 모니터링 한다. 그러나, 만약 어느 한 캐시의 현재의 이용도가 소정의 스레시홀드 값들 안에 있지 않고 아래쪽 스레시홀드 값 아래에 있다면(블록(330)), 적당한 캐시 모니터 유닛(18A-18B)이 구성 유닛(19A-19B)에 통지를 제공할 수 있다(블록(335)). 구성 유닛(19A-19B)은 대응하는 L2 캐시(17A-17B)의 하나 또는 그 이상의 블록들을 선택적으로 디스에이블링 할 수 있다(블록(340)). 일 실시예에서, 구성 유닛(19A-19B)은 각각 저장소(42A-42B) 안에 저장된 구성 선호도에 따라 그리고 상기 통지에 응답하여 블록들을 디스에이블링 할 수 있다. 예를 들어, 상기 설명된 바와 같이, 파워는 선택된 블록들로부터 제거될 수 있거나 더 낮은 전압으로 감소될 수 있다. 추가로, 일 실시예에서, 처음 선택된 블록들은 프로세서 코어(15A-15B)의 CPU 로직(logic)으로부터 가장 멀리 떨어진 블록들일 수 있으며, 이것은 이러한 블록들이 가장 긴 경로 지연을 나타낼 수 있기 때문이다. 선택된 블록들이 디스에이블링되는 경우, 캐시 모니터 유닛(18A-18B)은 블록(300)에서 상기 설명된 바와 같이 상기 이용도를 계속 모니터링 한다.
블록(330)을 다시 참조하면, 만약 현재의 이용도가 소정의 스레시홀드 값들 안에 있지 않고 위쪽 스레시홀드 값 위에 있다면, 캐시 모니터 유닛(18A-18B)은 구성 유닛(19A-19B)에 통지를 제공할 수 있다(블록(345)). 만약 어떤 L2 블록들이 영향을 받은 L2 캐시 내에서 디스에이블링 된다면(블록(350)), 구성 유닛(19A-19B)은 L2 캐시(17A-17B)의 하나 또는 그 이상의 블록들을 선택적으로 인에이블링 할 수 있다(블록(350)). 일 실시예에서, 구성 유닛(19A-19B)은 각각 저장소(42A-42B) 내에 저장된 구성 선호도에 따라 그리고 상기 통지에 응답하여 블록들을 디스에이블링 할 수 있다. 예를 들어, 상기 설명된 바와 같이, 파워는 선택된 블록들로부터 제거될 수 있거나 더 낮은 전압으로 감소될 수 있다. 추가로, 일 실시예에서, 맨 처음 선택되는 블록들은 프로세서 코어(15A-15B)로부터 가장 멀리 떨어진 블록들일 수 있는데, 이것은 이러한 블록들이 가장 긴 경로 지연을 나타낼 수 있기 때문이다. 선택된 블록들이 디스에이블링 되면, 캐시 모니터 유닛(18A-18B)은 블록(300)에서 상기 설명된 바와 같이 이용도를 계속 모니터링 한다.
그러나, 만약 영향을 받은 L2 캐시 내에 디스에이블링된 블록들이 존재하지 않는다면(블럭(350)), 영향을 받은 L2 캐시(즉, 과도하게 사용된 L2 캐시)의 구성 유닛은 다른 프로세서 코어의 구성 유닛으로부터, 다른 코어의 L2 캐시 공유에 대한 억세스 허락을 요구할 수 있다. 예를 들어, 만약 캐시 모니터 유닛(18B)이 L2 캐시(17B)의 현재의 이용도가 위쪽 스레시홀드 위에 있다고 결정한다면, 구성 유닛(19B)은 구성 유닛(19A)으로부터 L2 캐시(17A)로의 억세스를 요구할 수 있다. 이 요구에 응답하여, 구성 유닛(19A)은 L2 캐시(17A)가 공유하려는 디스에이블링된 블록들을 가지고 있는지 여부를 결정할 수 있다(블록(360)). 만약 그렇다면, 구성 유닛(19A)은 프로세서 코어(15B)에 대한 억세스를 허용할 수 있어 L2 캐시(17A)의 디스에이블링된 블록들을 공유할 수 있도록 할 수 있다(블록(365)). 이러한 디스에이블링된 블록들은 다시 인에이블링될 수 있다. 동작은 블록(300)에서 상기 설명된 바와 같이 진행한다.
도 4와 도 5의 아래의 설명은 단일 프로세서 코어를 포함하는 마이크로프로세서의 맥락에서 구성가능한 캐시 메모리의 추가적인 실시예들을 제공한다.
동적으로 구성가능한 캐시를 갖는 단일 마이크로프로세서
이제 도 4를 참조하면, 단일 프로세서 코어 및 구성가능한 캐시 메모리를 포함하는 마이크로프로세서의 일 실시예의 블록도가 도시된다. 마이크로프로세서(415)는 L1 캐시(475), L2 캐시(417), 및 L3 캐시(460)에 연결된 프로세서 코어 로직(450)을 포함한다. 마이크로프로세서(415)는 또한 L2 캐시(417)와 L3 캐시(460)에 연결된 캐시 모니터 유닛(418)을 포함한다. 더욱이, 마이크로프로세 서(415)는 캐시 모니터(418)와 L1 캐시(475), L2 캐시(417), 및 L3 캐시(460) 각각에 연결된 구성 유닛(419)을 포함한다. 마이크로프로세서(415)는 간단함을 위해 생략되는 다양한 다른 회로들을 포함할 수 있다는 것에 주의해야 한다.
예시된 실시예에서, 캐시 모니터(418)와 구성 유닛(419)의 기능은 도 2 및 도 3과 함께 앞서 설명된 L2 캐시 모니터(95)와 구성 유닛(65)의 기능과 같다. 따라서, 그 설명은 간결함을 위해 생략된다.
도 5로 돌아가서, 도 4의 마이크로프로세서의 일 실시예의 동작을 설명하는 순서도가 도시된다. 도 4와 도 5를 총체적으로 참조하면, 일 실시예에서, 마이크로프로세서(415)가 처음 파워 업 되거나 리세트 되는 경우 구성 유닛(419)의 저장소(442) 내에 저장된 구성 값들은 판독될 수 있고 L2 캐시(417)를 구성하기 위해 사용될 수 있다. 마찬가지로 구성 유닛(419) 안에 저장된 구성 값들은 판독될 수 있고 L3 캐시(460)를 구성하기 위해 사용될 수 있다. 마이크로프로세서(415)의 동작 동안, 캐시 모니터 유닛(418)은 캐시 메모리들 각각의 현재의 이용도를 모니터링 하도록 구성된다(블록(500)). 예를 들어, 상기 설명된 바와 같이, 캐시 모니터 유닛(418)은, 각각의 캐시에 대한 현재의 이용도를 결정하기 위해, 캐시 엔트리 사용 및 캐시 억세스 빈도를 추적할 수 있다.
블록(505)에서, 현재의 이용도에 기초하여, 캐시 모니터 유닛(418)은 각 캐시의 각각의 현재의 이용도가 소정의 한계 내에 있는지 여부를 결정할 수 있다. 일 실시예에서, 캐시 모니터 유닛(418)은 L2 캐시(417)의 현재의 이용도 및 L3 캐시(460)의 현재의 이용도를 위쪽 스레시홀드 값 및 아래쪽 스레시홀드 값과 비교할 수 있다.
만약 현재의 이용도가 소정의 스레시홀드 값들 안에 있다면, 캐시 모니터 유닛(418)은 블록(500)에서 앞서 설명된 바와 같이 L2 캐시(417) 및 L3 캐시(460)의 이용도를 계속 모니터링 한다. 그러나, 만약 현재의 이용도가 소정의 스레시홀드 값들 안에 있지 않고 아래쪽 스레시홀드 값 아래에 있다면(블록(505)), 캐시 모니터 유닛(418)은 구성 유닛(419)에 통지를 제공할 수 있다(블록(510)). 구성 유닛(419)은 L2 캐시(417) 또는 L3 캐시(460) 중 어느 하나의 캐시의 하나 또는 그 이상의 블록들을 선택적으로 디스에이블링 할 수 있다(블록(515)). 일 실시예에서, 구성 유닛(419)은 저장소(442) 내에 저장된 구성 선호도에 따라 그리고 상기 통지에 응답하여 블록들을 디스에이블링 할 수 있다. 예를 들어, 상기 설명된 바와 같이, 파워는 선택된 블록들로부터 제거될 수 있거나 더 낮은 전압으로 감소될 수 있다. 추가로, 일 실시예에서, 맨 처음 선택되는 블록들은 프로세서 코어 로직(450)으로부터 가장 멀리 떨어진 블록들일 수 있는데, 이것은 이러한 블록들이 가장 긴 경로 지연을 나타낼 수 있기 때문이다. 선택된 블록들이 디스에이블링 되면, 캐시 모니터(418)는 블록(500)에서 상기 설명된 바와 같이 이용도를 계속 모니터링 한다.
블록(505)로 다시 돌아가서, 만약 현재의 이용도가 소정의 스레시홀드 값들 안에 있지 않고 위쪽 스레시홀드 값 위에 있다면, 캐시 모니터 유닛(418)은 구성 유닛(419)에 통지를 제공할 수 있다(블록(510)). 구성 유닛(419)은 만약 디스에이블링된 블록들이 존재한다면 L2 캐시(417) 또는 L3 캐시(460) 중 어느 하나의 캐시 의 하나 또는 그 이상의 디스에이블링 된 블록들을 선택적으로 인에이블링 할 수 있다(블록(525)). 일 실시예에서, 구성 유닛(419)은 저장소(442)에 저장된 구성 선호도에 따라 블록들을 인에이블링 할 수 있다. 선택된 블록들이 다시 인에이블링 되는 경우, 캐시 모니터(418)는 블록(500)에서 상기 설명된 바와 같이 이용도를 계속 모니터링 한다.
상기 설명된 바와 유사하게, 일 실시예에서, 저장소(440과 442)는 소프트웨어를 사용하여 프로그래밍될 수 있다. 예를 들어, 특별한 명령들이 저장소(440과 442)에 억세스하기 위해 사용될 수 있다. 또 다른 실시예에서, 저장소(440과 442)는 상기 설명된 바와 같이 하드 퓨즈를 사용하여 더 영구적으로 프로그래밍될 수 있다. 이러한 실시예에서, 이 값들은 끊어진 퓨즈로부터 판독될 수 있고 그리고 저장소 내에 저장될 수 있다. 일 실시예에서, 하드 퓨즈는 외부 프로그래밍에 의해 오버라이딩 될 수 있다. 이러한 실시예에서, 저장소(440과 442)는 구성 포트(44A)를 통해, 예를 들어 JTAG(Joint Test Action Group) 포트와 같은 외부 포트를 통해 프로그래밍 될 수 있다. 이러한 방식으로 하드 퓨즈 구성을 오버라이딩하는 것은 때때로 소프트 퓨즈를 통한 프로그래밍으로 언급된다.
상기 설명된 실시예들에서, L3 캐시 메모리가 보여짐에 주의해야 한다. 그러나, 다른 실시예들은 L3 캐시를 포함하지 않을 수도 있다. L3 캐시가 존재하지 않는 것이 어쨌든 L2 캐시의 구성 가능성을 떨어뜨리지 않는다.
앞서의 실시예들이 매우 세부적으로 설명되었지만, 여러 변형 및 수정은 앞서의 개시내용을 충분히 이해했다면 본 발명의 기술분야에서 숙련된 기술을 가진 자들에게는 명백할 것이다. 다음의 특허청구범위는 이러한 모든 수정 및 변형을 포함하는 것으로 해석되도록 의도된 것이다.
본 발명은 일반적으로 마이크로프로세서 및 칩 멀티프로세서에 대한 캐시 메모리의 재구성에 응용가능 할 수 있다.
Claims (10)
- 프로세서(415)의 캐시 메모리(417, 460)를 구성(configuration)하는 방법으로서,상기 프로세서(415)는 상기 캐시 메모리(417, 460)에 연결되는 캐시 모니터 유닛(418)과 그리고 상기 캐시 모니터 유닛(418) 및 상기 캐시 메모리에 연결되는 구성 유닛(configuration unit)(419)을 포함하며,상기 캐시 모니터 유닛(418)이 상기 캐시 메모리(417, 460)의 현재 이용도를 모니터링하는 단계와;상기 캐시 모니터 유닛(418)이 상기 현재 이용도가 사전에 결정된 이용도 값보다 작은지 여부를 결정하는 단계와; 그리고상기 구성 유닛(419)이, 상기 현재 이용도가 상기 사전에 결정된 이용도 값보다 작다는 결정에 응답하여, 상기 캐시 메모리의 하나 이상의 부분들에 대한 공급 전압 레벨을 제어함으로써 상기 캐시 메모리의 하나 이상의 부분들을 선택적으로 불활성화(disabling)하는 단계를 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
- 제1항에 있어서,상기 프로세서(415)가, 구성가능한 저장소(configurable unit)(442)에 상기 사전에 결정된 이용도 값을 저장하는 단계를 더 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
- 제1항에 있어서,상기 이용도가 사전에 결정된 이용도 값보다 작은지 여부를 결정하는 단계는 상기 사전에 결정된 이용도 값을 상기 현재 이용도와 비교하는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
- 제1항에 있어서,상기 캐시 메모리에서 사용되는 엔트리들의 수를 결정하고 그리고 상기 캐시 메모리가 억세스되는 빈도를 결정함으로써 현재 이용도 값을 결정하는 단계를 더 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
- 제4항에 있어서,상기 캐시 메모리에서 사용되는 엔트리들의 수를 결정하는 것은, 희생이 발생 되도록 하는 상기 캐시 메모리에 대한 기입들의 수를 모니터링하는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
- 제4항에 있어서,상기 캐시 메모리가 억세스되는 빈도를 결정하는 것은 카운터를 사용하여 상기 캐시 메모리에 대한 억세스들의 수를 카운팅하는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
- 프로세서(415)로서,캐시 메모리(417, 460)와;상기 캐시 메모리(417, 460)에 연결되어, 상기 캐시 메모리의 현재 이용도를 모니터링하고, 상기 현재 이용도가 사전에 결정된 이용도 값보다 작은지 여부를 결정하도록 된 캐시 모니터 유닛(418)과; 그리고상기 캐시 모니터 유닛 (418)및 상기 캐시 메모리(417, 460)에 연결된 구성 유닛(419)을 포함하여 구성되며,여기서 상기 구성 유닛(419)은, 상기 캐시 모니터 유닛이 상기 현재 이용도가 상기 사전에 결정된 이용도 값보다 작다고 결정하는 것에 응답하여, 상기 캐시 메모리의 하나 이상의 부분들에 대한 공급 전압 레벨을 제어함으로써, 상기 캐시 메모리의 하나 이상의 부분들을 선택적으로 불활성화하도록 된 것을 특징으로 하는 프로세서.
- 제1항에 있어서,상기 캐시 메모리의 하나 이상의 부분들에 대한 상기 공급 전압을 제어하는 것은, 상기 공급 전압을 정상 동작 전압 레벨보다 낮은 레벨로 감소시키는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
- 제1항에 있어서,상기 캐시 메모리의 하나 이상의 부분들에 대한 상기 공급 전압을 제어하는 것은, 상기 전압을 제거하는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
- 제7항에 있어서,상기 사전에 결정된 이용도 값을 저장하기 위한 구성가능한 저장소를 더 포함하는 것을 특징으로 하는 프로세서.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/956,560 US7257678B2 (en) | 2004-10-01 | 2004-10-01 | Dynamic reconfiguration of cache memory |
US10/956,560 | 2004-10-01 | ||
PCT/US2005/033671 WO2006039153A1 (en) | 2004-10-01 | 2005-09-21 | Dynamic reconfiguration of cache memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070054715A KR20070054715A (ko) | 2007-05-29 |
KR101136141B1 true KR101136141B1 (ko) | 2012-04-17 |
Family
ID=35519765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077007488A KR101136141B1 (ko) | 2004-10-01 | 2005-09-21 | 캐시 메모리의 동적 재구성 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7257678B2 (ko) |
JP (1) | JP4456154B2 (ko) |
KR (1) | KR101136141B1 (ko) |
CN (1) | CN101048763B (ko) |
DE (1) | DE112005002672B4 (ko) |
GB (1) | GB2432695B (ko) |
TW (1) | TWI403899B (ko) |
WO (1) | WO2006039153A1 (ko) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101151599B (zh) * | 2005-03-31 | 2011-08-03 | 株式会社半导体能源研究所 | 算术处理装置和使用算术处理装置的电子设备 |
US20080201528A1 (en) * | 2005-04-06 | 2008-08-21 | Mediatek Inc. | Memory access systems for configuring ways as cache or directly addressable memory |
US7467280B2 (en) * | 2006-07-05 | 2008-12-16 | International Business Machines Corporation | Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache |
US7809926B2 (en) * | 2006-11-03 | 2010-10-05 | Cornell Research Foundation, Inc. | Systems and methods for reconfiguring on-chip multiprocessors |
WO2008152790A1 (ja) * | 2007-06-12 | 2008-12-18 | Panasonic Corporation | マルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路 |
US20090006036A1 (en) * | 2007-06-27 | 2009-01-01 | International Business Machines Corporation | Shared, Low Cost and Featureable Performance Monitor Unit |
US7680978B1 (en) * | 2007-09-05 | 2010-03-16 | Juniper Networks, Inc. | Reducing content addressable memory (CAM) power consumption counters |
US9513695B2 (en) * | 2008-06-24 | 2016-12-06 | Virident Systems, Inc. | Methods of managing power in network computer systems |
US8327126B2 (en) * | 2008-08-25 | 2012-12-04 | International Business Machines Corporation | Multicore processor and method of use that adapts core functions based on workload execution |
US8271728B2 (en) * | 2008-11-13 | 2012-09-18 | International Business Machines Corporation | Spiral cache power management, adaptive sizing and interface operations |
US8195887B2 (en) * | 2009-01-21 | 2012-06-05 | Globalfoundries Inc. | Processor power management and method |
US8103894B2 (en) * | 2009-04-24 | 2012-01-24 | International Business Machines Corporation | Power conservation in vertically-striped NUCA caches |
US8924645B2 (en) * | 2010-03-08 | 2014-12-30 | Hewlett-Packard Development Company, L. P. | Data storage apparatus and methods |
US8438410B2 (en) * | 2010-06-23 | 2013-05-07 | Intel Corporation | Memory power management via dynamic memory operation states |
US20120096295A1 (en) * | 2010-10-18 | 2012-04-19 | Robert Krick | Method and apparatus for dynamic power control of cache memory |
US8516205B2 (en) * | 2010-10-29 | 2013-08-20 | Nokia Corporation | Method and apparatus for providing efficient context classification |
US8711633B2 (en) * | 2011-05-12 | 2014-04-29 | Micron Technology, Inc. | Dynamic data caches, decoders and decoding methods |
JP5820335B2 (ja) | 2011-05-20 | 2015-11-24 | 株式会社半導体エネルギー研究所 | 半導体装置 |
JP5820336B2 (ja) | 2011-05-20 | 2015-11-24 | 株式会社半導体エネルギー研究所 | 半導体装置 |
JP6012263B2 (ja) | 2011-06-09 | 2016-10-25 | 株式会社半導体エネルギー研究所 | 半導体記憶装置 |
WO2012169142A1 (en) | 2011-06-09 | 2012-12-13 | Semiconductor Energy Laboratory Co., Ltd. | Cache memory and method for driving the same |
US8595464B2 (en) * | 2011-07-14 | 2013-11-26 | Oracle International Corporation | Dynamic sizing of translation lookaside buffer for power reduction |
US8868843B2 (en) | 2011-11-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Hardware filter for tracking block presence in large caches |
US20130138884A1 (en) * | 2011-11-30 | 2013-05-30 | Hitachi, Ltd. | Load distribution system |
CN103246542B (zh) * | 2012-02-01 | 2017-11-14 | 中兴通讯股份有限公司 | 智能缓存及智能终端 |
US9135182B2 (en) | 2012-06-01 | 2015-09-15 | Semiconductor Energy Laboratory Co., Ltd. | Central processing unit and driving method thereof |
US20140136793A1 (en) * | 2012-11-13 | 2014-05-15 | Nvidia Corporation | System and method for reduced cache mode |
US9360924B2 (en) | 2013-05-29 | 2016-06-07 | Intel Corporation | Reduced power mode of a cache unit |
US9568986B2 (en) | 2013-09-25 | 2017-02-14 | International Business Machines Corporation | System-wide power conservation using memory cache |
JP6474280B2 (ja) | 2014-03-05 | 2019-02-27 | 株式会社半導体エネルギー研究所 | 半導体装置 |
WO2016097810A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon mode |
EP3129886B1 (en) | 2014-12-14 | 2019-10-02 | VIA Alliance Semiconductor Co., Ltd. | Dynamic cache replacement way selection based on address tag bits |
US10719434B2 (en) | 2014-12-14 | 2020-07-21 | Via Alliance Semiconductors Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode |
US10255190B2 (en) | 2015-12-17 | 2019-04-09 | Advanced Micro Devices, Inc. | Hybrid cache |
JP6405331B2 (ja) * | 2016-03-22 | 2018-10-17 | 日本電信電話株式会社 | キャッシュ管理システム、評価方法、管理サーバ、物理サーバ、および、測定サーバ |
JP6511023B2 (ja) * | 2016-08-22 | 2019-05-08 | 日本電信電話株式会社 | 仮想マシン管理装置およびデプロイ可否判断方法 |
US11163688B2 (en) * | 2019-09-24 | 2021-11-02 | Advanced Micro Devices, Inc. | System probe aware last level cache insertion bypassing |
US11264998B1 (en) | 2020-09-24 | 2022-03-01 | Advanced Micro Devices, Inc. | Reference free and temperature independent voltage-to-digital converter |
US11899520B2 (en) * | 2022-04-26 | 2024-02-13 | Advanced Micro Devices, Inc. | Dynamic cache bypass for power savings |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752045A (en) * | 1995-07-14 | 1998-05-12 | United Microelectronics Corporation | Power conservation in synchronous SRAM cache memory blocks of a computer system |
US5860106A (en) * | 1995-07-13 | 1999-01-12 | Intel Corporation | Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem |
EP1182567A1 (en) * | 2000-08-21 | 2002-02-27 | Texas Instruments France | Software controlled cache configuration |
US6795896B1 (en) * | 2000-09-29 | 2004-09-21 | Intel Corporation | Methods and apparatuses for reducing leakage power consumption in a processor |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US5632038A (en) * | 1994-02-22 | 1997-05-20 | Dell Usa, L.P. | Secondary cache system for portable computer |
JPH0950401A (ja) * | 1995-08-09 | 1997-02-18 | Toshiba Corp | キャッシュメモリ及びそれを備えた情報処理装置 |
US5881311A (en) * | 1996-06-05 | 1999-03-09 | Fastor Technologies, Inc. | Data storage subsystem with block based data management |
EP0856798B1 (en) | 1997-01-30 | 2004-09-29 | STMicroelectronics Limited | A cache system |
US6411156B1 (en) * | 1997-06-20 | 2002-06-25 | Intel Corporation | Employing transistor body bias in controlling chip parameters |
JP4017248B2 (ja) * | 1998-04-10 | 2007-12-05 | 株式会社日立製作所 | 半導体装置 |
US6281724B1 (en) * | 1998-11-17 | 2001-08-28 | Analog Devices, Inc. | Circuit for partial power-down on dual voltage supply integrated circuits |
US6349363B2 (en) | 1998-12-08 | 2002-02-19 | Intel Corporation | Multi-section cache with different attributes for each section |
JP2001052476A (ja) * | 1999-08-05 | 2001-02-23 | Mitsubishi Electric Corp | 半導体装置 |
EP1275046B1 (en) * | 2000-04-12 | 2010-10-06 | DSP Group Switzerland AG | Data processing circuit with a cache memory and apparatus containing such a circuit |
US7089391B2 (en) * | 2000-04-14 | 2006-08-08 | Quickshift, Inc. | Managing a codec engine for memory compression/decompression operations using a data movement engine |
DE60041444D1 (de) | 2000-08-21 | 2009-03-12 | Texas Instruments Inc | Mikroprozessor |
US6983388B2 (en) * | 2000-10-25 | 2006-01-03 | Agere Systems Inc. | Method and apparatus for reducing leakage power in a cache memory by using a timer control signal that removes power to associated cache lines |
US6922783B2 (en) * | 2002-01-16 | 2005-07-26 | Hewlett-Packard Development Company, L.P. | Method and apparatus for conserving power on a multiprocessor integrated circuit |
US20030145170A1 (en) * | 2002-01-31 | 2003-07-31 | Kever Wayne D. | Dynamically adjusted cache power supply to optimize for cache access or power consumption |
US6944714B2 (en) * | 2002-07-30 | 2005-09-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for saving microprocessor power when sequentially accessing the microprocessor's instruction cache |
SG111087A1 (en) | 2002-10-03 | 2005-05-30 | St Microelectronics Asia | Cache memory system |
US20040199723A1 (en) * | 2003-04-03 | 2004-10-07 | Shelor Charles F. | Low-power cache and method for operating same |
US7093081B2 (en) * | 2004-01-14 | 2006-08-15 | International Business Machines Corporation | Method and apparatus for identifying false cache line sharing |
-
2004
- 2004-10-01 US US10/956,560 patent/US7257678B2/en active Active
-
2005
- 2005-09-21 KR KR1020077007488A patent/KR101136141B1/ko active IP Right Grant
- 2005-09-21 DE DE112005002672T patent/DE112005002672B4/de active Active
- 2005-09-21 WO PCT/US2005/033671 patent/WO2006039153A1/en active Application Filing
- 2005-09-21 JP JP2007534653A patent/JP4456154B2/ja not_active Expired - Fee Related
- 2005-09-21 CN CN2005800330956A patent/CN101048763B/zh active Active
- 2005-09-21 GB GB0705275A patent/GB2432695B/en not_active Expired - Fee Related
- 2005-09-26 TW TW094133304A patent/TWI403899B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860106A (en) * | 1995-07-13 | 1999-01-12 | Intel Corporation | Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem |
US5752045A (en) * | 1995-07-14 | 1998-05-12 | United Microelectronics Corporation | Power conservation in synchronous SRAM cache memory blocks of a computer system |
EP1182567A1 (en) * | 2000-08-21 | 2002-02-27 | Texas Instruments France | Software controlled cache configuration |
US6795896B1 (en) * | 2000-09-29 | 2004-09-21 | Intel Corporation | Methods and apparatuses for reducing leakage power consumption in a processor |
Also Published As
Publication number | Publication date |
---|---|
TW200627148A (en) | 2006-08-01 |
CN101048763B (zh) | 2012-05-23 |
GB0705275D0 (en) | 2007-04-25 |
GB2432695B (en) | 2008-07-09 |
WO2006039153A1 (en) | 2006-04-13 |
JP2008515095A (ja) | 2008-05-08 |
US7257678B2 (en) | 2007-08-14 |
US20060075192A1 (en) | 2006-04-06 |
DE112005002672B4 (de) | 2010-12-02 |
DE112005002672T5 (de) | 2007-11-29 |
GB2432695A (en) | 2007-05-30 |
TWI403899B (zh) | 2013-08-01 |
KR20070054715A (ko) | 2007-05-29 |
CN101048763A (zh) | 2007-10-03 |
JP4456154B2 (ja) | 2010-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101136141B1 (ko) | 캐시 메모리의 동적 재구성 | |
KR101310044B1 (ko) | 복수의 코어 프로세서들에서의 하나 이상의 코어들의 워크로드 성능을 증가시키는 방법 | |
US20090006756A1 (en) | Cache memory having configurable associativity | |
US8589629B2 (en) | Method for way allocation and way locking in a cache | |
CN105308571B (zh) | 基于活动处理器的动态电压和频率管理 | |
CN102567109B (zh) | 中断分配方案 | |
US8732398B2 (en) | Enhanced pipelining and multi-buffer architecture for level two cache controller to minimize hazard stalls and optimize performance | |
EP2553893B1 (en) | Performance and traffic aware heterogeneous interconnection network | |
US7039756B2 (en) | Method for use of ternary CAM to implement software programmable cache policies | |
KR101324885B1 (ko) | 복수의 회로들에서의 성능 파라미터들 조정 | |
WO2006014254A1 (en) | An apparatus and method for heterogenous chip multiprocessors via resource allocation and restriction | |
US10289191B2 (en) | Processor including multiple dissimilar processor cores | |
CN107771322B (zh) | 可编程集成电路中存储器资源的管理 | |
US7882309B2 (en) | Method and apparatus for handling excess data during memory access | |
US7472224B1 (en) | Reconfigurable processing node including first and second processor cores | |
US20130246670A1 (en) | Information processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
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: 20160318 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170317 Year of fee payment: 6 |