KR20230075361A - 메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키기 위한 기법 - Google Patents

메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키기 위한 기법 Download PDF

Info

Publication number
KR20230075361A
KR20230075361A KR1020220154324A KR20220154324A KR20230075361A KR 20230075361 A KR20230075361 A KR 20230075361A KR 1020220154324 A KR1020220154324 A KR 1020220154324A KR 20220154324 A KR20220154324 A KR 20220154324A KR 20230075361 A KR20230075361 A KR 20230075361A
Authority
KR
South Korea
Prior art keywords
cache
data
memory
given
control circuitry
Prior art date
Application number
KR1020220154324A
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 KR20230075361A publication Critical patent/KR20230075361A/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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating 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/0877Cache access modes
    • 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/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/604Details relating to cache allocation
    • 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

Abstract

본 기법은 데이터를 캐싱하기 위한 장치 및 방법을 제공한다. 장치는, 메모리 어드레스들과 연관된 데이터를 캐싱하기 위한 캐시 저장소, 액세스 요청들을 수신하기 위한 제1 인터페이스 - 여기서, 각각의 액세스 요청은 그 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 액세스하라는 요청임 -, 및 메모리에 대한 액세스를 제어하는 데 사용되는 메모리 제어기에 커플링되는 제2 인터페이스를 갖는다. 또한, 캐시 제어 회로부는, 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책에 따라 캐시 저장소에의 데이터 할당을 제어하는 데 사용된다. 캐시 제어 회로부에 의해 고려되는 주어진 액세스 요청에는, 그 주어진 액세스 요청에 의해 표시된 메모리 어드레스에서 주어진 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 연관된 캐시 힌트 정보가 제공되고, 캐시 제어 회로부는 캐시 저장소에 주어진 데이터를 캐싱할지의 여부를 결정하기 위해 전력 소비 기반 할당 정책을 적용할 때 연관된 캐시 힌트 정보를 참조하도록 배열된다.

Description

메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키기 위한 기법{TECHNIQUE FOR OPERATING A CACHE STORAGE TO CACHE DATA ASSOCIATED WITH MEMORY ADDRESSES}
본 발명은 메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키기 위한 기법에 관한 것이다.
전형적으로, 데이터에 대한 동작들을 수행하도록 배열되는 연관된 프로세싱 요소들에 대해 그 데이터에 대한 액세스 시간들을 개선하려고 시도하기 위해, 그리고 이에 의해, 그러한 프로세싱 요소들의 성능을 개선하기 위해 캐시가 제공된다. 일부 캐시들이 특정 프로세싱 요소와 직접적으로 연관될 수 있지만, 시스템들이 다수의 프로세싱 요소들에 의해 공유될 수 있는 캐시들을 또한 포함하는 것이 보편적이다. 예를 들어, 시스템들은 종종, 특정 프로세싱 요소들과 연관된 로컬 캐시들의 하나 이상의 레벨들뿐만 아니라 다수의 프로세싱 요소들에 의한 액세스를 위해 데이터를 캐싱할 수 있는 하위 레벨 캐시들을 포함한, 캐시들의 계층구조를 채택한다.
캐시가 다수의 프로세싱 요소들과 공유될 때, 그것이 그러한 프로세싱 요소들의 성능을 개선하는 데 효과적이도록 하기 위해, 전형적으로, 그 캐시가 상대적으로 커야 한다는 요건이 있다. 그것은 또한, 종종, 캐시의 사용으로부터 초래된 임의의 성능 개선들이 그것에 액세스할 수 있는 모든 연관된 프로세싱 요소들 간에 공유됨을 보장하려고 시도하는 단계들이 취해지는 경우이다. 이는 상이한 프로세싱 요소들 간의 캐시 리소스들의 정적 할당으로 달성하기에는 어려울 수 있다. 그러나, 시스템 내에서 상이한 작업부하 시나리오들을 고려하기 위해 캐시 리소스들의 더 미세한 세립형(fine-grained) 관리를 제공하려고 노력하는 것은 캐시의 복잡도를 현저히 증가시킬 수 있고, 캐시 리소스들을 할당하는 데 사용되는 정책이 언제 변경되어야 하는지를 검출하기 위해 현재 시스템 동작 시나리오를 모니터링할 것을 소프트웨어에 요구할 수 있으며, 이때 이어서, 응용 프로그래밍 인터페이스(application programming interface, API)는 전형적으로, 그에 따라 소프트웨어가 캐시 리소스들의 할당을 재구성할 수 있게 하는 데 필요하다.
하나의 예시적인 배열에서, 장치가 제공되며, 본 장치는, 메모리 어드레스들과 연관된 데이터를 캐싱하기 위한 캐시 저장소; 액세스 요청들을 수신하기 위한 제1 인터페이스 - 각각의 액세스 요청은 그 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 액세스하라는 요청임 -; 메모리에 대한 액세스를 제어하는 데 사용되는 메모리 제어기에 커플링되는 제2 인터페이스; 및 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책에 따라 캐시 저장소에의 데이터 할당을 제어하기 위한 캐시 제어 회로부를 포함하고; 캐시 제어 회로부에 의해 고려되는 주어진 액세스 요청에는, 그 주어진 액세스 요청에 의해 표시된 메모리 어드레스에서 주어진 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 연관된 캐시 힌트 정보가 제공되고, 캐시 제어 회로부는 캐시 저장소에 주어진 데이터를 캐싱할지의 여부를 결정하기 위해 전력 소비 기반 할당 정책을 적용할 때 연관된 캐시 힌트 정보를 참조하도록 배열된다.
다른 예시적인 배열에서, 메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키는 방법이 제공되며, 본 방법은, 제1 인터페이스에서 액세스 요청들을 수신하는 단계 - 각각의 액세스 요청은 그 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 액세스하라는 요청임 -; 제2 인터페이스를 메모리에 대한 액세스를 제어하는 데 사용되는 메모리 제어기에 커플링시키는 단계; 및 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책에 따라 캐시 저장소에의 데이터 할당을 제어하는 단계를 포함하고; 주어진 액세스 요청에는, 그 주어진 액세스 요청에 의해 표시된 메모리 어드레스에서 주어진 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 연관된 캐시 힌트 정보가 제공되고, 연관된 캐시 힌트 정보는 캐시 저장소에 주어진 데이터를 캐싱할지의 여부를 결정하기 위해 전력 소비 기반 할당 정책을 적용할 때 참조된다.
또 다른 추가의 예시적인 배열에서, 장치의 제조를 위한 컴퓨터 판독가능 코드를 저장하기 위한 비일시적 컴퓨터 판독가능 매체가 제공되고, 장치는, 메모리 어드레스들과 연관된 데이터를 캐싱하기 위한 캐시 저장소; 액세스 요청들을 수신하기 위한 제1 인터페이스 - 각각의 액세스 요청은 그 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 액세스하라는 요청임 -; 메모리에 대한 액세스를 제어하는 데 사용되는 메모리 제어기에 커플링되는 제2 인터페이스; 및 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책에 따라 캐시 저장소에의 데이터 할당을 제어하기 위한 캐시 제어 회로부를 포함하고; 캐시 제어 회로부에 의해 고려되는 주어진 액세스 요청에는, 그 주어진 액세스 요청에 의해 표시된 메모리 어드레스에서 주어진 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 연관된 캐시 힌트 정보가 제공되고, 캐시 제어 회로부는 캐시 저장소에 주어진 데이터를 캐싱할지의 여부를 결정하기 위해 전력 소비 기반 할당 정책을 적용할 때 연관된 캐시 힌트 정보를 참조하도록 배열된다.
본 기법은, 단지 예시로서, 첨부 도면에 예시된 바와 같은 본 발명의 예들을 참조하여 추가로 설명될 것이다.
도 1은 하나의 예시적인 구현예에 따른 시스템의 블록도이다.
도 2는 하나의 예시적인 구현예에 따른, 최종 레벨 캐시 내에 제공된 컴포넌트들을 예시하는 블록도이다.
도 3a는 하나의 예시적인 구현예에 따른, 캐시 힌트 정보가 액세스 요청들과 연관될 수 있는 방법을 도시하는 반면, 도 3b는 하나의 예시적인 구현예에 따른, 사용량 표시 정보가 캐시의 캐시 라인들 내에 캐싱된 데이터와 연관하여 유지될 수 있는 방법을 도시한다.
도 4는 하나의 예시적인 구현예에 따른, 캐시에 의한 액세스 요청의 핸들링을 예시하는 흐름도이다.
도 5는 하나의 예시적인 구현예에 따른, 클리닝(cleaning) 동작의 수행을 예시하는 흐름도이다.
도 6은 대안적인 예시적인 구현예에 따른, 최종 레벨 캐시 내에 제공된 컴포넌트들을 예시하는 블록도이다.
도 7은 대안적인 예시적인 구현예에 따른 시스템을 예시하는 블록도이다.
본 명세서에 기술된 기법들에 따르면, 시스템 내의 적어도 하나의 캐시의 존재에 대한 기본 전제는, 그러한 캐시에 대해, 목표가, 그 캐시에 액세스하는 임의의 특정 프로세싱 요소에 대한 성능 개선을 제공하는 것 자체가 아니라, 그 대신, 메모리에 대한 액세스들과 연관된 전력 소비를 감소시키기 위해 캐시를 사용하려고 시도하는 것이라는 점에서 변경된다. 특히, 시스템 내에서의 유의한 비율의 전력 소비는 메모리에 데이터를 기록하는 것 또는 메모리로부터 데이터를 판독하는 것 중 어느 하나를 위해, 메모리에 대해 이루어진 액세스로 인해 발생할 수 있다. 본 명세서에 기술된 기법들의 목표는, 그러한 활동의 볼륨을 감소시키려고 시도하고/하거나 메모리에 대한 액세스들의 순서에 영향을 주어, 그러한 메모리 액세스들과 연관된 전체 전력 소비를 감소시키려고 시도하는 것이다.
이러한 목표를 달성하기 위해, 프로세싱 요소가 캐시를 사용하려고 시도하고 있다는 것에 초점을 맞추기보다는, 그 대신, 액세스되려고 시도하는 데이터가 사용될 방법이 강조되며, 이때 예상된 사용량을 나타내는 정보는 이어서, 데이터가 캐시에 할당되는지의 여부에 영향을 주는 데 사용된다.
보다 구체적으로, 본 명세서에 설명된 기법들에 따르면, 메모리 어드레스들과 연관된 데이터를 캐싱하기 위한 캐시 저장소, 액세스 요청들을 수신하기 위한 제1 인터페이스 - 여기서, 각각의 액세스 요청은 그 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 액세스하라는 요청임 -, 및 메모리에 대한 액세스를 제어하는 데 사용되는 메모리 제어기에 커플링되는 제2 인터페이스를 갖는 장치가 제공된다. 또한, 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책에 따라 캐시 저장소에의 데이터 할당을 제어하기 위한 캐시 제어 회로부가 제공된다. 적용될 전력 소비 기반 할당 정책을 가능하게 하기 위해, 캐시 제어 회로부에 의해 고려되는 주어진 액세스 요청에는, 그 주어진 액세스 요청에 의해 표시된 메모리 어드레스에서 주어진 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 연관된 캐시 힌트 정보가 제공될 수 있다. 이어서, 캐시 제어 회로부는, 주어진 데이터를 캐시 저장소에 캐싱할지의 여부를 결정하기 위해 전력 소비 기반 할당 정책을 적용할 때 연관된 캐시 힌트 정보를 참조하도록 배열될 수 있다.
그러한 접근법에 의하면, 연관된 프로세싱 요소들의 성능을 증가시키는 것을 목표로 하는 일반 할당 정책들과 비교할 때, 메모리에 대한 액세스들과 연관된 전력 소비를 유의하게 감소시키는 것이 가능하다. 본 명세서에 기술된 기법들을 사용할 때, 성능 개선들은 캐시의 사용을 통해 여전히 발생할 수 있지만, 캐시 제어 회로부가 액세스 요청과 연관된 데이터를 캐싱할지의 여부에 대한 결정들을 행하고 있을 때 주된 초점이 아니다.
그러한 전력 소비 기반 할당 정책의 사용으로부터 다른 이점들이 발생한다. 예를 들어, 현재 시스템 동작 시나리오의 모니터링에 기초하여 소프트웨어에 의한 캐시 리소스들의 동적 재구성을 제공할 요건들이 없고, 그 대신, 전력 소비 기반 할당 정책은 캐시에 액세스하는 프로세싱 요소들에 의해 착수되는 태스크들에 따라 변경될 필요가 없다. 또한, 절감된 동적 전력은 캐시의 크기에 따라 스케일링될 수 있고, 따라서, 동적 전력은 캐시가 아무리 작아도 항상 절감될 수 있다. 더욱이, 본 명세서에 기술된 기법은 특정 캐시 구현예에 관계없이 적용될 수 있고, 따라서, 예를 들어, 캐시가 완전 연관 캐시(fully associative cache)로서 조직되는지 아니면 세트 연관 캐시(set associative cache)로서 조직되는지와 관계없이 적용될 수 있다.
하나의 예시적인 구현예에서, 캐시 제어 회로부는 전력 소비 기반 할당 정책의 적용을 통해 주어진 데이터가 캐시 저장소에 캐싱되어서는 안 된다고 결정할 시, 제2 인터페이스를 통해 메모리 제어기로 주어진 액세스 요청을 포워딩하여, 주어진 데이터가 메모리에서 액세스되게 하도록 배열될 수 있다. 따라서, 그러한 상황들에서, 액세스는 핸들링을 위해 메모리로 지연 없이 포워딩될 수 있다.
하나의 예시적인 구현예에서, 캐시 제어 회로부는, 캐시 힌트 정보에 의해 제공된 하나 이상의 사용량 표시들에 유념하여, 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력 소비의 절감을 야기하기 위해 주어진 데이터의 캐싱이 예상될 때, 캐시 저장소에 주어진 데이터를 캐싱하려고 시도하도록 배열된다. 따라서, 캐시 힌트 정보가, 메모리에 대한 액세스와 연관된 전력 소비 절감이, 데이터가 캐싱되는 경우에 잠재적으로 달성될 수 있도록 하는 데이터에 대한 사용량 시나리오를 나타낼 때, 캐시 제어 회로부는 캐시 저장소에 그 데이터를 캐싱하려고 시도할 수 있다.
캐시 힌트 정보에 의해 제공되는 사용량 표시들은 다양한 형태들을 취할 수 있다. 하나의 예시적인 구현예에서, 캐시 힌트 정보에 의해 제공되는 하나의 사용량 표시는 "무효화될 것임(will be invalidated)" 표시 - 이는, 설정될 때, 주어진 데이터가 일시적으로 유효한 것임을 나타냄 - 이고, 그러한 경우들에 있어서, 캐시 제어 회로부는 "무효화될 것임" 표시가 설정될 때 캐시 저장소에 주어진 데이터를 캐싱하려고 시도하도록 배열될 수 있다. 그러한 데이터를 캐싱하는 것은 매우 유익할 수 있는데, 이는, 그 데이터가 그것이 무효해질 때 여전히 캐싱되는 경우, 그 데이터를 메모리에 기록할 어떠한 요건도 없을 수 있고, 따라서, 그 데이터를 메모리에 기록하는 데 어떠한 전력도 소비되지 않을 것이기 때문이다. 사용량 표시의 "설정된" 상태가 표시될 수 있는 다양한 방식들이 있으며, 따라서, 예를 들어, 하나의 구현예에서는 로직 1 값이 설정된 상태를 나타낼 수 있는 반면, 다른 구현예에서는 로직 0 값이 설정된 상태를 나타낼 수 있다는 것이 이해될 것이다.
채용될 수 있는 사용량 표시의 다른 예로서, 캐시 힌트 정보에 의해 제공되는 하나의 사용량 표시는 다중 액세스 표시 - 이는, 설정될 때, 주어진 데이터에 액세스하라는 다수의 액세스 요청들이 제1 인터페이스를 통해 수신될 것으로 예상됨을 나타냄 - 일 수 있고, 캐시 제어 회로부는 다중 액세스 표시가 설정될 때 캐시 저장소에 주어진 데이터를 캐싱하려고 시도하도록 배열된다. 특히, 데이터의 특정 항목이 다수 회 액세스될 수 있다는 기대가 있다면, 그러한 다수의 액세스들이 발생하고 있는 동안 그 데이터가 캐시 내에 유지되는 경우 유의한 전력 절감들이 달성될 수 있는데, 이는 각각의 경우에, 캐시 히트가 발생하여, 메모리에 액세스할 필요성을 회피시킬 것이기 때문이다.
하나의 예시적인 구현예에서, 예상되는 다수의 액세스 요청들은 모두, 동일한 프로세싱 요소, 예를 들어 데이터가 다수 회 액세스될 가능성이 있음을 나타내기 위해 초기 액세스 요청을 발행하고 캐시 힌트 정보를 설정한 프로세싱 요소로부터 올 수 있다. 그러나, 다른 경우들에 있어서, 다수의 액세스들은 실제로, 상이한 프로세싱 요소들로부터 발생할 수 있다. 그러한 다수의 액세스들이 예상되는 경우들에 있어서, 어느 프로세싱 요소들이 후속 액세스들을 수행할 것인지에 관계없이, 캐시에 연관된 데이터를 저장하는 것이 유익할 수 있다는 것이 이해될 것인데, 이는, 어느 프로세싱 요소들이 그러한 액세스들을 수행할 것인지에 관계없이, 메모리에 대한 액세스들과 연관된 전력 소비 절감들이 여전히 달성될 수 있기 때문이다. 다수의 액세스들이 상이한 프로세싱 요소들로부터 발생할 수 있는 후자의 시나리오에서, 초기 액세스 요청을 발행하는 프로세싱 요소가 그러한 다수의 액세스들을 예상하고 이에 따라 캐시 힌트 정보를 설정하는 것이 여전히 가능할 수 있다. 대안적으로, 시스템 내의, 예를 들어 프로세싱 요소로부터 캐시로의 경로 내의 몇몇 중간 엔티티는 다른 프로세싱 요소들에 의한 액세스들의 가능성을 검출할 수 있고, 이에 따라 캐시 힌트 정보를 설정할 수 있다.
일부 예시적인 구현예들에서 사용될 수 있는 사용량 표시의 다른 추가 예로서, 캐시 힌트 정보에 의해 제공되는 하나의 사용량 표시는 "동일한 메모리 블록에 대한 다수의 요청들" 표시 - 이는, 설정될 때, 주어진 액세스 요청이, 발행될 것으로 예상되는 메모리의 동일한 메모리 블록 내의 데이터에 액세스하라는 다수의 액세스 요청들 중 하나임을 나타냄 - 일 수 있으며, 캐시 제어 회로부는 "동일한 메모리 블록에 대한 다수의 요청들" 표시가 설정될 때 캐시 저장소에 주어진 데이터를 캐싱하려고 시도하도록 배열된다.
일부 예시적인 구현예들에서, "동일한 메모리 블록에 대한 다수의 요청들" 표시는 다수의 요청들이 주어진 기간 내에 발행될 것으로 예상되는 경우에만 설정될 수 있으며, 그 경우, 적어도 그 주어진 기간 동안의 데이터 캐싱은 유익할 수 있는데, 이는, 예를 들어 동시에 또는 연속으로 그러한 다수의 액세스 요청들 전부와 관련된 데이터를 축출함으로써, 다른 요청들이 수신되고 캐싱되고 이에 따라 메모리 블록에 대한 액세스들이 적절한 때에 최적화되는 시간을 허용하여, 메모리 블록이 액세스를 위해 구성되는 동안 메모리 제어기가 메모리 블록에 대한 그러한 액세스들 전부를 수행할 수 있도록 할 수 있기 때문이다.
그것은 종종, 메모리 디바이스의 구조는, 그것이 각각의 액세스를 위한 상이한 메모리 블록들 사이에서의 스위칭을 유지하는 데 필요하기보다는 특정 메모리 블록에 대한 다수의 액세스들을 수행하는 데 더 효율적일 수 있도록 하는 경우이다. 예를 들어, DRAM 기술에서, 액세스들이 그 안에서 수행될 수 있도록 특정 페이지(행(row)으로도 지칭됨)를 여는 것과 연관된 오버헤드가 있으며, 그 오버헤드는 특정 페이지가 열려 있는 동안 다수의 액세스들이 수행될 수 있는 경우에 상각(amortise)될 수 있다. DRAM 기술에서는, 그러한 오버헤드가 페이지와 연관될 수 있지만, 메모리 내의 다른 물리적 구조들과 연관하여 다른 메모리 기술에서 유사한 문제가 발생할 수 있으므로, 본 명세서에서 용어 메모리 블록은 액세스를 위해 그 메모리 블록을 준비하는 것과 연관된, 연관된 오버헤드를 갖는 메모리의 물리적 섹션인 것으로 간주될 수 있으며, 따라서, 이에 대해, 동일한 메모리 블록에 대한 다수의 액세스가, 그 메모리 블록이 액세스를 위해 이용가능하게 되는 동안 수행되는 경우 전력 소비의 관점에서 이점들이 있을 수 있다.
따라서, 캐시 힌트 정보가 동일한 메모리 블록에 대한 다수의 액세스들일 가능성이 있음을 식별할 수 있는 경우, 캐시 저장소 내에 연관된 데이터를 적어도 일시적으로 캐싱하는 것이 유익할 수 있다는 것이 이해될 것이다. 특히, 앞서 언급된 바와 같이, 이는, 동일한 메모리 블록을 타깃으로 하는 추가적인 액세스 요청들이 또한 수신되고 그들의 식별된 데이터가 캐싱되게 하는 시간을 허용하며, 적절한 때에, 다수의 액세스들과 연관된 캐싱된 데이터가 시퀀스로서 캐시로부터 축출될 수 있다. 이는 이어서, 메모리 블록이 액세스를 위해 구성되는 동안 메모리 블록에 대해 다수의 업데이트들이 이루어질 수 있게 함으로써, 메모리 제어기가 메모리에 대해 더 효율적인 액세스를 수행할 수 있게 한다.
모든 사용량 표시들이 데이터를 캐싱하는 데 우선적인 것으로 고려되는 상황들을 식별할 필요는 없다. 예를 들어, 캐시 힌트 정보에 의해 제공되는 하나의 사용량 표시는, 설정될 때, 주어진 데이터가 캐싱되어서는 안 됨을 나타내는 "캐싱하지 않음(do not cache)" 표시일 수 있다. 특히, 주어진 데이터를 캐싱하는 것으로 인한, 메모리에 대한 액세스와 연관된 어떠한 잠재적인 전력 소비 절감도 없을 것이라고 알려진 경우, 그러한 사용량 표시는 데이터가 캐싱되기보다는 메모리 제어기에 직접 전달되어야 한다는 것을 식별하는 데 사용될 수 있다. 이는 액세스 요청을 행하는 프로세싱 요소가 액세스와 연관된 레이턴시에 대한 임의의 가외 히트를 유발하는 것을 회피시키는데, 그 이유는, 캐시 제어 회로부가 데이터가 캐싱되어야 하는지의 여부에 대한 임의의 추가 분석을 수행할 필요 없이, 액세스가 메모리 제어기에 직접적으로 라우팅될 수 있기 때문이다. 일부 예시적인 구현예들에서, 그러한 상황에서, 데이터의 일관성(coherency)을 보장하기 위해, 캐시에서 여전히 룩업을 수행하여, 액세스 요청에 의해 특정된 메모리 어드레스에서의 데이터가 캐시에 이미 저장되어 있지 않음을 확인하는 것이 적절할 수 있다. 그러나, 이러한 체크는 전형적으로, 액세스 요청의 프로세싱에 레이턴시를 추가하는 것을 회피시키기 위해 메모리 액세스와 병렬로 수행될 수 있다.
모든 액세스 요청이 캐시 힌트 정보를 제공할 필요는 없다는 점에 주목해야 한다. 특히, 하나의 예시적인 구현예에서, 캐시 제어 회로부는 임의의 설정된 사용량 표시들의 부재 시, 주어진 데이터의 캐싱이 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력 소비의 절감을 야기할 것으로 예상되지 않음을 가정하도록 배열될 수 있다. 그러한 상황들에서, 캐시 제어 회로부는 여전히, 데이터를 캐싱하기로 결정하도록 허용될 수 있지만, 캐시 힌트 정보의 결여는 단지, 그렇게 하는 것으로 인해 발생할 알려진 전력 절감들이 없음을 나타낼 뿐이다. 그럼에도 불구하고, 다른 이유들로 데이터를 캐싱하는 것이 여전히 유익할 수 있다. 예를 들어, 임의의 다른 데이터를 축출할 필요 없이 데이터를 수용하기 위한 캐시 내의 공간이 있는 경우, 데이터를 캐싱하는 것은 일부 성능 이점들을 야기할 수 있다.
캐시 힌트 정보가 주어진 액세스 요청과 연관될 수 있는 다수의 방식들이 있다. 예를 들어, 요청자 요소는 주어진 액세스 요청이 요청자 요소에 의해 발행될 때 주어진 액세스 요청과 연관시키기 위한 캐시 힌트 정보를 생성하도록 배열될 수 있다. 다른 예로서, 요청자 요소와 제1 인터페이스 사이의 경로에 위치된 중간 요소는 액세스 요청과 연관된 다른 정보의 분석에 기초하여 캐시 힌트 정보를 생성하도록 배열될 수 있다. 특정 예로서, 그러한 중간 요소는 데이터에 대한 사용량 정보를 추론하기 위해, 시스템 메모리 관리 유닛(system memory management unit, SMMU)과 같은 다른 엔티티에 의한 사용을 위해 이미 제공된 정보를 이용할 수 있을 수 있다.
하나의 예시적인 구현예에 따르면, 캐시 제어 회로부는, 주어진 데이터가 캐시 저장소에 캐싱되어야 한다고 결정할 시, 그러나 캐시 저장소 내의 어떤 엔트리도 현재 이용가능하지 않은 경우, 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 주어진 데이터를 위한 공간을 확보하기 위해 현재 캐싱된 데이터가 캐시 저장소로부터 축출되어야 하는 캐시 내에서 희생 엔트리를 선택하려고 시도하기 위해 전력 소비 기반 축출 정책을 적용하도록 배열된다. 따라서, 전력 소비 기반 축출 정책을 적용함으로써, 캐시 제어 회로부는 현재 액세스 요청에 의해 식별되는 데이터보다 메모리에 대한 액세스에 대해 더 적은 전력 소비 절감을 부여할 가능성이 있는 캐시 내에 현재 저장된 데이터를 식별하려고 시도하도록 배열될 수 있고, 그러한 상황을 식별하는 이벤트에서, 기존 데이터는 이어서, 현재 액세스 요청과 연관된 데이터를 위한 공간을 확보하기 위해 축출될 수 있다.
캐시 저장소는 다양한 방식들로 구성될 수 있지만, 하나의 예시적인 구현예에서는, 복수의 엔트리들을 포함하고, 각각의 엔트리는 캐시 제어 회로부에 의해 그 엔트리에 데이터가 할당되는 시간에 채워지는, 그와 연관된 사용량 표시 정보를 갖는다. 캐시 제어 회로부는 이어서, 전력 소비 기반 축출 정책을 적용할 때, 축출을 위한 하나 이상의 후보 엔트리들 각각과 연관된 사용량 표시 정보에 따라, 축출을 위한 하나 이상의 후보 엔트리들로부터 희생 엔트리를 선택하려고 시도하도록 배열될 수 있다. 예를 들어, 그 사용량 표시 정보는 적어도 상대적 측면들에서, 그 데이터가 캐싱되는 결과로서 달성될 수 있는, 메모리에 대한 액세스와 연관된 잠재적 전력 소비 절감들을 평가하는 데 사용될 수 있다.
하나의 예시적인 구현예에서, 캐시 제어 회로부는 추가로, 희생 엔트리를 선택하려고 시도할 때, 주어진 데이터에 대한 캐시 힌트 정보에 의해 제공된 하나 이상의 사용량 표시들을 고려하도록 배열된다. 따라서, 그러한 접근법에 의해, 주어진 데이터를 캐싱함으로써 획득될 수 있는 인지된 전력 소비 이점들과, 축출을 위한 각각의 후보 엔트리에서, 캐싱된 데이터에 대해 획득될 수 있는 인지된 전력 소비 이점들 사이에 비교가 이루어질 수 있으며, 이때 이어서, 주어진 데이터에 대한 공간을 확보하기 위해 임의의 기존 데이터를 축출할지의 여부에 대해 결정이 취해졌다.
캐시 제어 회로부가 상기의 분석을 수행하도록 배열될 수 있는 다양한 방식들이 있다. 하나의 예시적인 구현예에서, 캐시 제어 회로부는 캐시 저장소의 엔트리들의 연관된 사용량 표시 정보에 기초하여 그 엔트리들과 우선순위 레벨들을 연관시켜, 제1 주어진 엔트리의 사용량 표시 정보와 제2 주어진 엔트리의 사용량 표시 정보의 비교에 기초하여, 제2 주어진 엔트리에 캐싱된 데이터보다는 오히려 제1 주어진 엔트리에 캐싱된 데이터를 캐시 저장소에 유지함으로써 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 더 큰 전력 절감이 예상될 때, 제1 주어진 엔트리가 제2 주어진 엔트리보다 더 높은 우선순위 레벨을 갖게 하도록 배열된다. 캐시 제어 회로부는 이어서, 전력 소비 기반 축출 정책을 적용할 때, 각각의 후보 엔트리와 연관된 우선순위 레벨들 및 주어진 데이터에 대한 캐시 힌트 정보에 의해 제공된 하나 이상의 사용량 표시들에 기초하여, 축출을 위한 하나 이상의 후보 엔트리들 중 임의의 것이 희생 엔트리로서 선택하기에 적합한지의 여부를 결정하도록 배열될 수 있다.
원하는 경우, 우선순위 레벨들을 캐시 저장소의 특정 엔트리들과 연관시킬 때 추가적인 정보가 고려될 수 있다. 예를 들어, 캐시 제어 회로부는 캐시 저장소의 엔트리들의 연관된 사용량 표시 정보 및 그러한 엔트리들에 현재 캐싱된 데이터가 이미 액세스되었는지 - 이는 그 데이터가 캐시 저장소에 캐싱되었기 때문임 - 의 여부의 표시 둘 모두에 기초하여, 그 엔트리들과 우선순위 레벨들을 연관시키도록 배열될 수 있다.
상기의 프로세스의 적용이 주어진 데이터를 위한 공간을 확보하기 위한 데이터의 축출을 정당화하기에 충분히 낮은 우선순위 레벨들을 갖는 다수의 후보 엔트리들의 식별을 초래할 때, 하나의 예시적인 구현예에서, 가장 낮은 우선순위 레벨을 갖는 후보 엔트리가 축출을 위해 선택될 것이다.
그러나, 상기의 프로세스를 적용한 결과로서, 어떠한 적합한 후보 엔트리들도 식별되지 못할 수 있다는 것이 또한 가능하다. 하나의 예시적인 구현예에서, 캐시 제어 회로부는, 주어진 데이터에 대한 캐시 힌트 정보에 의해 제공된 하나 이상의 사용량 표시들에 유념하여, 주어진 데이터를 위한 공간을 확보하기 위해 그 엔트리의 현재 캐싱된 데이터를 축출함으로써 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력 절감이 예상됨을 나타내기에 충분히 낮은 우선순위 레벨을 갖는 엔트리가 없다고 결정할 시, 제2 인터페이스를 통해 메모리 제어기로 주어진 액세스 요청을 포워딩하여 주어진 데이터가 메모리에서 액세스되게 하도록 배열된다. 따라서, 그러한 상황들에서, 액세스 요청은 데이터가 메모리에서 액세스되게 하기 위해 단지 메모리 제어기 상에 전파될 것이다.
별개의 사용량 표시 정보가 제공되는 캐시 저장소 내의 엔트리들은 구현예에 따라 달라질 수 있다. 그러나, 하나의 예시적인 구현예에서, 각각의 엔트리는 캐시 라인이고, 따라서, 사용량 표시 정보는 각각의 캐시 라인마다 제공된다.
하나의 예시적인 구현예에서, 캐시 제어 회로부는, 하나 이상의 이벤트들의 발생 시, 클리닝 정책을 적용하여 메모리에 저장된 해당 데이터의 사본보다 더 최신인 오손 데이터(dirty data)를 캐시 저장소의 하나 이상의 엔트리들로부터 축출하도록 배열될 수 있다. 클리닝 정책은 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 오손 데이터가 축출되어야 하는 엔트리들을 선택하도록 배열될 수 있다. 클리닝 정책의 수행을 트리거할 수 있는 하나 이상의 이벤트들은 다양한 형태들을 취할 수 있지만, 예로서, 그러한 이벤트는 메모리 제어기/메모리가 그러한 클리닝 활동들로부터 비롯된 액세스들을 핸들링하기 위한 여분의 용량을 갖는다는 표시일 수 있다.
클리닝 정책은 다양한 형태들을 취할 수 있지만, 하나의 예시적인 구현예에서, 캐시 제어 회로부가 하기의 규칙들 중 하나 이상에 따라 축출할 엔트리들을 선택하도록 배열되게 하는 것이다:
임의의 엔트리 - 엔트리는, 그 엔트리 내의 현재 캐싱된 데이터가 일시적으로 유효한 것임을 나타내도록 설정된 연관된 사용량 표시 정보를 가짐 - 는 캐시 저장소 내의 모든 엔트리들이, 그러한 엔트리들 내의 현재 캐싱된 데이터가 일시적으로 유효한 것임을 나타내도록 설정된 그들의 연관된 사용량 표시 정보를 갖지 않는 한, 축출을 위해 선택되지 않을 것이라는 규칙;
메모리 내의 동일한 메모리 블록을 타깃으로 하고 있는 다수의 엔트리들이 그 안에 캐싱된 오손 데이터를 가질 때, 캐시 제어 회로부는, 동일한 메모리 블록이 액세스되는 동안 메모리 제어기가 그러한 다수의 축출된 엔트리들로부터의 데이터를 업데이트할 수 있게 하기 위해 그러한 다수의 엔트리들 내의 캐싱된 데이터를 함께 축출하도록 배열된다는 규칙;
메모리 내의 동일한 메모리 블록을 타깃으로 하고 있는 다수의 엔트리들의 부재 시, 캐시 제어 회로부는 캐싱된 데이터가 메모리 내의 상이한 블록들과 연관되는, 축출을 위한 엔트리들의 시퀀스를 선택하도록 배열된다는 규칙.
그러한 접근법에 의해, 캐시 제어 회로부는 메모리 제어기가, 그러한 액세스들을 수행하는 것과 연관된 전력 소비를 감소시키는 목표를 갖고서, 그것이 메모리에 대해 수행하는 액세스들을 최적화할 수 있게 하는 방식으로 그의 클리닝 활동들을 타깃으로 하려고 시도할 수 있음이 이해될 것이다.
상기의 결정들을 행하는 것을 돕기 위해, 캐시 제어 회로부에는 메모리가 조직화되는 방법에 대한 지식, 및 이에 따라, 메모리 제어기 내에서 분할되는 메모리 할당이 제공될 수 있다. 그러한 정보는 예를 들어, 부팅 시간(boot time)에 캐시 제어 회로부에 프로그래밍될 수 있다.
전술된 기법들은 임의의 적합한 캐시 저장소와 연관하여 적용될 수 있다. 그러나, 하나의 예시적인 구현예에서, 전술된 장치는 캐시들의 계층구조적 배열을 포함하는 시스템 내에 통합되도록 배열되고, 캐시 저장소는 캐시들의 계층구조적 배열에서 최종 레벨 캐시를 형성한다.
하나의 예시적인 구현예에서, 장치는 캐시 저장소 및 추가적인 캐시 저장소 둘 모두를 제공하도록 구성된 저장 구조물을 추가로 포함할 수 있다. 또한, 전력 소비 기반 할당 정책과는 상이한 대안적인 할당 정책에 따라 추가적인 캐시 저장소로의 데이터의 할당을 제어하기 위해 추가적인 캐시 제어 회로부가 제공될 수 있다. 따라서, 그러한 구현예에서, 저장 구조물의 전체 리소스들은, 각각이 그들에 대해 적용된 상이한 할당 정책을 갖는 2개의 상이한 형태들의 캐시 저장소를 제공하도록 분할될 수 있다.
그러한 구성은 다양한 상황들에서 유용할 수 있고, 데이터를 캐싱하기 위한 매우 유연한 메커니즘을 제공할 수 있다. 예를 들어, 하나의 예시적인 구현예에서, 제1 인터페이스는 다수의 소스들로부터 액세스 요청들을 수신하도록 배열될 수 있으며, 하나의 소스는 프로세싱 요소들의 클러스터이다. 제1 인터페이스는 이어서, 프로세싱 요소들의 클러스터로부터 수신된 액세스 요청들을 추가적인 캐시 제어 회로부로 지향시키도록, 그리고 적어도 하나의 다른 소스로부터 수신된 액세스 요청들을 캐시 제어 회로부로 지향시키도록 배열될 수 있다. 그러한 배열에서, 대안적인 할당 정책은 클러스터의 프로세싱 요소들에 의해 그 데이터에 대한 액세스의 수행을 개선하는 목표를 갖고서 추가적인 캐시 저장소가 데이터를 캐싱하는 데 사용되게 할 만한 것일 수 있다. 따라서, 저장 구조물의 일부는 프로세싱 요소들의 클러스터에 의한 사용을 위해 종래의 성능 지향적 캐시를 제공하기 위해, 추가적인 캐시 저장소를 제공하도록 구성될 수 있는 반면, 저장 구조물의 나머지 리소스들은 다른 시스템 리소스들에 의해 사용될 수 있고 할당 정책이 메모리에 대한 액세스를 수행하는 것과 연관된 전력 소비를 감소/최소화시키려고 시도하는 것을 향해 편의된 전술된 캐시 저장소를 제공하도록 구성될 수 있다.
하나의 특정 예시적인 구현예에서, 저장 구조물은 캐시 저장소를 제공하는 데 사용되는 저장 구조물의 양 및 추가적인 캐시 저장소를 제공하는 데 사용되는 저장 구조물의 양이 동적으로 조정될 수 있게 하도록 구성가능할 수 있다. 그러한 접근법에 의해, 추가적인 캐시 저장소는 클러스터의 현재 필요성들에 대해 적절하게 크기조정될 수 있으며, 이때 저장 구조물의 이용가능한 나머지 리소스들은 다른 시스템 리소스들에 의한 사용을 위해 캐시 저장소를 제공하는 데 사용된다.
이제 도면들을 참조하여 특정 예들이 설명될 것이다.
도 1은 하나의 예시적인 구현예에 따른 데이터 프로세싱 시스템의 블록도이다. 이러한 예에서, 다수의 프로세싱 요소들(본 명세서에서 요청자 요소들로도 지칭됨)(10, 20, 25)은 상호접속부(30)를 통해, 메모리(50)에 대한 액세스를 제어하는 메모리 제어기(40)에 커플링된다. 요청자 요소들(10, 20, 25) 중 하나 이상은 그와 연관된 로컬 캐시의 하나 이상의 레벨들을 가질 수 있다. 도시된 특정 예에서, 요청자 요소(10)는 연관된 레벨 1 캐시(12) 및 연관된 레벨 2 캐시(14)를 갖고, 유사하게, 요청자 요소(20)는 연관된 레벨 1 캐시(22) 및 연관된 레벨 2 캐시(24)를 갖는다. 전형적으로, 레벨 1 캐시는 레벨 2 캐시보다 더 작고, 연관된 요청자 요소가, 데이터가 레벨 1 캐시에 저장되지 않지만 레벨 2 캐시에 저장되는 경우보다 더 빠르게, 그 레벨 1 캐시에 저장된 데이터에 액세스할 수 있게 한다.
요청자 요소가 그의 로컬 캐시들 중 임의의 것에 저장되지 않은 데이터에 대한 액세스 요청을 발행하는 경우, 또는 실제로, 요청자 요소가 어떠한 로컬 캐시들도 갖지 않는 경우, 액세스 요청은 요청자 요소로부터 상호접속부(30)로 전파된다. 상호접속부는, 다양한 요청자 요소들에 액세스가능하고 메모리(50)에 홀딩된 데이터의 서브세트를 캐싱할 수 있는 시스템 캐시(도 1에서 최종 레벨 캐시로도 지칭됨)(35)를 포함할 수 있다.
그러나, 요청된 데이터가 최종 레벨 캐시(35)에 존재하지 않는 경우, 액세스 요청은 요구된 데이터에 액세스하기 위해, 액세스가 메모리(50) 내에서 수행되게 하도록 메모리 제어기(40) 상에 전파될 수 있다.
메모리 제어기(40)에는 계류 중인 액세스 요청들을 일시적으로 저장하는 다수의 버퍼들(45)이 제공되어, 메모리(50)에 대한 액세스들의 효율을 개선하기 위해 요청들을 그룹화하는 약간의 유연성을 메모리 제어기에 부여할 수 있다. 예를 들어, 그것은 종종, 메모리(50)는 개별 메모리 블록들이 그들에 액세스하는 것과 연관된 오버헤드를 갖는 그러한 방식으로 구조화되어, 메모리 블록이 액세스를 위해 구성되는 동안 개별 메모리 블록에 대한 다수의 액세스들을 수행하는 것이 더 효율적일 수 있도록 하는 경우이다. 예를 들어, DRAM 기술에서, 액세스가 메모리 페이지 내에서 수행되기 전에 그 메모리 페이지를 활성화하고, 이어서, 나중에 메모리 페이지를 닫는 것이 필요하며, 따라서, 메모리 페이지가 활성화되는 동안 그에 대한 다수의 액세스들을 수행하는 것이 더 효율적일 수 있다. 메모리 제어기는 메모리에 대한 액세스들을 최적화하려고 시도할 수 있지만, 그러한 메모리 액세스들을 최적화하는 능력은 임의의 특정 시점에서의 버퍼들(45)의 콘텐츠들에 의해, 그리고 특히 버퍼들 내의 다양한 액세스 요청들이, 임의의 효율들이 실현될 수 있게 하는지의 여부에 의해 제한된다.
앞서 언급된 바와 같이, 그것은 전형적으로, 캐시 리소스들은 그러한 캐시 리소스들을 이용하여 요청자 요소들의 성능을 개선하려고 시도하기 위해 활용되는 경우이다. 그러나, 본 명세서에 기술된 기법들에 따르면, 최종 레벨 캐시(35)는 그 대신, 메모리에 대한 액세스들과 연관된 전력 소비의 감소를 가능하게 할 데이터를 캐싱하려고 시도하도록 조직화된다. 특히, 프로세싱 요소가 캐시를 사용하려고 시도하고 있는 것에 초점을 맞추기보다는, 그 대신, 액세스되려고 시도하는 데이터가 사용될 것으로 예상되는 방법이 강조되며, 이때 이어서, 그 정보는 최종 레벨 캐시(35) 내의 임의의 특정 데이터 아이템을 캐싱할지의 여부를 결정할 때 고려된다. 이제, 최종 레벨 캐시(35) 내에 제공된 컴포넌트들의 더 많은 세부사항들이 도 2를 참조하여 논의될 것이다.
최종 레벨 캐시(35)는 요청자 요소들(10, 20, 25) 중 임의의 것에 의해 발행될 수 있는 액세스 요청들을 수신하도록 배열된 제1 인터페이스(100)를 갖는다. 각각의 액세스 요청은 전형적으로, 메모리 어드레스 공간에서, 액세스되려고 시도하고 있는 데이터가 상주하는 곳을 나타내는 메모리 어드레스를 식별한다. 액세스 요청은 캐시 제어 회로부(105)로 포워딩되는데, 이러한 캐시 제어 회로부는 이어서, 액세스 요청의 대상인 데이터가 캐시 저장소 내에 캐싱되는지의 여부를 결정하기 위해 캐시 저장소(110) 내에서 룩업 동작을 수행할 수 있다. 데이터가 캐시에 존재하는 경우, 액세스는 캐시 저장소 내의 데이터를 참조하여 진행될 수 있다. 따라서, 판독 액세스 요청의 경우, 데이터는 캐시 저장소로부터 판독되고 요청자 요소로 반환될 수 있다. 기록 액세스의 경우, 데이터는 이어서, 전형적으로, 데이터의 이전 버전을 저장하는 캐시 라인에 기록되어, 구 데이터를 신 데이터로 덮어쓸 수 있다. 동시에, 기록 업데이트가 메모리에서 발생하게 하도록 기록 데이터가 또한 제2 인터페이스(115)에 의해 전파되는지의 여부는 전형적으로, 어드레스가 메모리의 라이트백(write back) 영역에 관한 것인지(이 경우, 캐시 콘텐츠들은 메인 메모리에 저장된 버전보다 더 최신의 것이 되도록 허용되고, 그러한 경우들에 있어서, 캐시 콘텐츠들은"오손(dirty)"으로 마킹되어, 적절한 때에, 데이터가 캐시로부터 축출될 때 그러한 콘텐츠들이 메인 메모리로 라이트백될 필요가 있음이 알려지도록 함) 아니면 메모리의 라이트 스루(write through) 영역에 관한 것인지(이 경우, 캐시 콘텐츠들이 업데이트될 때 메모리도 또한 업데이트됨)에 의존할 것이다.
캐시 저장소(110) 내에서의 미스(miss)의 이벤트에서, 캐시 제어 회로부(105)는 이어서, 액세스 요청을 제2 인터페이스(115) 상에 포워딩할 수 있으며, 여기서 그것은 이어서, 액세스가 메모리(50) 내에서 발생하게 하기 위해, 메모리 제어기(40) 상에서 전파될 수 있다.
캐시 제어 회로부(105)는 또한, 캐시 저장소 내로의 데이터의 할당을 제어하도록 배열되고, 본 명세서에 기술된 기법들에 따라, 제2 인터페이스를 통한 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책을 채용하도록 배열된다. 이러한 프로세스에서 캐시 제어 회로부를 돕기 위해, 최종 레벨 캐시에 의해 수신된 액세스 요청은 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 캐시 힌트 정보로 보충될 수 있다. 그러한 사용량 표시들에 기초하여, 캐시 제어 회로부는 이어서, 데이터의 캐싱이 메모리(50)에 액세스하는 것과 연관된 전력 소비의 감소를 야기할 가능성이 있는 경우들을 결정할 수 있고, 그러한 경우들에 있어서, 캐시 저장소 내에 그 데이터를 캐싱하려고 시도할 수 있다. 그러한 사용량 표시들이 캐시 제어 회로부에 의해 사용되는 방법에 대한 더 많은 세부사항들이 나머지 도면들을 참조하여 나중에 더 상세히 논의될 것이다.
그러한 사용량 표시들은 액세스 요청이 발행될 때 요청자 요소에 의해 추가될 수 있다. 그러나, 대안적으로, 요청자 요소와 최종 레벨 캐시 사이의 경로 내의 중간 요소가 그러한 사용량 표시 정보를 액세스 요청에 추가하도록 배열될 수 있다. 도 1로 되돌아가면, 그러한 중간 요소(55)는 예를 들어, 상호접속부(30) 내에 제공될 수 있고, 액세스 요청과 연관하여 이미 추가되었던 정보를 이용하여, 그 정보로부터, 데이터가 사용될 가능성이 있는 방법을 추론하고, 따라서, 이에 따라 사용량 표시 정보를 설정할 수 있다.
순수하게 특정 예로서, 시스템 메모리 관리 유닛(SMMU)은 어드레스 변환을 수행하여 가상 어드레스들을 물리적 어드레스들로 변환하도록 배열될 수 있고, 그 어드레스 변환은 액세스 요청이 어떤 프로세스와 관련되는지를 나타내는 프로세스 식별자들 등에 따라 달라질 수 있다. 그러한 프로세스 식별자들에 기초하여, 가능성이 있는 데이터의 사용량을 추론하고 이에 따라 사용량 표시들을 설정하는 것이 가능할 수 있다. 예로서, 그래픽 프로세싱 유닛(graphics processing unit, GPU) 또는 신경 프로세싱 유닛(neural processing unit, NPU)을 고려하면, 스트림 식별자들은 상이한 프로세싱 콘텍스트들을 식별하기 위한 액세스 요청들과 연관될 수 있다. 예를 들어, 상이한 스트림 식별자들은 상이한 출력 특징부 맵(output feature map, OFM)들과 연관될 수 있다. 하나의 특정 출력 특징부 맵과 연관된 데이터가 다수 회 사용될 가능성이 있고, 따라서, 그러한 사용량이 스트림 식별자로부터 추론될 수 있다는 것이 알려져 있을 수 있다. 데이터가 다수 회 사용될 가능성이 있다고 알려진 경우, 데이터가 캐싱되면, 메모리에 대한 액세스와 연관된 전력 소비가 유의하게 감소될 수 있는데, 이는 이어서, 데이터의 캐싱된 사본을 사용하여 그러한 다수의 액세스 요청들을 서비스하고, 이에 의해, 메모리에 대한 액세스들을 회피시키는 것이 가능할 수 있기 때문이다. 이것은 단지 데이터의 사용량이 액세스 요청과 연관하여 이미 제공된 다른 정보로부터 추론될 수 있는 하나의 예시적인 시나리오일 뿐이고, 사용량이 또한 액세스 요청과 연관된 정보로부터 추론될 수 있는 많은 다른 시나리오들이 있다는 것이 이해될 것이다.
도 1로 되돌아가면, 도 1은 예시의 목적들을 위한 단순화된 시스템을 표현하고, 임의의 특정 구현예는 다수의 추가적인 요소들을 포함할 수 있음이 이해될 것이다. 또한, 일부 컴포넌트들이 상호접속부(30)의 외부에서 제공되는 것으로 도시되었지만, 다른 구현예들에서, 그러한 컴포넌트들은 상호접속부의 기능의 일부인 것으로 간주될 수 있다. 예를 들어, 일부 구현예들에서, 메모리 제어기가 상호접속부(30) 내에 제공될 수 있다.
도 3a는 하나의 예시적인 구현예에 따른, 액세스 요청 및 그 액세스 요청을 위해 제공될 수 있는 연관된 캐시 힌트 정보를 개략적으로 도시한다. 액세스 요청(150)은 다수의 필드들을 포함할 것이다. 예를 들어, 요청 유형 필드(155)는 수행될 액세스 요청의 유형을 식별하기 위해, 예를 들어 액세스 요청이 기록 액세스 요청인지 아니면 판독 액세스 요청인지를 식별하기 위해 사용될 수 있다. 유사하게, 어드레스 표시 필드(160)는 액세스 요청의 대상인 데이터의 어드레스를 결정하는 데 사용된 어드레스 표시를 제공하는 데 사용될 수 있다. 액세스 요청에 관련있는 추가적인 정보를 전달하기 위해 하나 이상의 다른 필드들(165)이 또한 제공될 수 있다. 예를 들어, 기록 액세스 요청의 경우, 기록 데이터는 하나의 그러한 필드 내에 특정될 수 있다.
본 명세서에 기술된 기법들에 따르면, 액세스 요청과 연관된 캐시 힌트 정보(170)로서 하나 이상의 사용량 표시들이 제공될 수 있다. 그러한 캐시 힌트 정보는 액세스 요청의 하나 이상의 추가적인 필드들로서 제공될 수 있거나, 또는 대안적으로, 액세스 요청과 연관하여 전파되는 하나 이상의 측파대(sideband) 신호들에 의해 제공될 수 있다.
캐시 힌트 정보(170)를 형성하는 사용량 표시들은 다양한 형태들을 취할 수 있지만, 도시된 예에서, 4개의 상이한 유형들의 사용량 표시들이 제공되고, 그러한 사용량 표시들 중 하나 이상이 임의의 특정 액세스 요청에 대해 설정될 수 있다. "무효화될 것임"(WBI) 사용량 표시(172)는, 액세스 요청의 대상인 데이터가 적절한 때에 무효화될 것이고 따라서 일시적 특성의 데이터임을 식별하는 데 사용될 수 있다. 이러한 사용량 표시가 설정되는 경우, 캐시 제어 회로부(105)는 캐시 저장소(110)에 데이터를 캐싱하는 것이 유익할 것이라고 추론할 수 있는데, 이는 데이터가 메모리에 기록될 필요가 결코 없을 가능성이 있기 때문이다. 특히, 데이터가 유효한 전체 기간 동안 캐시 내에 데이터가 유지될 수 있는 경우, 일단 데이터가 후속적으로 무효해지면, 단지 그것만이, 그 데이터를 메모리에 기록할 어떠한 필요성도 없이, 캐시로부터 제거될 수 있다. 특히, 데이터가 이제 더 이상 유효하지 않음을 확인하는 특정 무효화 커맨드가 수신될 때까지 - 이 시점에서는 단지 캐시 라인만이 무효화될 수 있음 -, 유효한 캐시 라인으로서 데이터를 포함하는 캐시 라인을 유지하는 것이 가능할 수 있다.
사용량 표시의 다른 예로서, 액세스 요청의 대상인 데이터가 다수 회 액세스될 것이 예상될 때 설정될 수 있는 다중 액세스(multiple access, MA) 사용량 표시(174)가 제공될 수 있다. 예를 들어, 그것은 그러한 데이터가 1회 초과로 판독될 경우일 수 있고, 따라서, 그러한 사용량 표시는, 데이터가 바람직하게는 캐싱되어야 함을 식별하기 위해 캐시 제어 회로부에 의해 사용될 수 있는데, 이는 이어서, 데이터의 캐싱된 사본을 사용하여 그 데이터에 대한 각각의 후속 액세스 요청을 서비스하여, 이에 의해, 메인 메모리에 대한 임의의 추가 액세스들을 회피시키는 것이 가능할 수 있기 때문이다.
사용량 표시의 또 다른 예로서, 다중 요청 페이지 히트(multi-request page hit, MRP) 사용량 표시(176)는, 액세스 요청의 대상인 데이터의 메모리 어드레스를 포함하는 메모리 페이지와 동일한 메모리 페이지에 다수의 요청들이 있을 것이 예상될 때 설정될 수 있다. 다시, 사용량 표시가 MRP 필드 세트를 갖는 액세스 요청과 연관된 데이터를 캐싱하는 것이 유익할 수 있는데, 이는, 동일한 메모리 페이지를 타깃으로 하는 그러한 다른 액세스 요청들이 또한 수신될 때까지 데이터가 캐시 내에 유지될 수 있는 경우, 그러한 다수의 액세스 요청들의 데이터를 메모리 내에 저장하기 위해 후속적으로 요구되는 메모리 액세스들을 최적화하는 것이 가능할 수 있기 때문이다. 예를 들어, 그러한 접근법을 채택할 때, 그러한 데이터를 포함하는 캐시 라인들은 일련의 축출들로서 축출될 수 있어서, 이에 따라, 메모리 제어기(40)의 버퍼들(45)이, 메모리 내에서의 전력 소비를 감소시키기 위해 메모리 제어기에 의해 효율적으로 프로세싱될 수 있는 일련의 액세스 요청들로 채워지게 할 수 있었다. 특히, 앞서 언급된 바와 같이, 관련있는 메모리 페이지가 열릴 수 있고, 이어서, 그 페이지 내의 데이터에 대한 액세스들 전부가, 메모리 페이지가 닫히기 전에 수행되어, 이에 의해, 다양한 액세스 요청들을 프로세싱하기 위해 메모리 페이지가 다수 회 열리고 닫힐 필요가 있을 수 있는 대안적인 접근법에 비해 전력 소비를 유의하게 감소시킬 수 있다.
모든 사용량 표시들이, 데이터의 캐싱이 메모리에 대한 액세스들과 연관된 전력 소비를 감소시킬 것이라는 긍정적인 표시를 제공할 필요가 있는 것은 아니라는 것에 주목해야 한다. 따라서, 예로서, 데이터가 캐싱되어서는 안 되지만, 그 대신, 메모리 제어기에 직접적으로 발행되어야 함을 구체적으로 식별하도록 설정될 수 있는 "캐싱하지 않음" 사용량 표시(178)가 제공될 수 있다. 그러한 접근법에 의해, 이는 액세스 요청을 행하고 있는 프로세싱 요소가 액세스와 연관된 레이턴시에 대한 임의의 가외 히트를 유발하는 것을 회피시키는데, 그 이유는, 캐시 제어 회로부가 데이터가 캐싱되어야 하는지의 여부에 대한 임의의 추가 분석을 수행할 필요 없이, 액세스가 메모리 제어기에 직접적으로 라우팅될 수 있기 때문이다. 앞서 언급된 바와 같이, 데이터 무결성을 보장하기 위해, 특정된 메모리 어드레스에서의 데이터가 캐시에 이미 저장되어 있지 않음을 체크하기 위해 캐시 내에서 룩업을 수행하는 것이 적절할 수 있지만, 이러한 룩업은 전형적으로, 메모리 액세스와 병렬로 수행될 수 있는데, 이는 데이터가 캐시에 있지 않을 가능성이 있다는 기대가 있기 때문이다. 이어서, 필요한 경우, 일관성을 보장하기 위해 적절한 액션들이 취해질 수 있다. 예를 들어, 판독 액세스 요청의 경우, 특정 어드레스에서의 데이터가 이미 캐시에 있는 경우, 메모리 데이터 액세스가 드롭될 수 있고, 그 대신, 캐시에 존재하는 데이터가 판독 액세스 요청을 서비스하는 데 사용될 수 있다. 기록 액세스 요청의 경우, 특정 어드레스에서의 데이터가 캐시에 저장되면, 캐싱된 데이터만이 무효화될 수 있는데, 이는 업데이트된 데이터가 메모리에 기록되고 있기 때문이다.
부분 기록의 이벤트에서, 즉 완전한 캐시 라인 가치의 데이터가 기록되고 있지 않을 때, 캐시 룩업이 완료될 수 있도록 하기 위해, 메모리 기록 동작을 일시적으로 지연시키는 것이 필요할 수 있다. 히트의 이벤트에서, 캐싱된 데이터는 이어서, 현재 액세스 요청의 대상인 데이터와 병합되어, 메모리에 대한 액세스가 전체 캐시 라인 가치의 데이터의 업데이트를 수행하도록 할 수 있고, 이어서, 캐시 내의 관련있는 캐시 라인 콘텐츠들은 무효화될 수 있다. 대안적으로, 액세스 요청에 의해 특정된 현재 기록 데이터는 캐시 라인에 기록되어 업데이트된 캐시 라인을 생성할 수 있으며, 이때 그 시점에서의 캐시 라인은 유효한 채로 남아 있다.
모든 액세스 요청이 캐시 힌트 정보를 제공하기 위한 요건이 없다는 점에 또한 주목해야 한다. 캐시 힌트 정보의 부재 시, 캐시 제어 회로부는 단지 데이터를 캐싱하지 않기로 결정하고, 그 대신, 액세스 요청을 메모리 제어기 상에 전파할 수 있거나, 또는 소정 상황들 하에서, 예를 들어 캐시로부터 임의의 기존 데이터를 축출할 필요 없이 캐시 내에 이용가능한 공간이 있는 경우, 데이터를 캐싱하기로 결정할 수 있다.
데이터가 캐시 제어 회로부(105)에 의해 캐시에 할당될 때, 하나의 예시적인 구현예에 따라, 캐시 제어 회로부에 의한 후속 참조를 위해 캐싱된 데이터와 연관하여 임의의 사용량 표시 정보가 또한 캡처된다. 특히, 사용량 표시 정보는 하나의 예시적인 구현예에 따라 데이터의 각각의 캐시 라인과 연관하여 저장될 수 있다. 도 3b는 이를 예로서, 다수의 태그 RAM들(205, 210, 215) 및 대응하는 수의 데이터 RAM들(220, 225, 230)을 포함하는 세트 연관 캐시(200)를 참조하여 도시한다. 데이터 RAM 내의 각각의 캐시 라인(240)의 경우, 연관된 태그 RAM 내에 대응하는 태그 엔트리(235)가 있고, 그 태그 엔트리는 사용량 표시 정보를 캡처하도록 보충된다.
따라서, 태그 엔트리가, 캐시에 히트가 있는지의 여부를 검출할 때 사용된 어드레스의 태그 부분을 캡처하는 것, 및 데이터가 유효한지 아니면 무효한지, 그리고 데이터가 메모리에 홀딩된 버전보다 더 최신의 것인지의 여부를 식별하기 위해 유효한 표시 및 오손 표시를 저장하는 것에 더하여, 태그 엔트리는 또한, 메모리에 대한 액세스들과 연관된 전력 소비를 감소시키는 목표에 유념하여, 캐시 라인에 홀딩된 데이터가 캐시 내에 홀딩하는 데 유익한 데이터로서 플래그되었는지의 여부를 식별하기 위해 WBI, MA, 및 MRP 표시들을 포함할 수 있다. 이후에 더 상세히 논의되는 바와 같이, 하나의 예시적인 구현예에서, 히트 필드로 불리는 추가적인 필드가 또한 제공되는데, 이는 일단, 캐시 라인에의 할당 후, 연관된 캐시 라인에 할당된 데이터가 적어도 한번 액세스되었다면 설정될 수 있다.
도 4는 액세스 요청이 최종 레벨 캐시(35)의 캐시 제어 회로부(105)에 의해 수신될 때 그것이 프로세싱되는 방법을 예시하는 흐름도이다. 단계(300)에서, 액세스 요청이 수신되었는지의 여부가 결정되고, 일단 수신되었다면, 프로세스가 단계(305)로 진행되며, 여기서 임의의 사용량 표시들이 그 액세스 요청의 캐시 힌트 정보에 설정되었는지의 여부가 결정된다. 그렇지 않은 경우, 프로세스는 단계(345)로 진행되며, 여기서 하나의 예시적인 구현예에서, 액세스 요청은 캐시에의 데이터의 할당 없이 메모리 제어기로 전파된다. 원하는 경우, 캐시 제어 회로부는, 예를 들어 캐시에 현재 홀딩된 임의의 데이터를 축출할 필요 없이 캐시 내에 이용가능한 공간이 있는 경우, 그러한 데이터를 메모리 제어기에 단순히 전파하기보다는 이를 캐시 내에 캐싱하기로 결정할 수 있다.
그러나, 하나 이상의 사용량 표시들이 캐시 힌트 정보 내에 설정되는 경우, 프로세스는 단계(310)로 진행되며, 여기서 설정된 사용량 표시들이, 캐싱이 유용함을 나타내는지의 여부가 결정된다. 이러한 스테이지에서, 캐시 제어 회로부는 앞서 언급된 전력 소비 기반 할당 정책을 적용하고 있고, 앞선 논의들로부터 이해되는 바와 같이, 캐싱은 WBI, MA 또는 MRP 사용량 표시들 중 임의의 것이 설정되는 경우, 전력 보존 시점으로부터 유용할 것이라는 것이 결정될 것이다. 그러나, "캐싱하지 않음" 사용량 표시가 설정되는 경우, 이는 캐싱이 유용하지 않을 것임을 나타내고, 이러한 이벤트에서, 프로세스는 단계(310)로부터 "아니오" 경로를 추종하여, 액세스 요청이 단계(345)에서 메모리 제어기로 전파되게 한다(앞서 언급된 바와 같이, 캐시 내의 룩업은 전형적으로, 미스가 있음을 확인하기 위해 병렬로 수행될 것인데, 이는 그렇지 않은 경우, 데이터 일관성을 보장하기 위해 일부 일관성 액션이 필요할 수 있기 때문임).
설정된 사용량 표시들이, 캐싱이 유용함을 나타낸다고 가정하면, 프로세스는 단계(315)로 진행되며, 여기서 현재 액세스 요청의 대상인 데이터를 저장하기 위해 캐시에 임의의 이용가능한 캐시 라인들이 있는지의 여부가 결정된다. 캐시가 구조화되는 방법에 따라, 임의의 특정 어드레스와 연관된 데이터에 사용될 수 있는 캐시 내에 엔트리들의 서브세트만이 있을 수 있다는 것이 이해될 것이다. 예를 들어, 세트 연관 캐시에서, 어드레스의 일부는 캐시 내의 특정 세트를 식별하는 데 사용될 것이고, 데이터는 이어서, 그 세트의 이용가능한 캐시 라인 내에만 캐싱될 수 있다(전형적으로, 각각의 세트는 세트 연관 캐시의 각각의 경로에 하나의 캐시 라인을 가짐). 그러나, 캐시가 완전 연관 캐시로서 조직화되는 경우, 원칙적으로, 데이터는 임의의 이용가능한 캐시 라인에 캐싱될 수 있다.
현재 액세스 요청의 대상인 데이터를 저장하기 위한 캐시에 적어도 하나의 이용가능한 캐시 라인이 있는 경우, 프로세스는 단계(320)로 진행되며, 여기서 데이터는 연관된 사용량 표시 정보와 함께, 선택된 이용가능한 캐시 라인에 할당된다. 앞서 논의된 바와 같이, 이러한 사용량 표시 정보는 데이터를 저장하는 데 사용되는 캐시 라인의 대응하는 태그 엔트리 내에서 캡처될 수 있다.
단계(315)에서, 현재, 데이터를 저장할 수 있는 임의의 이용가능한 캐시 라인이 없다고 결정되는 경우, 프로세스는 단계(325)로 진행되며, 여기서 현재 액세스 요청의 데이터를 위한 공간을 확보하기 위해 축출될 수 있는 캐시 라인 내에 저장된 임의의 더 낮은 우선순위 데이터가 있는지의 여부에 대해 평가가 이루어진다. 특히, 이러한 시점에서, 캐시 제어 회로부는, 캐시 내에서 축출을 위한 임의의 후보 엔트리가 캐시에 현재 액세스 요청의 데이터를 저장하는 것과 연관되는 것보다 더 적은 전력 소비 이점들을 야기할 것으로 예상되는 캐싱된 데이터를 갖는지의 여부를 결정하기 위해 전력 소비 기반 축출 정책을 적용한다.
따라서, 캐시 제어 회로부는 축출을 위한 하나 이상의 후보 엔트리들, 예를 들어 세트 연관 캐시의 예에서 관련있는 세트 내의 캐시 라인들을 식별할 수 있고, 이어서, 현재 액세스 요청의 데이터를 위한 공간을 확보하기 위해 현재 콘텐츠들이 축출되어야 하는 희생 엔트리로서 그러한 후보 엔트리들 중 하나를 선택하는 것이 적절한지의 여부를 결정하기 위해, 그러한 캐시 라인들 각각에 저장된 사용량 표시 정보를, 현재 고려 중인 액세스 요청과 연관하여 제공된 사용량 표시들과 비교할 수 있다.
이러한 프로세스를 구현할 시, 우선순위 레벨들은 캐시 저장소의 엔트리들의 연관된 사용량 표시 정보에 기초하여 그 엔트리들과 연관되어, 제1 주어진 엔트리의 사용량 표시 정보와 제2 주어진 엔트리의 사용량 표시 정보의 비교에 기초하여, 제2 주어진 엔트리에 캐싱된 데이터보다는 오히려 제1 주어진 엔트리에 캐싱된 데이터를 캐시 저장소에 유지함으로써 메모리에 대한 액세스들과 연관된 더 큰 전력 절감이 예상될 때, 제1 주어진 엔트리가 제2 주어진 엔트리보다 더 높은 우선순위 레벨을 갖도록 할 수 있다.
사용량 표시 정보에 기초한, 우선순위 레벨들이 형성되는 방식은 구현예에 따라 달라질 수 있지만, 하나의 예시적인 구현예에서, 우선순위 레벨들은 하기의 표에 제시된 바와 같이 형성된다:
Figure pat00001
이러한 우선순위 스킴에 따르면, WBI 사용량 표시 세트를 갖는 캐시 라인은 새로운 액세스 요청의 데이터를 위한 공간을 확보하기 위해 결코 축출되지 않을 것인데, 이는 가장 잠재적인 전력 소비 절감이 그러한 데이터와 연관된다고 간주되기 때문이다. 상기의 표에서 보여지는 바와 같이, 가장 낮은 우선순위는 WBI, MA 또는 MRP 사용량 표시 비트 세트 중 어느 것도 갖지 않는 캐시 라인과 연관되고("X"는 무정의(do not care) 상태를 나타내고, 따라서, 이러한 예에서 히트 필드가 설정되는지의 여부는 중요하지 않음), 그러한 캐시 라인은 그 액세스 요청이 그와 연관하여 설정된 사용량 표시들 WBI, MA 또는 MRP 중 임의의 것을 갖는 경우에 현재 액세스 요청의 데이터를 위한 공간을 확보하기 위해 축출될 것이다.
축출을 위한 후보 엔트리들 중 어느 것도 우선순위 레벨 1의 것이 아닌 경우, 우선순위 레벨 2가 고려된다. 이러한 시점에서, 축출을 위한 후보 엔트리들 중 임의의 것이 다수의 액세스 사용량 표시 세트를 갖지만, 데이터가 할당되었기 때문에 그것이 적어도 한번 액세스되었음을 나타내기 위한 히트 비트 세트를 갖는 경우, 그러한 데이터는 그것이 WBI, MA 또는 MRP 비트 세트 중 임의의 것을 갖는다면 현재 액세스 요청의 데이터를 위한 경로를 확보하기 위해 축출될 것이다.
축출을 위한 후보 엔트리들 중 어느 것도 우선순위 레벨 2의 것이 아닌 경우, 우선순위 레벨 3이 고려된다. 이러한 시점에서, 축출을 위한 후보 엔트리가 다수의 액세스 비트 세트를 갖지만, 히트 비트가 소거되는 경우, 새로운 액세스 요청이 WBI 비트 세트를 갖는다면, 그 엔트리의 데이터가 축출될 것이다.
이어서, 전술된 프로세스는 필요한 대로, 우선순위 레벨들 4, 5, 6 및 7을 고려하여 계속되고, 그 프로세스의 끝 무렵에, 현재 액세스 요청의 데이터를 위한 공간을 확보하기 위해, 후보 엔트리들 중 하나의 후보 엔트리의 현재 콘텐츠들을 축출하는 것으로 결정되었을 것이거나, 또는 어떠한 축출도 발생하지 않아야 한다고 결정될 것임이 이해될 것이다.
단계(325)로 되돌아가면, 이에 따라, 단계(330)에서, 축출에 적합한 임의의 후보 캐시 라인들이 발견되었는지의 여부가 결정된다. 그렇지 않은 경우, 프로세스는 단계(345)로 진행되며, 여기서 액세스 요청은 데이터가 캐시에 할당되지 않고서 메모리 제어기 상에 전파된다. 그러나, 적어도 하나의 적합한 후보 캐시 라인이 있는 경우, 프로세스는 단계(335)로 진행되며, 여기서 하나 초과의 후보 캐시 라인이 있는 경우, 가장 낮은 우선순위 레벨 후보 캐시 라인이 선택되고, 이어서, 단계(340)에서, 선택된 캐시 라인 내의 현재 데이터가 축출되며, 이어서, 액세스 요청과 연관된 데이터는 연관된 사용량 표시 정보와 함께, 그 캐시 라인에 할당된다. 이러한 스테이지에서, 액세스 요청이 기록 액세스 요청인 경우, 캐시 라인에 저장되도록 요구되는 데이터는 액세스 요청에 의해 제공되었을 것이지만, 판독 액세스 요청의 경우, 데이터가 이어서, 선택된 캐시 라인에 할당되기 위해, 메모리로부터 그 데이터를 획득하는 것이 여전히 필요할 수 있다는 것이 이해될 것이다.
도 5는 하나의 예시적인 구현예에 따른, 캐시 클리닝 이벤트의 검출 시에 수행될 수 있는 프로세스를 예시하는 흐름도이다. 그러한 캐시 클리닝 이벤트는 다양한 이유들로 검출될 수 있지만, 도 5의 단계(400)에 의해 나타낸 바와 같이, 그러한 클리닝 이벤트는 메모리 제어기가 메모리에 액세스하기 위한 여분의 용량을 갖는다고 결정될 때, 예를 들어 메모리에 대한 액세스 요구가 정상보다 덜 번잡할 때 검출될 수 있다. 그러한 클리닝 이벤트가 검출될 때, 프로세스는 단계(405)로 진행되며, 여기서 캐시 내에 임의의 오손 캐시 라인들이 있는지의 여부가 결정된다. 그렇지 않은 경우, 이는 메모리의 콘텐츠들이 최신의 것이고, 따라서, 임의의 액션을 취할 필요가 없음을 나타낸다. 따라서, 프로세스는 단계(410)로 진행되며, 여기서 프로세스가 종료된다.
그러나, 적어도 하나의 오손 캐시 라인이 있다고 가정하면, 프로세스는 단계(415)로 진행되며, 여기서 동일한 메모리 페이지와 연관된 다수의 오손 캐시 라인들이 있는지의 여부가 결정된다. 그러한 경우, 프로세스는 단계(420)로 진행되며, 여기서 캐싱된 데이터는 그러한 다수의 캐시 라인들로부터 메모리 제어기로 축출된다. 이는 이어서, 메모리 페이지가 열려 있는 동안 메모리 제어기가 그 메모리 페이지에 대해 요구되는 업데이트들을 스케줄링할 수 있게 할 것이고, 이에 의해, 전력 소비 절감들이 달성될 수 있게 할 수 있다. 단계(415)를 평가할 때, 관련있는 메모리 페이지와 연관된 데이터 중 임의의 것이 축출되기 전, 동일한 메모리 페이지에 대한 임의의 추가 액세스 요청들이 캐시에 의해 수신될 수 있도록 하는 약간의 지연 시간을 구현하는 것이 적절할 수 있다는 점에 주목해야 한다.
동일한 메모리 페이지와 연관된 다수의 오손 캐시 라인들인 것으로 결정되지 않은 경우, 프로세스는 단계(425)로 진행되며, 여기서 캐시 제어 회로부는 캐싱된 데이터가 메모리 내의 상이한 뱅크들과 연관되는, 축출을 위한 캐시 라인들의 시퀀스를 선택하려고 시도한다. 이는, 상이한 뱅크들이 병렬로 액세스되어, 이에 따라 메모리 버스의 더 양호한 활용을 허용함으로써 성능을 개선할 수 있기 때문에 유익할 수 있다.
도 5에 나타낸 바와 같이, 단계들(415, 420, 425)을 수행할 때, 하나의 예시적인 구현예에서, 모든 캐시 라인들이 그들의 WBI 표시 세트를 갖지 않는 한, 캐시 제어 회로부는 그의 WBI 표시 세트를 갖는 캐시 라인을 축출을 위해 결코 선택하지 않을 것이라는 점에 주목해야 한다. 특히, 그러한 데이터를 가급적 오랫동안 캐시 내에 유지하는 것은 유익하다고 간주되는데, 이는, 그러한 데이터가 캐시 내에서 충분히 오랫동안 홀딩될 수 있는 경우, 그것이 무효화될 것이고, 이어서, 메모리에 데이터를 기록할 필요가 전혀 없어, 이에 의해, 유의한 전력 소비 이점들을 산출할 것이기 때문이다.
도 6은 데이터를 캐싱하는 데 사용되는 저장 구조물이 2개의 부분들로 파티셔닝될 수 있는 최종 레벨 캐시의 대안적인 구현예를 도시한다. 따라서, 도시된 바와 같이, 최종 레벨 캐시(500)는 제1 인터페이스(505) 및 제2 인터페이스(535)를 가질 수 있는데, 이들은 도 2의 예시적인 구현예와 관련하여 기술된 제1 및 제2 인터페이스들(100, 115)과 매우 동일한 방식으로 동작한다. 저장 구조물(510)은, 도 2의 앞서 언급된 캐시 제어 회로부(105)와 동일한 방식으로 동작하고, 따라서, 전력 소비 기반 할당 정책 및 전력 소비 기반 축출 정책을 채용하는 연관된 캐시 제어 회로부(525)와 함께, 전술된 캐시 저장소(본 명세서에서 시스템 레벨 캐시로도 지칭됨)를 제공하는 데 사용되는 일부분(520)을 가질 수 있다.
그러나, 덧붙여, 저장 구조물(510)의 다른 부분은 그 자신의 연관된 추가적인 캐시 제어 회로부(530)를 갖는 추가적인 캐시 저장소(515)를 제공하도록 배열될 수 있다. 이러한 추가적인 캐시 저장소는 시스템 내의 하나 이상의 특정 프로세싱/요청자 요소들을 위한 저장소를 제공하는 데 사용될 수 있고, 연관된 캐시 제어 회로부(530)는 추가적인 캐시 저장소(515)를 사용하도록 허용되는 요청자 요소 또는 요청자 요소들의 성능을 개선하는 것을 목표로 하는, 표준 할당 및 축출 정책들을 적용하도록 배열될 수 있다.
하나의 예시적인 구현예에서, 시스템은 추가적인 캐시 저장소(515)를 클러스터에 대한 레벨 3 캐시로서 사용할 수 있는 프로세싱 요소들의 클러스터를 제공할 수 있다. 이어서, 최종 레벨 캐시(500)에 액세스하도록 허용되는 다른 프로세싱 요소들의 경우, 그러한 프로세싱 요소들은 캐시 저장소(520)를 사용하도록 배열되고, 그 캐시의 사용량은 메모리에 대한 액세스들과 연관된 전력 소비를 감소시키려고 시도하기 위해 제어된다.
도 6에 개략적으로 도시된 바와 같이, 캐시 저장소(520)를 구현하는 데 사용되는 저장 구조물(510)의 부분들과 추가적인 캐시 저장소(515)를 구현하는 데 사용되는 저장 구조물의 부분들 사이의 파티션은, 일부 예시적인 구현예들에서, 동적으로 조정될 수 있다. 그러한 동적 조정이 수행될 수 있는 많은 방식들이 있다. 예를 들어, 세트 연관 저장 구조물(510)의 상이한 경로들이 캐시 저장소(520) 또는 추가적인 캐시 저장소(515) 중 어느 하나에 동적으로 할당될 수 있다.
그러한 최종 레벨 캐시를 포함하는 시스템이 도 7에 개략적으로 도시되어 있다. 이러한 예에서, 하나 이상의 프로세서 코어들을 통합하여 클러스터를 형성하는 DSU(DynamIQ Shared Unit)(550)가 제공된다. 덧붙여, 박스(555)에 의해 집합적으로 도시된, 입출력(IO) 일관성 상호접속부 및/또는 비-일관성 상호접속부에 커플링되는 하나의 또는 다른 프로세싱 요소들이 제공될 수 있다. DSU(550) 및 상호접속부 블록(555) 둘 모두는, 메모리 인터페이스(575), 즉 이러한 예에서는 DRAM 인터페이스, 및 도 6에 따라 구성된 최종 레벨 캐시를 포함하는 메모리 제어기 노드(560)에 접속된다. 이러한 최종 레벨 캐시는 시스템 레벨 캐시 파티션(570) 및 L3 캐시 파티션(565)을 포함할 것이다. 레벨 3 캐시 파티션은 DSU에 의해 사용될 것이고, DSU 내의 프로세싱 요소들의 성능을 개선하려고 시도하기 위해 표준 할당 및 축출 정책들에 따라 동작할 것이다. 대조적으로, SLC 파티션(570)은 메모리에 대한 액세스들과 연관된 전력 소비를 감소시키려고 시도하기 위해 전술된 할당 및 축출 정책들에 따라 동작할 것이고, 상호접속부 블록(555)을 통해 메모리 제어기 노드(560)에 접속되는 임의의 프로세싱 요소들에 의해 사용될 것이다.
그러한 접근법은, 다른 프로세싱 요소들에 의해 수행되는 메모리 액세스들과 연관된 전력 소비를 감소시키면서, 소정 프로세싱 요소들에 대한 성능 이점들을 제공하는 것 사이의 균형을 달성하도록, 최종 레벨 캐시가 상이한 할당 및 축출 정책들에 따라 동작하는 2개의 부분들로 파티셔닝될 수 있게 함으로써 상당한 유연성을 제공할 수 있다.
본 명세서에 기술된 개념들은 기술된 개념들을 구현하는 장치의 제조를 위한 컴퓨터 판독가능 코드로 구현될 수 있다. 예를 들어, 컴퓨터 판독가능 코드는 개념들을 구현하는 장치를 포함하는 집적 회로를 제조하기 위해 전자 설계 자동화(electronic design automation, EDA) 스테이지를 포함하는 반도체 설계 및 제조 프로세스의 하나 이상의 스테이지들에서 사용될 수 있다. 위의 컴퓨터 판독가능 코드는 추가적으로 또는 대안적으로 본 명세서에 기술된 개념들을 구현하는 장치의 정의, 모델링, 시뮬레이션, 검증 및/또는 테스트를 가능하게 할 수 있다.
예를 들어, 본 명세서에 기술된 개념들을 구현하는 장치의 제조를 위한 컴퓨터 판독가능 코드는 개념들의 하드웨어 기술 언어(hardware description language, HDL) 표현을 정의하는 코드로 구현될 수 있다. 예를 들어, 코드는 개념들을 구현하는 장치를 정의하기 위한 하나 이상의 로직 회로들의 레지스터 전송 레벨(register-transfer-level, RTL) 개요(abstraction)를 정의할 수 있다. 코드는 FIRRTL과 같은 중간 표현들뿐만 아니라 Verilog, Syste㎷erilog, Chisel 또는 VHDL(Very High-Speed Integrated Circuit Hardware Description Language)로 장치를 구현하는 하나 이상의 로직 회로들의 HDL 표현을 정의할 수 있다. 컴퓨터 판독가능 코드는 SystemC 및 Syste㎷erilog와 같은 시스템 레벨 모델링 언어들을 사용하여 개념을 구현하는 정의들을 제공하거나 개념들의 시뮬레이션, 함수 및/또는 형식 검증 및 테스트를 가능하게 하기 위해 컴퓨터에서 해석될 수 있는 개념들의 기타 행동 표현들을 제공할 수 있다.
추가적으로 또는 대안적으로, 컴퓨터 판독가능 코드는 GDSII와 같은 표현들을 포함하는, 하나 이상의 넷리스트(netlist)들 또는 집적 회로 레이아웃 정의들과 같은, 본 명세서에 기술된 개념들을 구현하는 집적 회로 컴포넌트들의 로우-레벨 설명을 정의할 수 있다. 하나 이상의 넷리스트들 또는 집적 회로 컴포넌트들의 다른 컴퓨터 판독가능 표현은, 본 발명을 구현하는 장치의 제조에 사용하기 위한 정의들을 생성하기 위해 하나 이상의 로직 합성 프로세스들을 RTL 표현에 적용함으로써 생성될 수 있다. 대안적으로 또는 추가적으로, 하나 이상의 로직 합성 프로세스들은 기술된 개념들을 구현하도록 필드 프로그래밍가능 게이트 어레이(field programmable gate array, FPGA)를 구성하기 위해 FPGA에 로딩될 비트스트림을 컴퓨터 판독가능 코드로부터 생성할 수 있다. FPGA는 집적 회로에서 제조하기 전에 개념들의 검증 및 테스트 목적들로 배치되거나 FPGA가 제품에 직접 배치될 수 있다.
컴퓨터 판독가능 코드는, 예를 들어, 본 발명을 구현하는 장치를 제조하기 위해 반도체 설계 및 제조 프로세스에서 사용될 RTL 표현, 넷리스트 표현, 또는 다른 컴퓨터 판독가능 정의 중 하나 이상의 혼합을 포함하는, 장치의 제조를 위한 코드 표현들의 혼합을 포함할 수 있다. 대안적으로 또는 추가적으로, 그 개념은 반도체 설계 및 장치를 제조하기 위한 제조 프로세스에서 사용될 컴퓨터 판독가능 정의와, 일단 제조되면 정의된 장치에 의해 실행될 명령어들을 정의하는 컴퓨터 판독가능 코드의 조합으로 정의될 수 있다.
그러한 컴퓨터 판독가능 코드는 임의의 알려진 일시적 컴퓨터 판독가능 매체(예컨대, 네트워크를 통한 코드의 유선 또는 무선 송신) 또는 반도체, 자기 디스크 또는 광학 디스크와 같은 비일시적 컴퓨터 판독가능 매체에 배치될 수 있다. 컴퓨터 판독가능 코드를 사용하여 제조된 집적 회로는 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 신경 프로세싱 유닛, 디지털 신호 프로세서, 또는 개별적으로 또는 집합적으로 개념을 구현하는 다른 컴포넌트들 중 하나 이상과 같은 컴포넌트들을 포함할 수 있다.
본 명세서에 기술된 기법들은 시스템 내의 하나 이상의 캐시들을 위한 신규한 사용을 제공한다는 것이 이해될 것이다. 특히, 그러한 캐시의 경우, 할당 및 축출 정책들은 캐시를 사용할 수 있는 하나 이상의 프로세싱 요소들에 대한 성능을 개선하는 것에 집중하는 것이 아니라, 메모리에 대한 액세스들과 연관된 전력 소비를 감소시키는 목표를 갖고서, 캐싱할 데이터를 결정하는 것을 목표로 한다. 전력 소비의 유의한 감소가 달성될 수 있게 하는 것에 더하여, 그러한 접근법은 또한, 소프트웨어에 의한 캐시 리소스들의 동적 재구성을 제공하기 위한 요건을 회피시키는데, 이는 캐시에 액세스하는 프로세싱 요소들에 의해 착수되는 태스크들에 따라 전력 소비 기반 할당 정책이 변경될 필요가 없기 때문이다. 본 기법은 임의의 형태의 캐시와 연관하여 적용될 수 있고, 전력 절감들은 그러한 캐시의 크기에 관계없이 달성될 수 있다.
본 출원에서, "...하도록 구성된"이라는 말은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 프로세싱 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은, 장치 요소가, 정의된 동작을 제공하기 위해 어떤 방식으로든 변경될 필요가 있음을 암시하지는 않는다.
본 발명의 예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에서 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않으며, 첨부된 청구항들에 의해 한정된 바와 같은 본 발명의 범위 및 사상으로부터 벗어남이 없이 실시예들에서 다양한 변경들, 추가들 및 수정들이 당업자에 의해 이루어질 수 있다는 것이 이해되어야 한다. 예를 들어, 본 발명의 범주로부터 벗어남이 없이 독립 청구항들의 특징들과 종속 청구항들의 특징들의 다양한 조합이 이루어질 수 있다.

Claims (24)

  1. 장치로서,
    메모리 어드레스들과 연관된 데이터를 캐싱하기 위한 캐시 저장소;
    액세스 요청들을 수신하기 위한 제1 인터페이스 - 각각의 액세스 요청은 그 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 액세스하라는 요청임 -;
    메모리에 대한 액세스를 제어하는 데 사용되는 메모리 제어기에 커플링되는 제2 인터페이스; 및
    상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 상기 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책에 따라 상기 캐시 저장소에의 데이터 할당을 제어하기 위한 캐시 제어 회로부를 포함하고;
    상기 캐시 제어 회로부에 의해 고려되는 주어진 액세스 요청에는, 그 주어진 액세스 요청에 의해 표시된 상기 메모리 어드레스에서 주어진 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 연관된 캐시 힌트 정보가 제공되고, 상기 캐시 제어 회로부는 상기 캐시 저장소에 상기 주어진 데이터를 캐싱할지의 여부를 결정하기 위해 상기 전력 소비 기반 할당 정책을 적용할 때 상기 연관된 캐시 힌트 정보를 참조하도록 배열되는, 장치.
  2. 제1항에 있어서, 상기 캐시 제어 회로부는 상기 전력 소비 기반 할당 정책의 적용을 통해 상기 주어진 데이터가 상기 캐시 저장소에 캐싱되어서는 안 된다고 결정할 시, 상기 제2 인터페이스를 통해 상기 메모리 제어기로 상기 주어진 액세스 요청을 포워딩하여, 상기 주어진 데이터가 상기 메모리에서 액세스되게 하도록 배열되는, 장치.
  3. 제1항 또는 제2항에 있어서, 상기 캐시 제어 회로부는, 상기 캐시 힌트 정보에 의해 제공된 상기 하나 이상의 사용량 표시들에 유념하여, 상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 전력 소비의 절감을 야기하기 위해 상기 주어진 데이터의 캐싱이 예상될 때, 상기 캐시 저장소에 상기 주어진 데이터를 캐싱하려고 시도하도록 배열되는, 장치.
  4. 제3항에 있어서, 상기 캐시 힌트 정보에 의해 제공되는 하나의 사용량 표시는 "무효화될 것임(will be invalidated)" 표시 - 상기 표시는 설정될 때, 상기 주어진 데이터가 일시적으로 유효한 것임을 나타냄 - 이고, 상기 캐시 제어 회로부는 상기 "무효화될 것임" 표시가 설정될 때 상기 캐시 저장소에 상기 주어진 데이터를 캐싱하려고 시도하도록 배열되는, 장치.
  5. 제3항 또는 제4항에 있어서, 상기 캐시 힌트 정보에 의해 제공되는 하나의 사용량 표시는 다중 액세스 표시 - 상기 다중 액세스 표시는 설정될 때, 상기 주어진 데이터에 액세스하라는 다수의 액세스 요청들이 상기 제1 인터페이스를 통해 수신될 것으로 예상됨을 나타냄 - 이고, 상기 캐시 제어 회로부는 상기 다중 액세스 표시가 설정될 때 상기 캐시 저장소에 상기 주어진 데이터를 캐싱하려고 시도하도록 배열되는, 장치.
  6. 제3항 내지 제5항 중 어느 한 항에 있어서, 상기 캐시 힌트 정보에 의해 제공되는 하나의 사용량 표시는, 설정될 때, 상기 주어진 액세스 요청이, 발행될 것으로 예상되는 상기 메모리의 동일한 메모리 블록 내의 데이터에 액세스하라는 다수의 액세스 요청들 중 하나임을 나타내는 "동일한 메모리 블록에 대한 다수의 요청들" 표시이며, 상기 캐시 제어 회로부는 상기 "동일한 메모리 블록에 대한 다수의 요청들" 표시가 설정될 때 상기 캐시 저장소에 상기 주어진 데이터를 캐싱하려고 시도하도록 배열되는, 장치.
  7. 제3항 내지 제6항 중 어느 한 항에 있어서, 상기 캐시 힌트 정보에 의해 제공되는 하나의 사용량 표시는, 설정될 때, 상기 주어진 데이터가 캐싱되어서는 안 됨을 나타내는 "캐싱하지 않음(do not cache)" 표시인, 장치.
  8. 제3항 내지 제7항 중 어느 한 항에 있어서, 상기 캐시 제어 회로부는 임의의 설정된 사용량 표시들의 부재 시, 상기 주어진 데이터의 캐싱이 상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 전력 소비의 절감을 야기할 것으로 예상되지 않음을 가정하도록 배열되는, 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 캐시 힌트 정보는,
    요청자 요소 - 상기 요청자 요소는 상기 주어진 액세스 요청이 상기 요청자 요소에 의해 발행될 때 상기 주어진 액세스 요청과 연관시키기 위한 상기 캐시 힌트 정보를 생성하도록 배열됨 -; 및
    상기 요청자 요소와 상기 제1 인터페이스 사이의 경로에 위치되고, 상기 액세스 요청과 연관된 다른 정보의 분석에 기초하여 상기 캐시 힌트 정보를 생성하도록 배열되는 중간 요소 중 하나에 의해 상기 주어진 액세스 요청과 연관되는, 장치.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 캐시 제어 회로부는, 상기 주어진 데이터가 상기 캐시 저장소에 캐싱되어야 한다고 결정할 시, 그러나 상기 캐시 저장소 내의 어떤 엔트리도 현재 이용가능하지 않은 경우, 상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 주어진 데이터를 위한 공간을 확보하기 위해 현재 캐싱된 데이터가 상기 캐시 저장소로부터 축출되어야 하는 상기 캐시 내에서 희생 엔트리를 선택하려고 시도하기 위해 전력 소비 기반 축출 정책을 적용하도록 배열되는, 장치.
  11. 제10항에 있어서,
    상기 캐시 저장소는 복수의 엔트리들을 포함하고, 각각의 엔트리는 상기 캐시 제어 회로부에 의해 그 엔트리에 데이터가 할당되는 시간에 채워지는, 그와 연관된 사용량 표시 정보를 갖고;
    상기 캐시 제어 회로부는 상기 전력 소비 기반 축출 정책을 적용할 때, 축출을 위한 하나 이상의 후보 엔트리들 각각과 연관된 상기 사용량 표시 정보에 따라, 축출을 위한 상기 하나 이상의 후보 엔트리들로부터 상기 희생 엔트리를 선택하려고 시도하도록 배열되는, 장치.
  12. 제11항에 있어서, 상기 캐시 제어 회로부는 추가로, 상기 희생 엔트리를 선택하려고 시도할 때, 상기 주어진 데이터에 대한 상기 캐시 힌트 정보에 의해 제공된 상기 하나 이상의 사용량 표시들을 고려하도록 배열되는, 장치.
  13. 제12항에 있어서,
    상기 캐시 제어 회로부는 상기 캐시 저장소의 엔트리들의 연관된 사용량 표시 정보에 기초하여 그 엔트리들과 우선순위 레벨들을 연관시켜, 제1 주어진 엔트리의 사용량 표시 정보와 제2 주어진 엔트리의 사용량 표시 정보의 비교에 기초하여, 상기 제2 주어진 엔트리에 캐싱된 데이터보다는 오히려 상기 제1 주어진 엔트리에 캐싱된 데이터를 상기 캐시 저장소에 유지함으로써 상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 더 큰 전력 절감이 예상될 때, 상기 제1 주어진 엔트리가 상기 제2 주어진 엔트리보다 더 높은 우선순위 레벨을 갖도록 배열되고;
    상기 캐시 제어 회로부는 상기 전력 소비 기반 축출 정책을 적용할 때, 각각의 후보 엔트리와 연관된 상기 우선순위 레벨들 및 상기 주어진 데이터에 대한 상기 캐시 힌트 정보에 의해 제공된 상기 하나 이상의 사용량 표시들에 기초하여, 축출을 위한 상기 하나 이상의 후보 엔트리들 중 임의의 것이 상기 희생 엔트리로서 선택하기에 적합한지의 여부를 결정하도록 배열되는, 장치.
  14. 제13항에 있어서, 상기 캐시 제어 회로부는 상기 캐시 저장소의 엔트리들의 연관된 사용량 표시 정보 및 그러한 엔트리들에 현재 캐싱된 데이터가 이미 액세스되었는지 - 이는 그 데이터가 상기 캐시 저장소에 캐싱되었기 때문임 - 의 여부의 표시 둘 모두에 기초하여, 그 엔트리들과 상기 우선순위 레벨들을 연관시키도록 배열되는, 장치.
  15. 제13항 또는 제14항에 있어서, 상기 캐시 제어 회로부는, 상기 주어진 데이터에 대한 상기 캐시 힌트 정보에 의해 제공된 상기 하나 이상의 사용량 표시들에 유념하여, 상기 주어진 데이터를 위한 공간을 확보하기 위해 그 엔트리의 현재 캐싱된 데이터를 축출함으로써 상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 전력 절감이 예상됨을 나타내기에 충분히 낮은 우선순위 레벨을 갖는 엔트리가 없다고 결정할 시, 상기 제2 인터페이스를 통해 상기 메모리 제어기로 상기 주어진 액세스 요청을 포워딩하여 상기 주어진 데이터가 상기 메모리에서 액세스되게 하도록 배열되는, 장치.
  16. 제11항 내지 제15항 중 어느 한 항에 있어서, 각각의 엔트리는 캐시 라인이고, 상기 사용량 표시 정보는 각각의 캐시 라인마다 제공되는, 장치.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서,
    상기 캐시 제어 회로부는, 하나 이상의 이벤트들의 발생 시, 클리닝(cleaning) 정책을 적용하여 상기 메모리에 저장된 그 데이터의 사본보다 더 최신인 오손 데이터(dirty data)를 상기 캐시 저장소의 하나 이상의 엔트리들로부터 축출하도록 배열되고;
    상기 클리닝 정책은 상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 오손 데이터가 축출되어야 하는 상기 엔트리들을 선택하도록 배열되는, 장치.
  18. 제17항에 있어서, 상기 클리닝 정책은, 상기 캐시 제어 회로부가,
    임의의 엔트리 - 상기 엔트리는, 그 엔트리 내의 현재 캐싱된 데이터가 일시적으로 유효한 것임을 나타내도록 설정된 연관된 사용량 표시 정보를 가짐 - 는 상기 캐시 저장소 내의 모든 엔트리들이, 그러한 엔트리들 내의 현재 캐싱된 데이터가 일시적으로 유효한 것임을 나타내도록 설정된 그들의 연관된 사용량 표시 정보를 갖지 않는 한, 축출을 위해 선택되지 않을 것이라는 규칙;
    상기 메모리 내의 동일한 메모리 블록을 타깃으로 하고 있는 다수의 엔트리들이 그 안에 캐싱된 오손 데이터를 가질 때, 상기 캐시 제어 회로부는, 상기 동일한 메모리 블록이 액세스되는 동안 상기 메모리 제어기가 그러한 다수의 축출된 엔트리들로부터의 데이터를 업데이트할 수 있게 하기 위해 그러한 다수의 엔트리들 내의 캐싱된 데이터를 함께 축출하도록 배열된다는 규칙;
    상기 메모리 내의 동일한 메모리 블록을 타깃으로 하고 있는 다수의 엔트리들의 부재 시, 상기 캐시 제어 회로부는 캐싱된 데이터가 상기 메모리 내의 상이한 블록들과 연관되는, 축출을 위한 엔트리들의 시퀀스를 선택하도록 배열된다는 규칙 중 하나 이상에 따라 축출할 엔트리들을 선택하도록 배열되게 하는 것인, 장치.
  19. 제1항 내지 제18항 중 어느 한 항에 있어서, 상기 장치는 캐시들의 계층구조적 배열을 포함하는 시스템 내에 통합되도록 배열되고, 상기 캐시 저장소는 상기 캐시들의 계층구조적 배열에서 최종 레벨 캐시를 형성하는, 장치.
  20. 제1항 내지 제19항 중 어느 한 항에 있어서,
    상기 캐시 저장소 및 추가적인 캐시 저장소 둘 모두를 제공하도록 구성된 저장 구조물; 및
    상기 전력 소비 기반 할당 정책과는 상이한 대안적인 할당 정책에 따라 상기 추가적인 캐시 저장소로의 데이터의 할당을 제어하기 위한 추가적인 캐시 제어 회로부를 추가로 포함하는, 장치.
  21. 제20항에 있어서,
    상기 제1 인터페이스는 다수의 소스들로부터 액세스 요청들을 수신하도록 배열되며, 하나의 소스는 프로세싱 요소들의 클러스터이고;
    상기 제1 인터페이스는 상기 프로세싱 요소들의 클러스터로부터 수신된 액세스 요청들을 상기 추가적인 캐시 제어 회로부로 지향시키도록, 그리고 적어도 하나의 다른 소스로부터 수신된 액세스 요청들을 상기 캐시 제어 회로부로 지향시키도록 배열되고;
    상기 대안적인 할당 정책은 상기 클러스터의 프로세싱 요소들에 의해 그 데이터에 대한 액세스의 수행을 개선하는 목표를 갖고서 상기 추가적인 캐시 저장소가 데이터를 캐싱하는 데 사용되게 할 만한 것인, 장치.
  22. 제21항에 있어서, 상기 저장 구조물은 상기 캐시 저장소를 제공하는 데 사용되는 상기 저장 구조물의 양 및 상기 추가적인 캐시 저장소를 제공하는 데 사용되는 상기 저장 구조물의 양이 동적으로 조정될 수 있게 하도록 구성가능한, 장치.
  23. 메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키는 방법으로서,
    제1 인터페이스에서 액세스 요청들을 수신하는 단계 - 각각의 액세스 요청은 그 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 액세스하라는 요청임 -;
    제2 인터페이스를 메모리에 대한 액세스를 제어하는 데 사용되는 메모리 제어기에 커플링시키는 단계; 및
    상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 상기 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책에 따라 상기 캐시 저장소에의 데이터 할당을 제어하는 단계를 포함하고;
    주어진 액세스 요청에는, 그 주어진 액세스 요청에 의해 표시된 상기 메모리 어드레스에서 주어진 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 연관된 캐시 힌트 정보가 제공되고, 상기 연관된 캐시 힌트 정보는 상기 캐시 저장소에 상기 주어진 데이터를 캐싱할지의 여부를 결정하기 위해 상기 전력 소비 기반 할당 정책을 적용할 때 참조되는, 방법.
  24. 장치의 제조를 위한 컴퓨터 판독가능 코드를 저장하기 위한 비일시적 컴퓨터 판독가능 매체로서, 상기 장치는
    메모리 어드레스들과 연관된 데이터를 캐싱하기 위한 캐시 저장소;
    액세스 요청들을 수신하기 위한 제1 인터페이스 - 각각의 액세스 요청은 그 액세스 요청에 의해 표시된 메모리 어드레스에서 데이터에 액세스하라는 요청임 -;
    메모리에 대한 액세스를 제어하는 데 사용되는 메모리 제어기에 커플링되는 제2 인터페이스; 및
    상기 제2 인터페이스를 통한 상기 메모리에 대한 액세스들과 연관된 전력을 보존하는 목표를 갖고서, 상기 캐시 저장소에 캐싱되는 데이터를 선택하려고 시도하는 전력 소비 기반 할당 정책에 따라 상기 캐시 저장소에의 데이터 할당을 제어하기 위한 캐시 제어 회로부를 포함하고;
    상기 캐시 제어 회로부에 의해 고려되는 주어진 액세스 요청에는, 그 주어진 액세스 요청에 의해 표시된 상기 메모리 어드레스에서 주어진 데이터에 대한 하나 이상의 사용량 표시들을 제공하는 연관된 캐시 힌트 정보가 제공되고, 상기 캐시 제어 회로부는 상기 캐시 저장소에 상기 주어진 데이터를 캐싱할지의 여부를 결정하기 위해 상기 전력 소비 기반 할당 정책을 적용할 때 상기 연관된 캐시 힌트 정보를 참조하도록 배열되는, 비일시적 컴퓨터 판독가능 매체.
KR1020220154324A 2021-11-22 2022-11-17 메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키기 위한 기법 KR20230075361A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/532,555 2021-11-22
US17/532,555 US11797454B2 (en) 2021-11-22 2021-11-22 Technique for operating a cache storage to cache data associated with memory addresses

Publications (1)

Publication Number Publication Date
KR20230075361A true KR20230075361A (ko) 2023-05-31

Family

ID=86339667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220154324A KR20230075361A (ko) 2021-11-22 2022-11-17 메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키기 위한 기법

Country Status (3)

Country Link
US (1) US11797454B2 (ko)
KR (1) KR20230075361A (ko)
CN (1) CN116150047A (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1304620A1 (en) * 2001-10-17 2003-04-23 Texas Instruments Incorporated Cache with selective write allocation
US8200902B2 (en) * 2010-06-10 2012-06-12 Arm Limited Cache device for coupling to a memory device and a method of operation of such a cache device
US20130036270A1 (en) * 2011-08-04 2013-02-07 The Regents Of The University Of Michigan Data processing apparatus and method for powering down a cache
US9411622B2 (en) * 2013-06-25 2016-08-09 Vmware, Inc. Performance-driven resource management in a distributed computer system
US20150032963A1 (en) * 2013-07-29 2015-01-29 Lsi Corporation Dynamic selection of cache levels
US20200264788A1 (en) * 2019-02-15 2020-08-20 Qualcomm Incorporated Optimal cache retention mechanism
US11586539B2 (en) * 2019-12-13 2023-02-21 Advanced Micro Devices, Inc. Adaptive cache management based on programming model information

Also Published As

Publication number Publication date
US11797454B2 (en) 2023-10-24
US20230161705A1 (en) 2023-05-25
CN116150047A (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
US8041897B2 (en) Cache management within a data processing apparatus
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US7669009B2 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US9251069B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US20090287885A1 (en) Administering Non-Cacheable Memory Load Instructions
EP0780770A1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
EP0780769A1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
US20150039833A1 (en) Management of caches
JPH09190382A (ja) コンピュータメモリシステムの競合キャッシュ
US20130205089A1 (en) Cache Device and Methods Thereof
US5802571A (en) Apparatus and method for enforcing data coherency in an information handling system having multiple hierarchical levels of cache memory
US20140047175A1 (en) Implementing efficient cache tag lookup in very large cache systems
US7809889B2 (en) High performance multilevel cache hierarchy
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
JP2019096309A (ja) メンテナンス動作の実行
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
US7093075B2 (en) Location-based placement algorithms for set associative cache memory
CN100514311C (zh) 用于实现组合式数据/相关性高速缓存的方法和装置
US7325101B1 (en) Techniques for reducing off-chip cache memory accesses
US11755477B2 (en) Cache allocation policy
KR20230075361A (ko) 메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키기 위한 기법
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
CN100451994C (zh) 维持高速缓存协调性的微处理器、装置与方法
US11907130B1 (en) Determining whether to perform an additional lookup of tracking circuitry
US20240004796A1 (en) Coherency control