KR20240070630A - 의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip) - Google Patents

의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip) Download PDF

Info

Publication number
KR20240070630A
KR20240070630A KR1020247013716A KR20247013716A KR20240070630A KR 20240070630 A KR20240070630 A KR 20240070630A KR 1020247013716 A KR1020247013716 A KR 1020247013716A KR 20247013716 A KR20247013716 A KR 20247013716A KR 20240070630 A KR20240070630 A KR 20240070630A
Authority
KR
South Korea
Prior art keywords
rrip
cache
data
value
data block
Prior art date
Application number
KR1020247013716A
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 KR20240070630A publication Critical patent/KR20240070630A/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

캐시 대체를 위한 시스템 및 방법이 개시된다. 캐시 내의 각각의 데이터 블록들의 재참조(re-reference) 간격 예측(RRIP) 값을 결정하는 기술들이 설명되며, 여기서 RRIP 값은 각각의 데이터 블록이 시간 간격 내에 재사용될 가능성을 나타낸다. 프로세서에 의해 메모리 내의 데이터 세그먼트에 액세스할 때, 데이터 세그먼트가 캐시에 저장되어 있지 않은 경우, 캐시 내의 데이터 블록들의 최근사용율(recency)을 추적하는 이진 트리를 이용하여, 데이터 세그먼트에 의해 대체될 캐시 내의 데이터 블록이 선택된다.

Description

의사 LRU 보충 에이지 정보로 재참조 간격 예측(RRIP)
관련 출원에 대한 상호 참조
본 출원은 2021년 9월 29일에 출원된 미국 가출원 번호 17/489,726의 이익을 주장하며, 본 명세서에 완전히 제시된 것처럼 참조로 통합된다.
캐싱은 자주 액세스되는 데이터를 프로세서에 로컬인 메모리(캐시)에 저장함으로써 프로세서가 메인 메모리의 데이터에 액세스하는 데 걸리는 시간을 감소시키고, 따라서 액세스하는 데 더 빠르고 효율적이다. 캐시 대체 알고리즘들(또는 정책들)은 프로세서의 메모리 액세스가 미스(miss)를 초래할 때 캐시의 어느 데이터 블록을 방출시킬지를 결정하기 위해 캐시 관리 소프트웨어에 의해 사용된다. 즉, 프로세서가 메인 메모리 내의 데이터 세그먼트로부터 판독해야 하거나 또는 데이터 세그먼트에 기록해야 할 때, 데이터 세그먼트가 캐시에 이미 저장되어 있는 경우(즉, 캐시 히트(cache hit)), 그것은 캐시로부터 액세스되지만; 그것이 캐시에 아직 저장되어 있지 않은 경우(즉, 캐시 미스(cache miss)), 데이터 세그먼트는 메인 메모리로부터 페치될 것이고, 대체 알고리즘에 의해 결정된 바와 같이 캐시의 데이터 블록을 대체할 것이다.
대체 정책은 캐시 내의 각각의 데이터 블록이 재참조(re-reference)(재사용)될 가능성을 예측하고, 그에 기초하여 가장 먼 미래에 재참조될 것으로 예측되는 데이터 블록을 대체하기로 선택한다. 대체 정책의 예로는 최소 최근 사용(Least Recently Used; LRU) 대체 정책이 있다. LRU 대체 알고리즘은 가장 최근에 사용된 데이터 블록이 가장 먼 미래에 재참조될 가능성이 높다고 예측하고, 따라서, 대체될 데이터 블록을 선택한다. 한편, 재참조 간격 예측(Re-Reference Interval Prediction; RRIP) 대체 알고리즘은 최근사용율(recency) 대신 데이터 블록이 재참조되는 빈도를 고려하여 데이터 블록이 재사용될 가능성이 있는 시간 간격을 예측한다. 가까운 시간 간격(near-immediate time interval)에서 재참조될 것으로 예측되는 데이터 블록들은 보존되는 반면, 먼 시간 간격(distant time interval)에서 재참조될 것으로 예측되는 데이터 블록들은 방출 후보들이다.
대체 알고리즘들은 새로 추가된 데이터 블록에 할당한 재참조 가능성(히트 프로모션 정책)과 데이터 블록이 재사용될 가능성을 업데이트하는 방법(학습)에 따라 부분적으로 다르다. 대체 알고리즘이 얼마나 잘 수행되는지는 프로세서 상에서 실행되는 애플리케이션의 데이터 액세스 패턴에 의존한다. 예를 들어, 새로 추가된 데이터 블록들에 가까운 재참조의 가능성 또는 먼 재참조의 가능성을 할당하는 것은 모든 액세스 패턴들에 걸쳐 최적이 아니다. 상이한 데이터 액세스 패턴들 하에서 잘 수행하는 캐시 대체를 위한 기술들이 필요하다.
더 상세한 이해는 첨부 도면들과 함께 예로서 주어진 다음의 설명을 통해 달성될 수 있다.
도 1a는 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 디바이스의 블록도이다.
도 1b는 본 개시의 하나 이상의 특징들이 구현될 수 있는 디바이스들로부터의 메모리 액세스 요청들을 관리하는 것을 제공하는 예시적인 시스템의 블록도이다.
도 2는 본 개시의 하나 이상의 특징들이 구현될 수 있는, 도 1a의 디바이스의 프로세서에 의해 채용 가능한 예시적인 캐시 구조의 블록도이다.
도 3은 본 개시의 하나 이상의 특징들이 구현될 수 있는, 재참조 간격 예측(RRIP) 프레임워크에 기초한 예시적인 캐시 대체 방법의 기능 블록도이다.
도 4는 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 트리 기반 의사-LRU(PLRU) 선택 절차의 블록도이다.
본 개시는 트리 기반 의사-LRU(Pseudo-LRU) 알고리즘을 RRIP 프레임워크에 통합하는 캐시 대체를 위한 시스템들 및 방법들을 설명한다. 캐시 내의 각각의 데이터 블록의 재참조 가능성을 학습하는 RRIP 알고리즘이 본 명세서에 설명된다. RRIP 알고리즘은 다수의 재참조 시간 간격들을 나타낼 수 있는 RRIP 값들을 유지한다. 따라서, 데이터 블록은 가까운 시간 간격(최저 RRIP 값)으로부터 중간 시간 간격을 통해 먼 시간 간격(최고 RRIP 값)까지의 시간 간격으로 재참조되는 것으로 예측될 수 있다. 예를 들어, 새로운 데이터 블록이 캐시에 배치될 때, 중간 재참조 간격이 그것에 할당될 수 있고, 이 데이터 블록이 재사용될 때마다 더 짧은 시간 간격으로 할당될 수 있는데, 즉, 더 빨리 재참조될 것으로 예측된다. 캐시 내의 데이터 블록이 대체되어야 할 때(캐시 미스), 먼 시간 간격에서 재참조될 것으로 예측되는 데이터 블록이 대체되도록 선택될 수 있다. 캐시에서 이러한 데이터 블록이 발견될 수 없는 경우, 캐시의 데이터 블록들의 RRIP 값이 증가되며, 이는 액세스 패턴들의 변화에 적응할 수 있게 하는 프로세스이다. 그러나, 본 명세서에 설명된 바와 같이, 먼 시간 간격 예측을 갖는 다수의 데이터 블록들이 캐시에서 발견될 수 있을 때, PLRU 알고리즘의 이진 트리는 데이터 블록들 중 가장 오래된 것을 선택하기 위해 이용될 수 있다. RRIP 알고리즘과 시너지 효과를 갖는 PLRU 알고리즘의 적용은 많은 작업부하들의 캐시 액세스 패턴들이 주어진 RRIP 알고리즘의 단독 적용과 비교하여 더 높은 캐시 적중률을 초래한다.
본 개시는 캐시 대체를 위한 방법을 설명한다. 방법은 캐시 내의 데이터 블록들 각각과 연관된 RRIP 값을 결정하는 단계를 포함한다. RRIP 값은 연관된 데이터 블록이 시간 간격 내에 재사용될 가능성을 나타내며, 여기서 더 큰 RRIP 값은 미래에 더 먼 시간 간격에 대응한다. 프로세서에 의해 메모리 내의 데이터 세그먼트에 액세스할 때, 데이터 세그먼트가 캐시에 저장되어 있지 않으면, 방법은 데이터 세그먼트에 의해 대체될 캐시 내의 데이터 블록을 선택하는 단계를 포함한다. 데이터 블록을 선택하는 단계는, 최대값을 갖는 RRIP 값들과 연관된 캐시 내의 데이터 블록들을 검색하는 단계, 및 다수의 데이터 블록들이 발견될 때, 캐시 내의 데이터 블록들의 최근사용율을 추적하는 이진 트리를 사용하여 데이터 블록들 중 하나를 선택하는 단계를 포함한다.
본 개시는 적어도 하나의 프로세서 및 메모리를 포함하는 시스템을 더 개시한다. 메모리는, 적어도 하나의 프로세서에 의해 실행될 때, 시스템으로 하여금 캐시 내의 데이터 블록들 각각과 연관된 RRIP 값을 결정하게 하는 명령어들을 저장한다. RRIP 값은 연관된 데이터 블록이 시간 간격 내에 재사용될 가능성을 나타내며, 여기서 더 큰 RRIP 값은 미래에 더 먼 시간 간격에 대응한다. 적어도 하나의 프로세서에 의해 메모리 내의 데이터 세그먼트에 액세스할 때, 데이터 세그먼트가 캐시에 저장되어 있지 않으면, 명령어들은 시스템으로 하여금 캐시 내의 데이터 블록이 데이터 세그먼트에 의해 대체되도록 선택하게 한다. 데이터 블록을 선택하는 단계는, 최대값을 갖는 RRIP 값들과 연관된 캐시 내의 데이터 블록들을 검색하는 단계; 및 다수의 데이터 블록들이 발견될 때, 캐시 내의 데이터 블록들의 최근사용율을 추적하는 이진 트리를 사용하여 데이터 블록들 중 하나를 선택하는 단계를 포함한다.
또한, 본 개시는 방법을 수행하기 위해 적어도 하나의 프로세서에 의해 실행가능한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체를 개시한다. 방법은 캐시 내의 데이터 블록들 각각과 연관된 재참조 간격 예측(RRIP) 값을 결정하는 단계를 포함한다. RRIP 값은 연관된 데이터 블록이 시간 간격 내에 재사용될 가능성을 나타내며, 여기서 더 큰 RRIP 값은 미래에 더 먼 시간 간격에 대응한다. 적어도 하나의 프로세서에 의해 매체 내의 데이터 세그먼트에 액세스할 때, 데이터 세그먼트가 캐시에 저장되어 있지 않으면, 방법은 데이터 세그먼트에 의해 대체될 캐시 내의 데이터 블록을 선택하는 단계를 포함한다. 데이터 블록을 선택하는 단계는, 최대값을 갖는 RRIP 값들과 연관된 캐시 내의 데이터 블록들을 검색하는 단계; 및 다수의 데이터 블록들이 발견될 때, 캐시 내의 데이터 블록들의 최근사용율을 추적하는 이진 트리를 사용하여 데이터 블록들 중 하나를 선택하는 단계를 포함한다.
도 1a는 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 디바이스(100A)의 블록도이다. 디바이스(100A)는, 예를 들어, 컴퓨터, 게임 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 모바일 폰, 태블릿 컴퓨터, 또는 다른 컴퓨팅 디바이스 중 하나일 수 있지만, 이에 제한되지 않는다. 디바이스(100)는 프로세서(102), 메모리(104), 저장소(106), 하나 이상의 입력 디바이스(108), 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100A)는 또한 하나 이상의 입력 드라이버들(112) 및 하나 이상의 출력 드라이버들(114)을 포함한다. 입력 드라이버들(112) 중 임의의 것은 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어로서 구현되고, 입력 디바이스들(112)을 제어하는 목적(예를 들어, 동작을 제어하고, 입력 드라이버들(112)로부터 입력들을 수신하고, 입력 드라이버들에 데이터를 제공하는 목적)의 역할을 한다. 유사하게, 출력 드라이버들(114) 중 임의의 것은 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어로서 구현되고, 출력 디바이스들을 제어하는 목적(예를 들어, 동작을 제어하고, 출력 드라이버들(114)로부터 입력들을 수신하고, 출력 드라이버들에 데이터를 제공하는 목적)의 역할을 한다. 디바이스(100A)는 도 1a에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다는 것이 이해된다.
다양한 대안들에서, 프로세서(102)는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 동일한 다이 상에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들을 포함하고, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안들에서, 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치되거나 또는 프로세서(102)와 별도로 위치된다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어, 랜덤 액세스 메모리(RAM), 동적 RAM, 또는 캐시를 포함한다. 일부 구현예들에서, 프로세서(102)는 하나 이상의 캐시들(120)을 포함한다. 일반적으로 알려진 바와 같이, 캐시는 가까운 미래에 프로세서(102) 상에서 실행되는 명령어들에 의해 액세스될 가능성이 있는 것으로 캐시 관리자에 의해 판단되는 데이터 아이템들을 저장한다. 캐시(120)는 프로세서(102)의 하나 이상의 캐시 메모리들을 나타낸다. 다양한 구현예들에서, 하나 이상의 캐시 메모리들은 캐시 계층 구조로 조직화되며, 여기서 캐시 계층 구조에서 상위 캐시들은 캐시 계층 구조에서 하위 캐시들로부터 미스들을 서비스하고 방출된 캐시 엔트리들을 수신한다.
저장소(106)는 고정 또는 제거 가능한 저장소, 예를 들어, 제한 없이, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함한다. 입력 디바이스들(108)은 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 바이오메트릭 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함하지만, 이에 제한되지 않는다. 출력 디바이스들(110)은 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 조명들, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함하지만, 이에 제한되지 않는다.
입력 드라이버(112) 및 출력 드라이버(114)는 입력 디바이스들(108) 및 출력 디바이스들(110)과 각각 인터페이싱하고 이들을 구동하도록 구성된 하나 이상의 하드웨어, 소프트웨어, 및/또는 펌웨어 컴포넌트들을 포함한다. 입력 드라이버(112)는 프로세서(102) 및 입력 디바이스들(108)과 통신하고, 프로세서(102)가 입력 디바이스들(108)로부터 입력을 수신하도록 허용한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스들(110)과 통신하고, 프로세서(102)가 출력 디바이스들(110)에 출력을 발송하도록 허용한다. 출력 드라이버(114)는 디스플레이 디바이스(118)에 결합된 가속 프로세싱 디바이스("APD")(116)를 포함하며, 이는 일부 예들에서 출력을 보여주기 위해 원격 디스플레이 프로토콜을 사용하는 물리적 디스플레이 디바이스 또는 시뮬레이션된 디바이스이다. APD(116)는 프로세서(102)로부터의 컴퓨트 커맨드들(commands) 및 그래픽 렌더링 커맨드들을 수락하고, 이들 컴퓨트 및 그래픽 렌더링 커맨드들을 프로세싱하고, 디스플레이를 위해 디스플레이 디바이스(118)에 픽셀 출력을 제공하도록 구성된다. 아래에서 더 상세히 설명되는 바와 같이, APD(116)는 단일-명령어(instruction)-다중-데이터("SIMD") 패러다임에 따라 계산들을 수행하도록 구성된 하나 이상의 병렬 프로세싱 유닛들을 포함한다. 따라서, 다양한 기능성(functionality)이 APD(116)에 의해 또는 그와 함께 수행되는 것으로 본 명세서에서 설명되지만, 다양한 대안들에서, APD(116)에 의해 수행되는 것으로 설명된 기능성은 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않고 디스플레이 디바이스(118)에 그래픽 출력을 제공하도록 구성되는 유사한 능력들을 갖는 다른 컴퓨팅 디바이스들에 의해 추가적으로 또는 대안적으로 수행된다. 예를 들어, SIMD 패러다임에 따라 프로세싱 태스크들(tasks)을 수행하는 임의의 프로세싱 시스템이 본 명세서에서 설명된 기능성을 수행하도록 구성될 수 있다는 것이 고려된다. 대안적으로, SIMD 패러다임에 따라 프로세싱 태스크들을 수행하지 않는 컴퓨팅 시스템들이 본 명세서에서 설명된 기능성을 수행하는 것이 고려된다.
도 1b는 본 개시의 하나 이상의 특징들이 구현될 수 있는 디바이스들로부터의 메모리 액세스 요청들을 관리하는 것을 제공하는 예시적인 시스템(100B)의 블록도이다. 시스템(100B)은 프로세서(130) 및 메모리(122)를 포함한다. 시스템(100B)은 서버, 개인용 컴퓨터, 태블릿, 셋톱 박스, 게임 시스템 등과 같은 다양한 전자 디바이스들 중 임의의 것에 통합될 수 있다. 프로세서(130)는 일반적으로 정의된 태스크들을 수행하기 위해 프로세서(130)의 회로부를 조작하는 명령어들(예를 들어, 컴퓨터 프로그램들)의 세트들을 실행하도록 구성된다.
메모리(122)는 프로세서(130)에 의해 사용되는 데이터 및 명령어들을 저장함으로써 이들 태스크들의 실행을 용이하게 한다. 메모리(122)는 랜덤 액세스 메모리(RAM), 플래시 메모리 또는 하드 디스크 드라이브(HDD)와 같은 비휘발성 메모리 등 또는 이들의 조합일 수 있다. 시스템(100B)은 또한 물리적 입력/출력(I/O) 디바이스와 같은 디바이스(124)를 포함한다. 디바이스(124)는, 예를 들어, 네트워크 인터페이스 카드(NIC), 호스트 버스 어댑터(HBA) 등일 수 있다.
프로세서(30)는 또한 프로세서 코어들(140, 150, 160, 및 170) 및 메모리 제어기(예를 들어, 노스브리지)(132)를 포함한다. 프로세서 코어들(140, 150, 160, 170)은 명령어들을 개별적으로 그리고 동시에 실행하는 프로세싱 유닛들이다. 일부 실시예들에서, 프로세서 코어들(140, 150, 160, 및 170) 각각은 명령어들을 페치하고, 페치된 명령어들을 대응하는 동작들로 디코딩하고, 시스템(100B)의 리소스들을 사용하여, 다양한 동작들을 실행하는 개별 명령어 파이프라인을 포함한다. 도 1b는 4개의 프로세서 코어들(140, 150, 160, 및 170)을 갖는 프로세서(130)를 예시하지만, 프로세서(130)는 4개 초과 또는 4개 미만의 프로세서 코어들을 가질 수 있다. 프로세서 코어들(140, 150, 160 및 170) 각각은 프로세서 코어 전용의 하위 레벨 캐시를 갖는다. 예를 들어, 프로세서 코어(140)는 레벨 1 캐시(142) 및 레벨 2 캐시(144)를 갖는다. 프로세서 코어(140)는 또한 변환 색인 버퍼(146)를 포함할 수 있다. 유사하게, 프로세서 코어(150)는 연관된 레벨 1 캐시(152) 및 레벨 2 캐시(154)를 갖는다. 프로세서 코어(150)는 또한 변환 색인 버퍼(156)를 포함할 수 있다. 추가 예에서, 프로세서 코어(160)는 레벨 1 캐시(162) 및 레벨 2 캐시(164)를 갖는다. 프로세서 코어(160)는 또한 변환 색인 버퍼(166)를 포함할 수 있다. 다른 예에서, 프로세서 코어(170)는 레벨 1 캐시(172) 및 레벨 2 캐시(174)를 갖는다. 프로세서 코어(170)는 또한 변환 색인 버퍼(176)를 포함할 수 있다. 프로세서(130)는 프로세서들의 쌍들에 의해 공유되는 캐시 메모리를 더 포함할 수 있다. 예를 들어, 프로세서 코어(140) 및 프로세서 코어(160)는 L3 캐시 메모리(180)를 공유할 수 있고, 프로세서 코어(150) 및 프로세서 코어(170)는 L3 캐시 메모리(185)를 공유할 수 있다.
프로세서(130)는 또한 메모리 제어기(132)에 (예를 들어, 도 1a에 도시된 바와 같은 디바이스(124)와 같은) 디바이스들을 연결하는데 사용되는 입력/출력 메모리 관리 유닛(IOMMU)(136)을 포함한다. 일부 실시예들에서, IOMMU(136)는 직렬 버스를 사용하여 디바이스(124)와 통신한다. 직렬 버스는 PCIe(Peripheral Component Interconnect Express) 직렬 버스 표준과 같은 버스 표준을 준수할 수 있다. 메모리 제어기(132)는 디바이스(124)가 메모리(122) 또는 하나 이상의 레벨의 캐시 메모리와 통신하기 위한 인터페이스를 제공한다. IOMMU(136)는 디바이스(124)로부터 메모리 액세스 요청들(예를 들어, 캐시 인젝션(cache injection) 메모리 액세스 요청과 같은 직접 메모리 액세스 요청들)을 수신하고, 메모리(122)로의 또는 메모리 제어기(132)를 통한 캐시 메모리로의 그러한 요청들의 제공을 제어한다. 프로세서(130)는, 예를 들어, 메모리 제어기(132)에서, IOMMU(136)로부터 수신된 물리적 스티어링 태그를 캐시 인젝션 메모리 액세스 요청과 같은 연관된 메모리 액세스 요청에 의해 타겟이 되는 물리적 리소스에 매핑하기 위한 물리적 태그 맵(134)을 포함한다. 또한, 메모리 제어기(132)는 메모리(122) 또는 캐시 메모리로부터 메모리 액세스 요청들에 대한 응답들을 수신하고, 디바이스(124)로의 응답들의 제공을 제어한다.
캐시 인젝션 메모리 액세스 요청은, 프로세서 코어에 전용된 하위 레벨 캐시, 프로세서 코어들의 서브세트 사이에 공유된 캐시, 또는 공유 캐시와 같은, 타겟 프로세서 리소스들에 대한 스티어링 태그들을 이용할 수 있다. 예를 들어, 스티어링 태그는 프로세서 코어(150)에 의해 액세스 가능한 L1 캐시(152) 또는 L2 캐시(154), 프로세서 코어들(150 및 170)에 액세스 가능한 L3 캐시(185)를 타겟으로 할 수 있다. 따라서, 메모리 액세스 요청들의 효율적인 실행을 용이하게 하기 위해, IOMMU(136)는 메모리 액세스 요청에서 수신된 가상 스티어링 태그들을 물리적 리소스에 매핑된 물리적 스티어링 태그로 변환하기 위해 가상 태그 맵에 액세스한다. 디바이스(124)로부터 메모리 액세스 요청을 수신하는 것에 응답하여, IOMMU(136)는 가상 스티어링 태그를 식별하고 가상 태그 맵(138)으로 가상 스티어링 태그를 변환한다. 가상 태그 맵(138)은 시스템 메모리(122)에 저장될 수 있고, 부분들은 IOMMU(136)에 캐싱될 수 있다. 대안적으로, 가상 태그 맵(138)은 IOMMU(136)에 캐싱될 수 있다. IOMMU(136)는 메모리 액세스 요청 및 물리적 스티어링 태그를 메모리 제어기(132)에 제공한다. 메모리 제어기(132)는 물리적 스티어링 태그를 캐시 인젝션 메모리 액세스 요청에 의해 타겟이 되는 하위 레벨 캐시와 같은, 메모리 액세스 요청에 의해 타겟이 되는 물리적 리소스로 변환한다. 예에서, 메모리 액세스 요청은 프로세서 코어에 전용된 하위 레벨 캐시를 타겟으로 한다. 이러한 예에서, 요청과 연관된 어드레스는 변환 색인 버퍼에 의해 변환될 수 있고, 캐시 인젝션 메모리 액세스가 실행된다.
일부 실시예들에서, 디바이스(124)는 IOMMU(136)에 발송된 가상 스티어링 태그 및 가상 어드레스를 포함하는 메모리 액세스 요청을 개시함으로써 직접 메모리 액세스(DMA) 요청들을 통해 메모리(122) 또는 캐시 메모리 내의 정보에 액세스하기 위해 메모리 제어기(132)를 채용한다. IOMMU(136)는 가상 스티어링 태그와 물리적 스티어링 태그 사이의 스티어링 태그 리매핑 및 메모리(122) 또는 캐시 메모리 내의 가상 어드레스들과 물리적 어드레스들 사이의 어드레스 변환을 수행할 수 있다. 스티어링 태그 리매핑 프로세스 및 어드레스 변환 프로세스는 IOMMU의 독립적인 기능들일 수 있고 동시에 수행될 수 있다. 예를 들어, 디바이스(124)는 디바이스(124)에 의해 제공된 데이터를 사용하는 가상 기계를 실행하는 프로세서와 연관된 캐시 메모리에 데이터를 저장하기 위한 기록 요청들을 포함하는 캐시 인젝션 메모리 액세스 요청들을 생성한다. 각각의 메모리 액세스 요청은 연관된 물리적 스티어링 태그를 통해 캐시 리소스(예를 들어, L3 캐시(180 또는 185); L1 캐시(142, 152, 162 또는 172); L2 캐시(144, 154, 164 또는 174))에 매핑된 가상 스티어링 태그 및 캐시 인젝션 메모리 액세스 요청에 의해 타겟이 되는 캐시 리소스에서의 위치를 표시하는 메모리 어드레스를 포함한다. 기록 요청에 응답하여, 리소스는 기록 요청의 메모리 어드레스에 대응하는 위치에 요청의 기록 정보를 저장한다.
도 2는, 본 개시의 하나 이상의 특징들이 구현될 수 있는 것에 기초하여, 도 1a의 디바이스의 프로세서들에 의해 채용 가능한 예시적인 캐시 구조(200)의 블록도이다. 캐시(210)는 데이터 블록들(220.1 내지 220.N)("라인들"이라고도 함)을 포함한다. 각각의 데이터 블록은 메모리로부터 이전에 페치된 데이터 세그먼트를 포함할 수 있다. 예를 들어, 라인(220.n)은 메인 메모리(240) 내의 어드레스(255)로부터 페치된 데이터 세그먼트(250)를 포함할 수 있다. 데이터 블록들에 더하여, 캐시 내의 각각의 라인(예를 들어, 220.n)은 태그(예를 들어, 215.n) 및 플래그 비트들(예를 들어, 225.n)과 연관된다. 예를 들어, 태그(215.n)는 (라인(220.n)에 현재 저장된) 데이터 세그먼트(250)가 페치된 메인 메모리(240)의 어드레스(255)와 연관된다. 플래그 비트들(225.n)은 전형적으로 대응하는 데이터 블록(220.n)을 특성화하는(또는 그와 연관되는) 데이터를 저장하는 데 사용된다. 예를 들어, 플래그(225.n)는 데이터 블록(220.n)에 저장된 데이터의 유효성 또는 메인 메모리가 데이터 블록(220.n)에 저장된 데이터에 대해 행해진 변경들로 업데이트되지 않았는지 여부를 표시할 수 있다.
따라서, 태그들(215.1 내지 215.N)은 캐시(210) 내의 그들 각각의 라인들(220.1 내지 220.N)과 연관되며 - 각각은 메인 메모리(240) 내의 실제 또는 가상 어드레스를 나타낸다. 프로세서가 메모리 액세스를 요구하는 명령어를 실행할 때 - 즉, 프로세서가 메인 메모리의 특정 어드레스에 저장된 데이터 세그먼트로부터 판독하거나 그 세그먼트에 기록해야 할 때 - 요청된 데이터 세그먼트가 캐시의 라인들(220.1-220.N) 중 하나에 이미 저장되어 있는지 여부를 알기 위해 캐시가 먼저 검사된다. 요청된 데이터 세그먼트(250)가 캐시의 라인들 중 하나에 이미 저장되어 있는지 여부를 확인하기 위해, 데이터 세그먼트의 어드레스(255)는 각각의 라인들(220.1 내지 220.N)의 태그들(215.1 내지 215.N)과 비교될 수 있다. 그러나, 실제로, 캐시의 배치 정책은 (데이터 세그먼트(250)와 같은) 메인 메모리의 메모리 섹션들을 캐시 내의 특정 위치들에 저장한다. 따라서, 캐시 내의 임의의 라인이 메모리 섹션의 임의의 복사본을 저장할 수 있다면, 캐시는 완전 연관 캐시(fully associative cache)이다. 각 메모리 섹션이 캐시 내의 한 라인에만 저장될 수 있는 경우, 캐시는 직접 매핑된 캐시이다. 일반적으로, 각각의 메모리 섹션이 캐시 내의 L 장소들의 하나의 세트에 저장될 수 있는 경우, 캐시는 L-웨이 세트 연관 캐시이다.
전형적으로, 메모리 어드레스(255)를 나타내는 비트들은 그들의 비트 중요도에 기초하여 그룹들로 파티셔닝될 수 있다. 도 2에서, 메모리 어드레스(230)는 태그(230.1), 인덱스(230.2) 및 블록 오프셋(230.3)을 포함하는 것으로 도시되어 있다. 어드레스(230)의 최하위 비트들을 갖는 블록 오프셋(230.3)은 요청된 데이터 세그먼트(250)가 저장되는 데이터 블록 내의 위치를 가리키는(point to) 오프셋을 제공한다. 예를 들어, 데이터 블록이 b-바이트 블록인 경우, 블록 오프셋(230.3)은 log 2 (b) 비트 길이이어야 할 것이다. 인덱스(230.2)는 특정 메모리 섹션이 저장될 수 있는 캐시 내의 데이터 블록들의 세트를 특정한다(예를 들어, 하나의 세트는 L-웨이 세트 연관 캐시 내에 L 데이터 블록들을 포함함). 예를 들어, s개의 세트들이 있는 경우, 인덱스(230.2)는 log 2 (s) 비트 길이이어야 할 것이다. 어드레스(230)의 최상위 비트들을 갖는 태그(230.1)는 특정 메모리 섹션을 그것이 저장되는 세트(인덱스에 의해 특정됨) 내의 라인과 연관시킨다. 따라서, 데이터 세그먼트가 캐시에 저장되어 있는지 여부를 검색할 때, 데이터 세그먼트의 어드레스의 인덱스 부분은 데이터 세그먼트가 저장될 수 있는 캐시 내의 세트를 가리키고; 그런 다음, 데이터 세그먼트의 어드레스의 태그 부분은 그 세트 내의 라인들의 태그들과 비교된다. 캐시(210)가 4 웨이 세트 연관 캐시인 경우, 그런 다음 캐시는 (인덱스들에 의해 특정된) 세트들로 파티셔닝되고, 각각의 세트는 4 개의 웨이들(4 개의 데이터 블록들 또는 라인들)을 포함한다. 데이터 세그먼트(250)의 어드레스(255)의 인덱스 부분이 제1 세트를 가리키는 경우, 데이터 세그먼트(250)는 이 세트 내에서 검색되어야 한다 - 데이터 세그먼트의 어드레스(255)의 태그 부분은 그러한 라인들 중 하나가 데이터 세그먼트를 저장하는지 여부를 발견하기 위해 그 세트 내의 라인들의 태그들과 비교될 수 있다.
도 3은 본 개시의 하나 이상의 특징들이 구현될 수 있는 RRIP 프레임워크에 기초한 예시적인 캐시 대체 방법(300)의 기능 블록도이다. 프로세서가 메모리 액세스(예를 들어, 메모리 판독 또는 메모리 기록)를 수반하는 명령어를 실행할 때, 단계(310)에서, 액세스될 데이터 세그먼트(즉, 요청된 데이터 세그먼트)가 캐시의 데이터 블록에 이미 저장되어 있는지 여부를 확인하기 위해 캐시가 검사된다. 요청된 데이터 세그먼트가 캐시의 데이터 블록에 이미 저장되어 있는지 여부를 확인하는 것은 예를 들어, 도 2를 참조하여 위에서 설명된 바와 같이 수행될 수 있다. 요청된 데이터 세그먼트가 캐시의 데이터 블록에 이미 저장되어 있는 경우, 캐시 히트가 발생하였고(315), 따라서 단계(320)에서, 데이터 세그먼트는 데이터 블록으로부터 판독될 수 있다. 데이터 블록(320)에 대한 재참조에 이어서, 단계(325)에서, 데이터 블록과 연관된 재참조 간격 예측 값이 히트 프로모션 정책에 따라 업데이트될 수 있다. 요청된 데이터 세그먼트가 캐시의 데이터 블록들 중 어느 것에도 저장되지 않으면, 캐시 미스가 발생하고(315), 따라서 캐시의 데이터 블록들 중 하나가 방출되어야 한다(예를 들어, 사용될 수 있는 유효하지 않은 블록이 없는 경우) - 즉, 요청된 데이터 세그먼트는 메인 메모리로부터 페치될 것이고, 대체될 대체 알고리즘(300)에 의해 선택된 데이터 블록으로 복사될 것이다.
다양한 캐시 대체 알고리즘들은 상이한 대체 정책들을 적용한다. 캐시 대체를 위한 RRIP 프레임워크에서, 참조될 가능성이 가장 낮은 데이터 블록은 방출될 것이다. 예를 들어, RRIP 프레임워크는 캐시 내의 각각의 데이터 블록과 연관된 M 비트들을 유지할 수 있으며, 여기서 2M-1 RRIP 값들이 표현될 수 있다. 따라서, 제로 RRIP 값은 데이터 블록이 가까운 미래에 재참조될 것으로 예측됨을 표시하고; 2M-1 RRIP 값은 데이터 블록이 먼 미래에 재참조될 것으로 예측됨을 표시한다. 예를 들어, M=2인 경우, 4개의 RRIP 값이 가능하다: [0, 1, 2, 3], RRIP 값이 낮을수록, 각각의 데이터 블록이 더 빨리 재참조될 것으로 예측된다.
따라서, 캐시 미스가 발생할 때, 최대 RRIP 값을 갖는 데이터 블록들 - 이들은 모든 다른 데이터 블록들보다 나중에 참조될 것으로 예측됨 - 이 단계(330)에서 검색된다. 일 양태에서, 최대 RRIP 값을 포함하는 범위 내의 RRIP 값들을 갖는 데이터 블록들이 검색될 수 있다. 최대 RRIP 값을 갖는(또는 최대 RRIP 값을 포함하는 범위 내에 있는) 데이터 블록들이 발견되지 않은 경우, 단계(340)에서 모든 데이터 블록의 RRIP 값이 하나씩 증분되고, 다른 검색이 이어진다(330). 그렇지 않으면, 단계(345)에서, 최대 RRIP 값을 갖는(또는 최대 RRIP 값을 포함하는 범위 내에 있는) 하나 이상의 데이터 블록이 발견되면, 단계(355)에서, 하나의 데이터 블록이 대체되도록 선택된다. 최대 RRIP 값을 갖는(또는 최대 RRIP 값을 포함하는 범위 내에 있는) 정확히 하나의 데이터 블록이 발견되면, 그 블록은 350으로 대체된다. 따라서, 최대 RRIP 값을 갖는 하나 이상의 데이터 블록(또는 최대 RRIP 값을 포함하는 범위 내의 RRIP 값을 갖는 하나 이상의 데이터 블록)이 발견된 경우, 대체될 하나의 데이터 블록을 선택하기 위한 절차가 수행되어야 한다(355). 채용될 수 있는 간단한 선택 절차는 예를 들어, 가장 작은 인덱스를 갖는 데이터 블록을 선택하는 것이다. 본 명세서에 개시된 바와 같이, 트리 기반 PLRU 선택 절차가 아래에 상세히 설명되는 바와 같이 사용될 수 있다.
어느 데이터 블록이 대체될 것인지가 결정된 후, 단계(350)에서, 요청된 데이터 세그먼트는 메인 메모리로부터 페치되고 그 데이터 블록에 저장된다. 예를 들어, 데이터 블록(220.n)이 대체될 것이면, 요청된 데이터 세그먼트(250)는 데이터 블록(220.n)으로 복사되고, 어드레스(215.n)는 메인 메모리(240) 내의 데이터 세그먼트(250)의 어드레스(255)로 업데이트되고, 가능하게는, 예를 들어, 하나 이상의 플래그 비트들이 업데이트되어, 데이터 블록 콘텐츠가 유효하다는 것을 반영한다. 그런 다음, 단계(360)에서, 대체된 데이터 블록의 RRIP 값은 대체된 데이터 블록(220.n)이 얼마나 빨리 재참조될 것으로 예상되는지에 따라 설정될 수 있다. 합리적인 재참조 간격 예측은 프로세서의(또는 프로세서가 실행하는 애플리케이션의) 메모리 액세스 패턴에 의존한다. 대체 알고리즘은, 예를 들어, 단계(360)에서 데이터 블록이 대체될 때 높은 RRIP 값을 할당하고, 그런 다음 단계(320)에서 이 데이터 블록이 재참조될 때마다 이 RRIP 값을 하나씩 감소시킴으로써, 가능성 있는 재참조 간격을 학습할 수 있다.
도 4는 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 트리 기반 PLRU 선택 절차의 블록도(400)이다. PLRU는 LRU 대체 알고리즘을 근사화하는 대체 알고리즘이다. LRU 알고리즘은 기본적으로 데이터 블록을 가장 오래된 액세스 시간(최소로 최근에 액세스된 데이터 블록)으로 대체하는 반면, PLRU 알고리즘은 가장 오래된 액세스 시간을 갖는 데이터 블록에 근사화된 결과를 제공한다. 트리 기반 PLRU 알고리즘은 LRU 알고리즘에 비해 다소 높은 미스 비율로 수행되지만, 양호한 레이턴시를 가지며, 전력을 덜 사용하며, 오버헤드가 낮다. 트리 기반 PLRU는 대체될 다음 데이터 블록을 가리키는 이진 트리를 유지한다. 따라서, PLRU 알고리즘의 이진 트리(410)는 근사화된 가장 오래된 액세스 시간으로 데이터 블록으로의 경로를 유지한다.
도 4에 도시된 바와 같이, 트리의 현재 상태에서, 데이터 블록(420.6)은 이진 트리 내의 노드들(410.1, 410.3 및 410.6)을 포함하는 트리 경로를 통해 대체되는 것으로 지시된다. 일반적으로, 값이 "1"인 노드는 우측의 하위 노드를 가리키고(또는 트리 분기를 통해 연결되고), 값이 "0"인 노드는 좌측의 하위 노드를 가리킨다(또는 트리 분기를 통해 연결된다). 데이터 블록(420.6)과 같은 데이터 블록이 대체될 때마다, 이제 대체될 다음 것이 될 데이터 블록(420.2)을 가리키는 트리(440)에 의해 보여지는 바와 같이, 캐시 내의 다른 데이터 블록이 가리키도록, 노드(410.1, 410.3 및 410.6)로 이어진 노드들이 플립된다(그들의 값들을 변경하고, 이에 의해 그들이 가리키는 하위 노드를 변경함).
위에서 설명된 바와 같이, 도 3을 참조하면, 하나 이상의 데이터 블록이 최대 RRIP 값을 가질 때, 선택 절차가 적용되어 그로부터 대체될 하나의 데이터 블록을 선택할 수 있다(단계 355). 본 명세서에 개시된 선택 절차는 트리 기반 PLRU 알고리즘의 이진 트리를 이용할 수 있다. 도 4는 8개의 데이터 블록(420.1 내지 420.8) 및 각각의 RRIP 값(430)을 갖는 캐시(420)를 도시한다. 도시된 바와 같이, 3개의 데이터 블록(420.1, 420.3 및 420.6)은 3의 최대 RRIP 값을 갖는다. 따라서, 이진 트리(410)의 현재 상태에 기초하여 하나의 데이터 블록을 선택하는 선택 절차가 채용될 수 있다. 위에서 설명된 바와 같이, 이진 트리(410)는 데이터 블록(420.6)을 가리킨다. 그 블록은 최대 RRIP 값을 갖는 3개의 블록 중 하나이기 때문에, 그 블록은 대체되도록 선택될 것이다. 그렇지 않으면, 예를 들어, 데이터 블록(420.6)이 2의 RRIP 값을 갖고 단지 2개의 블록(420.1 및 420.3)만이 3의 최대 RRIP 값을 갖는 시나리오에서, 현재 상태의 트리가 최대 RRIP 값을 갖는 데이터 블록들 중 하나를 가리키지 않기 때문에, 선택 절차는 트리의 하위 레벨로부터 시작될 수 있다. 예를 들어, 선택 절차는 노드(410.2)로부터 시작하여 최대 RRIP 값을 갖는 데이터 블록, 이 경우에는 (노드(410.5)를 통해) 데이터 블록(420.3)으로 이어지는 경로를 따를 수 있다.
대안적으로, 선택 절차는 최하위 레벨의 트리(예를 들어, 410.4, 410.5, 410.6, 및 410.7)로부터 먼저 시작할 수 있다. 최대 RRIP 값을 갖는 다수의 블록들이 그 레벨(예를 들어, 420.1, 420.3, 및 420.6)에서 가리키는 경우, 그런 다음, 다음 레벨(예를 들어, 410.2 및 410.3)로 갈 수 있고, 그 레벨로부터 여전히 최대 RRIP 값을 갖는 다수의 블록들이 (예를 들어, 420.3 및 420.6) 가리키는 경우, 단지 하나의 블록만이 가리킬 때까지 상위 레벨의 트리로 갈 수 있다. 트리의 최상위 레벨, 예를 들어, 410.1에서, 하나의 블록만이 420.6을 가리키며, 그 블록은 대체되도록 선택될 수 있다. 일 양태에서, 데이터 블록들(420.1, 420.3, 및 420.6)은 최대 RRIP 값을 포함하는 범위 내에서 그것들과 연관된 RRIP 값들을 가질 수 있다. 그러한 경우에, 그로부터 하나의 데이터 블록의 선택은, 위에서 설명된 바와 같이, 그들 모두가 최대 RRIP 값과 연관된 것처럼 수행될 수 있다.
본 명세서의 개시에 기초하여 많은 변형들이 가능하다는 것이 이해되어야 한다. 특징 및 엘리먼트가 특정 조합으로 위에서 설명되었지만, 각각의 특징 또는 엘리먼트는 다른 특징 및 엘리먼트 없이 단독으로 또는 다른 특징 및 엘리먼트를 갖거나 갖지 않는 다양한 조합으로 사용될 수 있다.
도면들에 예시되고 그리고/또는 본 명세서에 설명된 다양한 기능 유닛들(프로세서(102), 입력 드라이버(112), 입력 디바이스들(108), 출력 드라이버(114), 출력 디바이스들(110), 가속 프로세싱 디바이스(116)를 포함하지만 이에 제한되지 않음)은 범용 컴퓨터, 프로세서, 또는 프로세서 코어로서, 또는 범용 컴퓨터, 프로세서, 또는 프로세서 코어에 의해 실행가능한, 비일시적 컴퓨터 판독가능 매체 또는 다른 매체에 저장된 프로그램, 소프트웨어, 또는 펌웨어로서 구현될 수 있다. 제공된 방법들은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서들은, 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서들, DSP 코어와 연관된 하나 이상의 마이크로프로세서들, 제어기, 마이크로제어기, ASICs(Application Specific Integrated Circuits), FPGAs(Field Programmable Gate Arrays) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 기계를 포함한다. 이러한 프로세서들은 프로세싱된 하드웨어 기술 언어(HDL) 명령어들의 결과들 및 넷리스트들을 포함하는 다른 중간 데이터(이러한 명령어들은 컴퓨터 판독가능 매체 상에 저장될 수 있음)를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과는 본 개시의 특징을 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에 사용되는 마스크워크일 수 있다.
본 명세서에 제공된 방법들 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체의 예로는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 자기 광학 매체, CD-ROM 디스크 및 디지털 다목적 디스크(DVD)와 같은 광학 매체를 포함한다.

Claims (21)

  1. 캐시 대체를 위한 방법으로서,
    캐시 제어기에 의해, 캐시 내의 데이터 블록들 각각과 연관된 재참조 간격 예측(RRIP) 값을 결정하는 단계;
    프로세서에 의해, 메모리 내의 데이터 세그먼트에 액세스하는 단계; 및
    상기 데이터 세그먼트가 상기 캐시에 저장되어 있지 않은 것에 응답하여, 상기 데이터 세그먼트에 의해 대체될 상기 캐시 내의 데이터 블록을 선택하는 단계를 포함하고, 상기 데이터 블록을 선택하는 단계는:
    최대값을 갖는 RRIP 값들과 연관된 상기 캐시에서 데이터 블록들을 검색하는 단계, 및
    다수의 데이터 블록들이 발견되면, 이진 트리를 사용하여 상기 다수의 데이터 블록들 중 하나를 선택하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 이진 트리를 사용하여 상기 다수의 데이터 블록들 중 하나를 선택하는 단계는,
    상기 이진 트리의 한 레벨에서 가리키는 유일한 최대 RRIP 값을 가진 데이터 블록을 선택하는 단계를 포함하는, 방법.
  3. 제1항에 있어서, 상기 RRIP 값은 연관된 데이터 블록이 시간 간격 내에 재사용될 가능성을 나타내는, 방법.
  4. 제1항에 있어서, 더 큰 RRIP 값은 미래에 더 먼 시간 간격에 대응하는, 방법.
  5. 제1항에 있어서, 상기 최대 RRIP 값은 상기 최대 RRIP 값을 포함하는 RRIP 값들의 범위인, 방법.
  6. 제1항에 있어서, 상기 검색하는 단계는,
    최대값을 갖는 RRIP 값과 연관된 데이터 블록이 발견되지 않는 경우:
    상기 캐시 내의 각 데이터 블록과 연관된 상기 RRIP 값을 증가시키는 단계, 및
    상기 검색하는 단계를 반복하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서, 상기 검색하는 단계는,
    최대값을 갖는 RRIP 값과 연관된 하나의 데이터 블록이 발견되면, 상기 하나의 데이터 블록을 선택하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    프로세서에 의해 데이터 세그먼트에 액세스할 때, 상기 데이터 세그먼트가 상기 캐시 내의 데이터 블록에 저장되면, 상기 데이터 블록과 연관된 상기 RRIP 값을 업데이트하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서, 상기 이진 트리는 상기 캐시 내의 데이터 블록들의 최근사용율(recency)을 추적하는, 방법.
  10. 시스템으로서,
    적어도 하나의 프로세서; 및
    명령어들을 저장하는 메모리를 포함하고, 상기 명령어들은 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금:
    캐시 제어기에 의해, 캐시 내의 데이터 블록들 각각과 연관된 RRIP 값을 결정하고,
    상기 적어도 하나의 프로세서에 의해, 상기 메모리 내의 데이터 세그먼트에 액세스하고, 그리고
    상기 데이터 세그먼트가 상기 캐시에 저장되어 있지 않은 것에 응답하여, 상기 데이터 세그먼트에 의해 대체될 상기 캐시 내의 데이터 블록을 선택하게 하고, 상기 데이터 블록을 선택하게 하는 것은:
    최대값을 갖는 RRIP 값들과 연관된 상기 캐시에서 데이터 블록들을 검색하는 것, 및
    다수의 데이터 블록들이 발견되면, 상기 캐시에서 데이터 블록들의 최근사용율을 추적하는 이진 트리를 사용하여 상기 데이터 블록들 중 하나를 선택하는 것을 포함하는, 시스템.
  11. 제10항에 있어서, 상기 이진 트리를 사용하여 상기 다수의 데이터 블록들 중 하나를 선택하는 것은,
    상기 이진 트리의 한 레벨에서 가리키는 유일한 최대 RRIP 값을 가진 데이터 블록을 선택하는 것을 포함하는, 시스템.
  12. 제10항에 있어서, 상기 RRIP 값은 연관된 데이터 블록이 시간 간격 내에 재사용될 가능성을 나타내는, 시스템.
  13. 제10항에 있어서, 더 큰 RRIP 값은 미래에 더 먼 시간 간격에 대응하는, 시스템.
  14. 제10항에 있어서, 상기 최대 RRIP 값은 상기 최대 RRIP 값을 포함하는 RRIP 값들의 범위인, 시스템.
  15. 제10항에 있어서, 상기 검색하는 것은,
    최대값을 갖는 RRIP 값과 연관된 데이터 블록이 발견되지 않는 경우:
    상기 캐시 내의 각 데이터 블록과 연관된 상기 RRIP 값을 증가시키는 것, 및
    상기 검색하는 것을 반복하는 것을 더 포함하는, 시스템.
  16. 제10항에 있어서, 상기 검색하는 것은,
    최대값을 갖는 RRIP 값과 연관된 하나의 데이터 블록이 발견되면, 상기 하나의 데이터 블록을 선택하는 것을 더 포함하는, 시스템.
  17. 제10항에 있어서, 상기 시스템으로 하여금:
    상기 적어도 하나의 프로세서에 의해 데이터 세그먼트에 액세스할 때, 상기 데이터 세그먼트가 상기 캐시 내의 데이터 블록에 저장되면, 상기 데이터 블록과 연관된 상기 RRIP 값을 업데이트하게 하는 명령어들을 더 포함하는, 시스템.
  18. 방법을 수행하기 위해 적어도 하나의 프로세서에 의해 실행가능한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체로서, 상기 방법은,
    캐시 제어기에 의해, 캐시 내의 데이터 블록들 각각과 연관된 RRIP 값을 결정하는 단계 - 상기 RRIP 값은 연관된 데이터 블록이 시간 간격 내에서 재사용될 가능성을 나타내고, 더 큰 RRIP 값은 미래에 더 먼 시간 간격에 대응함 -;
    상기 적어도 하나의 프로세서에 의해, 상기 메모리 내의 데이터 세그먼트에 액세스하는 단계; 및
    상기 데이터 세그먼트가 상기 캐시에 저장되어 있지 않은 것에 응답하여, 상기 데이터 세그먼트에 의해 대체될 상기 캐시 내의 데이터 블록을 선택하는 단계를 포함하고, 상기 데이터 블록을 선택하는 단계는:
    최대값을 갖는 RRIP 값들과 연관된 상기 캐시에서 데이터 블록들을 검색하는 단계, 및
    상기 다수의 데이터 블록들이 발견되면, 상기 캐시에서 데이터 블록들의 최근사용율을 추적하는 이진 트리를 사용하여 상기 데이터 블록들 중 하나를 선택하는 단계를 포함하는, 매체.
  19. 제18항에 있어서, 상기 검색하는 단계는,
    최대값을 갖는 RRIP 값과 연관된 데이터 블록이 발견되지 않는 경우:
    상기 캐시 내의 각 데이터 블록과 연관된 상기 RRIP 값을 증가시키는 단계, 및
    상기 검색하는 단계를 반복하는 단계를 더 포함하는, 매체.
  20. 제18항에 있어서, 상기 검색하는 단계는,
    최대값을 갖는 RRIP 값과 연관된 하나의 데이터 블록이 발견되면, 상기 하나의 데이터 블록을 선택하는 단계를 더 포함하는, 매체.
  21. 제18항에 있어서,
    프로세서에 의해 데이터 세그먼트에 액세스할 때, 상기 데이터 세그먼트가 상기 캐시 내의 데이터 블록에 저장되면, 상기 데이터 블록과 연관된 상기 RRIP 값을 업데이트하는 단계를 더 포함하는, 매체.
KR1020247013716A 2021-09-29 2022-08-08 의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip) KR20240070630A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/489,726 US20230102891A1 (en) 2021-09-29 2021-09-29 Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
US17/489,726 2021-09-29
PCT/US2022/039759 WO2023055486A1 (en) 2021-09-29 2022-08-08 Re-reference interval prediction (rrip) with pseudo-lru supplemental age information

Publications (1)

Publication Number Publication Date
KR20240070630A true KR20240070630A (ko) 2024-05-21

Family

ID=85721904

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247013716A KR20240070630A (ko) 2021-09-29 2022-08-08 의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip)

Country Status (4)

Country Link
US (1) US20230102891A1 (ko)
KR (1) KR20240070630A (ko)
CN (1) CN118020064A (ko)
WO (1) WO2023055486A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11860784B1 (en) * 2022-06-27 2024-01-02 Advanced Micro Devices, Inc. Live profile-driven cache aging policies
US20230418765A1 (en) * 2022-06-27 2023-12-28 Arm Limited Cache replacement control
US11914518B1 (en) * 2022-09-21 2024-02-27 Arm Limited Apparatus and method for operating a cache storage

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113137A1 (en) * 2007-10-30 2009-04-30 Grayson Brian C Pseudo least recently used (plru) cache replacement
US8180969B2 (en) * 2008-01-15 2012-05-15 Freescale Semiconductor, Inc. Cache using pseudo least recently used (PLRU) cache replacement with locking
US8301842B2 (en) * 2009-08-26 2012-10-30 Via Technologies, Inc. Efficient pseudo-LRU for colliding accesses
US20120096226A1 (en) * 2010-10-18 2012-04-19 Thompson Stephen P Two level replacement scheme optimizes for performance, power, and area
WO2013095467A1 (en) * 2011-12-21 2013-06-27 Intel Corporation A balanced p-lru tree for a "multiple of 3" number of ways cache
US10185668B2 (en) * 2016-04-08 2019-01-22 Qualcomm Incorporated Cost-aware cache replacement
US10489306B2 (en) * 2016-05-17 2019-11-26 Arm Limited Apparatus and method for processing data, including cache entry replacement performed based upon content data read from candidates selected using victim selection
EP3572946B1 (en) * 2017-03-08 2022-12-07 Huawei Technologies Co., Ltd. Cache replacement method, device, and system
US10983922B2 (en) * 2018-05-18 2021-04-20 International Business Machines Corporation Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module
US11836088B2 (en) * 2021-12-21 2023-12-05 Advanced Micro Devices, Inc. Guided cache replacement

Also Published As

Publication number Publication date
WO2023055486A1 (en) 2023-04-06
CN118020064A (zh) 2024-05-10
US20230102891A1 (en) 2023-03-30

Similar Documents

Publication Publication Date Title
US9274959B2 (en) Handling virtual memory address synonyms in a multi-level cache hierarchy structure
KR20240070630A (ko) 의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip)
US9563568B2 (en) Hierarchical cache structure and handling thereof
JP2020529656A (ja) アドレス変換キャッシュ
CN112753024B (zh) 基于外部存储器的转换后备缓冲器
US9612975B2 (en) Page cache device and method for efficient mapping
US10740248B2 (en) Methods and systems for predicting virtual address
US10915459B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
CN107438837A (zh) 数据高速缓存
WO2023108938A1 (zh) 解决高速缓冲存储器地址二义性问题的方法和装置
KR102543675B1 (ko) 변환 색인 버퍼 내 구성 가능한 스큐된 연관성
CN114036084A (zh) 一种数据访问方法、共享缓存、芯片系统和电子设备
US8127079B2 (en) Intelligent cache injection
CN114925001A (zh) 处理器、页表预取方法、电子设备
US11321235B2 (en) Cache memory device, system including the same, and method of operating the same
US8661169B2 (en) Copying data to a cache using direct memory access
US10565111B2 (en) Processor
CN115495394A (zh) 数据预取方法和数据预取装置
US11494300B2 (en) Page table walker with page table entry (PTE) physical address prediction
CN115098410A (zh) 处理器、用于处理器的数据处理方法及电子设备
US11704250B2 (en) Using request class and reuse recording in one cache for insertion policies of another cache
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US20230112575A1 (en) Accelerator for concurrent insert and lookup operations in cuckoo hashing
US20240111687A1 (en) Translating Virtual Memory Addresses to Physical Memory Addresses
US20230101038A1 (en) Deterministic mixed latency cache