KR20230025864A - 연관 캐시를 위한 직접 맵핑 모드 - Google Patents

연관 캐시를 위한 직접 맵핑 모드 Download PDF

Info

Publication number
KR20230025864A
KR20230025864A KR1020237001242A KR20237001242A KR20230025864A KR 20230025864 A KR20230025864 A KR 20230025864A KR 1020237001242 A KR1020237001242 A KR 1020237001242A KR 20237001242 A KR20237001242 A KR 20237001242A KR 20230025864 A KR20230025864 A KR 20230025864A
Authority
KR
South Korea
Prior art keywords
memory
cache
request
contiguous
data
Prior art date
Application number
KR1020237001242A
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 KR20230025864A publication Critical patent/KR20230025864A/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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • 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

캐시를 제어하는 방법이 개시된다. 방법은 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청을 수신하는 단계를 포함한다. 방법은 또한 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 캐시 메모리에 데이터가 연속적으로 존재하는 캐시 존재 요청을 포함할 때, 캐시 메모리의 할당된 인접 부분에 메모리의 일부를 직접 맵핑하는 단계를 포함한다. 방법은 또한 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 캐시 메모리에 연속적으로 존재하는 캐시 존재 요청을 포함하지 않을 때, 연관 맵핑을 사용하여 메모리의 일부를 캐시 메모리에 맵핑하는 단계를 포함한다.

Description

연관 캐시를 위한 직접 맵핑 모드
관련 출원의 교차 참조
본 출원은 2020년 6월 26일 출원된 명칭 "연관 캐시를 위한 직접 맵핑 모드"의 미국 가출원 제63/044,735호 및 2020년 9월 25일 출원된 명칭 "연관 캐시를 위한 직접 맵핑 모드"의 미국 출원 제17/033,287호의 이익을 주장하며, 이의 전체 내용은 본원에 참조로 포함된다.
캐시 메모리(이하, "캐시")는 더 큰 메모리 부분에서 빈번하게 액세스되는 캐시에 데이터의 사본들을 저장함으로써 더 큰 메모리 부분(예를 들어, 메인 메모리)에 저장된 데이터에 대한 액세스를 가속화하는 데 사용된다. 프로세서가 더 큰 메모리 부분(예를 들어, 어드레스에 의해 식별됨)으로 액세스(예를 들어, 데이터를 판독 또는 기록)를 요청할 때, 프로세서는 먼저 데이터의 사본이 캐시에 저장되는지 여부를 결정한다. 데이터의 사본이 캐시에 저장되는 것으로 결정되면, 프로세서는 캐시에 액세스하여, 데이터의 보다 효율적인 액세스를 가능하게 한다.
빈번하게 액세스된 데이터는 통상적으로 캐시 라인으로 지칭되는 고정 크기의 블록에서 메모리로부터 캐시로 복사된다. 캐시 라인이 캐시에 복사될 때, 복사된 데이터 및 요청된 메모리 어드레스(예를 들어, 태그)를 포함하는 캐시 엔트리가 생성된다(즉, 캐시에 배치된다). 태그가 캐시에 위치하는 경우, 캐시 히트가 발생하고 데이터가 캐시 라인에서 액세스된다. 태그가 캐시에 있지 않은 경우, 캐시 미스가 발생한다. 새로운 엔트리가 캐시에 할당되고, 더 큰 메모리로부터의 데이터가 캐시에 복사되고 데이터가 액세스된다. 기존 엔트리들은 직접 맵핑 및 연관 맵핑을 포함하는 상이한 맵핑 정책들에 따라 새로운 엔트리들에 의해 대체(예를 들어, 축출)될 수 있다.
첨부된 도면과 함께 예로서 주어진 하기 설명으로부터 보다 상세한 이해가 있을 수 있다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 장치의 블록도이다.
도 2는 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 구성요소들을 도시하는 블록도이다.
도 3은 본 개시의 특징에 따른 상이한 캐시 모드 사이에서 동적으로 전환하는 예시적인 방법을 도시하는 흐름도이다.
도 4a는 본 개시의 특징에 따른 메모리의 식별된 블록들에 대한 상이한 메모리 어드레스들의 맵핑을 도시하는 도면이다.
도 4b는 본 개시의 특징에 따른 캐시의 미리 결정된 캐시 인덱스들에 비인접 메모리 부분들을 직접 맵핑하는 예를 도시하는 도면이다.
도 5는 본 개시의 특징에 따른 메모리의 식별된 부분들을 캐시로 직접 맵핑하는 예시적인 방법을 도시하는 흐름도이다.
직접 맵핑 정책이 사용될 때, 각각의 메모리 어드레스는 캐시에서 특정 위치(예를 들어, 인덱스)에 할당된다. 메모리와 캐시 사이의 맵핑은 인덱스 및 오프셋이 쉽게 계산될 수 있기 때문에 용이하게 구현되고(예를 들어, 비트 운용자 또는 간단한 산술을 이용하여), 많은 캐시 라인을 탐색하기 위해 캐시 내에 데이터를 배치하기 위해 적은 전력이 소비된다. 그러나, 직접 맵핑된 캐시의 캐시 라인들은 미사용 캐시 라인들의 존재에도 불구하고 많은 어드레스들이 동일한 캐시 인덱스들에 맵핑될 때 반복적으로 축출될 수 있다.
완전 연관 맵핑 정책이 사용될 때, 새로운 엔트리들이 임의의 캐시 어드레스에 복사될 수 있다. 완전 연관 캐시들의 경우, 데이터가 임의의 미사용 캐시 라인에 배치될 수 있기 때문에, 단일 캐시 블록에 맵핑되는 다수의 메모리 어드레스들 사이에 충돌이 없다(즉, 캐시 미스 충돌이 없음). 완전 연관 캐시들은, 그러나, 구현하기에 매우 비싼데, 전체 어드레스가 태그로서 사용되고 이는 직접 맵핑된 캐시보다 캐시 크기를 크게 증가시키기 때문이다. 또한, 데이터가 임의의 캐시 라인에 위치될 수 있기 때문에 캐시 내의 각각의 캐시 블록의 태그들이 체크되어야 하며, 이는 전력 소비 및 레이턴시를 증가시킨다. 따라서, 연관 캐시들이 직접 맵핑된 캐시들보다 하부 캐시 미스 레이트들을 가지며, 이들은 직접 맵핑된 캐시들보다 하드웨어 비용, 전력 소비 및 레이턴시를 증가시켰다.
이러한 이유로, 종래의 연관 캐시는 전형적으로 N-방향 세트 연관 맵핑 정책을 이용하는데, 여기서 각각의 엔트리는 N개의 캐시 라인을 포함하는 세트에 할당되며, 여기서 각각의 라인은 임의의 태그로부터 데이터를 유지할 수 있다. 세트 연관 캐시의 경우, N-방향 세트 연관 정책 내에서 N개의 라인이 클수록 연관성이 더 크고 캐시 미스에 대한 확률이 더 크다. 그러나, 연관성의 증가는 N개의 라인들 및 검색에 대한 더 많은 수의 어드레스들의 증가를 포함하여, 증가된 레이턴시, 더 많은 전력 소비 및 더 큰 저장 영역을 초래한다.
일반적으로, 캐시들이 메인 메모리에 더 가깝게 이동함에 따라, 캐시들은 물리적 메모리 어드레스 태깅된 캐시(즉, 물리적으로 태깅된 캐시들)로서 구현된다. 물리적으로 태깅된 캐시들은 물리적 어드레스를 사용하여 그리고 가상의 물리적 병진이 수행된 후에 액세스된다.
동작 전력 절약 기간(예를 들어, 저전력 모드 또는 전력 관리 활동 기간) 동안, 하나 이상의 구성요소(예를 들어, DRAM)를 사용하지 않는 프로그램은 전형적으로 이러한 구성요소가 오프라인으로 취할 수 있도록 실행된다. 그러나 일부 경우에, 클라이언트(예를 들어, 디스플레이 클라이언트와 같은 고 서비스 클라이언트)는 이러한 전력 절약 기간 동안 그들의 기능을 수행하기 위해 데이터를 연속적으로 페치하는 프로그램을 실행한다. DRAM 또는 다른 메모리 부분들(예를 들어, 다른 비-물리적으로 태깅된 캐시들)과 같은 구성요소들이 전력을 보존하기 위해 오프라인이기 때문에, 물리적으로 태깅된 캐시는 데이터를 연속적으로 페치하는 프로그램들을 실행하는 데 사용된다.
그러나, 사실상 연속 큰 어드레스에 대해 메모리의 물리적으로 연속 큰 부분을 할당하는 것이 어렵다. 예를 들어, 클라이언트가 할당될 메모리의 일부를 요청할 때, 시작 어드레스 및 종료 어드레스를 갖는, (예를 들어, 크기 프레임 버퍼의) 가상 메모리의 연속 부분이 할당된다. 그러나, 가상 메모리의 연속 부분에 맵핑되는 물리적 메모리(예를 들어, 메인 메모리)의 일부가 인접하지 않는 경우(물리적 메모리에서 세그먼트화됨), 가상 메모리와 물리적 메모리 어드레스들 사이의 병진이 비연속 물리적 메모리 어드레스들을 초래할 수 있다. 물리적으로 태깅된 연관 캐시에서 비인접 물리적 메모리 어드레스가 서로 위에 있는 별칭(예: 동일한 인덱스에 맵핑)인 경우,
미사용(예: 비어 있음) 또는 덜 자주 사용되는 캐시 라인의 존재 여부에 관계없이 데이터가 제거된다.
메모리(예를 들어, 8 KB)의 요청된 부분이 캐시 크기(예를 들어, 1MB)보다 작을 때, 캐시로부터 축출되는 임의의 데이터 없이 프로그램의 실행 전체에 걸쳐 캐시에 존재할 프로그램을 실행하는 데 사용되는 데이터의 각각의 일부에 대해 물리적으로 실현 가능하다. 그러나 위에서 설명한 것처럼 비연속적인 물리적 메모리 어드레스가 물리적으로 태깅된 캐시의 동일한 인덱스에 대한 별칭을 지정하는 경우,
기존의 집합 연관 정책은 사용되지 않거나 덜 자주 사용되는 캐시 라인을 사용할 수 있는 경우에도 데이터가 캐시에서 제거되도록 한다.
본 출원은 데이터를 저장하기 위한 메모리 할당을 위한 클라이언트(예를 들어, 디스플레이 클라이언트)로부터의 요청이, 또한, 요청된 메모리에 저장될 데이터의 각각의 일부가 캐시 내에 연속적으로 존재하는지(즉, 축출되지 않음)를 결정하기 위한 장치 및 방법을 제공한다. 예를 들어, 요청은, 예를 들어, 일정 시간 동안, 다수의 사이클 동안, 또는 이벤트의 발생(예를 들어, 프로그램 또는 프로그램의 일부가 실행을 완료함, 클라이언트가 데이터가 캐시에 더 이상 존재할 필요가 없음을 나타냄, 또는 처리 장치가 절전 모드로 존재함) 때까지 캐시 내에 연속적으로 존재하는 데이터에 대한 요청이다. 연속 캐시 존재에 대한 요청의 결정에 기초하여, 캐시는 캐시가 연관적으로 맵핑되는 모드와 캐시의 일부가 직접 맵핑되고 캐시의 다른 부분이 회합적으로 맵핑되는 모드 사이에서 스위칭하도록 동적으로 제어된다. 예를 들어, 물리적으로 구성된 연관 캐시는 직접 맵핑 모드에서 동적으로 사용된다. 따라서, 동적으로 결정된 특정 사용 사례(예를 들어, 데이터가 캐시 내에 지속적으로 존재하는 요청)에 따라 프로그램/애플리케이션을 실행하도록 연관 맵핑 및 직접 맵핑이 구현될 수 있다.
예를 들어, 할당될 메모리의 일부에 대한 클라이언트로부터의 요청이 또한 캐시 내에 연속적으로 존재하는 데이터에 대한 요청을 포함할 때, 요청된 메모리의 상이한 비연속 부분들이 식별되고 캐시 내의 인덱스들을 할당하도록 직접 맵핑된다. 따라서, 요청된 메모리의 비연속 부분들에 대응하는 데이터는 축출되지 않고, 일정 시간 동안, 다수의 사이클들에 대해, 또는 이벤트의 발생 때까지 캐시에 유지된다. 그렇지 않으면, 요청된 메모리의 어드레스들은 회합성 맵핑을 사용하여 캐시에 맵핑된다.
본 개시의 특징들은 동일한 가상을 물리적 변환 정보를 공유하지 않거나 동일한 가상 어드레스들을 공유하지 않는 다수의 클라이언트들이 동일한 물리적으로 태깅된 캐시를 사용하려고 시도하는 경우들에 유용하다.
캐시를 제어하는 방법이 개시된다. 방법은 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청을 수신하는 단계를 포함한다. 방법은 또한 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 캐시 메모리에 데이터가 연속적으로 존재하는 캐시 존재 요청을 포함할 때, 캐시 메모리의 할당된 인접 부분에 메모리의 일부를 직접 맵핑하는 단계를 포함한다. 방법은 또한 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 캐시 메모리에 연속적으로 존재하는 캐시 존재 요청을 포함하지 않을 때, 연관 맵핑을 사용하여 메모리의 일부를 캐시 메모리에 맵핑하는 단계를 포함한다.
캐시를 제어하는 방법이 개시된다. 방법은 데이터를 저장하기 위해 메모리의 일부를 할당하고 캐시 메모리에서의 상기 데이터의 연속 존재를 조정하기 위한 요청을 수신하는 단계 및 제1 메모리 어드레스에 맵핑된 제1 식별자를 사용하여 상기 메모리의 일부의 제1 세그먼트를 식별하는 단계를 포함한다. 방법은 또한 상기 메모리의 제1 식별된 세그먼트에 대한 상기 캐시 메모리의 제1 인접 부분을 예약하는 단계 및 상기 캐시 메모리의 상기 제1 인접 부분을 상기 메모리의 제1 세그먼트화된 부분에 할당하는 단계를 포함한다. 방법은 상기 제1 메모리 어드레스와 비인접한 제2 메모리 어드레스에 맵핑된 제2 식별자를 사용하여 상기 메모리의 일부의 제2 세그먼트를 식별하는 단계, 상기 메모리의 제2 식별된 세그먼트에 대한 상기 캐시 메모리의 제2 인접 부분을 예약하는 단계, 및 상기 캐시 메모리의 상기 제2 인접 부분을 상기 메모리의 제2 세그먼트화된 부분에 할당하는 단계를 더 포함한다.
메모리, 메모리와 별개인 캐시 메모리 부분, 및 프로세서를 포함하는 처리 장치가 개시된다. 프로세서는 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청을 수신하고, 상기 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 캐시 메모리에 데이터가 연속적으로 존재하는 캐시 존재 요청을 포함할 때, 캐시 메모리의 할당된 인접 부분에 메모리의 일부를 직접 맵핑하고, 상기 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 상기 캐시 메모리에 연속적으로 존재하는 캐시 존재 요청을 포함하지 않을 때, 연관 맵핑을 사용하여 메모리의 일부를 상기 캐시 메모리에 맵핑하도록 구성된다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 장치(100)의 블록도이다. 장치(100)는, 예를 들어, 컴퓨터, 게임 장치, 핸드헬드(handheld) 장치, 셋톱 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함할 수 있다. 장치(100)는 프로세서(102), 메모리(104), 스토리지(106), 하나 이상의 입력 장치(108), 및 하나 이상의 출력 장치(110)를 포함한다. 장치(100)는 또한 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함한다. 장치(100)는 도 1에 도시되지 않은 추가 구성요소를 포함할 수 있는 것으로 이해된다.
다양한 대안에서, 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 동일한 다이 상에 위치한 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함하며, 여기서 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안에서, 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치하거나, 프로세서(102)와 별도로 위치한다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어, RAM(random access memory), 동적 RAM(DRAM), 또는 캐시를 포함한다.
스토리지(106)는 고정 또는 착탈식 스토리지, 예를 들어, 하드 디스크 드라이브, 고체 상태 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함한다. 입력 장치(108)는, 제한 없이, 키보드, 키패드, 터치 화면, 터치 패드, 검출기, 마이크, 가속도계, 자이로스코프, 생체인식 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함한다. 출력 장치(110)는, 제한 없이, 디스플레이, 스피커, 프린터, 햅틱 피드백 장치, 하나 이상의 조명, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함한다.
입력 드라이버(112)는 프로세서(102) 및 입력 장치(108)와 통신하고, 프로세서(102)가 입력 장치(108)로부터 입력을 수신할 수 있게 한다. 출력 드라이버(114)는 프로세서(102) 및 출력 장치(110)와 통신하고, 프로세서(102)가 출력 장치(110)에 출력을 송신할 수 있게 한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적 구성요소이고, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우, 장치(100)는 동일한 방식으로 동작할 것이라는 점에 유의한다. 출력 드라이버(114)는 디스플레이 장치(118)에 결합된 가속 처리 디바이스("APD")(116)를 포함한다. APD는 프로세서(102)로부터 계산 명령 및 그래픽 렌더링 명령을 수용하여, 이러한 계산 및 그래픽 렌더링 명령을 처리하고 화면표시를 위해 디스플레이 장치(118)에 픽셀 출력을 제공하도록 구성된다. 아래에서 더 상세히 설명되는 바와 같이, APD(116)는 단일-명령어-다중-데이터 ("SIMD") 패러다임에 따라 계산을 수행하도록 구성된 하나 이상의 병렬 처리 유닛을 포함한다. 따라서, 다양한 기능이 APD(116)에 의해 또는 이와 함께 수행되는 것으로 본원에 설명되지만, 다양한 대안에서, APD(116)에 의해 수행되는 것으로 설명된 기능은 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않고 디스플레이 장치(118)에 그래픽 출력을 제공하도록 구성된 유사한 능력을 갖는 다른 컴퓨팅 장치에 의해 추가적으로 또는 대안적으로 수행된다. 예를 들어, SIMD 패러다임에 따라 처리 작업을 수행하는 임의의 처리 시스템은 본원에 설명된 기능을 수행하도록 구성될 수 있음이 고려된다. 또는, SIMD 패러다임에 따라 처리 작업을 수행하지 않는 컴퓨팅 시스템은 본원에 설명된 기능을 수행하는 것으로 고려된다.
도 2는 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 구성요소들을 도시하는 블록도이다. 도 2에 도시된 일부 구성요소는 예를 들어 가속된 프로세서(예를 들어, GPU)와 같은 프로세서의 구성요소이다. 본 개시의 특징은 CPU와 같은 제1 유형의 하나 이상의 프로세서, 및/또는 GPU와 같은 제2 유형의 하나 이상의 프로세서에 의해 실행될 수 있다.
본 개시의 특징들은 복수의 레벨들 중 임의의 레벨 상의 캐시들을 사용하여 구현될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 구성요소는 복수의 프로세서 코어(204)를 포함한다. 각각의 코어(204)는 대응하는 레벨 1 캐시(214)와 통신하고 대응하는 레벨 1 캐시(214)를 사용하여 데이터를 처리하도록 구성된 대응하는 레벨 1 캐시 제어기(218)를 포함한다.
도 2에 추가로 도시된 바와 같이, 구성요소들은 또한 레벨 2 캐시(216)와 통신하고 레벨 2 캐시(216)를 사용하여 데이터를 처리하도록 구성된 레벨 2 캐시 제어기(220)/프로세서를 포함한다. 캐시 제어기/프로세서(220)는 또한 다음 캐시 레벨(더 높은 캐시 레벨)과 통신한다. 임의의 수의 N 레벨 캐시들이 사용될 수 있다. N 레벨 캐시(212)(예를 들어, 마지막 레벨 캐시) 및 N 레벨 캐시 제어기(210)와 같은 다음 레벨 캐시는, 예를 들어, 동일한 다이 또는 다수의 다이 상에 위치될 수 있는 CPU 또는 GPU(도시되지 않음)의 캐시와 같은 다수의 프로세서들의 캐시들과 통신하고 이에 의해 공유될 수 있다.
메모리 제어기/프로세서(208)는 메모리(104)(예를 들어, DRAM) 및 캐시 제어기들(220, 218)과 통신한다. 도 2에 도시된 바와 같이, 다수의 클라이언트(206)는 메모리 제어기(208)와 통신한다. 클라이언트(206)가 할당될 메모리의 일부를 요청할 때, 메모리 제어기(208)는 클라이언트(206)(예를 들어, 디스플레이 클라이언트)로부터 요청을 수신하고 서비스하도록 구성되고 캐시 제어기(220)를 통해 캐시(216)에 액세스하고 캐시 제어기(218)를 통해 캐시(214)에 액세스하도록 구성된다. 메모리 제어기/프로세서(208)는 클라이언트(206)로부터 요청을 수신하고, 메모리를 할당하고, 하나 이상의 캐시(예를 들어, 마지막 레벨 캐시(212))에 대한 액세스 및 본원에 설명된 다양한 다른 기능을 제어하도록 구성된다. 예를 들어, 메모리 제어기/프로세서(208)는 연관 맵핑 모드에서 하나 이상의 클라이언트(206)에 의한 캐시 액세스를 제어하고, 직접 맵핑 모드에서 하나 이상의 클라이언트에 의해 동일한 캐시에 대한 액세스를 제어하도록 구성된다.
단순화된 설명 목적을 위해, 도 2는 단일 클라이언트(206)를 도시한다. 그러나, 메모리 제어기는 임의의 수의 클라이언트로부터 요청을 수신하기 위해 구성된다. 클라이언트는 하나 이상의 다른 클라이언트와 동일한 가상-물리 변환 정보를 공유하거나 그 자체의 가상-물리 변환 정보를 포함할 수 있다. 각 클라이언트는 하나 이상의 다른 클라이언트와 동일한 가상 어드레스를 가질 수 있거나 상이한 가상 어드레스를 포함할 수 있다.
일반적으로, 캐시들이 메모리(104)에 더 가깝게 이동함에 따라, 캐시들은 물리적 메모리 어드레스 태깅된 캐시(즉, 물리적으로 태깅된 캐시들)로서 구현된다. 본 개시의 특징은 다수의 클라이언트들이 동일한 물리적으로 태깅된 캐시를 활용하려고 시도하고 클라이언트들이 동일한 가상을 물리적 변환 정보와 공유하지 않고 동일한 가상 어드레스를 공유하지 않는 경우에 적합하다.
상이한 캐시 모드들에서 캐시에 동적으로 액세스하는 것을 포함하여 본 개시의 특징들을 구현하는 예들이 이제 도 3, 도 4a, 도 4b, 및 도 5를 참조하여 설명된다.
단순화된 설명 목적을 위해, 아래에서 설명되는 예들은 단일 클라이언트(즉, 디스플레이 클라이언트)로부터의 요청들을 포함한다. 그러나, 본 개시의 특징들은 동일한 캐시에 액세스하는 다수의 상이한 클라이언트들에 의해 구현될 수 있다. 예를 들어, 본 개시의 특징들은 연관 맵핑 모드 및 하나 이상의 클라이언트들에서 캐시에 액세스하는 하나 이상의 클라이언트들이 직접 맵핑 모드에서 캐시에 액세스하는 경우에 구현될 수 있다.
단순화된 설명 목적을 위해, 예들은 1MB, 64K 캐시 라인들, 및 16K 인덱스들의 크기를 갖는 캐시를 사용하여 설명된다. 방법(300)과 관련하여 설명된 캐시 크기 및 인덱스들의 수는 단지 예일 뿐이다. 본 개시의 특징들은 상이한 크기들 및 상이한 수의 인덱스들을 갖는 캐시들을 사용하여 구현될 수 있고, 상이한 양들의 요청된 비인접 메모리에 대해 구현될 수 있다.
단순화된 설명 목적을 위해, 본원에 설명된 예들은 메모리의 식별된 제1 부분에 대응하는 데이터에 대한 캐시 인덱스들을 할당하는 것을 포함한다. 본 개시의 특징은 또한 캐시 인덱스 당 다수의 방식을 할당하는 단계를 포함한다. 예를 들어, 16 방향 캐시(즉, 캐시 세트당 16개 방향)에서, 캐시의 25% 부분이 직접 맵핑 모드를 위해 할당되면, 인덱스당 4개의 방식이 할당된다. 따라서, 이 예에서, 예를 들어, 캐시의 더 큰 부분(예를 들어, 15/16)이 직접 맵핑 모드를 위해 할당되지 않는 한, 각각의 인덱스(즉, 전체 인덱스 미만)의 일부가 할당된다.
도 3은 본 개시의 특징에 따른 상이한 캐시 모드 사이에서 동적으로 전환하는 예시적인 방법(300)을 도시하는 흐름도이다. 도 4a는 메모리의 식별된 블록들에 대한 상이한 메모리 어드레스들의 맵핑을 도시하는 도면이다. 도 4b는 캐시(402)의 미리 결정된 캐시 인덱스들에 비인접 메모리 부분들을 직접 맵핑하는 예를 도시하는 도면이다.
블록(302)에 도시된 바와 같이, 방법(300)은 데이터를 저장하기 위해 메모리의 일부(예를 들어, 블록)를 할당하기 위한 요청을 수신하는 단계를 포함한다. 일부 경우들에서, 요청은 또한 메모리의 일부에 저장될 데이터의 연속 캐시 존재에 대한 요청을 포함한다. 예를 들어, 디스플레이 클라이언트로부터 4KB 메모리 블록을 할당하기 위한 요청이 수신되고, 일정 시간 동안, 다수의 사이클 동안, 또는 이벤트의 발생할(예를 들어, 프로그램 또는 프로그램의 일부가 실행을 완료함, 클라이언트가 데이터가 캐시에 더 이상 존재할 필요가 없음을 나타냄, 또는 처리 장치가 절전 모드로 존재함) 때까지 4KB 메모리 블록에 저장될 데이터가 캐시에 존재한다.
블록(304)에 도시된 바와 같이, 방법(300)은 요청이 메모리의 일부에 대응하는 데이터의 연속 캐시 존재에 대한 요청을 포함하는지 여부를 결정하는 단계를 포함한다. 블록(304)에서 요청이 연속 캐시 존재에 대한 요청을 포함하지 않는 것으로 결정되는 경우, 블록(306)에서 메모리는 회합성 맵핑을 사용하여 캐시(402)에 할당된다.
블록(304)에서 요청이 연속 캐시 존재에 대한 요청을 포함하는 것으로 결정되는 경우, 블록(308)에서 메모리의 일부는 메모리의 일부에 대한 어드레스에 맵핑되는 식별자를 사용하여 식별된다. 예를 들어, 디스플레이 클라이언트는 메모리 어드레스들을 블록 식별자에 의해 각각 식별된 메모리의 블록들에 맵핑하는 맵핑 변환 정보(예를 들어, 변환 테이블)에 액세스한다. 변환 테이블은 예를 들어 다음과 같은 복수의 변환을 포함한다: 메모리 어드레스(예를 들어, 어드레스 0B)를 블록 식별자 MBlk1(도 4A에 도시됨)에 의해 식별되는 메모리의 제1 4KB 블록에 맵핑하는 변환; 및 메모리 어드레스(예를 들어, 어드레스 1MB)를 블록 식별자 MBlk2(또한 도 4a에 도시됨)에 의해 식별되는 메모리의 제2 4KB 블록에 맵핑하는 변환.
일부 경우들에서, 직접 맵핑 모드를 사용할지 여부의 결정은 할당 요청된 메모리의 양이 캐시(402)의 용량(예를 들어, 크기) 미만인지 또는 캐시(402)의 용량의 미리 결정된 부분(예를 들어, 비, 백분율) 미만인지 여부를 결정하는 것을 포함한다. 예를 들어, 직접 맵핑은 요청된 양의 메모리(예를 들어, 4KB)가 캐시(402)의 용량(예를 들어, 1MB)보다 작거나, 요청된 메모리의 양이 캐시(402)의 미리 결정된 부분(예를 들어, 25%) 미만일 때 사용된다. 그렇지 않으면, 블록(306)에서 메모리의 일부는 연관 맵핑을 사용하여 캐시(402)에 할당된다.
블록(310)에서, 캐시의 일부(예를 들어, 인덱스들의 수)는 메모리의 일부(예를 들어, 4K 블록)에 대해 예약되며, 블록 식별자 MBlk1에 의해 식별되고 어드레스 0B에 맵핑된다. 예를 들어, 캐시(402)의 캐시 인덱스들(64 내지 127)은 도 4a에 도시된 바와 같이 어드레스 0B에 맵핑된 메모리 MBlk1의 블록에 대해 예약된다.
블록(312)에 도시된 바와 같이, 방법(300)은 (예를 들어, 메모리의 식별된 부분에 대응하는 데이터를 캐싱하기 위해) 캐시(예를 들어, 예약된 인덱스들)의 예약된 부분을 메모리의 식별된 부분에 할당하는 단계를 포함한다. 예를 들어, 도 4b의 제1 열에 도시된 제1 사이클에서, 연관 맵핑 정책에 따라 발생할 MBlk1에 대한 캐시(402)의 인덱스들(0 내지 63)을 할당하는 대신, 캐시(402)의 예약된 인덱스들(64 내지 127)이 MBlk1에 할당된다.
도 5는 본 개시의 특징에 따른 메모리의 식별된 부분들을 캐시(402)로 직접 맵핑하는 예시적인 방법(500)을 도시하는 흐름도이다. 도 5에 설명된 예시적인 방법(500)에서, 메모리의 8KB 부분이 요청되고, 메모리의 2개의 별개의 4KB 블록으로 분할된다.
블록(502)에 도시된 바와 같이, 방법(500)은 일정 시간 동안, 다수의 사이클 동안, 또는 이벤트의 발생 때까지, 캐시(402)에 데이터를 저장하고 데이터의 연속 존재(즉, 축출되지 않음)를 위해 메모리의 일부를 할당하기 위한 요청을 수신하는 단계를 포함한다. 예를 들어, 메모리의 8KB 블록과 연속 캐시 존재에 대한 요청을 할당하기 위해, 디스플레이 클라이언트로부터 요청이 수신된다. 메모리의 8KB 블록은 물리적 메모리의 2개의 비인접 4KB 블록들에 맵핑되는데, 여기서 각각의 4KB 블록들의 물리적 메모리 어드레스들은 물리적으로 태깅된 연관 캐시(402)와 동일한 인덱스들에 대해 별개이다.
요청은 연속 캐시 존재 요청을 포함하기 때문에, 캐시는 블록(504 내지 510)과 관련하여 아래에서 설명되는 바와 같이 2개의 세그먼트화된 4KB 블록들(비인접 물리적 메모리 어드레스들에 맵핑됨)을 2개의 상이한 인접 캐시 부분들(예를 들어, 캐시 인덱스들)에 직접 맵핑하도록 동적으로 제어된다. 일부 경우들에서, 2개의 비인접 4KB 블록들을 캐시 인덱스들의 2개의 상이한 인접 세트들에 직접 맵핑하기 위한 결정은 요청된 메모리의 일부의 양이 캐시(402)의 용량(예를 들어, 크기)보다 작은지 여부의 결정을 포함한다. 예를 들어, 메모리의 8KB 부분이 1MB 캐시 크기 미만이기 때문에 2개의 비인접 4KB 블록들을 캐시 인덱스들의 2개의 상이한 연속 세트들에 직접 맵핑하는 것이 결정된다.
다수의 인덱스들이 메모리의 식별된 세그먼트화된 부분(예를 들어, 메모리의 4K 블록)에 대해 요청될 때, 인덱스들의 수는 캐시에 예약되고 메모리의 식별된 세그먼트화된 부분에 할당되며, 이는 예약된 인덱스들에 대한 연관 할당을 방지한다. 예를 들어, 블록(504)에 도시된 바와 같이, 방법(500)은 메모리의 제1 세그먼트화된 부분에 대한 어드레스에 맵핑되는 식별자(예를 들어, MBlk1)를 사용하여 메모리의 제1 세그먼트화된 부분을 식별하는 단계를 포함한다. 디스플레이 클라이언트는 물리적 메모리 어드레스들을 블록 식별자에 의해 각각 식별된 메모리의 블록들에 맵핑하는 맵핑 변환 정보(예를 들어, 변환 테이블)에 액세스한다. 변환 테이블은, 예를 들어, 블록 식별자 MBlk1에 의해 식별되는(도 4a에 도시됨), 메모리 어드레스(예를 들어, 어드레스 0B)를 메모리의 제1 4KB 블록에 맵핑하는 변환과 같은 복수의 변환을 포함한다. 따라서, 사이클에서, 메모리의 제1 4K 블록은 (예를 들어, 메모리 제어기/프로세서에 의해) 어드레스 0B에 맵핑되는 MBlk1로서 식별된다.
블록(506)에 도시된 바와 같이, 방법(500)은 메모리의 식별된 제1 세그먼트화된 부분(예를 들어, MBlk1)에 대한 캐시(예를 들어, 예약된 인덱스들의 수)의 연속 부분을 예약하는 단계를 포함한다. 예를 들어, 캐시(402)의 캐시 인덱스들(64 내지 127)의 연속 세트는 (도 4a에 도시된 바와 같이) 어드레스 0B에 맵핑되는 MBlk1에 대해 예약된다.
블록(508)에 도시된 바와 같이, 방법(500)은 예약된 인접 캐시 부분(예를 들어, 예약된 인덱스들 수)을 메모리의 식별된 제2 부분(예를 들어, MBlk1)에 할당하는 단계를 포함한다. 예를 들어, 도 4b의 제1 열에 도시된 제1 사이클에서, 연관 맵핑 정책에 따라 발생할 MBlk1에 대한 캐시(402)의 인덱스들(0 내지 63)을 할당하는 대신, 캐시(402)의 예약된 인덱스들(64 내지 127)이 MBlk1에 할당된다(예를 들어, MBlk1에 대응하는 데이터를 캐싱하기 위함).
블록(510)에 도시된 바와 같이, 메모리의 제2 세그먼트화된 부분(예를 들어, 메모리의 제2 4K 블록)은 메모리의 요청된 부분의 제2 세그먼트화된 부분에 대한 어드레스에 맵핑되는 식별자(예를 들어, MBlk2)를 사용하여 식별된다. 디스플레이 클라이언트는 블록 식별자 MBlk2(도 4a에 도시됨)에 의해 식별된 메모리 어드레스(예를 들어, 어드레스 1MB)를 메모리의 제2 4KB 블록에 맵핑하는 변환을 포함하는 맵핑 변환 정보(예를 들어, 변환 테이블)에 액세스한다.
블록(512)에 도시된 바와 같이, 방법(500)은 메모리의 제2 식별된 제2 세그먼트화된 부분(예를 들어, MBlk2)에 대한 캐시(예를 들어, 예약된 인덱스들의 수)의 연속 부분을 예약하는 단계를 포함한다. 예를 들어, 캐시(402)의 캐시 인덱스들(0 내지 63)의 인접 세트는 어드레스 1MB(도 4a에 도시됨)에 맵핑되는 MBlk2에 대해 예약된다.
블록(514)에 도시된 바와 같이, 방법(500)은 예약된 인접 캐시 부분(예를 들어, 예약된 인덱스들 수)을 메모리의 식별된 제2 부분(예를 들어, MBlk2)에 할당하는 단계를 포함한다. 예를 들어, 도 4b의 제2 열에 도시된 제2 사이클에서, 캐시(402)의 예약된 인덱스들(0 내지 63)이 MBlk2에 할당된다(예를 들어, MBlK2에 대응하는 데이터를 캐싱하기 위함). 따라서, 비인접 물리적 메모리 어드레스(어드레스 0B 및 어드레스 1MB)는 동일한 캐시 인덱스들에 별칭을 지정하지 않으며 비인접 블록 MBlk1 및 MBlk2 둘 모두의 데이터는 요청된 캐시 존재 기간 동안 축출되지 않을 것이다.
캐시의 일부(예를 들어, 25%)가 직접 맵핑 모드를 위해 할당되지만(예를 들어, 연속 캐시 존재에 대한 요청을 수신하는 것에 응답하여), 식별된 메모리 블록에 대한 캐시(예를 들어, 캐시 인덱스들의 인접 세트)의 세그먼트화된 부분을 예약하는 요청이 있을 때까지 연관 할당들은 방지되지 않고 캐시의 세그먼트화된 부분들은 예약되지 않는다. 예를 들어, 캐시 인덱스들(64 내지 127)의 연속 세트는 메모리의 제1 블록이 블록 식별자 MBlk1을 통해 식별될 때까지 예약되지 않고, 캐시 인덱스들(0 내지 63)의 연속 세트는 메모리의 제2 블록이 블록 식별자 MBlk2를 통해 식별될 때까지 예약되지 않는다. 때때로, 연속 캐시 존재를 만족시키기 위해 할당된 부분의 임의의 양이 사용될 수 있다. 따라서, 캐시의 할당된 부분(예를 들어, 25% 미만)이 사용되는 경우, 캐시의 더 많은 양이 연관 액세스를 요청하는 클라이언트에 이용가능하여, 성능 페널티를 감소시킨다.
본원의 개시에 기초하여 많은 변형이 가능하다는 것을 이해해야 한다. 특징 및 요소가 특정 조합으로 위에서 설명되어 있지만, 각각의 특징 또는 요소는 다른 특징 및 요소 없이 단독으로 또는 다른 특징 및 요소와 함께 또는 이것 없이 다양한 조합으로 사용될 수 있다.
도면에 예시되고/되거나 본원에 설명된 다양한 기능 유닛(프로세서(102), 입력 드라이버(112), 입력 장치(108), 출력 드라이버(114), 출력 장치(110), 가속 처리 장치(116), 메모리 제어기/프로세서(208), 및 캐시 제어기/프로세서(210, 218, 및 220)을 포함하나, 이에 한정되지 않음)은 범용 컴퓨터, 프로세서, 또는 프로세서 코어로서, 또는 범용 컴퓨터, 프로세서, 또는 프로세서 코어에 의해 실행 가능한 비일시적 컴퓨터 판독 가능 매체 또는 다른 매체에 저장되는 프로그램, 소프트웨어 또는 펌웨어로서 구현될 수 있다. 제공된 방법은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서는, 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 제어기, 마이크로컨트롤러, ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 회로, 임의의 다른 유형의 IC(integrated circuit) 및/또는 상태 기계를 포함한다. 이러한 프로세서는 처리된 HDL(hardware description language) 명령어의 결과 및 넷리스트(예컨대 컴퓨터 판독가능 매체에 저장될 수 있는 명령어)를 포함하는 다른 중간 데이터를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 처리의 결과는 본 개시의 특징을 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에서 사용되는 마스크작업일 수 있다.
본원에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어에서 구현될 수 있다. 비일시적 컴퓨터 판독가능 저장 매체의 예는 ROM(read only memory), RAM(random access memory), 레지스터, 캐시 메모리, 반도체 메모리 장치, 내부 하드 디스크 및 탈착식 디스크와 같은 자기 매체, 자기 광학 매체, 및 CD-ROM 디스크 및 DVD(digital versatile disk)와 같은 광학 매체를 포함한다.

Claims (20)

  1. 캐시를 제어하는 방법으로서,
    데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청을 수신하는 단계;
    상기 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 캐시 메모리에 데이터가 연속적으로 존재하는 캐시 존재 요청을 포함할 때, 캐시 메모리의 할당된 인접 부분에 메모리의 일부를 직접 맵핑하는 단계; 및
    상기 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 상기 캐시 메모리에 연속적으로 존재하는 캐시 존재 요청을 포함하지 않을 때, 연관 맵핑을 사용하여 메모리의 일부를 상기 캐시 메모리에 맵핑하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 메모리의 일부를 할당하기 위한 요청이 상기 캐시 존재 요청을 포함하는지 여부를 결정하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    메모리 어드레스에 맵핑되는 식별자에 의해 메모리의 일부를 식별하는 단계; 및
    메모리 어드레스에 맵핑된 식별자에 의해 식별되는 메모리의 식별된 부분에 대한 캐시 메모리의 일부를 예약하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    상기 캐시 메모리의 상기 할당된 인접 부분은 인접 수의 캐시 인덱스들을 포함하는, 방법.
  5. 제4항에 있어서,
    각각의 캐시 인덱스에 대해 다수의 방식들이 할당되는, 방법.
  6. 제1항에 있어서,
    상기 캐시 존재 요청은 상기 데이터가 상기 캐시 메모리의 일부에 연속적으로 존재하는 것으로, 상기 데이터가 일정 기간 동안, 다수의 사이클 동안, 또는 이벤트의 발생 때까지 상기 캐시 메모리의 일부로부터 축출되지 않은 요청인, 방법.
  7. 제1항에 있어서,
    상기 캐시 메모리의 일부는 캐시 메모리의 물리적으로 태깅된 부분인, 방법.
  8. 제1항에 있어서,
    상기 메모리의 일부를 할당하기 위한 요청은 제1 클라이언트로부터의 제1 요청이고, 상기 방법은,
    제2 데이터를 저장하기 위해 메모리의 제2 부분을 할당하기 위해 제2 클라이언트로부터, 제1 클라이언트에 의해 사용되는 가상-물리 변환 정보 및 제2 클라이언트에 의해 사용되는 가상-물리 변환 정보가 동일하지 않은 제2 요청을 수신하는 단계;
    상기 제2 클라이언트로부터의 상기 제2 요청이 상기 캐시 메모리에 연속적으로 존재하는 요청을 포함하는 경우, 상기 메모리의 제2 부분을 상기 캐시 메모리의 제2 할당된 인접 부분에 직접 맵핑하는 단계; 및
    상기 제2 클라이언트로부터의 상기 제2 요청이 상기 캐시에 연속적으로 존재하는 요청을 포함하지 않는 경우, 연관 맵핑을 사용하여 상기 메모리의 제2 부분을 상기 캐시 메모리에 맵핑하는 단계를 더 포함하는, 방법.
  9. 캐시를 제어하는 방법으로서,
    데이터를 저장하기 위해 메모리의 일부를 할당하고 캐시 메모리에서의 상기 데이터의 연속 존재를 조정하기 위한 요청을 수신하는 단계;
    제1 메모리 어드레스에 맵핑된 제1 식별자를 사용하여 상기 메모리의 일부의 제1 세그먼트를 식별하는 단계;
    상기 메모리의 제1 식별된 세그먼트에 대한 상기 캐시 메모리의 제1 인접 부분을 예약하는 단계;
    상기 캐시 메모리의 상기 제1 인접 부분을 상기 메모리의 제1 세그먼트화된 부분에 할당하는 단계;
    상기 제1 메모리 어드레스와 비인접한 제2 메모리 어드레스에 맵핑된 제2 식별자를 사용하여 상기 메모리의 일부의 제2 세그먼트를 식별하는 단계;
    상기 메모리의 제2 식별된 세그먼트에 대한 상기 캐시 메모리의 제2 인접 부분을 예약하는 단계; 및
    상기 캐시 메모리의 상기 제2 인접 부분을 상기 메모리의 제2 세그먼트화된 부분에 할당하는 단계를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 캐시 메모리의 상기 할당된 인접 부분은 인접 수의 캐시 인덱스들을 포함하는, 방법.
  11. 제9항에 있어서,
    각각의 캐시 인덱스에 대해 다수의 방식들이 할당되는, 방법.
  12. 제9항에 있어서,
    상기 연속 캐시 존재에 대한 요청은 상기 데이터가 일정 기간 동안, 다수의 사이클 동안, 또는 이벤트의 발생 때까지 상기 캐시 메모리의 일부로부터 축출되지 않은 요청인, 방법.
  13. 제9항에 있어서,
    상기 캐시는 물리적으로 태깅된 캐시인, 방법.
  14. 처리 장치로서,
    메모리;
    상기 메모리와 별개인 캐시 메모리;
    프로세서를 포함하고, 상기 프로세서는:
    데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청을 수신하고;
    상기 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 캐시 메모리에 데이터가 연속적으로 존재하는 캐시 존재 요청을 포함할 때, 캐시 메모리의 할당된 인접 부분에 메모리의 일부를 직접 맵핑하고;
    상기 데이터를 저장하기 위해 메모리의 일부를 할당하기 위한 요청이 상기 캐시 메모리에 연속적으로 존재하는 캐시 존재 요청을 포함하지 않을 때, 연관 맵핑을 사용하여 메모리의 일부를 상기 캐시 메모리에 맵핑하도록 구성되는, 처리 장치.
  15. 제14항에 있어서,
    상기 프로세서는 상기 메모리의 일부를 할당하기 위한 요청이 상기 캐시 존재 요청을 포함하는지 여부를 결정하도록 구성되는, 처리 장치.
  16. 제14항에 있어서, 상기 프로세서는:
    메모리 어드레스에 맵핑되는 식별자에 의해 메모리의 일부를 식별하고;
    메모리 어드레스에 맵핑된 식별자에 의해 식별되는 메모리의 식별된 부분에 대한 캐시 메모리의 일부를 예약하도록 구성되는, 처리 장치.
  17. 제14항에 있어서,
    상기 캐시 메모리의 상기 할당된 인접 부분은 인접 수의 캐시 인덱스들을 포함하는, 처리 장치.
  18. 제14항에 있어서,
    각각의 캐시 인덱스에 대해 다수의 방식들이 할당되는, 처리 장치.
  19. 제14항에 있어서,
    상기 캐시 존재 요청은 상기 데이터가 상기 캐시 메모리의 일부에 연속적으로 존재하는 것으로, 상기 데이터가 일정 기간 동안, 다수의 사이클 동안, 또는 이벤트의 발생 때까지 상기 캐시 메모리의 일부로부터 축출되지 않은 요청인, 처리 장치.
  20. 제14항에 있어서,
    상기 캐시 메모리의 일부는 캐시 메모리의 물리적으로 태깅된 부분인, 처리 장치.
KR1020237001242A 2020-06-26 2021-06-16 연관 캐시를 위한 직접 맵핑 모드 KR20230025864A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063044735P 2020-06-26 2020-06-26
US63/044,735 2020-06-26
US17/033,287 US11422935B2 (en) 2020-06-26 2020-09-25 Direct mapping mode for associative cache
US17/033,287 2020-09-25
PCT/US2021/037709 WO2021262509A1 (en) 2020-06-26 2021-06-16 Direct mapping mode for associative cache

Publications (1)

Publication Number Publication Date
KR20230025864A true KR20230025864A (ko) 2023-02-23

Family

ID=79030952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237001242A KR20230025864A (ko) 2020-06-26 2021-06-16 연관 캐시를 위한 직접 맵핑 모드

Country Status (6)

Country Link
US (1) US11422935B2 (ko)
EP (1) EP4172788A1 (ko)
JP (1) JP2023532432A (ko)
KR (1) KR20230025864A (ko)
CN (1) CN115917516A (ko)
WO (1) WO2021262509A1 (ko)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09512122A (ja) * 1994-04-22 1997-12-02 ゲーエムデー−フォルシュングスツェントルム インフォルマチオンシュテクニク ゲーエムベーハー データ記憶用キャッシュ記憶装置
US5694567A (en) * 1995-02-09 1997-12-02 Integrated Device Technology, Inc. Direct-mapped cache with cache locking allowing expanded contiguous memory storage by swapping one or more tag bits with one or more index bits
US7760804B2 (en) * 2004-06-21 2010-07-20 Intel Corporation Efficient use of a render cache
JP2007102314A (ja) * 2005-09-30 2007-04-19 Fujitsu Ltd ディスクキャッシュ制御装置
US8965819B2 (en) * 2010-08-16 2015-02-24 Oracle International Corporation System and method for effective caching using neural networks
US20120124291A1 (en) * 2010-11-16 2012-05-17 International Business Machines Corporation Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data
US9396118B2 (en) * 2011-12-28 2016-07-19 Intel Corporation Efficient dynamic randomizing address remapping for PCM caching to improve endurance and anti-attack
US8700853B2 (en) * 2012-04-13 2014-04-15 Hitachi, Ltd. Storage apparatus and data management method
WO2016020977A1 (ja) * 2014-08-05 2016-02-11 株式会社日立製作所 ストレージシステム、及びキャッシュ制御方法

Also Published As

Publication number Publication date
WO2021262509A1 (en) 2021-12-30
US11422935B2 (en) 2022-08-23
JP2023532432A (ja) 2023-07-28
EP4172788A1 (en) 2023-05-03
CN115917516A (zh) 2023-04-04
US20210406177A1 (en) 2021-12-30

Similar Documents

Publication Publication Date Title
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
US8095736B2 (en) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
US9158685B2 (en) System cache with cache hint control
KR101708142B1 (ko) 속성 필드의 멀티-코어 페이지 테이블 세트
JP2020529656A (ja) アドレス変換キャッシュ
JP7340326B2 (ja) メンテナンス動作の実行
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
US9043570B2 (en) System cache with quota-based control
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
KR101689094B1 (ko) 스티키 제거 엔진을 구비한 시스템 캐시
KR102482516B1 (ko) 메모리 어드레스 변환
CN112596913A (zh) 提高内存透明大页性能的方法、装置及用户设备、存储介质
US9639467B2 (en) Environment-aware cache flushing mechanism
US11422935B2 (en) Direct mapping mode for associative cache
US20230101038A1 (en) Deterministic mixed latency cache
US11762777B2 (en) Method and apparatus for a dram cache tag prefetcher
US11704250B2 (en) Using request class and reuse recording in one cache for insertion policies of another cache
KR20240070630A (ko) 의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip)
KR20240067951A (ko) 다른 캐시의 삽입 정책에 대해 한 캐시의 요청 클래스 및 재사용 기록 사용