KR101631162B1 - 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법 - Google Patents

플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법 Download PDF

Info

Publication number
KR101631162B1
KR101631162B1 KR1020090051951A KR20090051951A KR101631162B1 KR 101631162 B1 KR101631162 B1 KR 101631162B1 KR 1020090051951 A KR1020090051951 A KR 1020090051951A KR 20090051951 A KR20090051951 A KR 20090051951A KR 101631162 B1 KR101631162 B1 KR 101631162B1
Authority
KR
South Korea
Prior art keywords
data
flash memory
error detection
detection information
stored
Prior art date
Application number
KR1020090051951A
Other languages
English (en)
Other versions
KR20100133193A (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 KR1020090051951A priority Critical patent/KR101631162B1/ko
Priority to US12/780,980 priority patent/US9037776B2/en
Publication of KR20100133193A publication Critical patent/KR20100133193A/ko
Application granted granted Critical
Publication of KR101631162B1 publication Critical patent/KR101631162B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit codes
    • H03M13/096Checksums
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit

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

Abstract

플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법이 개시된다. 본 발명의 실시예에 따른 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법은, 호스트로부터 상기 플래시 메모리에 저장하고자 하는 데이터 및 상기 데이터를 저장하고자 하는 플래시 메모리의 논리 블록 주소를 수신하는 단계; 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는지를 판단하는 단계; 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는 경우, 상기 호스트로부터 전송된 데이터에 대응되어 생성되는 제1 오류 검출 정보와, 상기 논리 블록 주소에 대응되고 상기 캐시 메모리에 저장되어 있는 데이터에 대한 제2 오류 검출 정보를 비교하는 단계; 및 상기 제1 오류 검출 정보와 제2 오류 검출 정보가 동일한 경우, 상기 호스트로부터 전송된 데이터와 상기 캐시 메모리에 저장되어 있는 데이터를 비교하는 단계를 구비한다.

Description

플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법 {Storage device including flash memory and data storing method thereof}
본 발명은 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법에 관한 것으로서, 특히 플래시 메모리로 저장하고자 하는 데이터의 필터링을 통해 플래시 메모리의 수명을 증가시킬 수 있는 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법에 관한 것이다.
플래시 메모리는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 불휘발성 메모리이다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용된다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명이 이루고자 하는 기술적 과제는 쓰기 내구성 (write endurance) 특성이 향상되는 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법을 제공하는 것에 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 실시예에 따른 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법은, 호스트로부터 상기 플래시 메모리에 저장하고자 하는 데이터 및 상기 데이터를 저장하고자 하는 플래시 메모리의 논리 블록 주소를 수신하는 단계; 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는지를 판단하는 단계; 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는 경우, 상기 호스트로부터 전송된 데이터에 대응되어 생성되는 제1 오류 검출 정보와, 상기 논리 블록 주소에 대응되고 상기 캐시 메모리에 저장되어 있는 데이터에 대한 제2 오류 검출 정보를 비교하는 단계; 및 상기 제1 오류 검출 정보와 제2 오류 검출 정보가 동일한 경우, 상기 호스트로부터 전송된 데이터와 상기 캐시 메모리에 저장되어 있는 데이터를 비교하는 단계를 구비한다.
이때, 상기 호스트로부터 전송된 데이터와 상기 캐시 메모리에 저장되어 있는 데이터가 동일한 경우, 상기 호스트로부터 수신되는 데이터를 상기 플래시 메모리에 저장하지 아니한다.
바람직하게는, 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재 하지 아니하는 경우, 상기 데이터 저장 방법은, 상기 플래시 메모리로부터 상기 논리 블록 주소에 대한 데이터를 독출하는 단계; 및 상기 플래시 메모리로부터 독출된 데이터를 상기 캐시 메모리에 기입하는 단계를 더 구비할 수 있다.
바람직하게는, 상기 제1 오류 검출 정보와 제2 오류 검출 정보가 동일하지 아니하거나, 상기 호스트로부터 전송된 데이터와 상기 캐시 메모리에 저장되어 있는 데이터가 동일하지 아니하는 경우, 상기 데이터 저장 방법은, 상기 플래시 메모리에 상기 호스트로부터 전송된 데이터를 저장하는 단계를 더 구비할 수 있다.
바람직하게는, 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하지 아니하는 경우, 상기 데이터 저장 방법은, 상기 플래시 메모리에 상기 호스트로부터 전송된 데이터를 저장하는 단계를 더 구비할 수 있다.
바람직하게는 상기 제1 오류 검출 정보 및 제2 오류 검출 정보는, CRC(Cycle Redundancy Check), 패리티(Parity) 및 검사합(checksum) 중 적어도 하나의 방식에 의해 생성될 수 있다.
바람직하게는, 상기 저장 장치는, SSD(Solid State Drive)일 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법은, 호스트로부터 상기 플래시 메모리에 저장하고자 하는 데이터 및 상기 데이터를 저장하고자 하는 플래시 메모리의 논리 블록 주소를 수신하는 단계; 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는지를 판단하는 단계; 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는 경우, 상기 호스트로부터 전송된 데이터와 상기 논리 블록 주소에 대하여 상기 캐시 메모리에 저장되어 있는 데이터를 비교하는 단계를 구비한다.
이때, 상기 호스트로부터 전송된 데이터와 상기 캐시 메모리에 저장되어 있는 데이터가 동일한 경우, 상기 호스트로부터 수신되는 데이터를 상기 플래시 메모리에 저장하지 아니한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 실시예에 따른 플래시 메모리를 구비하는 저장 장치는, 플래시 메모리; 캐시 메모리; 호스트로부터 상기 플래시 메모리에 저장하고자 하는 데이터 및 상기 데이터를 저장하고자 하는 플래시 메모리의 논리 블록 주소를 포함하는 기입 명령어를 수신하는 인터페이스부; 및 상기 기입 명령어에 포함되는 논리 블록 주소가 상기 캐시 메모리에 존재하는 경우, 상기 호스트로부터 전송된 데이터에 대응되어 생성되는 제1 오류 검출 정보와 상기 논리 블록 주소에 대응되고 상기 캐시 메모리에 저장되어 있는 데이터에 대한 제2 오류 검출 정보를 비교하거나, 상기 기입 명령어 에 포함되는 데이터와 상기 캐시 메모리에 저장되어 있는 데이터를 비교하여, 상기 플래시 메모리에 상기 기입 명령어에 포함되는 데이터를 저장할지 여부를 판단하는 컨트롤러를 구비한다.
바람직하게는, 상기 기입 명령어에 포함되는 논리 블록 주소가 상기 캐시 메모리에 존재하지 아니하거나, 상기 제1 오류 검출 정보와 제2 오류 검출 정보가 상기하거나, 상기 기입 명령어에 포함되는 데이터와 상기 캐시 메모리에 저장되어 있는 데이터가 상이한 경우, 상기 컨트롤러는, 상기 기입 명령어에 포함되는 데이터를 상기 플래시 메모리에 저장하지 아니할 수 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명이 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
SSD(Solid State Drive)에 구비되는 플래시 메모리는 싱글-레벨 셀 (SLC: Single-Level Cell) 플래시 메모리 및 멀티-레벨 셀 (MLC: Multi-Level Cell) 플래시 메모리로 구분될 수 있다. 그런데, 멀티-레벨 셀 (MLC) 플래시 메모리의 수명은 싱글-레벨 셀 (SLC) 플래시 메모리에 비하여 약 1/10 수준에 불과하다.
멀티-레벨 셀 (MLC) 플래시 메모리의 쓰기 내구성 (write endurance) 특성이, 싱글-레벨 셀 (SLC) 플래시 메모리에 비하여 현저히 떨어지기 때문이다. 또한, 플래시 메모리의 쓰기 내구성 (write endurance) 특성은, 플래시 메모리를 구비하는 장치의 신뢰성에도 영향을 미친다. 따라서, SSD와 같이 플래시 메모리를 구비하는 저장 장치의 수명이나 신뢰성에 있어서, 플래시 메모리의 쓰기 내구성 (write endurance) 특성이 미치는 영향이 점점 커지고 있다.
도 1은 본 발명의 실시예에 따른 저장 장치를 나타내는 블럭도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 저장 장치(100)는 플래시 메모리(160), 캐시 메모리(cache memory, 180), 컨트롤러(140) 및 인터페이스부(120)를 구비한다. 본 발명의 실시예에 따른 저장 장치(100)는 호스트(HOST)로부터 기입 명령어(WCMD)를 수신하여, 기입 명령어(WCMD)에 포함되는 데이터를 플래시 메모리(160)에 저장한다.
캐시 메모리(180)은 DRAM. SRAM 및 비휘발성 메모리 등일 수 있다. 다만, 설명의 편의를 위해, 이하에서는 DRAM이 캐시 메모리로 구비되는 실시예에 한하여 기술된다.
바람직하게는, 본 발명의 실시예에 따른 저장 장치(100)는 SSD(Solid State Drive)일 수 있다. 또한, 플래시 메모리(160)는 멀티-레벨 셀 (MLC: Multi-Level Cell) 플래시 메모리일 수 있다.
바람직하게는, 호스트(HOST)는 컴퓨터의 CPU일 수 있고, 본 발명의 실시예에 따른 저장 장치(100)와 호스트(HOST)는 버스(미도시)로 연결될 수 있다. 또한, 기입 명령어(WCMD)는 플래시 메모리(160)에 저장하고자 하는 데이터 및 플래시 메모리(160)에 대한 논리 블럭 주소(LBA: Logical Block Address)를 포함할 수 있다. 이에 대한 더 자세한 설명은 후술된다.
컨트롤러(140)는 캐시 메모리 제어부(DRAM 제어부, 142), 플래시 메모리 제어부(144), 오류 검출 정보 체크부(CRC 체크부, 146) 및 데이터 비교부(148)를 구비할 수 있다. 컨트롤러(140)의 각 구성 요소에 대한 더 자세한 사항은 후술된다.
도 2는 도 1의 저장 장치에서의 데이터 저장 방법의 제 1 실시예를 나타내는 순서도이다.
도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 도 1의 저장 장치(100) 및 이의 데이터 저장 방법(200)은 기입 명령어(WCMD)에 포함되는 데이터가, 기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)에 대하여 플래시 메모리(160)에 저장되어 있는 데이터와 동일한지를 판단하기 위해, 다음과 같은 동작을 수행한다.
본 발명의 실시예에 따른 저장 장치(100) 및 이의 데이터 저장 방법(200)은 먼저, 플래시 메모리(160)에 데이터를 저장하고자 호스트(HOST)로부터 전송되는 기입 명령어(WCMD)를 인터페이스부(120)를 통해 수신한다(S210). 호스트(HOST)로부터 기입 명령어(WCMD)가 수신되면, 컨트롤러(140)의 DRAM 제어부(142)는 수신된 기입 명령어(WCMD)에 포함되는 데이터가 DRAM(180)에 존재하는지를 판단할 수 있다(S220).
예를 들어, 본 발명의 실시예에 따른 도 1의 저장 장치(100) 및 이의 데이터 저장 방법(200)은 컨트롤러(140)의 DRAM 제어부(142)에 의하여, 수신된 기입 명령어(WCMD)에 포함되는 논리 블럭 주소(LBA: Logical Block Address)가 DRAM(180)에 존재하는지로 수신된 기입 명령어(WCMD)에 포함되는 데이터가 DRAM(180)에 존재하는지를 판단할 수 있다.
기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존재하지 아니한다면(S220의 "NO"), 컨트롤러(140)의 플래시 메모리 제어부(144)는 플래시 메모리(160)로부터 논리 블록 주소(LBA)에 대응되는 영역에 저장되어 있는 데이터를 독출할 수 있다(S230). 플래시 메모리(160)로부터 독출된 데이터는 DRAM(180)에 기입될 수 있다(S240).
반면, 기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존 재하는 경우(S220의 "YES"), 오류 검출 정보 체크부(146)는 기입 명령어(WCMD)에 포함되어 수신되는 데이터에 오류 검출 정보와, DRAM(180)에 저장되어 있는 대응되는 데이터(기입 명령어에 포함되는 논리 블록 주소와 같은 논리 블록 주소에 대한 데이터)의 오류 검출 정보를 비교할 수 있다(S250).
컨트롤러(140)는 데이터가 호스트로부터 수신되면, 수신된 데이터에 대한 오류 검출 정보를 생성한다. 캐시 메모리(180)에는 특정 단위의 데이터에 대응되는 오류 검출 정보를 저장한다. 예를 들어, 캐시 메모리(180)에는 각 섹터에 대응되는 오류 검출 정보를 저장할 수 있다. 이하에서는, 호스트로부터 수신된 데이터에 대하여 생성되는 오류 검출 정보를 제1 오류 검출 정보라 하고, DRAM(180)에 저장되어 있는 데이터에 대한 오류 검출 정보를 제2 오류 검출 정보라 하여 양자를 구분한다.
오류 검출 정보란 데이터를 송수신(또는 처리)함에 있어 데이터의 신뢰성을 담보하기 위해, 송수신(처리)되는 데이터의 임의의 비트 등에 오류가 존재하는지를 나타내는 정보를 말한다. 널리 알려진 오류 검출 방식으로는 CRC(Cycle Redundancy Check), 패리티(Parity) 및 체크섬(Checksum) 등이 있다. 오류 검출 정보는 CRC(Cycle Redundancy Check), 패리티(Parity) 및 체크섬(Checksum) 등 중 하나의 방식에 의해 생성되거나, 복수개의 방식의 결합에 의해 생성될 수 있다.
이하에서는 설명의 편의를 위해, 본 발명의 실시예에 따른 오류 검출 정보가 CRC(Cycle Redundancy Check) 방식에 의하여 생성되는 경우에 한하여 기재된다. 이하의 기재로부터, 그 밖의 오류 검출 방식에 의해 생성되는 오류 검출 정보도 용이 하게 실시될 수 있을 것이다.
CRC(Cycle Redundancy Check)는 순환 중복 검사를 나타내는 것으로, 호스트로부터 전송된 데이터가 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식에 대한 것이다. CRC 값은 가환환(commutatice ring)의 나눗셈에 기반하여 산출될 수 있는데, 이는 본 발명이 속하는 기술분야의 당업자가 용이하게 실시할 수 있는 사항이다.
컨트롤러(140)의 오류 검출 정보 체크부(146)는 수신된 데이터의 CRC 값을 계산한다. 그리고, 컨트롤러(140)의 오류 검출 정보 체크부(146)는 호스트로부터 수신된 데이터에 대하여 생성되는 제1 오류 검출 정보(이하, 제1 CRC 값이라 한다)와, DRAM(180)에 저장되어 있는 데이터에 대한 제2 오류 검출 정보(이하, 제2 CRC 값이라 한다)를 비교할 수 있다(S250).
DRAM(180)에 저장되어 있는 대응되는 데이터는 DRAM 제어부(142)에 의하여 논리 블록 주소(LBA)가 디램에 존재하는 것으로 판단된 경우(S220의 "YES")의 해당 논리 블록 주소(LBA)에 대한 데이터이거나, DRAM 제어부(142)에 의하여 논리 블록 주소(LBA)가 디램에 존재하지 아니하는 것으로 판단되어(S220의 "NO") 플래시 메모리(160)로부터 독출된 후 DRAM(180)에 기입(S240)된 데이터일 수 있다.
비교 결과, 제1 CRC 값과 제2 CRC 값이 상이하다면(S250의 "NO"), 기입 명령어(WCMD)에 포함되는 데이터와 DRAM(180)에 저장되어 있는 데이터가 다를 수 있다. 이 경우, 컨트롤러(140)는 도 2의 S270 및 S280을 수행한다. 도 2의 S270 및 S280에 대한 더 자세한 설명은 후술된다.
계속해서 도 1 및 도 2를 참조하면, 제1 CRC 값과 제2 CRC 값이 같은 경우(S250의 "YES"), 컨트롤러(140)의 데이터 비교부(148)는 기입 명령어(WCMD)에 포함되는 데이터와, 이에 대응되는 DRAM(180)의 데이터를 비교할 수 있다(S260).
기입 명령어(WCMD)에 포함되는 데이터와 DRAM(180)에 저장되어 있는 데이터가 동일한 경우(S260의 "YES"), 본 발명의 실시예에 따른 저장 장치(100) 및 이의 데이터 저장 방법(200)은 플래시 메모리에 대한 별도의 기입(저장) 동작을 수행하지 아니할 수 있다(종료). 이미 플래시 메모리(160)의 해당 논리 블록 주소(LBA), 기입 명령어(WCMD)에 포함되고 해당 논리 블록 주소(LBA)에 저장하고자 하는 데이터와 동일한 데이터가 저장되어 있기 때문이다.
이때, 컨트롤러(140)는 호스트(HOST)에게 데이터 저장 동작이 완료되었음을 알릴 수 있다.
이상에서 기술된 바와 같이, 본 발명의 실시예에 따른 저장 장치(100) 및 이의 데이터 저장 방법(200)은 기입 명령어(WCMD)에 포함되는 데이터가, 기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)에 대응되는 플래시 메모리(160)의 저장 영역에 저장되어 있는 데이터와 동일한지를 판단한다.
그런데, 양자가 상이한 경우, 즉 제1 CRC 값과 제2 CRC 값이 상이하면(S250의 "NO"), 컨트롤러(140)의 플래시 메모리 제어부(144)는 플래시 메모리(160)에 기입 명령어(WCMD)에 포함되는 데이터를 기입(저장)한다(S280). 기입 명령어(WCMD)에 포함되는 데이터와 디램에 저장되어 있는 대응되는 데이터가 다른 경우(S260의 "NO")도 마찬가지이다.
이때, 컨트롤러(140)의 플래시 메모리 제어부(144)는 플래시 메모리(160)에 해당 데이터를 기입(S280)하기에 앞서, 오류 검출 정보 룩-업 테이블(미도시)을 업데이트할 수 있다(S270). 오류 검출 정보 룩-업 테이블은 각 섹터에 대한 오류 검출 정보를 포함할 수 있다. 전술한 바와 같이, 제1 오류 검출 정보와 제2 오류 검출 정보가 각각 CRC 방식에 따라 생성되는 제1 CRC 값 및 제2 CRC 값인 경우, 오류 검출 정보 룩-업 테이블은 CRC 룩-업 테이블(CRC Look-up Table)이 구비될 수 있다. 이하에서는 설명의 편의를 위해 CRC 룩-업 테이블인 경우에 한하여 설명된다.
컨트롤러(140)의 플래시 메모리 제어부(144)는 플래시 메모리(160)에 저장되어 있는 데이터에 대한 CRC 값을 나타내는 CRC 룩-업 테이블(미도시)을 구비할 수 있다. 다만, 이에 한정되는 것은 아니고, CRC 룩-업 테이블은 플래시 메모리 제어부와 별도로 구비될 수도 있다.
바람직하게는, CRC 룩-업 테이블은 도 3에 도시되는 바와 같이, 플래시 메모리(160)의 각 논리 블럭 주소(LBA)에 대한, 즉 각 논리 블럭 주소에 대응되는 데이터(또는 페이지)에 대한 CRC 값을 포함할 수 있다. 이때, CRC 룩-업 테이블을 업데이트한다 함이란, 해당 논리 블록 주소(LBA)에 대한 CRC 값을, S280 단계에서 플래시 메모리(160)에 기입하고자 하는 데이터에 대한 CRC 값으로 업데이트함을 말한다.
예를 들어, CRC 룩-업 테이블의 인덱스 1에 저장되어 있는 논리 블록 주소 LBA10에 대한 CRC 값 CRC10을 플래시 메모리(160)에 저장하고자 하는 데이터에 대한 CRC 값 CRC10'로 변경할 수 있다. 또는, CRC 룩-업 테이블의 인덱스 3에 새로운 논리 블럭 주소인 LBA0에 대한 CRC 값인 CRC0을 기입할 수 있다.
다시 도 1 및 도 2를 참조하면, 전술한 바와 같이, CRC 룩-업 테이블에 대한 업데이트가 완료되면(S270), 기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)에 대응되는 플래시 메모리의 영역에, 기입 명령어(WCMD)에 포함되는 데이터를 저장할 수 있다.
이렇듯, 본 발명의 실시예에 따른 저장 장치(100) 및 이의 데이터 저장 방법(200)은 호스트로부터 수신되는 데이터를 상기와 같이 필터링하여, 이미 플래시 메모리에 저장되어 있는 데이터에 대하여는 기입 동작을 수행하지 아니함으로써, 플래시 메모리로의 데이터 기입 횟수를 줄일 수 있다. 따라서, 플래시 메모리의 쓰기 내구성 (write endurance) 특성을 향상시킬 수 있다.
전술한 바와 같이, 플래시 메모리의 쓰기 내구성 (write endurance) 특성이 향상됨으로써, 플래시 메모리를 구비하는 저장 장치의 신뢰성이 향상되고 수명이 증대될 수 있다.
도 4는 도 1의 저장 장치에서의 본 발명의 제 2 실시예에 따른 데이터 저장 방법을 나타내는 순서도이다.
도 1 및 도 4를 참조하면, 도 1의 저장 장치(100)에서의 본 발명의 제 2 실시예에 따른 데이터 저장 방법(400)은 먼저, 플래시 메모리(160)에 저장하고자 호스트로부터 전송되는 기입 명령어(WCMD)를 수신한다(S410). 호스트(HOST)로부터 기입 명령어(WCMD)가 수신되면(S210), 본 발명의 제 2 실시예에 따른 데이터 저장 방법(400)은, 도 2의 데이터 저장 방법과 마찬가지로, 기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존재하는지를 판단한다(S420).
기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존재하는 경우(S420의 "YES"), 본 발명의 제 2 실시예에 따른 데이터 저장 방법(400)은 도 2의 데이터 저장 방법(200)과 마찬가지로, 제1 CRC 값과 제2 CRC 값을 비교할 수 있다(S430).
기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존재하는 경우(S420의 "YES"), 본 발명의 제 2 실시예에 따른 데이터 저장 방법(400)의 동작은 도 2의 데이터 저장 방법과 동일할 수 있다. 예를 들어, 제1 CRC 값과 제2 CRC 값을 비교하고(S430), 기입 명령어(WCMD)에 포함되는 데이터와 DRAM(180)에 저장되는 데이터를 비교하여(S440), 그 비교 결과에 따라 기입 명령어(WCMD)에 포함되는 데이터를 플래시 메모리(160)에 기입(S460)하거나, 별도의 기입 동작을 수행하지 아니할 수 있다(S440의 "YES").
반면, 기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존재하지 아니하는 경우(S420의 "NO"), 도 2의 데이터 저장 방법(200)과 달리, 본 발명의 제 2 실시예에 따른 데이터 저장 방법(400)은 플래시 메모리(160)로부터 데이터를 독출하지 아니하고 플래시 메모리(160)에 기입 명령어(WCMD)에 포함되는 데이터를 기입한다(S460). 플래시 메모리(160)에 데이터를 기입(S460)하기에 앞서, CRC 룩-업 테이블을 업데이트(S450)하는 것은 도 2의 데이터 저장 방법과 같다.
도 5는 도 1의 저장 장치에서의 본 발명의 제 3 실시예에 따른 데이터 저장 방법을 나타내는 순서도이다.
도 1 및 도 5를 참조하면, 도 1의 저장 장치(100)에서의 본 발명의 제 3 실시예에 따른 데이터 저장 방법(500)은 플래시 메모리(160)에 저장하고자 호스트로부터 전송되는 기입 명령어(WCMD)를 수신한다(S510).
호스트(HOST)로부터 기입 명령어(WCMD)가 수신되면, 컨트롤러(140)의 DRAM 제어부(142)는 수신된 기입 명령어(WCMD)에 포함되는 데이터가 DRAM(180)에 존재하는지를 판단할 수 있다(S520). 전술한 바와 같이, 이는 컨트롤러(140)의 DRAM 제어부(142)에 의하여, 수신된 기입 명령어(WCMD)에 포함되는 논리 블럭 주소(LBA: Logical Block Address)가 DRAM(180)에 존재하는지로 판단할 수 있다.
기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존재하지 아니한다면(S520의 "NO"), 컨트롤러(140)의 플래시 메모리 제어부(144)는 플래시 메모리(160)로부터 논리 블록 주소(LBA)에 대응되는 영역에 저장되어 있는 데이터를 독출할 수 있다(S530). 플래시 메모리(160)로부터 독출된 데이터는 DRAM(180)에 기입될 수 있다(S540).
반면, 기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존재하는 경우(S520의 "YES"), 도 2의 데이터 저장 방법(200)이 제1 CRC 값과 제2 CRC 값을 비교하는 동작 후에 기입 명령어(WCMD)에 포함되는 데이터와, 이에 대응되는 DRAM(180)의 데이터를 비교하였던 것과 달리, 본 발명의 제 3 실시예에 따른 데이터 저장 방법(500)은, CRC 값의 비교를 수행하지 아니하고 바로 기입 명령어(WCMD)에 포함되는 데이터와, 이에 대응되는 DRAM(180)의 데이터를 비교할 수 있다(S550).
기입 명령어(WCMD)에 포함되는 데이터와 DRAM(180)에 저장되어 있는 데이터가 동일한 경우(S550의 "YES"), 본 발명의 실시예에 따른 저장 장치(100) 및 이의 데이터 저장 방법(500)은 플래시 메모리에 대한 별도의 기입(저장) 동작을 수행하지 아니할 수 있다(종료). 전술한 바와 같이, 플래시 메모리(160)의 해당 논리 블록 주소(LBA), 기입 명령어(WCMD)에 포함되고 해당 논리 블록 주소(LBA)에 저장하고자 하는 데이터와 동일한 데이터가 저장되어 있기 때문이다.
반면, 기입 명령어(WCMD)에 포함되는 데이터와 DRAM(180)에 저장되어 있는 데이터가 상이한 경우(S550의 "NO"),플래시 메모리(160)에 기입 명령어(WCMD)에 포함되는 데이터를 기입한다(S570). 플래시 메모리(160)에 데이터를 기입(S460)하기에 앞서, CRC 룩-업 테이블을 업데이트(S560)하는 것은 도 2의 데이터 저장 방법(200)과 같다.
도 6은 도 1의 저장 장치에서의 본 발명의 제 4 실시예에 따른 데이터 저장 방법을 나타내는 순서도이다.
도 1 및 도 6을 참조하면, 도 1의 저장 장치(100)에서의 본 발명의 제 4 실시예에 따른 데이터 저장 방법(600)은 도 4의 데이터 저장 방법(400)과 마찬가지로, 호스트(HOST)로부터 기입 명령어(WCMD)를 수신하고(S610), 기입 명령어(WCMD)에 포함되는 논리 블록 주소(LBA)가 DRAM(180)에 존재하는지를 판단한다(S620).
본 발명의 제 4 실시예에 따른 데이터 저장 방법(600)에서 논리 블록 주소(LBA)가 DRAM(180)에 존재하지 아니하는 경우(S620의 "NO")의 동작은, 도 4의 데이터 저장 방법(400)과 동일하다.
반면, 본 발명의 제 4 실시예에 따른 데이터 저장 방법(600)은, 논리 블록 주소(LBA)가 DRAM(180)에 존재하는 경우(S620의 "YES"), 도 4의 데이터 저장 방법(400)과 달리, 제1 CRC 값과 제2 CRC 값을 비교하는 동작이 생략되고, 바로 기입 명령어(WCMD)에 포함되는 데이터와, 이에 대응되는 DRAM(180)의 데이터를 비교할 수 있다(S630).
기입 명령어(WCMD)에 포함되는 데이터와 DRAM(180)에 저장되어 있는 데이터가 동일한 경우(S630의 "YES"), 도 4의 데이터 저장 방법(400)과 같이 플래시 메모리로의 별도의 데이터 저장 동작을 수행하지 아니한다(종료). 기입 명령어(WCMD)에 포함되는 데이터와 DRAM(180)에 저장되어 있는 데이터가 상이한 경우(S630의 "NO"), 플래시 메모리(160)에 기입 명령어(WCMD)에 포함되는 데이터를 기입하고(S650), 플래시 메모리(160)에 데이터를 기입(S460)하기에 앞서 CRC 룩-업 테이블을 업데이트(S640)하는 것은 도 4의 데이터 저장 방법(400)과 같다.
이렇듯, 본 발명의 실시예들에 따른 저장 장치 및 이의 데이터 저장 방법에 의하면, 플래시 메모리로의 데이터 기입 횟수를 줄여, 플래시 메모리의 쓰기 내구성 (write endurance) 특성을 향상시킬 수 있다. 따라서, 전술한 바와 같이, 플래시 메모리를 구비하는 저장 장치의 수명을 증대시키고, 신뢰성을 향상시킬 수 있다. 전술된 다양한 실시예들은 시스템 사양 및 사용자의 요구 등에 따라 다양하게 선택되어 적용될 수 있을 것이다.
도 7은 본 발명의 실시예에 따른 저장 장치를 구비하는 컴퓨팅 시스템 장치를 나타내는 블럭도이다.
본 발명에 따른 컴퓨팅 시스템 장치(700)는 버스(760)에 전기적으로 연결된 마이크로프로세서(730), 사용자 인터페이스(750), 그리고 플래시 메모리를 구비하는 도 1의 저장 장치(100)을 포함할 수 있다. 플래시 메모리를 구비하는 저장 장치(100)에는 마이크로프로세서(730)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 저장될 것이다. 본 발명에 따른 컴퓨팅 시스템 장치(700)는 나아가, 램(740) 및 파워 공급 장치(720)을 더 구비할 수 있다.
본 발명에 따른 컴퓨팅 시스템 장치(700)가 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리 및 베이스밴드 칩셋(baseband chipset)과 같은 모뎀이 추가적으로 제공될 수 있다. 또한, 본 발명에 따른 컴퓨팅 시스템 장치(1000)에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명한 사항인 바, 더 자세한 설명은 생략한다.
상기에서 설명된 본 발명에 따른 플래시 메모리는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다.
그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 저장 장치를 나타내는 블럭도이다.
도 2는 도 1의 저장 장치에서의 데이터 저장 방법의 제 1 실시예를 나타내는 순서도이다.
도 3은 CRC 룩-업 테이블의 일 예를 설명하기 위한 도면이다.
도 4는 도 1의 저장 장치에서의 본 발명의 제 2 실시예에 따른 데이터 저장 방법을 나타내는 순서도이다.
도 5는 도 1의 저장 장치에서의 본 발명의 제 3 실시예에 따른 데이터 저장 방법을 나타내는 순서도이다.
도 5는 도 1의 저장 장치에서의 본 발명의 제 4 실시예에 따른 데이터 저장 방법을 나타내는 순서도이다.
도 7은 본 발명의 실시예에 따른 저장 장치를 구비하는 컴퓨팅 시스템 장치를 나타내는 블럭도이다.

Claims (10)

  1. 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법에 있어서,
    호스트로부터 상기 플래시 메모리에 저장하고자 하는 데이터 및 상기 데이터를 저장하고자 하는 플래시 메모리의 논리 블록 주소를 수신하는 단계;
    상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는지를 판단하는 단계;
    상기 판단하는 단계를 수행한 후, 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는 경우, 상기 플래시 메모리에 저장하고자 하는 데이터에 대한 제1 오류 검출 정보와, 상기 논리 블록 주소에 대해 상기 캐시 메모리에 저장되어 있는 데이터에 대한 제2 오류 검출 정보를 비교하는 단계; 및
    상기 제1 오류 검출 정보와 상기 제2 오류 검출 정보를 비교하는 단계를 수행한 후, 상기 제1 오류 검출 정보와 상기 제2 오류 검출 정보가 동일한 경우, 상기 호스트로부터 전송된 데이터와 상기 캐시 메모리에 저장되어 있는 데이터를 비교하는 단계를 구비하고,
    상기 호스트로부터 전송된 데이터와 상기 캐시 메모리에 저장되어 있는 데이터가 동일한 경우, 상기 호스트로부터 수신되는 데이터를 상기 플래시 메모리에 저장하지 아니하는 것을 특징으로 하는 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법.
  2. 제 1 항에 있어서,
    상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하지 아니하는 경우,
    상기 데이터 저장 방법은,
    상기 플래시 메모리로부터 상기 논리 블록 주소에 대한 데이터를 독출하는 단계; 및
    상기 플래시 메모리로부터 독출된 데이터를 상기 캐시 메모리에 기입하는 단계를 더 구비하는 것을 특징으로 하는 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법.
  3. 제 1 항에 있어서,
    상기 제1 오류 검출 정보와 제2 오류 검출 정보가 동일하지 아니하거나, 상기 호스트로부터 전송된 데이터와 상기 캐시 메모리에 저장되어 있는 데이터가 동일하지 아니하는 경우,
    상기 데이터 저장 방법은,
    상기 플래시 메모리에 상기 호스트로부터 전송된 데이터를 저장하는 단계를 더 구비하는 것을 특징으로 하는 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법.
  4. 제 1 항에 있어서,
    상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하지 아니하는 경우,
    상기 데이터 저장 방법은,
    상기 플래시 메모리에 상기 호스트로부터 전송된 데이터를 저장하는 단계를 더 구비하는 것을 특징으로 하는 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법.
  5. 제 1 항에 있어서, 상기 제1 오류 검출 정보 및 제2 오류 검출 정보는,
    CRC(Cycle Redundancy Check), 패리티(Parity) 및 검사합(checksum) 중 적어도 하나의 방식에 의해 생성되는 것을 특징으로 하는 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법.
  6. 제 1 항에 있어서, 상기 저장 장치는,
    SSD(Solid State Drive)인 것을 특징으로 하는 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법.
  7. 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법에 있어서,
    호스트로부터 상기 플래시 메모리에 저장하고자 하는 데이터 및 상기 데이터를 저장하고자 하는 플래시 메모리의 논리 블록 주소를 수신하는 단계;
    상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는지를 판단하는 단계;
    상기 판단하는 단계를 수행한 후, 상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하는 경우, 상기 호스트로부터 전송된 데이터에 대한 제1 오류 검출 정보와 상기 논리 블록 주소에 대하여 상기 캐시 메모리에 저장되어 있는 데이터에 대한 제2 오류 검출 정보를 비교하는 단계;
    상기 논리 블록 주소가 상기 저장 장치의 캐시 메모리에 존재하지 않는 경우, 상기 호스트로부터 전송된 데이터에 대한 제1 오류 검출 정보와, 상기 논리 주소에 대해 상기 플래시 메모리에 저장된 데이터를 상기 캐시 메모리에 기입하고, 상기 캐시 메모리에 기입된 데이터에 대한 제2 오류 검출 정보를 비교하는 단계; 및
    상기 제1 오류 검출 정보와 제2 오류 검출 정보가 동일한 경우, 상기 호스트로부터 전송된 데이터와, 상기 캐시 메모리에 저장되어 있는 데이터 또는 상기 캐시 메모리에 기입된 데이터를 비교하는 단계를 구비하고,
    상기 호스트로부터 전송된 데이터와, 상기 캐시 메모리에 저장되어 있는 데이터 또는 상기 캐시 메모리에 기입된 데이터가 동일한 경우, 상기 호스트로부터 수신되는 데이터를 상기 플래시 메모리에 저장하지 아니하는 것을 특징으로 하는 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법.
  8. 삭제
  9. 제 7 항에 있어서, 상기 데이터 저장 방법은,
    상기 호스트로부터 전송된 데이터와, 상기 캐시 메모리에 저장되어 있는 데이터 또는 상기 캐시 메모리에 기입된 데이터가 동일하지 아니하는 경우,
    상기 플래시 메모리에 상기 호스트로부터 전송된 데이터를 저장하는 단계를 더 구비하는 것을 특징으로 하는 플래시 메모리를 구비하는 저장 장치에서의 데이터 저장 방법.
  10. 플래시 메모리;
    캐시 메모리;
    호스트로부터 상기 플래시 메모리에 저장하고자 하는 데이터 및 상기 데이터를 저장하고자 하는 플래시 메모리의 논리 블록 주소를 포함하는 기입 명령어를 수신하는 인터페이스부; 및
    상기 기입 명령어에 포함되는 논리 블록 주소가 상기 캐시 메모리에 존재하는 경우,
    상기 플래시 메모리에 저장하고자 하는 데이터에 대한 제1 오류 검출 정보와 상기 논리 블록 주소에 대해 상기 캐시 메모리에 저장되어 있는 데이터에 대한 제2 오류 검출 정보를 비교하고, 다음으로 상기 플래시 메모리에 저장하고자 하는 데이터와 상기 캐시 메모리에 저장되어 있는 데이터가 동일한지 판단하여,
    상기 플래시 메모리에 상기 기입 명령어에 포함되는 데이터를 저장할지 여부를 판단하는 컨트롤러를 구비하고,
    상기 컨트롤러는,
    상기 기입 명령어에 포함되는 논리 블록 주소가 상기 캐시 메모리에 존재하지 아니하거나, 상기 제1 오류 검출 정보와 제2 오류 검출 정보가 상기하거나, 상기 기입 명령어에 포함되는 데이터와 상기 캐시 메모리에 저장되어 있는 데이터가 상이한 경우,
    상기 기입 명령어에 포함되는 데이터를 상기 플래시 메모리에 저장하지 아니하는 것을 특징으로 하는 저장 장치.
KR1020090051951A 2009-06-11 2009-06-11 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법 KR101631162B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090051951A KR101631162B1 (ko) 2009-06-11 2009-06-11 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법
US12/780,980 US9037776B2 (en) 2009-06-11 2010-05-17 Storage device with flash memory and data storage method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090051951A KR101631162B1 (ko) 2009-06-11 2009-06-11 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법

Publications (2)

Publication Number Publication Date
KR20100133193A KR20100133193A (ko) 2010-12-21
KR101631162B1 true KR101631162B1 (ko) 2016-06-17

Family

ID=43307478

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090051951A KR101631162B1 (ko) 2009-06-11 2009-06-11 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법

Country Status (2)

Country Link
US (1) US9037776B2 (ko)
KR (1) KR101631162B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11693589B2 (en) 2020-10-13 2023-07-04 SK Hynix Inc. Storage device using cache buffer and method of operating the same

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8891298B2 (en) * 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
US8793419B1 (en) * 2010-11-22 2014-07-29 Sk Hynix Memory Solutions Inc. Interface between multiple controllers
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
KR20150010717A (ko) 2012-04-27 2015-01-28 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 메모리 디바이스의 보호
US9292379B2 (en) * 2013-09-28 2016-03-22 Intel Corporation Apparatus and method to manage high capacity storage devices
TWI522804B (zh) * 2014-04-23 2016-02-21 威盛電子股份有限公司 快閃記憶體控制器以及資料儲存裝置以及快閃記憶體控制方法
KR102179829B1 (ko) * 2014-07-10 2020-11-18 삼성전자주식회사 런 타임 배드 셀을 관리하는 스토리지 시스템
KR102504291B1 (ko) * 2016-02-03 2023-02-27 삼성전자 주식회사 버퍼 메모리 관리 방법 및 이를 이용한 라이트 동작 수행 방법
US20180121353A1 (en) * 2016-10-27 2018-05-03 Intel Corporation System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling
US10049047B1 (en) 2017-03-10 2018-08-14 Toshiba Memory Corporation Multibit NAND media using pseudo-SLC caching technique
US10095626B2 (en) 2017-03-10 2018-10-09 Toshiba Memory Corporation Multibit NAND media using pseudo-SLC caching technique
CN107832236B (zh) * 2017-10-24 2021-08-03 记忆科技(深圳)有限公司 一种提高固态硬盘写性能的方法
KR20200075519A (ko) * 2018-12-18 2020-06-26 현대자동차주식회사 3차원 적층 메모리의 이중화 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030110356A1 (en) 2001-12-11 2003-06-12 Williams Gerard Richard Merging cache linefill

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
JPH10198608A (ja) * 1997-01-08 1998-07-31 Mitsubishi Electric Corp メモリカード
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6658533B1 (en) * 2000-09-21 2003-12-02 Intel Corporation Method and apparatus for write cache flush and fill mechanisms
JP2003256266A (ja) 2002-02-28 2003-09-10 Hitachi Ltd メモリ装置
WO2004059499A2 (en) * 2002-12-30 2004-07-15 Koninklijke Philips Electronics N.V. Memory controller and method for writing to a memory
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7496710B1 (en) * 2005-04-01 2009-02-24 Sun Microsystems, Inc. Reducing resource consumption by ineffective write operations
JP2007034431A (ja) 2005-07-22 2007-02-08 Fuji Xerox Co Ltd メモリ制御装置
KR20070060301A (ko) * 2005-12-08 2007-06-13 삼성전자주식회사 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버
JP4910402B2 (ja) 2006-01-26 2012-04-04 富士ゼロックス株式会社 不揮発性メモリの書き換え装置及び書き換え方法
JP4418439B2 (ja) * 2006-03-07 2010-02-17 パナソニック株式会社 不揮発性記憶装置およびそのデータ書込み方法
JP4372134B2 (ja) * 2006-09-29 2009-11-25 株式会社日立製作所 データ比較機能を有するストレージシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030110356A1 (en) 2001-12-11 2003-06-12 Williams Gerard Richard Merging cache linefill

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11693589B2 (en) 2020-10-13 2023-07-04 SK Hynix Inc. Storage device using cache buffer and method of operating the same

Also Published As

Publication number Publication date
US9037776B2 (en) 2015-05-19
US20100318879A1 (en) 2010-12-16
KR20100133193A (ko) 2010-12-21

Similar Documents

Publication Publication Date Title
KR101631162B1 (ko) 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법
US8499217B2 (en) Memory device and error control codes decoding method
US9817711B2 (en) Memory controller
US9891991B2 (en) Decoding method, memory storage device and memory control circuit unit
US20190312593A1 (en) Decoding method and storage controller
US20100287427A1 (en) Flash Memory Device and Flash Memory Programming Method Equalizing Wear-Level
TWI592869B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US8230157B2 (en) Memory device and method of multi-bit programming
US10977116B2 (en) Data access method, memory control circuit unit and memory storage device
US20230297464A1 (en) Abnormal power loss recovery method, memory control circuit unit, and memory storage device
CN107146638B (zh) 译码方法、存储器储存装置及存储器控制电路单元
US11301311B2 (en) Memory control method, memory storage device, and memory control circuit unit
CN111078146B (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
CN111580741B (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
CN106681856B (zh) 解码方法、存储器存储装置及存储器控制电路单元
CN111538687B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
US9996415B2 (en) Data correcting method, memory control circuit unit, and memory storage device
US10713160B1 (en) Data writing method, memory control circuit unit and memory storage device
US11139044B2 (en) Memory testing method and memory testing system
CN109783001B (zh) 数据编码方法、数据解码方法以及存储控制器
CN107608817B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US8583855B2 (en) Flash memory preprocessing system and method
CN111831210B (zh) 存储器管理方法、存储器控制电路单元及存储器存储装置
CN111326186B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
US11430538B1 (en) Memory control method, memory storage device, and memory control circuit unit

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 4