KR101136141B1 - 캐시 메모리의 동적 재구성 - Google Patents

캐시 메모리의 동적 재구성 Download PDF

Info

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
Application number
KR1020077007488A
Other languages
English (en)
Other versions
KR20070054715A (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 KR20070054715A publication Critical patent/KR20070054715A/ko
Application granted granted Critical
Publication of KR101136141B1 publication Critical patent/KR101136141B1/ko

Links

Images

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/271Non-uniform cache access [NUCA] architecture
    • 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

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

캐시 메모리의 동적 재구성{DYNAMIC RECONFIGURATION OF CACHE MEMORY}
본 발명은 마이크로프로세서(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)

  1. 프로세서(415)의 캐시 메모리(417, 460)를 구성(configuration)하는 방법으로서,
    상기 프로세서(415)는 상기 캐시 메모리(417, 460)에 연결되는 캐시 모니터 유닛(418)과 그리고 상기 캐시 모니터 유닛(418) 및 상기 캐시 메모리에 연결되는 구성 유닛(configuration unit)(419)을 포함하며,
    상기 캐시 모니터 유닛(418)이 상기 캐시 메모리(417, 460)의 현재 이용도를 모니터링하는 단계와;
    상기 캐시 모니터 유닛(418)이 상기 현재 이용도가 사전에 결정된 이용도 값보다 작은지 여부를 결정하는 단계와; 그리고
    상기 구성 유닛(419)이, 상기 현재 이용도가 상기 사전에 결정된 이용도 값보다 작다는 결정에 응답하여, 상기 캐시 메모리의 하나 이상의 부분들에 대한 공급 전압 레벨을 제어함으로써 상기 캐시 메모리의 하나 이상의 부분들을 선택적으로 불활성화(disabling)하는 단계를 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
  2. 제1항에 있어서,
    상기 프로세서(415)가, 구성가능한 저장소(configurable unit)(442)에 상기 사전에 결정된 이용도 값을 저장하는 단계를 더 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
  3. 제1항에 있어서,
    상기 이용도가 사전에 결정된 이용도 값보다 작은지 여부를 결정하는 단계는 상기 사전에 결정된 이용도 값을 상기 현재 이용도와 비교하는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
  4. 제1항에 있어서,
    상기 캐시 메모리에서 사용되는 엔트리들의 수를 결정하고 그리고 상기 캐시 메모리가 억세스되는 빈도를 결정함으로써 현재 이용도 값을 결정하는 단계를 더 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
  5. 제4항에 있어서,
    상기 캐시 메모리에서 사용되는 엔트리들의 수를 결정하는 것은, 희생이 발생 되도록 하는 상기 캐시 메모리에 대한 기입들의 수를 모니터링하는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
  6. 제4항에 있어서,
    상기 캐시 메모리가 억세스되는 빈도를 결정하는 것은 카운터를 사용하여 상기 캐시 메모리에 대한 억세스들의 수를 카운팅하는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
  7. 프로세서(415)로서,
    캐시 메모리(417, 460)와;
    상기 캐시 메모리(417, 460)에 연결되어, 상기 캐시 메모리의 현재 이용도를 모니터링하고, 상기 현재 이용도가 사전에 결정된 이용도 값보다 작은지 여부를 결정하도록 된 캐시 모니터 유닛(418)과; 그리고
    상기 캐시 모니터 유닛 (418)및 상기 캐시 메모리(417, 460)에 연결된 구성 유닛(419)을 포함하여 구성되며,
    여기서 상기 구성 유닛(419)은, 상기 캐시 모니터 유닛이 상기 현재 이용도가 상기 사전에 결정된 이용도 값보다 작다고 결정하는 것에 응답하여, 상기 캐시 메모리의 하나 이상의 부분들에 대한 공급 전압 레벨을 제어함으로써, 상기 캐시 메모리의 하나 이상의 부분들을 선택적으로 불활성화하도록 된 것을 특징으로 하는 프로세서.
  8. 제1항에 있어서,
    상기 캐시 메모리의 하나 이상의 부분들에 대한 상기 공급 전압을 제어하는 것은, 상기 공급 전압을 정상 동작 전압 레벨보다 낮은 레벨로 감소시키는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
  9. 제1항에 있어서,
    상기 캐시 메모리의 하나 이상의 부분들에 대한 상기 공급 전압을 제어하는 것은, 상기 전압을 제거하는 것을 포함하는 것을 특징으로 하는 캐시 메모리 구성 방법.
  10. 제7항에 있어서,
    상기 사전에 결정된 이용도 값을 저장하기 위한 구성가능한 저장소를 더 포함하는 것을 특징으로 하는 프로세서.
KR1020077007488A 2004-10-01 2005-09-21 캐시 메모리의 동적 재구성 KR101136141B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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