KR20240067880A - 프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도 추적 - Google Patents

프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도 추적 Download PDF

Info

Publication number
KR20240067880A
KR20240067880A KR1020247008731A KR20247008731A KR20240067880A KR 20240067880 A KR20240067880 A KR 20240067880A KR 1020247008731 A KR1020247008731 A KR 1020247008731A KR 20247008731 A KR20247008731 A KR 20247008731A KR 20240067880 A KR20240067880 A KR 20240067880A
Authority
KR
South Korea
Prior art keywords
access
memory
memory block
processor
tracking
Prior art date
Application number
KR1020247008731A
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 KR20240067880A publication Critical patent/KR20240067880A/ko

Links

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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로세서 기반 디바이스에서 메모리 블록 액세스 빈도를 추적하는 것이 본 명세서에 개시되어 있다. 하나의 예시적인 실시예에서, 프로세서 기반 디바이스는 메모리 블록들에 대한 액세스들을 추적하기 위한 액세스 카운트 테이블을 포함하도록 구성된 처리 요소(PE)를 제공한다. 액세스 카운트 테이블은 복수의 메모리 블록들 중 한 메모리 블록에 각각 대응하는 복수의 액세스 카운트 값들을 포함하는 패킹된 테이블이다. 주어진 메모리 블록에 대해 지시되는 메모리 액세스 동작(즉, 메모리 로드 동작, 메모리 저장 동작, 원자적 증가 동작, 설정 동작 등과 같은 데이터 측면 동작, 또는 코드 페치 동작과 같은 명령어 측면 동작)을 검출할 시에, PE는 메모리 블록에 대응하는 액세스 카운트 값을 증가시킨다. 그러면 액세스 카운트 값은 (예를 들면, PE에서 실행되는 프로세스에 의해) 액세스될 수 있고 메모리 블록에 대한 액세스 빈도를 결정하는 데 사용될 수 있다.

Description

프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도 추적
본 개시의 기술은 프로세서 기반 디바이스에서의 메모리 관리에 관한 것으로, 더 상세하게는 메모리 블록 액세스의 빈도를 결정하는 것에 관한 것이다.
프로세서 기반 디바이스의 메모리 디바이스에 의해 제공되는 메모리는 메모리 블록들로 세분될 수 있다. 본 명세서에서 사용되는 바와 같이, "메모리 블록"이라는 용어는 프로세서 기반 디바이스의 메모리 디바이스에 의해 제공되는 임의의 연속 메모리 범위를 지칭한다. 일부 실시예들에서 메모리 블록은 가상 메모리 주소(또는 중간 물리 메모리 주소)로부터 연속 메모리 범위 내의 물리 주소로의 주소 변환과 연관된 연속 메모리 범위인 메모리 페이지와 정렬될 수 있다. 일부 실시예들에 따른 메모리 블록은 메모리 페이지의 엄격한 서브세트를 포함할 수 있으며, 그 반대도 마찬가지이다.
상이한 레이턴시 또는 대역폭을 갖는 다수의 이종 메모리 디바이스들을 이용하는 프로세서 기반 디바이스는 시간이 지남에 따라 어떤 메모리 블록들이 더 빈번히 또는 덜 빈번히 액세스되는지를 이해하는 것이 바람직한 상황에 직면할 수 있다. 예를 들어, 프로세서 기반 디바이스는 프로세서 기반 디바이스와 기본적으로 통신할 수 있는 DDR(Double Data Rate) DRAM(Dynamic Random Access Memory) 메모리 디바이스 형태의 저 레이턴시(lower-latency)(즉, 더 빠른 메모리 액세스 시간을 갖는) 메모리는 물론, CXL(Compute Express Link)과 같은 매체 추상화 또는 트랜잭션 인터페이스(media-abstracted or transactional interface) 뒤에 있는 메모리 디바이스 형태의 고 레이턴시(higher-latency)(즉, 더 느린 메모리 액세스 시간을 갖는) 메모리 둘 모두를 제공할 수 있다. 하나의 잠재적인 사용 사례에서, 이러한 프로세서 기반 디바이스에서 실행되는 하이퍼바이저는 게스트 가상 머신(VM) 메모리 페이지들이 얼마나 빈번히 액세스되는지에 기초하여 게스트 VM 메모리 페이지들을 저 레이턴시 메모리 또는 고 레이턴시 메모리에 동적으로 할당할지를 결정할 필요가 있을 수 있다. 유사하게, 메모리가 과다 신청되는(oversubscribed) 사용 사례에서, 소프트웨어는 SSD(solid state device)와 같은 데이터 저장소 내의 스왑 공간 내로 전송될 후보로서 자격이 있기에 충분히 "콜드(cold)한"(즉, 드물게 액세스되는) 원거리 메모리(far memory)의 서브세트를 식별할 필요가 있을 수 있다.
메모리 블록 액세스 빈도를 결정하는 하나의 종래의 접근 방식은 가상 대 물리(virtual-to-physical) 또는 중간-물리 대 물리(intermediate-physical-to-physical) 메모리 주소 매핑에 사용되는 페이지 테이블의 각각의 페이지 테이블 엔트리(page table entry, PTE)로부터 액세스 지시자 비트의 값을 검색하는 소프트웨어 솔루션을 사용한다. 그렇지만, 이 접근 방식은 액세스 빈도에 대한 대략적인 지시(coarse indication)(즉, 액세스되거나 액세스되지 않음)만을 제공하며, 이는, 액세스 지시자 비트가 큰 시간 윈도에 걸쳐 관찰되지 않는 한, 충분한 세분성을 제공하지 못할 수 있다. 또한 이 접근 방식에서는 전형적으로 멀티바이트 세분성으로 일관성을 관리하는 프로세서 하드웨어가 여러 개의 멀티바이트 PTE를 읽고 해당 PTE 내에서 몇 개의 관심 단일 비트에 액세스해야 하며, 이는 대역폭과 프로세서 사이클을 낭비하고 더 심각한 캐시 오염을 야기할 수 있다. 다른 접근 방식은 각각의 PTE에 하드웨어로 증가되는 카운트(hardware-incremented count) 필드를 추가하며, 이는 메모리 블록 액세스를 카운트할 때 소프트웨어에 대한 부담을 줄일 수 있다. 그러나, 이 접근 방식은 일반적으로 액세스 빈도를 결정하기 위해 각각의 PTE의 내용의 작은 서브세트에 액세스할 때 여전히 유사한 대역폭 소비 및 캐시 오염 문제를 초래한다. 또 다른 접근 방식은 호스트 메모리 컨트롤러에 의해 하나의 큰 LLC(last-level cache)로서 관리되는 DDR 매체의 사용과 같은, 하드웨어로 관리되는 캐싱(hardware-managed caching) 솔루션을 포함한다. 이 접근 방식은, DRAM 캐시에 대해 통상적인 바와 같이, 하드웨어로 관리되는 캐싱 솔루션이 직접 매핑되는 경우 캐시의 스래싱(thrashing)을 초래할 수 있기 때문에 이상적이지 않다. 그에 따라, 프로세서 기반 디바이스에서 메모리 블록 액세스 빈도를 추적하기 위한 더 효율적인 메커니즘이 바람직하다.
본 명세서에 개시된 예시적인 실시예들은 프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도를 추적한다. 이와 관련하여, 하나의 예시적인 실시예에서, 프로세서 기반 디바이스는 메모리 블록들에 대한 액세스들을 추적하기 위한 액세스 카운트 테이블을 포함하는 처리 요소(processing element, PE)를 제공한다. 액세스 카운트 테이블은 복수의 메모리 블록들 중 한 메모리 블록에 각각 대응하는 복수의 액세스 카운트 값들을 포함하는 패킹된 테이블이다. 주어진 메모리 블록에 대해 지시되는 메모리 액세스 동작(즉, 메모리 로드 동작, 메모리 저장 동작, 원자적 증가 동작, 설정 동작 등과 같은 데이터 측면 메모리 액세스(data-side memory access), 또는 코드 페치 동작과 같은 명령어 측면 메모리 액세스(instruction-side memory access))을 검출할 시에, PE는 메모리 블록에 대응하는 액세스 카운트 값을 증가시킨다. 그러면 액세스 카운트 값은 프로세서 기반 디바이스에서 실행되는 제1 프로세스에 의해 액세스될 수 있고 메모리 블록에 대한 액세스 빈도를 결정하는 데 사용될 수 있다.
PE에 의해 수행되는 증가 동작들의 횟수를 감소시키기 위해, 일부 실시예들은 변환 색인 버퍼(translation lookaside buffer, TLB) 미스 및/또는 캐시 미스를 초래하는 메모리 액세스 동작들에 대해서만 액세스 카운트 값을 증분시킬 수 있다. 이러한 실시예들에서, 0의 액세스 카운트 값이, "매우 핫한(extremely hot)"(즉, 매우 빈번히 액세스되는) 메모리 블록 또는 "매우 콜드한(extremely cold)"(즉, 매우 드물게 액세스되는) 메모리 블록을 나타낼 수 있다는 점에서, 대응하는 메모리 블록에 대한 액세스 빈도와 관련하여 모호한 상황이 발생할 수 있다. 이러한 이유는 매우 핫한 메모리 블록에 대한 메모리 액세스 동작에 대한 변환이 TLB를 사용하여 충족될 수 있기 때문이며, 이로 인해 매우 핫한 메모리 블록에 대해 메모리 블록에 대한 대응하는 액세스 카운트 값이 증가되지 않을 수 있다.
그에 따라, 이러한 실시예들은 복수의 액세스 추적(access-track) 지시자들 및 복수의 액세스 클리어(access-cleared) 지시자들 - 각각은 복수의 메모리 블록들 중 한 메모리 블록에 대응함 - 을 포함하는 패킹된 테이블인 액세스 추적 테이블을 제공한다. 메모리 블록에 대응하는 액세스 추적 지시자는 해당 메모리 블록에 대한 메모리 액세스 동작이 발생할 때 설정되고, 대응하는 PTE(page table entry) 액세스(PTE(page table entry)-accessed) 지시자가 클리어되는 시간으로부터 분리된 시간에 클리어될 수 있다. 액세스 추적 지시자가 프로세서 기반 디바이스를 실행하는 프로세스에 의해 클리어될 때, 대응하는 액세스 클리어 지시자도 프로세스에 의해 설정된다. 그러면 프로세스는 매우 콜드한 메모리 블록을 나타내는 데 그렇지 않았으면 자격이 있는(액세스 클리어 지시자가 설정된 경우) 0의 액세스 카운트 값의 결격자(disqualifier)로서 액세스 추적 지시자를 사용하는 것에 의해 0의 액세스 카운트 값을 명확화(disambiguate)하기 위해 액세스 추적 지시자와 액세스 클리어 지시자를 이용할 수 있다.
다른 예시적인 실시예에서, 프로세서 기반 디바이스가 개시된다. 프로세서 기반 디바이스는 복수의 메모리 블록들 중 한 메모리 블록에 각각 대응하는 복수의 액세스 카운트 값들을 포함하는 패킹된 테이블인 액세스 카운트 테이블을 포함하는 PE를 포함한다. PE는 복수의 메모리 블록들 중 한 메모리 블록에 대해 지시된 메모리 액세스 동작을 검출하도록 구성된다. PE는, 메모리 액세스 동작을 검출하는 것에 응답하여, 복수의 액세스 카운트 값들 중 한 액세스 카운트 값을 증가시키도록 추가로 구성되며, 여기서 액세스 카운트 값은 메모리 블록에 대응한다.
다른 예시적인 실시예에서, 프로세서 기반 디바이스에서 메모리 블록 액세스 빈도를 추적하는 방법이 제공된다. 이 방법은, 프로세서 기반 디바이스의 PE에 의해, 복수의 메모리 블록들 중 한 메모리 블록에 대해 지시된 메모리 액세스 동작을 검출하는 단계를 포함한다. 이 방법은, 메모리 액세스 동작을 검출하는 것에 응답하여, 액세스 카운트 테이블의 복수의 액세스 카운트 값들 중 한 액세스 카운트 값을 증가시키는 단계를 더 포함하며, 여기서 액세스 카운트 테이블은 패킹된 테이블이고 액세스 카운트 값은 메모리 블록에 대응한다.
다른 예시적인 실시예에서, 비일시적 컴퓨터 판독 가능 매체가 개시된다. 컴퓨터 판독 가능 매체는, 프로세서 기반 디바이스에 의해 실행될 때, 프로세서 기반 디바이스로 하여금 복수의 메모리 블록들 중 한 메모리 블록에 대해 지시된 메모리 액세스 동작을 검출하게 하는 컴퓨터 실행 가능 명령어들을 저장한다. 컴퓨터 실행 가능 명령어들은 추가로 프로세서 기반 디바이스로 하여금, 메모리 액세스 동작을 검출하는 것에 응답하여, 액세스 카운트 테이블의 복수의 액세스 카운트 값들 중 한 액세스 카운트 값을 증가시키게 하며, 여기서 액세스 카운트 테이블은 패킹된 테이블이고, 액세스 카운트 값은 메모리 블록에 대응한다.
본 기술 분야의 통상의 기술자는 첨부 도면의 도면들과 관련하여 바람직한 실시예들에 대한 이하의 상세한 설명을 읽어본 후에 본 개시의 범위를 이해하고 그의 추가적인 실시예들을 실현할 것이다.
본 명세서에 포함되어 그의 일부를 형성하는 첨부 도면의 도면들은 본 개시의 여러 실시예들을 예시하고, 본 설명과 함께, 본 개시의 원리들을 설명하는 역할을 한다.
도 1은 메모리 블록 액세스 빈도를 추적하도록 구성된 처리 요소(PE)를 포함하는 예시적인 프로세서 기반 디바이스의 개략적인 다이어그램이다.
도 2a 및 2b는 일부 실시예들에 따른, 도 1의 액세스 카운트 테이블 및 액세스 추적 테이블의 예시적인 구현들을 예시하는 블록 다이어그램이다.
도 3a 내지 도 3c는 일부 실시예들에 따른, 메모리 블록 액세스 빈도를 추적하기 위한 예시적인 동작들을 예시하는 플로차트이다.
도 4는 일부 실시예들에 따른, 액세스 카운트 값, 액세스 추적 지시자, 및 액세스 클리어 지시자에 기초하여 메모리 블록에 대한 액세스 빈도를 결정하기 위한 예시적인 동작들을 예시하는 플로차트이다.
도 5는 메모리 블록 액세스 빈도를 추적하도록 구성된, 도 1의 프로세서 기반 디바이스와 같은, 예시적인 프로세서 기반 디바이스의 블록 다이어그램이다.
본 명세서에 개시된 예시적인 실시예들은 프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도를 추적한다. 이와 관련하여, 하나의 예시적인 실시예에서, 프로세서 기반 디바이스는 메모리 블록들에 대한 액세스들을 추적하기 위한 액세스 카운트 테이블을 포함하는 처리 요소(PE)를 제공한다. 액세스 카운트 테이블은 복수의 메모리 블록들 중 한 메모리 블록에 각각 대응하는 복수의 액세스 카운트 값들을 포함하는 패킹된 테이블이다. 주어진 메모리 블록에 대해 지시되는 메모리 액세스 동작(즉, 메모리 로드 동작, 메모리 저장 동작, 원자적 증가 동작, 설정 동작 등과 같은 데이터 측면 메모리 액세스, 또는 코드 페치 동작과 같은 명령어 측면 메모리 액세스)을 검출할 시에, PE는 메모리 블록에 대응하는 액세스 카운트 값을 증가시킨다. 그러면 액세스 카운트 값은 프로세서 기반 디바이스에서 실행되는 제1 프로세스에 의해 액세스될 수 있고 메모리 블록에 대한 액세스 빈도를 결정하는 데 사용될 수 있다.
PE에 의해 수행되는 증가 동작들의 횟수를 감소시키기 위해, 일부 실시예들은 변환 색인 버퍼(translation lookaside buffer, TLB) 미스 및/또는 캐시 미스를 초래하는 메모리 액세스 동작들에 대해서만 액세스 카운트 값을 증분시킬 수 있다. 이러한 실시예들에서, 0의 액세스 카운트 값이, "매우 핫한"(즉, 매우 빈번히 액세스되는) 메모리 블록 또는 "매우 콜드한"(즉, 매우 드물게 액세스되는) 메모리 블록을 나타낼 수 있다는 점에서, 대응하는 메모리 블록에 대한 액세스 빈도와 관련하여 모호한 상황이 발생할 수 있다. 이러한 이유는 매우 핫한 메모리 블록에 대한 메모리 액세스 동작에 대한 변환이 TLB를 사용하여 충족될 수 있기 때문이며, 이 결과 매우 핫한 메모리 블록에 대해 메모리 블록에 대한 대응하는 액세스 카운트 값이 증가되지 않을 수 있다.
그에 따라, 이러한 실시예들은 복수의 액세스 추적 지시자들 및 복수의 액세스 클리어 지시자들 - 각각은 복수의 메모리 블록들 중 한 메모리 블록에 대응함 - 을 포함하는 패킹된 테이블인 액세스 추적 테이블을 제공한다. 메모리 블록에 대응하는 액세스 추적 지시자는 해당 메모리 블록에 대한 메모리 액세스 동작이 발생할 때 설정되고, 대응하는 PTE(page table entry) 액세스 지시자가 클리어되는 시간으로부터 분리된 시간에 클리어될 수 있다. 액세스 추적 지시자가 프로세서 기반 디바이스를 실행하는 프로세스에 의해 클리어될 때, 대응하는 액세스 클리어 지시자도 프로세스에 의해 설정된다. 그러면 프로세스는 매우 콜드한 메모리 블록을 나타내는 데 그렇지 않았으면 자격이 있는(액세스 클리어 지시자가 설정된 경우) 0의 액세스 카운트 값의 결격자로서 액세스 추적 지시자를 사용하는 것에 의해 0의 액세스 카운트 값을 명확화하기 위해 액세스 추적 지시자와 액세스 클리어 지시자를 이용할 수 있다.
이와 관련하여, 도 1은 실행 가능 명령어들을 처리하기 위한 PE(102)를 제공하는 예시적인 프로세서 기반 디바이스(100)를 예시한다. PE(102)는 중앙 처리 유닛(CPU)의 논리 실행 유닛 및 연관된 캐시들 및 기능 유닛들을 포함하는 개별 프로세서 코어를 포함할 수 있다. 도 1의 예에서 PE(102)는 컴퓨터 실행 가능 명령어들을 포함하는 명령어 스트림을 실행하도록 구성된 실행 파이프라인 회로(104)를 포함한다. 도 1에 도시되어 있지는 않지만, 실행 파이프라인 회로(104)는, 비제한적인 예로서, 실행을 위한 명령어들을 검색하기 위한 페치(fetch) 스테이지, PRF(physical register file)(도시되지 않음)로부터의 PRF 레지스터들을 할당하기 위한 이름 변경(rename) 스테이지, 페치된 명령어들을 명령어 실행을 위한 제어 신호들로 변환하기 위한 명령어 디코드(instruction decode) 스테이지, 실행할 명령어들을 발행하기 위한 디스패치(dispatch) 스테이지, 명령어 실행을 실제로 수행하기 위한 실행(execute) 스테이지, 및/또는 명령어 실행의 결과에 기초하여 PE(102)의 아키텍처 상태를 불가역적으로(irrevocably) 업데이트하기 위한 커밋(commit) 스테이지를 포함할 수 있다. 프로세서 기반 디바이스(100)의 일부 실시예들이 도 1의 예에 도시된 단일 PE(102)보다는 다수의 PE들(102)을 포함할 수 있고, 게다가 PE(102)의 일부 실시예들이 실행 파이프라인 회로(104) 내에 위에서 설명된 것들보다 더 적거나 더 많은 스테이지들을 포함할 수 있다는 것이 이해되어야 한다.
도 1의 PE(102)는 물리 메모리 주소로의 가상 메모리 주소 또는 중간 물리 주소의 주소 변환을 수행하는 것에 의해 가상 메모리 기능을 제공하는 메모리 관리 유닛(memory management unit, MMU)(106)을 더 포함한다. MMU(106)는 후속 재사용을 위해 물리 메모리 주소로의 가상 메모리 주소 또는 중간 물리 주소의 최근 변환을 캐싱하기 위한 TLB 엔트리들(110(0) 내지 110(T))을 제공하는 TLB(108)를 포함한다. PE(102)는 또한 복수의 메모리 블록들(114(0) 내지 114(M))로 세분되는 메모리를 포함하는 제1 메모리 디바이스(112)는 물론, 복수의 메모리 블록들(118(0) 내지 118(Y))로 세분되는 메모리를 포함하는 제2 메모리 디바이스(116)에 통신 가능하게 결합된다. 도 1의 예에서, 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y)) 각각은 주소 변환에 사용되는 크기에 대응하는 크기를 갖는 메모리 페이지를 포함할 수 있다. 그렇지만, 일부 실시예들에서 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y))에 의해 커버되는 전체 범위가 주소 변환에 사용되는 크기에 대응하는 크기보다 크거나 작을 수 있다는 것이 이해되어야 한다. 일부 실시예들은 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y))이 다른 메모리 블록들에 의해 커버되는 것과 불연속적인 연속 범위를 각각 커버하는 다수의 메모리 블록들을 포함할 수 있다는 것을 제공할 수 있다.
도 1에서, 제1 메모리 디바이스(112)는 제2 메모리 디바이스(116)의 레이턴시보다 낮은 레이턴시(즉, 메모리 액세스 시간)를 갖는다. 따라서, 비제한적인 예로서, 제1 메모리 디바이스(112)는 PE(102)와 기본적으로 통신할 수 있는 DDR(Double Data Rate) DRAM(Dynamic Random Access Memory) 메모리 디바이스를 포함할 수 있는 반면, 제2 메모리 디바이스(116)는 CXL(Compute Express Link) 메모리 디바이스를 포함할 수 있다. 일부 실시예들에서, 더 낮은 레이턴시를 갖는 대신에 또는 이에 추가적으로, 제1 메모리 디바이스(112)는 제2 메모리 디바이스(116)보다 높은 대역폭을 제공할 수 있다(예를 들면, 비제한적인 예로서, 제1 메모리 디바이스(112)는 고대역폭 메모리(High Bandwidth Memory, HBM) 디바이스를 포함할 수 있는 반면, 제2 메모리 디바이스(116)는 DDR 또는 CXL 메모리 디바이스를 포함할 수 있다). 도 1은 프로세서 기반 디바이스(100)의 통합 요소로서 제1 메모리 디바이스(112)와 제2 메모리 디바이스(116)를 도시하지만, 일부 실시예들에서 제1 메모리 디바이스(112)와 제2 메모리 디바이스(116) 중 하나 또는 둘 모두가 프로세서 기반 디바이스(100) 외부에 있고 외부 인터페이스(도시되지 않음)를 통해 통신 가능하게 결합된 메모리 디바이스들을 포함할 수 있다는 것이 이해되어야 한다. PE(102)는 PE(102)에 의한 더 빠른 액세스를 위해 빈번히 사용되는 명령어들 및/또는 데이터가 저장될 수 있는 메모리를 포함하는, 캐시(120)와 같은, 하나 이상의 캐시를 또한 포함한다. 캐시(120)는, 레벨 1(L1) 캐시, 레벨 2(L2) 캐시 등과 같은, 추가적인 캐시들(도시되지 않음)을 포함할 수 있는 캐시 계층구조(cache hierarchy)의 하나의 레벨을 나타낼 수 있다.
도 1의 예에서, 제1 메모리 디바이스(112)는 가상 메모리 주소(또는 중간 물리 주소)와 제1 메모리 디바이스(112) 또는 제2 메모리 디바이스(116) 내의 대응하는 물리 메모리 주소 사이의 매핑을 각각 저장하는 복수의 페이지 테이블 엔트리들(도 1에서 "PTE"로 표시됨)(124(0) 내지 124(P))을 포함하는 페이지 테이블(122)을 저장한다. PE(102)가 가상 메모리 주소 또는 중간 물리 주소를 물리 메모리 주소로 변환할 필요가 있을 때, PE(102)는 페이지 테이블(122)에 액세스하여 가상 메모리 주소 또는 중간 물리 주소와 연관된 PTE들(124(0) 내지 124(P)) 중에서 PTE를 찾고, 이어서 PTE로부터 대응하는 물리 메모리 주소를 판독한다. 최근에 액세스된 PTE들(124(0) 내지 124(P)) 중의 PTE들은 또한 변환 프로세스를 반복하는 것을 피하기 위해 후속 재사용을 위해 PE(102)에 의해 TLB(108)에 캐싱될 수 있다. PTE들(124(0) 내지 124(P))의 각각의 PTE는 PTE에 대응하는 메모리 페이지가 액세스될 때 PE(102)에 의해 설정되는 비트 지시자를 포함할 수 있는 대응하는 PTE 액세스 지시자(도 1에서 "ACC"로 표시됨)(126(0) 내지 126(P))를 포함한다. PTE들(124(0) 내지 124(P))이 명확성을 위해 도 1에 도시되지 않은 다른 지시자들 및/또는 데이터 필드들을 포함할 수 있다는 것이 이해되어야 한다. 도 1의 프로세서 기반 디바이스(100) 및 그 구성 요소들은, 요소들 중에서도, 알려진 디지털 로직 요소, 반도체 회로, 처리 코어, 및/또는 메모리 구조 중 어느 하나, 또는 이들의 조합을 포함할 수 있다. 본 명세서에 설명된 실시예들은 요소들의 임의의 특정 배열로 제한되지 않으며, 개시된 기술들은 반도체 소켓 또는 패키지 상의 다양한 구조 및 레이아웃으로 쉽게 확장될 수 있다. 프로세서 기반 디바이스(100)의 일부 실시예들이 도 1에 도시된 것들 이외의 요소들을 포함할 수 있다는 것이 이해되어야 한다. 예를 들어, PE(102)는 하나 이상의 명령어 캐시, 통합 캐시, 메모리 컨트롤러, 상호 연결 버스, 및/또는 추가적인 메모리 디바이스, 캐시, 및/또는 컨트롤러 회로를 더 포함할 수 있다.
도 1의 예에서, PE(102)는, 비제한적인 예로서, 가상화 기능을 제공하기 위한 하이퍼바이저 또는 운영 체제(OS) 예외 레벨 애플리케이션과 같은 애플리케이션을 포함할 수 있는 프로세스(128)를 실행하고 있다. 하나 초과의 PE를 포함하는 실시예들에서, 프로세스(128)가 PE들 중 어느 하나에서 실행될 수 있다는 것이 이해되어야 한다. 실행 동안, 프로세스(128)는 복수의 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y)) 중 한 메모리 블록이 제1 메모리 디바이스(112) 및 제2 메모리 디바이스(116) 중 하나에 배치되어야 하는지 여부를 결정할 필요가 있을 수 있다. 예를 들어, 프로세스(128)가 하이퍼바이저인 경우, 프로세스(128)는, 게스트 VM(virtual machine) 메모리 페이지가 얼마나 빈번히 액세스되는지에 기초하여, 게스트 VM 메모리 페이지를 저 레이턴시 및/또는 고 대역폭(higher-bandwidth) 제1 메모리 디바이스(112)에 할당할지 또는 고 레이턴시 및/또는 저 대역폭(lower-bandwidth) 제2 메모리 디바이스(116)에 할당할지를 결정할 필요가 있을 수 있다. "핫한"(즉, 빈번히 액세스되는) 메모리 블록들이 "콜드한"(즉, 드물게 액세스되거나 액세스되지 않는) 메모리 블록들과 구별될 수 있도록, 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y))이 얼마나 빈번히 액세스되는지를 이해하는 것에 의해 이러한 결정이 용이해질 수 있다. 그렇지만, 위에서 논의된 바와 같이, 메모리 블록 액세스 빈도를 결정하는 종래의 접근 방식은 충분한 세분성을 제공하지 못할 수 있고/있거나, 대역폭 및 프로세서 소비 측면에서 허용할 수 없는 비용과 더 심각한 캐시 오염을 초래할 수 있다.
이와 관련하여, PE(102)는 메모리 블록 액세스 빈도를 추적하도록 구성된다. 예시적인 실시예에서, PE(102)는 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y))의 메모리 블록에 각각 대응하는 복수의 액세스 카운트 값들(도 1에서 "ACC COUNT VAL"로 표시됨)(132(0) 내지 132(C))을 포함하는 패킹된 테이블인 액세스 카운트 테이블(130)을 제공하도록 구성된다. "패킹된 테이블"이라는 용어와 그 파생어는, 사용되지 않거나 미리 결정된 길이까지 데이터 필드를 패딩하는 것이 목적인 비트와 달리, 각각의 비트가 데이터 값을 나타내거나 데이터 값의 일부인 테이블 데이터 구조를 지칭하기 위해 본 명세서에서 사용된다. 일부 실시예들에서, 액세스 카운트 값들(132(0) 내지 132(C)) 각각은 크기가 4 바이트일 수 있으며, 따라서 액세스 카운트 값들(132(0) 내지 132(C)) 중 16개가 종래의 64 바이트 캐시 라인으로 패킹될 수 있다. 일부 실시예들에서, 액세스 카운트 테이블(130)에 의해 커버되는 메모리 범위의 시작 중간 물리 주소 또는 물리 주소를 기준으로 한, 메모리 액세스 동작의 중간 물리 주소 또는 물리 주소는 액세스 카운트 테이블(130)에 대한 인덱스로서 사용될 수 있다.
예시적인 동작에서, PE(102)는, 메모리 블록(114(0))과 같은, 메모리 블록에 대해 지시되는 메모리 액세스 동작(즉, 메모리 로드 동작, 메모리 저장 동작, 원자적 증가 동작, 설정 동작 등과 같은 데이터 측면 메모리 액세스, 또는 코드 페치 동작과 같은 명령어 측면 메모리 액세스)을 검출도록 구성된다. 메모리 액세스 동작이 데이터 측면 메모리 액세스인 도 1과 같은 실시예들에서, 메모리 액세스 동작은 PE(102)의 실행 파이프라인 회로(104) 내에서의 메모리 액세스 명령어(134)의 실행 시에 검출될 수 있다. 메모리 액세스 동작을 검출하는 것에 응답하여, PE(102)는 메모리 블록(114(0))에 대응하는 액세스 카운트 값(예를 들면, 액세스 카운트 값(132(0))을 증가시킨다.
이러한 방식으로, PE(102)는 (예를 들면, 프로세스(128)를 실행하는 것에 의해) 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y)) 중 임의의 주어진 메모리 블록에 대한 액세스 빈도를 결정할 수 있고, 액세스 빈도에 기초하여 메모리 블록을 제1 메모리 디바이스(112) 또는 제2 메모리 디바이스(116) 중 하나로 이전(transfer)할 수 있다. 예를 들어, 0 또는 다른 지정된 임계값을 초과하는 액세스 카운트 값에 대응하는 메모리 블록은 "핫한" 블록으로 간주될 수 있고 따라서 제 1 메모리 디바이스(112)로 이전될 수 있다. 반대로, 0 또는 지정된 임계값 미만인 액세스 카운트 값에 대응하는 메모리 블록은 "콜드한" 블록으로 간주될 수 있고 제2 메모리 디바이스(116)로 이전될 수 있다.
일부 실시예들에서, 어카운팅 간격(accounting interval)은, 예를 들면, 액세스 카운트 값들(132(0) 내지 132(C)) 중 하나 이상이 액세스 카운트 임계값(136)에 도달하는 것에 의해 또는 타이머(138)의 만료에 의해 생성되는 하드웨어 인터럽트 또는 예외 이벤트에 의해 트리거될 수 있다. 어카운팅 간격 동안, 일부 실시예들에 따른 프로세스(128)는 액세스 카운트 값들(132(0) 내지 132(C))을 검사하여 메모리 블록들에 대한 액세스 빈도들을 결정하고 (예를 들면, "근거리(near)"(저 레이턴시 및/또는 고 대역폭) 메모리와 "원거리(far)"(고 레이턴시 및/또는 저 대역폭) 메모리 사이의) 메모리 블록들의 임의의 필요한 이전들(예를 들면, 마이그레이션 또는 재매핑)을 수행할 수 있다. 액세스 카운트 값들(132(0) 내지 132(C))은 다음 어카운팅 사이클(accounting cycle) 동안 카운팅하기 위한 상태로 두기 위해 어카운팅 간격 동안 이러한 실시예들에서 프로세스(128)에 의해 0의 값으로 리셋될 수 있다.
메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y))에 대한 액세스 빈도를 결정하기 위해 액세스 카운트 테이블(130)에만 의존하는 PE(102)의 실시예들은 핫한 메모리 블록들과 콜드한 메모리 블록들을 정확하게 구별할 수 있는데, 그 이유는 액세스 카운트 값들(132(0) 내지 132(C))이 주어진 어카운팅 간격 동안 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y))에 대한 메모리 액세스 동작들의 실제 횟수를 나타내기 때문이다. 그렇지만, 매번의 메모리 액세스 동작에 대해 액세스 카운트 값들(132(0) 내지 132(C))을 증가시키는 것에 의해 초래되는 오버헤드를 줄이는 것이 바람직할 수 있다. 그에 따라, 일부 실시예들은 캐시(120) 및/또는 TLB(108)에서 미스를 초래하는 메모리 액세스 동작들을 검출하는 것에 응답해서만 액세스 카운트 테이블(130)의 액세스 카운트 값들(132(0) 내지 132(C))을 증가시킬 수 있다. 이러한 실시예들은 (예를 들면, 비제한적인 예로서, 프로세스(140)를 실행하는 것에 의해) 대응하는 PTE 액세스 지시자들(126(0) 내지 126(P))이 PE(102)에 의해 클리어되는 (빈도 및 시간 오프셋에서의) 시간프레임으로부터 매우 핫하고 매우 콜드한 메모리 블록들의 명확화를 분리하는 것을 가능하게 한다. 이러한 실시예들에서, PE(102)는 복수의 액세스 추적 지시자들(도 1에서 "ACC-TRK IND"로 표시됨)(144(0) 내지 144(C), 및 선택적으로, 복수의 액세스 클리어 지시자들(도 1에서 "ACC-CLR IND"로 표시됨)(146(0) 내지 146(C))을 포함하는 패킹된 테이블인 액세스 추적 테이블(142)을 제공할 수 있다. 액세스 추적 지시자들(144(0) 내지 144(C)) 및 액세스 클리어 지시자들(146(0) 내지 146(C))(존재하는 경우)) 각각은 복수의 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y)) 중 한 메모리 블록에 대응한다. 일부 실시예들에 따르면, 액세스 추적 테이블(142)에 의해 커버되는 메모리 범위의 시작 중간 물리 또는 물리 주소를 기준으로 한, 메모리 액세스 동작의 중간 물리 주소 또는 물리 주소는 액세스 추적 테이블(142)에 대한 인덱스로서 사용될 수 있다.
액세스 추적 지시자들(144(0) 내지 144(C)) 각각은 복수의 메모리 블록들(114(0) 내지 114(M)) 중 대응하는 메모리 블록에 대해 지시된 메모리 액세스 동작이 검출될 때 PE(102)에 의해 설정될 수 있다. 일부 실시예들에서, 액세스 추적 지시자들(144(0) 내지 144(C))은 매번의 어카운팅 사이클 동안 클리어되며, 이 경우에 액세스 클리어 지시자들(146(0) 내지 146(C))이 어카운팅 사이클들에 걸쳐 액세스 추적 지시자들(144(0) 내지 144(C))을 클리어하는 것을 추적할 필요가 없을 수 있다. 액세스 추적 지시자들(144(0) 내지 144(C))이 매번의 어카운팅 사이클 동안 클리어되지 않을 수 있는 실시예들에서, 도 1에서의 PE(102)는, 액세스 추적 지시자들(144(0) 내지 144(C)) 중 하나를 클리어할 시에, 또한 액세스 클리어 지시자들(146(0) 내지 146(C)) 중 대응하는 하나를 설정하는 프로세스(128)를 실행할 수 있다. 일부 실시예들에 따르면, 액세스 추적 지시자들(144(0) 내지 144(C)) 및 액세스 클리어 지시자들(146(0) 내지 146(C)) 각각은 단일 비트를 포함할 수 있다. 액세스 추적 테이블(142)은 도 1에 도시된 바와 같이 독립형 데이터 구조를 포함할 수 있거나, 도 2a와 관련하여 아래에서 더 상세히 논의되는 바와 같이 액세스 카운트 테이블(130)과 동일한 데이터 구조로 통합될 수 있거나, 도 2b와 관련하여 아래에서 더 상세히 논의되는 바와 같이 2개의 별도의 데이터 구조로서 구현될 수 있다.
도 1의 예에서, 프로세스(128)는 액세스 카운트 테이블(130)과 함께 액세스 추적 테이블(142)을 사용하여 매우 핫한 메모리 블록과 매우 콜드한 메모리 블록 간의 명확화를 수행할 수 있다. 상세하게는, 메모리 블록에 대응하는 액세스 클리어 지시자들(146(0) 내지 146(C))의 액세스 클리어 지시자가 설정된 경우(또는 액세스 추적 지시자들(144(0) 내지 144(C))이 각각의 어카운팅 사이클 동안 항상 클리어되는 경우, 이 경우에 메모리 블록은 논리적 참 값(logical true value)을 나타내는 액세스 클리어 지시자를 갖는 것으로 간주될 수 있음) 그리고 메모리 블록에 대한 액세스 카운트 값이 0인 경우, 프로세스(128)는 메모리 블록에 대응하는 액세스 추적 지시자들(144(0) 내지 144(C))의 액세스 추적 지시자가 설정되어 있는지 여부를 결정할 수 있다. 액세스 추적 지시자가 설정되지 않은 경우, 프로세스(128)는 0의 액세스 카운트 값이 0의 액세스 빈도를 나타낸다고(즉, 메모리 블록이 매우 콜드하다고) 결론을 내릴 수 있다. 액세스 추적 지시자가 설정된 경우, 프로세스(128)는 메모리 블록에 대한 액세스 빈도가 0보다 큰 것으로(즉, 메모리 블록이 매우 핫한 것으로) 결정할 수 있다. 액세스 카운트 값들(132(0) 내지 132(C)), 액세스 추적 지시자들(144(0) 내지 144(C)), 및 액세스 클리어 지시자들(146(0) 내지 146(C))에 기초하여 메모리 블록 액세스 빈도를 결정하기 위한 예시적인 논리적 흐름은 도 4와 관련하여 아래에서 더 상세히 논의된다.
도 1의 프로세서 기반 디바이스(100)의 일부 실시예들이, 예를 들면, 연속 주소 세트를 각각 포함하는 다수의 메모리 주소 범위들을 추적하는 데, 사용할 액세스 카운트 테이블(130) 및/또는 액세스 추적 테이블(142)의 다수의 인스턴스들을 제공할 수 있다는 것이 이해되어야 한다. 이러한 메모리 주소 범위들은 중첩하는 주소들을 가질 수 있거나 갖지 않을 수 있으며, 각각의 범위와 연관된 메모리 블록 세분성은 범위들에 걸쳐 상이할 수 있다. 도 1은 PE(102) 내의 요소들로서 액세스 카운트 테이블(130) 및 액세스 추적 테이블(142)을 도시하지만, 일부 실시예들에서 이들은, 제1 메모리 디바이스(112) 또는 제2 메모리 디바이스(116)와 같은, PE(102) 외부의 메모리 디바이스의 메모리 내에 위치할 수 있다는 것이 추가로 이해되어야 한다. 추가적으로, 위에서 언급된 바와 같이, 도 1은 액세스 카운트 테이블(130)과 액세스 추적 테이블(142)을 개별 요소들로서 도시한다. 그렇지만, 일부 실시예들은 액세스 카운트 테이블(130)을 제공할 수 있고 액세스 추적 테이블(142)은 단일 데이터 구조로 결합될 수 있다. 마찬가지로, 일부 실시예들은 액세스 추적 테이블(142)이 2개의 개별 데이터 구조로서 구현되는 것을 제공할 수 있다. 일부 실시예들에 따르면, PE(102)는 액세스 카운트 테이블(130) 및/또는 액세스 추적 테이블(142)이 시작하는 메모리 내의 하나 이상의 베이스 위치(base location)를 각각 가리키는 하나 이상의 메모리 레지스터(도시되지 않음)를 제공할 수 있다. 다수의 연속 주소 범위들이 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y))에 의해 커버되는 실시예들에서, 베이스 위치(들)를 각각 가리키는 연속 주소 범위당 하나의 레지스터 세트는 물론, 각각의 범위에 대한 시작 주소를 구성하고, 연속 주소 범위 크기(즉, 메모리 블록들의 개수)를 구성하며, 메모리 블록 세분성을 구성하기 위한 연속 주소 범위당 하나의 레지스터 세트가 있을 수 있다.
이와 관련하여, 도 2a 및 도 2b는 도 1의 액세스 카운트 테이블(130) 및 액세스 추적 테이블(142)의 예시적인 구현들을 예시한다. 도 2a의 예에서, 패킹된 테이블(200)은 도 1의 액세스 카운트 테이블(130) 및 액세스 추적 테이블(142) 둘 모두의 기능에 대응하는 기능을 제공한다. 패킹된 테이블(200)은 도 1의 복수의 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y)) 중 한 메모리 블록에 각각 대응하는 복수의 테이블 엔트리들(202(0) 내지 202(C))을 포함한다. 테이블 엔트리들(202(0) 내지 202(C))은 대응하는 액세스 추적 지시자들(도 2a에서 "ACC-TRK IND"로 표시됨)(204(0) 내지 204(C)), 선택적인 액세스 클리어 지시자들(도 2a에서 “ACC-CLR IND”로 표시됨)(206(0) 내지 206(C)), 및 액세스 카운트 값들(도 2a에서 "ACC COUNT VAL"로 표시됨)(208(0) 내지 208(C))을 포함한다. 액세스 추적 지시자들(204(0) 내지 204(C))은 기능 면에서 도 1의 액세스 추적 지시자들(144(0) 내지 144(C))에 대응하는 반면, 액세스 클리어 지시자들(206(0) 내지 206(C))은 기능 면에서 도 1의 액세스 클리어 지시자들(146(0) 내지 146(C))에 대응하고 액세스 카운트 값들(208(0) 내지 208(C))은 기능 면에서 도 1의 액세스 카운트 값들(132(0) 내지 132(C))에 대응한다. 도 2a에 따른 실시예들에서, "액세스 카운트 테이블"이라는 용어는 패킹된 테이블(200)의 액세스 카운트 값들(208(0) 내지 208(C))을 지칭하는 반면, "액세스 추적 테이블"이라는 용어는 패킹된 테이블(200)의 액세스 추적 지시자들(204(0) 내지 204(C)) 및 액세스 클리어 지시자들(206(0) 내지 206(C))을 지칭한다. 도 2a가 액세스 카운트 값들(208(0) 내지 208(C))을 갖는 단일 데이터 구조에 있는 액세스 추적 지시자들(204(0) 내지 204(C)) 및 액세스 클리어 지시자들(206(0) 내지 206(C)) 양쪽 모두를 보여주지만, 일부 실시예들은 액세스 추적 지시자들(204(0) 내지 204(C)) 및 액세스 클리어 지시자들(206(0) 내지 206(C)) 중 하나만이 액세스 카운트 값들(208(0) 내지 208(C))을 갖는 단일 데이터 구조에 있는 반면, 다른 하나는 별도의 데이터 구조(도시되지 않음)에서 제공되는 것을 제공할 수 있다. 액세스 추적 지시자들(204(0) 내지 204(C))이 매번의 어카운팅 사이클 동안 클리어되는 실시예들에서, 액세스 클리어 지시자들(206(0) 내지 206(C))이 생략될 수 있다는 것이 추가로 이해되어야 한다.
이제 도 2b를 참조하면, 일부 실시예들은 액세스 추적 테이블(142)이 최대 2개의 개별 데이터 구조로서 구현되는 것을 제공할 수 있다. 그에 따라, 도 2b는 2개의 패킹된 테이블(210 및 212)을 예시한다. 패킹된 테이블(210)은 도 1의 복수의 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y)) 중 한 메모리 블록에 각각 대응하는 복수의 테이블 엔트리들(214(0) 내지 214(C))을 포함한다. 테이블 엔트리들(214(0) 내지 214(C))은 기능 면에서 도 1의 액세스 추적 지시자들(144(0) 내지 144(C))에 대응하는, 대응하는 액세스 추적 지시자들(도 2b에서 "ACC-TRK IND"로 표시됨)(216(0) 내지 216(C))을 포함한다. 유사하게, 선택적인 패킹된 테이블(212)은 도 1의 복수의 메모리 블록들(114(0) 내지 114(M), 118(0) 내지 118(Y)) 중 한 메모리 블록에 각각 대응하는 복수의 테이블 엔트리들(218(0) 내지 218(C))을 포함한다. 테이블 엔트리들(218(0) 내지 218(C))은 기능 면에서 도 1의 액세스 클리어 지시자들(146(0) 내지 146(C))에 대응하는, 대응하는 액세스 클리어 지시자들(도 2b에서 "ACC-CLR IND"로 표시됨)(220(0) 내지 220(C))을 포함한다. 도 2b에 따른 실시예들에서, "액세스 추적 테이블"이라는 용어는 패킹된 테이블(210)의 액세스 추적 지시자들(216(0) 내지 216(C))은 물론, 패킹된 테이블(212)의 액세스 클리어 지시자들(220(0) 내지 220(C))을 총칭한다. 액세스 추적 지시자들(214(0) 내지 214(C))이 매번의 어카운팅 사이클 동안 클리어되는 실시예들에서, 패킹된 테이블(212)이 생략될 수 있다는 것이 추가로 이해되어야 한다.
도 3a 내지 도 3c는 일부 실시예들에 따른 도 1의 PE(102)에 의해 메모리 블록 액세스 빈도를 추적하기 위한 예시적인 동작들을 예시하는 플로차트(300)를 제공한다. 명확성을 위해, 도 3a 내지 도 3c를 설명할 때 도 1의 요소들이 참조된다. 도 3a 내지 도 3c에 예시된 일부 동작들이 일부 실시예들에서 도 3a 내지 도 3c에 예시된 것과 다른 순서로 발생할 수 있고/있거나, 일부 실시예들에서 생략될 수 있다는 것이 이해되어야 한다. 도 3a에서, 일부 실시예들에 따른 동작들은 PE(102)가 메모리 블록(예를 들면, 도 1의 복수의 메모리 블록들(114(0) 내지 114(M)) 중 메모리 블록(114(0))에 대해 지시된 메모리 액세스 동작을 검출하는 것으로 시작된다(블록(302)). 일부 실시예들(예를 들면, 도 1의 액세스 추적 테이블(142)을 이용하는 실시예들)은 메모리 액세스 동작을 검출하기 위한 블록(302)의 동작들이 PE(102)가 캐시 미스 및 TLB 미스 중 적어도 하나를 초래하는 메모리 액세스 동작을 검출하는 것(블록(304))을 포함할 수 있다는 것을 제공할 수 있다. 메모리 액세스 동작을 검출하는 것에 응답하여, PE(102)는 도 1의 액세스 카운트 테이블(130)의 복수의 액세스 카운트 값들(132(0) 내지 132(C)) 중 액세스 카운트 값(132(0))과 같은 액세스 카운트 값을 증가시키며, 여기서 액세스 카운트 테이블(130)은 패킹된 테이블이고 액세스 카운트 값(132(0))은 메모리 블록(114(0))에 대응한다(블록(306)).
액세스 추적 테이블(142)을 포함하는 일부 실시예들에서, PE(102)는 캐시 히트 또는 TLB 히트를 초래하는 메모리 블록(114(0))에 대해 지시된 다른 메모리 액세스 동작을 검출할 수 있다(블록(308)). 이에 응답하여, PE(102)는 도 1의 액세스 추적 테이블(142)의 복수의 액세스 추적 지시자들(144(0) 내지 144(C)) 중 액세스 추적 지시자(144(0))와 같은 액세스 추적 지시자를 설정할 수 있으며, 여기서 액세스 추적 테이블(142)은 패킹된 테이블이고 액세스 추적 지시자(144(0))는 메모리 블록(114(0))에 대응한다(블록(310)). 일부 실시예들에서의 동작들은 이어서 도 3b의 블록(312)에서 계속될 수 있다.
이제 도 3b를 참조하면, 일부 실시예들은 (예를 들면, 액세스 카운트 값들(132(0) 내지 132(C)) 중 하나 이상이 액세스 카운트 임계 값(136)에 도달하는 것 또는 타이머(138)의 만료에 의해 생성되는 하드웨어 인터럽트 또는 예외 이벤트에 의해) 어카운팅 간격이 트리거되는 것에 응답하여(블록(312)) 일련의 동작들을 수행할 수 있다. 일부 실시예들에서, PE(102)는 (예를 들면, 본 명세서에서 "제1 프로세스(128)"라고도 지칭되는, 프로세스(128)를 실행하는 것에 의해) 액세스 카운트 값(132(0))에 기초하여 메모리 블록(114(0))의 액세스 빈도를 결정할 수 있다(블록(314)). 도 1의 액세스 추적 테이블(142)을 이용하는 실시예들은 메모리 블록(114(0))의 액세스 빈도를 결정하기 위한 블록(314)의 동작들이 액세스 추적 지시자(144(0)) 및 액세스 클리어 지시자(146(0)) 중 하나 이상에 추가로 기초할 수 있는 것(블록(316))을 제공할 수 있다. PE(102)는 (예를 들면, 제1 프로세스(128)를 실행하는 것에 의해) 액세스 빈도에 기초하여 메모리 블록(114(0))을 제1 메모리 디바이스(112) 및 제2 메모리 디바이스(116) 중 하나로 이전할 수 있다(블록(318)). 예를 들어, 액세스 빈도가 메모리 블록(114(0))이 핫하다는 것을 나타내는 경우, PE(102)는 메모리 블록(114(0))이 제1 메모리 디바이스(112)에 아직 있지 않는 경우 메모리 블록(114(0))을 제1 메모리 디바이스(112)로 이전할 수 있다.
일부 실시예들은 PE(102)가 어카운팅 간격 동안 추가적인 동작들을 수행하는 것을 추가로 제공할 수 있다. 일부 실시예들에서, PE(102)는 (예를 들면, 제1 프로세스(128)를 실행하는 것에 의해) 복수의 액세스 카운트 값들(132(0) 내지 132(C))을 리셋할 수 있다(블록(320)). 일부 실시예들(예를 들면, 도 1의 액세스 추적 테이블(142)을 이용하는 실시예들)에 따른 PE(102)는 (예를 들면, 제 1 프로세스(128)를 실행하는 것에 의해) 메모리 블록(114(0))에 대응하는 액세스 추적 지시자(144(0))를 클리어할 수 있다(블록(322)). 액세스 추적 지시자(144(0))를 클리어한 후에, PE(102)는 (예를 들면, 제1 프로세스(128)를 실행하는 것에 의해) 액세스 추적 테이블(142)의 복수의 액세스 클리어 지시자들(146(0) 내지 146(C)) 중 액세스 클리어 지시자(146(0))와 같은 액세스 클리어 지시자를 설정하고, 여기서 액세스 클리어 지시자(146(0))는 메모리 블록(114(0))에 대응한다(블록(324)). 액세스 추적 지시자(144(0))가 어카운팅 간격 동안 항상 클리어되는 실시예들에서, 액세스 클리어 지시자(146(0))를 클리어하기 위한 블록(324)의 동작들이 생략될 수 있다는 점에 유의한다. 일부 실시예에서의 동작들은 도 3c의 블록(326)에서 계속될 수 있다.
이제 도 3c를 참조하면, 일부 실시예들은 후속 어카운팅 간격(즉, 도 3b의 블록(312)에서 참조된 어카운팅 간격 이후의 시간에 발생하는 어카운팅 간격)이 트리거되는 것에 응답하여(블록(326)) 추가 동작들을 수행할 수 있다. 도 1의 액세스 추적 테이블(142)을 이용하는 실시예들과 같은 일부 실시예들은 PE(102)가 (예를 들면, 프로세스(128)와 같은 프로세스를 실행하는 것에 의해) 액세스 클리어 지시자(146(0))를 클리어하는 것(블록(328))을 제공할 수 있다. 액세스 추적 지시자(144(0))가 어카운팅 간격 동안 항상 클리어되는 실시예들에서, 액세스 클리어 지시자(146(0))를 클리어하기 위한 블록(324)의 동작들이 생략될 수 있다는 점에 유의한다.
일부 실시예들에 따른 PE(102)는 PTE 액세스 지시자들(126(0)-126(P)) 중 하나 이상이 PE(102)에 의해 (예를 들면, 비제한적인 예로서, 프로세스(140)를 실행하는 것에 의해) 클리어되는 시간프레임으로부터 분리되는 시간프레임 내에서 매우 핫한 메모리 블록과 매우 콜드한 메모리 블록 간의 명확화를 제공하기 위해 도 1의 액세스 추적 테이블(142)을 제공한다. 따라서 도 4는, 예를 들면, 그러한 실시예들에서 프로세스(128)에 의해, 이용될 수 있는 예시적인 논리적 흐름을 예시하기 위한 플로차트(400)를 제공한다. 동작들은 프로세스(128)가 먼저 메모리 블록에 대한 액세스 카운트 값(예를 들면, 도 1의 메모리 블록(114(0))에 대응하는 액세스 카운트 값(132(0)))이 0과 동일한지 여부를 결정하는 것(블록(402))으로 시작된다. 그렇지 않은 경우, 프로세스(128)는 메모리 블록(114(0))이 적당히 핫하거나 적당히 콜드하다고 결론을 내릴 수 있으며, 액세스 카운트 값(132(0))의 크기는 어느 정도인지를 나타낸다(블록(404)).
그렇지만, 프로세스(128)가 결정 블록(402)에서 액세스 카운트 값(132(0))이 0과 동일하다고 결정하는 경우, 프로세스(128)는 다음으로, 도 1의 액세스 추적 지시자(144(0))와 같은, 메모리 블록(114(0))에 대응하는 액세스 추적 지시자가 설정되어 있는지 여부를 결정한다(블록(406)). 그렇지 않은 경우, 프로세스(128)는 메모리 블록(114(0))의 액세스 빈도가 0인 것(즉, 메모리 블록(114(0))이 매우 콜드한 메모리 블록인 것)으로 결정할 수 있다(블록(408)). 결정 블록(406)에서 액세스 추적 지시자(144(0))가 설정된 것으로 결정되는 경우, 프로세스(128)는, 도 1의 액세스 클리어 지시자(146(0))와 같은, 메모리 블록(114(0))에 대응하는 액세스 클리어 지시자가 설정되어 있는지 여부를 결정한다(블록(410)). 그렇지 않은 경우, 메모리 블록(114(0))이 매우 핫한 메모리 블록이거나 매우 콜드한 메모리 블록일 수 있다는 점에서, 메모리 블록(114(0))의 액세스 빈도는 불확정적이다(블록(412)). 반대로, 프로세스(128)가 결정 블록(410)에서 액세스 클리어 지시자(146(0))가 설정되어 있는 것으로 결정하는 경우, 프로세스(128)는 메모리 블록(114(0))의 액세스 빈도가 0보다 큰 것(즉, 메모리 블록(114(0))이 매우 핫한 메모리 블록인 것)으로 결정할 수 있다(블록(414)). 액세스 추적 지시자(144(0))가 어카운팅 간격 동안 항상 클리어되는 실시예들에서, 결정 블록(410)의 동작들이 생략될 수 있고, 동작들이 블록(406)으로부터 블록(414)으로 직접 진행될 수 있다는 점에 유의한다.
도 5는 메모리 블록 액세스 빈도를 추적하는, 도 1의 프로세서 기반 디바이스(100)와 같은, 예시적인 프로세서 기반 디바이스(500)의 블록 다이어그램이다. 프로세서 기반 디바이스(500)는 인쇄 회로 보드(PCB), 서버, 개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, PDA(personal digital assistant), 컴퓨팅 패드, 모바일 디바이스, 또는 임의의 다른 디바이스와 같은, 전자 보드 카드에 포함된 회로 또는 회로들일 수 있으며, 예를 들어, 서버 또는 사용자의 컴퓨터를 나타낼 수 있다. 이 예에서, 프로세서 기반 디바이스(500)는 프로세서(502)를 포함한다. 프로세서(502)는, 마이크로프로세서, 중앙 처리 유닛 등과 같은, 하나 이상의 범용 처리 회로를 나타내며, 도 1의 PE(102)에 대응할 수 있다. 프로세서(502)는 본 명세서에서 논의된 동작들 및 단계들을 수행하기 위한 명령어들로 된 처리 로직(processing logic)을 실행하도록 구성된다. 이 예에서, 프로세서(502)는 명령어들의 임시적인, 고속 액세스 메모리 저장을 위한 명령어 캐시(504) 및 명령어 처리 회로(510)를 포함한다. 시스템 버스(506)를 통해 시스템 메모리(508)와 같은 메모리로부터 페치되거나 프리페치된 명령어들은 명령어 캐시(504)에 저장된다. 명령어 처리 회로(510)는 명령어 캐시(504)로 페치된 명령어들을 처리하고 실행할 명령어들을 처리하도록 구성된다.
프로세서(502) 및 시스템 메모리(508)는 시스템 버스(506)에 결합되고 프로세서 기반 디바이스(500)에 포함된 주변 디바이스들을 상호 결합시킬 수 있다. 잘 알려진 바와 같이, 프로세서(502)는 시스템 버스(506)를 통해 주소, 제어, 및 데이터 정보를 교환하는 것에 의해 이러한 다른 디바이스들과 통신한다. 예를 들어, 프로세서(502)는 주변 디바이스의 예인 시스템 메모리(508) 내의 메모리 컨트롤러(512)에 버스 트랜잭션 요청을 전달할 수 있다. 도 5에 예시되어 있지 않지만, 다수의 시스템 버스들(506)이 제공될 수 있으며, 여기서 각각의 시스템 버스는 상이한 패브릭을 구성한다. 이 예에서, 메모리 컨트롤러(512)는 시스템 메모리(508) 내의 메모리 어레이(514)에 메모리 액세스 요청을 제공하도록 구성된다. 메모리 어레이(514)는 데이터를 저장하기 위한 저장 비트 셀들의 어레이로 구성된다. 시스템 메모리(508)는, 비제한적인 예로서, ROM(read-only memory), 플래시 메모리, SDRAM(synchronous DRAM) 등과 같은 DRAM(dynamic random access memory), 및 정적 메모리(예를 들면, 플래시 메모리, SRAM(dynamic random access memory) 등)일 수 있다.
다른 디바이스들이 시스템 버스(506)에 연결될 수 있다. 도 5에 예시된 바와 같이, 이러한 디바이스들은, 예로서, 시스템 메모리(508), 하나 이상의 입력 디바이스(516), 하나 이상의 출력 디바이스(518), 모뎀(524), 및 하나 이상의 디스플레이 컨트롤러(520)를 포함할 수 있다. 입력 디바이스(들)(516)는, 입력 키, 스위치, 음성 프로세서 등을 포함하지만 이에 제한되지 않는, 임의의 유형의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들)(518)는, 오디오, 비디오, 다른 시각적 표시기 등을 포함하지만 이에 제한되지 않는, 임의의 유형의 출력 디바이스를 포함할 수 있다. 모뎀(524)은 네트워크(526)와의 데이터 교환을 가능하게 하도록 구성된 임의의 디바이스일 수 있다. 네트워크(526)는, 유선 또는 무선 네트워크, 사설 또는 공용 네트워크, LAN(local area network), WLAN(wireless local area network), WAN(wide area network), BLUETOOTH™ 네트워크, 및 인터넷을 포함하지만 이에 제한되지 않는, 임의의 유형의 네트워크일 수 있다. 모뎀(524)은 원하는 임의의 유형의 통신 프로토콜을 지원하도록 구성될 수 있다. 프로세서(502)는 또한 하나 이상의 디스플레이(522)로 보내지는 정보를 제어하기 위해 시스템 버스(506)를 통해 디스플레이 컨트롤러(들)(520)에 액세스하도록 구성될 수 있다. 디스플레이(들)(522)는, CRT(cathode ray tube), LCD(liquid crystal display), 플라스마 디스플레이 등을 포함하지만 이에 제한되지 않는, 임의의 유형의 디스플레이를 포함할 수 있다.
도 5에서의 프로세서 기반 디바이스(500)는 명령어들에 따라 원하는 임의의 애플리케이션에 대해 프로세서(502)에 의해 실행될 명령어 세트(528)를 포함할 수 있다. 명령어들(528)은 비일시적 컴퓨터 판독 가능 매체(530)의 예인 시스템 메모리(508), 프로세서(502), 및/또는 명령어 캐시(504)에 저장될 수 있다. 명령어들(528)은 또한 그 실행 동안 시스템 메모리(508) 내에 및/또는 프로세서(502) 내에, 완전히 또는 적어도 부분적으로, 있을 수 있다. 명령어들(528)은 또한 모뎀(524)을 통해 네트워크(526)를 통해 전송 또는 수신될 수 있으며, 따라서 네트워크(526)는 컴퓨터 판독 가능 매체(530)를 포함한다.
컴퓨터 판독 가능 매체(530)는 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "컴퓨터 판독 가능 매체"라는 용어는 하나 이상의 명령어 세트(528)를 저장하는 단일 매체 또는 다수의 매체들(예를 들면, 중앙 집중식 또는 분산형 데이터베이스, 및/또는 연관된 캐시들 및 서버들)을 포함하는 것으로 간주되어야 한다. "컴퓨터 판독 가능 매체"라는 용어는 또한 처리 디바이스에 의해 실행되고 처리 디바이스로 하여금 본 명세서에 개시된 실시예들의 방법들 중 임의의 하나 이상을 수행하게 하는 명령어 세트를 저장, 인코딩 또는 운반할 수 있는 임의의 매체를 포함하는 것으로 간주되어야 한다. 그에 따라 "컴퓨터 판독 가능 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체, 및 자기 매체를 포함하지만 이에 제한되지 않는 것으로 간주되어야 한다.
본 명세서에 개시된 실시예들은 다양한 단계들을 포함한다. 본 명세서에 개시된 실시예들의 단계들은 하드웨어 컴포넌트들에 의해 형성될 수 있거나, 명령어들로 프로그래밍된 범용 또는 특수 목적 프로세서로 하여금 단계들을 수행하게 하는 데 사용될 수 있는 머신 실행 가능 명령어들로 구체화될 수 있다. 대안적으로, 단계들은 하드웨어와 소프트웨어 프로세스의 조합에 의해 수행될 수 있다.
본 명세서에 개시된 실시예들은 본 명세서에 개시된 실시예들에 따른 프로세스를 수행하도록 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하는 데 사용될 수 있는 명령어들을 저장한 머신 판독 가능 매체(또는 컴퓨터 판독 가능 매체)를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어 프로세스로서 제공될 수 있다. 머신 판독 가능 매체는 머신(예를 들면, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하거나 전송하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독 가능 매체는: 머신 판독 가능 저장 매체(예를 들면, ROM, "RAM"(random access memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스 등) 등을 포함한다.
달리 구체적으로 언급하지 않는 한, 이전의 논의로부터 명백한 바와 같이, 본 설명 전체에 걸쳐, "처리하는", "컴퓨팅하는", "결정하는", "디스플레이하는" 등과 같은 용어들을 활용하는 논의들이, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(전자적) 양으로 표현된 데이터를 조작하여, 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 디바이스 내의 물리적 양으로 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스를 지칭한다는 것이 이해된다.
본 명세서에서 제시되는 알고리즘 및 디스플레이가 본질적으로 임의의 특정의 컴퓨터 또는 다른 장치에 관련되어 있지는 않다. 다양한 시스템들이 본 명세서에서의 교시에 따라 프로그램과 함께 사용될 수 있거나, 더 특수화된 장치를 요구된 방법 단계를 수행하도록 구성하는 것이 편리한 것으로 판명될 수 있다. 각종의 이러한 시스템들에 대한 요구된 구조가 이상의 설명으로부터 나타날 것이다. 추가적으로, 본 명세서에 설명된 실시예들이 임의의 특정의 프로그래밍 언어를 참조하여 설명되어 있지 않다. 각종의 프로그래밍 언어들이 본 명세서에 설명된 바와 같은 실시예들의 교시를 구현하는 데 사용될 수 있다는 것이 이해될 것이다.
본 기술 분야의 통상의 기술자는 본 명세서에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어, 메모리 또는 다른 컴퓨터 판독 가능 매체에 저장되고 프로세서 또는 다른 처리 디바이스에 의해 실행되는 명령어들, 또는 이 둘의 조합으로 구현될 수 있음을 추가로 이해할 것이다. 본 명세서에 설명된 프로세서 기반 디바이스의 컴포넌트는, 예로서, 임의의 회로, 하드웨어 컴포넌트, 집적 회로(IC), 또는 IC 칩에서 이용될 수 있다. 본 명세서에 개시된 메모리는 임의의 유형 및 크기의 메모리일 수 있으며 원하는 임의의 유형의 정보를 저장하도록 구성될 수 있다. 이러한 상호교환성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 그의 기능 면에서 위에서 설명되었다. 이러한 기능이 어떻게 구현되는지는 특정 애플리케이션, 설계 선택 사항, 및/또는 전체 시스템에 부과되는 설계 제약에 따라 달라진다. 통상의 기술자는 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식으로 구현할 수 있지만, 이러한 구현 결정이 본 개시의 범위로부터 벗어나게 하는 것으로 해석되어서는 안 된다.
본 명세서에서 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은, 본 명세서에서 설명된 기능들을 수행하도록 설계된, 프로세서, DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), 또는 다른 프로그래머블 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 이들의 임의의 조합으로 구현되거나 수행될 수 있다. 게다가, 컨트롤러는 프로세서일 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안에서, 프로세서는 임의의 종래의 프로세서, 컨트롤러, 마이크로컨트롤러, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합(예를 들면, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성)으로서 구현될 수 있다.
본 명세서에 개시된 실시예들은 하드웨어로 그리고 하드웨어에 저장되고, 예를 들어, RAM, 플래시 메모리, ROM, EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 이동식 디스크, CD-ROM, 또는 본 기술 분야에서 알려진 임의의 다른 형태의 컴퓨터 판독 가능 매체에 있을 수 있는 명령어들로 구체화될 수 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기입할 수 있도록, 프로세서에 결합된다. 대안으로, 저장 매체가 프로세서에 통합될 수 있다. 프로세서 및 저장 매체가 ASIC에 있을 수 있다. ASIC은 원격 스테이션에 있을 수 있다. 대안으로, 프로세서 및 저장 매체는 원격 스테이션, 기지국, 또는 서버에 개별 컴포넌트로서 있을 수 있다.
본 명세서에서의 예시적인 실시예들 중 임의의 것에 설명된 동작 단계들이 예 및 논의를 제공하기 위해 설명되어 있다는 점에 또한 유의해야 한다. 설명된 동작들은 예시된 시퀀스들 이외의 다수의 상이한 시퀀스들로 수행될 수 있다. 게다가, 단일 동작 단계에서 설명된 동작들이 실제로 다수의 상이한 단계들에서 수행될 수 있다. 추가적으로, 예시적인 실시예들에서 논의된 하나 이상의 동작 단계가 결합될 수 있다. 본 기술 분야의 통상의 기술자는 또한 정보 및 신호들이 각종의 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있다는 것을 이해할 것이다. 예를 들어, 이상의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령어, 명령, 정보, 신호, 비트, 심벌, 및 칩이 전압, 전류, 전자기파, 자기 필드 또는 입자, 광학 필드 또는 입자, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
달리 명확히 언급되지 않는 한, 본 명세서에 제시된 임의의 방법이 그의 단계들이 특정 순서로 수행되어야 하는 것으로 해석되는 것으로 의도되지 않는다. 그에 따라, 방법 청구항에서 그의 단계들이 따라야 할 순서를 실제로 언급하지 않거나, 청구항 또는 설명에서 단계들이 특정 순서로 제한되어야 한다는 것이 달리 구체적으로 언급되지 않은 경우에, 임의의 특정 순서가 추론되는 것으로 의도되지 않는다.
본 발명의 사상 또는 범위를 벗어나지 않으면서 다양한 수정들 및 변형들이 행해질 수 있다는 것이 본 기술 분야의 통상의 기술자에게 명백할 것이다. 본 발명의 사상 및 본질을 포함하는 개시된 실시예들의 수정, 조합, 하위 조합 및 변형이 본 기술 분야의 통상의 기술자에게 안출될 수 있으므로, 본 발명은 첨부된 청구항 및 그 균등물의 범위 내에 있는 모든 것을 포함하는 것으로 해석되어야 한다.

Claims (15)

  1. 프로세서 기반 디바이스로서,
    액세스 카운트 테이블을 포함하는 처리 요소(processing element, PE)
    를 포함하고,
    상기 액세스 카운트 테이블은 복수의 메모리 블록들 중 한 메모리 블록에 각각 대응하는 복수의 액세스 카운트 값들을 포함하는 패킹된 테이블이고;
    상기 PE는:
    상기 복수의 메모리 블록들 중 한 메모리 블록에 대해 지시된 메모리 액세스 동작을 검출하고;
    상기 메모리 액세스 동작을 검출하는 것에 응답하여, 상기 복수의 액세스 카운트 값들 중 한 액세스 카운트 값 - 상기 액세스 카운트 값은 상기 메모리 블록에 대응함 - 을 증가시키도록 구성된 것인, 프로세서 기반 디바이스.
  2. 제1항에 있어서, 제1 메모리 디바이스 및 제2 메모리 디바이스를 더 포함하며;
    상기 프로세서 기반 디바이스는, 어카운팅 간격이 트리거되는 것에 응답하여:
    상기 액세스 카운트 값에 기초하여 상기 메모리 블록의 액세스 빈도를 결정하고;
    상기 액세스 빈도에 기초하여 상기 메모리 블록을 상기 제1 메모리 디바이스 및 상기 제2 메모리 디바이스 중 하나로 이전하도록 구성된 것인, 프로세서 기반 디바이스.
  3. 제1항에 있어서,
    상기 PE는 액세스 추적 테이블을 더 포함하고, 상기 액세스 추적 테이블은 상기 복수의 메모리 블록들 중 한 메모리 블록에 각각 대응하는 복수의 액세스 추적 지시자들을 포함하는 패킹된 테이블이고;
    상기 PE는 상기 메모리 액세스 동작이 캐시 미스 및 TLB(translation lookaside buffer) 미스 중 적어도 하나를 초래하는 것을 검출하도록 구성되는 것에 의해 상기 복수의 메모리 블록들 중 상기 메모리 블록에 대해 지시된 상기 메모리 액세스 동작을 검출하도록 구성되며;
    상기 PE는 또한,
    캐시 히트 또는 TLB 히트를 초래하는 상기 메모리 블록에 대해 지시된 메모리 액세스 동작을 검출하고;
    상기 캐시 히트 또는 상기 TLB 히트를 초래하는 상기 메모리 블록에 대한 상기 메모리 액세스 동작을 검출하는 것에 응답하여, 상기 메모리 블록에 대응하는 액세스 추적 지시자를 설정하도록 구성되며;
    상기 프로세서 기반 디바이스는, 어카운팅 간격이 트리거되는 것에 응답하여, 상기 메모리 블록에 대응하는 상기 액세스 추적 지시자를 클리어하도록 구성된 것인, 프로세서 기반 디바이스.
  4. 제3항에 있어서,
    상기 액세스 추적 테이블은 상기 복수의 메모리 블록들 중 한 메모리 블록에 각각 대응하는 복수의 액세스 클리어 지시자들을 더 포함하고;
    상기 프로세서 기반 디바이스는 또한, 상기 어카운팅 간격이 트리거되는 것에 응답하여, 상기 메모리 블록에 대응하는 액세스 클리어 지시자를 설정하도록 구성된 것인, 프로세서 기반 디바이스.
  5. 제3항에 있어서,
    상기 액세스 추적 테이블은 상기 복수의 메모리 블록들 중 한 메모리 블록에 각각 대응하는 복수의 액세스 클리어 지시자들을 더 포함하고;
    상기 프로세서 기반 디바이스는 또한, 후속 어카운팅 간격이 트리거되는 것에 응답하여, 상기 메모리 블록에 대응하는 액세스 클리어 지시자를 클리어하도록 구성된 것인, 프로세서 기반 디바이스.
  6. 제3항에 있어서, 제1 메모리 디바이스 및 제2 메모리 디바이스를 더 포함하며;
    상기 프로세서 기반 디바이스는 또한, 상기 어카운팅 간격이 트리거되는 것에 응답하여:
    상기 액세스 추적 지시자 및 액세스 클리어 지시자 중 하나 이상 및 상기 액세스 카운트 값에 기초하여 상기 메모리 블록의 액세스 빈도를 결정하고;
    상기 액세스 빈도에 기초하여 상기 메모리 블록을 상기 제1 메모리 디바이스 및 상기 제2 메모리 디바이스 중 하나로 이전하도록 구성된 것인, 프로세서 기반 디바이스.
  7. 제6항에 있어서, 상기 프로세서 기반 디바이스는
    상기 액세스 카운트 값이 0이라고 결정하고;
    상기 액세스 추적 지시자가 설정되어 있지 않다고 결정하며;
    상기 액세스 카운트 값과 상기 액세스 추적 지시자에 기초하여, 상기 메모리 블록의 상기 액세스 빈도가 0인 것으로 결정하도록
    구성되는 것에 의해, 상기 액세스 추적 지시자 및 상기 액세스 클리어 지시자 중 하나 이상 및 상기 액세스 카운트 값에 기초하여 상기 메모리 블록의 상기 액세스 빈도를 결정하도록 구성된 것인, 프로세서 기반 디바이스.
  8. 제6항에 있어서, 상기 프로세서 기반 디바이스는
    상기 액세스 카운트 값이 0이라고 결정하고;
    상기 액세스 추적 지시자가 설정되어 있다고 결정하며;
    상기 액세스 클리어 지시자가 설정되어 있다고 결정하고;
    상기 액세스 카운트 값, 상기 액세스 추적 지시자, 및 상기 액세스 클리어 지시자에 기초하여, 상기 메모리 블록의 상기 액세스 빈도가 0보다 큰 것으로 결정하도록
    구성되는 것에 의해, 상기 액세스 추적 지시자 및 상기 액세스 클리어 지시자 중 하나 이상 및 상기 액세스 카운트 값에 기초하여 상기 메모리 블록의 상기 액세스 빈도를 결정하도록 구성된 것인, 프로세서 기반 디바이스.
  9. 제1항에 있어서, 상기 프로세서 기반 디바이스는 또한, 어카운팅 간격이 트리거되는 것에 응답하여, 상기 복수의 액세스 카운트 값들을 리셋하도록 구성된 것인, 프로세서 기반 디바이스.
  10. 방법으로서,
    프로세서 기반 디바이스의 처리 요소(PE)에 의해, 복수의 메모리 블록들 중 한 메모리 블록에 대해 지시된 메모리 액세스 동작을 검출하는 단계; 및
    상기 메모리 액세스 동작을 검출하는 것에 응답하여, 액세스 카운트 테이블의 복수의 액세스 카운트 값들 중 한 액세스 카운트 값을 증가시키는 단계 - 상기 카운트 테이블은 패킹된 테이블이고 상기 액세스 카운트 값은 상기 메모리 블록에 대응함 -
    를 포함하는, 방법.
  11. 제10항에 있어서, 어카운팅 간격이 트리거되는 것에 응답하여:
    상기 액세스 카운트 값에 기초하여 상기 메모리 블록의 액세스 빈도를 결정하는 단계; 및
    상기 액세스 빈도에 기초하여 상기 메모리 블록을 제1 메모리 디바이스 및 제2 메모리 디바이스 중 하나로 이전하는 단계를 더 포함하는, 방법.
  12. 제10항에 있어서,
    캐시 히트 또는 TLB(translation lookaside buffer) 히트를 초래하는 상기 메모리 블록에 대해 지시된 메모리 액세스 동작을 검출하는 단계;
    상기 캐시 히트 또는 상기 TLB 히트를 초래하는 상기 메모리 블록에 대한 상기 메모리 액세스 동작을 검출하는 것에 응답하여, 액세스 추적 테이블의 복수의 액세스 추적 지시자들 중 한 액세스 추적 지시자를 설정하는 단계 - 상기 액세스 추적 테이블은 패킹된 테이블이고 상기 액세스 추적 지시자는 상기 메모리 블록에 대응함 -; 및
    어카운팅 간격이 트리거되는 것에 응답하여, 상기 메모리 블록에 대응하는 상기 액세스 추적 지시자를 클리어하는 단계를 더 포함하며,
    상기 복수의 메모리 블록들 중 상기 메모리 블록에 대해 지시된 상기 메모리 액세스 동작을 검출하는 단계는 캐시 미스 및 TLB 미스 중 적어도 하나를 초래하는 메모리 액세스 동작을 검출하는 단계를 포함하는 것인, 방법.
  13. 제12항에 있어서, 상기 어카운팅 간격이 트리거되는 것에 응답하여, 상기 액세스 추적 테이블의 복수의 액세스 클리어 지시자들 중 한 액세스 클리어 지시자를 설정하는 단계 - 상기 액세스 클리어 지시자는 상기 메모리 블록에 대응함 - 를 더 포함하는, 방법.
  14. 제12항에 있어서, 후속 어카운팅 간격이 트리거되는 것에 응답하여, 상기 액세스 추적 테이블의 복수의 액세스 클리어 지시자들 중 한 액세스 클리어 지시자를 클리어하는 단계 - 상기 액세스 클리어 지시자는 상기 메모리 블록에 대응함 - 를 더 포함하는, 방법.
  15. 제12항에 있어서, 상기 어카운팅 간격이 트리거되는 것에 응답하여:
    상기 액세스 추적 지시자 및 액세스 클리어 지시자 중 하나 이상 및 상기 액세스 카운트 값에 기초하여 상기 메모리 블록의 액세스 빈도를 결정하는 단계; 및
    상기 액세스 빈도에 기초하여 상기 메모리 블록을 제1 메모리 디바이스 및 제2 메모리 디바이스 중 하나로 이전하는 단계를 더 포함하는, 방법.
KR1020247008731A 2021-09-28 2022-07-22 프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도 추적 KR20240067880A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/487,629 2021-09-28
US17/487,629 US11868269B2 (en) 2021-09-28 2021-09-28 Tracking memory block access frequency in processor-based devices
PCT/US2022/037967 WO2023055463A1 (en) 2021-09-28 2022-07-22 Tracking memory block access frequency in processor-based devices

Publications (1)

Publication Number Publication Date
KR20240067880A true KR20240067880A (ko) 2024-05-17

Family

ID=82939924

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247008731A KR20240067880A (ko) 2021-09-28 2022-07-22 프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도 추적

Country Status (6)

Country Link
US (1) US11868269B2 (ko)
EP (1) EP4409416A1 (ko)
JP (1) JP2024533744A (ko)
KR (1) KR20240067880A (ko)
CN (1) CN117940909A (ko)
WO (1) WO2023055463A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11940909B2 (en) * 2022-04-26 2024-03-26 Texas Instruments Incorporated Dynamic mapping of data to lower latency memory based on data access
US20240289021A1 (en) * 2023-02-23 2024-08-29 International Business Machines Corporation Optimizing memory management using memory access heatmaps

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003216460A (ja) * 2002-01-21 2003-07-31 Hitachi Ltd 階層ストレージ装置及びその制御装置
KR20130070178A (ko) * 2011-12-19 2013-06-27 한국전자통신연구원 하이브리드 저장 장치 및 그것의 동작 방법
CN106469029B (zh) * 2011-12-31 2019-07-23 华为数字技术(成都)有限公司 数据分层存储处理方法、装置和存储设备
US20170139826A1 (en) 2015-11-17 2017-05-18 Kabushiki Kaisha Toshiba Memory system, memory control device, and memory control method
US10802977B2 (en) 2018-12-12 2020-10-13 Advanced Micro Devices, Inc. Memory page access counts based on page refresh
CN112764660B (zh) * 2019-10-21 2024-08-02 伊姆西Ip控股有限责任公司 用于数据搬移的方法、设备和计算机可读存储介质

Also Published As

Publication number Publication date
US20230107660A1 (en) 2023-04-06
JP2024533744A (ja) 2024-09-12
US11868269B2 (en) 2024-01-09
WO2023055463A1 (en) 2023-04-06
EP4409416A1 (en) 2024-08-07
CN117940909A (zh) 2024-04-26

Similar Documents

Publication Publication Date Title
US10474580B2 (en) Memory management supporting huge pages
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
JP5688823B2 (ja) ディスプレイパイプにおけるストリーミング式翻訳
US9110830B2 (en) Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US9098418B2 (en) Coordinated prefetching based on training in hierarchically cached processors
KR101456860B1 (ko) 메모리 디바이스의 전력 소비를 감소시키기 위한 방법 및 시스템
US7117290B2 (en) MicroTLB and micro tag for reducing power in a processor
US9176879B2 (en) Least recently used mechanism for cache line eviction from a cache memory
US9727482B2 (en) Address range priority mechanism
US20050050278A1 (en) Low power way-predicted cache
KR20240067880A (ko) 프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도 추적
TWI526832B (zh) 用於減少執行硬體表搜尋(hwtw)所需的時間和計算資源量的方法和系統
US20150309944A1 (en) Methods for cache line eviction
US9135184B2 (en) Load-through fault mechanism
US10228991B2 (en) Providing hardware-based translation lookaside buffer (TLB) conflict resolution in processor-based systems
US11556475B2 (en) Power optimized prefetching in set-associative translation lookaside buffer structure
US20240232096A9 (en) Hardware assisted memory access tracking
US11704253B2 (en) Performing speculative address translation in processor-based devices
US9311233B2 (en) Load-through fault mechanism