KR102427166B1 - 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents

캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102427166B1
KR102427166B1 KR1020160157455A KR20160157455A KR102427166B1 KR 102427166 B1 KR102427166 B1 KR 102427166B1 KR 1020160157455 A KR1020160157455 A KR 1020160157455A KR 20160157455 A KR20160157455 A KR 20160157455A KR 102427166 B1 KR102427166 B1 KR 102427166B1
Authority
KR
South Korea
Prior art keywords
key
eviction
value
memory
policy
Prior art date
Application number
KR1020160157455A
Other languages
English (en)
Other versions
KR20170088276A (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 KR20170088276A publication Critical patent/KR20170088276A/ko
Application granted granted Critical
Publication of KR102427166B1 publication Critical patent/KR102427166B1/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/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/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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

컴퓨팅 시스템은 메모리 스토리지 유닛, 및 장치 제어 유닛을 포함한다. 메모리 스토리지 유닛은 메모리 블록들을 포함하고, 키-벨류 쌍들(key-value pairs)의 값들을 저장하기 위한 메모리 캐시로서 구성된다. 장치 제어 유닛은 메모리 스토리지 유닛과 연결된다. 장치 제어 유닛은 축출 정책(eviction policy)를 기반으로 키-벨류 레지스트리(key-value registry)에 키-벨류 축출 후보들로부터 축출 타깃들을 식별하고, 축출 타깃들로서 메모리 블록들의 동일한 인스턴스 내에 관련 축출 후보들의 관련 축출 카운트를 계산하고, 관련 축출 카운트의 가장 큰 값과 관련된 메모리 블록들로서 소거 블록을 선택하고, 그리고 소거 블록에 소거 동작을 수행하기 위해 메모리 스토리지 유닛과 인터페이스한다.

Description

캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법{COMPUTING SYSTEM WITH CACHE MANAGEMENT MECHANISM AND METHOD OF OPERATION THEREOF}
본 발명은 컴퓨팅 시스템에 관한 것으로 좀 더 구체적으로는, 캐시 관리를 위한 시스템에 관한 것이다.
현대 소비자 및 산업 전자 에서 특히 클라우드 컴퓨팅 장치(cloud computing device)들 및 웹 서버(web server)들은 빅 데이터(big data)의 분석 및 실시간 웹 어플리케이션(web application)들을 포함하여, 현대 생활을 지원하기 위한 기능들의 증가하는 수준들을 제공하고 있다. 기존 기술들에 연구 개발은 무수한 다른 방향들을 취할 수 있다.
사용자들은 정보 처리 기술의 향상에 더 권한을 갖게 되고, 신규 및 기존 패러다임(paradigm)들은 이러한 새로운 영역을 활용하기 시작한다. 많은 양의 정보를 처리하는 것이 본질인 하나의 전자 공학 기반 성장 영역은 비 구조적 쿼리 언어(non-Structured Query Language("NoSQL"또는”NonSQL") 기반 시스템들과 같은 빅 데이터 분석이다. 하지만, 정보를 관리하는 웹 캐싱 서버(web caching server)들과 같은 벡 앤드 데이터베이스(back end data base)들 및 컴퓨팅 서버들은 비용이 많이 들고, 정보의 처리량에 병목현상이 발생할 수 있다. 따라서, 높은 초당 입/출력(input/output per second, IOPS) 처리량의 확장 가능(scalable) 데이터 서버들은 당업자들에 의해 이루어지지 않고 있다.
이와 같이, 캐시 관리에 대한 메모리 관리 메커니즘을 갖는 컴퓨팅 시스템에 대한 필요성이 여전히 남아있다. 계속 증가하는 상업 경쟁력들의 관점에서, 소비자 기대의 증가 및 시장에서 의미 있는 제품 차별화에 대한 기회들의 감소와 함께, 이러한 문제들의 해결책을 찾는 것이 점차 중요해지고 있다. 추가로, 비용 절감, 효율성 및 성능의 향상 및 경쟁력 충족에 대한 요구는 이러한 문제들에 대해 해결책을 찾기 위한 중요한 필요성에 더 큰 긴급성을 추가한다.
이러한 문제점들에 대한 해결책들은 오랫동안 추구되었지만, 이전의 개발들은 어떠한 해답들을 제시하지 못하였다. 이와 같이, 이러한 문제점들에 대한 해결책들은 당업자들에 의해 오랫동안 이루어지지 않고 있다.
본 발명의 목적은 메모리의 캐시를 효율적으로 관리하기 위한 컴퓨팅 시스템 및 그것의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 메모리 스토리지 유닛, 및 장치 제어 유닛을 포함한다. 메모리 스토리지 유닛은 메모리 블록들을 포함하고, 키-벨류 쌍들(key-value pairs)의 값들을 저장하기 위한 메모리 캐시로서 구성된다. 장치 제어 유닛은 메모리 스토리지 유닛과 연결된다.
몇몇 실시 예로서, 장치 제어 유닛은 축출 정책(eviction policy)를 기반으로 키-벨류 레지스트리(key-value registry)에 키-벨류 축출 후보들로부터 축출 타깃들을 식별하고, 축출 타깃들로서 메모리 블록들의 동일한 인스턴스 내에 관련 축출 후보들의 관련 축출 카운트를 계산하고, 관련 축출 카운트의 가장 큰 값과 관련된 메모리 블록들로서 소거 블록을 선택하고, 그리고 소거 블록에 소거 동작을 수행하기 위해 메모리 스토리지 유닛과 인터페이스한다.
본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작의 방법은 메모리 캐시로서 구성되는 메모리 스토리지 유닛(memory storage unit)의 메모리 블록들에 키-벨류 쌍들(key-value pairs)의 값들을 저장하는 단계, 축출 정책(eviction policy)을 기반으로 키-벨류 레지스트리에 키-벨류 축출 후보들로부터 축출 타깃을 식별하는 단계, 축출 타깃들로서 메모리 블록들의 동일한 인스턴스 내에 관련 축출 후보들의 관련 축출 카운트를 계산하는 단계, 및 관련 축출 카운트의 가장 큰 값과 관련된 메모리 블록들로서 소거 블록을 선택하는 단계를 포함한다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 축출 정책을 기반으로 메모리를 관리함으로써, 성능이 향상되고, 레이턴시가 감소할 수 있다.
도 1은 본 발명의 실시 예에 따른 캐시 관리 메커니즘을 위한 컴퓨팅 시스템을 보여준다.
도 2는 도 1의 컴퓨팅 시스템에 대한 캐시 축출 과정을 예시적으로 보여준다.
도 3은 도 1의 컴퓨팅 시스템에 대한 순서도를 예시적으로 보여준다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법을 보여주기 위한 순서도이다.
이하의 실시 예들은 당업자가 본 발명을 사용하게 구현할 수 있도록 충분히 상세하게 설명된다. 다른 실시 예들이 본 발명을 기반으로 분명해질 수 있으며, 시스템, 프로세스, 또는 기계적인 변화들이 본 발명의 실시 예의 사상으로부터의 벗어남 없이 행해질 수 있음은 잘 이해될 것이다.
이하의 상세한 설명에서, 다양한 세부적인 설명들은 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러나, 실시 예들이 이러한 상세한 설명들 없이 실행될 수 있음은 이해될 것이다. 실시 예의 모호함을 피하기 위하여, 일부 잘 알려진 회로들, 시스템 구성들, 및 처리 단계들은 상세하게 설명되지 않는다.
시스템의 실시 예를 보여주는 도면들은 개략적인 도식이며, 계측되지 않는다. 특히, 일부 치수들은 표현의 명확성을 위한 것이며 도면에서 과장되어 도시된다. 유사하게, 비록 설명의 편의를 위하여 도면에서 유시한 성향들(orientation)이 도시되나, 도면들의 이러한 설명은 대부분 임의적인 것이다. 일반적으로, 실시 예들은 다양한 성향들로 동작될 수 있다. 실시 예들은 설명의 편의를 위하여 제1 실시 예, 제2 실시 예 등으로 번호가 매겨질 수 있으나, 실시 예들의 한정을 제공하거나 다른 중요성을 갖지 않는다.
도 1은 본 발명의 실시 예에 따른 캐시 관리 메커니즘을 위한 컴퓨팅 시스템을 보여준다. 도 1은 컴퓨팅 시스템(100)의 예시적인 블록도를 도시한다. 컴퓨팅 시스템(100)은 호스트 장치(102) 및 메모리 장치(104)를 포함할 수 있다. 블록도는 호스트 장치(102)에 연결된 메모리 장치(104)를 도시한다.
호스트 장치(102)는 서버(server), 랩톱 컴퓨터(laptop computer), 또는 데스크톱 컴퓨터(desktop computer)와 같은 컴퓨팅 장치일 수 있다. 다른 예로서, 호스트 장치(102)는 다양한 중앙 집중(centralized) 또는 분산(decentralized) 컴퓨팅 장치들을 포함할 수 있다. 구체적인 예로서, 호스트 장치(102)는 그리드 컴퓨팅 리소스(grid computing resource)들, 가상화된 컴퓨터 리소스(virtualized computer resource), 클라우드 컴퓨팅 리소스(cloud computing resource), 피어-투-피어 분산 컴퓨팅 장치들(peer-to-peer distributed computing devices), 웹 서버, 또는 이들의 조합일 수 있다.
호스트 장치(102)는 키-벨류 저장소(key-value store) 또는 NoSQL 데이터베이스들과 같은 데이터베이스를 지원 또는 구현할 수 있고, 그리고 빅 데이터, 및 실시간 웹 어플리케이션을 실행할 수 있고, 또는 이들의 조합을 수행할 수 있는 장치일 수 있다.
호스트 장치(102)는 호스트 제어 유닛(112), 호스트 스토리지 유닛(114), 호스트 통신 유닛(116), 및 호스트 사용자 인터페이스(118)를 포함하는, 하드웨어(hardware) 구성 요소들과 같은, 유닛들을 포함할 수 있다. 호스트 제어 유닛(112)은 호스트 제어 인터페이스(122)를 포함할 수 있다. 호스트 제어 유닛(112)은 호스트 장치(102)의 정보를 제공하기 위해 호스트 소프트웨어(software)(126)를 실행할 수 있다.
예로서, 호스트 제어 유닛(112)은 프로세서, 응용 주문형 집적 회로(application specific integrated circuit, ASIC), 내장 프로세서(embedded processor), 마이크로프로세서(microprocessor), 하드웨어 제어 로직, 하드웨어 유한 상태 기계(finite state machine, FSM), 디지털 신호 프로세서(digital signal processor, DSP), 프로그램 가능 논리 소자(programmable logic device, PLD), 또는 이들의 조합일 수 있다. 호스트 제어 유닛(112)은 메모리 할당 동작들 및 정보의 흐름을 위해, 메모리 컨트롤러, 메모리 칩 컨트롤러, 또는 메모리 컨트롤러 유닛과 같은 전용 회로(dedicated circuitry)를 포함할 수 있다.
호스트 제어 인터페이스(122)는 호스트 제어 유닛(112) 및 호스트 장치(102)에 다른 유닛들 사이의 통신을 위해 사용될 수 있다. 호스트 제어 인터페이스(122)는 메모리 장치(104)를 포함하는, 호스트 장치(102)의 외부와 통신하기 위해 사용될 수 있다.
호스트 제어 인터페이스(122)는 다른 유닛들 또는 외부 소스들로부터 정보를 수신할 수 있고, 또는 다른 유닛들 또는 외부 목적지들로 정보를 전송할 수 있다. 외부 소스들 및 외부 목적지들은 호스트 장치(102)의 외부에 있는 소스들 및 목적지들을 나타낸다.
호스트 제어 인터페이스(122)는 상이한 방법들의 하드웨어 회로로 구현될 수 있고, 어떤 내부 유닛들 또는 외부 유닛들이 호스트 제어 인터페이스(122)와 인터페이스되고 있는지에 따라 상이한 구현들을 포함할 수 있다. 예로서, 호스트 제어 인터페이스(122)는 압력 센서, 관성 센서(inertial sensor), 미세 전자 기계 시스템(microelectromechanical system, MEMS), 광학 회로(optical circuitry), 웨이브가이드(waveguide)들, 무선 회로(wireless circuitry), 유선 회로(wireline circuitry), 또는 이들의 조합으로 구현될 수 있다.
호스트 스토리지 유닛(114)은 호스트 소프트웨어(126)를 저장 할 수 있다. 호스트 스토리지 유닛(114)은 키-벨류 정보와 같은 관련 정보를 또한 저장 할 수 있다.
호스트 스토리지 유닛(114)은 휘발성 메모리(volatile memory), 불휘발성 메모리(nonvolatile memory), 내부 메모리, 외부 메모리 또는 이들의 조합을 포함하는 하드웨어 회로로 구현될 수 있다. 예로서, 호스트 스토리지 유닛(114)은 불휘발성 랜덤 액세스 메모리(non-volatile random memory, NVRAM), 플래시 메모리(Flash memory), 디스크 스토리지(disk storage), 저항 랜덤 액세스 메모리(resistive random access memory, ReRAM), 상변화 메모리(Phase-change memory, PRAM)와 같은 불휘발성 스토리지 또는 정적 랜덤 액세스 메모리(static random access memory, SRAM)과 같은 휘발성 스토리지일 수 있다. 구체적인 예로서, 호스트 스토리지 유닛(114)은 듀얼 인-라인 메모리 모듈(dual in-line memory module)들과 같은 하드웨어 모듈들의 형태에 랜덤 액세스 메모리(random access memory, RAM), 동기 동적 랜덤 액세스 메모리(synchronous dynamic random access memory, SDRAM)를 포함할 수 있다.
호스트 스토리지 유닛(114)은 호스트 스토리지 인터페이스(124)를 포함할 수 있다. 호스트 스토리지 인터페이스(124)는 호스트 장치(102)에 다른 유닛들 사이의 통신을 위해 사용될 수 있다. 호스트 스토리지 인터페이스(124)는 호스트 장치(102)의 외부와 통신하기 위해 또한 사용될 수 있다.
호스트 스토리지 인터페이스(124)는 다른 유닛들 또는 외부 소스들로부터 정보를 수신할 수 있고, 다른 유닛들 또는 외부 목적지들로 정보를 전송할 수 있다. 외부 소스들 및 외부 목적지들은 호스트 장치(102)의 외부에 있는 소스들 및 목적지들을 나타낸다.
호스트 스토리지 인터페이스(124)는 어떤 유닛들 또는 외부 유닛들이 호스트 스토리지 유닛(114)과 인터페이스되고 있는지에 따라 상이한 구현들을 포함할 수 있다. 호스트 스토리지 인터페이스(124)는 호스트 제어 인터페이스(122)의 구현과 유사한 기술 및 기법으로 구현될 수 있다.
호스트 통신 유닛(116)은 호스트 장치(102)로/로부터 외부 통신을 가능하게 할 수 있다. 예로서, 호스트 통신 유닛(116)은 호스트 장치(102)가 메모리 장치(104) 또는 주변 장치 또는 컴퓨터 데스크톱 같은 다른 부가 장치들과 통신하는 것을 허용할 수 있다. 호스트 통신 유닛(116)은 마이크로전자장치, 필터(filter)들, 변조기(modulator)들, 복조기(demodulator)들, 감지기들, 디코더(decoder)들, 베이스 밴드 모뎀(base band modem), 또는 안테나(antenna)와 같은 능동 및 수동 구성 요소들을 포함할 수 있다.
호스트 통신 유닛(116)은 호스트 통신 인터페이스(128)를 포함할 수 있다. 호스트 통신 인터페이스(128)는 호스트 통신 유닛(116) 및 호스트 장치(102)에 다른 유닛들 사이의 통신을 위해 사용될 수 있다. 호스트 통신 인터페이스(128)는 다른 유닛들로부터 정보를 수신할 수 있고, 다른 유닛들로 정보를 전송할 수 있다.
호스트 통신 인터페이스(128)는 어떤 유닛들이 호스트 통신 유닛(116)과 인터페이스되고 있는지에 따라 상이한 구현들을 포함할 수 있다. 호스트 통신 인터페이스(128)는 호스트 제어 인터페이스(122)의 구현과 유사한 기술 및 기법으로 구현될 수 있다.
호스트 사용자 인터페이스(118)는 사용자(미도시)가 호스트 장치(102)와 인터페이스 및 상호작용하는 것을 허용한다. 호스트 사용자 인터페이스(118)는 입력 장치 및 출력 장치를 포함할 수 있다. 호스트 사용자 인터페이스(118)의 입력 장치의 예들은 데이터 및 통신 입력들을 제공하기 위한 키패드(keypad), 터치패드(touchpad), 소프트-키(soft-key)들, 키보드(keyboard), 마이크로폰(microphone), 원격 신호들을 수신하기 위한 적외선 센서, 또는 이들의 조합을 포함할 수 있다.
호스트 사용자 인터페이스(118)는 디스플레이 인터페이스(130)를 포함할 수 있다. 디스플레이 인터페이스(130)는 디스플레이, 프로젝터(projector), 비디오 스크린(vidio screen), 스피커(speaker), 또는 이들의 조합에 대한 연결을 포함할 수 있다.
호스트 제어 유닛(112)은 컴퓨팅 시스템(100)에 의해 생성된 정보를 디스플레이하기 위해 호스트 사용자 인터페이스(118)를 조작할 수 있다. 호스트 제어 유닛(112)은 컴퓨팅 시스템(100)의 다른 기능들을 위해 호스트 소프트웨어(126)를 실행시킬 수 있다.
호스트 장치(102)의 유닛들은 다른 유닛들과 개별적으로 그리고 독립적으로 작동할 수 있다. 호스트 장치(102)는 메모리 장치(104)로부터 개별적으로 그리고 독립적으로 작동할 수 있다.
메모리 장치(104)는 불휘발성 메모리 기술을 기반으로 하는 독립형(standalone) 메모리 스토리지 하드웨어이다. 예로서, 메모리 장치(104)는 멀티-레벨 캐시 시스템(multi-level cache system)의 일부분으로서 동작하도록 구성되는 솔리드 스테이트 메모리 장치(solid state memory device)일 수 있다. 메모리 장치(104)는 다중 계층(tier) 캐싱 시스템에 캐싱 장치로서 작동할 수 있다. 예로서, 메모리 장치(104)는 호스트 장치(102)와 독립된 용량 관리 및 축출 동작들을 구현할 수 있다. 메모리 장치(104)는 장치 제어 유닛(152), 메모리 스토리지 유닛(154), 및 메모리 장치 인터페이스(156)를 포함할 수 있다.
장치 제어 유닛(152)은 하드웨어 회로의 복수의 상이한 방식들로 구현될 수 있다. 예로서, 장치 제어 유닛(152)은 프로세서, ASIC, 내장형 프로세서, 마이크로프로세서, 하드웨어 제어 로직, FSM, DSP 또는 이들의 조합일 수 있다. 장치 제어 유닛(152)은 메모리 할당 동작들 및 정보의 흐름을 위해, 메모리 컨트롤러, 메모리 칩 컨트롤러, 또는 메모리 컨트롤러 유닛과 같은 전용 회로를 포함할 수 있다.
장치 제어 유닛(152)은 메모리 장치(104)의 동작을 위한 펌웨어를 구현할 수 있다. 예로서, 장치 제어 유닛(152)은 플래시 변환 계층(flash translation layer)(158)을 조작할 수 있다. 플래시 변환 계층(158)은 읽기, 프로그래밍, 및 매핑 동작들과 같은 메모리 장치(104)의 동작을 위한 메커니즘들 및 프로세서들을 구현하기 위한 구성요소이다. 플래시 변환 계층(158)은 용량 관리자(capacity manager(160), 메모리 가비지 컬렉터(memory garbage collector)(162), 및 메모리 입/출력(I/O) 인터페이스(164)와 같은 펌웨어 구성 요소들을 포함할 수 있다.
용량 관리자(160)는 메모리 장치(104) 내의 키-벨류 쌍들(165)의 상태 및 활동을 모니터하는 구성 요소이다. 예로서, 용량 관리자(160)는 메모리 스토리지 유닛(154)에 저장을 위해 키-벨류 쌍들(165)의 수신되는 인스턴스(instance)들의 값들을 처리할 수 있다. 다른 예로서, 용량 관리자(160)는 소거 동작을 위한 후보들을 식별할 수 있다. 이러한 동작들의 각각은 아래에서 설명된다.
메모리 가비지 컬렉터(162)는 메모리 스토리지 유닛(154)에 소거 동작들을 처리하기 위한 구성 요소이다. 예로서, 메모리 가비지 컬렉터(162)는 용량 관리자(160)로부터 수신된 정보에 기초하여 메모리 블록들을 식별하고 소거할 수 있다.
메모리 I/O 인터페이스(164)는 메모리 스토리지 유닛(154)에 액세스하는 요청들을 처리하기 위한 구성 요소이다. 예로서, 메모리 I/O 인터페이스(164)는 메모리 스토리지 유닛(154)에 대한 읽기, 프로그래밍, 또는 소거 동작들을 처리할 수 있다. 구체적인 예로서, 메모리 I/O 인터페이스(164)는 용량 관리자(160)로부터 수신된 키-벨류 쌍들(165)의 값(value, VAL)으로 메모리 페이지들(170)을 프로그램하기 위해 메모리 스토리지 유닛(154)에 액세스할 수 있다. 다른 구체적인 예로서, 메모리 I/O 인터페이스(164)는 읽기 동작에 대한 키-벨류 쌍들(165)의 값을 검색하기 위해 메모리 스토리지 유닛(154)에 액세스할 수 있다. 더 구체적인 예로서, 메모리 I/O 인터페이스(164)는 소거 동작을 실행하기 위해 메모리 스토리지 유닛(154)에 메모리 블록들(168)에 액세스할 수 있다. 용량 관리자(160), 메모리 가비지 컬렉터(162), 및 메모리 I/O 인터페이스(164)는 독립적으로 동작하고, 메모리 장치(104)의 동작을 위해 서로 통신할 수 있다.
메모리 스토리지 유닛(154)은 비 일시적인(non-transitory) 컴퓨터 판독 매체이다. 예로서, 메모리 스토리지 유닛(154)은 NAND 플래시 메모리, FRAM, 또는 MRAM 등을 포함하는 플래시 메모리와 같은 불휘발성 메모리일 수 있다. 메모리 스토리지 유닛(154)은 플래인(plane)들(미 도시), 메모리 블록들(168), 및 메모리 페이지들(170)과 같은 메모리 구성 요소들 및 서브-구성 요소들을 포함할 수 있다. 예로서, 메모리 페이지들(170)은 프로그래밍 동작이 수행될 수 있는 메모리 스토리지 유닛(154)에 가장 작은 부분일 수 있다. 메모리 블록들(168)은 복수의 메모리 페이지들(170)을 포함할 수 있다. 메모리 블록들(168)은 소거 동작이 수행될 수 있는 메모리 스토리지 유닛(154)에 가장 작은 부분일 수 있다.
메모리 장치 인터페이스(156)는 메모리 장치(104)의 외부의 장치들로 접속을 제공하기 위한 것이다. 예로서, 메모리 장치 인터페이스(156)는 호스트 장치(102)로 직접적 또는 간접적인 접속을 위한 하드웨어를 제공할 수 있다. 좀 더 구체적인 예로서, 메모리 장치 인터페이스(156)는 PCI(peripheral component interconnect) 또는 PCI 익스프레스(PCI express) 커넥션(connection)을 통해 호스트 장치(102)에 대한 메모리 장치(104)의 직접적인 연결을 제공할 수 있다. 다른 구체적인 예로서, 메모리 장치 인터페이스(156)는 유선 또는 무선 통신을 통해 근거리 통신망(local area network, LAN), 도시권 통신망(metropolitan area network, MAN), 또는 광대역 통신망(wide-area network, WAN)과 같은 네트워크상에서 메모리 장치(104) 및 호스트 장치(102) 사이의 커넥션을 제공할 수 있다. 유선 통신의 예들은 디지털 가입자 회선(digital subscriber line, DSL), 광섬유 커넥션(fiber optic connection), 또는 카테고리 Cat 5, Cat 5e, 또는 Cat 6 연결에 대한 인터페이스들을 갖춘 이더넷(Ethernet) 커넥션을 통한 통신을 포함할 수 있다. 위성 통신, 이동 통신(cellular communication), 블루투스(Bluetooth), 적외선 통신 규격(Infrared Data Association, IrDA) 표준, 및 무선 충실도(wireless fidelity, WiFi)는 무선 통신의 예시이다.
도 2는 도 1의 컴퓨팅 시스템(100)에 대한 캐시 축출 프로세스(210)를 예시적으로 보여준다. 캐시 축출 프로세스(210)는 객체 선택 및 축출 동작이다. 캐시 축출 프로세스(210)는 독립형 캐싱 장치로서 동작할 수 있는 메모리 장치(104)를 가능하게 한다. 캐시 축출 프로세스(210)는 도 1의 메모리 장치(104)에 장치 제어 유닛(152)에 의해 실행될 수 있고, 용량 관리자(160), 메모리 가비지 컬렉터(162), 메모리 I/O 인터페이스(164), 또는 이들의 조합과 함께 구현될 수 있다.
캐시 축출 프로세스(210)는 용량 관리자(160)의 키-벨류 레지스트리(key-value registry)(211)와 도시될 수 있다. 키-벨류 레지스트리(211)는 메모리 장치(104)의 키-벨류 쌍들(165)과 관련된 정보의 사전이다. 키-벨류 레지스트리(211)의 추가 세부 사항은 아래에서 설명한다. 키-벨류 레지스트리(211)는 키-벨류 축출 후보들(212) 및 축출 타깃(target)들(222)을 추적할 수 있다.
키-벨류 축출 후보들(212)은 축출 기준을 충족하는 키-벨류 쌍들(165)이다. 예로서, 키-벨류 축출 후보들(212)은 축출 임계치(216)를 초과하는 축출 기준을 갖는 키-벨류 쌍들(165)의 인스턴스(instance)들일 수 있다. 축출 기준 및 축출 임계치(216)는 이하에서 더 설명되는 무엇보다도, 액세스의 빈도, 저장 시간, 및 가장 최근의 활동과 같은 요소들에 따른 축출 정책들에 기초할 수 있다. 캐시 축출 프로세스(210)에서, 용량 관리자(160)는 키-벨류 레지스트리(211)의 키-벨류 쌍들(165)로부터 키-벨류 축출 후보들(212)을 식별할 수 있다. 구체적인 예로서, 용량 관리자(160)는 도 2에 점선으로서 도시된(비록 그것은 측정될 수도 있지만) 축출 임계치(216)를 초과하는 키-벨류 쌍들(165)의 인스턴스들로서 키-벨류 축출 후보들(212)을 식별할 수 있다.
축출 타깃들(222)은 축출을 위한 정책들에 따라 축출을 위해 선택된 키-벨류 축출 후보들(212)의 인스턴스들이다. 예로서, 액세스의 빈도를 기반으로 하는 정책을 위해, 축출 타깃들(222)은 가장 적은 빈도의 액세스를 갖는 키-벨류 축출 후보들(212)의 인스턴스들로서 선택될 수 있다. 다른 예로서, 가장 최근의 액세스를 기반으로 하는 정책을 위해, 축출 타깃들(222)은 마지막 액세스 이후 가장 긴 기간을 갖는 키-벨류 축출 후보들(212)의 인스턴스들로서 선택될 수 있다. 다른 예로서, 저장 시간을 기반으로 하는 정책을 위해, 축출 타깃들(222)은 메모리 스토리지 유닛(156)에 가장 긴 기간 동안 저장된 키-벨류 축출 후보들(212)의 인스턴스들로서 선택될 수 있다. 키-벨류 축출 후보들(212)로부터 축출 타깃들(222)의 선택은 아래에서 설명될 것이다.
캐시 축출 프로세스(210)에서, 메모리 가비지 컬렉터(162)는 축출 타깃들(222) 중 하나를 포함하는 메모리 스토리지 유닛(154)에 메모리 블록들(168)의 인스턴스로서 소거 블록(220)을 선택할 수 있다. 예로서, 메모리 가비지 컬렉터(162)는 축출 타깃들(222)에 대한 관련 축출 후보들(224)의 관련 축출 카운트(count)(218)를 계산할 수 있다. 관련 축출 후보들(224)은 축출 타깃들(222) 중 하나로서 메모리 블록들(168)의 동일한 인스턴스 내에 있는 키-벨류 축출 후보들(212)이다. 다른 예로서, 메모리 가비지 컬렉터(162)는 관련 축출 카운트(218)의 가장 높은 값을 갖는 축출 타깃들(222)을 포함하는 메모리 블록들(168)로서 소거 블록(220)을 선택할 수 있다.
예로서, 도 2는 두 개의 축출 타깃들(222)을 보여주지만, 다른 개수의 축출 타깃들(222)이 캐시 축출 프로세스(210)에서 식별될 수 있다. 키-벨류 축출 후보들(212)의 결정, 소거 블록(220)의 선택 및 관련 단계들을 포함하는 캐시 축출 프로세스(210)의 세부 사항들은 아래에서 설명될 것이다.
도 3은 도 1의 컴퓨팅 시스템(100)에 대한 순서도를 예시적으로 보여준다. 컴퓨팅 시스템(100)의 메모리 관리 메커니즘은 복수의 상이한 방법으로 구현될 수 있다. 구현의 한 예는 도 1의 메모리 장치(104)에 대한 도 2의 캐시 축출 프로세스(210)를 도시한 아래의 순서도에서 설명된다. 일반적으로, 캐시 축출 프로세스(210)는 축출 정책(330)을 기반으로 자체적으로 구현될 수 있다. 좀 더 구체적으로, 캐시 축출 프로세스(210)는 도 1의 호스트 장치(102)로부터와 같은 외부 커맨드들 없이 도 2의 용량 관리자(160)를 통해 장치 제어 유닛(152)에 의해 개시될 수 있다.
축출 정책(330)은 메모리 유닛으로부터 데이터의 축출을 위한 후보들을 결정하기 위한 규칙이다. 예로서, 축출 정책(330)은 키-벨류 쌍들(165)이 액세스된 빈도, 얼마나 최근에 키-벨류 쌍들(165)이 액세스 되었는지, 키-벨류 쌍들(165)의 값이 메모리 스토리지 유닛(154)에 저장된 전체 시간 또는 이들의 조합에 기초하여 도 2의 키-벨류 축출 후보들(212)로서 도 1의 키-벨류 쌍들(165)을 식별할 수 있다. 축출 정책(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)의 값의 위치를 포함할 수 있다. 다른 예로서, 키-벨류 레지스트리(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)는 언제 키-벨류 쌍들(165)의 새로운 인스턴스가 메모리 장치(104)로부터 수신되었는지 또는 언제 키-벨류 쌍들(165)이 메모리 장치(104)로부터 소거되었는지와 같은 프로그래밍 또는 소거 동작과 관련하여 키-벨류 레지스트리(211)를 갱신할 수 있다. 용량 관리자(160)의 구체적인 예는 메모리 스토리지 유닛(154)에 저장을 위해 호스트 장치(102)로부터 수신된 키-벨류 쌍들(165)의 새로운 인스턴스들로 프로그램 타임스탬프(352)를 추가하여, 활동 로그(354)를 포함하는 키-벨류 레지스트리(211)를 갱신할 수 있다. 다른 구체적인 예로서, 용량 관리자(160)는 소거 동작 다음 키-벨류 레지스트리(211)로부터 키-벨류 쌍들(165)을 제거하여 키-벨류 레지스트리(211)를 유지할 수 있다. 상술한 바와 같이, 장치 제어 유닛(152)은 레지스트리 유지 단계(340)를 실행하기 위해 용량 관리자(160)를 활용할 수 있다.
흐름은 용량 모니터링 단계(342)를 계속할 수 있다. 용량 모니터링 단계(342)는 축출을 위한 후보들을 식별하기 위해 키-벨류 쌍들(165)의 레지스트리를 모터링하기 위한 것이다. 용량 모니터링 단계(342)는 축출 정책(330)에 따라 키-벨류 축출 후보들(212)을 식별할 수 있다. 좀 더 구체적으로, 용량 모니터링 단계(342)는 축출 정책(330)에 기초하여 도 2의 축출 임계치(216)를 결정할 수 있다.
최소 빈도 정책(334)에 대해서, 축출 임계치(216)는 키-벨류 쌍들(165)의 활동 빈도(356)와 대응할 수 있다. 예로서, 축출 임계치(216) 아래의 활동 빈도를 갖는 키-벨류 쌍들(165)은 키-벨류 축출 후보들(212)로서 식별될 수 있다.
최소 최근 정책(336)에 대해서, 축출 임계치(216)는 키-벨류 쌍들(165)의 최근 활동(358)에 대응할 수 있다. 예로서, 축출 임계치(216) 아래의 최근 활동(358)을 갖는 키-벨류 쌍들(165)은 키-벨류 축출 후보들(212)로서 식별될 수 있다.
만료 정책(336)에 대해서, 축출 임계치(216)는 프로그램 타임스탬프(352)에 대응할 수 있다. 예로서, 축출 임계치(216)를 초과하는 프로그램 타임스탬프(352)를 갖는 키-벨류 쌍들(165)은 키-벨류 축출 후보들(212)로서 식별될 수 있다. 상술한 바와 같이, 장치 제어 유닛(152)은 용량 모니터링 단계(342)를 실행하기 위해 용량 관리자(160)를 활용할 수 있다.
흐름은 축출 식별 단계(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)은 축출 식별 단계(344)를 실행하기 위해 메모리 가비지 컬렉터(162)를 활용할 수 있다.
흐름은 관련 후보 단계(346)를 계속할 수 있다. 관련 후보 단계(346)는 관련 축출 후보들(224)을 식별하고, 축출 타깃들(222)에 대한 도 2의 관련 축출 카운트(218)를 결정하는 것이다. 관련 후보 단계(346)에서, 용량 관리자(160)는 메모리 블록들(168)의 동일한 인스턴스에 존재하는 키-벨류 축출 후보들(212)로서 관련 축출 후보들(224)을 축출 타깃들(222)로서 식별할 수 있다. 축출 타깃들(222) 중 인스턴스 각각에 대해, 용량 관리자(160)는 축출 타깃들(222)의 특정 인스턴스의 관련 축출 후보들(224) 전체 개수로서 관련 축출 개수(218)를 계산할 수 있다. 상술한 바와 같이, 장치 제어 유닛(152)은 관련 후보 단계(346)를 실행하기 위해 용량 관리자(160)를 활용할 수 있다.
흐름은 소거 블록 식별 단계(348)를 계속할 수 있다. 소거 블록 식별 단계(348)는 소거 동작을 위해 메모리의 최적의 블록의 식별을 위한 것이다. 소거 블록 식별 단계(348)에서, 메모리 가비지 컬렉터(162)는 관련 축출 카운트(218)에 기초하여 메모리 스토리지 유닛(154)에 메모리 블록들(168)로부터 소거 블록(220)을 선택할 수 있다. 예로서, 메모리 가비지 컬렉터(162)는 관련 축출 카운트(218)의 가장 큰 값과 관련된 메모리 블록들(168)로서 소거 블록(220)을 선택할 수 있다. 상술한 바와 같이, 장치 제어 유닛(152)은 소거 블록 식별 단계(348)를 실행하기 위해 메모리 가비지 컬렉터(162)를 활용할 수 있다. 더 나아가, 메모리 가비지 컬렉터(162)는 소거 블록(220)에 대해 소거 커맨드를 발행하기 위해, 또는 소거 블록(220)상에서 소거 동작을 수행하기 위해 메모리 I/O 인터페이스(164)와 통신할 수 있다. 키-벨류 쌍들(165)의 자체 축출을 위한 축출 정책은 메모리 장치(104)와 같은 불휘발성 메모리 장치가 캐싱 장치로서 더 나은 기능을 하도록 가능하게 할 수 있다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 시스템(100)의 동작 방법을 보여주기 위한 순서도이다. 방법(400)은 블록(402)에서, 메모리 캐시로서 구성된 메모리 스토리지 유닛의 메모리 블록들에 키-벨류 쌍들의 값들을 저장하는 단계, 블록(404)에서, 축출 정책을 기반으로 키-벨류 레지스트리에 키-벨류 축출 후보들로부터 축출 타깃들을 식별하는 단계, 블록(406)에서, 축출 타깃들로서 메모리 블록들의 동일한 인스턴스 내에 관련 축출 후보들의 관련 축출 카운트를 계산하는 단계, 및 블록(408)에서, 관련 축출 카운트의 가장 큰 값과 관련된 메모리 블록으로서 소거 블록을 선택하는 단계를 포함한다.
방법(400)의 블록들은 도 3의 순서도에서 설명된 바와 같이 도 1의 장치 제어 유닛(152), 및 도 1의 메모리 스토리지 유닛(154)과 같은 도 1의 메모리 장치(104)의 유닛들로부터 구현될 수 있다. 예로서, 블록(402)의 방법은 도 1의 메모리 I/O 인터페이스(164)를 통해 장치 제어 유닛(152)으로부터 구현될 수 있다. 다른 예로서, 블록(404)의 방법은 도 3의 축출 식별 단계(344)에서 실행될 수 있다. 다른 예로서, 블록(406)의 방법은 도 3의 관련 후보 단계(346)에서 실행될 수 있다. 다른 예에서, 블록(408)은 도 3의 소거 블록 식별 단계(348)에서 실행될 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.

Claims (10)

  1. 메모리 블록들을 포함하고, 키-벨류 쌍들(key-value pairs)의 값들을 저장하기 위한 메모리 캐시로서 구성되는 메모리 스토리지 유닛(memory storage unit); 및
    상기 메모리 스토리지 유닛과 연결되는 장치 제어 유닛을 포함하되,
    상기 장치 제어 유닛은:
    축출 정책(eviction policy)을 기반으로 키-벨류 레지스트리(key-value registry)에 키-벨류 축출 후보들로부터 축출 타깃들을 식별하고;
    상기 축출 타깃들로서 상기 메모리 블록들의 동일한 인스턴스 내에 있는 관련 축출 후보들의 관련 축출 카운트를 계산하고;
    상기 관련 축출 카운트의 가장 큰 값과 관련된 상기 메모리 블록들로서 소거 블록을 선택하고; 그리고
    상기 소거 블록에 소거 동작을 수행하기 위해 상기 메모리 스토리지 유닛과 인터페이스하는 컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    상기 장치 제어 유닛은 최소 최근 정책(least recent policy)을 포함하는 상기 축출 정책을 기반으로 상기 키-벨류 축출 후보들을 식별하도록 구성되고,
    상기 최소 최근 정책은 상기 키-벨류 쌍들 중에서 마지막 액세스 이후 가장 긴 시간을 갖는 키-벨류 쌍들을 대상으로 하는 컴퓨팅 시스템.
  3. 제 1 항에 있어서,
    상기 장치 제어 유닛은 최소 빈도 정책(least frequent policy)을 포함하는 상기 축출 정책을 기반으로 상기 키-벨류 축출 후보들을 식별하도록 구성되고,
    상기 최소 빈도 정책은 상기 키-벨류 쌍들 중에서 최소 빈도의 키-벨류 쌍들을 대상으로 하는 컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    상기 장치 제어 유닛은 만료 정책(expiration policy)을 포함하는 상기 축출 정책을 기반으로 상기 키-벨류 축출 후보들을 식별하도록 구성되고,
    상기 만료 정책은 상기 키-벨류 쌍들의 다른 인스턴스들과 관련하여 최대 기간 동안 상기 메모리 스토리지 유닛에 저장되는 키-벨류 쌍들을 대상으로 하는 컴퓨팅 시스템.
  5. 제 1 항에 있어서,
    상기 장치 제어 유닛은 상기 메모리 스토리지 유닛으로부터 상기 키-벨류 쌍들의 상기 값들의 요구하지 않은 축출을 개시하도록 구성되는 컴퓨팅 시스템.
  6. 제 1 항에 있어서,
    상기 장치 제어 유닛은 상기 키-벨류 레지스트리에 상기 키-벨류 쌍들 각각에 대한 프로그램 타임스탬프(program timestamp)를 포함하는 상기 키-벨류 쌍들의 상기 키-벨류 레지스트리를 유지하도록 구성되는 컴퓨팅 시스템.
  7. 제 1 항에 있어서,
    상기 장치 제어 유닛은 상기 키-벨류 레지스트리에 상기 키-벨류 쌍들 각각에 대한 활동 로그를 포함하는 상기 키-벨류 쌍들의 상기 키-벨류 레지스트리를 유지하도록 구성되는 컴퓨팅 시스템.
  8. 제 1 항에 있어서,
    상기 장치 제어 유닛은 메모리 가비지 컬렉터(memory garbage collector)를 위한 소거 블록을 선택하도록 구성되는 컴퓨팅 시스템.
  9. 제 1 항에 있어서,
    호스트 장치로부터 상기 키-벨류 쌍들의 상기 값을 수신하도록 구성되는 메모리 장치 인터페이스를 더 포함하는 컴퓨팅 시스템.
  10. 컴퓨팅 시스템의 동작 방법에 있어서,
    메모리 캐시로서 구성되는 메모리 스토리지 유닛(memory storage unit)의 메모리 블록들에 키-벨류 쌍들(key-value pairs)의 값들을 저장하는 단계;
    축출 정책(eviction policy)을 기반으로 키-벨류 레지스트리에 키-벨류 축출 후보들로부터 축출 타깃들을 식별하는 단계;
    상기 축출 타깃들로서 상기 메모리 블록들의 동일한 인스턴스 내에 있는 관련 축출 후보들의 관련 축출 카운트를 계산하는 단계; 및
    상기 관련 축출 카운트의 가장 큰 값과 관련된 상기 메모리 블록들로서 소거 블록을 선택하는 단계를 포함하는 컴퓨팅 시스템의 동작 방법.
KR1020160157455A 2016-01-22 2016-11-24 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법 KR102427166B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662286193P 2016-01-22 2016-01-22
US62/286,193 2016-01-22
US15/083,099 2016-03-28
US15/083,099 US9846651B2 (en) 2016-01-22 2016-03-28 Computing system with cache management mechanism and method of operation thereof

Publications (2)

Publication Number Publication Date
KR20170088276A KR20170088276A (ko) 2017-08-01
KR102427166B1 true KR102427166B1 (ko) 2022-07-29

Family

ID=59359841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160157455A KR102427166B1 (ko) 2016-01-22 2016-11-24 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9846651B2 (ko)
KR (1) KR102427166B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102347871B1 (ko) * 2017-11-14 2022-01-06 삼성전자주식회사 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법
US10922011B2 (en) * 2018-04-12 2021-02-16 Samsung Electronics Co., Ltd. Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof
US10733114B2 (en) 2018-08-28 2020-08-04 International Business Machines Corporation Data cache performance

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8725951B2 (en) 2010-04-12 2014-05-13 Sandisk Enterprise Ip Llc Efficient flash memory-based object store
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US9355109B2 (en) 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US8433695B2 (en) 2010-07-02 2013-04-30 Futurewei Technologies, Inc. System architecture for integrated hierarchical query processing for key/value stores
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
US8904047B1 (en) 2012-06-29 2014-12-02 Emc Corporation Cloud capable storage system with high perormance nosql key-value pair operating environment
US9378179B2 (en) * 2012-11-21 2016-06-28 International Business Machines Corporation RDMA-optimized high-performance distributed cache
US10031767B2 (en) * 2014-02-25 2018-07-24 Dynavisor, Inc. Dynamic information virtualization
US9984002B2 (en) * 2015-10-26 2018-05-29 Salesforce.Com, Inc. Visibility parameters for an in-memory cache

Also Published As

Publication number Publication date
KR20170088276A (ko) 2017-08-01
US20170212841A1 (en) 2017-07-27
US9846651B2 (en) 2017-12-19

Similar Documents

Publication Publication Date Title
US11073999B2 (en) Extent migration in multi-tier storage systems
US9813500B2 (en) Allocating cloud storage based on storage attributes
US9983999B2 (en) Computing system with cache management mechanism and method of operation thereof
US10061702B2 (en) Predictive analytics for storage tiering and caching
US8352517B2 (en) Infrastructure for spilling pages to a persistent store
US10509739B1 (en) Optimized read IO for mix read/write scenario by chunking write IOs
KR102427166B1 (ko) 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법
CN104516824B (zh) 数据存储系统中的存储管理方法和系统
JP2014132457A (ja) ストレージシステムを再構成するための方法、及びその可変構造型ストレージシステムと可変構造型ストレージデバイス並びに実行可能なソフトウェア製品及びホスト
US10560537B2 (en) Function based dynamic traffic management for network services
US9710178B2 (en) Optimizing volume placement based upon desired response time and priority
US20240036756A1 (en) Systems, methods, and devices for partition management of storage resources
KR102347871B1 (ko) 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법
US11669246B2 (en) Storage allocation enhancement of microservices
US8838902B2 (en) Cache layer optimizations for virtualized environments
EP3293643B1 (en) Paging mechanism for in-memory data management system
US20140258632A1 (en) Sharing Cache In A Computing System
US9852142B2 (en) Method for EN passant workload shift detection
US20220091898A1 (en) Dynamic volume pooling in data storage management
CN117055815A (zh) 缓存数据管理方法、装置、介质及电子设备

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