KR20190054882A - 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법 - Google Patents

캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법 Download PDF

Info

Publication number
KR20190054882A
KR20190054882A KR1020180061798A KR20180061798A KR20190054882A KR 20190054882 A KR20190054882 A KR 20190054882A KR 1020180061798 A KR1020180061798 A KR 1020180061798A KR 20180061798 A KR20180061798 A KR 20180061798A KR 20190054882 A KR20190054882 A KR 20190054882A
Authority
KR
South Korea
Prior art keywords
objects
memory
entropy
memory blocks
storable
Prior art date
Application number
KR1020180061798A
Other languages
English (en)
Other versions
KR102347871B1 (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
Priority claimed from US15/812,900 external-priority patent/US9983999B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20190054882A publication Critical patent/KR20190054882A/ko
Application granted granted Critical
Publication of KR102347871B1 publication Critical patent/KR102347871B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket

Landscapes

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

Abstract

컴퓨팅 시스템은, 저장가능 객체들을 저장하기 위한 메모리 캐시로서 메모리 블록들을 포함하는 메모리 스토리지 유닛 및 메모리 스토리지 유닛과 연결되는 장치 제어 유닛을 포함한다. 장치 제어 유닛은, 축출정책을 기반으로 저장가능 객체들에 대한 엔트로피 레벨을 계산하고, 메모리 블록들 내의 저장가능 객체들의 엔트로피 레벨을 기반으로 메모리 블록들 각각의 블록 엔트로피를 계산하며, 블록 엔트로피의 값이 가장 낮은 메모리 블록들의 인스턴스인 소거블록을 메모리 블록들로부터 선택하고, 그리고 소거블록에 대해 소거동작을 수행한다.

Description

캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법{COMPUTING SYSTEM WITH CACHE MANAGEMENT MECHANISM AND METHOD OF OPERATION THEREOF}
본 발명은 컴퓨팅 시스템에 관한 것으로, 보다 구체적으로 캐시 관리를 위한 시스템에 관한 것이다.
현대 소비자 및 산업 전자기술, 특히 클라우드 컴퓨팅 장치들 및 웹 서버들은 빅데이터의 분석 및 실시간 웹 애플리케이션들을 포함하며 현대 생활을 지원하기 위한 기능의 수준들을 증가시키고 있다. 기존 기술들의 연구 개발은 무수히 다른 방향들로 나아갈 수 있다.
사용자가 정보 처리 기술의 발전으로 더욱 힘을 얻게 되면서, 신구 패러다임들이 이러한 새로운 공간을 활용하기 시작했다. 대용량 정보를 처리하는 전형적인 전자기반 성장영역 중 하나는 비구조적 쿼리 언어(NoSQL 또는 NonSQL: Non-Structured Query Language) 기반 시스템과 같은 빅데이터 분석에 있다. 그러나 웹 캐싱 서버(web caching server)와 같이 정보를 호스팅(hosting)하는 백 엔드 데이터베이스(back end database)들 및 컴퓨팅 서버들은 비용이 많이 들고 정보 처리량에 병목현상이 발생할 수 있다. 따라서, 본 발명의 기술분야에 속한 통상의 기술자들은 초당 입출력(IOPS: Input/Output Per Second) 처리량이 높은 확장성 있는 데이터 서버들에 있어 성과를 내지 못하고 있다.
이에 따라, 캐시 관리를 위한 메모리 관리 매커니즘을 갖는 컴퓨팅 시스템에 대한 필요성이 여전히 남게 된다. 소비자의 기대치 증가 및 시장에서 의미있는 제품 차별화에 대한 기회가 줄어듦과 더불어 끊임없이 증가하는 상업적 경쟁압박에 비추어 볼 때, 이러한 문제들의 해결책을 찾는 것이 점차 중요해지고 있다. 이에 더하여, 비용 감소, 효율성과 성능의 향상, 그리고 경쟁압박 대처에 대한 요구는 이러한 문제들의 해결책을 찾는 것에 있어 중대한 필요성뿐만 아니라 시급성을 더하고 있다.
오랫동안 이러한 문제들에 대한 해결책들이 강구되어왔지만, 종래의 개발기술들은 어떠한 해답도 교시/암시하지 못하였고, 통상의 기술자들에 의한 해결책 제시도 오랫동안 이루어지지 않고 있다.
본 발명의 실시예들에 따른 과제는 전술한 문제점을 해결하기 위한 컴퓨팅 시스템 및 그 동작방법을 제공하는데 있다.
본 발명의 실시예에 따르면, 저장가능 객체들을 저장하기 위한 메모리 캐시로서, 메모리 블록들을 포함하는 메모리 스토리지 유닛 및 메모리 스토리지 유닛과 연결되는 장치 제어 유닛을 포함하는 시스템을 제공한다. 장치 제어 유닛은 축출정책(eviction policy)을 기반으로 저장가능 객체들에 대한 엔트로피 레벨을 계산하고, 메모리 블록들 내의 저장가능 객체들의 엔트로피 레벨을 기반으로 메모리 블록들 각각의 블록 엔트로피를 계산하며, 블록 엔트로피의 값이 가장 낮은 메모리 블록들의 인스턴스(instance)인 소거블록을 메모리 블록들로부터 선택하고, 소거블록에 대해 소거동작을 수행한다.
본 발명의 실시예에 따르면, 메모리 캐시로서 구성된 메모리 스토리지 유닛의 메모리 블록들에 저장가능 객체들을 저장하는 과정, 축출정책을 기반으로 저장가능 객체들에 대한 엔트로피 레벨을 계산하는 과정, 메모리 블록들에 저장된 저장가능 객체들의 엔트로피 레벨을 기반으로 메모리 블록들 각각의 블록 엔트로피를 계산하는 과정, 블록 엔트로피의 값이 가장 낮은 메모리 블록들의 인스턴스인 소거블록을 메모리 블록들로부터 선택하는 과정 및 소거블록에 대해 소거동작을 수행하는 과정을 포함하는 방법을 제공한다.
본 발명의 특정 실시예들은 위에서 언급된 것 이외에 추가적으로 또는 위에서 언급된 것을 대체하여 다른 단계들 또는 구성들을 갖는다. 본 단계들 또는 구성들은 첨부된 도면들을 참조하여 이하의 상세한 설명으로부터 본 발명의 기술분야에 속한 통상의 지식을 가진 자에게 명백할 것이다.
도 1은 본 발명의 실시예에 따른 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템을 나타낸다.
도 2는 본 발명의 실시예에 따른 컴퓨팅 시스템에 대한 캐시 축출 프로세스를 예시적으로 나타낸다.
도 3은 도 2의 컴퓨팅 시스템의 캐시 축출 프로세스에 대한 예시적인 흐름도를 나타낸다.
도 4는 본 발명의 실시예에 따른 컴퓨팅 시스템에 대한 캐시 관리 프로세스의 개략적인 예시도를 나타낸다.
도 5는 도 4의 컴퓨팅 시스템의 캐시 관리 프로세스에 대한 예시적인 흐름도를 나타낸다.
도 6은 도 4의 컴퓨팅 시스템의 캐시 관리 프로세스에 대한 구성요소들의 개략적인 예시도를 나타낸다.
도 7은 도 4의 캐시 관리 프로세스에 대한 스토리지 동작의 흐름도를 나타낸다.
도 8은 도 4의 컴퓨팅 시스템의 캐시 관리 프로세스에 대한 검색 동작의 흐름도를 나타낸다.
도 9는 도 4의 캐시 관리 프로세스에 대한 가비지 컬렉션 동작의 흐름도를 나타낸다.
이하의 실시예들은 본 발명의 기술분야에 속한 통상의 지식을 가진 자가 본 발명을 생산 및 사용할 수 있도록 충분히 상세하게 설명된다. 이외의 다른 실시예들은 본 발명의 개시에 기초하여 명백해질 것이며, 본 발명의 실시예를 벗어나지 않는 범위 내에서 시스템, 프로세서 또는 기계적 변경이 이루어질 수 있음은 당연하다.
이하의 설명에서, 본 발명의 완전한 이해를 돕기 위한 다양한 특정 세부사항들이 제시된다. 다만, 이러한 특정 세부사항들 없이도 본 발명이 실시될 수 있음은 명백할 것이다. 공지의 회로들, 시스템 구성들 및 프로세스 단계들에 대한 상세한 설명은 본 발명의 실시예가 모호해지는 것을 방지하기 위하여 생략하도록 한다.
본 시스템의 실시예들을 도시하는 도면들은 반 도식적(semi-diagrammatic)이고 축적대로 되어 있지 않으며, 특히 일부 치수들은 표시를 명확히 하기 위한 것으로 도면 내에서 과장되게 나타날 수 있다. 마찬가지로, 설명을 용이하게 하기 위하여 도면들의 시점은 전반적으로 비슷한 방향을 나타내지만, 대부분의 경우에 도면들에서의 이러한 도시는 임의적이다. 일반적으로, 본 발명은 임의의 방향으로 동작될 수 있다. 본 발명의 실시예들은 설명의 편의를 위하여 제1 실시예, 제2 실시예 등으로 열거되었으나, 본 발명의 실시예에 대해 어떤 다른 의미를 갖거나 제한하는 것은 아니다.
도 1을 참조하면, 본 발명의 실시예에 따른 메모리 관리 매커니즘을 갖는 컴퓨팅 시스템(100)이 도시된다. 도 1은 컴퓨팅 시스템(100)의 예시적인 블록도를 도시한다. 컴퓨팅 시스템(100)은 호스트 장치(102) 및 메모리 장치(104)를 포함할 수 있다. 본 블록도는 호스트 장치(102)와 연결된 메모리 장치(104)를 도시한다.
호스트 장치(102)는 서버, 랩탑 컴퓨터 또는 데스크탑 컴퓨터 등의 컴퓨팅 장치가 될 수 있다. 다른 예로서, 호스트 장치(102)는 다양한 중앙 집중형/분산형 컴퓨팅 장치들을 포함할 수 있다. 예를 들어, 호스트 장치(102)는 그리드-컴퓨팅 리소스(grid-computing resource), 가상화 컴퓨터 리소스, 클라우드 컴퓨팅 리소스, 피어-투-피어(peer-to-peer) 분산 컴퓨팅 장치, 웹 서버 또는 이들의 조합일 수 있다.
호스트 장치(102)는 비구조적 쿼리 언어(NoSQL) 데이터베이스와 같은 키-밸류 저장소/데이터베이스(key-value store/database)를 지원 또는 구현할 수 있고, 빅데이터와 실시간 웹 애플리케이션을 실행할 수 있으며, 또는 이들의 조합이 가능한 장치가 될 수 있다.
호스트 장치(102)는 호스트 제어 유닛(112), 호스트 스토리지 유닛(114), 호스트 통신 유닛(116) 및 호스트 사용자 인터페이스(118)를 포함하는 하드웨어 구성요소들과 같은 유닛들을 포함할 수 있다. 호스트 제어 유닛(112)은 호스트 제어 인터페이스(122)를 포함할 수 있다. 호스트 제어 유닛(112)은 호스트 소프트웨어(126)를 실행시켜 호스트 장치(102)의 지능(intelligence)을 제공할 수 있다.
호스트 제어 유닛(112)은 여러 가지 서로 다른 방식의 하드웨어 회로로 구현될 수 있다. 예를 들어, 호스트 제어 유닛(112)은 CPU, 주문형 집적회로(ASIC: Application Specific Integrated Circuit), 내장형 프로세서(embedded processor), 마이크로프로세서, 하드웨어 제어 논리, 하드웨어 유한 상태 기계(FSM: Finite State Machine), 디지털 신호 프로세서(DSP: Digital Signal Processor), 프로그램 가능 논리 소자(PLD: Programmable Logic Device), 또는 이들의 조합과 같은 프로세서일 수 있다. 호스트 제어 유닛(112)은 메모리 할당 동작들 및 정보의 흐름을 위해 메모리 컨트롤러, 메모리칩 컨트롤러 또는 메모리 컨트롤러 유닛과 같은 전용 회로를 포함할 수 있다.
호스트 제어 인터페이스(122)는 호스트 제어 유닛(112)과 호스트 장치(102) 내 다른 유닛들 간의 통신을 위해 이용될 수 있다. 또한, 호스트 제어 인터페이스(122)는 메모리 장치(104)를 포함한 호스트 장치(102) 외부와 통신하기 위해 이용될 수 있다.
호스트 제어 인터페이스(122)는 다른 유닛들 또는 외부 소스들로부터 정보를 수신할 수 있거나, 또는 다른 유닛들 또는 외부 목적지들로 정보를 전송할 수 있다. 외부 소스들 및 외부 목적지들은 호스트 장치(102)의 외부에 있는 소스들 및 목적지들을 지칭한다.
호스트 제어 인터페이스(122)는 하드웨어 회로와 다른 방식으로 구현될 수 있고, 내부 또는 외부의 어떤 유닛들이 호스트 제어 인터페이스(122)와 인터페이스되고 있는지에 따라 다양한 구현예들을 포함할 수 있다. 예를 들어, 호스트 제어 인터페이스(122)는 압력센서, 관성센서(inertial sensor), 미세전자기계 시스템(MEMS: Microelectromechanical System), 광학회로, 웨이브가이드(waveguide)들, 무선회로, 유선회로 또는 이들의 조합으로 구현될 수 있다.
호스트 스토리지 유닛(114)은 호스트 소프트웨어(126)를 저장할 수 있다. 또한, 호스트 스토리지 유닛(114)은 객체들과 관련된 정보와 같은 관련정보를 저장할 수 있다. 관련정보는 키-밸류 쌍들(Key-Value Pairs, K-VP, 165)과 관련된 정보를 포함하고, 호스트 스토리지 유닛(114), 메모리 장치(104) 또는 이들의 조합에 저장된다.
호스트 스토리지 유닛(114)은 휘발성 메모리, 비휘발성 메모리, 내부 메모리, 외부 메모리 또는 이들의 조합을 포함하는 하드웨어 회로로 구현될 수 있다. 예를 들어, 호스트 스토리지 유닛(114)은 비휘발성 랜덤 액세스 메모리(NVRAM: Non-Volatile Random Access Memory), 플래시 메모리와 같은 일렉트로닉 솔리드 스테이트 비휘발성 스토리지(electronic solid state non-volatile storage), 디스크 스토리지, 저항 랜덤 액세스 메모리(ReRAM: Resistive Random Access Memory), 상변화 메모리(PRAM: Phase-change Memory)와 같은 비휘발성 스토리지가 될 수 있거나, 또는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory)와 같은 휘발성 스토리지가 될 수 있다. 구체적인 예로서, 호스트 스토리지 유닛(114)은 듀얼 인-라인 메모리 모듈(DIMM: Dual In-line Memory Modules)과 같은 하드웨어 모듈 형태의 랜덤 액세스 메모리(RAM: Random Access Memory), 동기식 동적 랜덤 액세스 메모리(SDRAM: Synchronous Dynamic Access Memory)를 포함할 수 있다.
호스트 스토리지 유닛(114)은 호스트 스토리지 인터페이스(124)를 포함할 수 있다. 호스트 스토리지 인터페이스(124)는 호스트 장치(102) 내 다른 유닛들 간의 통신을 위해 이용될 수 있다. 또한, 호스트 스토리지 인터페이스(124)는 호스트 장치(102)의 외부와 통신하기 위해 이용될 수 있다. 예시적인 목적을 위해 호스트 스토리지 유닛(114)은 호스트 스토리지 인터페이스(124) 및 호스트 소프트웨어(126)를 포함하는 구성요소들로 도시되었지만, 호스트 스토리지 유닛(114)은 추가적으로 다른 구성요소들을 더 포함할 수 있다. 예를 들어, 호스트 스토리지 유닛(114)은 메모리 장치(104)에 포함된 장치 제어 유닛(152), 플래시 변환 계층(FTL: Flash Translation Layer, 158), 용량 관리자(capacity manager, 160), 메모리 가비지 컬렉터(memory garbage collector, 162), 메모리 입출력 인터페이스(164), 메모리 스토리지 유닛(154), 메모리 블록(168)들, 메모리 페이지(memory page, MP, 170)들, 또는 이들의 조합과 같은 구성요소들의 일부 또는 전부를 포함할 수 있다. 각각의 구성요소들에 대해서는 아래에서 상세히 설명한다.
호스트 스토리지 인터페이스(124)는 다른 유닛들 또는 외부 소스들로부터 정보를 수신하거나, 다른 유닛들 또는 외부 목적지들로 정보를 전송할 수 있다. 외부 소스들 및 외부 목적지들은 호스트 장치(102) 외부에 있는 소스들 및 목적지들을 지칭한다.
호스트 스토리지 인터페이스(124)는 어떤 유닛들 또는 어떤 외부 유닛들이 호스트 스토리지 유닛(114)과 인터페이스되고 있는지에 따라 다양한 구현예들을 포함할 수 있다. 호스트 스토리지 인터페이스(124)는 호스트 제어 인터페이스(122)를 구현하는 것과 유사한 기술들 및 기법들로 구현될 수 있다.
호스트 통신 유닛(116)은 호스트 장치(102)의 외부 통신을 가능하게 할 수 있다. 예를 들어, 호스트 통신 유닛(116)은 호스트 장치(102)가 메모리 장치(104) 또는 다른 부가장치들(예: 주변장치 또는 컴퓨터 데스크탑)과 통신할 수 있도록 한다. 호스트 통신 유닛(116)은 마이크로전자장치, 필터, 변조기, 복조기, 감지기, 복호기, 베이스밴드 모뎀, 또는 안테나와 같은 능동 및 수동 구성요소들을 포함할 수 있다.
호스트 통신 유닛(116)은 호스트 통신 인터페이스(128)를 포함할 수 있다. 호스트 통신 인터페이스(128)는 호스트 통신 유닛(116)과 호스트 장치(102) 내 다른 유닛들 간의 통신을 위해 이용될 수 있다. 호스트 통신 인터페이스(128)는 다른 유닛들로부터 정보를 수신할 수 있고, 또는 다른 유닛들로 정보를 전송할 수 있다.
호스트 통신 인터페이스(128)는 어떤 유닛들이 호스트 통신 유닛(116)과 인터페이스되고 있는지에 따라 다양한 구현예들을 포함할 수 있다. 호스트 통신 인터페이스(128)는 호스트 제어 인터페이스(122)를 구현하는 것과 유사한 기술들 및 기법들로 구현될 수 있다.
호스트 사용자 인터페이스(118)는 사용자(미도시)가 호스트 장치(102)와 인터페이스 및 상호작용하도록 한다. 호스트 사용자 인터페이스(118)는 입력장치 및 출력장치를 포함할 수 있다. 호스트 사용자 인터페이스(118)의 데이터 및 통신입력들을 제공하기 위한 입력장치의 예로서, 키패드(keypad), 터치패드(touchpad), 소프트-키(soft-key)들, 키보드, 마이크로폰, 원격신호들을 수신하기 위한 적외선센서 또는 이들의 조합이 포함될 수 있다. 또 다른 예로서, 호스트 사용자 인터페이스(118)는 원격 또는 네트워크 접속을 통해 호스트 장치(102)와의 인터페이스를 활성화시킬 수 있다.
호스트 사용자 인터페이스(118)는 디스플레이 인터페이스(130)를 포함할 수 있다. 디스플레이 인터페이스(130)는 디스플레이, 프로젝터, 비디오 스크린, 스피커 또는 이들의 임의의 조합에 대한 연결을 포함할 수 있다.
호스트 제어 유닛(112)은 컴퓨팅 시스템(100)에 의해 생성된 정보를 디스플레이하기 위해 호스트 사용자 인터페이스(118)를 동작시킬 수 있다. 또한, 호스트 제어 유닛(112)은 컴퓨팅 시스템(100)의 다른 기능들을 위해 호스트 소프트웨어(126)를 실행시킬 수 있다.
호스트 장치(102)의 유닛들은 다른 유닛들과 개별적으로 그리고 독립적으로 동작할 수 있다. 호스트 장치(102)는 메모리 장치(104)로부터 개별적으로 그리고 독립적으로 동작할 수 있다.
메모리 장치(104)는 비휘발성 메모리 기술을 기반으로 하는 독립형(standalone) 메모리 스토리지 하드웨어이다. 예를 들어, 메모리 장치(104)는 다단계 캐시 시스템(multi-level cache system)의 일부분으로서 동작하도록 구성되는 솔리드 스테이트(solid state) 메모리 장치일 수 있다. 메모리 장치(104)는 다계층 캐싱 시스템(multi-tier cahing system)의 캐싱 장치로서 동작할 수 있다. 예를 들어, 메모리 장치(104)는 호스트 장치(102)와 독립적으로 용량관리 및 축출동작들을 실시할 수 있다. 메모리 장치(104)는 장치 제어 유닛(152), 메모리 스토리지 유닛(154) 및 메모리 장치 인터페이스(156)를 포함할 수 있다.
장치 제어 유닛(152)은 여러 가지 상이한 방식들의 하드웨어 회로들로 구현될 수 있다. 예를 들어, 장치 제어 유닛(152)은 CPU, ASIC, 내장형 프로세서, 마이크로프로세서, 하드웨어 제어 논리, FSM, DSP 또는 이들의 조합과 같은 프로세서일 수 있다. 장치 제어 유닛(152)은 메모리 할당 동작들 및 정보의 흐름을 위해 메모리 컨트롤러, 메모리칩 컨트롤러 또는 메모리 컨트롤러 유닛과 같은 전용 회로를 포함할 수 있다.
장치 제어 유닛(152)은 메모리 장치(104)의 동작을 위한 펌웨어를 구현할 수 있다. 예를 들어, 장치 제어 유닛(152)은 플래시 변환 계층(158)을 조작할 수 있다. 플래시 변환 계층(158)은 메모리 장치(104)의 읽기, 프로그래밍(또는 쓰기) 및 맵핑(mapping)과 같은 동작들을 위한 매커니즘 및 프로세스들을 구현하기 위한 구성요소이다. 플래시 변환 계층(158)은 용량 관리자(160), 메모리 가비지 컬렉터(162) 및 메모리 입출력 인터페이스(164)와 같은 펌웨어 구성요소들을 포함할 수 있다.
용량 관리자(160)는 메모리 장치(104) 내의 키-밸류 쌍들(165)의 상태 및 활동을 감시하는 구성요소이다. 예를 들어, 용량 관리자(160)는 메모리 스토리지 유닛(154) 내 저장을 위해 키-밸류 쌍들(165)의 입력 인스턴스들의 값들을 처리할 수 있다. 다른 예로서, 용량 관리자(160)는 소거(erase) 동작들을 위한 후보들을 식별할 수 있다. 이러한 각각의 동작들에 대한 설명은 후술한다.
메모리 가비지 컬렉터(162)는 메모리 스토리지 유닛(154) 내 소거동작들을 처리하기 위한 구성요소이다. 예를 들어, 메모리 가비지 컬렉터(162)는 용량 관리자(160)로부터 수신한 정보에 기초하여 메모리 블록들을 식별하고 소거할 수 있다.
메모리 입출력 인터페이스(164)는 메모리 스토리지 유닛(154)으로의 접근(access) 요청들을 처리하기 위한 구성요소이다. 예를 들어, 메모리 입출력 인터페이스(164)는 메모리 스토리지 유닛(154)에 대한 읽기, 프로그래밍, 또는 소거동작들을 처리할 수 있다. 예를 들어, 메모리 입출력 인터페이스(164)는 메모리 스토리지 유닛(154)에 접근하여, 용량 관리자(160)에 의해 수신된 키-밸류 쌍들(165)의 값(value, VAL)으로 메모리 페이지(170)들을 프로그래밍할 수 있다. 다른 예로, 메모리 입출력 인터페이스(164)는 읽기 동작을 위해 메모리 스토리지 유닛(154)에 접근하여 키-밸류 쌍들(165)의 값을 검색할 수 있다. 또 다른 예로, 메모리 입출력 인터페이스(164)는 메모리 스토리지 유닛(154) 내의 메모리 블록들에 접근하여 소거동작을 수행할 수 있다. 용량 관리자(160), 메모리 가비지 컬렉터(162) 및 메모리 입출력 인터페이스(164)는 독립적으로 동작하거나, 또는 메모리 장치(104)의 동작을 위해 서로 통신할 수 있다.
메모리 스토리지 유닛(154)은 비 일시적인(non-transitory) 컴퓨터 판독 매체이다. 예를 들어, 메모리 스토리지 유닛(154)은 NAND 플래시 메모리, 강유전체 랜덤 액세스 메모리(FRAM: Ferroelectric Random Access Memory), 또는 자기저항 랜덤 액세스 메모리(MRAM: Magnetoresistive Random Access Memory) 등을 포함하는 플래시 메모리와 같은 비휘발성 메모리일 수 있다. 메모리 스토리지 유닛(154)은 플레인(plane, 미도시)들, 메모리 블록들(168) 및 메모리 페이지들(170)과 같은 메모리 구성요소들 및 서브-구성요소들을 포함할 수 있다. 일례로, 메모리 페이지들(170)은 프로그래밍 동작이 수행될 수 있는 메모리 스토리지 유닛(154)의 최소 단위일 수 있다. 메모리 블록들(168)은 복수의 메모리 페이지들(170)을 포함할 수 있다. 메모리 블록들(168)은 소거동작이 수행될 수 있는 메모리 스토리지 유닛(154)의 최소 단위일 수 있다.
메모리 장치 인터페이스(156)는 메모리 장치(104) 외부의 장치들과의 연결을 제공하기 위한 것이다. 예를 들어, 메모리 장치 인터페이스(156)는 호스트 장치(102)와의 직접 또는 간접 연결을 위한 하드웨어를 제공할 수 있다. 예를 들어, 메모리 장치 인터페이스(156)는 PCI(Peripheral Component Interconnect) 또는 PCI 익스프레스(PCI express) 연결을 통해 메모리 장치(104)에 호스트 장치(102)로의 직접 접속을 제공할 수 있다. 다른 예로서, 메모리 장치 인터페이스(156)는 유선 또는 무선 통신을 통해 근거리 통신망(LAN: Local Area Network), 도시권 통신망(MAN: Metropolitan Area Network), 또는 광역 통신망(WAN: Wide-Area Network)과 같은 네트워크 상에서 메모리 장치(104) 및 호스트 장치(102) 간에 연결을 제공할 수 있다. 유선 통신의 예로 디지털 가입자 회선(DSL: Digital Subscriber Line), 광섬유 연결, 또는 카테고리(Cat) 5, Cat 5e, 또는 Cat 6 연결에 대한 인터페이스들을 갖춘 이더넷(Ethernet) 연결을 통한 통신이 포함될 수 있다. 위성 통신, 셀룰러 통신, 블루투스, 적외선 통신(IrDA: Infrared Data Association standard) 및 와이파이는 무선통신의 예이다.
도 2를 참조하면, 본 발명의 실시예에 따른 컴퓨팅 시스템(100)에 대한 캐시 축출 프로세스(210)의 일례가 도시된다. 캐시 축출 프로세스(210)는 객체선택 및 축출동작이다. 캐시 축출 프로세스(210)는 메모리 장치(104)가 독립형 캐싱 장치로서 동작할 수 있도록 한다. 캐시 축출 프로세스(210)는 도 1의 메모리 장치(104) 상의 장치 제어 유닛(152)에 의해 실행될 수 있고, 이하의 설명과 같이 용량 관리자(160), 메모리 가비지 컬렉터(162), 메모리 입출력 인터페이스(164) 또는 이들의 조합으로 구현될 수 있다.
캐시 축출 프로세스(210)는 용량 관리자(160)의 키-밸류 레지스트리(211)로 설명될 수 있다. 키-밸류 레지스트리(211)는 메모리 장치(104)의 키-밸류 쌍들(165)과 연관된 정보의 사전(dictionary)이다. 키-밸류 레지스트리(211)에 대한 추가적인 세부설명은 후술한다. 키-밸류 레지스트리(211)는 키-밸류 축출 후보들(eviction candidates, ECs, 212) 및 축출 대상들(eviction targets, ETs, 222)을 추적할 수 있다.
키-밸류 축출 후보들(212)은 축출 기준에 부합하는 키-밸류 쌍들(165)이다. 예를 들어, 키-밸류 축출 후보들(212)은 축출 임계치(216)를 초과하는 축출 기준을 갖는 키-밸류 쌍들(165)의 인스턴스들일 수 있다. 축출 기준 및 축출 임계치(216)는 접근빈도, 저장시간 및 가장 최근 활동과 같은 요소들에 따른 축출정책들을 기반으로 할 수 있으며, 이에 대해서는 이하에서 더 설명하기로 한다. 캐시 축출 프로세스(210)에서 용량 관리자(160)는 키-밸류 레지스트리(211)의 키-밸류 쌍들(165)로부터 키-밸류 축출 후보들(212)을 식별할 수 있다. 예를 들어, 용량 관리자(160)는 도 2에서 점선으로 도시된 축출 임계치(216, 측정될 수도 있음)를 초과하는 키-밸류 쌍들(165)의 인스턴스들로서 키-밸류 축출 후보들(212)을 식별할 수 있다.
축출 대상들(222)은 축출정책에 따라 축출을 위해 선택된 키-밸류 축출 후보들(212)의 인스턴스들이다. 예를 들어, 접근빈도를 기반으로 하는 정책의 경우, 가장 낮은 접근빈도를 갖는 키-밸류 축출 후보들의 인스턴스들이 축출 대상들(222)로 선택될 수 있다. 다른 예로, 가장 최근의 접근을 기반으로 하는 정책의 경우, 마지막 접근으로부터 가장 긴 기간을 갖는 키-밸류 축출 후보들(212)의 인스턴스들이 축출 대상들(222)로 선택될 수 있다. 또 다른 예로, 저장시간을 기반으로 하는 정책의 경우, 메모리 스토리지 유닛(154)에 가장 긴 기간 동안 저장된 키-밸류 축출 후보들(212)의 인스턴스들이 축출 대상들(222)로 선택될 수 있다. 키-밸류 축출 후보들(212)로부터 축출 대상들(222)을 선택하는 것에 대한 구체적인 설명은 후술한다.
캐시 축출 프로세스(210)에 따르면, 메모리 가비지 컬렉터(162)는 축출 대상들(222) 중 하나를 포함하는 메모리 스토리지 유닛(154) 내의 메모리 블록들(168)의 인스턴스를 소거블록(220)으로 선택할 수 있다. 예를 들어, 메모리 가비지 컬렉터(162)는 축출 대상들(222)에 대한 관련 축출 후보들(associated eviction candidates, AECs, 224)의 관련 축출 카운트(count) (218)를 계산할 수 있다. 관련 축출 후보들(224)은 축출 대상들(222) 중 하나와 동일한 메모리 블록들의 인스턴스 내에 있는 키-밸류 축출 후보들(212)이다. 다른 예로, 메모리 가비지 컬렉터(162)는 관련 축출 카운트(218)의 값이 가장 높은 축출 대상들(222)을 갖는 메모리 블록들(168)을 소거블록(220)으로 선택할 수 있다.
예시의 목적으로 도 2는 두 개의 축출 대상들(222)을 도시하고 있으나, 캐시 축출 프로세스(210)에서 축출 대상들(222)의 수는 이와 달라질 수 있다. 키-밸류 축출 후보들(212)의 결정, 소거블록(220) 선택 및 관련 단계들을 포함하는 캐시 축출 프로세스(210)에 대한 구체적인 설명은 후술한다.
도 3을 참조하면, 도 2의 컴퓨팅 시스템(100)의 캐시 축출 프로세스에 대한 흐름도가 도시된다. 컴퓨팅 시스템(100)의 메모리 관리 매커니즘은 여러 가지 다양한 방식으로 구현될 수 있다. 도 1의 메모리 장치(104)에 대한 도 2의 캐시 축출 프로세스(210)를 나타내는 일 구현예가 도 3의 흐름도에 도시된다. 일반적으로, 캐시 축출 프로세스(210)는 축출정책(330)을 기반으로 하여 자율적으로 구현될 수 있다. 보다 구체적으로, 캐시 축출 프로세스(210)는 도 1의 호스트 장치(120)로부터의 명령들과 같은 외부 명령들이 없어도 도 2의 용량 관리자(160)를 통해 장치 제어 유닛(152)에 의해 개시될 수 있다.
축출정책(330)은 메모리 유닛으로부터 데이터 축출을 위한 후보들을 결정하는 규칙이다. 예를 들어, 축출정책(330)은 키-밸류 쌍들(165)이 접근된 빈도, 키-밸류 쌍들(165)이 얼마나 최근에 접근되었는지, 키-밸류 쌍들(165)의 값이 메모리 스토리지 유닛(154)에 저장되어 있던 총 시간, 또는 이들의 조합에 기초하여, 도 1의 키-밸류 쌍들(165)을 도 2의 키-밸류 축출 후보들(212)로 식별할 수 있다. 축출정책(330)은 최소최근정책(least recent policy, 332), 최소빈도정책(least frequent policy, 334), 만료정책(336) 또는 이들의 조합을 포함할 수 있다.
최소최근정책(332)은 키-밸류 쌍들(165)의 인스턴스가 얼마나 최근에 접근되었는지를 기반으로 하는 축출정책이다. 예를 들어, 최소최근정책(332)은 메모리 스토리지 유닛(154)의 키-밸류 쌍들(165)의 값들 중에서 마지막 접근 이후 가장 긴 시간이 경과한 키-밸류 축출 후보들(212)로서 키-밸류 쌍들(165)을 대상으로 할 수 있다.
최소빈도정책(334)은 키-밸류 쌍들(165)의 인스턴스가 얼마나 자주 접근되었는지를 기반으로 하는 축출정책이다. 예를 들어, 최소빈도정책(334)은 메모리 스토리지 유닛(154)의 키-밸류 쌍들(165)의 값들 중에서 접근빈도가 가장 작은 키-밸류 축출 후보들(212)로서 키-밸류 쌍들(165)을 대상으로 할 수 있다.
만료정책(336)은 메모리 스토리지 유닛(154) 내에 있던 시간을 기반으로 하는 축출정책이다. 예를 들어, 만료정책(336)은 키-밸류 쌍들(165)의 다른 인스턴스들에 비하여 상대적으로 가장 긴 시간 동안 메모리 스토리지 유닛(154)에 저장되어 있던 값들을 갖는 키-밸류 쌍들(165)을 대상으로 할 수 있다.
캐시 축출 프로세스(210)는 레지스트리 유지관리 단계(340), 용량 모니터링 단계(342), 축출 식별 단계(344), 관련 후보 단계(346) 및 소거블록 식별 단계(348)를 포함할 수 있다. 컴퓨팅 시스템(100)의 캐시 축출 프로세스(210)는 레지스트리 유지관리 단계(340)로 시작될 수 있다. 레지스트리 유지관리 단계(340)는 스토리지 장치의 키-밸류 저장소들의 레지스트리를 유지관리하고 업데이트하기 위한 것이다.
레지스트리 유지관리 단계(340)에서, 용량 관리자(160)는 키-밸류 레지스트리(211)를 유지관리할 수 있다. 키-밸류 레지스트리(211)는 각각의 키-밸류 쌍들(165)과 관련된 레지스트리 정보를 포함할 수 있다. 예를 들어, 키-밸류 레지스트리(211)는 도 1의 메모리 스토리지 유닛(154)에 저장된 키-밸류 쌍(165)의 값의 키(key)와 위치에 대한 정보를 포함할 수 있다. 다른 예로, 키-밸류 레지스트리(211)는 키-밸류 쌍들(165) 각각에 대하여 프로그램 타임스탬프(program timestamp, 352), 활동로그(activity log, 354) 또는 이들의 조합을 포함할 수 있다.
프로그램 타임스탬프(352)는 키-밸류 쌍들(165)의 인스턴스의 값이 메모리 스토리지 유닛(154)에 프로그램되었던 시점이다. 활동로그(354)는 키-밸류 쌍들(165)의 값에 대한 접근 기록이다.
활동로그(354)는 키-밸류 쌍들(165)과 관련된 활동빈도(356) 및 최근 활동(358)을 추적할 수 있다. 활동빈도(356)는 키-밸류 쌍들(165)이 접근되는 빈도의 척도이다. 최근 활동(358)은 키-밸류 쌍들(165)의 값이 접근되었던 마지막 시간에 대한 기록이다.
용량 관리자(160)는 키-밸류 쌍들(165)을 모니터링함으로써 키-밸류 레지스트리(211)를 유지관리할 수 있다. 예를 들어, 용량 관리자(160)는 프로그래밍 또는 소거동작(예: 키-밸류 쌍들(214)의 신규 인스턴스들의 값이 메모리 장치(104)에 의해 수신되는 경우 또는 키-밸류 쌍들(165)이 메모리 장치(104)로부터 소거되는 경우)과 관련된 키-밸류 레지스트리(211)를 업데이트할 수 있다. 예를 들어, 용량 관리자(160)는 메모리 스토리지 유닛(154)에 저장하기 위해 호스트 장치(102)로부터 수신한 키-밸류 쌍들(165)의 신규 인스턴스들에 프로그램 타임스탬프(352)를 추가함으로써 활동로그(354)를 포함한 키-밸류 레지스트리(211)를 업데이트할 수 있다. 다른 예로, 용량 관리자(160)는 또한 소거동작 이후 키-밸류 쌍들(165)을 키-밸류 레지스트리(211)로부터 제거함으로써 키-밸류 레지스트리(211)를 유지관리할 수 있다. 장치 제어 유닛(152)은 전술한 바와 같이 용량 관리자(160)를 활용하여 레지스트리 유지관리 단계(340)를 실행할 수 있다.
본 흐름도에 따르면 용량 모니터링 단계(342)가 이어질 수 있다. 용량 모니터링 단계(342)는 축출 후보들을 식별하기 위해 키-밸류 쌍들(165)의 레지스트리를 모니터링하기 위한 것이다. 용량 모니터링 단계(342)는 축출정책(330)에 따라 키-밸류 축출 후보들(212)을 식별할 수 있다. 보다 구체적으로, 용량 모니터링 단계(342)는 축출정책(330)을 기반으로 도 2의 축출 임계치(216)를 결정할 수 있다.
최소빈도정책(334)에 있어서, 축출 임계치(216)는 키-밸류 쌍들(165)의 활동빈도(356)에 상응할 수 있다. 예를 들어, 축출 임계치(216) 미만의 활동빈도를 갖는 키-밸류 쌍들(165)은 키-밸류 축출 후보들(212)로 식별될 수 있다.
최소최근정책(332)에 있어서, 축출 임계치(216)는 키-밸류 쌍들(165)의 최근 활동(358)에 상응할 수 있다. 예를 들어, 축출 임계치(216) 미만의 최근 활동(358)을 갖는 키-밸류 쌍들(165)은 키-밸류 축출 후보들(212)로 식별될 수 있다.
만료정책(336)에 있어서, 축출 임계치(216)는 프로그램 타임스탬프(352)에 상응할 수 있다. 예를 들어, 축출 임계치(216)를 초과하는 프로그램 타임스탬프(352)를 갖는 키-밸류 쌍들(165)은 키-밸류 축출 후보들(212)로 식별될 수 있다. 장치 제어 유닛(152)은 상술한 바와 같이 용량 관리자(160)를 활용하여 용량 모니터링 단계(342)를 실행할 수 있다.
본 흐름도에 따르면 축출 식별 단계(344)가 이어질 수 있다. 축출 식별 단계(344)는 도 2의 축출 대상들(222)을 식별하기 위한 것이다. 예를 들어, 축출 식별 단계(344)에서 메모리 가비지 컬렉터(162)는 축출정책(330)을 기반으로 하여 키-밸류 축출 후보들(212)로부터 축출 대상들(222)을 선택할 수 있다.
최소빈도정책(334)을 예로 들면, 메모리 가비지 컬렉터(162)는 키-밸류 레지스트리(211)의 키-밸류 쌍들(165) 중에서 활동량이 가장 적은 하나 이상의 키-밸류 축출 후보들(212)을 축출 대상들(222)로 식별할 수 있다. 최소최근정책(332)을 예로 들면, 메모리 가비지 컬렉터(162)는 키-밸류 레지스트리(211)의 키-밸류 쌍들(165) 중에서 비활동 기간이 가장 긴 하나 이상의 키-밸류 축출 후보들(212)을 축출 대상들(222)로 식별할 수 있다. 만료정책(336)을 예로 들면, 메모리 가비지 컬렉터(162)는 키-밸류 레지스트리(211)의 키-밸류 쌍들(165)의 다른 인스턴스들에 비하여 상대적으로 가장 오랜 기간 동안 메모리 장치(104)에 있었던 하나 이상의 키-밸류 축출 후보들(212)을 축출 대상들(222)로 식별할 수 있다. 장치 제어 유닛(152)은 전술한 바와 같이 메모리 가비지 컬렉터(162)를 활용하여 축출 식별 단계(344)를 실행할 수 있다.
본 흐름도에 따르면 관련 후보 단계(346)가 이어질 수 있다. 관련 후보 단계(346)는 관련 축출 후보들(224)을 식별하고 축출 대상들(222)에 대한 도 2의 관련 축출 카운트(218)를 결정하기 위한 것이다. 관련 후보 단계(346)에서 용량 관리자(160)는 축출 대상들(222)과 동일한 메모리 블록들(168)의 인스턴스에 있는 키-밸류 축출 후보들(212)로 관련 축출 후보들(224)을 식별할 수 있다. 축출 대상들(222)의 각 인스턴스에 대해서, 용량 관리자(160)는 축출 대상들(222)의 특정 인스턴스의 관련 축출 후보들(224)의 총 개수로 관련 축출 카운트(218)를 계산할 수 있다. 장치 제어 유닛(152)은 전술한 바와 같이 용량 관리자(160)를 활용하여 관련 후보 단계(346)를 실행할 수 있다.
본 흐름도에 따르면 소거블록 식별 단계(348)가 이어질 수 있다. 소거블록 식별 단계(348)는 소거동작을 위한 메모리의 최적의 블록을 식별하기 위한 것이다. 소거블록 식별 단계(348)에서, 메모리 가비지 컬렉터(162)는 관련 축출 카운트(218)를 기반으로 하여 메모리 스토리지 유닛(154)의 메모리 블록들(168)로부터 소거블록(220)을 선택할 수 있다. 예를 들어, 메모리 가비지 컬렉터(162)는 관련 축출 카운트(218)의 최고값과 관련된 메모리 블록들(168)로 소거블록(220)을 선택할 수 있다. 장치 제어 유닛(152)은 전술한 바와 같이 메모리 가비지 컬렉터(162)를 활용하여 소거블록 식별 단계(348)를 실행할 수 있다. 또한, 메모리 가비지 컬렉터(162)는 메모리 입출력 인터페이스(164)와 통신하여 소거 명령을 발행하거나 소거블록(220)에 대해 소거동작을 수행할 수 있다.
키-밸류 쌍들(165)의 자기축출(self-eviction)을 위한 축출정책이 메모리 장치(104)와 같은 비휘발성 메모리 장치가 캐싱 장치로서 더 좋은 성능을 발휘하도록 한다는 것이 밝혀졌다.
도 4를 참조하면, 본 발명의 실시예에 따른 컴퓨팅 시스템(100)에 대한 캐시 관리 프로세스(410)의 예시도가 도시된다. 캐시 관리 프로세스(410)는 객체 선택 및 관리 동작에 관한 것이다. 캐시 관리 프로세스(410)는 메모리 장치(104) 또는 호스트 스토리지 유닛(114)이 독립형 캐싱 장치로서 동작하도록 한다. 캐시 관리 프로세스(410)는 메모리 장치(104), 호스트 스토리지 유닛(114) 또는 이들의 조합의 캐시에 저장을 위해, 또는 메모리 장치(104), 호스트 스토리지 유닛(114) 또는 이들의 조합으로부터 축출을 위해 객체들을 선택할 수 있다. 보다 구체적으로, 캐시 관리 프로세스(410)는 도 1의 메모리 블록들(168)을 유지관리할 수 있고 저장가능 객체들(storable objects, SOs, 414)의 상태에 기반하여 도 4의 소거블록들(420)을 선택할 수 있다. 저장가능 객체들(414)은 메모리 장치(104), 스토리지 유닛(114) 또는 이들의 조합에 저장될 수 있는 객체들이다. 예를 들어, 저장가능 객체들(414)은 도 1의 키-밸류 쌍들(165)이 될 수 있다.
본 발명의 구현예에 따르면, 캐시 관리 프로세스(410)는 도 1의 메모리 장치(104)에서 장치 제어 유닛(152)에 의해 실행될 수 있고, 전술한 바와 같은 용량 관리자(160), 메모리 가비지 컬렉터(162), 메모리 입출력 인터페이스(164) 또는 이들의 조합으로 구현될 수 있다. 본 발명의 다른 구현예에 따르면, 캐시 관리 프로세스(410)는 호스트 제어 유닛(112)으로부터의 상호작용 또는 명령들과 독립적인 도 1의 스토리지 유닛(114)으로 실행될 수도 있다. 설명의 편의를 위해 캐시 관리 프로세스(410)는 메모리 장치(104)와 관련하여 설명되지만, 후술하는 기능들 및 동작들은 호스트 스토리지 유닛(114)으로도 구현될 수 있음은 당연하다.
캐시 관리 프로세스(410)는 용량 관리자(160)의 객체 레지스트리(411)로 설명될 수 있다. 객체 레지스트리(411)는 저장가능 객체들(414)과 관련된 정보의 사전(dictionary)이다. 객체 레지스트리(411)에 대한 추가적인 세부설명은 후술한다. 객체 레지스트리(411)는 축출가능 객체들(evictable objects, EOs, 412) 및 캐시가능 객체들(cacheable objects, COs, 430)을 추적할 수 있다. 축출가능 객체들(412)은 축출 기준에 부합하는 저장가능 객체들(414)의 인스턴스들이다. 캐시가능 객체들(430)은 메모리 스토리지 유닛(154)에서의 캐싱에 대한 자격이 부여된 저장가능 객체들(414)의 인스턴스들이다.
캐시 관리 프로세스(410)에서, 용량 관리자(160)는 축출 임계치(416)에 기반하여 객체 레지스트리(411)의 저장가능 객체들(414)로부터 축출가능 객체들(412) 및 캐시가능 객체들(430)을 식별할 수 있다. 도 4의 점선으로 도시된 축출 임계치(416)는 접근빈도, 저장시간 및 가장 최근 활동 및 저장가능 객체들(414)의 크기/저장가능 객체들(414)이 차지하는 총 공간과 같은 요소들에 따른 축출정책들을 기반으로 할 수 있으며, 이에 대해서는 이하에서 더 설명하기로 한다.
축출가능 객체들(412)은 축출 임계치(416)를 초과하는 축출 기준을 갖는 저장가능 객체들(414)로 식별될 수 있다. 축출 임계치(416)를 초과한다는 것은 축출 기준의 특정 인스턴스에 기반하여 축출 임계치(416)를 넘어서거나 축출 임계치(416)에 미치지 못하는 것을 의미할 수 있다. 캐시 가능 후보들(430)은 축출 임계치(416)에 기반하여 장치 캐시 내 저장을 위한 저장가능 객체들(414)의 유효 인스턴스들로 식별될 수 있다. 축출가능 객체들(412) 및 캐시가능 객체들(430)을 식별하는 것에 대한 추가 세부설명은 후술한다.
캐시 관리 프로세스(410)에서, 도 1의 장치 제어 유닛(152)은 하나 이상의 축출가능 객체들(412)을 포함하는 메모리 스토리지 유닛(154) 내 메모리 블록들(168)의 인스턴스인 소거블록(420)을 동적으로 선택함으로써 메모리 가비지 컬렉터(162)의 워크로드(workload) 및 메모리 장치(104)의 성능을 관리할 수 있다. 예를 들어, 장치 제어 유닛(152)의 메모리 가비지 컬렉터(162)는 QoS(Quality of Service) 요건에 기반하여 소거블록(420)을 선택할 수 있다.
다른 예로, 장치 제어 유닛(152)은 캐시가능 객체들(430)을 선택 및 재배치할 수 있다. 구체적인 일례로, 소거블록(420)의 캐시가능 객체들(430)은 소거블록(420)에 대해 소거동작을 수행하기 전에 메모리 블록들(168)의 다른 인스턴스로 재배치될 수 있다. 축출가능 객체들(412)의 식별, 캐시가능 객체들(430)의 식별, 소거블록(420)의 선택 및 관련 단계들을 포함하는 캐시 관리 프로세스(410)에 대한 세부설명은 후술한다.
도 5를 참조하면, 도 4의 컴퓨팅 시스템(100)의 캐시 관리 프로세스(410)에 대한 제어 흐름도가 도시된다. 이하 설명할 제어 흐름에서 컴퓨팅 시스템(100)의 메모리 관리 매커니즘의 구현예는 도 1의 메모리 장치에 대한 캐시 관리 프로세스(410), 도 1의 호스트 스토리지 유닛(114) 또는 이들의 조합을 도시한다. 캐시 관리 프로세스(410)는 하나 이상의 축출정책들(530)에 따라 결정된 저장가능 객체들(414)의 상태에 기반하여 도 1의 메모리 블록들(168)로부터 도 4의 소거블록(420)을 선택하도록 자율적으로 구현될 수 있다. 본 발명의 구현예에 따르면, 캐시 관리 프로세스(410)는 도 1의 호스트 장치(102)로부터의 명령들과 같은 외부 명령들이 없어도 도 1의 용량 관리자(160)를 통해 장치 제어 유닛(152)에 의해 개시될 수 있다. 본 발명의 다른 구현예에 따르면, 캐시 관리 프로세스(410)는 도 1의 호스트 제어 유닛(112)으로부터의 명령들이 없어도 호스트 스토리지 유닛(114)에 의해 개시될 수 있다. 설명의 편의를 위해 본 제어 흐름은 메모리 장치(104) 및 관련 구성요소들에 대해 설명되지만, 캐시 관리 프로세스(410)가 호스트 스토리지 유닛(114)에 의해서도 유사하게 구현될 수 있음은 당연하다. 또한, 호스트 스토리지 유닛(114)이 메모리 장치(104)의 구성요소들(예: 장치 제어 유닛(152), 플래시 변환 계층(158), 용량 관리자(160), 메모리 가비지 컬렉터(162), 메모리 스토리지 유닛(154), 메모리 블록(168), 도 1의 모든 구성요소, 또는 이들의 조합)과 유사한 구성요소들을 포함할 수 있는 것 역시 당연하다.
축출정책들(530)은 메모리 유닛으로부터 축출을 위한 후보들을 결정하는 규칙이다. 예를 들어, 축출정책들(530)은 저장가능 객체들(414)이 접근된 빈도, 저장가능 객체들(414)이 얼마나 최근에 접근되었는지, 저장가능 객체들(414)이 메모리 스토리지 유닛(154)에 저장되어 있던 총 시간, 저장가능 객체들(414)이 차지하는 크기/총 공간, 또는 이들의 조합에 기초하여 도 4의 저장가능 객체들(414)로부터 도 4의 축출가능 객체들(412)을 식별하도록 구현될 수 있다. 축출정책들(530)은 최소최근정책(least recent policy, 532), 최소빈도정책(least frequent policy, 534), 만료정책(536) 또는 이들의 조합을 포함할 수 있다.
최소최근정책(532)은 저장가능 객체들(414)의 인스턴스가 얼마나 최근에 접근되었는지를 기반으로 하는 축출정책들의 인스턴스이다. 예를 들어, 최소최근정책(532)은 메모리 스토리지 유닛(154)의 저장가능 객체들(414)의 값들 중에서, 마지막 접근 이후 가장 긴 시간이 경과한 저장가능 객체들(414)로 축출가능 객체들(412)을 식별할 수 있다.
최소빈도정책(534)은 저장가능 객체들(414)의 인스턴스가 얼마나 자주 접근되었는지를 기반으로 하는 축출정책들(530)의 인스턴스이다. 예를 들어, 최소빈도정책(534)은 메모리 스토리지 유닛(154)의 저장가능 객체들(414)의 값들 중에서 접근빈도가 가장 작은 저장가능 객체들(414)로 축출가능 객체들(412)을 식별할 수 있다.
만료정책(536)은 메모리 스토리지 유닛(154) 내에 있던 시간을 기반으로 하는 축출정책들(530)의 인스턴스이다. 예를 들어, 만료정책(536)은 저장가능 객체들(414)의 다른 인스턴스들에 비하여 상대적으로 가장 긴 시간 동안 메모리 스토리지 유닛(154)에 저장되어 있던 값들을 갖는 저장가능 객체들(414)로 축출가능 객체들(412)을 식별할 수 있다.
캐시 관리 프로세스(410)에 대한 제어 흐름은 소거블록 식별 단계(548), 레지스트리 유지관리 단계(540), 엔트로피 계산 단계(572), 객체 축출가능성 단계(544) 및 재배치 단계(546)를 포함할 수 있다. 컴퓨팅 시스템(100)의 캐시 관리 프로세스(410)에 대한 제어 흐름은 소거블록 식별 단계(548)로 시작될 수 있다. 다만, 제어 흐름도에 도시된 단계들의 순서는 예시에 불과하고 다양한 순서에 따라 수행될 수 있음은 당연하다. 예를 들어, 제어 흐름은 레지스트리 유지관리 단계(540)부터 시작될 수 있다.
소거블록 식별 단계(548)는 소거동작에 적합한 하나 이상의 메모리 블록들을 식별함으로써 가비지 컬렉션 프로세스를 구현하기 위한 것이다. 소거블록 식별 단계(548)에서, 메모리 가비지 컬렉터(162)는 메모리 스토리지 유닛(154)의 메모리 블록들(168)로부터 소거블록(420)을 동적으로 식별할 수 있다.
소거블록 식별 단계(548)는 프리 블록 카운터(free block counter, 510) 및 프리 블록 임계치(512)에 기반하여 가비지 컬렉션 프로세스를 개시할 수 있다. 프리 블록 카운터(510)는 가비지 컬렉션 프로세스가 개시되는 시점에 프리하거나 객체 저장이 가능한 메모리 블록들(168)의 개수이다. 프리 블록 임계치(512)는 메모리 블록들(168)의 프리 인스턴스들로서 유지관리되는 메모리 블록들(168)의 개수이다. 예를 들어, 프리 블록 임계치(512)는 QoS 요건에 기반하여 결정될 수 있다.
가비지 컬렉션 프로세스가 개시되는 동안, 장치 제어 유닛(152)은 프리 블록 카운터(510)와 프리 블록 임계치(512)를 비교할 수 있다. 예를 들어, 프리하거나 저장 가능한 메모리 블록들(168)의 개수가 프리 블록 임계치(512)를 초과하는 것으로 프리 블록 카운터(510)에 의해 지시되면, 가비지 컬렉션 프로세스는 취소될 수 있다. 한편, 프리하거나 저장 가능한 메모리 블록들(168)의 개수가 프리 블록 임계치(512) 미만인 것으로 프리 블록 카운터(510)에 의해 지시되면(즉, QoS 요건에 따라 프리하거나 저장 가능한 메모리 블록들(168)의 개수가 불충분함을 의미함), 메모리 가비지 컬렉터(162)는 가비지 컬렉션 프로세스를 진행하여 QoS 요건을 만족시키는 메모리 블록들(168)의 프리 인스턴스들을 추가적으로 생성할 수 있다.
소거블록 식별 단계(548)에서, 메모리 가비지 컬렉터(162)는 다양한 요소들에 기초하여 소거블록(420)을 동적으로 식별할 수 있다. 장치 제어 유닛(152)은 블록 엔트로피(594) 값이 가장 낮은 메모리 블록들(168)로 소거블록(420)을 선택할 수 있다. 이외에 다른 요소들도 고려될 수 있으며, 다른 요소들에 대한 설명은 후술한다.
블록 엔트로피(594)는 메모리 블록(168)의 각 인스턴스와 관련된 저장가능 객체들(414)에 대한 엔트로피 레벨(574)의 집합 척도이다. 엔트로피 레벨(574)은 하나 이상의 축출정책들(530)에 기반하여 저장가능 객체들(414)의 순위를 매기기 위한 메트릭(metric)이다. 예를 들어, 엔트로피 레벨(574)은 축출정책들(530)의 단일 인스턴스 또는 축출정책들(530)의 복수의 인스턴스들의 조합에 따라, 저장가능 객체들(414)의 축출 가능성 순위를 매기는데 이용되는 메트릭일 수 있다. 저장가능 객체들(414)의 엔트로피 레벨(574)의 계산에 대한 설명은 후술한다.
예를 들어, 블록 엔트로피(594)는 메모리 블록들(168)의 특정 인스턴스와 관련된 저장가능 객체들(414) 각각에 대한 엔트로피 레벨(574)의 중간값으로 계산될 수 있다. 다른 예로, 블록 엔트로피(594)는 메모리 블록들(168)의 특정 인스턴스와 관련된 저장가능 객체들(414) 각각에 대한 엔트로피 레벨(574)의 평균값으로 계산될 수 있다. 각각의 메모리 블록들(168)은 축출정책들(530)의 어느 한 인스턴스 또는 축출정책들(530)의 복수의 인스턴스들의 조합에 상응하는 블록 엔트로피(594)의 다른 인스턴스를 가질 수 있다.
본 발명의 구현예에 따르면, 메모리 가비지 컬렉터(162)는 메모리 스토리지 유닛(154) 내에서 블록 엔트로피(594) 최저값과 관련된 메모리 블록들(168)로 소거블록(420)을 선택할 수 있다. 메모리 블록들(168)의 하나 이상의 인스턴스가 최저값의 블록 엔트로피(594)를 갖는 경우, 메모리 가비지 컬렉터(162)는 저장가능 객체들(414)의 관련 인스턴스들의 개수가 최소인(또는 저장되어 있던 저장가능 객체들(414)의 개수가 최소인) 소거블록(440)을 선택할 수 있다.
소거블록(420)을 식별하는 데에 다른 요소들도 고려될 수 있다. 예를 들어, 장치 제어 유닛(152)은 메모리 블록들(168) 중 축출가능 객체들(412), 무효객체들(516), 또는 이들의 조합의 개수가 가장 많은 메모리 블록으로 소거블록(420)을 식별할 수 있다. 무효객체들(516)은 삭제되거나 덮어쓰기된 저장가능 객체들(414)의 인스턴스들이다.
또 다른 요소로, 장치 제어 유닛(152)은 메모리 블록들(168) 중 회수(reclaimable) 공간이 가장 많은 메모리 블록으로 소거블록(420)을 식별할 수 있다. 예를 들어, 회수 공간은 메모리 블록들(168)의 인스턴스에서 무효객체들(516), 축출가능 객체들(412), 또는 이들의 조합이 점유하는 총 바이트 수일 수 있다.
소거블록 식별 단계(548)에서, 메모리 가비지 컬렉터(162)의 워크로드는 가비지 컬렉션 오버헤드(596)에 기반할 수 있다. 가비지 컬렉션 오버헤드(596)는 여러 가지 요소들에 의해 결정될 수 있다. 예를 들어, 가비지 컬렉션 오버헤드(596)는 메모리 블록(168)의 인스턴스 당 캐시가능 객체들(430)과 같은 저장가능 객체들(414)의 유효 인스턴스들의 개수, 메모리 블록(168)의 인스턴스 당 저장가능 객체들(414)의 유효 인스턴스들이 차지하는 총 공간, 메모리 가비지 컬렉터(162)에 의해 착수될 소거동작의 개수, 또는 이들의 조합에 기반하여 결정될 수 있다.
가비지 컬렉션 오버헤드(596)는 도 1의 호스트 장치에 대한 QoS 요건에 부합하는 여러 가지 요소들에 기반하여 동적으로 조정될 수 있다. 예를 들어, 가비지 컬렉션 오버헤드(596)는 소거동작이 수행되도록 식별된 소거블록(420)의 인스턴스들의 개수, 축출가능 객체들(412)의 총 개수, 축출가능 객체들(412)의 크기(예: 축출가능 객체들(412)이 차지하는 총 바이트 수), 또는 이들의 조합에 기반하여 조정될 수 있다.
소거동작을 위해 선택된 소거블록(420)의 인스턴스들의 개수는 QoS 요건들에 의해 결정될 수 있다. 예를 들어, QoS 요건에 따라 결정된 저장가능 객체들(414)의 인스턴스들이 메모리 장치(104)에 너무 많이 존재하는 경우, 룩업(lookup) 오버헤드는 QoS 요건에 의해 허용되는 범위를 넘어설 수 있다. 이러한 경우, 메모리 가비지 컬렉터(162)는 축출가능 객체들(412)의 객체크기(560)에 기반한 축출 보다는 저장가능 객체들(414)의 개수를 줄이는 것을 우선적으로 하여, 메모리 장치(104)의 저장가능 객체들(414)의 총 개수를 줄일 수 있다.
QoS 요건에 부합하는 소거블록(420)으로 식별되는 메모리 블록(168)의 인스턴스들이 너무 적은 경우, 메모리 가비지 컬렉터(162)는 다수의 인스턴스들이나 축출정책들(530)의 조합을 동시에 적용하거나, 또는 축출 임계치(416)를 조정할 수 있다. 예를 들어, 만료정책(536) 하에서 너무 적은 수의 축출가능 객체들(412)이 식별되면, 메모리 가비지 컬렉터(162)는 QoS 요건에 부합하는 메모리 블록(168)의 어느 한 인스턴스 내에서 또는 메모리 블록(168)의 다수의 인스턴스들에 걸쳐서 축출가능 객체들(412)의 인스턴스들을 추가적으로 식별하는 데에 최소최근정책(532), 최소빈도정책(534), 또는 이들의 조합을 적용할 수 있다. 다른 예로, 메모리 가비지 컬렉터(162)는 축출가능 객체들(412)의 개수를 늘리기 위해 축출 임계치(416)를 증가시킬 수 있다.
장치 제어 유닛(152)은 상술한 바와 같이 메모리 가비지 컬렉터(162)를 활용하여 소거블록 식별 단계(548)를 실행할 수 있다. 또한, 메모리 가비지 컬렉터(162)는 메모리 입출력 인터페이스(164)와 통신하여 소거블록(420)에 대한 소거 명령을 발행하거나, 소거동작을 수행할 수 있다.
블록 엔트로피(594)는 객체 레지스트리(411)의 정보를 기반으로 계산될 수 있으며, 이는 레지스트리 유지관리 단계(540)에서 관리될 수 있다. 레지스트리 유지관리 단계(540)는 스토리지 장치에 저장된 객체들의 레지스트리를 유지관리하고 업데이트하기 위한 것이다. 레지스트리 유지관리 단계(540)에서, 용량 관리자(160)는 객체 레지스트리(411)를 유지관리할 수 있다. 객체 레지스트리(411)는 각각의 저장가능 객체들(414)과 관련된 객체정보(518)를 포함할 수 있다. 객체정보(518)는 저장가능 객체들(414)의 저장 및 접근과 관련된 정보이다. 예를 들어, 도 1의 키-밸류 쌍들(165)을 포함하는 저장가능 객체들(414)의 경우, 객체정보(518)는 도 1의 메모리 스토리지 유닛(154)에 저장된 키-밸류 쌍들(165)의 값의 키(key) 및 위치에 대한 정보를 포함할 수 있다. 다른 예로, 객체 레지스트리(411)는 저장가능 객체들(414) 각각에 대해 프로그램 타임스탬프(552), 활동로그(554), 또는 이들의 조합을 포함할 수 있다. 또 다른 예로, 객체 레지스트리(411)는 메모리 블록(168)에 저장된 키-밸류 쌍(165)을 포함하는 저장가능 객체들(414)의 값이 차지하는 바이트 수와 같은 저장가능 객체들(414)의 객체크기(560)에 대한 정보를 포함할 수 있다. 또 다른 예로, 객체 레지스트리(411)는 저장가능 객체들(414) 각각에 대한 엔트로피 레벨(574)을 포함할 수 있다.
프로그램 타임스탬프(552)는 저장가능 객체들(414)이 메모리 스토리지 유닛(154)에 프로그램되었던 시점이다. 활동로그(554)는 저장가능 객체들(414)에 대한 접근 기록이다.
활동로그(554)는 저장가능 객체들(414)과 관련된 활동빈도(556) 및 최근 활동(558)을 추적할 수 있다. 활동빈도(556)는 저장가능 객체들(414)이 접근되는 빈도의 척도이다. 예를 들어, 활동빈도(556)는 일정 기간 동안, 저장가능 객체들(414)의 특정 인스턴스가 접근되는 횟수의 카운트일 수 있다. 활동빈도(556)는 읽기 및 쓰기 동작과 같은 직접동작을 통해 명시적으로 결정되거나, 저장가능 객체들(414)의 간접접근의 빈도를 통해 암시적으로 결정되거나, 또는 이들의 조합으로 결정될 수 있다. 간접접근의 빈도 측정의 일례로, 버블정렬(bubble sort) 동안 발생하는 스와핑(swapping)과 같은 정렬기능에 저장가능 객체들(414)이 관련되어 있는 경우를 들 수 있는데, 이 경우, 정렬되는 저장가능 객체들(414)의 인스턴스에 대한 활동빈도(556)는 저장가능 객체들(414)의 특정 인스턴스가 이동될 때 상대적으로 높을 수 있다.
최근 활동(558)은 저장가능 객체들(414)이 접근되었던 마지막 시간에 대한 기록이다. 최근 활동(558)은 프로그램 타임스탬프(552)의 가장 최근 인스턴스에 의해 명시적으로 결정되거나, 검색 또는 정렬 리스트 내 저장가능 객체들(414)의 이동과 같이 간접접근에 기반하여 암시적으로 결정되거나, 또는 이들의 조합으로 결정될 수 있다.
용량 관리자(160)는 저장가능 객체들(414)을 모니터링함으로써 객체 레지스트리(411)를 유지관리할 수 있다. 예를 들어, 용량 관리자(160)는 저장가능 객체들(414)의 신규 인스턴스들의 값이 메모리 장치(104)에 의해 수신되거나, 또는 저장가능 객체들(414)이 메모리 장치(104)에서 덮어쓰기되거나 소거될 때와 같이, 프로그래밍 또는 소거동작과 관련된 객체 레지스트리(411)를 업데이트할 수 있다. 예를 들어, 용량 관리자(160)는 메모리 스토리지 유닛(154)에 저장하기 위해 호스트 장치(102)로부터 수신한 저장가능 객체들(414)의 신규 인스턴스들에 프로그램 타임스탬프(552)를 추가함으로써 활동로그(554)를 포함한 객체 레지스트리(411)를 업데이트할 수 있다. 다른 예로, 용량 관리자(160)는 소거동작 이후, 객체 레지스트리(411)로부터 저장가능 객체들(414)의 인스턴스들을 제거함으로써 객체 레지스트리(411)를 유지관리할 수도 있다. 장치 제어 유닛(152)은 상술한 바와 같이 용량 관리자(160)를 활용하여 레지스트리 유지관리 단계(540)를 실행할 수 있다.
객체 레지스트리(411)는 객체 레지스트리(411) 내 저장가능 객체들(414) 각각에 대한 엔트로피 레벨(574)을 포함할 수 있다. 엔트로피 레벨(574)은 하나 이상의 축출정책들(530)에 기반하여 저장가능 객체들(414)의 순위를 매기기 위한 메트릭이다. 예를 들어, 엔트로피 레벨(574)은 축출정책들(530)의 단일 인스턴스, 또는 축출정책들(530)의 복수의 인스턴스들의 조합에 따라, 저장가능 객체들(414)의 축출 가능성 순위를 매기는데 이용되는 메트릭일 수 있다. 상대적으로 높은 엔트로피 레벨값은 저장가능 객체들(414)의 다른 인스턴스들에 비해 낮은 수준의 축출 가능성에 상응하는 반면, 상대적으로 낮은 엔트로피 레벨값은 저장가능 객체들(414)의 다른 인스턴스들에 비해 높은 수준의 축출 가능성에 상응한다.
엔트로피 계산 단계(572)에서 캐시 관리 프로세스(410)는 저장가능 객체들(414)에 대한 엔트로피 레벨(574)을 계산할 수 있다. 엔트로피 레벨(574)은 축출정책들(530)에 따라 서로 다른 축출 기준, 예컨대 최소빈도정책(534), 최소최근정책(532) 또는 만료정책(536)과 같은 축출 기준에 기반하여 계산될 수 있다.
최소빈도정책(534)에 있어서, 각각의 저장가능 객체들(414)에 대한 엔트로피 레벨(574)은 저장가능 객체들(414)의 관련 인스턴스의 활동빈도(556)에 기반하여 계산될 수 있다. 예를 들어, 최소빈도정책(534)에 대한 엔트로피 레벨(574)은 저장가능 객체들(414)의 인스턴스의 활동빈도(556) 및 객체크기(560)의 가중 기하 평균으로 계산될 수 있다.
최소최근정책(532)에 있어서, 각각의 저장가능 객체들(414)에 대한 엔트로피 레벨(574)은 저장가능 객체들(414)의 인스턴스의 최근 활동(558)에 기반하여 계산될 수 있다. 예를 들어, 최소최근정책(532)에 대한 엔트로피 레벨(574)은 저장가능 객체들(414)의 인스턴스의 최신 정규화 차분(recency normalized difference) 및 객체크기(560)의 가중 기하 평균으로 계산될 수 있다. 최신 정규화 차분은 현재 시간(또는 엔트로피 레벨(574)이 계산된 시간)과 최근 활동(558) 간의 차를 저장가능 객체들(414)의 특정 인스턴스의 객체크기(560)로 나눈 값이다.
만료정책(536)에 있어서, 각각의 저장가능 객체들(414)에 대한 엔트로피 레벨(574)은 저장가능 객체들(414)에 대한 만료시간(576)에 기반하여 계산될 수 있다. 예를 들어, 만료정책(536)에 대한 엔트로피 레벨(574)은 저장가능 객체들(414)의 인스턴스의 만료시간(576) 및 객체크기(560)의 가중 기하 평균으로 계산될 수 있다. 만료시간(576)은 타임 투 리브(TTL: Time To Live) 값과 같이 저장가능 객체들(414)이 메모리 스토리지 유닛(154)에 남아있을 것으로 예상될 수 있는 시간량에 대한 한계 또는 기대값이다.
각각의 저장가능 객체들(414)에 대해 계산된 엔트로피 레벨(574) 값들을 기반으로, 캐시 관리 프로세스(410)는 메모리 블록들(168) 각각에 대해 블록 엔트로피(594)를 계산할 수 있다. 상술한 예시들과 마찬가지로, 블록 엔트로피(594)는 메모리 블록들(168)의 특정 인스턴스와 관련된 저장가능 객체들(414) 각각에 대해 엔트로피 레벨(574)의 중간값 또는 평균값으로 계산될 수 있다. 블록 엔트로피(594)의 계산은 무효객체들(516)을 포함할 수 있으며, 무효객체들(516)은 "0" 값인 엔트로피 레벨(574)의 상응하는 인스턴스를 갖는다. 또한, 캐시 관리 프로세스(410)는 소거블록 식별 단계(548)에서 설명된 블록 엔트로피(594)에 기반한 선택을 포함한 프로세스에 기반하여 소거블록(168)을 선택할 수 있다.
소거블록(168)의 하나 이상의 인스턴스들에 대해 소거동작을 수행하기 전에, 캐시 관리 프로세스(410)는 소거블록(168)의 저장가능 객체들(414) 각각을 처리할 수 있다. 예를 들어, 캐시 관리 프로세스(410)는 객체 축출가능성 단계(544)에서 축출가능 객체들(412)을 식별하고, 재배치 단계(546)에서 캐시가능 객체들(430)을 식별할 수 있다.
객체 축출가능성 단계(544)에서, 장치 제어 유닛(152)은 도 4의 축출 임계치(416)에 기반하여 축출가능 객체들(412)을 식별할 수 있다. 축출가능 객체들(412)은 축출 임계치(416)를 초과하는 엔트로피 레벨(574)을 갖는 저장가능 객체들(414)로 식별될 수 있으며, 축출 임계치(416)를 초과한다는 것은 축출정책들(530)의 특정 인스턴스에 기반하여 축출 임계치(416)를 넘어서거나 축출 임계치(416)에 미치치 못하는 것을 의미할 수 있다.
예를 들어, 최소빈도정책(534)에 있어서, 축출 임계치(416)는 저장가능 객체들(414)의 활동빈도(556)에 상응할 수 있다. 예를 들어, 축출 임계치(416) 미만의 활동빈도(556)를 갖는 저장가능 객체들(414)이 축출 가능한 객체(412)로 식별될 수 있다.
다른 예로, 최소최근정책(532)에 있어서, 축출 임계치(416)는 저장가능 객체들(414)의 최근 활동(558)에 상응할 수 있다. 예를 들어, 축출 임계치(416) 미만의 최근 활동(558)을 갖는 저장가능 객체들(414)이 축출가능 객체들(412)로 식별될 수 있다.
또 다른 예로, 만료정책(536)에 있어서, 축출 임계치(416)가 프로그램 타임스탬프(552)에 상응할 수 있다. 예를 들어, 축출 임계치(416)를 초과하는 프로그램 타임스탬프(552)를 갖는 저장가능 객체들(414)이 축출가능 객체들(412)로 식별될 수 있다.
캐시 관리 프로세스(410)는 하나 이상의 축출정책들(530)에 기반하여 저장가능 객체들(414)을 엔트로피 구역(entropy zone, 578)들로 분류(categorization)하는 과정을 포함할 수 있다. 엔트로피 구역들(578)은 저장가능 객체들(414)의 분류(classification) 또는 그룹핑(grouping)으로, 저장가능 객체들(414)의 축출 가능성을 나타낸다. 엔트로피 구역들(578)의 낮은 값들은 저장가능 객체들(414)의 다른 인스턴스에 비하여 더 높은 축출 가능성을 나타내는 반면, 엔트로피 구역들(578)의 높은 값들은 저장가능 객체들(414)의 다른 인스턴스에 비하여 더 낮은 축출 가능성을 나타낸다. 예를 들어, 객체 레지스트리(411)는 4개의 구역들로 분할될 수 있으나, 임의의 개수의 엔트로피 구역들(578)이 가능하다.
객체 레지스트리(411)의 저장가능 객체들(414)은 저장가능 객체들(414)의 엔트로피 레벨(574)을 기반으로 하여 엔트로피 구역들(578)로 분류될 수 있다. 구역 0은 다음 가비지 컬렉션 구간에서 축출되거나 축출 가능성이 가장 높은 저장가능 객체들(414)을 나타내는 엔트로피 레벨(574)의 최저 범위일 수 있다. 대체로, 무효객체들(516) 및 축출가능 객체들(412)은 구역 0에 속하게 된다. 구역 1은 다음 가비지 컬렉션 구간에서 축출 가능성이 있는 저장가능 객체들(414)을 나타내는 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 2는 다음 가비지 컬렉션 구간에서 축출 가능성이 낮은 저장가능 객체들(414)을 나타내는 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 3은 다음 가비지 컬렉션 구간에서 거의 확실하게 축출되지 않거나 축출 가능성이 가장 낮은 저장가능 객체들(414)을 나타내는 엔트로피 레벨(574)의 최고값들일 수 있다.
예시의 목적으로 엔트로피 구역들(578)이 4개의 서로 다른 인스턴스들을 갖는 것으로 설명하였지만, 엔트로피 구역들(578)이 이와 다르게 분할될 수 있음은 당연하다. 예를 들어, 엔트로피 구역들(578)은 엔트로피 구역들(578)의 3개 이하의 인스턴스들로 분할되거나, 또는 엔트로피 구역들(578)의 5개 이상의 인스턴스들로 분할될 수도 있다.
하나 이상의 메모리 블록들(168)은 엔트로피 구역들(578) 중 하나와 연관될 수 있다. 예를 들어, 메모리 블록들(168)은 장치 제어 유닛(152)에 의해 할당되어 엔트로피 구역들(578) 중 어느 하나와 대응하는 저장가능 객체들(414)을 저장할 수 있다. 보다 구체적으로, 엔트로피 구역들(578)의 특정 인스턴스에 할당된 메모리 블록들(168)은 엔트로피 구역들(578)의 동일한 특정 인스턴스의 엔트로피 레벨(574)을 갖는 저장가능 객체들(414)을 저장할 수 있다.
엔트로피 구역들(578)은 축출정책들(530)의 각각의 인스턴스에 대해 서로 다르게 결정될 수도 있고, 또는 축출정책들(530)의 복수의 인스턴스들의 조합 또는 병합에 기반하여 결정될 수도 있다. 예를 들어, 축출정책들(530)의 복수의 인스턴스들의 조합으로서 엔트로피 구역들(578)을 결정하는 것은 각각의 축출정책들(530)의 가중 기하 평균으로 계산되는 것일 수 있다.
최소빈도정책(534)에 있어서, 엔트로피 구역들(578)은 객체 레지스트리(411) 내 저장가능 객체들(414)에 대한 활동빈도(556)의 평균을 기반으로 할 수 있다. 구역 0은 객체 레지스트리(411)에 대한 활동빈도(556)의 평균의 절반이 저장가능 객체들(414)의 활동빈도(556)보다 큰 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 1은 객체 레지스트리(411)에 대한 활동빈도(556)의 평균이 저장가능 객체들(414)의 활동빈도(556)보다 큰 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 2는 객체 레지스트리(411)에 대한 활동빈도(556)의 평균이 저장가능 객체들(414)의 활동빈도(556)보다 작은 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 3은 객체 레지스트리(411)에 대한 활동빈도(556)의 평균의 두 배가 저장가능 객체들(414)의 활동빈도(556)보다 작은 엔트로피 레벨(574)의 범위를 포함할 수 있다.
최소최근정책(532)에 있어서, 엔트로피 구역들(578)은 객체 레지스트리(441) 내 저장가능 객체들(414)에 대한 활동빈도(556) 리스트를 기반으로 할 수 있다. 구역 0은 리스트의 말단부터 리스트의 0 백분위수, 또는 0 백분위수에서 25 백분위수까지의 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 1은 리스트의 말단부터 리스트의 25 백분위수, 또는 25백분위수부터 50 백분위수까지의 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 2는 리스트의 말단부터 리스트의 50 백분위수, 또는 50 백분위수부터 75 백분위수까지의 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 3은 리스트의 말단부터 리스트의 75 백분위수, 또는 75 백분위수부터 100 백분위수까지의 엔트로피 레벨(574)의 범위를 포함할 수 있다.
만료정책(536)에 있어서, 엔트로피 구역들(578)은 가비지 컬렉션 간격(즉, 가비지 컬렉션 동작을 수행하는 빈도)을 기반으로 할 수 있다. 구역 0은 프로그램 타임스탬프(552)와 만료시간(576)의 합이 현재시간과 최소 가비지 컬렉션 간격의 합보다 작은 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 1은 프로그램 타임스탬프(552)와 만료시간(576)의 합이 현재시간과 평균 가비지 컬렉션 간격의 합보다 작은 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 2는 프로그램 타임스탬프(552)와 만료시간(576)의 합이 현재시간과 최대 가비지 컬렉션 간격의 합보다 작은 엔트로피 레벨(574)의 범위를 포함할 수 있다. 구역 3은 프로그램 타임스탬프(552)와 만료시간(576)의 합이 현재시간과 최대 가비지 컬렉션 간격의 합보다 큰 엔트로피 레벨(574)의 범위를 포함할 수 있다.
객체 축출가능성 단계(544)에서, 장치 제어 유닛(152)은 덮어쓰기되거나 삭제된 저장가능 객체들(414)로 무효객체들(516)을 식별할 수 있다. 무효객체들(516)은 "0"의 엔트로피 레벨(574)을 가질 수 있다. 보다 구체적으로, 무효객체들(516)은 "0"의 엔트로피 레벨(574)을 갖게 된 이후로, 현재 또는 미래의 가비지 컬렉션 동작 동안 축출 가능한 것으로 결정될 수 있다.
축출가능 객체들(412) 및 무효객체들(516)로 결정된 저장가능 객체들(414)은 후속 소거동작의 후보가 되는 소거블록(420) 내에 남아있을 수 있다. 축출가능 객체들(412) 또는 무효객체들(516)로 식별되지 않는 저장가능 객체들(414)은 캐시가능 객체들(430)로 식별될 수 있다. 캐시가능 객체들(430)은 재배치 단계(546)에서 메모리 블록들(168)의 다른 인스턴스들로 재배치될 수 있다.
재배치 단계(546)는 저장가능 객체들(414)의 유효 인스턴스들인 캐시가능 객체들(430)을 캐싱하기 위한 것이다. 재배치 단계(546)에서 장치 제어 유닛(152)은 소거동작 전에 캐시가능 객체들(430)을 소거블록(420)으로부터 메모리 블록(168)의 다른 인스턴스로 이동시킬 수 있다. 예를 들어, 캐시가능 객체들(430)은 쓰기캐시(write cache)로 확장될 수 있는 캐시, 또는 전용캐시(exclusive cache)로 이동할 수 있는 캐시로 옮겨질 수 있다. 다른 예로, 캐시가능 객체들(430)은 캐시가능 객체들(430)의 엔트로피 레벨(574)에 기반하여 메모리 블록들(420)의 인스턴스들로 옮겨질 수 있다. 보다 구체적으로, 캐시 가능한 객체들이 메모리 블록(420)의 인스턴스들로 옮겨져, 엔트로피 레벨(574)은 메모리 블록(420)과 관련된 엔트로피 구역들(578)과 대응할 수 있다.
재배치 단계(546)에서, 엔트로피 레벨(574)의 관련 인스턴스를 갖는 각각의 캐시가능 객체들(430)은 엔트로피 구역들(578)의 대응하는 인스턴스를 갖는 메모리 블록들(168)의 인스턴스로 재배치될 수 있다. 보다 구체적으로, 캐시가능 객체들(430)의 재배치에 있어서, 캐시가능 객체들(430)은 메모리 블록들(168)의 인스턴스에 저장된 저장가능 객체들(414)의 인스턴스와 동일한 엔트로피 구역들(578)의 인스턴스 내의 엔트로피 레벨(574)을 가질 수 있다. 다시 말해서, 메모리 블록들(168)의 인스턴스에 재배치되는 저장가능 객체들(414)과 캐시가능 객체들(430)은 엔트로피 구역들(578)의 동일한 인스턴스를 갖는다. 예를 들어, "구역 1"인 엔트로피 구역들(578)의 인스턴스 내의 엔트로피 레벨(574)을 갖는 캐시가능 객체들(430)은 "구역 1"의 저장가능 객체들(414)의 다른 인스턴스들을 저장하기 위해 할당된 메모리 블록들(168)의 개방 인스턴스(open instance)로 옮겨질 수 있다. 이와 유사하게, "구역 2"와 "구역 3"의 캐시가능 객체들(430)은 "구역 2" 및 "구역 3" 각각의 저장가능 객체들(414)의 다른 인스턴스들을 저장하기 위해 할당된 메모리 블록들(168)의 개방 인스턴스로 옮겨질 수 있다. 개방 인스턴스들은 저장가능 객체들(414)의 인스턴스들의 저장이 가능한 메모리 블록들(168)을 지칭한다.
또한 재배치 단계(546)에서, 캐시 관리 프로세스(410)는 아직 엔트로피 레벨(574)의 관련 인스턴스를 갖지 않는 저장가능 객체들(414)의 신규 또는 입력 인스턴스들을 추가적으로 처리할 수 있다. 예를 들어, 저장가능 객체들(414)의 신규 또는 입력 인스턴스들은 처음에 스테이징 블록(staging block, 520)들에 저장될 수 있다. 스테이징 블록들(520)은 아직 엔트로피 레벨(574)의 관련 값을 갖지 않는 저장가능 객체들(414)을 저장하기 위해 할당된 메모리 블록들(168)의 특정 인스턴스들이다. 예를 들어, 스테이징 블록들(520)은 블록 엔트로피(594) 값이 없는 메모리 블록들(168)의 인스턴스들일 수 있다. 다른 예로, 스테이징 블록들(520)은 엔트로피 구역들(578)의 특정 인스턴스의 저장가능 객체들(414)을 저장하기 위해 할당되지 않는다. 대응하는 엔트로피 레벨(574) 값을 갖지 않는 저장가능 객체들(414)의 신규 인스턴스들/저장가능 객체들(414)의 인스턴스들을 처리하는 것에 대한 세부설명은 아래 도 6을 참조하여 후술한다.
객체 축출가능성 단계(544), 재배치 단계(546), 또는 이들의 조합에 이어서, 캐시 관리 프로세스(410)는 객체 레지스트리(411)를 업데이트할 수 있다. 예를 들어, 캐시 관리 프로세스(410)는 객체 레지스트리(411)를 업데이트하는 레지스트리 유지관리 단계(540)를 실시하여 저장가능 객체들(414)에 대한 객체정보를 업데이트할 수 있다. 여기서, 저장가능 객체들(414)의 일례로, 메모리 블록들(168)의 다른 인스턴스에 재배치된 캐시가능 객체들(430); 소거동작이 수행되는 축출가능 객체들(412), 무효객체들(516) 또는 이들의 조합; 또는 이들의 조합을 들 수 있다.
장치 제어 유닛(152)은 상술한 바와 같이 메모리 가비지 컬렉터(162)를 활용하여 소거블록 식별 단계(548)를 실행할 수 있다. 또한, 메모리 가비지 컬렉터(162)는 메모리 입출력 인터페이스(164)와 통신하여 소거 명령을 발행하거나 소거블록(420)에 대한 소거동작을 수행할 수 있다. 또한, 장치 제어 유닛(152)은 소거블록(420)의 저장가능 객체들(414) 각각이 처리될 때까지 레지스트리 유지관리 단계(540), 엔트로피 계산 단계(572), 재배치 단계(546) 또는 이들의 조합과 같은 전술한 단계들을 실시할 수 있다. 보다 구체적으로, 각 단계들은 캐시가능 객체들(430)이 메모리 블록(168)의 신규 인스턴스들로 옮겨질 때까지, 소거블록(420)의 각 인스턴스에 대해 소거동작이 수행될 때까지, 또는 이들의 조합일 때까지 반복될 수 있다.
키-밸류 쌍들(165)의 자기축출(self-eviction)을 위한 축출정책이 메모리 장치(104)와 같은 비휘발성 메모리 장치가 캐싱 장치로서 더 좋은 성능을 발휘하도록 한다는 것이 밝혀졌다.
도 6을 참조하면, 컴퓨팅 시스템(100)의 도 4의 캐시 관리 프로세스를 위한 개략적인 구성도의 예시가 도시된다. 도 6은 축출가능 객체들(412) 및 캐시가능 객체들(430)과 같은 저장가능 객체들(414)을 축출 임계치(416)에 기반하여 평가하는 방법을 도시한다.
각각의 메모리 블록들(168)은 축출가능 객체들(412), 무효객체들(516), 캐시가능 객체들(430) 또는 이들의 조합을 포함할 수 있다. 예를 들어, 도 5의 블록 엔트로피(594)의 상대값이 가장 작은 메모리 블록들(168)은 블록 엔트로피(594)의 상대값이 높은 메모리 블록들(168)에 비하여 많은 수의 무효객체들(516) 및 축출가능 객체들(412)을 포함할 수 있다. 블록 엔트로피(594)의 상대값이 높은 메모리 블록들(168)은 축출가능 객체들(412) 또는 무효객체들(516)의 인스턴스들을 거의 포함하지 않거나 전혀 포함하지 않을 수 있다. 메모리 블록들(168)의 다른 인스턴스들에 비해 상대적인 블록 엔트로피(594)에 기반하여 다수의 메모리 블록들(168)이 소거블록들(420)로 지정될 수 있다. 예를 들어, 블록 엔트로피(594)의 상대값이 가장 낮은 메모리 블록들(168)은 소거블록(420) 후보로 간주될 수 있다. 구체적인 예로, 소거블록들(420)로 지정된 메모리 블록들(168)의 개수는 QoS 요건에 기반하여 결정될 수 있다.
소거동작을 수행하기 전에, 캐시가능 객체들(430)은 캐시가능 객체들(430)에 대한 도 5의 엔트로피 레벨(574)에 따라, 소거블록들(420)에서 메모리 블록들(168)의 다른 인스턴스들로 재배치될 수 있다. 캐시가능 객체들(430)은 엔트로피 구역(578)의 동일 인스턴스에 각각 상응하는 엔트로피 레벨(574) 및 블록 엔트로피(594)를 갖는 메모리 블록들(168)로 재배치될 수 있다. 예를 들어, "구역 1" 또는 "구역 2"의 엔트로피 구역(578)에 상응하는 엔트로피 레벨(574)을 갖는 캐시가능 객체들(430)은 "구역 1" 또는 "구역 2" 각각의 엔트로피 구역(578)에 상응하는 메모리 블록들(168)로 재배치될 수 있다. 구체적인 예로, 신규의 저장가능 객체들(414) 또는 메모리 장치(104)/호스트 스토리지 장치(1140)가 최근에 수신한 저장가능 객체들(414)과 같이, 계산된 엔트로피 레벨(574) 값을 갖지 않는 저장가능 객체들(414)은 도 6의 스테이징 블록들(520)로 재배치될 수 있다.
도 7을 참조하면, 도 4의 캐시 관리 프로세스(410)에 대한 스토리지 동작의 흐름도가 도시된다. 호스트 장치(102), 메모리 장치(104) 또는 이들의 조합의 초기화 수행 동안, 캐시 관리 프로세스(410)는 각각의 메모리 블록들(168)을 메모리 블록들(168)의 프리 인스턴스들로 지정할 수 있다. 메모리 블록들(168)의 프리 인스턴스들은 도 5의 엔트로피 구역들(578)의 특정 인스턴스와 아직 관련되지 않는다. 메모리 블록들(168)의 프리 인스턴스들 중 일부는 도 5의 스테이징 블록들(520)로 할당될 수 있다. 스테이징 블록들(520)은 상응하는 블록 엔트로피(594) 값을 갖지 않는 메모리 블록들(168)의 인스턴스이거나, 또는 엔트로피 구역들(578)의 인스턴스로 할당될 수 있다.
도 7의 흐름도는 저장가능 객체들(414)의 인스턴스를 저장하기 위한 명령 또는 요청에 기반한 스토리지 동작을 개시할 수 있다. 캐시 관리 프로세스(410)는 객체 검색 단계(710)에서 요청 또는 명령을 처리할 수 있다. 객체 검색 단계(710)에서, 검색은 스토리지 동작의 대상이 되는 도 4의 저장가능 객체들(414)에 대응하는 도 5의 객체정보(518)에 대해 도 4의 객체 레지스트리(411)를 통해서 수행될 수 있다.
저장가능 객체들(414)이 도 1의 메모리 장치(104) 또는 호스트 스토리지 유닛(114)에의 저장을 위한 저장가능 객체들(414)의 신규/입력 인스턴스인 경우와 같이, 저장가능 객체들(414)에 대한 객체정보(518)가 객체 레지스트리(411)에서 발견되지 않는 경우, 캐시 관리 프로세스(410)는 정보 작성 단계(720)로 들어간다. 정보 작성 단계(720)는 저장가능 객체들(414)의 신규 인스턴스에 대응하는 객체정보(518)의 신규 인스턴스를 작성하기 위한 것이다. 예를 들어, 객체정보(518)는 저장가능 객체들(414)의 신규 인스턴스에 대한 도 5의 프로그램 타임스탬프(552)를, 활동로그(554), 객체크기(560) 또는 이들의 조합을 포함하도록 생성될 수 있다.
정보 작성 단계(720)에서 저장가능 객체들(414)의 신규 인스턴스에 대한 객체정보(518)가 작성되거나, 또는 객체 검색 단계(710)에서 객체정보(518)가 객체 레지스트리(411)로부터 발견되면, 캐시 관리 프로세스(410)는 스테이징 블록들(520)이 스토리지 동작을 위해 이용 가능한지 여부를 결정할 수 있다. 메모리 블록들(168)의 프리 인스턴스들이 저장가능 객체들(414)의 저장을 위해 이용 가능하지 않은 경우, 캐시 관리 프로세스(410)는 메모리 블록들(168)의 프리 인스턴스들을 생성하기 위한 도 5의 소거블록 식별 단계(548) 및 관련 단계들을 포함하는 가비지 컬렉션 프로세스를 개시할 수 있다. 새로이 생성된 메모리 블록들(168)의 프리 인스턴스들은 스테이징 블록들(520)로서 블록 할당 단계(740)에서 저장가능 객체들(414)의 신규 인스턴스들의 저장을 위해 할당될 수 있다. 또한, 메모리 블록들(168)의 프리 인스턴스들은 엔트로피 구역들(578)에 따라 할당될 수 있다. 예를 들어, 엔트로피 구역들(578)의 특정 인스턴스와 관련된 메모리 블록들(168)의 개수가 엔트로피 구역들(578)의 동일 인스턴스의 저장가능 객체들(414)을 저장하기에 불충분한 경우, 메모리 블록들(168)의 프리 인스턴스들이 엔트로피 구역들(578) 중 어느 하나에 대응하는 저장가능 객체들(414), 캐시가능 객체들(430) 또는 이들의 조합을 저장하기 위해 할당될 수 있다.
메모리 블록들(168)의 프리 인스턴스들이 블록 할당 단계(740)에서 생성되거나, 메모리 블록들(168)의 프리 인스턴스들이 스테이징 블록들(520)로서 할당 가능한 경우, 스토리지 동작이 객체 저장 단계(730)로 들어갈 수 있다. 객체 저장 단계(730)에서, 캐시 관리 프로세스(410)는 저장가능 객체들(414)의 신규 또는 입력 인스턴스들을 저장할 수 있다. 본 발명의 구현예에 따르면, 메모리 장치(104) 또는 호스트 스토리지 유닛(114)이 수신한 저장가능 객체들(414)의 신규 또는 입력 인스턴스들은 스테이징 블록들(520)에 저장될 수 있다. 다른 구현예에 따르면, 메모리 장치(104) 또는 호스트 스토리지 유닛(114)이 수신한 저장가능 객체들(414)의 신규 또는 입력 인스턴스들은, 메모리 블록들(168)과 관련된 엔트로피 구역들(578)의 특정 인스턴스와 관계없이 처음에는 메모리 블록들(420)의 임의의 인스턴스에 저장될 수 있고, 이어서 도 5의 엔트로피 레벨(574)이 저장가능 객체들(414)에 대해 계산되면 옮겨질 수 있다.
저장가능 객체들(414)이 저장된 후, 스토리지 동작은 객체정보 업데이트 단계(750) 및 블록정보 업데이트 단계(760)로 들어갈 수 있다. 객체정보 업데이트 단계(750)에서, 캐시 관리 프로세스(410)는 프로그램 타임스탬프(552), 활동로그(554), 객체크기(560) 또는 이들의 조합을 포함하는 객체 레지스트리(411)의 객체정보(518)를 업데이트할 수 있다. 이와 유사하게, 블록정보 업데이트 단계(760)에서, 캐시 관리 프로세스(410)는 메모리 블록들(168)과 관련된 정보(예: 블록 엔트로피(594))와 메모리 블록들(168)의 저장가능 객체들(414)과 관련된 다른 정보를 업데이트할 수 있다.
도 8을 참조하면, 도 4의 캐시 관리 프로세스(410)에 대한 검색 동작의 흐름도가 도시된다. 검색 동작은 도 1의 메모리 장치 또는 호스트 스토리지 유닛(114)에 존재하는 도 4의 저장가능 객체들(414)에 접근하기 위한 명령 또는 요청에 의해 개시될 수 있다. 흐름도는 저장가능 객체들(414)의 인스턴스에 접근하기 위한 명령 또는 요청에 기반한 검색 동작을 개시할 수 있다.
캐시 관리 프로세스(410)는 객체 검색 단계(810)에서 요청 또는 명령을 처리할 수 있다. 객체 검색 단계(810)에서, 검색은 검색 동작의 대상이 되는 도 4의 저장가능 객체들(414)의 인스턴스, 저장가능 객체들(414)에 대응하는 도 5의 객체정보(518), 또는 이들의 조합에 대해 객체 레지스트리(411)를 통해 수행될 수 있다. 요청된 저장가능 객체들(414)의 인스턴스가 발견되지 않으면, 캐시 관리 프로세스(410)는 오류 통보를 생성할 수 있다.
요청된 저장가능 객체들(414)의 인스턴스가 발견되고 검색 요청이 이행된 이후, 검색 동작은 객체정보 업데이트 단계(820) 및 블록정보 업데이트 단계(830)로 들어갈 수 있다. 객체정보 업데이트 단계(820)에서, 캐시 관리 프로세스(410)는 예컨대, 도 5의 활동빈도(556)와 최근 활동(558)을 포함하는 활동로그(554), 객체크기(560), 만료시간 또는 이들의 조합을 포함하는 객체 레지스트리(411) 내 객체정보(518)를 업데이트할 수 있다. 이와 유사하게, 블록정보 업데이트 단계(830)에서, 캐시 관리 프로세스(410)는 메모리 블록들(168)과 관련된 정보(예: 블록 엔트로피(594))와 메모리 블록들(168)의 저장가능 객체들(414)과 관련된 다른 정보를 업데이트할 수 있다.
도 9를 참조하면, 본 발명의 실시예에 따른 컴퓨팅 시스템(100)의 동작방법(900)에 대한 흐름도가 도시된다. 동작방법(900)은 메모리 캐시로서 구성된 메모리 스토리지 유닛의 메모리 블록들에 저장가능 객체들을 저장하는 과정(902), 축출정책을 기반으로 저장가능 객체들에 대한 엔트로피 레벨을 계산하는 과정(904), 메모리 블록들에 저장된 저장가능 객체들의 엔트로피 레벨을 기반으로 메모리 블록들 각각의 블록 엔트로피를 계산하는 과정(906), 블록 엔트로피의 값이 가장 낮은 메모리 블록들의 인스턴스인 소거블록을 메모리 블록으로부터 선택하는 과정(908) 및 소거블록에 대해 소거동작을 수행하는 과정(910)을 포함한다. 동작방법(900)의 각 블록들은 장치 제어 유닛(152)과 메모리 스토리지 유닛(154)과 같은 도 1의 메모리 장치(104)의 유닛들에 의해 도 3, 도 5, 도 7, 도 8 또는 이들의 조합에 따른 흐름도에서 설명한 바와 같이 수행될 수 있다. 예를 들어, 과정 902는 도 1의 메모리 입출력 인터페이스(164)를 통해 장치 제어 유닛(152)에 의해 실시될 수 있다.
결과적인 방법, 프로세스, 기기, 장치, 제품 및/또는 시스템은 간단하고 경제적이고 복잡하지 않고 매우 다목적적이며 정확하고 고감도이고 효과적이며, 공지된 구성요소들을 즉각적이고 효율적이며 경제적인 제조, 응용 및 활용을 위해 변경시킴으로써 구현될 수 있다. 본 발명의 실시예의 또 다른 중요한 측면은 비용 절감, 시스템의 단순화 및 성능 향상의 시대적 경향을 중요히 지원하고 서비스한다는 점이다.
이러한 본 발명의 실시예의 측면들 및 또 다른 중요한 측면들은 결과적으로 기술의 상태를 적어도 다음 수준으로 발전시킨다.
본 발명은 특정한 최적의 모드와 관련하여 설명되었지만, 전술한 설명에 비추어 볼 때 많은 대안, 수정 및 변형들이 가능한 것은 본 발명의 기술분야에 속한 통상의 기술자들에게 명백할 것이다. 따라서, 첨부된 청구항의 범위 내에 있는 그러한 모든 대안, 수정 및 변형들을 포함하고자 한다. 본 명세서에 설명되거나 첨부 도면에 도시된 모든 사항들은 예시적이고 비제한적인 의미로 해석되어야 한다.

Claims (20)

  1. 저장가능 객체들을 저장하기 위한 메모리 캐시로서, 메모리 블록들을 포함하는 메모리 스토리지 유닛; 및
    상기 메모리 스토리지 유닛과 연결되는 장치 제어 유닛을 포함하되,
    상기 장치 제어 유닛은,
    축출정책(eviction policy)을 기반으로 상기 저장가능 객체들에 대한 엔트로피 레벨을 계산하고;
    상기 메모리 블록들 내의 상기 저장가능 객체들의 상기 엔트로피 레벨을 기반으로 상기 메모리 블록들 각각의 블록 엔트로피를 계산하고;
    상기 블록 엔트로피의 값이 가장 낮은 메모리 블록들의 인스턴스인 소거블록을 상기 메모리 블록들로부터 선택하고; 그리고
    상기 소거블록에 대해 소거동작을 수행하는, 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 장치 제어 유닛은,
    최소최근정책(least recent policy)을 포함하는 상기 축출정책을 기반으로 상기 엔트로피 레벨을 계산하는, 컴퓨팅 시스템.
  3. 제1항에 있어서,
    상기 장치 제어 유닛은,
    최소빈도정책(least frequent policy)을 포함하는 축출정책을 기반으로 상기 엔트로피 레벨을 계산하는, 컴퓨팅 시스템.
  4. 제1항에 있어서,
    상기 장치 제어 유닛은,
    만료정책을 포함하는 상기 축출정책을 기반으로 상기 엔트로피 레벨을 계산하는, 컴퓨팅 시스템.
  5. 제1항에 있어서,
    상기 장치 제어 유닛은,
    상기 소거블록의 선택의 비요구된(unsolicited) 개시 및 상기 소거블록에 대한 소거동작의 수행을 개시하는, 컴퓨팅 시스템.
  6. 제1항에 있어서,
    상기 장치 제어 유닛은, 상기 저장가능 객체들의 객체 레지스트리를 유지관리하되,
    상기 객체 레지스트리는, 상기 객체 레지스트리 내의 상기 저장가능 객체들 각각에 대한 프로그램 타임스탬프(program timestamp), 활동로그, 또는 이들의 조합을 포함하는, 컴퓨팅 시스템.
  7. 제1항에 있어서,
    상기 장치 제어 유닛은,
    상기 소거동작을 수행하기 전에, 캐시가능(cacheable) 객체들을 상기 소거블록으로부터 상기 메모리 블록들의 또 다른 인스턴스로 재배치시키고,
    상기 캐시가능 객체들의 재배치를 위한 상기 메모리 블록들의 상기 또 다른 인스턴스는,
    상기 메모리 블록들의 상기 또 다른 인스턴스에 저장된 상기 저장가능 객체들의 엔트로피 구역을 기반으로 결정되는, 컴퓨팅 시스템.
  8. 제1항에 있어서,
    상기 장치 제어 유닛은,
    상기 메모리 블록들 중 어느 하나와 관련된 상기 저장가능 객체들에 대한 상기 엔트로피 레벨의 평균값 또는 중간값에 기초하여 상기 소거블록을 선택하는, 컴퓨팅 시스템.
  9. 제1항에 있어서,
    상기 장치 제어 유닛은,
    상기 저장가능 객체들의 입력 또는 신규 인스턴스들을 저장하기 위해 스테이징 블록(staging block)들을 할당하는, 컴퓨팅 시스템.
  10. 제1항에 있어서,
    상기 장치 제어 유닛은,
    상기 엔트로피 레벨을 기반으로 상기 저장가능 객체들을 엔트로피 구역으로 분류하는, 컴퓨팅 시스템.
  11. 메모리 캐시로 구성된 메모리 스토리지 유닛의 메모리 블록들에 저장가능 객체들을 저장하는 과정;
    축출정책(eviction policy)을 기반으로 상기 저장가능 객체들에 대한 엔트로피 레벨을 계산하는 과정;
    상기 메모리 블록들에 저장된 상기 저장가능 객체들의 상기 엔트로피 레벨을 기반으로 상기 메모리 블록들 각각의 블록 엔트로피를 계산하는 과정;
    상기 블록 엔트로피의 값이 가장 낮은 상기 메모리 블록들의 인스턴스인 소거블록을 상기 메모리 블록들로부터 선택하는 과정; 및
    상기 소거블록에 대해 소거동작을 수행하는 과정을 포함하는, 컴퓨팅 시스템의 동작방법.
  12. 제11항에 있어서,
    상기 축출정책을 기반으로 상기 엔트로피 레벨을 계산하는 과정은,
    최소최근정책(least recent policy)을 기반으로 상기 엔트로피 레벨을 계산하는 과정을 포함하는, 컴퓨팅 시스템의 동작방법.
  13. 제11항에 있어서,
    상기 축출정책을 기반으로 상기 엔트로피 레벨을 계산하는 과정은,
    최소빈도정책(least frequent policy)을 기반으로 상기 엔트로피 레벨을 계산하는 과정을 포함하는, 컴퓨팅 시스템의 동작방법.
  14. 제11항에 있어서,
    상기 축출정책을 기반으로 상기 엔트로피 레벨을 계산하는 과정은,
    만료정책을 기반으로 상기 엔트로피 레벨을 계산하는 과정을 포함하는, 컴퓨팅 시스템의 동작방법.
  15. 제11항에 있어서,
    상기 소거블록의 선택의 비요구된(unsolicited) 개시 및 상기 소거블록에 대한 소거동작의 수행을 개시하는 과정을 더 포함하는, 컴퓨팅 시스템의 동작방법.
  16. 제11항에 있어서,
    상기 저장가능 객체들의 객체 레지스트리를 유지관리하는 과정을 더 포함하되,
    상기 객체 레지스트리는, 상기 객체 레지스트리 내의 상기 저장가능 객체들 각각에 대한 프로그램 타임스탬프(program timestamp), 활동로그, 또는 이들의 조합을 포함하는, 컴퓨팅 시스템의 동작방법.
  17. 제11항에 있어서,
    상기 소거동작을 수행하기 전에, 캐시가능(cacheable) 객체들을 상기 소거블록으로부터 상기 메모리 블록들의 또 다른 인스턴스로 재배치시키는 과정을 더 포함하되,
    상기 캐시가능 객체들의 재배치를 위한 상기 메모리 블록들의 상기 또 다른 인스턴스는,
    상기 메모리 블록들의 상기 또 다른 인스턴스에 저장된 상기 저장가능 객체들의 엔트로피 구역을 기반으로 결정되는, 컴퓨팅 시스템의 동작방법.
  18. 제11항에 있어서,
    상기 소거블록을 선택하는 과정은,
    상기 메모리 블록들 중 어느 하나와 관련된 상기 저장가능 객체들에 대한 상기 엔트로피 레벨의 평균값 또는 중간값에 기초하여 상기 소거블록을 선택하는 과정을 포함하는, 컴퓨팅 시스템의 동작방법.
  19. 제11항에 있어서,
    상기 저장가능 객체들의 입력 또는 신규 인스턴스들을 저장하기 위해 스테이징 블록(staging block)들을 할당하는 과정을 더 포함하는, 컴퓨팅 시스템의 동작방법.
  20. 제11항에 있어서,
    상기 엔트로피 레벨을 기반으로 상기 저장가능 객체들을 상기 저장가능 객체들에 대한 엔트로피 구역들로 분류하는 과정을 더 포함하는, 컴퓨팅 시스템의 동작방법.
KR1020180061798A 2017-11-14 2018-05-30 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법 KR102347871B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/812,900 2017-11-14
US15/812,900 US9983999B2 (en) 2016-01-22 2017-11-14 Computing system with cache management mechanism and method of operation thereof

Publications (2)

Publication Number Publication Date
KR20190054882A true KR20190054882A (ko) 2019-05-22
KR102347871B1 KR102347871B1 (ko) 2022-01-06

Family

ID=66496224

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180061798A KR102347871B1 (ko) 2017-11-14 2018-05-30 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법

Country Status (2)

Country Link
KR (1) KR102347871B1 (ko)
CN (1) CN109783006B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463626B (zh) * 2020-12-10 2023-07-11 网易(杭州)网络有限公司 内存泄漏定位方法、装置、计算机设备及存储介质
US11853160B2 (en) * 2022-05-27 2023-12-26 Western Digital Technologies, Inc. Variable length ECC code according to data entropy in NVMe key value pair devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150100862A (ko) * 2012-12-26 2015-09-02 웨스턴 디지털 테크놀로지스, 인코포레이티드 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집
KR20170088276A (ko) * 2016-01-22 2017-08-01 삼성전자주식회사 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430638B2 (en) * 2004-06-14 2008-09-30 Mossman Holdings Llc Adaptive input / output compressed system and data cache and system using same
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US8832674B2 (en) * 2011-02-24 2014-09-09 Software Ag Usa, Inc. Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store
US20130097387A1 (en) * 2011-10-14 2013-04-18 The Board Of Trustees Of The Leland Stanford Junior University Memory-based apparatus and method
US9378179B2 (en) * 2012-11-21 2016-06-28 International Business Machines Corporation RDMA-optimized high-performance distributed cache
WO2015130837A1 (en) * 2014-02-25 2015-09-03 Dynavisor, Inc. Dynamic information virtualization
US9866647B2 (en) * 2015-03-26 2018-01-09 Alcatel Lucent Hierarchical cost based caching for online media

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150100862A (ko) * 2012-12-26 2015-09-02 웨스턴 디지털 테크놀로지스, 인코포레이티드 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집
KR20170088276A (ko) * 2016-01-22 2017-08-01 삼성전자주식회사 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
CN109783006B (zh) 2022-05-17
KR102347871B1 (ko) 2022-01-06
CN109783006A (zh) 2019-05-21

Similar Documents

Publication Publication Date Title
US9983999B2 (en) Computing system with cache management mechanism and method of operation thereof
US10503635B2 (en) System and method for adaptive optimization for performance in solid state drives based on segment access frequency
TWI627536B (zh) 用於具有調適分割之一共用快取之系統及方法
US8972661B2 (en) Dynamically adjusted threshold for population of secondary cache
US20170052898A1 (en) Using cache lists for processors to determine tracks to demote from a cache
US9201794B2 (en) Dynamic hierarchical memory cache awareness within a storage system
US10496541B2 (en) Dynamic cache partition manager in heterogeneous virtualization cloud cache environment
JP6313993B2 (ja) ホストのサービス品質インジケータに重みを割り当てるための装置および方法ならびに記憶媒体
US9836406B2 (en) Dynamic victim cache policy
US10915461B2 (en) Multilevel cache eviction management
US20170052902A1 (en) Assigning cache control blocks and cache lists to multiple processors to cache and demote tracks in a storage system
CN111352857B (zh) 存储器系统及其操作方法
US9542100B2 (en) Management of memory pages
US9904569B2 (en) Pre-loading page table cache lines of a virtual machine
US20240036756A1 (en) Systems, methods, and devices for partition management of storage resources
US20180074974A1 (en) Determining cores to assign to cache hostile tasks
KR102347871B1 (ko) 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법
US9396128B2 (en) System and method for dynamic allocation of unified cache to one or more logical units
US10353829B2 (en) System and method to account for I/O read latency in processor caching algorithms
KR102427166B1 (ko) 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법
KR102176304B1 (ko) 하위 레벨 캐시에서 캐시 라인의 연령을 제어함으로써 메모리에 대한 후기입 감소

Legal Events

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