KR20200143611A - 스토리지 장치 및 스토리지 장치의 동작 방법 - Google Patents
스토리지 장치 및 스토리지 장치의 동작 방법 Download PDFInfo
- Publication number
- KR20200143611A KR20200143611A KR1020190070923A KR20190070923A KR20200143611A KR 20200143611 A KR20200143611 A KR 20200143611A KR 1020190070923 A KR1020190070923 A KR 1020190070923A KR 20190070923 A KR20190070923 A KR 20190070923A KR 20200143611 A KR20200143611 A KR 20200143611A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- hash
- controller
- nonvolatile memory
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 스토리지 장치에 관한 것이다. 본 발명의 스토리지 장치는 불휘발성 메모리 장치, 그리고 외부의 호스트 장치로부터 쓰기 명령, 데이터 및 데이터와 연관된 서명(signature)을 수신하고, 데이터로부터 제1 해시를 생성하고, 서명으로부터 제2 해시를 생성하고, 그리고 제1 해시 및 제2 해시에 기반하여 해시 데이터를 생성하도록 구성되는 제어기를 포함한다. 제어기는 해시 데이터를 이용하여 데이터에 대응하는 데이터가 불휘발성 메모리 장치에 이미 기입되어 있는지 검출하도록 더 구성된다.
Description
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 신뢰성을 유지하면서 마모를 감소시킴으로써 향상된 수명을 갖는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공하는 데에 있다.
스토리지 장치는 컴퓨터, 스마트 폰, 스마트 패드 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 메모리 카드 등과 같이 반도체 메모리, 특히 불휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
불휘발성 메모리는 읽기 전용 메모리(Read Only Memory, ROM)), 프로그램 가능한 ROM(Programmable ROM, PROM), 전기적으로 프로그램 가능한 ROM (Electrically Programmable ROM, EPROM), 전기적으로 소거 및 프로그램 가능한 ROM (Electrically Erasable and Programmable ROM, EEPROM), 플래시 메모리, 상 변화 랜덤 액세스 메모리(Phase-change Random Access Memory, PRAM), 자기 RAM (Magnetic RAM, MRAM), 저항성 RAM (Resistive RAM, RRAM), 강유전체 RAM (Ferroelectric RAM, FRAM) 등을 포함한다.
스토리지 장치의 불휘발성 메모리는 메모리 셀들을 포함하며, 메모리 셀들의 상태를 변화시킴으로써 데이터를 저장할 수 있다. 메모리 셀들에 데이터를 기입하는 횟수가 증가할수록, 메모리 셀들의 신뢰성이 감소한다. 이러한 현상은 메모리 셀들이 마모되는 것으로 여겨질 수 있다.
메모리 셀들의 신뢰성이 일정 수준 이하로 감소하면, 불휘발성 메모리는 더이상 데이터의 신뢰성을 보장할 수 없다. 즉, 불휘발성 메모리 및 스토리지 장치의 수명을 늘이기 위하여, 메모리 셀들의 마모를 줄이기 위한 연구가 요구되고 있다.
본 발명의 목적은 데이터의 신뢰성을 보장하면서 메모리 셀들의 마모를 줄여 향상된 수명을 갖는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공하는 데에 있다.
불휘발성 메모리 장치, 그리고 외부의 호스트 장치로부터 쓰기 명령, 데이터 및 데이터와 연관된 서명(signature)을 수신하고, 데이터로부터 제1 해시를 생성하고, 서명으로부터 제2 해시를 생성하고, 그리고 제1 해시 및 제2 해시에 기반하여 해시 데이터를 생성하도록 구성되는 제어기를 포함한다. 제어기는 해시 데이터를 이용하여 데이터에 대응하는 데이터가 불휘발성 메모리 장치에 이미 기입되어 있는지 검출하도록 더 구성된다.
불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하도록 구성되는 스토리지 장치의 동작 방법은, 제어기가 외부의 호스트 장치로부터 쓰기 명령, 데이터 및 데이터와 연관된 서명을 수신하는 단계, 제어기가 데이터 및 서명으로부터 해시 데이터를 생성하는 단계, 해시 데이터 및 불휘발성 메모리 장치에 이전에 기입된 데이터 사이의 유사도가 문턱값 이상일 때, 제어기가 데이터의 불휘발성 메모리 장치로의 기입을 생략하는 단계, 그리고 해시 데이터 및 불휘발성 메모리 장치에 이전에 기입된 데이터 사이의 유사도가 문턱값보다 작을 때, 제어기가 데이터의 불휘발성 메모리 장치에 기입하는 단계를 포함한다.
불휘발성 메모리 장치, 그리고 불휘발성 메모리 장치를 제어하도록 구성되는 제어기를 포함한다. 제어기는 외부의 호스트 장치로부터 쓰기 명령, 논리 주소, 데이터 및 데이터와 연관된 서명을 수신하도록 구성되는 수신 블록, 수신 블록으로부터 데이터 및 서명을 수신하고, 서명을 이용하여 데이터의 무결성을 검사하도록 구성되는 서명 검사 블록, 서명 검사 블록으로부터 데이터 및 서명을 수신하고, 데이터 및 서명으로부터 해시 데이터를 생성하도록 구성되는 해시 생성 블록, 불휘발성 메모리 장치에 이전에 기입된 이전 데이터와 연관된 이전 해시 데이터를 저장하도록 구성되는 해시 데이터 블록, 이전 데이터의 이전 논리 주소 및 이전 데이터가 기입된 불휘발성 메모리 장치의 저장 공간의 이전 물리 주소 사이의 매핑 정보를 저장하는 매핑 정보 블록, 그리고 해시 생성 블록으로부터 데이터 및 해시 데이터를 수신하고, 해시 데이터 및 해시 데이터 블록의 이전 해시 데이터를 비교하여 유사도를 판단하고, 유사도에 따라 쓰기 데이터 히트 및 쓰기 데이터 미스 중 하나를 판단하도록 구성되는 제어 블록을 포함한다. 쓰기 데이터 히트가 판단된 때에, 제어 블록은 데이터의 논리 주소가 이전 데이터의 이전 물리 데이터와 매핑되도록 매핑 정보 블록을 갱신하도록 더 구성된다. 쓰기 데이터 미스가 판단된 때에, 제어기는 데이터를 불휘발성 메모리 장치에 기입하고, 그리고 논리 주소가 데이터가 기입된 불휘발성 메모리 장치의 저장 공간의 물리 주소와 매핑되도록 매핑 정보 블록을 갱신하도록 더 구성된다.
본 발명에 따르면, 스토리지 장치는 데이터 및 서명으로부터 해시 데이터를 생성하고, 해시 데이터를 이용하여 중복 쓰기를 방지한다. 해시 데이터의 고유성이 높아지므로, 중복 쓰기의 방지로 인해 데이터가 소실되는 것이 방지되므로, 신뢰성을 유지하면서 마모를 줄이는 스토리지 장치 및 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 3은 도 1의 컴퓨팅 시스템을 더 상세히 보여주는 블록도이다.
도 4는 스토리지 장치의 제어기의 해시 생성 블록의 예를 보여주는 블록도이다.
도 5는 제어 블록이 쓰기 데이터 히트 또는 쓰기 데이터 미스를 판단하는 방법의 예를 보여주는 순서도이다.
도 6은 스토리지 장치에서 쓰기 동작 시에 쓰기 데이터 미스가 발생하는 예를 보여준다.
도 7은 도 6에 이어 스토리지 장치에서 쓰기 동작 시에 쓰기 데이터 미스가 발생하는 예를 보여준다.
도 8은 도 7에 이어 스토리지 장치에서 쓰기 동작 시에 쓰기 데이터 히트가 발생하는 예를 보여준다.
도 9는 도 8에 이어 스토리지 장치에서 쓰기 데이터 히트가 발생한 데이터에 대한 읽기 동작이 수행되는 예를 보여준다.
도 10은 도 9에 이어, 둘 이상의 매핑 정보와 연관된 데이터가 갱신되는 예를 보여준다.
도 11은 본 발명의 추가 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 12는 스토리지 장치의 동작 방법의 제1 예를 보여주는 순서도이다.
도 13은 스토리지 장치의 동작 방법의 제2 예를 보여주는 순서도이다.
도 2는 도 1의 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 3은 도 1의 컴퓨팅 시스템을 더 상세히 보여주는 블록도이다.
도 4는 스토리지 장치의 제어기의 해시 생성 블록의 예를 보여주는 블록도이다.
도 5는 제어 블록이 쓰기 데이터 히트 또는 쓰기 데이터 미스를 판단하는 방법의 예를 보여주는 순서도이다.
도 6은 스토리지 장치에서 쓰기 동작 시에 쓰기 데이터 미스가 발생하는 예를 보여준다.
도 7은 도 6에 이어 스토리지 장치에서 쓰기 동작 시에 쓰기 데이터 미스가 발생하는 예를 보여준다.
도 8은 도 7에 이어 스토리지 장치에서 쓰기 동작 시에 쓰기 데이터 히트가 발생하는 예를 보여준다.
도 9는 도 8에 이어 스토리지 장치에서 쓰기 데이터 히트가 발생한 데이터에 대한 읽기 동작이 수행되는 예를 보여준다.
도 10은 도 9에 이어, 둘 이상의 매핑 정보와 연관된 데이터가 갱신되는 예를 보여준다.
도 11은 본 발명의 추가 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 12는 스토리지 장치의 동작 방법의 제1 예를 보여주는 순서도이다.
도 13은 스토리지 장치의 동작 방법의 제2 예를 보여주는 순서도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템은 호스트 장치(10) 및 스토리지 장치(20)를 포함할 수 있다. 호스트 장치(10)는 컴퓨터, 노트북 컴퓨터, 스마트폰, 스마트패드, 스마트시계 등과 같은 다양한 컴퓨팅 장치들을 포함할 수 있다.
스토리지 장치(20)는 호스트 장치(10)에 연결되고, 호스트 장치(10)의 요청에 따라 데이터를 저장하거나 또는 저장된 데이터를 읽어 호스트 장치(10)로 출력하도록 구성된다. 스토리지 장치(20)는 HDD, SSD, 임베디드 스토리지 장치, 휴대용 메모리 등을 포함할 수 있다.
스토리지 장치(20)는 제어기(30) 및 불휘발성 메모리 장치(40)를 포함할 수 있다. 제어기(30)는 호스트 장치(10)의 요청에 따라 불휘발성 메모리 장치(40)에 데이터를 기입하거나 또는 불휘발성 메모리 장치(40)로부터 데이터를 읽고, 읽혀진 데이터를 호스트 장치(10)에 제공할 수 있다. 제어기(30)는 불휘발성 메모리 장치(40) 또는 스토리지 장치(20)를 관리하기 위한 다양한 배경 동작을 수행할 수 있다.
불휘발성 메모리 장치(40)는 전원이 차단된 때에도 이전에 기입된 데이터를 유지할 수 있다. 불휘발성 메모리 장치(40)는 플래시 메모리, 상 변화 랜덤 액세스 메모리(Phase-change Random Access Memory)(PRAM), 자기 RAM(Magnetic RAM)(MRAM), 저항성 RAM(Resistive RAM)(RRAM), 강유전체 RAM(Ferroelectric RAM)(FRAM) 등을 포함할 수 있다.
호스트 장치(10)가 스토리지 장치(20)에 데이터(DATA)를 기입할 때, 호스트 장치(10)는 데이터(DATA)로부터 서명(SIG)을 생성할 수 있다. 서명(SIG)의 사이즈는 데이터(DATA)의 사이즈보다 작을 수 있다. 호스트 장치(10)는 데이터(DATA) 및 서명(SIG)을 쓰기 명령 및 주소(예를 들어, 논리 주소)와 함께 스토리지 장치(20)로 전송할 수 있다.
스토리지 장치(20)의 제어기(30)는 호스트 장치(10)로부터 데이터(DATA) 및 서명(SIG)을 쓰기 명령 및 논리 주소와 함께 수신할 수 있다. 제어기(30)는 데이터(DATA)로부터 제1 해시(H1)를 생성하고, 그리고 서명(SIG)으로부터 제2 해시(H2)를 생성할 수 있다. 제1 해시(H1)의 사이즈는 데이터(DATA)의 사이즈보다 작고, 제2 해시(H2)의 사이즈는 서명(SIG)의 사이즈보다 작을 수 있다.
제1 해시(H1)는 데이터(DATA)로부터 생성되므로, 제1 해시(H1)의 고유한 특색을 포함할 수 있다. 제2 해시(H2)는 서명(SIG)으로부터 생성되고, 서명(SIG)은 데이터(DATA)로부터 생성되므로, 제2 해시(H2)는 데이터(DATA)의 고유한 특색을 포함할 수 있다.
제어기(30)는 제1 해시(H1) 및 제2 해시(H2)로부터 해시 데이터(HD)를 생성할 수 있다. 해시 데이터(HD)는 제1 해시(H1) 및 제2 해시(H2)로부터 생성되므로, 데이터(DATA)의 고유한 특색을 포함할 수 있다. 제어기(30)는 해시 데이터(HD)를 이용하여 중복 쓰기를 방지할 수 있다.
예를 들어, 제어기(30)는 해시 데이터(HD)를 불휘발성 메모리 장치(40)에 이전에 기입된 데이터(이전 데이터)의 해시 데이터(이전 해시 데이터)와 비교할 수 있다.
해시 데이터(HD)가 이전 해시 데이터와 동일하면, 제어기(30)는 데이터(DATA)가 이전 데이터와 동일하며, 데이터(DATA)의 쓰기는 중복 쓰기로 판단할 수 있다. 제어기(30)는 데이터(DATA)를 불휘발성 메모리 장치(40)에 기입하지 않고, 이전 데이터로서 불휘발성 메모리 장치(40)에 기입되어 있음을 가리키는 정보를 저장할 수 있다.
해시 데이터(HD)가 이전 해시 데이터와 동일하지 않으면, 제어기(30)는 데이터(DATA)가 이전 해시 데이터와 동일하지 않으면, 제어기(30)는 데이터(DATA)가 이전 데이터와 동일하지 않음을 판단할 수 있다. 제어기(30)는 데이터(DATA)를 불휘발성 메모리 장치(40)에 기입하고, 데이터(DATA)가 기입된 불휘발성 메모리 장치(40)의 저장 공간의 주소(예를 들어, 물리 주소)를 저장할 수 있다.
본 발명에 따르면, 동일한 데이터가 불휘발성 메모리 장치(40)에 중복으로 기입되는 것이 방지된다. 따라서, 불휘발성 메모리 장치(40)의 마모가 감소하고, 불휘발성 메모리 장치(40) 및 스토리지 장치(20)의 수명이 향상될 수 있다.
또한, 본 발명에 따르면, 데이터(DATA) 및 서명(SIG)으로부터 해시 데이터(HD)가 생성된다. 따라서, 데이터(DATA)로부터만 해시 데이터를 생성할 때와 비교하여 해시 데이터(HD)는 데이터(DATA)의 고유한 특색을 더 많이 나타낼 수 있다.
해시 데이터(HD)가 데이터(DATA)의 고유성을 나타내는 레벨이 특정 값보다 낮으면, 서로 다른 데이터로부터 동일한 해시 데이터(HD)가 생성될 수 있다. 이 경우, 데이터(DATA)가 이전 데이터와 서로 다른 경우에도 데이터(DATA)가 중복 쓰기 방지에 의해 불휘발성 메모리 장치(40)에 기입되지 않을 수 있다. 즉, 데이터(DATA)가 소실될 수 있다.
도 1을 참조하여 설명된 바와 같이, 데이터(DATA) 및 서명(SIG) 모두로부터 해시 데이터(HD)가 생성되면, 해시 데이터(HD)는 데이터(DATA)의 고유성을 특정 값 이상으로 나타낼 수 있다. 따라서, 중복 쓰기 방지가 적용되어도 데이터(DATA)가 소실되는 것이 방지되며, 스토리지 장치(20)의 신뢰성이 유지 또는 향상된다.
서명(SIG)은 데이터(DATA)로부터 생성되는 다양한 형태의 정보일 수 있다. 예를 들어, 서명(SIG)은 데이터(DATA)의 무결성을 검사하기 위해 사용되는 정보일 수 있으며, 순환 중복 검사(CRC)(Cyclic Redundancy Check) 코드, 체크섬(checksum) 코드, 에러 검출 코드(EDC)(error detection code), 에러 정정 코드(ECC)(error correction code) 등을 포함할 수 있다. 서명(SIG)은 데이터(DATA)의 특색을 나타내는 정보일 수 있으며, 해시를 포함할 수 있다.
예시적으로, 데이터(DATA) 및 해시 데이터(HD)는 불휘발성 메모리 장치(40)에 기입되는 것으로 도시된다. 데이터(DATA)는 중복 쓰기가 아닌 때에 불휘발성 메모리 장치(40)에 기입될 수 있다. 해시 데이터(HD)는 백업을 위해 불휘발성 메모리 장치(40)에 기입될 수 있다.
도 2는 도 1의 스토리지 장치(20)의 동작 방법을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S110 단계에서, 스토리지 장치(20)의 제어기(30)는 호스트 장치(10)로부터 데이터(DATA) 및 서명(SIG)을 쓰기 명령 및 논리 주소와 함께 수신할 수 있다.
S120 단계에서, 제어기(30)는 서명(SIG)을 이용하여 데이터(DATA)의 무결성(integrity)을 검사할 수 있다. 데이터(DATA)에 결함이 있는 경우, 제어기(30)는 결함을 정정하거나 또는 호스트 장치(10)에 재전송을 요청할 수 있다.
데이터(DATA)에 결함이 없거나 정정된 경우, S130 단계가 수행된다. S130 단계에서, 제어기(30)는 데이터(DATA) 및 서명(SIG)에 기반하여 해시 데이터(HD)를 생성할 수 있다. S140 단계에서, 제어기(30)는 해시 데이터(HD)를 이용하여 쓰기 데이터 히트를 검출할 수 있다.
예를 들어, 해시 데이터(HD)가 이전 해시 데이터와 동일한 때, 제어기(30)는 데이터(DATA)가 이전 데이터와 동일함을 판단하고 쓰기 데이터 히트(write data hit)를 검출할 수 있다. 해시 데이터(HD)가 이전 해시 데이터와 다를 때, 제어기(30)는 데이터(DATA)가 이전 데이터와 다름을 판단하고 쓰기 데이터 미스(write data miss)를 검출할 수 있다.
도 3은 도 1의 컴퓨팅 시스템을 더 상세히 보여주는 블록도이다. 도 3을 참조하면, 컴퓨팅 시스템은 호스트 장치(100) 및 스토리지 장치(200)를 포함할 수 있다. 호스트 장치(100)는 도 1의 호스트 장치(10)에 대응할 수 있다. 호스트 장치(100)는 프로세싱 블록(110), 서명 생성 블록(120), 전송 블록(130), 수신 블록(140), 그리고 서명 검사 블록(150)을 포함할 수 있다.
프로세싱 블록(110)은 응용, 운영체제, 장치 드라이버 등과 같은 호스트 장치(100)의 상위 계층을 포함할 수 있다. 프로세싱 블록(110)은 집적 회로로 구현된 중앙 처리 장치(CPU) 또는 응용 프로세서(AP), 그리고 중앙 처리 장치(CPU) 또는 응용 프로세서(AP)에서 실행되는 소프트웨어들을 포함할 수 있다.
호스트 장치(100)의 쓰기 동작
스토리지 장치(200)에 데이터를 기입하는 쓰기 동작 시에, 프로세싱 블록(110)은 제1 쓰기 데이터(WD1)를 생성할 수 있다. 프로세싱 블록(110)은 제1 쓰기 데이터(WD1)를 서명 생성 블록(120)에 전달할 수 있다.
서명 생성 블록(120)은 데이터를 포함하는 제1 쓰기 데이터(WD1)로부터 제1 서명(S1)을 생성할 수 있다. 데이터는 도 1 및 도 2를 참조하여 설명된 데이터(DATA)에 대응할 수 있다. 제1 서명(S1)은 도 1 및 도 2를 참조하여 설명된 서명(SIG)에 대응할 수 있다. 서명 생성 블록(120)은 데이터 및 제1 서명(S1)을 포함하는 제2 쓰기 데이터(WD2)를 전송 블록(130)에 전달할 수 있다.
전송 블록(130)은 스토리지 장치(200)와 약속된 통신 프로토콜에 따라, 데이터 및 제1 서명(S1)을 포함하는 제2 쓰기 데이터(WD2)를 제3 쓰기 데이터(WD3)로 변환할 수 있다. 전송 블록(130)은 제3 쓰기 데이터(WD3)와 함께 프로세싱 블록(110)으로부터 전달되는 쓰기 명령 및 논리 주소를 스토리지 장치(200)로 전송할 수 있다. 예를 들어, 쓰기 명령 및 논리 주소가 전달되는 경로는 점선 화살표로 표시된다.
호스트 장치(100)의 읽기 동작
스토리지 장치(200)로부터 데이터를 읽는 읽기 동작 시에, 프로세싱 블록(110)은 읽기 명령 및 논리 주소를 전송 블록(130)에 전달할 수 있다. 예를 들어, 읽기 명령 및 논리 주소가 전달되는 경로는 점선 화살표로 표시된다. 전송 블록(130)은 읽기 명령 및 논리 주소를 스토리지 장치(200)로 전송할 수 있다. 읽기 명령 및 논리 주소에 응답하여, 스토리지 장치(200)는 데이터 및 제2 서명(S2)을 포함하는 제4 읽기 데이터(RD4)를 출력할 수 있다.
수신 블록(140)은 스토리지 장치(200)로부터 데이터 및 제2 서명(S2)을 포함하는 제4 읽기 데이터(RD4)를 수신할 수 있다. 수신 블록(140)은 호스트 장치(100)의 내부의 통신 프로토콜에 따라, 데이터 및 제2 서명(S2)을 포함하는 제4 읽기 데이터(RD4)를 제5 읽기 데이터(RD5)로 변환할 수 있다. 수신 블록(140)은 데이터 및 제2 서명(S2)을 포함하는 제5 읽기 데이터(RD5)를 서명 검사 블록(150)으로 전달할 수 있다.
서명 검사 블록(150)은 제5 읽기 데이터(RD5)로부터 데이터 및 제2 서명(S2)을 식별할 수 있다. 서명 검사 블록(150)은 제2 서명(S2)을 이용하여 데이터의 무결성을 검사할 수 있다. 데이터에 결함이 없거나 결함이 정정된 경우, 서명 검사 블록(150)은 데이터를 포함하는 제6 읽기 데이터(RD6)를 프로세싱 블록(110)에 전달할 수 있다.
데이터에 결함이 있고 정정 불가능한 경우, 서명 검사 블록은 읽기 실패가 발생하였음을 프로세싱 블록(110)에 알릴 수 있다. 프로세싱 블록(110)은 읽기 실패 처리 알고리즘에 따라, 읽기 실패에 따른 후속 프로세스를 수행할 수 있다.
스토리지 장치(200)는 도 1의 스토리지 장치(20)에 대응할 수 있다. 스토리지 장치(200)는 제어기(300) 및 불휘발성 메모리 장치(400)를 포함할 수 있다. 제어기(300)는 도 1의 제어기(30)에 대응하고, 불휘발성 메모리 장치(400)는 도 1의 불휘발성 메모리 장치(40)에 대응할 수 있다.
제어기(300)는 수신 블록(310), 서명 검사 블록(320), 해시 생성 블록(330), 제어 블록(340), 해시 데이터 블록(350), 매핑 정보 블록(360), 서명 생성 블록(370), 그리고 전송 블록(380)을 포함할 수 있다.
스토리지 장치(200)의 쓰기 동작
호스트 장치(100)로부터 데이터 및 제1 서명(S1)을 포함하는 제3 쓰기 데이터(WD3)가 쓰기 명령 및 논리 주소와 함께 수신되어 쓰기 동작이 트리거될 때, 수신 블록(310)은 데이터 및 제1 서명(S1)을 포함하는 제3 쓰기 데이터(WD3)를 제어기(300)의 내부의 통신 프로토콜에 따라 제4 쓰기 데이터(WD4)로 변환할 수 있다.
수신 블록(310)은 데이터 및 제1 서명(S1)을 포함하는 제4 쓰기 데이터(WD4)를 서명 검사 블록(320)에 전달할 수 있다. 또한, 수신 블록(310)은 읽기 명령 및 논리 주소를 제어 블록(340)에 전달할 수 있다. 예를 들어, 쓰기 명령 및 논리 주소가 전달되는 경로는 점선 화살표로 표시된다.
서명 검사 블록(320)은 제4 쓰기 데이터(WD4)로부터 데이터 및 제1 서명(S1)을 식별할 수 있다. 서명 검사 블록(320)은 제1 서명(S1)을 이용하여 데이터의 무결성을 검사할 수 있다. 데이터에 결함이 없거나 결함이 정정된 경우, 서명 검사 블록(320)은 데이터 및 제1 서명(S1)을 포함하는 제5 쓰기 데이터(WD5)를 해시 생성 블록에 전달할 수 있다. 데이터에 결함이 있고 결함이 정정 불가능한 경우, 제어기(300)는 호스트 장치(100)에 재전송을 요청하거나 또는 전송 에러를 알릴 수 있다.
해시 생성 블록(330)은 데이터 및 제1 서명(S1)을 포함하는 제5 쓰기 데이터(WD5)로부터 해시 데이터(HD)를 생성할 수 있다. 해시 생성 블록(330)은 데이터 및 해시 데이터(HD)를 포함하는 제6 쓰기 데이터(WD6)를 제어 블록(340)에 전달할 수 있다.
제어 블록(340)은 해시 데이터(HD)를 이용하여 해시 데이터 블록(350)을 검색할 수 있다. 해시 데이터 블록(350)은 이전에 불휘발성 메모리 장치(400)에 기입된 데이터(이전 데이터)의 해시 데이터(이전 해시 데이터)를 저장할 수 있다. 제어 블록(340)은 이전 해시 데이터가 해시 데이터(HD)와 동일한지 판단할 수 있다.
이전 해시 데이터와 해시 데이터(HD)가 동일하면, 제어 블록(340)은 쓰기 데이터 히트를 판단할 수 있다. 예를 들어, 각 쓰기 동작에서 기입되는 데이터는 하나의 데이터 청크(chunk)일 수 있고, 하나의 데이터 청크로부터 생성되는 해시 데이터는 하나의 해시 데이터 청크일 수 있다.
이전에 복수의 쓰기 동작들이 수행되었으면, 복수의 데이터 청크들이 불휘발성 메모리 장치(400)에 기입되었고, 그리고 복수의 해시 데이터 청크들이 해시 데이터 블록(350)에 저장된다. 복수의 해시 데이터 청크들 중에서 하나의 해시 데이터 청크가 해시 데이터(HD)와 동일하면, 제어 블록(340)은 쓰기 데이터 히트를 판단할 수 있다.
복수의 해시 데이터 청크들 중에서 해시 데이터(HD)와 동일한 해시 데이터 청크가 존재하지 않으면, 제어 블록(340)은 쓰기 데이터 미스를 판단할 수 있다. 쓰기 데이터 미스가 판단되면, 제어 블록(340)은 데이터를 포함하는 제7 쓰기 데이터(WD7)를 불휘발성 메모리 장치(400)에 기입할 수 있다.
쓰기 데이터 히트가 판단되면, 제어 블록(340)은 데이터를 포함하는 제7 쓰기 데이터(WD7)를 불휘발성 메모리 장치(400)에 기입하는 것을 생략할 수 있다. 따라서, 제7 쓰기 데이터(WD7)의 기입은 옵션(OP)일 수 있다. 예를 들어, 제7 쓰기 데이터(WD7)는 불휘발성 메모리 장치(400)와 통신하기 위한 프로토콜에 따라 변환된 형태를 가질 수 있다.
매핑 정보 블록(360)은 각 쓰기 동작 시에 호스트 장치(100)로부터 수신된 논리 주소, 데이터가 기입된 불휘발성 메모리 장치(400)의 물리 주소, 그리고 해시 데이터 블록(350)에서 대응하는 해시 데이터(예를 들어, 하나의 해시 데이터 청크)가 저장된 위치(예를 들어, 저장 공간의 주소)를 서로 연관하여 저장할 수 있다.
쓰기 데이터 미스가 판단된 때에, 제어 블록(340)은 해시 데이터(HD)를 해시 데이터 블록(350)에 저장(또는 추가)할 수 있다. 제어 블록(340)은 제7 쓰기 데이터(WD7)가 기입된 불휘발성 메모리 장치(400)의 물리 주소 및 해시 데이터(HD)가 저장된 위치의 정보를 호스트 장치(100)로부터 수신된 논리 주소와 연관하여 매핑 정보 블록(360)에 저장할 수 있다.
쓰기 데이터 히트가 판단된 때에, 제어 블록(340)은 해시 데이터(HD)를 해시 데이터 블록(350)에 저장(또는 추가)하지 않을 수 있다. 제어 블록(340)은 이전 데이터가 기입된 불휘발성 메모리 장치(400)의 물리 주소 및 이전 해시 데이터가 저장된 위치의 정보를 호스트 장치(100)로부터 수신된 논리 주소와 연관하여 매핑 정보 블록(360)에 저장할 수 있다.
스토리지 장치(200)의 읽기 동작
호스트 장치(100)로부터 읽기 명령 및 논리 주소가 수신되어 읽기 동작이 트리거될 때, 수신 블록(310)은 읽기 명령 및 논리 주소를 제어 블록(340)에 전달할 수 있다. 예를 들어, 읽기 명령 및 논리 주소가 전달되는 경로는 점선 화살표로 표시된다.
제어 블록(340)은 매핑 정보 블록(360)을 참조하여, 호스트 장치(100)로부터 수신된 논리 주소와 연관된 물리 주소를 검색할 수 있다. 제어 블록(340)은 물리 주소를 이용하여 불휘발성 메모리 장치(400)로부터 데이터를 포함하는 제1 읽기 데이터(RD1)를 읽을 수 있다.
제어 블록(340)은 제어기(300)의 내부의 통신 프로토콜에 따라, 데이터를 포함하는 제1 읽기 데이터(RD1)를 제2 읽기 데이터(RD2)로 변환할 수 있다. 제어 블록(340)은 데이터를 포함하는 제2 읽기 데이터(RD2)를 서명 생성 블록(370)에 전달할 수 있다.
서명 생성 블록(370)은 제2 읽기 데이터(RD2)의 데이터로부터 제2 서명(S2)을 생성할 수 있다. 서명 생성 블록(370)은 데이터 및 제2 서명(S2)을 포함하는 제3 읽기 데이터(RD3)를 전송 블록(380)에 전달할 수 있다.
전송 블록(380)은 호스트 장치(100)와 약속된 통신 프로토콜에 따라, 데이터 및 제2 서명(S2)을 포함하는 제3 읽기 데이터(RD3)를 제4 읽기 데이터(RD4)로 변환할 수 있다. 전송 블록(380)은 데이터 및 제2 서명(S2)을 포함하는 제4 읽기 데이터(RD4)를 호스트 장치(100)로 전송할 수 있다.
예시적으로, 해시 데이터 블록(350)은 제어기(300)의 내부 또는 외부에 제공되는 랜덤 액세스 메모리에 저장되도록 구현될 수 있다. 매핑 정보 블록(360)은 제어기(300)의 내부 또는 외부에 제공되는 랜덤 액세스 메모리에 저장되도록 구현될 수 있다. 해시 데이터 블록(350) 및 매핑 정보 블록(360)은 동일한 메모리 또는 서로 다른 메모리에 저장되도록 구현될 수 있다.
도 4는 스토리지 장치(200)의 제어기(300)의 해시 생성 블록(330)의 예를 보여주는 블록도이다. 도 3 및 도 4를 참조하면, 해시 생성 블록(330)은 데이터(DATA) 및 제1 서명(S1)을 포함하는 제5 쓰기 데이터(WD5)를 수신할 수 있다.
해시 생성 블록(330)은 제1 해시 생성기(331), 제2 해시 생성기(333), 그리고 조합 논리(335)를 포함할 수 있다. 제1 해시 생성기(331)는 데이터(DATA)에 대해 해시 함수(hash function)를 적용하는 해시 동작을 통해 제1 해시(H1)를 생성할 수 있다. 제1 해시(H1)의 사이즈는 데이터(DATA)의 사이즈보다 작을 수 있다.
제2 해시 생성기(333)는 제1 서명(S1)에 해시 함수를 적용하는 해시 동작을 통해 제2 해시(H2)를 생성할 수 있다. 제2 해시(H2)의 사이즈는 제1 서명(S1)의 사이즈보다 작을 수 있다.
조합 논리(335)는 제1 해시(H1) 및 제2 해시(H2)를 조합하여 해시 데이터(HD)를 생성할 수 있다. 예를 들어, 조합 논리(335)는 제1 해시(H1) 및 제2 해시(H2)를 순차적으로 또는 역순으로 나열함으로써, 또는 나열된 결과에 대해 해시 함수를 적용하는 해시 동작을 수행함으로써 해시 데이터(HD)를 생성할 수 있다.
다른 예로서, 조합 논리(335)는 제1 해시(H1) 및 제2 해시(H2)에 대해 논리 연산(예를 들어, 배타적 논리합 등)을 수행하거나, 또는 논리 연산을 수행한 결과에 대해 해시 함수를 적용하는 해시 동작을 수행함으로써 해시 데이터(HD)를 생성할 수 있다.
도 5는 제어 블록(340)이 쓰기 데이터 히트 또는 쓰기 데이터 미스를 판단하는 방법의 예를 보여주는 순서도이다. 도 3 및 도 5를 참조하면, 스토리지 장치(200)의 제어기(300)의 제어 블록(340)은 해시 생성 블록(330)으로부터 데이터 및 해시 데이터(HD)를 포함하는 제6 쓰기 데이터(WD6)를 수신할 수 있다.
S220 단계에서, 제어 블록(340)은 수신된 해시 데이터(HD)를 해시 데이터 블록(350)에 저장된 이전 해시 데이터와 비교할 수 있다. S230 단계에서, 제어 블록(340)은 해시 데이터(HD)가 이전 해시 데이터에 부합하는지(match) 판단할 수 있다.
예를 들어, 해시 데이터(HD)와 이전 해시 데이터 사이의 유사도(예를 들어, 동일한 비트들의 수 또는 비율)가 문턱값 이상일 때, 쓰기 데이터 히트를 판단하고 S240 단계를 수행할 수 있다. 해시 데이터(HD)와 이전 해시 데이터 사이의 유사도가 문턱값보다 작을 때, 제어 블록(340)은 쓰기 데이터 미스를 판단하고 S260 단계를 수행할 수 있다. 예를 들어, 문턱값은 해시 데이터(HD)와 이전 해시 데이터가 동일할 때에 쓰기 데이터 히트가 판단되도록 설정될 수 있다.
쓰기 데이터 히트가 판단된 때에, S240 단계에서 제어 블록(340)은 쓰기 데이터 히트를 판단할 수 있다. 제어 블록(340)은 수신된 데이터의 쓰기, 즉 불휘발성 메모리 장치(400)로의 쓰기를 생략하고, 데이터 및 해시 데이터(HD)를 버릴 수 있다. 예를 들어, 제어 블록(340)은 데이터 또는 해시 데이터(HD)에 할당된 저장 공간을 해제(release)함으로써, 데이터 또는 해시 데이터를 버릴 수 있다.
S250 단계에서, 제어 블록(340)은 이전 데이터 및 이전 해시 데이터를 가리키도록 매핑 정보 블록(360)의 매핑 정보를 갱신할 수 있다.
쓰기 데이터 미스가 판단된 때에, S260 단계에서, 제어 블록(340)은 쓰기 데이터 미스를 판단할 수 있다. 제어 블록(340)은 해시 데이터(HD)를 해시 데이터 블록(350)에 저장할 수 있다. S270 단계에서, 제어 블록(340)은 수신된 데이터를 불휘발성 메모리 장치(400)에 기입하고, 기입된 데이터 및 저장된 해시 데이터(HD)를 가리키도록 매핑 정보 블록(360)의 매핑 정보를 갱신할 수 있다.
도 6은 스토리지 장치(200)에서 쓰기 동작 시에 쓰기 데이터 미스가 발생하는 예를 보여준다. 도면이 불필요하게 복잡해지는 것을 방지하기 위하여, 제어 블록(340), 해시 데이터 블록(350), 매핑 정보 블록(360), 그리고 불휘발성 메모리 장치(400)가 도시된다.
도 3 및 도 6을 참조하면, 해시 데이터 블록(350)은 제1 내지 제4 포인터들(PT1~PT4)로 예시되는 포인터(PTR)에 의해 구별되는 위치들(예를 들어, 저장 공간의 위치들)에 해시 데이터(HD)를 저장하도록 구성될 수 있다.
매핑 정보 블록(360)은 제1 내지 제4 논리 주소들(L1~L4)로 예시되는 논리 주소(LBA)에 의해 구별되는 위치들(예를 들어, 저장 공간의 위치들)에 물리 주소(PBA) 및 포인터(PTR)를 저장하도록 구성될 수 있다.
불휘발성 메모리 장치(400)는 메타 영역(410) 및 사용자 영역(420)을 포함할 수 있다. 스토리지 장치(200)는 사용자 영역(420)을 스토리지 장치(200)의 저장 공간으로서 호스트 장치(100)에 공개할 수 있다. 스토리지 장치(200)는 스토리지 장치(200)를 운영하는데 필요한 다양한 정보를 저장하기 위해 메타 영역(410)을 사용할 수 있다.
예시적으로, 메타 영역(410)은 백업 해시 데이터 블록(411) 및 백업 매핑 정보 블록(413)을 저장하는데 사용될 수 있다. 예를 들어, 스토리지 장치(200)의 제어기(300)의 제어 블록(340)은 유휴 시간에, 해시 데이터 블록(350) 또는 매핑 정보 블록(360)의 일정 부분이 갱신(또는 추가)됨에 따라, 또는 갑작스러운 전원 오프(SPO)(Sudden Power Off)가 검출됨에 따라, 해시 데이터 블록(350) 및 매핑 정보 블록(360)을 백업 해시 데이터 블록(411) 및 백업 매핑 정보 블록(413)으로서 메타 영역(410)에 백업할 수 있다.
쓰기 데이터 미스가 발생할 때의 쓰기 동작의 흐름을 참조하면, S310 단계에서, 제어 블록(340)은 제2 논리 주소(L2), 제1 데이터(DATA1), 그리고 제1 해시 데이터(HD1)를 수신할 수 있다. S320 단계에서, 제어 블록(340)은 제1 해시 데이터(HD1)를 이용하여 해시 데이터 블록(350)을 검색할 수 있다.
예시적으로, 해시 데이터 블록(350)에 이전 해시 데이터가 저장되어 있지 않은 것으로 가정된다. 따라서, 제어 블록(340)은 제1 해시 데이터(HD1)를 해시 데이터 블록(350)의 임의의 위치, 예를 들어 제1 포인터(PT1)가 가리키는 위치에 저장할 수 있다.
S330 단계에서, 제어 블록(340)은 제1 데이터(DATA1)가 기입될 불휘발성 메모리 장치(400)의 저장 공간의 위치, 예를 들어 제1 물리 주소(P1)가 가리키는 위치를 결정할 수 있다. 제어 블록(340)은 수신된 제2 논리 주소(L2)와 연관된 매핑 정보가 제1 데이터(DATA1)가 기입될 저장 공간의 위치를 가리키는 제1 물리 주소(P1) 및 제1 해시 데이터(HD1)가 저장된 위치를 가리키는 제1 포인터(PT1)를 가리키도록, 제2 논리 주소(L2)와 연관된 매핑 정보를 갱신할 수 있다.
S340 단계에서, 제어 블록(340)은 사용자 영역(420)의 제1 물리 주소(P1)에 대응하는 저장 공간에 제1 데이터(DATA1)를 기입할 수 있다.
도 7은 도 6에 이어 스토리지 장치(200)에서 쓰기 동작 시에 쓰기 데이터 미스가 발생하는 예를 보여준다. 도 3, 도 6 및 도 7을 참조하면, S410 단계에서, 제어 블록(340)은 제3 논리 주소(L3), 제2 데이터(DATA2), 그리고 제2 해시 데이터(HD2)를 수신할 수 있다. S420 단계에서, 제어 블록(340)은 제2 해시 데이터(HD2)를 이용하여 해시 데이터 블록(350)을 검색할 수 있다.
해시 데이터 블록(350)은 제1 해시 데이터(HD1)를 저장하고 있다. 예시적으로, 제2 해시 데이터(HD2)는 제1 해시 데이터(HD1)와 다른 것으로, 즉 제2 해시 데이터(HD2)와 제1 해시 데이터(HD1)의 유사도는 문턱값보다 작은 것으로 가정된다. 따라서, 제어 블록(340)은 제2 해시 데이터(HD2)를 해시 데이터 블록(350)의 임의의 위치, 예를 들어 제2 포인터(PT2)가 가리키는 위치에 저장할 수 있다.
S430 단계에서, 제어 블록(340)은 제2 데이터(DATA2)가 기입될 불휘발성 메모리 장치(400)의 저장 공간의 위치, 예를 들어 제2 물리 주소(P2)가 가리키는 위치를 결정할 수 있다. 제어 블록(340)은 수신된 제3 논리 주소(L3)와 연관된 매핑 정보가 제2 데이터(DATA2)가 기입될 저장 공간의 위치를 가리키는 제2 물리 주소(P2) 및 제2 해시 데이터(HD2)가 저장된 위치를 가리키는 제2 포인터(PT2)를 가리키도록, 제3 논리 주소(L3)와 연관된 매핑 정보를 갱신할 수 있다.
S440 단계에서, 제어 블록(340)은 사용자 영역(420)의 제2 물리 주소(P2)에 대응하는 저장 공간에 제2 데이터(DATA2)를 기입할 수 있다.
도 8은 도 7에 이어 스토리지 장치(200)에서 쓰기 동작 시에 쓰기 데이터 히트가 발생하는 예를 보여준다. 도 3, 도 7 및 도 8을 참조하면, S510 단계에서, 제어 블록(340)은 제4 논리 주소(L4), 제3 데이터(DATA3), 그리고 제3 해시 데이터(HD3)를 수신할 수 있다. S520 단계에서, 제어 블록(340)은 제3 해시 데이터(HD3)를 이용하여 해시 데이터 블록(350)을 검색할 수 있다.
해시 데이터 블록(350)은 제1 해시 데이터(HD1) 및 제2 해시 데이터(HD2)를 저장하고 있다. 예시적으로, 제3 해시 데이터(HD3)는 제1 해시 데이터(HD1)와 같은 것으로, 즉 제3 해시 데이터(HD3)와 제1 해시 데이터(HD1)의 유사도는 문턱값 이상인 것으로 가정된다. 따라서, 제어 블록(340)은 제3 해시 데이터(HD3)를 버릴 수 있다.
S530 단계에서, 제어 블록(340)은 수신된 제3 논리 주소(L3)와 연관된 매핑 정보가 제1 데이터(DATA1)가 기입된 저장 공간의 위치를 가리키는 제1 물리 주소(P1) 및 제1 해시 데이터(HD1)가 저장된 위치를 가리키는 제1 포인터(PT1)를 가리키도록, 제4 논리 주소(L4)와 연관된 매핑 정보를 갱신할 수 있다. 제3 데이터(DATA3)의 기입은 생략될 수 있다.
도 9는 도 8에 이어 스토리지 장치(200)에서 쓰기 데이터 히트가 발생한 데이터에 대한 읽기 동작이 수행되는 예를 보여준다. 도 3, 도 8 및 도 9를 참조하면, S610 단계에서, 제어 블록(340)은 제4 논리 주소(L4)를 수신할 수 있다. S620 단계에서, 제어 블록(340)은 제4 논리 주소(L4)를 이용하여 매핑 정보 블록(360)을 검색할 수 있다.
제어 블록(340)은 매핑 정보 블록(360)으로부터 제4 논리 주소(L4)와 연관된 제1 물리 주소(P1)를 획득할 수 있다. S630 단계에서, 제어 블록(340)은 제1 물리 주소(P1)를 읽기 명령과 함께 불휘발성 메모리 장치(400)로 전송할 수 있다.
S640 단계에서, 불휘발성 메모리 장치(400)는 제1 물리 주소(P1)를 이용하여 사용자 영역(420)으로부터 제1 데이터(DATA1)를 읽고, 제1 데이터(DATA1)를 제어 블록(340)에 전달할 수 있다. S650 단계에서, 제어 블록(340)은 제1 데이터(DATA1)를 호스트 장치(100)에 제공할 수 있다.
도 10은 도 9에 이어, 둘 이상의 매핑 정보와 연관된 데이터가 갱신되는 예를 보여준다. 도 3, 도 9 및 도 10을 참조하면, S710 단계에서, 제어 블록(340)은 제2 논리 주소(L2), 제4 데이터(DATA4), 그리고 제4 해시 데이터(HD4)를 수신할 수 있다. S720 단계에서, 제어 블록(340)은 제4 해시 데이터(HD4)를 이용하여 해시 데이터 블록(350)을 검색할 수 있다.
해시 데이터 블록(350)은 제1 해시 데이터(HD1) 및 제2 해시 데이터(HD2)를 저장하고 있다. 예시적으로, 제4 해시 데이터(HD4)는 제1 해시 데이터(HD1) 및 제2 해시 데이터(HD2)와 다른 것으로 가정된다. 따라서, 제어 블록(340)은 제4 해시 데이터(HD4)를 해시 데이터 블록(350)의 임의의 위치, 예를 들어 제3 포인터(PT3)가 가리키는 위치에 저장할 수 있다.
S730 단계에서, 제어 블록(340)은 제4 데이터(DATA4)가 기입될 불휘발성 메모리 장치(400)의 저장 공간의 위치, 예를 들어 제3 물리 주소(P3)가 가리키는 위치를 결정할 수 있다. 제어 블록(340)은 수신된 제2 논리 주소(L2)와 연관된 매핑 정보가 제4 데이터(DATA4)가 기입될 저장 공간의 위치를 가리키는 제4 물리 주소(P4) 및 제4 해시 데이터(HD4)가 저장된 위치를 가리키는 제3 포인터(PT3)를 가리키도록, 제2 논리 주소(L2)와 연관된 매핑 정보를 갱신할 수 있다.
S740 단계에서, 제어 블록(340)은 사용자 영역(420)의 제3 물리 주소(P3)에 대응하는 저장 공간에 제4 데이터(DATA4)를 기입할 수 있다.
매핑 정보 블록(360)의 적어도 하나의 매핑 정보가 특정한 포인터 및 특정한 물리 주소를 가리킬 때, 해당 포인터의 해시 데이터 및 해당 물리 주소의 데이터는 유효하게 유지될 수 있다. 특정한 포인터 및 특정한 물리 주소를 가리키는 매핑 정보가 존재하지 않으면, 해당 포인터의 해시 데이터 및 해당 물리 주소의 데이터는 무효화될 수 있다.
예시적으로, 배경 동작으로서 가비지 컬렉션이 수행될 때, 무효 데이터가 삭제될 수 있다. 무효 데이터가 삭제될 때, 연관된 해시 데이터 또한 삭제될 수 있다. 배경 동작으로 가비지 컬렉션이 수행될 때까지, 무효 데이터 및 무효 해시 데이터는 유지될 수 있다.
쓰기 동작 시에, 제어 블록(340)은 해시 데이터(HD)를 이전 해시 데이터 중에서 무효 해시 데이터(이전 무효 해시 데이터)와도 비교할 수 있다. 이전 무효 해시 데이터에 대해 쓰기 데이터 히트가 발생할 때, 이전 무효 해시 데이터 및 연관된 무효 데이터는 유효 상태로 복원될 수 있다.
해시 데이터 및 데이터를 무효로 설정하거나 유효로 복원하는 것은 별도의 쓰기 동작 및 소거 동작을 필요로 하지 않는다. 따라서, 무효 해시 데이터 및 무효 데이터를 유지하고, 무효 해시 데이터에 대해서도 쓰기 데이터 히트를 판단함으로써, 불휘발성 메모리 장치(400)의 마모가 더 감소되고, 스토리지 장치(200)의 수명이 더 연장될 수 있다.
도 11은 본 발명의 추가 실시 예에 따른 스토리지 장치(500)를 보여주는 블록도이다. 도 11을 참조하면, 스토리지 장치(500)는 제어기(510), 불휘발성 메모리 장치(520), 그리고 버퍼 메모리(530)를 포함할 수 있다.
제어기(510)는 외부의 호스트 장치(예를 들어, 도 1의 호스트 장치(10) 또는 도 3의 호스트 장치(100))와 통신할 수 있다. 외부의 호스트 장치의 요청에 따라, 제어기(510)는 불휘발성 메모리 장치(520)를 제어할 수 있다. 제어기(510)는 도 3의 제어기(300)에 대응할 수 있다. 불휘발성 메모리 장치(520)는 도 3의 불휘발성 메모리 장치(400)에 대응할 수 있다.
도 3의 스토리지 장치(200)와 비교하면, 스토리지 장치(500)는 버퍼 메모리(530)를 더 포함할 수 있다. 버퍼 메모리(530)는 랜덤 액세스 메모리를 포함할 수 있다. 제어기(510)는 버퍼 메모리를 외부의 호스트 장치와 불휘발성 메모리 장치 사이의 데이터 버퍼로 사용할 수 있다.
예를 들어, 제어기(510)는 외부의 호스트 장치로부터 전달되어 불휘발성 메모리 장치(520)에 기입될 데이터를 버퍼 메모리(530)에 임시로 저장할 수 있다. 제어기(510)는 불휘발성 메모리 장치(520)로부터 읽어 외부의 호스트 장치로 전달될 데이터를 버퍼 메모리(530)에 임시로 저장할 수 있다.
예시적으로, 제어기(510)는 해시 데이터 블록(350)(도 3 참조) 및 매핑 정보 블록(360)(도 3 참조) 중 적어도 하나를 버퍼 메모리(530)에 저장하도록 구성될 수 있다.
도 12는 스토리지 장치(500)의 동작 방법의 제1 예를 보여주는 순서도이다. 도 11 및 도 12를 참조하면, S810 단계에서, 제어기(510)는 데이터 및 서명을 수신할 수 있다. S815 단계에서, 제어기(510)는 서명을 이용하여 데이터의 무결성을 검사할 수 있다. S820 단계에서, 제어기(510)는 데이터 및 서명에 기반하여 해시 데이터를 생성할 수 있다. S810 단계 내지 S820 단계는 도 2의 S110 단계 내지 S130 단계에 해당한다. 따라서, 중복되는 설명은 생략된다.
S825 단계에서, 제어기(510)는 해시 데이터를 이전 해시 데이터와 비교할 수 있다. S830 단계에서, 제어기(510)는 쓰기 데이터 히트 또는 쓰기 데이터 미스를 판단할 수 있다. 쓰기 데이터 히트가 판단된 때에, S835 단계에서, 제어기(510)는 수신된 데이터의 쓰기를 생략할 수 있다. S840 단계에서, 제어기(510)는 이전 데이터 및 이전 해시 데이터를 가리키도록 매핑 정보를 갱신할 수 있다. S830 단계 내지 S840 단계는 도 5의 S230 단계 내지 S250 단계에 해당한다. 따라서, 중복되는 설명은 생략된다.
쓰기 데이터 미스가 판단된 때에, S845 단계에서, 제어기(510)는 해시 데이터를 저장할 수 있다. S845 단계는 도 5의 S260 단계에 해당한다. 따라서, 중복되는 설명은 생략된다.
S850 단계에서, 제어기(510)는 수신된 데이터를 버퍼 메모리(530)에 저장할 수 있다. 즉, 제어기(510)는 데이터를 버퍼 메모리(530)에 저장하기 전에 쓰기 데이터 히트 또는 쓰기 데이터 미스를 판단할 수 있다. 제어기(510)는 쓰기 데이터 미스가 발생한 데이터, 즉 불휘발성 메모리 장치(520)에 기입될 데이터만을 버퍼 메모리(530)에 저장할 수 있다.
이후에, 쓰기 조건이 만족되면, 제어기(510)는 S855 단계를 수행할 수 있다. S855 단계에서, 제어기(510)는 버퍼 메모리(530)로부터 데이터를 읽고, 그리고 읽혀진 데이터를 불휘발성 메모리 장치(520)에 기입할 수 있다. 또한, 제어기(510)는 기입된 데이터 및 저장된 해시 데이터를 가리키도록 매핑 정보를 갱신할 수 있다. S855 단계는 도 5의 S270 단계에 해당한다. 따라서, 중복되는 설명은 생략된다.
예시적으로, 쓰기 조건은 외부의 호스트 장치로부터 플러시 명령을 수신하는 것, 갑작스러운 전원 오프(SPO)를 검출하는 것, 외부의 호스트 장치로부터 수신되어 계류중인 명령이 없음을 검출함으로써 또는 외부의 호스트 장치에 의해 절전 모드(또는 유휴 모드)로 진입하는 것, 그리고 버퍼 메모리(530)의 자유 용량(또는 자유 용량의 비율)이 문턱보다 작음을 검출하는 것을 포함할 수 있다.
도 3, 도 11 및 도 12를 참조하면, 제어 블록(340)은 쓰기 데이터 히트가 발생한 데이터 및 해시 데이터를 버릴 수 있다. 제어 블록(340)은 쓰기 데이터 미스가 발생한 데이터를 버퍼 메모리(530)에 저장하고, 해시 데이터를 해시 데이터 블록에 저장할 수 있다. 쓰기 조건이 만족된 때에, 제어 블록(340)은 버퍼 메모리(530)로부터 데이터를 읽고, 읽혀진 데이터를 불휘발성 메모리 장치(520)에 기입할 수 있다.
도 13은 스토리지 장치(500)의 동작 방법의 제2 예를 보여주는 순서도이다. 도 11 및 도 13을 참조하면, S910 단계에서, 제어기(510)는 데이터 및 서명을 수신할 수 있다. S915 단계에서, 제어기(510)는 서명을 이용하여 데이터의 무결성을 검사할 수 있다. S910 단계 및 S915 단계는 도 2의 S110 단계 및 S120 단계에 해당한다. 따라서, 중복되는 설명은 생략된다.
S920 단계에서, 제어기(510)는 수신된 데이터 및 서명을 버퍼 메모리(530)에 저장할 수 있다. 즉, 제어기(510)는 수신된 데이터 및 서명의 히트 또는 미스 여부를 판단하지 않고, 수신된 데이터 및 서명을 우선 버퍼 메모리에 저장할 수 있다. 이후에, 쓰기 조건이 만족된 때에, 제어기(510)는 버퍼 메모리(530)로부터 데이터 및 서명을 읽고, S925 단계를 수행할 수 있다.
도 3, 도 11 및 도 14를 참조하면, 제어기(510)는 서명 검사 블록(320)으로부터 출력되는 제5 쓰기 데이터(WD5)를 버퍼 메모리에 저장할 수 있다. 쓰기 조건이 만족된 때에, 제어기(510)는 버퍼 메모리(530)로부터 제5 쓰기 데이터(WD5)를 읽고, 제5 쓰기 데이터(WD5)를 해시 생성 블록(330)에 제공할 수 있다.
다시 도 11 및 도 14를 참조하면, 쓰기 조건이 만족된 때에, 제어기(510)는 S925 단계를 수행할 수 있다. S925 단계에서, 제어기(510)는 데이터 및 서명에 기반하여 해시 데이터를 생성할 수 있다. S925 단계는 도 2의 S130 단계에 해당한다. 따라서, 중복되는 설명은 생략된다.
S930 단계에서, 제어기(510)는 해시 데이터를 이전 해시 데이터와 비교할 수 있다. S935 단계에서, 제어기(510)는 쓰기 데이터 히트 또는 쓰기 데이터 미스를 판단할 수 있다. 쓰기 데이터 히트가 판단된 때에, S940 단계에서, 제어기(510)는 수신된 데이터의 쓰기를 생략할 수 있다.
제어기(510)는 버퍼 메모리(530)에서 데이터 및 서명을 저장하도록 할당된 저장 공간을 해제(release)함으로써, 데이터 및 서명을 버릴 수 있다. S945 단계에서, 제어기(510)는 이전 데이터 및 이전 해시 데이터를 가리키도록 매핑 정보를 갱신할 수 있다. S930 단계 내지 S945 단계는 도 5의 S230 단계 내지 S250 단계에 해당한다. 따라서, 중복되는 설명은 생략된다.
쓰기 데이터 미스가 판단된 때에, S950 단계에서, 제어기(510)는 해시 데이터를 저장할 수 있다. S955 단계에서, 제어기(510)는 데이터를 불휘발성 메모리 장치(520)에 기입할 수 있다. 또한, 제어기(510)는 기입된 데이터 및 저장된 해시 데이터를 가리키도록 매핑 정보를 갱신할 수 있다. S950 단계 및 S955 단계는 도 5의 S260 단계 및 S270 단계에 해당한다. 따라서, 중복되는 설명은 생략된다.
예시적으로, 쓰기 조건은 외부의 호스트 장치로부터 플러시 명령을 수신하는 것, 갑작스러운 전원 오프(SPO)를 검출하는 것, 외부의 호스트 장치로부터 수신되어 계류중인 명령이 없음을 검출함으로써 또는 외부의 호스트 장치에 의해 절전 모드(또는 유휴 모드)로 진입하는 것, 그리고 버퍼 메모리(530)의 자유 용량(또는 자유 용량의 비율)이 문턱보다 작음을 검출하는 것을 포함할 수 있다.
상술된 바와 같이, 제1, 제2, 제3 등의 용어들을 사용하여 스토리지 장치(20, 200, 500)의 구성 요소들이 설명되었다. 그러나 제1, 제2, 제3 등과 같은 용어들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 발명을 한정하지 않는다. 예를 들어, 제1, 제2, 제3 등과 같은 용어들은 순서 또는 임의의 형태의 수치적 의미를 내포하지 않는다.
상술된 실시 예들에서, 블록들을 사용하여 본 발명의 실시 예들에 따른 구성 요소들이 참조되었다. 블록들은 IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device) 등과 같은 다양한 하드웨어 장치들, 하드웨어 장치들에서 구동되는 펌웨어, 응용과 같은 소프트웨어, 또는 하드웨어 장치와 소프트웨어가 조합된 형태로 구현될 수 있다. 또한, 블록들은 IC 내의 반도체 소자들로 구성되는 회로들 또는 IP(Intellectual Property)로 등록된 회로들을 포함할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10, 100: 호스트 장치
110: 프로세싱 블록
120: 서명 생성 블록
130: 전송 블록
140: 수신 블록
150: 서명 검사 블록
20, 200: 스토리지 장치
30, 300: 제어기
310: 수신 블록
320: 서명 검사 블록
330: 해시 생성 블록
340: 제어 블록
350: 해시 데이터 블록
360: 매핑 정보 블록
370: 서명 생성 블록
380: 전송 블록
40, 400: 불휘발성 메모리 장치
110: 프로세싱 블록
120: 서명 생성 블록
130: 전송 블록
140: 수신 블록
150: 서명 검사 블록
20, 200: 스토리지 장치
30, 300: 제어기
310: 수신 블록
320: 서명 검사 블록
330: 해시 생성 블록
340: 제어 블록
350: 해시 데이터 블록
360: 매핑 정보 블록
370: 서명 생성 블록
380: 전송 블록
40, 400: 불휘발성 메모리 장치
Claims (20)
- 불휘발성 메모리 장치; 그리고
외부의 호스트 장치로부터 쓰기 명령, 데이터 및 상기 데이터와 연관된 서명(signature)을 수신하고, 상기 데이터로부터 제1 해시를 생성하고, 상기 서명으로부터 제2 해시를 생성하고, 그리고 상기 제1 해시 및 상기 제2 해시에 기반하여 해시 데이터를 생성하도록 구성되는 제어기를 포함하고,
상기 제어기는 상기 해시 데이터를 이용하여 상기 데이터에 대응하는 데이터가 상기 불휘발성 메모리 장치에 이미 기입되어 있는지 검출하도록 더 구성되는 스토리지 장치. - 제1항에 있어서,
상기 제어기는 상기 서명을 이용하여 상기 외부의 호스트 장치로부터 수신된 상기 데이터의 무결성(integrity)을 검사하도록 더 구성되는 스토리지 장치. - 제1항에 있어서,
상기 서명은 순환 중복 검사(CRC)(Cyclic Redundancy Check) 코드, 체크섬(checksum) 코드, 에러 검출 코드(EDC)(Error Detection Code), 에러 정정 코드(ECC)(Error Correction Code), 그리고 해시 데이터 중 적어도 하나를 포함하는 스토리지 장치. - 제1항에 있어서,
상기 제어기는:
상기 데이터로부터 상기 제1 해시를 생성하도록 구성되는 제1 해시 생성기;
상기 서명으로부터 상기 제2 해시를 생성하도록 구성되는 제2 해시 생성기; 그리고
상기 제1 해시 및 상기 제2 해시를 조합하여 상기 해시 데이터를 생성하도록 구성되는 조합 논리를 포함하는 스토리지 장치. - 제4항에 있어서,
상기 조합 논리는 상기 제1 해시 및 상기 제2 해시를 순차적으로 나열하거나, 상기 순차적으로 나열한 결과에 대해 해시 연산(hash operation)을 수행하거나, 상기 제1 해시 및 상기 제2 해시에 대해 논리 연산을 수행하거나, 또는 상기 논리 연산의 결과에 대해 상기 해시 연산을 수행함으로써 상기 해시 데이터를 생성하는 스토리지 장치. - 제1항에 있어서,
상기 제어기는 상기 불휘발성 메모리 장치에 이전에 기입된 데이터의 이전 해시 데이터 및 상기 해시 데이터를 비교하여 유사도를 판단하고, 그리고 상기 유사도가 문턱값 이상일 때 쓰기 데이터 히트를 판단하고, 그리고 상기 쓰기 데이터 히트가 판단됨에 따라 상기 데이터를 상기 불휘발성 메모리 장치에 기입하는 것을 생략하도록 더 구성되는 스토리지 장치. - 제6항에 있어서,
상기 쓰기 데이터 히트가 판단됨에 따라, 상기 제어기는 상기 데이터가 상기 이전에 기입된 데이터로서 상기 불휘발성 메모리 장치에 기입되어 있음을 가리키는 정보를 저장하도록 더 구성되는 스토리지 장치. - 제6항에 있어서,
상기 쓰기 데이터 히트가 판단됨에 따라, 상기 제어기는 상기 해시 데이터를 버리는 스토리지 장치. - 제1항에 있어서,
상기 제어기는 상기 불휘발성 메모리 장치에 이전에 기입된 데이터의 이전 해시 데이터 및 상기 해시 데이터를 비교하여 유사도를 판단하고, 그리고 상기 유사도가 문턱값보다 낮을 때 쓰기 데이터 미스를 판단하고, 그리고 상기 쓰기 데이터 미스가 판단됨에 따라 상기 데이터를 상기 불휘발성 메모리 장치에 기입하도록 더 구성되는 스토리지 장치. - 제9항에 있어서,
상기 쓰기 데이터 미스가 판단됨에 따라, 상기 제어기는 상기 데이터가 기입된 상기 불휘발성 메모리 장치의 주소를 저장하도록 더 구성되는 스토리지 장치. - 제9항에 있어서,
상기 쓰기 데이터 미스가 판단됨에 따라, 상기 제어기는 상기 해시 데이터를 저장하도록 더 구성되는 스토리지 장치. - 제11항에 있어서,
상기 제어기는 상기 저장된 해시 데이터를 상기 불휘발성 메모리 장치에 백업하도록 더 구성되는 스토리지 장치. - 제1항에 있어서,
버퍼 메모리를 더 포함하고,
상기 제어기는 상기 불휘발성 메모리 장치에 이전에 기입된 데이터의 이전 해시 데이터 및 상기 해시 데이터를 비교하여 유사도를 판단하고, 그리고 상기 유사도가 문턱값보다 작을 때 쓰기 데이터 미스를 판단하고, 그리고 상기 쓰기 데이터 히트가 판단됨에 따라 상기 데이터를 상기 버퍼 메모리에 저장하도록 더 구성되는 스토리지 장치. - 제13항에 있어서,
쓰기 조건이 만족됨에 따라, 상기 제어기는 상기 버퍼 메모리로부터 상기 데이터를 읽고, 그리고 상기 버퍼 메모리로부터 읽혀진 상기 데이터를 상기 불휘발성 메모리 장치에 기입하도록 더 구성되는 스토리지 장치. - 제14항에 있어서,
상기 쓰기 조건은 상기 외부의 호스트 장치로부터 플러시 명령을 수신함에 따라, 갑작스러운 전원 오프(SPO)(Sudden Power Off)를 검출함에 따라, 유휴 상태로 진입함에 따라, 또는 상기 버퍼 메모리의 자유 용량이 문턱보다 작아짐에 따라 만족되는 스토리지 장치. - 제1항에 있어서,
버퍼 메모리를 더 포함하고,
상기 제어기는 상기 외부의 호스트 장치로부터 수신되는 상기 데이터 및 상기 서명을 상기 버퍼 메모리에 저장하고, 쓰기 조건이 만족됨에 따라 상기 버퍼 메모리로부터 상기 데이터 및 상기 서명을 읽고, 그리고 상기 버퍼 메모리로부터 읽혀진 상기 데이터 및 상기 서명으로부터 상기 제1 해시 및 상기 제2 해시를 각각 생성하도록 더 구성되는 스토리지 장치. - 제16항에 있어서,
상기 제어기는 상기 불휘발성 메모리 장치에 이전에 기입된 데이터의 이전 해시 데이터 및 상기 해시 데이터를 비교하여 유사도를 판단하고, 그리고 상기 유사도가 문턱값보다 낮을 때 쓰기 데이터 미스를 판단하고, 그리고 상기 쓰기 데이터 미스가 판단됨에 따라 상기 데이터 및 상기 서명이 저장된 상기 버퍼 메모리의 저장 공간을 해제(release)하도록 더 구성되는 스토리지 장치. - 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하도록 구성되는 스토리지 장치의 동작 방법에 있어서:
상기 제어기가 외부의 호스트 장치로부터 쓰기 명령, 데이터 및 상기 데이터와 연관된 서명을 수신하는 단계;
상기 제어기가 상기 데이터 및 상기 서명으로부터 해시 데이터를 생성하는 단계;
상기 해시 데이터 및 상기 불휘발성 메모리 장치에 이전에 기입된 데이터 사이의 유사도가 문턱값 이상일 때, 상기 제어기가 상기 데이터의 상기 불휘발성 메모리 장치로의 기입을 생략하는 단계; 그리고
상기 해시 데이터 및 상기 불휘발성 메모리 장치에 이전에 기입된 데이터 사이의 유사도가 문턱값보다 작을 때, 상기 제어기가 상기 데이터의 상기 불휘발성 메모리 장치에 기입하는 단계를 포함하는 동작 방법. - 제18항에 있어서,
상기 제어기가 상기 서명을 이용하여 상기 데이터의 무결성을 검사하는 단계를 더 포함하는 동작 방법. - 불휘발성 메모리 장치; 그리고
상기 불휘발성 메모리 장치를 제어하도록 구성되는 제어기를 포함하고,
상기 제어기는:
외부의 호스트 장치로부터 쓰기 명령, 논리 주소, 데이터 및 상기 데이터와 연관된 서명을 수신하도록 구성되는 수신 블록;
상기 수신 블록으로부터 상기 데이터 및 상기 서명을 수신하고, 상기 서명을 이용하여 상기 데이터의 무결성을 검사하도록 구성되는 서명 검사 블록;
상기 서명 검사 블록으로부터 상기 데이터 및 상기 서명을 수신하고, 상기 데이터 및 상기 서명으로부터 해시 데이터를 생성하도록 구성되는 해시 생성 블록;
상기 불휘발성 메모리 장치에 이전에 기입된 이전 데이터와 연관된 이전 해시 데이터를 저장하도록 구성되는 해시 데이터 블록;
상기 이전 데이터의 이전 논리 주소 및 상기 이전 데이터가 기입된 상기 불휘발성 메모리 장치의 저장 공간의 이전 물리 주소 사이의 매핑 정보를 저장하는 매핑 정보 블록; 그리고
상기 해시 생성 블록으로부터 상기 데이터 및 상기 해시 데이터를 수신하고, 상기 해시 데이터 및 상기 해시 데이터 블록의 이전 해시 데이터를 비교하여 유사도를 판단하고, 상기 유사도에 따라 쓰기 데이터 히트 및 쓰기 데이터 미스 중 하나를 판단하도록 구성되는 제어 블록을 포함하고,
상기 쓰기 데이터 히트가 판단된 때에, 상기 제어 블록은 상기 데이터의 상기 논리 주소가 상기 이전 데이터의 상기 이전 물리 데이터와 매핑되도록 상기 매핑 정보 블록을 갱신하도록 더 구성되고, 그리고
상기 쓰기 데이터 미스가 판단된 때에, 상기 제어기는 상기 데이터를 상기 불휘발성 메모리 장치에 기입하고, 그리고 상기 논리 주소가 상기 데이터가 기입된 상기 불휘발성 메모리 장치의 저장 공간의 물리 주소와 매핑되도록 상기 매핑 정보 블록을 갱신하도록 더 구성되는 스토리지 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190070923A KR20200143611A (ko) | 2019-06-14 | 2019-06-14 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US16/806,287 US11216191B2 (en) | 2019-06-14 | 2020-03-02 | Storage device and operating method of storage device |
CN202010320587.XA CN112084532A (zh) | 2019-06-14 | 2020-04-22 | 存储设备和存储设备的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190070923A KR20200143611A (ko) | 2019-06-14 | 2019-06-14 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200143611A true KR20200143611A (ko) | 2020-12-24 |
Family
ID=73734648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190070923A KR20200143611A (ko) | 2019-06-14 | 2019-06-14 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11216191B2 (ko) |
KR (1) | KR20200143611A (ko) |
CN (1) | CN112084532A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230168825A1 (en) * | 2021-11-29 | 2023-06-01 | Western Digital Technologies, Inc. | Trusted systems for decentralized data storage |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526607B1 (en) | 2004-09-23 | 2009-04-28 | Juniper Networks, Inc. | Network acceleration and long-distance pattern detection using improved caching and disk mapping |
US8412682B2 (en) * | 2006-06-29 | 2013-04-02 | Netapp, Inc. | System and method for retrieving and using block fingerprints for data deduplication |
US7403137B1 (en) | 2007-03-30 | 2008-07-22 | Juniper Networks, Inc. | Memory efficient indexing for disk-based compression |
US8843691B2 (en) | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8407400B2 (en) | 2008-11-12 | 2013-03-26 | Micron Technology, Inc. | Dynamic SLC/MLC blocks allocations for non-volatile memory |
US9582222B2 (en) | 2009-04-30 | 2017-02-28 | Western Digital Technologies, Inc. | Pre-cache similarity-based delta compression for use in a data storage system |
US20130343181A1 (en) | 2012-06-21 | 2013-12-26 | Jonathan Stroud | Systems and methods of data processing using an fpga-implemented hash function |
US20130347103A1 (en) | 2012-06-21 | 2013-12-26 | Mark Veteikis | Packet capture for error tracking |
KR101992274B1 (ko) | 2013-01-02 | 2019-09-30 | 삼성전자주식회사 | 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들 |
JP6666540B2 (ja) * | 2015-06-15 | 2020-03-18 | 富士通株式会社 | ストレージ制御装置、及びプログラム |
US10783145B2 (en) * | 2015-09-23 | 2020-09-22 | EMC IP Holding Company LLC | Block level deduplication with block similarity |
US9584155B1 (en) | 2015-09-24 | 2017-02-28 | Intel Corporation | Look-ahead hash chain matching for data compression |
US20190179536A1 (en) * | 2017-12-12 | 2019-06-13 | International Business Machines Corporation | Partial successful data delivery in a data storage system |
US11314598B2 (en) * | 2018-04-27 | 2022-04-26 | EMC IP Holding Company LLC | Method for approximating similarity between objects |
US10810162B2 (en) * | 2018-07-12 | 2020-10-20 | EMC IP Holding Company LLC | Physical file verification |
US11698929B2 (en) | 2018-11-30 | 2023-07-11 | Intel Corporation | Offload of data lookup operations |
-
2019
- 2019-06-14 KR KR1020190070923A patent/KR20200143611A/ko unknown
-
2020
- 2020-03-02 US US16/806,287 patent/US11216191B2/en active Active
- 2020-04-22 CN CN202010320587.XA patent/CN112084532A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20200393975A1 (en) | 2020-12-17 |
US11216191B2 (en) | 2022-01-04 |
CN112084532A (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8539313B2 (en) | System and method of data encoding | |
US20190179747A1 (en) | Apparatus and method for operating garbage collection using host idle | |
KR101930092B1 (ko) | 데이터 이용가능성의 마운트타임 조정 | |
US8281065B2 (en) | Systems and methods for determining the status of memory locations in a non-volatile memory | |
US11474899B2 (en) | Operation method of open-channel storage device | |
US11336305B2 (en) | Memory system | |
US9817752B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
US8984219B2 (en) | Data storage device and method of writing data in the same | |
US20150121128A1 (en) | Systems and methods for retrieving data | |
US9824007B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
US11544157B2 (en) | Apparatus and method for storing data in an MLC area of a memory system | |
KR20130088883A (ko) | 2-레벨 시스템 메인 메모리 | |
KR20220001222A (ko) | 베드 블록을 처리하는 메모리 시스템 및 동작 방법 | |
JP2010009102A (ja) | キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法 | |
TWI768764B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN107037979B (zh) | 用于在存储器设备中管理地址映射数据的系统和方法 | |
US9304854B2 (en) | Semiconductor device and operating method thereof | |
US11216191B2 (en) | Storage device and operating method of storage device | |
CN114822664B (zh) | 基于数据优先级的风险评估方法、存储装置及控制电路 | |
US11886741B2 (en) | Method and storage device for improving NAND flash memory performance for intensive read workloads | |
CN113360429B (zh) | 数据重建方法、存储器存储装置及存储器控制电路单元 | |
US20230138032A1 (en) | Storage device and operating method thereof | |
CN118796532A (zh) | 数据检查方法、存储器存储装置及存储器控制电路单元 | |
KR20220108342A (ko) | 메모리 시스템 내 프리 블록을 확보하는 장치 및 방법 | |
CN118394271A (zh) | 指令回应方法、存储器存储装置及存储器控制电路单元 |