KR102243923B1 - 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법 - Google Patents

캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR102243923B1
KR102243923B1 KR1020180173932A KR20180173932A KR102243923B1 KR 102243923 B1 KR102243923 B1 KR 102243923B1 KR 1020180173932 A KR1020180173932 A KR 1020180173932A KR 20180173932 A KR20180173932 A KR 20180173932A KR 102243923 B1 KR102243923 B1 KR 102243923B1
Authority
KR
South Korea
Prior art keywords
data
register
write command
size
logical address
Prior art date
Application number
KR1020180173932A
Other languages
English (en)
Other versions
KR20200082900A (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 강원대학교산학협력단
Priority to KR1020180173932A priority Critical patent/KR102243923B1/ko
Priority to US16/671,962 priority patent/US11249920B2/en
Publication of KR20200082900A publication Critical patent/KR20200082900A/ko
Application granted granted Critical
Publication of KR102243923B1 publication Critical patent/KR102243923B1/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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0656Data buffering arrangements
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0604Improving or facilitating administration, e.g. storage 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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/7201Logical to physical mapping or translation of blocks or pages

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)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

하나의 물리 페이지에 m개의 논리 페이지가 저장되는 비휘발성 메모리 장치 및 그 동작 방법이 개시된다. 본 발명의 일 실시예에 따른 비휘발성 메모리 장치는, 플래시 변환 계층(Flash Translation Layer, FTL)에 포함되며, 파일 시스템으로부터 수신되는 쓰기 명령에 기반하여 상기 쓰기 명령의 적어도 일부의 데이터를 저장하는 복수의 레지스터; 및 상기 파일 시스템으로부터 수신되는 상기 쓰기 명령에 기반하여 상기 복수의 레지스터의 동작을 제어하는 컨트롤러를 포함하고, 상기 복수의 레지스터 각각은 상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지고, 상기 컨트롤러는 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상이면 상기 쓰기 명령의 데이터를 상기 비휘발성 메모리 장치에 프로그램하고, 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기보다 작으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터에 저장한다.

Description

캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법 {NON-VOLATILE MEMORY DEVICE USING EFFICIENT PAGE COLLECTION MAPPING WITH CACHE AND OPERATING METHOD THEREFOR}
본 발명은 멀티 비트 셀 또는 멀티 레벨 셀을 포함하는 비휘발성 메모리 장치 및 그 메모리 장치의 동작 방법에 관한 것으로, 구체적으로는 MLC(Multi-Level Cell), TLC(Tri-Level Cell), 및 QLC(Quad-Level Cell)와 같이 하나의 물리적 셀에 둘 이상의 논리 비트 정보를 저장하는 비휘발성 메모리 장치를 효율적으로 동작시킬 수 있는 방법에 관한 것이다.
본 발명은 교육부 및 한국연구재단의 지역대학우수과학자지원사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 1345276641, 과제명: 고신뢰성 스마트 IT 환경 구현을 위한 하이브리드 비휘발성 메모리 아키텍쳐 기반의 효율적인 시스템 소프트웨어].
플래시 메모리(flash memory)는 하나의 메모리 셀에 저장 가능한 비트 수에 따라 SLC(Single-Level Cell), MLC(Multi-Level Cell), TLC(Tri-Level Cell), QLC(Quad-Level Cell)로 여러 종류의 반도체 칩(chip)으로 구분되며, 일반적으로 SLC는 고급형, MLC는 중급형, TLC/QLC는 보급형으로 취급되고 있다.
최근 스토리지 시스템의 대용량화로 인하여 솔리드 스테이트 디스크(SSD, Solid State Disk) 시장이 급격하게 성장하고 있다. 이에 낸드 플래시 메모리 제조 업체들은 저가격, 대용량의 SSD를 제조하기 위하여 높은 데이터 밀도를 가지는 TLC, QLC 기법을 적용하는 연구 및 개발을 진행하고 있다.
낸드 플래시 메모리는 공통적으로 읽기/쓰기 연산 단위로 섹터들의 집합인 페이지로 구성되며, 여러 페이지가 모여 지우기 연산의 단위인 블록을 구성한다. 또한 페이지의 데이터 갱신을 수행하기 위해 블록의 지우기 연산을 선행해야 하는 쓰기 전 지우기 성질을 지니고 있다.
이때 읽기 / 쓰기 / 지우기 연산 간의 시간과 비용, 연산의 종류에 따른 연산의 단위가 서로 비대칭인 점이 낸드 플래시 메모리 장치의 효율적인 제어를 위하여 고려되는 사항이며, 이러한 점을 고려하여 플래시 관리 계층(FTL, Flash Translation Layer)의 중요성이 더욱 높아지고 있다.
최근 제안되는 QLC 낸드 플래시 메모리는 SLC/MLC/TLC 와 비교하여 더욱 높은 데이터 밀도를 가지는 한편, 읽기 / 쓰기 / 지우기 연산의 속도가 느려지는 점이 FTL 에서 고려해야 하는 중요한 사항으로 대두된다. QLC 낸드 플래시 메모리의 페이지의 저장 공간은 커지고 전반적인 성능은 저하됨에 따라 기존 운영체제에서 사용되던 파일 시스템에 읽기 / 쓰기 패턴 트레이스 기법을 그대로 QLC 에 적용하는 경우 공간 활용도가 낮아지고 쓰기 연산 횟수가 증가하여 궁극적으로 QLC 낸드 플래시 메모리의 활용 수명을 단축하는 점이 문제되고 있다.
QLC 뿐 아니라 SLC에서 MLC로 전환하는 단계에서부터 멀티 레벨 셀 메모리의 수명을 관리하여 위하여 기존의 페이지 버퍼(플래시 메모리에 데이터를 프로그램하기 위하여 데이터를 저장하고 유지하는 버퍼 메모리)를 FTL과 연계하여 관리하는 구성에 대하여 한국등록특허 제10-1060258호 "불휘발성 메모리 장치의 멀티 레벨 셀 프로그램 방법" 및 한국등록특허 제10-1919653호 "데이터 저장 디바이스들에서 하부 페이지 변형을 방지하기 위한 방법들 및 디바이스들"이 제안된 바 있다.
상기 선행기술들은 m개의 논리 페이지의 데이터가 페이지 버퍼에 충족될 때까지 데이터를 순차적으로 저장한 후 프로그램하는 구성(KR 10-1060258), 버퍼를 컨트롤러에 커플링하여 제어하며 완전한 F-페이지가 구성될 때까지 메모리 버퍼(504) 및 기입 스토어(203)에 쓰기 데이터를 축적하는 구성(KR 10-1919653) 등을 개시한다.
도 1은 상기 선행문헌들 중 KR 10-1919653호의 구성을 나타내는 도면이며, 멀티 비트 셀을 위하여 하나의 F-페이지가 완전하게 구성될 때까지 기입 스토어(203)에 쓰기 데이터를 축적하는 구성이 도시된다.
상기 선행문헌들은 호스트 시스템 또는 운영 체제로부터 전달되는 쓰기 명령의 데이터가 지역적 인접성(spatial locality)을 가지는 것을 전제로 하며, 특히 선행문헌들 중 KR 10-1060258은 쓰기 데이터가 m개의 논리 페이지를 완전히 채웠을 때 이를 물리적으로 프로그램하는 데에만 초점을 맞추고 있고, 선행문헌들 중 KR 1919653은 동작 도중 전력 공급이 원활하지 않은 경우에 레지스터/스토어/버퍼에 저장된 임시 데이터를 잃지 않도록 비휘발성 램(NV-RAM)을 이용한 백업 동작에 초점을 맞추고 있다.
실제로는 호스트 시스템 또는 운영 체제로부터 전달되는 쓰기 명령의 데이터는 버스트(burst) 데이터일 수도 있으나 시스템의 업데이트에 관련된 작은 크기의 데이터일 수도 있기 때문에 상기 선행문헌들의 구성으로는 여전히 공간 활용도가 낮아지고 쓰기 연산 횟수가 증가하여 궁극적으로 MLC/TLC/QLC 낸드 플래시 메모리의 활용 수명을 단축하는 문제점이 그대로 드러난다. 이러한 현상은 TLC, QLC 등 데이터 밀도가 높아질수록 더욱 두드러질 것이다.
한국등록특허 제10-1060258호 "불휘발성 메모리 장치의 멀티 레벨 셀 프로그램 방법" (2011년 8월 23일) 한국등록특허 제10-1919653호 "데이터 저장 디바이스들에서 하부 페이지 변형을 방지하기 위한 방법들 및 디바이스들" (2018년 11월 12일)
선행문헌들 KR 10-1060258 및 KR 10-191653 에서는 멀티 레벨 셀에 저장될 데이터가 완전한 m개의 논리 페이지의 크기를 충족할 때까지 데이터를 페이지 버퍼 또는 캐쉬(cache)에 저장하는 구성이 소개된다. 그러나 이들 선행문헌들은 상기 선행문헌들은 호스트 시스템 또는 운영 체제로부터 전달되는 쓰기 명령의 데이터가 지역적 인접성(spatial locality)을 가지는 것을 전제로 하므로, 실제로 쓰기 명령의 데이터가 시스템의 업데이트에 관련된 작은 크기의 데이터의 업데이트인 경우가 훨씬 빈번한 경우인 점을 고려하지 못하고 있다.
즉, 이들 선행문헌들은 완전한 TLC 또는 QLC 디바이스에 온전히 적용될 수 있는 것이 아니며, 이들 선행문헌들에서 소개하고 있는 기술들은 시스템 업데이트에 관한 데이터를 저장하는 SLC 가 별도로 존재하지 않으면 적용되기 어려운 수준의 기술들이다.
특히 파일 시스템에서 전송되는 쓰기 데이터의 논리 주소가 페이지 버퍼 또는 캐쉬에 현재 저장된 데이터의 논리 주소와 연관이 없을 때에는 페이지 버퍼 또는 캐쉬에 현재 저장된 데이터를 플래시 메모리에 프로그램하고, 페이지 버퍼 또는 캐쉬를 비워야 하는데, 이때 불필요한 쓰기 연산이 발생하여 공간의 활용도를 떨어뜨리고 쓰기 연산의 횟수를 증가시키며 궁극적으로 플래시 메모리의 사용 연한을 단축시키는 문제점이 있다.
본 발명은 상기 선행기술들의 문제점을 해결하고자 도출된 것으로서, 호스트 시스템, 운영 체제 또는 파일 시스템에서 전송되는 쓰기 명령이 빈번하게 시스템의 업데이트 정보에 관련되는 실제의 플래시 메모리 쓰기 연산의 양상을 고려하여 멀티 레벨의 높은 데이터 밀도를 가지는 플래시 메모리 장치를 효율적으로 관리하는 플래시 변환 계층(FTL) 및 그를 이용한 플래시 메모리 장치의 동작 방법을 제안하는 것을 목적으로 한다.
본 발명은 FTL 레벨에서 병렬적인 듀얼 구조를 가지는 레지스터를 이용하여 멀티 레벨의 높은 데이터 밀도를 가지는 플래시 메모리 장치에서 불필요한 쓰기 연산의 횟수를 줄이고 공간 활용도를 높이는 것을 목적으로 한다.
또한 본 발명은 캐쉬/레지스터의 유휴 시간 판단 기준을 제안하여 캐쉬/레지스터의 업데이트 제한에 의한 문제점을 해소하는 것을 목적으로 한다.
본 발명은 FTL 레벨에서 쓰기 데이터의 공간적 인접성(spatial locality) 및 시간적 인접성(temporal locality)을 모두 고려하여 멀티 레벨의 높은 데이터 밀도를 가지는 플래시 메모리 장치에서 사용 연한을 증가시키는 것을 목적으로 한다.
본 발명은 상기의 목적을 달성하기 위하여 도출된 구성으로서, 본 발명의 일 실시예에 따른 하나의 물리 페이지에 m개의 논리 페이지가 저장되는 비휘발성 메모리 장치는, 플래시 변환 계층(Flash Translation Layer, FTL)에 포함되며, 파일 시스템으로부터 수신되는 쓰기 명령에 기반하여 상기 쓰기 명령의 적어도 일부의 데이터를 저장하는 복수의 레지스터; 및 상기 파일 시스템으로부터 수신되는 상기 쓰기 명령에 기반하여 상기 복수의 레지스터의 동작을 제어하는 컨트롤러를 포함한다. 상기 복수의 레지스터 각각은 상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지고, 상기 컨트롤러는 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상이면 상기 쓰기 명령의 데이터를 상기 비휘발성 메모리 장치에 프로그램하고, 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기보다 작으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터에 저장한다.
상기 복수의 레지스터는 논리 주소 인접성 조건을 충족하는 데이터를 저장하는 제1 레지스터; 및 상기 플래시 변환 계층에 포함되며, 상기 논리 주소 인접성 조건을 충족하지 않는 데이터를 저장하는 제2 레지스터를 포함하고, 상기 제1 레지스터 및 상기 제2 레지스터 각각은 상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가질 수 있다.
상기 컨트롤러는 상기 파일 시스템으로부터 수신되는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하면 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장하고, 상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않으면 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장할 수 있다.
상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하여 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장하는 경우에, 상기 제1 레지스터에 상기 쓰기 명령의 데이터를 저장할 공간이 부족하면 상기 제1 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램할 수 있다. 이때 상기 컨트롤러는 상기 제1 레지스터에 저장된 데이터를 삭제하고, 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장할 수 있다.
상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않아서 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 경우에, 상기 제2 레지스터에 상기 쓰기 명령의 데이터를 저장할 공간이 부족하면 상기 제2 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램할 수 있다. 이때 상기 컨트롤러는 상기 제2 레지스터에 저장된 데이터를 삭제하고, 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장할 수 있다.
상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않아서 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 경우에, 상기 제2 레지스터가 유휴 시간 조건을 충족하면 상기 제2 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램할 수 있다. 이때 상기 컨트롤러는 상기 제2 레지스터에 저장된 데이터를 삭제하고, 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장할 수 있다.
상기 유휴 시간 조건은 상기 제2 레지스터에 저장된 데이터가 업데이트된 이후 소정의 임계 유휴 시간이 경과하거나, 상기 제2 레지스터에 저장된 데이터가 업데이트된 이후 상기 쓰기 명령의 데이터가 상기 제1 레지스터로 전달된 횟수가 소정의 임계 유휴 횟수 이상을 충족하는 경우일 수 있다.
본 발명의 일 실시예에 따른 하나의 물리 페이지에 m개의 논리 페이지가 저장되는 비휘발성 메모리 장치의 동작 방법에서는 상기 컨트롤러가 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상이면 상기 쓰기 명령의 데이터를 상기 비휘발성 메모리 장치에 프로그램하고, 상기 컨트롤러가 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기보다 작으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터에 저장한다. 이때 비휘발성 메모리 장치의 동작 방법은 상기 컨트롤러는 상기 파일 시스템으로부터 수신되는 상기 쓰기 명령의 데이터의 논리 주소와 상기 복수의 레지스터 중 제1 레지스터에 저장된 데이터의 논리 주소가 논리 주소 인접성 조건을 충족하면 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장하는 단계; 및 상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터 중 제2 레지스터에 저장하는 단계를 포함한다.
본 발명에 따르면, 본 발명의 비휘발성 메모리 장치는 멀티 레벨의 높은 데이터 밀도를 가지는 플래시 메모리 장치에서 호스트 시스템, 파일 시스템 또는 운영 체제로부터 전송되는 쓰기 명령의 데이터가 시스템의 빈번한 업데이트인 경우에도 대응할 수 있는 효과적인 페이지 컬렉션 매핑 기법을 제공할 수 있다.
본 발명에 따르면, 쓰기 명령이 빈번하게 시스템의 업데이트 정보에 관련되는 실제의 쓰기 연산의 양상을 고려하여 멀티 레벨의 높은 데이터 밀도를 가지는 플래시 메모리 장치를 효율적으로 관리하는 플래시 변환 계층(FTL) 및 그를 이용한 플래시 메모리 장치의 동작 방법이 제공된다.
본 발명에 따르면 FTL 레벨에서 병렬적인 듀얼 구조를 가지는 레지스터를 이용하여 멀티 레벨의 높은 데이터 밀도를 가지는 플래시 메모리 장치에서 불필요한 쓰기 연산의 횟수를 줄이고 공간 활용도를 높일 수 있다.
본 발명에 따르면 캐쉬/레지스터의 유휴 시간 판단 기준을 제안하여 캐쉬/레지스터의 업데이트 제한에 의한 문제점을 해소할 수 있다.
본 발명에 따르면 FTL 레벨에서 쓰기 데이터의 공간적 인접성(spatial locality) 및 시간적 인접성(temporal locality)을 모두 고려하여 멀티 레벨의 높은 데이터 밀도를 가지는 플래시 메모리 장치에서 사용 연한을 증가시킬 수 있다.
도 1은 기존의 멀티 레벨 셀 기반 낸드 플래시 저장장치에서 FTL 레벨의 캐쉬 구조를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른, 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치의 구조를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른, 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치의 동작 방법을 구현한 슈도 코드(pseudo code)의 일 예이다.
도 4는 도 3의 동작 방법의 일 단계를 더욱 상세히 도시하는 슈도 코드의 일 예이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명에서 플래시 변환 계층(FTL, Flash Translation Layer)은 메모리 컨트롤러에 의하여 실행되는 프로그램 인스트럭션에 의하여 실행된다. 메모리 컨트롤러는 가상의 논리 계층인 FTL에서 실행되는 주소 사상(address mapping), 물리 주소와 논리 주소 간의 차이에서 오는 플래시 메모리 장치 내부의 데이터의 이동, 데이터의 복제, 데이터의 갱신/업데이트, 블록의 소거 등을 관리할 수 있다.
또한 메모리 컨트롤러는 FTL에서 실행되는 쓰기 데이터의 선별과 분류를 실행할 수 있고, 쓰기 데이터의 선별과 분류에 따른 논리 주소와 물리 주소 간의 매핑에 대한 정보를 관리할 수 있다. 이때 쓰기 데이터의 선별과 분류를 위하여 본 발명의 메모리 컨트롤러는 듀얼 구조의 캐쉬(cache) 또는 레지스터(register)를 이용할 수 있다.
도 2는 본 발명의 일 실시예에 따른, 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치의 구조를 나타낸 도면이다.
비휘발성 메모리 장치는 플래시 변환 계층(120), 페이지 버퍼(130), 물리 블록(140)을 포함한다. 컨트롤러(도시되지 않음)은 주로 플래시 변환 계층(120)에서 실행되는 동작을 제어하고, 그에 필요한 매핑 정보를 관리한다.
파일 시스템(110)으로부터 전송된 쓰기 명령은 컨트롤러에 의하여 플래시 변환 계층(120)에서 분류되고 선별된다. 이때 플래시 변환 계층(120) 내에는 적어도 2개 이상의 레지스터(122, 124)가 포함된다.
상기 물리 블록(140) 내의 하나의 물리 페이지(142)에는 m개의 논리 페이지가 저장되는 것으로 가정한다. 이때 m은 2 이상의 자연수이다.
제1 레지스터(122) 및 제2 레지스터(124)에는 파일 시스템(110)으로부터 수신되는 쓰기 명령에 기반하여 상기 쓰기 명령의 적어도 일부의 데이터가 저장된다. 컨트롤러는 파일 시스템(110)으로부터 수신되는 쓰기 명령에 기반하여 제1 레지스터(122) 및 제2 레지스터(124)의 동작을 제어한다. 제1 레지스터(122) 및 제2 레지스터(124) 각각은 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가진다.
예를 들어 m=4이고 1개의 논리 페이지가 2 kB인 경우를 가정하면, 레지스터(122, 124) 각각의 저장 공간은 8 kB일 수 있다. 컨트롤러는 m개의 논리 페이지에 연관되는 저장 공간의 크기와 연관되는 임계 크기에 기반하여 쓰기 데이터를 비휘발성 메모리 장치의 물리 블록(140) 내의 물리 페이지(142)에 프로그램하도록 제1 레지스터(122), 제2 레지스터(124), 및 페이지 버퍼(130)의 동작을 제어할 수 있다.
m개의 논리 페이지에 연관되는 저장 공간의 크기와 연관되는 임계 크기는 레지스터(122, 124) 각각의 저장 공간의 크기와 동일할 수도 있고, 약간의 차이를 둘 수도 있다. 예를 들어 실시예와 같이 레지스터(122, 124) 각각의 저장 공간의 크기가 8 kB일 때, 임계 크기는 6 kB ~ 8 kB 범위의 어떤 값일 수 있다. 실시예에 따라서는 쓰기 연산의 데이터의 크기가 6 kB 이상인 경우 데이터는 지역적 인접성을 가지며 m개의 논리 페이지 대비 공간 활용도가 충분히 높다고 전제되므로 페이지 버퍼(130)로 전달하여 플래쉬 메모리 장치의 물리 페이지(142)에 데이터가 물리적으로 프로그램되도록 제어될 수 있다. 버스트(burst) 데이터는 동일하거나 인접한 논리 페이지의 주소를 가질 가능성이 높으며 페이지 버퍼(130)에 한꺼번에 전달되는 것이 유리하다. 이때 페이지 버퍼(130)가 논리 주소와 물리 주소 간의 맵핑에 대한 정보를 별도로 저장하거나 관리하지 않아도 쓰기 데이터의 저장 및 관리에 대한 정보는 충분히 플래시 변환 계층(FTL)의 컨트롤러에서 관리할 수 있다.
쓰기 데이터의 크기가 임계 크기, 예를 들어 6 kB 미만인 경우 데이터는 m개의 논리 페이지 대비 공간 활용도가 아직 충분히 높지 않다고 전제되므로 컨트롤러는 페이지 버퍼(130)에 쓰기 데이터를 전달하지 않고 레지스터(122, 124)에 저장한다.
제1 레지스터(122)와 제2 레지스터(124)가 상호 병렬적으로 동작하도록 구성되며, 제1 레지스터(122)에는 논리 주소 인접성 조건을 충족하는 경우의 쓰기 연산의 데이터가, 제2 레지스터(124)에는 논리 주소 인접성 조건을 충족하지 않는 경우의 쓰기 연산의 데이터가 저장될 수 있다. 이후 파일 시스템(110)에서 수신되는 새로운 쓰기 명령의 쓰기 데이터가 논리 주소 인접성 조건을 충족하는 지 여부를 제1 레지스터(122)에 저장된 데이터의 논리 주소와 비교할 수 있다. 이때 논리 주소 인접성 조건은, 논리 주소 간의 연관성으로 판정할 수 있다. 예를 들어 비교되는 논리 주소 간의 논리 주소 간의 차이가 m 미만이거나, 논리 주소의 상위 비트가 동일한 지 여부를 지역적 인접성의 판정 기준으로 설정할 수 있다.
쓰기 명령의 데이터의 크기가 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상인 경우, 컨트롤러는 제1 레지스터(122)를 중심으로 동작을 수행한다. 쓰기 명령의 데이터의 크기가 큰 경우에는 쓰기 명령의 데이터는 논리 주소의 지역적 인접성(spatial locality)을 가진다고 볼 수 있으므로 제1 레지스터(122)에 저장된다. 제1 레지스터(122)에 순차적으로 저장되는 데이터가 제1 레지스터(122)의 저장 공간을 채워 제1 레지스터(122)에 더 이상의 저장 공간이 없는 경우 컨트롤러는 제1 레지스터(122)에 저장된 데이터를 물리 페이지(142)로 프로그램하고, 제1 레지스터(122)를 flush할 수 있다.
쓰기 명령의 데이터의 크기가 m개의 논리 페이지의 크기와 연관되는 임계 크기 미만인 경우, 컨트롤러는 논리 주소의 인접성 조건 여하에 따라서 제1 레지스터(122) 또는 제2 레지스터(124)를 중심으로 동작을 수행한다. 쓰기 명령의 데이터의 크기가 작지만 논리 주소의 지역적 인접성을 가지는 경우(제1 레지스터(122)에 저장된 데이터의 논리 주소와 쓰기 명령의 데이터의 논리 주소가 서로 간에 논리 주소 인접성 조건을 충족하는 경우), 쓰기 명령의 데이터는 순차적으로 제1 레지스터(122)에 저장된다.
쓰기 명령의 데이터의 크기가 작고 논리 주소의 지역적 인접성을 가지지 않는 경우(제1 레지스터(122)에 저장된 데이터의 논리 주소와 쓰기 명령의 데이터의 논리 주소가 서로 간에 논리 주소 인접성 조건을 충족하지 않는 경우), 쓰기 명령의 데이터는 제2 레지스터(124)에 저장된다.
제1 레지스터(122) 또는 제2 레지스터(124)에 저장된 데이터가 m개의 논리 페이지의 크기를 채워 제1 레지스터(122) 또는 제2 레지스터(124)에 빈 공간이 부족하면 컨트롤러는 제1 레지스터(122) 또는 제2 레지스터(124)에 저장된 데이터를 물리 페이지(142)로 프로그램하고, 제1 레지스터(122) 또는 제2 레지스터(124)에 저장된 데이터를 삭제한다. (제1 레지스터(122) 또는 제2 레지스터(124)가 flushing된다.) 이때 제1 레지스터(122) 또는 제2 레지스터(124)에 빈 공간이 부족한 지 여부는 제1 레지스터(122) 또는 제2 레지스터(124)의 저장 공간이 완전히 채워진 경우만을 고려할 것은 아니고, 제1 레지스터(122) 또는 제2 레지스터(124)에 저장된 데이터의 공간 활용도가 m개의 논리 페이지의 크기와 연관되는 임계 크기와 비교되어 판단될 수 있다.
제2 레지스터(124)에 저장된 데이터는 m개의 논리 페이지의 크기에 해당되지 않더라도 시간적 인접성(temporal locality)을 고려하여 소정의 유휴 시간 조건을 충족하면 물리 페이지(142)로 프로그램되고, 제2 레지스터(124)가 flushing될 수 있다. 이때 소정의 유휴 시간 조건은 제2 레지스터(124)에 저장된 데이터가 업데이트된 이후 소정의 임계 유휴 시간('idle-time')이 경과하거나, 상기 제2 레지스터(124)에 저장된 데이터가 업데이트된 이후 상기 쓰기 명령의 데이터가 상기 제1 레지스터(122)로 전달된 횟수가 소정의 임계 유휴 횟수(x) 이상을 충족하는 경우로 설정될 수 있다.
실시예에 따라서는 특정 조건 하에서 제1 레지스터(122)와 제2 레지스터(124)의 설정이 뒤바뀔 수도 있다. 예를 들어 새로 수신되는 쓰기 연산의 쓰기 데이터의 크기가 8 kB 이상인 버스트 데이터인데, 제1 레지스터(122)에 저장된 논리 주소의 데이터의 논리 주소와 논리 주소 인접성 조건을 충족하지 않는 경우를 들 수 있다. 이때 컨트롤러는 제1 레지스터(122)와 제2 레지스터(124) 중 어느 하나를 빅팀 레지스터로 선택할 수 있는데, 제1 레지스터(122)가 빅팀으로 선택된 경우 제1 레지스터(122)에 저장된 데이터는 물리 페이지(142)로 프로그램되고 제1 레지스터(122)는 flush될 수 있다. 제2 레지스터(124)가 빅팀으로 선택된 경우 제2 레지스터(124)에 저장된 데이터는 물리 페이지(142)로 프로그램되고 제2 레지스터(124)는 flush될 수 있다.
빅팀을 선택하는 기준은 제1 레지스터(122) 및 제2 레지스터(124) 중 어느 레지스터에 저장된 데이터가 더 큰 지를 기준으로 선택될 수 있다. 저장된 데이터의 크기가 동일하다면 제1 레지스터(122)가 우선 순위를 가질 수 있다. 제2 레지스터(124)가 빅팀으로 선택된 경우에는 이후부터는 제1 레지스터(122)와 제2 레지스터(124)의 설정이 변경되어, 제2 레지스터(124)가 이전의 제1 레지스터(122)처럼 논리 주소 인접성의 판정 기준이 되어 동작할 수도 있다. 이 경우 앞서 설명한 제1 레지스터(122)와 제2 레지스터(124)의 동작이 뒤바뀐 설정에 기반하여 그대로 적용될 수 있을 것이다.
도 2에서는 설명의 편의상 페이지 버퍼(130)가 도시되었지만 실시예에 따라서는 페이지 버퍼(130)의 기능은 제1 레지스터(122) 또는 제2 레지스터(124)의 동작에 의하여 실행될 수도 있으므로 페이지 버퍼(130)가 생략되는 실시예도 구현될 수 있다.
도 3은 본 발명의 일 실시예에 따른, 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치의 동작 방법을 구현한 슈도 코드(pseudo code)의 일 예이다.
도 4는 도 3의 동작 방법의 일 단계를 더욱 상세히 도시하는 슈도 코드의 일 예이다.
도 3을 참조하면, 쓰기 연산(write operation)의 일 예시가 소개된다. 쓰기 연산은 호스트 시스템/파일 시스템에서 데이터가 저장되는 논리 페이지 주소(LPN, Logical Page Number), 데이터, 데이터의 크기(SIZE)를 지정한다.
쓰기 연산에서 제1 레지스터(122)에 저장된 데이터의 논리 페이지 주소와 쓰기 연산의 입력으로 지정된 LPN이 동일하면(2행) 쓰기 연산의 데이터를 제1 레지스터(122)에 저장하도록(3행) 플래시 변환 계층(FTL)의 컨트롤러에서 제어될 수 있다. 이때 제1 레지스터(122)가 꽉 차서 더 이상 데이터를 저장할 공간이 부족한 경우(4행) 제1 레지스터(122)에 저장된 데이터를 플래시 메모리의 물리 페이지(142)에 저장하고(5행) 제1 레지스터(122)를 flush하도록(6행) 플래시 변환 계층(FTL)의 컨트롤러에서 제어될 수 있다. 이때 2행에서 제1 레지스터(122)에 저장된 데이터의 논리 주소와 쓰기 연산의 입력으로 지정된 LPN이 동일한 지 여부를 체크하도록 도 3의 실시예에서 도시되었지만, 이는 하나의 실시예에 불과하다. 본 발명의 다른 실시예에 따라서는 제1 레지스터(122)에 저장된 데이터의 논리 주소와 쓰기 연산의 입력으로 지정된 LPN의 차이가 일정 범위 이내이면 논리 주소 인접성 조건을 충족하는 것으로 설정될 수도 있다.
쓰기 연산에서 제1 레지스터(122)에 저장된 데이터의 논리 페이지 주소와 쓰기 연산의 입력으로 지정된 LPN이 동일하지 않아 논리 주소 인접성 조건을 충족하지 않으면(7행), 쓰기 연산의 데이터를 제2 레지스터(124)에 저장하도록(8행) 플래시 변환 계층(FTL)의 컨트롤러에서 제어될 수 있다. 이때 제2 레지스터(124)가 꽉 차서 더 이상 데이터를 저장할 공간이 부족한 경우(9행) 제2 레지스터(124)에 저장된 데이터를 플래시 메모리의 물리 페이지(142)에 저장하고(10행) 제2 레지스터(124)를 flush하도록(11행) 플래시 변환 계층(FTL)의 컨트롤러에서 제어될 수 있다.
제2 레지스터(124)에 더 이상 데이터를 저장할 공간은 있지만 유휴 시간 조건을 충족하는 경우인지를 확인하기 위하여 플래시 변환 계층(FTL)의 컨트롤러가 12행의 idle check 2nd register 연산을 실행할 수 있다.
도 4를 참조하면, 제2 레지스터(124)가 업데이트된 이후 소정의 임계 유휴 시간인 'idle-time'을 경과하거나, 쓰기 연산이 실행되었지만 제2 레지스터(124)에 저장된 데이터가 업데이트되지 않은 횟수 ('2nd register non-update)'가 'x' 이상인지 여부를 플래시 변환 계층(FTL)의 컨트롤러가 판정할 수 있다(1행).
쓰기 연산이 실행되었지만 제2 레지스터(124)에 저장된 데이터가 업데이트되지 않은 횟수 ('2nd register non-update)'는 제2 레지스터(124)에 저장된 데이터가 업데이트된 이후 쓰기 명령의 데이터가 제1 레지스터(122)로 전달된 횟수와 동일하다고 가정할 수 있다.
도 4의 1행에서 제2 레지스터(124)가 유휴 시간 조건을 충족한 경우에, 플래시 변환 계층(FTL)의 컨트롤러는 제2 레지스터(124)에 저장된 데이터를 플래시 메모리의 물리 페이지(142)에 저장하고(2행) 제2 레지스터(124)를 flush하도록(3행) 제2 레지스터(124)와 플래시 변환 계층(FTL)을 제어할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 동작 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다. 본 발명의 실시예와 도면에 소개된 길이, 높이, 크기, 폭 등은 이해를 돕기 위해 과장된 것일 수 있다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
110: 파일 시스템
120: 플래시 변환 계층
122: 제1 레지스터, 124: 제2 레지스터
130: 페이지 버퍼
140: 물리 블록, 142: 물리 페이지

Claims (11)

  1. m비트 멀티 레벨 셀을 포함하며 하나의 물리 페이지에 m개의 논리 페이지가 저장되는 비휘발성 메모리 장치에 있어서,
    플래시 변환 계층(Flash Translation Layer, FTL)에 포함되며, 파일 시스템으로부터 수신되는 쓰기 명령에 기반하여 상기 쓰기 명령의 적어도 일부의 데이터를 저장하는 복수의 레지스터; 및
    상기 파일 시스템으로부터 수신되는 상기 쓰기 명령에 기반하여 상기 복수의 레지스터의 동작을 제어하는 컨트롤러;
    를 포함하고,
    상기 복수의 레지스터 각각은 상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지고,
    상기 컨트롤러는
    상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상이면 상기 쓰기 명령의 데이터가 상기 비휘발성 메모리 장치에 프로그램되도록 상기 쓰기 명령의 데이터를 상기 복수의 레지스터와 상기 비휘발성 메모리 장치 사이의 물리 블록 사이의 페이지 버퍼에 전달하고,
    상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기보다 작으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터에 저장하는 비휘발성 메모리 장치.
  2. 제1항에 있어서,
    상기 복수의 레지스터는
    논리 주소 인접성 조건을 충족하는 데이터를 저장하는 제1 레지스터; 및
    상기 플래시 변환 계층에 포함되며, 상기 논리 주소 인접성 조건을 충족하지 않는 데이터를 저장하는 제2 레지스터;
    를 포함하고,
    상기 제1 레지스터 및 상기 제2 레지스터 각각은 상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지고,
    상기 컨트롤러는 상기 파일 시스템으로부터 수신되는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하면 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장하고,
    상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않으면 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 비휘발성 메모리 장치.
  3. 제2항에 있어서,
    상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하여 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장하는 경우에, 상기 제1 레지스터에 상기 쓰기 명령의 데이터를 저장할 공간이 부족하면 상기 제1 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램하고,
    상기 제1 레지스터에 저장된 데이터를 삭제하고, 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장하는 비휘발성 메모리 장치.
  4. 제2항에 있어서,
    상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않아서 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 경우에, 상기 제2 레지스터에 상기 쓰기 명령의 데이터를 저장할 공간이 부족하면 상기 제2 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램하고,
    상기 제2 레지스터에 저장된 데이터를 삭제하고, 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 비휘발성 메모리 장치.
  5. 하나의 물리 페이지에 m개의 논리 페이지가 저장되는 비휘발성 메모리 장치에 있어서,
    플래시 변환 계층(Flash Translation Layer, FTL)에 포함되며, 파일 시스템으로부터 수신되는 쓰기 명령에 기반하여 상기 쓰기 명령의 적어도 일부의 데이터를 저장하는 복수의 레지스터; 및
    상기 파일 시스템으로부터 수신되는 상기 쓰기 명령에 기반하여 상기 복수의 레지스터의 동작을 제어하는 컨트롤러;
    를 포함하고,
    상기 복수의 레지스터는
    상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지며 논리 주소 인접성 조건을 충족하는 데이터를 저장하는 제1 레지스터; 및
    상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지며 상기 논리 주소 인접성 조건을 충족하지 않는 데이터를 저장하는 제2 레지스터;
    를 포함하고,
    상기 컨트롤러는
    상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상이면 상기 쓰기 명령의 데이터를 상기 비휘발성 메모리 장치에 프로그램하고,
    상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기보다 작으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터에 저장하고,
    상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않아서 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 경우에, 상기 제2 레지스터가 유휴 시간 조건을 충족하면 상기 제2 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램하고,
    상기 제2 레지스터에 저장된 데이터를 삭제하고, 상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 비휘발성 메모리 장치.
  6. 제5항에 있어서,
    상기 유휴 시간 조건은 상기 제2 레지스터에 저장된 데이터가 업데이트된 이후 소정의 임계 유휴 시간이 경과하거나, 상기 제2 레지스터에 저장된 데이터가 업데이트된 이후 상기 쓰기 명령의 데이터가 상기 제1 레지스터로 전달된 횟수가 소정의 임계 유휴 횟수 이상을 충족하는 경우인 비휘발성 메모리 장치.
  7. 하나의 물리 페이지에 m개의 논리 페이지가 저장되는 비휘발성 메모리 장치에 있어서,
    플래시 변환 계층(Flash Translation Layer, FTL)에 포함되며, 파일 시스템으로부터 수신되는 쓰기 명령에 기반하여 상기 쓰기 명령의 적어도 일부의 데이터를 저장하는 복수의 레지스터; 및
    상기 파일 시스템으로부터 수신되는 상기 쓰기 명령에 기반하여 상기 복수의 레지스터의 동작을 제어하는 컨트롤러;
    를 포함하고,
    상기 복수의 레지스터는
    상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지며 논리 주소 인접성 조건을 충족하는 데이터를 저장하는 제1 레지스터; 및
    상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지며 상기 논리 주소 인접성 조건을 충족하지 않는 데이터를 저장하는 제2 레지스터;
    를 포함하고,
    상기 컨트롤러는
    상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상이면 상기 쓰기 명령의 데이터를 상기 비휘발성 메모리 장치에 프로그램하고,
    상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기보다 작으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터에 저장하고,
    상기 컨트롤러는 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기 이상이면서 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않으면 상기 제1 레지스터 또는 상기 제2 레지스터 중 어느 하나를 선택하고, 상기 선택된 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램하고, 상기 선택된 레지스터에 저장된 데이터를 삭제하고, 상기 쓰기 명령의 데이터를 상기 선택된 레지스터에 저장하는 비휘발성 메모리 장치.
  8. 제7항에 있어서,
    상기 컨트롤러는 상기 제2 레지스터가 선택된 경우 상기 제1 레지스터와 상기 제2 레지스터의 설정을 교체함으로써 이후 상기 파일 시스템으로부터 수신되는 새로운 쓰기 명령의 데이터의 논리 주소가 논리 주소 인접성 조건을 충족하는 지 여부를 상기 선택된 제2 레지스터에 저장된 데이터의 논리 주소와 비교하는 비휘발성 메모리 장치.
  9. m비트 멀티 레벨 셀을 포함하며 하나의 물리 페이지에 m개의 논리 페이지가 저장되는 비휘발성 메모리 장치의 동작 방법에 있어서,
    상기 비휘발성 메모리 장치는, 플래시 변환 계층(Flash Translation Layer, FTL)에 포함되며, 파일 시스템으로부터 수신되는 쓰기 명령에 기반하여 상기 쓰기 명령의 적어도 일부의 데이터를 저장하는 복수의 레지스터; 및
    상기 파일 시스템으로부터 수신되는 상기 쓰기 명령에 기반하여 상기 복수의 레지스터의 동작을 제어하는 컨트롤러;
    를 포함하고,
    상기 복수의 레지스터 각각은 상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지고,
    상기 컨트롤러가 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상이면 상기 쓰기 명령의 데이터가 상기 비휘발성 메모리 장치에 프로그램되도록 상기 쓰기 명령의 데이터를 상기 복수의 레지스터와 상기 비휘발성 메모리 장치 사이의 물리 블록 사이의 페이지 버퍼에 전달하고,
    상기 컨트롤러가 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기보다 작으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터에 저장하되,
    상기 컨트롤러는 상기 파일 시스템으로부터 수신되는 상기 쓰기 명령의 데이터의 논리 주소와 상기 복수의 레지스터 중 제1 레지스터에 저장된 데이터의 논리 주소가 논리 주소 인접성 조건을 충족하면 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장하는 단계; 및
    상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터 중 제2 레지스터에 저장하는 단계;
    를 포함하는 비휘발성 메모리 장치의 동작 방법.
  10. 제9항에 있어서,
    상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 단계는
    상기 제2 레지스터에 상기 쓰기 명령의 데이터를 저장할 공간이 부족하면 상기 제2 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램하는 단계;
    상기 제2 레지스터에 저장된 데이터를 삭제하는 단계; 및
    상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 단계;
    를 포함하는
    비휘발성 메모리 장치의 동작 방법.
  11. 하나의 물리 페이지에 m개의 논리 페이지가 저장되는 비휘발성 메모리 장치의 동작 방법에 있어서,
    상기 비휘발성 메모리 장치는, 플래시 변환 계층(Flash Translation Layer, FTL)에 포함되며, 파일 시스템으로부터 수신되는 쓰기 명령에 기반하여 상기 쓰기 명령의 적어도 일부의 데이터를 저장하는 복수의 레지스터; 및
    상기 파일 시스템으로부터 수신되는 상기 쓰기 명령에 기반하여 상기 복수의 레지스터의 동작을 제어하는 컨트롤러;
    를 포함하고,
    상기 복수의 레지스터 각각은 상기 m개의 논리 페이지의 크기와 연관되는 저장 공간을 가지고,
    상기 컨트롤러가 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 임계 크기 이상이면 상기 쓰기 명령의 데이터를 상기 비휘발성 메모리 장치에 프로그램하고,
    상기 컨트롤러가 상기 쓰기 명령의 데이터의 크기가 상기 m개의 논리 페이지의 크기와 연관되는 상기 임계 크기보다 작으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터에 저장하되,
    상기 컨트롤러는 상기 파일 시스템으로부터 수신되는 상기 쓰기 명령의 데이터의 논리 주소와 상기 복수의 레지스터 중 제1 레지스터에 저장된 데이터의 논리 주소가 논리 주소 인접성 조건을 충족하면 상기 쓰기 명령의 데이터를 상기 제1 레지스터에 저장하는 단계; 및
    상기 컨트롤러는 상기 쓰기 명령의 데이터의 논리 주소와 상기 제1 레지스터에 저장된 데이터의 논리 주소가 상기 논리 주소 인접성 조건을 충족하지 않으면 상기 쓰기 명령의 데이터를 상기 복수의 레지스터 중 제2 레지스터에 저장하는 단계;
    를 포함하고,
    상기 쓰기 명령의 데이터를 상기 제2 레지스터에 저장하는 단계는
    상기 제2 레지스터가 유휴 시간 조건을 충족하면 상기 제2 레지스터에 저장된 데이터를 상기 비휘발성 메모리 장치에 프로그램하는 단계;
    를 더 포함하는
    비휘발성 메모리 장치의 동작 방법.
KR1020180173932A 2018-12-31 2018-12-31 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법 KR102243923B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180173932A KR102243923B1 (ko) 2018-12-31 2018-12-31 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법
US16/671,962 US11249920B2 (en) 2018-12-31 2019-11-01 Non-volatile memory device using efficient page collection mapping in association with cache and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180173932A KR102243923B1 (ko) 2018-12-31 2018-12-31 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20200082900A KR20200082900A (ko) 2020-07-08
KR102243923B1 true KR102243923B1 (ko) 2021-04-22

Family

ID=71122797

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180173932A KR102243923B1 (ko) 2018-12-31 2018-12-31 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법

Country Status (2)

Country Link
US (1) US11249920B2 (ko)
KR (1) KR102243923B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116701382B (zh) * 2023-08-03 2023-10-20 成都数默科技有限公司 基于clickhouse数据库的自动高效数据回滚方法
CN117112452B (zh) * 2023-08-24 2024-04-02 上海合芯数字科技有限公司 寄存器模拟配置方法、装置、计算机设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100608012B1 (ko) 2004-11-05 2006-08-02 삼성전자주식회사 데이터 백업 방법 및 장치

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769944B2 (en) 2004-10-01 2010-08-03 Supertalent Electronics, Inc. Partial-write-collector algorithm for multi level cell (MLC) flash
US7882299B2 (en) 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US7953954B2 (en) 2007-01-26 2011-05-31 Micron Technology, Inc. Flash storage partial page caching
US7865658B2 (en) 2007-12-31 2011-01-04 Sandisk Il Ltd. Method and system for balancing host write operations and cache flushing
KR101060258B1 (ko) 2008-07-10 2011-08-30 주식회사 하이닉스반도체 불휘발성 메모리 장치의 멀티 레벨 셀 프로그램 방법
US8832353B2 (en) 2009-04-07 2014-09-09 Sandisk Technologies Inc. Host stop-transmission handling
KR101319589B1 (ko) * 2011-08-12 2013-10-16 아주대학교산학협력단 솔리드 스테이트 드라이브의 쓰기 데이터 분별 방법 및 그 컨트롤러
KR101587631B1 (ko) * 2011-09-06 2016-01-25 한국전자통신연구원 클라우드 기반 로컬 장치와 로컬 장치의 파일 읽기 및 저장 방법
KR101374065B1 (ko) * 2012-05-23 2014-03-13 아주대학교산학협력단 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US10013177B2 (en) * 2015-04-20 2018-07-03 Hewlett Packard Enterprise Development Lp Low write amplification in solid state drive
JP6441171B2 (ja) * 2015-06-12 2018-12-19 東芝メモリ株式会社 メモリシステム
US20170177276A1 (en) 2015-12-21 2017-06-22 Ocz Storage Solutions, Inc. Dual buffer solid state drive
US9898200B2 (en) * 2016-02-18 2018-02-20 Samsung Electronics Co., Ltd Memory device having a translation layer with multiple associative sectors
TWI611410B (zh) * 2016-05-13 2018-01-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
KR102536637B1 (ko) * 2018-03-29 2023-05-26 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11379155B2 (en) * 2018-05-24 2022-07-05 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100608012B1 (ko) 2004-11-05 2006-08-02 삼성전자주식회사 데이터 백업 방법 및 장치

Also Published As

Publication number Publication date
KR20200082900A (ko) 2020-07-08
US20200210345A1 (en) 2020-07-02
US11249920B2 (en) 2022-02-15

Similar Documents

Publication Publication Date Title
KR101283711B1 (ko) 하이브리드 메모리 관리
US9727271B2 (en) Data storage device and flash memory control method
US8762629B2 (en) Data conditioning to improve flash memory reliability
KR101551584B1 (ko) 하이브리드 slc/mlc 메모리 내의 블록 관리 방식들
TWI389125B (zh) 記憶體儲存裝置及其控制方法
CN103092766B (zh) 一种用于nand flash的均衡损耗实现方法
TWI399644B (zh) 非揮發記憶體區塊管理方法
US20150268879A1 (en) Memory management method, memory storage device and memory control circuit unit
US8296504B2 (en) Data management method and flash memory storage system and controller using the same
KR101403922B1 (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
CN112130749B (zh) 数据储存装置以及非挥发式存储器控制方法
US10712970B2 (en) Flash memory controller and associated accessing method and electronic device
TWI540428B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
KR102243923B1 (ko) 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법
JP2010152778A (ja) 半導体記憶装置
WO2014185038A1 (ja) 半導体記憶装置およびその制御方法
KR102243920B1 (ko) 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법
CN111949197B (zh) 一种3d tlc闪存存储器及其数据写入方法和装置

Legal Events

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