[go: up one dir, main page]

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

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

Info

Publication number
KR102434170B1
KR102434170B1 KR1020207029008A KR20207029008A KR102434170B1 KR 102434170 B1 KR102434170 B1 KR 102434170B1 KR 1020207029008 A KR1020207029008 A KR 1020207029008A KR 20207029008 A KR20207029008 A KR 20207029008A KR 102434170 B1 KR102434170 B1 KR 102434170B1
Authority
KR
South Korea
Prior art keywords
memory
data
host
hybrid
memory system
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020207029008A
Other languages
English (en)
Other versions
KR20200121372A (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 KR20200121372A publication Critical patent/KR20200121372A/ko
Application granted granted Critical
Publication of KR102434170B1 publication Critical patent/KR102434170B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/10Address translation
    • 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/0608Saving storage space on storage systems
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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/0653Monitoring storage devices or systems
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • 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)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (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(arithmetic logic unit) 회로, FPU(floating point unit) 회로, 및 조합 로직 블록을 포함할 수 있다.
컴퓨팅 시스템 내 다수의 구성요소가 명령을 실행을 위해 기능 유닛 회로로 제공하는 데 관련될 수 있다. 명령은, 예를 들어, 프로세싱 자원, 가령, 제어기 및/또는 호스트 프로세서에 의해 실행될 수 있다. 또한, 상이한 유형의 동작이 기능 유닛 회로를 통해 하나 또는 복수의 클록 사이클로 실행될 수 있기 때문에, 명령의 중간 결과 및 데이터가 또한 시퀀싱 및/또는 버퍼링될 수 있다.
도 1은 본 개시의 다수의 실시예에 따라 프레임워크, 호스트, 및 메모리 시스템을 포함하는 컴퓨팅 시스템의 형태로 된 장치의 블록도이다.
도 2는 본 개시의 다수의 실시예에 따르는 메인 메모리를 포함하는 호스트, 및 메모리 시스템을 포함하는 컴퓨팅 시스템의 형태로 된 장치의 블록도이다.
도 3a는 본 개시의 다수의 실시예에 따라 논리 블록 어드레스 범위를 하이브리드 메모리 시스템에 매핑하기 위한 예시적 흐름도를 도시한다.
도 3b는 본 개시의 다수의 실시예에 따라 하이브리드 메모리 시스템의 일부분을 호스트 메모리(가령, 호스트와 연관된 메인 메모리)로 매핑하기 위한 예시적 흐름도(317)를 도시한다.
도 3c는 코드 페이징 동작의 수행에 응답하여 하이브리드 메모리 시스템으로 데이터를 선택적으로 전송하기 위한 예시적 흐름도를 도시한다.
도 4는 본 개시의 다수의 실시예에 따라 커맨드 트래픽을 하이브리드 메모리 시스템으로 선택적으로 전송하기 위한 예시적 흐름도를 도시한다.
도 5a는 본 개시의 다수의 실시예에 따라 하이브리드 메모리 시스템으로 커맨드를 선택적으로 우회시키기 위한 예시적 흐름도를 도시한다.
도 5b는 본 개시의 다수의 실시예에 따라 하이브리드 메모리 시스템으로 커맨드 트래픽을 선택적으로 우회시키기 위한 예시적 흐름도를 도시한다.
도 5c는 본 개시의 다수의 실시예에 따라 하이브리드 메모리 시스템으로 식별된 쓰기 패턴을 갖는 커맨드 트래픽을 선택적으로 우회시키기 위한 예시적 흐름도를 도시한다.
도 5d는 식별된 커맨드 특성에 의해 하이브리드 메모리 시스템으로 선택적으로 우회되는 예시적 흐름도를 도시한다.
본 발명은 하이브리드 메모리 시스템과 관련된 장치 및 방법을 포함한다. 예시적 장치가 호스트에 연결되기 위한 하이브리드 메모리 시스템 및 상기 하이브리드 메모리 시스템에 연결된 제어기를 포함한다. 제어기는 커맨드에 감도를 할당하고 적어도 부분적으로 할당된 감도에 기초하여, 커맨드가 하이브리드 메모리 시스템으로 선택적으로 우회되게 하도록 구성될 수 있다.
컴퓨팅 시스템, 가령, 개인 컴퓨터, 랩톱, 태블릿, 패블릿(phablet), 스마트폰, 사물 인터넷(IoT) 가능 디바이스 등이 컴퓨팅 시스템과 연관된 데이터 및/또는 명령을 저장하기 위한 하나 이상의 메모리 자원을 포함할 수 있다. 본 명세서에서 사용될 때, "IoT 가능 디바이스"는 물리적 디바이스, 차량, 가전 기기, 및 이러한 물체가 데이터를 연결 및 교환할 수 있게 하는 전자소자, 소프트웨어, 센서, 액추에이터, 및/또는 네트워크 연결 기능이 내장된 그 밖의 다른 디바이스를 포함한다. IoT 가능 디바이스의 예시로는 웨어러블 기술, 스마트 홈 디바이스, 지능형 쇼핑 시스템, 및 모니터링 디바이스, 그 밖의 다른 사이버-물리 시스템을 포함한다. 덧붙여, 컴퓨팅 시스템은 운영 체제 같은 시스템 소프트웨어를 실행시켜 컴퓨팅 시스템 상에서 실행 중인 애플리케이션을 위한 공통 서비스를 제공하기 위한 하나 이상의 프로세싱 자원을 포함할 수 있다. 운영 체제의 예시는 Linux®, Unix®, Windows® 등이 있다.
동작 중에, 컴퓨팅 시스템은 명령, 가령, 펌웨어, 컴퓨터 코드, 메타-코드, 프레임워크 파일 등을 실행시켜, 컴퓨팅 시스템에 기능을 제공할 수 있다. 이들 명령 중 적어도 일부가 다른 명령보다 더 자주 실행될 수 있거나, 및/또는 이들 명령 중 적어도 일부가 컴퓨팅 시스템의 특정 동작 시점에서 실행될 수 있다.
예를 들어, 컴퓨팅 시스템이 명령의 동일한 부분을 복수 번 읽기를 시도하는 경우, 예외(가령, 장애)가 발생할 수 있다. 일부 경우, 이러한 예외를 발생시키는 명령이 미리읽기 메커니즘(또는 그 밖의 다른 적절한 프리페치 메커니즘)을 통해 컴퓨팅 시스템과 연관된 캐시로 로딩되어 명령을 복수 번 액세스할 때 컴퓨팅 시스템 사용 횟수를 감소시킬 수 있다. 예외를 경험한(또는 예외를 경험할 가능성이 높은) 프리페치 명령이 명령을 복수 번 액세스할 때 컴퓨팅 시스템 사용 횟수를 감소시킬 수 있지만, 이러한 방식에서 사용되는 캐시가 다른 메모리 자원만큼 빠르지 않는 것이 일반적이다.
일부 실시예에서, 사용자 공간 및/또는 커널 서비스 또는 라이브러리에서 배치되는 프로그램(가령, 애플리케이션)이 컴퓨팅 시스템 또는 컴퓨팅 시스템의 프로세서와 연관된 내부 캐시에 저장된 명령을 액세스하려 시도하고 명령을 액세스하려는 시도가 발생할 때 컴퓨팅 시스템의 메모리(가령, RAM)에 명령이 존재하지 않을 때, 예외, 가령, 페이지 장애(page fault)가 발생할 수 있다. 이러한 예외는 명령이 저장되는 저장 디바이스를 액세스하고 저장 디바이스로부터의 명령과 연관된 메모리의 페이지를 로딩함으로써 치유될 수 있다. 미리읽기 동작이 컴퓨팅 시스템에 의해 실시되는 경우, 이러한 예외가 저장 디바이스로부터의 명령과 연관된 메모리의 연속 부분을 로딩함으로써 치유될 수 있다.
또 다른 예를 들면, 예를 들어, 물리 메모리 자원이 과다-사용되는 경우, 복수의 프로세스가 가상 메모리에서 실행될 때, 명령이 실행 전에 물리 메모리(가령, 메모리의 물리 페이지)로 매핑될 수 있다. 그러나 명령을 매핑하기에 물리 메모리가 불충분한 경우, 물리 메모리 자원이 과다 사용될 수 있으며, 이로 인해 컴퓨팅 시스템 성능 감소 및/또는 컴퓨팅 시스템에 대한 읽기/쓰기 증가가 발생될 수 있다.
또 다른 예를 들면, 컴퓨팅 시스템이 동작 중일 때 특정 쓰기 패턴이 일반적일 수 있다. 예를 들어, 특정 명령이 반복적 및/또는 예측적 쓰기 패턴을 나타낼 수 있지만, 일부 접근법에서, 이들 쓰기 패턴에 대한 정보가 컴퓨팅 시스템에 의해 액세스 가능하지 않을 수 있다. 따라서, 일부 접근법에서, 반복적 및/또는 예측적 읽기 또는 쓰기 패턴을 갖는 반복 페칭 및 쓰기 명령에서 시간 및/또는 프로세싱 자원이 소비될 수 있다.
이와 달리, 본 명세서의 실시예가 명령이 복수 번 액세스될 때 발생하는 어드레싱 예외에서 소비되는 시간 및/또는 프로세싱 자원량을 감소시킬 수 있고, 가상 메모리 어드레싱을 이용하는 컴퓨팅 시스템에 대한 컴퓨팅 속도 및/또는 읽기/쓰기 시간의 증가를 제공하거나, 및/또는 반복적 및/또는 예측적 읽기 또는 쓰기 패턴을 보이는 반복적 페칭 명령에서 컴퓨팅 시스템에 의한 시간 및/또는 프로세싱 자원 소비를 완화시킬 수 있다.
예를 들어, 일부 실시예에서, 컴퓨팅 시스템과 연관된 하나 이상의 메모리 자원이 하이브리드 저장 디바이스에서 배치될 수 있다. 예를 들어, 적어도 하나의 메모리 자원이 특정 유형의 메모리 자원을 포함할 수 있지만, 적어도 하나의 그 밖의 다른 메모리 자원이 상이한 특정 유형의 메모리 자원을 포함할 수 있다. 비-제한적 예를 들면, 컴퓨팅 시스템과 연관된 하나의 메모리 자원이 비-휘발성 메모리 자원, 가령, 3D X포인트 비-휘발성 메모리일 수 있고, 제2 메모리 자원이 상이한 비-휘발성 메모리 자원, 가령, 플래시 메모리(가령, 저장 볼륨)일 수 있다. 실시예가 이들 특정 예시에 한정되지 않지만, 하이브리드 저장 디바이스를 포함하는 메모리 자원이 다른 유형의 비-휘발성 메모리(가령, 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)은 메모리 시스템(104)으로 결합된(가령, 연결된), 도 2에 도시된 바와 같이 하나 이상의 자원을 포함하는 호스트(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 X포인트 메모리, NOR 플래시 어레이, 및/또는 가령, 제어기, 3D X포인트 메모리 부분 및 NAND 플래시 부분을 포함하는 저장 서브-시스템을 포함할 수 있다.
프레임워크(110)는 시스템(100)의 동작을 촉진시키기 위해 호스트(102)와 연관된 프로세싱 자원에 의해 실행 가능한 명령을 포함할 수 있다. 예를 들어, 프레임워크는 컴퓨팅 동작, 가령, 읽기, 쓰기, 열기, 닫기 등을 제어하여, 하나 이상의 파일 시스템(가령, 가상 파일 시스템, 파일 시스템, 가령, 확장 파일 시스템 등) 및/또는 블록 디바이스에 대응하는 하나 이상의 명령을 제공하기 위해 호스트(102)의 프로세싱 자원에 의해 실행 가능한 명령을 포함할 수 있다. 일부 실시예에서, 프레임워크(110)는 Linux® 프레임워크, 가령, Android® 프레임워크일 수 있다. 또한, 프레임워크(110)는 호스트(102) 상에서 실행되는 운영 체제가 호스트(102)에 연결된 하나 이상의 디바이스와 통신하게 하도록 실행 가능한 드라이버(가령, 하나 이상의 소프트웨어 드라이버)를 포함할 수 있다.
일부 실시예에서, 프레임워크(110)는 운영 체제를 나타낼 수 있다. 예를 들어, 프레임워크(110)는 이와 연관된 Linux® 커널을 갖는 운영 체제를 나타낼 수 있다. 이러한 실시예에서, 프레임워크(110)는 "소프트웨어 저장 스택(software storage stack)"으로 간주 될 수 있다(예를 들어, 프레임워크(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(application specific integrated circuit), 현장 프로그램 가능 게이트 어레이(field programmable gate array) 등의 형태로 된 하드웨어 및/또는 펌웨어(가령, 마이크로코드 명령)를 포함할 수 있다. 제어기(206)는 예를 들어 컴퓨팅 시스템(200)의 동작을 촉진시키기 위해 실행되는 명령의 패턴을 제어, 가령, 액세스할 수 있다. 본 명세서에서 사용될 때, 호스트(202), 메모리 시스템(204), 제어기(206) 및/또는 메모리 자원(208-1, ..., 208-N)은 개별적으로 "장치"로 간주될 수도 있다.
일부 실시예에서, 메모리 시스템(204)은 하이브리드 저장 시스템일 수 있고 하나 이상의 메모리 자원(208-1, ..., 208-N)을 포함할 수 있다. 메모리 자원(208-1, ..., 208-N)은 상이한 유형의 메모리 자원일 수 있다. 예를 들어, 메모리 자원(208-1)은 이머징 비-휘발성 메모리 자원, 가령, 3D X포인트 메모리 자원, 강유전성 RAM(FeRAM) 등일 수 있으며, 메모리 자원(208-N)은 NAND 메모리 자원일 수 있다. 실시예는 이들 특정 예시에 한정되지 않으며, 메모리 자원(208-1) 및/또는 메모리 자원(208-N)이 그 밖의 다른 적합한 유형의 메모리 자원을 포함할 수 있다.
컴퓨팅 시스템(200)의 동작 동안, 메모리 시스템(204)은 코드 페이징을 위해 사용될 수 있다. 본 명세서에서 사용되는 바와 같이, "코드 페이징(code paging)"은 컴퓨팅 시스템(200)이 데이터를 호스트(202)의 메인 메모리(209)(가령, 시스템 메모리)에 의해 사용되기 위해 메모리 시스템(204)에 저장하고 이로부터 불러오게 하는 메모리 관리 스킴이다. 일부 실시예에서, 호스트(202)의 메인 메모리(209)에 저장될 수 있는 코드 페이징을 용이하게 하기 위해 실행 가능한 명령은 컴퓨팅 시스템(200)의 동작의 일부로서 실행될 수 있다.
그러나, 컴퓨팅 시스템(200)의 동작 동안, 메인 메모리(209)의 동일한 부분에 액세스하기 위한 복수의 명령(예를 들어, 메인 메모리(209)에 데이터를 저장 및/또는 이로부터 불러오기 위한 명령)이 실행될 수 있다. 이는 컴퓨팅 시스템(200)에 의해 생성되는 예외(예를 들어, 장애)로 이어질 수 있다. 일부 실시예에서, 프로그램은 컴퓨팅 시스템(200)의 메인 메모리(209)에 매핑되지 않은 데이터 및/또는 명령을 액세스할 수 있다. 이 경우, 데이터 및/또는 명령이 메모리 시스템(204)으로부터 액세스될 수 있고, 그에 따라 메인 메모리(209)로부터 액세스 가능하지 않은 데이터 및/또는 명령의 결과로서 발생하는 페이지 장애를 핸들링할 수 있다. 일부 접근법에서, 메인 메모리(209)가 아닌 다른 메모리 위치로의 읽기 및/또는 쓰기 액세스를 제공함으로써 이 예외가 핸들링(치유)될 수 있다. 예를 들어, 일부 접근법에서 미리읽기 메커니즘(readahead mechanism)이 예외를 경험하고 이를 컴퓨팅 시스템(200) 및/또는 호스트(202)과 연관된 캐시에 차후 실행을 위해 저장한 명령의 세트를 프리페치하는 데 사용될 수 있다.
이러한 예외는 컴퓨팅 시스템(200)의 동작에서 매우 일반적일 수 있다. 예를 들어, 멀티프로세싱 컴퓨팅 환경에서 그리고 매우 많은 양의 읽기 및/또는 쓰기 데이터, 일부 예시에서 하루에 최대 수 백 기가바이트를 생성할 수 있다. 일부 실시예에서, 예외 발생을 야기할 수 있는 읽기/쓰기 동작에서 소비되는 프로세싱 자원 및/또는 시간을 완화시키기 위해, 미리읽기 메커니즘의 사용 시 발생되는 것처럼 읽기/쓰기 레이턴시를 감소시키고 명령의 세트를 프리페치할 때 소비되는 프로세싱 자원의 양을 감소시키기 위해 메모리 자원(가령, 메모리 자원(208-1))에서 임계 개수의 예외를 발생시키는 명령을 저장하는 것이 바람직할 수 있다.
예를 들어, 일부 실시예에서, 제어기(206)는 특정 세트의 데이터에 대한 읽기 또는 쓰기 요청에 대응하는 예외가 발생하려 함(또는 발생했음)을 결정하고, 컴퓨팅 시스템(200)에 의한 후속 실행 및/또는 불러옴을 위해 특정 데이터 세트가 메모리 자원(208-1)에 써지게 하도록 구성될 수 있다. 일부 실시예에서, 특정 데이터 세트가 메모리 자원(208-1) 내 하나의 파티션 또는 LBA 블록에 저장될 수 있다. 본 명세서에서 도 3a, 3b 및 3c와 관련하여 더 상세히 기재된 바와 같이, 특정 데이터가 아닌 다른 데이터(가령, 읽기 또는 쓰기 액세스 요청에 대응하지 않는 데이터)가 파티션 및/또는 LBA 블록에 저장되지 않도록, 파티션 및/또는 LBA 블록이 할당(또는 예약)될 수 있다.
앞서 기재된 바와 같이, 호스트의 메인 메모리(209)가 물리 메모리 자원, 가령, 휘발성 메모리 자원(가령, RAM, DRAM, SRAM 등), 비-휘발성 메모리 자원(가령, HDD, 플래시 메모리, 강유전성 RAM 등), 또는 이의 조합일 수 있다. 따라서, 메인 메모리(209)에 저장될 수 있는 데이터의 양이 메인 메모리(209)의 물리적 속성 때문에 한정될 수 있다. 예를 들어, 메인 메모리(209)는 데이터가 저장될 수 있는 유한한 양의 공간을 포함할 수 있다.
따라서 일부 동작 조건 하에서, 호스트(202)가 지나치게 많은 데이터를 메인 메모리(209)에 저장하려 시도할 때 메인 메모리(209)가 가득 차거나 및/또는 감소된 성능을 보일 수 있다. 이는 메모리 공간의 크기가 메인 메모리(209)에 의해 정의되는 물리 메모리 공간의 실제 크기보다 크다는 착각을 만들기 위해 메모리 자원(가령, 메인 메모리(209))을 추상화하기 위한 가상 메모리 기법을 이용하는 시스템에서 더 악화될 수 있다.
이러한 구현예에서, 가상 어드레스 공간은 논리-물리 어드레싱 기법을 이용해 (가령, 제어 회로, 가령, 호스트(202)와 연관된 메모리 관리 유닛에 의해) 관리될 수 있다. 예를 들어, 가상 어드레스는 프로세스가 궁극적으로 실행될 수 있는 메인 메모리(209)의 물리적 위치(예를 들어, 하나 이상의 메모리 페이지 등)에 대응할 수 있는 대응하는 물리 어드레스에 할당될 수 있다. 그러나, 복수의 가상 메모리 어드레스가 동일한 물리 메모리 어드레스에 매핑될 때, 컴퓨팅 시스템(200)은 감소된 성능을 경험 및/또는 중단될 수 있다(가령, 프로세스가 종료 및/또는 예상과 달리 행동할 수 있다).
예를 들어, 가상 메모리 기술을 활용하는 컴퓨팅 구현에서, 하나 이상의 프로세스는 메인 메모리(209)의 물리 메모리 위치에 매핑될 수 있는 하나 이상의 가상 메모리 위치(예를 들어, 메모리 페이지, 메모리 블록 등)를 참조할 수 있다. 또한, 메인 메모리(209)가 가득 찰 때, 프로세스를 실행하는 데 이용 가능한 물리 메모리 자원이 부적절하게 존재하기 때문에 가상 메모리 페이지가 호출될 수 없을 수 있다.
일부 접근법에서, 이는 메인 메모리(209) 내 데이터의 페이지를 스왑 공간(swap space)으로 전송하여, 메인 메모리(209)의 물리 메모리 자원을 비움으로써 완화될 수 있다. 예를 들어, 일부 접근법에서, 운영 체제의 커널이 익명 페이지(anonymous page)에 할당된 메인 메모리(209)의 물리 메모리 자원을 비우기 위한 메커니즘을 포함할 수 있다. 본 명세서에서 사용될 때, "익명 페이지"는 연관된 파일을 갖지 않는 메모리의 페이지이다. 예를 들어, 익명 페이지는 파일에 의해 지원되지 않는 메모리의 페이지(가령, 특정된 파일을 갖지 않는 메모리의 페이지)일 수 있다. 그러나 익명 페이지가 파일과 관련되지 않을 수 있더라도 익명 페이지는 프로세스 및/또는 프로세스 작업 세트와 관련될 수 있다. 프로세스 및 프로세스 작업 세트의 비-제한적인 예는 데이터 구조, 힙(heap), 스택(stack), 상수(constant) 등을 포함한다. 본 명세서에서 사용될 때, 프로세스 작업 세트는 호스트의 물리 메모리, 가령, 호스트의 메인 메모리에 저장된 호스트의 가상 어드레스 공간에 하나 이상의 데이터 페이지를 포함한다. 예를 들어, 프로세스 작업 세트가 호스트의 메인 메모리에 가시적인 메모리 페이지(가령, 호스트에 의해 최근 참조된 적 있는 페이지)를 포함한다.
이러한 접근법에서, 페이지의 관련 콘텐츠(예를 들어, 익명 페이지)는 스왑 공간 및/또는 스왑 디바이스로 일시적으로 전송(예를 들어, 복사)될 수 있다. 페이지가 이후에 참조되는 경우, 페이지는 메인 메모리(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 X포인트 메모리 자원이기 때문에 메모리 자원(208-N)보다 짧은 액세스 시간을 가질 수 있다. 또한, 일부 실시예에서, 스왑 디바이스로서 할당된 하이브리드 메모리 시스템(204)의 부분은 하이브리드 메모리 시스템(200)의 다른 부분보다 더 높은 내구성을 갖는 하이브리드 메모리 시스템(200)의 부분일 수 있다.
일부 실시예에서, 호스트(202)에 의해 실행되는 프로세스 및/또는 애플리케이션은 DBMS(database management system), 가령, NoSQL, SQLite, 클라우드-기반 DBMS 또는 그 밖의 다른 적절한 DBMS를 이용할 수 있다. DBMS는 최종 사용자가 컴퓨팅 시스템(200)과 연관된 데이터베이스에서 데이터를 생성, 읽기, 업데이트 및/또는 삭제할 수 있도록 할 수 있다. 일부 실시예에서, DMBS는 데이터 일관성 및/또는 시스템 내구성이 실현될 수 있게 할 수 있는 저널링 정책(journaling policy)에 따라 동작할 수 있다. DBMS는 연관된 커맨드를 가질 수 있다. 일부 실시예에서, DBMS와 연관된 커맨드는 DBMS 커맨드에 할당된 감도에 적어도 부분적으로 기초하여 하이브리드 메모리 시스템의 일부로 선택적으로 우회될 수 있다.
저널링 시스템은 파일 시스템(가령, 본 명세서에 기재된 바와 같이, 도 1에 도시된 파일 시스템(113))에 아직 커밋(commit)되지 않은 변경을 추적하는 저널링 파일 시스템일 수 있다. 컴퓨팅 시스템(200)의 동작 동안, 저널링 시스템은 메모리 시스템(204) 및/또는 메인 메모리(209)에 부담을 줄 수 있는 복수의 랜덤 쓰기를 발생시킬 수 있다. 예를 들어, 저널링 시스템은 컴퓨팅 시스템(200)의 메모리 및/또는 메인 메모리(209)를 과다-사용할 수 있는 복수의 동기적 랜덤 및 빈번한 쓰기를 발생시켜, 컴퓨팅 시스템(200)의 메모리 및/또는 메인 메모리에 부담을 줄 수 있다.
이들 랜덤하고 빈번한 쓰기는, (가령, 쓰기 커맨드 실행 동안) 전경에서 수행되는 유지보수 동작 때문에, 특히 플래시 기반 메모리 시스템에서, 긴 레이턴시를 발생시킬 수 있다. 이들 레이턴시는 특정 조건 하에서, 가령, 플래시 기반 메모리 시스템이 거의 용량에 다 되서 동작 중일 때 및/또는 플래시 기반 메모리 시스템이 길어진 시간 주기 동안 동작했을 때 플래시 기반 메모리 시스템에서 더 악화될 수 있다. 이와 달리, 하이브리드 메모리 시스템(204)은 시간의 흐름에 따라 및/또는 하이브리드 메모리 시스템(204)이 거의 용량으로 동작할 때 플래시 기반 메모리 시스템보다 짧은 레이턴시를 발생시킬 수 있다.
플래시 기반 메모리 시스템과 연관된 결함을 개선하기 위해, 일부 실시예에 의해 제어기(206)가 DBMS에 의해 핸들링되는 커맨드 트래픽의 감도를 결정하고 트래픽의 결정된 감도에 기초하여 특정 유형의 커맨드 트래픽에 지시자를 적용시킬 수 있다. 커맨드 트래픽의 감도는 커맨드 트래픽의 특성, 가령, 특정 커맨드의 실행의 빈도, 커맨드의 크기, 커맨드의 실행이 소비하는 자원(가령, 메모리 자원 및/또는 프로세싱 자원)의 양, 커맨드가 실행될 수 있는 속도, 또는 그 밖의 다른 적절한 감도 특성에 기초할 수 있다. 일부 실시예에서, 감도는 커맨드의 실행과 연관된 쓰기 레이턴시에 기초할 수 있다. 이 예에서, 커맨드의 실행과 연관된 쓰기 레이턴시가 임계 쓰기 레이턴시를 초과한다는 결정에 응답하여 커맨드가 하이브리드 메모리 시스템(204)으로 선택적으로 우회될 수 있다.
제어기(206)가 지시자를 커맨드에 첨부하면, 커맨드는 컴퓨팅 시스템(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)의 적절한 메모리 위치는 하이브리드 메모리 시스템(204)의 일부분, 가령, 메모리 자원(208-1)일 수 있다. 일부 실시예에서, 제어기(206)는 파일 시스템 업데이트가 하이브리드 메모리 시스템(204)의 일부로 선택적으로 우회되게 하도록 구성될 수 있다.
파일 시스템 쓰기를 하이브리드 메모리 시스템(204)으로 선택적으로 우회시킴으로써, 파일 시스템이 선택적으로 우회되지 않는 방식 또는 파일 시스템이 플래시 기반 메모리 시스템에 의해 핸들링되는 방식에 비해 짧아진 레이턴시 및/또는 증가된 성능이 실현될 수 있다.
컴퓨팅 시스템(200)의 동작 동안, 특정 파일 시스템(예를 들어, 도 1에 도시된 가상 파일 시스템(112), 도 1에 도시된 파일 시스템(113))이 반복적 및/또는 예측 가능한 쓰기 패턴을 보일 수 있다. 예를 들어, F2FS 체크포인트 및/또는 저널링 시스템은 예측 가능한 방식으로 특정 커맨드 및/또는 데이터를 반복적으로 쓸 수 있다. 이들 커맨드 및/또는 데이터는, 앞서 기재된 바와 같이, 작은 랜덤 쓰기로 써질 수 있다.
앞서 기재된 바와 같이, 전경에서(가령, 쓰기 커맨드 실행 동안) 유지관리 동작이 수행되기 때문에 이들 작은 랜덤 쓰기가 플래시 기반 메모리 시스템에서 긴 레이턴시를 발생시킬 수 있다. 이들 레이턴시는 특정 조건 하에서, 가령, 플래시 기반 메모리 시스템이 거의 용량에 다 되서 동작 중일 때 및/또는 플래시 기반 메모리 시스템이 길어진 시간 주기 동안 동작했을 때 플래시 기반 메모리 시스템에서 더 악화될 수 있다. 이와 달리, 하이브리드 메모리 시스템(204)은 시간의 흐름에 따라 및/또는 하이브리드 메모리 시스템(204)이 거의 용량으로 동작할 때 플래시 기반 메모리 시스템보다 짧은 레이턴시를 발생시킬 수 있다.
플래시 기반 메모리 시스템과 연관된 결함을 완화시키기 위해 일부 실시예가 하이브리드 메모리 시스템(204)의 일부분으로의 작은 랜덤 쓰기의 선택적 우회를 가능하게 한다. 예를 들어, 컴퓨팅 시스템(200)(또는 이의 일부분)이 쓰기 동작(가령, 작은 랜덤 쓰기)의 출발지를 결정하도록 구성될 수 있다. 일부 실시예에서, 컴퓨팅 시스템(200)과 연관된 파일 시스템 및/또는 컴퓨팅 시스템(200)과 연관된 드라이버는 메타데이터 쓰기 및/또는 데이터 구조에 힌트(예를 들어, 지시자)를 연관 시키도록 구성될 수 있다. 힌트는 쓰기 커맨드로 전송될 수 있고, 힌트를 포함하는 쓰기 커맨드가 하이브리드 메모리 시스템(204)으로 전송될 수 있다. 일부 실시예에서, 이와 연관된 쓰기 커맨드 및 힌트가 하이브리드 메모리 시스템(204)으로 전송된 후, 제어기(206)는 이러한 파일 시스템 쓰기(또는 메타데이터 쓰기)를 하이브리드 메모리 시스템(204)으로 우회시켜, 메인 메모리(209)로의 액세스 시간을 감소 및/또는 대기를 피함으로써, 컴퓨팅 시스템(200)의 성능을 증가시키도록 더 구성될 수 있다.
일부 실시예에서, 제어기(206)는 여기로 우회되는 커맨드 트래픽을 핸들링하는 데 가장 적합한 하이브리드 메모리 시스템(204)의 일부분으로 파일 시스템 쓰기를 선택적으로 우회하도록 구성될 수 있다. 예를 들어, 특정 파일 시스템은 특정 유형의 메모리에 의해 가장 효율적으로 처리될 수 있는 특정 커맨드 트래픽 패턴을 보일 수 있다. 비-제한적 예시로, F2FS에서 LFS(Log-structured File System) 쓰기는 데이터가 NAND 메모리에 적합할 수 있는 비매핑 LBA에 순차적으로 써지는 결정 가능한 액세스 패턴으로 실행될 수 있다. 이와 달리, SSR(Slack Space Recycle) 쓰기는 데이터가 매핑된 LBA에 랜덤하게 써지는 결정 가능한 액세스 패턴으로 실행될 수 있으며, 이는 짧은 레이턴시 메모리, 가령, 3D X포인트 메모리에 더 적합할 수 있다.
따라서, 일부 실시예에서, 제어기(206)는 결정 가능한 쓰기 패턴과 연관된 커맨드 트래픽을 특정 유형의 파일 시스템 쓰기를 핸들링하는 데 가장 적합한 하이브리드 메모리 시스템(204)의 일부분으로 선택적으로 우회시킬 수 있다. 예를 들어, 제어기(206)는 LFS 쓰기를 NAND 메모리일 수 있는 메모리 자원(208-N)으로 우회시키도록 구성되거나, 제어기(206)는 SSR 쓰기를, 본 명세서에 기재된 짧은 레이턴시의 이머징 메모리 자원일 수 있는 메모리 자원(208-1)으로 우회시키도록 구성될 수 있다.
일부 접근법에서, 액세스 시맨틱에 대응하는 정보를 컴퓨팅 시스템(200)과 연관된 메모리 디바이스로 전송하는 것이 가능하지 않다. 예를 들어, 일부 접근법에서, 정보는 쓰기 액세스 요청이 사용자 데이터와 연관되는지 또는 파일 시스템 메타데이터가 컴퓨팅 시스템(200)과 연관된 메모리 디바이스에 전송되지 않는지 여부에 대응한다. 따라서, 일부 접근법에서, 컴퓨팅 시스템(200)과 연관된 메모리 디바이스가, 특정 LBA 또는 LBA 범위가 페이징 프로세스가 실행되는 저장 위치에 저장되는 경우 LBA 또는 LBA 범위가 읽기 또는 쓰기 커맨드에 의해 자주 액세스될 것에 대한 임의의 지식을 제공 받지 않을 수 있다.
이와 달리, 본 명세서의 실시예에 의해 제어기(206)는 쓰기 액세스 요청이, 사용자 데이터 또는 파일 시스템 메타데이터와 연관되거나 및/또는 특정 LBA 또는 LBA 범위가 읽기 또는 쓰기 커맨드에 의해 자주 액세스되는지를 결정하고 특정 속성을 갖는 읽기 또는 쓰기 커맨드를 하이브리드 메모리 시스템(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에 기재된 기능이 컴퓨팅 시스템(200)과 하이브리드 메모리 시스템(204)의 최적화된 통합을 촉진시킬 수 있다.  예를 들어, NVMe 규격의 LBA 범위 유형 기능은 특정된 파일 시스템(가령, 이름공간), 가령, 도 1에 도시된 가상 파일 시스템(112) 및/또는 파일 시스템(113)의 일부인 LBA 범위의 유형 및/또는 속성을 가리키도록 사용될 수 있다.  일부 실시예에서, LBA 범위의 유형은 RAID, 페이지 파일, 스왑 파일을 포함하거나 및/또는 벤더 특정 LBA 범위 유형일 수 있다.  또한, LBA 범위의 속성은 LBA 범위가 덮어 써질 수 있는지 여부 및/또는 LBA 범위가 운영 체제 및/또는 컴퓨팅 시스템(200)의 BIOS에 가시적인지 여부를 가리키는 데 이용되는 시맨틱을 포함할 수 있다.
표 1에 도시된 데이터 세트 관리 기능은 특정 양의 LBA에 속하는 커맨드 및/또는 데이터 트래픽 패턴과 관련된 정보를 전송하는 데 이용될 수 있다.  예를 들어, 데이터 세트 관리 기능은 특정 양의 LBA 내에 속하는 데이터 및/또는 커맨드 트래픽 패턴의 커맨드 액세스 크기, 쓰기 준비, 순차 쓰기 범위, 순차 읽기 범위, 액세스 레이턴시, 액세스 빈도 등과 관련된 기능을 포함할 수 있다.  일부 실시예에서, 데이터 세트 관리 기능은 LBA 범위, 읽기 커맨드 및/또는 쓰기 커맨드에 기초하여 동작할 수 있다.
지시(directive)는 호스트(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 (20)

  1. 장치로서,
    제1 비-휘발성 메모리(NVM) 자원, 제2 NVM 자원 및 제어기를 포함하는 하이브리드 메모리 시스템을 포함하고, 상기 제어기는
    스왑 동작의 성능에 대응하는 커맨드에 감도를 할당하도록 구성되고 - 상기 커맨드는 상기 하이브리드 메모리 시스템으로부터 분리되어 있고 상기 하이브리드 메모리 시스템에 연결 가능한 호스트의 메인 메모리와 연관되어 있으며, 상기 감도는 상기 커맨드의 실행의 빈도 및 상기 커맨드의 실행과 연관된 쓰기 레이턴시에 기초함 - ;
    특정 유형의 파일 시스템 쓰기로서 그것과 연관된 결정 가능한 쓰기 패턴을 갖는 특정 유형의 파일 시스템 쓰기에 상기 커맨드가 더 대응한다고 결정하도록 구성되며;
    상기 스왑 동작의 성능에 대응하며 상기 하이브리드 메모리 시스템으로부터 분리되어 있고 상기 하이브리드 메모리 시스템에 연결 가능한 상기 호스트의 상기 메인 메모리와 연관된 데이터를 저장하기 위해 상기 하이브리드 메모리 시스템의 일부분을 할당하도록 구성되고 - 상기 하이브리드 메모리 시스템의 상기 일부분은 상기 제1 NVM 자원 또는 상기 제2 NVM 자원 중 다른 것보다 낮은 액세스 레이턴시 및 높은 내구성을 보이도록 구성되는 상기 제1 NVM 자원 또는 상기 제2 NVM 자원 중 하나에 할당되며, 상기 하이브리드 메모리 시스템의 상기 일부분은 상기 호스트와 상기 하이브리드 메모리 시스템의 상기 할당된 일부분 사이에서 데이터가 전송되는 것을 허용하도록 구성됨 - ;
    상기 호스트의 메인 메모리가 임계 자원 사용량을 겪는다는 결정에 응답하여, 상기 할당된 감도, 상기 특정 유형의 파일 시스템 쓰기에 대응하는 상기 커맨드, 및 상기 특정 유형의 파일 시스템 쓰기로서 그것과 연관된 상기 결정 가능한 쓰기 패턴을 갖는 상기 특정 유형의 파일 시스템 쓰기에, 적어도 부분적으로, 기초하여 상기 커맨드를 핸들링할 때, 상기 낮은 액세스 레이턴시 및 상기 높은 내구성을 보이도록 구성되는 상기 제1 NVM 자원 또는 상기 제2 NVM 자원 중 상기 하나에 상기 호스트의 상기 메인 메모리와 연관된 논리 블록 어드레스(LBA)를 매핑함으로써 상기 스왑 동작의 성능의 일부로서 상기 하이브리드 메모리 시스템의 상기 제1 NVM 자원 또는 상기 제2 NVM 자원에 상기 호스트의 가상 메모리 위치와 연관된 상기 메인 메모리의 데이터의 페이지의 일부분을 선택적으로 전송하도록 구성되는, 장치.
  2. 제1항에 있어서, 상기 제어기는 데이터가 하이브리드 메모리 시스템의 특정 논리 블록 어드레스로 선택적으로 전송되게 하도록 더 구성되는, 장치.
  3. 삭제
  4. 제1항에 있어서, 상기 제어기는 하이브리드 메모리 시스템에서 데이터를 선택적으로 전송함으로써 데이터의 실행 속도를 최적화하도록 더 구성되는, 장치.
  5. 제1항, 제2항 및 제4항 중 어느 한 항에 있어서, 하이브리드 메모리 시스템은:
    제1 메모리 자원 및 제2 메모리 자원 - 제1 메모리 자원 및 제2 메모리 자원 중 적어도 하나는 이머징 비-휘발성 메모리 자원임 - 을 포함하며,
    데이터는 데이터의 프로세스 작업 세트에 대응하는 데이터를 포함하는, 장치.
  6. 시스템으로서,
    제1 비-휘발성 메모리(NVM) 자원, 제2 NVM 자원 및 제어기를 포함하는 하이브리드 메모리 시스템을 포함하며, 상기 제어기는
    스왑 동작의 성능에 대응하는 커맨드에 감도를 할당하도록 구성되고 - 상기 커맨드는 상기 하이브리드 메모리 시스템으로부터 분리되어 있고 상기 하이브리드 메모리 시스템에 연결 가능한 호스트의 메인 메모리와 연관되어 있으며, 상기 감도는 상기 커맨드의 실행의 빈도 및 상기 커맨드의 실행과 연관된 쓰기 레이턴시에 기초함 - ;
    특정 유형의 파일 시스템 쓰기로서 그것과 연관된 결정 가능한 쓰기 패턴을 갖는 특정 유형의 파일 시스템 쓰기에 상기 커맨드가 더 대응한다고 결정하도록 구성되며;
    상기 스왑 동작의 성능에 대응하며 상기 하이브리드 메모리 시스템으로부터 분리되어 있고 상기 하이브리드 메모리 시스템에 연결 가능한 상기 호스트의 상기 메인 메모리와 연관된 데이터를 저장하기 위해 상기 하이브리드 메모리 시스템의 일부분을 할당하도록 구성되고 - 상기 하이브리드 메모리 시스템의 상기 일부분은 상기 제1 NVM 자원 또는 상기 제2 NVM 자원 중 다른 것보다 낮은 쓰기 레이턴시 및 높은 내구성을 보이도록 구성되는 상기 제1 NVM 자원 또는 상기 제2 NVM 자원 중 하나에 할당되며, 상기 하이브리드 메모리 시스템의 상기 일부분은 상기 호스트와 상기 하이브리드 메모리 시스템의 상기 할당된 일부분 사이에서 데이터가 전송되는 것을 허용하도록 구성됨 - ;
    상기 스왑 동작의 성능에 대응하는 상기 메인 메모리의 데이터의 페이지의 일부분을 상기 호스트로부터 상기 하이브리드 메모리 시스템의 상기 할당된 일부분으로 선택적으로 전송함으로써 상기 스왑 동작을 수행하도록 구성되며;
    상기 할당된 감도, 상기 특정 유형의 파일 시스템 쓰기에 대응하는 상기 커맨드, 및 상기 특정 유형의 파일 시스템 쓰기로서 그것과 연관된 상기 결정 가능한 쓰기 패턴을 갖는 상기 특정 유형의 파일 시스템 쓰기에, 적어도 부분적으로, 기초하여 상기 커맨드를 핸들링할 때, 상기 낮은 쓰기 레이턴시 및 상기 높은 내구성을 보이도록 구성되는 상기 제1 NVM 자원 또는 상기 제2 NVM 자원 중 상기 하나에 상기 하이브리드 메모리 시스템에 연결된 상기 호스트의 상기 메인 메모리와 연관된 LBA를 매핑함으로써 상기 스왑 동작의 성능의 일부로서 상기 하이브리드 메모리 시스템의 상기 제1 NVM 자원 또는 상기 제2 NVM 자원에 상기 메인 메모리의 데이터의 페이지의 상기 일부분을 선택적으로 저장하도록 구성되는 - 상기 메인 메모리의 데이터의 상기 페이지의 상기 일부분은 상기 스왑 동작의 성능에 적어도 부분적으로 기초하여 상기 하이브리드 메모리 시스템의 상기 제1 NVM 자원 또는 상기 제2 NVM 자원에 선택적으로 저장됨 - , 시스템.
  7. 제6항에 있어서, 상기 제1 NVM 자원은 상기 제2 NVM 자원보다 빠른 액세스 시간 및 상기 높은 메모리 내구성 중 적어도 하나를 특징으로 하는, 시스템.
  8. 제6항 또는 제7항에 있어서, 제어기는:
    데이터를 하이브리드 메모리 시스템의 할당된 부분으로 선택적으로 전송함으로써 스왑 동작의 수행과 연관된 시간량을 최적화하고,
    데이터가 호스트에 의해 참조된다는 결정에 응답하여 데이터를 호스트로 다시 전송하도록 구성되는, 시스템.
  9. 제6항에 있어서,
    스왑 동작에 대응하는 데이터가 호스트와 연관된 가상 메모리 페이지에 의해 액세스되는 데이터의 프로세스 작업 세트에 대응하며,
    제어기는 프로세스 작업 세트에 대응하는 메모리의 양이 임계 메모리 소비 값을 초과했다는 결정에 응답하여 스왑 동작의 수행을 야기하도록 구성되는, 시스템.
  10. 호스트의 가상 메모리 위치에 대응하는 데이터를 저장하기 위해 플래시 메모리 디바이스 및 저항 가변 메모리 디바이스를 포함하는 하이브리드 메모리 시스템의 일부분을 할당하는 단계;
    스왑 동작의 성능에 대응하는 커맨드에 감도를 할당하는 단계 - 상기 커맨드는 상기 하이브리드 메모리 시스템으로부터 분리되어 있고 상기 하이브리드 메모리 시스템에 연결 가능한 상기 호스트의 메인 메모리와 연관되어 있으며, 상기 감도는 상기 커맨드의 실행의 빈도 및 상기 커맨드의 실행과 연관된 쓰기 레이턴시에 기초함 - ;
    특정 유형의 파일 시스템 쓰기로서 그것과 연관된 결정 가능한 쓰기 패턴을 갖는 특정 유형의 파일 시스템 쓰기에 상기 커맨드가 더 대응한다고 결정하는 단계;
    상기 스왑 동작의 성능에 대응하며 상기 하이브리드 메모리 시스템으로부터 분리되어 있고 상기 하이브리드 메모리 시스템에 연결 가능한 상기 호스트의 상기 메인 메모리와 연관된 데이터를 저장하기 위해 상기 하이브리드 메모리 시스템의 일부분을 할당하는 단계 - 상기 하이브리드 메모리 시스템의 상기 일부분은 상기 플래시 메모리 디바이스 또는 상기 저항 가변 메모리 디바이스 중 다른 것보다 낮은 액세스 레이턴시 및 높은 내구성을 보이도록 구성되는 상기 플래시 메모리 디바이스 또는 상기 저항 가변 메모리 디바이스 중 하나에 할당되며, 상기 하이브리드 메모리 시스템의 상기 일부분은 상기 호스트와 상기 하이브리드 메모리 시스템의 상기 할당된 일부분 사이에서 데이터가 전송되는 것을 허용하도록 구성됨 - ; 및
    상기 할당된 감도, 상기 특정 유형의 파일 시스템 쓰기에 대응하는 상기 커맨드, 및 상기 특정 유형의 파일 시스템 쓰기로서 그것과 연관된 상기 결정 가능한 쓰기 패턴을 갖는 상기 특정 유형의 파일 시스템 쓰기에, 적어도 부분적으로, 기초하여 상기 커맨드를 핸들링할 때, 상기 낮은 액세스 레이턴시 및 상기 높은 내구성을 보이도록 구성되는 상기 플래시 메모리 디바이스 또는 상기 저항 가변 메모리 디바이스에 상기 호스트의 상기 메인 메모리와 연관된 논리 블록 어드레스(LBA)를 매핑함으로써 상기 스왑 동작의 성능의 일부로서 상기 하이브리드 메모리 시스템의 상기 플래시 메모리 디바이스 또는 상기 저항 가변 메모리 디바이스의 상기 할당된 일부분에 상기 호스트와 연관된 가상 메모리 위치에 의해 참조되는 상기 메인 메모리의 데이터의 페이지의 일부분을 선택적으로 전송하는 단계를 포함하는, 방법.
  11. 제10항에 있어서, 데이터를 저장하기 위해 하이브리드 메모리 시스템의 일부분을 할당하는 단계는 데이터를 저장하기 위해 하이브리드 메모리 시스템의 논리 블록 어드레스 범위를 할당하는 단계를 더 포함하는, 방법.
  12. 삭제
  13. 제10항에 있어서, 데이터는 데이터의 익명 페이지를 포함하고,
    데이터의 익명 페이지는 데이터의 프로세스 작업 세트에 대응하는 데이터를 포함하는, 방법.
  14. 제10항, 제11항 및 제13항 중 어느 한 항에 있어서, 호스트가 데이터를 참조 중이라는 결정에 응답하여, 하이브리드 메모리 시스템의 할당된 부분으로부터 다시 호스트로 데이터를 전송하는 단계를 더 포함하는, 방법.
  15. 제10항, 제11항 및 제13항 중 어느 한 항에 있어서, 호스트와 연관된 물리 메모리 위치가 호스트와 연관된 둘 이상의 가상 메모리 위치에 의해 참조된다는 결정에 응답하여, 데이터를 호스트로부터 하이브리드 메모리 시스템의 할당된 부분으로 선택적으로 전송하는 단계를 더 포함하는, 방법.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020207029008A 2018-03-21 2019-03-13 하이브리드 메모리 시스템 Active KR102434170B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/927,383 US10809942B2 (en) 2018-03-21 2018-03-21 Latency-based storage in a hybrid memory system
US15/927,383 2018-03-21
PCT/US2019/021960 WO2019182824A1 (en) 2018-03-21 2019-03-13 Hybrid memory system

Publications (2)

Publication Number Publication Date
KR20200121372A KR20200121372A (ko) 2020-10-23
KR102434170B1 true KR102434170B1 (ko) 2022-08-19

Family

ID=67985188

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207029008A Active KR102434170B1 (ko) 2018-03-21 2019-03-13 하이브리드 메모리 시스템

Country Status (7)

Country Link
US (2) US10809942B2 (ko)
EP (1) EP3769227A4 (ko)
JP (1) JP7049476B2 (ko)
KR (1) KR102434170B1 (ko)
CN (1) CN111919201B (ko)
TW (1) TWI696188B (ko)
WO (1) WO2019182824A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12242725B2 (en) 2023-03-20 2025-03-04 Xcena Inc. Electronic device and computing system including same

Families Citing this family (8)

* 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
US10705963B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10923178B1 (en) 2020-02-27 2021-02-16 Western Digital Technologies, Inc. Data storage with improved write performance for preferred user data
RU2757659C1 (ru) * 2020-06-16 2021-10-19 Александр Георгиевич Носков Накопитель магнитный с разделёнными областями
US11947839B2 (en) * 2021-05-10 2024-04-02 Samsung Electronics Co., Ltd. Storage device, system, and method for customizable metadata
US11860773B2 (en) * 2022-02-03 2024-01-02 Micron Technology, Inc. Memory access statistics monitoring
JP2023173240A (ja) * 2022-05-25 2023-12-07 東芝テック株式会社 計算機、メモリ制御方法およびメモリ制御プログラム
CN114936007A (zh) * 2022-06-02 2022-08-23 三星(中国)半导体有限公司 存储数据的方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150074339A1 (en) * 2013-09-10 2015-03-12 Hicamp Systems, Inc. Hybrid main memory using a fine-grain level of remapping

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH047763A (ja) * 1990-04-26 1992-01-13 Oki Electric Ind Co Ltd 主記憶割り当て管理方式
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
US6581142B1 (en) * 2000-09-01 2003-06-17 International Business Machines Corporation Computer program product and method for partial paging and eviction of microprocessor instructions in an embedded computer
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
KR100843543B1 (ko) * 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
KR100881187B1 (ko) * 2007-01-16 2009-02-05 삼성전자주식회사 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
TWI338856B (en) * 2007-03-09 2011-03-11 Ite Tech Inc A flash memory storing device and a data storing method thereof
JP4781373B2 (ja) * 2007-05-14 2011-09-28 株式会社バッファロー 記憶装置
US20100169602A1 (en) * 2008-12-29 2010-07-01 Jared E Hulbert Method and Apparatus for Efficient Memory Placement
US20100241815A1 (en) * 2009-03-20 2010-09-23 Google Inc. Hybrid Storage Device
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 삼성전자주식회사 하이브리드 메모리 시스템, 및 그 관리 방법
US8725963B1 (en) 2011-04-15 2014-05-13 Parallels IP Holdings GmbH System and method for managing a virtual swap file for virtual environments
US9514838B2 (en) * 2011-05-31 2016-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods for memory management using block tables
KR20130032772A (ko) * 2011-09-23 2013-04-02 삼성전자주식회사 하이브리드 메모리 장치, 이를 포함하는 컴퓨터 시스템, 및 하이브리드 메모리장치의 데이터 기입 및 독출 방법
JP5971547B2 (ja) * 2012-02-15 2016-08-17 国立大学法人 東京大学 メモリコントローラ,データ記憶装置およびメモリの制御方法
JP2014178913A (ja) * 2013-03-15 2014-09-25 Sony Corp 電子機器、スナップショットイメージの作成方法及びプログラム
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9430386B2 (en) * 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9946495B2 (en) * 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
US9921980B2 (en) 2013-08-12 2018-03-20 Micron Technology, Inc. Apparatuses and methods for configuring I/Os of memory for hybrid memory modules
CN106062724B (zh) * 2013-09-27 2020-09-08 慧与发展有限责任合伙企业 管理存储器模块上的数据的方法、存储器模块及存储介质
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
US9509771B2 (en) * 2014-01-14 2016-11-29 International Business Machines Corporation Prioritizing storage array management commands
KR20150089538A (ko) * 2014-01-28 2015-08-05 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
US9772776B2 (en) 2014-02-27 2017-09-26 Red Hat Israel, Ltd. Per-memory group swap device
US9711194B2 (en) * 2015-01-28 2017-07-18 Xilinx, Inc. Circuits for and methods of controlling the operation of a hybrid memory system
EP3097671B1 (en) * 2015-02-18 2021-05-19 Intel Corporation Traffic class arbitration based on priority and bandwidth allocation
US9459802B1 (en) * 2015-03-30 2016-10-04 Kabushiki Kaisha Toshiba Hybrid-HDD that limits dirty data in NAND
US10007435B2 (en) 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
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
JP2017138853A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム
US10678704B2 (en) * 2016-03-29 2020-06-09 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US9772943B1 (en) * 2016-04-01 2017-09-26 Cavium, Inc. Managing synonyms in virtual-address caches
US20170300422A1 (en) 2016-04-14 2017-10-19 Micron Technology, Inc. Memory device with direct read access
US10108555B2 (en) * 2016-05-26 2018-10-23 Macronix International Co., Ltd. Memory system and memory management method thereof
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
US11977484B2 (en) * 2016-07-19 2024-05-07 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
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
KR102798748B1 (ko) * 2017-02-15 2025-04-22 에스케이하이닉스 주식회사 하이브리드 메모리 시스템 및 그 제어 방법
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
US10705963B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150074339A1 (en) * 2013-09-10 2015-03-12 Hicamp Systems, Inc. Hybrid main memory using a fine-grain level of remapping

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12242725B2 (en) 2023-03-20 2025-03-04 Xcena Inc. Electronic device and computing system including same

Also Published As

Publication number Publication date
WO2019182824A1 (en) 2019-09-26
JP7049476B2 (ja) 2022-04-06
JP2021518605A (ja) 2021-08-02
TW201941197A (zh) 2019-10-16
TWI696188B (zh) 2020-06-11
US20190294363A1 (en) 2019-09-26
CN111919201A (zh) 2020-11-10
KR20200121372A (ko) 2020-10-23
EP3769227A1 (en) 2021-01-27
US20200409607A1 (en) 2020-12-31
EP3769227A4 (en) 2021-12-22
CN111919201B (zh) 2024-05-14
US10809942B2 (en) 2020-10-20

Similar Documents

Publication Publication Date Title
KR102434170B1 (ko) 하이브리드 메모리 시스템
KR102443600B1 (ko) 하이브리드 메모리 시스템
US11327892B2 (en) Latency-based storage in a hybrid memory system
US20160110291A1 (en) Coordination between memory-saving mechanisms in computers that run virtual machines
US11782854B2 (en) Cache architecture for a storage device
JP2021149374A (ja) データ処理装置
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

Patent event date: 20201008

Patent event code: PA01051R01D

Comment text: International Patent Application

PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20201008

Comment text: Request for Examination of Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20220121

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20220607

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20220816

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20220817

End annual number: 3

Start annual number: 1

PG1601 Publication of registration