KR20200066731A - 전원이 차단된 상태에서 프로세서 코어의 캐시 엔트리 보유하기 - Google Patents

전원이 차단된 상태에서 프로세서 코어의 캐시 엔트리 보유하기 Download PDF

Info

Publication number
KR20200066731A
KR20200066731A KR1020207014907A KR20207014907A KR20200066731A KR 20200066731 A KR20200066731 A KR 20200066731A KR 1020207014907 A KR1020207014907 A KR 1020207014907A KR 20207014907 A KR20207014907 A KR 20207014907A KR 20200066731 A KR20200066731 A KR 20200066731A
Authority
KR
South Korea
Prior art keywords
cache
entry
processor core
power
tlb
Prior art date
Application number
KR1020207014907A
Other languages
English (en)
Inventor
윌리엄 엘. 워커
마이클 엘. 골든
마리우스 에버스
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20200066731A publication Critical patent/KR20200066731A/ko

Links

Images

Classifications

    • 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
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • 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/0815Cache consistency protocols
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • 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/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • 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
    • 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/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • 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)

Abstract

제 1 캐시(205)와 관련된 프로세서 코어(215)는 전원이 차단된 상태로 진입을 개시한다. 이에 응답하여, 제 1 캐시의 엔트리 세트(220)를 나타내는 정보는 프로세서 코어가 전원이 차단된 상태에 있는 동안 보유 전압을 수신하는 보유 영역(230)에 저장된다. 엔트리 세트의 하나 이상의 무효화된 엔트리를 나타내는 정보도 보유 영역에 저장된다. 프로세서 코어가 전원이 차단된 상태로부터의 이탈을 개시한 것에 응답하여, 제 1 캐시의 엔트리는 엔트리를 나타내는 저장된 정보 및 적어도 하나의 무효화된 엔트리를 나타내는 저장된 정보를 이용하여 복원된다.

Description

전원이 차단된 상태에서 프로세서 코어의 캐시 엔트리 보유하기
종래의 처리 시스템은 중앙 처리 유닛(CPU) 및 그래픽 처리 유닛(GPU)과 같은 처리 유닛을 포함하며, 전형적으로 명령을 동시에 또는 병렬로 실행하기 위한 다수의 프로세서 코어를 포함한다. 프로세서 코어의 상태를 나타내는 정보가 캐시에 저장된다. 캐시에 저장된 정보는 프로세서 코어의 동작 속도를 높이는데 사용된다. 예를 들어, TLB(translation lookaside buffers)는 가상 어드레스를 물리적 어드레스로 변환하는데 캐시를 사용하여 TLB가 시간이 많이 걸리는 페이지 테이블 워크(page table walk)없이 가상-물리적 어드레스 변환을 수행할 수 있다. 다른 예에서, 캐시 계층은 프로세서 코어에 의해 실행되는 명령 및 프로세서 코어에 의해 실행될 때 명령에 의해 사용되는 데이터를 저장하므로, 명령 또는 데이터가 필요할 때 마다 외부 메모리로부터 페치(fetch)될 필요가 없다. 캐시 계층은 각각의 프로세서 코어에 대한 정보를 캐싱(caching)하기 위한 L1 캐시, 처리 유닛에서 프로세서 코어의 서브 세트에 대한 정보를 캐싱하기 위한 L2 캐시, 및 처리 유닛에 있는 모든 프로세서 코어에 대한 정보를 캐싱하기 위한 L3 캐시를 포함한다. 포괄적 캐시 계층은 L1 캐시에 저장된 정보를 포괄하는 L2 캐시에 저장된 정보를 포괄하는 L3 캐시를 구현한다.
프로세서 코어가 명령 실행과 같은 동작을 능동적으로 수행하지 않을 때 누설 전류를 줄이기 위해 프로세서 코어는 전원이 차단된 상태(powered-down state)(C6 또는 CC6 상로 지칭될 수 있음)에 배치된다. 프로세서 코어에 대한 상태 정보를 저장하는 캐시는 해당 프로세서 코어를 전원이 차단된 상태로 만들기 전에 플러시(flush)된 다음 전원이 차단된다. 예를 들어, 프로세서 코어의 전원이 차단되면 프로세서 코어의 TLB 엔트리가 손실된다. 다른 예에서, 프로세서 코어와 관련된 L1 캐시 또는 L2 캐시의 캐시 엔트리는 L3 캐시 또는 DRAM(동적 랜덤 액세스 메모리) 또는 디스크 드라이브와 같은 외부 메모리로 플러시된다. 그런 다음 프로세서 코어 및 L1 또는 L2 캐시에서 전원이 제거되면 L1 또는 L2 캐시로부터 캐시 엔트리가 손실된다. 캐시에 최신 정보가 없으면 전원이 차단된 상태를 이탈할 때 프로세서 코어의 성능이 저하된다.
본 개시는 더 잘 이해될 수 있고, 수많은 특징 및 장점이 첨부 도면을 참조함으로써 당업자에게 명백해진다. 다른 도면에서 동일한 도면 부호의 사용은 유사하거나 동일한 아이템을 나타낸다.
도 1은 일부 실시예에 따른 처리 시스템의 블록도이다.
도 2는 일부 실시예에 따른 변환 색인 버퍼(TLB : translation lookaside buffer) 및 외부 메모리 계층을 포함하는 처리 시스템의 일부의 블록도이다.
도 3은 일부 실시예에 따른 TLB와 관련된 프로세서 코어의 전원을 차단하기 전에 보유 영역(retention region)에서 TLB의 엔트리를 나타내는 정보를 저장하는 방법의 흐름도이다.
도 4는 일부 실시예에 따른 TLB와 관련된 프로세서 코어의 전원을 차단하기 전에 보유 영역에 저장된 정보를 사용하여 TLB의 엔트리를 복원하는 방법의 흐름도이다.
도 5는 일부 실시예에 따른 캐시 계층의 블록도이다.
도 6은 일부 실시예에 따른 L2 캐시 및 L3 캐시를 포함하는 캐시 계층의 일부의 블록도이다.
도 7은 일부 실시예에 따른 하위 레벨 캐시와 관련된 프로세서 코어의 전원을 차단하기 전에 보유 영역에서 하위 레벨 캐시의 엔트리를 나타내는 정보를 저장하는 방법의 흐름도이다.
도 8은 일부 실시예들에 따른 프로세서 코어가 전원이 차단된 상태로부터의 이탈을 개시하는 것에 응답하여 보유 영역에 저장된 정보를 사용하여 하위 레벨 캐시에서 엔트리들을 다시 채우는(repopulating) 방법의 흐름도이다.
전원이 차단된 상태를 이탈할 때 프로세서 코어의 성능을 가속화하고 전원이 차단된 상태에서 캐시 일관성을 유지하기 위해 적어도 부분적으로, 전원이 차단된 프로세서 코어와 관련된 캐시의 엔트리가 프로세서 코어의 전원이 차단된 상태에 있는 동안 보유 전압(retention voltage)을 수신하는 보유 영역에 저장된다. 엔트리 사본이 보유 영역에 저장된 후 프로세서 코어가 전원이 차단된 상태로 진입한다. 캐시에서 하나 이상의 엔트리가 무효화(invalidation) 되었음을 나타내는 정보는 프로세서 코어가 전원이 차단된 상태에 있는 동안 저장된다. 저장된 엔트리 사본 및 저장된 무효화 정보를 기반으로 캐시가 복원된다. 전원이 차단된 상태로부터 이탈을 개시하는 프로세서 코어에 응답하여 복원(restoring)이 수행된다. 보유 영역은 전원이 공급된 상태로 유지되며 실행되는 메모리 계층의 일부에 구현되고, 동시에 프로세서 코어는 전원이 차단된 상태에 있다. 보유 영역은 프로세서 코어의 전원이 차단된 동안 계속 활성화(energized)되는 파워 서플라이에 의해 전원이 공급되는 프로세서 코어의 스토리지 엘리먼트를 사용하여 또는 동적 랜덤 액세스 메모리(DRAM)와 같은 외부 메모리, 캐시 계층의 상위 레벨 캐시를 포함할 수 있다. 예를 들어, 보유 영역은 나머지 코어가 전원이 차단된 상태에 있는 동안 계속 전원이 공급되는 파워 서플라이가 캐시에 제공되는 경우 캐시 그 자체의 스토리지 엘리먼트 즉, 원 위치(in situ)에 보유될 수 있는 캐시의 데이터를 사용할 수 있다.
일부 실시예들에서, 캐시는 프로세서 코어에 의한 사용을 위한 가상-물리적 어드레스 변환을 캐싱하는 변환 색인 버퍼(TLB)이다. TLB의 엔트리는 프로세서 코어가 전원이 차단된 상태에 진입하면 보유 영역에 저장된다. 대응하는 프로세서 코어의 전원이 차단된 동안, TLB에 엔트리 무효화 요청을 나타내는 정보가 저장되고, 예를 들어, 개별 요청이 큐에 저장되거나 비트가 TLB의 하나 이상의 엔트리가 무효화되었음을 나타내는 값으로 설정된다. 저장된 TLB 엔트리 및 무효화 정보는 프로세서 코어의 전원이 공급된 것에 응답하여 엔트리를 다시 채워서 TLB를 복원하는데 사용된다. 예를 들어, TLB 엔트리가 보유 영역으로부터 다시 채워진 후, TLB 무효화 요청이 재생되어 TLB의 엔트리가 무효화된다. 큐 오버 플로우(queue overflow)의 경우, TLB를 복원하는데 필요한 모든 정보를 더 이상 큐에서 사용할 수 없으므로 전체 TLB가 무효화된다. 다른 예에서, 비트가 프로세서 코어의 전원이 되었을 때 하나 이상의 TLB 엔트리가 무효화되었음을 나타내는 값을 갖는 경우 전체 TLB가 무효화된다. 일부 실시예에서, 프로세서 코어의 전원이 차단된 것에 응답하여 TLB에 엔트리를 저장하는 대신에, TLB 내의 가상 어드레스의 리스트가 보유 영역에 저장된다. 프로세서 코어의 전원이 공급될 때 TLB의 엔트리를 채우는 페이지 테이블 워크를 우선적으로 개시하기 위해 가상 어드레스가 프리페치(prefetch)된다.
일부 실시예에서, 캐시는 캐시 계층의 L1 캐시 또는 L2 캐시와 같은 포괄적(inclusive) 캐시 계층의 하위 레벨 캐시이다. 보유 영역은 L3 캐시와 같은 상위 레벨 캐시 또는 프로세서 코어의 전원이 차단된 상태에서 보유 전압을 수신하는 DRAM과 같은 외부 메모리를 포함할 수 있다. 보유 영역은 또한 캐시의 스토리지 엘리먼트에 보유 파워 서플라이를 제공함으로써 캐시 자체에서 구현될 수 있다. 캐시에 수정된 또는 더티(dirty) 값은 프로세서 코어가 전원이 차단된 상태에 진입하는 것에 응답하여, 예를 들어, 캐시의 모든 엔트리를 플러시함으로써 또는 캐시 엔트리의 수정된 값을 기록하기 위해 캐시를 린스(rinse)함으로써 상위 레벨 캐시 또는 외부 메모리에 기록된다. 캐시에서 캐시 엔트리의 무효화를 나타내는 정보는 프로세서 코어의 전원이 차단된 동안 저장된다. 상위 레벨 캐시의 일부 실시예는 엔트리가 유효하고 클린(clean)한 지 여부를 나타내는 정보와 함께 전원이 차단된 프로세서 코어의 하위 레벨 캐시와 관련된 캐시 엔트리의 물리적 어드레스를 저장하는 섀도우 태그(shadow tag)를 포함한다. 섀도우 태그는 프로세서 코어의 전원이 차단된 상태에서 엔트리가 무효화되었는지 여부를 나타내는 정보를 저장할 수도 있다. 만약 보유 영역이 캐시 자체에 구현되는 경우, 복원하기 위해 캐시를 다시 채울 필요가 없다. 만약 보유 영역이 캐시 자체에 구현되지 않은 경우, 프로세서 코어의 전원이 공급된 것에 응답하여 섀도우 태그의 정보를 사용하여 캐시가 다시 채워진다. 예를 들어, 하위 레벨 캐시에 유효한 엔트리는 섀도우 태그에 저장된 해당 물리적 어드레스를 기반으로 프리페치된다.
일부 실시예는 프로세서 코어의 전원이 차단된 동안 수신된 프로브(probe)를 나타내는 정보를 저장하는 프로브 큐(probe queue)를 구현한다. 만약 프로세서 코어가 섀도우 태그를 포함하는 경우, 프로브 큐는 섀도우 태그의 어드레스에 히트(hit)한 프로브만 레코딩(record)한다. 프로브 큐는 또한 프로세서 코어의 전원이 공급된 것에 응답하여 대응하는 하위 레벨 캐시 라인이 무효화됨을 나타내는 섀도우 태그의 각각의 엔트리에 필드를 추가함으로써 구현될 수 있다. 프로세서 코어의 전원이 공급된 것에 응답하여 프로브 큐에 저장된 프로브가 캐시로 발송된다. 프로브 큐 오버 플로우의 경우, 프로세서 코어는 프로브 큐에서 프로브를 서비스하기 위해 전원이 공급되거나 프로세서 코어의 전원이 공급될 때 전체 캐시가 무효화된다. 프로세서 코어의 전원이 차단된 상태에서 캐시 일관성(cache coherence)을 유지하는 다른 접근법들도 또한 사용될 수 있다. 일부 경우들에서, 프로브 수신에 대한 응답으로 캐시 전원이 공급되고, 이는 캐시가 프로브에 의해 표시된 엔트리를 무효화한 다음 전원이 다시 차단되는 것을 허용한다. 이 접근법은 상당한 오버헤드(overhead)를 소비한다. 각각의 캐시 레벨은 캐시가 서비스 프로브에 대해 클록 업(clock up) 및 다운할 수 있도록 "항상 켜짐(always on)" 클록이 제공될 수도 있다. 일부 실시예에서, 블룸 필터(bloom filter)와 같은 다른 메커니즘은 어쩌면 하위 레벨 캐시에 히트할 수 있는 프로브를 식별하는데 사용되므로 프로브 큐에 레코딩되어야 한다.
도 1은 일부 실시예에 따른 처리 시스템(100)의 블록도이다. 처리 시스템(100)은 동적 랜덤 액세스 메모리(DRAM)와 같은 비 일시적 컴퓨터 판독 가능 매체를 사용하여 구현되는 메모리(105) 또는 다른 스토리지 컴포넌트를 포함하거나 이에 액세스한다. 그러나, 메모리(105)는 정적 랜덤 액세스 메모리(SRAM), 비 휘발성 RAM 등을 포함하는 다른 유형의 메모리를 사용하여 구현될 수도 있다. 메모리(105)는 처리 시스템(100)에서 구현된 처리 유닛의 외부에 구현되기 때문에 외부 메모리로 지칭된다. 처리 시스템(100)은 또한 처리 시스템(100)에서 구현된 엔티티들 예컨대, 메모리(105) 사이의 통신을 지원하기 위해 버스(110)를 포함한다. 처리 시스템(100)의 일부 실시예는 명확성을 위해 도 1에 도시되지 않은 다른 버스, 브리지, 스위치, 라우터(router) 등을 포함한다.
처리 시스템(100)은 디스플레이(120) 상에 프리젠테이션을 위해 이미지를 렌더링하도록 구성된 GPU(graphics processing unit)(115)를 포함한다. 예를 들어, GPU(115)는 디스플레이(120)에 제공되는 픽셀의 값을 생성하기 위해 객체를 렌더링하고, 이는 렌더링된 객체를 나타내는 이미지를 디스플레이하는 픽셀 값을 사용한다. GPU(115)의 일부 실시예는 범용 컴퓨팅에 사용된다. 예시된 실시예에서, GPU(115)는 동시에 또는 병렬로 명령을 실행하도록 구성된 다수의 프로세서 코어(116, 117, 118)(본 출원에서”프로세서 코어(116-118)"로 총칭)를 구현한다. 프로세서 코어(116-118)는 쉐이더 엔진(shader engine)이라고도 한다.
GPU(115)는 또한 메모리(105)와의 통신을 지원하기 위해 사용되는 메모리 관리 유닛(MMU : memory management unit)(121)을 포함한다. 예시된 실시예에서, MMU(121)는 버스(110)를 통해 메모리(105)와 통신한다. 그러나, MMU(121)의 일부 실시예는 직접 연결을 통해 또는 다른 버스, 브리지, 스위치, 라우터 등을 통해 메모리(105)와 통신할 수 있다. GPU(115)는 메모리(105)에 저장된 명령을 실행하고, GPU(115)는 실행된 명령의 결과와 같은 정보를 메모리(105)에 저장한다. 예를 들어, 메모리(105)는 GPU(115)에 의해 실행될 프로그램 코드로부터의 명령의 사본(125)을 저장한다. MMU(121)는 프로세서 코어(116-118)에 의해 사용되는 가상-물리적(virtual-to-physical) 어드레스 변환을 저장하는 캐시인 변환 색인 버퍼(TLB)(123)를 포함한다. 예를 들어, 프로세서 코어(116)는 MMU(121)에 가상 어드레스를 포함하는 메모리 액세스 요청을 송신하고, 이는 TLB(123)에 대응하는 엔트리를 사용하여 가상 어드레스를 물리적 어드레스로 변환한다. MMU(121)는 그런 다음 물리적 어드레스를 사용하여 메모리 요청(예를 들어, 메모리(105)로)을 송신할 수 있다.
GPU(115)는 프로세서 코어(116-118)에 의한 비교적 낮은 레이턴시 액세스를 위해 명령 또는 데이터를 캐싱하는데 사용되는 하나 이상의 레벨의 캐시를 포함하는 캐시 계층(130)을 포함한다. 프로세서 코어(116-118)로 디스패치되는 명령은 명령 또는 데이터와 같은 정보를 캐시 계층(130)으로 프리페치하는데 사용되는 하나 이상의 프리페치 명령을 포함한다. 예를 들어, 프로세서 코어(116)에서 실행되는 프리페치 명령은 프로세서 코어(116)가 명령을 실행하기 전에 캐시 계층(130)에서 명령이 이용 가능하도록 사본(125)으로부터의 명령을 프리페치한다. 비록 캐시 계층(130)이 프로세서 코어(116-118) 외부에 도시되어 있지만, 프로세서 코어(116-118)의 일부 실시예는 캐시 계층(130)에 상호 연결된 대응하는 캐시(L1 캐시와 같은)를 통합한다.
처리 시스템(100)은 또한 본 출원에서 총괄적으로 "프로세서 코어(141-143)"로 지칭되는 다수의 프로세서 코어(141, 142, 143)를 구현하는 중앙 처리 유닛(CPU)(140)을 포함한다. 프로세서 코어(141-143)는 명령을 동시에 또는 병렬로 실행하도록 구성된다. CPU(140)는 버스(110)에 연결되어 버스(110)를 통해 GPU(115) 및 메모리(105)와 통신한다. CPU(140)는 메모리(105)와의 통신을 지원하기 위해 MMU(145)를 포함한다. MMU(145)는 프로세서 코어(141-143)에 의해 사용되는 가상-물리적 어드레스 변환을 저장하는 TLB(150)을 포함한다. CPU(140)는 메모리(105)에 저장된 프로그램 코드(155)와 같은 명령을 실행하고, CPU(140)는 실행된 명령의 결과와 같은 정보를 메모리(105)에 저장한다. CPU(140)는 또한 GPU(115)에 대한 드로우 콜(draw call)을 발행함으로써 그래픽 처리를 개시할 수 있다.
CPU(140)의 일부 실시예는 프로세서 코어(141-143)에 의한 비교적 낮은 레이턴시 액세스를 위해 명령 또는 데이터를 캐싱하는데 사용되는 하나 이상의 레벨의 캐시를 포함하는 캐시 계층(160)을 포함한다. 비록 캐시 계층(160)은 프로세서 코어(141-143)의 외부로 도시되어 있지만, 프로세서 코어(114-143)의 일부 실시예는 캐시 계층(160)에 상호 연결된 대응하는 캐시를 통합한다. 일부 실시예에서, 프로세서 코어(141-143)로 디스패치되는 명령은 명령 또는 데이터와 같은 정보를 캐시 계층(160)으로 프리페치하는데 사용되는 하나 이상의 프리페치 명령을 포함한다. 예를 들어, 프로세서 코어(141)상의 웨이브(wave)에 의해 실행되는 프리페치 명령은 프로세서 코어(141)가 명령을 실행하기 전에 캐시 계층(160)에서 명령이 이용 가능하도록 프로그램 코드(155)로부터 명령을 프리페치할 수 있다.
입/출력(I/O) 엔진(165)은 디스플레이(120)와 관련된 입력 또는 출력 동작 뿐만 아니라 키보드, 마우스, 프린터, 외부 디스크 등과 같은 처리 시스템(100)의 다른 엘리먼트를 핸들링한다. I/O 엔진(165)은 I/O 엔진(165)이 메모리(105), GPU(115) 또는 CPU(140)와 통신할 수 있도록 버스(110)에 결합된다. 예시된 실시예에서, I/O 엔진(165)은 CD(compact disk), DVD(digital video disc) 등과 같은 비 일시적 컴퓨터 판독 가능 매체를 사용하여 구현되는 외부 스토리지 컴포넌트(170)에 저장된 정보를 판독하도록 구성된다. I/O 엔진(165)은 또한 GPU(115) 또는 CPU(140)에 의한 처리 결과와 같은 정보를 외부 스토리지 컴포넌트(170)에 기록할 수 있다.
본 출원에서 논의된 바와 같이, 종래의 처리 시스템은 전원이 공급된(powered-up) 캐시와 전원이 차단된 상태로 진입하는 대응하는 프로세서와 함께 전원이 차단된 캐시에 저장된 정보 사이의 캐시 일관성을 유지하기 위한 메커니즘을 제공하지 않는다. 본 출원에서 사용되는 용어 "전원이 차단된(powered-down)"은 프로세서 코어 및 캐시와 같은 관련 엔티티에 공급되는 전력이 프로세서 코어 또는 다른 엔티티의 기능을 유지하기 위해 요구되는 레벨 아래로 감소된 상태를 지칭한다. 예를 들어, 전원이 차단된 프로세서 코어는 명령을 실행할 수 없다. 다른 예를 들어, 전원이 차단된 캐시는 예를 들어, 캐시의 비트 스토리지 엘리먼트를 구성하는데 사용되는 트랜지스터의 상태를 유지함으로써 저장된 비트 값을 유지하기에 충분한 전력이 공급되지 않는다.
기존의 처리 시스템은 프로세서 코어가 전원이 차단된 상태에 있는 동안 전원이 차단된 캐시에서 캐시 엔트리의 무효화를 설명할 수 없다. 종래의 관행에서 이러한 결점을 해결하기 위해 적어도 부분적으로, 처리 시스템 (100)은 프로세서 코어 (116-118, 141-143) 중 대응하는 프로세스 코어가 전원이 차단된 상태로의 진입을 시작하는 것에 응답하여 보유 영역의 캐시 계층 (130, 160) 또는 TLB (123, 150)에 엔트리를 나타내는 정보를 저장한다. 보유 영역은 프로세서 코어가 전원이 차단된 상태에 있는 동안 보유 전압을 동시에 수신한다. 처리 시스템(100)은 프로세서 코어가 전원이 차단된 상태에 있는 동안 발행된 무효화 요청 또는 캐시 프로브를 모니터링하고, TLB(123, 150) 또는 캐시 계층(130, 160)은 프로세서 코어가 전원이 차단된 상태에 있는 동안 무효화되지 않은 엔트리로 선택적으로 다시 채워진다.
처리 시스템(100)의 일부 실시예에서 TLB(123, 150) 또는 캐시 계층(130, 160)에서 엔트리를 저장 및 복원하기 위해 다수의 옵션이 이용 가능하다. 프로세서 코어(116-118, 141-143)는 전원이 차단된 상태에 있는 동안, 프로브(또는 다른 무효화 요청)가 레코딩된다. 프로브는 섀도우 태그, 블룸 필터 또는 보유 전압에서 유지되는 보유 영역의 캐시된 정보에서 잠재적인 히트를 식별하는 다른 정보와 비교하여 체크된다. 누락된 프로브는 더 이상 영향을 미치지 않는다. 캐시된 정보에서 히트한 프로브, 블룸 필터에 의해 표시된 잠재적 히트인 프로브 또는 히트 상태가 결정될 수 없는 프로브는 프로브 큐 또는 대응하는 섀도우 태그에 레코딩된다. 어느 경우이든, 프로브 히트(또는 잠재적 프로브 히트)가 프로브 큐 또는 섀도우 태그에 레코딩될 수 없는 경우 오버플로우 비트가 설정된다. 하위 레벨 캐시가 보유 전압에서 유지되었는지 여부에 기초한 프로세서 코어(116-118, 141-143)의 전원이 공급된 것에 응답하여 선택적인 다시 채워짐(repopulation)이 수행된다. 만약 그렇다면, 하위 레벨 캐시는 이전 엔트리를 보유한다. 레코딩된 프로브 히트(또는 잠재적 히트)는 하위 레벨 캐시에 대해 재생되어 대응하는 엔트리를 무효화하고 캐시를 복원한다. 오버플로우 비트가 설정되면, 전체 하위 레벨 캐시가 무효화된다. 만약 하위 레벨 캐시가 보유 전압으로 유지되지 않은 경우, 섀도우 태그의 물리적 어드레스는 하위 레벨 캐시를 프리페치(그리고 그렇게 함으로써 복원)하는데 사용된다. 전원이 차단된 상태에서 프로브에 의해 히트된 섀도우 태그의 물리적 어드레스는 프리페치되지 않는다.
도 2는 일부 실시예에 따른 변환 색인 버퍼(TLB)(205) 및 외부 메모리 계층(210)을 포함하는 처리 시스템의 일부(200)의 블록도이다. 부분(200)은 도 1에 도시된 처리 시스템(100)의 일부 실시예를 구현하는데 사용된다. 예를 들어, 외부 메모리 계층(210)은 도 1에 도시된 메모리(105), 캐시 계층(130, 160)의 L3 캐시 및 외부 스토리지 컴포넌트(170)를 포함할 수 있다. TLB(205)는 프로세서 코어(215)에 의해 이용되는 가상-물리적 어드레스 변환을 캐싱하는데 사용된다. 각각의 가상-물리적 어드레스 변환은 엔트리(220)에 저장된다(명확성을 위해 참조로 표시된 단지 하나의 엔트리). TLB(205) 및 프로세서 코어(215)는 동일한 전력 도메인(power domain)(225)에 있다. 따라서, TLB(205) 및 프로세서 코어(215)는 동일한 파워 서플라이 시스템을 사용하여 전력을 수신한다. 일부 실시예들에서, TLB(205) 및 프로세서 코어(215)는 또한 동일한 클록 메시(clock mesh)로부터 클록 신호를 수신한다. 따라서, 프로세서 코어(215)가 전원이 차단된 상태에 있을 때 TLB(205)는 전원이 차단된다.
외부 메모리 계층(210)의 적어도 일부는 전력 도메인(225)에 공급된 전력과 무관하게 전력을 수신한다. 따라서, 외부 메모리 계층(210)의 독립적으로 전력을 공급받는 부분은 프로세서 코어(215)가 전원이 차단된 상태에 있는 동안 보유 전압을 수신하고, TLB(205)에 엔트리(220)를 나타내는 정보를 저장하기 위한 보유 영역을 구현하는데 사용된다. 예시된 실시예에서, 보유 영역은 TLB(205)에 엔트리(220)의 사본(230)을 저장한다. 그러나, 다른 실시예에서, 보유 영역은 엔트리(220)와 관련된 가상 어드레스와 같은 엔트리(220)를 나타내는 다른 정보를 저장한다. 엔트리(220)를 나타내는 정보는 전원이 차단된 상태로 엔트리를 개시하는 프로세서 코어(215)에 응답하여 외부 메모리 계층(210)에 저장된다. 예를 들어, 엔트리들(220)의 사본(230)은 프로세서 코어(215)가 전원이 차단될 것이라는 것을 나타내는 신호에 응답하여 외부 메모리 계층(210)에 기록된다.
TLB(205)의 엔트리(220)는 프로세서 코어(215)가 전원이 차단된 상태에 있는 동안 무효화된다. 따라서, 처리 시스템은 TLB(205)의 엔트리(220)를 무효화하는 TLB 슛 다운(shoot down)과 같은 무효화 요청을 모니터링한다. 외부 메모리 계층(210)의 일부 실시예는 프로세서 코어(215)가 전원이 차단된 상태와 동시에 수신되는 무효화 요청을 저장하기 위한 큐(235)를 구현한다. 큐 (235)는 유한한 길이를 가지며, 프로세서 코어 (215)가 전원이 차단된 상태에 있는 동안 수신된 다수의 무효화 요청이 큐 (235)에서 이용 가능한 슬롯의 수를 초과하면 오버 플로우된다. 외부 메모리 계층(210)의 일부 실시예들은 다른 포맷의 무효화 요청을 나타내는 정보를 저장한다. 예를 들어, 외부 메모리 계층(210)은 TLB(205)에 대해 무효화 요청이 수신되지 않았음을 나타내기 위해 제 1 값(예를 들어, 0)으로 설정된 단일 비트 및 TLB(205)에 대한 하나 이상의 무효화 요청이 수신되었음을 나타내는 제 2 값(예를 들어, 1)을 저장한다.
프로세서 코어(215)가 전원이 차단된 상태로부터의 이탈을 개시하는 것에 응답하여, 예를 들어, 프로세서 코어(215)의 전원 공급에 응답하여, TLB(205)는 외부 메모리 계층(210)의 보유 영역에 저장된 엔트리(220)를 나타내는 정보를 사용하여 채워진다. 예를 들어, TLB 사본 (230)의 엔트리는 엔트리 (220)를 다시 채우기 위해 TLB (205)에 다시 기록된다. TLB(205)의 상태는 그런 다음 프로세서 코어(215)가 전원이 차단된 상태에 있었던 동안 수신된 임의의 무효화 요청의 베이시스에 기초하여 업데이트된다. 예를 들어, 큐(235)에서의 무효화 요청은 대응하는 엔트리(220)를 무효화하고 TLB(205)의 정확한 상태를 생성하기 위해 재생된다. 다른 예에서, 외부 메모리 계층(210)이 엔트리(220)와 관련된 가상 어드레스를 저장한 경우, 가상 어드레스는 TLB(205)의 엔트리(220)를 다시 채우는 페이지 테이블 워크를 트리거하기 위해 프리페치된다. 이 예에서, 새로운 페이지 테이블 워크는 TLB(205)를 채우기 위해 수행되며, 결과적으로, TLB(205)를 시스템의 나머지와 일관성을 유지하기 위해 TLB(205)의 어떤 엔트리도 무효화될 필요가 없다. 또 다른 예에서, 외부 메모리 계층(210)이 임의의 무효화 요청이 수신되었는지 여부를 나타내는 단일 비트를 저장한 경우, 비트가 하나 이상의 무효화 요청이 수신되었음을 표시하면 TLB(205)의 모든 엔트리(220)가 무효화된다.
일부 실시예들에서, 다시 채워짐 및 무효화 대신에, 프로세서 코어(215)가 전원이 차단된 상태에 있는 동안 수신된 무효화 요청들에 따라 엔트리들을 조건적으로 다시 채움으로써 TLB(205)의 엔트리들(220)이 복원된다. 예를 들어, 무효화되지 않은 TLB 사본(230)의 엔트리들(큐(235)에 정보로 표시됨)만이 프로세서 코어(215)의 전원 공급에 응답하여 TLB(205)에 다시 기록된다. 다른 예에서, 외부 메모리 계층(210)이 하나 이상의 무효화 요청이 수신되었음을 나타내는 값으로 설정된 단일 비트를 저장하는 경우, TLB 사본(230)은 TLB(205)에 다시 기록되지 않으며, 이는 비트 값에 기초하여 무효화된다.
도 3은 일부 실시예에 따른 TLB와 관련된 프로세서 코어의 전원을 차단하기 전에 보유 영역에서 TLB의 엔트리를 나타내는 정보를 저장하는 방법(300)의 흐름도이다. 방법(300)은 도 1에 도시된 처리 시스템(100)의 일부 실시예로 구현되고 도 2에 도시된 처리 시스템의 부분(200)으로 구현된다.
블록(305)에서, 처리 시스템은 프로세서 코어의 전원 차단을 개시한다. 예를 들어, 실행을 위해 명령이 프로세서 코어에 디스패치되지 않거나 전원 차단을 위한 임계값을 초과하는 후속하는 시간 간격 동안 실행을 위해 프로세서 코어에 명령이 디스패치되지 않을 것이라는 예측에 응답하여 프로세서 코어는 전원이 차단된 상태로의 진입을 개시한다.
블록(310)에서, TLB의 엔트리를 나타내는 정보가 프로세서 코어가 전원이 차단된 상태에 있는 동안 전력을 보유하는 보유 영역을 구현하는 외부 메모리에 저장된다. 외부 메모리의 일부 실시예는 L3 캐시, DRAM 및 디스크 드라이브와 같은 외부 스토리지를 사용하여 구현된다. 이 정보는 TLB의 엔트리 사본 또는 TLB의 엔트리에 대한 가상 어드레스를 포함한다.
블록(315)에서, 프로세서 코어는 전원이 차단된다. TLB의 전원이 꺼졌을 때 이 정보의 손실을 방지하기 위해 TLB의 엔트리를 나타내는 정보가 외부 메모리에 저장된 후에 프로세서 코어의 전원이 차단된다.
블록(320)에서, TLB에 대해 수신된 무효화 요청을 나타내는 정보가 보유 영역에 저장된다. 예를 들어, 보유 영역은 프로세서 코어가 전원이 차단된 상태인 동안 무효화 요청을 저장하는 큐를 구현할 수 있다. 다른 예에서, 보유 영역은 TLB에 대해 무효화 요청이 수신되지 않았음을 나타내기 위해 제 1 값(예를 들어, 0)으로 설정되는 비트 및 TLB에 대해 하나 이상의 무효화 요청이 수신되었음을 나타내는 제 2 값(예를 들어, 1)을 구현할 수 있다.
도 4는 일부 실시예에 따른 TLB와 관련된 프로세서 코어의 전원을 차단하기 전에 보유 영역에 저장된 정보를 사용하여 TLB에서 엔트리를 다시 채우는 방법(400)의 흐름도이다. 방법(400)은 도 1에 도시된 처리 시스템(100)의 일부 실시예로 구현되고 도 2에 도시된 처리 시스템의 부분(200)으로 구현된다.
블록(405)에서, 처리 시스템은 프로세서 코어의 전원 공급을 개시한다. 예를 들어, 전원이 차단된 상태로부터의 이탈(exit)은 처리 시스템의 디스패처(dispatcher)가 프로세서 코어에서의 실행을 위한 명령을 디스패치하는 것에 응답하여 개시된다.
결정 블록(410)에서, 처리 시스템은 무효화 요청을 저장하는 큐가 큐에서 이용 가능한 슬롯의 수를 초과하는 다수의 무효화 요청을 수신한 것에 응답하여 오버플로우 되었는지 여부를 결정한다. 만약 그렇다면, 방법(400)은 블록(415)으로 흐르고, 큐는 TLB의 상태를 재구성하는데 필요한 모든 정보를 홀딩하지 않기 때문에 TLB의 모든 엔트리가 무효화된다. 큐가 오버플로우되지 않았다면, 방법(400)은 블록(420)으로 흐른다.
블록(420)에서, TLB는 TLB의 엔트리를 나타내는 정보를 사용하여 다시 채워진다. 예를 들어, 엔트리의 사본은 보유 영역으로부터 TLB로 기록된다. 다른 예에서, 보유 영역에 저장된 엔트리의 어드레스는 프리페치되어 TLB의 엔트리를 채우는 페이지 테이블 워크를 트리거한다.
블록(425)에서, TLB의 상태는 프로세서 코어가 전원이 차단된 상태에 있는 동안 수신된 무효화 요청에 기초하여 수정된다. 예를 들어, 큐에 저장된 무효화 요청이 재생되어 TLB의 엔트리를 무효화한다. 다른 예에서, 프로세서 코어가 전원이 차단된 상태에 있는 동안 임의의 무효화 요청이 수신되었는지 여부를 표시하기 위해 보유 영역이 단일 비트만 저장하는 경우, 비트 값이 하나 이상의 무효화 요청이 수신되었음을 표시하면 TLB의 모든 엔트리가 무효화된다.
도 5는 일부 실시예에 따른 캐시 계층(500)의 블록도이다. 캐시 계층(500)은 GPU(115)에서 캐시 계층(130)의 일부 실시예 및 도 1에 도시된 CPU(140)에서 캐시 계층(160)의 일부 실시예를 구현하는데 사용된다. 캐시 계층(500)은 본 출원에서 총괄적으로 "프로세서 코어(501-504) "로 지칭되는 프로세서 코어(501, 502, 503, 504)에 대한 명령 또는 데이터와 같은 정보를 캐싱한다. 프로세서 코어들(501-504)은 도 1에 도시된 프로세서 코어들(116-118, 141-143)의 일부 실시예들을 구현하기 위해 사용된다.
캐시 계층(500)은 3 가지 레벨의 캐시를 포함한다 : L1 캐시(511, 512, 513, 514를 포함하는 제 1 레벨(본 출원에서 "L1 캐시(511-514)"로 총괄하여 지칭됨)), L2 캐시(515, 516, 517, 518)를 포함하는 제 2 레벨 (본 출원에서”L2 캐시(515-518)"로 총괄하여 지칭됨), L3 캐시(520)를 포함하는 제 3 레벨. 그러나, 제 2 레벨 캐시 계층(500)의 일부 실시예는 더 많거나 더 적은 레벨의 캐시를 포함한다. 비록 L1 캐시(511-514)는 대응하는 프로세서 코어(501-504)에 상호 연결된 별도의 하드웨어 구조로서 도시되어 있지만, L1 캐시(511-514)의 일부 실시예는 프로세서 코어(501-504)를 구현하는 하드웨어 구조에 통합된다.
L1 캐시(511-514)는 대응하는 프로세서 코어(501-504)에 의한 액세스를 위한 정보를 캐싱하는데 사용된다. 예를 들어, L1 캐시(511)는 프로세서 코어(501)에 대한 정보를 캐싱하도록 구성된다. 따라서, 프로세서 코어(501)는 L1 캐시(511)에 메모리 액세스 요청을 발행한다. 요청된 정보는 L1 캐시(511)에서 메모리 액세스 요청이 히트하면 리턴된다. L1 캐시(511)는 메모리 액세스 요청이 L1 캐시(511 )에서 누락된 경우 메모리 액세스 요청을 다음의 상위 캐시 레벨(예를 들어, L2 캐시(515))로 포워딩한다. L1 캐시(511)에 캐시된 정보는 전형적으로 다른 프로세서 코어(502-504)에 의해 액세스할 수 없다.
L2 캐시(515-518)는 또한 프로세서 코어(501-504)에 대한 정보를 캐싱하도록 구성된다. 예시된 실시예에서, L2 캐시(515-518)는 대응하는 L1 캐시(511-514)를 포괄한다. 예를 들어, L2 캐시(515)는 L1 캐시(511)에 캐시된 정보를 포함하는 정보를 캐싱한다. 그러나, L2 캐시(515-518)는 전형적으로 L1 캐시(511-514) 보다 커서 L2 캐시(515-518)는 대응하는 L1 캐시(511-514)에 저장되지 않은 다른 정보도 저장한다. 전술한 바와 같이, 프로세서 코어들(501-504) 중 하나가 대응하는 L1 캐시(511-514)에서 누락된 메모리 액세스 요청을 발행하면, 메모리 액세스 요청은 대응하는 L2 캐시(515-518)로 포워딩된다. 메모리 액세스 요청이 L2 캐시(515-518)에서 히트하면 요청된 정보는 요청 프로세서 코어(501-504)로 리턴된다. 메모리 액세스 요청이 L2 캐시(515-518)에서 누락된 경우 L2 캐시(515-518)는 메모리 액세스 요청을 캐시의 다음 상위 레벨(예를 들어, L3 캐시(520))로 포워딩한다. 일부 실시예들에서, L2 캐시들(515-518)은 다수의 L1 캐시들(511-514)와 대응하는 프로세서 코어들(501-504) 사이에서 공유된다.
L3 캐시(520)는 프로세서 코어(501-504)를 위한 글로벌 캐시(global cache)로서 구성된다. L2 캐시(515, 520)에서 누락된 프로세서 코어(501-504)로부터의 메모리 액세스 요청은 L3 캐시(520)로 포워딩된다. 메모리 액세스 요청이 L3 캐시(520)에 히트하면 요청된 정보는 요청 프로세서 코어(501-504)로 리턴된다. L3 캐시(520)는 메모리 액세스 요청이 L3 캐시(520)에서 누락되면 DRAM(525)과 같은 메모리 시스템으로 메모리 액세스 요청을 포워딩한다.
예시된 실시예에서, 프로세서 코어들(501-504), L1 캐시들(511-514) 및 L2 캐시들(515-518)은 본 출원에서 총괄적으로 "전력 도메인(530-533)"으로 지칭되는 전력 도메인들(530, 531, 532, 533)에서 구현된다. 전력은 전력 도메인(530-533)에 독립적으로 공급되므로 전력 도메인(530-533)의 엔티티는 독립적으로 또는 별도로 전원이 공급되거나 전원이 차단된다. 예를 들어, 프로세서 코어(501)는 전원이 공급된 상태로 있는 동안 동시에 프로세서 코어(502-504)는 전원이 차단된 상태에 놓일 수 있다. 그러나, 프로세서 코어(501-504)로부터 전력을 제거하는 것은 또한 대응하는 L1 캐시(511-514) 및 L2 캐시(515-518)로부터 전력을 제거하므로, 대응하는 프로세서 코어(501-504)가 전원이 차단된 상태에 진입할 때 임의의 저장된 정보를 상실한다.
L1 캐시(511-514) 또는 L2 캐시(515-518)의 엔트리를 나타내는 정보는 대응하는 프로세서 코어(501-504)가 전원이 차단된 상태로 엔트리를 개시하는 것에 응답하여 보유 영역에 저장된다. 보유 영역은 하나 이상의 프로세서 코어(501-504)의 전원이 차단된 상태에 있는 동안 보유 전압을 계속 수신한다. 보유 영역은 DRAM(525) 또는 L3 캐시(520)에서 구현될 수 있다. 보유 영역은 프로세서 코어(501-504)가 전원이 차단된 상태에 있는 동안 보유 전압이 공급된다면 L1 캐시(511-514) 또는 L2 캐시(515-518)에서도 구현될 수 있다. 엔트리를 나타내는 정보는 엔트리의 사본 또는 엔트리에 저장된 정보의 물리적 어드레스를 포함할 수 있다. 예를 들어, L2 캐시(515)의 엔트리를 나타내는 정보는 L2 캐시(515)로부터 L3 캐시(520)에서 구현된 보유 영역으로 수정된(또는 더티(dirty)) 엔트리를 기록함으로써 린스(rinse)된다. 다른 예를 들어, L2 캐시(515)의 엔트리를 나타내는 정보는 L2 캐시(515)의 모든 엔트리를 L3 캐시(520)에 구현된 보유 영역에 기록함으로써 플러시된다.
보유 영역은 또한 하나 이상의 프로세서 코어(501-504)가 전원이 차단된 상태에 있는 동안 수신되는 캐시 프로브와 같은 무효화 신호를 나타내는 정보를 저장한다. 일부 실시예에서, 정보는 캐시의 엔트리와 관련된 섀도우 태그에 저장된다. 예를 들어, L3 캐시(520)는 L2 캐시(515-518)의 엔트리에 대한 섀도우 태그를 저장한다. 섀도우 태그는 대응하는 엔트리가 클린 데이터를 포함하는지 또는 엔트리가 전원이 차단된 상태에 진입하는 프로세서 코어들(501-504) 중 하나와 관련하여 전원이 차단된 캐시에 대한 것인지를 나타내는 정보를 포함한다. 섀도우 태그는 또한 엔트리가 유효한지 여부, 예를 들어, 캐시 프로브가 대응하는 엔트리에 대해 수신되었는지를 나타내는 하나 이상의 비트를 포함한다. 다른 예에서, 보유 영역은 엔트리에 대해 캐시 프로브가 수신되지 않았음을 나타내기 위해 제 1 값(예를 들어, 0)으로 설정되는 비트 및 엔트리에 대해 하나 이상의 캐시 프로브가 수신되었음을 나타내기 위해 제 2 값(예를 들어, 1)을 구현한다. 섀도우 태그의 일부 실시예는 엔트리에 저장된 정보의 물리적 어드레스를 포함한다. 보유 영역의 일부 실시예는 후속 재생(playback)을 위해 캐시 프로브를 홀딩하는 큐를 구현한다. 섀도우 태그의 캐시 프로브 비트에 추가하여 또는 캐시 프로브 비트를 구현하는 대신 큐가 구현된다.
보유 영역의 정보는 대응하는 프로세서 코어(501-504)가 전원이 차단된 상태로부터의 이탈을 개시하는 것에 응답하여 캐시를 복원하는데 사용된다. 예를 들어, L2 캐시(515) 내의 엔트리들의 사본은 전원이 차단된 상태로부터의 이탈을 개시하는 프로세서 코어(501)에 응답하여 L3 캐시(520)로부터 다시 기록된다. 다른 예에서, L2 캐시(515)의 엔트리 값은 L3 캐시(520)에 저장된 섀도우 태그의 물리 어드레스를 사용하여 프리페치된다. 무효화 신호를 나타내는 정보는 캐시 엔트리를 수정하는데 사용된다. 예를 들어, L2 캐시(515)의 엔트리에 대한 섀도우 태그의 비트 값은 비트 값이 캐시 프로브가 엔트리에 대해 수신되었음을 나타내는 경우 엔트리를 무효화하는데 사용된다. 섀도우 태그에서 무효화된 엔트리의 물리적 어드레스는 프리페치되지 않는다. 다른 예에서, 캐시 프로브는 L2 캐시(515)의 엔트리를 수정하기 위해 큐로부터 재생된다.
도 6은 일부 실시예에 따른 L2 캐시(605) 및 L3 캐시(610)를 포함하는 캐시 계층의 일부(600)의 블록도이다. L2 캐시(605)는 도 5에 도시된 프로세서 코어들(501-504) 중 하나와 같은 프로세서 코어에 대한 정보를 캐싱한다. L2 캐시(605)와 관련된 프로세서 코어의 전원이 차단된 상태에 있는 동안 L3 캐시(610)는 전력을 수신하는 것을 계속하기 때문에 L3 캐시(610)는 L2 캐시(605)에 대한 보유 영역을 구현하는데 사용된다. 일부 실시예에서, L2 캐시(605)의 엔트리의 사본은 L2 캐시(605)를 린스하거나 플러시함으로써 L3 캐시(610)에 다시 기록된다.
L3 캐시(610)의 보유 영역은 L2 캐시(605)와 관련된 섀도우 태그(615)를 저장한다. 섀도우 태그(615)는 L2 캐시(605)의 엔트리에 캐시된 값의 물리적 어드레스(620)를 포함한다. 비트 값 (625)은 엔트리가 수정되지 않은 (클린) 데이터 (1의 값은 클린 데이터를 나타냄)를 포함하는지 여부를 나타내고, 비트 값 (630)은 엔트리가 전원이 꺼진 상태에 있는 캐시와 관련되는지를 나타내고 (1의 값은 전원이 차단된 캐시와 연관을 나타냄) 및 비트 값(635)은 엔트리가 유효한지 여부를 나타낸다 (1의 값은 무효화를 나타냄). 비트 값(635)은 대응하는 엔트리에 대한 프로브 히트에 응답하여 수정되고, 예를 들어, 비트 값(635)은 엔트리가 프로브 히트에 의해 무효화되었음을 나타내는 1의 값으로 설정된다. 도 6에 도시된 섀도우 태그(615)는 모든 엔트리가 전원이 차단된 상태인 캐시와 관련된 클린 데이터를 포함하고 캐시 프로브가 물리적 어드레스 P_ADDR_2와 관련된 캐시 엔트리를 무효화했음을 나타낸다.
L2 캐시(605)와 관련된 프로세서 코어가 전원이 차단된 상태로부터 이탈을 개시하는 것에 응답하여, L2 캐시(605)의 엔트리는 L3 캐시(610)에 저장된 정보를 사용하여 다시 채워진다. 예를 들어, 섀도우 태그(615)에 저장된 유효한 엔트리의 물리적 어드레스는 L2 캐시(605)의 엔트리로 프리페치된다. 다른 예를 들어, L3 캐시(610)가 L2 캐시(605)의 엔트리들에 저장된 값들의 사본들을 저장하면, 값들은 L2 캐시(605)에 다시 기록된다. 그런 다음 비트 값(635)은 프로세서 코어의 전원이 차단된 상태에 있는 동안 캐시 프로브를 수신한 엔트리를 무효화하는데 사용된다.
보유 영역의 일부 실시예는 프로세서 코어가 전원이 차단된 상태에 있는 동안 수신된 프로브를 나타내는 정보를 저장하는 프로브 큐(640)를 포함한다. L3 캐시(610)에 저장된 캐시 엔트리를 나타내는 정보를 사용하여 L2 캐시(605)가 다시 채워진 후에 프로세서 코어의 전원이 공급된 것에 응답하여 프로브 큐(640)에 저장된 프로브가 L2 캐시(605)로 발송된다. 프로브 큐(640)에 저장된 프로브는 재생하는 것은 프로브에 의해 표시된 엔트리를 무효화하여 L2 캐시(605)를 적절한 상태에 놓는다. 프로브 큐(640)의 오버플로우의 경우, 프로세서 코어는 프로브 큐(640)에서 프로브를 서비스하기 위해 전원이 공급되거나 프로세서 코어의 전원이 공급될 때 전체 L2 캐시(605)가 무효화된다.
도 7은 일부 실시예에 따른 하위 레벨 캐시와 관련된 프로세서 코어의 전원을 차단하기 전에 보유 영역에서 하위 레벨 캐시에 엔트리를 나타내는 정보를 저장하는 방법(700)의 흐름도이다. 방법(700)은 도 1에 도시된 처리 시스템(100), 도 5에 도시된 캐시 계층(500), 도 6에 도시된 처리 시스템의 일부(600)의 일부 실시예로 구현된다.
블록(705)에서, 프로세서 코어는 전원이 공급되고 정상 동작 모드에 있다. 도시된 실시예에서, 상위 레벨 캐시의 섀도우 태그는 프로세서 코어에 의해 사용되는 하위 레벨 캐시의 캐시 라인에 대한 프로브 필터(probe filter)로서 사용된다. 프로브 필터는 프로세서 코어와 관련된 하위 레벨 캐시에 저장되지 않은 캐시 라인에 대한 프로브가 프로세서 코어로 발송되는 것을 방지한다. 따라서, 섀도우 태그는 프로세서 코어가 전원 공급 모드에서 동작하는 동안 유지된다.
블록(710)에서, 처리 시스템은 프로세서 코어의 전원이 차단되는 것을 개시한다. 예를 들어, 실행을 위해 명령이 프로세서 코어에 디스패치되지 않거나 전원 차단을 위한 임계값을 초과하는 후속하는 시간 간격 동안 실행을 위해 프로세서 코어에 명령이 디스패치되지 않을 것이라는 예측에 응답하여 프로세서 코어는 전원이 차단된 상태로의 진입을 개시한다.
블록(715)에서, 하위 레벨 캐시의 수정 또는 더티 엔트리는 프로세서 코어가 전원이 차단된 상태에 있는 동안 보유 전압을 수신하는 보유 영역을 구현하는 상위 레벨 캐시에 다시 기록된다. 예를 들어, L2 캐시의 더티 엔트리는 L3 캐시에 다시 기록될 수 있다. L2 캐시의 엔트리와 관련된 L3 캐시의 섀도우 태그도 또한 업데이트된다. 다른 예에서, 다른 캐시(L1 캐시와 같은)의 엔트리를 나타내는 정보는 또한 보유 영역에 저장될 수 있다. 게다가, 보유 전압이 하위 레벨 캐시에 제공되고 멀티 프로세서 코어는 전원이 차단된 상태인 경우 외부 메모리 예컨대, DRAM, 다른 캐시 또는 하위 레벨 캐시를 포함하는 다른 엔티티에 보유 영역이 구현될 수 있다.
블록(720)에서, 프로세서 코어의 전원이 차단된다. 하위 레벨 캐시의 전원이 상실된 때 이 정보의 손실을 방지하기 위해 하위 레벨 캐시의 엔트리를 나타내는 정보가 외부 메모리에 저장된 후 프로세서 코어의 전원 차단이 발생한다.
블록(725)에서, 보유 영역의 섀도우 태그는 프로세서 코어가 전원이 차단된 상태에 있는 동안 수신된 캐시 프로브에 응답하여 수정된다. 예를 들어, 엔트리의 유효 여부를 나타내는 엔트리의 섀도우 태그의 비트는 엔트리의 캐시 프로브 수신에 대한 응답으로 엔트리가 유효하지 않음을 나타내는 값으로 설정된다. 다른 예에서, 캐시 프로브는 보유 영역에 구현되는 프로브 큐에 추가된다.
도 8은 일부 실시예들에 따른 프로세서 코어가 전원이 차단된 상태로부터의 이탈을 개시하는 것에 응답하여 보유 영역에 저장된 정보를 사용하여 하위 레벨 캐시에서 엔트리들을 복원하는 방법(800)의 흐름도이다. 방법(800)은 도 1에 도시된 처리 시스템(100), 도 5에 도시된 캐시 계층(510), 도 6에 도시된 처리 시스템의 일부(600)의 일부 실시예로 구현된다.
블록(805)에서, 처리 시스템은 프로세서 코어의 전원 공급을 개시한다. 예를 들어, 전원이 차단된 상태로부터의 이탈은 처리 시스템의 디스패처가 프로세서 코어에서의 실행을 위한 명령을 디스패치하는 것에 응답하여 개시된다.
블록(810)에서, 프로세서 코어와 관련된 하위 레벨 캐시가 복원된다. 일부 실시예들에서, 하위 레벨 캐시는 보유 영역에서 섀도우 태그에 저장된 물리적 어드레스를 사용하여 다시 채워진다. 예를 들어, L2 캐시는 L3 캐시의 섀도우 태그에 유효한 엔트리의 물리적 어드레스를 프리페치함으로써 다시 채워진다. 이 경우, 유효한 엔트리만 프리페치되고 L3 캐시의 섀도우 태그에 무효인 엔트리는 L2 캐시로 프리페치되지 않기 때문에 L2 캐시의 정보를 나중에 수정할 필요가 없다. 다른 예에서, L2 캐시는 L3 캐시로부터 L2 캐시로 엔트리의 사본을 기록함으로써 다시 채워진다. 하위 레벨 캐시의 일부 실시예는 프로세서 코어가 전원이 차단된 모드에 있는 동안 보유 전압이 제공된다. 그 경우에, 하위 레벨 캐시를 복원하기 위해 하위 레벨 캐시의 엔트리가 다시 채워질 필요가 없다. 예를 들어, 코어의 전원이 차단된 상태에서 L2 캐시의 스토리지 엘리먼트가 보유 전압을 수신하면, L2 캐시 엔트리는 L2 캐시에 원위치에 보유되고 L2 캐시는 무효화 정보를 기반으로 복원된다.
프로브 큐를 구현하는 보유 영역의 실시예에서, 전원이 차단된 상태로부터의 이탈을 개시하는 프로세서 코어에 응답하여 하위 레벨 캐시에 제공되는 정보는 프로브 큐에 저장된 캐시 프로브에 기초하여 수정된다(블록 (815)에서). 예를 들어, 프로브 큐에 저장된 캐시 프로브는 재생되어 다시 채워진 L2 캐시의 대응하는 엔트리를 무효화한다. 따라서, 블록(815)은 옵션이며(점선으로 표시됨), 방법(800)의 일부 실시예에서는 수행되지 않는다.
블록(820)에서, 프로세서 코어의 전원이 공급되고 다시 채워진 하위 레벨 캐시의 베이시스에 기초하여 명령을 실행하기 시작한다.
일부 실시예에서, 전술한 장치 및 기술은 도 1 내지 도 8을 참조하여 전술한 처리 시스템과 같은 하나 이상의 집적 회로(IC) 디바이스(집적 회로 패키지 또는 마이크로 칩이라고도 함)를 포함하는 시스템에 구현된다. 이러한 IC 디바이스의 디자인 및 제작에는 전자 디자인 자동화(EDA) 및 CAD(Computer Aided Design) 소프트웨어 툴이 사용될 수 있다. 이러한 디자인 툴은 전형적으로 하나 이상의 소프트웨어 프로그램으로 표시된다. 하나 이상의 소프트웨어 프로그램은 회로부를 제조하는 제조 시스템을 디자인하거나 적응시키는 프로세스의 적어도 일부를 수행하기 위해 하나 이상의 IC 디바이스의 회로를 나타내는 코드상에서 동작하도록 컴퓨터 시스템을 조작하기 위해 컴퓨터 시스템에 의해 실행 가능한 코드를 포함한다. 이 코드는 명령, 데이터 또는 명령과 데이터의 조합을 포함할 수 있다. 디자인 툴 또는 제작 툴을 나타내는 소프트웨어 명령은 전형적으로 컴퓨팅 시스템에 액세스 가능한 컴퓨터 판독 가능 저장 매체에 저장된다. 마찬가지로, IC 디바이스의 디자인 또는 제조의 하나 이상의 단계를 나타내는 코드는 동일한 컴퓨터 판독 가능 저장 매체 또는 상이한 컴퓨터 판독 가능 저장 매체에 저장되어 액세스될 수 있다.
컴퓨터 판독 가능 저장 매체는 컴퓨터 시스템에 명령 및/또는 데이터를 제공하기 위해 사용 중에 컴퓨터 시스템에 의해 액세스 가능한 임의의 비 일시적 스토리지 매체, 또는 비 일시적 스토리지 매체의 조합을 포함할 수 있다. 이러한 저장 매체는 광 매체(예를 들어, CD (Compact Disc), DVD (Digital Versatile Disc), 블루 레이 디스크), 자기 미디어(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리 (예를 들어, 랜덤 액세스 메모리 (RAM) 또는 캐시), 비 휘발성 메모리 (예를 들어, 판독 전용 메모리 (ROM) 또는 플래시 메모리) 또는 MEMS (microelectromechanical systems) 기반 저장 매체를 포함할 수 있지만, 이에 제한되지는 않는다. 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템 (예를 들어, 시스템 RAM 또는 ROM)에 내장되거나, 컴퓨팅 시스템 (예를 들어, 자기 하드 드라이브)에 고정적으로 부착되거나, 컴퓨팅 시스템 (예를 들어, 광 디스크 또는 범용 직렬 버스 (USB) 기반 플래시 메모리)에 착탈 가능하게 부착되거나 또는 유선 또는 무선 네트워크 (예를 들어, 네트워크 액세스 가능 스토리지 (NAS))를 통해 컴퓨터 시스템에 결합될 수 있다.
일부 실시예에서, 전술한 기술의 특정 양태는 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비 일시적 컴퓨터 판독 가능 스토리지 매체에 저장되거나 그렇지 않으면 유형적으로 구현된 하나 이상의 실행 가능 명령 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서를 조작하여 전술한 기술의 하나 이상의 양태를 수행하는 명령 및 특정 데이터를 포함할 수 있다. 비 일시적 컴퓨터 판독 가능 저장 매체는 예를 들어, 자기 또는 광 디스크 저장 디바이스, 플래시 메모리와 같은 고체 상태 저장 디바이스, 캐시, 랜덤 액세스 메모리 (RAM) 또는 다른 비 휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비 일시적 컴퓨터 판독 가능한 메모리 매체에 저장된 실행 가능한 명령은 소스 코드, 어셈블리 언어 코드, 객체 코드, 해석되거나 또는 하나 이상의 프로세서에 의해 실행 가능한 다른 명령 포맷일 수 있다.
전반적인 설명으로 상기에서 설명된 모든 활성 또는 엘리먼트가 요구되는 것은 아니며 특정 활성이나 디바이스의 일부가 필요하지 않을 수 있으며 하나 이상의 추가 활성이 수행되거나 설명된 것들에 추가하여 엘리먼트가 유도될 수 있다는 것에 유의한다. 더 나아가, 활동이 나열되는 순서가 반드시 수행되는 순서와 다를 수 있다. 또한, 개념들은 특정 실시예를 참조하여 설명되었다. 그러나, 당업자는 이하의 청구 범위에 설명된 바와 같이 본 개시의 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있음을 이해할 것이다. 따라서, 상세한 설명 및 도면은 제한적인 의미 라기보다는 예시적인 것으로 간주되어야 하며, 그러한 모든 수정은 본 발명의 범위 내에 포함되는 것으로 의도된다.
특정 실시예들과 관련하여 장점들, 다른 장점들 및 문제들에 대한 해결책들이 상기에서 설명되었다. 그러나 임의의 장점, 이점 또는 해결책을 더 명확하게 하거나 만들 수 있는 문제점 및 임의의 특징(들)에 대한 장점, 이점, 해결책은 임의의 또는 모든 청구항들의 중요하고 필수적이며 본질적인 특징으로 해석되어서는 안된다. 또한, 개시된 주제가 본 출원의 교시의 장점을 갖는 당업자에게 명백한 상이하지만 동등한 방식으로 수정되고 실시될 수 있기 때문에, 개시된 특정 실시예는 단지 예시적인 것이다. 어떠한 제한도 이하의 청구 범위에 기재된 이외에 본 출원에 도시된 구성 또는 디자인의 세부 사항에 의도되지 않는다. 따라서, 상기 개시된 특정 실시예는 변경되거나 수정될 수 있으며 모든 그러한 변형은 개시된 주제의 범위 내에서 고려되는 것이 명백하다. 따라서, 본 출원에서 추구하는 보호는 이하의 청구 범위에 개시된 바와 같다.

Claims (20)

  1. 방법에 있어서,
    제 1 캐시와 관련된 프로세서 코어가 전원이 차단된 것(power down)에 응답하여, 상기 프로세서 코어가 전원이 차단된 상태에 있는 동안 보유 전압(retention voltage)을 수신하는 처리 시스템의 보유 영역(retention region)에 상기 제 1 캐시의 엔트리 세트를 나타내는 정보를 저장하는 단계;
    상기 제 1 캐시의 엔트리 세트 중 적어도 하나의 무효화된(invalidated) 엔트리를 나타내는 정보를 상기 보유 영역에 저장하는 단계; 및
    상기 프로세서 코어의 전원이 차단된 상태로부터의 이탈(exit)에 응답하여, 상기 엔트리를 나타내는 저장된 정보 및 상기 적어도 하나의 무효화된 엔트리를 나타내는 저장된 정보를 이용하여 상기 제 1 캐시의 엔트리를 복원하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 보유 영역은 상기 프로세서 코어의 전원이 차단된 상태에 있는 동안 상기 보유 전압을 수신하는 상기 제 1 캐시를 포괄하는 제 2 캐시, 상기 제 1 캐시에 캐시된 정보를 저장하는 외부 메모리 및 상기 제 1 캐시의 일부 중 적어도 하나를 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 제 1 캐시는 상기 프로세서 코어에 대한 가상-물리적 어드레스 변환을 캐싱(cache)하는 변환 색인 버퍼(TLB : translation lookaside buffer)인, 방법.
  4. 제 3 항에 있어서,
    상기 TLB의 엔트리를 나타내는 정보를 저장하는 단계는 상기 보유 영역에 상기 엔트리를 저장하는 단계를 포함하고, 상기 TLB의 엔트리를 복원하는 단계는 상기 저장된 엔트리를 상기 TLB에 제공하는 단계를 포함하는, 방법.
  5. 제 3 항에 있어서,
    상기 TLB의 엔트리를 나타내는 정보를 저장하는 단계는 상기 보유 영역의 상기 TLB의 엔트리의 가상 어드레스를 저장하는 단계를 포함하고; 및
    상기 TLB의 엔트리를 복원하는 단계는 상기 가상 어드레스를 프리페치(prefetch)하여 상기 TLB의 엔트리를 채우는(populate) 페이지 테이블 워크(page table walk)를 개시하는 단계를 포함하는, 방법.
  6. 제 3 항에 있어서,
    상기 적어도 하나의 무효화된 엔트리를 나타내는 정보를 저장하는 단계는 상기 프로세서 코어가 전원이 차단된 상태에 있는 동안 상기 적어도 하나의 무효화된 엔트리를 무효화하는 신호를 수신한 것에 응답하여 상기 정보를 큐(queue)에 저장하는 단계를 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 큐가 무효화 요청으로 오버플로우(overflow)된 것에 응답하여 상기 TLB를 무효화하는 단계를 더 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 제 1 캐시는 상기 제 1 캐시를 포괄하는 제 2 캐시를 포함하는 캐시 계층(cache hierarchy)에서 하위 레벨 캐시인, 방법.
  9. 제 8 항에 있어서,
    상기 제 1 캐시에 상기 엔트리를 나타내는 정보를 저장하는 단계는 상기 엔트리의 수정된 값을 상기 제 2 캐시 또는 외부 메모리에 기록하기 위해 상기 제 1 캐시를 린스하는 단계(rinsing) 및 상기 엔트리의 모든 값을 상기 제 2 캐시 또는 외부 메모리에 기록하기 위해 상기 제 1 캐시를 플러시하는 단계(flushing) 중 적어도 하나를 포함하는, 방법.
  10. 제 9 항에 있어서,
    상기 제 1 캐시에 상기 엔트리를 나타내는 정보를 저장하는 단계는 상기 외부 메모리 또는 상기 제 2 캐시의 엔트리와 관련된 섀도우 태그(shadow tag)에 상기 엔트리의 물리적 어드레스를 저장하는 단계를 포함하고; 및
    상기 적어도 하나의 무효화된 엔트리를 나타내는 정보를 저장하는 단계는 상기 섀도우 태그에 정보를 저장하는 단계를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 제 1 캐시의 엔트리를 복원하는 단계는 상기 엔트리의 물리적 어드레스 및 상기 섀도우 태그의 상기 적어도 하나의 무효화된 엔트리를 나타내는 정보에 기초하여 상기 제 1 캐시의 유효 엔트리를 프리페치하는 단계(prefetching)를 포함하는, 방법.
  12. 장치에 있어서,
    제 1 캐시로부터 정보를 액세스하도록 구성된 프로세서 코어; 및
    상기 프로세서 코어가 전원이 차단된 상태에 있는 동안 보유 전압을 수신하는 보유 영역으로서, 상기 프로세서 코어가 전원이 차단된 상태에 진입하는 것에 응답하여 상기 제 1 캐시의 엔트리를 나타내는 정보가 상기 보유 영역에 저장되고, 상기 보유 영역은 상기 제 1 캐시의 엔트리 중 적어도 하나의 무효화된 엔트리를 나타내는 정보를 저장하는, 상기 보유 영역을 포함하고; 및
    상기 프로세서 코어가 전원이 차단된 상태로부터의 이탈을 개시한 것에 응답하여, 상기 제 1 캐시의 엔트리는 상기 엔트리를 나타내는 저장된 정보 및 상기 적어도 하나의 무효화된 엔트리를 나타내는 저장된 정보를 이용하여 복원되는, 장치.
  13. 제 12 항에 있어서,
    상기 보유 영역은 상기 프로세서 코어의 전원이 차단된 상태에 있는 동안 상기 보유 전압을 수신하는 상기 제 1 캐시를 포괄하는 제 2 캐시, 상기 제 1 캐시에 캐시된 정보를 저장하는 외부 메모리 및 상기 제 1 캐시의 일부 중 적어도 하나를 포함하는, 장치.
  14. 제 12 항에 있어서,
    상기 제 1 캐시는 상기 프로세서 코어에 대한 가상-물리적 어드레스 변환을 캐싱하는 변환 색인 버퍼(TLB : translation lookaside buffer)인, 장치.
  15. 제 14 항에 있어서,
    상기 프로세서 코어가 전원이 차단된 상태에 있는 동안 상기 적어도 하나의 무효화된 엔트리를 무효화하는 신호를 수신한 것에 응답하여 상기 적어도 하나의 무효화된 엔트리를 나타내는 정보를 저장하도록 구성된 큐(queue)를 더 포함하는, 장치.
  16. 제 12 항에 있어서,
    상기 제 1 캐시는 상기 제 1 캐시를 포괄하는 제 2 캐시를 포함하는 캐시 계층에서 하위 레벨 캐시인, 장치.
  17. 방법에 있어서,
    프로세서 코어가 전원이 차단된 상태로 진입을 개시하는 것에 응답하여 처리 시스템의 보유 영역에 캐시의 엔트리를 나타내는 정보를 저장하는 단계로서, 상기 프로세서 코어는 전원이 차단된 상태에 있고 동시에 상기 보유 영역은 보유 전압을 수신하는, 상기 저장하는 단계; 및
    상기 저장된 정보에 기초하여 상기 프로세서 코어가 전원이 차단된 상태에 있는 동안 무효화되지 않은 캐시에 엔트리를 선택적으로 복원하는 단계를 포함하는, 방법.
  18. 제 17 항에 있어서,
    상기 엔트리를 선택적으로 복원하는 단계는 상기 프로세서 코어가 전원이 차단된 상태에 있는 동안 상기 엔트리를 무효화하는 신호를 수신하는 것에 응답하여 무효화된 엔트리를 나타내는 정보를 저장하는 단계 및 유효 엔트리에 기초하여 상기 캐시를 복원하는 단계를 포함하는, 방법.
  19. 제 18 항에 있어서,
    상기 유효 엔트리들에 기초하여 상기 캐시를 복원하는 단계는 상기 보유 영역에 저장된 상기 엔트리들로 상기 캐시를 다시 채우는 단계 그리고 이어서 상기 캐시에서 상기 무효화된 엔트리를 무효화하는 단계를 포함하는, 방법.
  20. 제 17 항에 있어서,
    상기 캐시를 선택적으로 복원하는 단계는 미리 결정된 수를 초과하는 다수의 무효화된 엔트리에 응답하여 상기 캐시를 무효화하는 단계를 포함하는, 방법.
KR1020207014907A 2017-11-01 2018-09-14 전원이 차단된 상태에서 프로세서 코어의 캐시 엔트리 보유하기 KR20200066731A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/800,727 US10956332B2 (en) 2017-11-01 2017-11-01 Retaining cache entries of a processor core during a powered-down state
US15/800,727 2017-11-01
PCT/US2018/051157 WO2019089142A1 (en) 2017-11-01 2018-09-14 Retaining cache entries of a processor core during a powered-down state

Publications (1)

Publication Number Publication Date
KR20200066731A true KR20200066731A (ko) 2020-06-10

Family

ID=66243954

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207014907A KR20200066731A (ko) 2017-11-01 2018-09-14 전원이 차단된 상태에서 프로세서 코어의 캐시 엔트리 보유하기

Country Status (6)

Country Link
US (2) US10956332B2 (ko)
EP (1) EP3704590A4 (ko)
JP (1) JP7214727B2 (ko)
KR (1) KR20200066731A (ko)
CN (1) CN111344685A (ko)
WO (1) WO2019089142A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802967B1 (en) * 2019-06-28 2020-10-13 Intel Corporation Partial write management in a multi-tiled compute engine
US11586551B2 (en) * 2020-08-31 2023-02-21 Apple Inc. Storage array invalidation maintenance
US20220414016A1 (en) * 2021-06-23 2022-12-29 Advanced Micro Devices, Inc. Concurrent processing of memory mapping invalidation requests
CN114356588B (zh) * 2022-03-18 2022-06-17 苏州云途半导体有限公司 一种数据预加载方法和装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
US6490671B1 (en) * 1999-05-28 2002-12-03 Oracle Corporation System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system
US7546418B2 (en) * 2003-08-20 2009-06-09 Dell Products L.P. System and method for managing power consumption and data integrity in a computer system
US20050160229A1 (en) * 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US8527709B2 (en) 2007-07-20 2013-09-03 Intel Corporation Technique for preserving cached information during a low power mode
US8412911B2 (en) * 2009-06-29 2013-04-02 Oracle America, Inc. System and method to invalidate obsolete address translations
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
JP2011150653A (ja) * 2010-01-25 2011-08-04 Renesas Electronics Corp マルチプロセッサシステム
US8887012B2 (en) * 2010-08-24 2014-11-11 Advanced Micro Devices, Inc. Method and apparatus for saving and restoring soft repair data
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US20130254457A1 (en) * 2012-03-21 2013-09-26 Lsi Corporation Methods and structure for rapid offloading of cached data in a volatile cache memory of a storage controller to a nonvolatile memory
KR101979392B1 (ko) * 2012-05-17 2019-05-16 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US20140095801A1 (en) * 2012-09-28 2014-04-03 Devadatta V. Bodas System and method for retaining coherent cache contents during deep power-down operations
US9128857B2 (en) * 2013-01-04 2015-09-08 Apple Inc. Flush engine
US9367247B2 (en) * 2013-08-20 2016-06-14 Seagate Technology Llc Memory access requests in hybrid memory system
US9262322B2 (en) * 2013-09-17 2016-02-16 Advanced Micro Devices, Inc. Method and apparatus for storing a processor architectural state in cache memory
US9858201B2 (en) 2015-02-20 2018-01-02 Qualcomm Incorporated Selective translation lookaside buffer search and page fault
US9904623B2 (en) * 2015-05-01 2018-02-27 Advanced Micro Devices, Inc. Early cache prefetching in preparation for exit from idle mode
US9710041B2 (en) * 2015-07-29 2017-07-18 Intel Corporation Masking a power state of a core of a processor
US9880770B2 (en) * 2015-09-02 2018-01-30 SK Hynix Inc. Supporting invalidation commands for non-volatile memory
US11289133B2 (en) 2015-09-16 2022-03-29 Arm Limited Power state based data retention
US20170161194A1 (en) * 2015-12-02 2017-06-08 Advanced Micro Devices, Inc. Page-based prefetching triggered by tlb activity
US9817760B2 (en) * 2016-03-07 2017-11-14 Qualcomm Incorporated Self-healing coarse-grained snoop filter
US10678702B2 (en) * 2016-05-27 2020-06-09 Advanced Micro Devices, Inc. Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations

Also Published As

Publication number Publication date
JP2021501423A (ja) 2021-01-14
US11704248B2 (en) 2023-07-18
EP3704590A4 (en) 2021-08-04
US10956332B2 (en) 2021-03-23
US20210056031A1 (en) 2021-02-25
US20190129853A1 (en) 2019-05-02
EP3704590A1 (en) 2020-09-09
WO2019089142A1 (en) 2019-05-09
CN111344685A (zh) 2020-06-26
JP7214727B2 (ja) 2023-01-30

Similar Documents

Publication Publication Date Title
US11704248B2 (en) Retaining cache entries of a processor core during a powered-down state
US9223710B2 (en) Read-write partitioning of cache memory
KR101379596B1 (ko) Tlb 프리페칭
US8643660B2 (en) Technique to share information among different cache coherency domains
JP5528554B2 (ja) ブロックベースの非透過的キャッシュ
US9262322B2 (en) Method and apparatus for storing a processor architectural state in cache memory
JP6663542B2 (ja) 遅延キャッシュの利用のためのシステム及び方法
KR20170120635A (ko) 캐시 메인터넌스 명령
CA2601779C (en) Global modified indicator to reduce power consumption on cache miss
US11392508B2 (en) Lightweight address translation for page migration and duplication
JP2015515687A (ja) 高速キャッシュシャットダウンのための装置および方法
US11526449B2 (en) Limited propagation of unnecessary memory updates
CN110554975A (zh) 提供死块预测以用于确定是否在cache设备中对数据高速缓存
CN115087961B (zh) 用于相干及非相干存储器请求的仲裁方案
US10402326B1 (en) Accessing memories in coherent and non-coherent domains in a computing system
EP3724774B1 (en) Rinsing cache lines from a common memory page to memory
US11847062B2 (en) Re-fetching data for L3 cache data evictions into a last-level cache
KR20240136345A (ko) 최종 레벨 캐시로의 l3 캐시 데이터 축출을 위한 데이터를 다시 페치하기

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal