KR102146037B1 - 불휘발성 메모리 시스템 및 그것의 동작 방법 - Google Patents

불휘발성 메모리 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102146037B1
KR102146037B1 KR1020130138418A KR20130138418A KR102146037B1 KR 102146037 B1 KR102146037 B1 KR 102146037B1 KR 1020130138418 A KR1020130138418 A KR 1020130138418A KR 20130138418 A KR20130138418 A KR 20130138418A KR 102146037 B1 KR102146037 B1 KR 102146037B1
Authority
KR
South Korea
Prior art keywords
user data
data
nonvolatile memory
memory
user
Prior art date
Application number
KR1020130138418A
Other languages
English (en)
Other versions
KR20150055879A (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 KR1020130138418A priority Critical patent/KR102146037B1/ko
Priority to US14/541,303 priority patent/US9542264B2/en
Publication of KR20150055879A publication Critical patent/KR20150055879A/ko
Application granted granted Critical
Publication of KR102146037B1 publication Critical patent/KR102146037B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Computing Systems (AREA)
  • Probability & Statistics with Applications (AREA)

Abstract

본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 복수의 페이지를 포함하는 불휘발성 메모리; 외부 장치로부터 수신된 사용자 데이터를 임시 저장하는 버퍼 메모리; 및 외부 장치의 요청에 따라 불휘발성 메모리에 사용자 데이터를 기입하거나, 읽기 데이터를 외부 장치로 전송하는 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는 외부 장치로부터 사용자 데이터를 수신하고, 외부 장치로부터 수신된 사용자 데이터를 버퍼 메모리에 저장하는 호스트 인터페이스; 버퍼 메모리에 저장된 사용자 데이터를 수신하고, 버퍼 메모리로부터 수신된 사용자 데이터를 불휘발성 메모리로 전송하는 메모리 인터페이스; 호스트 인터페이스에 수신된 사용자 데이터를 기반으로 쓰기 데이터 체크 정보를 생성하는 제 1 데이터 체크 엔진; 및 생성된 쓰기 데이터 체크 정보를 기반으로 메모리 인터페이스를 통해 불휘발성 메모리로 전송될 사용자 데이터의 무결성을 검증하는 제 2 데이터 체크 엔진을 포함한다.

Description

불휘발성 메모리 시스템 및 그것의 동작 방법{NONVOLATILE MEMORY DEVICE AND OPERATING METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 더욱 상세하게는 데이터 무결성을 판별하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화 인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억 장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile Memory Device) 및 불휘발성 메모리 장치(Nonvolatile Memory Device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다.
일반적인 반도체 메모리는 메모리 컨트롤러의 제어에 따라 구동된다. 메모리 컨트롤러는 외부 장치(예를 들어, 호스트, 어플리케션 프로세서, 등)로부터 데이터, 요청 등을 수신하고 수신된 신호를 기반으로 반도체 메모리 장치를 제어한다. 이 때, 데이터가 전송 또는 수신되는 과정에서 데이터가 외부 요인에 의해 변형될 수 있다. 이러한 오류를 검출하여 데이터의 무결성을 보장하기 위하여 8 bytes의 데이터 무결성 필드(DIF; Data Integrity Field)가 사용된다. 그러나, DIF를 사용하여 데이터의 무결성을 보장하기 위해서는 불휘발성 메모리의 페이지의 사이즈 제약을 받게되므로, 사용자 데이터의 사이즈가 제한된다. 예를 들어, 하나의 페이지가 520*16 bytes의 사용자 영역을 갖는 경우, DIF를 적용하기 위해서는 512*16 bytes의 사용자 데이터가 사용자 영역에 저장될 것이다. 이 경우, 520 bytes 단위의 사용자 데이터는 지원되지 않는 문제점이 있다.
본 발명의 목적은 데이터 체크 정보를 기반으로 사용자 데이터의 무결성을 판별하되, 데이터 체크 정보를 불휘발성 메모리에 기입하지 않음으로써 증가된 용량 및 향상된 신뢰성을 갖는 불휘발성 메모리 시스템 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 복수의 페이지를 포함하는 불휘발성 메모리; 외부 장치로부터 수신된 사용자 데이터를 임시 저장하는 버퍼 메모리; 및 상기 외부 장치의 요청에 따라 상기 불휘발성 메모리에 상기 사용자 데이터를 기입하거나, 읽기 데이터를 상기 외부 장치로 전송하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 상기 외부 장치로부터 상기 사용자 데이터를 수신하고, 상기 외부 장치로부터 수신된 사용자 데이터를 상기 버퍼 메모리에 저장하는 호스트 인터페이스; 상기 버퍼 메모리에 저장된 사용자 데이터를 수신하고, 상기 버퍼 메모리로부터 수신된 사용자 데이터를 상기 불휘발성 메모리로 전송하는 메모리 인터페이스; 상기 호스트 인터페이스에 수신된 사용자 데이터를 기반으로 쓰기 데이터 체크 정보를 생성하는 제 1 데이터 체크 엔진; 및 상기 생성된 쓰기 데이터 체크 정보를 기반으로 상기 메모리 인터페이스를 통해 상기 불휘발성 메모리로 전송될 사용자 데이터의 무결성을 검증하는 제 2 데이터 체크 엔진을 포함하고, 상기 제 2 데이터 체크 엔진의 검증 결과에 따라 상기 불휘발성 메모리로 전송될 사용자 데이터의 무결성이 보장되는 경우, 상기 메모리 컨트롤러는 상기 불휘발성 메모리로 전송될 사용자 데이터를 상기 불휘발성 메모리로 전송한다.
실시 예로서, 상기 쓰기 데이터 체크 정보는 상기 사용자 데이터의 논리적 블록 어드레스 정보 및 상기 사용자 데이터를 기반으로 생성된 CRC 패리티를 포함한다.
실시 예로서, 상기 복수의 페이지들 각각은 상기 사용자 데이터를 저장하는 사용자 영역 및 논리적 페이지 넘버를 저장하는 예비 영역을 포함한다.
실시 예로서, 상기 사용자 영역의 크기는 상기 사용자 데이터의 크기와 같거나 또는 상기 사용자 데이터의 크기의 정수배이다.
실시 예로서, 상기 메모리 컨트롤러는 상기 예비 영역에 저장된 논리적 페이지 넘버를 기반으로 상기 사용자 영역에 저장된 사용자 데이터의 논리적 블록 어드레스를 연산하는 논리적 블록 어드레스 연산기를 더 포함한다.
실시 예로서, 상기 메모리 컨트롤러는 상기 외부 장치로부터 읽기 요청을 수신하고, 상기 수신된 읽기 요청에 응답하여 읽기 동작을 수행하고, 상기 읽기 동작시, 상기 메모리 인터페이스는 상기 사용자 영역에 저장된 사용자 데이터를 수신하여 상기 버퍼 메모리에 저장하고, 상기 호스트 인터페이스는 상기 버퍼 메모리에 저장된 사용자 데이터를 수신하여 상기 수신된 사용자 인터페이스를 상기 외부 장치로 전송하며, 상기 제 2 데이터 체크 엔진은 상기 연산된 논리적 블록 어드레스 및 상기 메모리 인터페이스에 수신된 사용자 데이터를 기반으로 읽기 데이터 체크 정보를 생성하고, 상기 호스트 인터페이스를 통해 상기 사용자 데이터가 상기 외부 장치로 전송될 때, 상기 제 1 데이터 체크 엔진은 상기 읽기 데이터 체크 정보를 기반으로 상기 외부 장치로 전송될 사용자 데이터의 무결성을 검증한다.
실시 예로서, 상기 읽기 데이터 체크 정보는 상기 사용자 데이터의 논리적 블록 어드레스를 포함하는 레퍼런스 태그 및 상기 사용자 데이터의 오류를 검출하기 위한 CRC 패리티를 포함하는 가드 태그를 포함한다.
실시 예로서, 읽기 동작시, 상기 사용자 데이터가 상기 외부 장치로 전송될 경우 상기 읽기 데이터 체크 정보가 제거된 후 상기 사용자 데이터가 상기 외부 장치로 전송된다.
실시 예로서, 상기 쓰기 데이터 체크 정보는 상기 사용자 데이터의 논리적 블록 어드레스를 포함하는 레퍼런스 태그 및 상기 사용자 데이터의 오류를 검출하기 위한 CRC 패리티를 포함하는 가드 태그를 포함한다.
실시 예로서, 상기 사용자 데이터가 상기 불휘발성 메모리로 전송되는 경우 상기 쓰기 데이터 체크 정보가 제거된 후 상기 사용자 데이터가 상기 불휘발성 메모리로 전송된다.
본 발명의 다른 실시 예에 따른 메모리 컨트롤러 및 불휘발성 메모리를 포함하는 불휘발성 메모리 시스템의 동작 방법은 외부 장치로부터 쓰기 요청, 사용자 데이터, 및 논리적 블록 어드레스를 수신하는 단계; 상기 수신된 쓰기 요청에 응답하여 상기 수신된 논리적 블록 어드레스 및 상기 사용자 데이터를 기반으로 쓰기 데이터 체크 정보를 생성하는 단계; 상기 사용자 데이터가 불휘발성 메모리로 전송될 때, 상기 생성된 쓰기 데이터 체크 정보를 기반으로 사용자 데이터의 무결성을 검증하는 단계; 및 상기 검증 결과에 따라 상기 사용자 데이터의 무결성이 검증된 경우 상기 외부 장치로부터 수신된 사용자 데이터를 상기 불휘발성 메모리로 전송하고, 상기 검증 결과에 따라 상기 사용자 데이터가 오류를 포함하는 경우 상기 외부 장치로 인터럽트 신호를 전송하는 단계를 포함한다.
실시 예로서, 상기 검증 결과에 따라 상기 사용자 데이터를 상기 불휘발성 메모리 장치로 전송하는 단계는, 상기 검증 결과에 따라 상기 사용자 데이터의 무결성이 검증된 경우 상기 쓰기 데이터 체크 정보를 제거하여 상기 사용자 데이터를 상기 불휘발성 메모리 전송하는 단계를 포함한다.
실시 예로서, 상기 불휘발성 메모리는 상기 수신된 사용자 데이터를 사용자 영역에 저장하고, 상기 사용자 데이터와 대응되는 논리적 페이지 넘버를 예비 영역에 저장한다.
실시 예로서, 상기 외부 장치로부터 읽기 요청을 수신하는 단계; 상기 논리적 페이지 넘버를 기반으로 상기 사용자 데이터의 논리적 블록 어드레스를 연산하는 단계; 상기 불휘발성 메모리로부터 상기 사용자 영역에 저장된 사용자 데이터를 수신하는 단계; 상기 불휘발성 메모리로부터 수신된 사용자 데이터 및 상기 연산된 논리적 블록 어드레스를 기반으로 읽기 데이터 체크 정보를 생성하는 단계; 상기 생성된 읽기 데이터 체크 정보를 기반으로 상기 불휘발성 메모리로부터 수신된 사용자 데이터의 무결성을 검증하는 단계; 및 상기 읽기 데이터 체크 정보를 기반으로 무결성을 검증하는 단계의 검증 결과에 따라 상기 불휘발성 메모리로부터 수신된 사용자 데이터를 상기 외부 장치로 전송하는 단계를 더 포함한다.
실시 예로서, 상기 읽기 데이터 체크 정보를 기반으로 무결성을 검증하는 단계의 검증 결과에 따라 상기 불휘발성 메모리로부터 수신된 사용자 데이터를 상기 외부 장치로 전송하는 단계는, 상기 불휘발성 메모리로부터 수신된 사용자 데이터의 무결성이 검증된 경우 상이 읽기 데이터 체크 정보를 제거하여 상기 불휘발성 메모리로부터 수신된 사용자 데이터를 상기 외부 장치로 전송하는 단계를 포함한다.
본 발명에 따르면, 데이터 체크 정보를 기반으로 사용자 데이터의 무결성이 보장된다. 또한, 데이터 체크 정보를 불휘발성 메모리에 기입하지 않음으로써 페이지의 사용자 영역 전체를 사용자 데이터를 저장하기 위한 저장 영역으로 사용할 수 있다. 따라서, 증가된 용량 및 향상된 신뢰성을 갖는 불휘발성 메모리 시스템 및 그것의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 컨트롤러를 상세하게 보여주는 블록도이다.
도 3은 도 1에 도시된 메모리 컨트롤러의 동작을 보여주는 순서도이다.
도 4는 도 3에 도시된 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 5는 도 1에 도시된 메모리 컨트롤러의 동작을 보여주는 순서도이다.
도 6은 도 5에 도시된 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 7은 본 발명의 기술적 사상에 따른 데이터 체크 정보의 적용 예를 예시적으로 보여주는 도면이다.
도 8은 사용자 데이터의 논리적 블록 어드레스 및 불휘발성 메모리의 논리적 페이지 넘버의 예시적인 관계를 보여주는 도면이다.
도 9는 본 발명의 기술적 사상에 따른 데이터 체크 정보의 다른 적용 예를 예시적으로 보여주는 도면이다.
도 10은 본 발명의 다른 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 불휘발성 메모리 시스템이 적용된 SSD 시스템의 예를 보여주는 블록도이다.
도 12는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 전자 장치을 예시적으로 보여주는 블록도이다.
도 13은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 모바일 시스템을 예시적으로 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세하게 설명하기 위하여 본 발명의 실시 예들을 첨부된 도면들을 참조하여 설명하기로 한다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 사용자 데이터의 무결성(integrity)를 판단하기 위하여 데이터 체크 정보를 생성하고 이를 기반으로 호스트로 전송될 사용자 데이터 또는 불휘발성 메모리로 전송될 사용자 데이터의 무결성을 검증할 수 있다. 이 때, 불휘발성 메모리 시스템은 생성된 데이터 체크 정보를 불휘발성 메모리에 저장하지 않는다. 따라서, 무결성 필드를 저장하기 위한 별도의 저장 공간이 요구되지 않으므로, 사용자 데이터를 저장할 수 있는 용량이 증가하게 된다. 따라서, 향상된 신뢰성 및 감소된 비용을 갖는 불휘발성 메모리 시스템이 제공된다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 예시적으로 보여주는 블록도이다. 예시적으로, 사용자 시스템(100)은 UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP (portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB (Digital Multimedia Broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등과 같은 컴퓨팅 시스템들 중 하나로 제공될 수 있다.
도 1을 참조하면, 사용자 시스템(100)은 호스트(101), 메모리 컨트롤러(110), 버퍼 메모리(120), 및 불휘발성 메모리(130)를 포함한다. 메모리 컨트롤러(110), 버퍼 메모리(120), 및 불휘발성 메모리(130)는 각각 하나의 반도체 칩, 하나의 반도체 모듈, 또는 하나의 반도체 장치로 제공될 수 있다. 또는 메모리 컨트롤러(110), 버퍼 메모리(120) 및 불휘발성 메모리(130)는 하나의 칩, 모듈, 또는 장치로 구현되어 불휘발성 메모리 시스템으로 제공될 수 있다. 또는 메모리 컨트롤러(110) 및 불휘발성 메모리(130)는 호스트(101) 외부에 위치하거나 또는 호스트(101) 내에 내장될 수 있다. 그러나 본 발명이 이에 한정되는 것은 아니다.
호스트(101)는 메모리 컨트롤러(110)와 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (Bmall computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, IDE (Integrated Drive Electronics) 프로토콜, MIPI (Mobile Industry Processor Interface) 프로토콜, UFS(Universal Flash Storage) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나에 기반하여 데이터를 교환할 수 있다.
호스트(101)는 불휘발성 메모리(130)에 저장된 데이터를 읽거나 불휘발성 메모리(130)에 데이터를 기입하기 위한 요청(RQ) 및 논리적 블록 어드레스(LBA)를 메모리 컨트롤러(110)로 전송할 수 있다. 호스트(101)는 메모리 컨트롤러(110)와 데이터(DATA)를 교환할 수 있다. 논리적 블록 어드레스(LBA)는 호스트(101)의 운영 체제에 의해 정의된 단위를 가리키는 어드레스일 수 있다.
메모리 컨트롤러(110)는 호스트(101)로부터 수신된 신호들에 응답하여, 불휘발성 메모리(130)에 저장된 데이터를 읽거나 불휘발성 메모리(130)에 데이터를 기입할 수 있다.
버퍼 메모리(120)는 호스트(101) 또는 불휘발성 메모리(130)로부터 수신된 데이터(DATA)를 임시 저장할 수 있다. 예시적으로, 버퍼 메모리(120)는 호스트(101)로 전송될 데이터 및 불휘발성 메모리(130)로 전송될 데이터를 임시 저장할 수 있다.
불휘발성 메모리(130)는 메모리 컨트롤러(110)의 제어에 따라 동작할 수 있다. 예시적으로, 불휘발성 메모리(130)는 사용자 시스템(100)의 스토리지로 사용될 수 있다. 예시적으로, 불휘발성 메모리(130)는 낸드 플래시, 노어 플래시, PRAM, MRAM, ReRAM, PRAM 등과 같은 불휘발성 메모리 소자들을 기반으로 구성될 수 있다. 불휘발성 메모리(130)는 복수의 블록들을 포함할 수 있다. 복수의 블록들은 복수의 페이지들을 포함할 수 있다. 복수의 페이지들 각각은 사용자 데이터를 저장하기 위한 사용자 영역 및 메타 데이터를 저장하기 위한 예비 영역을 포함할 수 있다. 예시적으로, 예비 영역은 사용자 영역에 저장된 사용자 데이터와 대응되는 논리적 페이지 넘버를 포함할 수 있다.
예시적으로, 메모리 컨트롤러(110)는 호스트(101)로부터 수신된 데이터(DATA) 및 논리적 블록 어드레스(LBA)를 기반으로 데이터 체크 정보(DC, Data Check Information)를 생성할 수 있다. 데이터 체크 정보(DC)는 불휘발성 메모리(130)로 전송될 데이터 및 호스트(101)로 전송될 데이터의 무결성을 판단하기 위한 정보를 가리킨다. 예시적으로, 데이터 체크 정보(DC)는 호스트(101)로부터 수신된 데이터 또는 불휘발성 메모리(130)로부터 수신된 데이터를 기반으로 생성된 CRC 패리티를 포함할 수 있다. 예시적으로, 데이터 체크 정보(DC)는 논리적 블록 어드레스(LBA)를 저장할 수 있다.
메모리 컨트롤러(110)는 생성된 데이터 체크 정보(DC)를 기반으로 불휘발성 메모리(130)로 전송될 데이터 및 호스트(101)로 전송될 데이터의 무결성을 판단할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 데이터 체크 정보(DC)에 포함된 CRC 패리티를 사용하여 CRC-16, CRC-32와 같은 CRC 알고리즘을 기반으로 불휘발성 메모리(130)로 전송될 데이터 및 호스트(101)로 전송될 데이터의 무결성을 판단할 수 있다.
불휘발성 메모리(130)에 저장될 데이터의 무결성이 확인된 경우, 메모리 컨트롤러(110)는 불휘발성 메모리(130)에 저장될 데이터를 불휘발성 메모리(130)로 전송할 수 있다. 이 때, 메모리 컨트롤러(110)는 데이터 체크 정보(DC)를 제외한 데이터를 불휘발성 메모리(130)로 전송할 것이다.
호스트(101)로 전송될 데이터의 무결성이 확인된 경우, 메모리 컨트롤러(110)는 호스트로 전송될 데이터를 호스트(101)로 전송할 수 있다. 이 때, 메모리 컨트롤러(110)는 데이터 체크 정보(DC)를 제외한 데이터를 호스트(101)로 전송할 것이다.
불휘발성 메모리(130)에 저장될 데이터 및 호스트(101)로 전송될 데이터에 오류가 검출된 경우, 메모리 컨트롤러(110)는 인터럽트 신호를 불휘발성 메모리(130) 및 호스트(101)로 각각 전송할 수 있다. 예시적으로, 인터럽트 신호를 수신한 불휘발성 메모리(130) 및 호스트(101)는 미리 정해진 특정 동작을 수행할 수 있다.
도 2는 도 1에 도시된 메모리 컨트롤러를 더욱 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 메모리 컨트롤러(110)는 CPU(111), SRAM(112),LBA 연산기(113), 호스트 인터페이스(114), 및 메모리 인터페이스(116)를 포함할 수 있다.
CPU(111)는 메모리 컨트롤러(110)의 제반 동작을 제어할 수 있다. SRAM(112)은 CPU(111)의 캐쉬 메모리, 임시 메모리, 또는 버퍼 메모리일 수 있다.
LBA 연산기(113)는 불휘발성 메모리(130)에 저장된 논리적 페이지 넘버(LPN)를 기반으로 논리적 블록 어드레스(LBA)를 연산할 수 있다. 예를 들어, 논리적 블록 어드레스(LBA)는 호스트(101)에 의해 정의된 단위를 기반으로 관리될 수 있다. 논리적 페이지 넘버(LPN)는 불휘발성 메모리(130)에 의해 정의된 단위를 기반으로 관리될 수 있다. 메모리 컨트롤러(110)는 논리적 블록 어드레스(LBA)가 순차적으로 논리적 페이지 넘버(LPN)에 맵핑되도록 논리적 블록 어드레스(LBA) 및 논리적 페이지 넘버(LPN)의 맵핑 관계를 관리할 것이다. LBA 연산기(113)는 상술된 맵핑 관계를 기반으로 논리적 페이지 넘버(LPN)를 사용하여 논리적 블록(LBA)를 어드레스를 연산할 수 있다.
호스트 인터페이스(114)는 호스트(101) 및 메모리 컨트롤러(110) 간 통신을 지원할 수 있다. 호스트 인터페이스(114)는 제 1 데이터 체크 엔진(115)을 포함할 수 있다. 제 1 데이터 체크 엔진(115)은 호스트(101)로부터 수신된 데이터 및 논리적 블록 어드레스(LBA)를 기반으로 데이터 체크 정보(DC)를 생성할 수 있다.
메모리 인터페이스(116)는 메모리 컨트롤러(110) 및 불휘발성 메모리(130) 간 통신을 지원할 수 있다. 메모리 인터페이스(116)는 제 2 데이터 체크 엔진(117)을 포함할 수 있다. 제 2 데이터 체크 엔진(117)은 불휘발성 메모리(130)로부터 수신된 데이터 및 논리적 블록 어드레스(LBA)를 기반으로 데이터 체크 정보(DC)를 생성할 수 있다.
예시적으로, 제 1 데이터 체크 엔진(115)은 제 2 데이터 체크 엔진(117)에 의해 생성된 데이터 체크 정보(DC)를 기반으로 호스트(101)로 전송될 데이터의 무결성을 판단할 수 있다. 제 2 데이터 체크 엔진(127)은 제 1 데이터 체크 엔진(115)에 의해 생성된 데이터 체크 정보(DC)를 기반으로 불휘발성 메모리(130)로 전송될 데이터의 무결성을 판단할 수 있다.
예시적으로, 제 1 및 제 2 데이터 체크 엔진들(125, 127)은 각각 호스트 인터페이스(124) 및 메모리 인터페이스(126) 외부에 위치할 수 있다. 제 1 및 제 2 데이터 체크 엔진들(125, 127)은 하드웨어 또는 소프트웨어 형태로 구현될 수 있다.
상술된 본 발명의 실시 예에 따르면, 메모리 컨트롤러(110)는 호스트(101)로 전송될 데이터 또는 불휘발성 메모리(130)로 전송될 데이터의 무결성을 판단할 수 있다. 이 때, 불휘발성 메모리(130)에 데이터 체크 정보(DC)를 기입하지 않음으로써 페이지의 사용자 영역의 용량 전부를 데이터를 저장하는데 사용할 수 있다. 또한, 호스트(101)의 데이터 전송폭(bandwidth)가 증가하므로, 향상된 성능 및 증가된 용량을 갖는 불휘발성 메모리 시스템이 제공된다.
도 3은 도 1에 도시된 메모리 컨트롤러의 동작을 보여주는 순서도이다. 예시적으로, 도 3을 참조하여 메모리 컨트롤러의 쓰기 동작이 설명된다. 도 1 내지 도 3을 참조하면, S110 단계에서, 메모리 컨트롤러(110)는 호스트(101)로부터 쓰기 요청(RQ), 사용자 데이터(DATA), 및 논리적 블록 어드레스(LBA)를 수신한다. 예시적으로, 수신된 사용자 데이터(DATA)는 버퍼 메모리(120)에 저장될 수 있다. 예시적으로, 논리적 블록 어드레스(LBA)는 호스트(101)의 운영체제에 의해 정의된 사용자 데이터(DATA)의 어드레스일 수 있다.
S120 단계에서, 메모리 컨트롤러(110)는 수신된 논리적 블록 어드레스(LBA) 및 사용자 데이터(DATA)를 기반으로 데이터 체크 정보(DC)를 생성할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 수신된 사용자 데이터(DATA)를 기반으로 CRC 패리티를 생성할 수 있다. 메모리 컨트롤러(110)는 생성된 CRC 패리티 및 논리적 블록 어드레스(LBA)를 기반으로 데이터 체크 정보(DC)를 생성한다. 생성된 데이터 체크 정보(DC)는 버퍼 메모리(120)에 저장될 수 있다.
S130 단계에서, 메모리 컨트롤러(110)는 불휘발성 메모리(130)로 전송될 사용자 데이터(DATA)의 무결성을 판별할 수 있다. 예를 들어, 불휘발성 메모리(130)로 전송될 사용자 데이터(DATA)는 버퍼 메모리(120)에 저장된 사용자 데이터(DATA)일 수 있다. 버퍼 메모리(130)에 저장된 사용자 데이터(DATA)는 불휘발성 메모리(130)로 전송되기 위하여 메모리 인터페이스(116)로 전송될 수 있다. 제 2 데이터 체크 엔진(117)은 생성된 데이터 체크 정보(DC)를 사용하여 CRC-16, CRC-32 등과 같은 에러 검출 알고리즘을 기반으로 불휘발성 메모리로 전송될 사용자 데이터(DATA)의 무결성을 판별할 수 있다.
판별 결과에 따라, 데이터의 무결성이 검증된 경우, S140 단계에서, 메모리 컨트롤러(110)는 불휘발성 메모리(130)로 전송될 데이터(DATA)를 불휘발성 메모리(130)로 전송한다. 예시적으로, 불휘발성 메모리(130)는 수신된 사용자 데이터(DATA)를 대응하는 페이지의 사용자 영역에 기입하고, 대응하는 논리적 페이지 넘버(LPN)를 예비 영역에 기입할 수 있다.
판별 결과에 따라 데이터에 오류가 포함된 경우, S150 단계에서, 메모리 컨트롤러(110)는 호스트(101)로 인터럽트 신호를 전송한다. 예시적으로, 호스트(101)는 수신된 인터럽트 신호에 응답하여, 사용자 데이터(DATA)를 재전송할 수 있다. 또는 호스트(101)는 수신된 인터럽트 신호에 응답하여, 미리 정해진 동작을 수행할 수 있다.
도 4는 도 3에 도시된 쓰기 동작 방법을 설명하기 위한 블록도이다. 예시적으로, 도 4를 참조하여, 사용자 데이터(DATA) 및 데이터 체크 정보(DC)의 흐름이 설명된다. 예시적으로, 사용자 데이터(DATA)의 흐름은 점선으로 도시되고, 데이터 체크 정보(DC)의 흐름은 파선으로 표시된다. 간결한 설명을 위하여, 메모리 컨트롤러(110)의 쓰기 동작을 설명하는데 불필요한 구성요소들은 생략된다.
도 4를 참조하면, 호스트(101)로부터 수신된 사용자 데이터(DATA)는 호스트 인터페이스(114)를 통해 버퍼 메모리(120)에 저장될 수 있다. 이 때, 호스트 인터페이스(114)에 포함된 제 1 데이터 체크 엔진(115)은 호스트(101)로부터 수신된 사용자 데이터(DATA)를 기반으로 데이터 체크 정보(DC)를 생성할 수 있다. 예를 들어, 제 1 데이터 체크 엔진(115)은 수신된 사용자 데이터(DATA)를 기반으로 CRC 패리티를 생성할 수 있다. 제 1 데이터 체크 엔진(115)은 생성된 CRC 패리티 및 호스트(101)로부터 수신된 논리적 블록 어드레스(LBA)를 기반으로 데이터 체크 정보(DC)를 생성할 수 있다. 생성된 데이터 체크 정보(DC)는 버퍼 메모리(120)에 저장될 수 있다.
버퍼 메모리(120)에 저장된 사용자 데이터(DATA)는 메모리 인터페이스(116)를 통해 불휘발성 메모리(130)로 전송될 수 있다. 이 때, 메모리 인터페이스(116)에 포함된 제 2 데이터 체크 엔진(117)은 버퍼 메모리(120)에 저장된 데이터 체크 정보(DC)를 기반으로 불휘발성 메모리(130)로 전송될 사용자 데이터(DATA)의 무결성을 검증할 수 있다. 예를 들어, 제 2 데이터 체크 엔진(117)은 데이터 체크 정보(DC)에 포함된 CRC 패리티를 기반으로 불휘발성 메모리(130)로 전송될 사용자 데이터(DATA)의 무결성을 검증할 수 있다. 불휘발성 메모리(130)로 전송될 사용자 데이터(DATA)의 무결성이 보장될 경우, 메모리 컨트롤러(110)는 사용자 데이터(DATA)를 불휘발성 메모리(130)로 전송한다. 예시적으로, 불휘발성 메모리(130)로 전송될 사용자 데이터(DATA)에 오류가 포함된 경우, 메모리 컨트롤러(110)는 인터럽트 신호를 호스트(101)로 전송할 수 있다.
예시적으로, 데이터 체크 정보(DC)는 불휘발성 메모리(130)로 전송되지 않는다. 즉, 불휘발성 메모리(130)의 사용자 영역(User Area)은 사용자 데이터(DATA)를 저장하고, 예비 영역(Spare Area)은 대응되는 논리적 페이지 넘버(LPN)를 저장할 수 있다. 따라서, 데이터 체크 정보(DC)를 저장하기 위한 영역이 요구되지 않으므로, 감소된 비용 및 증가된 용량을 갖는 불휘발성 메모리 시스템이 제공된다.
도 5는 도 1에 도시된 메모리 컨트롤러의 동작을 보여주는 순서도이다. 예시적으로, 도 5를 참조하여, 메모리 컨트롤러의 읽기 동작이 설명된다. 도 2 및 도 5를 참조하면, S210 단계에서, 메모리 컨트롤러(110)는 호스트(101)로부터 읽기 요청(RQ) 및 논리적 블록 어드레스(LBA)를 수신할 수 있다.
S220 단계에서, 메모리 컨트롤러(110)는 불휘발성 메모리(130)의 예비 영역(Spare Area)에 저장된 논리적 페이지 넘버(LPN)를 기반으로 논리적 블록 어드레스(LBA)를 연산할 수 있다. 메모리 컨트롤러(110)는 LBA 연산기(113)를 포함할 수 있다. LBA 연산기(113)는 불휘발성 메모리(130)의 논리적 페이지 넘버(LPN) 및 데이터의 논리적 블록 어드레스(LBA)의 대응 관계를 기반으로 논리적 블록 어드레스(LBA)를 연산할 수 있다.
예를 들어, 논리적 블록 어드레스(LBA)는 호스트(101)의 운영체제에 의해 정의된 섹터 단위에 대응되는 어드레스일 수 있다. 논리적 페이지 넘버(LPN)는 불휘발성 메모리(130)의 페이지에 대응되는 구성 요소일 수 있다. 하나의 페이지에 복수의 섹터들을 저장할 수 있다. 메모리 컨트롤러(130)는 논리적 블록 어드레스(LBA) 및 논리적 페이지 넘버(LPN)의 대응 관계를 이용하여 논리적 페이지 넘버(LPN)로부터 논리적 블록 어드레스(LBA)를 연산할 수 있다.
S230 단계에서, 메모리 컨트롤러(110)는 불휘발성 메모리(130)로부터 사용자 데이터(DATA)를 수신할 수 있다. 예시적으로, 사용자 데이터(DATA)는 호스트(101)로부터 수신된 논리적 블록 어드레스(LBA)와 대응되는 데이터일 수 있다. 예시적으로, 수신된 사용자 데이터(DATA)는 버퍼 메모리(120)에 저장될 수 있다. 예시적으로 버퍼 메모리(120)에 저장된 사용자 데이터(DATA)는 호스트(101)로 전송될 사용자 데이터일 수 있다.
S240 단계에서, 메모리 컨트롤러(110)는 수신된 사용자 데이터(DATA) 및 연산된 논리적 블록 어드레스(LBA)를 기반으로 데이터 체크 정보(DC)를 생성할 수 있다. 예시적으로, 생성된 데이터 체크 정보(DC)는 버퍼 메모리(120)에 저장될 수 있다.
S250 단계에서, 메모리 컨트롤러(110)는 생성된 데이터 체크 정보를 기반으로 호스트(101)로 전송될 사용자 데이터(DATA)의 무결성을 판별할 수 있다. 예를 들어, 제 1 데이터 체크 엔진(115)은 버퍼 메모리(120)에 저장된 데이터 체크 정보(DC)를 사용하여 CRC-16, CRC-32와 같은 오류 검출 알고리즘을 기반으로 호스트(101)로 전송될 사용자 데이터(DATA)의 무결성을 판별할 수 있다. 또한, 제 1 데이터 체크 엔진(115)은 데이터 체크 정보(DC)에 포함된 논리적 블록 어드레스(LBA) 및 호스트(101)로부터 수신된 논리적 어드레스를 비교할 수 있다.
S260 단계에서, 판별 결과에 따라 메모리 컨트롤러(110)는 사용자 데이터(DATA)를 호스트(101)로 전송할 수 있다. 예를 들어, 호스트(101)로 전송될 사용자 데이터(DATA)의 무결성이 보장되는 경우(즉, 사용자 데이터(DATA)가 오류를 포함하지 않고, 데이터 체크 정보(DC)에 포함된 논리적 블록 어드레스 및 수신된 논리적 블록 어드레스 일치하는 경우), 메모리 컨트롤러(110)는 사용자 데이터(DATA)를 호스트(101)로 전송할 수 있다. 예시적으로, 호스트(101)로 전송될 사용자 데이터가 오류를 포함하는 경우, 메모리 컨트롤러(110)는 인터럽트 신호를 전송할 수 있다. 인터럽트 신호를 수신한 호스트(101) 또는 불휘발성 메모리(130)는 미리 정해진 동작을 수행할 수 있다.
도 6은 도 5에 도시된 읽기 동작 방법을 설명하기 위한 도면이다. 예시적으로, 도 6을 참조하여 사용자 데이터(DATA) 및 데이터 체크 정보(DC)의 데이터 흐름이 설명된다. 예시적으로, 도 6에서 사용자 데이터(DATA)의 흐름은 점선으로 도시되고, 데이터 체크 정보(DC)의 흐름은 파선으로 도시된다. 간결한 설명을 위하여, 메모리 컨트롤러(110)의 읽기 동작을 설명하는데 불필요한 구성 요소들은 생략된다.
도 2 및 도 6을 참조하면, 불휘발성 메모리(130)에 저장된 사용자 데이터(DATA)는 메모리 인터페이스(116)를 통해 버퍼 메모리(120)에 저장될 수 있다. 이 때, LBA 연산기(113)는 사용자 데이터(DATA)가 저장된 페이지에 대응되는 논리적 페이지 넘버(LPN)를 기반으로 논리적 블록 어드레스(LBA)를 연산할 수 있다.
제 2 데이터 체크 엔진(117)은 연산된 논리적 블록 어드레스(LBA) 및 불휘발성 메모리(130)로부터 수신된 사용자 데이터(DATA)를 기반으로 데이터 체크 정보(DC)를 생성할 수 있다. 예를 들어, 제 2 데이터 체크 엔진(117)은 불휘발성 메모리(130)로부터 수신된 사용자 데이터(DATA)를 기반으로 CRC 패리티를 생성할 수 있다. 제 2 데이터 체크 엔진(117)은 생성된 CRC 패리티 및 연산된 논리적 블록 어드레스(LBA)를 기반으로 데이터 체크 정보(DC)를 생성할 수 있다. 생성된 데이터 체크 정보(DC)는 버퍼 메모리(120)에 저장될 수 있다.
버퍼 메모리(120)에 저장된 사용자 데이터(DATA)는 호스트 인터페이스(114)를 통해 호스트(101)로 전송될 것이다. 이 때, 제 1 데이터 체크 엔진(115)은 버퍼 메모리(120)에 저장된 데이터 체크 정보(DC)를 기반으로 호스트(101)로 전송될 사용자 데이터(DATA)의 무결성을 판단할 수 있다. 예를 들어, 제 1 데이터 체크 엔진(115)은 데이터 체크 정보(DC)를 사용하여 호스트(101)로 전송될 사용자 데이터(DATA)의 무결성을 판별할 수 있다. 제 1 데이터 체크 엔진(115)은 데이터 체크 정보(DC)에 포함된 논리적 블록 어드레스(LBA) 및 호스트(101)로부터 수신된 논리적 블록 어드레스를 비교할 수 있다. 다시 말해서, 제 1 데이터 체크 엔진(115)은 호스트(101)로 전송될 사용자 데이터(DATA)의 무결성 및 논리적 블록 어드레스(LBA)의 무결성을 판별할 수 있다.
예시적으로, 메모리 컨트롤러(110)는 데이터 체크 정보(DC)를 제외한 사용자 데이터(DATA)를 호스트(101)로 전송할 것이다.
상술된 본 발명의 실시 예들에 따르면, 메모리 컨트롤러(110)는 데이터 체크 정보(DC)를 사용하여 불휘발성 메모리(130)로 전송될 사용자 데이터 또는 호스트(101)로 전송될 사용자 데이터의 무결성을 판별할 수 있다. 또한, 호스트(101) 및 불휘발성 메모리(130)로 사용자 데이터(DATA)를 전송할 경우, 메모리 컨트롤러(110)는 데이터 체크 정보(DC)를 전송하지 않을 것이다.
즉, 데이터 체크 정보(DC)는 불휘발성 메모리(130)에 저장되지 않기 때문에, 불휘발성 메모리(130)의 사용자 영역의 용량 전체가 사용자 데이터를 저장하는데 사용될 수 있다. 즉, 호스트(101)에 의해 관리되는 사용자 데이터의 관리 단위가 증가하므로, 호스트(101)의 데이터 전송 대역폭이 증가할 수 있다. 따라서, 향상된 성능이 보장된다. 또한, 불휘발성 메모리(130)의 사용자 영역의 용량 전체가 사용자 데이터를 저장하는데 사용되기 때문에, 증가된 용량 및 감소된 비용을 갖는 불휘발성 메모리 시스템이 제공된다.
도 7은 본 발명의 기술적 사상에 따른 데이터 체크 정보의 적용 예를 예시적으로 보여주는 도면이다. 예시적으로, 도 7을 참조하여 데이터 무결성 필드(DIF, Data Integrity Field)의 적용 예가 설명된다. 예시적으로, 도 7에서 사용자 데이터(DATA)의 흐름은 점선으로 도시되고, DIF의 흐름은 파선으로 도시된다.
도 2 및 도 7을 참조하면,불휘발성 메모리(130)는 복수의 페이지들을 포함할 수 있다. 복수의 페이지들 각각은 사용자 데이터(DATA)를 저장하기 위한 사용자 영역(User Area) 및 ECC, LPN 등과 같은 메타 데이터를 저장하기 위한 예비 영역(Spare Area)을 포함한다. 예시적으로, 사용자 영역(User Area)은 520 * 16 bytes의 용량을 갖도록 구현될 수 있다. 즉, 하나의 페이지에는 520 * 16 bytes의 사용자 데이터를 저장할 수 있다. 간결한 설명을 위하여, 복수의 페이지들 중 하나의 페이지(PAGE)가 예시적으로 도 7에 도시된다.
메모리 컨트롤러(110)는 호스트(101)로부터 사용자 데이터(DATA)를 수신할 수 있다. 예를 들어, 호스트(101)로부터 수신된 사용자 데이터(DATA)는 호스트 인터페이스(114)를 통해 버퍼 메모리(120)에 저장될 수 있다. 예시적으로, 사용자 데이터(DATA)는 호스트(101)의 운영체제에 의해 정의된 저장 단위를 가질 수 있다. 예시적으로, 사용자 데이터(Data)는 520 bytes의 크기를 가질 수 있다.
불휘발성 메모리(130)로 사용자 데이터(DATA)가 전송될 때, 사용자 데이터(DATA)의 무결성을 판별하기 위하여 데이터 무결성 필드(DIF; Data Integrity Field, 이하에서 "DIF"라 칭한다.)가 사용된다. 이 때, DIF는 호스트(101)의 HBA(Host Bus Adaptor)에 의해 생성되거나, 또는 메모리 컨트롤러(110)에 의해 생성될 수 있다. DIF는 논리적 블록 어드레스(LBA)를 포함하는 레퍼런스 태그(Reference Tag), CRC 패리티를 포함하는 가드 태그(Guard Tag), 및 어플리케이션 태그(Application Tag)를 포함한다. 예시적으로, 레퍼런스 태그(Reference Tag)는 논리적 블록 어드레스(LBA)의 하위 32비트로 구성되며, 4 bytes의 크기를 갖는다. 가드 태그(Guard Tag)는 2 bytes의 CRC를 포함한다. 어플리케이션 태그(Appliation Tag)는 호스트(101)의 어플리케이션 계층(예를 들어, 운영 체제)에 의해 구성될 수 있고, 2 bytes의 크기를 갖는다. 예시적으로, DIF는 8 bytes의 저장 용량을 필요로 한다.
하나의 페이지(PAGE)의 사용자 영역(User Area)이 520 *16 bytes의 크기를 갖는 경우, DIF를 사용하여 사용자 데이터(DATA)의 무결성을 보장하기 위해서는 호스트(101)는 사용자 데이터(User Data)를 512 bytes 단위로 관리해야 한다. 그러나, 본 발명의 실시 예에 따르면 제 1 데이터 체크 엔진(115)은 DIF를 생성할 수 있다. 제 2 데이터 체크 엔진(117)은 생성된 DIF를 기반으로 불휘발성 메모리(130)로 전송될 사용자 데이터(User Data)의 무결성을 판단할 수 있다. 이 때, DIF는 불휘발성 메모리(130)에 저장되지 않을 것이다.
즉, 본 발명의 실시 예에 따르면, DIF를 불휘발성 메모리(130)에 저장하지 않고 사용자 데이터(DATA)의 무결성을 보장할 수 있으므로, 520 bytes 단위를 갖는 사용자 데이터(DATA)의 쓰기 및 읽기 동작이 지원될 수 있다. 다시 말해서, 본 발명에 따르면, 사용자 영역(User Area)의 용량 전부가 DIF의 저장 없이 사용자 데이터(DATA)를 저장하기 위한 영역으로 사용될 수 있다.
예를 들어, 사용자 데이터(DATA)의 쓰기 동작시, 메모리 컨트롤러(110)는 수신된 사용자 데이터(DATA)를 기반으로 가드 태그(다시 말해서, 쓰기 데이터의 CRC 패리티)를 생성할 수 있다. 이 후, 사용자 데이터(DATA)는 메모리 인터페이스를 통해 불휘발성 메모리(130)로 전송된다. 이 때, 제 2 데이터 체크 엔진(117)은 생성된 가드 태그(Guard Tag)를 기반으로 불휘발성 메모리(130)로 전송될 사용자 데이터(DATA)의 무결성을 체크할 것이다. 이 후, 사용자 데이터(DATA)는 불휘발성 메모리(130)의 사용자 영역에 저장된다. 예시적으로, 사용자 영역 및 사용자 데이터(DATA)는 520 bytes의 저장 용량을 가질 수 있다. 즉, DIF가 불휘발성 메모리(130)에 저장되지 않으므로, 사용자 영역 전체를 사용자 데이터의 저장 공간으로 사용할 수 있다.
상술된 본 발명의 실시 예에 따르면, 불휘발성 메모리는 복수의 페이지들을 포함하고, 복수의 페이지들 각각은 사용자 데이터를 저장하기 위한 사용자 영역 및 메타 데이터를 저장하기 위한 예비 영역을 포함한다. 사용자 영역은 520 *16 bytes의 저장 용량을 가질 수 있다. 쓰기 동작시, 메모리 컨트롤러는 520 bytes 단위의 사용자 데이터를 수신하고, DIF를 생성하여 수신된 사용자 데이터의 무결성을 체크한다. 이 후, 520 bytes의 사용자 데이터를 불휘발성 메모리의 사용자 영역에 저장한다. 예시적으로, DIF는 저장되지 않을 것이다.
비록 도면에 도시되지는 않았지만, 도 6에 도시된 방법과 동일한 방법을 기반으로 메모리 컨트롤러(110)는 읽기 동작을 수행할 수 있다. 예를 들어, 읽기 동작시 메모리 컨트롤러(110)는 예비 영역에 저장된 논리적 페이지 넘버(LPN)를 기반으로 논리적 블록 어드레스(LBA)를 연산하여, DIF를 생성할 수 있다. 메모리 컨트롤러는 생성된 DIF를 사용하여 호스트로 전송될 사용자 데이터의 무결성을 체크할 것이다. 이 후, DIF가 포함되지 않은 520 bytes의 사용자 데이터가 호스트로 전송된다. 따라서, 본 발명이 적용된 불휘발성 메모리 시스템은 DIF 스펙을 충족하여 사용자 데이터의 무결성을 판별할 수 있을 뿐만 아니라, 520 bytes의 데이터의 읽기 및 쓰기 동작을 지원할 수 있다.
도 8은 사용자 데이터의 논리적 블록 어드레스 및 불휘발성 메모리의 논리적 페이지 넘버의 예시적인 관계를 보여주는 도면이다. 도 1 및 도 8을 참조하면, 호스트(101)는 섹터 단위로 사용자 데이터를 관리할 수 있다. 불휘발성 메모리(130)는 페이지 단위로 사용자 데이터를 관리할 수 있다.
예시적으로, 하나의 페이지는 복수의 섹터들을 포함할 수 있다. 예를 들어, 논리적 블록 어드레스(LBA)는 호스트(101)의 운영체제에 의해 정의된 하나의 섹터에 대응되는 어드레스일 수 있다. 하나의 페이지는 복수의 섹터들의 데이터를 저장할 수 있다. 다시 말해서, 하나의 논리적 페이지 넘버(LPN)는 복수의 논리적 블록 어드레스들(LBA)과 대응될 수 있다. 예시적으로, 논리적 블록 어드레스(LBA)는 순차적으로 논리적 페이지 넘버(LPN)와 대응될 것이다.
예를 들어, 제 1 페이지(LPN0)는 520 * 16 bytes(8 Kbytes)의 크기를 갖는 사용자 영역을 포함할 수 있다. 제 1 내지 제 16 섹터들(LBA0~LBA15)은 각각 520 bytes일 수 있다. 즉, 제 1 내지 제 16 섹터들(LBA0~LBA15)은 제 1 페이지(LPN0)에 포함될 수 있다. 제 17 내지 제 32 섹터들(LBA16~LBA31)은 제 2 페이지(LPN1)에 포함될 수 있다. 즉, 논리적 블록 어드레스(LBA)이 순차적으로 증가하도록 논리적 페이지 넘버(LPN)와 맵핑된다. 즉, 하나의 페이지의 사용자 영역의 크기는 하나의 섹터의 크기의 정수배일 수 있다. 상술된 맵핑 방식을 기반으로 LBA 연산기(113)는 사용자 데이터의 논리적 블록 어드레스(LBA)를 연산할 수 있다.
도 9는 본 발명의 기술적 사상에 따른 데이터 체크 정보의 다른 적용 예를 예시적으로 보여주는 도면이다. 예시적으로, 도 9를 참조하여 데이터 무결성 필드(DIF, Data Integrity Field)의 다른 적용 예가 설명된다. 예시적으로, 도 9에서 사용자 데이터(DATA)의 흐름은 점선으로 도시되고, DIF의 흐름은 파선으로 도시된다.
도 8 및 도 9를 참조하면, 메모리 컨트롤러(220)는 호스트(201)로부터 호스트 인터페이스(214)를 통해 복수의 사용자 데이터(DATA0~DATA15)를 수신할 수 있다. 수신된 복수의 사용자 데이터(DATA0~DATA15)는 버퍼 메모리(220)에 저장될 수 있다.
불휘발성 메모리(230)는 복수의 페이지들을 포함하고 복수의 페이지들 각각은 사용자 영역 및 예비 영역을 포함한다. 하나의 페이지의 사용자 영역은 복수의 섹터들을 포함할 수 있다. 이 때, 도 8에 도시된 바와 같이 복수의 논리적 블록 어드레스들은 하나의 페이지 내에서 순차적으로 증가하도록 구성될 것이다.
도 9에 도시된 적용 예는 도 7에 도시된 바와 달리, 제 1 사용자 데이터(DATA0)의 DIF가 예비 영역(Spare Area)에 저장될 수 있다. 이 때, 제 1 사용자 데이터(DATA0)는 사용자 영역(User Area)의 시작 섹터(예를 들어, 도 8의 LBA_0 또는 LAB 16)일 수 있다. 즉, DIF0는 시작 논리적 블록 어드레스(LBA0)의 정보를 포함할 것이다. 이 경우, 시작 논리적 블록 어드레스(LBA0)를 기반으로 하나의 페이지 내의 복수의 섹터들에 대한 논리적 블록 어드레스(LBA)가 연산될 수 있다. 예를 들어, 도 8에 도시된 바와 같이 논리적 블록 어드레스(LBA)는 하나의 페이지 내에서 순차적으로 증가한다. 즉, 시작 논리적 블록 어드레스(LBA0)를 순차적으로 증가시킴으로써, 사용자 데이터와 대응되는 논리적 블록 어드레스(LBA)가 연산될 수 있다.
예시적으로, 도 7 및 도 9에 도시된 적용 예에 따르면, 메모리 컨트롤러(110)는 T10 DIF의 스펙을 지원할 수 있다. 표 1은 T10 DIF의 Type별 지원항목을 보여준다.
DIF type GuardTag ApplicationTag ReferenceTag Protection
Type0 X X X X
Type1 O(CRC) X O(LBA) O
Type2 O(CRC) O(CDB 참조) O(CDB 참조) O
표 1을 참조하면, T10 DIF의 Type2는 CDB(Command Descriptor Block)을 참조하여 어플리케이션 태그 및 레퍼런스 태그를 생성한다. 따라서, 레퍼런스 태그에 포함된 논리적 블록 어드레스는 예비 영역(Spare Area)에 저장된 논리적 페이지 넘버를 기반으로 연산된 논리적 블록 어드레스와 다를 수 있다. 예시적으로, 표 1에서 X로 표시된 태그들은 16'h0 또는 0x4119(ASCII "AI")의 데이터로 표현될 수 있다.
그러나, 도 9에 도시된 바와 같이 하나의 페이지 내의 시작 섹터에 대한 DIF0가 예비 영역에 저장될 경우, 하나의 페이지 내의 복수의 논리적 블록 어드레스는 순차적으로 증가하므로 시작 섹터 이외의 나머지 섹터들에 대한 어플리케이션 태그 및 레퍼런스 태그를 연산할 수 있다. 즉, 복수의 섹터들 각각에 대한 DIF를 모두 저장할 필요없이 시작 섹터에 대한 하나의 DIF를 예비 영역에 저장함으로써, 복수의 섹터들의 데이터 무결성이 보장될 수 있다. 따라서, 향상된 신뢰성, 감소된 비용, 및 증가된 용량을 갖는 불휘발성 메모리 시스템이 제공된다.
도 10은 본 발명의 다른 실시 예에 따른 사용자 시스템을 보여주는 블록도이다. 도 10을 참조하면, 사용자 시스템(300)은 호스트(310), 메모리 컨트롤러(220), 및 불휘발성 메모리(230)를 포함한다. 호스트(210), 메모리 컨트롤러(220), 및 불휘발성 메모리(230)는 도 1을 참조하여 설명되었으므로, 상세한 설명은 생략된다.
도 10의 메모리 컨트롤러(220) 및 불휘발성 메모리(230)는 복수의 채널들(CN1~CNn)을 기반으로 서로 통신할 수 있다. 복수의 채널들(CN1~CNn)은 서로 독립적으로 구동될 수 있다. 예를 들어, 제 1 및 제 2 채널들(CN1, CN2)을 통해 메모리 컨트롤러(220)는 불휘발성 메모리(230)에 사용자 데이터를 전송할 수 있다. 이와 동시에, 제 3 및 제 4 채널들(CN3, CN4)을 통해 불휘발성 메모리(230)에 저장된 사용자 데이터가 메모리 컨트롤러(220)로 전송될 수 있다.
메모리 컨트롤러(220)는 제 1 및 제 2 데이터 체크 엔진들(225, 227)을 포함할 수 있다. 제 1 데이터 체크 엔진(225)은 도 1 내지 도 9를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
제 2 데이터 체크 엔진(227)은 복수의 채널들(CN1~CNn) 각각에 대하여 복수의 제 2 데이터 체크 엔진 유닛들(227_1~227_n)을 포함할 수 있다. 제 2 데이터 체크 엔진 유닛들(227_1~227_n) 각각은 도 1 내지 도 9를 참조하여 설명된 동작 방법을 기반으로 동작할 것이다. 예시적으로, 복수의 제 2 데이터 체크 엔진들(227_1~227_n) 각각은 복수의 채널들(CN1~CNn)에 대응하도록 동작할 수 있다.
비록 도면에 도시되지는 않았으나 호스트(210) 및 메모리 컨트롤러(220)가 복수의 채널들을 통해 통신하는 경우, 제 1 데이터 체크 엔진(225)은 복수의 제 1 데이터 체크 엔진 유닛들을 포함할 수 있다.
도 11은 본 발명의 실시 예에 따른 불휘발성 메모리 시스템이 적용된 SSD 시스템의 예를 보여주는 블록도이다. 도 11를 참조하면, SSD 시스템(1000)은 호스트(1100)와 SSD(1200)를 포함한다.
SSD(1200)는 신호 커넥터(signal connector, 2211)를 통해 호스트(1100)와 신호를 주고 받으며, 전원 커넥터(power connector, 2221)를 통해 전원을 입력받는다. SSD(1200)는 복수의 플래시 메모리(1201~120n), SSD 컨트롤러(1210), 그리고 보조 전원 장치(1220)를 포함할 수 있다.
복수의 플래시 메모리(1201~220n)는 SSD(1200)의 저장 매체로서 사용된다. SSD(1200)는 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등의 불휘발성 메모리 장치가 사용될 수도 있다. 복수의 플래시 메모리(1201~120n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 플래시 메모리가 연결될 수 있다. 하나의 채널에 연결되는 플래시 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(1210)는 신호 커넥터(1211)를 통해 호스트(1100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(1210)는 호스트(1100)의 커맨드에 따라 해당 플래시 메모리 에 데이터를 쓰거나 해당 플래시 메모리로부터 데이터를 읽어낸다. SSD 컨트롤러(1210)는 도 1 내지 도 10을 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다. 예시적으로, SSD 컨트롤러(1210)는 데이터 체크 정보(또는 DIF)를 사용하여 데이터 무결성을 판별할 수 있다. 단, SSD 컨트롤러(1210)는 데이터 체크 정보(또는 DIF)를 복수의 플래시 메모리(1201~120n)에 저장하지 않을 것이다.
보조 전원 장치(1220)는 전원 커넥터(1221)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1220)는 호스트(1100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(1220)는 SSD(1200) 내에 위치할 수도 있고, SSD(1200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(1220)는 메인 보드에 위치하며, SSD(1200)에 보조 전원을 제공할 수도 있다.
도 12는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 전자 장치을 예시적으로 보여주는 블록도이다. 여기에서, 전자 장치(2000)는 UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP (portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB (Digital Multimedia Broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등과 같은 컴퓨팅 시스템들 중 하나로 제공될 수 있다.
도 12를 참조하면, 전자 장치(2000)는 메모리 시스템(2100), 전원 장치(2200), 보조 전원 장치(2250), 중앙처리장치(2300), 램(2400), 그리고 사용자 인터페이스(2500)를 포함한다. 메모리 시스템(2100)은 플래시 메모리(2110) 및 메모리 컨트롤러(2120)를 포함한다. 여기에서, 메모리 시스템(2100)은 도 1 내지 도 10을 참조하여 설명된 불휘발성 메모리 시스템일 수 있다. 예시적으로, 메모리 컨트롤러(2120)는 도 1 내지 도 10을 참조하여 설명된 방법을 기반으로 동작할 수 있다.
도 13은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 모바일 시스템을 예시적으로 보여주는 블록도이다. 도 13을 참조하면, 모바일 시스템(3000)은 프로세서(3100), 메모리(3200), 스토리지(3300), 모뎀(3400), 그리고 사용자 인터페이스(3500)를 포함한다.
프로세서(3100)는 모바일 시스템(3000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 프로세서(3100)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 프로세서(3100)는 범용 프로세서 또는 어플리케이션 프로세서일 수 있다.
메모리(3200)는 프로세서(3100)와 통신할 수 있다. 메모리(3200)는 프로세서(3100) 또는 모바일 시스템(3000)의 동작 메모리(또는 메인 메모리)일 수 있다. 메모리(3200)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지(3300)는 모바일 시스템(3000)에서 장기적으로 저장하고자 하는 데이터를 저장할 수 있다. 스토리지(3300)는 하드 디스크 드라이브(HDD, Hard Disk Drive) 또는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다. 예시적으로, 스토리지(3300)는 도 1 내지 도 10을 참조하여 설명된 불휘발성 메모리 시스템일 수 있다. 스토리지(3300)는 도 1 내지 도 10을 참조하여 설명된 바와 같이, 사용자 데이터의 무결성을 판별할 수 있다.
예시적으로, 메모리(3200) 및 스토리지(3300)는 동일한 종류의 불휘발성 메모리로 구성될 수 있다. 이때, 메모리(3200) 및 스토리지(3300)는 하나의 반도체 집적 회로로 구성될 수 있다.
모뎀(3400)은 프로세서(3100)의 제어에 따라 외부 장치와 통신을 수행할 수 있다. 예를 들어, 모뎀(3400)은 외부 장치와 유선 또는 무선 통신을 수행할 수 있다. 모뎀(3400)은 LTE (Long Term Evolution), 와이맥스(WiMax), GSM (Global System for Mobile communication), CDMA (Code Division Multiple Access), 블루투스(Bluetooth), NFC (Near Field Communication), 와이파이(WiFi), RFID (Radio Frequency IDentification) 등과 같은 다양한 무선 통신 방식들, 또는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SCSI (Small Computer Small Interface), 파이어와이어(Firewire), PCI (Peripheral Component Interconnection) 등과 같은 다양한 유선 통신 방식들 중 적어도 하나에 기반하여 통신을 수행할 수 있다.
사용자 인터페이스(3500)는 프로세서(3100)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(3500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(4500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
상술된 본 발명의 실시 예들에 따르면, 메모리 컨트롤러는 데이터 체크 정보를 기반으로 호스트로 전송될 사용자 데이터 또는 불휘발성 메모리로 전송될 사용자 데이터의 무결성(integrity)을 판별할 수 있다. 이 때, 데이터 체크 정보는 불휘발성 메모리의 사용자 영역에 저장되지 않는다. 즉, 불휘발성 메모리의 사용자 영역의 용량 전체는 사용자 데이터를 저장하기 위한 저장 영역으로 사용될 수 있다. 따라서, 증가된 용량 및 향상된 성능을 갖는 불휘발성 메모리 시스템이 제공된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100 : 사용자 시스템
110 : 호스트
120 : 메모리 컨트롤러
121 : CPU
122 : SRAM
123 : 버퍼 메모리
124 : 호스트 인터페이스
125, 127 : 제 1 및 제 2 데이터 체크 엔진들
126 : 메모리 인터페이스
128 : LBA 연산부
130 : 불휘발성 메모리
LBA : 논리적 블록 어드레스
LPN : 논리적 페이지 넘버
DC : 데이터 체크 정보
DIF : 데이터 무결성 필드

Claims (10)

  1. 복수의 페이지를 포함하는 불휘발성 메모리;
    외부 장치로부터 수신된 사용자 데이터를 임시 저장하는 버퍼 메모리; 및
    상기 외부 장치의 요청에 따라 상기 불휘발성 메모리에 상기 사용자 데이터를 기입하거나, 읽기 데이터를 상기 외부 장치로 전송하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는
    상기 외부 장치로부터 상기 사용자 데이터를 수신하고, 상기 외부 장치로부터 수신된 사용자 데이터를 상기 버퍼 메모리에 저장하는 호스트 인터페이스;
    상기 버퍼 메모리에 저장된 사용자 데이터를 수신하고, 상기 버퍼 메모리로부터 수신된 사용자 데이터를 상기 불휘발성 메모리로 전송하는 메모리 인터페이스;
    상기 호스트 인터페이스에 수신된 사용자 데이터를 기반으로 쓰기 데이터 체크 정보를 생성하는 제 1 데이터 체크 엔진; 및
    상기 생성된 쓰기 데이터 체크 정보를 기반으로 상기 메모리 인터페이스를 통해 상기 불휘발성 메모리로 전송될 사용자 데이터의 무결성을 검증하는 제 2 데이터 체크 엔진을 포함하고,
    상기 제 2 데이터 체크 엔진의 검증 결과에 따라 상기 불휘발성 메모리로 전송될 사용자 데이터의 무결성이 보장되는 경우, 상기 메모리 컨트롤러는 상기 불휘발성 메모리로 전송될 사용자 데이터를 상기 불휘발성 메모리로 전송하는 불휘발성 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 쓰기 데이터 체크 정보는 상기 사용자 데이터의 논리적 블록 어드레스 정보 및 상기 사용자 데이터를 기반으로 생성된 CRC 패리티를 포함하는 불휘발성 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 복수의 페이지들 각각은 상기 사용자 데이터를 저장하는 사용자 영역 및 논리적 페이지 넘버를 저장하는 예비 영역을 포함하는 불휘발성 메모리 시스템.
  4. 제 3 항에 있어서,
    상기 사용자 영역의 크기는 상기 사용자 데이터의 크기와 같거나 또는 상기 사용자 데이터의 크기의 정수배인 불휘발성 메모리 시스템.
  5. 제 3 항에 있어서,
    상기 메모리 컨트롤러는
    상기 예비 영역에 저장된 논리적 페이지 넘버를 기반으로 상기 사용자 영역에 저장된 사용자 데이터의 논리적 블록 어드레스를 연산하는 논리적 블록 어드레스 연산기를 더 포함하는 불휘발성 메모리 시스템.
  6. 제 5 항에 있어서,
    상기 메모리 컨트롤러는 상기 외부 장치로부터 읽기 요청을 수신하고, 상기 수신된 읽기 요청에 응답하여 읽기 동작을 수행하고,
    상기 읽기 동작시, 상기 메모리 인터페이스는 상기 사용자 영역에 저장된 사용자 데이터를 수신하여 상기 버퍼 메모리에 저장하고,
    상기 호스트 인터페이스는 상기 버퍼 메모리에 저장된 사용자 데이터를 수신하여 상기 수신된 사용자 인터페이스를 상기 외부 장치로 전송하며,
    상기 제 2 데이터 체크 엔진은 상기 연산된 논리적 블록 어드레스 및 상기 메모리 인터페이스에 수신된 사용자 데이터를 기반으로 읽기 데이터 체크 정보를 생성하고,
    상기 호스트 인터페이스를 통해 상기 사용자 데이터가 상기 외부 장치로 전송될 때, 상기 제 1 데이터 체크 엔진은 상기 읽기 데이터 체크 정보를 기반으로 상기 외부 장치로 전송될 사용자 데이터의 무결성을 검증하는 불휘발성 메모리 시스템.
  7. 메모리 컨트롤러 및 불휘발성 메모리를 포함하는 불휘발성 메모리 시스템의 동작 방법에 있어서,
    외부 장치로부터 쓰기 요청, 사용자 데이터, 및 논리적 블록 어드레스를 수신하는 단계;
    상기 수신된 쓰기 요청에 응답하여 상기 수신된 논리적 블록 어드레스 및 상기 사용자 데이터를 기반으로 쓰기 데이터 체크 정보를 생성하는 단계;
    상기 사용자 데이터가 불휘발성 메모리로 전송될 때, 상기 생성된 쓰기 데이터 체크 정보를 기반으로 사용자 데이터의 무결성을 검증하는 단계; 및
    상기 검증 결과에 따라 상기 사용자 데이터의 무결성이 검증된 경우 상기 외부 장치로부터 수신된 사용자 데이터를 상기 불휘발성 메모리로 전송하고, 상기 검증 결과에 따라 상기 사용자 데이터가 오류를 포함하는 경우 상기 외부 장치로 인터럽트 신호를 전송하는 단계를 포함하는 동작 방법.
  8. 제 7 항에 있어서,
    상기 검증 결과에 따라 상기 사용자 데이터를 상기 불휘발성 메모리 장치로 전송하는 단계는,
    상기 검증 결과에 따라 상기 사용자 데이터의 무결성이 검증된 경우 상기 쓰기 데이터 체크 정보를 제외한 상기 사용자 데이터만을 상기 불휘발성 메모리로 전송하는 단계를 포함하는 동작 방법.
  9. 제 7 항에 있어서,
    상기 불휘발성 메모리는 상기 수신된 사용자 데이터를 사용자 영역에 저장하고, 상기 사용자 데이터와 대응되는 논리적 페이지 넘버를 예비 영역에 저장하는 동작 방법.
  10. 제 9 항에 있어서,
    상기 외부 장치로부터 읽기 요청을 수신하는 단계;
    상기 논리적 페이지 넘버를 기반으로 상기 사용자 데이터의 논리적 블록 어드레스를 연산하는 단계;
    상기 불휘발성 메모리로부터 상기 사용자 영역에 저장된 사용자 데이터를 수신하는 단계;
    상기 불휘발성 메모리로부터 수신된 사용자 데이터 및 상기 연산된 논리적 블록 어드레스를 기반으로 읽기 데이터 체크 정보를 생성하는 단계;
    상기 생성된 읽기 데이터 체크 정보를 기반으로 상기 불휘발성 메모리로부터 수신된 사용자 데이터의 무결성을 검증하는 단계; 및
    상기 읽기 데이터 체크 정보를 기반으로 무결성을 검증하는 단계의 검증 결과에 따라 상기 불휘발성 메모리로부터 수신된 사용자 데이터를 상기 외부 장치로 전송하는 단계를 더 포함하는 동작 방법.
KR1020130138418A 2013-11-14 2013-11-14 불휘발성 메모리 시스템 및 그것의 동작 방법 KR102146037B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130138418A KR102146037B1 (ko) 2013-11-14 2013-11-14 불휘발성 메모리 시스템 및 그것의 동작 방법
US14/541,303 US9542264B2 (en) 2013-11-14 2014-11-14 Memory system monitoring data integrity and related method of operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130138418A KR102146037B1 (ko) 2013-11-14 2013-11-14 불휘발성 메모리 시스템 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150055879A KR20150055879A (ko) 2015-05-22
KR102146037B1 true KR102146037B1 (ko) 2020-08-19

Family

ID=53044904

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130138418A KR102146037B1 (ko) 2013-11-14 2013-11-14 불휘발성 메모리 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9542264B2 (ko)
KR (1) KR102146037B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6479564B2 (ja) * 2015-05-11 2019-03-06 ローム株式会社 データ処理装置並びにこれを用いた構造物及び発電装置
EP3317974A1 (en) * 2015-07-02 2018-05-09 Nextivity, Inc. Method and system for maximizing channel bandwidth while employing error control coding
US10007432B2 (en) * 2015-10-13 2018-06-26 Dell Products, L.P. System and method for replacing storage devices
KR102549611B1 (ko) * 2016-04-01 2023-06-30 삼성전자주식회사 스토리지 장치 및 그것의 이벤트 통지 방법
KR102567224B1 (ko) 2016-07-25 2023-08-16 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템
CN106911428B (zh) * 2017-02-23 2020-08-28 北京龙鼎源科技股份有限公司 信息的传输方法和装置
KR102378384B1 (ko) * 2017-09-11 2022-03-24 삼성전자주식회사 불휘발성 메모리 장치의 동작 방법 및 메모리 컨트롤러의 동작 방법
CN109525863A (zh) * 2017-09-20 2019-03-26 北京国双科技有限公司 收视数据展示方法和装置
US10705905B2 (en) * 2018-10-30 2020-07-07 EMC IP Holding Company LLC Software-assisted fine-grained data protection for non-volatile memory storage devices
TWI740187B (zh) * 2019-02-20 2021-09-21 慧榮科技股份有限公司 存取方法
US20210181990A1 (en) * 2019-12-16 2021-06-17 Micron Technology, Inc. Interrupt signaling for a memory device
CN112558884B (zh) * 2020-12-23 2023-03-14 湖南国科微电子股份有限公司 数据保护方法以及基于NVMe的存储设备
US11775387B2 (en) * 2022-01-21 2023-10-03 Micron Technology, Inc. Cyclic redundancy check (CRC) retry for memory systems in compute express link (CXL) devices
KR20240008596A (ko) * 2022-07-12 2024-01-19 삼성전자주식회사 메모리 장치 및 메모리 장치의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183937A (ja) 2006-01-09 2007-07-19 Samsung Electronics Co Ltd 不揮発性メモリのプログラム動作を検証する装置及び方法、並びにその装置を含むメモリカード

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1554842A4 (en) * 2002-08-30 2010-01-27 Corporation Broadcom SYSTEM AND METHOD FOR TREATING FRAMES OUTSIDE THE ORDER
KR101085406B1 (ko) * 2004-02-16 2011-11-21 삼성전자주식회사 불 휘발성 메모리를 제어하기 위한 컨트롤러
US7562284B2 (en) 2005-08-26 2009-07-14 International Business Machines Corporation Apparatus, system, and method for mandatory end to end integrity checking in a storage system
JP4842719B2 (ja) 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
US8069317B2 (en) 2007-10-12 2011-11-29 International Business Machines Corporation Providing and utilizing high performance block storage metadata
TWI371691B (en) 2007-12-16 2012-09-01 Infortrend Technology Inc Storage controller for handling data stream and method thereof
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
CN101604267B (zh) 2008-06-09 2012-05-30 普安科技股份有限公司 独立磁盘冗余阵列系统
US8190832B2 (en) * 2009-01-29 2012-05-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
KR20100093885A (ko) * 2009-02-17 2010-08-26 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
WO2010137067A1 (en) 2009-05-27 2010-12-02 Hitachi, Ltd. Storage system, control method therefor, and program
US8732396B2 (en) 2009-06-08 2014-05-20 Lsi Corporation Method and apparatus for protecting the integrity of cached data in a direct-attached storage (DAS) system
JP5503960B2 (ja) * 2009-12-25 2014-05-28 三星電子株式会社 不揮発性半導体記憶装置
US9009569B2 (en) 2010-10-18 2015-04-14 Xyratex Technology Limited Detection and correction of silent data corruption
US8762609B1 (en) * 2010-11-03 2014-06-24 Pmc-Sierra Us, Inc. System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
KR20120063329A (ko) * 2010-12-07 2012-06-15 삼성전자주식회사 에러 체크 및 정정기 및 그것을 포함하는 메모리 시스템
JP5367686B2 (ja) * 2010-12-24 2013-12-11 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US8694857B2 (en) * 2011-04-13 2014-04-08 Inphi Corporation Systems and methods for error detection and correction in a memory module which includes a memory buffer
US8495469B2 (en) 2011-05-16 2013-07-23 International Business Machines Corporation Implementing enhanced IO data conversion with protection information model including parity format of data integrity fields
US9086983B2 (en) 2011-05-31 2015-07-21 Micron Technology, Inc. Apparatus and methods for providing data integrity
TWI443513B (zh) * 2011-08-05 2014-07-01 Phison Electronics Corp 記憶體儲存裝置、記憶體控制器與資料寫入方法
US8527724B2 (en) 2011-08-26 2013-09-03 International Business Machines Corporation Blocked based end-to-end data protection for extended count key data (ECKD)
TWI596486B (zh) * 2011-11-04 2017-08-21 群聯電子股份有限公司 記憶體儲存裝置、記憶體控制器及資料串傳送與識別方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183937A (ja) 2006-01-09 2007-07-19 Samsung Electronics Co Ltd 不揮発性メモリのプログラム動作を検証する装置及び方法、並びにその装置を含むメモリカード

Also Published As

Publication number Publication date
KR20150055879A (ko) 2015-05-22
US20150135042A1 (en) 2015-05-14
US9542264B2 (en) 2017-01-10

Similar Documents

Publication Publication Date Title
KR102146037B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
CN108280033B (zh) 数据存储设备及其操作方法
KR102020466B1 (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
KR102430791B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
US20150019794A1 (en) Data storage device and operating method thereof
US10108369B2 (en) Memory system and operating method thereof
US10901633B2 (en) Memory system for increasing a read reclaim count
US9589888B2 (en) Storage devices, flash memories, and methods of operating storage devices
US10303394B2 (en) Memory system and operating method thereof
KR102558901B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US20150019796A1 (en) Data storage device and operating method thereof
KR20140146275A (ko) 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템
KR102571629B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US20150052290A1 (en) Data storage device and operating method thereof
US20200150867A1 (en) Memory system and operation method thereof
US11042317B2 (en) Memory system for reducing fragmentation based on sequential index and operating method thereof
US20180113650A1 (en) Memory system and operating method thereof
KR102612911B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
CN110874329A (zh) 控制器及其操作方法
US10908836B2 (en) Memory system and operation method thereof
US11144406B2 (en) Memory system performing check pointing operation and operating method thereof
US10908843B2 (en) Memory system for managing free pages based on real time clock and operating method thereof
US10340943B2 (en) Data conversion apparatus and method
US20190026222A1 (en) Controller and operation method thereof
KR20210001206A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법

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
GRNT Written decision to grant