KR20140045364A - 대용량 데이터 캐시에 대한 효율적 태그 저장 - Google Patents

대용량 데이터 캐시에 대한 효율적 태그 저장 Download PDF

Info

Publication number
KR20140045364A
KR20140045364A KR1020137031457A KR20137031457A KR20140045364A KR 20140045364 A KR20140045364 A KR 20140045364A KR 1020137031457 A KR1020137031457 A KR 1020137031457A KR 20137031457 A KR20137031457 A KR 20137031457A KR 20140045364 A KR20140045364 A KR 20140045364A
Authority
KR
South Korea
Prior art keywords
cache
data
memory
data cache
tag
Prior art date
Application number
KR1020137031457A
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 KR20140045364A publication Critical patent/KR20140045364A/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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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 데이터 캐시, 제2 데이터 캐시 및 캐시 로직을 포함한다. 캐시 로직은 제1 데이터 캐시에 메모리 데이터를 캐싱하도록 구성된다. 제1 데이터 캐시에 메모리 데이터를 캐싱하는 것은 제1 데이터 캐시에 메모리 데이터를 저장하고 메모리 데이터에 대응하는 태그 데이터를 제2 데이터 캐시에 저장하지만 제1 데이터 캐시에는 저장하지 않는 단계를 포함한다.

Description

대용량 데이터 캐시에 대한 효율적 태그 저장{EFFICIENT TAG STORAGE FOR LARGE DATA CACHES}
더 강력한 컴퓨터 프로세서 구축에 가장 중요한 어려움은 프로세싱 코어가 계산을 수행할 수 있는 속도와 그것들이 그들 계산을 수행할 메모리로부터 데이터를 검색할 수 있는 속도 간 넓은 격차이다. "메모리 갭"을 다루는데 많은 노력이 향해져 왔지만, 프로세싱 능력은 최근 몇 년 메모리 속도를 앞지르기를 계속하여 왔다. 더욱, 오늘날의 컴퓨터 프로세서가 점점 멀티-코어(즉, 각자의 소프트웨어 명령어 스트림을 실행하도록 각각 구성된 다중 컴퓨팅 유닛을 포함)로 되어감에 따라, 메모리 대역폭에 대한 수요도 계속 커지고 있다.
메모리로(예컨대, 오프-칩 동적 램으로)의 액세스가 멀티-코어 프로세서의 커지는 처리량 수요를 만족시키기에 불충분하였던 하나의 이유는 I/O 핀의 한정된 스케일가능성이다. 스택 메모리(stacked memory) 또는 3D 적층은, 프로세서 위에 직접 메모리를 적층함으로써 이러한 제한을 다루고, 그로써 프로세서와 메모리 간 배선 지연을 상당하게 감축하는 최근 제안이다. 예컨대, 스택-메모리 회로는 고밀도, 낮은-레이턴시, 높은-대역폭 수직 인터커넥트로 본딩된 액티브 실리콘의 다중 층을 사용하여 구성될 수 있다. 전통적인 오프-칩 DRAM 스택 메모리에 비해, 증가된 데이터 대역폭, 감소된 레이턴시 및 더 낮은 에너지 요건을 제공한다. 메모리 적층은 또한 컴퓨터 아키텍처가 고속 CMOS(상보적 금속-산화물-반도체), 고밀도 DRAM, eDRAM 및/또는 다른 것들과 같이 다른 메모리 기술을 병합할 수 있게 한다.
스택-메모리 기술은 L4 캐시와 같은 대용량, 마지막-레벨 데이터 캐시(즉, 캐시 계층의 가장 낮은 레벨)를 구현하는데 사용되어 왔다. 대용량, 마지막-레벨 캐시는 다중-코어 프로세서의 높은 메모리 수요 및/또는 현대 애플리케이션의 상당한 메모리 풋프린트를 수용하는데 바람직할 수 있다.
스택 메모리를 사용하여 대용량, 마지막-레벨 캐시(즉, 스택-메모리 캐시)를 구현하는 것은 수개의 이점을 제시한다. 예컨대, 그러한 캐시는 소프트웨어에 의해서라기보다는 하드웨어에 의해서 관리될 수 있는데, 그에 의하면 캐시가 애플리케이션 단계 변화에 쉽게 적응하고 온 및 오프-칩 상의 데이터 이동과 연관된 변환 색인 버퍼(translation lookaside buffer: TLB) 플러시를 회피할 수 있게 된다. 더욱, 전통적 캐시는 다이 공간을 비효율적으로 소모하는 고속이지만 비싼 정적 메모리(예컨대, SRAM)를 사용하여 구현되기 때문에, 그것들은 생산하기에 비싸고, 작은 용량을 갖고, 고정된 구성(예컨대, 연관성(associativity), 블록 사이즈 등)으로 구성된다. 대조적으로, 스택-메모리 캐시는 전통적 캐시를 구축하는데 사용된 정적 메모리보다 덜 비싸고 더 고밀도인 동적 메모리(예컨대, DRAM)를 사용하여 구현될 수 있다. 따라서, 스택-메모리 캐시는 전통적 SRAM-기반 기술이 할 수 있는 것보다 더 낮은 비용으로 대용량, 마지막-레벨 캐시를 제공할 수 있다.
컴퓨터 시스템에서 데이터 캐싱을 구현하기 위한 장치, 방법 및 매체가 개시된다. 그 장치는 제1 데이터 캐시, 제2 데이터 캐시 및 캐시 로직을 포함한다. 캐시 로직은 제1 데이터 캐시에 메모리 데이터를 캐싱하도록 구성된다. 제1 데이터 캐시에 메모리 데이터를 캐싱하는 것은 제1 데이터 캐시에 메모리 데이터를 저장하고 메모리 데이터에 대응하는 태그 데이터를 제2 데이터 캐시에 저장하지만 제1 데이터 캐시에는 저장하지 않는 단계를 포함한다.
일부 실시예에 있어서, 제1 데이터 캐시는 런타임에 동적으로 재구성가능할 수 있다. 예컨대, 소프트웨어(예컨대, 운영 체계)는 제2 데이터 캐시의 및/또는 제1 데이터 캐시의 하나 이상의 구성 레지스터를 수정함으로써 제1 데이터 캐시의 사이즈, 블록 사이즈, 블록 수, 연관성 레벨 및/또는 다른 파라미터를 수정할 수 있다. 일부 실시예에 있어서, 소프트웨어는 하나 이상의 프로세서 상에서 실행하고 있는 워크로드(workload)의 특정 특성을 검출하는 것에 응답하여 제1 데이터 캐시를 재구성할 수 있다.
다양한 실시예에 있어서, 제1 및 제2 데이터 캐시는 데이터 캐시 계층의 각자의 레벨을 구현할 수 있다. 예컨대, 제1 데이터 캐시는 제2 데이터 캐시에 의해 구현된 레벨 바로 아래인 캐시 계층 레벨을 구현할 수 있다(예컨대, 제1 데이터 캐시는 L4를 구현하고 제2 데이터 캐시는 L3 캐시를 구현한다). 일부 실시예에 있어서, 제1 데이터 캐시는 스택 메모리를 사용하여 구현될 수 있는 대용량, 마지막 레벨 캐시일 수 있다.
도 1은, 몇몇 실시예에 따라, L3-구현된 태그 어레이를 갖는 재구성가능한 L4 데이터 캐시를 포함하는 프로세서의 다양한 컴포넌트를 예시하는 블록 선도;
도 2는, 몇몇 실시예에 따라, 소정 캐시가 소정 메모리 어드레스를 분해할 수 있는 필드를 예시하는 블록 선도;
도 3a는, 다양한 실시예에 따라, L4 태그를 저장하기 위해 일부 L3 캐시 블록이 어떻게 예약될 수 있는지를 예시하는 블록 선도;
도 3b는, 몇몇 실시예에 따라, 캐시 태그를 저장하는데 사용가능한 태그 구조 예시도;
도 4a는 L3 캐시 로직이 재구성가능한 L4 캐시를 구현하기 위해 포함할 수 있는 다양한 레지스터의 예시도;
도 4b는 L4 캐시 로직이 재구성가능한 L4 캐시를 구현하기 위해 포함할 수 있는 다양한 레지스터의 예시도;
도 5는, 몇몇 실시예에 따라, L4 캐시가 소정 메모리 어드레스에 대응하는 데이터를 저장하고 있는지 결정하도록 L3 캐시에 저장된 L4 태그를 살펴보기 위한 방법을 예시하는 흐름 선도;
도 6은 물리적으로 인접하는 메모리를 각각 저장하는 DRAM 페이지 상에서 일례의 캐시 블록 배열의 예시도;
도 7은, 몇몇 실시예에 따라, 소정 물리적 어드레스에 대응하는 L4 캐시 블록의 위치를 찾아내기 위한 방법을 예시하는 흐름 선도;
도 8은, 몇몇 실시예에 따라, 런타임 동안 L4 캐시를 재구성하기 위한 방법의 흐름 선도;
도 9는, 몇몇 실시예에 따라, 재구성가능한 캐시 구현의 구성 레지스터에 대한 4개의 예의 구성을 예시하는 테이블;
도 10은, 몇몇 실시예에 따라, 본 명세서에서 설명되는 바와 같은 스택 DRAM 캐시를 이용하도록 구성된 컴퓨터 시스템을 예시하는 블록 선도.
본 명세서는 "일 실시예" 또는 "어느 일 실시예"에 대한 참조를 포함한다. 문구 "일 실시예에서" 또는 "어느 일 실시예에서"가 나타나도 반드시 동일 실시예를 가리키는 것은 아니다. 특정 특징, 구조 또는 특성은 본 개시와 일관된 어떠한 적합한 방식으로라도 조합될 수 있다.
용어집. 아래의 단락은 (첨부 청구범위를 포함하는) 본 개시에서 발견되는 용어에 대한 정의 및/또는 맥락을 제공한다:
"포함하는". 이 용어는 오픈-엔드형이다. 첨부 청구범위에서 사용되는 바와 같이, 이 용어는 부가적 구조 또는 단계를 배제하지 않는다. "하나 이상의 프로세서 유닛을 포함하는 장치..."를 나열하는 청구항을 생각해보자. 그러한 청구항은 장치가 부가적 컴포넌트(예컨대, 네트워크 인터페이스 유닛, 그래픽 회로 등)를 포함하는 것을 배제하지 않는다.
"하도록 구성된". 다양한 유닛, 회로 또는 다른 컴포넌트가 태스크 또는 태스크들을 수행"하도록 구성된" 것으로 설명 또는 청구될 수 있다. 그러한 맥락에 있어서, "하도록 구성된"은 유닛/회로/컴포넌트가 동작 동안 그들 태스크 또는 태스크들을 수행하는 구조(예컨대, 회로)를 포함함을 나타냄으로써 구조를 함축하는데 사용된다. 그와 같이, 유닛/회로/컴포넌트는 특정 유닛/회로/컴포넌트가 현재 동작하고 있지 않을 때에도(예컨대, 온이 아닐 때에도) 태스크를 수행하도록 구성된다고 할 수 있다. "하도록 구성된"이라는 말과 사용된 유닛/회로/컴포넌트는 하드웨어-예컨대, 동작을 구현하도록 실행가능한 프로그램 명령어를 저장하는 메모리, 회로 등을 포함한다. 유닛/회로/컴포넌트가 하나 이상의 태스크를 수행"하도록 구성된"다고 나열하는 것은 명확하게도 그 유닛/회로/컴포넌트에 대해 35 U.S.C.§12, 제6절을 들지 않으려는 의도이다. 부가적으로, "하도록 구성된"은 현안의 태스크(들)를 수행할 수 있는 방식으로 동작하도록 소프트웨어 및/또는 펌웨어(예컨대, FPGA 또는 소프트웨어를 실행하는 범용 프로세서)에 의해 조작되는 제네릭 구조(예컨대, 제네릭 회로)를 포함할 수 있다. "하도록 구성된"은 또한 하나 이상의 태스크를 수행 또는 구현하도록 적응되는 디바이스(예컨대, 집적회로)를 제조하도록 제조 프로세스(예컨대, 반도체 제조 설비)를 적응시키는 것을 포함할 수 있다.
"제1", "제2" 등. 본 명세서에서 사용되는 바와 같이, 이들 용어는 그들이 앞서는 명사에 대한 라벨로서 사용되지만 어떠한 유형의 순서(예컨대, 공간적, 시간적, 논리적 등)도 내포하지 않는다. 예컨대, 8개의 프로세싱 엘리먼트 또는 코어를 갖는 프로세서에 있어서, 용어 "제1" 및 "제2" 프로세싱 엘리먼트는 8개의 프로세싱 엘리먼트 중 어느 2개를 지칭하는데 사용될 수 있다. 환언하면, "제1" 및 "제2" 프로세싱 엘리먼트는 논리적 프로세싱 엘리먼트 0 및 1로 한정되는 것이 아니다.
"에 기초". 본 명세서에서 사용되는 바와 같이, 이 용어는 결정에 영향을 미치는 하나 이상의 인자를 설명하는데 사용된다. 이 용어는 결정에 영향을 미칠 수 있는 부가적 인자를 배제하지 않는다. 즉, 결정은 그들 인자에 유일하게 기초할 수도 또는 그들 인자에 적어도 일부 기초할 수도 있다. 문구 "B에 기초하여 A를 결정"를 생각해보자. B는 A의 결정에 영향을 미치는 인자일 수 있지만, 그러한 문구는 A의 결정이 C에도 기초하는 것을 배제하지 않는다. 다른 경우에 있어서, A는 B에만 기초하여 결정될 수도 있다.
프로세서가 애플리케이션의 더 큰 메모리 풋프린트를 지원할 필요가 있고 다중-프로그래밍 레벨이 증가함에 따라 캐시 사이즈는 굉장한 속도로 증가하고 있다. 스택 메모리는 사이즈가 수백 메가바이트로부터 장차 더 큰 것까지의 범위에 이를 수 있는 대용량, 마지막-레벨 DRAM 캐시를 구현하도록 사용될 수 있는 상당히 큰 다이 에어리어를 제공할 것을 약속한다.
대용량, 스택 DRAM 캐시를 구축하는데 하나의 어려움은 그러한 캐시를 지원하는데 필요한 태그 어레이의 사이즈가 상당한 다이 에어리어를 소모할 수 있다는 것이다. 전형적으로 캐시는 2개의 독립적 어레이로 편성된다: 데이터 어레이 및 태그 어레이. 데이터 어레이 엔트리는 각자의 메모리 블록으로부터의 메모리 데이터를 보유하는 한편 태그 어레이는 그들 메모리 블록을 식별하는 식별자(즉, 태그)를 보유한다. 예컨대, 세트 연관성 캐시에 있어서, 태그는 특정 세트로 매핑하는 것들 중에서 소정 메모리 블록을 고유하게 식별할 수 있다. 그러한 태그 어레이를 구현하는 것은 상당한 다이 공간을 소모할 수 있다. 예컨대, 64B 캐시 라인을 갖는 전형적 256MB 캐시는 11MB의 태그 어레이를 요구할 수 있다.
문제를 더 악화시키는 것은 태그 어레이가 종종 그들 용량과 균형이 맞지 않는 다이 에어리어의 공유를 요구하는 것이다. 태그 어레이로의 액세스가 고속이어야 하기 때문에, 그러한 어레이는 종종, 데이터 어레이가 더 느리고 더 싸고 더 고밀도의 동적 RAM(DRAM)을 사용하여 구현되더라도, 고속의 비싼 정적 RAM(SRAM) 또는 매립형 동적 RAM(eDRAM)을 사용하여 구축된다. 불행하게도, SRAM과 같은 기술은 DRAM보다 상당히 더 저밀도인데(종종 12 내지 15배 더 큼), 태그 어레이는 DRAM-구현된 데이터 어레이가 요구하는 것보다 용량 유닛당 더 많은 다이 공간을 요구한다는 것을 의미한다. 결과적으로, 태그 어레이에 요구되는 다이 공간은 대용량 스택 DRAM 캐시를 구현하는데 상당한 장벽이다.
다양한 실시예에 의하면, 대용량 스택-메모리 캐시는 태그 정보를 저장하기 위해 더 낮은-레벨 캐시에서의 캐시 블록을 사용하도록 구성될 수 있다. 예컨대, 일부 실시예에 있어서, 대용량 L4 캐시의 데이터 어레이는 스택 DRAM을 사용하여 구현될 수 있는 한편 L4 캐시에 대한 태그 어레이는 시스템의 L3 캐시에서의 다양한 블록을 사용하여 구현될 수 있다.
일부 실시예에 있어서, 스택-메모리 캐시는 재구성가능한 캐시로서 구현될 수 있다. 관용적 캐시 설계가 정적 구성(예컨대, 총 사이즈, 연관성, 블록 사이즈 등)으로 제한되는 반면, 본 명세서에서 설명되는 바와 같은 재구성가능한 캐시는 시스템 워크로드에 적응성 및/또는 응답성일 수 있어서, 특정 캐시 구성이 워크로드에 맞춰질 수 있게 된다.
도 1은, 일부 실시예에 따라, L3-구현된 태그 어레이를 갖는 재구성가능한 L4 데이터 캐시를 포함하는 프로세서의 다양한 컴포넌트를 예시하는 블록 선도이다. 본 명세서에서 설명되는 실시예 중 많은 것은 그 태그 어레이가 캐시 계층에서 L4 바로 아래 L3에 저장되는 L4 캐시의 관점에서 예시되고 있다. 그렇지만, 이들 예는 실시예를 L4 및 L3 캐시 협동 그 자체로 한정하려는 의도는 아니다. 그보다는, 다른 실시예에 있어서, 본 명세서에 설명되는 기술 및 시스템은 캐시 계층의 다양한 레벨에 있는 캐시에 적용될 수 있다. 본 명세서에서 사용되는 바와 같이, 프로세서가 (예컨대, 제1 캐시 상의 캐시 미스의 경우에) 제2 캐시를 검색 시도하기 전에 제1 캐시 내 메모리 데이터를 찾아내려 시도한다면 제1 캐시는 캐시 계층에서 제2 캐시보다 (또는 그 위에) 더 높은 레벨에 있다고 한다.
예시된 실시예에 의하면, 프로세서(100)는 L3 캐시(110), L4 캐시(135) 및 하나 이상의 프로세싱 코어(105)를 포함한다. 프로세싱 코어(105)의 각각은 각자의 명령어 스트림을 실행하도록 구성될 수 있고 프로세서(105) 중 여러 다양한 것들은 L3(110) 및/또는 L4(135)로의 액세스를 공유할 수 있다. 프로세싱 코어(105)는 또한 각자의 전용 캐시(예컨대, L1) 및/또는 다른 공유된 데이터 캐시(예컨대, L2)를 포함할 수 있다.
L3 캐시(110) 및 L4 캐시(135)는 프로세서(100)상에서 데이터 캐시 계층의 각자의 레벨을 구현할 수 있다(예컨대, L3 캐시(110)는 제3-레벨 캐시를 구현할 수 있는 한편 L4 캐시(135)는 더 낮은 제4-레벨 캐시를 구현한다). 그러한 계층에 의하면, 프로세싱 코어(들)(105)는 데이터가 L3 캐시(110)에서 찾아지지 않으면 L4 캐시(135)에서 데이터를 찾으려 검색하도록 구성될 수 있다. L3 캐시(110) 및 L4 캐시(135)는 서로 다른 정책 및/또는 프로토콜에 따라 시스템 메모리로부터 데이터를 캐싱하도록 협동할 수 있다.
일부 실시예에 있어서, L4 캐시(135)는 데이터를 저장하도록 DRAM을 사용하는 스택-메모리 캐시로서 구현될 수 있다. 예컨대, L4(135)는 L4 데이터 어레이(145)를 포함하는데, DRAM을 사용하여 구현될 수 있다. 실행 예로서, 우리는 L4는 캐시에서 연속할 수 있는 CB1 내지 CBN과 같은 다수의 캐시 블록을 저장하도록 각각 구성되는 2KB DRAM 페이지(예컨대, 3KB DRAM 페이지(160))에 저장된 256B 캐시 블록을 갖는 256MB, 32-웨이(way), DRAM 캐시로서 구성된다고 가정할 것이다.
L4 캐시(135)는 캐시를 관리하기 위한 캐시 로직(140)을 포함한다. 캐시 로직(140)(및/또는 캐시 로직(115))은 하드웨어 회로를 사용하여 하드웨어로 구현될 수 있다. 일부 실시예에 있어서, 캐시 로직(140)은 요구된 데이터가 캐시에 존재하는지 결정하도록, 캐시로부터 오래된 데이터를 제거하도록, 및/또는 캐시에 새로운 데이터를 삽입하도록 구성될 수 있다. 특정 메모리 어드레스로부터의 데이터가 캐시에 저장되어 있는지 결정할 때, L4 캐시 로직(140)은 태그를 포함하여 다수의 필드로 메모리 어드레스를 분해하고 그들 성분을 사용하여 메모리 어드레스에 대응하는 데이터가 캐시에 존재하는지 및/또는 어디에 존재하는지 결정할 수 있다.
도 2는, 몇몇 실시예에 따라, 소정 캐시가 소정 메모리 어드레스를 분해할 수 있는 필드를 예시하는 블록 선도이다. 특정 필드 및 그들 길이는 메모리 어드레스(예컨대, 비트 수, 엔디안-속성(endian-ness) 등) 및/또는 캐시 자체의 구성(예컨대, 연관성 정도, 블록 수, 블록 사이즈 등)에 의존하여 달리 될 수 있다. 예컨대, 도 2는 우리의 예의 L4 캐시(즉, 256B 캐시 블록을 갖는 256MB, 32-웨이 캐시)에 의해 결정된 바와 같이 48-비트 메모리 어드레스의 필드를 예시하는 블록 선도이다. 예시된 실시예에 의하면, 어드레스의 최상위 25 비트는 태그(205)에 대응하고, 다음의 더 하위 15 비트는 인덱스(210)에 대응하고, 최하위 8비트는 오프셋(215)에 대응한다. 그러한 실시예에 있어서, 인덱스(210)는 메모리 어드레스가 매핑하는 캐시 블록의 세트의 위치를 찾도록 사용가능할 수 있다(즉, 메모리 어드레스에 대응하는 데이터가 캐시 내에 저장되면, 그것은 세트에서의 블록 중 하나에 저장된다). 캐시 로직(예컨대, 140)은 세트에서의 캐시 블록과 연관된 각자의 태그를 결정하고 그들 태그를 태그(205)에 비교할 수 있다. 태그 중 하나가 태그(205)와 매칭되면, 그때 그 태그에 대응하는 캐시 라인은 그 메모리 어드레스에 대한 데이터를 저장한다. 그 후 캐시 로직은 매칭하는 캐시 블록 내 그 데이터가 어디에 저장되는지 결정하도록 오프셋(215)을 사용할 수 있다.
도 1로 이제 돌아가면, L4 캐시 라인에 대한 데이터는 L4 데이터(145)에 저장될 수 있다. 위에서 설명된 바와 같이, L4 캐시(135)는 데이터(145)를 저장하기 위해 DRAM 또는 또 다른 고밀도 메모리 기술을 사용하는 스택-메모리 캐시로서 구현될 수 있다. 그리하여, L4 데이터(145)는 비교적 저비용으로 높은 메모리 용량을 갖도록 구성될 수 있다. 그렇지만, L4 데이터(145)의 높은 용량 때문에, 대응하는 태그 어레이를 구현하는 것은, 특히 그러한 태그 어레이가 SRAM, 비교적 희소 메모리 기술로 구현되어야 한다고 성능 관련사가 지시하고 있으면, 상당한 다이 공간을 요구할 수 있다.
예시된 실시예에 의하면, L4 자체에 L4 태그 어레이를 구현하기보다는, L4(135)는 L3(110)와 같은 더 낮은-레벨 캐시에 그 태그를 저장하도록 구성될 수 있다. 예컨대, 예시된 실시예에 있어서, L3 캐시(110)는 L3 캐시를 관리하기 위한 L3 캐시 로직(115)(즉, L4 캐시 로직(140)과 유사함), L3 태그 어레이(120) 및 L3 데이터 어레이(125)를 포함한다. L3 데이터를 저장하는 것에 부가하여, L3(110)는 L4(135) 대신에 태그를 저장하기 위해 L3 데이터(125)의 소정 수의 캐시 블록을 예약하도록 구성될 수 있다. 예컨대, 예시된 실시예에 있어서, L4 태그(130)는 L3 데이터(125) 내에 저장되고 L4(135)에 의해 사용가능하다. 도 1에 도시된 바와 같이, L3 데이터(125)에서의 각각의 캐시 블록은 다수의 L4 태그를 보유할 수 있다.
도 3a는, 다양한 실시예에 따라, L4 태그를 저장하기 위해 일부 L3 캐시 블록이 어떻게 예약될 수 있는지를 예시하는 블록 선도이다. 캐시 세트(300)는 다수의 블록을 포함하고, 그 중 일부(예컨대, 315a-315x)는 L3 캐시에 대한 L3 데이터를 저장하는데 사용된다. 그렇지만, 예약된 블록(310)과 같은 다른 블록은 L4 태그를 저장하기 위해 예약된다.
L3 캐시는 도 3b의 태그 구조(320)와 같은 태그 구조로 각각의 L4 태그를 저장할 수 있다. 도 3b의 태그 구조는 태그 그 자체(즉, 태그(325))와 더불어 태그 메타데이터도 포함한다. 예시된 예에 있어서, 태그는 25 비트이고 태그 메타데이터는 유효 비트(330) 및 더티 비트(dirty bit)(335)를 포함한다. 다른 실시예에 있어서, 태그 구조는 다른 태그 메타데이터를 포함할 수 있다.
우리의 실행 예(256MB, 32-웨이, 256B 블록, 2KB DRAM 페이지 L4; 28-비트 태그 구조)의 목적으로, L3 캐시(110)는 64B 캐시 라인을 갖는 16MB, 32-웨이 캐시이고 L3 캐시 세트(300)는 L3(110)의 캐시 세트(즉, 데이터(125) 내)에 대응한다고 가정한다. 이러한 예의 구성이 주어지면, L4 태그에 대한 총 공간 요건은 4MB이다. 따라서, 각각의 L3 캐시 세트(예컨대, 300)는 L4 태그 데이터를 저장하기 위해 그 32개의 블록 중 8개를 예약할 수 있다. 예컨대, 캐시 세트(300)는 32개의 블록(305)을 포함하고 L4 태그를 저장하기 위해 그들 블록 중 8개(310)를 예약하는 한편, 나머지(즉, 315a-315x)는 보통처럼 L3 데이터를 저장한다. 8개의 예약된 블록(310)은 512B의 총 용량을 갖는데, 128개의 28-비트 태그 구조를 저장하기에 충분하다. 그래서 예약된 블록(310)은 4개의 32-웨이 L4 세트에 대한 태그 데이터를 저장하기에 충분하다. 예시된 실시예에 있어서, 캐시 세트(300)의 제1 블록은 L4의 세트0에 대한 16개의 태그를 저장하고, 그 다음 블록은 세트1에 대한 16개의 태그를 저장하고 등등 세트3까지이다. 제5 블록은 세트0에 속하는 나머지 태그를 저장하고, 제6 블록은 세트1에 속하는 나머지 태그를 저장하고 등등으로, 8개의 예약된 블록(310)은 L4 세트0-3에 대한 모든 태그 데이터를 저장하게 된다. N개의 연속하는 L3 블록의 각각을 서로 다른 L4 세트에 할당하고 그 후 다음의 N개의 연속하는 L3 블록 상에 할당 패턴을 반복하는 기술은 본 명세서에서는 스트라이핑( striping)이라고 지칭될 수 있다. 독자는 도 3의 스트라이핑 구성이 단지 예시적으로만 의도되는 것임과 서로 다른 실시예에서는 예약된 블록이 서로 다른 순서로 L4 태그를 저장할 수 있음이 이해되어야 함을 주목해야 한다.
도 1로 돌아가면, 일부 실시예에 있어서, L3 캐시 로직(110) 및 L4 캐시 로직(140)은 분산된 태그 스킴을 구현함에 있어서 협동하도록 구성될 수 있다. 예컨대, L4 태그 데이터에 액세스(예컨대, 읽기 또는 쓰기(writing))하기 위해, L4 캐시 로직(140)은 L3 캐시 로직(115)과 통신할 수 있고, 차례로, 요구된 데이터(예컨대, L4 태그(130))를 L3 데이터(125)로부터 인출할 수 있다.
L3와 같은 더 낮은-레벨 캐시의 데이터 어레이에 L4 태그를 놓는 것은 다수의 이점을 가능하게 할 수 있다. 예컨대, 본 명세서에서 설명되는 태그 저장 스킴은 시스템으로 하여금 (1) 다이 공간을 더 효과적으로 사용하고, 및/또는 (2) 워크로드 변동에 응답하여 L4 캐시를 재구성 가능하게 할 수 있다.
다이 공간에 관하여, L3 캐시는 종종 고도로 연관성인데, 일부 캐시 블록을 징발하는 것이 L3의 전반적 성능에 거의 영향을 주지 않을 수 있다는 것을 의미한다. 더욱, 스킴이 가능하게 하는 대용량 L4 캐시는 효과적으로 더 작은 L3에 의해 야기되는 어떠한 성능 손실이라도 오프셋 또는 소거할 수 있다. 나아가, 전용 L4 태그 어레이를 구현하지 않음으로써 절약된 부가적 다이 공간은 L3 캐시를 확대하는데 사용될 수 있어서, L3 성능 손실이 경감되거나 모두 소거된다.
재구성가능성에 관하여, 일부 실시예에 있어서, L3 로직(115) 및 L4 로직(140)은 L4 캐시 구성을 제어하는 레지스터로 구성될 수 있다. 런타임 동안(또는 전에), 이들 레지스터에서의 값은 캐시 구성 변동의 결과를 가져오도록 수정될 수 있다. 예컨대, 주어진 워크로드가 매우 높은 공간적 집약성(locality) 특성을 나타내 보일 것으로 예상되면, L4 캐시는 더 적지만 큰 캐시 블록을 사용하도록 재구성될 수 있다. 또 다른 예에 있어서, 주어진 워크로드가 매우 낮은 공간적 집약성을 나타내 보일 것으로 예상되면, 그때 L4는 더 많지만 더 작은 캐시 블록을 사용하도록 재구성될 수 있다. 프로세서의 워크로드는 프로세서 상에서 하나 이상의 실행 스레드의 메모리 액세스 패턴을 포함할 수 있다.
도 4a 및 4b는 L3 및 L4 로직이 재구성가능한 L4 캐시를 구현하기 위해 포함할 수 있는 다양한 레지스터를 예시한다. 레지스터는 그들이 보유하려고 의도된 데이터 및 L4 및/또는 L3 구성에 의존하여 다양한 사이즈일 수 있다. 나아가, 다양한 실시예에 있어서, 레지스터 중 서로 다른 것들은 다수의 다른 레지스터로 조합, 분해될 수 있고/있거나 그렇지 않으면 레지스터에 저장된 정보는 분산될 수 있다. 도 4a의 L3 캐시 로직(115) 및 도 4b의 L4 캐시 로직(140)은 각자 도 1의 캐시 로직(115, 140)에 대응할 수 있다.
도 4a에 의하면, L3 캐시 로직은 TCWR(400)과 같은 태그 캐시 웨이 예약 벡터를 포함할 수 있다. TCWR 레지스터(400)는 L3 캐시의 어느 블록이 L4 태그를 저장하기 위해 예약되는지 나타낼 수 있다. 예컨대, TCWR(400)은 각각의 캐시 세트에서의 어느 웨이가 L4 태그를 위해 예약되는지를 나타내는 마스크 벡터를 저장할 수 있다. (예컨대, 도 3a에서처럼) 각각의 세트의 제1의 8개의 웨이가 예약되는 것을 표시하기 위해, 벡터는 0xFF일 수 있다. 그리하여, L3 캐시는 L3 데이터를 저장하기 위해 그것이 어느 캐시 라인을 사용할 수 있는지 그리고 어느 것들이 L4 태그를 저장하기 위해 예약되는지 결정하기 위해 TCWR 레지스터에 저장된 값을 사용할 수 있다.
도 4b에 있어서, L4 캐시 로직(140)은 태그 액세스를 도와주기 위한 다수의 레지스터(예컨대, TCIM(405), TCW(410), TGM(415), TGS(420)), L4 데이터 액세스를 도와주기 위한 다수의 레지스터(예컨대, CBS(430), PSM(435), PSO(440) 및 PABO(445)), 및 다른 목적에 유용한 하나 이상의 잡종 레지스터(예컨대, STN(425))를 포함한다.
태그 사이즈 레지스터(TGS)(420)는 태그당 비트 수를 나타내도록 사용될 수 있다. 예컨대, 도 2의 실시예를 사용하면, TGS 레지스터(420)는 태그 사이즈가 25 비트인 것을 나타낼 수 있다. 일부 실시예에 있어서, TGS 레지스터(420)는 주어진 어드레스의 태그를 계산하기 위해 태그 마스크를 발생시키도록 사용될 수 있다.
예시된 실시예에 있어서, L4 캐시 로직(140)은 대응하는 물리적 어드레스로부터 L4 태그를 얻는데 사용가능할 수 있는 태그 마스크 레지스터 TGM(415)를 포함한다. 예컨대, TGM은 태그 마스크 및 주어진 물리적 어드레스를 사용하여 비트와이즈-AND 연산을 수행하는 것이 그 어드레스의 태그를 내놓게 되도록 선택될 수 있다. 예컨대, 도 2의 어드레스(200)로부터 최상위 25 비트를 추출하기 위해, TGM 레지스터는 16진수 0xFFFFFF800000을 보유할 수 있다.
L4 로직(140)은 또한 태그 캐시 웨이 레지스터(TCW)(410)를 포함한다. TCW 레지스터(410)는 어느 L3 블록이 소정 L4 태그를 보유하도록 구성되어 있는지 식별하는데 사용될 수 있다. 예컨대, (위에서 논의된 바와 같이) 스트라이핑된 할당 패턴에 따라 태그가 L3 블록에 저장되면, TCW 레지스터는 3개의 필드를 포함할 수 있다: (소정 L4 세트에 대한 태그를 저장하는 L3 세트 내 제1 블록을 나타내는) 웨이 마스크, (L4 세트에 대한 태그 데이터를 저장하는 L3 블록의 수를 나타내는) 수 필드, 및 (L3 세트가 태그 데이터를 저장해주는 L4 세트의 수를 나타내는) 스트라이드 필드. 이들 필드 및 그들 사용은 아래에 더 상세하게 설명된다.
웨이 마스크 필드는 소정 L4 세트에 대한 태그 데이터를 보유하는 (소정 L3 세트 내) 제1 블록을 식별하도록 사용가능할 수 있다. 예시를 위해, 각각의 L3 세트(예컨대, 세트(300))가 스트라이핑된 할당 패턴으로 4개의 L4 세트에 대한 태그 데이터를 저장하는 도 3a의 예를 생각해 본다. 2개의 비트는 제1의 4개의 블록 중 어느 것이 소정 세트에 대한 태그를 저장하는지 결정하는데 사용될 수 있다. 그러한 예에 있어서, 웨이 마스크 필드는 웨이 마스크를 사용하여 물리적 어드레스를 마스킹하는 것(즉, 2개에 대해 논리적-AND 연산을 수행하는 것)이 물리적 어드레스가 매핑하는 L4 세트에 대응하는 L4 태그를 저장하는 L3 블록의 식별자를 내놓게 되도록 구성될 수 있다. 예컨대, TCW(410)는, (200)과 같은 물리적 어드레스를 마스킹하도록 사용될 때 그 물리적 어드레스의 제8 및 제9 비트를 내놓을 16진 값 0x300을 보유할 수 있다. 그들 2개의 비트는 제1의 4개의 예약된 블록(즉, L3 캐시 세트(300)의 (310)) 중 어느 것이 물리적 어드레스가 매핑하는 L4 세트에 대한 태그를 보유하는지 식별하는데 사용가능한 0-3 사이의 수를 결정하도록 사용될 수 있다. 예컨대, 2개의 비트가 00이면, 그때 그 값은 (310)에서의 제1 블록을 식별할 수 있고, 값 01은 제2 블록을 식별할 수 있고 등등이다.
TCW 레지스터의 수 필드는 L4 세트에 대응하는 모든 태그를 획득하기 위해 읽혀질 블록의 수를 나타낼 수 있다. 예컨대, L3 캐시 세트(300)가 어느 소정 L4 세트에 대응하는 태그를 저장하도록 2개의 L3 블록을 사용하므로, 수 필드는 2일 수 있다.
TCW 레지스터의 스트라이드 필드는 L3 세트가 태그 데이터를 저장해주는 L4 세트의 수를 나타낼 수 있다. 예컨대, L3 캐시 세트(300)가 4개의 L4 세트(즉, 도 3a에 있어서 세트0-3)에 대한 태그 데이터를 저장하므로, 스트라이드 필드는 4일 수 있다.
L4 태그가 스트라이핑된 할당 패턴에 따라 소정 L3 캐시 세트에 저장되면, 웨이 마스크, 수 및 스트라이드 필드의 조합은 소정 L4 세트에 대응하는 L3 세트 내 모든 태그의 위치를 찾는데 사용가능할 수 있다. 예컨대, 소정 L4 세트와 연관된 L4 태그 데이터를 얻기 위해, 캐시 로직(110 및/또는 135) 중 하나 이상이 L3 세트에서의 제1 관련 블록을 식별하도록 웨이 마스크를 사용할 수 있다. 그 후 로직은 사용된 스트라이핑 패턴을 결정하고 그래서 L4 세트에 대한 태그 데이터를 저장하는 L3 세트 내 모든 다른 블록의 위치를 찾아내 읽도록 스트라이드 및 수 필드를 사용할 수 있다. 예컨대, 스트라이드 값 4 및 수 필드 값 2는 제1 블록 후에 읽을 하나의 부가적 블록이 있음과 그 부가적 블록은 제1의 것으로부터 4번째 블록(즉, 도 3a에서와 같이, 제5 블록)임을 나타낼 것이다. 그래서, 그러한 일 실시예에 있어서는, 읽을 N번째 블록은 (물리적 어드레스 & 웨이마스크필드 + 스트라이드필드*(N-1))로 계산될 수 있다. 모든 관련 블록을 읽기 위해, 로직은 영으로부터 수 필드의 값으로까지의 각각의 N에 대해 이러한 계산을 반복할 수 있다.
예시된 실시예에 의하면, 캐시 로직(140)은 또한 태그 캐시 인덱스 마스크(TCIM)(405)를 포함한다. TCIM(405)은 소정의 L4 세트에 대한 태그를 저장하는 특정 L3 세트를 나타내도록 사용될 수 있다. 예컨대, TCIM 값은 L3 인덱스를 (물리적어드레스 &> TCIM)으로 계산하도록 사용될 수 있고, 여기서 "&>"는 트레일링 영을 떨어뜨리도록 우측 시프트가 뒤따르는 논리적 AND 연산을 표시한다. 예를 들어, 실행 예에서처럼, L3가 8192개의 세트(16MB/(64B 블록*32-블록 세트))를 가지면, 그때 L3 세트 인덱스는 물리적 어드레스의 비트 22-10으로 계산될 수 있다. 그래서, TCIM(405)은 값 0x7FFC00을 보유할 수 있다.
도 5는, 몇몇 실시예에 따라, L4 캐시가 소정 메모리 어드레스에 대응하는 데이터를 저장하고 있는지 결정하도록 L3 캐시에 저장된 L4 태그를 살펴보기 위한 방법을 예시하는 흐름 선도이다. 방법(500)은 L4 캐시 로직(135) 및/또는 L3 캐시 로직(115)에 의해 수행될 수 있다. 각자의 캐시 로직은 도 4a 및 도 4b에 도시된 바와 같이 위에서 설명된 바와 같은 각자의 레지스터를 포함하여 구성될 수 있다.
예시된 실시예에 의하면, 그 방법은 (505)에서와 같이 로직이 물리적 어드레스(PA)를 결정할 때 시작한다. 예컨대, 로직은 프로그램 명령어가 소정 물리적 어드레스에 액세스하려 시도하고 있는 것을 결정할 수 있고, 응답하여, 로직은 그 어드레스에 대응하는 데이터가 L4 캐시에 저장되어 있는지 결정할 필요가 있을 수 있다.
(510)에서, 로직은 물리적 어드레스에 대한 태그를 결정한다. 예컨대, 일부 실시예에 있어서, 로직은 TGM(415)에 저장된 것과 같이 태그 마스크를 사용하여 물리적 어드레스를 마스킹함으로써 태그를 결정할 수 있다(예컨대, PA & TGM).
(515)에서, 로직은 물리적 어드레스에 대응하는 데이터가 저장될 L3 세트를 결정할 수 있다. 예컨대, 로직은 위에서 설명된 바와 같이 TCIM을 사용하여 물리적 어드레스에 대해 "&>" 연산을 수행함으로써 특정 L3 세트를 식별할 수 있다.
로직이 ((510)에서와 같이) 찾으려 검색할 태그 및 ((515)에서와 같이) 그 태그를 찾으려 검색할 L3 세트를 식별하고 나면, 로직은 ((520)에서와 같이) 결정된 L3 세트 내 검색할 제1 블록을 결정할 수 있다. 예컨대, 일부 실시예에 있어서, 로직은 (520)에 나타낸 바와 같이 TCW 레지스터의 웨이 마스크 필드로 물리적 어드레스를 마스킹함으로써 세트 내 어느 블록을 검색할지 결정할 수 있다(즉, PA & TCW-웨이-마스크).
예시된 실시예에 의하면, 로직이 검사할 첫 번째 L3 캐시 블록을 결정하고 나면, 그것은 ((525)에서와 같이) L3 블록을 읽고 ((530)에서와 같이) (510)에서 결정되었던 PA 태그가 L3 블록에 들어있는지 결정할 수 있다. 블록에 PA 태그가 들어있으면, (530)으로부터의 긍정 퇴장에 의해 나타낸 바와 같이, 그 후 캐시 로직은 (535)에서와 같이 캐시 히트를 결정할 수 있다. 그렇지 않으면, (530)으로부터의 긍정 퇴장에 의해 나타낸 바와 같이, 로직은 캐시 히트를 결정할 수 없다. 대신에, 로직은 영 이상의 다른 L3 블록 중 어느 것이 태그를 저장하는지 결정하기 위해 PA 태그를 저장할 수 있는 그들 블록을 검사할 수 있다.
(540)에서, 캐시 로직은 더 많은 태그가 존재하는지 결정한다. 예컨대, TCW 레지스터의 수 필드가 이미 검색된 블록의 수보다 더 큰 값을 보유하면, 그때에는 검색할 블록이 더 있다. 그렇지 않으면, 로직은 잠재적으로 태그를 보유할 수 있는 모든 L3 블록마다 검색을 완료하였다.
로직이 태그를 보유할 수 있는 모든 L3 블록마다 검색을 이미 완료하였으면, (540)으로부터의 긍정 퇴장에 의해 나타낸 바와 같이, 그때 로직은 (545)에서와 같이 캐시 미스가 존재한다고 결론지을 수 있다. 그렇지 않으면, 검색할 L3 블록이 더 있으면(예컨대, 수 필드가 이미 검색된 블록보다 더 크면), 그때 로직은 (550)에서와 같이 검색할 다음 블록을 결정할 수 있다. 예컨대, 일부 실시예에 있어서, 로직은 TCW 레지스터의 스트라이드 필드 및 이전에 읽혀진 레지스터의 신원에 기초하여 그러한 결정을 할 수 있다. ((550)에서와 같이) 로직이 검색할 다음 L3 캐시 블록을 결정 완료하고 나면, 그것은 (550)으로부터 (525)로의 긍정 피드백 루프에 의해 나타낸 바와 같이 그 L3 캐시 블록을 검색할 수 있다.
캐시 로직이 L3 캐시에서 태그의 위치를 찾아내면, 로직은 태그가 발견되었던 블록을 노트할 수 있다. 예컨대, 로직은 세트 내 블록의 위치를 나타내는 태그 오프셋을 기록함으로써 블록을 노트할 수 있다.
위에서 논의된 바와 같이, 일부 실시예에 있어서, L4는 다수의 DRAM 페이지로 배열될 수 있는 스택 DRAM을 사용하여 구현될 수 있다. 단일 DRAM 페이지는 다수의 L4 캐시 블록에 대한 데이터를 보유할 수 있다.
일부 실시예에 있어서, 각각의 DRAM 페이지는 물리적 메모리의 인접 세트에 대응하는 캐시 블록 그룹을 저장할 수 있다. 각각의 페이지에 인접 메모리 세트를 저장함으로써, L4 캐시는 애플리케이션 액세스 패턴에 있어서 공간적 집약성을 더 잘 활용할 수 있다.
도 6은 DRAM 페이지 상에서 일례의 캐시 블록 배열을 예시하는데, 각각의 페이지는 물리적으로 인접하는 메모리를 저장한다. 예시된 실시예에 의하면, L4 데이터(145)는 페이지0-21와 같은 다수의 페이지를 포함한다. 각각의 페이지는 2KB의 용량을 갖고 그래서 16개의 256-바이트 캐시 블록을 저장할 수 있다.
도 6에 있어서, 인접하는 캐시 블록은 함께 동일 페이지 상에 저장된다. 예컨대, 제1의 8개의 세트(세트0-7의 CB0)의 각각으로부터의 제1 캐시 블록은 페이지0 상에 저장되고, 제1의 8개의 세트(세트0-7의 CB1)의 각각으로부터의 제2 캐시 블록은 페이지1 상에 저장되고 등등이다. 따라서, 이러한 예에 있어서, L4 데이터(145)의 제1의 32개의 페이지는 L4 캐시(135)의 제1의 8개의 32-웨이 세트에 대한 모든 캐시 블록을 누적 저장한다. 소정 세트에 대해 캐시 블록을 저장하는 인접하는 페이지 세트는 도 6의 페이지 세트(600)와 같은 페이지 세트로 지칭될 수 있다.
위에서 설명된 태그-관련 레지스터에 부가하여, L4 캐시 로직은 L4 데이터(예컨대, L4 데이터(145))로의 액세스를 용이하게 하는데 사용가능한 다수의 레지스터를 포함할 수 있다. 예컨대, 도 4a로 돌아가면, 그러한 레지스터는 캐시 블록 사이즈 레지스터(예컨대, CBS(430)), 페이지 세트 마스크(예컨대, PSM(435)), 페이지 세트 오프셋(예컨대, PSO(440)), 및 페이지 액세스 베이스 오프셋(예컨대, PABO(445))을 포함할 수 있다.
일부 실시예에 있어서, CBS 레지스터(430)는 각각의 캐시 블록의 사이즈를 나타내는 값을 저장할 수 있다. 예컨대, CBS 레지스터(430)는 각각의 L4 캐시 블록(즉, 캐시 라인)이 256 바이트를 포함한다고 나타내도록 값 256을 저장할 수 있다.
PSM 레지스터(435)는 소정 물리적 어드레스가 매핑하는 페이지 세트를 결정하는데 사용가능한 마스크를 저장할 수 있다. 예컨대, 각각의 DRAM 페이지가 (도 6에서와 같이) 8개의 캐시 블록을 보유하면, 그때 물리적 어드레스의 비트 11-22는 DRAM 페이지 세트를 식별하는데 사용될 수 있다. 물리적 어드레스로부터 (예컨대, 물리적 어드레스(200)로부터) 그들 비트를 추출하기 위해, 캐시 로직은 PSM 레지스터에 16진 값 0x7FF800을 저장하고 그 값을 사용하여 물리적 어드레스를 마스킹할 수 있다.
캐시 로직이 (예컨대, PSM 레지스터(435)를 사용하여 어드레스를 마스킹함으로써) 물리적 어드레스가 매핑하는 페이지 세트를 결정하고 나면, 캐시 로직은 물리적 어드레스가 매핑하는 결정된 페이지 세트에서의 특정 DRAM 페이지를 결정하도록 PSO 레지스터(440)를 사용할 수 있다. 최대 오프셋이 L4 연관성(예컨대, 32)이기 때문에, 캐시 로직은 페이지 세트 값을 log2(L4_연관성)만큼 시프트하고 그 후 (위에서 설명된 태그 액세스 단계 동안 계산되었을 수 있는) 태그 오프셋을 부가할 수 있다. 예컨대, 32-웨이 L4 캐시에 대해, PSO 값은 5(즉, log2(32))일 수 있다.
캐시 로직이 (예컨대, 위에서 설명된 바와 같이) 물리적 어드레스가 매핑하는 DRAM 페이지를 결정하고 나면, 캐시 로직은 물리적 어드레스가 매핑하는 결정된 페이지 내 특정 캐시 블록을 식별하도록 PABO 레지스터(445)를 사용할 수 있다. 로직은 PABO 레지스터에서의 값을 사용하여 물리적 어드레스를 마스킹함으로써 DRAM 페이지 내로의 오프셋을 유도할 수 있다. 예컨대, (도 6에서와 같이) 각각의 DRAM 페이지가 8개의 캐시 블록을 보유하면, 물리적 어드레스의 비트8-10 외 모두를 마스킹함으로써 페이지 내로의 인덱스를 결정하도록 PABO 값 0x700이 사용될 수 있다.
도 7은, 몇몇 실시예에 따라, 소정 물리적 어드레스에 대응하는 L4 캐시 블록의 위치를 찾아내기 위한 방법을 예시하는 흐름 선도이다. 도 7의 방법은 도 1의 (145)와 같은 L4 캐시 로직에 의해 실행될 수 있다.
방법(700)은 (705)에서 캐시 로직이 물리적 어드레스를 결정할 때 시작한다. 캐시 로직은 소정 물리적 어드레스로의 액세스(예컨대, 읽기/쓰기)를 요구하는 프로그램 명령어에 응답하여 물리적 어드레스를 결정할 수 있다.
(710)에서, L4 캐시 로직은 물리적 어드레스에 매핑하는 DRAM 페이지 세트를 결정한다. DRAM 페이지를 결정하는 것은 PSM 레지스터(435)와 같은 페이지 세트 마스크를 사용하여 물리적 어드레스를 마스킹하는 것을 포함할 수 있다. (715)에서, 캐시 로직은 결정된 세트 내에서 물리적 어드레스가 매핑하는 특정 페이지를 결정한다. 세트 내 특정 페이지를 결정하는 것은 PSO 레지스터(440)에서의 값에 의해 (710)에서 계산된 페이지 세트를 좌측 시프트하고, 태그 액세스 단계 동안 계산되었을 수 있는 태그 오프셋을 부가하는 것을 포함할 수 있다. (720)에서, 캐시 로직은 결정된 페이지 내 소망 블록이 저장되어 있는 오프셋을 결정한다. 오프셋을 결정하는 것은 PABO 레지스터(445)에서의 값을 사용하여 "&>"(트레일링 영을 떨어뜨리는 우측 시프트가 뒤따르는 논리적 AND)을 수행하는 것을 포함할 수 있다. 일반화하기 위해, 일부 실시예에 있어서, 물리적 어드레스(PA)가 매핑하는 DRAM 페이지는 [(PA & PSM)<<PSO] + 태그오프셋에 의해 주어질 수 있고, 페이지 내로의 캐시 블록 오프셋은 PA &> PABO에 의해 주어질 수 있다. (710-720에서와 같이) 캐시 로직이 페이지 및 오프셋을 결정하고 나면, 그것은 (725에서와 같이) 결정된 DRAM 페이지의 결정된 오프셋에서의 캐시 블록에 액세스할 수 있다.
위에서 설명된 바와 같이, 전통적 캐시는 정적으로 구성된다(예컨대, 블록 사이즈, 블록 수, 연관성의 정도 등). 그렇지만, 그 어느 구성도 모든 워크로드마다에 최적이지는 않다.
다양한 실시예에 있어서, L4 캐시는 현재의 또는 예상된 워크로드에 최적 성능을 제공하도록 동적으로 재구성가능할 수 있다. 런타임에서 동적으로 재구성가능한 캐시는 시스템 재시작 및/또는 수동 개입을 요구함이 없이 소프트웨어(예컨대, OS)에 의해 재구성될 수 있다. 예컨대, 시스템 BIOS는 구성 레지스터(400-445)에 디폴트 값을 설정함으로써 디폴트 구성으로 캐시를 시작하도록 구성될 수 있다. 런타임 동안, 운영 체계는 현재 캐시 구성의 효과성을 결정하기 위해 워크로드 특성을 모니터링할 수 있다. 운영 체계가 다른 캐시 구성이 유익할 것이라고 결정하면, OS는, 아래에 설명되는 바와 같이, L4(및/또는 L3) 캐시를 재구성할 수 있다.
도 8은 몇몇 실시예에 따라 런타임 동안 L4 캐시를 재구성하기 위한 방법의 흐름 선도이다. 방법(800)은 프로세서 상에서 하나 이상의 실행 스레드를 실행하는 운영 체계에 의해 수행될 수 있다.
방법(800)은 OS가 모든 시스템 스레드의 실행을 동결하는 단계(805)로 시작한다. (810)에서, OS는 그 후 메모리 버스에 대한 로크를 취득해서, 프로그램 명령어 또는 다른 프로세싱 코어가 버스에 액세스할 수 없게 된다. (815)에서, OS는 모든 더티 캐시 블록을 다시 메모리에 쓴다. 프로세서가 그 값을 수정하였지만 아직 그 값을 다시 메모리에 쓰지 않았으면 캐시 블록은 더티라고 간주된다. (820)에서, OS는 캐시로부터 모든 데이터를 퇴거시킨다. (825)에서, OS는 새로운 캐시 구성을 반영하도록 구성 레지스터에서의 하나 이상의 값을 조절한다. OS는 그 후 (830에서) 버스 로크를 풀어주고 (835에서) 실행을 재개한다.
방법(800)을 사용하면, 운영 체계는 현재의 또는 예상된 워크로드를 반영하도록 L4 캐시의 다양한 구성 파라미터를 수정할 수 있다. 그러한 파라미터는 블록 사이즈, 블록 수, 연관성, 세그멘테이션 또는 다른 파라미터를 포함할 수 있다. 예컨대, OS가 애플리케이션이 높은 공간적 집약성을 갖는 액세스 패턴을 나타내 보이고 있다고 결정하면, OS는 몇 개의 구성 레지스터(400-445)를 수정함으로써 L4 캐시 블록 사이즈를 증가시킬 수 있는데, L4로의 더 많은 데이터를 예비인출함으로써 고도로 공간적 애플리케이션에 대한 성능을 증가시킬 수 있다. L4 블록 사이즈를 증가시키는 것은, L4가 더 소량의 태그 저장 공간을 요구하여, L3가 환원하고 L3 데이터를 저장하는데 사용할 수 있기 때문에, 높은 공간적 집약성을 갖는 액세스 패턴에 대한 개선 성능의 사이즈를 증가시킴으로써 L3의 사이즈를 또한 증가시킬 수 있다. 또 다른 예에 있어서, OS는 L4 캐시의 연관성 레벨을 수정할 수 있다. 그것이 충돌 미스에 있어서 상당한 증가를 야기하지 않으면, L4 캐시의 연관성 레벨을 감소시키는 것은 캐시 전력 절약뿐만 아니라 더 낮은 액세스 레이턴시를 초래할 수 있다.
재구성가능성의 또 다른 예에 있어서, OS는 L4를 섹터 방식 캐시로 재구성할 수 있다. 도 4b에 도시된 바와 같이, L4 캐시 로직(140)은 소정 캐시 블록에서 서로 다른 섹터의 유효성을 식별하는데 요구되는 비트 수를 나타내는 섹터 수를 저장하는 섹터 수 레지스터(예컨대, STN(425))를 포함할 수 있다. L4 캐시가 섹터 방식이 아니면, 그때 섹터 수는 0으로 설정될 수 있다. 그렇지만, OS는 STN 레지스터를 다른 값으로 수정함으로써 다수의 섹터를 포함하도록 L4 캐시를 재구성할 수 있다.
일부 실시예에 있어서, OS는 다양한 사전설정 구성에 따라 L4 캐시를 재구성하도록 구성될 수 있다. 예컨대, 도 9의 테이블(900)은 구성 레지스터에 대한 4개의 예의 구성을 주고 있다. 각각의 구성은 각자의 워크로드 특성을 표적으로 한다. 예컨대, 테이블(900)은 디폴트 구성(예컨대, BIOS가 캐시를 시작하는 구성), 큰 캐시 라인 구성(즉, 512B 캐시 블록), 높은 연관성 구성(즉, 64-웨이 세트 연관성), 및 섹터 방식 캐시 설계(즉, 2개의 섹터)를 포함한다. 다양한 실시예에 있어서, 프로세서는 관찰된 워크로드에 의존하여 이들 디폴트 구성, 다른 디폴트 구성, 및/또는 커스텀 구성을 사용할 수 있다.
도 10은, 몇몇 실시예에 따라, 본 명세서에서 설명되는 바와 같은 스택 DRAM 캐시를 이용하도록 구성된 컴퓨터 시스템을 예시하는 블록 선도이다. 컴퓨터 시스템(1000)은 국한되는 것은 아니지만 퍼스널 컴퓨터 시스템, 데스크톱 컴퓨터, 랩톱 또는 노트북 컴퓨터, 메인프레임 컴퓨터 시스템, 휴대용 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 소비자 디바이스, 애플리케이션 서버, 저장 디바이스, 스위치, 모뎀, 라우터 등과 같은 주변 디바이스 또는 일반적으로 어떠한 유형의 컴퓨팅 디바이스라도 포함하는 다양한 유형의 디바이스 중 어느 것에라도 대응할 수 있다.
컴퓨터 시스템(1000)은 하나 이상의 프로세서(1060)를 포함할 수 있고, 그 중 어느 것이라도 다수의 물리적 및/또는 논리적 코어를 포함할 수 있다. 프로세서(1060) 중 어느 것이라도 도 1의 프로세서(100)에 대응할 수 있고, 본 명세서에서 설명되는 바와 같이, SRAM L3 캐시(1062) 및 스택 DRAM L4 캐시(1064)와 같은 데이터 캐시를 포함할 수 있다. 캐시(1062, 1064)는 각자 도 1의 L3 캐시(110) 및 L4 캐시(135)에 대응할 수 있다. 그리하여, L4 캐시(1064)는 본 명세서에서 설명되는 바와 같이 OS(1024)에 의해 재구성가능할 수 있다. 컴퓨터 시스템(1000)은 또한 데이터를 영속적으로 저장할 수 있는 하나 이상의 영속적 저장 디바이스(1050)(예컨대, 광학 저장소, 자기 저장소, 하드 드라이브, 테이프 드라이브, 솔리드 스테이트 메모리 등)를 포함할 수 있다.
예시된 실시예에 의하면, 컴퓨터 시스템(1000)은 프로세서(1060) 중 하나 이상 상에서와 같이 다중 프로세싱 코어 사이에 공유될 수 있는 하나 이상의 공유된 메모리(1010)(예컨대, 캐시, SRAM, DRAM, RDRAM, EDO RAM, DDR 10 RAM, SDRAM, 램버스 RAM, EEPROM 등)를 포함한다. 하나 이상의 프로세서(1060), 저장 디바이스(들)(1050) 및 공유된 메모리(1010)는 인터커넥트(1040)를 통해 결합될 수 있다. 다양한 실시예에 있어서, 시스템은 더 적은 컴포넌트 또는 도 10에 예시되지 않은 부가적 컴포넌트(예컨대, 비디오 카드, 오디오 카드, 부가적 네트워크 인터페이스, 주변 디바이스, ATM 인터페이스와 같은 네트워크 인터페이스, 이더넷 인터페이스, 프레임 릴레이 인터페이스, 모니터, 키보드, 스피커 등)를 포함할 수 있다. 부가적으로, 도 10에 예시된 서로 다른 컴포넌트는 조합되거나 부가적 컴포넌트로 더 분리될 수 있다.
일부 실시예에 있어서, 공유된 메모리(1010)는 플랫폼 네이티브 바이너리, Java(상표명) 바이트-코드와 같은 어떠한 해석된 언어, 또는 C/C++, Java(상표명) 등과 같은 어떠한 다른 언어 또는 그 어떠한 조합으로라도 인코딩될 수 있는 프로그램 명령어(1020)를 저장할 수 있다. 프로그램 명령어(1020)는 어느 것이라도 멀티-스레딩될 수 있는 하나 이상의 애플리케이션(1022)을 구현할 프로그램 명령어를 포함할 수 있다. 일부 실시예에 있어서, 프로그램 명령어(1020)는, 본 명세서에서 설명되는 바와 같이, 프로세서(들)(1060)상의 워크로드를 모니터링하도록 그리고 캐시(1064, 1062)를 재구성하도록 구성될 수 있는 운영 체계(1024)를 구현하도록 실행가능한 명령어를 또한 포함할 수 있다. OS(1024)는 스케줄링, 소프트웨어 신호 취급 등과 같은 다른 소프트웨어 지원을 또한 제공할 수 있다.
예시된 실시예에 의하면, 공유된 메모리(1010)는 프로세서(1060) 중 여럿 및/또는 그 다양한 프로세싱 코어에 의해 액세스될 수 있는 공유된 데이터(1030)를 포함한다. 프로세서(1060) 중 여럿은 로컬 캐시(예컨대, 1062 및/또는 1064)에 공유된 데이터(1030)의 다양한 컴포넌트를 캐싱하고 캐시 코히어런스 프로토콜에 따라 메시지를 교환함으로써 이들 캐시 내 데이터를 조정할 수 있다. 일부 실시예에 있어서, 프로세서(1060) 중 다수 및/또는 프로세서(1060)의 다중 프로세싱 코어는 캐시(1062, 1064), 및 또는 공유된 메모리(1010)에 존재할 수 있는 오프-칩 캐시로의 액세스를 공유할 수 있다.
애플리케이션(1022) 및/또는 운영 체계(1024)를 구현하는데 사용되는 것들과 같은 프로그램 명령어(1020)는 컴퓨터-읽기 가능한 저장 매체 상에 저장될 수 있다. 컴퓨터-읽기 가능한 저장 매체는 머신(예컨대, 컴퓨터)에 의해 읽기 가능한 형태(예컨대, 소프트웨어, 프로세싱 애플리케이션)로 정보를 저장하기 위한 어떠한 메커니즘이라도 포함할 수 있다. 컴퓨터-읽기 가능한 저장 매체는 국한되는 것은 아니지만 자기 저장 매체(예컨대, 플로피 디스켓); 광학 저장 매체(예컨대, CD-ROM); 자기-광학 저장 매체; 롬(ROM); 램(RAM); 소거가능한 프로그램가능한 메모리(예컨대, EPROM 및 EEPROM); 플래시 메모리; 프로그램 명령어를 저장하기에 적합한 전기적 또는 다른 유형의 매체를 포함할 수 있다.
위에서 설명된 바와 같은 컴퓨터-읽기 가능한 저장 매체는 일부 실시예에서는 프로그램에 의해 읽혀지고 직접적으로 또는 간접적으로 프로세서(1060) 중 하나 이상을 포함하는 하드웨어를 제조하는데 사용되는 명령어를 저장하도록 사용될 수 있다. 예컨대, 명령어는 베릴로그(Verilog) 또는 VHDL과 같은 하이 레벨 설계 언어(high level design language: HDL)로 하드웨어 기능성의 거동-레벨 또는 레지스터-트랜스퍼 레벨(register-transfer level: RTL) 기술을 기술하는 하나 이상의 데이터 구조를 기술할 수 있다. 그 기술은 넷리스트(netlist)를 산출하도록 기술을 합성할 수 있는 합성 툴에 의해 읽혀질 수 있다. 넷리스트는 프로세서(500)의 기능성을 표현하는 (예컨대, 합성 라이브러리에 정의된) 게이트 세트를 포함할 수 있다. 넷리스트는 그 후 마스크에 적용될 기하학적 형상을 기술하는 데이터 세트를 산출하도록 놓여 라우팅될 수 있다. 마스크는 그 후 프로세서(100 및/또는 1060)에 대응하는 반도체 회로 또는 회로들을 생산하도록 다양한 반도체 제조 단계에서 사용될 수 있다. 대안으로, 소망에 따라 데이터베이스가 (합성 라이브러리 있는 또는 없는) 넷리스트 또는 데이터 세트일 수 있다.
특정 실시예가 위에서 설명되었지만, 이들 실시예는, 특정 특징에 관하여 단일 실시예만이 설명되는 경우에도, 본 개시의 범위를 한정하려는 의도는 아니다. 본 개시에서 제공된 특징의 예는 달리 서술되지 않으면 제한적이라기보다는 예시적인 것으로 의도된다. 위의 설명은 본 발명의 혜택을 갖는 당업자에게 명백할 바와 같은 그러한 대안, 수정 및 균등물을 포함하려는 의도이다.
본 발명의 범위는, 본 명세서에서 (명시적으로든 묵시적으로든) 개시된 어떠한 특징 또는 특징의 조합, 또는 그 일반화된 어떠한 것이라도, 그것이 본 명세서에서 다룬 문제 중 어느 것 또는 모두를 경감하든 아니든, 포함할 수 있다. 따라서, 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 속행 중 특징의 어떠한 그러한 조합에라도 새로운 청구항이 만들어질 수 있다. 특히, 첨부 청구범위를 참조하여, 종속 청구항으로부터의 특징은 독립 청구항의 것들과 조합될 수 있고, 각자의 독립 청구항으로부터의 특징은 단지 첨부된 특허청구범위에 열거된 특정 조합으로만이 아니라 어떠한 적절한 방식으로라도 조합될 수 있다.

Claims (23)

  1. 장치로서,
    제1 데이터 캐시(data cache);
    제2 데이터 캐시; 및
    상기 제1 데이터 캐시에 메모리 데이터를 저장하고,
    상기 메모리 데이터에 대응하는 태그 데이터를 상기 제2 데이터 캐시에 저장하지만 상기 제1 데이터 캐시에는 저장하지 않음으로써 상기 제1 데이터 캐시에 상기 메모리 데이터를 캐싱하도록 구성된 캐시 로직을 포함하는 장치.
  2. 제1항에 있어서, 상기 제1 및 제2 데이터 캐시는 프로세서의 데이터 캐시 계층의 각자의 레벨을 구현하는 것인 장치.
  3. 제2항에 있어서, 상기 제1 데이터 캐시에 의해 구현된 레벨은 상기 캐시 계층에 있어서 상기 제2 데이터 캐시에 의해 구현된 레벨 바로 아래에 있는 것인 장치.
  4. 제1항에 있어서, 상기 제1 데이터 캐시는 스택 메모리(stacked memory)를 사용하여 프로세서 상에 구현되는 것인 장치.
  5. 제4항에 있어서,
    상기 스택 메모리는 복수의 메모리 페이지로서 편성되되, 상기 캐시 로직은 물리적 시스템 메모리의 인접 영역에 대응하는 메모리 데이터를 각각의 메모리 페이지에 저장하도록 구성되는 것인 장치.
  6. 제1항에 있어서, 상기 제1 데이터 캐시는 런타임에 동적으로 재구성가능한 것인 장치.
  7. 제6항에 있어서, 상기 제1 데이터 캐시는 상기 제1 데이터 캐시의 사이즈, 블록 사이즈, 블록 수 또는 연관성 레벨(associativity level)을 수정하도록 런타임에 동적으로 재구성가능한 것인 장치.
  8. 제6항에 있어서, 상기 제1 데이터 캐시는 운영 체계에 의해 이루어진 결정에 응답하여 상기 운영 체계에 의해 런타임에 동적으로 재구성가능하되, 상기 결정은 프로세서의 워크로드(workload)의 하나 이상의 특성에 의존하는 것인 장치.
  9. 제6항에 있어서, 상기 제1 데이터 캐시를 재구성하는 것은 상기 제1 데이터 캐시의 하나 이상의 구성 레지스터를 수정하는 것을 포함하되, 상기 구성 레지스터는 상기 제1 데이터 캐시의 소정 블록에 대응하는 태그 정보를 저장하는 상기 제2 데이터 캐시의 블록을 결정하는데 사용가능한 것인 장치.
  10. 제6항에 있어서, 상기 재구성은, 운영 체계가,
    프로세서 상에서 실행하고 있는 하나 이상의 스레드의 실행을 동결하고;
    시스템 메모리에 상기 프로세서를 접속하는 메모리 버스에 대한 로크를 취득하며;
    더티 블록(dirty block)을 다시 메모리에 쓰고(writing);
    상기 제1 데이터 캐시에서의 데이터를 무효화하며;
    상기 메모리 버스에 대한 상기 로크를 풀어주고; 그리고
    상기 하나 이상의 스레드의 실행을 재개하는 것을 수행하는 것을 포함하는 것인 장치.
  11. 방법으로서,
    프로세서가 상기 프로세서에 의해 액세스된 메모리 데이터를 제1 데이터 캐시에 캐싱하는 단계; 및
    상기 프로세서가 상기 액세스된 메모리 데이터에 대한 태그 정보를 제2 데이터 캐시에 저장하지만 상기 제1 데이터 캐시에는 저장하지 않는 단계를 포함하는 방법.
  12. 제11항에 있어서, 상기 제1 및 제2 데이터 캐시는 상기 프로세서의 데이터 캐시 계층의 각자의 레벨을 구현하되, 상기 제1 데이터 캐시에 의해 구현된 레벨은 상기 제2 데이터 캐시에 의해 구현된 레벨 바로 아래에 있는 것인 방법.
  13. 제11항에 있어서, 상기 제1 데이터 캐시는 스택 메모리를 사용하여 상기 프로세서 상에 구현되는 것인 방법.
  14. 제13항에 있어서,
    상기 스택 메모리는 복수의 메모리 페이지로서 편성되되, 캐시 로직은 물리적 시스템 메모리의 인접 영역에 대응하는 메모리 데이터를 각각의 메모리 페이지에 저장하도록 구성되는 것인 방법.
  15. 제11항에 있어서, 상기 제1 데이터 캐시는 런타임에 동적으로 재구성가능한 것인 방법.
  16. 제15항에 있어서, 상기 제1 데이터 캐시는 상기 제1 데이터 캐시의 사이즈, 블록 사이즈, 블록 수 또는 연관성 레벨을 수정하도록 런타임에 동적으로 재구성가능한 것인 방법.
  17. 제15항에 있어서, 상기 제1 데이터 캐시는 운영 체계에 의해 이루어진 결정에 응답하여 상기 운영 체계에 의해 런타임에 동적으로 재구성가능하되, 상기 결정은 상기 프로세서의 워크로드의 하나 이상의 특성에 의존하는 것인 방법.
  18. 제15항에 있어서, 상기 제1 데이터 캐시를 재구성하는 것은 상기 제1 데이터 캐시의 하나 이상의 구성 레지스터를 수정하는 것을 포함하되, 상기 구성 레지스터는 상기 제1 데이터 캐시의 소정 블록에 대응하는 태그 정보를 저장하는 상기 제2 데이터 캐시의 블록을 결정하는데 사용가능한 것인 방법.
  19. 제11항에 있어서,
    물리적 메모리 어드레스에 대한 태그 값을 결정하도록 상기 데이터의 상기 물리적 메모리 어드레스를 사용하는 단계; 및
    상기 태그 값이 상기 제2 데이터 캐시에 의해 저장되어 있음을 결정하는 단계에 의해,
    상기 메모리 데이터가 상기 제1 데이터 캐시에 저장되어 있음을 결정하는 단계를 더 포함하는 방법.
  20. 제19항에 있어서, 상기 태그 값이 상기 제2 데이터 캐시에 의해 저장되어 있음을 결정하는 단계는,
    상기 제2 데이터 캐시 중의 캐시 블록을 결정하는 단계로서, 상기 캐시 블록이 상기 물리적 메모리 어드레스에 대응하고, 상기 결정이 상기 제2 데이터 캐시의 하나 이상의 구성 레지스터에 저장된 하나 이상의 캐시 구성 값에 의존하는 것인, 상기 캐시 블록을 결정하는 단계; 및
    상기 캐시 블록이 상기 태그 값을 저장하고 있음을 결정하는 단계를 포함하는 것인 방법.
  21. 컴퓨터 시스템 상에서 실행가능한 프로그램에 의해 동작되는 데이터 구조를 포함하는 컴퓨터 읽기 가능한 저장 매체로서, 상기 프로그램은 상기 데이터 구조에 의해 기술된(described) 회로를 포함하는 집적회로를 제조하기 위한 프로세스의 일부를 수행하도록 상기 데이터 구조상에서 동작하고, 상기 데이터 구조에 기술된 상기 회로는:
    제1 데이터 캐시; 및
    제2 데이터 캐시를 포함하되,
    장치는 상기 제1 데이터 캐시에 캐시 메모리 데이터를 저장하도록 구성되고, 상기 제1 데이터 캐시에 저장된 상기 캐시 메모리 데이터에 액세스하는데 사용가능한 태그 정보는 상기 제2 데이터 캐시에 저장되지만 상기 제1 데이터 캐시에는 저장되지 않는 것인 컴퓨터 읽기 가능한 저장 매체.
  22. 제21항에 있어서, 상기 저장 매체는 HDL, 베릴로그(Verilog) 또는 GDSII 데이터를 저장하는 것인 컴퓨터 읽기 가능한 저장 매체.
  23. 방법으로서,
    제1 캐시의 데이터 어레이에 메모리 데이터를 저장함으로써 상기 제1 캐시에 상기 메모리 데이터를 캐싱하는 단계 및 상기 제1 캐시에 대한 대응하는 태그 데이터를 제2 데이터 캐시의 데이터 어레이에 저장하고 상기 제1 데이터 캐시의 태그 어레이에는 저장하지 않는 단계를 포함하는 방법.
KR1020137031457A 2011-05-10 2012-05-09 대용량 데이터 캐시에 대한 효율적 태그 저장 KR20140045364A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/104,865 2011-05-10
US13/104,865 US20120290793A1 (en) 2011-05-10 2011-05-10 Efficient tag storage for large data caches
PCT/US2012/037178 WO2012154895A1 (en) 2011-05-10 2012-05-09 Efficient tag storage for large data caches

Publications (1)

Publication Number Publication Date
KR20140045364A true KR20140045364A (ko) 2014-04-16

Family

ID=46124765

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137031457A KR20140045364A (ko) 2011-05-10 2012-05-09 대용량 데이터 캐시에 대한 효율적 태그 저장

Country Status (6)

Country Link
US (1) US20120290793A1 (ko)
EP (1) EP2707801A1 (ko)
JP (1) JP2014517387A (ko)
KR (1) KR20140045364A (ko)
CN (1) CN103597455A (ko)
WO (1) WO2012154895A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150108148A (ko) * 2014-03-17 2015-09-25 한국전자통신연구원 캐시의 부분연관 재구성을 이용한 캐시 제어 장치 및 캐시 관리 방법
KR20200079729A (ko) * 2018-12-26 2020-07-06 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
WO2022107920A1 (ko) * 2020-11-20 2022-05-27 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
KR102560087B1 (ko) * 2023-02-17 2023-07-26 메티스엑스 주식회사 매니코어 시스템의 메모리 주소 변환 방법 및 장치

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9697147B2 (en) 2012-08-06 2017-07-04 Advanced Micro Devices, Inc. Stacked memory device with metadata management
US8922243B2 (en) 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
US9065722B2 (en) 2012-12-23 2015-06-23 Advanced Micro Devices, Inc. Die-stacked device with partitioned multi-hop network
US9135185B2 (en) * 2012-12-23 2015-09-15 Advanced Micro Devices, Inc. Die-stacked memory device providing data translation
US9201777B2 (en) 2012-12-23 2015-12-01 Advanced Micro Devices, Inc. Quality of service support using stacked memory device with logic die
US9170948B2 (en) 2012-12-23 2015-10-27 Advanced Micro Devices, Inc. Cache coherency using die-stacked memory device with logic die
US9286948B2 (en) 2013-07-15 2016-03-15 Advanced Micro Devices, Inc. Query operations for stacked-die memory device
CN104809487B (zh) * 2014-01-28 2018-08-24 上海复旦微电子集团股份有限公司 电子器件及对电子器件进行访问的方法
CN104811330A (zh) * 2014-01-28 2015-07-29 上海复旦微电子集团股份有限公司 网络设备及其配置方法、电子设备、路由器及移动终端
CN104809420B (zh) * 2014-01-28 2018-06-12 上海复旦微电子集团股份有限公司 具有存储功能的器件
CN104809493B (zh) * 2014-01-28 2018-12-04 上海复旦微电子集团股份有限公司 射频标签、对射频标签进行访问的方法及电子系统
US9558120B2 (en) * 2014-03-27 2017-01-31 Intel Corporation Method, apparatus and system to cache sets of tags of an off-die cache memory
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
US9892053B2 (en) * 2015-03-24 2018-02-13 Intel Corporation Compaction for memory hierarchies
AU2016204072B2 (en) 2015-06-17 2017-08-03 Accenture Global Services Limited Event anomaly analysis and prediction
US20170091099A1 (en) * 2015-09-25 2017-03-30 Zvika Greenfield Memory controller for multi-level system memory having sectored cache
US9996471B2 (en) * 2016-06-28 2018-06-12 Arm Limited Cache with compressed data and tag
US11601523B2 (en) * 2016-12-16 2023-03-07 Intel Corporation Prefetcher in multi-tiered memory systems
US10534545B2 (en) 2017-12-20 2020-01-14 International Business Machines Corporation Three-dimensional stacked memory optimizations for latency and power
US10063632B1 (en) * 2017-12-22 2018-08-28 Engine Media, Llc Low-latency high-throughput scalable data caching
US11086526B2 (en) * 2018-06-07 2021-08-10 Micron Technology, Inc. Adaptive line width cache systems and methods
US10970220B2 (en) * 2018-06-26 2021-04-06 Rambus Inc. Tags and data for caches
US11138135B2 (en) * 2018-09-20 2021-10-05 Samsung Electronics Co., Ltd. Scale-out high bandwidth memory system
CN112039936B (zh) * 2019-06-03 2023-07-14 杭州海康威视系统技术有限公司 数据传输方法、第一数据处理设备及监控系统
US20230236985A1 (en) * 2022-01-21 2023-07-27 Centaur Technology, Inc. Memory controller zero cache

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822755A (en) * 1996-01-25 1998-10-13 International Business Machines Corporation Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache
US6763432B1 (en) * 2000-06-09 2004-07-13 International Business Machines Corporation Cache memory system for selectively storing directory information for a higher level cache in portions of a lower level cache
US20030046492A1 (en) * 2001-08-28 2003-03-06 International Business Machines Corporation, Armonk, New York Configurable memory array
US6834327B2 (en) * 2002-02-08 2004-12-21 Hewlett-Packard Development Company, L.P. Multilevel cache system having unified cache tag memory
US6988172B2 (en) * 2002-04-29 2006-01-17 Ip-First, Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status
US7934054B1 (en) * 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US20080229026A1 (en) * 2007-03-15 2008-09-18 Taiwan Semiconductor Manufacturing Co., Ltd. System and method for concurrently checking availability of data in extending memories
US8417891B2 (en) * 2008-12-15 2013-04-09 Intel Corporation Shared cache memories for multi-core processors
WO2012061048A1 (en) * 2010-11-04 2012-05-10 Rambus Inc. Techniques for storing data and tags in different memory arrays

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150108148A (ko) * 2014-03-17 2015-09-25 한국전자통신연구원 캐시의 부분연관 재구성을 이용한 캐시 제어 장치 및 캐시 관리 방법
KR20200079729A (ko) * 2018-12-26 2020-07-06 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
WO2022107920A1 (ko) * 2020-11-20 2022-05-27 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
KR102560087B1 (ko) * 2023-02-17 2023-07-26 메티스엑스 주식회사 매니코어 시스템의 메모리 주소 변환 방법 및 장치
US11875184B1 (en) 2023-02-17 2024-01-16 Metisx Co., Ltd. Method and apparatus for translating memory addresses in manycore system

Also Published As

Publication number Publication date
US20120290793A1 (en) 2012-11-15
EP2707801A1 (en) 2014-03-19
WO2012154895A1 (en) 2012-11-15
CN103597455A (zh) 2014-02-19
JP2014517387A (ja) 2014-07-17

Similar Documents

Publication Publication Date Title
KR20140045364A (ko) 대용량 데이터 캐시에 대한 효율적 태그 저장
US20120221785A1 (en) Polymorphic Stacked DRAM Memory Architecture
US20210406170A1 (en) Flash-Based Coprocessor
US9384134B2 (en) Persistent memory for processor main memory
KR101893544B1 (ko) 물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시
JP6928123B2 (ja) メモリシステム内のページマイグレーションのオーバヘッドを低減するメカニズム
US6427188B1 (en) Method and system for early tag accesses for lower-level caches in parallel with first-level cache
US8195879B2 (en) Demand based partitioning of microprocessor caches
KR20060049710A (ko) 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법
US20100205344A1 (en) Unified cache structure that facilitates accessing translation table entries
US9740613B2 (en) Cache memory system and processor system
US20180024941A1 (en) Adaptive tablewalk translation storage buffer predictor
CN115132238A (zh) 集成三维(3d)dram缓存
JP2002007373A (ja) 半導体装置
US8266379B2 (en) Multithreaded processor with multiple caches
US10366008B2 (en) Tag and data organization in large memory caches
WO2016106738A1 (zh) 事务冲突检测方法、装置及计算机系统
US8533396B2 (en) Memory elements for performing an allocation operation and related methods
US20110320730A1 (en) Non-blocking data move design
JP6767569B2 (ja) マルチスレッドモードにおける電力低減のための方法及び装置
KR101967857B1 (ko) 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법
EP3017374A1 (en) Lookup of a data structure containing a mapping between a virtual address space and a physical address space
Xie et al. Coarse-granularity 3D Processor Design

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid