KR20220049856A - 메모리 시스템 및 컨트롤러 - Google Patents

메모리 시스템 및 컨트롤러 Download PDF

Info

Publication number
KR20220049856A
KR20220049856A KR1020200133494A KR20200133494A KR20220049856A KR 20220049856 A KR20220049856 A KR 20220049856A KR 1020200133494 A KR1020200133494 A KR 1020200133494A KR 20200133494 A KR20200133494 A KR 20200133494A KR 20220049856 A KR20220049856 A KR 20220049856A
Authority
KR
South Korea
Prior art keywords
map
ecc
codeword
memory device
chunk
Prior art date
Application number
KR1020200133494A
Other languages
English (en)
Inventor
김도훈
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020200133494A priority Critical patent/KR20220049856A/ko
Priority to US17/192,389 priority patent/US11422889B2/en
Priority to CN202110702500.XA priority patent/CN114373500A/zh
Publication of KR20220049856A publication Critical patent/KR20220049856A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • G06F11/1048Adding 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
    • 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
    • G06F11/1048Adding 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
    • G06F11/1052Bypassing or disabling error detection or correction
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명의 실시예에 따른 메모리 시스템은, 비휘발성 메모리 장치; 상기 비휘발성 메모리 장치에 액세스하기 위한 매핑 정보를 포함하는 제1 맵 청크를 생성하는 프로세서; 상기 프로세서로부터 생성되는 제1 맵 청크에 제1 패리티 비트를 부가하여 제1 맵 코드워드를 생성하는 제1 ECC(error correcting code); 상기 제1 맵 코드워드를 저장하는 휘발성 메모리; 상기 메모리 시스템의 전원 종료 시 상기 휘발성 메모리로부터 출력되어 상기 제1 ECC를 바이패스한 상기 제1 맵 코드워드의 에러 정정 디코딩을 수행함으로써 제1 맵 데이터를 생성하는 제2 ECC; 및 상기 제1 맵 데이터를 상기 비휘발성 메모리 장치로 제공하는 DMA(direct memory access)를 포함한다.

Description

메모리 시스템 및 컨트롤러 {MEMORY SYSTEM AND CONTRLLER}
본 발명은 비휘발성 메모리 장치를 포함하는 메모리 시스템 및 상기 비휘발성 메모리 장치를 제어하는 컨트롤러에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 휘발성 메모리에 저장된 데이터 중 ECC 인코딩으로 보호되는 데이터를 비휘발성 메모리 장치에 플러시(flush)하기 위한 시간을 단축할 수 있는 컨트롤러 및 메모리 시스템을 제공하고자 한다.
본 발명은 메모리 시스템의 파워 오프 시 휘발성 메모리에 저장된 다량의 맵 데이터를 메모리 장치에 빠르게 플러시함으로써 파워 오프 시간을 단축할 수 있는 컨트롤러 및 메모리 시스템을 제공하고자 한다.
본 발명이 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
본 발명의 실시예에 따른 메모리 시스템은, 비휘발성 메모리 장치; 상기 비휘발성 메모리 장치에 액세스하기 위한 매핑 정보를 포함하는 제1 맵 청크를 생성하는 프로세서; 상기 프로세서로부터 생성되는 제1 맵 청크에 제1 패리티 비트를 부가하여 제1 맵 코드워드를 생성하는 제1 ECC(error correcting code); 상기 제1 맵 코드워드를 저장하는 휘발성 메모리; 상기 메모리 시스템의 전원 종료 시 상기 휘발성 메모리로부터 출력되어 상기 제1 ECC를 바이패스한 상기 제1 맵 코드워드의 에러 정정 디코딩을 수행함으로써 제1 맵 데이터를 생성하는 제2 ECC; 및 상기 제1 맵 데이터를 상기 비휘발성 메모리 장치로 제공하는 DMA(direct memory access)를 포함한다.
또한, 상기 제1 ECC는 상기 제2 ECC보다 낮은 레이턴시(latency)를 가지고, 상기 제2 ECC는 상기 제1 ECC보다 높은 처리량(throughput)을 가질 수 있다.
또한, 상기 메모리 시스템은 전원 종료 시 제2 ECC와 병렬로 상기 제1 맵 코드워드의 에러 정정 디코딩을 수행함으로써 상기 제1 맵 데이터 생성하는 제3 ECC를 더 포함할 수 있다.
또한, 상기 제1 맵 데이터는 제1 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드로부터 제1 패리티 비트가 제거된 제1 맵 청크이고, 제2 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드의 제1 패리티 비트가 유지된 제1 맵 코드워드일 수 있다.
또한, 상기 DMA는 상기 제1 모드에서, 상기 메모리 시스템의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제1 맵 청크를 상기 제1 ECC로 더 제공하고, 상기 제2 모드에서, 상기 메모리 시스템의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제1 맵 코드워드를, 상기 제1 ECC를 바이패스하여 상기 휘발성 메모리로 더 제공할 수 있다.
또한, 상기 휘발성 메모리는 상기 프로세서에 의해 생성된 제2 맵 청크 및 상기 제1 ECC에 의해 부가된 제2 패리티 비트를 포함하는 제2 맵 코드워드를 더 저장하고, 상기 제1 ECC는 상기 메모리 시스템의 전원 종료 시 상기 제2 맵 코드워드로부터 에러 정정 디코딩을 수행하고 제2 패리티 비트를 제거함으로써 제2 맵 청크를 생성하고, 상기 DMA는 상기 제2 맵 청크를 상기 비휘발성 메모리 장치로 더 제공할 수 있다.
또한, 상기 제1 맵 코드워드는 2의 거듭제곱수 크기를 갖도록 조정된(aligned) 맵 코드워드이고, 상기 제2 맵 코드워드는 2의 거듭제곱수 크기를 갖지 않는 비 조정된(unaligned) 맵 코드워일 수 있다.
또한, 상기 조정된 맵 코드워드는 L2V(logical to virtual) 맵 코드워드를 포함하고, 상기 비 조정된 맵 코드워드는 VPT(valid page table) 맵 코드워드를 포함할 수 있다.
또한, 상기 DMA는 상기 메모리 시스템의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제2 맵 데이터를 상기 제1 ECC로 더 제공하고, 상기 제1 ECC는 상기 제2 맵 청크에 패리티 비트를 부가함으로써 제2 맵 코드워드를 생성하여 상기 휘발성 메모리로 더 제공할 수 있다.
또한, 상기 메모리 시스템은 상기 제1 맵 데이터 및 상기 제2 맵 청크를 상기 비휘발성 메모리 장치에 저장하기 위해 에러 정정 인코딩을 수행하고, 상기 비휘발성 메모리 장치로부터 획득된 데이터의 에러 정정 디코딩을 수행하는 제4 ECC를 더 포함할 수 있다.
본 발명의 실시예에 따르면, 비휘발성 메모리 장치를 제어하는 컨트롤러는, 상기 비휘발성 메모리 장치에 액세스하기 위한 매핑 정보를 포함하는 제1 맵 청크를 생성하는 프로세서; 상기 프로세서로부터 생성되는 제1 맵 청크에 제1 패리티 비트를 부가하여 제1 맵 코드워드를 생성하는 제1 ECC; 상기 제1 맵 코드워드를 저장하는 휘발성 메모리; 상기 컨트롤러의 전원 종료 시 상기 휘발성 메모리로부터 출력되어 상기 제1 ECC를 바이패스한 상기 제1 맵 코드워드의 에러 정정 디코딩을 수행함으로써 제1 맵 데이터를 생성하는 제2 ECC; 및 상기 제1 맵 데이터를 상기 비휘발성 메모리 장치로 제공하는 DMA를 포함한다.
본 발명은 휘발성 메모리에 저장된 데이터 중 ECC 인코딩으로 보호되는 데이터를 비휘발성 메모리 장치에 플러시(flush)하기 위한 시간을 단축할 수 있는 컨트롤러 및 메모리 시스템을 제공하고자 한다.
본 발명은 메모리 시스템의 파워 오프 시 휘발성 메모리에 저장된 다량의 맵 데이터를 메모리 장치에 빠르게 플러시함으로써 파워 오프 시간을 단축할 수 있는 컨트롤러 및 메모리 시스템을 제공하고자 한다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급되지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 2는 본 발명의 실시 예에 따른 메모리 시스템을 상세히 설명하기 위한 도면이다.
도 3은 본 발명의 제1 실시 예에 따른 메모리 시스템의 전원 종료 동작을 설명한다.
도 4는 제1 모드에 따른 메모리 시스템의 부팅 동작을 설명한다.
도 5는 제2 모드에 따른 메모리 시스템의 부팅 동작을 설명한다.
도 6a 내지 도 6c는 맵 데이터의 유형들을 설명하기 위한 도면이다.
도 7은 본 발명의 제2 실시 예에 따른 맵 ECC를 상세히 설명하는 도면이다.
도 8a 및 도 8b는 맵 청크 스플리터의 청크 스플릿 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 제2 실시 예에 따른 메모리 시스템의 전원 종료 동작을 설명하는 도면이다.
도 10은 제1 모드에 따른 메모리 시스템의 부팅 동작을 설명하는 도면이다.
도 11은 제2 모드에 따른 메모리 시스템의 부팅 동작을 설명하는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은, 호스트(102) 및 메모리 시스템(110)을 포함한다.
호스트(102)는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
호스트(102)는 적어도 하나의 운영 시스템(OS: operating system)을 포함할 수 있다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 운영 시스템은 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있다.
메모리 시스템(110)은 호스트(102)의 요청에 응하여 호스트(102)의 데이터를 저장하기 위해 동작할 수 있다. 예를 들어, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Serial Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
메모리 시스템(110)은 다양한 종류의 저장 장치에 의해 구현될 수 있다. 예를 들어, 상기 저장 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
메모리 시스템(110)은 비휘발성 메모리 장치(150) 및 컨트롤러(130)를 포함할 수 있다. 비휘발성 메모리 장치(150)는 호스트(102)를 위한 데이터를 저장할 수 있으며, 컨트롤러(130)는 비휘발성 메모리 장치(150)로의 데이터 저장을 제어할 수 있다.
컨트롤러(130) 및 비휘발성 메모리 장치(150)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 비휘발성 메모리 장치(150)는 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 사용되면, 메모리 시스템(110)에 연결된 호스트(102)의 동작 속도는 향상될 수 있다. 게다가, 컨트롤러(130) 및 비휘발성 메모리 장치(150)는, 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예를 들어, 컨트롤러(130) 및 비휘발성 메모리 장치(150)는 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
다른 일 예로, 메모리 시스템(110)은, 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB(Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID(radio frequency identification) 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성할 수 있다.
비휘발성 메모리 장치(150)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 비휘발성 메모리 장치(150)는 프로그램 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 비휘발성 메모리 장치(150)에 저장된 데이터를 제공할 수 있다. 비휘발성 메모리 장치(150)는 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 비휘발성 메모리 장치(150)는 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
비휘발성 메모리 장치(150)는 플래시 메모리 장치일 수 있다. 플래시 메모리 장치는 메모리 셀 트랜지스터들로 구성된 메모리 셀 어레이에 데이터를 저장할 수 있다. 플래시 메모리 장치는 메모리 다이, 플레인, 메모리 블록 및 페이지 계층 구조를 가질 수 있다. 하나의 메모리 다이는 한 번에 하나의 커맨드를 수신할 수 있다. 플래시 메모리는 복수의 메모리 다이를 포함할 수 있다. 하나의 메모리 다이는 복수의 플레인을 포함할 수 있으며, 상기 복수의 플레인은 상기 메모리 다이가 수신한 커맨드를 병렬로 처리할 수 있다. 각 플레인은 복수의 메모리 블록을 포함할 수 있다. 메모리 블록은 이레이즈 동작의 최소 단위일 수 있다. 하나의 메모리 블록은 복수의 페이지를 포함할 수 있다. 페이지는 프로그램 동작의 최소 단위일 수 있다.
컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 비휘발성 메모리 장치(150)를 제어할 수 있다. 예를 들어, 컨트롤러(130)는 비휘발성 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 비휘발성 메모리 장치(150)에 저장할 수 있다. 이러한 동작을 위해, 컨트롤러(130)는 비휘발성 메모리 장치(150)의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다.
컨트롤러(130)는 서로 내부 버스를 통해 동작 가능하도록 연결된 호스트 인터페이스(132), 프로세서(134), 메모리 인터페이스(142), 휘발성 메모리(144) 및 VM(volatile memory) ECC(146)를 포함할 수 있다.
호스트 인터페이스(132)는 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
호스트 인터페이스(132)는 호스트(102)와 데이터를 주고받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
메모리 인터페이스(142)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 비휘발성 메모리 장치(150)를 제어하도록, 컨트롤러(130)와 비휘발성 메모리 장치(150) 간의 인터페이싱을 위한 메모리/스토리지(storage) 인터페이스로서의 역할을 할 수 있다. 비휘발성 메모리 장치(150)가 플래시 메모리, 특히 NAND 플래시 메모리인 경우, 메모리 인터페이스(142)는 비휘발성 메모리 장치(150)를 위한 제어 신호를 생성하고, 프로세서(134)의 제어 하에 비휘발성 메모리 장치(150)로 제공되는 데이터를 처리할 수 있다. 메모리 인터페이스(142)는 컨트롤러(130)와 비휘발성 메모리 장치(150) 사이의 커맨드 및 데이터를 처리하기 위한 인터페이스, 예를 들어 NAND 플래시 인터페이스로서 동작할 수 있다.
메모리 인터페이스(142)는 플래시 인터페이스 계층(FIL: Flash Interface Layer)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
메모리 인터페이스(142)는 비휘발성 메모리 장치(150)로부터 독출되는 데이터에 포함된 에러를 검출 및 정정하기 위해 NVM ECC(미도시)를 포함할 수 있다. NVM ECC는 NVM ECC 인코더와 NVM ECC 디코더를 포함할 수 있다. 상기 NVM ECC 인코더는 메모리 장치(150)에 프로그램될 데이터를 에러 정정 인코딩하여 패리티 비트가 부가된 데이터를 생성할 수 있다. 상기 패리티 비트가 부가된 데이터는 메모리 장치(150)에 저장될 수 있다. 그리고, NVM ECC 디코더는 메모리 장치(150)로부터 출력되는 데이터에 포함된 에러를 검출 및 정정할 수 있다. NVM ECC는 LDPC(low density parity check) 코드(code) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있다. NVM ECC는 특정한 구조로 한정되는 것은 아니다. NVM ECC는 에러 정정을 위한 회로, 모듈, 시스템 또는 장치를 모두 포함할 수 있다.
프로세서(134)는 메모리 시스템(110)의 전체적인 동작을 제어할 수 있다. 그리고, 프로세서(134)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
프로세서(134)는 호스트(102)로부터 수신된 요청에 대응하는 포그라운드 동작(foreground operation)을 수행할 수 있다. 예를 들어, 프로세서(134)는 호스트(102)로부터의 라이트 요청에 응하여 비휘발성 메모리 장치(150)의 라이트 동작을 제어하고, 리드 요청에 응하여 비휘발성 메모리 장치(150)의 리드 동작을 제어할 수 있다. 예를 들어, 프로세서(134)는 호스트(102)의 파일 시스템에서 사용되는 논리 주소와 비휘발성 메모리 장치(150)에서 사용되는 물리 주소 간 주소 매핑을 수행할 수 있다.
프로세서(134)는 비휘발성 메모리 장치(150)에 대한 백그라운드(background) 동작을 수행할 수도 있다. 예를 들어, 비휘발성 메모리 장치(150)에 대한 백그라운드 동작은 가비지 컬렉션(GC: Garbage Collection) 동작, 웨어 레벨링(WL: Wear Leveling) 동작, 맵 플러시(map flush) 동작, 배드 블록 관리(bad block management) 동작 등을 포함할 수 있다.
프로세서(134)는 상기 포그라운드 동작과 백그라운드 동작을 수행하기 위해 FTL(Flash translation layer)이라는 펌웨어를 구동할 수 있다.
휘발성 메모리(144)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다. 컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 비휘발성 메모리 장치(150)가 리드, 프로그램, 이레이즈 동작을 수행하도록 비휘발성 메모리 장치(150)를 제어할 수 있다. 컨트롤러(130)는 비휘발성 메모리 장치(150)로부터 독출되는 데이터를 호스트(102)로 제공할 수 있으며, 호스트(102)로부터 제공되는 데이터를 비휘발성 메모리 장치(150)에 저장할 수 있다. 휘발성 메모리(144)는 컨트롤러(130)와 비휘발성 메모리 장치(150)가 이러한 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
휘발성 메모리(144)는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 휘발성 메모리(144)는 컨트롤러(130) 내부 또는 외부에 배치될 수 있다. 도 1은 컨트롤러(130) 내부에 배치된 휘발성 메모리(144)를 예시한다. 일 실시예에서, 휘발성 메모리(144)는 휘발성 메모리(144)와 컨트롤러(130) 사이의 데이터를 입출력하는 메모리 인터페이스를 갖는 외부 휘발성 메모리 장치로 구현될 수 있다.
휘발성 메모리(144)는 논리 주소와 물리 주소 간 주소 매핑 정보를 포함하는 맵 데이터를 저장할 수 있다. 맵 데이터는 비휘발성 메모리 장치(150)에 저장될 수 있으며, 메모리 시스템(110)에 전원이 공급되면 휘발성 메모리(144)로 로드될 수 있다. 휘발성 메모리(144)에 로드된 맵 데이터에는 다양한 요인으로 에러가 발생할 수 있다. 메모리 시스템(110)이 호스트(102)가 요청하는 데이터에 정확하게 액세스하기 위해 휘발성 메모리(144)에 저장된 맵 데이터에 대한 에러 정정이 필요하다.
VM ECC(146)는 휘발성 메모리(144)에 저장된 맵 데이터의 에러를 검출 및 정정할 수 있다. 예를 들어, VM ECC(146)는 프로세서(134)가 생성한 맵 청크를 에러 정정 인코딩하여 패리티 비트가 부가된 맵 코드워드를 생성할 수 있다. 맵 데이터의 가장 작은 단위는 맵 피스(map piece)로 지칭될 수 있다. 예를 들어, 맵 피스는 하나의 논리 주소와 하나의 물리 주소 간의 매핑 관계를 나타내는 L2P(logical to physical) 피스를 포함할 수 있다. 맵 청크는 정해진 수의 맵 피스들을 포함할 수 있다. 맵 청크는 VM ECC(146)에서 한 번에 에러 정정 동작이 수행되는 맵 데이터의 단위를 지칭한다. 상기 맵 코드워드는 휘발성 메모리(144)에 저장될 수 있다. 맵 청크에 대한 프로세서(134)의 요청이 있으면, VM ECC(146)는 상기 맵 청크에 대응하는 맵 코드워드의 에러를 검출 및 정정하고, 에러가 정정된 맵 코드워드에서 패리티 비트를 제거하여 맵 청크를 생성하고, 상기 맵 청크를 프로세서(134)로 제공할 수 있다.
VM ECC(146)는 BCH(Bose, Chaudhuri, Hocquenghem) 코드 등의 코디드 모듈레이션을 사용하여 에러 정정을 수행할 수 있다. VM ECC(146)는 특정한 구조로 한정되는 것은 아니다. VM ECC(146)는 에러 정정을 위한 회로, 모듈, 시스템 또는 장치를 모두 포함할 수 있다.
이하에서, VM ECC(146)에 의해 부가되는 패리티 비트는 VM 패리티 비트로 지칭되고, NVM ECC에 의해 부가되는 패리티 비트는 NVM 패리티 비트로 지칭된다.
호스트(102)로부터의 커맨드를 신속하게 처리하기 위해, 프로세서(134)는 상기 커맨드에 포함된 논리 주소를 물리 주소로 신속하게 변환할 필요가 있다. 프로세서(134)가 논리 주소를 물리 주소로 신속하게 변환하기 위해서는 상기 논리 주소를 포함하는 맵 청크를 휘발성 메모리(144)로부터 신속하게 획득할 필요가 있다. VM ECC(146)는 에러 없는 맵 청크를 프로세서(134)로 신속하게 제공하기 위해, 짧은 레이턴시(latency)를 갖도록 설계될 수 있다. 예를 들어, VM ECC(146)는 에러 정정 기능뿐만 아니라, 맵 청크의 처리를 고속화하기 위해 프로세서(134)에 의해 참조된 맵 청크를 캐싱하는 캐시(cache) 등의 복합적인 기능을 가질 수 있다. 복합적인 기능을 갖는 VM ECC(146)는 다수의 논리 게이트, 예를 들면 200만여 개의 논리 게이트로 구현되어 메모리 시스템(110)의 회로에서 넓은 면적을 차지할 수 있다.
반면에, VM ECC(146)를 설계할 때 처리량(throughput)은 상기 레이턴시에 비해 덜 고려될 수 있다. 프로세서(134)가 다수의 맵 청크들을 한 번에 요구하는 경우보다는 호스트(102)의 요청을 처리하기에 필요한 소수의 맵 청크를 요구하는 경우가 많기 때문이다.
메모리 시스템(110)의 전원이 종료될 때 프로세서(134)는 휘발성 메모리(144)에 저장된 다수의 맵 코드워드들에 포함된 맵 청크들을 비휘발성 메모리 장치(150)에 저장하도록 메모리 인터페이스(142)를 제어할 수 있다. 메모리 시스템(110)의 신뢰성이 보장되려면, 상기 맵 청크들이 비휘발성 메모리 장치(150)에 저장되기 전에 상기 맵 청크들을 포함하는 맵 코드워드들의 에러가 검출 및 정정될 필요가 있다.
VM ECC(146)은 처리량을 덜 고려하여 설계되었기 때문에 메모리 인터페이스(142)보다 낮은 처리량을 가질 수 있다. 만약, 메모리 시스템(110)의 전원이 종료될 때 VM ECC(146)가 휘발성 메모리(144)의 다수의 맵 코드워드들의 에러를 검출 및 정정하여 에러 정정된 맵 청크를 생성한 후 메모리 인터페이스(142)가 상기 맵 청크를 메모리 장치(150)에 저장해야 한다면, VM ECC(146)에서 병목현상이 발생할 수 있다. VM ECC(146)에서 병목현상이 발생하면 메모리 시스템(110)의 전원 종료 시간이 지연될 수 있다. 메모리 시스템(110)의 전원 종료 시간이 지연되면, 메모리 시스템(110)의 전원 종료 시간에 대한 사양서(specification)의 요구에 부응하기 어렵고, 서든 파워 오프 상황에서 메모리 시스템(110)의 신뢰성을 보장하기 어렵다.
한편, 상기 병목현상을 방지하기 위해 VM ECC(146)의 레이턴시 및 처리량을 모두 고려하여 설계하는 방법은 메모리 시스템(110) 회로에서 VM ECC(146)가 차지하는 면적을 넓히고 VM ECC(146)에 의해 소모되는 전력을 증가시킬 수 있다. 예를 들어, 처리량을 향상시키기 위해 VM ECC(146)의 수를 늘리고 VM ECC(146)들을 병렬로 배치하는 경우, 증가한 VM ECC(146)의 수만큼 회로 면적이 넓어지고 전력 소모가 증가할 수 있다.
본 발명의 실시 예에 따르면, 메모리 인터페이스(142)는 메모리 시스템(110)의 전원 종료 시에 높은 처리량으로 맵 코드워드의 에러 정정 디코딩을 수행하기 위한 맵 ECC(214)를 포함할 수 있다. 맵 ECC(214)는 레이턴시를 고려하기보다는 처리량을 고려하여 설계될 수 있다. 맵 ECC(214)는 처리량을 향상시키기 위해 복수 개 포함될 수 있으나, 상기 캐시 기능과 같은 부가적인 기능이 배제될 수 있다. 예를 들어, 상기 부가적인 기능이 배제된 맵 ECC(214)는 5만여 논리 게이트로 구현될 수 있으며 메모리 인터페이스(142)에 4개의 맵 ECC(214)가 포함되더라도 맵 ECC(214)들은 20만여 논리 게이트로 구현될 수 있다.
메모리 시스템(110)의 전원 종료 시에 휘발성 메모리(144)에 저장된 다수의 맵 코드워드들은 VM ECC(146)를 바이패스(bypass)할 수 있다. 메모리 인터페이스(142)는 맵 ECC(214)를 사용하여 상기 맵 코드워드들의 에러를 검출 및 정정하고, 비휘발성 메모리 장치(150)로 에러가 정정된 맵 코드워드들 또는 맵 청크들을 제공할 수 있다.
본 발명의 실시 예에 따르면, VM ECC(146)의 낮은 처리량으로 인한 병목현상이 방지되고 메모리 시스템(110)의 전원 종료 시간이 단축될 수 있다.
도 2는 본 발명의 실시 예에 따른 메모리 시스템(110)을 상세히 설명하기 위한 도면이다.
도 2는 도 1을 참조하여 설명된 메모리 시스템(110)의 구성요소들 중 프로세서(134), 메모리 인터페이스(142), 휘발성 메모리(144), VM ECC(146) 및 비휘발성 메모리 장치(150)를 도시한다. 도 2에서 본 발명의 실시 예를 설명하기 위한 구성요소들 외의 메모리 시스템(110)의 구성요소들은 생략된다.
메모리 인터페이스(142)는 라이트 경로(write path, 210), 채널 DMA(channel direct memory access, 230) 및 리드 경로(read path, 250)를 포함할 수 있다.
채널 DMA(230)는 휘발성 메모리(144)와 비휘발성 메모리 장치(150) 간 데이터 입출력 동작을 수행할 수 있다. 프로세서(134)가 데이터 입출력을 수행하기 위해 메모리 인터페이스(142)로 요청을 제공하면, 채널 DMA(230)는 상기 요청에 응하여 상기 데이터 입출력 동작을 프로세서(134)의 개입 없이 수행할 수 있다.
휘발성 메모리(144)로부터 출력된 데이터는 채널 DMA(230)를 통해 비휘발성 메모리 장치(150)에 프로그램되기 이전에 라이트 경로(210)를 경유할 수 있다. 본 발명의 실시 예에 따른 라이트 경로(210)는 리드 DMA(212), 맵 ECC(214) 및 데이터 경로(216)를 포함할 수 있다.
리드 DMA(212)는 메모리 장치(150)에 프로그램될 데이터를 휘발성 메모리(144)로부터 프로세서(134)의 개입 없이 획득할 수 있다.
맵 ECC(214)는 메모리 시스템(110)의 전원 종료 시에 휘발성 메모리(144)에 포함된 다수의 맵 코드워드들의 에러 정정 디코딩을 수행할 수 있다.
맵 ECC(214)는 VM ECC(146)와 동일한 코디드 모듈레이션을 사용하여 에러 정정 디코딩을 수행할 수 있다. 예를 들어, VM ECC(146)가 BCH 코드를 사용하여 에러 정정 인코딩 및 디코딩을 수행하는 경우, 맵 ECC(214) 또한 BCH 코드를 사용하여 에러 정정 디코딩을 수행할 수 있다.
휘발성 메모리(144)로부터 비휘발성 메모리 장치(150)에 프로그램될 데이터는 데이터 경로(216)를 경유할 수 있다. 데이터 경로(216)는 NVM ECC 인코더(미도시)를 포함할 수 있다. 상기 프로그램될 데이터는 상기 NVM ECC 인코더에 의해 에러 정정 인코딩되어 NVM 패리티 비트가 부가될 수 있다.
비휘발성 메모리 장치(150)로부터 출력된 데이터는 채널 DMA(230)와 리드 경로(250)를 경유하여 휘발성 메모리(144)에 저장될 수 있다. 리드 경로(250)는 NVM ECC 디코더(미도시)를 포함할 수 있다. 메모리 장치(150)로부터 출력되는 데이터는 NVM 패리티 비트를 포함할 수 있으며, 상기 데이터는 상기 NVM ECC 디코더에 의해 에러 정정 디코딩될 수 있다.
비휘발성 메모리 장치(150)는 다수의 메모리 다이들(미도시)을 포함할 수 있다. 메모리 장치(150)의 처리량 향상을 위해 메모리 인터페이스(142)는 복수의 라이트 경로(210), 채널 DMA(230) 및 리드 경로(250)들을 포함할 수 있다. 메모리 인터페이스(142)는 복수의 라이트 경로(210), 채널 DMA(230) 및 리드 경로(250)들을 사용하여 상기 다수의 메모리 다이들을 동시에 제어할 수 있다. 메모리 인터페이스(142)가 복수의 라이트 경로(210)를 포함하는 경우 맵 ECC(214)도 복수 개 포함되고, 복수의 맵 코드워드들의 에러를 동시에 검출 및 정정할 수 있다.
본 발명의 실시 예에 따르면, 맵 ECC(214)는 상기 에러 정정 디코딩된 맵 코드워드에 포함된 VM 패리티 비트를 선택적으로 제거하거나, VM 패리티 비트가 포함된 채로 상기 맵 코드워드를 유지할 수 있다. 즉, 맵 ECC(214)에 의해 에러 정정 디코딩된 맵 코드워드는 맵 청크로서 데이터 경로(216)를 통과할 수도 있고, 맵 코드워드로서 데이터 경로(216)를 경유하여 비휘발성 메모리 장치(150)에 저장될 수 있다.
본 발명의 제1 실시 예에 대해 도 3 내지 도 5에서 상세히 설명된다. 도 3 내지 도 5는 도 1 및 도 2를 참조하여 설명된 메모리 인터페이스(142), 휘발성 메모리(144), VM ECC(146) 및 비휘발성 메모리 장치(150)를 간략히 도시한다.
도 3은 본 발명의 제1 실시 예에 따른 메모리 시스템(110)의 전원 종료 동작을 설명한다.
도 1을 참조하여 설명된 바와 같이, 메모리 시스템(110)의 동작 중에 휘발성 메모리(144)는 맵 청크 및 VM 패리티 비트를 포함하는 다수의 맵 코드워드들을 저장할 수 있다. 메모리 시스템(110)의 전원 종료 신호에 응하여, 프로세서(134)는 휘발성 메모리(144)에 저장된 다수의 맵 코드워드들을 비휘발성 메모리 장치(150)에 프로그램하도록 메모리 인터페이스(142)를 제어할 수 있다. 메모리 인터페이스(142)가 상기 다수의 맵 코드워드들을 비휘발성 메모리 장치(150)에 프로그램하는 동작이 자세히 설명된다.
단계 S302에서, 맵 ECC(214)는 휘발성 메모리(144)로부터 다수의 맵 코드워드들을 수신하여 맵 코드워드들의 에러 정정 디코딩을 수행할 수 있다.
단계 S304에서, 맵 ECC(214)는 상기 에러 정정 디코딩에 의해 생성된 맵 데이터를 데이터 경로(216)로 제공할 수 있다. 본 발명의 제1 실시 예에 따르면, 맵 ECC(214)는 모드에 따라 상기 다수의 맵 코드워드들로부터 VM 패리티 비트를 선택적으로 제거하여 데이터 경로(216)로 제공할 수 있다.
도 3을 참조하면, 메모리 시스템(110)에서 제1 모드가 선택된 경우 맵 ECC(214)는 에러가 정정된 맵 코드워드들로부터 VM 패리티 비트들을 제거함으로써 맵 청크들을 생성하고, 데이터 경로(216)로 상기 맵 청크들을 제공할 수 있다. 메모리 시스템(110)에서 제2 모드가 선택된 경우, 맵 ECC(214)는 VM 패리티 비트들이 제거되지 않은 맵 코드워드들을 데이터 경로(216)로 제공할 수 있다. 제1 및 제2 모드는 메모리 시스템(110)의 구현 시에 결정되거나, 사용자에 의해 선택될 수 있다. 데이터 경로(216)는 내부 NVM ECC 인코더(미도시)를 사용하여 상기 맵 청크들 또는 맵 코드워드들에 에러 정정 인코딩을 수행하여 NVM 패리티 비트가 부가된 맵 데이터를 생성할 수 있다.
단계 S306에서, 데이터 경로(216)는 상기 NVM 패리티 비트가 부가된 맵 데이터를 채널 DMA(230)를 통해 비휘발성 메모리 장치(150)로 제공할 수 있다. 비휘발성 메모리 장치(150)는 상기 NVM 패리티 비트가 부가된 맵 데이터를 프로그램할 수 있다. 그리고, 메모리 시스템(110)은 전원을 종료할 수 있다.
한편, 메모리 시스템(110)의 동작 모드에 따라, 부팅 시에 맵 데이터가 비휘발성 메모리 장치(150)로부터 휘발성 메모리(144)로 로드되는 방법이 달라질 수 있다. 각 모드에 따른 맵 데이터의 로드 방법이 도 4 및 도 5를 참조하여 설명된다.
도 4는 제1 모드에 따른 메모리 시스템(110)의 부팅 동작을 설명한다.
메모리 시스템(110)에 전원이 공급된 후, 단계 S402에서 프로세서(134)는 비휘발성 메모리 장치(150)로부터 맵 데이터를 리드하도록 메모리 인터페이스(142)를 제어할 수 있다.
비휘발성 메모리 장치(150)는 메모리 인터페이스(142)의 제어에 응하여 맵 데이터를 출력할 수 있다. 리드 경로(250)에 포함된 NVM ECC 디코더(미도시)는 상기 출력된 맵 데이터의 에러 정정 디코딩을 수행할 수 있다. 제1 모드에서 전원 종료 동작이 수행된 경우 비휘발성 메모리 장치(150)에 저장된 맵 데이터는 NVM 패리티 비트들이 부가된 다수의 맵 청크들을 포함할 수 있다.
상기 다수의 맵 청크들은 휘발성 메모리(144)에 저장되어 있는 동안 에러로부터 보호될 필요가 있다. 단계 S404에서, 메모리 인터페이스(142)는 에러가 정정된 다수의 맵 청크를 VM ECC(146)으로 제공할 수 있다. VM ECC(146)는 상기 맵 청크들에 에러 정정 인코딩을 수행하여 VM 패리티 비트를 부가하여 맵 코드워드들을 생성할 수 있다.
단계 S406에서, VM ECC(146)는 상기 맵 코드워드들을 휘발성 메모리(144)에 저장하고, 부팅을 완료할 수 있다.
도 5는 제2 모드에 따른 메모리 시스템(110)의 부팅 동작을 설명한다.
메모리 시스템(110)에 전원이 공급된 후, 단계 S502에서 프로세서(134)는 비휘발성 메모리 장치(150)로부터 맵 데이터를 출력하도록 메모리 인터페이스(142)를 제어할 수 있다. 제2 모드에서 전원 종료 동작이 수행된 경우 비휘발성 메모리 장치(150)에 저장된 맵 데이터는 맵 코드워드들 및 NVM 패리티 비트를 포함할 수 있다.
비휘발성 메모리 장치(150)는 메모리 인터페이스(142)의 제어에 응하여 NVM 패리티 비트가 부가된 다수의 맵 코드워드들을 출력할 수 있다. 리드 경로(250)에 포함된 NVM ECC 디코더(미도시)는 NVM 패리티 비트를 사용하여 상기 출력된 맵 코드워드들의 에러 정정 디코딩을 수행할 수 있다.
NVM ECC 디코더에 의해 에러가 정정된 맵 코드워드들은 맵 청크들과 VM 패리티 비트들을 포함할 수 있다. 상기 맵 코드워드들은 VM 패리티 비트들을 포함하므로, 휘발성 메모리(144)에 저장되어 있는 동안 에러로부터 보호될 수 있다.
단계 S504에서, 메모리 인터페이스(142)는 VM ECC(146)를 바이패스하고 맵 코드워드들을 휘발성 메모리(144)에 바로 저장할 수 있다. 맵 청크에 대한 프로세서(134)의 요청이 있을 때 VM ECC(146)가 상기 맵 청크를 포함하는 맵 코드워드의 에러 정정 디코딩을 수행하면 프로세서(134)로 에러가 정정된 맵 청크를 제공할 수 있다. 메모리 시스템(110)이 제2 모드로 동작하면, 메모리 시스템(110)의 부팅 시에 VM ECC(146)에 의한 병목현상이 해소될 수 있다.
도 3 내지 도 5를 참조하여 설명된 본 발명의 제1 실시 예에 따르면, 프로세서(134)는 휘발성 메모리(144)에 저장된 맵 코드워드들을 비휘발성 메모리 장치(150)에 저장하기 위해 VM ECC(146)보다 처리량이 높은 맵 ECC(214)가 상기 맵 코드워드들의 에러를 검출 및 정정하도록 메모리 인터페이스(142)를 제어할 수 있다. 메모리 시스템(110)의 전원 종료 시간을 단축할 수 있다.
본 발명의 제2 실시 예에 따르면, 프로세서(134)는 휘발성 메모리(144)에 저장된 맵 코드워드들을 비휘발성 메모리 장치(150)에 저장하기 위해, 상기 맵 코드워드들의 유형에 따라 상기 맵 코드워드들을 선택적으로 VM ECC(146) 또는 맵 ECC(214)에서 검출 및 정정할 수 있도록 VM ECC(146)와 맵 ECC(214)를 제어할 수 있다. 본 발명의 제2 실시 예는 도 6a 내지 도 10을 참조하여 자세히 설명된다.
도 6a 내지 도 6c는 맵 데이터의 유형들을 설명하기 위한 도면이다.
도 6a는 휘발성 메모리(144)에 저장되는 맵 데이터를 나타내는 도면이다.
도 1을 참조하여 설명된 바와 같이, 휘발성 메모리(144)는 맵 청크와 VM 패리티 비트를 포함하는 맵 코드워드를 저장할 수 있다.
메모리 시스템(110)에서 데이터는 주로 2의 거듭제곱수 비트 단위로 처리될 수 있다. 예를 들어, 프로세서(134)는 2의 거듭제곱수 비트 단위로 데이터를 처리할 수 있고, 휘발성 메모리(144) 및 비휘발성 메모리 장치(150)는 2의 거듭제곱수 단위로 데이터를 저장할 수 있다.
프로세서(134)가 한 사이클당 32비트의 데이터를 처리하는 예에서, 맵 피스는 최대 32비트의 데이터로 구성될 수 있다. 맵 청크는 2의 거듭제곱수 개수의 맵 피스들을 포함할 수 있다. 하나의 맵 피스가 32비트의 데이터로 구성되는 경우 맵 청크의 크기 또한 2의 거듭제곱수 비트 크기를 가질 수 있다.
휘발성 메모리(144)는 상기 맵 청크에 VM 패리티 비트가 부가된 맵 코드워드를 저장할 수 있다. 상기 맵 청크가 2의 거듭제곱수 비트인 경우, 상기 맵 청크에 VM 패리티 비트가 부가된 맵 코드워드는 2의 거듭제곱수가 아닐 수 있다.
휘발성 메모리(144)는 2의 거듭제곱수 단위로 주소 지정되므로, 2의 거듭제곱수 비트가 아닌 데이터를 휘발성 메모리(144)의 주소와 매핑할 때, 2의 거듭제곱수 비트의 데이터를 매핑하는 경우에 비해 다량의 연산이 요구될 수 있다.
맵 코드워드를 휘발성 메모리(144)의 주소와 매핑할 때 요구되는 연산량 및 맵 코드워드가 휘발성 메모리(144)에서 차지하는 용량을 줄이기 위해, 메모리 시스템(110)의 설계 시 맵 코드워드의 크기는 2의 거듭제곱수 비트가 되도록 조정될 수 있다.
도 6a는 조정된 맵 코드워드(aligned codeword)와 비 조정된 맵 코드워드(unaligned codeword)를 예시한다. 크기가 2의 거듭제곱수 비트로 조정된 맵 코드워드의 일 예로 L2V(logical to virtual) 코드워드가 있다. 도 6a는 L2V(logical to virtual) 청크와 VM 패리티 비트(P)를 포함하는 조정된 맵 코드워드를 도시한다.
크기가 비 조정된 맵 코드워드의 일 예로 VPT(valid page table) 코드워드가 있다. 도 6a는 VPT 청크 및 VM 패리티 비트(P)를 포함하는 비 조정된 코드워드가 도시된다. L2V 코드워드는 도 6b를 참조하여 자세히 설명되고, VPT 코드워드는 도 6c를 참조하여 자세히 설명된다.
도 6b는 조정된 맵 코드워드의 예로서, L2V 코드워드를 설명하는 도면이다.
L2V는 맵 데이터의 일종으로, 휘발성 메모리(144)에 저장된 맵 데이터의 대부분, 예를 들어 95% 정도를 차지할 수 있다. 하나의 L2V 피스는 하나의 논리 주소 및 그에 대응하는 하나의 가상 주소와의 매핑을 나타낼 수 있다. 상기 가상 주소는 메모리 장치(150)의 물리적인 메모리 공간들 중 결함 없는 공간을 가리키기 위한 주소일 수 있으며, 메모리 장치(150)의 정상 메모리 블록들의 물리 주소와 매핑될 수 있다. 구현에 따라, 32비트 미만의 데이터로 하나의 논리 주소 및 하나의 가상 주소와의 매핑을 나타낼 수 있다. 도 6b는 31비트 크기로 조정된 L2V 피스를 예시한다.
VM ECC(146)는 복수의 L2V 피스들을 휘발성 메모리(144)에 저장하기 위해, 정해진 개수의 L2V 피스들을 포함하는 L2V 청크에 에러 정정 인코딩을 수행하고, 상기 L2V 청크에 VM 패리티 비트가 부가된 L2V 코드워드를 생성할 수 있다. 도 6b의 예에서, VM ECC(146)는 16개의 L2V 피스를 포함하는 62바이트의 L2V 청크에 16비트의 VM 패리티 비트를 부가하여 64바이트의 조정된 L2V 코드워드를 생성할 수 있다.
프로세서(134)가 휘발성 메모리(144)에 저장된 L2V 피스를 요청하면, VM ECC(146)는 상기 L2V 피스를 포함하는 L2V 코드워드의 에러 정정 디코딩을 수행하고, 에러 정정된 L2V 피스를 추출하고, 상기 추출된 L2V 피스에 1비트 더미 데이터를 부가한 32비트 데이터를 프로세서(134)로 제공할 수 있다.
한편, 도 6b는 31비트의 L2V 피스와 64바이트의 L2V 코드워드를 예시하지만, 본 발명은 이에 한정되지 않는다. 예를 들어, VM ECC(146)는 30비트의 L2V 피스 8개를 포함하는 30바이트의 L2V 청크에 16비트의 VM 패리티 비트를 부가하여 32바이트의 조정된 L2V 코드워드를 생성할 수 있다.
도 6c는 비 조정된 맵 코드워드의 예로서, VPT 코드워드를 설명하는 도면이다.
VPT는 비휘발성 메모리 장치(150)의 페이지들 각각에 유효 데이터가 저장되었는지 여부를 나타내는 테이블일 수 있다. VPT는 맵 데이터의 일종으로, 휘발성 메모리(144)에 저장된 맵 데이터의 일부분, 예를 들어 5% 미만을 차지할 수 있다. 구현에 따라, VPT의 최소 정보를 나타내는 데 32비트의 데이터가 필요하다면 VPT 피스의 크기는 32비트 미만으로 조정될 수 없다. 도 6c는 32비트의 데이터로 구성된 VPT 피스를 도시한다.
VM ECC(146)는 복수의 VPT 피스들을 휘발성 메모리(144)에 저장하기 위해, 정해진 개수의 VPT 피스들을 포함하는 VPT 청크에 에러 정정 인코딩을 수행하고, 상기 VPT 청크에 VM 패리티 비트가 부가된 VPT 코드워드를 생성할 수 있다. 도 6b의 예에서, VM ECC(146)는 16개의 VPT 피스를 포함하는 64바이트의 VPT 청크에 16비트의 VM 패리티 비트를 부가하여 66바이트의 비 조정된 VPT 코드워드를 생성할 수 있다.
도 6a 내지 도 6c를 참조하여 설명된 바와 같이, 휘발성 메모리(144)에 저장된 맵 데이터의 대부분은 조정된 맵 코드워드이며, 비 조정된 맵 코드워드는 맵 데이터의 일부분을 차지할 수 있다.
본 발명의 제2 실시 예에 따르면, 메모리 시스템(110)의 전원을 종료할 때 메모리 인터페이스(142)는 조정된 맵 코드워드들은 VM ECC(146)를 바이패스하여 맵 ECC(214)에 의해 에러 정정 디코딩되고, 비 조정된 맵 코드워드들은 VM ECC(146)에 의해 에러 정정 디코딩되도록 제어할 수 있다.
본 발명의 제2 실시 예에서, VM ECC(146)는 조정된 맵 코드워드와 비 조정된 맵 코드워드 모두의 에러 정정 디코딩을 수행할 수 있도록 구현될 수 있다. 반면에, 맵 ECC(214)는 조정된 맵 코드워드만을 처리할 수 있도록 구현될 수 있다. 맵 ECC(214)가 조정된 맵 코드워드만을 처리할 수 있다면 맵 ECC(214)가 간단하게 구현될 수 있다. 따라서, 메모리 시스템(110) 회로에서 맵 ECC(214)가 차지하는 면적이 감소할 수 있다.
휘발성 메모리(144)에 저장된 맵 데이터의 대부분이 조정된 맵 코드워드이므로, 맵 ECC(214)가 조정된 맵 코드워드만을 향상된 처리량으로 처리하더라도 맵 코드워드 전체의 처리량은 맵 ECC(214)의 처리량과 비슷할 수 있다. 따라서, 메모리 시스템(110)의 전원 종료 시에 휘발성 메모리(144)에 저장된 맵 데이터를 빠르게 비휘발성 메모리 장치(150)에 저장할 수 있다.
도 7은 본 발명의 제2 실시 예에 따른 맵 ECC(214)를 상세히 설명하는 도면이다.
맵 ECC(214)는 맵 ECC 디코더(302) 및 맵 청크 스플리터(304)를 포함할 수 있다.
맵 ECC 디코더(302)는 조정된 맵 코드워드의 에러 정정 디코딩을 수행할 수 있다.
맵 청크 스플리터(304)는 상기 에러 정정된, 조정된 맵 코드워드로부터 VM 패리티 비트를 제거하고, 맵 청크가 2의 거듭제곱수의 비트를 가질 수 있도록 하는 청크 스플릿(chunk split) 동작을 수행할 수 있다.
도 8a 및 도 8b는 맵 청크 스플리터(304)의 청크 스플릿 동작을 설명하기 위한 도면이다.
도 8a는 청크 스플릿 동작이 수행되기 이전의 조정된 맵 코드워드를 나타낸다.
도 8a의 조정된 맵 코드워드는 도 6b를 참조하여 설명된 L2V 코드워드와 실질적으로 동일하거나 유사할 수 있다. 상기 조정된 맵 코드워드는 조정된 맵 청크와 VM 패리티를 포함할 수 있다. 상기 조정된 맵 청크는 정해진 개수의 연속한 맵 피스들로 구성될 수 있다. 상기 조정된 맵 피스는 2의 거듭제곱수의 비트를 갖지 못할 수 있다. 맵 청크 스플리터(304)는 조정된 맵 코드워드로부터 VM 패리티 비트를 제거할 수 있다. 그리고, 맵 청크 스플리터(304)는 각 조정된 맵 피스에 더미 데이터를 부가하여 상기 조정된 맵 피스가 2의 거듭제곱수의 비트를 갖도록 하는 청크 스플릿 동작을 수행할 수 있다.
도 8b는 청크 스플릿 동작이 완료된 맵 청크를 나타낸다.
맵 청크 스플리터(304)는 VM 패리티 비트를 제거하고, 맵 청크가 2의 거듭제곱수의 비트를 가질 수 있도록 VM 패리티 비트와 동일한 크기의 더미 데이터를 부가할 수 있다. 구체적으로, 맵 청크 스플리터(304)가 조정된 맵 피스들 각각에 1비트씩의 더미 데이터를 부가함으로써 맵 청크에 포함된 조정된 맵 피스들이 서로 연속하지 않고 스플릿될 수 있다.
조정된 맵 피스들에 각각에 더미 데이터가 부가되면 2의 거듭제곱수의 비트를 가질 수 있다. 상기 더미 데이터가 부가된 조정된 맵 피스들을 포함하는 조정된 맵 청크 또한 2의 거듭제곱수의 비트를 가질 수 있다. 따라서, 프로세서(134)는 비휘발성 메모리 장치(150)에 상기 맵 청크를 저장하기 위해 복잡한 매핑 연산을 수행하지 않을 수 있다.
맵 청크 스플리터(304)는 메모리 시스템(110)의 모드에 따라 선택적으로 활성화될 수 있다. 예를 들어, 메모리 시스템(110)이 제1 모드로 동작하는 경우 맵 청크 스플리터(304)가 활성화될 수 있다. 메모리 시스템(110)이 제2 모드로 동작하는 경우 맵 청크 스플리터(304)가 비활성화될 수 있다.
이하에서, 도 9 내지 도 11을 참조하여 본 발명의 제2 실시 예에 따른 동작이 설명된다. 도 9 내지 도 11은 도 1 및 도 2를 참조하여 설명된 메모리 인터페이스(142), 휘발성 메모리(144), VM ECC(146) 및 비휘발성 메모리 장치(150)를 간략히 도시한다.
도 9는 본 발명의 제2 실시 예에 따른 메모리 시스템(110)의 전원 종료 동작을 설명하는 도면이다.
메모리 시스템(110)의 전원 종료 신호에 응하여, 프로세서(134)는 휘발성 메모리(144)에 저장된 다수의 맵 코드워드들을 비휘발성 메모리 장치(150)에 프로그램하도록 메모리 인터페이스(142)를 제어할 수 있다. 메모리 인터페이스(142)가 상기 다수의 맵 코드워드들을 비휘발성 메모리 장치(150)에 프로그램하는 동작이 자세히 설명된다.
단계 S902에서 프로세서(134)는 맵 ECC(214)는 휘발성 메모리(144)로부터 다수의 조정된 맵 코드워드들을 획득하고, 상기 조정된 맵 코드워드들의 에러 정정 디코딩을 수행할 수 있다.
단계 S904에서, 맵 ECC(214)는 에러가 정정된, 조정된 맵 데이터를 데이터 경로(216)로 제공할 수 있다.
메모리 시스템(110)에서 제1 모드가 선택된 경우, 맵 청크 스플리터(304)가 활성화될 수 있다. 맵 ECC(214)는 맵 청크 스플리터(304)를 사용하여 에러가 정정된, 조정된 맵 코드워드들의 VM 패리티 비트들을 제거하고, 도 8b를 참조하여 설명된 청크 스플릿 동작을 수행할 수 있다. 도 9를 참조하면, 상기 제1 모드가 선택된 경우 상기 조정된 맵 데이터는 조정된 맵 청크들을 포함할 수 있다.
메모리 시스템(110)에서 제2 모드가 선택된 경우, 맵 청크 스플리터(304)가 비활성화될 수 있다. 맵 ECC(214)는 VM 패리티 비트들이 제거되지 않은 맵 코드워드들을 데이터 경로(216)로 제공할 수 있다. 도 9를 참조하면, 상기 제2 모드가 선택된 경우 상기 조정된 맵 데이터는 조정된 맵 코드워드들을 포함할 수 있다.
데이터 경로(216)는 내부 NVM ECC 인코더를 사용하여 상기 조정된 맵 데이터에 에러 정정 인코딩을 수행함으로써 NVM 패리티 비트가 부가된 맵 데이터를 생성할 수 있다.
상기 전원 종료 신호에 응하여, 단계 S906에서 VM ECC(146)는 휘발성 메모리(144)로부터 비 조정된 맵 코드워드들을 수신하여 상기 비 조정된 맵 코드워드들의 에러 정정 디코딩을 수행하고, 에러가 정정된 맵 코드워드들의 VM 패리티 비트를 제거함으로써 비 조정된 맵 청크를 생성할 수 있다. 도 6c를 참조하여 설명된 바와 같이, 비 조정된 맵 청크는 2의 거듭제곱수의 비트를 가질 수 있다. 따라서, 비휘발성 메모리 장치(150)에 상기 비 조정된 맵 청크를 저장하기 위해 프로세서(134)가 복잡한 매핑 연산을 수행하지 않을 수 있다.
단계 S908에서, VM ECC(146)는 상기 생성된 맵 청크를 데이터 경로(216)로 제공할 수 있다. 데이터 경로(216)는 내부 NVM ECC 인코더를 사용하여 비 조정된 맵 청크들에 에러 정정 인코딩을 수행함으로써 NVM 패리티 비트가 부가된 맵 데이터를 생성할 수 있다.
단계 S902 및 단계 S904의 조정된 맵 코드워드들에 대한 동작과 단계 S906 및 단계 S908의 비 조정된 맵 코드워드들에 대한 동작은 병렬로 수행될 수 있다.
단계 S910에서, 데이터 경로(216)는 단계 S904 및 단계 S908의 동작으로 NVM 패리티 비트가 부가된 데이터를 채널 DMA(230)를 통해 비휘발성 메모리 장치(150)로 제공할 수 있다. 비휘발성 메모리 장치(150)는 상기 NVM 패리티 비트가 부가된 데이터를 프로그램할 수 있다. 그리고 메모리 시스템(110)은 전원을 종료할 수 있다.
한편, 메모리 시스템(110)의 동작 모드에 따라 메모리 시스템(110)의 부팅 시 맵 데이터를 비휘발성 메모리 장치(150)로부터 휘발성 메모리(144)로 로드하는 방법이 달라질 수 있다. 각 모드에 따른 맵 데이터의 로드 방법이 도 10 및 도 11을 참조하여 설명된다.
도 10은 제1 모드에 따른 메모리 시스템(110)의 부팅 동작을 설명하는 도면이다.
메모리 시스템(110)에 전원이 공급된 후, 단계 S1002에서 프로세서(134)는 비휘발성 메모리 장치(150)로부터 맵 데이터를 리드하도록 메모리 인터페이스(142)를 제어할 수 있다.
비휘발성 메모리 장치(150)는 메모리 인터페이스(142)의 제어에 응하여 맵 데이터를 출력할 수 있다. 리드 경로(250)에 포함된 NVM ECC 디코더(미도시)는 상기 출력된 맵 데이터의 에러 정정 디코딩을 수행할 수 있다.
제1 모드에서 파워 오프 동작이 수행된 경우 비휘발성 메모리 장치(150)에 저장된 맵 데이터는 조정된 맵 청크들, 비 조정된 맵 청크들 및 상기 맵 청크들에 부가된 NVM 패리티 비트를 포함할 수 있다.
단계 S1004에서, 메모리 인터페이스(142)는 에러가 정정된 맵 청크들을 VM ECC(146)으로 제공할 수 있다. 상기 맵 청크들은 조정된 맵 청크들 및 비 조정된 맵 청크들을 포함할 수 있다. VM ECC(146)는 상기 맵 청크들에 에러 정정 인코딩을 수행하여 맵 코드워드들을 생성할 수 있다.
단계 S1006에서, VM ECC(146)는 상기 맵 코드워드들을 휘발성 메모리(144)에 저장하고, 부팅을 완료할 수 있다.
본 발명의 제2 실시 예에 따르면, 메모리 시스템(110)이 제1 모드로 동작하는 경우 조정된 맵 청크들 및 비 조정된 맵 청크들의 구분 없이 일괄적으로 VM ECC(146)에 의해 에러 정정 디코딩될 수 있다. 따라서, 부팅 동작 시 조정된 맵 청크들 및 비 조정된 맵 청크들을 구분하기 위한 연산이 생략될 수 있다.
도 11은 제2 모드에 따른 메모리 시스템(110)의 부팅 동작을 설명하는 도면이다.
메모리 시스템(110)에 전원이 공급된 후, 단계 S1102에서 프로세서(134)는 비휘발성 메모리 장치(150)가 맵 데이터를 출력하도록 메모리 인터페이스(142)를 제어할 수 있다. 제2 모드에서 전원 종료 동작이 수행된 경우, 상기 맵 데이터는 NVM 패리티 비트가 부가된, 조정된 맵 코드워드들과 비 조정된 맵 청크들을 포함할 수 있다.
리드 경로(250)에 포함된 NVM ECC 디코더는 NVM 패리티 비트를 사용하여 상기 출력된 조정된 맵 코드워드들과 비 조정된 맵 청크들의 에러 정정 디코딩을 수행할 수 있다.
단계 S1104에서, 메모리 인터페이스(142)는 VM ECC(146)를 바이패스하여 조정된 맵 코드워드들을 휘발성 메모리(144)에 바로 저장할 수 있다. 조정된 맵 코드워드들이 맵 코드워드들의 대부분을 차지하므로, 메모리 시스템(110)이 제2 모드로 동작하면, 메모리 시스템(110)의 부팅 시에 VM ECC(146)에 의한 병목현상이 해소될 수 있다.
단계 S1106에서, 메모리 인터페이스(142)는 VM ECC(146)로 비 조정된 맵 청크들을 제공할 수 있다.
단계 S1108에서, VM ECC(146)는 상기 비 조정된 맵 청크들에 VM 패리티 비트를 부가함으로써 비 조정된 맵 코드워드들을 생성할 수 있다. VM ECC(146)는 상기 비 조정된 맵 코드워드들을 휘발성 메모리(144)로 제공할 수 있다.
조정된 맵 코드워드들과 비 조정된 맵 코드워드들이 휘발성 메모리(144)에 저장된 후 메모리 시스템(110)의 부팅이 완료될 수 있다.
한편, 단계 S1104 내지 단계 S1108을 수행하기 위해서, 조정된 맵 코드워드들과 비 조정된 맵 청크들이 구분될 필요가 있다. 프로세서(134)는 메모리 시스템(110)의 전원 종료 시에 메모리 장치(150)에 저널링(journaling)된 데이터를 참조하여 상기 조정된 맵 청크들과 비 조정된 맵 청크들을 구분할 수 있다.
도 6 내지 도 11을 참조하여 설명된 본 발명의 제2 실시 예에 따르면, 메모리 인터페이스(142)는 휘발성 메모리(144)에 저장된 맵 코드워드들을 비휘발성 메모리 장치(150)에 저장하기 위해 맵 ECC(214)가 상기 조정된 맵 코드워드들의 에러 정정 디코딩을 수행하고, VM ECC(146)가 상기 비 조정된 맵 코드워드들의 에러 정정 디코딩을 수행할 수 있다. 맵 ECC(214)는 단지 조정된 맵 코드워드들의 에러 정정 디코딩을 수행할 수 있도록 구현되므로 메모리 시스템(110)에서 맵 ECC(214)는 적은 면적을 차지할 수 있다. 그리고, 맵 코드워드들의 대부분을 차지하는 조정된 맵 코드워드들이 맵 ECC(214)에서 에러 정정 디코딩되므로, 메모리 시스템(110)의 전원 종료 시간이 단축될 수 있다.
본 발명의 제1 및 제2 실시 예에 따르면, 메모리 시스템(110)의 전원 종료 시 메모리 인터페이스(142)가 맵 ECC(214)를 사용하여 휘발성 메모리(144)에 저장된 맵 데이터의 적어도 일부를 에러 정정 디코딩하고, 메모리 장치(150)에 저장하는 실시 예들이 설명되었으나 본 발명은 이에 제한되지 않는다. 예를 들어, 휘발성 메모리(144)는 메모리 시스템(110)의 동작을 위한 메타 데이터를 저장할 수 있다. 상기 메타 데이터는 맵 데이터뿐만 아니라 블록 관리 데이터 등을 더 포함할 수 있다. 메모리 인터페이스(142)는 맵 ECC(214)를 사용하여 휘발성 메모리(144)에 저장된 메타 데이터를 에러 정정 디코딩하고, 비휘발성 메모리 장치(150)에 저장할 수 있다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
110: 메모리 시스템
130: 컨트롤러
150: 비휘발성 메모리 장치

Claims (20)

  1. 메모리 시스템에 있어서,
    비휘발성 메모리 장치;
    상기 비휘발성 메모리 장치에 액세스하기 위한 매핑 정보를 포함하는 제1 맵 청크를 생성하는 프로세서;
    상기 프로세서로부터 생성되는 제1 맵 청크에 제1 패리티 비트를 부가하여 제1 맵 코드워드를 생성하는 제1 ECC(error correcting code);
    상기 제1 맵 코드워드를 저장하는 휘발성 메모리;
    상기 메모리 시스템의 전원 종료 시 상기 휘발성 메모리로부터 출력되어 상기 제1 ECC를 바이패스한 상기 제1 맵 코드워드의 에러 정정 디코딩을 수행함으로써 제1 맵 데이터를 생성하는 제2 ECC; 및
    상기 제1 맵 데이터를 상기 비휘발성 메모리 장치로 제공하는 DMA(direct memory access)
    를 포함하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 제1 ECC는
    상기 제2 ECC보다 낮은 레이턴시(latency)를 가지고,
    상기 제2 ECC는
    상기 제1 ECC보다 높은 처리량(throughput)을 가지는
    메모리 시스템.
  3. 제2항에 있어서,
    상기 메모리 시스템의 전원 종료 시 제2 ECC와 병렬로 상기 제1 맵 코드워드의 에러 정정 디코딩을 수행함으로써 상기 제1 맵 데이터 생성하는 제3 ECC
    를 더 포함하는 메모리 시스템.
  4. 제1항에 있어서,
    상기 제1 맵 데이터는
    제1 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드로부터 제1 패리티 비트가 제거된 제1 맵 청크이고,
    제2 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드의 제1 패리티 비트가 유지된 제1 맵 코드워드인
    메모리 시스템.
  5. 제4항에 있어서,
    상기 DMA는
    상기 제1 모드에서, 상기 메모리 시스템의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제1 맵 청크를 상기 제1 ECC로 더 제공하고,
    상기 제2 모드에서, 상기 메모리 시스템의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제1 맵 코드워드를, 상기 제1 ECC를 바이패스하여 상기 휘발성 메모리로 더 제공하는
    메모리 시스템.
  6. 제1항에 있어서,
    상기 휘발성 메모리는
    상기 프로세서에 의해 생성된 제2 맵 청크 및 상기 제1 ECC에 의해 부가된 제2 패리티 비트를 포함하는 제2 맵 코드워드를 더 저장하고,
    상기 제1 ECC는
    상기 메모리 시스템의 전원 종료 시 상기 제2 맵 코드워드로부터 에러 정정 디코딩을 수행하고 제2 패리티 비트를 제거함으로써 제2 맵 청크를 생성하고,
    상기 DMA는
    상기 제2 맵 청크를 상기 비휘발성 메모리 장치로 더 제공하는
    메모리 시스템.
  7. 제6항에 있어서,
    상기 제1 맵 코드워드는 2의 거듭제곱수 크기를 갖도록 조정된(aligned) 맵 코드워드이고,
    상기 제2 맵 코드워드는 2의 거듭제곱수 크기를 갖지 않는 비 조정된(unaligned) 맵 코드워드인
    메모리 시스템.
  8. 제7항에 있어서,
    상기 조정된 맵 코드워드는 L2V(logical to virtual) 맵 코드워드를 포함하고,
    상기 비 조정된 맵 코드워드는 VPT(valid page table) 맵 코드워드를 포함하는
    메모리 시스템.
  9. 제7항에 있어서,
    상기 제1 맵 데이터는
    제1 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드로부터 제1 패리티 비트가 제거된 제1 맵 청크이고,
    제2 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드의 제1 패리티 비트가 유지된 제1 맵 코드워드인
    메모리 시스템.
  10. 제9항에 있어서,
    상기 DMA는
    상기 제1 모드에서, 상기 메모리 시스템의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제1 맵 청크를 상기 제1 ECC로 더 제공하고,
    상기 제2 모드에서, 상기 메모리 시스템의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제1 맵 코드워드를, 상기 제1 ECC를 바이패스하여 상기 휘발성 메모리로 더 제공하는
    메모리 시스템.
  11. 제9항에 있어서,
    상기 DMA는
    상기 메모리 시스템의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제2 맵 데이터를 상기 제1 ECC로 더 제공하고,
    상기 제1 ECC는
    상기 제2 맵 청크에 패리티 비트를 부가함으로써 제2 맵 코드워드를 생성하여 상기 휘발성 메모리로 더 제공하는
    메모리 시스템.
  12. 제7항에 있어서,
    상기 제1 맵 데이터 및 상기 제2 맵 청크를 상기 비휘발성 메모리 장치에 저장하기 위해 에러 정정 인코딩을 수행하고, 상기 비휘발성 메모리 장치로부터 획득된 데이터의 에러 정정 디코딩을 수행하는 제4 ECC
    를 더 포함하는 메모리 시스템.
  13. 비휘발성 메모리 장치를 제어하는 컨트롤러에 있어서,
    상기 비휘발성 메모리 장치에 액세스하기 위한 매핑 정보를 포함하는 제1 맵 청크를 생성하는 프로세서;
    상기 프로세서로부터 생성되는 제1 맵 청크에 제1 패리티 비트를 부가하여 제1 맵 코드워드를 생성하는 제1 ECC(error correcting code);
    상기 제1 맵 코드워드를 저장하는 휘발성 메모리;
    상기 컨트롤러의 전원 종료 시 상기 휘발성 메모리로부터 출력되어 상기 제1 ECC를 바이패스한 상기 제1 맵 코드워드의 에러 정정 디코딩을 수행함으로써 제1 맵 데이터를 생성하는 제2 ECC; 및
    상기 제1 맵 데이터를 상기 비휘발성 메모리 장치로 제공하는 DMA(direct memory access)
    를 포함하는 컨트롤러.
  14. 제13항에 있어서,
    상기 제1 ECC는
    상기 제2 ECC보다 낮은 레이턴시(latency)를 가지고,
    상기 제2 ECC는
    상기 제1 ECC보다 높은 처리량(throughput)을 가지는
    컨트롤러.
  15. 제13항에 있어서,
    상기 제1 맵 데이터는
    제1 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드로부터 제1 패리티 비트가 제거된 제1 맵 청크이고,
    제2 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드의 제1 패리티 비트가 유지된 제1 맵 코드워드인
    컨트롤러.
  16. 제15항에 있어서,
    상기 DMA는
    상기 제1 모드에서, 상기 컨트롤러의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제1 맵 청크를 상기 제1 ECC로 더 제공하고,
    상기 제2 모드에서, 상기 컨트롤러의 부팅 시 상기 비휘발성 메모리 장치로부터 획득된 제1 맵 코드워드를, 상기 제1 ECC를 바이패스하여 상기 휘발성 메모리로 더 제공하는
    컨트롤러.
  17. 제13항에 있어서,
    상기 휘발성 메모리는
    상기 프로세서에 의해 생성된 제2 맵 청크 및 상기 제1 ECC에 의해 부가된 제2 패리티 비트를 포함하는 제2 맵 코드워드를 더 저장하고,
    상기 제1 ECC는
    상기 메모리 시스템의 전원 종료 시 상기 제2 맵 코드워드로부터 에러 정정 디코딩을 수행하고 제2 패리티 비트를 제거함으로써 제2 맵 청크를 생성하고,
    상기 DMA는
    상기 제2 맵 청크를 상기 비휘발성 메모리 장치로 더 제공하는
    컨트롤러.
  18. 제17항에 있어서,
    상기 제1 맵 코드워드는 2의 거듭제곱수 크기를 갖도록 조정된(aligned) 맵 코드워드이고,
    상기 제2 맵 코드워드는 2의 거듭제곱수 크기를 갖지 않는 비 조정된(unaligned) 맵 코드워드인
    컨트롤러.
  19. 제18항에 있어서,
    상기 제1 맵 데이터는
    제1 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드로부터 제1 패리티 비트가 제거된 제1 맵 청크이고,
    제2 모드에서, 상기 에러 정정 디코딩된 제1 맵 코드워드의 제1 패리티 비트가 유지된 제1 맵 코드워드인
    컨트롤러.
  20. 제18항에 있어서,
    상기 제1 맵 데이터 및 상기 제2 맵 청크를 상기 비휘발성 메모리 장치에 저장하기 위해 에러 정정 인코딩을 수행하고, 상기 비휘발성 메모리 장치로부터 획득된 데이터의 에러 정정 디코딩을 수행하는 제4 ECC
    를 더 포함하는 컨트롤러.

KR1020200133494A 2020-10-15 2020-10-15 메모리 시스템 및 컨트롤러 KR20220049856A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200133494A KR20220049856A (ko) 2020-10-15 2020-10-15 메모리 시스템 및 컨트롤러
US17/192,389 US11422889B2 (en) 2020-10-15 2021-03-04 Memory system and controller for storing map data of volatile memory into nonvolatile memory device during power off operation
CN202110702500.XA CN114373500A (zh) 2020-10-15 2021-06-24 一种存储器系统和控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200133494A KR20220049856A (ko) 2020-10-15 2020-10-15 메모리 시스템 및 컨트롤러

Publications (1)

Publication Number Publication Date
KR20220049856A true KR20220049856A (ko) 2022-04-22

Family

ID=81137960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200133494A KR20220049856A (ko) 2020-10-15 2020-10-15 메모리 시스템 및 컨트롤러

Country Status (3)

Country Link
US (1) US11422889B2 (ko)
KR (1) KR20220049856A (ko)
CN (1) CN114373500A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734115B2 (en) * 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208071B2 (en) * 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US8527693B2 (en) * 2010-12-13 2013-09-03 Fusion IO, Inc. Apparatus, system, and method for auto-commit memory
US10389380B2 (en) * 2016-04-20 2019-08-20 SK Hynix Inc. Efficient data path architecture for flash devices configured to perform multi-pass programming
KR20180051706A (ko) 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템
KR102623234B1 (ko) * 2018-08-14 2024-01-11 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US11386203B2 (en) * 2020-06-15 2022-07-12 Western Digital Technologies, Inc. Detection of compromised storage device firmware

Also Published As

Publication number Publication date
CN114373500A (zh) 2022-04-19
US11422889B2 (en) 2022-08-23
US20220121517A1 (en) 2022-04-21

Similar Documents

Publication Publication Date Title
US10942660B2 (en) Memory system for peforming compression based on map data pattern and operating method thereof
US20190369918A1 (en) Memory system and operating mehtod thereof
CN107229577B (zh) 存储系统及其操作方法
CN109213622B (zh) 存储系统及其操作方法
KR102530905B1 (ko) 메모리 시스템 및 그의 동작 방법
US10403369B2 (en) Memory system with file level secure erase and operating method thereof
US10489078B2 (en) Controller keeping a sequence of data and operating method thereof
US10866889B2 (en) Memory system performing a garbage collection operation and a sudden power-off recovery operation and operating method thereof
US10664391B2 (en) Controller and operating method thereof
US10747469B2 (en) Memory system and operating method of the same
US11144449B2 (en) Memory system and operation method thereof
KR20180087496A (ko) 메모리 시스템
KR102563760B1 (ko) 인터페이스 유닛 및 그것의 동작방법
US20180373629A1 (en) Memory system and operating method thereof
CN109656470B (zh) 存储器系统及其操作方法
US20180081551A1 (en) Memory system and operating method thereof
KR102371264B1 (ko) 메모리 시스템
US20200019507A1 (en) Controller and operating method thereof
CN110045914B (zh) 存储器系统及其操作方法
KR20200008273A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US20230068089A1 (en) Memory system and operation method thereof
KR102373315B1 (ko) 메모리 시스템 및 그것의 동작방법
US20190087114A1 (en) Data processing system and operating method thereof
US20190012109A1 (en) Memory system and operating method for the memory system
US20200150867A1 (en) Memory system and operation method thereof