KR20150032890A - 비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법 - Google Patents

비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법 Download PDF

Info

Publication number
KR20150032890A
KR20150032890A KR20157003100A KR20157003100A KR20150032890A KR 20150032890 A KR20150032890 A KR 20150032890A KR 20157003100 A KR20157003100 A KR 20157003100A KR 20157003100 A KR20157003100 A KR 20157003100A KR 20150032890 A KR20150032890 A KR 20150032890A
Authority
KR
South Korea
Prior art keywords
cache
policy
replacement
parameter value
value
Prior art date
Application number
KR20157003100A
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 KR20150032890A publication Critical patent/KR20150032890A/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
    • 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
    • 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
    • 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/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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk

Landscapes

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

Abstract

제거할 캐시의 라인들을 선택하기 위한 교체 정책들 사이에서 적응적으로 변경하기 위한 기술들 및 메커니즘들. 일 실시예에서, 평가 로직은 비휘발성 메모리에 대한 기록들에 대한 성능 규준의 값을 결정한다. 결정된 성능 규준의 값에 기초하여, 교체 정책의 파라미터 값이 결정된다. 다른 실시예에서, 캐시 교체 로직은 데이터 제거를 위해 캐시 라인의 선택을 수행하며, 선택은 정책 유닛이 결정된 파라미터 값의 지시를 제공하는 것에 응답한다.

Description

비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법{APPARATUS, SYSTEM AND METHOD FOR ADAPTIVE CACHE REPLACEMENT IN A NON-VOLATILE MAIN MEMORY SYSTEM}
본 발명은 일반적으로 컴퓨터 시스템 내의 캐시에 관한 것으로서, 배타적이 아니라 구체적으로는 캐시에서 블록들을 교체하기 위한 방법에 관한 것이다.
캐시들은 컴퓨터의 처리 자원들에 대한 중요한 정보에 대한 비교적 정밀하고 빠른 액세스를 제공한다. 예를 들어, 캐시들은 중앙 처리 유닛(CPU)에 의해 최근에 액세스된 메모리 블록들을 저장하는 데에 종종 사용된다. 그러나, 캐시들을 이용 가능한 메모리 블록들 모두를 저장할 만큼 충분히 크게 하는 것은 실용적이지 못하다. 그러한 큰 캐시가 메인 메모리를 불필요하게 할 것이라는 분명한 사실은 차치하고, 캐시 메모리는 메인 메모리보다 비싸다. 비용을 낮추기 위해, 캐시는 메인 메모리에 비해 작은 크기를 갖는 경향이 있다.
캐시들은 메인 메모리 내의 모든 블록을 저장할 수 없으므로, 새로운 블록이 캐시로부터 할당될 필요가 있는 경우, 캐시는 교체 정책을 이용하여, 현재 캐시 내에 있는 어느 블록을 교체할지를 결정해야 한다. 양호한 교체 정책은 효과적인 캐시 이용을 위해 매우 귀중하다. 최저 사용 빈도(Least Frequently Used: LFU) 교체 정책은 캐시 내의 각각의 블록이 얼마나 자주 사용되었는지를 추적하고, 최저 사용 빈도를 갖는 블록을 교체한다. 최저 최근 사용(Least Recently Used: LRU) 교체 정책은 캐시 내의 각각의 블록이 사용된 이후에 얼마나 오래되었는지를 추적하고, 최종 사용 이후에 가장 오래된 블록을 교체한다. LRU 및 LFU는 2개의 인기 있는 캐시 교체 정책이다. 그러나, LRU도 LFU도 모든 컴퓨팅 응용들의 요구들에 적합하지는 않다. 메모리 시스템들의 크기 및 속도가 집적 회로 기술의 연속하는 세대들과 함께 증가함에 따라, 그러한 메모리 시스템들의 성능은 캐시 관리의 비효율성에 점점 민감해지고 있다.
본 발명의 다양한 실시예들은 첨부 도면들에서 한정이 아니라 예시적으로 도시된다. 도면들에서:
도 1은 일 실시예에 따른, 적응성 캐시 교체를 제공하기 위한 시스템의 요소들을 나타내는 블록도이다.
도 2는 일 실시예에 따른, 캐시 교체 정책의 파라미터를 결정하기 위한 정책 유닛의 요소들을 나타내는 블록도이다.
도 3은 일 실시예에 따른, 캐시 교체 정책을 결정하기 위한 방법의 요소들을 나타내는 흐름도이다.
도 4a는 일 실시예에 따른, 적응성 캐시 교체를 제공하기 위한 우선순위들의 세트의 요소들을 나타내는 표이다.
도 4b는 일 실시예에 따른, 캐시 교체 파라미터를 결정하기 위한 알고리즘의 요소들을 나타내는 의사 코드이다.
도 4c는 일 실시예에 따른, 캐싱된 데이터를 제거하기 위한 방법의 요소들을 나타내는 흐름도이다.
도 5는 일 실시예에 따른, 캐시 교체를 필요로 하는 캐시 시스템의 요소들을 나타내는 블록도이다.
도 6은 일 실시예에 따른, 캐시 교체를 제공하기 위한 컴퓨터 플랫폼의 요소들을 나타내는 블록도이다.
특정 실시예들은, 예를 들어 비휘발성 메인 메모리의 비대칭 판독/기록 성능을 고려하고, 비휘발성 메모리의 기록 성능의 현재 상태에 기초하여 교체 정책들 사이에서 적응적으로 변경하는 적응성 캐시 교체를 다양하게 제공한다. 본 명세서에서는 다양한 실시예들의 특정한 특징들이 섹터화된 캐시에 대한 캐시 교체와 관련하여 설명된다. 섹터화된 캐시는 예를 들어 3개의 파라미터, 즉 라인 크기(L), 섹터 크기(S) 및 웨이(way) 크기(W)에 의해 특성화될 수 있다. 라인 크기(L)는 캐시 라인의 크기이다. 섹터 크기(S)는 캐시 라인 내의 각각의 섹터의 크기이며, 여기서 캐시 라인 내의 섹터들의 수는 L/S이다. 웨이 크기(W)는 세트 내의 웨이들의 수이다. 그러나, 그러한 설명은 임의의 다양한 다른 캐시 타입에 추가로 또는 대안으로 적용되도록 확장될 수 있다.
도 1은 일 실시예에 따른, 데이터를 캐싱하기 위한 예시적인 컴퓨터 시스템(100)의 요소들을 나타낸다. 컴퓨터 시스템(100)은 예를 들어 데스크탑 컴퓨터, 노트북, 울트라북 또는 다른 랩탑 컴퓨터, 핸드헬드 컴퓨터 - 예를 들어, 태블릿, 팜탑, 셀폰, 미디어 플레이어 등 - 및/또는 다른 그러한 컴퓨터 시스템과 같은 개인용 컴퓨터의 하드웨어 플랫폼을 포함할 수 있다. 대안으로서 또는 추가로, 컴퓨터 시스템(100)은 서버, 워크스테이션 또는 다른 그러한 컴퓨터 시스템으로서의 동작을 제공할 수 있다. 일 실시예에서, 컴퓨터 시스템(100)은 캐시 교체 동작들을 수행하기 위한 상이한 정책들 사이에서 적응적으로 변경하기 위한 하나 이상의 메커니즘을 포함한다.
일 실시예에서, 컴퓨터 시스템(100)은 컴퓨터 시스템(100)의 적어도 하나의 프로세서의 하나 이상의 코어(110)를 포함하며, 하나 이상의 코어(110)는 컴퓨터 시스템(100)에 저장된 데이터에 다양하게 액세스 및/또는 연산한다. 하나 이상의 코어(110) 중 일부 또는 전부는 중앙 처리 유닛(CPU), 그래픽 프로세서, 코프로세서, 보안 프로세서 등을 포함하지만 이에 한정되지 않는 임의의 다양한 프로세서 내에 존재할 수 있다. 예를 들어, 하나 이상의 코어(110)는 컴퓨터 시스템(100)의 상이한 각각의 프로세서 상에 존재하는 코어들을 포함할 수 있지만, 특정 실시예들은 이와 관련하여 한정되지 않는다.
컴퓨터 시스템(100)은 하나 이상의 코어(110)에 의한 액세스를 위해 데이터를 저장하기 위한 비휘발성 메모리(130)를 더 포함할 수 있다. 예를 들어, 비휘발성 메모리(130)는 플래시 메모리, 비휘발성 정적 RAM(nvSRAM), 강유전성 RAM(FRAM), 자기 저항성 RAM(MRAM), 상변화 메모리(PCM), 스위치를 갖는 상변화 메모리(PCMS) 및 임의의 다양한 다른 그러한 비휘발성 메모리 하드웨어 중 하나 이상을 포함하지만 이에 한정되지 않는 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 비휘발성 메모리(130)는 컴퓨터 시스템(100)을 위한 메인 메모리의 일부 또는 전부로서 동작할 수 있지만, 특정 실시예들은 이와 관련하여 한정되지 않는다.
일 실시예에서, 컴퓨터 시스템(100)은 하나 이상의 코어(110) 및 비휘발성 메모리(130)에 직접 또는 간접적으로 다양하게 결합되는, 예를 들어 휘발성 캐시 메모리를 포함하는 캐시(120)를 더 포함한다. 캐시(120)는 하나 이상의 코어(110)에 의한 액세스를 위해 데이터를 캐싱할 수 있으며, 이는 예를 들어 비휘발성 메모리(130)에 저장된 버전의 데이터를 캐싱하는 것을 포함한다. 일 실시예에서, 캐시(120)의 일부 또는 전부는 하나 이상의 코어(110)를 포함하는 CPU와 같은 처리 유닛 내에 존재한다. 대안으로서 또는 추가로, 캐시(120)의 일부 또는 전부는 그러한 처리 유닛 밖에 존재할 수 있다. 한정이 아니라 예로서, 캐시(120)는 L1 캐시, L2 캐시, L3 캐시 등 중 하나 이상을 포함할 수 있다.
캐시(120)의 동작은 컴퓨터 시스템(100)의 임의의 다양한 통상적인 캐시 관리 기술 및/또는 메커니즘에 의해 지원될 수 있다. 예를 들어, 캐시(120)는 컴퓨터 시스템(100)의 다수의 캐시 중 하나일 수 있으며, 예를 들어 그러한 캐시들의 상태는 컴퓨터 시스템(100)의 캐시 일관성 로직에 의해 추적된다. 그러한 캐시 일관성 로직은 예를 들어 캐시(120)에 저장된 데이터의 상태를 추적할 수 있다. 한정이 아니라 예로서, 다양한 캐싱된 데이터는 복수의 분류 중 하나를 이용하여 상이한 시간들에 분류될 수 있다. 그러한 분류들은 예를 들어 캐시의 라인이 현재 유용한 데이터를 저장하고 있지 않다는 것을 지시하기 위한 "무효" 분류를 포함할 수 있다. 대안으로서 또는 추가로, 그러한 분류들은 캐시의 라인이 비휘발성 메모리(130)에 저장된 데이터의 최신 버전을 저장하고 있다는 것을 지시하기 위한 "순수(Clean)" 분류를 포함할 수 있다. 대안으로서 또는 추가로, 그러한 분류들은 캐시의 라인이 기록되었으며, 비휘발성 메모리(130)에 저장된 대응하는 데이터가 오래된 것이라는 것을 지시하기 위한 "오염(Dirty)" 분류를 포함할 수 있다. 일 실시예에서, 데이터의 분류는 암시적일 수 있는데, 예를 들어 캐시의 라인을 무효로서 분류하지 못하는 것은 캐시의 라인을 유효로서 암시적으로 분류하고, 캐시의 라인을 오염으로 분류하지 못하는 것은 캐시의 라인을 순수으로서 암시적으로 분류하는 등이다. 캐싱된 데이터의 상태를 추적하기 위한 임의의 다양한 추가 또는 대안 분류가 상이한 실시예들에 따라 이용될 수 있다. 캐시 데이터의 그러한 상태들의 추적은 특정 실시예들에서 종래의 기술들에 따를 수 있다. 다양한 실시예들의 특징들을 불명확하게 하지 않기 위해, 특정의 통상적인 캐시 관리 기술들 및/또는 메커니즘들은 컴퓨터 시스템(100) 내에 도시되지 않는다.
일 실시예에서, 컴퓨터 시스템(100)은 제거할 캐시(120)의 라인을 선택하기 위한 로직, 예를 들어 하드웨어, 펌웨어 및/또는 실행 소프트웨어를 포함하는 캐시 교체 유닛(140)을 더 포함한다. 제거할 라인의 선택은 캐시 교체 정책, 예를 들어 컴퓨터 시스템(100)의 복수의 캐시 교체 정책으로부터 선택된 정책에 따를 수 있다. 캐시 교체 유닛(140)은 예를 들어 종래의 기술들에 따라 캐시 교체를 수행하는 로직을 포함하거나 그에 결합될 수 있다. 일 실시예에서, 캐시 교체 유닛(140)은 임의의 그러한 종래의 캐시 교체 기술들을 보완하기 위한 로직을 포함한다.
한정이 아니라 예로서, 캐시 교체 유닛(140)은 상이한 시간들에 상이한 캐시 교체 정책들을 다양하게 구현하기 위한 로직을 포함하거나 그렇지 않은 경우 그에 대한 액세스를 가질 수 있다. 그러한 정책들은 캐시의 블록, 예를 들어 라인을 제거될 데이터를 갖는 것으로서 식별하기 위한 상이한 각각의 기준을 포함할 수 있다. 그러한 데이터의 제거는 캐시(120)의 라인이 비휘발성 메모리(130)로부터의 다른 데이터를 캐싱하는 데 이용될 수 있게 할 수 있다. 일 실시예에서, 캐시 교체 유닛(140)은 컴퓨터 시스템(100)의 동작 동안의 주어진 시점에 하나의 캐시 교체 정책의 구현으로부터 다른 캐시 교체 정책의 구현으로 적응적으로 변경할 수 있다. 그러한 적응성 변경은 예를 들어 컴퓨터 시스템(100)의 상태의 검출에 기초할 수 있다. 한정이 아니라 예로서, 그러한 적응성 정책 변경은 캐시(120) 내의 데이터에 액세스하고/하거나 비휘발성 메모리(130) 내의 데이터에 액세스하기 위한 동작 또는 동작들을 설명하는 하나 이상의 성능 규준(metric)에 기초할 수 있다.
컴퓨터 시스템(100)은 컴퓨터 시스템(100)의 상태를 검출하고, 식별된 상태에 기초하여, 캐시(120)의 관리를 위해 적용할 캐시 교체 정책을 캐시 교체 유닛(140)에 지시하기 위한 로직, 예를 들어 하드웨어, 펌웨어 및/또는 실행 소프트웨어를 포함하는 정책 유닛(150)을 더 포함할 수 있다. 정책 유닛(150)은 캐시 교체 유닛(140)의 일부 또는 모든 로직와 통합될 수 있지만, 특정 실시예들은 이와 관련하여 한정되지 않는다. 일 실시예에서, 정책 유닛(150)은 반복된 평가들을 수행하여 컴퓨터 시스템(100)의 현재 상태를 결정한다. 그러한 반복된 평가들에 기초하여, 정책 유닛(150)은 상이한 캐시 교체 정책들을 연속 식별할 수 있다. 정책 유닛(150)에 의해 식별된 정책들의 연속에 응답하여, 캐시 교체 유닛(140)은 캐시(120)에 대한 제1 캐시 교체 정책의 구현으로부터 캐시(120)에 대한 제2 캐시 교체 정책의 구현으로 적응적으로 변경할 수 있다.
도 2는 캐시를 관리하기 위한 캐시 교체 정책을 지시하기 위한 일 실시예에 따른 정책 유닛(200)의 요소들을 나타낸다. 정책 유닛(200)은 예를 들어 컴퓨터 시스템(100)의 특징들의 일부 또는 전부를 갖는 컴퓨터 시스템 내에서 동작할 수 있다. 일 실시예에서, 정책 유닛(200)은 정책 유닛(150)의 기능의 일부 또는 전부를 제공한다.
정책 유닛(200)은 컴퓨터 시스템의 성능 규준의 값(215)을 결정하기 위한 평가 로직(210)을 포함할 수 있다. 일 실시예에서, 평가 로직(210)은 컴퓨터 시스템의 프로세서 코어, 캐시 및 비휘발성 메모리 중 하나 이상과 교환되는 통신의 지시(205)를 검출하기 위한, 예를 들어 하드웨어, 펌웨어 및/또는 실행 소프트웨어를 포함하는 로직을 포함한다. 한정이 아니라 예로서, 정책 유닛(200)은 컴퓨터 시스템의 비휘발성 메모리와, 캐시 메모리 및 프로세서 코어 중 하나 또는 양자 사이에 결합되는, 예를 들어 데이터 버스, 어드레스 버스, 제어 버스 등의 신호 라인들을 포함하는 하나 이상의 신호 라인을 스누핑(snooping)할 수 있다. 일 실시예에서, 지시(205)는 컴퓨터 시스템의 비휘발성 메모리 디바이스, 프로세서 코어 또는 캐시로부터 전송되는 전용 제어 신호이다. 특정 실시예들은 정책 유닛(200)에 지시(205)를 제공하는 특정 메커니즘과 관련하여 한정되지 않는다.
값(215)의 결정은 평가 로직(210)이 비휘발성 메모리에 대한 기록들을 위한, 예를 들어 기록들에 특정적인 성능 규준을 평가하는 것을 포함할 수 있다. 예를 들어, 값(215)은 그러한 비휘발성 메모리에 기록하기 위한 동작들만을 설명하는 정보에 기초하여 계산되거나 결정될 수 있다. 일 실시예에서, 값(215)은 그러한 비휘발성 메모리로부터 판독하기 위한 동작의 임의의 평가와 무관하게 평가된다. 성능 규준은 예를 들어 특정한 하나 이상의 프로세서 코어에 의한 비휘발성 메모리에 대한 기록들에 특정적일 수 있지만, 특정 실시예들은 이와 관련하여 한정되지 않는다.
일 실시예에서, 값(215)은 비휘발성 메모리에 기록하기 위한 동작들에서 발생하는 스톨링(stalling)의 양을 설명한다. 그러한 스톨링은 예를 들어 주어진 기록 명령을 서비스하기 위해 특정의 다음 동작을 수행하는 특정의 자원, 예를 들어 버스, 버퍼, 스케줄링 로직 등의 이용 불가로 인해 유발될 수 있다. 그러한 이용 불가를 검출하기 위한 임의의 다양한 종래의 메커니즘이 이용될 수 있으며, 특정 실시예들에서 한정되지 않는다. 일 실시예에서, 규준 값(215)은 비휘발성 메모리에 대한 일부 기록 명령(또는 기록 명령들)이 스톨링되는 시간의 양, 예를 들어 클럭 사이클들의 수를 설명한다. 간소화를 위해, 본 명세서에서 그러한 사이클들은 스톨링된 기록 사이클들로서 지칭된다.
한정이 아니라 예로서, 규준 값(215)은 일부 시간 기간 내에 스톨링된 기록 사이클들의 총 수의 카운트 write_stall_count를 포함할 수 있다. 기간은 사전 결정된 시간 윈도 파라미터 T_window에 기초할 수 있다. 일 실시예에서, 평가 로직(210)은 성능 규준의 평가를 주기적으로 수행할 수 있으며, 각각의 평가는 길이 T_window의 각각인 시간 기간들의 시퀀스 내의 각각의 시간 기간 동안에 행해진다. 규준 값(215)은 예를 들어 소정의 임계 시간 양 이상으로, 예를 들어 소정의 임계 클럭 사이클 수 이상으로 각각 스톨링된 소정의 시간 기간 동안의 기록 동작들의 총 수의 카운트를 설명한다. 추가로 또는 대안으로서, 규준 값(215)은 그러한 임계 시간 양 이상으로 각각 스톨링된 소정 시간 기간 동안의 모든 기록 동작들의 부분(예로서, 분수, 백분율 등)를 설명할 수 있다. 상이한 실시예들에 따르면, 임의의 다양한 추가 또는 대안 규준이 기록 스톨링을 설명하는 데 사용될 수 있다.
정책 유닛(200)은 규준 값(215)을 식별하는 신호(220)를 평가 로직(210)으로부터 수신하기 위한 정책 파라미터 로직(230)을 더 포함할 수 있다. 평가 로직(210)이 규준 값(215)을 식별하는 것에 기초하여, 정책 파라미터 로직(230)은 캐시 교체 정책의 파라미터 값(235)을 결정할 수 있다. 결정된 파라미터 값(235)에 기초하여, 정책 파라미터 로직(230)은 컴퓨터 시스템의 캐시를 관리하기 위해 적용될 교체 정책을 지시하는 신호(240)를 생성할 수 있다. 일 실시예에서, 신호(240)는 캐시 교체 유닛에 대한 파라미터 값(235)을 지정하며, 캐시 교체는 신호(240)에 의한 파라미터 값(235)의 지정에 기초하여 구현할 캐시 교체 정책을 결정한다. 예를 들어, 신호(240)는 캐시 교체 유닛에 의해 구현될 캐시 교체 정책의 모든 기준들을 포함할 수 있다.
일 실시예에서, 파라미터 값(235)은 캐시 라인의 특성에 대한 임계값을 포함하며, 예를 들어 특성과 임계값의 비교는 캐시 라인이 데이터 제거를 위한 후보인지를 평가하기 위한 기초이다. 그러한 임계치는 예를 들어 특정 분류를 갖는 캐시의 블록 내의, 예를 들어 캐시 라인 내의 최대(또는 대안으로서 최소) 허용 가능 데이터 양일 수 있다. 한정이 아니라 예로서, 그러한 임계치는 오염으로 분류되는 캐시 라인 내의 섹터들의 최소 수일 수 있다. 따라서, 그러한 임계치는 순수로서 분류되는 캐시 라인 내의 섹터들의 최대 수일 수 있다. 그러한 임계치는 상이한 실시예들에 따라 추가로 또는 대안으로서 특정의 다른 분류, 예를 들어 유효 분류의 최대(또는 최소) 데이터 양을 포함할 수 있다.
정책 파라미터 로직(230)은 상이한 캐시 교체 정책들의 각각의 파라미터를 식별하기 위한 데이터 및/또는 로직을 포함할 수 있다. 그러한 다수의 정책은 예를 들어 특정 분류, 예를 들어 오염, 순수, 유효 등 중 하나의 분류를 갖는 캐시 라인의 데이터의 양에 적어도 부분적으로 기초하여 제거할 캐시 라인을 선택하기 위한 제1 정책을 포함할 수 있다. 특정 실시예들의 특징들을 설명하기 위해, 그러한 정책은 "오염 인식" 정책의 맥락에서 설명된다. 오염 인식 캐시 교체 정책은 본 명세서에서 지칭되는 바와 같이 라인 내에 저장된 특정 데이터가 오염인지에 기초하여 캐시 라인을 교체할지를 평가하는 정책이다. 예를 들어, 정책은 라인 내의 오염 데이터의 양이 임계 데이터 양을 초과하는지를 결정할 수 있다. 오염 인식 교체 정책은 대안으로서 적어도 캐시 라인의 데이터가 오염인지를 결정하는 것이 그러한 데이터가 순수인지를 또한 결정하는 한은 "순수 인식" 교체 정책으로 간주되고 지칭될 수 있다. 임의의 다양한 추가 또는 대안 데이터 분류가 주어진 교체 정책에 따라 제거할 캐시 라인을 선택하기 위한 기초로서 사용될 수 있다.
정책 파라미터 로직(230)이 다양하게 지시하는 다수의 정책은 추가로 또는 대안으로서 제거할 캐시 라인을 그 캐시 라인 내의 데이터의 특정 분류(또는 임의 분류)와 무관하게 선택하기 위한 제2 정책을 포함할 수 있다. 예를 들어, 그러한 제2 정책은 데이터가 오염인지와 무관한 평가를 수행할 수 있다. 간소화를 위해, 그러한 정책은 본 명세서에서 오염 불가지론(dirtiness agnostic) 교체 정책으로서 지칭된다. 오염 불가지론 교체 정책은 대안으로서 순수 불가지론 교체 정책으로 간주되고 지칭될 수 있다. 오염 불가지론(순수 불가지론) 정책은 예를 들어 LRU, LFU 또는 랜덤 캐시 교체 정책을 포함할 수 있다.
도 3은 일 실시예에 따른, 캐시 교체 정책을 결정하기 위한 방법(300)의 요소들을 나타낸다. 방법(300)은 컴퓨터 시스템(100)의 특징들의 일부 또는 전부를 갖는 시스템을 위한 캐시 교체 정책을 결정할 수 있다. 일 실시예에서, 방법(300)은 정책 유닛(200)의 기능의 일부 또는 전부를 포함하는 로직을 이용하여 수행된다.
방법(300)은 310에서 비휘발성 메모리에 대한 기록들에 대한 성능 규준의 값을 결정하는 단계를 포함할 수 있다. 일 실시예에서, 비휘발성 메모리 및 캐시 메모리 각각은 컴퓨터 시스템의 하나 이상의 프로세서에 의한 액세스를 위해 각각의 데이터를 저장한다. 성능 규준은 예를 들어 비휘발성 메모리에 대한 기록 액세스들의 스톨링을 설명할 수 있다. 일 실시예에서, 성능 규준 값은 310에서 기록 완료 시간들 각각과 임계 시간 기간의 연속 비교들에 기초하여 결정되며, 기록 완료 시간들은 비휘발성 메모리에 액세스하기 위한 상이한 각각의 기록 인스턴스에 대한 것이다.
한정이 아니라 예로서, 310에서 결정되는 값은 스톨링된 것으로 식별되는 기록 액세스들의 수일 수 있다. 예를 들어, 310에서 결정되는 값은 시간 윈도 파라미터 값과 동일한 길이를 갖는 시간 기간 내에 발생하는 스톨링된 기록 액세스들의 총 수일 수 있다. 대안으로서 또는 추가로, 310에서 결정되는 값은 스톨링된 기록 인스턴스들인 액세스 인스턴스들의 특정 세트의 백분율 또는 다른 분수를 설명할 수 있다.
320에서, 방법(300)은 310에서 결정된 값에 기초하여 교체 정책의 파라미터 값을 결정하는 단계를 더 포함할 수 있다. 320에서의 파라미터 값의 결정은 예를 들어 스톨링된 기록 액세스들의 수와 임계 액세스 수를 비교하는 단계를 포함할 수 있다. 일 실시예에서, 320에서 결정되는 파라미터 값은 캐시 메모리의 라인을 교체 정책의 주어진 우선순위를 충족시키는 것으로서 분류하기 위한 임계값이다. 일 실시예에서, 파라미터 값은 320에서 비휘발성 메모리에 대한 판독 액세스를 위한 성능 규준의 임의 값과 무관하게 결정된다.
330에서, 방법(300)은 320에서 결정된 파라미터 값에 기초하여 신호를 생성하는 단계를 더 포함할 수 있으며, 신호는 교체 정책을 지시한다. 일 실시예에서, 330에서 생성된 신호에 기초하여, 지시된 교체 정책에 따라 제거할 캐시 메모리의 라인이 선택된다.
특정 실시예들은 캐시 내의 오염 데이터를 더 오래 유지하기 위한 능력에 있어서의 변동을 동적으로 수용하기 위해, 예를 들어 비휘발성(예로서, 메인) 메모리로의 기록 트래픽을 줄이기 위해 상이한 시간들에 상이한 캐시 교체 정책들을 다양하게 적응시킬 수 있다. 예를 들어, N[l, d] 및 N[l, c]를 각각 임의의 주어진 캐시 라인 l에 대한 오염 섹터들 및 순수 섹터들의 수라고 한다. 그러면, N[l, v] = N[l, d] + N[l, c]는 그 캐시 라인의 유효 섹터들의 수를 나타낼 수 있다. 각각의 캐시 라인 l에 대한 N[l, d], N[l, c] 및 N[l, v]의 각각의 값에 기초하여, 캐시를 평가하여, 캐시 라인을 제거할 후보로서 식별할 수 있다.
일 실시예에서, 캐시 교체 유닛(140)의 캐시 교체 로직와 같은 캐시 교체 로직은 캐시를 평가하여 제거할 캐시 라인을 식별할 수 있으며, 평가는 도 4a의 우선순위 리스트(400)에 기초한다. 도 4c는 일 실시예에 따른, 평가들을 연속적으로 반복하기 위한 알고리즘(440)의 요소들을 나타내며, 평가들의 하나 이상의 파라미터가 성능 규준의 현재 값에 기초하여 동적으로 재평가된다. 예를 들어, 그러한 캐시 교체 로직은 각각의 희생 우선순위에 기초하여, 예를 들어 우선순위 리스트(400)의 희생 우선순위들 각각에 기초하여 연속 평가들을 각각 수행할 수 있다.
한정이 아니라 예로서, 캐시 교체 로직은 우선순위 리스트(400)의 우선순위 0에 기초하여 제1 평가를 수행할 수 있으며, 제1 평가는 임의의 무효 캐시 라인을 검색한다. 캐시 라인 l의 무효성은 예를 들어 N[l, v], N[l, d] 및 N[l, c] 모두가 0인 경우에 지시될 수 있다. 제1 평가가 임의의 무효 캐시 라인을 식별하지 못하는 경우, 캐시 교체 로직은 일 실시예에서 우선순위 리스트(400)의 우선순위 1에 기초하여 제2 평가를 수행할 수 있으며, 제2 평가는 적은 양의 유효 데이터를 갖는 것으로 간주되는 임의의 캐시 라인을 제거를 위해 식별한다. 일 실시예에서, 캐시 라인 l의 낮은 유효성은 예를 들어 N[l, v]가 T_low1보다 작은(다른 실시예에서는 작거나 동일한) 것을 검출하는 것에 응답하여 임계치 파라미터 T_low1에 대한 N[l, v]의 관계에 의해 지시될 수 있다.
제2 평가가 임의의 낮은 유효 캐시 라인을 식별하지 못하는 경우, 캐시 교체 로직은 일 실시예에서 우선순위 리스트(400)의 우선순위 2에 기초하여 제3 평가를 수행할 수 있으며, 제3 평가는 적은 양의 유효 데이터를 갖는 것으로 간주되는 임의의 캐시 라인을 제거를 위해 식별한다. 일 실시예에서, 캐시 라인 l의 낮은 오염성은 예를 들어 N[l, d]가 T_low2보다 작은(다른 실시예에서는 작거나 동일한) 것을 검출하는 것에 응답하여 임계치 파라미터 T_low2에 대한 N[l, d]의 관계에 의해 지시될 수 있다. 일 실시예에서, T_low1 및 T_low2는 동일한 임계치 파라미터이다.
제3 평가가 임의의 낮은 오염 캐시 라인을 식별하지 못하는 경우, 캐시 교체 로직은 일 실시예에서 우선순위 리스트(400)의 우선순위 3에 기초하여 제4 평가를 수행할 수 있다. 제4 평가는 일 실시예에서 캐시의 캐시 라인들에 저장된 데이터의 하나 이상의 분류에 대해 불가지론적일 수 있다. 한정이 아니라 예로서, 제4 평가는 캐시 라인 내의 데이터가 특정 분류 또는 분류들의 세트(예로서, 유효, 오염, 순수 등 중 하나 이상)를 갖는지에 관계없이 그 캐시 라인이 제거할 후보인지를 결정할 수 있다. 제4 평가는 상이한 실시예들에 따라 LRU 캐시 교체 우선순위, LFU 캐시 교체 우선순위 또는 임의의 다양한 다른 그러한 오염-불가지론(또는 다른 데이터-분류-불가지론) 정책일 수 있다.
도 4c는 하나의 캐시 교체 정책에 따라 캐시를 관리하는 것으로부터 다른 캐시 교체 정책에 따라 캐시를 관리하는 것으로 적응적으로 변경하기 위한 다양한 실시예들에 따른 방법(440)의 요소들을 나타낸다. 방법(440)은 예를 들어 캐시 교체 유닛(140) 및 정책 유닛(150)의 특징들의 일부 또는 전부를 포함하는 회로 로직에 의해 수행될 수 있다.
방법(440)은 445에서 적어도 하나의 캐시 라인이 제거를 위해 선택되어야 한다는 것을 지시하는 특정의 제거 이벤트를 검출하는 단계를 포함할 수 있으며, 예를 들어 선택된 캐시 라인의 데이터는 비휘발성 메모리로부터의 다른 데이터로 교체되어야 한다. 445에서의 검출은 예를 들어 시간 기간의 만료, 캐시 액세스의 검출, 비휘발성 메모리 액세스에 기초할 수 있고/있거나, 제거할 캐시 라인의 선택의 필요성을 식별하기 위한 임의의 다양한 종래의 기술에 따를 수 있다.
방법(440)은 제거 이벤트가 지시될 때까지 445에서의 검출을 반복 수행하기 위한 임의의 다양한 루프 시퀀스를 더 포함할 수 있다. 한정이 아니라 예로서, 제거 이벤트가 445에서 검출되지 않는 경우, 방법(440)은 485에서 추가적인 캐시 교체 처리가 필요하지 않다는 것을 지시하는 임의의 종료 이벤트, 예를 들어 시스템 파워 다운을 검출하기 위해 테스트를 수행할 수 있다. 종료 이벤트가 485에서 검출되지 않는 경우, 방법(440)은 445에서의 결정을 반복할 수 있다.
일 실시예에서, 445에서의 제거 이벤트의 검출은 데이터 제거를 필요로 하는 캐시 라인을 식별하기 위한 평가들의 시퀀스를 시작할 수 있다. 그러한 평가들의 시퀀스는 캐시의 평가들의 시퀀스 중 하나 이상을 포함할 수 있으며, 예를 들어 시퀀스의 각각의 평가는 상이한 각각의 정책 기준에 따른다. 평가 시퀀스는 임계치 파라미터 T_low1이 특정의 제1 값으로 설정되는 동안 그리고/또는 임계치 파라미터 T_low2가 특정의 제2 값으로 설정되는 동안 적어도 한 번 수행될 수 있다. 대안 실시예에서, T_low1 및 T_low2는 동일한 임계치 파라미터이다.
한정이 아니라 예로서, 방법(440)의 평가들의 시퀀스는 450에서 우선순위 리스트(400)의 무효 라인(우선순위 0)을 식별하기 위한 제1 평가를 포함할 수 있다. 450에서의 평가가 무효 캐시 라인을 식별하지 못하는 경우, 방법(400)은 455에서 낮은 유효 라인(우선순위 리스트(400)의 우선순위 1)을 식별하기 위한 제2 평가를 수행할 수 있다. 455에서의 평가가 T_low1의 현재 값에 기초하여 낮은 유효 캐시 라인을 식별하지 못하는 경우, 방법(400)은 460에서 낮은 오염 라인(우선순위 리스트(400)의 우선순위 2)을 식별하기 위한 제3 평가를 수행할 수 있다. 460에서의 평가가 T_Low2의 현재 값에 기초하여 낮은 오염 캐시 라인을 식별하지 못하는 경우, 방법(400)은 470에서 예를 들어 캐시의 LRU 라인을 식별하기 위해 우선순위 리스트(400)의 우선순위 3에 대한 제4 평가를 수행할 수 있다. 일 실시예에서, 동작들(450, 455, 460) 중 어느 하나가 캐시 라인을 식별하거나, 대안으로서 동작 470 후에 캐시 라인을 식별하는 경우, 475에서 방법(400)은 식별된 캐시 라인으로부터 데이터를 제거할 수 있다. 방법(400)은 다양한 실시예들에 따라 제거할 캐시 라인을 다양하게 식별하기 위한 임의의 다양한 하나 이상의 추가 또는 대안 평가를 포함할 수 있다.
일 실시예에서, 방법(400)은 평가들의 시퀀스의 하나의 수행으로부터 평가들의 시퀀스의 다음 수행으로 캐시 교체 정책을 적응적으로 변경하기 위한 기술들을 더 포함한다. 한정이 아니라 예로서, 방법(400)은 480에서 임계치 T_low1, T_low2 중 하나 또는 양자를 재평가할 수 있다. 도 4b의 의사 코드(410)는 일 실시예에 따른 임계치 T_low1, T_low2의 재평가를 위한 기술의 요소들을 나타낸다. 의사 코드(410)의 라인 415에 나타난 바와 같이, 예를 들어 평가 로직(210)에 의해, 카운트 write_stall_count가 특정의 임계치 T_adaptive보다 큰지(또는 대안으로서 크거나 같은지)에 대한 테스트가 수행될 수 있다. 415에서의 테스트 조건은 비휘발성 메모리에 대한 액세스들이 하나 이상의 시스템 자원의 남용을 유발하고 있는지를 지시할 수 있다.
그러한 남용이 라인 415의 테스트에 의해 지시되는 경우, 라인 420에서 T_low1이 특정의 양의 기준 값 T_ref1로 설정될 수 있고/있거나, 라인 425에서 T_low2가 특정의 양의 기준 값 T_ref2로 설정될 수 있다. T_ref1 및/또는 T_ref2의 특정 값은 구현 특정적일 수 있으며, 특정 실시예에 대해 한정하지 않는다. 일 실시예에서, T_low1을 T_ref1로 설정하고/하거나 T_low2를 T_low2로 설정하는 것은 방법(400)의 평가 시퀀스가 오염 인식(순수 인식) 캐시 교체 정책을 구현하게 한다. 이와 달리, 자원 남용이 라인 415의 테스트에 의해 지시되지 않는 경우, 라인 430에서 T_low1이 0으로 설정될 수 있고/있거나, 라인 435에서 T_low2가 0으로 설정될 수 있다. 일 실시예에서, T_low1 및 T_low2를 0으로 설정하는 것은 방법(400)의 평가 시퀀스가 어떤 점에서는 오염 불가지론적인(순수 불가지론적인) 상이한 캐시 교체 정책을 구현하게 한다. 예를 들어, T_low1이 0으로 설정되는 동안, 455에서의 평가는 어떠한 캐시 라인도 제거할 낮은 유효 후보로서 선택하지 못할 수 있다. 대안으로서 또는 추가로, T_low2가 0으로 설정되는 동안, 460에서의 평가는 어떠한 캐시 라인도 제거할 낮은 오염 후보로서 선택하지 못할 수 있다. 따라서, T_low1 및 T_low2 양자가 0으로 설정되는 동안, 방법(440)의 평가 시퀀스는 단지 동작 470, 예를 들어 우선순위 리스트(400)의 우선순위 3에 대한 오염 불가지론적 (또는 다른 데이터-분류-불가지론적) 평가를 이용하여 제거할 캐시 라인을 선택할 것이다.
일 실시예에서, 480에서의 T_low1 및/또는 T_low2의 재평가는 의사 코드(410)의 특징들의 일부 또는 전부를 포함한다. 그러한 재평가 후에, 방법(440)은 예를 들어 동작 485가 종료 이벤트가 지시되지 않는 것으로 결정하고, 동작 445가 다른 캐시 라인이 제거를 위해 선택되어야 한다는 것을 검출하는 것에 응답하여 평가 시퀀스의 다른 수행을 시작할 수 있다.
도 5는 일 실시예에 따른, 캐시 교체를 구현하기 위한 정보를 포함하는 캐시 시스템(500)의 요소들을 나타낸다. 캐시 시스템(500)은 예를 들어 컴퓨터 시스템(100)의 특징들의 일부 또는 전부를 갖는 시스템의 컴포넌트일 수 있다. 일 실시예에서, 캐시 시스템(500)은 방법(300)의 기술들의 일부 또는 전부에 기초하여 관리된다.
캐시 시스템(500)은 비휘발성 메모리(도시되지 않음)에 저장된 데이터의 각각의 버전을 다양하게 캐싱하는, 예를 들어 예시적인 라인 X(525)를 포함하는 캐시 라인들(520)을 포함할 수 있다. 캐시 라인들(520) 각각은 하나 이상의 섹터를 포함할 수 있으며, 예를 들어 라인 X(525)는 예시적인 섹터들(S1, S2,..., SZ)을 포함한다.
캐시 시스템(500)의 동작 동안의 주어진 시간에, 섹터들(S1, S2,..., SZ) 내의 각각의 데이터는 예를 들어 캐시 일관성, 캐시 교체 및/또는 임의의 다양한 다른 캐시 관리 기술을 위해 추적되는 다양한 상태들에 있을 수 있다. 그러한 캐시 관리를 용이하게 하기 위해, 캐시 시스템(500)은 캐시 라인들(520) 중 상이한 각각의 캐시 라인에 각각 대응하는 태그들을 포함하는 태그 어레이(510)를 더 포함할 수 있다. 한정이 아니라 예로서, 태그 어레이(510)는 캐시 라인들(520) 중 라인 525에 대응하는 태그 x(515)를 포함할 수 있다. 일 실시예에서, 태그 x(515)는 라인 525가 캐시 라인들(520) 중 최저 최근 사용 캐시 라인인지를 지정하는 값 LRU를 저장한다. 대안으로서 또는 추가로, 태그 x(515)는 각자가 섹터들(S1, S2,..., SZ) 각각에 특정적인 하나 이상의 상태 값을 저장할 수 있다.
한정이 아니라 예로서, 태그 x(515)는 섹터 S1에 대해 섹터 S1의 데이터가 유효한지 그리고 섹터 S1의 데이터가 오염인지를 각각 지정하는 값 S1_IsValid 및 S1_IsDirty를 저장할 수 있다. 태그 x(515)는 유사하게 섹터 S2에 대한 값 S2_IsValid, S2_IsDirty, 섹터 SZ에 대한 값 SX_IsValid, SZ_IsDirty 및/또는 임의의 다양한 추가 또는 대안의 섹터 특정적 상태 정보를 저장할 수 있다. 일 실시예에서, 태그 x(515)의 정보의 일부는 종래의 캐시 일관성 및/또는 다른 캐시 관리 기술들에 따라 저장 및/또는 유지된다.
캐시 교체 정책은 일 실시예에서 태그 어레이(510) 내의 정보에 기초하여 캐시 라인들(520)의 일부 또는 전부를 평가하는 단계를 포함할 수 있다. 예를 들어, 캐시 교체 유닛(140)은 정책 유닛(150)에 의한 캐시 교체 정책의 식별에 응답하여 각각의 캐시 교체 기준에 따라 캐시 라인들(520) 각각의 하나 이상의 평가를 수행할 수 있다. 한정이 아니라 예로서, 그러한 평가는 S1_IsValid, S2_IsValid,..., SZ_IsValid의 카운트에 기초하여, 유효로서 분류되는 라인(525) 내의 데이터의 총량을 계산하는 단계를 포함할 수 있다. 대안으로서 또는 추가로, 그러한 평가는 S1_IsDirty, S2_IsDirty,..., SZ_IsDirty의 카운트에 기초하여, 오염으로 분류되는 라인(525) 내의 데이터의 총량을 계산하는 단계를 포함할 수 있다. 하나 이상의 그러한 계산에 기초하여, 캐시 교체 유닛(140)(또는 다른 그러한 로직)은 라인 X(525)가 캐시 교체 정책의 기준을 충족시키는지를 결정할 수 있다. 예를 들어, 그러한 카운트들은 T_low1 및 T_low2 중 하나와 같은 임계치와 비교될 수 있다.
도 6은 일 실시예에 따른, 캐시 교체를 결정하기 위한 예시적인 컴퓨터 플랫폼(600)의 요소들을 나타낸다. 컴퓨터 플랫폼(600)은 예를 들어 서버, 워크스테이션, 데스크탑 컴퓨터, 랩탑 컴퓨터, 핸드헬드 컴퓨터 - 예를 들어, 태블릿, 팜탑, 셀폰, 미디어 플레이어 등 - 및/또는 다른 그러한 컴퓨터 시스템과 같은 컴퓨터의 하드웨어 플랫폼을 포함할 수 있다. 대안으로서, 실시예들은 하나 이상의 내장 애플리케이션에서 구현될 수 있으며, 예를 들어 내장 프로세서는 제거할 캐시 라인을 선택하기 위해 상이한 캐시 교체 정책들 각각을 적응적으로 구현하기 위한 동작들을 구현한다. 그러한 적응성 캐시 교체는 프로세서(609)의 캐시(608) 및/또는 컴퓨터 플랫폼(600)의 임의의 다른 캐시에 적용될 수 있다.
일 실시예에서, 컴퓨터 플랫폼(600)은 정보를 통신하기 위한, 예시적인 버스(601)에 의해 표현되는 적어도 하나의 상호접속 및 그러한 정보를 처리하기 위한 프로세서(609), 예를 들어 중앙 처리 유닛을 포함한다. 프로세서(609)는 복합 명령어 세트 컴퓨터(CISC) 타입 아키텍처, 축소 명령어 세트 컴퓨터(RISC) 타입 아키텍처 및/또는 임의의 다양한 프로세서 아키텍처 타입의 기능을 포함할 수 있다. 프로세서(609)는 버스(601)를 통해 컴퓨터 플랫폼(600)의 하나 이상의 다른 컴포넌트와 결합할 수 있다. 한정이 아니라 예로서, 컴퓨터 플랫폼(600)은 정보 및/또는 프로세서(609)에 의해 실행될 명령어들을 저장하기 위해 버스(601)에 결합된 예시적인 비휘발성 메인 메모리(604)에 의해 표현되는 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스를 포함할 수 있다. 메인 메모리(604)는 프로세서(609)에 의한 명령어들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하는 데에도 사용될 수 있다. 컴퓨터 플랫폼(600)은 추가로 또는 대안으로서 프로세서(609)를 위한 정적 정보 및/또는 명령어들을 저장하기 위해 판독 전용 메모리(ROM)(606) 및/또는 다른 정적 저장 디바이스를 포함할 수 있으며, 예를 들어 ROM(606)은 버스(601)를 통해 프로세서(609)에 결합된다.
일 실시예에서, 컴퓨터 플랫폼(600)은 추가로 또는 대안으로서 예를 들어 버스(601)를 통해 프로세서(609)에 결합되는 데이터 저장 디바이스(607)(예로서, 자기 디스크, 광 디스크 및/또는 다른 기계 판독 가능 매체)를 포함한다. 데이터 저장 디바이스(607)는 예를 들어 프로세서(609) 상에서 연산되거나 액세스될 명령어들 또는 다른 정보를 포함할 수 있다. 일 실시예에서, 프로세서(609)는 메인 메모리(604)에 대한 액세스들, 예를 들어 스톨링된 기록 액세스들에 기초하여 캐시 교체 정책 평가들을 수행할 수 있다.
컴퓨터 플랫폼(600)은 추가로 또는 대안으로서 컴퓨터 사용자에게 정보를 표시하기 위한 디스플레이 디바이스(621)를 포함할 수 있다. 디스플레이 디바이스(621)는 예를 들어 프레임 버퍼, 특화된 그래픽 렌더링 디바이스, 음극선관(CRT), 평판 디스플레이 등을 포함할 수 있다. 추가로 또는 대안으로서, 컴퓨터 플랫폼(600)은 예를 들어 사용자 입력을 수신하기 위한 영숫자 및/또는 다른 키들을 포함하는 입력 디바이스(622)를 포함할 수 있다. 추가로 또는 대안으로서, 컴퓨터 플랫폼(600)은 위치, 선택 또는 다른 커서 정보를 프로세서(609)로 통신하고/하거나, 예를 들어 디스플레이 디바이스(621) 상의 커서의 움직임을 제어하기 위한 마우스, 트랙볼, 펜, 터치스크린 또는 커서 방향 키들과 같은 커서 제어 디바이스(623)를 포함할 수 있다.
컴퓨터 플랫폼(600)은 추가로 또는 대안으로서 종이, 필름 또는 유사한 타입의 매체와 같은 매체 상에 명령어들, 데이터 또는 다른 정보를 인쇄하기 위한 프린터와 같은 하드 카피 디바이스(624)를 구비할 수 있다. 추가로 또는 대안으로서, 컴퓨터 플랫폼(600)은 오디오 정보를 수신 및/또는 출력하기 위한 마이크 및/또는 스피커와 같은 사운드 기록/재생 디바이스(625)를 포함할 수 있다. 컴퓨터 플랫폼(600)은 추가로 또는 대안으로서 이미지를 디지털화하기 위한 스틸 또는 모션 카메라와 같은 디지털 비디오 디바이스(626)를 포함할 수 있다.
일 실시예에서, 컴퓨터 플랫폼(600)은 예를 들어 하나 이상의 안테나(695)를 통해 컴퓨터 플랫폼(600)을 하나 이상의 네트워크(도시되지 않음)에 접속하기 위한 네트워크 인터페이스(690)를 포함하거나 그에 결합된다. 그러한 하나 이상의 네트워크는 예를 들어 전용 저장 영역 네트워크(SAN), 근거리 네트워크(LAN), 광역 네트워크(WAN), 가상 LAN(VLAN), 인터넷 및/또는 임의의 다양한 다른 타입의 네트워크를 포함할 수 있다. 한정이 아니라 예로서, 네트워크 인터페이스(690)는 네트워크 인터페이스 카드(NIC), 다이폴 안테나와 같은 안테나, 또는 무선 송수신기 중 하나 이상을 포함할 수 있지만, 본 발명의 범위는 이와 관련하여 한정되지 않는다.
일 양태에서, 장치는 비휘발성 메모리에 대한 기록들에 대한 성능 규준의 값을 결정하기 위한 평가 로직을 포함하는 정책을 유닛을 포함하고, 비휘발성 메모리 및 캐시 메모리 각각은 하나 이상의 프로세서에 의한 액세스를 위해 각각의 데이터를 저장한다. 정책 유닛은 성능 규준의 값에 기초하여 교체 정책의 파라미터 값을 결정하기 위한 정책 파라미터 로직을 더 포함한다. 정책 유닛은 파라미터 값에 기초하여 교체 정책을 지시하는 신호를 생성하며, 캐시 교체 유닛은 제거할 캐시 메모리의 라인을 선택하고, 라인은 신호에 기초하여 교체 정책에 따라 선택된다.
일 실시예에서, 규준은 비휘발성 메모리에 대한 기록들의 스톨링을 설명한다. 일 실시예에서, 규준은 스톨링된 기록 액세스들의 수이다. 일 실시예에서, 규준은 시간 윈도 파라미터 값과 동일한 길이를 갖는 시간 기간 내에 스톨링된 기록 액세스들의 수이다. 일 실시예에서, 파라미터 값을 결정하기 위한 정책 파라미터 로직은 액세스들의 수와 임계 액세스 수를 비교하기 위한 정책 파라미터 로직을 포함한다. 일 실시예에서, 파라미터 값은 캐시 메모리의 라인을 우선순위화하기 위한 임계값이다. 일 실시예에서, 파라미터는 오염 섹터들의 수 또는 유효 섹터들의 수에 대한 임계값이다. 일 실시예에서, 정책 파라미터 로직은 오염 인식 교체 정책 및 최저 최근 사용 교체 정책으로부터의 전이를 위해 신호를 생성한다.
다른 양태에서, 방법은 비휘발성 메모리에 대한 기록들에 대한 성능 규준의 값을 결정하는 단계를 포함하고, 비휘발성 메모리 및 캐시 메모리 각각은 하나 이상의 프로세서에 의한 액세스를 위해 각각의 데이터를 저장한다. 방법은 성능 규준의 값에 기초하여 교체 정책의 파라미터 값을 결정하는 단계, 및 파라미터 값에 기초하여 교체 정책을 지시하는 신호를 생성하는 단계를 포함하며, 신호에 기초하여, 캐시 메모리의 라인이 제거를 위해 교체 정책에 따라 선택된다.
일 실시예에서, 규준은 비휘발성 메모리에 대한 기록들의 스톨링을 설명한다. 일 실시예에서, 규준은 스톨링된 기록 액세스들의 수이다. 일 실시예에서, 규준은 시간 윈도 파라미터 값과 동일한 길이를 갖는 시간 기간 내에 스톨링된 기록 액세스들의 수이다. 일 실시예에서, 파라미터 값을 결정하는 단계는 액세스들의 수와 임계 액세스 수를 비교하는 단계를 포함한다. 일 실시예에서, 파라미터 값은 캐시 메모리의 라인을 우선순위화하기 위한 임계값이다. 일 실시예에서, 파라미터는 오염 섹터들의 수 또는 유효 섹터들의 수에 대한 임계값이다. 일 실시예에서, 신호는 오염 인식 교체 정책 및 최저 최근 사용 교체 정책으로부터의 전이를 위해 생성된다.
다른 양태에서, 컴퓨터 시스템은 하나 이상의 프로세서 코어, 하나 이상의 프로세서에 의한 액세스를 위해 각각의 데이터를 저장하기 위한 캐시 메모리 및 비휘발성 메모리를 포함한다. 컴퓨터 시스템은 비휘발성 메모리에 대한 기록들에 대한 성능 규준의 값을 결정하기 위한 평가 로직을 포함하는 정책 유닛, 및 성능 규준의 값에 기초하여, 교체 정책의 파라미터 값을 결정하기 위한 정책 파라미터 로직을 더 포함한다. 정책 유닛은 파라미터 값에 기초하여 교체 정책을 지시하는 신호를 생성한다. 컴퓨터 시스템은 정책 유닛에 결합되는 캐시 교체 유닛을 더 포함하며, 캐시 교체 유닛은 제거할 캐시 메모리의 라인을 선택하고, 라인은 신호에 기초하여 교체 정책에 따라 선택된다.
일 실시예에서, 규준은 비휘발성 메모리에 대한 기록들의 스톨링을 설명한다. 일 실시예에서, 규준은 스톨링된 기록 액세스들의 수이다. 일 실시예에서, 규준은 시간 윈도 파라미터 값과 동일한 길이를 갖는 기간 내에 스톨링된 기록 액세스들의 수이다. 일 실시예에서, 파라미터 값을 결정하기 위한 정책 파라미터 로직은 액세스들의 수와 임계 액세스 수를 비교하기 위한 정책 파라미터 로직을 포함한다. 일 실시예에서, 파라미터 값은 캐시 메모리의 라인을 우선순위화하기 위한 임계값이다. 일 실시예에서, 파라미터는 오염 섹터들의 수 또는 유효 섹터들의 수에 대한 임계값이다. 일 실시예에서, 정책 파라미터 로직은 오염 인식 교체 정책 및 최저 최근 사용 교체 정책으로부터의 전이를 위해 신호를 생성한다.
다른 양태에서, 컴퓨터 판독 가능 저장 매체는 하나 이상의 처리 유닛에 의해 실행될 때 하나 이상의 처리 유닛으로 하여금 방법을 수행하게 하는 명령어들을 저장한다. 방법은 비휘발성 메모리에 대한 기록들에 대한 성능 규준의 값을 결정하는 단계를 포함하고, 비휘발성 메모리 및 캐시 메모리 각각은 하나 이상의 프로세서에 의한 액세스를 위해 각각의 데이터를 저장한다. 방법은 성능 규준의 값에 기초하여 교체 정책의 파라미터 값을 결정하는 단계, 및 파라미터 값에 기초하여 교체 정책을 지시하는 신호를 생성하는 단계를 더 포함하며, 신호에 기초하여, 캐시 메모리의 라인이 제거를 위해 교체 정책에 따라 선택된다.
일 실시예에서, 규준은 비휘발성 메모리에 대한 기록들의 스톨링을 설명한다. 일 실시예에서, 규준은 스톨링된 기록 액세스들의 수이다. 일 실시예에서, 규준은 시간 윈도 파라미터 값과 동일한 길이를 갖는 시간 기간 내에 스톨링된 기록 액세스들의 수이다. 일 실시예에서, 파라미터 값을 결정하는 단계는 액세스들의 수와 임계 액세스 수를 비교하는 단계를 포함한다. 일 실시예에서, 파라미터 값은 캐시 메모리의 라인을 우선순위화하기 위한 임계값이다.
본 명세서에서는 캐시 메모리를 조작하기 위한 기술들 및 아키텍처들이 설명된다. 위의 설명에서는, 설명의 목적으로, 특정 실시예들의 충분한 이해를 제공하기 위해 다양한 특정 상세들이 설명되었다. 그러나, 특정 실시예들은 이러한 특정 상세 없이도 실시될 수 있다는 것이 이 분야의 기술자에게 명백할 것이다. 다른 예들에서는 설명을 불명확하게 하지 않기 위해 구조들 및 디바이스들이 블록도 형태로 도시된다.
명세서에서 "하나의 실시예" 또는 "일 실시예"에 대한 참조는 실시예와 관련하여 설명되는 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서의 다양한 곳에서의 "일 실시예에서"라는 문구의 출현들은 모두가 반드시 동일 실시예를 지칭하지는 않는다.
본 명세서에서의 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 알고리즘들 및 심벌 표현들과 관련하여 설명된다. 이러한 알고리즘 설명들 및 표현들은 컴퓨팅 분야의 기술자들이 그들의 연구 내용을 다른 기술자들에게 가장 효과적으로 전달하기 위해 사용하는 수단이다. 본 명세서에서 그리고 일반적으로, 알고리즘은 원하는 결과를 유도하는 단계들의 적절한 시퀀스인 것으로 간주된다. 단계들은 물리량들의 물리적 조작들을 필요로 하는 것들이다. 통상적으로, 반드시 그렇지는 않지만, 이러한 양들은 저장, 전송, 결합, 비교 및 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 때때로, 주로 일반적인 사용의 이유로 인해, 이러한 신호들을 비트, 값, 요소, 심벌, 문자, 용어, 번호 등으로 지칭하는 것이 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량들과 연관되어야 하며, 이러한 양들에 적용되는 편리한 라벨들일 뿐이라는 것을 기억해야 한다. 본 명세서에서의 설명으로부터 명백한 바와 같이 구체적으로 달리 언급되지 않는 한, 명세서 전반에서 "처리" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 또는 "표시" 등과 같은 용어들을 이용하는 설명은 컴퓨터 시스템의 레지스터들 및 메모리들 내에 물리(전자) 양들로서 표현되는 데이터를 조작하여, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 전송 또는 디스플레이 디바이스들 내에 물리량들로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스들을 지칭한다는 것을 안다.
특정 실시예들은 본 명세서의 동작들을 수행하기 위한 장치와도 관련된다. 이러한 장치는 필요한 목적들을 위해 특별히 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 그러한 컴퓨터 프로그램은 플로피 디스크, 광 디스크, CD-ROM 및 광자기 디스크를 포함하는 임의 타입의 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 예를 들어 동적 RAM(DRAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어들을 저장하기에 적합하고 컴퓨터 시스템 버스에 결합되는 임의 타입의 매체와 같은, 그러나 이에 한정되지 않는 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본 명세서에서 제공되는 알고리즘들 및 디스플레이들은 임의의 특정 컴퓨터 또는 다른 장치와 고유하게 관련되지는 않는다. 다양한 범용 시스템들이 본 명세서에서의 가르침들에 따른 프로그램들과 함께 사용될 수 있거나, 필요한 방법 단계들을 수행하도록 더 특수화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 다양한 이러한 시스템들을 위해 필요한 구조는 본 명세서에서의 설명으로부터 명백해질 것이다. 게다가, 특정 실시예들은 임의의 특정 프로그래밍 언어와 관련하여 설명되지 않는다. 본 명세서에서 설명되는 바와 같은 실시예들의 가르침들을 구현하기 위해 다양한 프로그래밍 언어들이 사용될 수 있다는 것을 알 것이다.
본 명세서에서 설명되는 것 외에도, 개시된 실시예들 및 그들의 구현들에 대해 그들의 범위를 벗어나지 않고서 다양한 변경들이 행해질 수 있다. 따라서, 실례들 및 사례들은 한정이 아니라 예시적인 것으로 해석되어야 한다. 본 발명의 범위는 아래의 청구항들만을 참조하여 평가되어야 한다.

Claims (20)

  1. 정책 유닛
    을 포함하고,
    상기 정책 유닛은,
    비휘발성 메모리에 대한 기록들에 대한 성능 규준(performance metric)의 값을 결정하기 위한 평가 수단 - 상기 비휘발성 메모리 및 캐시 메모리 각각은 하나 이상의 프로세서에 의한 액세스를 위해 각자의 데이터를 저장함 -; 및
    상기 성능 규준의 상기 값에 기초하여, 교체 정책의 파라미터 값을 결정하기 위한 정책 파라미터 수단
    을 포함하고,
    상기 정책 유닛은 상기 파라미터 값에 기초하여 상기 교체 정책을 지시하는 신호를 생성하고, 캐시 교체 유닛이 제거를 위해 상기 캐시 메모리의 라인을 선택하고, 상기 라인은 상기 신호에 기초하여 상기 교체 정책에 따라 선택되는 장치.
  2. 제1항에 있어서,
    상기 규준은 상기 비휘발성 메모리에 대한 기록들의 스톨링(stalling)을 설명하는 장치.
  3. 제2항에 있어서,
    상기 규준은 스톨링된 기록 액세스들의 수인 장치.
  4. 제3항에 있어서,
    상기 규준은 시간 윈도 파라미터 값과 동일한 길이를 갖는 시간 기간 내에 스톨링된 기록 액세스들의 수인 장치.
  5. 제1항에 있어서,
    상기 파라미터 값은 상기 캐시 메모리의 라인을 우선순위화하기 위한 임계값인 장치.
  6. 제5항에 있어서,
    상기 파라미터 값은 오염(dirty) 섹터들의 수 또는 유효(valid) 섹터들의 수에 대한 임계값인 장치.
  7. 제1항에 있어서,
    상기 정책 파라미터 수단은 또한 오염 인식 교체 정책 및 최저 최근 사용(least recently used) 교체 정책으로부터의 전이를 위해 상기 신호를 더 생성하는 장치.
  8. 하나 이상의 프로세서 코어;
    상기 하나 이상의 프로세서에 의한 액세스를 위해 각자의 데이터를 각각 저장하는 캐시 메모리 및 비휘발성 메모리;
    정책 유닛 - 상기 정책 유닛은,
    상기 비휘발성 메모리에 대한 기록들에 대한 성능 규준의 값을 결정하기 위한 평가 로직; 및
    상기 성능 규준의 상기 값에 기초하여, 교체 정책의 파라미터 값을 결정하기 위한 정책 파라미터 로직
    을 포함하고, 상기 정책 유닛은 상기 파라미터 값에 기초하여 상기 교체 정책을 지시하는 신호를 생성함 -; 및
    상기 정책 유닛에 결합되는 캐시 교체 유닛 - 상기 캐시 교체 유닛은 제거를 위해 상기 캐시 메모리의 라인을 선택하고, 상기 라인은 상기 신호에 기초하여 상기 교체 정책에 따라 선택됨 -
    을 포함하는 컴퓨터 시스템.
  9. 제8항에 있어서,
    상기 규준은 상기 비휘발성 메모리에 대한 스톨링된 기록 액세스들의 수를 포함하는 컴퓨터 시스템.
  10. 제9항에 있어서,
    상기 규준은 시간 윈도 파라미터 값과 동일한 길이를 갖는 시간 기간 내에 스톨링된 기록 액세스들의 수인 컴퓨터 시스템.
  11. 제8항에 있어서,
    상기 파라미터 값은 상기 캐시 메모리의 라인을 우선순위화하기 위한 임계값인 컴퓨터 시스템.
  12. 제11항에 있어서,
    상기 파라미터 값은 오염 섹터들의 수 또는 유효 섹터들의 수에 대한 임계값인 컴퓨터 시스템.
  13. 제8항에 있어서,
    상기 정책 파라미터 로직은 오염 인식 교체 정책 및 최저 최근 사용 교체 정책으로부터의 전이를 위해 상기 신호를 생성하는 컴퓨터 시스템.
  14. 비휘발성 메모리로의 기록들에 대한 성능 규준의 값을 결정하는 단계 - 상기 비휘발성 메모리 및 캐시 메모리 각각은 하나 이상의 프로세서에 의한 액세스를 위해 각자의 데이터를 저장함 -;
    상기 성능 규준의 상기 값에 기초하여, 교체 정책의 파라미터 값을 결정하는 단계; 및
    상기 파라미터 값에 기초하여 상기 교체 정책을 지시하는 신호를 생성하는 단계 - 상기 신호에 기초하여, 상기 캐시 메모리의 라인이 제거를 위해 상기 교체 정책에 따라 선택됨 -
    를 포함하는 방법.
  15. 제14항에 있어서,
    상기 규준은 상기 비휘발성 메모리에 대한 스톨링된 기록 액세스들의 수를 포함하는 방법.
  16. 제15항에 있어서,
    상기 규준은 시간 윈도 파라미터 값과 동일한 길이를 갖는 시간 기간 내에 스톨링된 기록 액세스들의 수인 방법.
  17. 제14항에 있어서,
    상기 파라미터 값은 상기 캐시 메모리의 라인을 우선순위화하기 위한 임계값인 방법.
  18. 제17항에 있어서,
    상기 파라미터 값은 오염 섹터들의 수 또는 유효 섹터들의 수에 대한 임계값인 방법.
  19. 제14항에 있어서,
    상기 신호는 오염 인식 교체 정책 및 최저 최근 사용 교체 정책으로부터의 전이를 위해 생성되는 방법.
  20. 프로세서에 의해 실행될 때 제14항 내지 제19항 중 어느 한 항의 방법을 수행하는 명령어들을 저장한 컴퓨터 프로그램 제품.
KR20157003100A 2012-09-25 2013-06-07 비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법 KR20150032890A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/626,464 US9003126B2 (en) 2012-09-25 2012-09-25 Apparatus, system and method for adaptive cache replacement in a non-volatile main memory system
US13/626,464 2012-09-25
PCT/US2013/044804 WO2014051718A1 (en) 2012-09-25 2013-06-07 Apparatus, system and method for adaptive cache replacement in a non-volatile main memory system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020167016930A Division KR20160079148A (ko) 2012-09-25 2013-06-07 비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20150032890A true KR20150032890A (ko) 2015-03-30

Family

ID=50340062

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167016930A KR20160079148A (ko) 2012-09-25 2013-06-07 비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법
KR20157003100A KR20150032890A (ko) 2012-09-25 2013-06-07 비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167016930A KR20160079148A (ko) 2012-09-25 2013-06-07 비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법

Country Status (5)

Country Link
US (1) US9003126B2 (ko)
EP (1) EP2901239B1 (ko)
KR (2) KR20160079148A (ko)
CN (1) CN104583891B (ko)
WO (1) WO2014051718A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095639A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Utility and lifetime based cache replacement policy
WO2015051503A1 (en) * 2013-10-09 2015-04-16 Advanced Micro Devices, Inc. Enhancing lifetime of non-volatile cache by injecting random replacement policy
WO2015051506A1 (en) * 2013-10-09 2015-04-16 Advanced Micro Devices, Inc. Enhancing lifetime of non-volatile cache by reducing intra-block write variation
US9405706B2 (en) * 2014-09-25 2016-08-02 Intel Corporation Instruction and logic for adaptive dataset priorities in processor caches
US9501419B2 (en) * 2014-10-08 2016-11-22 HGST Netherlands B.V. Apparatus, systems, and methods for providing a memory efficient cache
US10187488B2 (en) * 2015-02-25 2019-01-22 Netapp, Inc. Methods for managing replacement in a distributed cache environment and devices thereof
US11093397B1 (en) * 2015-05-19 2021-08-17 EMC IP Holding Company LLC Container-based flash cache with a survival queue
WO2017111891A1 (en) 2015-12-21 2017-06-29 Hewlett Packard Enterprise Development Lp Caching io requests
US9798672B1 (en) 2016-04-14 2017-10-24 Macom Connectivity Solutions, Llc Data managment for cache memory
US10853267B2 (en) * 2016-06-14 2020-12-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache
US20180173636A1 (en) * 2016-12-20 2018-06-21 Intel Corporation Increasing lifetime reliability for a cache memory
US10540281B2 (en) * 2017-01-17 2020-01-21 Arm Limited Cache allocation based on quality-of-service monitoring
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
CN109375878A (zh) * 2018-10-26 2019-02-22 郑州云海信息技术有限公司 一种缓存资源处理方法、装置以及计算机可读存储介质
US10698821B2 (en) * 2018-10-30 2020-06-30 EMC IP Holding Company LLC In-memory dataflow execution with dynamic placement of cache operations and action execution ordering
KR20210011216A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 메타 데이터 관리 방법 및 장치
KR20210011176A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 액세스 동작 방법 및 장치
KR20210014338A (ko) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법
KR20200119059A (ko) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200132047A (ko) 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
KR20210011201A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 온도 조절 방법
CN113392042B (zh) * 2020-03-12 2024-04-09 伊姆西Ip控股有限责任公司 用于管理缓存的方法、电子设备和计算机程序产品
CN114169017A (zh) * 2020-09-11 2022-03-11 Oppo广东移动通信有限公司 缓存数据块下电方法、装置及集成电路芯片
CN116897335A (zh) * 2021-02-26 2023-10-17 华为技术有限公司 一种缓存替换方法和装置
US11907138B2 (en) 2021-12-31 2024-02-20 Qualcomm Incorporated Multimedia compressed frame aware cache replacement policy

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671780B1 (en) 2000-05-31 2003-12-30 Intel Corporation Modified least recently allocated cache replacement method and apparatus that allows skipping a least recently allocated cache block
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6523092B1 (en) 2000-09-29 2003-02-18 Intel Corporation Cache line replacement policy enhancement to avoid memory page thrashing
US6823426B2 (en) 2001-12-20 2004-11-23 Intel Corporation System and method of data replacement in cache ways
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7290093B2 (en) 2003-01-07 2007-10-30 Intel Corporation Cache memory to support a processor's power mode of operation
US7356651B2 (en) * 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7711901B2 (en) 2004-02-13 2010-05-04 Intel Corporation Method, system, and apparatus for an hierarchical cache line replacement
US7788078B1 (en) 2004-02-27 2010-08-31 Synopsys, Inc. Processor/memory co-exploration at multiple abstraction levels
US7397740B2 (en) * 2004-11-26 2008-07-08 Mediatek Incorporation Method and recording device capable of selecting a write strategy applied to an optical disc
US7676630B2 (en) 2006-10-05 2010-03-09 Sun Microsystems, Inc. Method and apparatus for using a determined file access pattern to perform caching in a file system
US20100030963A1 (en) * 2008-08-04 2010-02-04 Sandisk Il Ltd. Managing storage of cached content
US8032706B2 (en) 2008-08-05 2011-10-04 Intel Corporation Method and apparatus for detecting a data access violation
WO2010039142A1 (en) * 2008-10-02 2010-04-08 Hewlett-Packard Development Company, L.P. Cache controller and method of operation
US8112585B2 (en) * 2009-04-30 2012-02-07 Netapp, Inc. Method and apparatus for dynamically switching cache policies
US20110055838A1 (en) * 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
KR101574207B1 (ko) 2009-10-16 2015-12-14 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 저장 방법
CN102137139A (zh) * 2010-09-26 2011-07-27 华为技术有限公司 缓存替换策略的选择方法、装置、代理服务器和系统
US8615636B2 (en) 2011-03-03 2013-12-24 International Business Machines Corporation Multiple-class priority-based replacement policy for cache memory
US8874935B2 (en) * 2011-08-30 2014-10-28 Microsoft Corporation Sector map-based rapid data encryption policy compliance

Also Published As

Publication number Publication date
US9003126B2 (en) 2015-04-07
CN104583891A (zh) 2015-04-29
US20140089559A1 (en) 2014-03-27
EP2901239B1 (en) 2019-07-24
EP2901239A4 (en) 2016-06-08
WO2014051718A1 (en) 2014-04-03
KR20160079148A (ko) 2016-07-05
EP2901239A1 (en) 2015-08-05
CN104583891B (zh) 2017-07-07

Similar Documents

Publication Publication Date Title
KR20150032890A (ko) 비휘발성 메인 메모리 시스템에서의 적응성 캐시 교체를 위한 장치, 시스템 및 방법
US7380065B2 (en) Performance of a cache by detecting cache lines that have been reused
US9122631B2 (en) Buffer management strategies for flash-based storage systems
US20170371807A1 (en) Cache data determining method and apparatus
US10216646B2 (en) Evicting appropriate cache line using a replacement policy utilizing belady's optimal algorithm
US20130166846A1 (en) Hierarchy-aware Replacement Policy
KR20110110720A (ko) 고체 상태 드라이브에서의 웨어 레벨링을 위한 방법 및 시스템
US9524110B2 (en) Page replacement algorithms for use with solid-state drives
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
US8438339B2 (en) Cache management for a number of threads
CN102859504A (zh) 有效分区存储缓存
US9218292B2 (en) Least-recently-used (LRU) to first-dirty-member distance-maintaining cache cleaning scheduler
US20170046278A1 (en) Method and apparatus for updating replacement policy information for a fully associative buffer cache
US20210182213A1 (en) Cache line re-reference interval prediction using physical page address
US11561906B2 (en) Rinsing cache lines from a common memory page to memory
US11868221B2 (en) Multi-adaptive cache replacement policy
CN118140214A (zh) 用于重新引用间隔预测高速缓存替换策略的重新引用指示符
US9910788B2 (en) Cache access statistics accumulation for cache line replacement selection
JP7357148B2 (ja) サービスダーティライン追跡の品質
US9760488B2 (en) Cache controlling method for memory system and cache system thereof
KR20190005135A (ko) 비휘발성 메모리의 데이터 스와핑 방법 및 장치
US20230143760A1 (en) Computer processing devices with dynamic shared cache line copy retention policy selection
WO2021103020A1 (zh) 缓存存储器和分配写操作的方法
Chen et al. A Survey on Phase Change Memory-Aware Cache Management
CN114691541A (zh) 一种基于动态访问的dram-nvm混合内存预测器

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
A107 Divisional application of patent
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2016101003718; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20160623

Effective date: 20180713