KR102521053B1 - 하이브리드 dram/낸드 메모리에서 읽기-수정-쓰기 오버헤드를 감소시키기 위한 기술들 - Google Patents

하이브리드 dram/낸드 메모리에서 읽기-수정-쓰기 오버헤드를 감소시키기 위한 기술들 Download PDF

Info

Publication number
KR102521053B1
KR102521053B1 KR1020180005530A KR20180005530A KR102521053B1 KR 102521053 B1 KR102521053 B1 KR 102521053B1 KR 1020180005530 A KR1020180005530 A KR 1020180005530A KR 20180005530 A KR20180005530 A KR 20180005530A KR 102521053 B1 KR102521053 B1 KR 102521053B1
Authority
KR
South Korea
Prior art keywords
cache
score
memory
read
eviction
Prior art date
Application number
KR1020180005530A
Other languages
English (en)
Other versions
KR20180114497A (ko
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 KR20180114497A publication Critical patent/KR20180114497A/ko
Application granted granted Critical
Publication of KR102521053B1 publication Critical patent/KR102521053B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

프런트엔드 메모리로부터 축출을 위한 데이터의 복수의 캐시 라인들의 캐시 라인을 선택하는 방법은, 캐시의 복수의 웨이들의 각각의 웨이에 베이스라인 교체 점수를 할당하는 단계, 상기 웨이들 각각은 상기 캐시 라인들을 저장하고, 각각의 웨이에 저장된 상기 캐시 라인의 유효성의 정도에 기초하여 각각의 웨이에 유효성 점수를 할당하는 단계, 상기 웨이에 대한 상기 베이스라인 교체 점수 및 상기 웨이에 대한 상기 유효성 점수에 근거에서 각각의 웨이에 대한 축출 결정 점수를 할당하는 단계 및 가장 높은 축출 결정 점수를 갖는 웨이의 캐시 라인을 축출을 위한 캐시 라인으로 선택하는 단계를 포함한다.

Description

하이브리드 DRAM/낸드 메모리에서 읽기-수정-쓰기 오버헤드를 감소시키기 위한 기술들{TECHNIQUES TO REDUCE READ-MODIFY-WRITE OVERHEAD IN HYBRID DRAM/NAND MEMORY}
본 발명은 메모리 장치 구조들 및 메모리 장치 관리 방법에 관한 것이다.
메모리 스토리지의 분야에서, 대용량 메모리를 저장하는 데이터 센터들은 고용량, 고성능, 저전력 사용 및 저비용을 달성하고자 한다. 플래시 메모리는 DRAM(dynamic random-access memory)과 비교할 때, 저렴한 비용으로 고용량 및 효율적인 전력 사용량을 제공할 수 있기 때문에 데이터 센터들의 유력한 후보가 될 수 있다. 예를 들어, 플래시 메모리는 모듈 당 테라 바이트(terabytes)의 저장 공간을 제공할 수 있으며, 이는 DRAM 기술을 사용하여 달성할 수 있는 것보다 10 배 더 크다. 또한 더욱이, 플래시 메모리는 낮은 대기 전력을 사용한다.
불행하게도, 플래시 메모리는, DRAM과 비교할 때, 일반적으로 제한된 내구성을 가지면서 더 약한 성능을 제공한다. 예를 들어, 특정 타입의 플래시 메모리(예를 들어, ZNAND)는 DRAM 기술을 사용하여 달성 된 것보다 상당히 긴 읽기 및 쓰기 동작들에 대한 레이턴시(latency)를 가질 수 있다.
본 발명은 감소된 오버헤드 및 감소된 전력 소비로 읽기-수정-쓰기(read-modify-write)를 포함하는 메모리 관리 동작들의 방법들 및 상기 방법들을 수행할 수 있는 메모리 장치를 제공한다.
일부 실시예들에 따르면, 프런트엔드 메모리로부터 축출을 위한 데이터의 복수의 캐시 라인들의 캐시 라인을 선택하는 방법이 제공되며, 상기 방법은, 캐시의 복수의 웨이들의 각각의 웨이에 베이스라인 교체 점수를 할당하는 단계, 상기 웨이들 각각은 상기 캐시 라인들을 저장하고, 각각의 웨이에 저장된 상기 캐시 라인의 유효성의 정도에 기초하여 각각의 웨이에 유효성 점수를 할당하는 단계, 상기 웨이에 대한 상기 베이스라인 교체 점수 및 상기 웨이에 대한 상기 유효성 점수에 근거에서 각각의 웨이에 대한 축출 결정 점수를 할당하는 단계 및 가장 높은 축출 결정 점수를 갖는 웨이의 캐시 라인을 축출을 위한 캐시 라인으로 선택하는 단계를 포함한다.
상기 베이스라인 교체 점수는 상기 웨이의 캐시 라인의 사용의 최신성 또는 상기 웨이의 상기 캐시 라인의 사용의 빈도에 대응할 수 있다.
상기 방법은 상기 유효성 점수에 가중 팩터를 할당하는 단계 또는 상기 베이스라인 교체 점수에 가중 팩터를 할당하는 단계를 더 포함할 수 있다.
상기 방법은 레지스터에 저장된 상기 유효성 점수에 대응하는 가중 팩터를 저장하는 단계 또는 레지스터에 저장된 베이스라인 교체 점수에 대응하는 상기 가중 팩터를 저장하는 단계를 더 포함할 수 있다.
상기 방법은 상기 유효성 점수에 대응하는 상기 가중 팩터를 저장하는 상기 레지스터를 프로그램하는 단계 또는 상기 베이스라인 교체 점수에 대응하는 상기 가중 팩터를 저장하는 상기 레지스터를 프로그램하는 단계를 더 포함할 수 있다.
상기 베이스라인 교체 점수는 난수 점수이고, 상기 방법은 난수 발생기에 의해서 상기 난수 점수를 발생하는 단계를 더 포함할 수 있다.
상기 방법은 각각의 캐시 라인의 유효 비트들을 읽는 것에 의해 상기 유효성 점수를 판별하는 단계 및 각각의 캐시 라인의 유효한 비트들의 누적 기록을 실행하는 단계를 더 포함할 수 있다.
상기 방법은 축출을 위해 선택된 상기 캐시 라인을 축출하는 단계를 더 포함할 수 있다.
일부 실시예들에 따르면, 메모리 모듈로 미리-읽기 동작을 구현하기 위한 메모리 캐시 컨트롤러가 제공되며, 메모리 캐시 컨트롤러는, 백엔드 메모리 또는 프런트엔드 메모리가 비지(busy) 상태인 지를 판별하고, 상기 백엔드 메모리 또는 상기 프런트엔드 메모리 중 어느 것도 비지 상태가 아닐 때 쓰기 버퍼 세트 카운터에 근거해서 쓰기 버퍼의 쓰기 버퍼 메타데이터를 인덱스하고, 상기 쓰기 버퍼의 유효한 비트들을 읽어오고, 상기 쓰기 버퍼의 모든 캐시 라인들이 완전히 유효한지 여부를 판별하고, 상기 쓰기 버퍼의 모든 캐시 라인들이 완전히 유효한 것으로 판별되면, 상기 쓰기 버퍼 세트 카운터를 1만큼 증가시키고, 상기 쓰기 버퍼의 모든 캐시 라인들보다 적은 것이 완전히 유효한 것으로 판별되면, 완전하게 유효하지 않은 상기 쓰기 버퍼의 캐시 라인을 축출을 위한 교체 라인으로 선택하고, 상기 백엔드 메모리로부터 상기 교체 라인을 미리-읽어오고, 그리고 쓰기 버퍼 세트 카운터를 1만큼 증가시킨다.
일부 실시예들에 따르면, 메모리 모듈을 이용하여 읽기-수정-쓰기 동작을 수행하는 방법이 제공되며, 상기 방법은, 백엔드 메모리의 혼잡도의 정도 및 프런트엔드 메모리의 혼잡도의 정도에 근거해서 언제 미리-읽기 동작을 수행할 지를 결정하는 단계, 그리고 쓰기 버퍼의 캐시 라인들의 유효성에 근거해서 어느 캐시 라인을 미리-읽기 할 지를 결정하는 단계를 포함한다.
상기 언제 미리-읽기 동작을 수행할 지를 결정하는 단계는 상기 백엔드 메모리의 미디어 컨트롤러로 전송된 미해결 요청을 추적하기 위한 MSHR(miss status handling register)을 유지하는 단계를 포함할 수 있다.
상기 방법은 상기 MSHR이 임계값 이하일 때 상기 미리-읽기 동작을 수행하기 위해 상기 백엔드 메모리에 읽기 요청을 전송하는 단계를 더 포함할 수 있다.
상기 임계값은 상기 백엔드 메모리의 특성에 근거할 수 있다.
상기 방법은 동작 조건들에 근거해서 상기 임계값을 조절하는 단계를 더 포함할 수 있다.
상기 쓰기 버퍼의 캐시 라인들의 유효성에 근거해서 어느 캐시 라인을 미리-읽기 할 지를 결정하는 단계는 상기 쓰기 버퍼의 유효 비트들을 읽어오는 단계를 포함할 수 있다.
상기 쓰기 버퍼의 유효 비트들을 읽어오는 단계는, 상기 프런트엔드 메모리의 캐시 내 데이터의 세트를 선택하는 단계, 상기 세트의 각각의 라인을 개별적으로 선택하는 단계, 그리고 각각의 선택된 라인의 데이터의 유효성을 검사하는 단계를 포함할 수 있다.
상기 방법은 베이스라인 교체 점수 및 데이터 유효 점수에 근거해서 축출을 위한 데이터의 상기 세트 내 캐시 라인을 선택하는 단계를 더 포함할 수 있다.
상기 방법은 상기 프런트엔드 메모리의 컨트롤러 내 트랜잭션 큐를 모니터링하는 단계를 더 포함할 수 있고, 상기 프런트엔드 메모리의 혼잡도의 정도는 상기 트랜잭션 큐에 대응한다.
상기 어느 캐시 라인을 미리-읽기 할 지를 결정하는 단계는, 상기 프런트엔드 메모리의 상기 혼잡도의 정도가 제1 임계값 이하이고, 상기 백엔드 메모리의 상기 혼잡도의 정도가 제2 임계값 이하인 것으로 판별된 후 수행될 수 있다.
상기 방법은 쓰기 버퍼 세트 카운터를 유지하는 단계, 및 상기 쓰기 버퍼 세트 카운터에 근거해서 축출을 위한 상기 프런트엔드 메모리의 캐시 내 데이터의 세트의 라인을 선택하는 단계를 더 포함할 수 있다.
따라서, 본 개시의 실시예들의 ZDIMM은 베이스라인 교체 정책들 및 데이터 유효성 사이의 가중 균형을 제공할 수 있고, 실시예들은 축출을 위한 데이터의 신규 선택 방법을 제공하며, 그리고 시스템 성능을 향상시키면서 RMW 동작들의 전력 오버헤드를 감소시킬 수 있다.
본 발명의 메모리 장치는 어떤 데이터를 축출할 지를 결정할 때 베이스라인 교체 정책 및 캐시 라인 유효성 모두를 고려함으로써, RMW 오버헤드가 감소된다.
일부 실시예들은 첨부된 도면들과 함께 다음의 설명으로부터 보다 상세히 이해 될 수 있다.
도 1은 본 발명의 일 실시예에 따른 ZDIMM(ZNAND dual in-line memory module)의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 쓰기 동작을 도시한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 가중 축출 정책에 근거한 데이터 축출을 위한 데이터 캐시의 웨이를 선택하기 위한 테이블의 일 예이다.
도 4는 본 발명의 일 실시예에 따른 방법을 예시적으로 도시한 플로우차트이다.
본 발명의 개념 및 그 실시 방법의 특징들은 다음의 실시예들 및 첨부 도면들의 상세한 설명을 참조하면 보다 쉽게 이해될 수 있다. 이하, 첨부된 도면들을 참조하여 실시예들은 상세히 설명될 것이며, 동일한 참조 번호는 동일한 요소를 지칭한다. 그러나, 본 발명은 다양한 형태들로 구체화될 수 있으며, 여기에 도시된 실시예들에만 한정되는 것으로 해석되어서는 안된다. 오히려, 이들 실시예들은 본 개시들이 철저하고 완전하게 이루어 지도록 당업자에게 본 발명의 양상들 및 특징들을 충분히 전달할 수 있도록 예로서 제공된다. 따라서, 본 발명의 양상들 및 특징들의 완전한 이해를 위해 당업자에게 불필요한 프로세스들, 요소들, 및 기술들은 설명되지 않을 수 있다. 다른 언급이 없는 한, 첨부된 도면들 및 상세한 설명 전반에 걸쳐 동일한 참조 부호들은 동일한 요소들을 나타내며, 따라서 그 설명은 반복되지 않을 수 있다. 도면들에서, 엘리먼트들, 층들 및 영역들의 상대적 크기들은 명확성을 위해 과장될 수 있다.
이하 설명에서, 설명의 목적으로, 많은 특정 상세들이 다양한 실시예들의 완전한 이해를 제공하기 위해 설명된다. 그러나, 다양한 실시예들이 이러한 특정 세부 사항없이 또는 하나 이상의 등가의 구성없이 실시될 수 있음은 자명하다. 다른 예들에서, 공지된 구조들 및 장치들은 불필요하게 다양한 실시예들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다.
"제1", "제2", "제3" 등의 용어는 본 명세서에서 다양한 구성 요소들, 엘리먼트들, 영역들, 계층들 및/또는 섹션들을 설명하기 위해 사용될 수 있지만, 이들 구성 요소들, 엘리먼트들, 영역들, 계층들 및/또는 섹션들은 이들 용어들에 의해 제한되어서는 안 된다. 이들 용어들은 하나의 요소, 엘리먼트, 영역, 층 또는 섹션을 다른 요소, 엘리먼트, 영역, 층 또는 섹션과 구별하기 위해 사용된다. 따라서, 이하에서 설명되는 제1 요소, 엘리먼트, 영역, 층 또는 섹션은 본 발명의 사상 및 범위를 벗어남이 없이 제2 요소, 엘리먼트, 영역, 계층 또는 섹션으로 지칭될 수 있다.
"아래에", "하부에", "낮은", "상부", "위에" 등과 같은 공간적으로 관련된 용어들은 본 명세서에서 설명의 편의를 위해, 하나의 엘리먼트 또는 특징과 다른 엘리먼트(들) 또는 특징(들) 간의 관계를 용이하게 설명하기 위해 사용될 수 있다. 공간적으로 관련된 용어들은 도면들에 도시된 방위에 추가하여, 사용 또는 동작 중에 장치의 상이한 방위들을 포함하도록 의도된 것으로 이해될 것이다. 예를 들어, 도면들의 장치가 뒤집힌다면, 다른 엘리먼트들 또는 특징들의 "아래" 또는 "아래에" 또는 "하부의"로 기술된 요소는 다른 엘리먼트들 또는 특징들의 "위로" 향할 것이다. 따라서, "아래" 및 "아래에"의 예시적인 용어는 위와 아래의 방향 모두를 포함할 수 있다. 장치는 다른 방향으로 향할 수 있고(예를 들어, 90도 또는 다른 방향으로 회전될 수 있음), 공간적으로 상대적인 기술 용어들은 그에 따라 해석되어야 한다.
엘리먼트 또는 계층이 다른 엘리먼트 또는 계층에 "연결된" 또는 "결합된" 것으로 언급될 때, 이는 다른 엘리먼트 또는 계층에 직접적으로 연결되거나, 결합될 수 있거나, 또는 하나 이상의 개재된 엘리먼트들 또는 계층들이 존재할 수 있다. 또한, 하나의 엘리먼트 또는 계층이 2 개의 엘리먼트들 또는 계층들의 "사이에" 있는 것으로 언급될 때, 2 개의 엘리먼트들 또는 층들 사이의 유일한 엘리먼트 또는 계층, 또는 하나 이상의 중간에 있는 엘리먼트들 또는 계층들이 존재할 수도 있다.
본 명세서의 목적들에서, "X, Y 및 Z 중 적어도 하나" 및 "X, Y 및 Z로 이루어진 그룹으로부터 선택된 적어도 하나"는 X만으로 해석될 수도 있고, Y만으로 해석될 수도 있으며, Z만, 또는 XYZ, XYY, YZ 및 ZZ와 같은 X, Y 및 Z 중 둘 이상의 임의의 조합을 포함할 수 있다. 본 명세서에서 동일한 번호는 동일한 요소를 지칭한다. 본 명세서에 사용된, "및/또는" 이라는 용어는 하나 이상의 관련 열거된 항목의 임의 및 모든 조합을 포함한다.
본 명세서에서 사용되는 용어는 특정 실시 양태를 설명하기 위한 것일 뿐 본 발명을 제한하려는 것은 아니다. 본원에서 사용된 단수 형태는 문맥 상 다르게 지시하지 않는 한 복수 형태를 포함하는 것으로 의도된다. 본 명세서에서 사용된 "포함하는", "포함된", "구비하는" 및 "구비된"의 용어는 명시된 특징들, 정수들, 단계들, 동작들, 엘리먼트들 및/또는 구성 요소들의 존재를 특정하며, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않음이 잘 이해할 것이다. 본 명세서에 사용된 바와 같이, "및/또는" 이라는 용어는 하나 이상의 관련 열거 된 항목의 임의 및 모든 조합을 포함한다. "적어도 하나"와 같은 표현들은 엘리먼트들 앞에서 엘리먼트들의 전체 목록을 수식하고 목록의 개별 엘리먼트들을 수식하지 않는다.
본 명세서에 사용된 바와 같이, 용어 "실질적으로", "약" 및 유사한 용어들은 근사의 용어로서 사용되며 정도(degree)의 용어로서 사용되지 않으며, 측정된 또는 계산된 값의 고유한 변화를 설명하기 위한 것이며, 이는 당업자에 의해 인식될 것이다. 또한, 본 발명의 실시예들을 설명할 때 "할 수 있다"를 사용하는 것은 "본 발명의 하나 이상의 실시예들"을 의미한다. 본 명세서에서 사용된 바와 같이, 용어 "사용하다", "사용하는" 및 "사용되는"은 "활용하다", "활용하는" 및 "활용되는"과 동의어로 간주될 수 있다. 또한 "예시적인"의 용어는 사례 또는 예시를 나타낸다.
특정 실시예가 다르게 구현될 수 있는 경우, 특정한 처리 순서는 설명된 순서와 다르게 수행될 수 있다. 예를 들어, 2 개의 연속적으로 설명된 프로세스는 실질적으로 동시에 수행되거나 설명된 순서와 반대 순서로 수행될 수 있다.
또한, 본원에 개시되고 및/또는 인용된 임의의 수치 범위는 범위 내에 포함되는 동일한 수치 정밀도의 모든 하위 범위를 포함하는 것으로 의도된다. 예를 들어, "1.0부터 10.0"의 범위는, 지정된 최소값 1.0과 지정된 최대값 10.0 사이의 모든 부분 범위들 즉, 최소값은 1.0과 같거나 크고, 그리고 최대값은 10.0과 같거나 작은 부분 범위들을 포함하는 것으로 의도된다(예를 들어, 2.4 내지 7.6과 같은). 본 발명에 인용된 최대 수치 제한들은 여기에 포함되는 모든 더 낮은 수치 제한들을 포함하도록 의도되며, 본 명세서에 인용된 임의의 최소 수치 제한은 여기에 포함되는 모든 더 높은 수치 제한을 포함하고자 한다. 따라서, 출원인은 본 명세서에 명시적으로 열거된 범위 내에 포함되는 임의의 하위 범위를 명시적으로 암시하기 위해 청구 범위를 포함하는 본 명세서를 수정할 권리를 보유한다. 이러한 모든 범위는 본 명세서에서 본질적으로 기술된다.
달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어(기술 용어 및 과학 용어 포함)는 본 발명이 속하는 기술 분야의 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전에서 정의된 용어들과 같은 용어들은 관련 기술 및/또는 본 명세서와 관련하여 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 이상적이거나 지나치게 형식적인 의미로 해석되지 않아야 한다.
본 명세서에 설명된 본 개시의 실시예들에 따른 전자 또는 전기 장치들 및/또는 임의의 다른 관련 장치들 또는 구성 요소들은 임의의 적합한 하드웨어, 펌웨어(예를 들어, 응용 주문형 집적 회로(application-specific integrated circuit)), 소프트웨어 또는 소프트웨어, 펌웨어 및 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이들 장치들의 다양한 구성 요소들은 하나의 집적 회로 (IC) 칩 상에 또는 개별 IC 칩들 상에 형성될 수 있다. 또한, 이들 장치의 다양한 구성 요소들은 플렉시블 인쇄 회로 필름(flexible printed circuit film), 테이프 캐리어 패키지(tape carrier package, TCP), 인쇄 회로 기판(printed circuit board, PCB) 또는 하나의 기판 상에 구현될 수 있다. 또한, 이들 장치의 다양한 구성 요소들은 하 하나 이상의 컴퓨팅 장치들 내 하나 이상의 프로세서들에서 실행(running)되고, 여기에 설명된 다양한 기능들을 수행하기 위해 다른 시스템 구성 요소들과 상호 작용하는 컴퓨터 프로그램 명령들을 실행(executing)하는 프로세스(process) 또는 스레드(thread)일 수 있다. 컴퓨터 프로그램 명령들은 예를 들어, RAM(random access memory)과 같은 표준 메모리 장치를 사용하는 컴퓨팅 장치에서 구현될 수 있는 메모리에 저장된다. 또한 컴퓨터 프로그램 명령들은 예를 들어, CD-ROM, 플래시 드라이브 등과 같은 비-일시적인 컴퓨터 판독 가능 매체에 저장될 수 있다. 또한, 당업자는 본 개시의 예시적인 실시예들의 정신 및 범위를 벗어나지 않는 한, 다양한 컴퓨팅 장치들의 기능이 단일 컴퓨팅 장치에 결합되거나 통합될 수 있으며, 또는 특정 컴퓨팅 장치의 기능이 하나 이상의 다른 컴퓨팅 장치들에 걸쳐 분산될 수 있음을 이해할 것이다.
달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어들(기술 및 과학 용어들 포함)은 본 발명이 속하는 기술 분야의 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전에 정의된 용어들과 같은 용어들은 관련 기술 및/또는 본 명세서와 관련하여 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 명시적으로 정의되지 않는 한 이상적이거나 지나치게 형식적인 의미로 해석되지 않아야 한다.
상술한 바와 같이, RMW 동작들은 성능 오버헤드(performance overhead) 및 전력 오버헤드(power overhead)를 도입한다.
도 1은 본 개시의 실시예에 따른 ZDIMM(ZNAND dual in-line memory module)의 블록도이다. 도 2는 본 개시의 실시예에 따른 쓰기 동작을 도시한 블록도이다.
도 1을 참조하면, ZDIMM(ZNAND dual in-line memory module)(100)는 단일 메모리 모듈 상에 캐시 메모리로 동작하는 DRAM(dynamic random-access memory) 캐시/DRAM(170) 및 메인 메모리로 동작하는 ZNAND-타입 플래시 메모리(예를 들면, ZNAND(130))를 포함한다. DRAM(170)은 캐시 메타데이터(120), 읽기 동작들에 최적화된 읽기/쓰기 캐시(read/write cache, RWC)(180) 및 쓰기 동작들에 최적화된 쓰기 버퍼(write buffer, WB)를 포함한다.
ZDIMM(100)은 캐시 컨트롤러(160)를 더 포함하고, 또한 고용량 백엔드 메모리 스토리지(high capacity backend memory storage)로서 동작하는 ZNAND(130)에 접속하기 위한 호스트 컨트롤러(190)를 포함한다.
다음의 설명은 도면에 도시된 ZDIMM(100)을 참조하지만, 본 발명의 실시예는 다음의 특징들을 갖는 임의의 하드웨어 아키텍처에 적용될 수 있다: (1) 캐시 메모리로 동작하는 하나의 메모리 타입과 메인 메모리로 동작하는 다른 메모리 타입을 포함하는 2가지 이상의 메모리 타입들의 존재; (2) 캐시 메모리의 액세스 세분성(access granularity)이 메인 메모리에 대응하는 세분성보다 작고, 데이터의 일관성을 유지하기 위해 읽기-수정-쓰기(read-modify-write) 동작들이 사용되며; (3) 메인 메모리에 의한 동작들은 캐시 메모리에 의한 동작들보다 느리다.
도 2를 참조하면, 읽기-수정-쓰기(RMW) 동작을 포함하는 ZDIMM(100)의 메모리 관리는 종래에 한계들에 부딪혔다. 이러한 한계들은 프로세서(110)로부터의 쓰기 요청(112)이 64 바이트(64B)의 세분성을 가지며, (ZNAND 기술에 대해) WB(140)의 라이트백(writeback, 114)의 세분성이 2-kilobyte(2KB)에 대응한다는 사실에 기인한다. 따라서, ZNAND(130)에 쓰기될 데이터(114)에 대해, 데이터는 2KB 청크(chunk)로 쓰기(114)되어야 한다. 또한, 예를 들어, 2KB 캐시 라인 중 단지 64B에 대해 업데이트를 수행하기 위해, 2KB 캐시 라인의 모든 데이터가 ZNAND(130)에서 캐시 계층(예를 들어, RWC(180))으로 읽기되고, 전체 2KB가 ZNAND(130)에 라이트백(114)되므로, 읽기 동작의 결과로서 원하지 않는 오버헤드가 야기된다.
캐시 액세스 세분성이 메인 메모리 액세스 세분성보다 작은 경우, 읽기-수정-쓰기 동작이 반드시 유익한 것은 아니라는 점에 유의해야 한다. 예를 들어, DRAM은 바이트-주소 지정(byte-addressable)이 가능하고 "in-place write"를 사용하여 쓰기가 가능하기 때문에, DRAM에서는 64B 블록의 8B 업데이트가 가능하다.
반대로, NAND는 바이트-주소 지정이 가능하지 않고, NAND 쓰기 동작은 "out-of-place"이며, 이는 쓰기 동작이 데이터를 유지하는 메모리 페이지를 직접적으로 업데이트하지 않음을 의미한다. 대신에, 쓰기 동작을 위해 새로운 페이지가 할당되고 이전 페이지는 무효화된다(invalided). 따라서, 쓰기 세분성이 페이지 크기보다 작은 경우, 일부 유용한 데이터가 원치 않게 무효화될 수 있다.
RMW 동작들은 캐시 계층에서 관리된다. 이는 캐시 컨트롤러가 2KB 데이터를 WB(140)로부터 ZNAND로 쓰기 할 때, 2KB 데이터가 완전히 유효해야 한다는 것을 의미한다. 그 결과, 만일 WB(140) 내의 2KB 데이터가 단지 부분적으로 유효한 경우(예를 들어, 프로세서(110)가 64B 세분성으로 WB(140)에 쓰기(118)를 하기 때문에), 유효한 데이터의 나머지를 획득하기 위해 캐시 컨트롤러(160)는 ZNAND(130)로부터 읽어야 하고, 그 결과 2KB를 완전히 유효하게 만든다. 즉, 캐시 컨트롤러(160)는 먼저 유효한 데이터의 나머지를 획득하기 위해 ZNAND(130)로부터 읽기를 할 수 있고, 데이터의 2KB 청크 전체를 채워 완전히 유효한 캐시 데이터의 2KB 라인을 만들 수 있다.
따라서, RMW 동작들은 성능 오버헤드 및 전력 오버헤드를 유발한다. 예를 들어, RMW는 유효한 데이터를 획득하기 위해 ZNAND(130)로부터 부가적인 읽기를 요구하며, 또한 부분적으로 유효한 2KB 캐시 라인을 완전히 유효하게 만들기 위해 WB(140)로 부가적인 쓰기(115)를 요구할 수 있다. 다른 실시예들에서, 부가적인 쓰기(115)는 ZNAND(130)로부터의 2KB 읽기 및 WB(140)로의 2KB 중 일부 쓰기를 수반할 수 있다. 따라서, ZNAND 읽기가 임계 경로(critical path) 상에 있고, ZNAND 읽기가 테일 레이턴시(tail latency)를 경험할 때 RMW 오버헤드는 성능을 저하시킬 수 있다.
더욱이, DRAM(170)은 실질적으로 캐시로서 동작한다. 그러나, DRAM(170)의 용량은 제한적이며, 때때로 메모리 관리는 오래된 데이터가 DRAM(170)으로부터 방출되어서 ZNAND(130)로 되돌아 가도록 하여 새로운 데이터가 들어가기 위한 공간을 만들 수 있다(즉, 데이터의 축출(eviction)). 그러나 DRAM으로부터 어떤 데이터를 축출할 것인지를 선택하는 것은 구현된 축출 정책에 의존될 수 있다.
도 1 및 도 2를 참조하면, 본 개시의 실시예들은 RMW 성능을 향상시키기 위한 신규한 가중 축출 정책(weighted eviction policy)을 사용할 수 있다. 이하 설명될 실시예들에서, RMW 동작들은 캐시 계층에서 관리될 수 있다. 그러나, 다른 실시예들에서, 후술하는 실시예들의 특징들이 어떤 엔티티가 RMW 동작들을 관리하는지에 관계없이 적용 가능할지라도, RMW 동작들이 캐시 층에서 관리되지 않는 설계가 있을 수 있다.
예를 들어, RMW 동작들에 관하여, DRAM(170)으로부터 축출될 2KB 캐시 라인(즉, ZNAND(130)에 라이트백 될 2KB 캐시 라인(114))이 완전히 유효할 때, 두 가지가 가정 될 수 있다. 첫째, ZNAND(130)로부터 WB(140)로의 읽기(115)는 캐시 라인이 완전히 유효하기 때문에 불필요하게 된다. 즉, 완전히 유효한 2KB 캐시 라인이 이미 DRAM(170)에 위치하기 때문에, ZNAND(130)로부터 동일한 데이터를 읽어올 필요가 없다. 둘째, 정보가 WB(140)에 이미 포함되어 있기 때문 WB(140)에 데이터를 쓰기 위해 WB(140)에 데이터를 제공하는 것은 불필요하다.
그러나, DRAM(170)으로부터 축출될 2KB 캐시 라인이 부분적으로 유효하다면, 데이터 일관성을 보장하기 위해 ZNAND(130)로부터 유효 데이터 읽기(115)가 수행된다. 즉, ZNAND(130)로부터 읽기(115)하는 이유는 ZNAND(130)에 라이트백 되거나 복사되는 2KB 캐시 라인이 완전히 유효하다는 것을 보장하기 위한 것이다. 또한, WB(140)에 대한 쓰기(115) 횟수는 DRAM(170) 내의 2KB 캐시 라인의 몇 퍼센트가 유효한지에 대응하는 유효 비율에 의존한다(예를 들어, DRAM(170) 내 2KB 캐시 라인에서 유효 64B 서브 라인들의 수가 많을수록, 유효 데이터로 ZNAND(130)에 의해 업데이트 될 필요가 있는 64B 서브-라인들의 수는 더 적다). 예를 들어, DRAM(130)으로부터 축출될 2KB 캐시 라인(114)의 데이터의 대략 91 %가 유효하면, 데이터의 나머지 9 %만이 업데이트 될 필요가 있을 것이다.
예시적인 예로서, WB(140)에서의 2KB는 초기에는 완전히 무효하다(즉, WB(140)는 비어 있다). 초기화 후에, 프로세서(110)는 WB(140)에 일부 유용한 데이터를 기록할 수 있고, 그 결과 그 2KB 내의 64B 엔트리들 중 일부를 유효하게 할 수 있다. 프로세서(110)가 64B 데이터를 WB(140)에 계속해서 기록하면 이들 64B 데이터는 그 2KB 내의 가능한 64B 엔트리들 각각에 채워질 수 있고, 2KB는 완전히 유효하게 될 것이다. 그러나, 프로세서(110)는 다수의 64B 엔트리들을 WB(140)에 기입하지 않을 수도 있고, 또는 64B 엔트리들이 2KB 전체를 채우지 않아 2KB의 일부만 유효하게 만들 수도 있다. 그 후, 캐시 컨트롤러(160)가 WB(140)로부터 ZNAND(130)로 2KB를 축출하면, WB(140)의 2KB를 완전히 유효하게 할 수 있는 유효한 64B 데이터를 포함하는 2KB를 ZNAND(130)로부터 읽어오는 것에 의해서 RMW가 수행될 수 있다. 프로세서(110)는 RMW 프로세스에 관여하지 않는다.
따라서, 본 일시예는 축출될 캐시 라인을 결정할 때 유효성의 개념을 이용한다. 어떤 캐시 라인을 축출할 것인지를 결정하기 위한 축출 결정(eviction decision)은 베이스라인 축출/교체 정책의 함수 및 캐시 라인 유효성 함수 모두가 될 수 있다(예를 들어, 분석된 2KB ZNAND 캐시 라인 내 유효한 64B 서브-라인들의 수의 함수). 즉, 본 개시의 실시예들은 오래되고, 전통적인 축출 정책들과 함께 새로운 축출 정책을 제공한다. 이것은 베이스라인 교체 정책 및 캐시 라인 유효성의 두 가지 요소들에 대한 축출 결정을 기반으로 성취될 수 있다.
예를 들어, DRAM으로부터 어떤 데이터를 축출할지 결정하는데 있어서 종래의 베이스라인 교체 정책만이 고려된다면, (예를 들어, 많은 무효한 엔트리들을 갖는 캐시 라인의 축출에 의해) 다수의 RMW 동작들이 있을 수 있다.
유사하게, 만일 어떤 데이터를 축출할지 결정하는데 있어서 캐시 라인 유효성만이 고려된다면 캐시 라인은 원하지 않게 미숙하게 축출될 수 있다(예를 들면, 미래 캐시 라인 재사용에 양호할 캐시 라인들이 축출될 수 있고, 그 캐시 라인들이 다시 로드되는 것이 요구됨). 예를 들어, 캐시 라인을 재사용하는 것이 유익할 수 있으며, 가장 최근에 로드된 캐시 라인을 축출하면 축출된 캐시 라인이 다시 액세스될 가능성이 높아질 수 있으며, 이후에 다시 로드될 필요가 있다. 따라서, 경우에 따라, 빈번하게 사용되는 캐시 라인들 보다 사용되지 않거나 빈번하게 사용되지 않는 캐시 라인을 축출하는 것이 유익할 수 있다.
도 3은 본 발명의 일 실시예에 따른 가중 축출 정책에 기초하여 데이터 축출을 위한 데이터 캐시의 웨이를 선택하기 위한 테이블의 예이다.
도 3을 참조하면, 본 개시의 실시예들에 따라, 어떤 데이터를 축출할 지를 결정할 때 베이스라인 교체 정책 및 캐시 라인 유효성 모두를 고려함으로써, RMW 오버헤드가 감소된다. 본 실시예의 가중 축출 정책의 예는 다음과 같이 설명된다.
본 실시예의 예시로서, DRAM(170)의 일례로서 4-웨이 캐시가 이용된다. 본 예시의 베이스라인 교체 정책은 LRU(least recently used) 교체 정책이다. 4-웨이 캐시의 제1 웨이(예를 들면, Way 0)는 1부터 4까지의 척도(scale)에서 4의 LRU 점수(score)를 가질 수 있으며(제1 웨이가 최근에 최저 사용된 것을 나타냄), 제2 웨이(예를 들면, Way 1 )는 3의 LRU 점수를 가질 수 있으며, 제3 웨이(예를 들면, Way 2)는 LRU 점수가 2일 수 있으며, 그리고 제4 웨이(예들 들면, Way 3)은 LRU 점수가 1 일 수 있다(제4 웨이는 가장 최근에 사용됨). 다른 실시예들에서, DRAM(170)은 상이한 개수의 웨이들을 가질 수 있고, 개별적인 웨이들의 순위를 위해 상이한 스케일들이 사용될 수 있다. 또한 다른 실시예들에서, 상이한 베이스라인 교체 정책들(예를 들어, 최소 빈도 사용(least frequently used, LFU), 선입 선출(first-in first-out, FIFO), 랜덤 등)이 사용될 수 있다.
본 실시예에서, 캐시 라인 유효성은 단순히 분석된 2KB 캐시 라인의 유효 64B 서브-라인들의 수의 합계인 유효성 점수에 의해 결정된다. 이 예에서 제1 웨이는 유효성 점수가 20이다(예를 들면, 캐시 라인의 32 개의 64-바이트 서브-라인들에서, 20개 서브-라인들이 유효함). 제2 웨이는 유효성 점수가 32이다(예를 들어, 2KB 캐시 라인은 완전히 유효하다. 즉, 32 개의 서브-라인들이 모두 유효함을 의미), 제3 웨이는 유효성 점수가 10이고 제4 웨이는 유효성 점수가 5이다.
본 실시예는 베이스라인 교체 정책 점수(본 실시예의 LRU 점수) 및 웨이들 각각의 유효성 점수 모두 또는 어느 하나를 가중하고, 웨이들 각각에 대한 2 개의 가중 점수들을 가산하여 각 웨이에 대한 개별적인 합산된 점수/축출 결정 점수를 갖도록 하며, 거기에 저장된 데이터의 축출에 대한 가장 높은 축출 결정 점수를 갖는 웨이를 선택함으로써 축출 결정을 수행할 수 있다.
본 실시예에서, 축출 결정 점수는 LRU 점수에 x를 곱하고, 유효성 점수에 y를 곱한 것을 더한 것과 같다(즉, (x * LRU 점수) +(y * 유효 점수)). 여기서, x와 y는 가중 팩터들(weighted factor)이다. 도 3에 도시된 본 실시예에서, x는 10과 같고, y는 1과 같지만 다른 가중치들이 사용될 수 있으며 특정 용도에 따라 변경될 수 있다. 따라서 제1 웨이에 대한 축출 결정 점수는 60(10*4 + 1*20)이고, 제2 웨이에 대한 축출 결정 점수는 62(10*3 + 1*32), 제3 웨이에 대한 축출 결정 점수는 30(10*2 + 1*10)이고, 그리고 제4 웨이에 대한 축출 결정 점수는 15(10*1 + 1*5)이다.
따라서, 본 실시예의 제2 웨이는 가장 높은 축출 결정 점수를 가지므로, 제2 웨이는 데이터가 축출되도록 선택되는 웨이이다. 따라서, 본 실시예는 복수의 주어진 웨이들 각각에 저장된 분석된 캐시 라인의 유효성의 정도에 기초하여 축출/교체 정책과 종래의 베이스라인 교체 정책 사이에 균형 유지하여 축출 결정을 판별하기 위한 신규한 접근법을 제공할 수 있다.
본 실시예의 가중 축출 정책을 구현하기 위해, 교체 점수는 예를 들어, LRU 점수(예를 들어, 각 웨이의 데이터의 사용 타이밍에 기반한 점수), LFU 스코어(예를 들어, 각 웨이의 데이터의 사용 빈도에 기반한 점수) 또는 FIFO 점수일 수 있으며, 이들 중 임의의 것은 교체 비트들에 의해 획득될 수 있다. 대안적으로, 교체 점수는 난수 발생기에 의해 획득될 수 있는 난수 점수(random score)일 수 있다(예를 들어, 각 웨이에 대한 베이스라인 교체 점수는 랜덤일 수 있고, 그들의 가중 유효성 점수로부터 획득된 값에 가산될 수 있다). 유사한 접근법이 nMRU(not most recently used, 가장 최근에 사용되지는 않음) 또는 ZDIMM(100)의 캐시 컨트롤러(160)에 의해 구현될 수 있는 임의의 다른 기존 교체 정책과 같은 다른 교체 정책에 사용될 수 있다.
또한, 유효성 점수는 유효 비트들을 단순하게 읽고 캐시 라인/웨이 당 유효한 비트들의 누적 기록을 실행함으로써 결정될 수 있다. 또한, 축출 결정 점수는 가중 팩터들(예를 들어, x 및 y)을 프로그래밍 가능하게 하고 레지스터들에 저장함으로써 조정될 수 있고, 로직을 사용함으로써(예를 들어, 곱셈-가산 하드웨어를 구현함으로써) 구현될 수 있다.
본 개시의 다른 실시예와 관련하여, 상술한 바와 같이, RMW 오버헤드는 ZNAND 읽기가 임계 경로 상에 있을 때 및 ZNAND 읽기가 테일 레이턴시를 경험할 때 성능을 방해할 수 있다. 이하에서 설명되는 바와 같이, 본 실시예는 미리-읽기(pre-read) 동작이 임계 경로 읽기 및 테일 레이턴시를 피하게 할 수 있다. 이것은 언제 미리-읽기를 할 지를 선택하고, 무엇을 미리-읽기 할 지를 선택하는 것에 의해 달성될 수 있다. 즉, 다른 실시예에 따르면, 미리-읽기 동작을 수행함으로써, 성능 저하를 회피하기 위해 RMW 오버헤드가 감소될 수 있으며, 그렇지 않으면 임계 경로 읽기를 회피하고, 테일 레이턴시를 회피하기 위한 데이터 읽기가 유발될 수 있다.
예를 들어, 미리-읽기에 관한 조건들은 ZNAND 혼잡도(busyness), DRAM 혼잡도, WB 세트 인덱스(set index) 및/또는 교체 정책의 함수일 수 있다. 이 함수는 ZNAND(130)의 미리-읽기가 ZNAND(130)가 비지(busy) 상태가 아닐 때 발생해야 하고, WB(140)의 유효 비트가 프런트엔드(frontend) DRAM(170)이 비지 상태가 아닐 때 검사되어야 하고, 캐시 라인은 세트 전체에 걸쳐 균등하게 사전-업데이트(pre-update)되어야 하며, 세트 내에서 앞으로 축출된 가능성이 가능 높은 캐시 라인은 사전-업데이트되어야 한다.
보다 상세하게 설명하면, 본 실시예는 미리-읽기 할 시점의 발생을 ZNAND(백엔드 메모리(backend memory)) 혼잡도 및 DRAM(프런트엔드 메모리(frontend memory)) 혼잡도에 의존할 수 있도록 구현될 수 있다.
ZNAND 혼잡도의 함수로서, ZNAND(130)가 너무 비지(busy)한 경우, 미리-읽기 동작을 수행하는 것은 바람직하지 않을 수 있다. 그러나, ZNAND(130)가 유휴(idle) 상태일 때, ZNAND(130)로부터의 미리-읽기는 시스템 성능에 부정적인 영향을 미치지 않는다. 따라서, 본 실시예에서, 언제 미리-읽기 동작을 수행할 지를 결정하기 위해, 캐시 컨트롤러(160)는 ZNAND 미디어 컨트롤러로 전송된 미해결 요청들을 추적하기 위한 MSHR(miss status handling register)(162)을 유지할 수 있다. MSHR(162)을 모니터링 함으로써, 캐시 컨트롤러(160)는 ZNAND(130)의 혼잡도(busyness)를 추정할 수 있다(예를 들어, ZNAND (130)에 대한 다수의 미해결 요청은 ZNAND(130)가 그 시간에 비지 하다는 것을 나타낼 수 있다). 따라서, MSHR(162)이 ZNAND(130)에 대한 미해결 요청들의 수가 임계값(threshold number, 예를 들어, ZNAND 요청 임계값)보다 작다고 표시하면, 미리-읽기 동작을 위해 ZNAND(130)에 읽기 요청이 전송 될 수 있다. 임계값은 조정 가능한 값(예를 들어, 동작 조건들에 기초하여 조정 됨)일 수 있다. 예를 들어, 진단 테스트를 수행하고, 진단 테스트의 결과를 캐시 컨트롤러(160)에 전송함으로써 캐시 컨트롤러는 임계값이 너무 높게 설정되었는지 판별할 수 있다(예를 들어, ZNAND(130)가 비지 상태로 예상되지 않음을 나타내는 임계값(threshold number)에도 불구하고 다수의 미해결 요청들로 인한 혼잡에 기인하여 ZNAND(130)의 성능이 허용할 수 없을 정도로 낮을 수 있다). 따라서, 캐시 컨트롤러(160)는 업데이트된 임계값이, ZNAND(130)가 더 적은 미해결 요청들을 가질 때에도 비지하다는 것을 나타내도록 임계값을 감소시킬 수 있다. 또한, 임계값은 ZNAND(130)의 특성들에 기초하여(예를 들어, 백엔드 메모리의 특성들에 기초하여) 미리 정의될 수 있다.
언제 미리-읽기 동작을 수행 할 지를 결정한 후에, 캐시 컨트롤러(160)는 DRAM 혼잡도의 추정에 근거해서 어느 캐시 라인을 미리-읽기 할 지(예를 들어, 캐시 내의 어느 위치를 미리-읽기 할지)를 결정할 수 있다. 따라서, 캐시 컨트롤러(160)는 어느 캐시 라인을 미리-읽기 할 지를 결정하기 위해 쓰기 버퍼(WB) 유효 비트들을 읽어올 수 있다. WB 유효 비트들을 읽어 오는 것에 의해, 캐시 컨트롤러(160)는 완전히 유효한 캐시 라인들을 미리-읽기하는 것을 피할 수 있다. WB 유효 비트들을 읽는 것은 캐시 메타데이터(120)에 저장될 수 있는 DRAM 메타데이터 액세스를 갖는 캐시 컨트롤러(160)에 의해서 달성될 수 있다. 이것은 캐시 계층 내 캐시 컨트롤러(160) 위에 위치한 DRAM 캐시 컨트롤러/DRAM 컨트롤러(122)에 의해 가능해 질 수 있다.
또한 DRAM 컨트롤러(122)는 트랜잭션 큐(172)를 포함할 수 있으며, DRAM(170)으로 전송된 모든 미해결 명령들을 저장할 수 있다. DRAM 컨트롤러(122)는 DRAM(170)의 혼잡도를 추정하기 위해 DRAM 컨트롤러(122) 내 트랜잭션 큐(172)를 모니터링할 수 있다. DRAM 메타데이터에 대한 캐시 컨트롤러의 액세스가 중요한 DRAM 캐시 액세스에 영향을 미치지 않는다는 것을 확인하기 위해서, DRAM 컨트롤러(122)는 DRAM(170)의 혼잡도를 추정하는 DRAM 컨트롤러(122)내의 트랜잭션 큐(172)를 모니터링 할 수 있다. 만일 DRAM(170)에 대한 미해결 요청들의 수가 임계값(예를 들면, DRAM 요청 임계값)보다 작으면, 캐시 컨트롤러(160)는 캐시 라인들의 유효 비트들을 읽기 위해 읽기 요청을 DRAM(170)으로 전송한다. ZNAND 요청 임계 수 및 DRAM 요청 임계 수는 프로그램될 수 있는 값이거나 DRAM(170)의 하나 이상의 DRAM(170) 특성들에 근거해서 미리 정의되는 값일 수 있다.
본 실시예에 따르면, 상술한 바와 같이, 미리-읽기 동작은 ZNAND(130) 또는 DRAM(170) 중 어느 것도 비지 상태가 아닐 때에만 발생한다. 즉, 본 실시예는 ZNAND 미디어 컨트롤러로 전송된 미해결 요청들의 수가 ZNAND 요청 임계값 이하이고, 그리고 DRAM(170)으로 전송된 미해결 요청들의 수가 DRAM 요청 임계값 이하인 경우로 판별되었을 때에만 무엇을 미리-읽기할지 판별하는 프로토콜을 갖는다.
무엇(예를 들면, DRAM 캐시(170)의 어느 위치)을 미리-읽기 할 지를 결정할 때, 쓰기 버퍼(WB) 세트 인덱스가 사용될 수 있다. 우선 데이터의 주어진 세트를 선택하고, 다음 데이터의 라인을 선택하는 것에 의해서 캐시 컨트롤러(160)는 어느 캐시 라인들을 미리-읽기 할 지를 결정할 수 있다. 즉, 캐시 컨트롤러(160)는 DRAM 캐시(170)의 복수의 웨이들을 선택할 수 있다. 다음 캐시 컨트롤러(160)는 DRAM 캐시(170)의 복수의 웨이들 중 하나에 대한 가중 축출 결정을 하기 위해 가중 축출 정책(예를 들면, 도 3에서 설명된 가중 축출 정책)을 실행할 수 있다. 그 다음, 캐시 컨트롤러(160)는 대응하는 웨이 내 포함된 데이터의 라인을 미리-읽기 할 수 있다.
데이터의 주어진 세트를 선택한 후, 캐시 컨트롤러(160)는 라운드 로빈 세트 선택 프로토콜과 같은 많은 선택 프로토콜들 중 하나를 실행할 수 있다. 예를 들어, 캐시 컨트롤러(160)는 데이터의 제1 행/세트를 고려하고, 마지막 행이 검사될 때까지 다음 행을 고려할 수 있으며, 그런 다음 제1 행은 캐시 컨트롤러(60)에 의해서 다시 검사될 수 있다. 데이터의 행들/세트들 각각의 검사에서, 캐시 컨트롤러(160)는 (예를 들면, LRU와 같은 베이스라인 교체 정책에 근거해서) 행들의 각각 대응하는 행의 웨이들 중 어느 웨이가 축출을 위한 목표가 될 지를 결정할 수 있다. 그러나, 만일 캐시 컨트롤러(160)가 축출을 위해 목표된 웨이의 검사에서 목표된 웨이가 완전히 유효한 것으로 결론을 내면, 캐시 컨트롤러는 완전히 유효하지 않은 웨이가 찾아질 때까지 다음 적절한 웨이(예를 들면, 두 번째로 가장 적게 최근에 사용된 웨이)로 이동할 수 있다. 따라서, 캐시 컨트롤러는 데이터의 각각의 검사된 행 또는 세트의 웨이들의 유효성을 액세스하기 위해 또 하나 이상의 축출을 위한 웨이들을 선택하기 위해 라운드 로빈 세트 선택 프로토콜을 사용할 수 있다.
라운드 로빈 세트 선택 프로토콜을 구현하기 위해서, 캐시 컨트롤러(160)는 쓰기 버퍼(WB) 세트 인덱스(예를 들면, 카운터가 3의 값을 나타낼 때 제3 세트를 선택하는 것을 나타낼 수 있음)에 대응하는 카운터를 유지할 수 있다. 카운터는 미리-읽기가 실행될 때마다 1씩 증가될 수 있다. 또한 데이터의 주어진 세트 내 모든 캐시 라인들이 완전히 유효할 때, 카운터는 1씩 증가될 수 있고, 캐시 컨트롤러(160)에 의해 데이터의 제2 세트가 선택될 수 있다.
즉, 캐시 컨트롤러(160)의 카운터는 1로 초기화될 수 있고, 캐시 컨트롤러(160)는 검사를 위해 제1 데이터 세트/제1 행을 선택한다. 다음 캐시 컨트롤러(160)는 제1 데이터 세트에 대해 미리-읽기 동작을 실행할 수 있고, 제1 데이터 세트 내 모든 캐시 라인들이 완전히 유효한 것으로 판별할 수 있다. 따라서, 캐시 컨트롤러(160)는 제1 데이터 세트 내 미리-읽혀질 것이 없는 것으로 판별할 수 있고, 카운터를 2로 증가시킨다. 캐시 컨트롤러(160)는 카운터에 의해서 표시되는 값에 따라서 검사를 위해 제2 데이터 세트를 선택할 수 있다. 이러한 프로세스의 반복에 의해서, 캐시 컨트롤러(160)는 다양한 데이터 세트들을 "라운드 로빈" 방식으로 계속해서 검사한다.
그 다음, 교체 정책이 구현될 수 있다. 예를 들어, 세트가 선택된 다음, 세트 내 선택될 캐시 라인(예를 들어, 어느 웨이)이 위에서 예시적으로 설명된 가중 축출 결정 점수에 근거해서 판별될 수 있다. 가중 축출 결정 점수는 적용 가능한 베이스라인 교체 정책 및 데이터 유효성에 의해서 판별될 수 있다. 따라서, 만일 베이스라인 교체 정책으로 LRU 정책이 사용되면, 캐시 컨트롤러(160)는 가장 적게 최근에 사용된 캐시 라인을 목표로 선택할 수 있다. 그러나, 만일 LRU 정책(즉, 가장 적게 최근 사용된 캐시 라인)에 따라서 선택된 캐시 라인이 완전히 유효하면, 캐시 컨트롤러(160)는 두 번째 가장 적게 최근 사용된 캐시 라인을 목표로 선택할 수 있다. 또한, 만일 베이스 라인 교체 정책이 랜덤(random)이면, 완전히 유효하지 않은 임의의 랜덤 캐시 라인이 캐시 컨트롤러(160)에 의해서 선택될 수 있다.
도 4는 본 개시의 일 실시예에 따른 방법의 예시를 도시한 플로우차트이다.
도 4를 참조하면, 본 개시의 일 실시예에 따르면, 캐시 컨트롤러(160)는 첫 번째, ZNAND(130)가 비지(busy) 상태인 지를 추정하기 위해 MSHR(162)을 모니터링 할 수 있고, 또한 DRAM(170)이 비지 상태인 지를 추정하기 위해 DRAM 컨트롤러 트랜잭션 큐(172)를 모니터링한다(S101). 캐시 컨트롤러(160)는 ZNAND(130) 또는 DRAM(170) 중 하나가 비지 상태인 것으로 판별한다(S102). 두 번째, 캐시 컨트롤러(160)가 ZNAND(130) 또는 DRAM(170) 중 하나가 비지 상태인 것으로 판별하면, 캐시 컨트롤러(160)는 아무런 동작도 하지 않기로 결정할 수 있다(S103). 그러나, 세 번째, 캐시 컨트롤러(160)가 ZNAND(130) 또는 DRAM(170) 중 어느 것도 비지 상태가 아닌 것으로 판별하면, 캐시 제어기(160)는 어떤 데이터를 미리-읽기(pre-read) 할 지를 결정할 수 있다(S104)(예를 들어, 데이터 세트의 행을 선택하기 위해 쓰기 버퍼(WB) 세트 카운터에 근거해서 쓰기 버퍼(WB) 메타데이터(metadata)를 인덱싱(indexing)함으로써 어느 데이터를 미리-읽기 할 지를 결정할 수 있다). 네 번째, 캐시 컨트롤러(160)는 WB(140) 내의 유효 비트들을 읽어올 수 있다(S105). 다섯 번째, 캐시 컨트롤러(160)는 라인들이 완전히 유효한지 여부를 판별한다(S106). 캐시 컨트롤러 (160)가 읽어온 유효한 비트들로부터 모든 라인들이 완전히 유효하다고 판별하면, 쓰기 버퍼(WB) 세트 카운터는 1만큼 증가될 수 있다(S107). 그러나, 캐시 컨트롤러 (160)가 모두가 완전히 유효한 것은 아닌 것으로 판별하면, 캐시 컨트롤러(160)는 완전히 유효하지 않은 캐시 라인을 "교체 라인(replace line)"으로 선택하고, ZNAND(130)로부터 그 라인을 미리-읽기 할 수 있다(S108). 그 후, 캐시 컨트롤러(160)는 WB 세트 카운터를 1만큼 증가시키고(S107), DRAM 컨트롤러(122)의 혼잡도 및 ZNAND(130)의 혼잡도FMF 모니터링하는 단계(S101)로 리턴할 수 있다.
따라서, 본 개시의 실시예들은 읽기-수정-쓰기(RMW) 오버헤드 및 전력 소비를 감소시키는 가중 축출 정책을 제공한다. 또한 설명된 실시예들은 교체 점수, 유효성 점수 및 각각의 점수와 연관된 각각 가중치들에 근거해서 축출 결정 함수를 제공한다.
더욱이, 본 개시의 실시예들은 RMW의 성능의 최악의 경우를 회피하는 것을 가능하게 하는 미리-읽기 기능을 제공하며, ZNAD 혼잡도, DRAM 혼잡도 쓰기 버퍼 세트 공정성 및 캐시 라인 축출 등에 근거할 수 있다.
따라서 설명된 실시예들은 축출 결정 함수를 실행하는 하드웨어 구현 및 미리-읽기 결정 함수를 실행하는 하드웨어 메커니즘을 제공한다.
100: ZDIMM
110: 프로세서
120: 캐시 메타데이터
130: ZNAND
140: 쓰기 버퍼(WB)
160: 캐시 컨트롤러
170: DRAM
180: 읽기/쓰기 캐시
190: 호스트 컨트롤러

Claims (20)

  1. 프런트엔드 메모리로부터 축출을 위한 데이터의 복수의 캐시 라인들의 캐시 라인을 선택하는 방법에 있어서:
    캐시의 복수의 웨이들의 각각의 웨이에 베이스라인 교체 점수를 할당하는 단계;
    상기 웨이들 각각은 상기 캐시 라인들을 저장하고;
    각각의 웨이에 저장된 상기 캐시 라인의 유효성의 정도에 기초하여 각각의 웨이에 유효성 점수를 할당하는 단계;
    상기 웨이에 대한 상기 베이스라인 교체 점수 및 상기 웨이에 대한 상기 유효성 점수에 근거에서 각각의 웨이에 대한 축출 결정 점수를 할당하는 단계; 및
    가장 높은 축출 결정 점수를 갖는 웨이의 캐시 라인을 축출을 위한 캐시 라인으로 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 베이스라인 교체 점수는 상기 웨이의 캐시 라인의 사용의 최신성 또는 상기 웨이의 캐시 라인의 사용의 빈도에 대응하는 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 유효성 점수에 가중 팩터를 할당하는 단계 또는 상기 베이스라인 교체 점수에 가중 팩터를 할당하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서,
    DRAM으로부터 축출을 위해 선택된 캐시 라인을 축출하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제 3 항에 있어서,
    사용자 입력에 따라서 상기 유효성 점수에 대응하는 상기 가중 팩터 또는 상기 베이스라인 교체 점수에 대응하는 상기 가중 팩터 중 어느 하나를 조절하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 베이스라인 교체 점수는 난수 점수이고,
    난수 발생기에 의해서 상기 난수 점수를 발생하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    각각의 캐시 라인의 유효 비트들을 읽는 것에 의해 상기 유효성 점수를 판별하는 단계; 및
    각각의 캐시 라인의 유효한 비트들의 누적 기록을 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서,
    축출을 위해 선택된 상기 캐시 라인을 축출하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 메모리 모듈로 미리-읽기 동작을 구현하기 위한 메모리 캐시 컨트롤러에 있어서:
    백엔드 메모리 또는 프런트엔드 메모리가 비지(busy) 상태인 지를 판별하고;
    상기 백엔드 메모리 또는 상기 프런트엔드 메모리 중 어느 것도 비지 상태가 아닐 때 쓰기 버퍼 세트 카운터에 근거해서 쓰기 버퍼의 쓰기 버퍼 메타데이터를 인덱스하고;
    상기 쓰기 버퍼의 유효한 비트들을 읽어오고;
    상기 쓰기 버퍼의 모든 캐시 라인들이 완전히 유효한지 여부를 판별하고;
    상기 쓰기 버퍼의 모든 캐시 라인들 모두가 완전히 유효한 것으로 판별되면, 상기 쓰기 버퍼 세트 카운터를 1만큼 증가시키고;
    상기 쓰기 버퍼의 캐시 라인들 모두가 완전히 유효한 것은 아닌 것으로 판별되면, 완전히 유효하지 않은 상기 쓰기 버퍼의 캐시 라인을 축출을 위한 교체 라인으로 선택하고;
    상기 백엔드 메모리로부터 상기 교체 라인을 미리-읽어오고; 그리고
    쓰기 버퍼 세트 카운터를 1만큼 증가시키는 것을 특징으로 하는 메모리 캐시 컨트롤러.
  10. 메모리 모듈을 이용하여 읽기-수정-쓰기 동작을 수행하는 방법에 있어서:
    백엔드 메모리의 혼잡도의 정도 및 프런트엔드 메모리의 혼잡도의 정도에 근거해서 언제 미리-읽기 동작을 수행할 지를 결정하는 단계;
    쓰기 버퍼의 캐시 라인들의 유효성 점수를 기반으로 상기 캐시 라인들의 축출 결정 점수를 할당하는 단계; 그리고
    가장 높은 축출 결정 점수를 갖는 캐시 라인을 축출을 위한 캐시 라인으로 선택하도록, 어느 캐시 라인을 미리-읽기 할 지를 결정하는 단계를 포함하고,
    상기 프런트엔드 메모리의 혼잡도는 상기 프런트엔드 메모리로 전송된 미해결 요청과 제1 요청 임계값을 비교하여 판단되고,
    상기 백엔드 메모리의 혼잡도는 상기 백엔드 메모리로 전송된 미해결 요청과 제2 요청 임계값을 비교하여 판단되는 것을 특징으로 하는 방법.
  11. 제 10 항에 있어서,
    상기 언제 미리-읽기 동작을 수행할 지를 결정하는 단계는 상기 백엔드 메모리의 미디어 컨트롤러로 전송된 미해결 요청을 추적하기 위한 MSHR(miss status handling register)을 유지하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 MSHR이 임계값 이하일 때 상기 미리-읽기 동작을 수행하기 위해 상기 백엔드 메모리에 읽기 요청을 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서,
    상기 임계값은 상기 백엔드 메모리의 특성에 근거한 것을 특징으로 하는 방법.
  14. 제 12 항에 있어서,
    동작 조건들에 근거해서 상기 임계값을 조절하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  15. 제 10 항에 있어서,
    어느 캐시 라인을 미리-읽기 할 지를 결정하는 단계는 상기 쓰기 버퍼의 유효 비트들을 읽어오는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서,
    상기 쓰기 버퍼의 유효 비트들을 읽어오는 단계는,
    상기 프런트엔드 메모리의 캐시 내 데이터의 세트를 선택하는 단계;
    상기 세트의 각각의 라인을 개별적으로 선택하는 단계; 그리고
    각각의 선택된 라인의 데이터의 유효성을 검사하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 제 16 항에 있어서,
    베이스라인 교체 점수 및 데이터 유효 점수에 근거해서 축출을 위한 데이터의 상기 세트 내 캐시 라인을 선택하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 제 10 항에 있어서,
    상기 프런트엔드 메모리의 컨트롤러 내 트랜잭션 큐를 모니터링하는 단계를 더 포함하고, 상기 프런트엔드 메모리의 혼잡도의 정도는 상기 트랜잭션 큐에 대응하는 것을 특징으로 하는 방법.
  19. 제 10 항에 있어서,
    상기 어느 캐시 라인을 미리-읽기 할 지를 결정하는 단계는,
    상기 프런트엔드 메모리의 상기 혼잡도의 정도가 제1 임계값 이하이고, 상기 백엔드 메모리의 상기 혼잡도의 정도가 제2 임계값 이하인 것으로 판별된 후 수행되는 것을 특징으로 하는 방법.
  20. 제 10 항에 있어서,
    쓰기 버퍼 세트 카운터를 유지하는 단계; 및
    상기 쓰기 버퍼 세트 카운터에 근거해서 축출을 위한 상기 프런트엔드 메모리의 캐시 내 데이터의 세트의 라인을 선택하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020180005530A 2017-04-10 2018-01-16 하이브리드 dram/낸드 메모리에서 읽기-수정-쓰기 오버헤드를 감소시키기 위한 기술들 KR102521053B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762483910P 2017-04-10 2017-04-10
US62/483,910 2017-04-10
US15/662,072 US10762000B2 (en) 2017-04-10 2017-07-27 Techniques to reduce read-modify-write overhead in hybrid DRAM/NAND memory
US15/662,072 2017-07-27

Publications (2)

Publication Number Publication Date
KR20180114497A KR20180114497A (ko) 2018-10-18
KR102521053B1 true KR102521053B1 (ko) 2023-04-13

Family

ID=63711718

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180005530A KR102521053B1 (ko) 2017-04-10 2018-01-16 하이브리드 dram/낸드 메모리에서 읽기-수정-쓰기 오버헤드를 감소시키기 위한 기술들

Country Status (5)

Country Link
US (1) US10762000B2 (ko)
JP (1) JP6882226B2 (ko)
KR (1) KR102521053B1 (ko)
CN (1) CN108694134B (ko)
TW (1) TWI729264B (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200008759A (ko) * 2018-07-17 2020-01-29 에스케이하이닉스 주식회사 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법
US11281545B2 (en) * 2018-09-07 2022-03-22 University Of Central Florida Research Foundation, Inc. Methods of crash recovery for data stored in non-volatile main memory
CN111506521B (zh) * 2019-01-31 2023-10-20 华为技术有限公司 一种存储器、数据请求写入方法及控制器
KR20200118994A (ko) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US10922235B2 (en) 2019-06-26 2021-02-16 Western Digital Technologies, Inc. Method and system for address table eviction management
CN110399316B (zh) * 2019-06-28 2021-10-01 苏州浪潮智能科技有限公司 一种用于业务系统性能优化的方法和装置
US11086791B2 (en) * 2019-08-29 2021-08-10 Micron Technology, Inc. Methods for supporting mismatched transaction granularities
US11288209B2 (en) * 2019-09-20 2022-03-29 Arm Limited Controlling cache entry replacement based on usefulness of cache entry
CN110888600B (zh) * 2019-11-13 2021-02-12 西安交通大学 一种面向nand闪存的缓冲区管理方法
US11436016B2 (en) * 2019-12-04 2022-09-06 Advanced Micro Devices, Inc. Techniques for improving operand caching
US11681617B2 (en) * 2021-03-12 2023-06-20 Arm Limited Cache victim selection based on completer determined cost in a data processing system
US11586552B2 (en) * 2021-05-13 2023-02-21 Apple Inc. Memory cache with partial cache line valid states
US12019542B2 (en) 2022-08-08 2024-06-25 Google Llc High performance cache eviction

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748495B2 (en) * 2001-05-15 2004-06-08 Broadcom Corporation Random generator
JP2004318940A (ja) * 2003-04-14 2004-11-11 Renesas Technology Corp 記憶装置
US20060143384A1 (en) * 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US9478062B2 (en) * 2006-09-19 2016-10-25 Imagination Technologies Limited Memory allocation in distributed memories for multiprocessing
US8554790B2 (en) * 2007-12-18 2013-10-08 Red Hat, Inc. Content based load balancer
US8990506B2 (en) * 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
GB2516091A (en) 2013-07-11 2015-01-14 Ibm Method and system for implementing a dynamic array data structure in a cache line
US9552301B2 (en) * 2013-07-15 2017-01-24 Advanced Micro Devices, Inc. Method and apparatus related to cache memory
US9317448B2 (en) * 2013-07-30 2016-04-19 Advanced Micro Devices, Inc. Methods and apparatus related to data processors and caches incorporated in data processors
US10346059B2 (en) 2013-10-15 2019-07-09 Dell Products, Lp System and method for supporting read requests and write requests for drives having different sector alignments without a RAID
JP6255893B2 (ja) 2013-10-24 2018-01-10 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
US9626297B2 (en) * 2014-10-08 2017-04-18 Wisconsin Alumni Research Foundation Memory fault patching using pre-existing memory structures
US10185730B2 (en) 2014-12-31 2019-01-22 Nexenta Systems, Inc. Methods and systems for key-value-tuple-encoded storage
US9720835B1 (en) * 2015-01-30 2017-08-01 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints
US9916275B2 (en) * 2015-03-09 2018-03-13 International Business Machines Corporation Preventing input/output (I/O) traffic overloading of an interconnect channel in a distributed data storage system
US11042300B2 (en) * 2015-03-31 2021-06-22 Toshiba Memory Corporation Command load balancing for NVME dual port operations
CN104866238B (zh) 2015-05-25 2018-12-14 华为技术有限公司 访问请求调度方法及装置
KR102461453B1 (ko) 2015-06-10 2022-11-02 삼성전자주식회사 스토리지 장치
US20170083474A1 (en) * 2015-09-22 2017-03-23 Advanced Micro Devices, Inc. Distributed memory controller
US10310997B2 (en) * 2016-09-22 2019-06-04 Advanced Micro Devices, Inc. System and method for dynamically allocating memory to hold pending write requests

Also Published As

Publication number Publication date
US20180293175A1 (en) 2018-10-11
JP2018181336A (ja) 2018-11-15
TWI729264B (zh) 2021-06-01
TW201837919A (zh) 2018-10-16
US10762000B2 (en) 2020-09-01
CN108694134A (zh) 2018-10-23
KR20180114497A (ko) 2018-10-18
CN108694134B (zh) 2023-11-21
JP6882226B2 (ja) 2021-06-02

Similar Documents

Publication Publication Date Title
KR102521053B1 (ko) 하이브리드 dram/낸드 메모리에서 읽기-수정-쓰기 오버헤드를 감소시키기 위한 기술들
US8719509B2 (en) Cache implementing multiple replacement policies
US8615634B2 (en) Coordinated writeback of dirty cachelines
US11693775B2 (en) Adaptive cache
US20140181402A1 (en) Selective cache memory write-back and replacement policies
US9298620B2 (en) Selective victimization in a multi-level cache hierarchy
US10007614B2 (en) Method and apparatus for determining metric for selective caching
US8645627B2 (en) Memory bus write prioritization
KR20160033737A (ko) 메모리 관리를 위한 캐시 동작들
US7809889B2 (en) High performance multilevel cache hierarchy
EP4078387B1 (en) Cache management based on access type priority
CN113342265B (zh) 缓存管理方法、装置、处理器及计算机装置
KR20100054155A (ko) 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘
Pourshirazi et al. WALL: A writeback-aware LLC management for PCM-based main memory systems
US20170357585A1 (en) Setting cache entry age based on hints from another cache level
US11693778B2 (en) Cache grouping for increasing performance and fairness in shared caches

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right