KR102443600B1 - 하이브리드 메모리 시스템 - Google Patents

하이브리드 메모리 시스템 Download PDF

Info

Publication number
KR102443600B1
KR102443600B1 KR1020207029814A KR20207029814A KR102443600B1 KR 102443600 B1 KR102443600 B1 KR 102443600B1 KR 1020207029814 A KR1020207029814 A KR 1020207029814A KR 20207029814 A KR20207029814 A KR 20207029814A KR 102443600 B1 KR102443600 B1 KR 102443600B1
Authority
KR
South Korea
Prior art keywords
command
memory
memory system
instruction
hybrid memory
Prior art date
Application number
KR1020207029814A
Other languages
English (en)
Other versions
KR20200123850A (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 KR20200123850A publication Critical patent/KR20200123850A/ko
Application granted granted Critical
Publication of KR102443600B1 publication Critical patent/KR102443600B1/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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)

Abstract

예시적인 장치는 호스트에 결합되는 하이브리드 메모리 시스템과, 하이브리드 메모리 시스템에 결합된 제어기를 포함한다. 제어기는 명령에 감도를 할당하도록, 그리고 할당된 감도에 적어도 부분적으로 기초하여 명령을 하이브리드 메모리 시스템으로 선택적으로 전환하도록 구성될 수 있다.

Description

하이브리드 메모리 시스템
본 개시는 일반적으로 반도체 메모리 및 방법에 관한 것이고, 보다 상세하게는 하이브리드 메모리 시스템과 관련된 장치 및 방법에 관한 것이다.
메모리 디바이스는 일반적으로 컴퓨팅 시스템에서 내부, 반도체, 집적 회로로 제공된다. 휘발성 및 비휘발성 메모리를 포함하여 다양한 유형의 메모리가 있다. 휘발성 메모리는 데이터(예: 호스트 데이터, 오류 데이터 등)를 유지하기 위해 전력이 필요할 수 있으며, RAM(Random Access Memory), DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(synchronous dynamic random access memory), TRAM(thyristor random access memory) 등이 있다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지하여 영구 데이터를 제공할 수 있으며, NAND 플래시 메모리, NOR 플래시 메모리 및 가변 저항 메모리, 가령, PCRAM(phase change random access memory), RRAM(resistive random access memory) 및 MRAM(magnetoresistive random access memory), 가령, STT RAM(spin torque transfer random access memory)를 포함한다.
컴퓨팅 시스템은 종종 명령어를 검색 및 실행하고 실행된 명령의 결과를 적절한 위치에 저장할 수 있는 다수의 처리 리소스(예를 들어, 하나 이상의 프로세서)를 포함한다. 처리 리소스는 컴퓨팅 시스템의 동작을 위한 명령어 실행에 사용될 수 있는 산술 논리 장치(ALU) 회로, 부동 소수점 장치(FPU) 회로 및 조합 논리 블록과 같은 여러 기능 단위로 구성될 수 있다.
컴퓨팅 시스템의 다수의 구성요소는 실행을 위해 기능 유닛 회로에 명령어를 제공하는 데 관여할 수 있다. 명령어는 예를 들어 제어기 및/또는 호스트 프로세서와 같은 처리 리소스에 의해 실행될 수 있다. 더욱이, 기능 유닛 회로를 통해 하나 또는 다수의 클록 사이클에서 상이한 유형의 동작이 실행될 수 있기 때문에, 명령어 및 데이터의 중간 결과도 시퀀싱 및/또는 버퍼링될 수 있다.
도 1은 본 개시의 다수의 실시예에 따른 프레임워크, 호스트 및 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 2는 본 개시의 다수의 실시예에 따른 주 메모리를 포함하는 호스트 및 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 3a는 본 개시의 다수의 실시예에 따라 논리 블록 어드레스 범위를 하이브리드 메모리 시스템에 매핑하기 위한 예시적인 흐름도를 도시한다.
도 3b는 본 개시의 다수의 실시예들에 따라 하이브리드 메모리 시스템의 부분들을 호스트 메모리(예를 들어, 호스트와 연관된 주 메모리)에 매핑하기 위한 예시적인 흐름도(317)를 도시한다.
도 3c는 코드 페이징 동작의 성능에 응답하여 데이터를 하이브리드 메모리 시스템으로 선택적으로 전송하는 예시적인 흐름도를 도시한다.
도 4는 본 개시의 다수의 실시예에 따라 명령 트래픽을 하이브리드 메모리 시스템으로 선택적으로 전송하기 위한 예시적인 흐름도를 도시한다.
도 5a는 본 개시의 다수의 실시예에 따라 하이브리드 메모리 시스템으로 명령어를 선택적으로 전환하는 예시적인 흐름도를 도시한다.
도 5b는 본 개시의 다수의 실시예에 따라 명령 트래픽을 하이브리드 메모리 시스템으로 선택적으로 전환하기 위한 예시적인 흐름도를 도시한다.
도 5c는 본 개시의 다수의 실시예에 따라 식별된 기록 패턴을 갖는 명령 트래픽을 하이브리드 메모리 시스템으로 선택적으로 전환하기 위한 예시적인 흐름도를 도시한다.
도 5d는 식별된 명령 특성에 의해 하이브리드 메모리 시스템으로 선택적으로 전환되는 예시적인 흐름도를 도시한다.
본 개시는 하이브리드 메모리 시스템과 관련된 장치 및 방법을 포함한다. 예시적인 장치는 호스트에 결합되는 하이브리드 메모리 시스템 및 하이브리드 메모리 시스템에 결합된 제어기를 포함한다. 제어기는 명령어에 감도를 할당하고 할당된 감도에 적어도 부분적으로 기초하여 명령어가 하이브리드 메모리 시스템으로 선택적으로 전환되도록 구성될 수 있다.
개인용 컴퓨터, 랩톱, 태블릿, 패블릿, 스마트 폰, 사물 인터넷(IoT) 지원 장치 등과 같은 컴퓨팅 시스템은 컴퓨팅 시스템과 관련된 데이터 및/또는 명령어를 저장하기 위한 하나 이상의 메모리 리소스를 포함할 수 있다. 본 명세서에서 사용되는 "IoT 지원 장치"는 물리적 장치, 차량, 가전 제품, 및 전자 장치, 소프트웨어, 센서, 액추에이터 및/또는 이러한 객체를 연결하고 데이터를 교환할 수 있는 네트워크 연결을 내장한 기타 장치를 포함한다. IoT 지원 장치의 예로는 다른 사이버-물리 시스템 중에서도, 웨어러블 기술, 스마트 홈 장치, 지능형 쇼핑 시스템 및 모니터링 장치가 있다. 또한, 컴퓨팅 시스템은 컴퓨팅 시스템에서 실행되는 애플리케이션에 공통 서비스를 제공하기 위해 운영 체제와 같은 시스템 소프트웨어를 실행하기 위한 하나 이상의 처리 리소스를 포함할 수 있다. 운영 체제의 예로는 Linux®, Unix®, Windows® 등이 있다.
동작 중에, 컴퓨팅 시스템은 컴퓨팅 시스템에 기능을 제공하기 위해 펌웨어, 컴퓨터 코드, 메타 코드, 프레임워크 파일 등과 같은 명령어를 실행할 수 있다. 이들 명령어 중 적어도 일부는 다른 명령어보다 더 자주 실행될 수 있고/있거나 이들 명령어 중 적어도 일부는 컴퓨팅 시스템의 특정 동작 시간에 실행될 수 있다.
예를 들어, 컴퓨팅 시스템이 명령어의 동일한 부분을 여러 번 읽으려고 시도하면 예외(예: 장애)가 발생할 수 있다. 일부 접근법에서, 그러한 예외를 생성하는 명령어는 컴퓨팅 시스템이 명령어에 여러 번 액세스하는 데 사용하는 시간을 줄이기 위해 미리 판독 메커니즘(또는 다른 적절한 프리페치 메커니즘)을 통해 컴퓨팅 시스템과 관련된 캐시로 로드될 수 있다. 예외가 발생한(또는 예외가 발생할 가능성이 있는) 명령어를 프리페치하면 컴퓨팅 시스템이 명령어에 여러 번 액세스하는 데 사용하는 시간을 줄일 수 있지만 이러한 접근 방식에 사용되는 캐시는 일반적으로 다른 메모리 리소스만큼 빠르지 않다.
일부 실시예에서, 페이지 장애(page fault)와 같은 예외는 사용자 공간 및/또는 커널 서비스 또는 라이브러리에 배포된 프로그램(예: 애플리케이션)이 컴퓨팅 시스템 또는 컴퓨팅 시스템의 프로세서와 관련된 내부 캐시에 저장된 명령어에 액세스하려 시도할 때 발생할 수 있고, 명령어에 액세스하려는 시도가 나타날 때 컴퓨팅 시스템의 메모리(예를 들어, RAM)에 명령어가 존재하지 않는다. 이러한 예외는 명령어가 저장된 저장 장치에 액세스하여 저장 장치로부터 명령어와 연관된 메모리 페이지를 로드함으로써 해결될 수 있다. 미리 판독 작업이 컴퓨팅 시스템에 의해 수행되는 경우 이러한 예외는 저장 장치에서 명령어와 관련된 연속적인 메모리를 로드하여 해결할 수 있다.
다른 예로서, 물리적 메모리 리소스가 과도하게 사용되면, 예를 들어 가상 메모리에서 다중 프로세스가 실행될 때, 명령어가 실행 전에 물리적 메모리(예를 들어, 물리적 메모리 페이지)에 매핑될 수 있다. 그러나 명령어를 매핑할 물리적 메모리가 충분하지 않으면 물리적 메모리 리소스가 과도하게 사용되어, 컴퓨팅 시스템 성능이 저하되거나 및/또는 컴퓨팅 시스템에 대한 판독/기록 시간이 증가할 수 있다.
또 다른 예에서, 컴퓨팅 시스템이 동작할 때 특정 기록 패턴이 공통될 수 있다. 예를 들어, 특정 명령어는 반복적 및/또는 예측 가능한 기록 패턴을 나타낼 수 있다. 그러나 일부 접근 방식에서는 이러한 기록 패턴에 관한 정보가 컴퓨팅 시스템에 액세스되지 않을 수 있다. 그 결과, 일부 접근법에서, 반복 및/또는 예측 가능한 판독 또는 기록 패턴을 갖는 명령어를 반복적으로 가져오고 쓰는 데 시간 및/또는 처리 리소스가 소비될 수 있다.
대조적으로, 본 문서의 실시예는 명령어가 여러 번 액세스될 때 발생하는 예외를 처리하는 데 소비되는 시간 및/또는 처리 리소스의 양을 줄일 수 있으며, 컴퓨팅 시스템이 가상 메모리 어드레싱을 이용하는 경우에 컴퓨팅 속도 및/또는 판독/기록 시간을 증가시킬 수 있으며, 그리고/또는 반복적 및/또는 예측 가능한 판독 또는 기록 패턴을 나타내는 명령어를 반복적으로 인출함에 있어서 컴퓨팅 시스템에 의해 소비되는 시간 및/또는 처리 리소스를 완화할 수 있다.
예를 들어, 일부 실시예에서, 컴퓨팅 시스템과 관련된 하나 이상의 메모리 리소스는 하이브리드 저장 장치의 형태로 배치될 수 있다. 예를 들어, 적어도 하나의 메모리 리소스는 특정 유형의 메모리 리소스를 포함할 수 있는 반면, 적어도 하나의 다른 메모리 리소스는 상이한 특정 유형의 메모리 리소스를 포함할 수 있다. 비 제한적인 예로서, 컴퓨팅 시스템과 관련된 하나의 메모리 리소스는 3D Xpoint 비휘발성 메모리와 같은 비휘발성 메모리 리소스일 수 있고, 두 번째 메모리 리소스는 플래시 메모리(가령, 스토리지 볼륨)와 같은 상이한 비휘발성 메모리 리소스일 수 있다. 실시예는 이러한 특정 예에 제한되지 않는다; 그러나 하이브리드 저장 장치를 구성하는 메모리 리소스는 다른 유형의 비휘발성 메모리(예: ROM, PROM, EPROM, EEPROM, NVRAM 등) 및/또는 휘발성 메모리(예: RAM, DRAM, SRAM 등)의 조합을 포함할 수 있다.
일부 실시예에서, 본 명세서에서 더 상세히 설명되는 바와 같이, 특정 특성을 나타내는 것으로 결정된 명령어는 제 1 메모리 리소스 또는 제 2 메모리 리소스로부터 저장 및/또는 액세스될 수 있다. 예를 들어, 일부 실시예에서, 명령어가 저장 및/또는 제 1 메모리 리소스로부터 액세스되는 경우, 컴퓨팅 시스템에 의해 보다 낮은 대기시간이 실현될 수 있다는 결정에 응답하여 특정 명령어가 저장 및/또는 제 1 메모리 리소스로부터 액세스될 수 있다 .
본 개시의 다음의 상세한 설명에서, 본 개시의 일부를 형성하고, 개시의 하나 이상의 실시예가 어떻게 실행될 수 있는지를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 개시의 실시예를 실시할 수 있도록 충분히 상세하게 설명되며, 다른 실시예가 이용될 수 있고 본 개시의 범위를 벗어나지 않고 프로세스, 전기적 및/또는 구조적 변경이 이루어질 수 있음을 이해해야 한다. 본 명세서에서 사용되는 바와 같이, 특히 도면에서 참조 번호와 관련하여 "N"등과 같은 지정자는 그렇게 지정된 특정 특징의 개수가 포함될 수 있음을 나타낸다. 본 명세서에서 사용되는 바와 같이, "다수의" 특정 사물은 그러한 사물 중 하나 이상을 지칭한다(예를 들어, 다수의 메모리 어레이는 하나 이상의 메모리 어레이를 지칭할 수 있다). "복수"는 하나보다 많은 그러한 것을 의미한다.
본 명세서의 도면은 첫 번째 숫자 또는 숫자가 도면의 도면 번호에 대응하고 나머지 숫자가 도면의 요소 또는 구성요소를 식별하는 번호 지정 규칙을 따른다. 서로 다른 도 사이의 유사한 요소 또는 구성요소는 유사한 숫자를 사용하여 식별할 수 있다. 예를 들어, 104는 도 1에서 요소 "04"를 참조할 수 있고, 유사한 요소는 도 2에서 204로 참조될 수 있다. 이해되는 바와 같이, 본원의 다양한 실시예에 도시된 요소는 그렇게 추가, 교환 및/또는 제거될 수 있다. 본 개시 내용의 다수의 추가 실시예를 제공하기 위해. 또한, 이해되는 바와 같이, 도면에 제공된 요소의 비율 및 상대적인 규모는 본 발명의 특정 실시예를 예시하기 위한 것이며 제한적인 의미로 받아 들여서는 안된다.
도 1은 본 개시의 다수의 실시예에 따른 프레임워크(110), 호스트(102) 및 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100) 형태의 장치의 블록도이다. 본 명세서에서 사용되는 바와 같이, 프레임워크(110), 호스트(102) 및/또는 메모리 시스템(104)은 또한 "장치"로 별도로 간주될 수 있다. 일부 실시예에서, 메모리 시스템(104)은 도 2와 관련하여 설명된 바와 같은 하이브리드 메모리 시스템일 수 있다.
시스템(100)은 본 명세서에서 도 2에 도시된 바와 같이 하나 이상의 메모리 리소스를 포함하는 메모리 시스템(104)에 결합된(예를 들어, 연결된) 호스트(102)를 포함한다. 호스트(102)는 다양한 다른 유형의 호스트 중에서, 개인용 랩톱 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 스마트 폰, 메모리 카드 판독기, IoT 지원 장치와 같은 호스트 시스템일 수 있다. 호스트(102)는 시스템 마더보드 및/또는 백플레인을 포함할 수 있고, 다수의 처리 리소스(예를 들어, 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로)를 포함할 수 있다. 시스템(100)이 별도의 집적 회로를 포함할 수 있고, 또는, 호스트(102)와 메모리 시스템(104) 모두가 동일한 집적 회로 상에 있을 수 있다. 시스템(100)은 예를 들어 서버 시스템 및/또는 고성능 컴퓨팅(HPC) 시스템 및/또는 그 일부일 수 있다.
명확성을 위해, 시스템(100)은 본 개시에 특히 관련된 특징에 초점을 맞추도록 단순화되었다. 메모리 시스템(104)은 예를 들어, DRAM 어레이(예를 들어, 2T2C DRAM 어레이, 3T DRAM 어레이 등), FeRAM, SRAM 어레이, STT RAM 어레이, PCRAM 어레이, TRAM 어레이, RRAM 어레이, NAND 플래시 어레이, 3D Xpoint 메모리, NOR 플래시 어레이 및/또는 제어기, 3D Xpoint 메모리 부분 및 NAND 플래시 부분을 포함하는 스토리지 서브 시스템과 같은 하나 이상의 메모리 리소스를 포함할 수 있다.
프레임워크(110)는 시스템(100)의 동작을 용이하게 하기 위해 호스트(102)와 관련된 처리 리소스에 의해 실행 가능한 명령어를 포함할 수 있다. 예를 들어, 프레임워크는 하나 이상의 파일 시스템(예: 가상 파일 시스템, 확장 파일 시스템과 같은 파일 시스템, 등)을 제공하기 위해 판독, 기록, 열기, 닫기 등과 같은 컴퓨팅 동작을 제어하기 위해 호스트(102)의 처리 리소스에 의해 실행 가능한 명령어 및/또는 블록 장치에 대응하는 하나 이상의 명령어를 포함할 수 있다. 일부 실시예에서, 프레임워크(110)는 Android® 프레임워크와 같은 Linux® 프레임워크일 수 있다. 또한, 프레임워크(110)는 호스트(102)에서 실행되는 운영 체제가 호스트(102)에 연결된 하나 이상의 장치와 통신할 수 있도록 실행 가능한 드라이버(예를 들어, 하나 이상의 소프트웨어 드라이버)를 포함할 수 있다.
일부 실시예에서, 프레임워크(110)는 운영 체제를 나타낼 수 있다. 예를 들어, 프레임워크(110)는 관련된 Linux® 커널을 갖는 운영 체제를 나타낼 수 있다. 이러한 실시예에서, 프레임워크(110)는 "소프트웨어 스토리지 스택"으로 간주될 수 있다(예를 들어, 프레임워크(110)는 운영 체제의 소프트웨어 기반 커널 구현을 나타낼 수 있음). 따라서, 프레임워크(110)는 컴퓨팅 시스템(100)을 동작시키기 위해 실행 가능한 명령어를 저장하기 위해 그와 연관된 하나 이상의 메모리 리소스를 가질 수 있고/있거나 프레임워크(110)는 컴퓨팅 시스템(100)의 동작을 위해 프레임워크(110)에 의해 사용되는 명령어들을 저장하는 가상화된 메모리 리소스를 포함할 수 있다. 그러나 실시예는 그렇게 제한되지 않으며, 프레임워크(110)에 의해 사용되는 명령어는 메모리 시스템(104)에서, 또는 본 명세서에서 더 상세히 설명되는 바와 같이 호스트의 주 메모리에서 저장 및/또는 액세스될 수 있다.
전술한 바와 같이, 프레임워크(110)는 특정 작업 및/또는 동작을 수행하도록 구성된 다양한 구성요소를 포함할 수 있다. 예를 들어, 프레임워크(110)는 시스템 호출 구성요소(111), 가상 파일 시스템 구성요소(112), 파일 시스템 구성요소(113), 블록 장치 구성요소(114) 및/또는 드라이버 구성요소(115)를 포함할 수 있다.
시스템 호출 구성요소(111)는 처리 리소스(예를 들어, 호스트와 관련된 처리 리소스)에 의해 실행 가능한 명령어를 포함할 수 있고/있거나, 명령어가 실행될 운영 체제의 커널로부터 하나 이상의 서비스를 요청하기 위해 궁극적으로 명령어가 실행될 수 있는 하드웨어 리소스로 프로비저닝될 수 있다. 일부 실시예에서, 시스템 호출 구성요소(111)는 애플리케이션 프로그래밍 인터페이스를 통해 액세스될 수 있다. 구현될 때, 시스템 호출 구성요소(111)와 연관된 명령어는 컴퓨팅 시스템(100)의 제어를 사용자 공간에서 커널 공간으로 전달할 수 있다. 일부 실시예에서, 이러한 제어 전송은 소프트웨어 인터럽트에 응답하여 발생할 수 있다.
가상 파일 시스템 구성요소(112)는 처리 리소스(예를 들어, 호스트와 관련된 처리 리소스)에 의해 실행 가능한 명령어를 포함할 수 있고/있거나 파일 시스템 구성요소(113) 위에 추상화 계층을 제공하기 위해 명령어를 궁극적으로 실행할 수 있는 하드웨어 리소스로 프로비저닝될 수 있다. 예를 들어, 가상 파일 시스템 구성요소(112)는 로컬 및/또는 네트워크 저장 장치에 액세스하기 위해 실행될 수 있는 명령어를 포함할 수 있다. 일부 실시예에서, 가상 파일 시스템(112)은 로컬 및/또는 네트워크 저장 장치에 투명하게(예를 들어, 클라이언트 애플리케이션 상호 작용없이) 액세스하기 위해 실행될 수 있는 명령어를 포함할 수 있다. 가상 파일 시스템 구성요소(112)와 연관된 명령어는 커널과 파일 시스템 구성요소(113) 사이의 인터페이스를 지정할 수 있다.
파일 시스템 구성요소(113)는 처리 리소스(예를 들어, 호스트와 관련된 처리 리소스)에 의해 실행 가능한 명령어를 포함할 수 있고/있거나 컴퓨팅 시스템(100)과 관련된 데이터가 저장 및/또는 불러오기되는 방식을 제어하기 위해 명령어를 궁극적으로 실행할 수 있는 하드웨어 리소스로 프로비저닝될 수 있다. 예를 들어, 파일 시스템 구성요소(113)는 본 명세서에서 더 상세히 논의되는 바와 같이 메모리 시스템(104)으로부터 데이터를 저장 및/또는 불러오기 위해 실행 가능한 명령어를 포함할 수 있다.
블록 장치 구성요소(114)는 처리 리소스(예를 들어, 호스트와 관련된 처리 리소스)에 의해 실행 가능한 명령어를 저장할 수 있고/있거나 특정 메모리 위치 또는 컴퓨팅 시스템(100)과 관련된 메모리 위치를 참조하기 위해 명령어를 궁극적으로 실행할 수 있는 하드웨어 리소스로 프로비저닝될 수 있다. 일부 실시예에서, 블록 장치 구성요소(114)는 컴퓨팅 시스템(100)에 대한 버퍼된 액세스를 제공할 수 있는 하드 디스크 드라이브 및/또는 솔리드 스테이트 드라이브를 포함할 수 있다. 예를 들어, 블록 장치 구성요소(114)와 관련된 명령어는 컴퓨팅 시스템(100)과 연관된 디바이스(예를 들어, 메모리 시스템(104))에 대한 액세스를 제공하기 위해 실행될 수 있다.
드라이버 구성요소(115)는 처리 리소스(예를 들어, 호스트와 연관된 처리 리소스)에 의해 실행 가능한 명령어를 포함할 수 있고/있거나 컴퓨팅 시스템(100)과 관련된 다양한 구성요소에 대한 드라이버 지원을 제공하기 위해 명령어를 궁극적으로 실행할 수 있는 하드웨어 리소스로 프로비저닝될 수 있다. 예를 들어, 드라이버 구성요소(115)는 호스트(102), 메모리 시스템(104) 및/또는 컴퓨팅 시스템(100)과 관련된 다른 주변 장치(도시되지 않음)와 관련된 드라이버를 로드 및/또는 업데이트하기 위한 명령어를 실행하도록 구성될 수 있다.
일부 실시예에서, 프레임워크(110)의 다양한 구성요소는 상이한 액세스 패턴을 나타낼 수 있으며, 이들 중 적어도 일부는 본 명세서에서 더 상세하게 설명되는 바와 같이 예측 가능하고/하거나 반복적인 동작을 나타낼 수 있다. 따라서, 본 명세서에 설명된 실시예는 하이브리드 저장 시스템이 프레임워크(110), 호스트(102) 및/또는 메모리 시스템(104)의 다양한 구성요소와 연관된 다양한 구성요소 및/또는 액세스 패턴의 관리를 용이하게 하도록 허용할 수 있다.
프레임워크(110)는 호스트(102)를 통해 메모리 시스템(104)에 연결될 수 있다. 예를 들어, 호스트(102)는 프레임워크(110)에 저장된 명령어(예를 들어, 시스템 호출 구성요소(111), 가상 파일 시스템 구성요소(112), 파일 시스템 구성요소(113), 블록 장치 구성요소(114) 및/또는 드라이버 구성요소(115)와 연관된 명령어)를 실행하도록 구성되는 하나 이상의 처리 리소스(예를 들어, 중앙 처리 장치 및/또는 다른 컴퓨터 프로세서와 같은 컴퓨터 프로세서)를 포함할 수 있다.
도 2는 본 발명의 다수의 실시예에 따라 주 메모리(209)를 포함하는 호스트(202) 및 메모리 시스템(204)(예를 들어, 하이브리드 메모리 시스템)을 포함하는 컴퓨팅 시스템(200) 형태의 장치의 블록도이다. 주 메모리(209)는 컴퓨팅 시스템(200)의 동작과 관련된 하나 이상의 데이터 페이지를 저장하는데 사용될 수 있는 RAM, DRAM, SRAM 등과 같은 휘발성 메모리일 수 있다. 그러나 실시예는 휘발성 메모리로 제한되지 않으며, 주 메모리는 휘발성 메모리에 추가로 또는 그 대신에 비휘발성 메모리를 포함할 수 있다.
도 2에 도시된 바와 같이, 하이브리드 메모리 시스템(204)은 제어기(206)에 결합되는 하나 이상의 메모리 리소스(208-1,..., 208-N)를 포함할 수 있다. 도 2에 도시된 바와 같이, 제어기(206)는 각각의 통신 채널(210-1,..., 210-N)을 통해 메모리 리소스(208-1,..., 208-N)에 통신 가능하게 결합된다. 통신 채널(210-1,..., 210-N)은 데이터 및/또는 명령를 제어기(206)와 메모리 리소스(208-1,..., 208-N) 사이에서 전달할 수 있게 한다. 다양한 실시예에서, 제어기(206)는 명령어를 프레임워크(가령, 도 1에 도시되는 프레임워크(110)) 및/또는 호스트(202)로부터 실행하고 및/또는 메모리 시스템(204)에 액세스하게 할 책임이 있다.
제어기(206)는 상태 머신, 시퀀서, 또는 일부 다른 유형의 제어기일 수 있고, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이, 등의 형태로 하드웨어 및/또는 펌웨어(가령, 마이크로코드 명령어)를 포함할 수 있다. 제어기(206)는 컴퓨팅 시스템(200)의 동작을 용이하게 하기 위해 실행되는 명령어의 액세스 패턴을 제어할 수 있다. 여기에서 사용되는 바와 같이, 호스트(202), 메모리 시스템(204), 제어기(206), 및/또는 메모리 리소스(208-1,..., 208-N)는 별도로 "장치"로 간주될 수도 있다.
일부 실시예에서, 메모리 시스템(204)은 하이브리드 저장 시스템일 수 있고, 하나 이상의 메모리 리소스(208-1,..., 208-N)을 포함할 수 있다. 메모리 리소스(208-1,..., 208-N)는 상이한 종류의 메모리 리소스일 수 있다. 예를 들어, 메모리 리소스(208-1)는 3D Xpoint 메모리 리소스, 강유전성 RAM(FeRAM) 등과 같은 새로운 비휘발성 메모리 리소스일 수 있는 반면, 메모리 리소스(208-N)은 NAND 메모리 리소스일 수 있다. 실시예는 이러한 특정 예들에 제한되지 않으며, 메모리 리소스(208-1) 및/또는 메모리 리소스(208-N)는 다른 적절한 유형의 메모리 리소스를 포함할 수 있다.
컴퓨팅 시스템(200)의 동작 동안, 메모리 시스템(204)은 코드 페이징을 위해 이용될 수 있다. 본 명세서에서 사용되는 바와 같이, "코드 페이징"은 컴퓨팅 시스템(200)이 호스트(202)의 주 메모리(209)(예를 들어, 시스템 메모리)에 의해 사용하기 위해 메모리 시스템(204)으로부터 데이터를 저장하고 불러오는 메모리 관리 방식이다. 일부 실시예에서, 호스트(202)의 주 메모리(209)에 저장될 수 있는 코드 페이징을 용이하게 하기 위해 실행 가능한 명령어는 컴퓨팅 시스템(200)의 동작의 일부로서 실행될 수 있다.
그러나, 컴퓨팅 시스템(200)의 동작 동안, 주 메모리(209)의 동일한 부분에 액세스하기 위한 다수의 명령어(예를 들어, 주 메모리(209)로부터 데이터를 저장 및/또는 불러오기 위한 명령어)가 실행될 수 있다. 이것은 컴퓨팅 시스템(200)에 의해 생성되는 예외(예를 들어, 장애)로 이어질 수 있다. 일부 실시예에서, 프로그램은 컴퓨팅 시스템(200)의 주 메모리(209)에 매핑되지 않은 데이터 및/또는 명령어에 액세스할 수 있다. 그 경우에, 데이터 및/또는 명령어는 메모리 시스템(204)으로부터 액세스될 수 있고, 그에 따라 데이터 및/또는 명령어가 주 메모리(209)로부터 액세스할 수 없는 결과로 발생하는 페이지 장애를 처리할 수 있다. 일부 접근법에서, 이 예외는 주 메모리(209) 이외의 메모리 위치에 대한 판독 및/또는 기록 액세스를 제공함으로써 처리(예를 들어, 치유)될 수 있다. 예를 들어, 일부 접근 방식에서 미리 판독 메커니즘을 이용하여 예외를 경험한 명령어 세트를 프리페치할 수 있고, 후속 실행을 위해 컴퓨팅 시스템(200) 및/또는 호스트(202)와 관련된 캐시에 이를 저장할 수 있다.
이러한 예외는 컴퓨팅 시스템(200)의 동작에서 매우 흔할 수 있다. 예를 들어, 멀티 프로세싱 컴퓨팅 환경에서, 매우 많은 양의 - 일부 예에서는 하루에 수백 기가 바이트까지 - 판독 및/또는 기록 데이터를 생성할 수 있다. 일부 실시예에서, 예외가 생성될 수 있는 판독/기록 동작에서 소비되는 처리 리소스 및/또는 시간을 완화하기 위해, 메모리 리소스(가령, 메모리 리소스(208-1))의 예외의 임계 수치를 생성하는 명령어를 저장하여 판독/대기시간을 감소시키고, 미리판독 메커니즘의 사용시 발생하는 명령어 세트의 프리페치에서 소비되는 처리 리소스의 양을 감소시키는 것이 유익하다.
예를 들어, 일부 실시예에서, 제어기(206)는 특정 데이터 세트에 대한 판독 또는 기록 액세스 요청에 대응하는 예외가 발생할 것(또는 발생)을 결정하고, 컴퓨팅 시스템(200)에 의한 후속 실행 및/또는 불러오기를 위해 특정 데이터 세트를 메모리 리소스(208-1)에 기록할 수 있도록 구성될수 있다. 일부 실시예에서, 특정 데이터 세트는 메모리 리소스(208-1)의 파티션 또는 LBA 블록에 저장될 수 있다. 파티션 및/또는 LBA 블록은 도 3a, 3b, 3c와 연계하여 더욱 상세하게 설명되는 바와 같이, 특정 데이터 이외의 다른 데이터(예: 판독 또는 기록 액세스 요청에 대응하지 않는 데이터)가 파티션 및/또는 LBA 블록에 저장되지 않도록 할당(예: 예약)될 수 있다.
상술한 바와 같이 호스트의 주 메모리(209)는 휘발성 메모리 리소스(예: RAM, DRAM, SRAM 등), 비휘발성 메모리 리소스(예: HDD, 플래시 메모리, 강유전성 RAM 등) 또는 이들의 조합과 같은 물리적 메모리 리소스일 수 있다. 그 결과, 주 메모리(209)의 물리적 특성으로 인해 주 메모리(209)에 저장될 수 있는 데이터의 양이 제한될 수 있다. 예를 들어, 주 메모리(209)는 데이터가 저장될 수 있는 한정된 양의 공간을 포함할 수 있다.
따라서, 일부 동작 조건 하에서, 호스트(202)가 주 메모리(209)에 너무 많은 데이터를 저장하려고 시도할 때 주 메모리(209)가 가득 차게될 수 있고/있거나 성능이 저하될 수 있다. 메모리 공간의 양이 주 메모리(209)에 의해 정의된 물리적 메모리 공간의 실제 양보다 크다는 착각을 생성하기 위해 메모리 리소스(예를 들어, 주 메모리(209))을 추상화하는 가상 메모리 기술을 이용하는 시스템에서 더욱 악화될 수 있다.
이러한 구현에서, 가상 어드레스 공간은 논리적 - 물리적 어드레싱 기술을 사용하여 (예를 들어, 호스트(202)와 관련된 메모리 관리 유닛과 같은 제어 회로에 의해) 관리될 수 있다. 예를 들어, 가상 어드레스는 프로세스가 궁극적으로 실행될 수 있는 주 메모리(209)의 물리적 위치(예를 들어, 하나 이상의 메모리 페이지 등)에 대응할 수 있는 대응하는 물리적 어드레스에 할당될 수 있다. 그러나, 다수의 가상 메모리 어드레스가 동일한 물리적 메모리 어드레스에 매핑될 때, 컴퓨팅 시스템(200)은 성능 저하를 경험할 수 있고/있거나 중단될 수 있다(예를 들어, 프로세스가 종료될 수 있고/있거나 예상치 않게 거동할 수 있다).
예를 들어, 가상 메모리 기술을 활용하는 컴퓨팅 구현에서, 하나 이상의 프로세스는 주 메모리(209)의 물리적 메모리 위치에 매핑될 수 있는 하나 이상의 가상 메모리 위치(예: 메모리 페이지, 메모리 블록 등)를 참조할 수 있다. 또한, 주 메모리(209)가 가득 차면, 프로세스를 실행하는 데 사용할 수 있는 물리적 메모리 리소스가 불충분하기 때문에 가상 메모리 페이지를 호출할 수 없다.
일부 접근법에서, 이것은 주 메모리(209)의 물리적 메모리 리소스를 비우기 위해 주 메모리(209)의 데이터 페이지를 스왑 공간으로 전송함으로써 완화될 수 있다. 예를 들어, 일부 접근법에서, 운영 체제의 커널은 익명 페이지에 할당된 주 메모리(209)의 물리적 메모리 리소스를 비우기 위한 메커니즘을 포함할 수 있다. 여기에서 사용되는 "익명 페이지"는 관련 파일이 없는 메모리 페이지이다. 예를 들어 익명 페이지는 파일로 지원되지 않는 메모리 페이지일 수 있다(예: 파일이 지정되지 않은 메모리 페이지). 그러나 익명 페이지가 파일과 관련이 없을 수 있지만 익명 페이지는 프로세스 및/또는 프로세스 작업 세트와 관련될 수 있다. 프로세스 및 프로세스 작업 세트의 비 제한적인 예는 힙(heaps), 스택(stacks), 상수(constants) 등과 같은 데이터 구조를 포함한다. 여기에서 사용된 바와 같이, 프로세스 작업 세트는 호스트의 주 메모리와 같은 호스트의 물리적 메모리에 저장되는 호스트의 가상 어드레스 공간 내 데이터의 하나 이상의 페이지를 포함한다. 예를 들어 프로세스 작업 세트에는 호스트의 주 메모리에서 볼 수 있는 메모리 페이지가 포함된다(예: 호스트가 최근에 참조한 페이지).
이러한 접근법에서, 페이지의 관련 콘텐츠(예를 들어, 익명 페이지)는 일시적으로 스왑 공간 및/또는 스왑 장치로 전송(예를 들어, 복사)될 수 있다. 페이지가 이후에 참조되는 경우, 페이지는 주 메모리(209)로 다시 전송(예를 들어, 복사)될 수 있다. 그러나, 페이지를 주 메모리(209)에서 스왑 공간 또는 스왑 장치로 전송하고 그 후 스왑 공간 또는 스왑 장치로부터 다시 주 메모리(209)로 페이지를 전송하는 것과 관련된 시간 및 에너지 소비로 인해, 전통적인 스와핑 기술은, 특히 그러한 기술이 반복적으로 사용되는 구현에서, 바람직하지 않을 수 있다. 본 명세서에서 사용되는 바와 같이, 프로세스 작업 세트는 호스트의 주 메모리와 같은 호스트의 물리적 메모리에 저장되는 호스트의 가상 어드레스 공간에 있는 하나 이상의 데이터 페이지를 포함한다. 예를 들어, 프로세스 작업 세트에는 호스트의 주 메모리에서 볼 수 있는 메모리 페이지(예: 호스트가 최근에 참조한 페이지)가 포함된다.
메모리의 페이지에 대응하는 데이터와 같은 데이터의 선택적 전송을 용이하게 하기 위해, 일부 실시예에서, 하이브리드 메모리 디바이스(204)의 일부는 스왑 장치로서 동작하도록 구성될 수 있다(예를 들어, 하이브리드 메모리 시스템(204)의 일부에서 메모리의 페이지를 선택적 전송하도록 구성될 수 있음). 예를 들어, 메모리 리소스(208-1)의 일부는 메모리의 페이지가 메모리 리소스(208-1)의 일부로 선택적으로 전송되도록 스왑 장치로서 동작하도록 구성될 수 있다. 일부 실시예에서, 메모리 리소스(208-1)의 하나 이상의 메모리 페이지 또는 메모리 리소스(208-1)와 연관된 하나 이상의 논리 블록 어드레스는 도 4와 관련하여 더 상세히 설명되는 바와 같이 스왑 동작을 수행하도록 할당될 수 있다. 하이브리드 메모리 시스템(204)이 제조될 때(예를 들어, 하이브리드 메모리 시스템(204)이 최종 사용자에게 판매를 위해 제공되기 전에) 하나 이상의 메모리 페이지 및/또는 하나 이상의 논리 블록 어드레스가 할당될 수 있고, 또는, 하이브리드 메모리 시스템(204)이 초기화될 때(예를 들어, 컴퓨팅 시스템(200)이 부팅될 때) 하나 이상의 메모리 페이지 및/또는 하나 이상의 논리 블록 어드레스가 할당될 수 있다. 그러나 실시예는 그렇게 제한되지 않으며, 일부 실시예에서, 하나 이상의 메모리 페이지 및/또는 하나 이상의 논리 블록 어드레스는 하이브리드 메모리 시스템(204)이 컴퓨팅 시스템(200)의 런타임 동안에 동적으로 할당될 수 있다.
일부 실시예에서, 스왑 장치로서 할당되는 하이브리드 메모리 시스템(204)의 부분은 하이브리드 메모리 시스템(200)의 다른 부분보다 더 낮은 액세스 시간을 갖는 하이브리드 메모리 시스템(200)의 부분일 수 있다. 예를 들어 메모리 리소스(208-1)는 메모리 리소스(208-1)가 3D Xpoint 메모리 리소스와 같은 신흥형 메모리 리소스이기 때문에 메모리 리소스(208-N)보다 액세스 시간이 더 짧을 수 있다. 또한, 일부 실시예에서, 스왑 장치로서 할당된 하이브리드 메모리 시스템(204)의 부분은 하이브리드 메모리 시스템(200)의 다른 부분보다 더 높은 내구성을 갖는 하이브리드 메모리 시스템(200)의 부분일 수 있다.
일부 실시예에서, 호스트(202)에 의해 실행되는 프로세스 및/또는 애플리케이션은 NoSQL, SQLite, 클라우드 기반 DBMS 또는 다른 적절한 DBMS와 같은 데이터베이스 관리 시스템(DBMS)에 의존할 수 있다. DBMS는 최종 사용자가 컴퓨팅 시스템(200)과 관련된 데이터베이스에서 데이터를 생성, 판독, 업데이트 및/또는 삭제할 수 있도록할 수 있다. 일부 실시예에서, DMBS는 저널링 정책에 따라 작동할 수 있으며, 이는 데이터 일관성 및/또는 시스템 내구성을 실현할 수 있게 한다. DBMS에는 관련 명령이 있을 수 있다. 일부 실시예에서, DBMS와 연관된 명령은 DBMS 명령에 할당된 감도에 적어도 부분적으로 기초하여 하이브리드 메모리 시스템의 일부로 선택적으로 전환될 수 있다.
저널링 시스템(journaling system)은 파일 시스템(예를 들어, 여기에서 도 1에 도시된 파일 시스템(113))에 아직 커밋되지 않은 변경 사항을 추적하는 저널링 파일 시스템일 수 있다. 컴퓨팅 시스템(200)의 동작 동안, 저널링 시스템은 메모리 시스템(204) 및/또는 주 메모리(209)에 압력을 가할 수 있는 다수의 랜덤 기록을 유발할 수 있다. 예를 들어, 저널링 시스템은 컴퓨팅 시스템(200) 및/또는 주 메모리(209)의 메모리를 과도하게 이용함으로써 컴퓨팅 시스템(200) 및/또는 주 메모리를 압박할 수 있는 다수의 동기식 랜덤 및 빈번한 기록을 유발할 수 있다.
이러한 랜덤하고 빈번한 기록은, 특히 플래시 기반 메모리 시스템에서, (예를 들어, 기록 명령 실행 동안) 포 그라운드에서 수행되는 유지관리 작업으로 인해긴 대기시간을 초래할 수 있다. 이러한 대기시간은 플래시 기반 메모리 시스템이 용량 또는 그 근처에서 작동할 때 및/또는 플래시 기반 메모리 시스템이 장기간 동안 작동하고 있을 때와 같은 특정 조건 하에서 플래시 기반 메모리 시스템에서 더욱 악화될 수 있다. 대조적으로, 하이브리드 메모리 시스템(204)은 시간이 지남에 따라 및/또는 하이브리드 메모리 시스템(204)이 용량에서 또는 거의 용량 근처에서 동작할 때 플래시 기반 메모리 시스템보다 낮은 대기시간을 유도할 수 있다.
플래시 기반 메모리 시스템과 관련된 결함을 완화하기 위해, 일부 실시예에서는 제어기(206)가 DBMS에 의해 처리되는 명령 트래픽의 감도를 결정하고, 결정된 트래픽 감도에 기초하여 특정 유형의 명령 트래픽에 표시자를 적용할 수 있게 한다. 명령 트래픽의 감도는 특정 명령의 실행 빈도, 명령의 크기, 명령 실행시 소모하는 리소스의 양(예: 메모리 리소스 및/또는 처리 리소스), 명령 실행 속도, 또는 다른 적절한 감도 특성과 같은 명령 트래픽의 특성에 기초할 수 있다. 일부 실시예에서, 감도는 명령의 실행과 관련된 기록 대기시간에 기초할 수 있다. 이 예에서, 명령은 명령의 실행과 관련된 기록 대기시간이 임계 기록 대기시간을 초과한다는 결정에 응답하여 하이브리드 메모리 시스템(204)으로 선택적으로 전환될 수 있다.
제어기(206)가 표시자(indicator)를 명령에 추가하면, 명령은 컴퓨팅 시스템(200)의 적절한 메모리 위치로 선택적으로 전환될 수 있다. 예를 들어, 반복적이고, 무작위 적이며, 그리고/또는 자주 실행되는 명령 트래픽(예: 컴퓨팅 시스템(200)의 동작 동안 저널링 시스템에 의해 발생하는 동기식의 작은, 빈번하고 랜덤한 기록)은 선택적으로 하이브리드 메모리 디바이스(204)로 전환될 수 있다. 일부 실시예에서, 명령 트래픽은 표시자에 기초하여 하이브리드 메모리 시스템(204)과 관련된 복수의 메모리 리소스(208-1,..., 208-N)의 특정 메모리 리소스(예를 들어, 메모리 리소스(208-1))으로 선택적으로 전환될 수 있다.
명령 트래픽의 특정 부분을 하이브리드 메모리 시스템(204)으로 선택적으로 전환함으로써, 명령 트래픽이 선택적으로 전환되지 않는 접근 방식 또는 명령 트래픽이 플래시 기반 메모리 시스템에 의해 처리되는 접근 방식에 비해 더 낮은 대기시간 및/또는 성능 증가가 실현될 수 있다.
일부 실시예에서, 컴퓨팅 시스템(200)의 파일 시스템(예를 들어, 도 1에 예시된 가상 파일 시스템(112), 도 1에 예시된 파일 시스템(113))은 플래시 친화적 파일 시스템(F2FS)과 같은 플래시 파일 시스템 또는 Ext4와 같은 저널링 파일 시스템일 수 있지만 파일 시스템은 이러한 특정 예제로 제한되지 않다. 파일 시스템은 파일이 업데이트될 때 업데이트되는 특정 메타데이터 업데이트에 의해 그 구조를 유지할 수 있다. 예를 들어, 컴퓨팅 시스템(200)의 파일 시스템은 테이블, 트리, 데이터 어레이 등과 같은 데이터 구조를 포함할 수 있으며, 파일 시스템의 구조를 유지하기 위해 이와 관련된 파일이 업데이트될 때 업데이트될 수 있다.
파일 시스템이 업데이트될 때(예를 들어, 파일 업데이트에 응답하여 메타데이터 업데이트가 파일 시스템에 적용될 때), 업데이트는 작은 랜덤 기록로 수행된다. 전술한 바와 같이, 이러한 유형의 작은 랜덤 기록은 메모리 시스템(204) 및/또는 주 메모리(209)를 압박할 수 있다. 이러한 랜덤 기록은 유지 관리 작업이 (예: 기록 명령 실행 중) 포그라운드에서 수행됨으로 인해 특히 플래시 기반 메모리 시스템에서, 긴 대기시간을 유발할 수 있다. 이러한 대기시간은 플래시 기반 메모리 시스템이 용량 또는 그 근처에서 동작할 때 및/또는 플래시 기반 메모리 시스템이 장기간 동안 동작할 때와 같은 특정 조건 하에서 플래시 기반 메모리 시스템에서 더욱 악화될 수 있다. 대조적으로, 하이브리드 메모리 시스템(204)은 시간이 지남에 따라 및/또는 하이브리드 메모리 시스템(204)이 용량에서 또는 거의 용량으로 동작할 때 플래시 기반 메모리 시스템보다 더 낮은 대기시간을 유도할 수 있다.
예를 들어, 일부 실시예에서, 파일 시스템 업데이트(예를 들어, 파일 시스템 메타데이터 업데이트)와 관련된 명령 트래픽은 컴퓨팅 시스템(200)의 적절한 메모리 위치로 선택적으로 전환될 수 있다. 일부 실시예에서, 컴퓨팅 시스템(200)의 적절한 메모리 위치는 메모리 리소스(208-1)과 같은 하이브리드 메모리 시스템(204)의 일부일 수 있다. 일부 실시예에서, 제어기(206)는 파일 시스템 업데이트를 하이브리드 메모리 시스템(204)의 일부로 선택적으로 전환하도록 구성될 수 있다.
파일 시스템 기록을 하이브리드 메모리 시스템(204)으로 선택적으로 전환함으로써, 파일 시스템 기록이 선택적으로 전환되지 않는 방식 또는 파일 시스템 기록이 플래시 기반 메모리 시스템에 의해 처리되는 방식에 비해 더 낮은 대기시간 및/또는 성능 증가를 실현할 수 있다.
컴퓨팅 시스템(200)의 동작 동안, 특정 파일 시스템(예를 들어, 도 1에 예시된 가상 파일 시스템(112), 도 1에 예시된 파일 시스템(113))은 반복적 및/또는 예측 가능한 기록 패턴을 나타낼 수 있다. 예를 들어, F2FS 체크 포인트 및/또는 저널링 시스템은 예측 가능한 방식으로 특정 명령 및/또는 데이터를 반복적으로 쓸 수 있다. 이러한 명령 및/또는 데이터는 위에서 설명한대로 작은 랜덤 기록으로 기록될 수 있다.
전술한 바와 같이, 이러한 작은 랜덤 기록은, 특히 플래시 기반 메모리 시스템에서, (예를 들어, 기록 명령 실행 동안) 포그라운드에서 수행되는 유지 보수 동작으로 인해, 긴 대기시간을 초래할 수 있다. 이러한 대기시간은 플래시 기반 메모리 시스템이 용량 또는 그 근처에서 작동할 때 및/또는 플래시 기반 메모리 시스템이 장기간 동안 작동될 때와 같은 특정 조건 하에서 플래시 기반 메모리 시스템에서 더욱 악화될 수 있다. 대조적으로, 하이브리드 메모리 시스템(204)은 시간이 지남에 따라 및/또는 하이브리드 메모리 시스템(204)이 용량에서 또는 거의 용량으로 동작할 때 플래시 기반 메모리 시스템보다 더 낮은 대기시간을 유도할 수 있다.
플래시 기반 메모리 시스템과 관련된 결함을 완화하기 위해 일부 실시예에서는 하이브리드 메모리 시스템(204)의 일부에 대한 작은 랜덤 기록의 선택적 전환이 가능하다. 예를 들어, 컴퓨팅 시스템(200)(또는 그 일부)은 기록 작업(예: 작은 랜덤 기록)의 소스를 결정하도록 구성될 수 있다. 일부 실시예에서, 컴퓨팅 시스템(200)과 연관된 파일 시스템 및/또는 컴퓨팅 시스템(200)과 연관된 드라이버는 메타데이터 기록 및/또는 데이터 구조에 힌트(예를 들어, 표시자)를 연관시키도록 구성될 수 있다. 힌트는 기록 명령으로 전송될 수 있고, 힌트를 포함하는 기록 명령어는 하이브리드 메모리 시스템(204)으로 전송될 수 있다. 일부 실시예에서, 기록 명령 및 이와 관련된 힌트가 하이브리드 메모리 시스템(204)으로 전송된 후, 제어기(206)는 액세스 시간을 감소시키고/하거나 주 메모리(209)에 대한 내구성을 회피하기 위해 하이브리드 메모리 시스템(204)으로 이러한 파일 시스템 기록(또는 메타데이터 기록)을 전환하도록 추가로 구성되어 컴퓨팅 시스템(200)의 성능을 증가시킬 수 있다.
일부 실시예에서, 제어기(206)는 파일 시스템 기록을 자신으로 전환된 명령 트래픽을 처리하는 데 가장 적합한 하이브리드 메모리 시스템(204)의 부분으로 선택적으로 전환하도록 구성될 수 있다. 예를 들어, 특정 파일 시스템은 특정 유형의 메모리에서 가장 효율적으로 처리할 수 있는 특정 명령 트래픽 패턴을 나타낼 수 있다. 비 제한적인 예로서, F2FS에서, LFS(Log-structured File System) 기록은 결정 가능한 액세스 패턴으로 실행될 수 있으며, 여기서 데이터는 NAND 메모리에 적합할 수 있는 매핑되지 않은 LBA에 순차적으로 기록된다. 반면 SSR(Slack Space Recycle) 기록은 매핑된 LBA에 데이터를 무작위로 기록하는 결정 가능한 액세스 패턴으로 실행될 수 있으며, 이는 3D Xpoint 메모리와 같은 낮은 대기시간 메모리에 적합할 수 있다.
따라서, 일부 실시예에서, 제어기(206)는 결정 가능한 기록 패턴과 연관된 명령 트래픽을, 특정 유형의 파일 시스템 기록을 처리하는 데 가장 적합한 하이브리드 메모리 시스템(204)의 일부로 선택적으로 전환할 수 있다. 예를 들어, 제어기(206)는 LFS 기록을 NAND 메모리일 수 있는 메모리 리소스(208-N)로 전환하도록 구성될 수 있고/있거나 제어기(206)는 SSR 기록을 여기에 설명된 바와 같이 낮은 대기시간의 신규 메모리 리소스일 수 있는 메모리 리소스(208-1)로 전환하도록 구성될 수 있다.
일부 접근법에서, 액세스 의미(access semantic)에 대응하는 정보를 컴퓨팅 시스템(200)과 연관된 메모리 디바이스로 전송하는 것이 불가능하다. 예를 들어, 일부 접근법에서, 기록 액세스 요청이 사용자 데이터 또는 파일 시스템 메타데이터와 연관되는지 여부에 대응하는 정보는 컴퓨팅 시스템(200)과 관련된 메모리 디바이스로 전송되지 않다. 따라서, 일부 접근법에서, 컴퓨팅 시스템(200)과 관련된 메모리 디바이스는 페이징 프로세스를 실행하는 저장 위치에 특정 LBA 또는 LBA 범위가 저장되는 경우 특정 LBA 또는 LBA 범위가 판독 또는 기록 명령에 의해 주자 액세스될 것인지 여부에 관한 어떤 지식도 제공받지 못할 수 있다.
대조적으로, 본 명세서의 실시예에서는 기록 액세스 요청이 예를 들어 사용자 데이터 또는 파일 시스템 메타데이터와 연관되는지 여부를 결정하고/하거나 특정 LBA 또는 LBA 범위가 판독 또는 기록 명령에 의해 빈번하게 액세스되는지 여부를 제어기(206)가 결정할 수 있어서, 특정 속성을 갖는 판독 또는 기록 명령을 하이브리드 메모리 시스템(204)으로 선택적으로 전환할 수 있다.
일부 실시예에서, 하이브리드 메모리 시스템(204)은 비휘발성 메모리 익스프레스(NVMe) 사양에 따라 동작하도록 구성될 수 있다. 예를 들어, 하이브리드 메모리 시스템(204)의 메모리 리소스(208-1,..., 208-N) 중 하나 이상은 NVMe 사양에 따라 동작하도록 구성될 수 있다. 이해되는 바와 같이, NVMe 사양은 아래 표 1에 도시된 바와 같이 하이브리드 메모리 시스템(204)과 같은 비휘발성 메모리 디바이스에 특정 기능을 제공한다.
특징 설명 NVMe 사양 버전
LBA 범위 유형 명시된 이름공간의 일부인 LBA 범위의 유형 및 속성을 표시 1.2.1
데이터 세트 관리 기능 특정 양의LBA와 관련된 명령 및/또는 데이터 트래픽에 대한 정보를 전송 1.2.1
지시문(가령, 스트림) 명시된 논리 블록이 관련 데이터의 그룹의 일부임을 제어기에 표시하도록 호스트를 구현 1.3
일부 실시예에서, 표 1에 설명된 기능은 하이브리드 메모리 시스템(204)과 컴퓨팅 시스템(200)의 최적화된 통합을 용이하게할 수 있다. 예를 들어, NVMe 사양의 LBA 범위 유형 기능은 도 1에 예시된 가상 파일 시스템(112) 및/또는 파일 시스템(113)과 같은 지정된 파일 시스템(예를 들어, 네임스페이스)의 일부인 LBA 범위의 유형 및/또는 속성을 나타 내기 위해 사용될 수 있다. 일부 실시예에서, LBA 범위의 유형은 RAID, 페이지 파일, 스왑 파일을 포함할 수 있고, 및/또는, 공급 업체별 LBA 범위 유형일 수 있다. 또한, LBA 범위의 속성은 LBA 범위를 덮어 쓸 수 있는지 여부 및/또는 LBA 범위가 컴퓨팅 시스템(200)의 운영 체제 및/또는 BIOS에 표시되는지 여부를 나타내는 데 사용되는 의미(semantics)를 포함할 수 있다.
표 1에 도시된 데이터 세트 관리 기능은 특정 수량의 LBA에 속하는 명령 및/또는 데이터 트래픽 패턴과 관련된 정보를 전송하는 데 활용될 수 있다. 예를 들어, 데이터 세트 관리 기능은 특정 LBA 수량에 속하는 데이터 및/또는 명령 트래픽 패턴의 명령 액세스 크기, 기록 준비, 순차 기록 범위, 순차 판독 범위, 액세스 대기시간, 액세스 빈도 등과 관련된 기능을 포함할 수 있다. 일부 실시예에서, 데이터 세트 관리 기능은 LBA 범위, 판독 명령 및/또는 기록 명령에 기초하여 동작할 수 있다.
지시문은 스트림 지시문을 포함할 수 있으며, 이는 호스트(202)가 기록 또는 판독 명령의 특정 논리 블록이 연관된 데이터의 단일 그룹의 일부라는 표시를 제어기(206)에 제공할 수 있게할 수 있다. 또한, 지시문은 호스트(202)와 하이브리드 메모리 시스템(204) 사이의 메타데이터 교환을 가능하게할 수 있다. 일부 실시예에서, 지시문은 하이브리드 메모리 시스템(204)에 대한 데이터의 동시 기록을 용이하게할 수 있으며, 이는 마찬가지로 동시에 기록되는 데이터의 논리 블록의 동시적 삭제를 용이하게할 수 있다. 이것은 가비지 수집 동작을 최소화할 수 있고/있거나 하이브리드 메모리 시스템(204)에 데이터를 읽거나 기록하기 위해 지시문이 사용되지 않는 방식에 비해 기록 증폭 감소를 유도할 수 있다.
도 3a는 본 개시의 다수의 실시예에 따라 논리 블록 어드레스 범위를 하이브리드 메모리 시스템에 매핑하기 위한 예시적인 흐름도를 도시한다. 블록 312에서, 컴퓨팅 시스템(예를 들어, 도 2에 예시된 컴퓨팅 시스템(200))은 컴퓨팅 시스템의 특정 동작 조건 하에 사용하기 위해 호스트(예를 들어, 도 2에 예시된 호스트(200))의, 도 2에 도시되는 주 메모리(209)와 같은 주 메모리의 일부(예를 들어, 파티션)를 할당하도록 구성될 수 있다. 일부 실시예에서, 컴퓨팅 시스템은 페이징 프로세스 및/또는 예외(예를 들어, 장애)의 처리를 위해 호스트의 주 메모리의 일부를 할당하도록 구성될 수 있다. 일부 실시예에서, 이러한 제어기(예를 들어, 도 2에 예시된 제어기(206)) 또는 호스트와 관련된 제어기는 컴퓨팅 시스템의 동작 중 나타나는 예외의 처리 및/또는 페이징 프로세스를 위해 주 메모리의 일부를 할당하도록 구성될 수 있다.
예를 들어, 컴퓨팅 시스템은 컴퓨팅 시스템의 동작 중 나타나는 예외의 처리 및/또는 페이징 프로세스를 위해 메모리의 일 페이지, 메모리 페이지의 일부, 하나 이상의 메모리 블록, 및/또는 주 메모리의 다수의 메모리 저장 위치를 할당하도록 구성될 수 있다. 일부 실시예에서, 컴퓨팅 시스템의 동작 동안 발생하는 예외 처리 및/또는 페이징 프로세스를 위해 할당되는 주 메모리의 부분은 주 메모리의 논리 파티션일 수 있다.
블록 314에서, 컴퓨팅 시스템은 컴퓨팅 시스템의 작동 중에 발생하는 예외 처리 및/또는 페이징 프로세스를 위해 할당된 주 메모리의 일부를 하이브리드 메모리 시스템과 관련된 LBA 범위에 매핑하도록 구성될 수 있다. 예를 들어, 주 메모리의 할당된 부분과 관련된 논리 어드레스는 특정 LBA 범위에 매핑될 수 있다. 일부 실시예에서, LBA 범위는 페이징 프로세스 및/또는 예외 처리와 관련된 데이터를 저장하는 위치(예를 들어, 하이브리드 메모리 시스템의 논리적 저장 위치)를 지정하는 논리적 어드레스의 연속적인 시퀀스를 포함할 수 있다. 일부 실시예에서, 이러한 제어기(예를 들어, 도 2에 예시된 제어기(206)) 또는 호스트와 연관된 제어기는 하이브리드 저장 시스템의 일부를, 실행시 주 메모리로 페이징될 수 있는 특정 LBA 범위에 매핑하도록 구성될 수 있다.
블록 316에서, 컴퓨팅 시스템은 주 메모리의 LBA 범위를 하이브리드 메모리 시스템의 일부(예를 들어, 도 2에 도시된 하이브리드 메모리 시스템(204))에 매핑하도록 구성될 수 있다. 주 메모리와 연관된 LBA 범위가 매핑되는 하이브리드 메모리 시스템의 부분은 하이브리드 메모리 시스템의 페이지(또는 페이지의 일부), 하위 섹션, 하나 이상의 LBA, 다수의 블록 등을 포함할 수 있다.
일부 실시예에서, 제어기(예를 들어, 도 2에 예시된 제어기(206)) 또는 호스트와 관련된 제어기는 주 메모리와 관련된 LBA 범위를 하이브리드 메모리 시스템의 일부에 매핑하도록 구성될 수 있다. 예를 들어, 제어기는 페이징 프로세스 및 예외 처리에 사용되는 메모리의 물리적 위치(예를 들어, 물리적 어드레스)에 해당하는 매핑된 LBA 범위를 저장하기 위해 하이브리드 메모리 시스템의 일부를 할당하도록 구성될 수 있다.
일부 실시예에서, 하이브리드 메모리 시스템에 매핑되는 LBA 범위는 하이브리드 메모리 시스템의 신흥 비휘발성 메모리 리소스인 메모리 리소스(예를 들어, 메모리 리소스(208-1, .., 208-N)) 중 하나에 매핑될 수 있다. 예를 들어, LBA 범위는 하이브리드 메모리 시스템의 다른 메모리 리소스보다 낮은 판독(또는 기록) 대기시간을 나타내도록 구성된 하이브리드 메모리 시스템의 메모리 리소스에 매핑될 수 있다. LBA 범위를 하이브리드 메모리 시스템의 다른 메모리 리소스보다 낮은 기록 또는 판독 대기시간을 나타내는 하이브리드 메모리 시스템의 메모리 리소스에 선택적으로 매핑함으로써, 컴퓨팅 시스템의 성능이 도 2와 관련하여 위에서 설명한 바와 같이 향상될 수 있다.
도 3b는 본 개시의 다수의 실시예들에 따라 하이브리드 메모리 시스템의 부분들을 호스트 메모리(예를 들어, 호스트와 연관된 주 메모리)에 매핑하기 위한 예시적인 흐름도(317)를 도시한다. 일부 실시예에서, 컴퓨팅 장치의 운영 체제는 코드 파일(예를 들어, 애플리케이션 실행 파일, 커널 동적 라이브러리 등)에 대응하는 정보를 결정할 수 있다. 코드 파일은 컴퓨팅 장치의 하이브리드 메모리 시스템의 전용 LBA 범위에 저장될 수 있다. 하이브리드 메모리 시스템에 저장된 코드 파일과 관련된 명령어를 참조하여 페이지 장애가 발생하면, 하이브리드 메모리 시스템의 LBA 범위를 읽을 수 있다. 일부 실시예에서, 코드 파일을 저장하는 하이브리드 메모리 시스템의 LBA 범위는 하이브리드 메모리 시스템의 낮은 대기시간 부분에 매핑되어, 코드 페이징 동작을 용이하게할 수 있다.
블록 318에서, 컴퓨팅 시스템은 페이징 프로세스의 일부로서 코드 판독 콘텐츠를 결정하도록 구성될 수 있다. 예를 들어, 컴퓨팅 시스템은 컴퓨팅 시스템에 의해 실행되는 페이징 프로세스의 일부로서 주 메모리의 코드 판독 콘텐츠를 결정하도록 구성될 수 있다. 실시예는 페이징 프로세스의 일부로서 주 메모리의 코드 판독 콘텐츠를 결정하는 것으로 제한되지 않지만, 일부 실시예에서, 컴퓨팅 시스템은 여기에서도 2와 관련하여 더 자세히 설명된 바와 같이, 미리 판독 동작이 실행되고 있음(또는 실행될 예정)을 결정하도록 구성될 수 있다. 본 명세서에서 사용되는 바와 같이, "코드 판독 콘텐츠"는 컴퓨팅 시스템의 판독 동작의 일부로서 사용되는 파일 또는 명령과 관련된 데이터이다.
예를 들어, 제어기(예를 들어, 도 2에 예시된 제어기(206)) 또는 호스트와 관련된 제어기는 페이징 프로세스의 일부분으로 판독되는(또는 판독될) 파일 또는 명령과 관련된 데이터를 인식하도록 구성될 수 있고, 또는 제어기(예를 들어, 도 2에 예시된 제어기(206)), 또는 호스트와 관련된 제어기가, 도 2와 연계하여 더 상세하게 설명되는 바와 같이, 컴퓨팅 시스템에 의해 실행되는 미리판독 동작을 인식하도록 구성될 수 있다.
블록(320)에서, 컴퓨팅 시스템은 결정된 코드 판독 콘텐츠를 포함하는 호스트 메모리(예를 들어, 도 2에 도시된 주 메모리(209))의 일부를 하이브리드 메모리 시스템에 매핑하도록 구성될 수 있다. 일부 실시예에서, 결정된 코드 판독 콘텐츠를 포함하는 호스트 메모리의 부분은 결정된 코드 판독 콘텐츠에 대응하는 데이터를 저장하도록(예를 들어, 제어기에 의해) 할당된 하이브리드 메모리 시스템의 할당된 부분에 매핑될 수 있다. 예를 들어, 하이브리드 메모리 시스템의 일부는 결정된 코드 판독 콘텐츠에 대응하는 LBA 범위를 저장하도록 할당될 수 있다.
일부 실시예에서, 코드 판독 콘텐츠에 대응하는 LBA 범위를 저장하도록 할당되는 하이브리드 메모리 시스템의 부분은 하이브리드 메모리 시스템의 새로운 비휘발성 메모리 리소스인 메모리 리소스(예를 들어, 메모리 리소스(208-1, .., 208-N)) 중 하나에 매핑될 수 있다. 예를 들어, LBA 범위는 하이브리드 메모리 시스템의 다른 메모리 리소스보다 낮은 판독(또는 기록) 대기시간을 나타내도록 구성된 하이브리드 메모리 시스템의 메모리 리소스에 매핑될 수 있다. LBA 범위를 하이브리드 메모리 시스템의 다른 메모리 리소스보다 낮은 기록 또는 판독 대기시간을 나타내는 하이브리드 메모리 시스템의 메모리 리소스에 선택적으로 매핑함으로써, 컴퓨팅 시스템의 성능은 도 2와 관련하여 위에서 설명한 바와 같이 향상될 수 있다.
도 3c는 코드 페이징 동작의 수행에 응답하여 데이터를 하이브리드 메모리 시스템으로 선택적으로 전송하기 위한 예시적인 흐름도(313)를 도시한다. 블록 315에서, 하이브리드 메모리 시스템의 일부가 코드 페이징 동작에서 사용하기 위해 할당될 수 있다. 코드 페이징 동작에 사용하기 위해 할당된 하이브리드 메모리 시스템의 부분은 컴퓨팅 시스템의 초기화(예를 들어, 시작, 재부팅 등)시 할당될 수 있거나, 컴퓨팅 시스템의 동작 동안(예를 들어, 컴퓨팅 시스템의 런타임 동안) 동적으로 할당될 수 있으며, 또는 하이브리드 메모리 시스템의 제조 동안(예를 들어, 최종 사용자가 컴퓨팅 시스템 또는 하이브리드 메모리 시스템을 구매하기 전에) 할당될 수 있다.
하이브리드 메모리 시스템의 할당된 부분은 하나 이상의 메모리 페이지, 하나 이상의 LBA, 및/또는 하나 이상의 메모리 블록일 수 있다. 예를 들어, 제어기는 코드 페이징 동작에 사용하기 위해 하이브리드 메모리 시스템의 특정 LBA 범위를 할당하도록 구성될 수 있다. 일부 실시예에서, 코드 페이징 동작에 사용하기 위해 할당된 하이브리드 메모리 시스템의 부분은 하이브리드 메모리 시스템의 메모리 리소스 중 가장 낮은 액세스 시간을 나타내는 메모리 리소스(예를 들어, 도 1에 예시된 메모리 리소스(208-1, 208-N, 등))의 일부일 수 있다. 예를 들어, 코드 페이징 동작에 사용하기 위해 할당된 하이브리드 메모리 시스템의 일부는 도 2와 연계하여 앞서 설명한 바와 같이 새로운 하이브리드 메모리 시스템의 메모리 리소스(예: 도 2에 예시된 메모리 리소스(208-1))의 일부일 수 있다(예를 들어, 하이브리드 메모리 시스템의 다른 부분보다 더 낮은 액세스 시간 및/또는 더 높은 내구성을 특징으로 하는 하이브리드 메모리 시스템의 일부분).
블록 319에서, 코드 페이징 동작은 호스트가 장애 예외를 경험했다는 결정에 응답하여 수행될 수 있다. 예를 들어, 제어기는 장애 예외가 발생했는지 확인하도록 구성될 수 있다. 도 2와 관련하여 위에서 설명한 것처럼 호스트 또는 컴퓨팅 시스템에서 장애 예외가 발생할 수 있다.
블록 321에서, 데이터는 코드 페이징 동작의 수행에 응답하여 하이브리드 메모리 시스템의 할당된 부분으로부터 호스트로 선택적으로 전송될 수 있다. 예를 들어, 일부 실시예에서, 제어기는 특정 데이터 세트에 대한 판독 또는 기록 액세스 요청에 대응하는 예외가 발생할 것(또는 발생하였음)을 결정하고, 컴퓨팅 시스템에 의한 후속 실행 및/또는 불러오기를 위해 메모리 리소스(예를 들어, 호스트의 주 메모리)에 특정 데이터 세트를 기록할 수 있다. 일부 실시예에서, 특정 데이터 세트는 메모리 리소스의 파티션 또는 LBA 블록에 저장될 수 있다. 파티션 및/또는 LBA 블록은 특정 데이터 이외의 데이터(예: 판독 또는 기록 액세스 요청에 대응하지 않는 데이터)가 파티션 및/또는 LBA 블록에 저장되지 않도록 할당(예: 예약)될 수 있다. 일부 실시예에서, 데이터는 하이브리드 메모리 시스템과 관련된 특정 논리 블록 어드레스 범위로 선택적으로 전송될 수 있다.
일부 실시예에서, 제어기는 코드 페이징 동작의 일부로서 호스트에 의해 판독된 코드의 내용을 결정하도록 구성될 수 있다. 호스트에 의해 판독된 코드의 내용이 결정되면, 제어기는 호스트의 메모리(예를 들어, 호스트의 주 메모리)의 일부를 하이브리드 메모리 시스템의 할당된 부분에 선택적으로 매핑하도록 구성될 수 있다. 일부 실시예들에서, 제어기는 호스트가 전송된 데이터를 참조하고 있다고 제어기가 결정함에 응답하여 데이터가 하이브리드 메모리 시스템의 할당된 부분으로부터 호스트로 다시 전송되게 하도록 추가로 구성될 수 있다.
도 4는 본 개시의 다수의 실시예에 따라 데이터를 하이브리드 메모리 시스템으로 선택적으로 전송하기 위한 예시적인 흐름도(423)를 도시한다. 블록 422에서, 하이브리드 메모리 시스템의 일부가 할당될 수 있다. 예를 들어, 하이브리드 메모리 시스템(예를 들어, 2에 도시된 하이브리드 메모리 시스템(204))의 일부는 전술한 바와 같이 스왑 공간 및/또는 스왑 장치로서 사용하기 위해 할당될 수 있다.
예를 들어, 하이브리드 메모리 시스템과 연관된 제어기(예를 들어, 도 2에 도시된 제어기(206))는 스왑 공간 및/또는 스왑 장치로서 사용하기 위해 하이브리드 메모리 시스템의 일부를 할당하도록 구성될 수 있다. 스왑 공간 및/또는 스왑 장치로 사용하기 위해 할당된 하이브리드 메모리 시스템의 일부는 컴퓨팅 시스템의 초기화시(예: 시작, 재부팅 등) 할당되거나, 컴퓨팅 시스템의 동작 중(예: 컴퓨팅 시스템의 런타임 동안) 동적으로 할당되거나, 또는 하이브리드 메모리 시스템의 제조 중(예: 최종 사용자가 컴퓨팅 시스템 또는 하이브리드 메모리 시스템을 구매하기 전에) 할당될 수 있다.
하이브리드 메모리 시스템의 할당된 부분은 하나 이상의 메모리 페이지, 하나 이상의 LBA, 및/또는 하나 이상의 메모리 블록일 수 있다. 예를 들어, 제어기는 스왑 공간 및/또는 스왑 장치로 사용하기 위해 하이브리드 메모리 시스템의 특정 LBA 범위를 할당하도록 구성될 수 있다. 일부 실시예에서, 스왑 공간 및/또는 스왑 장치로서 사용하기 위해 할당된 하이브리드 메모리 시스템의 부분은 하이브리드 메모리 시스템의 메모리 리소스 중 가장 낮은 액세스 시간을 나타내는 메모리 리소스(예를 들어, 도 2에 도시된 메모리 리소스(208-1, 208-N 등))의 일부일 수 있다. 예를 들어, 스왑 공간 및/또는 스왑 장치로 사용하기 위해 할당된 하이브리드 메모리 시스템의 일부는 도 2와 관련하여 앞서 설명한 새로운 메모리 시스템인 하이브리드 메모리 시스템의 메모리 리소스(예: 도 2에 예시된 메모리 리소스(208-1))의 일부일 수 있다.
다수의 가상 어드레스가 동일한 물리적 메모리 어드레스에 매핑될 때, 컴퓨팅 시스템은 성능 저하를 경험하고/하거나 중단될 수 있다(예를 들어, 프로세스가 종료될 수 있고/있거나 예기치 않게 동작할 수 있음). 하이브리드 메모리 시스템의 일부를 스왑 공간 및/또는 스왑 장치로 할당함으로써 호스트와 하이브리드 메모리 시스템간에 데이터 페이지를 전송하여, 아래의 블록(424)과 관련하여 더 상세히 설명되는 것과 동일한 물리적 메모리 어드레스에 매핑된 여러 가상 어드레스에 대한 동시 호출과 관련된 성능 저하를 완화할 수 있다.
블록 424에서, 컴퓨팅 시스템 및/또는 제어기는 데이터가 하이브리드 메모리 시스템의 할당된 부분으로 선택적으로 전송되도록 구성될 수 있다. 예를 들어, 익명 페이지와 같은 데이터 페이지는 호스트(예를 들어, 호스트의 주 메모리)에서 하이브리드 메모리 시스템의 할당된 부분으로 전송될 수 있다. 실시예는 데이터의 페이지를 전송하는 것으로 제한되지 않으며, 일부 실시예에서, 하이브리드 메모리 시스템의 특정 LBA 범위에 대응하는 데이터 및/또는 데이터의 블록은 하이브리드 메모리 시스템에서 호스트로 선택적으로 전송될 수 있다. 전술한 바와 같이, 데이터는 스왑 동작의 일부로서 전송될 수 있고, 따라서 데이터가 이후에 호스트에 의해 참조되는 경우 하이브리드 메모리 시스템으로부터 호스트로 다시 전송될 수 있다.
데이터(예를 들어, 데이터 페이지, 데이터 블록, LBA 범위 등)를 선택적으로 전송함으로써 컴퓨팅 시스템의 개선된 성능이 실현될 수 있다. 예를 들어, 새로운 유형의 메모리 리소스인 메모리 리소스에 대응하는 하이브리드 메모리 시스템의 일부를 할당하고 후속적으로 스왑 동작의 일부로서 호스트와 하이브리드 메모리 시스템 사이에 데이터를 선택적으로 전송함으로써, 메모리 내구성이 증가될 수 있고, 및/또는 스왑 동작 수행과 관련된 시간량이 하이브리드 메모리 시스템을 사용하지 않는 방식 및/또는 하나 이상의 메모리 리소스가 신흥 유형의 메모리 리소스가 아닌 방식에 비해 감소될 수 있다.
도 5a는 본 개시의 다수의 실시예에 따라 하이브리드 메모리 시스템으로 명령을 선택적으로 전환하기 위한 예시적인 흐름도(525)를 도시한다. 블록 526에서, 감도가 명령에 할당될 수 있다. 일부 실시예에서, 감도는 제어기(예를 들어, 도 2에 예시된 제어기(206))에 의해 명령에 할당될 수 있다. 도 2와 관련하여 위에서 설명한 바와 같이, 제어기는 특정 명령의 실행 빈도, 명령의 크기, 명령 실행이 소비하는 리소스의 양, 명령 실행 속도, 또는 다른 적절한 감도 특성과 같은 명령 트래픽의 특성에 기반한 명령의 감도를 결정하도록 구성될 수 있다.
일부 실시예에서, 제어기는 명령의 결정된 감도를 나타 내기 위해 명령에 표시자를 부착하도록 구성될 수 있다. 예를 들어, 제어기는 명령의 결정된 감도에 기초하여 명령어에 표시를 덧붙일 수 있다. 표시자는 명령에 추가된 특정 값을 갖는 플래그 또는 숫자일 수 있다. 그러나, 실시예는 그렇게 제한되지 않고, 표시자는 명령에 추가된 일련의 숫자, 또는 명령을 하이브리드 메모리 시스템으로 전환하는지 여부를 제어기로 하여금 결정할 수 있게 하는 다른 적절한 표시자일 수 있다.
블록(528)에서, 명령은 하이브리드 메모리 시스템으로 선택적으로 전환될 수 있다. 일부 실시예에서, 명령은 명령의 할당된 감도에 기초하여 선택적으로 하이브리드 메모리 시스템으로 전환될 수 있다. 예를 들어, 제어기는 명령어에 할당된 감도를 결정하고 명령에 할당된 감도에 기초하여 하이브리드 메모리 시스템으로 명령을 선택적으로 전환하도록 구성될 수 있다. 제어기가 명령에 표시자를 추가하면 명령은 컴퓨팅 시스템의 적절한 메모리 위치로 선택적으로 전환될 수 있다. 예를 들어, 반복적, 무작위 적 및/또는 자주 실행되는 명령 트래픽(예: 컴퓨팅 시스템의 작동 중에 저널링 시스템에 의해 발생하는 동기식 작고 빈번한 무작위 기록)은 선택적으로 하이브리드 메모리 디바이스로 전환될 수 있다.
예로서, 제어기는 명령이 거기에 부착된 할당된 감도에 대응하는 특정 표시자를 가짐을 결정하도록 구성될 수 있다. 예를 들어, 제어기는 명령에 추가된 표시자가 감도가 높은 명령(예: 반복적, 무작위적 및/또는 자주 실행되는 명령)에 해당한다고 판단하고 그 명령어가 하이브리드 메모리 시스템으로 선택적으로 전환되도록할 수 있다. 대조적으로, 제어기는 명령어에 추가된 표시자가 감도가 낮은 명령(예: 반복적이거나 무작위 적이거나 자주 실행되지 않는 명령)에 해당한다고 판단할 수 있으며, 부착된 저 감도를 지닌 표시자를 갖는 명령과 관련하여 아무 조치도 취하지 않을 수 있다(예: 명령어가 하이브리드 메모리 시스템으로 선택적으로 전환되지 않게 할 수 있다).
도 2와 관련하여 상술한 바와 같이, 명령 트래픽의 특정 부분을 하이브리드 메모리 시스템으로 선택적으로 전환함으로써, 명령 트래픽이 선택적으로 전환디ㅗ지 않는 방식 또는 명령 트래픽이 플래시 기반 메모리 시스템에 의해 처리되는 방식에 비해 대기시간 감소 및/또는 성능 향상이 실현될 수 있다.
도 5b는 본 개시의 다수의 실시예에 따라 명령 트래픽을 하이브리드 메모리 시스템으로 선택적으로 전환하기 위한 예시적인 흐름도(529)를 도시한다. 블록 530에서, 파일 시스템 메타데이터가 식별될 수 있다. 일부 실시예에서, 파일 시스템 메타데이터는 제어기(예를 들어, 도 2에 예시된 제어기(206))에 의해 식별될 수 있다. 예를 들어, 도 2와 관련하여 위에서 설명한 바와 같이, 제어기는 파일 시스템에 적용된 메타데이터 업데이트에 해당하는 명령 트래픽과 같은 여러 개의 작은 랜덤 기록을 특징으로 하는 명령 트래픽을 식별하도록 구성될 수 있다.
일부 실시예에서, 제어기는 메타데이터에 대응하는 데이터 구조를 식별함으로써 메타데이터 업데이트에 대응하는 명령 트래픽을 식별하도록 구성될 수 있다. 예를 들어, 메타데이터가 구성되는 데이터 구조의 유형에 따라 메타데이터를 식별할 수 있다. 메타데이터가 구성되는 데이터 구조의 유형에 해당하는 데이터 구조를 식별함으로써 제어기는 메타데이터에 해당하는 명령 트래픽을 식별할 수 있다. 제어기가 메타데이터에 해당하는 명령 트래픽을 식별하면 메타데이터 업데이트가 파일 시스템에 적용되는 시기를 식별하도록 제어기가 추가로 구성될 수 있다. 일부 실시예에서, 제어기는 파일 시스템과 관련된 메타데이터가 업데이트되고 파일 시스템에 적용된다는 결정에 기초하여, 파일 시스템이 업데이트되었음(또는 되고 있음)을 식별하도록 구성될 수 있다.
제어기는 파일 업데이트에 응답하여 파일 시스템에 적용되는 메타데이터 업데이트와 같은 파일 시스템 업데이트 트래픽에 대응하는 명령 트래픽에 대응하는 표시자를 식별하도록 구성될 수 있다. 표시자는 명령 트래픽에 부착된 특정 값을 갖는 플래그 또는 숫자일 수 있다. 그러나, 실시예는 그렇게 제한되지 않고, 표시자는 명령 트래픽에 부착된 일련의 숫자이거나, 명령 트래픽이 하이브리드 메모리 시스템으로 전환되는지 여부를 제어기로 하여금 결정할 수 있게 하는 다른 적절한 표시자일 수 있다.
블록 532에서, 식별된 파일 시스템 메타데이터와 관련된 명령 트래픽은 하이브리드 메모리 시스템의 일부로 선택적으로 전환될 수 있다. 일부 실시예에서, 제어기는 식별된 파일 시스템 메타데이터와 연관된 명령 트래픽이 하이브리드 메모리 시스템의 일부로 선택적으로 전환되도록 구성될 수 있다. 제어기는 식별된 파일 시스템 메타데이터와 연관된 명령 트래픽이 파일 업데이트에 응답하여 파일 시스템에 적용되는 메타데이터 업데이트와 같은 파일 시스템 업데이트 트래픽에 대응하는 명령 트래픽에 추가된 표시자에 기초하여 하이브리드 메모리 시스템의 일부로 선택적으로 전환되도록 구성될 수 있다.
여기서, 도 4의 설명과 유사하게, 하이브리드 메모리 시스템의 일부는 컴퓨팅 시스템의 제조시 또는 컴퓨팅 동작 중에, 식별된 파일 시스템 메타데이터와 관련된 명령 트래픽을 선택적으로 전환하는 데 사용하기 위해 할당될 수 있다. 일부 실시예에서, 하이브리드 메모리 시스템의 일부는 하나 이상의 메모리 페이지, 하나 이상의 LBA, 및/또는 하나 이상의 메모리 블록일 수 있다. 예를 들어, 제어기는 식별된 파일 시스템 메타데이터와 연관된 명령 트래픽이 전환될 하이브리드 메모리 시스템의 특정 LBA 범위를 할당하도록 구성될 수 있다. 일부 실시예에서, 하이브리드 메모리 시스템의 일부는 하이브리드 메모리 시스템의 메모리 리소스 중 가장 낮은 액세스 시간을 나타내는 메모리 리소스(예를 들어, 도 1에 예시된 메모리 리소스(208-1, 208-N) 등)의 일부일 수 있다. 따라서, 일부 실시예에서, 파일 시스템 메타데이터 업데이트에 대응하는 명령 트래픽이 하이브리드 메모리 시스템으로 선택적으로 전환되지 않는 일부 방식과 비교하여 컴퓨팅 시스템의 대기시간이 감소될 수 있다.
도 5c는 본 개시의 다수의 실시예에 따라 식별된 기록 패턴을 갖는 명령 트래픽을 하이브리드 메모리 시스템으로 선택적으로 전환하기 위한 예시적인 흐름도(533)를 도시한다. 블록 534에서, 반복 및/또는 예측 가능한 기록 패턴이 식별될 수 있다. 특정 명령 트래픽에 대응하는 예측 가능한 및/또는 반복적인 기록 패턴은 제어기(예를 들어, 도 2에 예시된 제어기(206))에 의해 식별될 수 있다.
예를 들어, 컴퓨팅 시스템의 동작 동안, 특정 파일 시스템(예를 들어, 도 1에 예시된 가상 파일 시스템(112), 도 1에 예시된 파일 시스템(113))은 반복 및/또는 예측 가능한 기록 패턴을 나타낼 수 있다. 예를 들어, F2FS 체크 포인트 및/또는 저널링 시스템은 예측 가능한 방식으로 특정 명령 및/또는 데이터를 반복적으로 기록할 수 있다. 이러한 명령 및/또는 데이터는 위에서 설명한대로 작은 랜덤 기록로 기록될 수 있다.
일부 실시예에서, 제어기는 컴퓨팅 장치의 커널과 메모리(예를 들어, 주 메모리 및/또는 하이브리드 메모리 시스템) 사이에 보다 긴밀한 결합을 제공함으로써 이러한 반복적 및/또는 예측 가능한 기록 패턴을 식별하도록 구성될 수 있다. 예를 들어, 일부 실시예에서, 제어기는 컴퓨팅 시스템의 하나 이상의 의미론적 부분에 액세스할 수 있으며, 이는 컴퓨팅 시스템의 동작 동안 발생하는 반복적 및/또는 예측 가능한 기록 패턴을 제어기로 하여금 식별하게할 수 있다.
반복 및/또는 예측 가능한 기록 패턴에 대응하는 명령 트래픽이 제어기에 의해 식별되면, 제어기는 예측 가능한 및/또는 반복적인 기록 패턴을 나타내는 명령 트래픽에 대한 표시자를 식별하도록 구성될 수 있다. 표시자는 명령 트래픽에 추가된 특정 값을 갖는 플래그 또는 숫자일 수 있다. 그러나, 실시예는 그렇게 제한되지 않고, 표시자는 명령 트래픽에 추가된 일련의 숫자일 수 있고, 또는 제어기가 명령 트래픽이 하이브리드 메모리 시스템으로 전환될 것인지 여부를 결정할 수 있게 하는 다른 적절한 표시자일 수 있다.
블록 536에서, 반복 및/또는 예측 가능한 기록 패턴과 관련된 명령 트래픽은 하이브리드 메모리 시스템 또는 그 일부로 선택적으로 전환될 수 있다. 전술한 바와 같이, 하이브리드 메모리 시스템의 일부는 컴퓨팅 시스템의 제조시 또는 컴퓨팅 시스템의 동작 동안, 반복 및/또는 예측 가능한 기록 패턴과 관련된 명령 트래픽을 선택적으로 전환하는데 사용하기 위해 할당될 수 있다. 일부 실시예에서, 하이브리드 메모리 시스템의 일부는 하나 이상의 메모리 페이지, 하나 이상의 LBA, 및/또는 하나 이상의 메모리 블록일 수 있다. 예를 들어, 제어기는 반복 및/또는 예측 가능한 기록 패턴과 연관된 명령 트래픽이 전환될 하이브리드 메모리 시스템의 특정 LBA 범위를 할당하도록 구성될 수 있다. 일부 실시예에서, 하이브리드 메모리 시스템의 일부는 하이브리드 메모리 시스템의 메모리 리소스 중 가장 낮은 액세스 시간을 나타내는 메모리 리소스(예를 들어, 도 1에 예시된 메모리 리소스(208-1, 208-N) 등)의 일부일 수 있다. 따라서, 일부 실시예에서, 반복 및/또는 예측 가능한 기록 패턴을 나타내는 명령 트래픽이 하이브리드 메모리 시스템으로 선택적으로 전환되지 않는 일부 접근법과 비교하여 컴퓨팅 시스템의 대기시간이 감소될 수 있다.
도 5d는 식별된 명령 특성에 의해 하이브리드 메모리 시스템으로 선택적으로 전환되는 예시적인 흐름도(540)를 도시한다. 블록 542에서, 특정 유형의 명령 트래픽이 식별될 수 있다. 예를 들어, 파일 시스템 메타데이터 업데이트에 대응하는 명령 트래픽 및/또는 반복적 및/또는 예측 가능한 기록 패턴을 나타내는 명령 트래픽이 도 5b 및 5c와 관련하여 전술한 바와 같이 식별될 수 있다. 일부 실시예에서, 제어기는 특정 유형의 명령 트래픽을 식별하도록 구성될 수 있다.
블록 544에서, 명령 트래픽은 하이브리드 메모리 시스템으로 선택적으로 전환되도록 유발될 수 있다. 일부 실시예에서, 명령 트래픽은 하이브리드 메모리 시스템에 결합 가능한 호스트에 의해 실행되는 명령 트래픽에 대응할 수 있다. 제어기는 본 명세서에 설명된 바와 같이 하이브리드 메모리 시스템의 일부로 명령 트래픽을 선택적으로 전환하도록 구성될 수 있다. 예를 들어, 하이브리드 메모리 시스템의 일부는 메모리 리소스(예를 들어, 도 1에 예시된 메모리 리소스(208-1, 208-N) 등)의 일부일 수 있으며, 이는 하이브리드 메모리 시스템의 메모리 리소스 중 가장 낮은 액세스 시간을 나타낸다. 따라서, 일부 실시예에서, 특정 유형의 명령 트래픽이 하이브리드 메모리 시스템으로 선택적으로 전환되지 않는 일부 접근법과 비교하여 컴퓨팅 시스템의 대기시간이 감소될 수 있다.
특정 실시예가 본 명세서에 예시되고 설명되었지만, 당업자는 동일한 결과를 달성하기 위해 계산된 배열이 도시된 특정 실시예를 대체할 수 있다는 것을 이해할 것이다. 본 개시는 본 개시의 하나 이상의 실시예의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것으로 이해되어야 한다. 전술한 실시예 및 본 명세서에서 구체적으로 설명되지 않은 다른 실시예의 조합은 상기 설명을 검토할 때 당업자에게 명백할 것이다. 본 개시의 하나 이상의 실시예의 범위는 상기 구조 및 방법이 사용되는 다른 애플리케이션을 포함한다. 따라서, 본 개시 내용의 하나 이상의 실시예의 범위는 그러한 청구 범위가 자격이 부여되는 전체 범위의 등가물과 함께 첨부된 청구 범위를 참조하여 결정되어야 한다.
전술한 발명의 설명에서, 일부 특징은 개시 내용을 간소화하기 위해 단일 실시예에서 함께 그룹화된다. 이 개시 방법은 본 개시의 개시된 실시예가 각 청구항에서 명시적으로 언급된 것보다 더 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 다음의 청구 범위가 반영하는 바와 같이, 발명의 주제는 하나의 개시된 실시예의 모든 특징보다 적다. 따라서, 다음의 청구 범위는 상세한 설명에 통합되며, 각 청구 범위는 별도의 실시예로서 그 자체로 존재한다.

Claims (23)

  1. 장치로서,
    제1 비휘발성 메모리(NVM) 리소스, 제2 NVM 리소스 및 제어기를 포함하는 하이브리드 메모리 시스템을 포함하고, 상기 제어기는,
    상기 하이브리드 메모리 시스템과 분리되어 있고 상기 하이브리드 메모리 시스템에 결합가능한 호스트의 주 메모리와 연관된 명령에 감도를 할당하고 - 상기 감도는 상기 명령의 실행 빈도 및 상기 명령의 실행과 연관된 기록 대기시간(write latency)에 기초함 -;
    상기 명령이 특정 유형의 파일 시스템 기록(file system write)에 대응한다고 결정하고 - 상기 특정 유형의 파일 시스템 기록은 그와 연관된 결정 가능한 기록 패턴을 가짐 - ;
    상기 할당된 감도에 적어도 부분적으로 기초하여 상기 명령을 핸들링할 때 더 낮은 기록 대기시간을 나타내도록 구성되는 제1 NVM 또는 제2 NVM 중 하나에 상기 호스트의 상기 주 메모리와 연관된 논리 블록 어드레스(LBA)를 매핑함으로써 상기 명령이 상기 하이브리드 메모리 시스템의 상기 제1 NVM 또는 상기 제2 NVM으로 선택적으로 전환(divert)되게 하도록 구성되는 - 상기 명령은 상기 특정 유형의 파일 시스템 기록에 대응하고, 상기 특정 유형의 파일 시스템 기록은 그와 연관된 상기 결정 가능한 기록 패턴을 가짐 -, 장치.
  2. 제 1 항에 있어서, 상기 감도는 상기 명령의 상기 실행 빈도, 상기 명령의 크기, 또는 상기 명령의 실행시 소비되는 리소스의 양 중 적어도 하나에 적어도 부분적으로 기초하고,
    상기 호스트는 상기 명령의 상기 할당된 감도에 기초하여 상기 명령에 표시자를 할당하도록 구성되는, 장치.
  3. 제 1 항 내지 제 2 항 중 어느 한 항에 있어서, 상기 제어기는 또한,
    상기 명령의 실행과 관련된 상기 기록 대기시간을 결정하도록 구성되고,
    상기 명령의 상기 실행과 관련된 상기 기록 대기시간이 특정 기록 대기시간 임계치를 초과한다는 결정에 응답하여, 상기 명령을 선택적으로 상기 하이브리드 메모리 시스템으로 전환하도록 구성되며, 그리고,
    상기 하이브리드 메모리 시스템의 다른 부분보다 낮은 액세스 대기시간을 특징으로 하는 상기 하이브리드 메모리 시스템의 일부로 상기 명령을 선택적으로 전환하도록 구성되는, 장치.
  4. 장치로서,
    제1 비휘발성 메모리(NVM) 리소스, 제2 NVM 리소스 및 제어기를 포함하는 하이브리드 메모리 시스템을 포함하고, 상기 제어기는,
    상기 하이브리드 메모리 시스템과 분리되어 있고 상기 하이브리드 메모리 시스템에 결합가능한 호스트의 주 메모리와 연관되고 상기 호스트에 의해 실행되는 특정의 유형의 명령 트래픽을 식별하고;
    명령에 감도를 할당하고 - 상기 감도는 상기 명령의 실행 빈도 및 상기 명령의 실행과 연관된 기록 대기시간에 기초함 -;
    상기 명령이 특정 유형의 파일 시스템 기록에 대응한다고 결정하고 - 상기 특정 유형의 파일 시스템 기록은 그와 연관된 결정 가능한 기록 패턴을 가짐 - ;
    상기 식별된 특성에 적어도 부분적으로 기초하여 상기 명령을 핸들링할 때 더 낮은 기록 대기시간을 나타내도록 구성되는 제1 NVM 또는 제2 NVM 중 하나에 상기 호스트의 상기 주 메모리와 연관된 논리 블록 주소(LBA)을 매핑함으로써 상기 하이브리드 메모리 시스템의 상기 제1 NVM 또는 상기 제2 NVM으로 상기 명령 트래픽이 선택적으로 전환되도록 구성되는 - 상기 명령은 상기 특정 유형의 파일 시스템 기록에 대응하고, 상기 특정 유형의 파일 시스템 기록은 그와 연관된 상기 결정 가능한 패턴을 가짐 - , 장치.
  5. 제 4 항에 있어서, 상기 특정 유형의 명령 트래픽은 파일 시스템 메타데이터 업데이트에 대응하는 명령 트래픽이고,
    상기 특정 유형의 명령 트래픽은 반복적인 기록 패턴 및 예측 가능한 기록 패턴 중 적어도 하나를 나타내는 명령 트래픽이고,
    상기 특정 유형의 명령 트래픽은 파일 시스템 메타데이터에 대응하는 명령 트래픽을 포함하는, 장치.
  6. 제 4 항에 있어서, 상기 제어기는 또한,
    상기 명령 트래픽의 실행 빈도 및 상기 명령 트래픽의 크기 중 적어도 하나에 기초하여 상기 특정 유형의 명령 트래픽을 식별하도록 구성되고,
    상기 명령 트래픽의 실행에 소비된 리소스의 양에 기초하여 상기 특정 유형의 명령 트래픽을 식별하도록 구성되는, 장치.
  7. 제 4 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 하이브리드 메모리 시스템은 제 1 부분 및 제 2 부분을 포함하고, 상기 제 1 부분은 NAND 부분이고 상기 제 2 부분은 신규한 유형의 메모리 부분인 장치.
  8. 방법으로서,
    하이브리드 메모리 시스템과 분리되어 있고 상기 하이브리드 메모리 시스템에 결합가능한 호스트의 주 메모리와 연관된 명령에 감도를 할당하는 단계 - 상기 감도는 상기 명령의 실행 빈도 및 상기 명령의 실행과 연관된 기록 대기시간에 기초함 -;
    상기 명령이 특정 유형의 파일 시스템 기록에 대응한다고 결정하는 단계 - 상기 특정 유형의 파일 시스템 기록은 그와 연관된 결정 가능한 기록 패턴을 가짐 - ; 및
    상기 할당된 감도에 적어도 부분적으로 기초하여 상기 명령을 핸들링할 때 더 낮은 기록 대기시간을 나타내도록 구성되는 플래시 메모리 디바이스 또는 상변화 랜덤 액세스 메모리 디바이스에 상기 호스트의 상기 주 메모리와 연관된 논리 블록 어드레스(LBA)를 매핑함으로써 상기 명령을 상기 하이브리드 메모리 시스템의 상기 플래시 메모리 디바이스 또는 상기 상변화 랜덤 액세스 메모리 디바이스로 선택적으로 전환하는 단계 - 상기 명령은 상기 특정 유형의 파일 시스템 기록에 대응하고, 상기 특정 유형의 파일 시스템 기록은 그와 연관된 상기 결정 가능한 기록 패턴을 가짐 - 를 포함하는, 방법.
  9. 제 8 항에 있어서, 상기 명령을 실행하는데 소비된 리소스의 양, 상기 명령의 크기, 상기 명령의 상기 실행 빈도 또는 이들의 조합에 기초하여 상기 명령에 대한 상기 감도를 할당하는 단계를 더 포함하는, 방법.
  10. 제 8 항 내지 제 9 항 중 어느 한 항에 있어서, 상기 하이브리드 메모리 시스템의 다른 부분보다 낮은 액세스 대기시간을 특징으로 하는 상기 하이브리드 메모리 시스템의 일부에 상기 명령을 선택적으로 전환하는 단계를 더 포함하며, 상기 명령은 데이터베이스 관리 시스템 명령을 포함하는, 방법.
  11. 제 8 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 명령이 복수의 랜덤 기록 동작을 특징으로 한다고 결정하는 단계; 및
    상기 명령이 복수의 랜덤 기록 동작을 특징으로 한다고 결정함에 적어도 부분적으로 기초하여, 상기 명령을 하이브리드 메모리 시스템에 선택적으로 전환하는 단계를 더 포함하는, 방법.
  12. 제 8 항 내지 제 9 항 중 어느 한 항에 있어서,
    명령이 임계 명령 크기보다 작음을 결정하는 단계; 및
    명령이 임계 명령 크기보다 작다는 결정에 적어도 부분적으로 기초하여 명령을 하이브리드 메모리 시스템에 선택적으로 전환하는 단계를 더 포함하는, 방법.
  13. 방법으로서,
    하이브리드 메모리 시스템과 분리되어 있고 상기 하이브리드 메모리 시스템에 결합가능한 호스트의 주 메모리와 연관되고 호스트에 의해 실행되는 특정 유형의 명령 트래픽을 식별하는 단계;
    명령에 감도를 할당하는 단계 - 상기 감도는 상기 명령의 실행 빈도 및 상기 명령의 실행과 연관된 기록 대기시간에 기초함 -;
    상기 명령이 특정 유형의 파일 시스템 기록에 대응하는 것을 결정하는 단계 - 상기 특정 유형의 파일 시스템 기록은 그와 연관된 결정 가능한 기록 패턴을 가짐 - ;
    상기 식별된 특성에 적어도 부분적으로 기초하여 상기 명령을 핸들링할 때 더 낮은 기록 대기시간을 나타내도록 구성되는 플래시 메모리 디바이스 또는 상변화 랜덤 액세스 메모리 디바이스에 상기 호스트의 상기 주 메모리와 연관된 논리 블록 어드레스(LBA)를 매핑함으로써 상기 명령 트래픽이 상기 호스트에 결합가능한 하이브리드 메모리 시스템의 상기 플래시 메모리 디바이스 또는 상기 상변화 랜덤 액세스 메모리 디바이스로 선택적으로 전환되게 하는 단계 - 상기 명령은 상기 특정 유형의 파일 시스템 기록에 대응하고, 상기 특정 유형의 파일 시스템 기록은 그와 연관된 상기 결정 가능한 기록 패턴을 가짐 - 를 포함하는, 방법.
  14. 제 13 항에 있어서, 상기 특정 유형의 명령 트래픽은 파일 시스템 메타데이터 업데이트에 대응하는 명령 트래픽, 반복적인 기록 패턴을 나타내는 명령 트래픽, 예측 가능한 기록 패턴을 나타내는 명령 트래픽, 상기 호스트와 관련된 저널링 파일 시스템에 대응하는 명령 트래픽 또는 이들의 조합인, 방법.
  15. 제 13 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 명령이 복수의 랜덤 기록 동작을 특징으로 하는 것과, 상기 명령이 임계 명령 크기보다 작은 것 중 적어도 하나를 결정하는 단계,
    상기 결정에 적어도 부분적으로 기초하여 상기 명령을 상기 하이브리드 메모리 시스템으로 선택적으로 전환하는 단계, 및
    상기 명령 트래픽이 특정 기록 패턴을 나타낸다는 결정에 적어도 부분적으로 기초하여 상기 명령 트래픽을 상기 하이브리드 메모리 시스템의 일부로 선택적으로 전환하는 단계를 더 포함하는, 방법.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
KR1020207029814A 2018-03-21 2019-03-20 하이브리드 메모리 시스템 KR102443600B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/927,339 US10705747B2 (en) 2018-03-21 2018-03-21 Latency-based storage in a hybrid memory system
US15/927,339 2018-03-21
PCT/US2019/023054 WO2019183155A1 (en) 2018-03-21 2019-03-20 Hybrid memory system

Publications (2)

Publication Number Publication Date
KR20200123850A KR20200123850A (ko) 2020-10-30
KR102443600B1 true KR102443600B1 (ko) 2022-09-16

Family

ID=67985228

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207029814A KR102443600B1 (ko) 2018-03-21 2019-03-20 하이브리드 메모리 시스템

Country Status (6)

Country Link
US (2) US10705747B2 (ko)
EP (1) EP3769201A4 (ko)
JP (1) JP7057435B2 (ko)
KR (1) KR102443600B1 (ko)
CN (1) CN111868678B (ko)
WO (1) WO2019183155A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10705747B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10809942B2 (en) * 2018-03-21 2020-10-20 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10705963B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US11249664B2 (en) * 2018-10-09 2022-02-15 Western Digital Technologies, Inc. File system metadata decoding for optimizing flash translation layer operations
KR102480944B1 (ko) * 2020-09-23 2022-12-22 재단법인대구경북과학기술원 하이브리드 메모리 제어 장치 및 방법
KR102650571B1 (ko) * 2020-11-12 2024-03-26 한국전자통신연구원 역가상화 환경용 혼성 메모리 관리 장치 및 방법
CN112737835A (zh) * 2020-12-25 2021-04-30 北京浪潮数据技术有限公司 一种云主机业务管理方法及相关装置

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
WO2005043394A1 (ja) 2003-10-31 2005-05-12 Matsushita Electric Industrial Co., Ltd. 情報記録媒体、情報記録媒体に対するアクセス装置及びアクセス方法
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
KR100801015B1 (ko) * 2006-08-30 2008-02-04 삼성전자주식회사 하이브리드 하드 디스크 드라이브와 데이터 저장 방법
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
TWI368224B (en) * 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
US8060719B2 (en) 2008-05-28 2011-11-15 Micron Technology, Inc. Hybrid memory management
US8756369B2 (en) 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US20100169602A1 (en) * 2008-12-29 2010-07-01 Jared E Hulbert Method and Apparatus for Efficient Memory Placement
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8307151B1 (en) * 2009-11-30 2012-11-06 Micron Technology, Inc. Multi-partitioning feature on e-MMC
US20110167197A1 (en) * 2010-01-05 2011-07-07 Mark Leinwander Nonvolatile Storage with Disparate Memory Types
KR101713051B1 (ko) * 2010-11-29 2017-03-07 삼성전자주식회사 하이브리드 메모리 시스템, 및 그 관리 방법
US20120221767A1 (en) * 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
US8725963B1 (en) 2011-04-15 2014-05-13 Parallels IP Holdings GmbH System and method for managing a virtual swap file for virtual environments
KR20130032772A (ko) * 2011-09-23 2013-04-02 삼성전자주식회사 하이브리드 메모리 장치, 이를 포함하는 컴퓨터 시스템, 및 하이브리드 메모리장치의 데이터 기입 및 독출 방법
US8977803B2 (en) * 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
US8751725B1 (en) * 2012-01-27 2014-06-10 Netapp, Inc. Hybrid storage aggregate
JP5971547B2 (ja) * 2012-02-15 2016-08-17 国立大学法人 東京大学 メモリコントローラ,データ記憶装置およびメモリの制御方法
US9946495B2 (en) * 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9740404B2 (en) * 2013-05-31 2017-08-22 Hitachi, Ltd. Control apparatus and control method
WO2015047326A1 (en) * 2013-09-27 2015-04-02 Hewlett-Packard Development Company, L.P. Data management on memory modules
KR20150043102A (ko) * 2013-10-14 2015-04-22 한국전자통신연구원 하이브리드 메모리의 데이터 관리 장치 및 방법
US9430508B2 (en) 2013-12-30 2016-08-30 Microsoft Technology Licensing, Llc Disk optimized paging for column oriented databases
KR20150089538A (ko) * 2014-01-28 2015-08-05 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
WO2015114829A1 (ja) 2014-02-03 2015-08-06 株式会社日立製作所 情報処理装置
US9772776B2 (en) 2014-02-27 2017-09-26 Red Hat Israel, Ltd. Per-memory group swap device
US10365835B2 (en) * 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
US10430328B2 (en) * 2014-09-16 2019-10-01 Sandisk Technologies Llc Non-volatile cache and non-volatile storage medium using single bit and multi bit flash memory cells or different programming parameters
WO2016056140A1 (ja) * 2014-10-10 2016-04-14 株式会社日立製作所 インターフェースデバイス、及びインターフェースデバイスを含む計算機システム
US9711194B2 (en) * 2015-01-28 2017-07-18 Xilinx, Inc. Circuits for and methods of controlling the operation of a hybrid memory system
US9459802B1 (en) * 2015-03-30 2016-10-04 Kabushiki Kaisha Toshiba Hybrid-HDD that limits dirty data in NAND
US9760479B2 (en) * 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
KR102491651B1 (ko) 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US10140057B2 (en) 2016-02-18 2018-11-27 Micron Technology, Inc. Apparatuses and methods for multiple address registers for a solid state device
US10452530B2 (en) 2016-02-26 2019-10-22 Mitsubishi Electric Corporation Information processing apparatus and information processing method
US9772943B1 (en) * 2016-04-01 2017-09-26 Cavium, Inc. Managing synonyms in virtual-address caches
US10108555B2 (en) * 2016-05-26 2018-10-23 Macronix International Co., Ltd. Memory system and memory management method thereof
US11977484B2 (en) * 2016-07-19 2024-05-07 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
US10698732B2 (en) * 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US10540098B2 (en) * 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10152427B2 (en) * 2016-08-12 2018-12-11 Google Llc Hybrid memory management
US10649665B2 (en) * 2016-11-08 2020-05-12 Micron Technology, Inc. Data relocation in hybrid memory
KR20180094372A (ko) * 2017-02-15 2018-08-23 에스케이하이닉스 주식회사 하이브리드 메모리 시스템 및 그 제어 방법
US10901894B2 (en) * 2017-03-10 2021-01-26 Oracle International Corporation Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories
US10430329B2 (en) * 2017-06-23 2019-10-01 Western Digital Technologies, Inc. Quality of service aware storage class memory/NAND flash hybrid solid state drive
US10152428B1 (en) * 2017-07-13 2018-12-11 EMC IP Holding Company LLC Virtual memory service levels
US10705747B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10809942B2 (en) * 2018-03-21 2020-10-20 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10705963B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
미국공개특허 제2017-0242623호(2017.08.24.) 1부.*
한국공개특허 제10-2011-0015023호(2011.02.14.) 1부.*
한국공개특허 제10-2012-0058352호(2012.06.07.) 1부.*
한국공개특허 제10-2012-0098505호(2012.09.05.) 1부.*
한국등록특허 제10-0801015호(2008.02.04.) 1부.*

Also Published As

Publication number Publication date
CN111868678B (zh) 2024-05-14
EP3769201A1 (en) 2021-01-27
CN111868678A (zh) 2020-10-30
JP7057435B2 (ja) 2022-04-19
EP3769201A4 (en) 2021-12-22
JP2021517307A (ja) 2021-07-15
KR20200123850A (ko) 2020-10-30
US10705747B2 (en) 2020-07-07
WO2019183155A1 (en) 2019-09-26
US20190294356A1 (en) 2019-09-26
US11340808B2 (en) 2022-05-24
US20200293211A1 (en) 2020-09-17

Similar Documents

Publication Publication Date Title
KR102443600B1 (ko) 하이브리드 메모리 시스템
KR102434170B1 (ko) 하이브리드 메모리 시스템
US9720717B2 (en) Virtualization support for storage devices
US20160110291A1 (en) Coordination between memory-saving mechanisms in computers that run virtual machines
US11327892B2 (en) Latency-based storage in a hybrid memory system
US11782854B2 (en) Cache architecture for a storage device

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