KR102467372B1 - 스토리지 장치 및 이의 동작 방법 - Google Patents

스토리지 장치 및 이의 동작 방법 Download PDF

Info

Publication number
KR102467372B1
KR102467372B1 KR1020220001907A KR20220001907A KR102467372B1 KR 102467372 B1 KR102467372 B1 KR 102467372B1 KR 1020220001907 A KR1020220001907 A KR 1020220001907A KR 20220001907 A KR20220001907 A KR 20220001907A KR 102467372 B1 KR102467372 B1 KR 102467372B1
Authority
KR
South Korea
Prior art keywords
program
data
program mode
mode
value
Prior art date
Application number
KR1020220001907A
Other languages
English (en)
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 KR1020220001907A priority Critical patent/KR102467372B1/ko
Priority to US17/891,495 priority patent/US20230214123A1/en
Application granted granted Critical
Publication of KR102467372B1 publication Critical patent/KR102467372B1/ko
Priority to CN202310016515.XA priority patent/CN116400851A/zh

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of 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
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 일 실시예에 따른 스토리지 장치는 비휘발성 메모리 장치 및 스토리지 컨트롤러를 포함한다. 상기 비휘발성 메모리 장치는 프로그램 모드들에 기초하여 데이터들을 저장한다. 상기 스토리지 컨트롤러는 레퍼런스 카운트 값과 상기 프로그램 모드들 사이의 대응 관계를 나타내는 타겟 프로그램 모드 테이블을 포함한다. 상기 스토리지 컨트롤러는 호스트 장치로부터의 프로그램 요청이 수신된 경우 및 상기 프로그램 요청에 대응하는 제1 데이터가 상기 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 상기 제1 데이터를 논리적으로 프로그램하는 중복 제거를 수행하고, 상기 제1 데이터에 대하여 상기 호스트 장치로부터의 상기 프로그램 요청 또는 이레이즈 요청이 수신된 경우, 상기 제1 데이터의 중복 저장 횟수를 나타내는 제1 레퍼런스 카운트 값을 업데이트하고, 상기 타겟 프로그램 모드 테이블에 기초하여 제1 프로그램 모드와 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 모드에 상응하는 상기 제1 데이터를 상기 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램을 수행하도록 커맨드 및 어드레스를 상기 비휘발성 메모리 장치로 전송한다.

Description

스토리지 장치 및 이의 동작 방법{STORAGE DEVICE AND METHOD OF OPERATING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서 더욱 상세하게는 스토리지 장치 및 상기 스토리지 장치의 동작 방법에 관한 것이다.
최근 비휘발성 메모리들을 이용하는 SSD(solid state drive)와 같은 비휘발성 메모리 장치가 널리 사용되고 있다. 비휘발성 메모리 장치는 안정성이 뛰어나고 프로그램 된 데이터에 대한 액세스 속도가 빠르고 전력 소모가 적으나, 프로그램 및 소거 횟수(Program-Erase(PE) cycle)는 제한된다.
호스트 장치는 상기 비휘발성 메모리 장치에 동일한 데이터를 중복하여 프로그램하고자 하는 경우, 중복된 데이터에 대한 물리적인 프로그램 없이 단지 중복된 데이터를 논리적으로만 프로그램하는 중복 제거를 수행한다. 상기 중복 제거의 결과로서 상기 비휘발성 메모리 장치의 상기 프로그램 및 소거 횟수의 제한에 따른 제한을 완화하고, 프로그램 성능을 개선시킬 수 있다.
다만 상기 중복 제거를 수행함에 따라, 데이터 파편화(data fragmentation) 현상이 발생할 수 있다. 데이터 파편화 현상은 상기 중복된 데이터가 상기 비휘발성 메모리 장치의 불연속적인 칩들에 프로그램되는 것을 말하고, 상기 비휘발성 메모리 장치의 독출 성능을 감소시키는 원인이 된다.
본 발명의 일 목적은 비휘발성 메모리 장치에서 데이터가 차지하는 저장 공간의 크기를 증가시키지 않으면서 상기 데이터에 대한 독출 성능을 효과적으로 개선하는 스토리지 장치를 제공하는 것이다.
본 발명의 일 목적은 상기 스토리지 장치의 동작 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 스토리지 장치는 비휘발성 메모리 장치 및 스토리지 컨트롤러를 포함한다. 상기 비휘발성 메모리 장치는 미리 설정된 비트 수의 데이터로 프로그램하기 위한 프로그램 모드들에 기초하여 데이터들을 저장한다. 상기 스토리지 컨트롤러는 타겟 프로그램 모드 테이블을 포함한다. 상기 타겟 프로그램 모드 테이블은 데이터의 중복 저장 횟수를 나타내는 레퍼런스 카운트 값과 상기 프로그램 모드들 사이의 대응 관계를 나타낸다. 상기 스토리지 컨트롤러는 호스트 장치로부터의 프로그램 요청이 수신된 경우 및 상기 프로그램 요청에 대응하는 제1 데이터가 상기 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 상기 제1 데이터에 대한 물리적인 프로그램 없이 상기 제1 데이터를 논리적으로 프로그램하는 중복 제거를 수행한다. 상기 스토리지 컨트롤러는 상기 제1 데이터에 대하여 상기 호스트 장치로부터의 상기 프로그램 요청 또는 이레이즈 요청이 수신된 경우, 상기 제1 데이터의 중복 저장 횟수를 나타내는 제1 레퍼런스 카운트 값을 제1 값에서 제2 값으로 업데이트한다. 상기 스토리지 컨트롤러는 상기 타겟 프로그램 모드 테이블에 기초하여 상기 제1 값에 대응하는 제1 프로그램 모드와 상기 제2 값에 대응하는 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 상기 제1 데이터를 상기 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램을 수행하도록 커맨드 및 어드레스를 상기 비휘발성 메모리 장치로 전송한다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 스토리지 장치의 동작 방법에서, 호스트 장치로부터의 프로그램 요청이 수신된 경우 및 상기 프로그램 요청에 대응하는 제1 데이터가 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 상기 제1 데이터에 대한 물리적인 프로그램 없이 상기 제1 데이터를 논리적으로 프로그램하는 중복 제거가 수행된다. 상기 제1 데이터에 대하여 상기 호스트 장치로부터의 상기프로그램 요청 또는 이레이즈 요청이 수신된 경우, 상기 제1 데이터의 중복 저장 횟수를 나타내는 제1 레퍼런스 카운트 값이 제1 값에서 제2 값으로 업데이트된다. 타겟 프로그래밍 모드 테이블에 기초하여 상기 제1 값에 대응하는 제1 프로그램 모드와 상기 제2 값에 대응하는 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 상기 제1 데이터를 상기 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램을 수행하도록 커맨드 및 어드레스가 상기 비휘발성 메모리 장치로 전송된다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 스토리지 장치는 비휘발성 메모리 장치 및 스토리지 컨트롤러를 포함한다. 상기 비휘발성 메모리 장치는 미리 설정된 비트 수의 데이터로 프로그램하기 위한 프로그램 모드들에 기초하여 데이터들을 저장한다. 상기 스토리지 컨트롤러는 타겟 프로그램 모드 테이블을 포함한다. 상기 타겟 프로그램 모드 테이블은 데이터의 중복 저장 횟수를 나타내는 레퍼런스 카운트 값과 상기 프로그램 모드들 사이의 대응 관계를 나타낸다. 상기 스토리지 컨트롤러는 호스트 장치로부터의 프로그램 요청이 수신된 경우 및 상기 프로그램 요청에 대응하는 제1 데이터가 상기 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 상기 제1 데이터에 대한 물리적인 프로그램 없이 상기 제1 데이터를 논리적으로 프로그램하는 중복 제거를 수행한다. 상기 스토리지 컨트롤러는 상기 제1 데이터에 대하여 상기 호스트 장치로부터의 상기 프로그램 요청 또는 이레이즈 요청이 수신된 경우, 상기 제1 데이터의 중복 저장 횟수를 나타내는 제1 레퍼런스 카운트 값을 제1 값에서 제2 값으로 업데이트한다. 상기 스토리지 컨트롤러는 상기 타겟 프로그램 모드 테이블에 기초하여 상기 제1 값에 대응하는 제1 프로그램 모드와 상기 제2 값에 대응하는 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 상기 제1 데이터를 상기 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램을 수행하도록 커맨드 및 어드레스를 상기 비휘발성 메모리 장치로 전송한다. 상기 제1 프로그램을 수행하기 전에, 상기 비휘발성 메모리 장치의 복수의 프리 블록들 중 하나 이상이 오픈 블록으로 설정되고, 상기 프로그램 요청이 수신되어 상기 제1 데이터에 대한 상기 중복 제거가 수행된 경우에 상기 제1 레퍼런스 카운트 값이 증가한다. 상기 제2 값이 상기 제1 값보다 큰 경우 및 상기 제2 프로그램 모드와 상기 제1 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 설정된 오픈 블록에 대하여 상기 제1 프로그램이 수행된다.
본 발명의 일 실시예에 따른 스토리지 장치는 데이터의 중복 저장 횟수 및 타겟 프로그램 모드 테이블에 기초하여 비휘발성 메모리 장치에 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 제1 데이터를 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램 동작을 수행함으로써 상기 제1 데이터가 상기 비휘발성 메모리 장치에서 차지하는 저장 공간의 크기를 증가시키지 않으면서 상기 제1 데이터에 대한 독출 성능을 효과적으로 개선할 수 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 장치를 포함하는 전자 장치를 나타내는 블록도이다.
도 2는 도 1의 스토리지 장치의 프로그램 모드들을 설명하기 위한 도면이다.
도 3은 도 1의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도 이다.
도 4a 및 4b는 도 1의 맵핑 테이블 및 레퍼런스 카운트 테이블이 업데이트되는 과정을 설명하기 위한 도면들이다.
도 5는 도 1의 타겟 프로그램 모드 테이블에 기초하여 수행되는 제1 프로그램 동작을 설명하기 위한 도면이다.
도 6은 도 1의 타겟 프로그램 모드 테이블의 일 실시예를 나타내는 도면이다.
도 7은 도 5의 제1 프로그램 동작의 일 실시예를 나타내는 도면이다.
도 8은 도 1의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도 이다.
도 9는 도 8의 프로그램 관리자의 동작을 설명하기 위한 블록도이다.
도 10은 도 1의 타겟 프로그램 모드 테이블의 일 실시예를 나타내는 도면이다.
도 11은 본 발명의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 순서도이다.
도 12는 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 전자 시스템을 나타내는 블록도이다.
도 13은 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 전자 시스템을 설명하기 위한 사시도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 스토리지 장치를 포함하는 전자 장치를 나타내는 블록도이다.
도 1을 참조하면, 전자 장치(10)는 호스트 장치(30) 및 스토리지 장치(50)를 포함한다.
호스트 장치(30)는 전자 장치(10)의 전반적인 동작을 제어한다.
일 실시예에서, 호스트 장치(30)는 호스트 프로세서 및 호스트 메모리를 포함할 수 있다. 상기 호스트 프로세서는 호스트 장치(30)의 동작을 제어할 수 있다. 예를 들어, 상기 호스트 프로세서는 운영 체제 (operating system)(OS)를 실행할 수 있다. 상기 호스트 메모리는 상기 호스트 프로세서에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 예를 들어, 상기 호스트 프로세서에 의해 실행되는 상기 운영 체제는 파일 관리를 위한 파일 시스템(file system) 및 스토리지 장치(50)를 포함하는 주변 기기를 상기 운영 체제 레벨에서 제어하기 위한 장치 드라이버(device driver)를 포함할 수 있다.
일 실시예에서, 호스트 장치(30)는 스토리지 장치(50)로 요청(REQ), 및 요청(REQ)에 상응하는 논리 어드레스(LADDR) 및 데이터(DTA)를 전송할 수 있다. 예를 들어, 호스트 장치(30)는 스토리지 장치(50)로 프로그램 요청(PREQ), 및 프로그램 요청(PREQ)에 상응하는 논리 어드레스 및 데이터를 전송할 수 있다. 호스트 장치(30)는 스토리지 장치(50)로 리드(retrieve) 요청 또는 이레이즈 요청(EREQ), 및 상기 리드 요청 또는 이레이즈 요청(EREQ)에 각각 상응하는 어드레스들을 전송할 수 있다.
스토리지 장치(50)는 스토리지 컨트롤러(100) 및 비휘발성 메모리 장치(300)를 포함한다. 스토리지 컨트롤러(100)는 호스트 장치(30)로부터 수신된 요청(REQ), 논리 어드레스(LADDR) 및 데이터(DTA)에 기초하여 비휘발성 메모리 장치(300)를 제어한다.
일 실시예에서, 비휘발성 메모리 장치(300)는 복수의 다이들을 포함하고, 상기 복수의 다이들 각각은 복수의 블록들을 포함할 수 있다. 상기 복수의 블록들은 비휘발성 메모리 장치(300)의 저장 영역(310)을 구성할 수 있고, 미리 설정된 비트 수의 데이터들을 저장하는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 상기 복수의 메모리 셀들 각각은 N-비트 데이터(N은 2 이상의 정수)를 저장할 수 있다.
일 실시예에서, 비휘발성 메모리 장치(300)는 프로그램 모드들에 기초하여 상기 복수의 메모리 셀들 중 일부(예를 들어, 저장 영역(310)에 포함되는 서로 다른 서브 영역들(예를 들어, 311, 313, 315) 각각에 포함되는 메모리 셀들)에 상기 N-비트보다 작은 비트 수의 데이터를 저장할 수 있고, 상기 서브 영역들을 제외한 나머지 영역에 상기 N-비트의 데이터를 저장할 수 있다. 예를 들어, 상기 N은 '4'일 수 있고(예를 들어, 상기 복수의 메모리 셀들 각각은 쿼드 레벨 셀(Quad Level Cell), 비휘발성 메모리 장치 (300)는 제1 서브 영역(311)에 포함되는 각 메모리 셀에 1-비트 데이터를 저장할 수 있고, 제2 서브 영역(313)에 포함되는 각 메모리 셀에 2-비트 데이터를 저장할 수 있고, 제3 서브 영역(315)에 포함되는 각 메모리 셀에 3-비트 데이터를 저장할 수 있다. 비휘발성 메모리 장치(300) 는 제1 내지 제3 서브 영역들(311, 313, 315)을 제외한 나머지 영역에 포함되는 각 메모리 셀에 4-비트 데이터를 저장할 수 있다. 상기 프로그램 모드들에 관하여 도 2를 참조하여 후술하기로 한다.
일 실시예에서, 상기 프로그램 모드들은 미리 설정된 비트 수의 데이터로 비휘발성 메모리 장치(300)를 프로그램하기 위한 동작 모드들일 수 있다. 설명의 편의를 위해 상기 N-비트의 데이터를 프로그램할 수 있는 메모리 셀에 상기 N-비트의 데이터를 프로그램하는 동작 모드를 쿼드 레벨 셀(Quad Level Cell) 프로그램 모드로 지칭할 수 있고, 상기 N-비트보다 작은 3-비트의 데이터를 프로그램하는 동작 모드를 의사 트리플 레벨 셀(pseudo Triple Level Cell)(pTLC) 프로그램 모드로 지칭할 수 있고, 상기 N-비트보다 작은 2-비트의 데이터를 프로그램하는 동작 모드를 의사 멀티 레벨 셀(pseudo Multi Level Cell)(pMLC) 프로그램 모드로 지칭할 수 있고, 상기 N-비트의 데이터를 프로그램할 수 있는 메모리 셀에 상기 N-비트보다 작은 1-비트의 데이터를 프로그램하는 동작 모드를 의사 싱글 레벨 셀(pseudo Single Level Cell)(pSLC) 프로그램 모드로 지칭할 수 있다.
일 실시예에서, 비휘발성 메모리 장치(300)는 복수의 비휘발성 메모리들을 포함할 수 있고, 상기 복수의 비휘발성 메모리들은 NAND 플래시 메모리(flash memory)를 포함할 수 있다. 다른 실시예에서, 상기 복수의 비휘발성 메모리들은 EEPROM(Electrically Erasable Programmable Read-Only Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리를 포함할 수 있다.
일 실시예에서, 스토리지 장치(50)는 버퍼 메모리(미도시)를 더 포함할 수 있다. 상기 버퍼 메모리는 스토리지 컨트롤러(100)에 의해 실행 및 처리되는 커맨드들 및 데이터들을 저장할 수 있고, 상기 복수의 비휘발성 메모리들에 프로그램되어 있거나 프로그램하고자 하는 데이터들을 임시로 저장할 수 있다. 예를 들어, 상기 버퍼 메모리는 DRAM(dynamic random access memory) 등과 같은 휘발성 메모리를 포함할 수 있다.
스토리지 장치(50)는 호스트 장치(30)로부터 프로그램 요청(PREQ) 및 프로그램 요청(PREQ)에 상응하는 데이터(DTA)를 수신할 수 있다. 일 실시예에서, 프로그램 요청(PREQ)은 호스트 장치(30)로부터 제공되거나 호스트 장치(30)로부터 페치(fetch)될 수 있다.
스토리지 컨트롤러(100)는 플래시 변환 계층(FTL)(130), 중복 제거 관리자(150) 및 프로그램 관리자(170)를 포함한다.
일 실시예에서, 플래시 변환 계층(130) 및 중복 제거 관리자(150)는 하드웨어 모듈로 구현될 수 있고, 소프트웨어 모듈로 구현될 수도 있다. 특히 소프트웨어 모듈로 구현된 경우 '중복 제거 프레임워크(de-duplication framework')로 지칭될 수 있다.
일 실시예에서, 플래시 변환 계층(130)은 호스트 장치(30)로부터 수신되는 논리 어드레스(LADDR)를 비휘발성 메모리 장치(300)의 물리 어드레스(PADDR)로 변환할 수 있다. 중복 제거 관리자(150)는 호스트 장치 (30)로부터의 프로그램 요청(PREQ)에 대응하는 데이터(DTA)에 대하여 중복 제거를 수행할 수 있다. 상기 중복 제거는 호스트 장치(30)로부터 프로그램 요청(PREQ)이 수신되거나 페치된 경우 및 프로그램 요청(PREQ)에 대응하는 데이터가 비휘발성 메모리 장치(300)에 이미 저장되어 있는 경우, 프로그램 요청(PREQ)에 대응하는 데이터에 대한 물리적인 프로그램 없이 논리적으로 프로그램하는 것을 의미할 수 있다. 프로그램 관리자(170)는 상기 프로그램 모드들을 나타내는 정보들을 포함할 수 있다. 이를 위해, 플래시 변환 계층 (130)은 맵핑 테이블(MPT)(135)을 포함하고, 중복 제거 관리자(150)는 레퍼런스 카운트 테이블(RCT)(155)을 포함하고, 프로그램 관리자(170)는 타겟 프로그램 모드 테이블(TPMT)(175)을 포함할 수 있다.
일 실시예에서, 맵핑 테이블(135)은 논리 어드레스(LADDR)와 물리 어드레스(PADDR) 사이의 변화하는 대응 관계를 나타내고, 레퍼런스 카운트 테이블(155)은 데이터가 호스트 장치(30)로부터 참조된 횟수 내지는 상기 데이터의 중복 저장 횟수를 나타내는 레퍼런스 카운트 값을 나타내고, 타겟 프로그램 모드 테이블(175)은 상기 레퍼런스 카운트 값과 상기 프로그램 모드들 사이의 미리 설정된 대응 관계를 나타낼 수 있다. 타겟 프로그램 모드 테이블(175)에 관하여 도 6 및 도 10을 참조하여 후술하기로 한다.
일 실시예에서, 스토리지 컨트롤러(100)는 호스트 장치(30)로부터 프로그램 요청(PREQ)이 수신된 경우 및 프로그램 요청(PREQ)에 대응하는 제1 데이터가 비휘발성 메모리 장치(300)에 이미 저장되어 있는 경우 상기 제1 데이터를 논리적으로 프로그램하는 중복 제거를 수행할 수 있다. 스토리지 컨트롤러(100)는 상기 제1 데이터에 대하여 호스트 장치(30) 로부터 프로그램 요청(PREQ) 또는 이레이즈 요청(EREQ)이 수신된 경우, 상기 제1 데이터의 중복 저장 횟수를 나타내는 제1 레퍼런스 카운트 값을 제1 값에서 제2 값으로 업데이트할 수 있다. 스토리지 컨트롤러(100)는 타겟 프로그램 모드 테이블(175)에 기초하여 상기 제1 값에 대응하는 제1 프로그램 모드와 상기 제2 값에 대응하는 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 상기 제1 데이터를 상기 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램 동작을 커맨드 및 어드레스를 비휘발성 메모리 장치(300)로 전송할 수 있다. 예를 들어, 상기 제1 프로그램 모드가 상기 프로그램 모드들 중 하나(예를 들어, 상기 쿼드 레벨 셀 프로그램 모드)이고, 상기 제2 프로그램 모드가 상기 프로그램 모드들 중 다른 하나(예를 들어, 의사 싱글 레벨 셀 프로그램 모드)인 경우, 상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단될 수 있다. 맵핑 테이블(135) 및 레퍼런스 카운트 테이블(155)이 업데이트되는 과정에 관하여 도 4a 및 4b를 참조하여 후술하기로 한다. 상기 제1 프로그램 동작에 관하여 도 7을 참조하여 후술하기로 한다.
일 실시예에서, 비휘발성 메모리 장치(300)의 저장 영역(310)에 포함되는 서로 다른 서브 영역들(예를 들어, 311, 313, 315)의 전부 또는 일부가 스토리지 컨트롤러(100)가 상기 제1 프로그램 동작의 수행 여부를 결정한 후에, 상기 제2 프로그램 모드에 기초하여 설정될 수 있다. 예를 들어, 상기 제2 프로그램 모드가 상기 의사 싱글 레벨 셀 프로그램 모드인 경우 제1 서브 영역(311)이 설정될 수 있고, 상기 제2 프로그램 모드가 상기 의사 멀티 레벨 셀 프로그램 모드인 경우 제2 서브 영역(313)이 설정될 수 있다. 상기 제2 프로그램 모드가 상기 의사 트리플 레벨 셀 프로그램 모드인 경우 제3 서브 영역(315)이 설정될 수 있고, 상기 제2 프로그램 모드가 상기 쿼드 레벨 셀 프로그램 모드인 경우, 제1 내지 제3 서브 영역들(311, 313 및 315) 전부가 설정되지 않을 수도 있다.
일 실시예에서, 스토리지 장치(50)는 SSD(Solid State Drive)일 수 있다. 다른 실시예에서, 스토리지 장치(50)는 UFS(Universal Flash Storage), MMC(Multi Media Card) 또는 eMMC(embedded MMC)일 수 있다. 다른 실시예에서, 스토리지 장치(50)는 SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(memory stick), 칩 카드(chip card), USB(Universal Serial Bus) 카드, 스마트 카드(smart card), CF(Compact Flash) 카드 또는 이와 유사한 형태로 구현될 수 있다.
일 실시예에서, 스토리지 장치(50)는 NVMe 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)를 통해 호스트 장치(30) 와 연결되고, 호스트 장치(30)에 의해 상기 블록 액세서블 인터페이스를 통하여 블록 단위로 액세스될 수 있다.
일 실시예에서, 전자 장치(10)는 PC(Personal Computer), 서버 컴퓨터(server computer), 데이터 센터(data center), 워크스테이션 (workstation), 디지털 TV(digital television), 셋-탑 박스(set-top box) 등의 임의의 컴퓨팅 시스템일 수 있다. 다른 실시예에서, 전자 장치(10)는 휴대폰(mobile phone), 스마트 폰(smart phone), 태블릿(tablet) PC (Personal Computer), 노트북(laptop computer), PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 카메라 (digital camera), 캠코더(camcorder), 휴대용 게임 콘솔(portable game console), 음악 재생기(music player), 동영상 재생기(video player), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone) 등의 임의의 모바일 장치일 수 있다.
상기와 같은 구성에 의하여, 본 발명의 일 실시예에 따른 스토리지 장치는 데이터의 중복 저장 횟수에 따라 비휘발성 메모리 장치에 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 제1 데이터를 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램 동작을 수행할 수 있다. 상기 제1 프로그램 동작은 상기 제1 데이터의 중복 저장 횟수를 나타내는 레퍼런스 카운트 값과 프로그램 모드들 사이의 대응 관계를 나타내는 타겟 프로그램 모드 테이블에 기초하여 수행될 수 있다. 상기 스토리지 장치는 상기 제1 프로그램 동작을 수행하여 상기 제1 데이터에 대한 독출성능을 개선시킬 수 있다. 다만 상기 제1 데이터의 중복 저장횟수가 증가하더라도 상기 비휘발성 메모리 장치에 한번만 프로그램되는 중복 제거의 특성상 상기 제1 프로그램 동작이 수행된 데이터가 상기 비휘발성 메모리 장치에서 차지하는 저장 공간의 크기는 증가하지 않는다. 따라서 본 발명의 일 실시예에 따른 스토리지 장치는 상기 제1 데이터가 상기 비휘발성 메모리 장치에서 차지하는 저장 공간의 크기를 증가시키지 않으면서 상기 제1 데이터에 대한 독출 성능을 효과적으로 개선할 수 있다.
도 2는 도 1의 스토리지 장치의 프로그램 모드들을 설명하기 위한 도면이다.
도 2를 참조하면, 비휘발성 메모리 장치(예를 들어, 도 1의 300)는 도 1을 참조하여 상술한 상기 프로그램 모드들에 기초하여 상기비휘발성 메모리 장치의 저장 영역의 전부 또는 일부에 하나 이상의 서브 영역을 설정하고, 상기 설정된 서브 영역에 대하여 프로그램 동작을 수행할 수 있다.
예를 들어, 상기 비휘발성 메모리 장치에 포함되는 복수의 메모리 셀들 각각은 N-비트 데이터를 저장할 수 있고, 상기 N이 '4'인 경우(예를 들어, 상기 복수의 메모리 셀들 각각은 쿼드 레벨 셀(QLC)), 상기 프로그램 모드들은 상기 N-비트보다 작거나 같은 디지털 데이터를 프로그램하기 위한 의사 싱글 레벨 셀(pSLC) 프로그램 모드, 의사 멀티 레벨 셀(pMLC) 프로그램 모드, 의사 트리플 레벨 셀(pTLC) 및 쿼드레벨 셀(QLC) 프로그램 모드 중 하나일 수 있다.
일 실시예에서, 상기 쿼드 레벨 셀(QLC) 프로그램 모드에서 프로그램하는 경우, 상응하는 메모리 셀은 도 2에 도시된 바와 같이 4-비트의 데이터로서 디지털 데이터들인 '0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '1010', '1011', '1100', '1101', '1110' 및 '1111' 중 하나를 나타내는 프로그램 상태로 프로그램될 수 있다.
일 실시예에서, 상기 의사 싱글 레벨 셀(pSLC) 프로그램 모드에서 프로그램하는 경우, 상응하는 메모리 셀은 1-비트의 데이터로서 싱글 레벨 셀(SLC)에 프로그램 된 것과 유사하게 디지털 데이터들인 '0' 및 '1' 중 하나를 나타내는 프로그램 상태로 프로그램될 수 있다. 도 2에 도시된 바와 같이 쿼드 레벨 셀(QLC)의 4-비트의 데이터인 '0000' 및 '1000'을 나타내는 프로그램 상태들(음영으로 표시)이 상기 의사 싱글 레벨 셀(pSLC) 프로그램 모드에서 1-비트의 데이터로서 '0' 및 '1'을 각각 나타낼 수 있다.
일 실시예에서, 상기 의사 멀티 레벨 셀(pMLC) 프로그램 모드에서 프로그램하는 경우, 상응하는 메모리 셀은 2-비트의 데이터로서 멀티 레벨 셀(MLC)에 프로그램 된 것과 유사하게 디지털 데이터들인 '00', '01', '10' 및 '11' 중 하나를 나타내는 프로그램 상태로 프로그램될 수 있다. 도 2에 도시된 바와 같이 쿼드 레벨 셀(QLC)의 4-비트의 데이터인 '0000', '0100', '1000' 및 '1100'을 나타내는 프로그램 상태들(음영으로 표시)이 상기 의사 멀티 레벨 셀(pMLC) 프로그램 모드에서 2-비트의 데이터로서 '00', '01', '10' 및 '11'을 각각 나타낼 수 있다.
도시의 편의를 위해, 상기 의사 트리플 레벨 셀(pTLC) 프로그램 모드에서 프로그램하는 경우에 관하여 생략하였으나, 상기 의사 싱글 레벨 셀(pSLC) 프로그램 모드 및 상기 의사 멀티 레벨 셀(pMLC) 프로그램 모드와 유사한 방식으로 상기 의사 트리플 레벨 셀(pTLC) 프로그램 모드 또한 동작할 수 있다. 상기 의사 싱글 레벨 셀(pSLC) 프로그램 모드 및 상기 의사 멀티 레벨 셀(pMLC) 프로그램 모드 각각에 프로그램되는 프로그램 상태들은 예시에 불과한 것으로 본 발명의 범위는 이에 한정되지 않는다.
도 3은 도 1의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 3을 참조하면, 스토리지 컨트롤러(200)는 프로세서(210), 플래시 변환 계층(220), 중복 제거 관리자(230), 프로그램 관리자(240), 호스트 인터페이스(HIF)(250), ECC(error correction code) 엔진(260), 압축 엔진 (270) 및 메모리 인터페이스(280)를 포함한다.
플래시 변환 계층(220), 중복 제거 관리자(230) 및 프로그램 관리자(240)는 도 1을 참조하여 상술한 플래시 변환 계층(130), 중복 제거 관리자(150) 및 프로그램 관리자(170)에 각각 대응할 수 있다.
프로세서(210)는 호스트 장치(예를 들어, 도 1의 30)로부터 호스트 인터페이스(250)를 통하여 수신된 요청들에 응답하여 스토리지 컨트롤러 (200)의 동작을 제어할 수 있다. 예를 들어, 프로세서(210)는 비휘발성 메모리 장치(예를 들어, 도 1의 300)를 구동하기 위한 펌웨어를 채용하여 각각의 구성들을 제어할 수 있다. 예를 들어, 프로세서(210)는 플래시 변환 계층(220)을 제어하여 상기 호스트 장치로부터 수신되는 논리 어드레스를 상기 비휘발성 메모리 장치의 물리 어드레스로 변환할 수 있다. 프로세서 (210)는 중복 제거 관리자(230)를 제어하여 상기 호스트 장치로부터 수신된 데이터에 대한 중복 제거를 수행할 수 있다. 이 경우, 중복 제거 관리자 (230)는 상기 비휘발성 메모리 장치에 데이터를 프로그램하기 전 암호화 기법을 이용하여 수 바이트(byte)로 압축된 해시값을 생성 하여 보관하고, 상기 호스트 장치로부터 새롭게 수신된 데이터에 대한 해시값과 상기 보관된 해시값을 비교하여 상기 중복 제거를 수행할 수 있다. 프로세서 (210)는 프로그램 관리자(240)를 제어하여 상기 비휘발성 메모리 장치에 저장된 데이터에 대하여 도 1을 참조하여 상술한 상기 제1 프로그램 동작을 수행하기 위해 필요한 다양한 동작들을 수행할 수 있다.
일 실시예에서, 플래시 변환 계층(220)은 상기 논리 어드레스와 상기 물리 어드레스 사이의 맵핑 관계를 나타내는 맵핑 테이블(MPT)(225)을 포함할 수 있고, 중복 제거 관리자(230)는 상기 물리 어드레스에 대응하고 데이터의 중복 저장 횟수를 나타내는 레퍼런스 카운트 값을 나타내는 레퍼런스 카운트 테이블(RCT)(235)을 포함할 수 있고, 프로그램 관리자 (240)는 상기 레퍼런스 카운트 값과 상기 프로그램 모드들 사이의 대응 관계를 나타내는 타겟 프로그램 모드 테이블(TPMT)(247)을 포함할 수 있다.
일 실시예에서, 프로그램 관리자(240)는 레퍼런스 카운트/타겟 프로그램 모드 체커(241), 프로그램 대기 리스트(243) 및 프로그램 버퍼 (245)를 더 포함할 수 있다. 레퍼런스 카운트/타겟 프로그램 모드 체커 (241)는 상기 레퍼런스 카운트 값이 업데이트된 경우, 타겟 프로그램 모드 테이블(247)에 기초하여 상기 제1 프로그램 동작의 수행 여부를 결정할 수 있다. 프로그램 대기 리스트(243)는 상기 제1 프로그램 동작을 수행하는 것으로 결정된 경우, 상기 제1 프로그램 동작이 수행되는 데이터에 대응하는(즉, 프로그램되어 있는) 비휘발성 메모리 장치의 제1 물리 어드레스 및 상기 데이터를 프로그램하고자 하는 상기 비휘발성 메모리 장치의 제2 물리 어드레스를 나타내는 제1 타겟 저장 영역 정보를 저장할 수 있다. 프로그램 버퍼(245)는 상기 제1 프로그램 동작을 수행하는 것으로 결정된 경우, 상기 제1 프로그램 동작이 수행되는 데이터를 임시로 저장할 수 있다.
에러 정정을 위한 ECC 블록(470)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
압축 엔진(270)은 상기 호스트 장치로부터의 프로그램 요청에 대응하는 원본 데이터에 대하여 미리 설정된 압축 알고리즘에 기초하여 데이터 압축을 수행하여 압축 데이터를 생성할 수 있다. 예를 들어, 상기 압축 알고리즘은 디플레이트(Deflate) 알고리즘, 허프만(Huffman) 알고리즘 및 산술 부호화(arithmetic coding) 알고리즘 등을 포함할 수 있다.
호스트 인터페이스(250)는 상기 호스트 장치와 스토리지 컨트롤러(200) 및 상기 비휘발성 메모리를 포함하는 스토리지 장치 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(250)는 상기 호스트 장치의 버스 포맷(bus format)에 대응하여 상기 스토리지 장치와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 상기 호스트 장치의 버스 포맷은 PCIe(peripheral component interconnect express), NVMe 등일 수 있다.
메모리 인터페이스(280)는 상기 비휘발성 메모리 장치와 데이터를 교환할 수 있다. 메모리 인터페이스(280)는 데이터를 상기 비휘발성 메모리 장치의 저장 영역(예를 들어, 도 1의 310)으로 전송할 수 있고, 상기 저장 영역으로부터 리드된 데이터를 수신할 수 있다. 일 실시예에서, 메모리 인터페이스(280)는 상기 저장 영역과 하나의 채널을 통하여 연결될 수 있다. 다른 실시예에서, 메모리 인터페이스 (280)는 상기 저장 영역과 2 이상의 채널들을 통하여 연결될 수 있다.
도 4a 및 4b는 도 1의 맵핑 테이블 및 레퍼런스 카운트 테이블이 업데이트되는 과정을 설명하기 위한 도면들이다.
도 4a 및 4b에서, 시점들(T1, T2, T3, T4, T5, T6, T7)에서 호스트 장치(예를 들어, 도 1의 30)로부터 스토리지 컨트롤러(도 1의 100, 도 3의 200)로 요청들, 논리 어드레스들 및 데이터들이 전송되는 예가 도시된다. 도 4a 및 4b에서, 시점들(T1 ~ T7)은 균등한 간격을 두고 배치되어 있는 것으로 도시되어 있으나, 시점들(T1 ~ T7) 사이의 시간 간격은 예시에 불과하다. 도 5를 참조하여 후술하는 바와 같이 시점들(T1 ~ T7) 사이의 시간 간격은 스토리지 장치가 아이들(idle) 모드에 진입할 수 있을 정도로 충분히 길수도 있다.
도 4a를 참조하면, 시점(T1)에서, 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 프로그램 요청(PREQ)에 대응하는 논리 어드레스(LPN1) 및 데이터(DAT1)를 전송할 수 있다. 이 경우, 상기 스토리지 컨트롤러는 데이터(DAT1)를 비휘발성 메모리 장치(예를 들어, 도 1의 300)에 저장하고, 맵핑 테이블(예를 들어, 도 3의 225) 및 레퍼런스 카운트 테이블(예를 들어, 도 3의 235)을 각각 업데이트할 수 있다. 예를 들어, 상기 스토리지 컨트롤러는 상기 맵핑 테이블에서 논리 어드레스 (LPN1)를 물리 어드레스(PPNa)에 맵핑시키고, 상기 레퍼런스 카운트 테이블 에서 물리 어드레스(PPNa)에 대응하는 레퍼런스 카운트 값을 '1'로 기입할 수 있다.
시점(T2)에서, 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 및 프로그램 요청(PREQ)에 대응하는 논리 어드레스 (LPN2) 및 데이터 (DAT2)를 전송할 수 있다. 이 경우, 상기 스토리지 컨트롤러는 데이터(DAT2)를 상기 비휘발성 메모리 장치에 저장하고, 상기 맵핑 테이블 및 상기 레퍼런스 카운트를 각각 업데이트할 수 있다. 예를 들어, 상기 스토리지 컨트롤러는 상기 맵핑 테이블에서 논리 어드레스 (LPN2)를 물리 어드레스(PPNb)에 맵핑시키고, 상기 레퍼런스 카운트 테이블 에서 물리 어드레스(PPNb)에 대응하는 레퍼런스 카운트 값을 '1'로 기입할 수 있다.
시점(T3)에서, 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 및 프로그램 요청(PREQ)에 대응하는 논리 어드레스 (LPN3) 및 데이터 (DAT1)를 전송할 수 있다. 이 경우, 상기 스토리지 컨트롤러는 시점(T3)에서 수신된 데이터(DAT1)가 시점(T3) 이전에 수신되어 상기 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 데이터(DAT1)를 상기 비휘발성 메모리 장치에 저장하지 않고(즉, 데이터(DAT1)에 대한 물리적인 프로그램 없이) 데이터(DAT1)를 논리적으로 기입하는 중복 제거를 수행할 수 있다. 상기 중복 제거를 수행한 결과에 기초하여, 상기 스토리지 컨트롤러는 상기 맵핑 테이블에서 논리 어드레스(LPN3)를 물리 어드레스(PPNa)에 맵핑시키고, 상기 레퍼런스 카운트 테이블에서 물리 어드레스(PPNa)에 대응하는 레퍼런스 카운트 값을 '1'에서 '2'로 증가시킬 수 있다.
시점(T4)에서, 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 및 프로그램 요청(PREQ)에 대응하는 논리 어드레스 (LPN4) 및 데이터(DAT1)를 전송할 수 있다. 이 경우, 상기 스토리지 컨트롤러는 시점(T4)에서 수신된 데이터(DAT1)가 시점(T4) 이전에 수신되어 상기 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 데이터(DAT1)에 대한 상기 중복 제거를 수행할 수 있다. 상기 중복 제거를 수행한 결과에 기초하여, 상기 스토리지 컨트롤러는 상기 맵핑 테이블에서 논리 어드레스 (LPN4)를 물리 어드레스(PPNa)에 맵핑시키고, 상기 레퍼런스 카운트 테이블 에서 물리 어드레스(PPNa)에 대응하는 레퍼런스 카운트 값을 '2'에서 '3'으로 증가시킬 수 있다.
도 4b를 참조하면, 시점(T5)에서, 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 및 프로그램 요청(PREQ)에 대응하는 논리 어드레스(LPN3) 및 데이터(DAT3)를 전송할 수 있다. 이 경우, 상기 스토리지 컨트롤러는 시점(T5)에서 수신된 논리 어드레스(LPN3)가 시점(T5) 이전에 이미 수신되어 상기 맵핑 테이블에 저장되어 있는 경우, 상기 맵핑 테이블에서 논리 어드레스(LPN3)를 물리 어드레스(PPNc)에 맵핑시키고, 상기 레퍼런스 카운트 테이블에서 물리 어드레스(PPNc)에 대응하는 레퍼런스 카운트 값을 '1'로 기입하고, 물리 어드레스(PPNa)에 대응하는 레퍼런스 카운트 값을 '3'에서 '2'로 감소시킬 수 있다.
시점(T6)에서, 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 및 프로그램 요청(PREQ)에 대응하는 논리 어드레스 (LPN4) 및 데이터 (DAT3)를 전송할 수 있다. 이 경우, 상기 스토리지 컨트롤러는 시점(T6) 에서 수신된 데이터(DAT3)가 시점(T6) 이전에 수신되어 상기 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 데이터 (DAT3)에 대한 상기 중복 제거를 수행할 수 있다. 상기 중복 제거를 수행한 결과에 기초하여, 상기 스토리지 컨트롤러는 상기 맵핑 테이블에서 논리 어드레스(LPN4)를 물리 어드레스(PPNc)에 맵핑시키고, 상기 레퍼런스 카운트 테이블에서 물리 어드레스(PPNc)에 대응하는 레퍼런스 카운트 값을 '1'에서 '2'로 증가시킬 수 있다. 이 경우, 상기 스토리지 컨트롤러는 시점(T6)에서 수신된 논리 어드레스(LPN4)가 시점(T6) 이전에 이미 수신되어 상기 맵핑 테이블에 저장되어 있는 경우, 상기 맵핑 테이블에서 논리 어드레스(LPN4)를 물리 어드레스(PPNc)에 맵핑시키고, 상기 레퍼런스 카운트 테이블에서 물리 어드레스(PPNa)에 대응하는 값을 '2'에서 '1'로 감소시킬 수 있다.
시점(T7)에서, 상기 호스트 장치는 상기 스토리지 컨트롤러로 이레이즈 요청(EREQ) 및 이레이즈 요청(EREQ)에 대응하는 논리 어드레스 (LPN4)를 전송할 수 있다. 이 경우, 상기 스토리지 컨트롤러는 상기 맵핑 테이블에서 논리 어드레스(LPN4)와 맵핑 관계를 나타내는 물리 어드레스 (PPNc)를 포함하는 상기 비휘발성 메모리 장치의 메모리 블록에 대한 맵핑 관계를 전부 해제하고, 상기 레퍼런스 카운트 테이블에서 물리 어드레스 (PPNc)에 대응하는 레퍼런스 카운트 값을 '2'에서 '1'로 감소시킬 수 있다.
시점들(T1 ~ T7) 중에서 시점들(T3, T4, T6)에서 상기 중복 제거가 수행되어 상기 중복 제거에 대응되는 레퍼런스 카운트 값들이 증가할 수 있고, 시점들(T5 및 T6)에서 상기 비휘발성 메모리 장치에 이미 저장된 데이터에 대한 업데이트가 수행되어 상기 업데이트에 대응되는 레퍼런스 카운트 값들이 증가 또는 감소될 수 있고, 시점(T7)에서 상기 비휘발성 메모리 장치에 이미 저장된 데이터에 대한 소거가 수행되어 상기 소거에 대응되는 레퍼런스 카운트 값들이 감소할 수 있다.
도 5는 도 1의 타겟 프로그램 모드 테이블에 기초하여 수행되는 제1 프로그램 동작을 설명하기 위한 도면이다.
도 5에서, 시점들(T2, T3, T4)은 도 4a 및 4b에 도시된 시점들(T2, T3, T4)에 각각 상응한다. 시점들(T2, T3, T4) 각각에서 호스트 장치, 스토리지 컨트롤러 및 비휘발성 메모리 장치 각각의 동작은 중복되는 한도 내에서 도 4a를 참조하여 설명한 것과 동일하다. 따라서 도 4a의 설명과 중복되는 설명은 생략하기로 한다.
도 4a 및 5를 참조하면, 시점(T2)에서 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 논리 어드레스(LPN2) 및 데이터 (DAT2)를 전송한다(S10). 상기 스토리지 컨트롤러는 S10 동작에 응답하여 맵핑 테이블(MPT) 및 레퍼런스 카운트 테이블(RCT)을 업데이트하고(S11), 상기 비휘발성 메모리 장치로 프로그램 요청(PREQ)에 대응하는 프로그램 커맨드(PCMD), 물리 어드레스(PPNb) 및 데이터(DAT2)를 전송한다(S12). 상기 비휘발성 메모리 장치는 S12 동작에 응답하여 데이터(DAT2)를 프로그램한다(S13). 시점(T3)에서 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 논리 어드레스(LPN3) 및 데이터(DAT1)를 전송한다(S14). 상기 스토리지 컨트롤러는 S14 동작에 응답하여 상기 맵핑 테이블 및 상기 레퍼런스 카운트 테이블을 업데이트하고(S15), 상기 중복 제거를 수행한다(S16). 시점(T4)에서 상기 호스트 장치는 상기 스토리지 컨트롤러로 프로그램 요청(PREQ), 논리 어드레스(LPN4) 및 데이터(DAT1)를 전송한다(S19).
한편, 상기 스토리지 컨트롤러 및 상기 비휘발성 메모리 장치를 포함하는 스토리지 장치는 아이들(idle) 모드에 진입하거나 가비지 컬렉션(garbage) 컬렉션을 수행할 수 있다. 이 경우, 상기 스토리지 컨트롤러는 상기 비휘발성 메모리 장치가 프로그램 동작을 수행하기 위해 요구되는 커맨드(CMDx) 및 어드레스(ADDRx)를 전송할 수 있고(S17), 상기 비휘발성 메모리 장치는 도 1 및 2 등을 참조하여 상술한 상기 제1 프로그램 동작을 수행할 수 있다(S18).
일 실시예에서, 상기 스토리지 장치는 상기 호스트 장치로부터의 제1 요청(예를 들어, S14에서 PREQ)이 수신된 시점으로부터 미리 설정된 아이들 모드 진입 시간을 경과한 시점까지 상기 호스트 장치로부터 상기 제1 요청에 후속하는 제2 요청(예를 들어, S19에서 PREQ)이 미수신된 경우, 상기 아이들 모드에 진입할 수 있다.
일 실시예에서, 상기 스토리지 장치에 포함되는 프로세서(예를 들어, 도 3의 210)는 상기 스토리지 장치가 미리 설정된 조건을 만족하는 경우 상기 가비지 컬렉션을 수행할 수 있다. 예를 들어, 상기 비휘발성 메모리 장치에 저장된 무효(invalid) 데이터가 상기 비휘발성 메모리 장치의 저장 영역(예를 들어, 도 1의 310)에서 미리 설정된 비율 이상을 차지하는 경우, 상기 프로세서는 상기 가비지 컬렉션을 수행할 수 있다.
상기S10, S11, S12, S13, S14, S15, S16 및S19 각각은 상기 호스트 장치, 상기 스토리지 컨트롤러 및 상기 비휘발성 메모리 장치를 포함하는 전자 시스템의 노멀 동작에 해당할 수 있고, 상기 S17 및 S18 각각은 상기 전자 시스템의 백그라운드 동작에 해당할 수 있다.
도 6은 도 1의 타겟 프로그램 모드 테이블의 일 실시예를 나타내는 도면이다.
도 6에서, 타겟 프로그램 모드 테이블(TPMT)(예를 들어, 도 1의 175)이 도시된다. 상기 타겟 프로그램 모드 테이블은 레퍼런스 카운트(RC) 값(예를 들어, '4' 이상의 정수)과 프로그램 모드들 사이의 대응 관계를 나타낼 수 있다.
일 실시예에서, 상기 레퍼런스 카운트 값이 '1' 이하인 경우, 타겟 프로그램 모드(TPM)는 쿼드 레벨 셀(QLC) 프로그램 모드일 수 있고, 상기 레퍼런스 카운트 값이 '2' 또는 '3'인 경우, 타겟 프로그램 모드(TPM)는 의사 멀티 레벨 셀(pMLC) 프로그램 모드일 수 있고, 상기 레퍼런스 카운트 값이 '4' 이상인 경우 타겟 프로그램 모드(TPM)는 의사 싱글 레벨 셀(pSLC) 프로그램 모드일 수 있다.
일 실시예에서, 의사 싱글 레벨 셀(pSLC) 프로그램 모드는 쿼드 레벨 셀(QLC) 프로그램 모드 및 의사 멀티 레벨 셀(pMLC) 프로그램 모드보다 상위 티어(tier)의 프로그램 모드에 해당할 수 있고, 쿼드 레벨 셀(QLC) 프로그램 모드는 의사 싱글 레벨 셀(pSLC) 프로그램 모드 및 의사 멀티 레벨 셀(pMLC) 프로그램 모드보다 하위 티어의 프로그램 모드에 해당할 수 있다. 의사 멀티 레벨 셀(pMLC) 프로그램 모드는 의사 싱글 레벨 셀(pSLC) 프로그램 모드 및 쿼드 레벨 셀(QLC) 프로그램 모드 사이의 중간 티어의 프로그램 모드에 해당할 수 있다.
도 1 및 도 2를 참조하여 상술한 바와 같이, 의사 싱글 레벨 셀(pSLC) 프로그램 모드에서 비휘발성 메모리 장치는 저장 영역에 포함되는 각 메모리 셀에 1-비트의 데이터를 프로그램할 수 있고, 의사 멀티 레벨 셀(pMLC) 프로그램 모드에서 상기 비휘발성 메모리 장치는 저장 영역에 포함되는 각 메모리 셀에 2-비트의 데이터를 프로그램할 수 있고, 쿼드 레벨 셀(QLC) 프로그램 모드에서 상기 비휘발성 메모리 장치는 저장 영역에 포함되는 각 메모리 셀에 4-비트의 데이터를 프로그램할 수 있다.
도 6에 도시된 바와 같이, 상기 레퍼런스 카운트 값이 '1'에서 '2'로 증가하는 경우, 타겟 프로그램 모드(TPM)는 쿼드 레벨 셀(QLC) 프로그램 모드에서 의사 멀티 레벨 셀(pMLC) 프로그램 모드로 변경되고, 상기 레퍼런스 카운트 값이 '3'에서 '4'로 증가하는 경우, 타겟 프로그램 모드(TPM)는 의사 멀티 레벨 셀(pMLC) 프로그램 모드에서 의사 싱글 레벨 셀(pSLC) 프로그램 모드로 변경될 수 있다. 상기 레퍼런스 카운트 값이 '1' 보다 작거나 같은 경우 쿼드 레벨 셀(QLC) 프로그램 모드를 유지하고, 상기 레퍼런스 카운트 값이 '2'에서 '3'으로 증가하거나 '3'에서 '2'로 감소하는 경우 의사 멀티 레벨 셀(pMLC) 프로그램 모드를 유지하고, 상기 레퍼런스 카운트 값이'4' 보다 크거나 같은 경우 의사 싱글 레벨 셀(pSLC) 프로그램 모드를 유지할 수 있다.
도 1을 참조하여 상술한 바와 같이 스토리지 장치는 데이터의 중복 저장 횟수에 따라 상기 비휘발성 메모리 장치에 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 제1 데이터를 제2 프로그램 모드에 상응하는 제2 비트수의 데이터로 프로그램하는 제1 프로그램 동작을 수행할 수 있다. 상기 레퍼런스 카운트 값은 상기 데이터의 중복 저장 횟수를 나타내고, 상기 타겟 프로그램 모드 테이블은 상기 레퍼런스 카운트 값과 상기 프로그램 모드들 사이의 대응 관계를 나타내므로, 상기 스토리지 장치는 상기 레퍼런스 카운트 값 및 상기 타겟 프로그램 모드 테이블에 기초하여 상기 제1 프로그램 동작을 수행할 수 있다.
도 7은 도 5의 제1 프로그램 동작의 일 실시예를 나타내는 도면이다.
도 7에서, 비휘발성 메모리 장치의 저장 영역(510)(예를 들어, 도 1의 310)이 도시된다. 도 1을 참조하여 상술한 바와 같이 상기 비휘발성 메모리 장치는 복수의 다이들을 포함하고, 상기 복수의 다이들 각각은 복수의 블록들을 포함할 수 있다. 상기 복수의 블록들은 상기 비휘발성 메모리 장치의 저장 영역을 구성할 수 있고, 미리 설정된 비트 수의 데이터들을 저장하는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 상기 복수의 메모리 셀들 각각은 N-비트 데이터를 저장할 수 있고, 상기 N은 '4'일 수 있다(예를 들어, 상기 복수의 메모리 셀들 각각은 쿼드 레벨 셀).
도 1, 도 6 및 도 7을 참조하면, 스토리지 컨트롤러(100)는 호스트 장치(30)로부터의 프로그램 요청(PREQ)이 수신된 경우 및 프로그램 요청(PREQ)에 대응하는 제1 데이터(DAT1)가 비휘발성 메모리 장치(300)에 이미 저장되어 있는 경우(570), 제1 데이터(DAT1)에 대한 물리적인 프로그램 없이 제1 데이터(DAT1)를 논리적으로 프로그램하는 중복 제거를 수행할 수 있다. 스토리지 컨트롤러(100)는 제1 데이터(DAT1)에 대하여 호스트 장치(30)로부터 프로그램 요청(PREQ) 또는 이레이즈 요청(EREQ)이 수신된 경우, 제1 데이터(DAT1)의 중복 저장 횟수를 나타내는 제1 레퍼런스 카운트 값을 제1 값에서 제2 값으로 업데이트할 수 있다. 스토리지 컨트롤러(100)는 타겟 프로그램 모드 테이블(175)에 기초하여 상기 제1 값에 대응하는 제1 프로그램 모드와 상기 제2 값에 대응하는 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 상기 제1 데이터를 상기 제2 프로그램 모드에 상응하는 제2 비트수의 데이터로 프로그램하는 제1 프로그램 동작을 수행하도록 커맨드 및 어드레스를 비휘발성 메모리 장치(300)로 전송할 수 있다.
일 실시예에서, 스토리지 컨트롤러(100)는 상기 제1 프로그램을 수행하기 전에, 비휘발성 메모리 장치(300)의 복수의 프리 블록들(530) 중 하나 이상(예를 들어, 531, 533, 535)을 오픈 블록으로 설정하고, 상기 설정된 오픈 블록에 대하여 상기 제1 프로그램 동작을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(100)는 상기 제2 프로그램 모드가 상기 제1 프로그램 모드와 서로 다른 타입의 프로그램 모드인 것으로 판단하고, 상기 제2 프로그램 모드가 의사 싱글 레벨 셀(pSLC) 프로그램 모드인 경우, 비휘발성 메모리 장치(300)로부터 제1 데이터(DAT1)를 리드(retrieve)하고 (500-1), 복수의 프리 블록들(531) 중 제1 프리 블록들을 상기 제1 프로그램 동작을 수행하기 위한 제1 오픈 블록(531)으로 설정하고, 상기 설정된 제1 오픈 블록(531)에 대하여 상기 제1 프로그램 동작(즉, 상기 의사 싱글 레벨 셀(pSLC) 프로그램 동작)을 수행하도록 비휘발성 메모리 장치(300)로 커맨드 및 어드레스를 전송할 수 있다(500-2). 이와 유사한 방식으로 상기 제2 프로그램 모드가 의사 멀티 레벨 셀(pMLC) 프로그램 모드이거나 의사 트리플 레벨 셀(pTLC) 프로그램 모드인 경우, 복수의 프리 블록들(531) 중 제2 프리 블록들 또는 제3 프리 블록들을 제2 오픈 블록 (533) 또는 제3 오픈 블록(535)으로 설정하고, 제2 오픈 블록(533) 및 제3 오픈 블록(535) 각각에 대하여 상기 제1 프로그램 동작을 수행하도록 비휘발성 메모리 장치(300)로 커맨드 및 어드레스를 전송할 수 있다.
일 실시예에서, 프로그램 요청(PREQ)이 수신되어 제1 데이터(DAT1)에 대한 상기 중복 제거가 수행된 경우에 상기 제1 레퍼런스 카운트 값이 증가할 수 있고, 이레이즈 요청(EREQ)이 수신되어 제1 데이터(DAT1)에 대한 이레이즈 동작이 수행되거나 또는 프로그램 요청(PREQ)이 수신되어 제1 데이터(DAT1)의 내용을 변경하는 업데이트 동작이 수행되는 경우 상기 제1 레퍼런스 카운트 값이 감소할 수 있다.
일 실시예에서, 상기 제2 값이 상기 제1 값보다 큰 경우 및 상기 제2 프로그램 모드와 상기 제1 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 제1 프로그램 동작이 수행될 수 있고, 이 경우 상기 제2 비트 수는 상기 제1 비트 수보다 작을 수 있다. 상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 동일한 타입의 프로그램 모드인 경우, 상기 제1 프로그램 동작이 미수행될 수 있다.
일 실시예에서, 상기 제2 값이 상기 제1 값보다 작은 경우 및 상기 제2 프로그램 모드와 상기 제1 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 제1 프로그램 동작이 수행될 수 있고, 이 경우 상기 제2 비트 수는 상기 제1 비트 수보다 클 수 있다. 상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 동일한 타입의 프로그램 모드인 경우, 상기 제1 프로그램 동작이 미수행될 수 있다.
일 실시예에서, 상기 제1 레퍼런스 카운트 값이 상기 제1 값에서 상기 제2 값으로 업데이트되고 상기 제1 프로그램 동작을 수행한 이후에, 제1 데이터(DAT1)에 대하여 호스트 장치(30)로부터의 프로그램 요청(PREQ) 또는 이레이즈 요청(EREQ)이 수신된 경우에, 제1 데이터(DAT1)의 상기 제1 레퍼런스 카운트 값이 상기 제2 값에서 제3 값으로 추가적으로 업데이트되고, 상기 제2 값에 대응하는 상기 제2 프로그램 모드와 상기 제3 값에 대응하는 제3 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 제2 프로그램 모드에 상응하는 상기 제2 비트 수의 데이터로 프로그램 된 제1 데이터(DAT1)를 상기 제3 프로그램 모드에 상응하는 제3 비트 수의 데이터로 프로그램하는 제2 프로그램 동작이 추가적으로 수행될 수 있다. 상기 제2 프로그램 모드와 상기 제3 프로그램 모드가 동일한 타입의 프로그램 모드인 경우, 상기 제2 프로그램 동작이 미수행될 수 있다.
예를 들어, 도 1 및 도 4a를 참조하면, 시점(T1)에서 프로그램 요청(PREQ)에 대응하는 제1 데이터(DAT1)는 비휘발성 메모리 장치(300)에 최초로 프로그램되는 데이터에 해당하고, 제1 데이터(DAT1)의 제1 레퍼런스 카운트 값은 '1'로 기입될 수 있다. 이 경우, 도 6의 타겟 프로그램 모드 테이블에 기초하여 상기 제1 레퍼런스 카운트 값(예를 들어, '0')에 대응하는 쿼드 레벨 셀 프로그램 모드(QLC_PGM_MODE)에서 제1 데이터(DAT1) 가 비휘발성 메모리 장치(300)에 프로그램될 수 있다. 시점(T3)에서 프로그램 요청(PREQ)에 대응하는 제1 데이터(DAT1)는 시점(T1)에서 비휘발성 메모리 장치(300)에 이미 저장되었고, 제1 데이터(DAT1)의 제1 레퍼런스 카운트 값은 제1 값(예를 들어, '1')에서 제2 값(예를 들어, '2')으로 증가한다. 이 경우, 도 6의 타겟 프로그램 모드 테이블(TPMT)에 기초하여 상기 제1 값에 대응하는 제1 프로그램 모드와 상기 제2 값에 대응 하는 프로그램 모드가 서로 다른 타입의 프로그램 모드에 해당하므로(예를 들어, 상기 제1 프로그램 모드는 쿼드 레벨 셀 프로그램 모드이고, 상기 제2 프로그램 모드는 의사 멀티 레벨 셀 프로그램 모드), 제1 데이터 (DAT1)는 비휘발성 메모리 장치(300)로부터 리드되고, 상기 제2 프로그램 모드에서 비휘발성 메모리 장치(300)에 다시 프로그램될 수 있다.
도 7에 도시된 바와 같이, 상기 제1 프로그램 동작은 비휘발성 메모리 장치의 오픈 블록들(예를 들어, 531, 533, 535)에 대하여 수행될 수 있다. 상기 오픈 블록들은 클로즈드 블록들(예를 들어, 550)과 달리 내부에 유효(valid) 데이터를 프로그램할 수 있는 저장 공간이 남아 있는 블록들을 의미할 수 있다.
일 실시예에서, 스토리지 컨트롤러(100)는 도 3을 참조하여 상술한 압축 엔진(270)을 이용하여 호스트 장치(30)로부터의 프로그램 요청(PREQ)에 대응하는 원본 데이터에 대하여 미리 설정된 압축 알고리즘에 기초하여 데이터 압축을 수행하여 압축 데이터를 생성할 수 있다. 이 경우, 상기 압축 데이터는 비휘발성 메모리 장치(300)의 일정한 영역(예를 들어, 553)에 프로그램될 수 있고, 상기 제1 프로그램 동작은 상기 원본 데이터에 대하여 상기 데이터 압축을 수행하지 않고 비휘발성 메모리 장치(300)에 저장하는 것(예를 들어, 551 및 553)과 비교하여 상기 압축 데이터를 비휘발성 메모리 장치(300)에 저장함으로써 절약된 저장 영역(예를 들어, 551)에 대하여 수행될 수 있다.
도 8은 도 1의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 1, 도 3 및 도 8을 참조하면, 스토리지 컨트롤러(700)는 프로세서(710), 플래시 변환 계층(720), 중복 제거 관리자(730) 및 프로그램 관리자(740)를 포함한다. 프로세서(710), 플래시 변환 계층(720), 중복 제거 관리자(730) 및 프로그램 관리자(740)는 도 3의 프로세서(210), 플래시 변환 계층(220), 중복 제거 관리자(230) 및 프로그램 관리자(740)에 각각 대응할 수 있으므로, 도 3을 참조하여 상술한 설명과 중복되는 설명은 생략하기로 한다.
플래시 변환 계층(720)은 맵핑 테이블(MPT)(725)을 포함하고, 중복 제거 관리자(730)는 레퍼런스 카운트 테이블(735)을 포함하며, 프로그램 관리자(740)는 레퍼런스 카운트/타겟 프로그램 모드 체커(741), 타겟 프로그램 모드 테이블(747), 프로그램 대기 리스트(743) 및 프로그램 버퍼(745)를 포함할 수 있다.
프로세서(710)는 스토리지 컨트롤러(700)에 포함되는 각 구성요소를 전반적으로 제어할 수 있고, 도 5를 참조하여 상술한 스토리지 장치의 상기 아이들 모드로의 진입 또는 상기 가비지 컬렉션을 수행할 수 있다. 이를 위해, 프로세서(720)는 플래시 변환 계층(720), 중복 제거 관리자(730) 및 프로그램 관리자(740)로 제어 신호들(FCTL, DCTL 및 PCTL)을 각각 제공할 수 있다.
플래시 변환 계층(720)은 맵핑 테이블(725)이 업데이트된 경우, 멥핑 테이블(725)의 업데이트를 나타내는 맵핑 테이블 업데이트 신호(MTUSIG)를 중복 제거 관리자(730)로 전송할 수 있고, 중복 제거 관리자(730)는 레퍼런스 카운트 테이블(735)이 업데이트된 경우 레퍼런스 카운트 테이블 (735)의 업데이트를 나타내는 레퍼런스 카운트 테이블 업데이트 신호 (RCUSIG)를 프로그램 관리자(740)로 전송할 수 있다.
레퍼런스 카운트/타겟 프로그램 모드 체커(741)는 도 7을 참조하여 상술한 상기 제1 레퍼런스 카운트 값이 업데이트된 경우, 타겟 프로그램 모드 테이블(TPMT)에 기초하여 상기 제1 프로그램 동작의 수행 여부를 결정할 수 있다. 프로그램 대기 리스트(743)는 상기 제1 프로그램 동작을 수행하는 것으로 결정된 경우, 상기 제1 프로그램 동작의 대상인 제1 데이터가 프로그램되어 있는 제1 물리어드레스 및 상기 제1 데이터를 프로그램하고자 하는 상기 제2 물리 어드레스를 나타내는 제1 타겟 저장 영역 정보를 저장할 수 있다. 프로그램 버퍼(745)는 상기 제1 프로그램 동작을 수행하는 것으로 결정된 경우, 상기 제1 데이터를 임시로 저장할 수 있다. 상기 제1 데이터는 도 8에 도시된 바와 같이 헤더(745-1)와 버퍼 데이터(745-2)의 형태로 프로그램 버퍼(745)에 저장될 수 있다.
일 실시예에서, 레퍼런스 카운트/타겟 프로그램 모드 체커(741)는 상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드로 판단되는 경우, 상기 제1 프로그램 동작을 수행하는 것으로 결정되었음을 나타내는 제1 프로그램 동작 결정 신호(PDS)를 프로세서(710)로 출력하고, 제1 물리 어드레스(PPNx) 및 제1 타겟저장 영역 정보(TSRIx)를 프로그램 대기 리스트(743)로 출력할 수 있다.
일 실시예에서, 스토리지 컨트롤러(700)는 프로그램 관리자(740)에 포함되는 구성 요소들(741, 743, 745 및 747) 중 일부 구성 요소들만을 이용하여 상기 제1 프로그램 동작을 수행할 수도 있다. 예를 들어, 상기 스토리지 장치가 상기 가비지 컬렉션을 수행하는 경우, 비휘발성 메모리 장치에 저장된 유효 데이터에 대한 마이그레이션 동작이 수행될 수 있다. 스토리지 컨트롤러(700)는 상기 유효 데이터를 리드하고 상기 리드된 유효 데이터에 상응하는 레퍼런스 카운트 값 및 프로그램 모드 테이블에 기초 하여 상기 제1 프로그램 동작을 수행할 수 있다. 상기 제1 프로그램 동작은 상기 가비지 컬렉션의 수행에 따른 상기 마이그레이션 동작에 포함되어 수행될 수 있으므로, 상기 가비지 컬렉션에 추가적으로 발생할 수 있는 발생되는 별도의 오버헤드 없이 상기 제1 프로그램 동작이 수행될 수 있다. 이 경우, 프로그램 관리자(740)는 레퍼런스 카운트/타겟 프로그램 모드 체커(741)만을 활성화시켜 상기 제1 프로그램 동작의 수행 여부만을 결정하고, 프로그램 대기 리스트(743) 및 프로그램 버퍼(745)에 상기 유효 데이터와 관련된 정보들을 기입하지 않은 상태로 상기 제1 프로그램 동작과 관련된 동작들을 수행할 수 있다.
도 9는 도 8의 프로그램 관리자의 동작을 설명하기 위한 블록도이다.
도 8 및 도 9를 참조하면, 상기 제1 프로그램 동작을 수행하는 것으로 결정된 경우, 프로그램 대기 리스트(743)는 프로세서(710)로부터 수신된 제1 제어 신호(PCTL_WLST)에 기초하여 레퍼런스 카운트/타겟 프로그램 모드 체커(741)로부터 상기 제1 물리 어드레스(PPNx) 및 상기 제2 물리 어드레스를 나타내는 제1 타겟 저장 영역 정보(TSRIx)를 수신할 수 있다. 도 9에 도시된 바와 같이, 프로그램 대기 리스트(743)는 서로 다른 시점들에서 레퍼런스 카운트/타겟 프로그램 모드체커(741)로부터 수신된 제1 및 제2 물리 어드레스들 및 타겟 저장 영역 정보들(예를 들어, 743-1, 743-2, 743-3)을 저장하고, 제1 및 제2 물리 어드레스들 및 타겟 저장 영역 정보들 각각에 상응하는 제1 프로그램 동작이 수행될 때까지 보유할 수 있다.
도 5를 참조하여 상술한 바와 같이 호스트 장치로부터의 제1 요청이 수신된 시점으로부터 상기 아이들 모드 진입 시간을 경과한 시점까지 상기 호스트 장치로부터 상기 제1 요청에 후속하는 제2 요청이 미수신된 경우, 상기 스토리지 장치가 상기 아이들 모드에 진입할 수 있다. 이 경우, 상기 스토리지 장치가 상기 아이들 모드에 진입해 있는 동안, 프로그램 버퍼(745)는 프로그램 대기 리스트(743)로부터 수신된 제1 물리 어드레스(PPNx) 및 프로세서(710)로부터 수신된 제2 제어 신호(PCTL_BFR)에 기초하여 비휘발성 메모리 장치의 제1 물리 어드레스(예를 들어, 743-1의 PPN1)에 저장된 제1 데이터(예를 들어, DATx)를 수신하여 버퍼 데이터(745-2)로서 저장하고(예를 들어, 745-2a), 제1 물리 어드레스(예를 들어, 743-1의 PPN1)를 프로그램 대기 리스트 (743)로부터 수신하여 버퍼 데이터(745-2)의 헤더(745-1)로서 저장할 수 있다(예를 들어, 745-1a).
상기 스토리지 장치가 상기 아이들 모드에 진입해 있는 동안, 상기 호스트 장치로부터 상기 제2 요청의 수신 여부를 확인할 수 있다. 예를 들어, 상기 호스트 장치로부터 상기 제2 요청의 미수신을 확인한 후에 프로그램 버퍼(745)에 버퍼 데이터(745-2)로서 저장된 제1 데이터(예를 들어, DATx)를 상기 비휘발성 메모리 장치에 프로그램할 수 있다. 이와 같은 방식에 의하여 상기 제1 프로그램 동작이 도 5를 참조하여 상술한 상기 백그라운드 동작으로 동작할 수 있다.
도 10은 도 1의 타겟 프로그램 모드 테이블의 일 실시예를 나타내는 도면이다.
도 10에서, 타겟 프로그램 모드 테이블(TPMT)(예를 들어, 도 1의 175)이 도시된다. 상기 타겟 프로그램 모드 테이블은 레퍼런스 카운트(RC) 값(예를 들어, '4' 이상의 정수)과 프로그램 모드들 사이의 대응 관계를 나타낼 수 있다. 도 10의 타겟 프로그램 모드 테이블은 중복되는 한도 내에서 도 6을 참조하여 설명한 것과 동일하다. 따라서 도 6의 설명과 중복되는 설명은 생략하기로 한다.
일 실시예에서, 상기 레퍼런스 카운트 값이 '1' 이하인 경우, 타겟 프로그램 모드(TPM)는 쿼드 레벨 셀(QLC) 프로그램 모드일 수 있고, 상기 레퍼런스 카운트 값이 '2'인 경우, 타겟 프로그램 모드(TPM)는 의사 트리플 레벨 셀(pTLC) 프로그램 모드일 수 있다. 상기 레퍼런스 카운트 값이 '3'인 경우, 타겟 프로그램 모드(TPM)는 의사 멀티 레벨 셀(pMLC) 프로그램 모드일 수 있고, 상기 레퍼런스 카운트 값이 '4' 이상인 경우, 타겟 프로그램 모드(TPM)는 의사 싱글 레벨 셀(pSLC) 프로그램 모드일 수 있다.
도 1 및 도 2를 참조하여 상술한 바와 같이, 의사 싱글 레벨 셀(pSLC) 프로그램 모드에서 비휘발성 메모리 장치는 저장 영역에 포함되는 각 메모리 셀에 1-비트의 데이터를 프로그램할 수 있고, 의사 멀티 레벨 셀(pMLC) 프로그램 모드에서 상기 비휘발성 메모리 장치는 저장 영역에 포함되는 각 메모리 셀에 2-비트의 데이터를 프로그램할 수 있다. 의사 트리플 레벨 셀(pTLC) 프로그램 모드에서 상기 비휘발성 메모리 장치는 저장 영역에 포함되는 각 메모리 셀에 3-비트의 데이터를 프로그램할 수 있고, 쿼드 레벨 셀(QLC) 프로그램 모드에서 상기 비휘발성 메모리 장치는 저장 영역에 포함되는 각 메모리 셀에 4-비트의 데이터를 프로그램할 수 있다.
도 10에 도시된 바와 같이, 상기 레퍼런스 카운트 값이 '1'에서 '2'로 증가하는 경우, 타겟 프로그램 모드(TPM)는 쿼드 레벨 셀(QLC) 프로그램 모드에서 의사 트리플 레벨 셀(pTLC) 프로그램 모드로 변경되고, 상기 레퍼런스 카운트 값이 '2'에서 '3'으로 증가하는 경우, 타겟 프로그램 모드(TPM)는 의사트리플 레벨 셀(pTLC) 프로그램 모드에서 의사 멀티 레벨 셀(pMLC) 프로그램 모드로 변경될 수 있고, 상기 레퍼런스 카운트 값이 '3'에서 '4'로 증가하는 경우, 타겟 프로그램 모드(TPM)는 의사 멀티 레벨 셀(pMLC) 프로그램 모드에서 의사 싱글 레벨 셀(pSLC) 프로그램 모드로 변경될 수 있다. 상기 레퍼런스 카운트 값이 '1' 보다 작거나 같은 경우 쿼드 레벨 셀(QLC) 프로그램 모드를 유지하고, 상기 레퍼런스 카운트 값이 '4' 보다 크거나 같은 경우 의사 싱글 레벨 셀(pSLC) 프로그램 모드를 유지할 수 있다.
도 1을 참조하여 상술한 바와 같이 스토리지 장치는 데이터의 중복 저장 횟수에 따라 상기 비휘발성 메모리 장치에 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 제1 데이터를 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램 동작을 수행할 수 있다. 상기 레퍼런스 카운트 값은 상기 데이터의 중복 저장 횟수를 나타내고, 상기 타겟 프로그램 모드 테이블은 상기 레퍼런스 카운트 값과 상기 프로그램 모드들 사이의 대응 관계를 나타내므로, 상기 스토리지 장치는 상기 레퍼런스 카운트 값 및 상기 타겟 프로그램 모드 테이블에 기초하여 상기 제1 프로그램 동작을 수행할 수 있다.
도 11은 본 발명의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 순서도이다.
도 11을 참조하면, 호스트 장치로부터의 프로그램 요청이 수신된 경우 및 상기 프로그램 요청에 대응하는 제1 데이터가 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 상기 제1 데이터에 대한 중복 제거가 수행된다(S100).
일 실시예에서, 상기 중복 제거는 상기 제1 데이터에 대한 물리적인 프로그램 없이 상기 제1 데이터를 논리적으로 프로그램하는 것을 의미할 수 있다. 예를 들어, 상기 중복 제거는 상기 비휘발성 메모리 장치에 상기 제1 데이터를 기입하지 않고, 단지 스토리지 컨트롤러가 포함하는 맵핑 테이블만을 업데이트하여 수행될 수 있다.
상기 제1 데이터에 대하여 상기 호스트 장치로부터의 상기 프로그램 요청 또는 이레이즈 요청이 수신된 경우, 상기 제1 데이터의 중복 저장 횟수를 나타내는 제1 레퍼런스 카운트 값이 제1 값에서 제2 값으로 업데이트된다(S200).
타겟 프로그래밍 모드 테이블에 기초하여 상기 제1 값에 대응하는 제1 프로그램 모드와 상기 제2 값에 대응하는 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인지 여부를 판단한다(S300).
상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 상기 제1 데이터를 상기 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램을 수행하도록 커맨드 및 어드레스를 상기 비휘발성 메모리 장치로 전송한다(S400).
상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 동일한 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 동작을 미수행한다(S500).
일 실시예에서, S100, S200, S300 및 S400 동작들은 도 1의 스토리지 컨트롤러(100) 또는 도 3의 스토리지 컨트롤러(200)에 의하여 수행될 수 있고, S500 동작은 도 1의 비휘발성 메모리 장치(300)에 의하여 수행될 수 있다.
일 실시예에서, 상기 비휘발성 메모리 장치는 복수의 다이들을 포함하고, 상기 복수의 다이들 각각은 복수의 블록들을 포함할 수 있다. 상기 복수의 블록들은 비휘발성 메모리 장치의 저장 영역을 구성할 수 있고, 미리 설정된 비트 수의 데이터들을 저장하는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 상기 복수의 메모리 셀들 각각은 N-비트 데이터(N은 2 이상의 정수)를 저장할 수 있다.
일 실시예에서, 상기 프로그램 모드들은 미리 설정된 비트 수의 데이터로 상기 비휘발성 메모리 장치를 프로그램하기 위한동작 모드들일 수 있다.
일 실시예에서, 상기 프로그램 요청이 수신되어 상기 제1 데이터에 대한 상기중복 제거가 수행된 경우에 상기 제1 레퍼런스 카운트 값이 증가할 수 있고, 상기 제2 값이 상기 제1 값보다 큰 경우 및 상기 제2 프로그램 모드와 상기 제1 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 제1 프로그램 동작이 수행될 수 있다. 이 경우, 상기 제2 비트 수는 상기 제1 비트 수보다 작을 수 있다.
도 12는 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 전자 시스템을 나타내는 블록도이다.
도 12를 참조하면, 전자 시스템(3000)은 반도체 장치(3100) 및 반도체 장치(3100)와 전기적으로 연결되는 컨트롤러(3200)를 포함할 수 있다. 전자 시스템(3000)은 하나 또는 복수의 반도체 장치들(3100)을 포함하는 스토리지 장치 또는 이를 포함하는 전자 장치일 수 있다. 예를 들어, 전자 시스템(3000)은 SSD 장치, USB, 컴퓨팅 시스템, 의료 장치 또는 통신 장치일 수 있다.
반도체 장치(3100)는 메모리 장치일 수 있으며, 예를 들어, 도 1을 참조하여 상술한 비휘발성 메모리 장치일 수 있다. 반도체 장치(3100)는 제1 구조물(3100F) 및 제1 구조물(3100F) 상의 제2 구조물(3100S)을 포함할 수 있다. 제1 구조물(3100F)은 디코더 회로(3110), 페이지 버퍼 회로(3120) 및 로직 회로(3130)를 포함하는 주변 회로 구조물일 수 있다. 제2 구조물(3100S)은 비트 라인(BL), 공통 소스 라인(CSL), 워드라인들(WL), 제1 및 제2 상부 게이트 라인들(UL1, UL2), 제1 및 제2 하부 게이트 라인들(LL1, LL2), 및 비트 라인(BL)과 공통 소스 라인(CSL) 사이의 메모리 셀 스트링들(CSTR)을 포함하는 메모리 셀 구조물일 수 있다.
제2 구조물(3100S)에서, 각각의 메모리 셀 스트링들(CSTR)은 공통 소스 라인(CSL)에 인접하는 하부 트랜지스터들(LT1, LT2), 비트 라인(BL)에 인접하는 상부 트랜지스터들(UT1, UT2), 및 하부 트랜지스터들(LT1, LT2)과 상부 트랜지스터들(UT1, UT2) 사이에 배치되는 복수의 메모리 셀 트랜지스터들(MCT)을 포함할 수 있다.
제1 구조물(3100F)에서, 디코더 회로(3110), 페이지 버퍼 회로(3120) 및 로직 회로(3130)는 도 5의 어드레스 디코더(520), 페이지 버퍼 회로(530) 및 제어 회로(560)에 각각 대응할 수 있다.
공통 소스 라인(CSL), 제1 및 제2 하부 게이트 라인들(LL1, LL2), 워드 라인들(WL) 및 제1 및 제2 상부 게이트 라인들(UL1, UL2)은, 제1 연결 배선들(3115)을 통해 디코더 회로(3110)와 전기적으로 연결될 수 있다. 비트 라인들(BL)은 제2 연결 배선들(3125)을 통해 페이지 버퍼 회로(3120)와 전기적으로 연결될 수 있다. 입출력 패드(3101)는 입출력 연결 배선(3135)을 통해 로직 회로(3130)와 전기적으로 연결될 수 있다.
컨트롤러(3200)는 프로세서(3210), NAND 컨트롤러(3220) 및 호스트 인터페이스(3230)를 포함할 수 있다. 컨트롤러(3200)는 복수의 반도체 장치들(3000)을 제어할 수 있다. 프로세서(3210), NAND 컨트롤러(3220)에 포함되는 NAND 인터페이스(3221) 및 호스트 인터페이스(3230)는 도 4의 프로세서(430), 메모리 인터페이스(476) 및 호스트 인터페이스(410)에 각각 대응할 수 있다.
전자 시스템(3000)은 도 1 내지 도 13을 참조하여 상술한 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법을 수행할 수 있다.
도 13은 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 전자 시스템을 설명하기 위한 사시도이다.
도 13을 참조하면, 전자 시스템(4000)은 메인 기판(4001)과, 메인 기판(4001)에 실장되는 컨트롤러(4002), 하나 이상의 반도체 패키지(4003), 및 DRAM 장치(4004)를 포함할 수 있다. 반도체 패키지(4003) 및 DRAM 장치(4004)는 메인 기판(4001)에 형성되는 배선 패턴들(4005)에 의해 컨트롤러(4002)와 서로 연결될 수 있다.
메인 기판(4001)은 외부 호스트와 결합되는 복수의 핀들을 포함하는 커넥터(4006)를 포함할 수 있다. 커넥터(4006)에서 상기 복수의 핀들의 개수와 배치는, 전자 시스템(4000)과 상기 외부 호스트 사이의 통신 인터페이스에 따라 달라질 수 있다. 일 실시예에서, 전자 시스템(4000)은 커넥터(4006)를 통해 외부 호스트로부터 공급받는 전원에 의해 동작할 수 있다.
컨트롤러(4002)는 반도체 패키지(4003)에 데이터를 기록하거나, 반도체 패키지(4003)로부터 데이터를 읽어올 수 있으며, 전자 시스템(4000)의 동작 속도를 개선할 수 있다.
DRAM 장치(4004)는 데이터 저장 공간인 반도체 패키지(4003)와 외부 호스트의 속도 차이를 완화하기 위한 버퍼 메모리일 수 있다. 전자 시스템(4000)에 포함되는 DRAM 장치(4004)는 일종의 캐시 메모리로도 동작할 수 있으며, 반도체 패키지(4003)에 대한 제어 동작에서 임시로 데이터를 저장하기 위한 공간을 제공할 수도 있다.
반도체 패키지(4003)는 서로 이격된 제1 및 제2 반도체 패키지들(4003a, 4003b)을 포함할 수 있다. 제1 및 제2 반도체 패키지들(4003a, 4003b)은 각각 복수의 반도체 칩들(4200)을 포함하는 반도체 패키지일 수 있다. 제1 및 제2 반도체 패키지들(4003a, 4003b) 각각은, 패키지 기판(4100), 패키지 기판(4100) 상의 반도체 칩들(4200), 반도체 칩들(4200) 각각의 하부면에 배치되는 접착층들(4300), 반도체 칩들(4200)과 패키지 기판(2100)을 전기적으로 연결하는 연결 구조물(4400), 및 패키지 기판(4100) 상에서 반도체 칩들(4200) 및 연결 구조물(4400)을 덮는 몰딩층(4500)을 포함할 수 있다.
패키지 기판(4100)은 패키지 상부 패드들(4130)을 포함하는 인쇄 회로 기판일 수 있다. 각각의 반도체 칩(4200)은 입출력 패드(4210)를 포함할 수 있다. 입출력 패드(4210)는 도 24의 입출력 패드(3101)에 해당할 수 있다. 반도체 칩들(4200) 각각은 게이트 전극 구조물들(5210), 각 게이트 전극 구조물들(5210)을 관통하는 메모리 채널 구조물들(5220), 및 게이트 전극 구조물들(5210)을 분리시키는 분리 구조물들(5230)을 포함할 수 있다. 반도체 칩들(4200) 각각은 도 1, 도 3, 도 5, 도 7 등을 참조하여 상술한 비휘발성 메모리 장치를 포함할 수 있다.
일 실시예에서, 연결 구조물(4400)은 입출력 패드(4210)와 패키지 상부 패드들(4130)을 전기적으로 연결하는 본딩 와이어일 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 포함되는 스토리지 장치는 본 발명의 일 실시예에 따른 스토리지 장치는 데이터의 중복 저장 횟수에 따라 비휘발성 메모리 장치에 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 제1 데이터를 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램 동작을 수행할 수 있다. 상기 제1 프로그램 동작은 상기 제1 데이터의 중복 저장 횟수를 나타내는 레퍼런스 카운트 값과 프로그램 모드들 사이의 대응 관계를 나타내는 타겟프로그램 모드 테이블에 기초하여 수행될 수 있다. 상기 스토리지 장치는 상기 제1 프로그램 동작을 수행하여 상기 제1 데이터에 대한 독출성능을 개선시킬 수 있다. 다만 상기 제1 데이터의 중복 저장횟수가 증가하더라도 상기 비휘발성 메모리 장치에 한번만 프로그램되는 중복 제거의 특성상 상기 제1 프로그램 동작이 수행된 데이터가 상기 비휘발성 메모리 장치에서 차지하는 저장 공간의 크기는 증가하지 않는다. 따라서 본 발명의 일 실시예에 따른 스토리지 장치는 상기 제1 데이터가 상기 비휘발성 메모리 장치에서 차지하는 저장 공간의 크기를 증가시키지 않으면서 상기 제1 데이터에 대한 독출 성능을 효과적으로 개선할 수 있다.
본 발명의 실시예들은 스토리지 장치를 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 PC(Personal Computer), 서버 컴퓨터(server computer), 데이터 센터(data center), 워크스테이션(workstation), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블 (wearable) 기기, IoT(Internet of Things) 기기, IoE(Internet of Everything) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone) 등과 같은 전자 시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 미리 설정된 비트 수의 데이터로 프로그램하기 위한 프로그램 모드들에 기초하여 데이터들을 저장하는 비휘발성 메모리 장치; 및
    데이터의 중복 저장 횟수를 나타내는 레퍼런스 카운트 값과 상기 프로그램 모드들 사이의 대응 관계를 나타내는 타겟 프로그램 모드 테이블을 포함하고,
    호스트 장치로부터의 프로그램 요청이 수신된 경우 및 상기 프로그램 요청에 대응하는 제1 데이터가 상기 비휘발성 메모리 장치에 이미 저장되어 있는 경우, 상기 제1 데이터에 대한 물리적인 프로그램 없이 상기 제1 데이터를 논리적으로 프로그램하는 중복 제거를 수행하고,
    상기 제1 데이터에 대하여 상기 호스트 장치로부터의 상기 프로그램 요청 또는 이레이즈 요청이 수신된 경우, 상기 제1 데이터의 중복 저장 횟수를 나타내는 제1 레퍼런스 카운트 값을 제1 값에서 제2 값으로 업데이트하고,
    상기 타겟 프로그램 모드 테이블에 기초하여 상기 제1 값에 대응하는 제1 프로그램 모드와 상기 제2 값에 대응하는 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 것으로 판단된 경우, 상기 제1 프로그램 모드에 상응하는 제1 비트 수의 데이터로 프로그램 된 상기 제1 데이터를 상기 제2 프로그램 모드에 상응하는 제2 비트 수의 데이터로 프로그램하는 제1 프로그램을 수행하도록 커맨드 및 어드레스를 상기 비휘발성 메모리 장치로 전송하는 스토리지 컨트롤러를 포함하는 스토리지 장치.
  2. 제1 항에 있어서,
    상기 프로그램 요청이 수신되어 상기 제1 데이터에 대한 상기 중복 제거가 수행된 경우에 상기 제1 레퍼런스 카운트 값이 증가하고,
    상기 제2 값이 상기 제1 값보다 큰 경우 및 상기 제2 프로그램 모드와 상기 제1 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 제1 프로그램이 수행되며,
    상기 제2 비트 수는 상기 제1 비트 수보다 작은 것을 특징으로 하는 스토리지 장치.
  3. 제2 항에 있어서,
    상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 동일한 타입의 프로그램 모드인 경우, 상기 제1 프로그램을 미수행하는 것을 특징으로 하는 스토리지 장치.
  4. 제1 항에 있어서,
    상기 이레이즈 요청이 수신되어 상기 제1 데이터에 대한 이레이즈 동작이 수행된 경우에 상기 제1 레퍼런스 카운트 값이 감소하고,
    상기 제2 값이 상기 제1 값보다 작은 경우 및 상기 제2 프로그램 모드와 상기 제1 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 제1 프로그램이 수행되며,
    상기 제2 비트 수는 상기 제1 비트 수보다 큰 것을 특징으로 하는 스토리지 장치.
  5. 제4 항에 있어서,
    상기 제2 값이 상기 제1 값보다 작은 경우 및 상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 동일한 타입의 프로그램 모드인 경우, 상기 제1 프로그램을 미수행하는 것을 특징으로 하는 스토리지 장치.
  6. 제1 항에 있어서,
    상기 제1 레퍼런스 카운트 값이 상기 제1 값에서 상기 제2 값으로 업데이트되고 상기 제1 프로그램을 수행한 이후에, 상기 제1 데이터에 대하여 상기 호스트 장치로부터의 상기 프로그램 요청 또는 상기 이레이즈 요청이 수신된 경우에, 상기 제1 데이터의 상기 제1 레퍼런스 카운트 값이 상기 제2 값에서 제3 값으로 추가적으로 업데이트되고,
    상기 제2 값에 대응하는 상기 제2 프로그램 모드와 상기 제3 값에 대응하는 제3 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 제2 프로그램 모드에 상응하는 상기 제2 비트 수의 데이터로 프로그램 된 상기 제1 데이터를 상기 제3 프로그램 모드에 상응하는 제3 비트 수의 데이터로 프로그램하는 제2 프로그램을 추가적으로 수행하는 것을 특징으로 하는 스토리지 장치.
  7. 제1 항에 있어서, 상기 스토리지 컨트롤러는
    상기 호스트 장치로부터 수신되는 논리 어드레스를 상기 비휘발성 메모리 장치의 물리 어드레스로 변환하는 플래시 변환 계층;
    상기 중복 제거를 수행하는 중복 제거 관리자; 및
    상기 제1 프로그램을 수행하는 프로그램 관리자를 포함하는 것을 특징으로 하는 스토리지 장치.
  8. 제7 항에 있어서,
    상기 플래시 변환 계층은 상기 논리 어드레스와 상기 물리 어드레스 사이의 맵핑 관계를 나타내는 맵핑 테이블을 포함하고,
    상기 중복 제거 관리자는 상기 물리 어드레스에 대응하는 상기 레퍼런스 카운트 값을 나타내는 레퍼런스 카운트 테이블을 포함하고,
    상기 프로그램 관리자는 상기 타겟 프로그램 모드 테이블을 포함하는 것을 특징으로 하는 스토리지 장치.
  9. 제7 항에 있어서, 상기 프로그램 관리자는
    상기 제1 레퍼런스 카운트 값이 업데이트된 경우, 상기 타겟 프로그램 모드테이블에 기초하여 상기 제1 프로그램의 수행 여부를 결정하는 레퍼런스 카운트/타겟 프로그램 모드 체커;
    상기 제1 프로그램을 수행하는 것으로 결정된 경우, 상기 제1 데이터에 대응하는 제1 물리 어드레스 및 상기 제1 데이터를 프로그램하고자 하는 제2 물리 어드레스를 나타내는 제1 타겟 저장 영역 정보를 저장하는 프로그램 대기 리스트; 및
    상기 제1 프로그램을 수행하는 것으로 결정된 경우, 상기 제1 데이터를 임시로 저장하는 프로그램 버퍼를 더 포함하는 것을 특징으로 하는 스토리지 장치.
  10. 제9 항에 있어서, 상기 레퍼런스 카운트/타겟 프로그램 모드 체커는
    상기 제1 프로그램 모드와 상기 제2 프로그램 모드가 서로 다른 타입의 프로그램 모드인 경우, 상기 제1 프로그램을 수행하는 것으로 결정되었음을 나타내는 프로그램 결정 신호를 프로세서로 출력하고, 상기 제1 물리 어드레스 및 상기 제1 타겟 저장 영역 정보를 상기 프로그램 대기 리스트로 출력하는 것을 특징으로 하는 스토리지 장치.
KR1020220001907A 2022-01-06 2022-01-06 스토리지 장치 및 이의 동작 방법 KR102467372B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220001907A KR102467372B1 (ko) 2022-01-06 2022-01-06 스토리지 장치 및 이의 동작 방법
US17/891,495 US20230214123A1 (en) 2022-01-06 2022-08-19 Storage device and a method of operating the same
CN202310016515.XA CN116400851A (zh) 2022-01-06 2023-01-06 存储装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220001907A KR102467372B1 (ko) 2022-01-06 2022-01-06 스토리지 장치 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR102467372B1 true KR102467372B1 (ko) 2022-11-14

Family

ID=84043111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220001907A KR102467372B1 (ko) 2022-01-06 2022-01-06 스토리지 장치 및 이의 동작 방법

Country Status (3)

Country Link
US (1) US20230214123A1 (ko)
KR (1) KR102467372B1 (ko)
CN (1) CN116400851A (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170064992A (ko) * 2015-12-02 2017-06-12 삼성전자주식회사 중복제거를 위한 어드레스 매핑을 포함하는 플래시 메모리 장치 및 그 동작 방법
KR20170131274A (ko) * 2016-05-20 2017-11-29 삼성전자주식회사 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치
KR20180034842A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 메모리 제어장치 및 방법
KR20180058169A (ko) * 2016-11-23 2018-05-31 삼성전자주식회사 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법
JP2021189624A (ja) * 2020-05-27 2021-12-13 株式会社日立製作所 分散ストレージ装置および分散ストレージ装置におけるデータ管理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170064992A (ko) * 2015-12-02 2017-06-12 삼성전자주식회사 중복제거를 위한 어드레스 매핑을 포함하는 플래시 메모리 장치 및 그 동작 방법
KR20170131274A (ko) * 2016-05-20 2017-11-29 삼성전자주식회사 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치
KR20180034842A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 메모리 제어장치 및 방법
KR20180058169A (ko) * 2016-11-23 2018-05-31 삼성전자주식회사 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법
JP2021189624A (ja) * 2020-05-27 2021-12-13 株式会社日立製作所 分散ストレージ装置および分散ストレージ装置におけるデータ管理方法

Also Published As

Publication number Publication date
CN116400851A (zh) 2023-07-07
US20230214123A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
CN109947358B (zh) 存储器***及其操作方法
CN110083545B (zh) 数据存储装置及其操作方法
CN109656837B (zh) 存储器***及其操作方法
CN110888825B (zh) 在存储器***中处理数据的设备和方法
CN109933468B (zh) 存储器***及其操作方法
CN108241470B (zh) 控制器及其操作方法
CN110825316A (zh) 控制器及该控制器的操作方法
KR20200121645A (ko) 컨트롤러 및 그것의 동작 방법과 메모리 시스템
CN111752852A (zh) 数据存储装置及数据存储装置的操作方法
CN111324552A (zh) 存储器***及其操作方法
KR20200076244A (ko) 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법
CN110197695B (zh) 存储器***及其操作方法
CN109426448B (zh) 存储器***及其操作方法
US11782638B2 (en) Storage device with improved read latency and operating method thereof
US20230315646A1 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
CN113806241A (zh) 存储装置及其操作方法
KR102467372B1 (ko) 스토리지 장치 및 이의 동작 방법
CN110688061A (zh) 存储器***及其操作方法
CN111309247B (zh) 存储器***及其操作方法
US11281590B2 (en) Controller, operating method thereof and storage device including the same
CN113805793A (zh) 存储装置及其操作方法
CN117632042B (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
US20240126682A1 (en) Storage device, electronic device including the same, and operating method thereof
CN110032329B (zh) 控制器和其操作方法以及存储器***
KR102684047B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법

Legal Events

Date Code Title Description
GRNT Written decision to grant