KR101790913B1 - 플래시 메모리에 저장된 데이터의 추론적 프리페칭 - Google Patents

플래시 메모리에 저장된 데이터의 추론적 프리페칭 Download PDF

Info

Publication number
KR101790913B1
KR101790913B1 KR1020167021071A KR20167021071A KR101790913B1 KR 101790913 B1 KR101790913 B1 KR 101790913B1 KR 1020167021071 A KR1020167021071 A KR 1020167021071A KR 20167021071 A KR20167021071 A KR 20167021071A KR 101790913 B1 KR101790913 B1 KR 101790913B1
Authority
KR
South Korea
Prior art keywords
page
data
memory
data unit
storage
Prior art date
Application number
KR1020167021071A
Other languages
English (en)
Other versions
KR20160104710A (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 KR20160104710A publication Critical patent/KR20160104710A/ko
Application granted granted Critical
Publication of KR101790913B1 publication Critical patent/KR101790913B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • Y02B60/1225
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 저장을 위한 방법으로서, 저장 디바이스 에서의 읽기를 위한 추론적 읽기 모드의 정의를 규정하는 것을 포함하고, 추론적 읽기 모드에서 저장 디바이스는 데이터 유닛 크기를 갖는 데이터 유닛을 읽도록 요청되고, 이에 응답하여 상기 저장 디바이스는, 상기 데이터 유닛을 포함하고 상기 데이터 유닛 크기보다 큰 저장 페이지 크기를 갖는 저장 페이지를 검색하고, 후속 요청들에 대비하여 상기 저장 페이지를 보유한다. 추론적 읽기 모드의 활성화는 조정된다. 추론적 읽기 모드를 이용한 읽기 커맨드가 수행된다.

Description

플래시 메모리에 저장된 데이터의 추론적 프리페칭{SPECULATIVE PREFETCHING OF DATA STORED IN FLASH MEMORY}
본 발명은 일반적으로 데이터 저장에 관한 것으로, 구체적으로 비휘발성 메모리에 저장된 데이터를 프리페칭하기 위한 방법 및 시스템에 관한 것이다.
일부 컴퓨팅 시스템들은 가상 메모리(VM) 기술을 채용하는데, 이는 빠르지만 작은 휘발성 메모리 및 크지만 느린 비휘발성 메모리를 이용한다. 예를 들어, 일부 모바일 컴퓨팅 및 통신 디바이스들에서, 디바이스 운영체제(OS)는 디바이스 랜덤 액세스 메모리(RAM)를 솔리드 스테이트 드라이브(SSD)와 공동으로 운용하는 VM 모듈을 포함한다.
VM을 이용하는 다양한 방법들이 기술분야에 알려져 있다. 예를 들어, 개시내용이 본 명세서에 참조로서 포함되는 미국 특허 8,429,377은 메모리에 액세스하기 위한 시스템 및 방법을 기술한다. 시스템은 가상 어드레스에 있는 메모리 페이지에 대한 요청을 발행하는 프로세서 디바이스, 및 하나 이상의 페이지 테이블 엔트리를 저장하기 위한 룩업 버퍼를 포함하고, 페이지 테이블 엔트리들의 각각은 적어도 가상 페이지 수 및 물리적 페이지 수를 포함한다. 시스템은 동일한 페이지 테이블 엔트리에서 물리적 페이지 수를 선택하도록, 프로세서로부터 가상 어드레스를 수신하고, 가상 어드레스를 페이지 테이블 엔트리들 중 하나의 가상 페이지 수에 매칭시키는 로직 회로를 추가로 포함한다. 페이지 테이블 엔트리는 한 페이지에서 일정 메모리 범위를 배제하기 위하여 설정되는 하나 이상의 비트를 포함한다.
2010년 4월, 독일 파사우에서 열린 제9차 IFIP WG 8.8/11.2 국제 회의 CARDIS 2010 의사록, Smart Card Research and Advanced Application의 "Key-Study to Execute Code Using Demand Paging and NAND Flash at Smart Card Scale"에서 페이지 102-117는, 본 명세서에서 참조로서 포함되고, 지오프로이(Geoffroy) 등은 스마트 카드 또는 센서와 같이 작은 시스템에 다중 애플리케이션들을 내장하는 데 수반되는 한계점들에 대하여 논의했다. 이 시스템들의 물리적 제약, 예컨대 매우 작은 메인 메모리, 및 그것들의 생산 비용은 그것을 성취하기 어렵게 만든다. 이 연구에서 제안하는 한가지 해결책은 더 저렴하고, 더 밀도 있지만, 더 느린 2차 메모리, 예컨대 NAND 플래시로부터 코드를 실행하는 것이다.
본 발명의 실시예는 저장 디바이스에서의 읽기를 위한 추론적 읽기 모드의 정의를 규정하는 단계를 포함하는 방법을 제공하며, 추론적 읽기 모드에서 저장 디바이스는 데이터 유닛 크기를 갖는 데이터 유닛을 읽도록 요청되고, 이에 응답하여 저장 디바이스는, 데이터 유닛을 포함하고 데이터 유닛 크기보다 큰 저장 페이지 크기를 갖는 저장 페이지를 검색하고, 후속 요청들에 대비하여 저장 페이지를 보유한다. 추론적 읽기 모드의 활성화는 조정된다. 추론적 읽기 모드를 이용한 읽기 커맨드가 수행된다.
일부 실시예들에서, 활성화를 조정하는 것은 저장 디바이스에서 단일 데이터 유닛을 읽기 위한 커맨드를 수신하는 것을 포함하고, 읽기 커맨드를 수행하는 것은 보유된 저장 페이지로부터 단일 데이터 유닛을 읽는 것을 포함한다. 다른 실시예들에서, 읽기 커맨드를 수행하는 것은 단일 데이터 유닛이 보유된 저장 페이지에 없음을 검출 시 에러 이벤트를 보고하는 것을 포함한다. 또 다른 실시예들에서, 읽기 커맨드를 수행하는 것은 보유된 저장 페이지 내의 모든 데이터 유닛들이 요청된 이후에 보유된 저장 페이지를 폐기하는 것을 추가로 포함한다.
실시예에서, 읽기 커맨드를 수행하는 것은 저장 디바이스에서 보유된 저장 페이지 내의 특정 데이터 유닛을 읽으라는 요청을 수신하는 것, 및 보유된 저장 페이지로부터 특정 데이터 유닛 및 모든 연속적인 데이터 유닛들을 반환하는 것을 포함한다. 다른 실시예에서, 활성화를 조정하는 것은 저장 디바이스로부터 저장 페이지 크기를 보고하는 것을 포함한다. 또 다른 실시예에서, 방법은 저장 디바이스에서 크기가 저장 페이지 크기와 동일한 데이터를 저장하기 위한 쓰기 커맨드를 수신하는 것, 및 저장 디바이스의 페이지 경계에 맞춰 데이터를 저장하는 것을 추가로 포함한다.
비휘발성 메모리 및 프로세서를 포함하는 저장 디바이스에 따라, 추가적으로 제공되는 것이 있다. 프로세서는 추론적 읽기 모드의 정의를 규정하고 - 추론적 읽기 모드에서 저장 디바이스는 데이터 유닛 크기를 갖는 데이터 유닛을 읽도록 요청되고, 이에 및 응답하여 저장 디바이스는 비휘발성 메모리로부터 데이터 유닛을 포함하고 데이터 유닛 크기보다 큰 저장 페이지 크기를 갖는 저장 페이지를 검색하고, 후속 요청들에 대비하여 저장 페이지를 보유함 -, 추론적 읽기 모드의 활성화를 조정하고, 추론적 읽기 모드를 이용하여 읽기 커맨드를 수행하도록 구성된다.
본 발명은 다음의 도면들과 함께, 본 발명의 실시예들의 상세한 설명으로부터 보다 완전히 이해될 것이다.
도 1은 본 발명의 실시예에 따라, 저장 시스템을 개략적으로 예시하는 블록 다이어그램이다.
도 2 내지 도 4는 추론적 프리페칭의 일부로서 데이터 캐시저장 및 읽기를 개략적으로 예시하는 다이어그램들이다.
도 5는 본 발명의 실시예에 따라 페이지 경계에 맞춰 데이터를 저장함으로써 추론적 데이터 프리페칭을 위한 방법을 개략적으로 예시하는 흐름도이다.
도 6은 본 발명의 실시예에 따라 애플리케이션들의 기동 시간을 줄이기 위한 방법을 개략적으로 예시하는 흐름도이다.
개괄
본 명세서에 기재된 발명의 실시예들은 가상 메모리(VM) 동작을 위한 개선된 방법 및 시스템을 제공한다. 많은 저장 시스템에서, 운영체제(OS)가 특정 프로세스를 위하여 호스트의 휘발성 메모리(본 명세서에서 "로컬 메모리"로 지칭됨) 내에 할당하는 공간은 프로세스의 전체 코드 및 데이터를 포함하는 데 충분하지 않다. 이러한 시나리오는, 예를 들어, 로컬 메모리의 전체 저장 공간이 프로세스가 요구하는 공간보다 작거나, OS가 다수의 프로세스를 동시에 실행할 때 발생할 수 있다.
일부 실시예들에서, OS는 가상 메모리(VM) 서브시스템을 포함하고, 이는 로컬 메모리에서 실행되는 프로세스들을 위한 메모리를 관리한다. 본 명세서에 기재된 실시예들에서, VM은 로컬 메모리 및 플래시-기반 솔리드 스테이트 드라이브(SSD)와 같은 큰 비휘발성 메모리를 관리한다. VM은 OS에 의해 프로세스에 할당된 공간보다 큰 메모리 공간을 프로세스가 사용할 수 있도록 한다. 종종, 프로세스는 현재 로컬에서 이용불가능한 데이터에 액세스를 시도할 수 있다. 이러한 이벤트를 페이지 폴트 이벤트(page fault event)라고 부른다. VM은 통상적으로 SSD에서 문제의 데이터를 꺼냄으로써 페이지 폴트에 대응한다.
VM은 본 명세서에서 데이터 청크 또는 데이터 유닛으로 지칭되는 유닛으로, SSD 내의 데이터에 액세스한다. 페이지 폴트를 검출하는 경우(또는 그것의 표시를 수신하는 경우), VM은 미싱 데이터가 속하는 데이터 청크 (미싱 청크라고도 지칭됨)를 요청함으로써 SSD에서 각각의 미싱 데이터를 페치한다. 일부 실시예들에서, 미싱 데이터에 대한 액세스 속도를 개선하기 위하여, VM은 미싱 청크 뿐만 아니라, 하나 이상의 연속적인 데이터 청크를 페치하도록 구성될 수 있다. 이 동작 모드는 추론적 프리페칭으로 지칭된다. 그러나, SSD-기반 저장 시스템에서의 추론적 프리페칭은 아래 더 기재한 바와 같이 문제점이 있을 수 있다.
통상적으로, OS는 추가로 파일 및 디렉토리와 같은 로직 구조로 데이터의 저장(예컨대, 사용자 또는 기타 데이터)을 관리하는 파일 시스템(FS) 서브시스템을 포함한다. FS는 파일들을 SSD에 저장한다. 컴퓨터 프로그램은 하나 이상의 파일을 실행하거나 또는 다른 방식으로 이용할 수 있다. 예를 들어, 애플리케이션 프로그램은 대량의 작은 파일들, 예컨대 실행 파일들 및 멀티미디어 파일들에 액세스할 수 있다. 애플리케이션을 실행할 때, FS는 우선 각각의 애플리케이션 파일들을 SSD에서 로컬 메모리로 업로드하고, 이어서 호스트는 로컬 메모리로부터 애플리케이션을 실행한다. 애플리케이션의 파일들을 업로드하는 프로세스를 애플리케이션 기동라고 지칭한다. 애플리케이션 파일들은 실행 전에 업로드되어야 하기 때문에, 애플리케이션 기동 시간이 짧을수록 사용자 경험은 좋아진다.
호스트에서, OS의 VM 및 FS 서브시스템은 통상적으로 로직 어드레스들의 연속적인 공간에서 메모리를 관리한다. SSD는 통상적으로 플래시 메모리의 물리적 어드레스에서 저장을 관리하는 SSD 제어기를 포함한다. 로직 어드레스는 플래시 메모리에서 데이터 청크들의 각각의 물리적 어드레스에 대응한다. SSD 제어기는 통상적으로 로직 어드레스와 물리적 어드레스 사이에 변환 테이블을 유지한다.
SSD 제어기는 저장 페이지, 또는 간결하게 단순히 페이지로 지칭되는 유닛들의 형태로 SSD에 데이터를 저장한다. 일부 경우에, VM(또는 FS)은 SSD의 페이지 크기보다 작은 데이터 청크들을 페치하도록 구성된다. 다시 말하면, SSD 내의 페이지는 통상적으로 VM이 한번에 하나씩 요청할 수 있는 다수의 데이터 청크를 포함한다. 아래에 기재된 바와 같이, 저장 페이지와 데이터 청크 간의 이러한 크기 미스매치는 추론적 프리페칭의 잠재적 이득을 살리지 못할 수 있다.
일부 실시예들에서, OS는 본 명세서에서 청크 또는 세그먼트로 지칭되는 유닛의 데이터를 읽는다. 청크 크기는, 예를 들어, 512 byte 또는 4 Kilobytes(KB)일 수 있다. 이와는 반대로, SSD 내의 데이터는, 크기가 통상적으로 청크 크기보다 큰 저장 페이지의 형태로 플래시 메모리에 쓰거나 검색된다. 예시적인 페이지 크기는 8 KB, 16 KB, 및 32 KB를 포함한다.
실시예에서, 페이지 폴트 이벤트에 응답하여, VM은 각각의 미싱 청크(즉, 페이지 폴트를 생성한 미싱 데이터가 속한 청크)를 SSD에 요청한다. 이론적으로, VM은 미싱 청크뿐만 아니라, 하나 이상의 연속적인 청크를 요청함으로써 추론적 프리페칭을 수행할 수 있다. 그러나, 이 프리페칭 동작은 미싱 데이터에 액세스하는 속도를 개선하지 못할 수 있는데, 그 이유는 VM이 동일한 페이지 내에서 다중 청크를 요청할 때에도, 각각의 청크 요청마다 SSD가 페이지 전체를 검색하기 때문이다. 또한, 페이지검색의 그러한 중복 동작은 전력 소모 증가를 야기하고, 이는 시스템의 배터리 수명을 단축한다.
개시된 기술들에서, VM이 미싱 청크를 요청하면, 이 청크를 포함하는 페이지가 검색되고, SSD에 캐시저장된다. 이어서 VM이 이미 캐시저장된 하나 이상의 청크를 요청하면(예컨대, 추론적 프리페칭을 수행하면), 이 청크들은 SSD로부터 불필요하게 각각의 페이지의 다시읽기를 하지 않고, 캐시저장된 페이지로부터 읽히게 된다.
다음의 기재에서, SSD 제어기, 및 휘발성 캐시 메모리를 포함하는 기본적인 SSD 저장을 가정한다. 명료함을 위하여, 다른 방식으로 진술되지 않는다면, SSD의 비휘발성 메모리를 "플래시 메모리"로 지칭한다. 플래시 메모리는 임의의 적절한 수의 개별적인 플래시 디바이스를 포함할 수 있다.
실시예에서, 호스트 VM은 미싱 청크의 검색 요청을 SSD에 발행하고, 추가적으로 추론적 프리페칭 동작에 대하여 SSD 제어기에 표시한다. SSD 제어기는 요청된 청크가 속하는 페이지를 플래시 메모리로부터 검색하고, 그 페이지를 캐시 메모리에 캐시저장한다. SSD 제어기는 요청된 청크를 호스트에 전달하고, VM이 캐시저장된 페이지의 모든 다른 청크들을 요청할 때까지 캐시저장된 페이지를 유지한다.
실시예에서, VM은 SSD 제어기로 하여금 플래시 메모리로부터 페이지 전체를 다시읽기 하지 않고 캐시저장된 페이지로부터 그러한 청크를 각각 읽도록 명령함으로써, SSD에 이미 캐시저장된 페이지의 일부인 청크들을 읽는다. VM이 캐시저장된 청크를 요청하지만, 요청된 청크가 캐시저장된 페이지에 없으면, SSD 제어기는 각각의 에러 표시를 VM에 반환한다. 이어서, VM은 각각의 페이지를 캐시저장하거나 또는 캐시저장하지 않고 그 청크를 읽을 수 있다. 캐시저장된 청크를 읽는 것이 플래시 메모리로부터 청크를 읽는 것보다 빠르다.
일부 실시예들에서, VM은 미싱 청크를 요청하고 추가적으로 추론적 프리페칭 동작에 대하여 SSD에 공지함으로써 추론적 프리페칭을 수행한다. SSD는 요청된 청크가 속하는 페이지를 플래시 메모리부터 검색하고, 그 페이지를 캐시저장하고, 요청된 청크뿐만 아니라, 캐시저장된 페이지 내의 모든 연속적인 청크들을 호스트에 반환한다.
이론적으로, 추론적 프리페칭은, 단일 VM 요청이 SSD 제어기로 하여금 페이지 경계들에 맞춰 정렬된 청크들을 검색하도록 할 때 더 효율적이다. 그러나, VM은 페이지 내에서 개별적인 청크들의 위치를 명확하게 알지 못하고, 따라서 VM은 명쾌하게 페이지 경계들에 맞춰 정렬된 청크들을 요청할 수 없다.
실시예에서, SSD 제어기는 플래시 메모리에서 사용된 페이지 크기를 VM에 보고한다. 이어서, VM은 수신된 페이지 크기를 갖는 유닛으로 데이터를 저장하고, 그 동안 추가적으로 SSD 제어기로 하여금 플래시 메모리 내에서 페이지 경계들에 맞춰 그와 같은 유닛을 각각 저장하도록 명령한다. 나중에 VM이 각각의 저장된 데이터를 읽을 때, VM은 위에서 기재한 바와 같이 페이지 내의 제1 청크를 요청함으로써 추론적 프리페칭을 수행하고, 추론적 프리페칭 요청에 응답하여, SSD는 제1 청크가 속하는 페이지를 읽고 캐시저장하고, 페이지 전체를 호스트에 전달한다.
애플리케이션을 기동할 때, 예를 들어, 애플리케이션 파일들이 플래시 메모리 내에 연속적으로 저장된 경우, 기동 시간을 줄이기 위하여 추론적 프리페칭을 수행하는 것이 이익일 수 있다. 그러나, 애플리케이션 파일들을 각각 업로드할 때, FS는 파일들이 애플리케이션 프로그램에 공통적인지 알지 못하여, 이 파일들을 업로드할 때 추론적 프리페칭 모드로 전환되도록 명확하게 표시하지 않는다. 실시예에서, OS는 애플리케이션 기동을 개시할 때 FS에 표시한다. 응답하여, 이어서 FS는 추론적 프리페칭 모드로 각각의 애플리케이션 파일들을 읽도록 전환한다.
일부 실시예들에서, OS는 애플리케이션 기동을 시작 및 종료하면 SSD 제어기에 표시한다. 응답하여, SSD는 기동된 애플리케이션의 업로드된 파일들의 로직 및 각각의 물리적 어드레스를 모니터하고 기록한다. 이어서, SSD 제어기는 플래시 메모리 내의 인접한 범위의 물리적 어드레스에 애플리케이션 파일들을 연속적으로 재배열하여, 후속적으로 추론적 프리페칭을 이용한 효율적인 동일한 애플리케이션의 기동이 가능하도록 한다.
대안적인 실시예들에서, OS는, OS가 애플리케이션 기동을 개시 및 종료할 때마다 (SSD 이외의) FS에 표시한다. FS는 업로드된 애플리케이션 파일들의 로직 어드레스를 기록하고, 기록된 어드레스들을 전용 조각모음 커맨드를 이용하여 SSD 제어기에 전송한다. 이어서 SSD 제어기는 플래시 메모리 내에 애플리케이션 파일들을 연속적으로 재배열하고, 그에 따라 어드레스 변환 테이블을 업데이트한다.
개시된 기술들은 추론적 프리페칭을 수행하도록 하여, 플래시 메모리로부터 불필요한 읽기 동작들을 삼가면서, 페이지 폴트 이벤트의 검출 시 미싱 데이터에 액세스하는 속도를 개선하고, 애플리케이션들을 기동하는 시간을 줄일 수 있다. 따라서 개시된 기술들은 시스템의 읽기 지연시간, 전력 소모, 및 배터리 수명 기간을 개선한다.
시스템 설명
도 1은 본 발명의 실시예에 따라, 메모리 시스템을 개략적으로 예시하는 블록 다이어그램이다. 본 예시에서, 메모리 시스템은 솔리드 스테이트 드라이브(SSD)(24)에 데이터를 저장하는 컴퓨터(20)를 포함한다. 컴퓨터(20)는, 예를 들어, 모바일, 태블릿 또는 개인용 컴퓨터를 포함할 수 있다. 컴퓨터는 호스트의 역할을 하는 중앙 처리 유닛(CPU)(26)을 포함한다. 다음의 기재에서, 용어 CPU 및 호스트는 상호교차하여 사용된다.
대안적인 실시예들에서, 호스트는 임의의 다른 적절한 프로세서 또는 제어기를 포함할 수 있고, 저장 디바이스는 임의의 다른 적절한 디바이스를 포함할 수 있다. 예를 들어, 호스트는 기업용 저장 시스템의 저장 제어기를 포함할 수 있고, 저장 디바이스는 SSD 또는 SSD들의 어레이를 포함할 수 있다. 비휘발성 저장 디바이스에 데이터를 저장하는 호스트들의 다른 예는 이동 전화기, 디지털 카메라, 미디어 플레이어 및 탈착가능 메모리 카드 또는 디바이스를 포함한다.
실시예에서, CPU(26)는 컴퓨터(20)의 다양한 태스크들을 처리하는 운영체제(OS)(27)를 실행한다. OS는 추가로 파일 시스템(FS)(28), 및 가상 메모리(VM) 서브시스템(29)을 포함한다. FS(28)는 디렉토리 및 파일들과 같은 로직 구조로 사용자(및 기타) 데이터의 조직화를 처리한다. VM(29)은, FS가 업로드하고, OS가 휘발성 호스트 메모리(32)로부터 실행하는 프로세스를 위하여 메모리를 관리한다. 메모리(32)는 또한 로컬 메모리로도 지칭된다. 메모리(32)는, 예를 들어, DDR, DDR2, DDR3, DDR3L, SDRAM, 또는 RDRAM과 같은 임의의 적절한 유형의 휘발성 메모리를 포함할 수 있다. 통상적인 애플리케이션에서, 메모리(32)의 크기는 1GB 내지 32GB 사이지만, 임의의 다른 적절한 크기도 사용될 수 있다.
SSD(24)는 CPU(26)를 위한 데이터를 비휘발성 메모리, 본 예시에서 하나 이상의 NAND 플래시 메모리 디바이스(34)에 저장한다. 대안적인 실시예들에서, SSD(24)의 비휘발성 메모리는, 예컨대 NOR 플래시, CTF(Charge Trap Flash), PRAM(Phase Change RAM), MRAM(Magnetoresistive RAM) 또는 FeRAM(Ferroelectric RAM)과 같은 임의의 기타 적합한 유형의 비휘발성 메모리를 포함할 수 있다.
SSD 제어기(30)는 SSD의 다양한 저장 및 관리 태스크들을 수행한다. SSD 제어기는 또한 일반적으로 메모리 제어기로도 지칭된다. SSD 제어기(30)는 CPU(26)와 통신하기 위한 호스트 인터페이스(38), 플래시 디바이스들(34)과 통신하기 위한 메모리 인터페이스(46), 및 SSD의 다양한 프로세싱 태스크들을 수행하는 프로세서(42)를 포함한다.
SSD(24)는 추가로 휘발성 메모리인, 본 예시에서 랜덤 액세스 메모리(RAM)(50)를 포함한다. 도 1의 실시예에서, RAM(50)은 SSD 제어기(30)의 일부분으로서 도시되지만, RAM은 대안적으로 SSD 제어기와 분리될 수 있다. RAM(50)은, 예를 들어, Static RAM(SRAM), Dynamic RAM(DRAM), 두 RAM 유형의 조합, 또는 임의의 다른 적절한 유형의 휘발성 메모리를 포함할 수 있다. RAM(50)은 데이터 또는 그것들의 일부를 CPU(26) 또는 호스트 메모리(32)에 전달하기 전에 플래시 디바이스들(34)로부터 읽히는 데이터를 캐시저장하는 데 사용될 수 있다. 아래에 기재된 바와 같이, 일부 실시예들에서, RAM(50)은, 요청 시, 하나 이상의 데이터 청크가 CPU(26)에 전달되는 데이터 페이지를 캐시저장한다.
도 1의 아랫 부분은 NAND 플래시 디바이스(34)의 예시적인 상세 블록 다이어그램을 도시한다. 본 예시에서, 디바이스(34)는 읽기/쓰기(R/W) 유닛(70)을 포함하고, 이는 데이터를 메모리 디바이스 내 저장을 위하여 저장 값들로 변환하여 플래시 메모리 어레이(76)의 메모리 셀들(예컨대, 아날로그 메모리 셀들)에 기록한다. 대안적인 실시예들에서, R/W 유닛은 변환을 수행하지 않지만, 전압 샘플들을, 즉 셀들에서의 저장을 위한 저장 값들을 제공받는다. R/W 유닛은 통상적으로(필수적은 아님) 반복적인 프로그램과 검증(P&V) 프로세스를 이용하여 메모리 셀들을 프로그래밍하고, 이는 기술분야에 알려진 바와 같다. 데이터를 어레이(76)로부터 읽으면, R/W 유닛(70)은 메모리 셀들의 저장 값을 하나 이상의 비트의 해상도를 갖는 디지털 샘플들로 변환한다. 통상적으로 데이터는 데이터 페이지 또는 단순히 페이지로 지칭되는 그룹 형태의 메모리 셀들에 쓰이고 그것들로부터 읽힌다. 플래시 디바이스들, 예컨대 디바이스들(34)은 통상적으로 8 KB, 16 KB 또는 32 KB 페이지를 포함한다. 일부 실시예들에서, R/W 유닛은 하나 이상의 음의 이레이저 펄스를 셀들에 가함으로써, 메모리 어레이(76) 내의 셀들의 그룹, 예컨대, 다중 페이지를 포함하는 블록을 지울 수 있다.
메모리 어레이(76)는 2 개의 프로그래밍 레벨을 이용하여 1 bit/cell을 저장하는 단일-레벨 셀(SLC) 메모리 어레이, 또는 2N 프로그래밍 레벨에서 N bits/cell을 저장하는 멀티-레벨 셀(MLC) 메모리 어레이를 포함할 수 있다. 예를 들어, 2 bits/cell 디바이스는 4 개의 프로그래밍 레벨을 사용하고, 3 bits/cell 디바이스는 8 개의 프로그래밍 레벨을 사용한다.
일부 메모리 디바이스들은 보통 플레인으로 지칭되는 둘 이상의 별개의 메모리 셀 어레이를 포함한다. 예를 들어, 각각의 플레인이 16 KB 페이지를 포함하는 2-플레인 디바이스에서, SSD 제어기는 멀티-플레인 액세스 방법을 이용하여 단일 읽기 동작으로 32 KB를 검색할 수 있다.
SSD 제어기(30)의 프로세서(42)는 통상적으로 로직-물리적 어드레스 변환을 유지하는데, 이는 플래시 디바이스들(34)에서 호스트에 의해 명시된 로직 어드레스를 각각의 물리적 저장 위치(물리적 어드레스라고도 지칭됨)와 연관시키고 적절한 물리적 저장 위치에 데이터를 저장한다. 로직-물리적 어드레스 변환(가상-물리적 맵핑 ― V2P라고도 지칭됨)은 RAM(50), 플래시 디바이스들(34), 또는 둘 모두에 저장될 수 있다.
로직 및 각각의 물리적 어드레스들은 본 명세서에서 데이터 청크들로 지칭되는 데이터 유닛들에 액세스한다. 일부 실시예들에서, 데이터 페이지의 크기는 데이터 청크의 크기보다 크다. 예를 들어, VM은 크기가 4 KB인 데이터 청크들, 및 16 KB인 페이지들을 갖는 플래시 메모리들로 구성될 수 있다. 통상적으로, 필수적인 것은 아니지만, 데이터 페이지는 정수로 된 데이터 청크들을 포함한다.
SSD 제어기(30), 및 특히 프로세서(42)는 하드웨어로 구현될 수 있다. 대안적으로, SSD 제어기는 적합한 소프트웨어 또는 하드웨어 및 소프트웨어 요소들의 조합을 구동하는 마이크로프로세서를 포함할 수 있다.
도 1의 구성은 예시적인 구성이며, 이는 오직 개념적인 명료함을 위해 도시된다. 임의의 다른 적합한 SSD 또는 기타 메모리 시스템 구성이 또한 사용될 수 있다. 다양한 인터페이스들, 어드레싱 회로들, 타이밍 및 시퀀싱 회로들, 및 디버깅 회로들과 같은, 본 발명의 원리들을 이해하기 위해 필요하지 않은 요소들이 명료함을 위해 도면으로부터 생략되었다. 일부 애플리케이션들에서, 예컨대, 비-SSD 애플리케이션들, SSD 제어기(30)의 기능들은 적절한 메모리 제어기에 의해 수행된다.
도 1에 도시된 예시적인 시스템 구성에서, 메모리 디바이스들(34) 및 SSD 제어기(30)는 별개의 집적 회로들(IC들)로서 구현된다. 그러나, 대안적인 실시예들에서, 메모리 디바이스들 및 SSD 제어기는 단일 다중-칩 패키지(Multi-Chip Package; MCP) 또는 시스템 온 칩(System on Chip; SoC)에서 별개의 반도체 다이들 상에 통합될 수 있으며, 내부 버스를 통해 상호접속될 수 있다. 더 대안적으로, SSD 제어기 회로의 일부 또는 전부는 하나 이상의 메모리 디바이스(34)가 배치되는 다이와 동일한 다이 상에 존재할 수 있다. 더 대안적으로, SSD 제어기(30)의 기능 중 일부 또는 전부는 소프트웨어로 구현될 수 있고, 컴퓨터 내의 CPU(26) 또는 기타 프로세서에 의해 수행될 수 있다. 일부 실시예들에서, CPU(26) 및 SSD 제어기(30)는 동일한 다이, 또는 동일한 디바이스 패키지 내의 별개의 다이 상에서 제조될 수 있다.
일부 실시예들에서, 프로세서(42) 및/또는 CPU(26)는 범용 프로세서를 포함하며, 이는 본 명세서에서 기술된 기능들을 수행하기 위해 소프트웨어로 프로그래밍된다. 소프트웨어는 예를 들어 네트워크를 통해, 전자 형태로 프로세서에 다운로드될 수 있거나, 그것은 대안적으로 또는 부가적으로, 자기, 광학, 또는 전자 메모리와 같은, 비-일시적 유형 매체(non-transitory tangible media) 상에 제공되고/되거나 저장될 수 있다.
SSD-기반 저장 시스템의 VM 프리페칭
다음의 기재에서, VM(29)이 플래시 메모리들(34)로부터 고정된 크기의 청크들 또는 세그먼트들의 데이터를 페치한다고 가정한다. 일부 실시예들에서, SSD 제어기(30)는 호스트 인터페이스(38)를 통한 데이터 전달을 위한 최소 유닛 크기, 즉, 예를 들어 512 bytes 또는 4 KB와 같은 청크 크기를 OS(27)에 알린다. 다음의 기재에서 4 KB 청크 크기를 가정한다. 그러나, 대안적으로, 임의의 다른 적절한 청크 크기도 사용될 수 있다.
소프트웨어 프로세스 또는 OS(27)에 의해 호스트 메모리(32)로부터 실행되는 애플리케이션이 메모리(32) 국부적으로 이용불가능한 데이터에 액세스가 필요한 경우, 페이지 폴트 이벤트가 발생한다. 페이지 폴트가 발생하는 경우, VM은 각각의 플래시 메모리들(34)로부터 미싱 데이터를 페치하도록 SSD 제어기에 하나 이상의 I/O 요청을 발행한다. 미싱 데이터가 속하는 데이터 청크는 또한 미싱 청크로도 지칭된다. VM은 한번에 오직 하나의 청크(즉, 미싱 청크)만 페치할 수 있지만, 많은 경우에, 소프트웨어 프로세스의 실행이 진행함에 따라, VM은, 높은 가능성으로, 추가적으로 연속적인 데이터 청크들를 페치해야 할 것이다. 따라서, 통상적으로 단지 미싱 청크만이 아니라 연속적인 범위의 다중 청크들을 페치하는 것이 더 효율적이다. 본 발명의 맥락 및 청구범위에서, 용어 "추론적 프리페칭"은 미싱 청크에 연속적인 하나 이상의 추가적인 청크를 페칭하는 것을 지칭한다. 추론적 프리페칭에서 페칭된 청크들은 미싱 청크에 선행하는 하나 이상의 청크를 포함할 수 있다.
아래에 설명된 바와 같이, VM(29)이 추론적 프리페칭 모드에서 동작하도록 구성하는 것은 플래시 메모리들(34)로부터 중복 읽기 동작들을 만들어, 지연시간 및 전력 소모 증가를 야기할 수 있다. 예를 들어, 플래시 메모리들(34)의 각각이 16 KB 페이지를 저장하는 것을 가정할 수 있다. VM(29)이 단일 4 KB 데이터 청크를 요청하는 경우, SSD 제어기는 이 청크가 속하는 전체 16 KB 페이지를 읽고, 요청된 청크만 호스트(26)에 전달해야 한다. 후속적으로 VM이 다른 페이지들에 대하여 액세스를 요청하는 경우, 다른 3 개의 읽기 청크들(이 예에서 12 KB)은 활용되지 않는다. 또한, VM(29)이 추론적으로 모두 동일한 페이지 내에 위치한 다중 4 KB 청크들을 요청하는 경우, 각각의 개별적인 VM 요청은 전체 16 KB 페이지에 대한 별개의 읽기 동작을 생성하고, 그러한 각각의 읽기 동작에 대하여 16 KB 페이지 중 오직 4 KB만이 호스트(26)에 전달된다. 보이는 바와 같이, 위의 예들은 오직 25%(16 KB 중 4 KB)의 대역폭 활용을 보여준다.
아래에 기재된 개시된 기술들은 VM이 대역폭 및 전력 소모 낭비없이 추론적 프리페칭을 수행하도록 한다. 개시된 기술들에서, 새로운 VM 동작들을 정의함으로써, SSD 제어기는 한번에 데이터 페이지를 읽고 캐시저장하고, 요청 시 그 페이지의 캐시저장된 데이터 청크들을 호스트에 전달할 수 있다.
효율적인 추론적 프리페칭을 위한 방법
도 2 내지 도 4는 추론적 프리페칭의 일부로서 데이터 캐시저장 및 읽기를 개략적으로 예시하는 다이어그램들이다. 도 2 내지 도 4의 각각에 도시된 다이어그램은 3 개의 컬럼을 포함한다. 제일 좌측 및 제일 우측 컬럼들은 VM(29) 및 SSD 제어기(30)에 의해 각각 수행되는 동작들을 지칭한다. 각각의 다이어그램에서 중간 컬럼은 4 개의 4 KB 데이터 청크들을 포함하는 캐시저장된 16 KB 페이지를 도시한다. 각각의 다이어그램은 라인마다 단일 VM 동작 및 각각의 SSD 제어기 동작을 도시하는, 다중 라인들을 추가로 포함한다. 따라서, 각각의 다이어그램은 시간이 지남에 따라 수행되는 VM 동작들의 시퀀스를 도시한다. 도 2 내지 도 4의 다이어그램들에서, 각각의 4 KB 청크는 그것의 각각의 물리적 어드레스, 예컨대 ADR1, ADR2 등으로 식별된다. 따라서, 예를 들어, ADR3 청크는 플래시 메모리들 내의 물리적 어드레스가 ADR3인 데이터 청크를 지칭한다. 개시된 방법들에서, SSD 제어기는 플래시 메모리들(34)로부터 검색된 페이지들을 RAM(50) 내에 캐시저장한다.
이제 도 2를 참조한다. 본 예시에서 물리적 어드레스들이 ADR1 내지 ADR4을 나타내는 4 개의 순차적인 4 KB 청크들을 포함하는 16 KB 페이지를 가정한다. 제1 동작, 즉, READ_VM1(ADR3)에서, VM은 ADR3 청크를 요청하지만, 추가적으로 SSD 제어기(30)에 추론적 프리페칭 동작에 대하여 표시한다. SSD 제어기(30)는 플래시 메모리 내에서 요청된 청크가 저장된 16 KB 페이지를 읽음으로써 응답하고 페이지를 RAM(50)에 캐시저장한다. 캐시저장된 페이지는 청크들 ADR1 내지 ADR4를 포함한다. 이어서 SSD 제어기(30)는 캐시저장된 페이지로부터 ADR3 청크만을 호스트(26)에 전달한다.
그 다음 VM은 READ_NO_SENSE(ADR1) 동작을 수행하는데, 여기서 VM은 ADR1 청크를 요청하여, 캐시저장된 페이지로부터 청크를 읽도록 나타낸다. SSD 제어기(30)는 캐시저장된 ADR1 청크를 읽고, 전체 16 KB 페이지를 다시 읽지 않으면서 그것을 호스트(26)에 전달함으로써 응답한다. 그 다음, VM(29)은 유사하게 READ_NO_SENSE(ADR2) 동작을 수행하여 SSD 제어기(30)로 하여금 캐시저장된 ADR2 청크를 읽고 호스트에 전달하도록 한다.
READ_NO_SENSE(ADR5) 동작을 수행할 때, VM은 ADR5 청크를 요청하는데, 이는 캐시저장된 청크들 ADR1 내지 ADR4 중 일부가 아니다. 결과적으로, SSD 제어기(30)는 VM에 READ_NO_SENSE_MISS 에러 이벤트를 표시함으로써 응답한다. 미스 이벤트는 요청된 청크가 아직 캐시저장되지 않아서, READ_NO_SENSE 동작을 이용하여 읽을 수 없음을 VM에 표시한다.
VM이 READ_NO_SENSE(ADR4) 동작을 이용하여 ADR4 청크를 요청하는 경우, SSD 제어기(30)는 캐시저장된 ADR4 청크를 읽어서 호스트에 전달한다. 이 동작에 의해 VM은 모든 캐시저장된 청크들 ADR1 내지 ADR4(반드시 순차적인 순서는 아님)를 요청하는 것을 완료하기 때문에, SSD 제어기는 또한 다른 페이지들을 캐시저장하기 위하여 RAM(50) 내에 동일한 메모리 공간을 이용할 수 있도록 캐시저장된 페이지를 풀어준다.
도 3은 추론적 프리페칭을 위한 다른 방법을 기재한다. 실시예에서, VM은 단일 4 KB 청크를 요청하지만, VM은 요청된 청크가 속하는 최대 전체 16 KB 페이지까지 SSD 제어기(30)로부터 수용하도록 준비한다. 도 3의 예에서, VM(29)은 VM 동작, 즉, READ_VM_TO_END(ADR7)을 발행하여 ADR7 청크를 페치한다. SSD 제어기(30)는 4 개의 연속적인 청크들 ADR6 내지ADR9를 포함하는 페이지를 읽고 캐시저장함으로써 응답하고, 요청된 것뿐만 아니라 모든 연속적인 청크들(페이지의 끝까지 읽기 동작), 즉, ADR7 내지 ADR9를 호스트에 전달한다. 추가적으로, 데이터 청크들과 함께, SSD 제어기(30)는 전달되는 청크들의 수 및 그것들 각각의 로직 어드레스들을 VM에 전달한다. 데이터 청크들의 전달에 이어서, SSD 제어기(30)는 다른 페이지들을 캐시저장하기 위하여 캐시저장된 페이지를 풀어준다. 페이지의 끝까지 읽기의 특징은 개별적인 데이터 청크들에 대하여 개별적으로 다르게 발행될 수 있는, VM에 의한 중복 요청들을 절약하고(통상적으로 각 청크에 대하여 메모리 감지 및 읽기 동작들을 수반함), 따라서 OS의 DMA(Direct Memory Access) 동작들을 더 효율적으로 만든다.
도 4는 효율적인 추론적 프리페칭을 위한 또 다른 방법을 기재한다. 본 방법은 페이지 경계들의 물리적 어드레스들에 맞춰 사전에 저장된 데이터 청크들의 페칭을 가능하게 한다. 도 4의 예에서, SSD 제어기(30)는 우선 VM(29)에게 페이지 크기, 본 예시에서는 16 KB를 표시한다. VM은 후속적인 VM 동작들에 사용될, 표시된 페이지 크기를 수용한다. 이어서 VM(29)은 페이지 경계들에 맞춰 16 KB의 데이터를 쓰기 위하여 WRITE_VM_ALINGED 커맨드를 SSD 제어기(30)에 발행한다. SSD 제어기(30)는 WRITE_VM_ALINGED 커맨드를 수용하고, 제1 청크의 물리적 어드레스가 완전한 페이지의 물리적 어드레스에 매칭되도록 연속적인 4 개의 청크들의 16 KB 데이터를 저장한다. 도 4의 예에서, 쓰여질 4 개의 청크들(16 KB 데이터)은, 어드레스가 ADR6인, 페이지 내에 저장된다. VM이 페이지 경계들에 맞춰 쓰여진 임의의 데이터의 로직 어드레스들을 알고 있기 때문에, VM은 나중에 추론적으로 완전한 페이지로서 이 데이터를 읽을 수 있다.
나중에, VM은 READ_VM_TO_END(ADR6) 동작을 수행하여 ADR6 내지 ADR9 청크들을 저장한 페이지를 요청한다. SSD 제어기(30)는 전체 각각의 페이지를 캐시저장하고, 4 개의 ADR6 내지 ADR9 청크들을 호스트에 전달하고, 캐시저장된 페이지를 풀어줌으로써 이 커맨드에 응답한다.
일부 실시예들에서, SSD 제어기는 "가비지 콜렉션(garbage collection)(GC)"으로도 불리는, 블록 압축 프로세스를 적용한다. 이 프로세스에서, SSD 제어기는 부분-유효한 소스 블록들로부터 하나 이상의 목적지 블록으로 유효한 데이터를 복사한다. GC는 통상적으로 전체 블록들 또는 페이지들을 복사하기 때문에, 페이지 경계들에 맞춰 쓰인 데이터는, 위에서 기재한 바와 같이, GC 프로세스에 의해 복사된 이후에도 그것의 정렬을 유지한다.
도 5는 본 발명의 실시예에 따라 초기에 페이지 경계에 맞춰 데이터를 저장함으로써 추론적 프리페칭을 위한 방법을 개략적으로 예시하는 흐름도이다. 본 방법은, 표시 단계(100)에서, SSD 제어기(30)에 의해 실행되고, SSD 제어기(30)가 VM(29)에게 플래시 메모리들(34)의 페이지 크기에 대하여 표시함으로써 시작한다. 도 5의 예에서, 페이지 크기는 16 KB이다. 본 명세서에서 기재한 바와 같이, VM(29)은 표시된 페이지 크기를 이용하여 페이지 경계들에 맞춰 데이터 청크들을 쓰며, 이는 이 데이터의 효율적인 추론적 프리페칭을 가능하게 한다.
커맨드를 수신하는 단계(104)에서, SSD 제어기(30)는 WRITE_VM_ALIGNMENT 커맨드(위에서 기재함)를 이용하여 VM으로부터 저장될 16 KB의 데이터를 수용한다. 정렬하여 저장하는 단계(108)에서, SSD 제어기(30)는 플래시 메모리들(34) 내의 각각의 페이지를 선택하고, 16 KB 데이터를 포함하는 4 개의 4 KB 청크들을, 선택된 페이지의 경계들에 맞춰 저장한다. VM(29)은 물리적 페이지 경계들에 맞춰 저장되는, 16 KB 데이터 페이지들의 로직 어드레스들을 파악한다. 추론적 읽기 커맨드를 수신하는 단계(112)에서, SSD 제어기(30)는 단계(108)에서 저장된 페이지 전체를 추론적으로 읽으라는 요청을 VM(29)으로부터 수용한다.
단계(116)에서, SSD 제어기(30)는 요청된 페이지의 로직 어드레스를 각각의 물리적 어드레스로 번역하고, 페이지 데이터를 읽고 페이지를 RAM(50)에 캐시저장한다. 단계(116)에서 VM은, 예를 들어, READ_VM_TO_END 동작(위에서 기재함), 또는 전체 캐시저장된 페이지를 호스트에 전달하는 전용의 다른 VM 동작을 이용할 수 있다. 이어서, 페이지 전달 단계(120)에서 SSD 제어기는 호스트 인터페이스(38)를 통해 16 KB의 캐시저장된 페이지를 VM(29)에 전달한다. 단계(120)에서 추가적으로, SSD 제어기는 RAM(50) 내의 캐시저장된 페이지를 풀어주어, 다른 페이지들을 캐시저장하기 위하여 동일한 메모리 공간을 재사용 가능하도록 한다.
빠른 애플리케이션 기동
애플리케이션 프로그램은 종종 대량의 상대적으로 작은 파일들에 액세스하는데, FS(28)는 애플리케이션이 설치될 때 플래시 메모리들(34)에 저장한다. 애플리케이션 파일들은 실행가능 파일, 비트맵 파일, 멀티미디어 파일 등을 포함할 수 있다. 일부 실시예들에서, OS(26)는 애플리케이션을 기동할 때, FS(28)는 실행을 위해 애플리케이션의 파일들을 플래시 메모리들(34)의 각각의 위치에서 호스트 메모리(32)로 업로드한다. FS(28)는 SSD 제어기(30)에 복수의 각각의 읽기 커맨드를 전송함으로써 애플리케이션 파일들을 업로드한다. 애플리케이션 파일들을 기동하는 데 걸리는 시간은, 사용자가 애플리케이션을 사용할 수 있는 전에 사용자가 최소 딜레이를 겪도록 짧아야 한다.
애플리케이션들의 기동 시간을 빠르게 하기 위한 다양한 방법들이 기술 분야에 알려져 있다. 예시 방법들은 2011년, 2월 15일-17일, 미국 산호세, Proceedings of the 9th USENIX conference on File and storage technologies 페이지 259-272, "FAST: quick application launch on solid-state drives"에서 용수(Yongsoo) 등에 의해 기재되어 있고, 본 명세서에서 참조로서 포함된다.
본 명세서에 기재된 일부 실시예들에서, FS(28)는 추론적 프리페칭을 이용하여 애플리케이션들을 기동하는 시간을 감소시킨다. 예를 들어, FS(28)는 상기 도 2 내지 도 4에서 기재된 바와 같은 추론적 프리페칭 방법들을 이용할 수 있다.
예시 실시예에서, 애플리케이션 파일들은 플래시 메모리들 중 하나에서 인접한 범위의 물리적 어드레스들에 연속적으로 저장된다. OS(27)로부터 애플리케이션 파일들의 식별을 수신 시, 추론적 프리페칭이 비활성화인 경우, FS(28)가 플래시 메모리로부터 애플리케이션 파일들의 각각을 별도로 읽는 것이 가능했을 수 있다. 그러나, 플래시 메모리 내에서 중복적인 읽기 동작들을 초래하고, 그에 따라, 특히 파일들의 크기가 대략 청크 크기(예컨대, 4 KB) 이하인 경우, 기동 시간이 길어줄 수 있다.
개시된 실시예에서, OS(27)는 애플리케이션 파일들의 식별을 제공할뿐만 아니라, 파일들이 공통적으로 애플리케이션 프로그램에 속한다는 점을 FS(28)에 힌트를 제공한다. 이 힌트를 수신 시, FS(28)는 자동으로, FS(28)가, 도 2 내지 도 4에 대하여 위에서 기재한 바와 같이, 효율적으로 다중 4 KB 청크들을 읽기 위하여 추론적 프리페칭을 사용하는 추론적 프리페칭 모드로 전환된다.
도 6은 본 발명의 실시예에 따라 애플리케이션들의 기동 시간을 줄이기 위한 방법을 개략적으로 예시하는 흐름도이다. 방법은 SSD 제어기(30)에 의해 실행되고, 기동 시작 표시 단계(200)에서 SSD 제어기가 OS(27)로부터 애플리케이션 기동 프로세스가 시작했다는 표시 또는 힌트를 수용함으로써 시작한다. 모니터링 단계(204)에서, FS(28)가 애플리케이션 파일들을 읽는 동안, SSD 제어기(30)는 업로드된 파일들의 읽기 데이터의 로직 및 각각의 물리적 어드레스들을 모니터하고 기록한다.
기동 종료 표시 단계(208)에서, SSD 제어기(30)는 OS(27)로부터 FS(28)가 애플리케이션 파일들의 업로딩을 끝냈다는 힌트를 수용하고, 그에 따라 SSD 제어기(30)는 단계(204)에서 수행되던 기록 행위을 중단한다. 이어서 SSD 제어기는 조각모음 단계(212)에서 인접한 범위의 물리적 어드레스들을 점유하기 위하여 애플리케이션 파일들을 재배열한다. 단계(212) 이후에 방법은 종료한다. 애플리케이션 파일들의 인접한 물리적 공간으로의 조각모음은, 애플리케이션의 후속적인 기동을 더 효율적으로 만들고(즉, 추론적 프리페칭을 이용하여) 따라서 더 짧은 기동 시간을 통해 사용자 경험을 개선한다.
대안적인 실시예들에서, OS(27)는 (도 6의 방법에서와 같이 SSD 제어기(30) 이외의) FS(28)에 힌트를 제공하여 애플리케이션 기동의 개시 시 애플리케이션 파일들의 로직 어드레스들을 기록하기 시작하고, 애플리케이션 기동이 종료함에 따라 기록 행위를 중단한다. 그러한 실시예들에서, 기동 종료 이후에, FS(28)는 SSD 제어기(30)에 전용 조각모음 커맨드를 발행한다. 조각모음 커맨드에서, SSD 제어기(30)는 FS(28)로부터 애플리케이션 파일들의 로직 어드레스들을 수용한다. 이어서 SSD 제어기는 애플리케이션 파일들을 인접한 범위의 물리적 어드레스들에 재배열함으로써 조각모음을 수행한다.
상기 방법들은 예시적인 방법들이고, 다른 방법들도 대안적인 실시예들에서 사용될 수 있다. 예를 들어, 상기 모든 방법들에서 데이터 청크 및 페이지 크기가 각각 4 KB 및 16 KB이지만, 임의의 다른 적절한 크기들도 사용될 수 있다.
다른 예로써, 통상적으로 VM 및 FS는 동일한 데이터 청크 크기를 공유하지만, 대안적인 실시예들에서 상기 방법들은 상이한 크기(두 크기 모두 페이지 크기보다 작음)의 데이터 청크들을 페칭하는 VM 및 FS에 적용될 수 있다. 대안적으로 또는 추가적으로, VM(또는 FS)는 상이한 프로세스들 또는 애플리케이션들에 대하여 상이한 청크 크기를 사용할 수 있다.
개시된 방법들은 SSD-기반 저장 시스템뿐만 아니라, VM(또는 FS)에 의한 미싱 데이터 청크의 각각의 페칭에 대하여 크기가 청크 크기보다 더 큰 페이지가 기본적인 메모리로부터 검색되는 임의의 저장 시스템들에 적용될 수 있다.
본 명세서에서 기재된 실시예들은 주로 SSD-기반 저장 시스템에서 메모리 디바이스들과 통신하는 호스트 프로세서를 다루지만, 본 명세서에 기재된 방법들 및 시스템들은 또한 다른 애플리케이션들, 예컨대 호스트가, 기본적인 저장 디바이스에 의해 사용되는 저장 유닛보다 작은 청크들에 데이터를 저장하도록 구성되는 임의의 시스템에서 사용될 수 있다.
전술된 실시예들은 예로서 인용되며 본 발명은 특히 본 명세서에서 도시되고 전술된 것에 제한되지 않는다는 것이 이해될 것이다. 오히려, 본 발명의 범주는 본 명세서에서 전술된 다양한 특징들의 조합들 및 하위-조합들 둘 모두뿐만 아니라, 전술한 설명을 읽을 때 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 떠오를 것이고 종래 기술에서 개시되지 않은 변형들 및 수정들을 포함한다. 본 특허 출원에 참조로서 편입된 문헌들은, 임의의 용어들이 본 명세서에서 명시적으로 또는 암시적으로 이루어진 정의들과 모순되는 방식으로 이러한 편입된 문헌들에 정의되는 경우를 제외하고 본 출원의 통합 부분으로 고려되어야 하며, 오직 본 명세서에서의 정의들만이 고려되어야 한다.

Claims (17)

  1. 데이터 저장을 위한 방법으로서,
    데이터 유닛 크기를 갖는 제1 데이터 유닛이 애플리케이션 프로그램 파일에 포함되어 있다는 표시와 상기 제1 데이터 유닛에 대한 제1 읽기 커맨드를 특정하는 제1 정보를 저장 디바이스에 의해 수신하는 단계;
    상기 제1 읽기 커맨드를 수신하는 것에 응답하여, 제1 메모리로부터 상기 제1 데이터 유닛을 포함하는 저장 페이지를 읽는 단계 - 상기 저장 페이지의 크기는 상기 데이터 유닛 크기보다 큼 -;
    제2 메모리에 상기 저장 페이지를 캐시저장(caching)하는 단계;
    제2 데이터 유닛에 대한 제2 읽기 커맨드를 특정하는 제2 정보를 수신하는 단계 - 상기 제2 읽기 커맨드는 상기 제2 메모리로부터의 읽기를 특정함 - ; 및
    상기 제2 읽기 커맨드를 수신하는 것에 응답하여, 상기 제2 메모리로부터 상기 제2 데이터 유닛을 읽는 단계
    를 포함하는, 데이터 저장을 위한 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 제2 데이터 유닛을 읽는 단계는,
    상기 제2 메모리에 상기 제2 데이터 유닛이 저장되어 있지 않음을 검출하는 것에 응답하여 에러 이벤트를 보고하는 단계를 포함하는, 데이터 저장을 위한 방법.
  4. 제1항에 있어서,
    상기 저장 페이지에 포함된 모든 데이터 유닛들이 요청되었다고 결정하는 것에 응답하여 상기 제2 메모리에 캐시저장된 상기 저장 페이지를 폐기하는 단계를 추가로 포함하는, 데이터 저장을 위한 방법.
  5. 제1항에 있어서,
    상기 제2 메모리에 캐시저장된 상기 저장 페이지에 포함된 특정 데이터 유닛을 읽기 위한 제3 읽기 커맨드를 특정하는 제3 정보를 상기 저장 디바이스에 의해 수신하는 단계, 및
    상기 제2 메모리에 캐시저장된 상기 저장 페이지로부터 상기 특정 데이터 유닛 및 모든 연속하는 데이터 유닛들을 반환하는 단계를 추가로 포함하는, 데이터 저장을 위한 방법.
  6. 제1항에 있어서,
    상기 저장 페이지의 크기를 보고하는 단계를 추가로 포함하는, 데이터 저장을 위한 방법.
  7. 제1항에 있어서,
    데이터를 저장하기 위한 쓰기 커맨드를 상기 저장 디바이스에 의해 수신하는 단계 - 상기 데이터의 크기는 상기 저장 페이지의 크기와 동일함 - , 및
    상기 저장 디바이스의 페이지 경계에 맞춰 상기 데이터를 저장하는 단계를 추가로 포함하는, 데이터 저장을 위한 방법.
  8. 저장 디바이스로서,
    비휘발성 메모리;
    휘발성 메모리; 및
    프로세서를 포함하고, 상기 프로세서는,
    데이터 유닛 크기를 갖는 제1 데이터 유닛이 애플리케이션 프로그램 파일에 포함되어 있다는 표시와 상기 제1 데이터 유닛을 읽기 위한 제1 읽기 커맨드를 특정하는 제1 정보를 수신하고;
    상기 제1 읽기 커맨드를 수신하는 것에 응답하여, 상기 제1 데이터 유닛을 포함하는 저장 페이지를 상기 비휘발성 메모리로부터 읽고 - 상기 저장 페이지의 크기는 상기 데이터 유닛 크기 보다 큼 - ;
    상기 휘발성 메모리에 상기 저장 페이지를 캐시저장하고;
    제2 데이터 유닛에 대한 제2 읽기 커맨드를 특정하는 제2 정보를 수신하고 - 상기 제2 읽기 커맨드는 상기 휘발성 메모리로부터의 읽기를 특정함 - ; 및
    상기 제2 읽기 커맨드를 수신하는 것에 응답하여, 상기 휘발성 메모리로부터 상기 제2 데이터 유닛을 읽도록 구성된, 저장 디바이스.
  9. 삭제
  10. 제8항에 있어서, 상기 프로세서는,
    상기 휘발성 메모리에 상기 제2 데이터 유닛이 저장되어 있지 않음을 결정하는 것에 응답하여 에러 이벤트를 보고하도록 추가로 구성된, 저장 디바이스.
  11. 제8항에 있어서, 상기 프로세서는,
    상기 저장 페이지에 포함된 모든 데이터 유닛들이 요청되었다고 결정하는 것에 응답하여 상기 휘발성 메모리에 캐시저장된 상기 저장 페이지를 폐기하도록 추가로 구성된, 저장 디바이스.
  12. 제8항에 있어서, 상기 프로세서는,
    상기 휘발성 메모리에 캐시저장된 상기 저장 페이지에 포함된 특정 데이터 유닛을 읽기 위한 제3 읽기 커맨드를 특정하는 제3 정보를 수신하고,
    상기 휘발성 메모리에 캐시저장된 상기 저장 페이지로부터 상기 특정 데이터 유닛 및 모든 연속하는 데이터 유닛들을 반환도록 추가로 구성된, 저장 디바이스.
  13. 제8항에 있어서, 상기 프로세서는,
    상기 저장 페이지의 크기를 보고하도록 추가로 구성된, 저장 디바이스.
  14. 제8항에 있어서, 상기 프로세서는,
    데이터를 저장하기 위한 쓰기 커맨드를 수신하고 - 상기 데이터의 크기는 상기 저장 페이지의 크기와 동일함 - ,
    상기 저장 디바이스의 페이지 경계에 맞춰 상기 데이터를 저장하도록 추가로 구성된, 저장 디바이스.
  15. 삭제
  16. 삭제
  17. 삭제
KR1020167021071A 2014-01-07 2014-12-31 플래시 메모리에 저장된 데이터의 추론적 프리페칭 KR101790913B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/148,910 2014-01-07
US14/148,910 US9582204B2 (en) 2014-01-07 2014-01-07 Speculative prefetching of data stored in flash memory
PCT/US2014/073040 WO2015105721A1 (en) 2014-01-07 2014-12-31 Speculative prefetching of data stored in flash memory

Publications (2)

Publication Number Publication Date
KR20160104710A KR20160104710A (ko) 2016-09-05
KR101790913B1 true KR101790913B1 (ko) 2017-10-26

Family

ID=52395223

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167021071A KR101790913B1 (ko) 2014-01-07 2014-12-31 플래시 메모리에 저장된 데이터의 추론적 프리페칭

Country Status (6)

Country Link
US (1) US9582204B2 (ko)
JP (1) JP6224253B2 (ko)
KR (1) KR101790913B1 (ko)
CN (1) CN105900069B (ko)
DE (1) DE112014006118B4 (ko)
WO (1) WO2015105721A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594687B2 (en) * 2015-04-14 2017-03-14 Google Inc. Virtualization-aware prefetching
KR20170001235A (ko) * 2015-06-26 2017-01-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US20170123796A1 (en) * 2015-10-29 2017-05-04 Intel Corporation Instruction and logic to prefetch information from a persistent memory
JP2017122997A (ja) * 2016-01-06 2017-07-13 富士通株式会社 情報処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム
US10817224B2 (en) * 2016-06-23 2020-10-27 Qualcomm Incorporated Preemptive decompression scheduling for a NAND storage device
CN107329908A (zh) * 2017-07-07 2017-11-07 联想(北京)有限公司 一种数据处理方法和电子设备
CN118051268A (zh) * 2017-09-27 2024-05-17 北京忆芯科技有限公司 电子设备及其启动方法
CN109582490B (zh) * 2017-09-28 2023-12-15 北京忆芯科技有限公司 智能重读命令生成
US11029879B2 (en) * 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
US10963394B2 (en) * 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
CN109213448B (zh) * 2018-08-30 2022-04-05 东信和平科技股份有限公司 一种智能卡的擦写数据的方法、装置、设备及存储介质
CN109254733B (zh) * 2018-09-04 2021-10-01 北京百度网讯科技有限公司 用于存储数据的方法、装置和系统
KR102518095B1 (ko) 2018-09-12 2023-04-04 삼성전자주식회사 스토리지 장치 및 시스템
US10607712B1 (en) * 2018-09-28 2020-03-31 Toshiba Memory Corporation Media error reporting improvements for storage drives
KR20200057473A (ko) * 2018-11-16 2020-05-26 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
US11042325B2 (en) 2019-08-05 2021-06-22 International Business Machines Corporation Speculative bank activate dynamic random access memory (DRAM) scheduler
CN110688325B (zh) * 2019-09-05 2021-12-03 苏州浪潮智能科技有限公司 一种固态硬盘的垃圾回收方法、装置、设备及存储介质
US11249913B2 (en) * 2020-03-06 2022-02-15 Macronix International Co., Ltd. Continuous read with multiple read commands
US11314637B2 (en) * 2020-05-29 2022-04-26 Hewlett Packard Enterprise Development Lp System and method for efficient cache coherency protocol processing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204675A1 (en) * 2002-04-29 2003-10-30 Dover Lance W. Method and system to retrieve information from a storage device
US20080215849A1 (en) 2007-02-27 2008-09-04 Thomas Scott Hash table operations with improved cache utilization

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675853A (ja) * 1992-08-25 1994-03-18 Oki Electric Ind Co Ltd キャッシュメモリ装置
US7031987B2 (en) * 1997-05-30 2006-04-18 Oracle International Corporation Integrating tablespaces with different block sizes
US7143401B2 (en) * 2000-02-17 2006-11-28 Elbrus International Single-chip multiprocessor with cycle-precise program scheduling of parallel execution
ATE293810T1 (de) * 2000-06-27 2005-05-15 Koninkl Philips Electronics Nv Integrierte schaltung mit flash
US7421567B2 (en) * 2004-12-17 2008-09-02 International Business Machines Corporation Using a modified value GPR to enhance lookahead prefetch
JP2007188408A (ja) * 2006-01-16 2007-07-26 Toshiba Corp ストレージ装置及び方法
JP2007293604A (ja) * 2006-04-25 2007-11-08 Toshiba Corp 情報処理装置およびプログラムロード方法
US9052910B2 (en) * 2007-10-25 2015-06-09 International Business Machines Corporation Efficiency of short loop instruction fetch
TWI375953B (en) * 2008-02-21 2012-11-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
JP5163220B2 (ja) 2008-03-26 2013-03-13 富士通株式会社 キャッシュ制御装置、情報処理装置
US8429377B2 (en) * 2010-01-08 2013-04-23 International Business Machines Corporation Optimizing TLB entries for mixed page size storage in contiguous memory
US20110238962A1 (en) * 2010-03-23 2011-09-29 International Business Machines Corporation Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors
US8341382B2 (en) 2010-09-30 2012-12-25 Nxp B.V. Memory accelerator buffer replacement method and system
US10031850B2 (en) 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
US8856456B2 (en) * 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204675A1 (en) * 2002-04-29 2003-10-30 Dover Lance W. Method and system to retrieve information from a storage device
US20080215849A1 (en) 2007-02-27 2008-09-04 Thomas Scott Hash table operations with improved cache utilization

Also Published As

Publication number Publication date
US20150193155A1 (en) 2015-07-09
US9582204B2 (en) 2017-02-28
CN105900069B (zh) 2019-09-17
DE112014006118B4 (de) 2021-09-16
JP2017503266A (ja) 2017-01-26
CN105900069A (zh) 2016-08-24
DE112014006118T5 (de) 2016-09-29
JP6224253B2 (ja) 2017-11-01
KR20160104710A (ko) 2016-09-05
WO2015105721A1 (en) 2015-07-16

Similar Documents

Publication Publication Date Title
KR101790913B1 (ko) 플래시 메모리에 저장된 데이터의 추론적 프리페칭
US11055230B2 (en) Logical to physical mapping
US11048589B2 (en) Preserving data upon a power shutdown
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
KR102663304B1 (ko) 구역 네임스페이스 디바이스들에서의 판독 처리
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US11755491B2 (en) Mapping supporting non-sequential writes at sequentially-written memory devices
US10552045B2 (en) Storage operation queue
US11126558B2 (en) Data storage device and control method for non-volatile memory
EP4170506A1 (en) Systems, methods, and devices for ordered access of data in block modified memory
US11604735B1 (en) Host memory buffer (HMB) random cache access
US20170052899A1 (en) Buffer cache device method for managing the same and applying system thereof
WO2021055675A1 (en) Managing data dependencies in a transfer pipeline of a hybrid dimm
US20240143512A1 (en) Write buffer linking for easy cache reads
KR101831126B1 (ko) 스토리지 내의 데이터 처리 장치의 제어 방법
TW202318205A (zh) 記憶體系統及資料輸入輸出系統

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
GRNT Written decision to grant