KR102559518B1 - 메모리 제어장치 및 방법 - Google Patents

메모리 제어장치 및 방법 Download PDF

Info

Publication number
KR102559518B1
KR102559518B1 KR1020160124551A KR20160124551A KR102559518B1 KR 102559518 B1 KR102559518 B1 KR 102559518B1 KR 1020160124551 A KR1020160124551 A KR 1020160124551A KR 20160124551 A KR20160124551 A KR 20160124551A KR 102559518 B1 KR102559518 B1 KR 102559518B1
Authority
KR
South Korea
Prior art keywords
data
address
memory device
memory
controller
Prior art date
Application number
KR1020160124551A
Other languages
English (en)
Other versions
KR20180034842A (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 KR1020160124551A priority Critical patent/KR102559518B1/ko
Priority to US15/607,148 priority patent/US10460774B2/en
Priority to CN201710638493.5A priority patent/CN107870740B/zh
Publication of KR20180034842A publication Critical patent/KR20180034842A/ko
Application granted granted Critical
Publication of KR102559518B1 publication Critical patent/KR102559518B1/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
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/20Address generation devices; Devices for accessing memories, e.g. details of addressing circuits using counters or linear-feedback shift registers [LFSR]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1048Data bus control circuits, e.g. precharging, presetting, equalising
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/109Control signal input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 기술은, 메모리 장치로 데이터를 처리하는 메모리 제어 장치 및 메모리 제어 장치의 동작 방법에 관한 것으로, 메모리 제어 장치는, 수신되는 제1 어드레스의 프로그램 데이터를 압축 데이터로 변환하는 단계; 압축 데이터, 상기 압축 데이터에 대응되는 비압축 데이터가 라이트된 상기 메모리 장치의 제2 어드레스 및 상기 데이터의 라이트 횟수를 나타내는 카운터 등을 포함하는 중복 제거 테이블에서 상기 변환된 압축 데이터를 검색하는 중복 제거 테이블 검색 단계; 및 상기 중복 제거 테이블에서 상기 변환된 압축 데이터를 검색되면, 상기 중복 제거 테이블에서 상기 압축 데이터에 대응되는 제2 어드레스를 상기 제1 어드레스에 맵핑하고 상기 메모리 장치의 라이트 동작을 수행하지 않으며, 상기 검색 테이블을 갱신하는 단계를 포함할 수 있다.

Description

메모리 제어장치 및 방법{APPARATUS AND METHOD FOR CONTROLLING A MEMORY DEVICE}
본 발명은 메모리 제어 장치 및 방법에 관한 것으로, 보다 구체적으로는 데이터의 중복 라이트를 제거할 수 있는 장치 및 방법에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
메모리 시스템에서 데이터의 기록(write)은 메모리 장치에 데이터를 저장하는 것이 될 수 있다. 예를들면, SSD(solid static disk) 장치에 호스트의 기록 커맨드(write command)의 정의는 메모리 장치에 데이터를 라이트하는 것으로 정의될 수 있다. 메모리 장치의 기록 동작은 마모를 야기하여 메모리 장치의 수명에 직접적인 영향을 미칠 수 있다. 예를들면, 비휘발성 메모리 장치(예를들면 NAND flash)의 라이트 횟수는 메모리 장치의 수명에 대응될 수 있다.
메모리 장치에 저장되는 최소 단위의 데이터들은 전체적인 관점에서 중복성이 있을 수 있다. 즉, 메모리 장치에 최소 단위로 라이트되는 데이터들은 메모리 장치의 다른 주소에 동일한 데이터로 저장될 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 시스템은 메모리 장치에 라이트되는 데이터들의 중복성을 판별하고, 중복되는 데이터들의 라이트 동작을 제거할 수 있는 메모리 시스템 및 그 동작 방법을 제공할 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 시스템은 압축 데이터 및 압축 데이터가 저장되는 메모리 장치의 어드레스정보를 저장하는 중복 제거 테이블(deduplication table, 이하 DeDup table과 혼용되어 사용될 수 있다)을 포함하고, 데이터 라이트 동작에서 중복 제거 테이블을 검색하여 라이트할 데이터의 중복 여부를 판별한 후, 중복 데이터의 라이트 동작을 제거할 수 있는 메모리 시스템 및 방법을 제공할 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 장치 장치는 메모리 장치 및 상기 메모리 장치에 기능적으로 연결되는 컨트롤러를 포함할 수 있다. 상기 컨트롤러는, 압축 데이터, 상기 압축 데이터에 대응되는 비압축 데이터가 라이트된 상기 메모리 장치의 제2 어드레스 및 상기 데이터의 라이트 횟수를 나타내는 카운터 등을 포함하는 중복 제거 테이블을 포함하며, 데이터 라이트 동작에서 수신되는 제1 어드레스의 프로그램 데이터를 압축하고, 상기 중복 제거 테이블에서 상기 압축 데이터를 검색되면, 상기 중복 제거 테이블에서 상기 압축 데이터에 대응되는 제2 어드레스를 상기 제1 어드레스에 맵핑하고, 상기 메모리 장치의 라이트 동작을 수행하지 않을 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 제어 장치는 메모리 장치 및 상기 메모리 장치에 기능적으로 연결되는 컨트롤러를 포함할 수 있다. 상기 컨트롤러는, 무손실 압축 데이터 및 상기 무손실 압축 압축 데이터에 대응되는 비압축 데이터가 저장되는 상기 메모리 장치의 제2 어드레스를 저장하는 중복 제거 테이블을 포함하며, 수신되는 제1 어드레스의 프로그램 데이터를 무손실 압축하고, 상기 중복 제거 테이블에서 무손실 압축 데이터가 검색되면 상기 검색된 상기 무손실 압축 데이터의 제2 어드레스를 상기 제1 어드레스에 맵핑하고 상기 메모리 장치에 프로그램 데이터를 라이트하지 않을 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 제어 장치는 메모리 장치 및 상기 메모리 장치에 기능적으로 연결되는 컨트롤러를 포함할 수 있다. 상기 컨트롤러는, 압축 데이터 및 상기 압축 데이터에 대응되는 비압축 데이터가 저장되는 상기 메모리 장치의 제2 어드레스를 저장하는 중복 제거 테이블을 포함하며, 데이터 프로그램 동작에서 수신되는 제1 어드레스의 프로그램 데이터를 무손실 압축 데이터 및 해시 값으로 변환하고, 상기 중복 제거 테이블에서 상기 무손실 압축 데이터가 검색되면, 상기 검색된 상기 무손실 압축 데이터의 제2 어드레스를 상기 제1 어드레스에 맵핑하고, 상기 무손실 압축 데이터가 검색되지 않으면, 상기 중복 제거 테이블에서 상기 해시 값을 검색하며, 상기 해시 값이 검색되면 상기 메모리 장치에서 상기 검색된 해시 값에 대응되는 제2 어드레스의 데이터를 상기 메모리 장치에서 리드하고, 상기 프로그램 데이터와 상기 리드된 데이터를 비교하며, 상기 두 데이터들이 동일하면, 상기 해시데이터에 매핑된 제2 어드레스를 상기 제1 어드레스에 맵핑할 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 장치의 제어 방법은, 수신되는 제1 어드레스의 프로그램 데이터를 압축 데이터로 변환하는 단계, 압축 데이터, 상기 압축 데이터에 대응되는 비압축 데이터가 라이트된 상기 메모리 장치의 제2 어드레스 및 상기 데이터의 라이트 횟수를 나타내는 카운터 등을 포함하는 중복 제거 테이블에서 상기 변환된 압축 데이터를 검색하는 중복 제거 테이블 검색 단계 및 상기 중복 제거 테이블에서 상기 변환된 압축 데이터를 검색되면, 상기 중복 제거 테이블에서 상기 압축 데이터에 대응되는 제2 어드레스를 상기 제1 어드레스에 맵핑하고 상기 메모리 장치의 라이트 동작을 수행하지 않으며, 상기 검색 테이블을 갱신하는 단계를 포함할 수 있다.
본 발명의 다양한 실시 예들에 따른 메모리 제어장치 및 방법은 메모리 장치에 라이트되는 데이터들의 중복성을 검색하고, 중복된 데이터이면 데이터 라이트 동작을 제거할 수 있다. 이로인해 메모리 시스템은 데이터의 불필요한 라이트 동작을 제거할 수 있어 메모리 장치의 수명과 성능을 개선할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면.
도 2는 본 발명의 실시 예에 따른 메모리 시스템에서 메모리 장치의 일 예를 개략적으로 도시한 도면.
도 3은 본 발명의 실시 예에 따른 메모리 장치에서 메모리 블록들의 메모리 셀 어레이 회로를 개략적으로 도시한 도면.
도 4는 본 발명의 실시 예에 따른 메모리 시스템에서 메모리 장치 구조를 개략적으로 도시한 도면.
도 5는 본 발명의 다양한 실시예들에 따른 메모리 시스템의 구성을 도시하는 도면이다.
도 6은 본 발명의 다양한 실시예에 따른 메모리 장치의 구성을 도시하는 도면이다.
도 7은 본 발명의 다양한 실시예들에 따른 중복 관리부의 구성을 도시하는 도면이다.
도 8은 본 발명의 다양한 실시예들에 따른 중복 제거 테이블의 예를 도시하는 도면이다.
도 9는 본 발명의 다양한 실시예들에 따른 메모리 시스템의 동작 절차를 도시하는 흐름도이다.
도 10a - 도 10c는 본 발명의 다양한 실시예들에서 메모리 시스템이 중복 제거 테이블에 자주 사용하는 패턴들을 등록하는 커맨드의 예를 도시하는 도면이다.
도 11은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 프로그램 데이터를 라이트하는 동작을 도시하는 흐름도이다.
도 12는 본 발명의 다양한 실시예에 따른 메모리 시스템에서 해시 알고리듬에 기반하여 프로그램 데이터를 라이트하는 동작을 도시하는 흐름도이다.
도 13은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 중복 제거 테이블에 신규 등록 절차의 동작을 도시하는 흐름도이다.
도 14는 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 해시 값이 중복될 때 중복 제거 테이블을 갱신하는 동작을 도시하는 흐름도이다.
도 15는 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 해시 값이 중복될 때 중복 제거 테이블을 갱신하는 다른 동작을 도시하는 흐름도이다.
도 16은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 무손실 압축 알고리듬에 기반하여 생성되는 무손실 압축된 데이터들의 중복 여부를 검색하여 중복 제거 테이블을 갱신하는 동작을 도시하는 흐름도이다.
도 17은 본 발명의 다양한 실시예에 따른 메모리 시스템에서 무손실 압축 알고리듬 및 해시 알고리듬에 의해 핑거 프린트 값을 설정하는 예의 중복 테이블 구성 예를 도시하는 도면이다.
도 18은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 무손실 압축 데이터 및 해시 값의 중복 여부를 검색하여 프로그램 데이터를 라이트하는 동작을 도시하는 흐름도이다.
도 19는 본 발명의 다양한 실시예들에 따라 메모리 시스템이 무손실 압축 및 해시 데이터를 순차적으로 검색하여 프로그램 데이터를 라이트하는 동작을 도시하는 흐름도이다.
도 20은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 이레이즈에 따라 중복 제거 테이블의 정보를 갱신하는 동작을 도시하는 흐름도이다.
도 21 내지 도 26은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 다른 일 예들을 개략적으로 도시한 도면.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은, 호스트(Host)(102) 및 메모리 시스템(110)을 포함한다.
그리고, 호스트(102)는, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함한다.
또한, 메모리 시스템(110)은, 호스트(102)의 요청에 응답하여 동작하며, 특히 호스트(102)에 의해서 액세스되는 데이터를 저장한다. 다시 말해, 메모리 시스템(110)은, 호스트(102)의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다. 여기서, 메모리 시스템(110)은 호스트(102)와 연결되는 호스트 인터페이스 프로토콜에 따라, 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다. 예를 들면, 메모리 시스템(110)은, 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
아울러, 메모리 시스템(110)을 구현하는 저장 장치들은, DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구현될 수 있다.
그리고, 메모리 시스템(110)은, 호스트(102)에 의해서 액세스되는 데이터를 저장하는 메모리 장치(150), 및 메모리 장치(150)로의 데이터 저장을 제어하는 컨트롤러(130)를 포함한다.
여기서, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 이용되는 경우, 메모리 시스템(110)에 연결되는 호스트(102)의 동작 속도는 획기적으로 개선될 수 있다.
컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(130) 및 메모리 장치(150)는, 하나의 반도체 장치로 집적되어, PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
메모리 시스템(110)의 메모리 장치(150)는, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있으며, 특히 라이트(write) 동작을 통해 호스트(102)로부터 제공된 데이터를 저장하고, 리드(read) 동작을 통해 저장된 데이터를 호스트(102)로 제공한다. 그리고, 메모리 장치(150)는, 복수의 메모리 블록(memory block)들(152,154,156)을 포함하며, 각각의 메모리 블록들은, 복수의 페이지들(pages)을 포함하며, 또한 각각의 페이지들은, 복수의 워드라인(WL: Word Line)들이 연결된 복수의 메모리 셀들을 포함한다. 또한, 메모리 장치(150)는, 비휘발성 메모리 장치, 일 예로 플래시 메모리가 될 수 있으며, 이때 플래시 메모리는 3차원(dimension) 입체 스택(stack) 구조가 될 수 있다.
컨트롤러(130)는, 호스트 인터페이스(Host I/F) 유닛(132), 프로세서(Processor)(134), 에러 정정 코드(ECC: Error Correction Code) 유닛(138), 파워 관리 유닛(PMU: Power Management Unit)(140), 낸드 플래시 컨트롤러(NFC: NAND Flash Controller)(142), 및 메모리(Memory)(144)를 포함한다.
호스트 인터페이스 유닛(132)은, 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
ECC 유닛(138)은, 메모리 장치(150)에 저장된 데이터를 리드할 경우, 메모리 장치(150)로부터 리드된 데이터에 포함되는 에러를 검출 및 정정한다. 다시 말해, ECC 유닛(138)은, 메모리 장치(150)로부터 리드한 데이터에 대하여 에러 정정 디코딩을 수행한 후, 에러 정정 디코딩의 성공 여부를 판단하고 판단 결과에 따라 지시 신호를 출력하며, ECC 인코딩 과정에서 생성된 패리티(parity) 비트를 사용하여 리드된 데이터의 에러 비트를 정정할 수 있다. 이때, ECC 유닛(138)은, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없으며, 에러 비트를 정정하지 못함에 상응하는 에러 정정 실패(fail) 신호를 출력할 수 있다.
ECC 유닛(138)은, LDPC(low density parity check) code, BCH(Bose, Chaudhri, Hocquenghem) code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며 이에 한정되는 것은 아니다. 또한, ECC 유닛(138)는 오류 정정을 위한 회로, 시스템 또는 장치를 모두 포함할 수 있다.
PMU(140)는, 컨트롤러(130)의 파워, 즉 컨트롤러(130)에 포함된 구성 요소들의 파워를 제공 및 관리한다.
NFC(142)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(142) 간의 인터페이싱을 수행하는 메모리 인터페이스로서, 메모리 장치(142)가 플래시 메모리, 특히 일 예로 메모리 장치(142)가 낸드 플래시 메모리일 경우에, 프로세서(134)의 제어에 따라 메모리 장치(142)의 제어 신호를 생성하고 데이터를 처리한다.
메모리(144)는, 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장한다. 보다 구체적으로 설명하면, 메모리(144)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어, 예컨대 컨트롤러(130)가, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하며, 이를 위해 컨트롤러(130)가, 메모리 장치(150)의 리드, 라이트, 프로그램, 이레이즈(erase) 등의 동작을 제어할 경우, 이러한 동작을 메모리 시스템(110), 즉 컨트롤러(130)와 메모리 장치(150) 간이 수행하기 위해 필요한 데이터를 저장한다.
메모리(144)는, 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 또한, 메모리(144)는, 전술한 바와 같이, 호스트(102)와 메모리 장치(150) 간 데이터 라이트 및 리드 등의 동작을 수행하기 위해 필요한 데이터, 및 데이터 라이트 및 리드 등의 동작 수행 시의 데이터를 저장하며, 이러한 데이터 저장을 위해, 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함한다.
프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하며, 호스트(102)로부터의 라이트 요청 또는 리드 요청에 응답하여, 메모리 장치(150)에 대한 라이트 동작 또는 리드 동작을 제어한다. 여기서, 프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동한다. 또한, 프로세서(134)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
도 2는 본 발명의 실시 예에 따른 메모리 시스템에서 메모리 장치의 일 예를 개략적으로 도시한 도면이고, 도 3은 본 발명의 실시 예에 따른 메모리 장치에서 메모리 블록들의 메모리 셀 어레이 회로를 개략적으로 도시한 도면이며, 도 4는 본 발명의 실시 예에 따른 메모리 시스템에서 메모리 장치 구조를 개략적으로 도시한 도면으로, 메모리 장치가 3차원 비휘발성 메모리 장치로 구현될 경우의 구조를 개략적으로 도시한 도면이다.
도 2를 참조하면, 메모리 장치(150)는, 복수의 메모리 블록들, 예컨대 블록0(Block0)(210), 블록1(Block1)(220), 블록2(Block2)(230), 및 블록N-1(BlockN-1)(240)을 포함하며, 각각의 블록들(210,220,230,240)은, 복수의 페이지들(Pages), 예컨대 2M개의 페이지들(2MPages)을 포함한다. 여기서, 설명의 편의를 위해, 복수의 메모리 블록들이 각각 2M개의 페이지들을 포함하는 것을 일 예로 하여 설명하지만, 복수의 메모리들은, 각각 M개의 페이지들을 포함할 수도 있다. 그리고, 각각의 페이지들은, 복수의 워드라인(WL: Word Line)들이 연결된 복수의 메모리 셀들을 포함한다.
메모리 장치(150)는, 복수의 메모리 블록들을, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 단일 레벨 셀(SLC: Single Level Cell) 메모리 블록 및 멀티 레벨 셀(MLC: Multi Level Cell) 메모리 블록 등으로 포함할 수 있다. 여기서, SLC 메모리 블록은, 하나의 메모리 셀에 1 비트 데이터를 저장하는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하며, 데이터 연산 성능이 빠르며 내구성이 높다. 그리고, MLC 메모리 블록은, 하나의 메모리 셀에 멀티 비트 데이터(예를 들면, 2 비트 이상)를 저장하는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하며, SLC 메모리 블록보다 큰 데이터 저장 공간을 가질 수, 다시 말해 고집적화 할 수 있다. 여기서, 하나의 메모리 셀에 3 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 MLC 메모리 블록을, 트리플 레벨 셀(TLC: Triple Level Cell) 메모리 블록으로 구분할 수도 있다.
각각의 블록들(210,220,230,240)은, 라이트 동작을 통해 호스트(102)로부터 제공된 데이터를 저장하고, 리드 동작을 통해 저장된 데이터를 호스트(102)에게 제공한다.
도 3을 참조하면, 메모리 시스템(110)에서 메모리 장치(300)의 메모리 블록(330)은, 메모리 셀 어레이로 구현되어 비트라인들(BL0 to BLm-1)에 각각 연결된 복수의 셀 스트링들(340)을 포함할 수 있다. 각 열(column)의 셀 스트링(340)은, 적어도 하나의 드레인 선택 트랜지스터(DST)와, 적어도 하나의 소스 선택 트랜지스터(SST)를 포함할 수 있다. 선택 트랜지스터들(DST, SST) 사이에는, 복수 개의 메모리 셀들, 또는 메모리 셀 트랜지스터들(MC0 to MCn-1)이 직렬로 연결될 수 있다. 각각의 메모리 셀(MC0 to MCn-1)은, 셀 당 복수의 비트의 데이터 정보를 저장하는 멀티 레벨 셀(MLC: Multi-Level Cell)로 구성될 수 있다. 셀 스트링들(340)은 대응하는 비트라인들(BL0 to BLm-1)에 각각 전기적으로 연결될 수 있다.
메모리 장치(300)의 리드/라이트(read/write) 회로(320)는, 제어 회로에 의해서 제어되며, 동작 모드에 따라 감지 증폭기(sense amplifier)로서 또는 라이트 드라이버(write driver)로서 동작할 수 있다. 예를 들면, 검증/정상 리드 동작의 경우 리드/라이트 회로(320)는, 메모리 셀 어레이로부터 데이터를 리드하기 위한 감지 증폭기로서 동작할 수 있다. 또한, 프로그램 동작의 경우 리드/라이트 회로(320)는, 메모리 셀 어레이에 저장될 데이터에 따라 비트라인들을 구동하는 라이트 드라이버로서 동작할 수 있다. 리드/라이트 회로(320)는, 프로그램 동작 시 셀 어레이에 라이트될 데이터를 버퍼(미도시)로부터 수신하고, 입력된 데이터에 따라 비트라인들을 구동할 수 있다. 이를 위해, 리드/라이트 회로(320)는, 열(column)들(또는 비트라인들) 또는 열쌍(column pair)(또는 비트라인 쌍들)에 각각 대응되는 복수 개의 페이지 버퍼들(PB)(322,324,326)을 포함할 수 있으며, 각각의 페이지 버퍼(page buffer)(322,324,326)에는 복수의 래치들(도시하지 않음)이 포함될 수 있다.
또한, 메모리 장치(150)는, 2차원 또는 3차원의 메모리 장치로 구현될 수 있으며, 특히 도 4에 도시한 바와 같이, 3차원 비휘발성 메모리 장치로 구현될 경우, 복수의 메모리 블록들(BLK 0 to BLK N-1을 포함할 수 있다. 여기서, 도 4는, 도 3에 도시한 메모리 장치의 메모리 블록을 보여주는 블록도로서, 각 메모리 블록(BLK)은, 3차원 구조(또는 수직 구조)로 구현될 수 있다. 예를 들면, 각 메모리 블록(BLK)은 제1방향 내지 제3방향들, 예컨대 x-축 방향, y-축 방향, 및 z-축 방향을 따라 신장된 구조물들을 포함하여, 3차원 구조로 구현될 수 있다.
그리고, 메모리 장치(150)에 포함된 각 메모리 블록(BLK)은, 제2방향을 따라 신장된 복수의 낸드 스트링들(NS)을 포함할 수 있으며, 제1방향 및 제3방향들을 따라 복수의 낸드 스트링들(NS)이 제공될 수 있다. 여기서, 각 낸드 스트링(NS)은, 비트라인(BL), 적어도 하나의 스트링 선택라인(SSL), 적어도 하나의 접지 선택라인(GSL), 복수의 워드라인들(WL), 적어도 하나의 더미 워드라인(DWL), 그리고 공통 소스라인(CSL)에 연결될 수 있으며, 복수의 트랜지스터 구조들(TS)을 포함할 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 시스템은 라이트할 데이터의 중복 여부를 검색하고, 중복 데이터이면 메모리 장치에 저장하지 않고 데이터가 기록된 메모리 장치의 어드레스 정보만을 관리할 수 있다. 본 발명의 다양한 실시예들은 중복되는 프로그램 데이터의 라이트 영향(write amplication 영향)을 감소시킬 수 있는 메모리 시스템 및 그 동작 방법을 제안한다.
도 5는 본 발명의 다양한 실시예들에 따른 메모리 시스템의 구성을 도시하는 도면이다.
도 5는 SSD 장치의 구성 예를 도시하는 도면이 될 수 있다. 도 5를 참조하면, 메모리 시스템은 컨트롤러(500)와 메모리 장치(550)를 포함할 수 있다. 컨트롤러(500)는 프로세서(510), 호스트 인터페이스(520), 메모리 인터페이스(525), 중복 관리부(deduplication manager, DeDUP MGR)(530), 버퍼 메모리(540), 버스(on-chip bus)(545) 등을 포함할 수 있다.
도 5의 구성에서 컨트롤러(500)는 도 1의 컨트롤러(130)가 될 수 있으며, 메모리 장치(550)는 도 1의 메모리 장치(150)가 될 수 있다. 또한 본 발명의 다양한 실시예들에 따르면, 중복 관리부(530)은 도 7과 같이 컨트롤러(500) 내에서 독립적인 형태로 구성될 수 있다. 또한 중복 관리부(530)는 프로세서(510)의 내부에 구성될 수도 있다.
호스트 인터페이스(520)는 컨트롤러(500)과 호스트(590) 간의 인터페이스 기능을 수행할 수 있다. 메모리 인터페이스(525)는 컨트롤러(500)과 메모리 장치(550) 간의 인터페이스 기능을 수행할 수 있다. 버퍼 메모리(540)는 리드 및/또는 라이트 데이터를 버퍼링할 수 있다. 프로세서(510)는 메모리 시스템의 전반적인 동작을 제어할 수 있다. 프로세서(510)는 호스트(590)로부터 전송된 라이트 요청에 응답하여 메모리 장치(550)에 데이터를 저장하고, 호스트(590)의 리드 요청에 응답하여 메모리 장치(550)에 라이트된 데이터를 리드하여 호스트(590)로 출력하는 동작을 제어할 수 있다. 중복 관리부(530)는 호스트(590)(또는 전자장치의 제어부)로부터 수신되는 프로그램 데이터(program data, write data)를 압축하는 동작, 획득된 압축 데이터를 중복 제거 테이블에서 검색하여 중복 여부를 판단하는 동작, 획득된 압축 데이터가 신규이면 중복 제거 테이블에 등록하는 동작 등을 수행할 수 있다. 버스(545)는 컨트롤러(500) 내의 프로세서(510), 호스트 인터페이스(520), 메모리 인터페이스(525), 중복 관리부(530) 및 버퍼 메모리(540)들이 접속되어 데이터, 명령어 및/또는 제어신호들의 경로를 제공할 수 있다. 이하의 설명에서 중복 관리부(530)에 압축은 hash value를 획득 동작 및/또는 무손실 압축하는 동작을 포함하는 용어로 사용될 것이다.
이하의 설명에서 프로그램 데이터라는 용어는 컨트롤러(500)가 메모리 장치(550)에 라이트하기 위한 데이터를 의미하는 용어로 설명될 것이다.
도 6은 본 발명의 다양한 실시예에 따른 메모리 장치의 구성을 도시하는 도면이다.
도 6을 참조하면, 메모리 장치(550)는 메모리 제어부(610), 전압 공급부(620), 로우 디코더(row decoder)(630), 메모리 셀 어레이(memory cell array)(640), 컬럼 디코더(column decoder)(650) 및 프로그램/리드 회로(660)를 포함할 수 있다.
메모리 장치(550)는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다. 이하의 설명에서는 메모리 장치(550)는 비휘발성 메모리 장치인 낸드 플래시로 설명될 수 있다.
메모리 셀 어레이(640)는 복수의 워드라인 WL들 및 복수의 비트라인(bit line) BL들에 연결될 수 있다. 또한, 메모리 셀 어레이(640)는 복수의 WL들과 복수의 BL들이 교차하는 영역들에 각각 배치되는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(640)는 커맨드(CMD)에 수반하여 엑세스될 메모리 셀을 지시하기 위한 어드레스(ADDR)가 수신될 수 있으며, 어드레스(ADDR)는 메모리 셀 어레이(640)의 워드 라인들(WL)을 선택하기 위한 로우 어드레스(X_ADDR)와 메모리 셀 어레이(640)의 비트 라인을 선택하기 위한 칼럼 어드레스(Y_ADDR)를 포함할 수 있다.
로우 디코더(630)는 워드 라인들(WL)을 통해 메모리 셀 어레이(640)에 연결되며, 로우 어드레스(X_ADDR)에 응답하여 워드라인들 중 적어도 하나를 선택할 수 있다. 컬럼 디코더(650)는 BL들을 통해 메모리 셀 어레이(640)에 연결되며, 칼럼 어드레스(Y_ADDR)에 응답하여 비트 라인들 중 적어도 하나를 선택할 수 있다.
프로그램/리드 회로(660)는 프로그램 회로(663) 및 리드 회로(665)를 포함할 수 있다. 프로그램 회로(663)는 컬럼 디코더(650)를 통해 선택된 비트 라인(BL)에 연결되어 메모리 셀 어레이(640)의 선택된 메모리 셀에 프로그램 펄스를 제공함으로써 프로그램 동작(즉, data write operation)을 수행할 수 있다. 리드 회로(665)는 칼럼 디코더(650)를 통해 선택된 BL에 연결되고, 메모리 셀 어레이(640)의 선택된 메모리 셀의 레벨을 센싱하여 저장된 데이터(data)를 리드(출력)할 수 있다. 또한 리드회로(665)는 데이터(data)를 메모리 장치(550)의 외부로, 예를 들어, 컨트롤러(500)에 출력할 수 있다.
전압 공급부(620)는 메모리 제어부(610)의 전압 제어에 기반하여 메모리 셀 어레이(640)에 대한 프로그램, 리드 및 소거(erase) 동작을 수행하기 위한 다양한 유형의 전압들을 생성할 수 있다. 또한 전압 공급부(620)는 복수의 워드 라인들(WL) 및 비트 라인들(BL)을 구동하기 위한 구동 전압(또는 바이어스 전압), 예컨대 셋 프로그램 전압, 리셋 전압, 리드 전압, 차단 전압들을 생성할 수 있다.
메모리 제어부(610)은 컨트롤러(500)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(640)에 데이터를 프로그램하거나 메모리 셀 어레이(640)로부터 데이터를 리드하기 위한 전압 제어 신호들을 상기 전압공급부(620)에 출력할 수 있다. 또한 메모리 제어부(610)에서 컨트롤러(500)에서 출력되는 동작 제어 신호들은 프로그램/리드 회로(660), 전압 공급부(620), 로우 디코더(630) 및 컬럼 디코더(650)에 제공할 수 있다. 메모리 제어부(610)은 메모리 장치(550) 내의 동작들을 전반적으로 제어할 수 있다.
도 7은 본 발명의 다양한 실시예들에 따른 중복 관리부의 구성을 도시하는 도면이다. 도 8은 본 발명의 다양한 실시예들에 따른 중복 제거 테이블의 예를 도시하는 도면이다.
도 7을 참조하면, 중복 관리부(530)은 관리 제어부(710) 및 중복 제거 테이블(720)을 포함할 수 있다. 본 발명의 다양한 실시예들에 따르면, 중복 관리부(530)는 도 5에 도시된 바와 같이 컨트롤러(500) 내에서 독립적으로 구성될 수 있으며, 또는 프로세서(510) 내에 구성될 수도 있다. 또한 중복 제거 테이블(720)은 중복 관리부(530) 내에 구성될 수 있다. 또한 중복 제거 테이블(720)은 버퍼 메모리(540)에 구성될 수 있으며, 또는 메모리 장치(550) 내에 구성될 수도 있다.
관리 제어부(710)은 데이터 압축, 중복 검색, 등록 등을 수행하는 구성 및/또는 방법 등을 포함할 수 있다. 관리 제어부(710)는 호스트 인터페이스부(520)에서 출력되는 프로그램 데이터를 수신하고, 수신된 프로그램 데이터를 압축할 수 있다. 한 실시예에 따르면, 호스트 인터페이스(520)에서 출력되는 프로그램 데이터는 프로세서(510) 및 관리 제어부(500)에 동시에 인가될 수 있다. 즉, 관리 제어부(710)는 프로세서(510)에 인가되는 프로그램 데이터를 병렬 입력(packet snoop)할 수 있다. 관리 제어부(710)은 데이터 압축부를 포함할 수 있으며, 데이터 압축부는 해시 알고리듬을 사용할 수 있으며, 또는 무손실 압축 알고리듬을 사용할 수 있으며, 또는 해시 알고리듬 및 무손실 압축 알고리듬을 모두 사용할 수 있다. 관리 제어부(710)은 도 8과 같은 중복 제거 테이블(720)에서 압축 데이터를 검색하여 중복 여부를 검색할 수 있다. 이하에서 설명되는 “중복(duplication)”이라는 용어는 메모리 장치(550)(및/또는 버퍼 메모리(540))에 수신되는 프로그램 데이터와 동일한 데이터가 라이트된 것을 의미하는 용어로 사용될 것이다. 이하의 설명에서 압축 데이터는 해시 값, 또는 무손실 압축 데이터 또는 해시값/무손 압축 데이터를 포함하는 용어로 사용될 것이다.
도 8을 참조하면, 중복 제거 테이블(720)은 등록 테이블(810) 및 후보 테이블(new registration candidate table)(820)으로 구성될 수 있다. 등록 테이블(810)은 압축 데이터가 해시 값인 예를 도시하고 있다. 등록 테이블(810)은 메모리 장치(550)에 라이트된 프로그램 데이터들의 각각 대응되는 복수의 엔트리(entry)들을 포함할 수 있는 구조를 가질 수 있다. 그리고 각 엔트리들은 압축 데이터, 어드레스 정보, 카운터을 포함할 수 있다. 각 엔트리들에서 PBA(physical block address)는 데이터가 라이트된 메모리 장치(550)의 어드레스 정보가 될 수 있으며, 카운터(cnt)는 프로그램 데이터의 라이트 요청 횟수가 될 수 있으며, 압축 데이터는 는 메모리 장치(550)에 저장된 데이터의 해시 값(hash value)이 될 수 있으며, age는 해시 값이 등록 테이블(810)에 저장된 시간 정보가 될 수 있다. 후보 테이블(NEW registration candidate table)(820)은 등록 테이블(810)에 프로그램 데이터를 신규 등록할 엔트리의 여유가 없을 때, 사용될 수 있는 테이블이다. 후보 테이블(820)의 엔트리들은 PBA, 카운터, 해시값 등이 등록될 수 있다. 중복 제거 테이블(720) 상의 엔트리들의 수는 적정한 수로 관리 유지할 수 있으며, 엔트리의 수(size)가 클수록 중복 제거에 의한 WAMP 효과는 커질 수 있다.
중복 관리부(530)는 프로그램 데이터를 압축한 후, 중복 제거 테이블(720)에 등록된 압축 데이터들을 검색하여 중복 여부를 판단할 수 있다. 예를들면, 중복 제거 테이블(720)에서 압축 데이터가 검색되면, 메모리 장치(550)에서 동일한 데이터가 기록된 상태일 수 있다. 이런 경우, 중복 관리부(530)은 프로세서(510)에 프로그램 데이터가 저장된 메모리 장치(550)의 PBA 정보를 전송하고, 카운터(cnt) 값을 증가시켜 라이트 요청 횟수 정보를 갱신할 수 있다. 그리고 중복 제거 테이블(720)에서 압축 데이터가 검색되지 않으면, 중복 관리부(530)은 프로세서(510)에 프로그램 데이터의 라이트를 요청할 수 있다. 그리고 중복 관리부(530)는 프로세서(510)에서 전송되는 PBA 및 압축 데이터를 등록 테이블(810)의 빈 엔트리에 등록할 수 있다. 이때 등록 테이블(810)에 신규 프로그램 데이터의 PBA 및 압축 데이터를 등록할 수 없는 상태이면 이를 후보 테이블(820)에 등록할 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 시스템이 데이터를 라이트하는 동작을 살펴보면, 호스트(590)는 프로그램 데이터 및 라이트 커맨드를 컨트롤러(500)에 전송할 수 있다. 호스트(590)에서 전송되는 정보에는 LBA(logical block address)가 포함될 수 있다. 호스트(590)에서 전송되는 프로그램 데이터 및 라이트 커맨드는 호스트 인터페이스(520)에서 프로세서(510) 및 중복 관리부(530)에 전달될 수 있다.
중복 관리부(530)은 프로그램 데이터를 압축하고, 압축 데이터를 데이터를 중복 제거 테이블(720)에서 검색할 수 있다. 압축 데이터가 중복 제거 테이블(720)에서 검색되면, 중복 관리부(530)은 프로그램 데이터에 관련된 엔트리의 카운터 값을 증가시키고, 압축 데이터에 관련된 PBA를 프로세서(510)에 전송할 수 있다. 프로세서(510)에 전송되는 PBA는 프로그램 데이터와 동일한 데이터가 저장된 메모리 장치(550)의 어드레스 정보가 될 수 있다. 프로세서(510)은 중복 관리부(530)에서 PBA가 수신되면, 호스트(590)의 LBA에 PBA를 매핑시키며, 메모리 장치(550)에 데이터를 라이트하는 동작은 수행하지 않을 수 있다.
압축 데이터가 중복 제거 테이블(720)에서 검색되지 않으면, 중복 관리부(530)은 프로세서(510)에 프로그램 데이터의 라이트를 요청할 수 있다. 프로세서(510)은 메모리 장치(550)에서 프로그램 데이터를 저장하기 위한 PBA를 할당하고, 메모리 장치(550)에 프로그램 데이터가 라이트되도록 제어할 수 있다. 프로세서(510)은 프로그램 데이터를 라이트하기 위한 메모리 장치(55)의 PBA를 할당할 수 있으며, LBA 및 PBA를 맵핑시키고 중복 관리부(530)에 PBA를 전송할 수 있다. 중복 관리부(530)는 압축 데이터 및 PBA를 중복 제거 테이블(720)에 신규로 등록하고, 카운터 값을 1로 할 수 있다.
메모리 장치(550)의 리드 및 라이트되는 데이터는 설정된 단위(예를들면 page)의 크기로 처리될 수 있다. 예를들면, 메모리 시스템에서 프로그램 데이터는 512 바이트 또는 4K 바이트의 단위(최소 단위)로 어드레싱될 수 있다. 호스트(590)는 최소 단위의 프로그램 데이터 및 LBA를 포함하는 정보를 컨트롤러(500)에 전송할 수 있으며, 컨트롤러(500)은 최소 단위의 데이터를 저장하는 메모리 장치(550)의 PBA를 할당하고, 할당된 PBA에 해당하는 최소 단위의 프로그램 데이터를 라이트할 수 있다. 그리고 컨트롤러(500)는 호스트(590)의 리드 명령에 의해 라이트된 데이터를 리드할 수 있도록 LBA 및 PBA를 매핑시킬 수 있다. 이하의 설명에서 LBA는 제1 어드레스가 될 수 있으며, PBA는 제2 어드레스가 될 수 있다.
호스트(590)에서 소거 명령이 발생되면, 컨트롤러(500)는 해당하는 블록의 데이터들을 소거할 수 있다. 이때 컨트롤러(500)은 메모리 장치(500)에서 해당하는 블록의 데이터들을 소거할 수 있으며, 중복 관리부(530)은 소거되는 블록의 PBA에 관련된 엔트리 정보를 삭제할 수 있다.
본 발명의 다양한 실시예들은 컨트롤러(500)이 중복 제거 테이블(deduplication table, DeDup table)을 구성하는 방법, 초기화 패턴(pattern)의 사용, 신규 패턴의 등록 방법, ERASE/GC(garbage collection) 처리시 중복 제거 테이블의 처리 방법 등을 제안한다. 또한 본 발명의 다양한 실시예들은 컨트롤러(500)가 프로그램 데이터의 중복 여부를 검색할 때 사용하기 위한 명령(예를들면, NVMe command상에 Write-DUPLICATION 명령)을 정의한다. 또한, 본 발명의 다양한 실시예들은 해시 알고리듬((hash algorithm, 예를들면, MD5 128bit hash, SHA-1 160bit hash 등)) 이외에 무손실 압축 알고리듬(lossless compression, 예를들면, run-length coding, Huffman coding, 등)을 이용하여 압축 데이터(finger print)를 구하는 방법을 제안한다.
도 9는 본 발명의 다양한 실시예들에 따른 메모리 시스템의 동작 절차를 도시하는 흐름도이다.
도 9를 참조하면, 전원 온이 인식되면, 메모리 시스템은 911 단계에서 이를 인식하고, 913 단계에서 부팅 동작을 수행할 수 있으며, 915 단계에서 중복 제거 테이블을 로드할 수 있다. 메모리 시스템이 전원이 온(Power on)되는 이전의 중복 제거 테이블(예를들면 DeDup Table)을 초기화하는 작업을 수행할 수 있다. 메모리 시스템은 시스템을 부팅할 때 메모리 장치(550)의 설정된 위치에서 중복 제거 테이블을 로드하고, 로드된 중복 제거 테이블을 중복 관리부(530)의 중복 제거 테이블(720)에 로드할 수 있다. 이때 공장 초기화 상태 혹은 실제 라이트가 한번도 되지 않았던 경우, 로드되는 중복 제거 테이블의 전 필드(field)들은 0 상태가 될 수 있다.
메모리 시스템은 중복 제거 기능의 등록 모드가 설정되면 921 단계에서 이를 인식하고, 923 단계에서 중복 제거 테이블에 해당하는 압축 데이터 및 대응되는 프로그램 데이터가 라이트된 메모리 장치(550)의 PBA를 등록할 수 있다. 사용자는 자주 사용되는 패턴(known pattern)을 중복 제거 테이블에 미리 등록할 수 있다. 자주 사용되는 패턴(known pattern)은 모두 0인 패턴(all zero pattern), 모두 1인 패턴(all one pattern), 순차 패턴(decremental pattern, incremental pattern) 등이 될 수 있다. 사용자는 등록 모드에서 자주 사용하는 패턴들을 중복 제거 테이블에 등록할 수 있다.
메모리 시스템은 프로그램 데이터가 수신되면, 931 단계에서 이를 인식하고, 933 단계에서 프로그램 데이터를 압축하고, 압축 데이터를 중복 제거 테이블에서 검색하여 중복 여부를 분석할 수 있다. 중복 제거 테이블에서 압축 데이터가 검색되면, 메모리 시스템은 935 단계에서 중복을 인식하고, 937 단계에서 데이터 라이트 동작을 수행하지 않고 프로그램 데이터의 LBA 및 PBA를 맵핑시킬 수 있다. 중복 제거 테이블에서 압축 데이터가 검색되지 않으면, 메모리 시스템은 935 단계에서 이를 인식하고, 941 단계에서 프로그램 데이터를 메모리 장치(550)에 라이트하고 라이트된 데이터의 LBA 및 PBA를 맵핑시킬 수 있다. 메모리 시스템은 943 단계에서 신규로 라이트된 데이터의 압축 데이터 및 PBA를 중복 제거 테이블에 등록할 수 있다.
메모리 시스템은 데이터 소거(erase) 명령이 발생되면, 메모리 시스템은 951 단계에서 이를 인식하고, 953 단계에서 메모리 장치(550)에서 해당 데이터들을 소거할 수 있으며, 955 단계에서 중복 제거 테이블에서 소거된 데이터들에 관련되는 정보들을 제거할 수 있다. 메모리 시스템은 다른 기능이 설정되면, 961 단계에서 이를 인식하고 해당하는 기능을 수행할 수 있다. 예를들면, 호스트에서 리드 명령이 발생되면, 메모리 시스템은 961 단계에서 이를 인식하고, 메모리 장치(550)을 리드 동작으로 제어하여 데이터를 리드할 수 있다.
도 10a - 도 10c는 본 발명의 다양한 실시예들에서 메모리 시스템이 중복 제거 테이블에 자주 사용하는 패턴들을 등록하는 커맨드의 예를 도시하는 도면이다.
메모리 시스템은 중복 제거 테이블에 자주 사용되는 패턴들을 선 등록할 수 있다. 자주 사용되는 패턴은 사용자 데이터일 수 있다. 예를들면 all ZERO pattern, all ONE pattern, incremental pattern, decremental pattern 등은 존재 가능성이 높을 뿐 아니라, 메모리 장치(550)에 자주 라이트될 수 있다. 이외에 OS(operating system)나 어플리케이션(application)에 의해 생성될 수 있는 인위적인 패턴들도 사전에 파악할 수 있다. 본 발명의 다양한 실시예들에 따른 메모리 시스템은 자주 사용될 수 있는 사용자 데이터 패턴(예를들면, all ZERO pattern, all ONE pattern, 순차 pattern 등) 및/또는 OS 나 어플리케이션 등에 의해 생성될 수 있는 패턴(예를들면, OS의 특정 data pattern, bench marking tool등)들을 정의하고, 정의된 패턴들을 압축하여 중복 제거 테이블에 미리 등록시킬 수 있다. 중복 제거 테이블에 등록되는 압축 데이터는 해시 값으로 변환된 데이터이거나 또는 무손실 압축된 데이터일 수 있다.
중복 제거 테이블에 등록되는 패턴들은 호스트(590)에 의해 설정될 수 있다. 호스트(590)는 컨트롤러(500)에 중복 사용될 것을 알 수(explicitly) 있게 하는 인터페이스를 제공할 수 있다. 예를 들면 데이터 라이트 커맨드에서 해당 커맨드에 대하 중복 여부를 표시하는 라이트 정보를 구성할 수 있다. NVMe/SATA/eMMC/UFS 상의 라이트 커맨드는 예비 필드(reserved field)를 가질 수 있다. 호스트(590)는 라이트 커맨드의 예비 필드를 사용하여 중복 여부를 표시(추가 description)할 수 있다. 라이트 데이터가 호스트 인터페이스(520)을 통해 수신되면, 컨트롤러(500)은 중복 제거 테이블에 강제 등록 시킬 수 있다. 컨트롤러(500)는 호스트(590)의 힌트(hint)에 의해 라이트 동작에서 중복이 빈번하게 발생될 수 있는 패턴들을 중복 제거 테이블에 선 등록할 수 있다. 호스트(500)이 중복 힌트(duplication hint)를 컨트롤러(500)에 전달하는 방법은 두 가지 방법이 있을 수 있다. 그 한가지 방법은 독립된 커맨드를 추가하는 방법이 될 수 있으며, 다른 한 가지 방법은 라이트 커맨드의 예비 필드(WRITE command의 reserved field)를 중복 힌트(DUPLICATION HINT feature)로 정의하는 방법이 될 수 있다.
도 10a는 NVMe 커맨드 세트(command set)에 의해 중복 힌트(DUPLICATION HINT)를 포함하는 라이트 커맨드(WRITE command)의 추가 정의를 표시하는 예를 도시하는 도면이다. 도 10b는 라이트 중복(Write-DUPLICATION)을 공급자 타입(Vendor specific type)의 커맨드로 정의한 예를 도시하는 도면이다. 도 10b에 도시된 바와 같이 라이트 중복 힌트를 공급자 타입의 커맨드로 정의할 수 있으며, 혹은 16h ~ 7Fh 사이의 값으로 추가할 수 있다. 도 10c는 기존의 라이트 커맨드(WRITE command)를 그대로 사용하면서, DSM(Dataset Management(Command Dword-13)의 예비 필드 비트(reserved field [31:8]의 bit)를 활용하는 예를 도시하는 도면이다. 예를 들면, 라이트(Write(DUPLICATION))는 커맨드의 DWORD-13의 [8] bit가 SET되었을 경우, 현재 커맨드가 기술하는 데이터들은 중복 가능성이 있음을 암시하는 형태가 될 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 시스템은 확률적으로 발생 가능성이 높은 데이터 패턴들(예를 들면, ALL ZERO pattern, All ONE pattern, 순차 pattern 등)을 도 10a - 도 10c와 같은 방법을 사용하여 중복 제거 테이블에 등록할 수 있다. 또한 메모리 시스템은 OS 또는 어플리케이션에 의해 생성되는 패턴들(예를들면 bench mark tool 들의 pattern들)도 도 10a - 도 10c와 같은 방법을 사용하여 중복 제거 테이블에 등록할 수 있다. 중복 제거 테이블에 등록되는 데이터 패턴은 압축 형태로 등록될 수 있다. 데이터 패턴의 압축은 해시 알고리듬을 이용하여 수행할 수 있으며, 무손실 압축 알고리듬을 이용하여 수행할 수 있다. 데이터 패턴은 메모리 장치(550)에 저장될 수 있다. 데이터 패턴은 메모리 장치(550)에 저장될 수 있으며, 시스템 초기화시 버퍼 메모리(540)으로 이동되어 저장될 수 있다. 버퍼 메모리(540)이 비휘발성 메모리인 경우, 데이터 패턴은 버퍼 메모리(540)에 저장될 수 있다. 중복 제거 테이블은 데이터 패턴의 압축 데이터 및 데이터 패턴이 저장된 주소 정보(예를들면 메모리 장치(550), 버퍼 메모리(540)를 포함할 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 시스템은 프로그램 데이터를 라이트할 때, 중복 제거 테이블을 검색하여 중복된 프로그램 데이터이면 프로그램 데이터를 메모리 장치(550)에 라이트하지 않고 어드레스만 매핑하며, 신규의 프로그램 데이터이면 이를 중복 제거 테이블에 등록할 수 있다.
도 11은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 프로그램 데이터를 라이트하는 동작을 도시하는 흐름도이다.
도 11을 참조하면, 호스트 인터페이스(520)에서 출력되는 프로그램 데이터는 1111 단계에서 컨트롤러(500)의 프로세서(510)에 전달될 수 있으며, 1113 단계에서 중복 관리부(530)에 전달될 수 있다. 이하의 설명에서 프로세서(510)의 동작은 컨트롤러(500)의 동작으로 설명될 것이다. 중복 관리부(530)은 컨트롤러(500)와 동시에 프로그램 데이터를 수신할 수 있다. 컨트롤러(500)는 1151 단계에서 수신되는 프로그렘 데이터를 버퍼 메모리(540)에 버퍼링할 수 있다.
중복 관리부(530)은 1121 단계에서 수신되는 프로그램 데이터를 설정된 알고리듬으로 처리하여 압축 데이터(핑거 프린트 값)를 생성할 수 있다. 설정된 알고리듬은 해시 알고리듬 및/또는 압축 알고리듬이 될 수 있다. 중복 관리부(530)은 1121 단계에서 중복 제거 테이블을 분석하여 프로그램 데이터의 중복 여부를 판단할 수 있다. 중복 관리부(530)은 압축 데이터가 중복 제거 테이블에서 검색되면, 메모리 장치(550)에 동일한 프로그램 데이터가 라이트된 상태, 즉 중복으로 판단할 수 있다. 중복으로 판단되면, 중복 관리부(530)은 1125 단계에서 이를 인식하고, 1127 단계에서 중복 제거 테이블에 등록된 PBA 정보를 컨트롤러(500)에 전송할 수 있다. 컨트롤러(500)에 전송되는 PBA는 수신된 프로그램 데이터와 동일한 데이터가 라이트된 메모리 장치(550)의 PBA가 될 수 있다. PBA는 컨트롤러(500)는 1129에서 수신된 PBA를 수신된 프로그램 데이터의 LBA에 매핑시킬 수 있다. 컨트롤러(500)는 중복 관리부(530)에서 PBA가 수신되면, 메모리 장치(550)에 프로그램 데이터를 라이트하는 동작을 수행하지 않고 수신된 프로그램 데이터의 LBA에 PBA를 매핑시킬 수 있다.
1125 단계에서 중복이 아니면, 중복 관리부(530)는 1131 단계에서 컨트롤러(500)에 데이터 라이트를 요청할 수 있다. 데이터를 라이트를 요청하는 방법은 수신된 프로그램 데이터가 중복되지 않은 데이터임을 알리는 신호가 될 수 있다. 프로그램 데이터의 라이트가 요청되면, 컨트롤러(500)은 1133 단계에서 메모리 장치(550)에 저장할 PBA를 할당하고, 메모리 인터페이스(525)을 통해 프로그램 데이터를 라이트하기 위한 정보들을 전송할 수 있다. 여기서 라이트 정보는 프로그램 데이터, PBA 정보, 라이트 커맨드 및 라이트 동작을 수행하기 위한 제어신호 등이 될 수 있다. 메모리 장치(550)는 1141 단계에서 프로그램 데이터를 PBA 위치에 라이트할 수 있다. 컨트롤러(550)는 1135 단계에서 프로그램 데이터의 PBA를 중복 관리부(530)에 전송할 수 있다. 중복 관리부(530)는 1137 단계에서 중복 제거 테이블에 빈 엔트리 또는 대체할 수 있는 엔트리를 설정하고, 설정된 엔트리에 프로그램 데이터의 압축 데이터(핑거 프린트 값) 및 PBA를 신규 등록할 수 있다.
본 발명의 다양한 실시예들에 따른 메모리 시스템은 압축 데이터 및 데이터가 라이트된 메모리 장치의 PBA 정보를 구비하는 중복 제거 테이블을 포함하며, 수신되는 프로그램 데이터의 핑거 프린트(finger print) 값을 구하고, 핑거 프린트 값을 중복 제거 테이블을 검색하여 중복 여부를 검색할 수 있다. 메모리 시스템에서 핑거 프린트 값을 구하는 방법은 압축 방법을 사용할 수 있다.
프로그램 데이터의 크기는 메모리 장치(550)에 라이트하기 위한 단위 데이터(unit data)가 될 수 있으며, 단위는 512B 혹은 4KB 단위가 될 수 있다. 중복 관리부(530)는 프로그램 데이터를 변환하여 핑거 프린트(Finger print) 값을 구할 수 있다. 핑거 프린트 값을 구하는 방법은 해시 알고리즘을 사용할 수 있으며, 해시 값의 크기(n-bit)는 필요에 따라 적절한 크기로 설정할 수 있다. 예를 들면, Data=512Byte, Hash=16Byte으로 가정할 경우, 해시 알고리듬을 이용하여 16 Byte의 해시 값을 수신된 512 바이트에 대해 계산할 수 있다. 또한 핑거 프린트 값을 구하는 방법은 해시 알고리듬 대신에 무손실 압축 알고리듬을 사용할 수 도 있다. 예를들면, 무손실 압축 알고리듬은 512 바이트의 프로그램 데이터를 N 바이트의 무손실 압축 데이터로 생성할 수 있다. 메모리 시스템은 무손실 압축 데이터를 복원하면 무손실 압축 전의 데이터와 정확하게 일치하는 데이터로 복원할 수 있다. 따라서 메모리 시스템은 프로그램 데이터를 라이트할 때, 메모리 장치(550)에 라이트된 데이터를 리드하지 않고 중복 여부를 확인할 수 있다. 무손실 압축 데이터의 압축율이 높을 경우는 프로그램 데이터의 중복이 많은 경우를 의미할 수 있다.
한 실시예에서, 메모리 시스템은 수신되는 프로그램 데이터를 해시 알고리듬에 기반하여 해시 값으로 변환된 데이터를 핑거 프린트 값으로 사용할 수 있다. 한 실시예에서, 메모리 시스템은 수신되는 프로그램 데이터를 무손실 압축한 데이터를 핑거 프린트 값으로 사용할 수 있다. 한 실시예에서, 메모리 시스템은 프로그램 데이터를 무손실 압축 데이터 및 해시 값으로 변환하고, 이들 두 압축 데이터들을 핑거 프린트 값들로 사용할 수 있다.
먼저 해시 알고리듬에 의해 핑거 프린트 값을 구하는 방법을 살펴본다.
도 12는 본 발명의 다양한 실시예에 따른 메모리 시스템에서 해시 알고리듬에 기반하여 프로그램 데이터를 라이트하는 동작을 도시하는 흐름도이다.
도 12를 참조하면, 해시 알고리듬은 임의의 길이의 데이터를 고정된 길의 데이터로 매핑하는 알고리듬이 될 수 있다. 해시 알고리듬에 의해 획득되는 값은 해시 값, 해시 코드, 체크 섬 또는 해시 등으로 칭할 수 있다. 해시 함수(hash function)에 의해 획득되는 해시 값은 서로 다른 입력 값들에 대해 동일한 출력 값을 나타내는 해시 충돌이 발생될 수 있다. 해시 알고리듬에 의해 해시 값(압축 데이터, 핑거 프린트 값)을 획득하는 경우, 본 발명의 다양한 실시예들에 따른 메모리 시스템은 해시 충돌을 고려하여 프로그램 데이터의 라이트 동작을 수행할 수 있다.
중복 관리부(530)은 1221 단계에서 프로그램 데이터를 수신하면, 1223 단계에서 해시 알고리듬에 기반하여 해시 값을 획득할 수 있다. 중복 관리부(530)은 1224 단계에서 중복 제거 테이블을 검색하여 해시 값의 중복 여부를 검색할 수 있다. 중복 제거 테이블에 획득된 해시 값이 검색되면, 중복 관리부(530)는 1225 단계에서 이를 인식하고, 1227 단계에서 컨트롤러(500)에 인식된 해시 값의 엔트리에 등록된 PBA를 전송할 수 있다. 컨트롤러(500)는 수신된 PBA를 포함하는 리드 명령어를 메모리 장치(550)에 전송할 수 있으며, 메모리 장치(550)에서 리드되는 데이터를 중복 관리부(530)에 전달할 수 있다. 중복 관리부(530)는 1229 단계에서 수신된 프로그램 데이터와 리드된 데이터를 비교 분석하여 동일 데이터 여부를 판단할 수 있다. 두 데이터들이 동일한 데이터이면, 중복 관리부(530)는 1231 단계에서 이를 인식하고, 1233 단계에서 중복 제거 테이블의 해당 엔트리에 등록된 PBA(동일 데이터의 해시 값에 관련되는 PBA)를 선택하여 컨트롤러(500)에 전송할 수 있다. 그리고 중복 관리부(530)은 1235 단계에서 중복 테이블의 엔트리에서 카운터 값을 증가시켜 해당하는 프로그램 데이터의 라이트 횟수를 갱신할 수 있다. 컨트롤러(500)는 PBA를 수신하면, 수신된 프로그램 데이터의 LBA에 수신된 PBA를 매핑하고 라이트 동작은 수행하지 않을 수 있다.
그러나 프로그램 데이터와 리드된 데이터가 동일한 데이터가 아니면, 해시 충돌이 발생될 상태가 될 수 있다. 두 데이터들이 동일한 데이터가 아니면, 중복 관리부(530)는 1231 단계에서 이를 인식하고, 1237 단계에서 컨트롤러(500)에서 프로그램 데이터의 라이트를 요청할 수 있다. 컨트롤러(500)는 라이트 요청을 수신하면, 수신된 프로그램 데이터의 PBA를 할당하고, 메모리 장치(550)의 할당된 PBA에 프로그램 데이터를 라이트하는 동작을 제어할 수 있다. 중복 관리부(530)는 중복 제거 테이블을 검색하여 해시 충돌을 인식하는 경우, 중복 제거 테이블을 갱신하는 동작을 수행하거나 또는 현재의 중복 제거 테이블을 그대로 유지시키는 방법을 사용할 수 있다. 중복 제거 테이블을 갱신시키는 방법을 사용하는 경우, 중복 관리부(530)은 1239 단계에서 컨틀로러(500)에 프로그램 데이터가 라이트된 메모리 장치(550)의 PBA 정보를 요청하고, 수신되는 PBA 정보를 해시 충돌이 발생된 해시 값의 엔트리에 PBA를 병렬로 추가 등록할 수 있다. 중복 제거 테이블을 갱신하지 않는 방법을 사용하는 경우, 중복 관리부(530)는 1239 단계의 동작을 생략하고 종료할 수 있다.
상기 프로그램 데이터의 해시 값이 중복 제거 테이블에 검색되지 않으면, 중복 관리부(530)는 1225 단계에서 이를 인식하고, 1241 단계에서 컨트롤러(500)에 프로그램 데이터의 라이트를 요청할 수 있다. 중복 관리부(530)는 1243 단계에서 컨트롤러(500)에서 전달되는 PBA 정보 및 해시 값을 중복 제거 테이블이 설정된 엔트리에 신규 등록할 수 있다. 중복 관리부(530)는 신규 등록 동작을 수행할 때, 중복 제거 테이블에 빈 엔트리를 검색하고, 빈 엔트리가 존재하면 해당 엔트리에 PBA 및 해시 값을 신규 등록할 수 있다. 중복 제거 테이블에 빈 엔트리가 없으면, 중복 관리부(530)은 중복 제거 테이블의 엔트리들 중에서 우선 순위가 낮은 대체 엔트리를 선택하여 PBA 및 해시 값을 신규 등록할 수 있다.
도 13은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 중복 제거 테이블에 신규 등록 절차의 동작을 도시하는 흐름도이다.
도 13을 참조하면, 중복 제거 테이블에 해시 값이 없으면, 중복 관리부(530)는 중복 제거 테이블에서 빈 엔트리가 있는가 검색할 수 있다. 중복 제거 테이블에 빈 엔트리가 있으면, 중복 관리부(530)는 1313 단계에서 해시값을 빈 엔트리에 등록하고, 1315 단계 및 1317 단계에서 프로그램 데이터가 라이트된 메모리 장치(550)의 PBA를 검색된 빈 엔트리에 등록하고, 카운터 값을 1로 설정할 수 있다.
중복 제거 테이블에 빈 엔트리가 없으면, 중복 관리부(530)는 1311 단계에서 이를 인식하고, 1321 단계에서 중복 제거 테이블을 구성하는 엔트리들의 카운터 값을 검사할 수 있다. 엔트리의 카운터 값이 작은 값을 가지면, 해당하는 프로그램 데이터의 라이트 횟수도 작은 것을 의미할 수 있다. 카운터 값을 검사 과정에서 카운터 값이 1인 엔트리가 검색되면, 중복 관리부(530)는 1323 단계에서 이를 인식하고, 1325 단계에서 카운터 값이 1인 엔트리들 중에서 가장 작은 age 값을 가지는 엔트리에 해시 값을 등록하고, 1327 단계 및 1329 단계에서 PBA 등록 및 카운터 값을 1로 설정할 수 있다.
중복 제거 테이블에 카운터 값이 1인 엔트리가 없으면, 중복 관리부(531)는 1331 단계에서 중복 제거 테이블의 후보 테이블(candidate table)에 해시 값, PBA 및 카운터 값(cnt=1)을 등록하고, 1333 단계에서 중복 제거 테이블에서 최소 카운터 값을 가지는 엔트리에 후보 테이블에 등록된 정보들을 대체 할 수 있다.
도 13에 도시된 바와 같이, 중복 관리부(530)는 중복 제거 테이블에 프로그램 데이터의 해시 값이 없으면 신규 등록 동작을 수행할 수 있다. 신규 추가의 경우, 중복 관리부(530)는 우선 해시(fingerprint) 값을 기존에 등록된 엔트리 들과 비교하고, 같은 해시 값을 갖는 엔트리가 있는지 확인할 수 있다. 먼저 중복 제거 테이블에서 같은 해시 값을 갖는 엔트리가 없으며, 빈 엔트리가 있으면, 중복 관리부(530)는 빈 엔트리에 해시 값을 등록하며, 컨트롤러(500)에 데이터 라이트를 요청할 수 있다. 그리고 컨트롤러(500)에서 전달되는 PBA를 해당하는 엔트리에 등록할 수 있으며, CNT=1로 설정할 수 있다. 두 번째로 중복 제거 테이블에 동일한 해시 값을 가지는 엔트리가 없으며, 빈 엔트리도 없으면, 중복 관리부(530)은 중복 제거 테이블에서 카운터 값이 1인 엔트리를 검색하고, 카운터 값이 1인 엔트리가 검색되면, 중복 관리부(530)는 카운터 값이 1인 엔트리들 중에서 작은 age value를 갖는 엔트리를 선택하여 대체할 수 있다. 세 번째로 중복 제거 테이블에 빈 엔트리 및 카운터 값이 1인 엔트리들이 없으면(카운터 값이 2 이상인 엔트리들만 있는 경우), 중복 관리부(530)는 후보 테이블(new registration cadidate table)에 해시 값을 등록하고, 현재 중복 제거 테이블 엔트리들 중에서 최소 카운터 값을 엔트리로 대체할 수 있다. 중복 제거 테이블의 대체된 엔트리는 데이터 패킷(deduplication된 packet)을 복사(copy)하고 개별 PBA로 분리할 수 있다.
도 14는 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 해시 값이 중복될 때 중복 제거 테이블을 갱신하는 동작을 도시하는 흐름도이다.
도 14를 참조하면, 중복 관리부(530)는 1411 단계에서 컨트롤러(500)에 동일한 해시 값을 가지는 엔트리에 등록된 PBA의 데이터 리드를 요청할 수 있다. 컨트롤러(500)에서 리드 데이터가 전달되면, 중복 관리부(500)는 1413 단계에서 리드 데이터와 프로그램 데이터를 비교 분석할 수 있다. 이때 두 데이터가 일치하면, 중복 관리부(530)는 1415 단계에서 이를 인식하고, 1417 단계에서 해당 엔트리의 정보를 갱신(예를들면 카운터 값 증가)하고, 1419 단계에서 컨트롤러(500)에 해당 엔트리의 PBA를 전송할 수 있다. 컨트롤러(500)는 수신되는 PBA를 해당하는 프로그램 데이터의 LBA에 매핑시키고 프로그램 데이터의 라이트 동작은 수행하지 않을 수 있다.
리드 데이터와 프로그램 데이터가 일치하지 않으면, 중복 관리부(530)는 1415 단계에서 이를 인식하고, 1421 단계에서 컨트롤러(500)에 프로그램 데이터의 라이트를 요청할 수 있다.
해시 값이 동일하며 리드된 데이터와 프로그램 데이터가 다른 경우는 해시 충돌이 발생된 경우가 될 수 있다. 해시 충돌이 발생되면, 중복 관리부(530)는 컨트롤러(500)에 프로그램 데이터의 라이트를 요청할 수 있으며, 중복 제거 테이블의 갱신 동작은 수행하지 않을 수 있다. 그러나 중복 관리부(530)은 해시 충돌이 발생된 경우, 메모리 장치(550)에 라이트되는 PBA 정보에 기반하여 중복 제거 테이블의 엔트리를 갱신할 수 있다.
도 15는 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 해시 값이 중복될 때 중복 제거 테이블을 갱신하는 다른 동작을 도시하는 흐름도이다.
도 15를 참조하면, 중복 테이블은 같은 해시 값을 가지며, 다른 PBA들을 가지는 복수의 엔트리들을 가질 수 있다. 중복 제거 테이블에서 프로그램 데이터의 해시 값과 동일한 해시 값이 검색되면, 중복 관리부(530)는 1511 단계에서 프로그램 데이터와 메모리 장치(550)에 라이트된 데이터들을 비교 분석하기 위한 PBA를 선택할 수 있다. 예를들면, 중복 관리부(530)는 1511 단계에서 동일 해시 값을 가지는 엔트리들 중에서 카운터 값이 가장 큰 엔트리의 PBA(라이트 요청이 가장 많이 발생된 PBA)를 선택할 수 있다. 중복 관리부(530)는 1513 단계에서 컨트롤러(500)에 선택된 PBA의 데이터 리드를 요청할 수 있다. 이후 리드 데이터와 프로그램 데이터가 일치하면, 중복 관리부(530)는 1515 단계 - 1521 단계에서 도 14의 1411 단계 - 1419 단계의 동작과 동일한 방법으로 라이트 동작을 수행할 수 있다.
그러나 리드 데이터와 프로그램 데이터가 일치하지 않으면, 중복 관리부(530)는 1523 단계에서 중복 제거 테이블에서 같은 해시 값을 가지는 다른 엔트리들을 검색하여 다른 PBA가 있는가 검사할 수 있다. 다른 PBA가 있으면, 중복 관리부(530)는 1511 단계로 되돌아가 위와 같은 동작을 반복 수행할 수 있다. 이때 복수의 PBA들이 있으면, 중복 관리부는 해당 엔트리들의 카운터 값을 검사하여 PBA를 선택할 수 있다.
그러나 1523 단계에서 동일한 PBA가 없으면(동일한 해시 값을 가지는 PBA가 하나 밖에 등록되지 않은 경우, 또는 동일한 해시 값을 가지는 복수 PBA들이 있으며 마지막 PBA까지 검색하였지만 프로그램 데이터와 리드된 데이터가 다른 경우), 중복 관리부(530)는 컨트롤러(500)에 프로그램 데이터의 라이트를 요청하고, 컨트롤러(500)으로부터 PBA를 수신할 수있다. 중복 관리부(530)는 1525 단계 및 1527 단계에서 동일한 해시 값을 가지는 엔트리를 선택하고, 선택된 엔트리에 해시 값 및 새로운 PBA를 등록하고 카운터 값을 1로 설정할 수 있다. 새로운 PBA를 등록하는 방법은 도 13과 같은 방법으로 수행할 수 있다.
도 16은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 무손실 압축 알고리듬에 기반하여 생성되는 무손실 압축된 데이터들의 중복 여부를 검색하여 중복 제거 테이블을 갱신하는 동작을 도시하는 흐름도이다.
도 16을 참조하면, 무손실 압축 알고리듬에 의해 생성된 무손실 압축 데이터들을 비교하는 경우, 무손실 압축 데이터가 실질적인 데이터 값(data content)를 포함하고 있기 때문에 충돌이 발생되지 않을 수 있다. 즉, 메모리 시스템은 무손실 압축 데이터(fingerprint 값)들의 비교만으로 중복 여부를 판단할 수 있다. 중복 관리부(530)은 1611 단계에서 프로그램 데이터를 수신하면, 1613 단계에서 설정된 무손실 압축 알고리듬에 의해 프로그램 데이터를 압축할 수 있다. 중복 관리부(530)는 1615 단계에서 중복 제거 테이블을 검색하여 무손실 압축 데이터와 중복되는 데이터가 있는가 검사할 수 있다. 이때 두 데이터들이 중복되면, 1617 단계에서 해당 엔트리에 등록된 PBA를 컨트롤러(500)에 전송하고, 1619 단계에서 해당하는 엔트리를 갱신(카운터 값 증가)할 수 있다. 그러나 중복 제거 테이블에서 무손실 압축 데이터가 검색되지 않으면, 중복 관리부(530)은 1615 단계에서 이를 인식하고, 1621 단계에서 컨트롤러(500)에 프로그램 데이터 라이트를 요청할 수 있다. 그리고 중복 관리부(530)은 1623 단계에서 무손실 압축 데이터 및 PBA를 중복 제거 테이블에 신규 등록할 수 있다.
한 실시예에서, 메모리 시스템은 도 10a - 도 10c와 같은 방법으로 선 등록할 수 있다. 예를들면, 메모리 시스템은 자주 프로그램되는 데이터 패턴 및/또는 OS(및/또는 어플리케이션)에 의해 고정적으로 생성되는 데이터 패턴들을 설정된 무손실 압축 알고리듬에 의해 압축하고, 무손실 압축 데이터 및 데이터 패턴이 저장된 주소 정보를 중복 제거 테이블에 선등록할 수 있다. 또한 메모리 시스템은 무손실 압축 데이터를 분석하여 데이터의 프로그램 제어할 때 중복 제거 테이블에서 검색되지 않는 무손실 압축 데이터들의 신규 등록 절차는 하지 않을 수 있다. 이런 경우, 도 16에서 1623 단계의 동작은 생략될 수 있다.
상기한 바와 같이 중복 제거 테이블에서 같은 핑거 프린트 값을 가질 때, 무손실 압축 알고리듬을 통해 획득되는 핑거 프린트 값을 처리하는 방법과 해시 알고리듬에 의해 획득되는 핑거 프린트 값을 처리하는 방법은 다를 수 있다. 무손실 압축 알고리듬에 의해 핑거 프린트 값을 구하는 경우, 프로그램 데이터 및 중복 제거 테이블에 등록된 핑거 프린트 값의 비교만으로 중복 여부를 판단할 수 있다. 그러나 해시 알고리듬에 의해 핑거 프린트 값을 구하는 경우, 핑거 프린트 값은 같아도 실제 데이터를 다를 수 있다. 따라서 해시 알고리듬에 기반하여 핑거 프린트 값을 구하는 경우, 해시 충돌을 고려하여 중복 여부를 판단할 수 있다.
한 실시예에서 엔트리상 같은 핑거 프린트 값을 가지는 엔트리가 있으며, 엔트리에 등록된 데이터가 무손실 압축 알고리듬에 의해 구해진 핑거 프린트 값인 경우, 메모리 시스템은 핑거 프린트 값이 동일하면 중복 제거 테이블의 해당 엔트리의 카운터 값을 증가시키고, 해당 LBA의 L2P 테이블에 일치하는 엔트리의 PBA 매핑할 수 있다.
한 실시예에서 중복 제거 테이블에 같은 핑거 프린트 값을 가지는 엔트리가 있으며, 엔트리에 등록된 데이터가 해시 알고리듬에 의해 구해진 핑거 프린트 값인 경우, 메모리 시스템은 해당 엔트리에 등록된 PBA의 데이터를 리드하여 일치 여부를 확인할 수 있다. 이때 리드된 데이터와 프로그램 데이터가 일치하면, 메모리 시스템은 해당 엔트리의 카운터 값을 증가시키고, 해당 LBA의 L2P 테이블에 일치하는 엔트리의 PBA를 등록할 수 있다. 그러나 리드된 데이터와 프로그램 데이터가 일치하지 않으면(즉, 해시 충돌이 발생되면), 메모리 시스템은 메모리 장치(550)의 PBA에 라이트된 실제 데이터를 읽어 비교할 수 있다. 이‹š 두 데이터들이 일치하지 않으면(mis-match이면), 메모리 시스템은 호스트(590)에 신규 PBA를 할당하여 수신되는 프로그램 데이터를 메모리 장치에 라이트할 수 있다.
도 17은 본 발명의 다양한 실시예에 따른 메모리 시스템에서 무손실 압축 알고리듬 및 해시 알고리듬에 의해 핑거 프린트 값을 설정하는 예의 중복 테이블 구성 예를 도시하는 도면이다.
도 17을 참조하면, 중복 관리부(530)은 관리 제어부(710) 및 중복 제거 테이블(720)을 포함할 수 있다. 관리 제어부(710)은 데이터 압축 동작, 중복 검색 동작, 등록 동작 등을 수행하는 구성 및 방법들을 포함할 수 있다. 관리 제어부(710)는 압축 동작을 수행하기 위한 무손실 압축부(또는 무손실 압축 알고리듬) 및 해시 생성부(또는 해시 알고리듬)를 포함할 수 있다. 관리 제어부(710)은 프로그램 데이터가 수신되면, 프로그램 데이터를 무손실 압축 데이터 및 해시 값으로 변환할 수 있다.
중복 제거 테이블(720)은 등록 테이블(1710) 및 후보 테이블(new registration candidate table)(1720)으로 구성될 수 있다. 등록 테이블(810)은 압축 데이터(무손실 압축 데이터 및 해시 값) 및 압축 데이터를 구분하기 위한 플래그 정보를 더 포함할 수 있다. 예를들면, 중복 제거 테이블(720)는 복수의 엔트리(entry)들을 포함할 수 있으며, 각 엔트리들은 PBA, 카운터 값, 압축 데이터의 타입을 구분할 수 있는 플래그, 압축 데이터들을 등록할 수 있다. 플래그는 압축 데이터가 무손실 압축 데이터 또는 해시 값임을 구분할 수 있는 플래그일 수 있다.
관리 제어부(710)는 중복 제거 테이블(720)을 검색하여 프로그램 데이터의 변환에 의해 생성되는 압축 데이터(무손실 압축 데이터 및 해시 값)의 중복 여부를 확인할 수 있다. 한 실시예에 따르면, 중복 관리부(530)는 먼저 무손실 압축 데이터를 생성하여 중복 여부를 검색하고, 무손실 압축 데이터의 중복이 인식되지 않으면 해시 값을 획득하여 중복 여부를 획득하는 순서로 동작될 수 있다. 한 실시예에 따르면, 중복 관리부는 먼저 해시 값을 획득하여 중복 여부를 검색하고, 해시 값의 중복이 인식되지 않으면 무손실 압축 데이터를 생성하여 중복 여부를 획득하는 순서로 동작될 수 있다. 한 실시예에 따르면, 중복 관리부(530)은 무손실 압축 데이터의 중복이 검색되지 않으면 해시 값의 중복 여부를 검색하고, 해시 값이 중복되지 않으면 중복 제거 테이블에 해시 값을 신규 등록할 수 있다.
도 18은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 무손실 압축 데이터 및 해시 값의 중복 여부를 검색하여 프로그램 데이터를 라이트하는 동작을 도시하는 흐름도이다.
도 18을 참조하면, 호스트(590)는 프로그램 데이터를 컨트롤러(500)에 전달할 수 있으며, 컨트롤러(500)는 1811 단계에서 프로그램 데이터를 수신하고, 중복 관리부(530)는 1813 단계에서 프로그램 데이터를 수신할 수 있다. 컨트롤러(500)는 1815 단계에 수신되는 프로그램 데이터를 버퍼 메모리(540)에 저장할 수 있다.
중복 관리부(530)은 1821 단계에서 수신되는 프로그램 데이터를 해시 알고리듬에 기반하여 해시 데이터를 생성할 수 있으며, 1861 단계에서 무손실 압축 알고리듬에 의해 무손 압축 데이터를 생성할 수 있다. 해시 데이터를 생성하여 처리하는 방법을 살펴보면, 중복 관리부(530)은 1823 단계에서 중복 제거 테이블을 분석하여 프로그램 데이터의 중복 여부를 판단할 수 있다. 중복 관리부(530)은 해시 데이터가 중복 제거 테이블에서 검색되면, 1825 단계에서 이를 인식하고, 1827 단계에서 컨트롤러(500)에 데이터 리드를 요청하고, 컨트롤러(500)에서 전달되는 리드 데이터를 수신할 수 있다. 이후 중복 관리부(530)은 1825 단계에서 프로그램 데이터와 리드된 데이터를 비교하여 동일 데이터 여부를 판단할 수 있다. 이때 두 데이터들이 동일하면, 중복 관리부(530)은 1829 단계에서 이를 인식하고, 1831 단계에서 중복 제거 테이블에 등록된 PBA 정보를 컨트롤러(500)에 전송할 수 있다. 컨트롤러(500)에 전송되는 PBA는 수신된 프로그램 데이터와 동일한 데이터가 라이트된 메모리 장치(550)의 PBA가 될 수 있다. 컨트롤러(500)는 1833 단계에서 수신된 PBA를 L2P 테이블의 대응되는 LBA에 매핑시킬 수 있다. 컨트롤러(500)는 중복 관리부(530)에서 PBA가 수신되면, 메모리 장치(550)에 프로그램 데이터를 라이트하는 동작을 수행하지 않을 수 있다.
프로그램 데이터와 리드된 데이터가 동일한 데이터가 아니면, 중복 관리부(530)는 1841 단계에서 컨트롤러(500)에 데이터 라이트를 요청할 수 있다. 프로그램 데이터의 라이트가 요청되면, 컨트롤러(500)은 1833 단계에서 신규 PBA를 할당하여 메모리 장치(550)에 프로그램 데이터의 라이트를 명령하고, 메모리 장치(550)은 1851 단계에서 할당된 PBA에 프로그램 데이터를 라이트할 수 있다.
컨트롤러(550)는 1846 단계에서 프로그램 데이터의 PBA를 중복 관리부(530)에 전송할 수 있다. 중복 관리부(530)는 1847 단계에서 중복 제거 테이블에 빈 엔트리 또는 대체할 수 있는 엔트리를 설정하고, 설정된 엔트리에 프로그램 데이터의 해시 값 및 PBA를 신규 등록할 수 있다.
또한 중복 관리부(530)는 1861 단계에서 무손실 압축 데이터를 생성할 수 있으며, 1863 단계에서 생성된 무손실 압축 데이터를 중복 제거 테이블에서 검색하여 중복 여부를 판단할 수 있다. 무손실 압축 데이터가 중복 제거 테이블에서 검색되면, 중복 관리부(530)는 1865 단계에서 이를 인식하고, 1867 단계에서 해당 엔트리에 등록 PBA 정보(또는 버퍼 메모리의 주소 정보)를 컨트롤러(500)에 전송할 수 있다. 그러면 컨트롤러(500)는 프로그램 데이터의 라이트 동작을 수행하지 않고 L2P 테이블에 해당 엔트리에 등록된 PBA(또는 버퍼 메모리의 어드레스 정보)를 매핑시킬 수 있다. 그러나 두 데이터들이 일치하지 않으면, 다음 동작을 수행할 수 있다. 예를들면, 중복 관리부(530)은 무손실 압축 데이터에 기반하는 라이트 동작을 종료할 수 있다. 예를들면, 중복 관리부(530)는 해시 값을 생성하는 동작으로 진행할 수 있다. 예를들면, 중복 관리부(530)는 컨트롤러(500)에 프로그램 데이터의 라이트를 요청할 수 있다.
도 19는 본 발명의 다양한 실시예들에 따라 메모리 시스템이 무손실 압축 및 해시 데이터를 순차적으로 검색하여 프로그램 데이터를 라이트하는 동작을 도시하는 흐름도이다.
도 19를 참조하면, 메모리 시스템은 프로그램 데이터를 복수의 압축 알고리듬에 의해 생성되는 압축 데이터들을 이용하여 프로그램 데이터의 중복 여부를 검색할 수 있다. 예를들면, 메모리 시스템은 무손실 압축 알고리듬 및 해시 알고리듬을 이용하여 프로그램 데이터를 압축 데이터로 변환할 수 있다. 복수의 압축 알고리듬을 사용하는 경우, 메모리 시스템은 우선 순위에 기반하여 프로그램 데이터를 압축 데이터로 변환할 수 있다. 예를들면, 메모리 시스템은 프로그램 데이터가 수신되면 먼저 무손실 압축 알고리듬에 의해 생성되는 무손실 압축 데이터의 중복 여부를 검색하고, 무손실 압축 데이터의 중복이 검색되지 않으면 해시 알고리듬에 의해 생성되는 해시 값의 중복 여부를 검색할 수 있다. 또한 메모리 시스템은 역으로 먼저 해시 알고리듬에 의해 생성되는 해시 값의 중복 여부를 검색하고, 해시 값이 중복되지 않으면 무손실 압축 알고리듬에 의해 생성되는 무손실 압축 데이터의 중복 여부를 검색할 수 있다.
메모리 시스템은 복수의 압축 알고리듬을 사용하는 경우, 하나의 압축 압축 알고리듬에 의해 생성되는 압축 데이터에 기반하여 중복 제거 테이블을 갱신할 수 있다. 예를들면, 메모리 시스템은 무손실 압축 데이터의 중복 여부만을 검색하고, 해시 값의 중복 여부를 검색한 후 검색 결과에 기반하여 중복 제거 테이블을 갱신할 수 있다. 메모리 시스템은 역으로 해시 값의 중복 여부만을 검색하고, 무손실 압축 데이터의 중복 여부를 검색한 후 검색 결과에 기반하여 중복 제거 테이블을 갱신할 수 있다.
도 19는 프로그램 데이터가 수신되면, 중복 관리부(530)는 무손실 압축 데이터 및 해시 값의 우선 순위로 중복 여부를 검색하며, 해시 값에 기반하여 중복 제거 테이블을 갱신하는 예를 도시하는 흐름도가 될 수 있다. 중복 관리부(530)의 중복 제거 테이블은 메모리 장치(550)에 라이트된 데이터의 무손실 압축 데이터 및 해시 값을 저장하는 엔트리들을 구비할 수 있으며, 각 엔트리들은 해시 값 또는 무손실 압축 데이터, 해시 값 및 무손실 압축 데이터를 구분하기 위한 플래그, 데이터가 라이트된 메모리의 주소 정보(메모리 장치(550)의 PBA 또는 버퍼 메모리(540)의 주소 정보), 데이터의 라이트 요청 횟수(카운터 값) 등의 정보를 포함할 수 있다.
중복 관리부(530)은 1911 단계에서 프로그램 데이터가 수신되면, 1193 단계에서 무손실 압축 알고리듬에 기반하여 프로그램 데이터의 무손실 압축 데이터를 생성할 수 있다. 중복 관리부(530)은 1915 단계에서 중복 제거 테이블에서 무손실 압축 데이터를 검색하여 중복 여부를 분석할 수 있다. 중복 관리부(530)은 중복 제거 테이블에서 무손실 압축 데이터가 검색되면 1917 단계에서 중복으로 판단하고, 1919 단계에서 해당 엔트리에 등록된 주소 정보를 컨트롤러(500)에 전송할 수 있다. 컨트롤러(500)는 L2P 테이블에서 프로그램 데이터의 LBA에 수신되는 주소 정보를 매핑할 수 있다. 여기서 주소 정보는 메모리 장치(550)의 PBA 또는 버퍼 메모리(540)의 어드레스 값이 될 수 있다. 중복 관리부(530)은 1921 단계에서 중복 제거 테이블에서 해당 엔트리의 정보를 갱신할 수 있다. 예를드련, 갱신되는 정보는 중복된 프로그램 데이터의 라이트 요청 횟수(카운터 값)의 갱신이 될 수 있다.
중복 검색 테이블에서 무손실 압축 데이터가 검색되지 않으면, 중복 관리부(530)는 1917 단계에서 이를 인식하고, 1931 단계에서 해시 알고리듬에 기반하여 해시 값을 생성할 수 있다. 중복 관리부(530)은 1933 단계에서 중복 제거 테이블에서 해시 값을 검색하여 중복 여부를 분석할 수 있다. 중복 관리부(530)은 중복 제거 테이블에서 해시 값이 검색되면 1935 단계에서 중복으로 판단하고, 중복 제거 테이블의 해당 엔트리에 등록된 주소 정보(예를들면 PBA)를 컨트롤러(500)에 전송할 수 있다. 그리고 컨트롤러(500)에 의해 리드되는 해당 주소 정보의 데이터를 수신할 수 있다. 컨트롤러(500)으로부터 리드 데이터가 수신되면, 중복 관리부(530)는 1953 단계에서 프로그램 데이터와 리드된 데이터를 비교할 수 있다. 프로그램 및 리드된 데이터가 동일한 데이터이면, 중복 관리부(530)는 1953 단계에서 이를 인식하고, 1955 단계에서 컨트롤러(500)에 엔트리에 등록된 주소 정보를 전송하고, 1957 단계에서 엔트리의 정보를 갱신할 수 있다.
중복 관리부(530)는 1953 단계에서 프로그램 데이터와 리드된 데이터가 다른 데이터임을 인식하면, 1961 단계에서 컨트롤러(500)에 데이터 라이트를 요청할 수 있다. 중복 관리부(530)은 1963 단계에서 컨트롤러(500)에서 라이트된 데이터의 주소 정보를 수신하면, 1965 단계에서 중복 제거 테이블에 해시값 및 주소 정보를 포함하는 신규 엔트리를 등록할 수 있다. 이런경우, 중복 제거 테이블은 동일한 해시 값을 가지는 복수의 엔트리들을 포함할 수 있으며, 각 엔트리들은 서로 다른 주소 정보(예를들면 PBA) 및 카운터 값을 가질 수 있다. 한 실시예에서 중복 관리부(530)은 1963 단계 및 1965 단계를 생략할 수 있다. 이런 경우, 중복 관리부(530)는 해시 값이 중복되는 상태에서 프로그램 데이터와 리드된 데이터가 상이한 경우 신규 엔트리를 등록하는 동작을 수행하지 않을 수 있다.
또한 중복 관리부(530)는 1935 단계에서 중복 제거 테이블에서 해시 값이 검색되지 않음을 인식하면, 1937 단계에서 컨트롤러(500)에 데이터 라이트를 요청할 수 있다. 중복 관리부(530)은 1939 단계에서 컨트롤러(500)에서 라이트된 데이터의 주소 정보를 수신하면, 1941 단계에서 중복 제거 테이블에 해시값 및 주소 정보를 포함하는 신규 엔트리를 등록할 수 있다. 1939 단계 - 1941 단계의 동작은 도 13과 같은 방법으로 수행될 수 있다.
도 20은 본 발명의 다양한 실시예들에 따른 메모리 시스템에서 이레이즈에 따라 중복 제거 테이블의 정보를 갱신하는 동작을 도시하는 흐름도이다.
도 20을 참조하면, 중복 관리부(530)는 컨트롤러(500)의 제어하에 메모리 장치(550)의 이레이즈 동작을 실행하면, 중복 제거 테이블의 정보들도 갱신할 수 있다. 이레이즈 타입(erase type)는 이레이즈/트림(erase/trim) 및 GC(garbage collection) 등이 될 수 있다. 트림은 운영 체제에서 삭제된 쓰레기 파일을 파악하여 메모리 장치(550)에서 기록된 해당하는 데이터들을 지우는 기능이 될 수 있다. 트림에 의한 이레이즈는 컨트롤러(500)이 운영 체제에서 삭제를 통보하는 시점에서 즉시 시행될 수 있으며, 또는 컨트롤러가 이를 기억하고 적절한 시점에서 삭제하는 방법을 사용할 수 있다. GC는 쓰레기 페이지(예를들면 ware-leveling을 통해 생성되는 쓰레기 페이지)들을 이레이즈 처리하는 기능이 될 수 있다. 메모리 시스템은 이레이즈 명령이 발생될 때 이레이즈 타입에 따라 메모리 장치(550)에 라이트된 데이터들을 이레이즈 처리하고, 그 결과를 중복 제거 테이블에 갱신시킬 수 있다
이레이즈 명령이 발생되면, 메모리 시스템은 2011 단계에서 이레이즈 타입을 분석할 수 있다. 이레이즈 타입이 이레이즈/트림이면, 메모리 시스템은 2013 단계에서 이를 인식하고 이레이즈/트림에 의해 요청된 LBA에 페어링(pairing)된 PBA가 중복 제거 테이블에 엔트리로 등록되어 있는가 검사할 수 수 있다. 이때 이레이즈/트림에 의해 요청된 LBA에 매핑되는 PBA가 중복 제거 테이블의 엔트리에 등록되어 있으면, 메모리 시스템은 2015 단계에서 이를 인식하고, 2016 단계에서 중복 제거 테이블의 해당 엔트리의 정보를 갱신(예를들면 카운터 값을 감소(CNT-1))할 수 있다. 그리고, 이레이즈/트림이 요청된 LBA에 페어링된 PBA가 중복 제거 테이블의 엔트리로 등록되어 있지 않으면, 메모리 시스템은 2015 단계에서 이를 인식하고 일반적인 이레이즈 동작을 수행할 수 있다. 일반적인 동작은 컨트롤러(500)가 메모리 장치(550)의 해당 PBA에 라이트된 데이터들을 이레이즈하고 L2P 테이블을 갱신하는 동작을 의미할 수 있다.
중복 제거 테이블의 각 엔트리에 포함되는 카운터 값들은 해당하는 프로그램 데이터의 라이트 횟수가 될 수 있다. 따라서 이레이즈 명령이 발생되면, 메모리 시스템은 중복 제거 테이블의 등록된 정보에 따라 메모리 장치(550)의 이레이즈 동작을 제어할 수 있다. 이레이즈가 요청된 PBA가 중복 제거 테이블에 등록된 경우, 메모리 시스템은 2017 단계에서 해당 PBA가 등록된 엔트리의 카운터 값을 확인하고, 카운터 값이 2 이상이면 라이트가 요청된 다른 프로그램 데이터가 있음을 의미한다. 이런 경우, 메모리 시스템은 2017 단계에서 해당하는 엔트리의 카운터 값이 감소되도록 제어할 수 있으며, L2P 테이블에서 해당하는 LBA의 정보를 이레이즈할 수 있다. 그리고 해당 PBA가 등록된 엔트리의 카운터 값이 1인 경우, 더 이상의 중복된 데이터가 없음을 의미할 수 있다. 이런 경우, 메모리 시스템은 중복 제거 테이블에서 해당 엔트리를 삭제하고, L2P 테이블의 LBA 및 메모리 장치(550)의 해당 PBA에 라이트된 데이터를 이레이즈할 수 있다.
또한 이레이즈 타입이 GC이고, GC에 의해 요청된 LBA에 페어링된 PBA가 중복 제거 테이블에 엔트리로 등록되어 있으면, 메모리 시스템은 2013 단계에서 이를 인식하고, 2021 단계에서 중복 제거 테이블에서 해당하는 PBA가 등록된 엔트리를 갱신하고, 2023 단계에서 L2P 테이블의 정보도 갱신할 수 있다. GC 명령이 발생되면, 컨트롤러(500)는 GC를 리드하여 메모리 장치(550)에 새로운 PBA로 데이터를 라이트할 수 있다. 이때 GC에 의해 라이트되는 데이터의 PBA가 중복 제거 테이블에 등록되어 잇으면, 컨트롤러(500)는 이를 중복 관리부(530)에 통보할 수 있다. 그러면 중복 관리부(530)는 중복 제거 테이블에서 해당 PBA가 등록된 엔트리의 PBA 정보를 갱신할 수 있다. 또한 컨트롤러(500)는 갱신되는 PBA에 L2P의 PBA 값들을 새로운 PBA로 갱신할 수 있다. 이를 위해 특별히 PBA to LBA로 매핑하여 관리하는 P2L 테이블을 가질 경우, 메모리 시스템은 GC에 의해 갱신되는 PBA를 각 L2P table에서 업데이트할 수 있다. 이때 메모리 시스템에서 수행하는 업데이트의 동작은 중복 제거 테이블에서 관리되고 있는 엔트리의 카운터 값만큼 수행될 수 있다.
본 발명의 다양한 실시예에 따른 메모리 시스템은 백그라운도 메모리 장치(550)를 리드하여 중복 검색할 수 있다. 메모리 시스템은 중복 제거 테이블의 제한이 있는 경우, 또는 시간적 지역성 범위를 넘어서 들어오는 라이트 요청들은 계속해서 대체(replace)되는 경우, 결과적으로 중복 제거 테이블에 등록할 수 없는 경우가 발생될 수 있다. 예를들면, 인터벌(interval)이 길게 다른 해시값들과 섞여 들어온 경우, 메모리 시스템은 전체적으로는 중복이 있어도 이를 등록하고 계속 유지하지 못한 상황이 발생될 수 있다. 이런 경우들을 위해 메모리 시스템은 백그라운드 동작(background DeDUP processing)을 수행할 수 있다. 컨트롤러(500)는 아이들(idle) 시간에서 수행하는 GC 동작에서 리클레임(reclaim)시 해시 알고리듬을 수행하고, 중복 제거 테이블의 엔트리들을 검색하여 중복 여부를 판단할 수 있다. 중복이 확인되면, 메모리 시스템은 해당하는 엔트리의 카운터 값을 증가시키고, 리클레임에서는 데이터 라이트 동작을 수행하지 않으며 그대로 제거하고, L2P 테이블만 갱신할 수 있다.
메모리 시스템은 중복 관리에 의한 WA 감소 효과를 가질 수 있다. 메모리 시스템은 프로그램 데이터의 중복 여부를 판단하고, 중복으로 검색되는 패킷의 수만큼 라이트 동작을 수행하지 않을 수 있다. 중복 제거 테이블의 엔트리 수가 클수록, 또한 호스트의 워크로드(workload)상 보이는 중복 데이터(duplication data)들의 확률적 분포에 따라, WA의 감소 영향이 차이가 날 수 있다. 예를들면, 중복 제거 테이블에서 전체 메모리 장치(storage)의 절반에 해당하는 해시 엔트리(hash entry)를 관리할 수 있다고 할 때, 그리고 호스트가 정확하게 동일한 2개의 카피(copy)로 양분하여 메모리 장치(storage)를 사용하고 있다고 할 때, 메모리 장치는 총 호스트 라이트 데이터의 절반만 프로그램하고도 관리 할 수 있게 된다. 결국 메모리 시스템의 마모도를 완화시키는 효과를 얻을 수 있다.
그러면 이하에서는, 도 21 내지 도 26을 참조하여, 본 발명의 실시 예에 따라 도 1 내지 도 6에서 설명한 메모리 장치(150) 및 컨트롤러(130)를 포함하는 메모리 시스템(110)이 적용된 데이터 처리 시스템 및 전자 기기들에 대해서 보다 구체적으로 설명하기로 한다.
도 21은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 다른 일 예를 개략적으로 도시한 도면이다. 여기서, 도 21은 본 발명의 실시 예에 따른 메모리 시스템이 적용된 메모리 카드 시스템을 개략적으로 도시한 도면이다.
도 21을 참조하면, 메모리 카드 시스템(6100)은, 메모리 컨트롤러(6120), 메모리 장치(6130), 및 커넥터(6110)를 포함한다.
보다 구체적으로 설명하면, 메모리 컨트롤러(6120)는, 불휘발성 메모리로 구현된 메모리 장치(6130)와 연결되며, 메모리 장치(6130)를 액세스하도록 구현된다. 예컨대, 메모리 컨트롤러(6120)는, 메모리 장치(6130)의 리드, 라이트, 이레이즈, 및 백그라운드(background) 동작 등을 제어하도록 구현된다. 그리고, 메모리 컨트롤러(6120)는, 메모리 장치(6130) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구현되며, 메모리 장치(6130)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구현된다. 즉, 메모리 컨트롤러(6120)는, 도 1에서 설명한 메모리 시스템(110)에서의 컨트롤러(130)에 대응되며, 메모리 장치(6130)는, 도 1에서 설명한 메모리 시스템(110)에서의 메모리 장치(150)에 대응될 수 있다.
그러므로, 메모리 컨트롤러(6120)는, 램(RAM: Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
아울러, 메모리 컨트롤러(6120)는, 커넥터(6110)를 통해 외부 장치, 예컨대 도 1에서 설명한 호스트(102)와 통신할 수 있다. 예컨대, 메모리 컨트롤러(6120)는, 도 1에서 설명한 바와 같이, USB(Universal Serial Bus), MMC(multimedia card), eMMC(embeded MMC), PCI(peripheral component interconnection), PCIe(PCI express), ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI(small computer small interface), ESDI(enhanced small disk interface), IDE(Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성될 수 있으며, 그에 따라 유선/무선 전자 기기들, 특히 모바일 전자 기기 등에 본 발명의 실시 예에 따른 메모리 시스템 및 데이터 처리 시스템이 적용될 수 있다.
그리고, 메모리 장치(6130)는, 불휘발성 메모리로 구현, 예컨대 EPROM(Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM(Phase-change RAM), ReRAM(Resistive RAM), FRAM(Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
아울러, 메모리 컨트롤러(6120) 및 메모리 장치(6130)는, 하나의 반도체 장치로 집적될 수 있으며, 일 예로 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 구성할 수 있으며, PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 22는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 다른 일 예를 개략적으로 도시한 도면이다.
도 22를 참조하면, 데이터 처리 시스템(6200)은, 적어도 하나의 불휘발성 메모리로 구현된 메모리 장치(6230), 및 메모리 장치(6230)를 제어하는 메모리 컨트롤러(6220)를 포함한다. 여기서, 도 22에 도시한 데이터 처리 시스템(6200)은, 도 1에서 설명한 바와 같이, 메모리 카드(CF, SD, microSD, 등), USB 저장 장치 등과 같은 저장 매체가 될 수 있으며, 메모리 장치(6230)는, 도 1에서 설명한 메모리 시스템(110)에서의 메모리 장치(150)에 대응되고, 메모리 컨트롤러(6220)는, 도 1에서 설명한 메모리 시스템(110)에서의 컨트롤러(130)에 대응될 수 있다.
그리고, 메모리 컨트롤러(6220)는, 호스트(6210)의 요청에 응답하여 메모리 장치(6230)에 대한 리드, 라이트, 이레이즈 동작 등을 제어하며, 메모리 컨트롤러(6220)는 적어도 하나의 CPU(6221), 버퍼 메모리, 예컨대 RAM(6222), ECC 회로(6223), 호스트 인터페이스(6224), 및 메모리 인터페이스, 예컨대 NVM 인터페이스(6225)를 포함한다.
여기서, CPU(6221)는, 메모리 장치(6230)에 대한 전반적인 동작, 예컨대 읽기, 쓰기, 파일 시스템 관리, 배드 페이지 관리 등)을 제어할 수 있다. 그리고, RAM(6222)는, CPU(6221)의 제어에 따라 동작하며, 워크 메모리(work memory), 버퍼 메모리(buffer memory), 캐시 메모리(cache memory) 등으로 사용될 수 있다. 여기서, RAM(6222)이 워크 메모리로 사용되는 경우에, CPU(6221)에에서 처리된 데이터가 임시 저장되며, RAM(6222)이 버퍼 메모리로 사용되는 경우에는, 호스트(6210)에서 메모리 장치(6230)로 또는 메모리 장치(6230)에서 호스트(6210)로 전송되는 데이터의 버퍼링을 위해 사용되며, RAM(6222)이 캐시 메모리로 사용되는 경우에는 저속의 메모리 장치(6230)가 고속으로 동작하도록 사용될 수 있다.
아울러, ECC 회로(6223)는, 도 1에서 설명한 컨트롤러(130)의 ECC 유닛(138)에 대응하며, 도 1에서 설명한 바와 같이, 메모리 장치(6230)로부터 수신된 데이터의 페일 비트(fail bit) 또는 에러 비트(error bit)를 정정하기 위한 에러 정정 코드(ECC: Error Correction Code)를 생성한다. 또한, ECC 회로(6223)는, 메모리 장치(6230)로 제공되는 데이터의 에러 정정 인코딩을 수행하여, 패리티(parity) 비트가 부가된 데이터를 형성한다. 여기서, 패리티 비트는, 메모리 장치(6230)에 저장될 수 있다. 또한, ECC 회로(6223)는, 메모리 장치(6230)로부터 출력된 데이터에 대하여 에러 정정 디코딩을 수행할 수 있으며, 이때 ECC 회로(6223)는 패리티(parity)를 사용하여 에러를 정정할 수 있다. 예컨대, ECC 회로(6223)는, 도 1에서 설명한 바와 같이, LDPC code, BCH code, turbo code, 리드-솔로몬 코드, convolution code, RSC, TCM, BCM 등의 다양한 코디드 모듈레이션(coded modulation)을 사용하여 에러를 정정할 수 있다.
그리고, 메모리 컨트롤러(6220)는, 호스트 인터페이스(6224)를 통해 호스트(6210)와 데이터 등을 송수신하며, NVM 인터페이스(6225)를 통해 메모리 장치(6230)와 데이터 등을 송수신한다. 여기서, 호스트 인터페이스(6224)는, PATA 버스, SATA 버스, SCSI, USB, PCIe, 낸드 인터페이스 등을 통해 호스트(6210)와 연결될 수 있다. 또한, 메모리 컨트롤러(6220)는, 무선 통신 기능, 모바일 통신 규격으로 WiFi 또는 LTE(Long Term Evolution) 등이 구현되어, 외부 장치, 예컨대 호스트(6210) 또는 호스트(6210) 이외의 다른 외부 장치와 연결된 후, 데이터 등을 송수신할 수 있으며, 특히 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성됨에 따라, 유선/무선 전자 기기들, 특히 모바일 전자 기기 등에 본 발명의 실시 예에 따른 메모리 시스템 및 데이터 처리 시스템이 적용될 수 있다.
도 23은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 다른 일 예를 개략적으로 도시한 도면이다. 여기서, 도 23은 본 발명의 실시 예에 따른 메모리 시스템이 적용된 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 개략적으로 도시한 도면이다.
도 23을 참조하면, SSD(6300)는, 복수의 불휘발성 메모리들을 포함하는 메모리 장치(6340) 및 컨트롤러(6320)를 포함한다. 여기서, 컨트롤러(6320)는, 도 1에서 설명한 메모리 시스템(110)에서의 컨트롤러(130)에 대응되며, 메모리 장치(6340)는, 도 1에서 설명한 메모리 시스템(110)에서의 메모리 장치(150)에 대응될 수 있다.
보다 구체적으로 설명하면, 컨트롤러(6320)는, 복수의 채널들(CH1, CH2, CH3, …, CHi)을 통해 메모리 장치(6340)와 연결된다. 그리고, 컨트롤러(6320)는, 적어도 하나의 프로세서(6321), 버퍼 메모리(6325), ECC 회로(6322), 호스트 인터페이스(6324), 및 메모리 인터페이스, 예컨대 불휘발성 메모리 인터페이스(6326)를 포함한다.
여기서, 버퍼 메모리(6325)는, 호스트(6310)로부터 수신된 데이터 또는 메모리 장치(6340)에 포함된 복수의 플래시 메모리들(NVMs)로부터 수신된 데이터를 임시 저장하거나, 복수의 플래시 메모리들(NVMs)의 메타 데이터, 예컨대 매핑 테이블을 포함함 맵 데이터를 임시 저장한다. 또한, 버퍼 메모리(6325)는, DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, GRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들로 구현될 수 있으며, 도 23에서는 설명의 편의를 위해 컨트롤러(6320) 내부에 존재하지만, 컨트롤러(6320) 외부에도 존재할 수 있다.
그리고, ECC 회로(6322)는, 프로그램 동작에서 메모리 장치(6340)로 프로그램될 데이터의 에러 정정 코드 값을 계산하고, 리드 동작에서 메모리 장치(6340)로부터 리드된 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정 동작을 수행하며, 페일된 데이터의 복구 동작에서 메모리 장치(6340)로부터 복구된 데이터의 에러 정정 동작을 수행한다.
또한, 호스트 인터페이스(6324)는, 외부의 장치, 예컨대 호스트(6310)와 인터페이스 기능을 제공하며, 불휘발성 메모리 인터페이스(6326)는, 복수의 채널들을 통해 연결된 메모리 장치(6340)와 인터페이스 기능을 제공한다.
아울러, 도 1에서 설명한 메모리 시스템(110)이 적용된 SSD(6300)는, 복수개가 적용되어 데이터 처리 시스템, 예컨대 RAID(Redundant Array of Independent Disks) 시스템을 구현할 수 있으며, 이때 RAID 시스템에는, 복수의 SSD(6300)들과, 복수의 SSD(6300)들을 제어하는 RAID 컨트롤러가 포함될 수 있다. 여기서, RAID 컨트롤러는, 호스트(6310)로부터 라이트 커맨드를 수신하여, 프로그램 동작을 수행할 경우, 라이트 커맨드에 해당하는 데이터를, 복수의 RAID 레벨들, 즉 복수의 SSD(6300)들에서 호스트(6310)로부터 수신된 라이트 커맨드의 RAID 레벨 정보에 상응하여, 적어도 하나의 메모리 시스템, 다시 말해 SSD(6300)을 선택한 후, 선택한 SSD(6300)로 출력할 수 있다. 또한, RAID 컨트롤러는, 호스트(6310)로부터 리드 커맨드를 수신하여 리드 동작을 수행할 경우, 복수의 RAID 레벨들, 즉 복수의 SSD(6300)들에서 호스트(6310)로부터 수신된 리드 커맨드의 RAID 레벨 정보에 상응하여, 적어도 하나의 메모리 시스템, 다시 말해 SSD(6300)을 선택한 후, 선택한 SSD(6300)로부터 데이터를 호스트(6310)로 제공할 수 있다.
도 24는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 다른 일 예를 개략적으로 도시한 도면이다. 여기서, 도 24은 본 발명의 실시 예에 따른 메모리 시스템이 적용된 eMMC(embedded multimedia card)를 개략적으로 도시한 도면이다.
도 24를 참조하면, eMMC(6400)는, 적어도 하나의 낸드 플래시 메모리로 구현된 메모리 장치(6440), 및 컨트롤러(6430)를 포함한다. 여기서, 컨트롤러(6430)는, 도 1에서 설명한 메모리 시스템(110)에서의 컨트롤러(130)에 대응되며, 메모리 장치(6440)는, 도 1에서 설명한 메모리 시스템(110)에서의 메모리 장치(150)에 대응될 수 있다.
보다 구체적으로 설명하면, 컨트롤러(6430)는, 복수의 채널들을 통해, 메모리 장치(2100)와 연결된다. 그리고, 컨트롤러(6430)는, 적어도 하나의 코어(6432), 호스트 인터페이스(6431), 및 메모리 인터페이스, 예컨대 낸드 인터페이스(6433)를 포함한다.
여기서, 코어(6432)는, eMMC(6400)의 전반적인 동작을 제어하며, 호스트 인터페이스(6431)는, 컨트롤러(6430)와 호스트(6410) 간의 인터페이스 기능을 제공하며, 낸드 인터페이스(6433)는, 메모리 장치(6440)와 컨트롤러(6430) 간의 인터페이스 기능을 제공한다. 예컨대, 호스트 인터페이스(6431)는, 도 1에서 설명한 바와 같이, 병렬 인터페이스, 일 예로 MMC 인터페이스가 될 수 있으며, 아울러 직렬 인터페이스, 일 예로 UHS((Ultra High Speed)-Ⅰ/UHS-Ⅱ, UFS 인터페이스가 될 수 있다.
도 25는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 다른 일 예를 개략적으로 도시한 도면이다. 여기서, 도 25은 본 발명의 실시 예에 따른 메모리 시스템이 적용된 UFS(Universal Flash Storage)를 개략적으로 도시한 도면이다.
도 25를 참조하면, UFS 시스템(6500)은, UFS 호스트(6510), 복수의 UFS 장치들(6520,6530), 임베디드 UFS 장치(6540), 착탈형 UFS 카드(6550)를 포함할 수 있으며, UFS 호스트(6510)는, 유선/무선 전자 기기들, 특히 모바일 전자 기기 등의 어플리케이션 프로세서가 될 수 있다.
여기서, UFS 호스트(6510), UFS 장치들(6520,6530), 임베디드 UFS 장치(6540), 및 착탈형 UFS 카드(6550)는, 각각 UFS 프로토콜을 통해 외부의 장치들, 즉 유선/무선 전자 기기들, 특히 모바일 전자 기기 등과 통신할 수 있으며, UFS 장치들(6520,6530), 임베디드 UFS 장치(6540), 및 착탈형 UFS 카드(6550)는, 도 1에서 설명한 메모리 시스템(110)으로 구현, 특히 도 23에서 설명한 메모리 카드 시스템(6100)으로 구현될 수 있다. 또한, 임베디드 UFS 장치(6540)와 착탈형 UFS 카드(6550)는, UFS 프로토콜이 아닌 다른 프로토콜을 통해 통신할 수 있으며, 예컨대 다양한 카드 프로토콜, 일 예로 UFDs, MMC, SD(secure digital), mini SD, Micro SD 등을 통해 통신할 수 있다.
도 26은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 또 다른 일 예를 개략적으로 도시한 도면이다. 여기서, 도 26는 본 발명에 따른 메모리 시스템이 적용된 사용자 시스템을 개략적으로 도시한 도면이다.
도 26을 참조하면, 사용자 시스템(6600)은, 애플리케이션 프로세서(6630), 메모리 모듈(6620), 네트워크 모듈(6640), 스토리지 모듈(6650), 및 사용자 인터페이스(6610)를 포함한다.
보다 구체적으로 설명하면, 애플리케이션 프로세서(6630)는, 사용자 시스템(6600)에 포함된 구성 요소들, 운영 시스템(OS: Operating System)을 구동시키며, 일 예로 사용자 시스템(6600)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 여기서, 애플리케이션 프로세서(6630)는 시스템-온-칩(SoC: System-on-Chip)으로 제공될 수 있다.
그리고, 메모리 모듈(6620)은, 사용자 시스템(6600)의 주메모리, 동작 메모리, 버퍼 메모리, 또는 캐시 메모리로 동작할 수 있다. 여기서, 메모리 모듈(6620)은, DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다. 예컨대, 애플리케이션 프로세서(6630) 및 메모리 모듈(6620)은, POP(Package on Package)를 기반으로 패키지화되어 실장될 수 있다.
또한, 네트워크 모듈(6640)은, 외부 장치들과 통신을 수행할 수 있다. 예를 들어, 네트워크 모듈(6640)은, 유선 통신을 지원할뿐만 아니라, CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 다양한 무선 통신을 지원함으로써, 유선/무선 전자 기기들, 특히 모바일 전자 기기 등과 통신을 수행할 수 있으며, 그에 따라 본 발명의 실시 예에 따른 메모리 시스템 및 데이터 처리 시스템이 유선/무선 전자 기기들에 적용될 수 있다. 여기서, 네트워크 모듈(6640)은, 애플리케이션 프로세서(6630)에 포함될 수 있다.
아울러, 스토리지 모듈(6650)은, 데이터를 저장, 예컨대 애플리케이션 프로세서(6530)로부터 수신한 데이터를 저장한 후, 스토리지 모듈(6650)에 저장된 데이터를 애플리케이션 프로세서(6630)로 전송할 수 있다. 여기서, 스토리지 모듈(6650)은, PRAM(Phasechange RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 불휘발성 반도체 메모리 소자 등으로 구현될 수 있으며, 또한 사용자 시스템(6600)의 메모리 카드, 외장형 드라이브 등과 같은 탈착식 저장 매체(removable drive)로 제공될 수 있다. 즉, 스토리지 모듈(6650)은, 도 1에서 설명한 메모리 시스템(110)에 대응될 수 있으며, 아울러 도 23 내지 도 25에서 설명한 SSD, eMMC, UFS로 구현될 수도 있다.
그리고, 사용자 인터페이스(6610)는, 애플리케이션 프로세서(6630)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예컨대, 사용자 인터페이스(6610)는, 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있으며, 아울러 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diode) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
또한, 본 발명의 실시 예에 따라 도 1에서 설명한 메모리 시스템(110)이, 사용자 시스템(6600)의 모바일 전자 기기에 적용될 경우, 어플리케이션 프로세서(6630)는, 모바일 전자 기기의 전반적인 동작을 제어하며, 네트워크 모듈(6640)은, 통신 모듈로서, 전술한 바와 같이 외부 장치와의 유선/무선 통신을 제어한다. 아울러, 사용자 인터페이스(6610)는, 모바일 전자 기기의 디스플레이/터치 모듈로 어플리케이션 프로세서(6630)에서 처리된 데이터를 디스플레이하거나, 터치 패널로부터 데이터를 입력 받도록 지원한다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (22)

  1. 메모리 장치; 및
    상기 메모리 장치에 기능적으로 연결되는 컨트롤러를 포함하고,
    상기 컨트롤러는,
    압축 데이터, 상기 압축 데이터에 대응되는 비압축 데이터가 라이트된 상기 메모리 장치의 제2 어드레스 및 상기 데이터의 라이트 횟수를 나타내는 카운터 등을 포함하는 중복 제거 테이블을 포함하며,
    데이터 라이트 동작에서 수신되는 제1 어드레스의 프로그램 데이터를 압축하고,
    상기 중복 제거 테이블에서 상기 압축 데이터를 검색되면, 상기 중복 제거 테이블에서 상기 압축 데이터에 대응되는 제2 어드레스를 상기 제1 어드레스에 맵핑하고, 상기 메모리 장치의 라이트 동작을 수행하지 않는 메모리 제어 장치.
  2. ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1항에 있어서,
    상기 컨트롤러는,
    상기 압축 데이터가 신규이면 상기 프로그램 데이터를 상기 메모리 장치의 제2 어드레스에 라이트하고, 상기 중복 제거 테이블에 상기 압축 데이터 및 제2 어드레스를 포함하는 신규 엔트리를 등록하며,
    상기 압축 데이터는 해시 알고리듬에 의해 획득되는 해시 값인 메모리 제어 장치.
  3. ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈
    제2항에 있어서,
    상기 컨트롤러는
    상기 제1 어드레스의 프로그램 데이터를 해시 값으로 변환하고,
    상기 중복 제거 테이블에서 상기 해시 값이 검색되면, 상기 검색된 해시 값에 매핑된 상기 메모리 장치의 제2 어드레스에 저장된 데이터를 리드하고,
    상기 수신된 프로그램 데이터와 상기 리드된 데이터가 동일하면 상기 제1 어드레스에 상기 제2 어드레스를 매핑하는 메모리 제어 장치.
  4. ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈
    제3항에 있어서,
    상기 컨트롤러는,
    프로그램 데이터와 상기 리드된 데이터가 상이하면, 상기 메모리 장치에 상기 프로그램 데이터를 라이트하기 위한 제2 어드레스를 할당하고, 상기 메모리 장치의 상기 할당된 제2 어드레스에 상기 프로그램 데이터를 라이트하며,
    상기 제2 어드레스를 상기 제1 어드레스에 맵핑하는 메모리 제어 장치.
  5. ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈
    제2항에 있어서,
    상기 컨트롤러는,
    상기 프로그램 데이터를 해시 값으로 변환하고, 상기 중복 제거 테이블에서 변환된 해시값이 검색되면 상기 검색된 해시 값에 매핑된 상기 메모리 장치의 제2 어드레스에 저장된 데이터를 리드하고,
    상기 프로그램 데이터와 상기 리드된 데이터의 비교하며,
    상기 두 데이터들이 다르면, 상기 메모리 장치에 상기 프로그램 데이터를 라이트하기 위한 다른 제2 어드레스를 할당하고, 상기 메모리 장치의 상기 할당된 다른 제2 어드레스에 상기 프로그램 데이터를 라이트하며, 상기 중복 제거 테이블에 상기 해시 값에 상기 다른 제2 어드레스를 포함하는 신규 엔트리를 추가 등록하는 메모리 제어 장치
  6. ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈
    제5항에 있어서,
    상기 컨트롤러는 상기 중복 제거테이블에서 데이터가 검색되면, 카운터 값이 가장 큰 해시 값에 매핑된 제2 어드레스를 선택하고, 상기 메모리 장치의 상기 제2 어드레스에 라이트된 데이터를 리드하며,
    상기 리드 데이터가 상기 프로그램 데이터와 다르면, 다음 우선 순위의 카운트 값을 가지는 해시 값에 매핑된 상기 다른 제2 어드레스를 선택하고, 상기 메모리 장치의 상기 다른 제2 어드레스에 라이트된 데이터를 리드하는 메모리 제어 장치.
  7. ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈
    제3항에 있어서,
    상기 컨트롤러는
    이레이즈 명령이 발생되면, 이레이즈 데이터의 제1 어드레스에 매핑되는 제2 어드레스를 확인하며,
    상기 제2 어드레스가 상기 중복 제거 테이블의 등록되어 있으면, 해당 엔트리의 정보를 갱신하는 메모리 제어 장치.
  8. ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈
    제7항에 있어서,
    상기 컨트롤러는
    이레이즈 타입이 이레이즈/트림이면, 제2어드레스가 등록된 엔트리의 카운터 값을 확인하고,
    카운터 값이 2 이상이면 해당 엔트리의 카운터 값을 감소시키고,
    카운터 값이 1이면 해당하는 엔트리를 삭제하고, 상기 메모리 장치의 상기 제2 어드레스에 라이트된 데이터를 이레이즈하는 메모리 제어 장치.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    제8항에 있어서,
    상기 컨트롤러는
    이레이즈 타입이 가비지 컬렉션이면 상기 메모리 장치의 변경된 제2 어드레스에 데이터를 라이트하고, 상기 중복 제거 테이블의 해당 엔트리에 상기 변경된 제2 어드레스를 등록하여 갱신하는 메모리 제어 장치.
  10. 메모리 장치; 및
    상기 메모리 장치에 기능적으로 연결되는 컨트롤러를 포함하고,
    상기 컨트롤러는,
    무손실 압축 데이터와 해시 값 및 상기 무손실 압축 데이터와 상기 해시 값에 대응되는 비압축 데이터가 저장되는 상기 메모리 장치의 제2 어드레스를 저장하는 중복 제거 테이블을 포함하며,
    수신되는 제1 어드레스의 프로그램 데이터를 무손실 압축하고, 상기 중복 제거 테이블에서 무손실 압축 데이터가 검색되면 상기 검색된 상기 무손실 압축 데이터의 제2 어드레스를 상기 제1 어드레스에 맵핑하고 상기 메모리 장치에 프로그램 데이터를 라이트하지 않는 메모리 제어 장치.
  11. ◈청구항 11은(는) 설정등록료 납부시 포기되었습니다.◈
    제10항에 있어서,
    상기 컨트롤러는,
    상기 무손실 압축 데이터가 검색되지 않으면, 상기 중복 제거 테이블에서 상기 해시 값을 검색하며,
    상기 해시 값이 검색되면 상기 메모리 장치에서 상기 검색된 해시 값에 대응되는 제2 어드레스의 데이터를 상기 메모리 장치에서 리드하고, 상기 프로그램 데이터와 상기 리드된 데이터를 비교하며, 상기 두 데이터들이 동일하면, 상기 해시 값에 매핑된 제2 어드레스를 상기 제1 어드레스에 맵핑하는 메모리 제어 장치.
  12. 메모리 장치의 제어 방법에 있어서,
    수신되는 제1 어드레스의 프로그램 데이터를 압축 데이터로 변환하는 단계;
    압축 데이터, 상기 압축 데이터에 대응되는 비압축 데이터가 라이트된 상기 메모리 장치의 제2 어드레스 및 상기 데이터의 라이트 횟수를 나타내는 카운터 등을 포함하는 중복 제거 테이블에서 상기 변환된 압축 데이터를 검색하는 중복 제거 테이블 검색 단계; 및
    상기 중복 제거 테이블에서 상기 변환된 압축 데이터를 검색되면, 상기 중복 제거 테이블에서 상기 압축 데이터에 대응되는 제2 어드레스를 상기 제1 어드레스에 맵핑하고 상기 메모리 장치의 라이트 동작을 수행하지 않으며, 상기 중복 제거 테이블을 갱신하는 단계를 포함하는 방법.
  13. ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈
    제 12항에 있어서,
    상기 중복 제거 테이블에서 상기 변환된 압축 데이터가 검색되지 않으면 상기 프로그램 데이터를 상기 메모리 장치의 제2 어드레스에 라이트하고, 상기 중복 제거 테이블에 상기 압축 데이터 및 제2 어드레스를 포함하는 신규 엔트리를 등록하는 단계를 더 포함하는 방법.
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    제13항에 있어서,
    상기 압축 데이터는 프로그램 데이터가 해시 알고리듬에 의해 변환된 해시 값인 방법.
  15. ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈
    제14항에 있어서,
    상기 중복 제거 테이블을 갱신하는 단계는,
    상기 중복 제거 테이블에서 상기 해시 값이 검색되면, 상기 검색된 해시 값에 매핑된 제2 어드레스에 해당하는 데이터를 상기 메모리 장치에서 리드하는 단계; 및
    상기 수신된 프로그램 데이터와 상기 리드된 데이터가 동일하면 상기 제1 어드레스에 상기 제2 어드레스를 매핑하고 해당 엔트리의 카운터 값을 증가시키는 단계를 포함하는 방법.
  16. ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈
    제15항에 있어서,
    메모리 장치에 데이터를 프로그램하는 과정을 더 포함하며,
    상기 데이터를 프로그램하는 과정은,
    프로그램 데이터와 상기 리드된 데이터가 상이하면, 상기 메모리 장치에 상기 프로그램 데이터를 라이트하기 위한 제2 어드레스를 할당하는 단계;
    상기 메모리 장치의 상기 할당된 제2 어드레스에 상기 프로그램 데이터를 라이트하는 단계; 및
    상기 제2 어드레스를 상기 제1 어드레스에 맵핑하는 단계를 더 포함하는 방법.
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    제15항에 있어서,
    상기 중복 제거 테이블을 갱신하는 단계는,
    프로그램 데이터와 상기 리드된 데이터가 상이하면, 상기 메모리 장치에 상기 프로그램 데이터를 라이트하기 위한 제2 어드레스를 할당하는 단계;
    상기 메모리 장치의 상기 할당된 제2 어드레스에 상기 프로그램 데이터를 라이트하는 단계;
    상기 제2 어드레스를 상기 제1 어드레스에 맵핑하는 단계; 및
    상기 중복 제거 테이블에 상기 해시 값에 다른 제2 어드레스를 포함하는 엔트리를 신규추가 등록하는 단계를 더 포함하는 방법.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제17항에 있어서,
    상기 중복 제거 테이블을 갱신하는 단계는,
    상기 리드된 데이터가 상기 프로그램 데이터와 다르면, 다음 우선 순위의 카운트 값을 가지는 해시 값에 매핑된 상기 다른 제2 어드레스를 선택하는 단계; 및
    상기 메모리 장치의 상기 다른 제2 어드레스에 라이트된 데이터를 리드한 후, 리드된 데이터와 프로그램 데이터를 비교하는 단계로 진행하는 단계를 더 포함하는 방법.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    제15항에 있어서,
    이레이즈 명령이 발생되면, 이레이즈 데이터의 제1 어드레스에 매핑되는 제2 어드레스를 확인하는 단계; 및
    상기 제2 어드레스가 상기 중복 제거 테이블의 등록되어 있으면, 해당 엔트리의 정보를 갱신하는 단계를 더 포함하는 방법.
  20. ◈청구항 20은(는) 설정등록료 납부시 포기되었습니다.◈
    제19항에 있어서,
    상기 엔트리의 정보를 갱신하는 단계는
    이레이즈 타입이 이레이즈/트림이면, 제2어드레스가 등록된 엔트리의 카운터 값을 확인하는 단계;
    카운터 값이 2 이상이면 해당 엔트리의 카운터 값을 감소시키는 감소시키는 단계; 및,
    카운터 값이 1이면 해당하는 엔트리를 삭제하고, 상기 메모리 장치의 상기 제2 어드레스에 라이트된 데이터를 이레이즈하는 단계를 포함하는 방법.
  21. ◈청구항 21은(는) 설정등록료 납부시 포기되었습니다.◈
    제19항에 있어서,
    상기 엔트리의 정보를 갱신하는 단계는
    이레이즈 타입이 가비지 컬렉션이면 상기 메모리 장치의 변경된 제2 어드레스에 데이터를 라이트하는 단계; 및
    상기 중복 제거 테이블의 해당 엔트리에 상기 변경된 제2 어드레스를 등록하여 갱신하는 단계를 포함하는 방법.
  22. 삭제
KR1020160124551A 2016-09-28 2016-09-28 메모리 제어장치 및 방법 KR102559518B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160124551A KR102559518B1 (ko) 2016-09-28 2016-09-28 메모리 제어장치 및 방법
US15/607,148 US10460774B2 (en) 2016-09-28 2017-05-26 Apparatus and method capable of removing duplication write of data in memory
CN201710638493.5A CN107870740B (zh) 2016-09-28 2017-07-31 用于控制存储器的设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160124551A KR102559518B1 (ko) 2016-09-28 2016-09-28 메모리 제어장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180034842A KR20180034842A (ko) 2018-04-05
KR102559518B1 true KR102559518B1 (ko) 2023-07-26

Family

ID=61686590

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160124551A KR102559518B1 (ko) 2016-09-28 2016-09-28 메모리 제어장치 및 방법

Country Status (3)

Country Link
US (1) US10460774B2 (ko)
KR (1) KR102559518B1 (ko)
CN (1) CN107870740B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318202B2 (en) * 2017-03-20 2019-06-11 Via Technologies, Inc. Non-volatile memory apparatus and data deduplication method thereof
EP4343591A3 (en) * 2017-03-24 2024-06-19 Visa International Service Association Authentication system using secure multi-party computation
US10970205B2 (en) 2018-05-31 2021-04-06 Micron Technology, Inc. Logical-to-physical data structures for tracking logical block addresses indicative of a collision
KR102526526B1 (ko) * 2018-06-14 2023-04-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11061612B2 (en) * 2019-05-20 2021-07-13 Micron Technology, Inc. Internal communication interface management
US11537560B2 (en) * 2019-07-11 2022-12-27 Samsung Electronics Co., Ltd. Markers for hash code calculations on occupied portions of data blocks
KR20210039617A (ko) * 2019-10-02 2021-04-12 삼성전자주식회사 전자장치 및 그 제어방법
US11397793B2 (en) * 2019-12-03 2022-07-26 Microsoft Technology Licensing, Llc Delivering digital content for an application
US20210271650A1 (en) * 2020-03-02 2021-09-02 Silicon Motion, Inc. Method and apparatus for performing deduplication management with aid of command-related filter
KR20210151372A (ko) 2020-06-05 2021-12-14 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN112148220B (zh) * 2020-09-17 2024-03-19 合肥大唐存储科技有限公司 一种实现数据处理的方法、装置、计算机存储介质及终端
US20220229903A1 (en) * 2021-01-21 2022-07-21 Intuit Inc. Feature extraction and time series anomaly detection over dynamic graphs
US11928187B1 (en) * 2021-02-17 2024-03-12 Bank Of America Corporation Media hosting system employing a secured video stream
CN113190468B (zh) * 2021-04-21 2022-11-25 山东英信计算机技术有限公司 一种l2p表压缩方法、装置、设备及可读存储介质
KR20230069657A (ko) 2021-11-12 2023-05-19 에스케이하이닉스 주식회사 메모리 시스템, 그것의 동작 방법 및 데이터 처리 시스템
US20230153023A1 (en) * 2021-11-15 2023-05-18 Samsung Electronics Co., Ltd. Storage device and method performing processing operation requested by host
KR102467372B1 (ko) * 2022-01-06 2022-11-14 삼성전자주식회사 스토리지 장치 및 이의 동작 방법
US11861166B2 (en) * 2022-04-18 2024-01-02 Dell Products L.P. System and method for network interface controller based data deduplication

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140115258A1 (en) 2012-10-18 2014-04-24 Oracle International Corporation System and method for managing a deduplication table

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312066B2 (en) * 2010-11-30 2012-11-13 Telefonaktiebolaget L M Ericsson (Publ) Hash collision resolution with key compression in a MAC forwarding data structure
KR101229851B1 (ko) 2011-12-27 2013-02-05 한국과학기술원 데이터의 병렬적 중복제거 시스템
CN103530062B (zh) * 2012-07-03 2016-12-21 群联电子股份有限公司 数据存储方法、存储器控制器与存储器存储装置
US20140115260A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation System and method for prioritizing data in a cache
US9521198B1 (en) * 2012-12-19 2016-12-13 Springpath, Inc. Systems and methods for implementing an enterprise-class converged compute-network-storage appliance
US9424267B2 (en) * 2013-01-02 2016-08-23 Oracle International Corporation Compression and deduplication layered driver
KR20140114515A (ko) * 2013-03-15 2014-09-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
CN104246722B (zh) 2013-03-29 2017-02-22 株式会社东芝 用于基于哈希表排除数据重复的存储***,存储控制器及方法
CN103246484B (zh) * 2013-05-03 2016-01-27 华为技术有限公司 一种数据存储方法、装置及***
KR20140141348A (ko) 2013-05-31 2014-12-10 삼성전자주식회사 호스트 장치와 저장 장치가 연계하여 중복 제거 프로세스를 수행하는 방법 및 스토리지 시스템
KR20150067583A (ko) * 2013-12-10 2015-06-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
CN103810297B (zh) * 2014-03-07 2017-02-01 华为技术有限公司 基于重删技术的写方法、读方法、写装置和读装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140115258A1 (en) 2012-10-18 2014-04-24 Oracle International Corporation System and method for managing a deduplication table

Also Published As

Publication number Publication date
US10460774B2 (en) 2019-10-29
CN107870740A (zh) 2018-04-03
KR20180034842A (ko) 2018-04-05
US20180090184A1 (en) 2018-03-29
CN107870740B (zh) 2021-01-08

Similar Documents

Publication Publication Date Title
KR102559518B1 (ko) 메모리 제어장치 및 방법
CN107391027B (zh) 廉价磁盘冗余阵列存储设备及其管理方法
KR102653401B1 (ko) 메모리 시스템 및 그의 동작방법
KR102529696B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102615593B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US10866898B2 (en) Method and apparatus for migrating data between nonvolatile main memory and first or second caches
KR20190123502A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102611292B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102553170B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200013897A (ko) 컨트롤러 및 컨트롤러의 동작방법
KR102666489B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102571629B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102475798B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102671760B1 (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20190128392A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102612918B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
CN110825316A (zh) 控制器及该控制器的操作方法
KR20220086532A (ko) 메모리 시스템
KR102530262B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102593552B1 (ko) 컨트롤러, 메모리 시스템 및 그의 동작 방법
US20190205249A1 (en) Controller, operating method thereof and data processing system including the controller
KR102234725B1 (ko) 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
CN110825656A (zh) 存储器***及其操作方法
KR20190102790A (ko) 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템
US11126545B2 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right