KR20130060791A - 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브 - Google Patents

마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브 Download PDF

Info

Publication number
KR20130060791A
KR20130060791A KR1020110127043A KR20110127043A KR20130060791A KR 20130060791 A KR20130060791 A KR 20130060791A KR 1020110127043 A KR1020110127043 A KR 1020110127043A KR 20110127043 A KR20110127043 A KR 20110127043A KR 20130060791 A KR20130060791 A KR 20130060791A
Authority
KR
South Korea
Prior art keywords
memory
information
buffer area
wear
area
Prior art date
Application number
KR1020110127043A
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 KR1020110127043A priority Critical patent/KR20130060791A/ko
Priority to US13/604,780 priority patent/US20130138870A1/en
Priority to JP2012249984A priority patent/JP2013114679A/ja
Priority to CN2012105050188A priority patent/CN103137199A/zh
Publication of KR20130060791A publication Critical patent/KR20130060791A/ko

Links

Images

Classifications

    • 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
    • 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/1072Adding 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 multilevel memories
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • 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/7211Wear leveling
    • 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
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

본 발명에 따른 메모리 시스템은 사용자 영역과 버퍼 영역을 갖는 불휘발성 메모리; 및 상기 불휘발성 메모리의 마모도 정보에 근거하여, 상기 사용자 영역의 일부 블록을 상기 버퍼 영역으로 전환하는 동작을 관리하기 위한 마모도 제어 로직을 포함한다. 상기 마모도 정보는 상기 사용자 영역의 프로그램-소거 사이클 정보, ECC 에러율 정보, 또는 소거 루프 회수 정보일 수 있다. 본 발명에 의하면, 버퍼 영역의 P/E 사이클 내구성(endurance)을 증가하거나, ECC 에러율이나 소거 루프 횟수의 증가율을 줄임으로, 메모리 시스템의 성능을 향상시킬 수 있다.

Description

마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브{MEMORY SYSTEM, DATA STORAGE DEVICE, MEMORY CARD, AND SSD INCLUDING WEAR LEVEL CONTROL LOGIC}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 불휘발성 메모리를 기반으로 하는 메모리 시스템 및 그것의 모드 전환 동작에 관한 것이다.
반도체 메모리 장치는 일반적으로 DRAM, SRAM 등과 같은 휘발성 메모리 장치와 EEPROM, FRAM, PRAM, MRAM, 플래시 메모리 등과 같은 불휘발성 메모리 장치로 구분할 수 있다. 휘발성 메모리 장치는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다. 특히, 플래시 메모리는 빠른 읽기 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 갖는다. 따라서 플래시 메모리를 포함하는 메모리 시스템은 데이터 저장 매체로 널리 사용되고 있다.
불휘발성 메모리를 포함하는 메모리 시스템은 파일 데이터를 효율적으로 관리하고 시스템의 성능을 향상하기 위하여, 데이터를 사용자 영역에 저장하기 전에 버퍼 영역에 저장한다. 이러한 프로그램 방식에 의하면, 머지 동작(merge operation)이나 블록 소거(block erase) 횟수 등을 줄일 수 있다. 그리고 메모리 컨트롤러 내의 SRAM 버퍼의 사용량을 줄일 수 있는 장점이 있다.
그러나 이러한 프로그램 방식은 버퍼 영역에 저장하는 파일 데이터의 사이즈가 커지면서 버퍼 영역의 공간이 부족할 수 있고, 버퍼 영역과 사용자 영역 간의 파일 데이터의 이동이 빈번히 일어나서 메모리 시스템의 성능이 저하될 수 있다. 또한, 모든 프로그램 동작 시에 버퍼 영역을 사용하기 때문에, 버퍼 영역의 마모도(wear level)가 사용자 영역에 비하여 빠르게 증가하는 문제점이 있다.
본 발명의 목적은 불휘발성 메모리의 버퍼 영역의 마모도를 완화하는 메모리 시스템을 제공하는 데 있다.
본 발명의 실시 예에 따른 메모리 시스템은 사용자 영역과 버퍼 영역을 갖는 불휘발성 메모리; 및 상기 불휘발성 메모리의 마모도 정보에 근거하여, 상기 사용자 영역의 일부 블록을 상기 버퍼 영역으로 전환하는 동작(이하, '모드 전환 동작'이라 함)을 관리하기 위한 마모도 제어 로직을 포함한다.
실시 예로서, 상기 사용자 영역에는 메모리 셀 당 N(N은 2 이상인 자연수) 비트 데이터가 저장되고, 상기 버퍼 영역에는 메모리 셀 당 M(M은 N보다 작은 자연수) 비트 데이터가 저장된다. 상기 버퍼 영역에는 싱글 비트 데이터가 저장될 수 있다. 불휘발성 메모리는 외부로부터 입력된 데이터를 상기 버퍼 영역에 저장한 다음에, 상기 버퍼 영역에 저장된 데이터를 상기 사용자 영역으로 이동한다.
다른 실시 예로서, 상기 마모도 정보는 상기 사용자 영역의 프로그램-소거 사이클 정보일 수 있다. 상기 마모도 제어 로직은 상기 프로그램-소거 사이클 정보에 따라, 단계적으로 모드 전환 동작을 수행할 수 있다.
또 다른 실시 예로서, 상기 마모도 정보는 ECC 에러율 정보일 수 있다. 상기 마모도 제어 로직은 상기 ECC 에러율 정보에 따라, 단계적으로 모드 전환 동작을 수행할 수 있다.
또 다른 실시 예로서, 상기 마모도 정보는 소거 루프 회수 정보일 수 있다. 상기 마모도 제어 로직은 상기 소거 루프 횟수 정보에 따라, 단계적으로 모드 전환 동작을 수행할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템의 다른 일면은, 사용자 영역과 버퍼 영역을 갖고, 데이터를 상기 버퍼 영역에 저장한 다음에 상기 사용자 영역으로 이동하는 플래시 메모리; 및 상기 플래시 메모리의 프로그램 소거 사이클 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록에 대한 모드 전환 동작을 수행하는 메모리 컨트롤러를 포함한다. 여기에서, 상기 메모리 컨트롤러는 상기 프로그램 소거 사이클 정보를 생성하는 제어 유닛; 및 상기 프로그램 소거 사이클 정보를 입력받고 모드 전환 동작을 관리하기 위한 마모도 제어 로직을 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템의 또 다른 일면은, 사용자 영역과 버퍼 영역을 갖고, 데이터를 상기 버퍼 영역에 저장한 다음에 상기 사용자 영역으로 이동하는 플래시 메모리; 및 상기 플래시 메모리의 ECC 에러율 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록에 대한 모드 전환 동작을 수행하는 메모리 컨트롤러를 포함한다. 여기에서, 상기 메모리 컨트롤러는 상기 ECC 에러율 정보를 제공하는 ECC 회로; 및 상기 ECC 에러율 정보를 입력받고 모드 전환 동작을 관리하기 위한 마모도 제어 로직을 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템의 또 다른 일면은, 사용자 영역과 버퍼 영역을 갖고, 데이터를 상기 버퍼 영역에 저장한 다음에 상기 사용자 영역으로 이동하는 플래시 메모리; 및 상기 플래시 메모리의 상기 플래시 메모리의 소거 루프 횟수 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록에 대한 모드 전환 동작을 수행하는 메모리 컨트롤러를 포함한다. 여기에서, 상기 플래시 메모리는 상기 소거 루프 횟수 정보를 제공하는 소거 루프 카운터를 포함하고; 상기 메모리 컨트롤러는 상기 소거 루프 횟수 정보를 입력받고 모드 전환 동작을 관리하기 위한 마모도 제어 로직을 포함할 수 있다.
본 발명에 따른 메모리 시스템은 마모도 정보(예를 들면, 프로그램-소거 사이클, ECC 에러율, 소거 루프 횟수 등)에 근거하여, 사용자 영역의 일부 메모리 블록을 단계적으로 버퍼 영역으로 모드 전환을 수행할 수 있다. 본 발명에 의하면, 버퍼 영역의 P/E 사이클 내구성(endurance)을 증가하거나, ECC 에러율이나 소거 루프 횟수의 증가율을 줄임으로 메모리 시스템의 성능을 향상시킬 수 있다.
도 1은 본 발명에 따른 메모리 시스템을 개략적으로 보여주는 블록도이다.
도 2는 프로그램-소거 사이클에 근거한 모드 전환 동작을 설명하기 위한 블록도이다.
도 3은 도 2에 도시된 메모리 시스템의 프로그램-소거 사이클에 따른 사용자 영역 및 버퍼 영역의 내구성(endurance)을 보여주는 도표이다.
도 4a 및 도 4b는 도 2에 도시된 메모리 시스템의 프로그램-소거 사이클에 따른 모드 변환 동작을 설명하기 위한 개념도이다.
도 5는 도 2에 도시된 메모리 시스템의 모드 전환 동작을 수행하기 위한 맵핑 테이블을 예시적으로 보여준다.
도 6은 ECC 에러율에 근거한 모드 전환 동작을 설명하기 위한 블록도이다.
도 7a 및 도 7b는 도 6에 도시된 메모리 시스템의 ECC 에러율에 따른 모드 변환 동작을 설명하기 위한 개념도이다.
도 8은 소거 루프 횟수에 근거한 모드 전환 동작을 설명하기 위한 블록도이다.
도 9는 도 8에 도시된 소거 루프 카운터를 설명하기 위한 다이어그램이다.
도 10a 및 도 10b는 도 8에 도시된 메모리 시스템의 소거 루프 횟수에 따른 모드 변환 동작을 설명하기 위한 개념도이다.
도 11 및 도 12는 본 발명에 따른 메모리 시스템의 다양한 적용 예를 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다.
도 15는 도 14에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 16은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다.
도 17은 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다.
도 18은 도 17에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다.
도 19는 도 18에 도시된 메모리 블록(BLK1)의 등가 회로도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명한다.
도 1은 본 발명에 따른 메모리 시스템을 개략적으로 보여주는 블록도이다. 도 1을 참조하면, 본 발명에 따른 메모리 시스템(100)은 불휘발성 메모리(NVM, 110) 및 메모리 컨트롤러(120)를 포함한다.
불휘발성 메모리(110)는 메모리 컨트롤러(120)에 의해서 제어되며, 메모리 컨트롤러(120)의 요청에 대응하는 동작들(예를 들면, 읽기 또는 쓰기 동작 등)을 수행할 수 있다. 불휘발성 메모리(110)는 사용자 영역(111)과 버퍼 영역(112)을 포함한다. 사용자 영역(111)은 저속 동작을 수행하는 메모리(이하, 저속 불휘발성 메모리)로 구현되며, 버퍼 영역(112)은 고속 동작을 수행하는 메모리(이하, 고속 불휘발성 메모리)로 구현될 수 있다.
고속 불휘발성 메모리는 고속 동작에 적합하고, 저속 불휘발성 메모리는 저속 동작에 적합한 맵핑 스킴을 사용하도록 구성될 수 있다. 예를 들어, 저속 불휘발성 메모리를 구성하는 사용자 영역(111)은 블록 맵핑 스킴을 통해 관리되고, 고속 불휘발성 메모리를 구성하는 버퍼 영역(112)은 페이지 맵핑 스킴을 통해 관리될 수 있다. 페이지 맵핑 스킴은 동작 성능(예를 들면, 쓰기 성능)의 저하를 유발하는 머지 동작을 필요로 하지 않기 때문에 버퍼 영역(112)은 고속으로 동작할 수 있다. 반면에, 블록 맵핑 스킴은 동작 성능(예를 들면, 쓰기 성능)의 저하를 유발하는 머지 동작을 필요로 하기 때문에 사용자 영역(111)은 상대적으로 저속으로 동작한다.
한편, 버퍼 영역(112)은 셀 당 1-비트 데이터를 저장하는 단일 레벨 셀 플래시 메모리(SLC flash memory)로 구성되고, 사용자 영역(111)은 셀 당 N-비트 데이터(N은 2 또는 그보다 큰 정수)를 저장하는 멀티-레벨 셀 플래시 메모리(MLC flash memory)로 구성될 수 있다. 또는, 사용자 및 버퍼 영역(111, 112) 각각은 멀티-레벨 플래시 메모리로 구성될 수 있다. 예를 들어, 사용자 영역(111)은 셀 당 N-비트 데이터를 저장하고, 버퍼 영역(112)은 셀 당 M-비트 데이터를 저장할 수 있다. 여기에서, M은 N보다 작은 자연수이다. 한편, 사용자 영역(111)과 버퍼 영역(112)은 하나의 메모리 장치로 구현되거나, 별도의 메모리 장치로 구현될 수도 있다.
메모리 컨트롤러(120)는 외부(예를 들면, 호스트)의 요청에 응답하여 불휘발성 메모리(110)에 대한 읽기 및 쓰기 동작들을 제어한다. 메모리 컨트롤러(120)는 호스트 인터페이스(121), 메모리 인터페이스(122), 제어 유닛(123), 램(124), ECC 회로(125), 그리고 마모도 제어 로직(Wear Level Control Logic, 126)을 포함한다.
호스트 인터페이스(121)는 외부(예를 들면, 호스트)와의 인터페이스를 제공하고, 메모리 인터페이스(122)는 불휘발성 메모리(110)와의 인터페이스를 제공한다. 호스트 인터페이스(121)는 하나 또는 그보다 많은 채널들(또는, 포트들) (도시되지 않음)을 통해 호스트(도시되지 않음)와 연결될 수 있다. 예를 들면, 호스트 인터페이스(121)는 PATA 버스(parallel AT attachment bus)와 SATA 버스(serial AT attachment) 중 어느 하나 또는 이들 모두를 통해 호스트와 연결될 수 있다. 또는, 호스트 인터페이스(121)는 SCSI, USB 등을 통해 외부와 연결될 수도 있다.
제어 유닛(123)은 불휘발성 메모리(110)에 대한 전반적인 동작(예를 들면, 읽기, 쓰기, 파일 시스템 관리 등)을 제어할 수 있다. 예를 들면, 비록 도면에는 도시되지 않았지만, 제어 유닛(123)은 중앙처리장치(CPU), 프로세서(processor), 에스램, DMA 제어기 등을 포함할 수 있다. 예시적인 제어 유닛(123)은 미국공개특허 제2006-0152981호에 "Solid State Disk Controller Apparatus"라는 제목으로 게재되어 있으며, 이 출원의 레퍼런스로서 포함된다.
제어 유닛(123)은 불휘발성 메모리(110)의 버퍼 영역(112)에 저장된 데이터를 사용자 영역(111)으로 옮기는 동작을 관리할 수 있다. 여기에서, 버퍼 영역(112)에 저장된 데이터는 플러시 동작에 의해 램(124)에서 덤프된 데이터일 수 있고, 호스트의 쓰기 요청에 의해 외부로부터 제공된 데이터일 수도 있다.
버퍼 영역(112)에서 사용자 영역(111)으로 데이터를 옮기는 동작은 다양한 방식들을 통해 수행될 수 있다. 예를 들면, 버퍼 영역(112)의 여유 공간이 미리 설정된 공간(예를 들면, 30%) 이하인 지의 여부에 따라 개시될 수 있다. 다른 예로, 정해진 시간마다 주기적으로 개시될 수도 있다. 또 다른 예로, 불휘발성 메모리(110)의 유휴 시간(idle time)을 감지함으로써 개시될 수도 있다.
램(124)은 제어 유닛(123)의 제어에 따라 동작하며, 워크 메모리(work memory), 버퍼 메모리(buffer memory), 캐시 메모리(cache memory) 등으로 사용될 수 있다. 램(124)은 하나의 칩으로 구성되거나, 불휘발성 메모리(110)의 각 영역에 대응하는 복수의 칩들로 구성될 수 있다.
램(124)이 워크 메모리로 사용되는 경우에, 제어 유닛(123)에 의해서 처리되는 데이터가 임시 저장된다. 램(124)이 버퍼 메모리로 사용되는 경우에는, 호스트에서 불휘발성 메모리(110)로 또는 불휘발성 메모리(110)에서 호스트로 전송될 데이터를 버퍼링하는 데 사용된다. 램(124)이 캐시 메모리로 사용되는 경우(이하, 캐시 스킴이라 함)에, 램(124)은 저속의 불휘발성 메모리(110)가 고속으로 동작하도록 한다. 캐시 스킴에 의하면, 캐시 메모리(램, 124)에 저장된 파일 데이터가 불휘발성 메모리(110)의 버퍼 영역(112)으로 덤프(dump) 된다. 제어 유닛(123)은 덤프(dump) 동작에 따른 맵핑 테이블(mapping table)을 관리할 수 있다.
램(124)은 불휘발성 메모리(110)가 플래시 메모리인 경우에 플래시 변환 계층(FTL)을 구동하기 위한 구동 메모리로 사용될 수 있다. 플래시 변환 계층(FTL)은 플래시 메모리의 머지 동작(merge operation)이나 맵핑 테이블(mapping table) 등을 관리하는 데 사용된다.
한편, 호스트(도시되지 않음)는 쓰기(write), 읽기(read) 이외에 플러시 캐시(flush cache)와 같은 커맨드를 메모리 시스템(100)으로 제공한다. 메모리 시스템(100)은 플러시 캐시 커맨드를 입력받을 때, 데이터 일관성(data consistency)을 유지하기 위해, 캐시 메모리(124)에 저장되어 있는 파일 데이터를 불휘발성 메모리(110)의 버퍼 영역(112)에 저장한다. 이러한 일련의 동작을 플러시 동작(flush operation)이라고 한다. 제어 유닛(123)은 플러시 동작 시에 캐시 메모리(124)의 파일 데이터를 불휘발성 메모리(110)의 버퍼 영역(112)으로 덤프(dump) 하는 동작을 관리할 수 있다.
ECC 회로(125)는 불휘발성 메모리(110)로부터 수신한 데이터의 에러 비트를 정정하기 위한 에러 정정 코드(ECC)를 생성한다. ECC 회로(125)는 불휘발성 메모리(110)로 제공되는 데이터의 오류 정정 인코딩을 수행하여, 패리티(parity) 비트가 부가된 데이터를 형성한다. 패리티 비트는 불휘발성 메모리(110)에 저장될 수 있다. 또한, ECC 회로(125)는 출력된 데이터에 대하여 에러 정정 디코딩을 수행하고, 수행 결과에 따라 에러 정정 디코딩의 성공 여부를 판단할 수 있다. ECC 회로(125)는 판단 결과에 따라 지시 신호를 출력하고, 패리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정할 수 있다.
ECC 회로(125)는 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 할 수 있다. ECC 회로(125)는 오류 정정을 위한 회로, 시스템 또는 장치를 모두 포함할 수 있다.
마모도 제어 로직(126)은 불휘발성 메모리(110)의 마모도(wear level)에 근거하여, 사용자 영역(111)의 일부 블록을 버퍼 영역(112)으로 전환하는 동작을 관리할 수 있다. 이러한 동작을 모드 전환 동작(mode change operation)이라고 한다. 마모도 제어 로직(126)은 불휘발성 메모리(110)의 마모도가 일정 레벨에 도달할 때, 사용자 영역(111)의 하나 또는 그 이상의 메모리 블록을 MLC 모드에서 SLC 모드로 전환하는 동작을 관리할 수 있다.
마모도 제어 로직(126)은 하드웨어나 소프트웨어로 구현될 수 있다. 즉, 마모도 제어 로직(126)은 메모리 컨트롤러(120) 내에 하나의 칩이나 모듈로 설치되거나, 플로피 디스크나 컴팩트 디스트 또는 USB 등과 같은 외장 메모리를 통해 연결될 수도 있다. 한편, 마모도 제어 로직(126)은 사용자에 의해 프로그램될 수 있는 형태로 구현될 수도 있다.
불휘발성 메모리(110)의 마모도는 프로그램-소거 사이클(P/E 사이클), ECC 에러율, 또는 소거 루프 횟수 등과 같은 파라미터(이하, 마모도 파라미터라 함)를 통해 알 수 있다. 불휘발성 메모리(110)는 일반적으로 P/E 사이클, ECC 에러율, 소거 루프 횟수가 증가할수록 마모도(wear level)가 증가한다. 이하에서는, 마모도 파라미터에 근거한 메모리 시스템(100)의 모드 전환 동작이 상세하게 설명될 것이다.
도 2는 프로그램-소거 사이클에 근거한 모드 전환 동작을 설명하기 위한 블록도이다. 도 2를 참조하면, 메모리 시스템(200)은 불휘발성 메모리(210) 및 메모리 컨트롤러(220)를 포함한다. 불휘발성 메모리(210)는 사용자 영역(211) 및 버퍼 영역(212)을 포함한다. 사용자 영역(211)은 메모리 셀 당 2 비트 이상을 저장하는 MLC 영역으로 모드 설정되어 있고, 버퍼 영역(212)은 싱글 비트를 저장하는 SLC 영역으로 모드 설정되어 있다.
불휘발성 메모리(210)는 프로그램-소거 동작을 반복하여 수행할 수 있는 허용 한도가 정해져 있다. 이를 P/E 사이클 내구성(endurance)이라고 한다. P/E 사이클 내구성은 메모리 셀 당 저장하는 데이터 비트 수에 따라 달라질 수 있다. 일반적으로 셀 당 저장하는 데이터 비트 수가 작을수록, P/E 사이클 내구성은 증가한다.
한편, 사용자 영역(211)으로 프로그램되는 모든 데이터는 먼저 버퍼 영역(212)에 저장된다. 그 다음에 버퍼 영역(212)에서 사용자 영역(211)으로 데이터를 옮기는 동작이 수행된다. 이러한 프로그램 방식을 온 칩 버퍼드 프로그램(OBP; On-chip Buffered Program)이라고 한다. OBP 방식에 의하면, 버퍼 영역(212)에 대한 프로그램-소거 동작이 반복적으로 수행되기 때문에, 버퍼 영역(212)의 P/E 사이클 내구성이 좋아야 한다. 도 2에 도시된 메모리 시스템(200)은 사용자 영역(211)의 일부를 버퍼 영역(212)으로 모드 전환함으로, 버퍼 영역(212)의 P/E 사이클 내구성을 증가할 수 있다.
계속해서 도 2를 참조하면, 메모리 컨트롤러(220)는 제어 유닛(223) 및 마모도 제어 로직(226)을 포함한다. 제어 유닛(223)은 불휘발성 메모리(210)의 프로그램-소거 사이클(P/E)에 관한 정보를 마모도 제어 로직(226)으로 제공한다. 마모도 제어 로직(226)은 P/E 정보에 근거하여, 사용자 영역(211)의 일부 메모리 블록에 대한 모드 전환 동작(mode change operation)을 수행한다.
예를 들어, 불휘발성 메모리(210)는 100개의 메모리 블록으로 구성되고, 사용자 영역(211)은 98개의 3 비트 MLC 메모리 블록으로 구성되고, 버퍼 영역(212)은 2개의 SLC 메모리 블록으로 구성되어 있다고 가정하자. 마모도 제어 로직(226)은 P/E 사이클이 미리 정해진 횟수에 도달할 때, 사용자 영역(211)의 일부 MLC 메모리 블록을 SLC 메모리 블록으로 전환한다.
도 3은 도 2에 도시된 메모리 시스템의 프로그램-소거 사이클에 따른 사용자 영역 및 버퍼 영역의 내구성(endurance)을 보여주는 도표이다. 도 3은 SLC 버퍼 영역(도 2 참조, 212)은 2%이고, 3 비트 MLC 사용자 영역(도 2 참조, 211)은 98%인 것으로 가정한 것이다. 또한, 도 3은 MLC 사용자 영역(211)으로 프로그램되는 모든 데이터는 먼저 SLC 버퍼 영역(212)에 저장되는 것으로 가정한 것이다.
도 3을 참조하면, MLC 사용자 영역(211)의 내구성(MLC[E])이 0.5K, 1.0K, 1.5K일 때 SLC 버퍼 영역(212)의 내구성(SLC[E])은 각각 75K, 150K, 225K이다. MLC 사용자 영역(211)의 P/E 사이클을 1000번 보장하기 위해서는, 불휘발성 메모리(도 2 참조, 200)는 SLC 버퍼 영역(도 2 참조, 212)의 P/E 사이클을 150,000번을 보장해야 한다. SLC 버퍼 영역(212) 및 MLC 사용자 영역(211)의 내구성 상관 관계는 수학식 1과 같이 표현될 수 있다.
Figure pat00001
SLC 버퍼 영역의 내구성(SLC[E])은 MLC 사용자 영역의 내구성(MLC[E])이 증가할수록 증가하고, SLC 버퍼 영역의 블록 수가 많을수록 감소한다. SLC 버퍼 영역(212)의 내구성은 MLC 사용자 영역(211)의 내구성보다 10배 이상 크다. 이것은 MLC 사용자 영역(211)으로 사용하던 일부 메모리 블록을 SLC 버퍼 영역(212)으로 모드 전환을 하여도 90% 이상의 내구성을 그대로 사용할 수 있음을 의미한다.
도 4a 및 도 4b는 도 2에 도시된 메모리 시스템의 프로그램-소거 사이클에 따른 모드 변환 동작을 설명하기 위한 개념도이다. 도 4a는 불휘발성 메모리(도 2 참조, 210)의 MLC 사용자 영역(도 2 참조, 211)의 P/E 사이클 사용 퍼센트(%)에 따른 모드 전환 동작을 보여주고, 도 4b는 SLC 버퍼 영역(212)의 P/E 사이클 사용 퍼센트(%)에 따른 모드 전환 동작을 보여준다.
도 4a를 참조하면, MLC 사용자 영역(211)의 P/E 사이클 초기(0%)에, MLC 사용자 영역(211)은 98%이고 SLC 버퍼 영역(212)은 2%이다. 즉, 불휘발성 메모리(210)는 전체 100개의 메모리 블록 중에서 98개의 메모리 블록을 사용자 영역으로 사용하고 2개의 메모리 블록을 버퍼 영역으로 사용하고 있다.
MLC 사용자 영역(211)의 P/E 사이클이 25% 수행된 경우에, MLC 사용자 영역(211)의 일부 메모리 블록(예를 들면, 2개의 메모리 블록)은 SLC 버퍼 영역(212)으로 전환된다. 예를 들어, MLC 사용자 영역(211)의 P/E 사이클 내구성(endurance)이 1000번이라고 하면, P/E 사이클이 250번 수행될 때 MLC 사용자 영역(211)의 2개의 메모리 블록은 SLC 버퍼 영역(212)으로 전환된다. 그리고 SLC 버퍼 영역(212)으로 사용되던 메모리 블록은 웨어 아웃(wear-out)으로 처리되어 배드 블록(bad block)으로 된다. 위의 예에서, SLC 버퍼 영역(212)으로 전환된 메모리 블록은 100K 이상의 P/E 사이클에 해당하는 내구성을 가질 수 있다(도 3 참조).
MLC 사용자 영역(211)의 P/E 사이클이 50% 수행된 경우에, MLC 사용자 영역(211)의 다른 일부 메모리 블록이 SLC 버퍼 영역(212)으로 전환된다. 위의 예에서, P/E 사이클이 500번 수행될 때 MLC 사용자 영역(211)의 2개의 메모리 블록은 SLC 버퍼 영역(212)으로 전환된다. 그리고 SLC 버퍼 영역(212)으로 사용되던 메모리 블록은 웨어 아웃(wear-out)으로 처리된다. 이때 MLC 사용자 영역(211)의 메모리 블록은 94개이다.
마찬가지로, MLC 사용자 영역(211)의 P/E 사이클이 75% 수행된 경우에, MLC 사용자 영역(211)의 또 다른 일부 메모리 블록이 SLC 버퍼 영역(212)으로 전환된다. 위의 예에서, P/E 사이클이 750번 수행될 때 MLC 사용자 영역(211)의 2개의 메모리 블록은 SLC 버퍼 영역(212)으로 전환된다. 그리고 SLC 버퍼 영역(212)으로 사용되던 메모리 블록은 웨어 아웃(wear-out)으로 처리된다. 이때 MLC 사용자 영역(211)의 메모리 블록은 92개이다.
도 4b를 참조하면, SLC 사용자 영역(212)의 P/E 사이클 초기(0%)에, 불휘발성 메모리(210)는 전체 100개의 메모리 블록 중에서 98개의 메모리 블록을 사용자 영역으로 사용하고 2개의 메모리 블록을 버퍼 영역으로 사용하고 있다.
SLC 버퍼 영역(212)의 P/E 사이클이 70% 수행된 경우에, MLC 사용자 영역(211)의 2개의 메모리 블록은 SLC 버퍼 영역(212)으로 전환된다. 이때 SLC 버퍼 영역(212)은 4개의 메모리 블록을 갖는다. 새롭게 SLC 버퍼 영역으로 전환된 메모리 블록은 기존의 SLC 버퍼 영역(212)의 메모리 블록보다 더 많은 P/E 사이클을 가질 수 있다. 전체적으로 SLC 버퍼 영역(212)의 P/E 사이클 내구성은 늘어난다.
SLC 버퍼 영역(212)의 P/E 사이클이 80% 수행된 경우에, MLC 사용자 영역(211)의 다른 일부 메모리 블록이 SLC 버퍼 영역(212)으로 전환된다. 이때 처음부터 SLC 버퍼 영역(212)으로 사용되던 메모리 블록은 웨어 아웃(wear-out)으로 처리될 수 있다. 이때 MLC 사용자 영역(211)의 메모리 블록은 94개이다.
마찬가지로, SLC 버퍼 영역(212)의 P/E 사이클이 90% 수행된 경우에, MLC 사용자 영역(211)의 또 다른 일부 메모리 블록이 SLC 버퍼 영역(212)으로 전환된다. 그리고 SLC 버퍼 영역(212)으로 사용되던 4개의 메모리 블록은 웨어 아웃(wear-out)으로 처리될 수 있다. 이때 MLC 사용자 영역(211)의 메모리 블록은 92개이다.
도 4a 및 도 4b는 P/E 사이클에 따라 4 단계로 나누어 사용자 영역(211)을 버퍼 영역(212)으로 전환하는 예를 보여준다. 사용자 영역(211)은 초기에 98%의 사용량을 갖고, 점차 줄어들어 최종적으로 92%의 사용량을 갖는다. 그러나 사용자 영역(211)의 공간이 줄어든 대신에, 버퍼 영역(212)의 P/E 사이클 내구성은 크게 증대되어, 전체적으로 메모리 시스템(200)의 성능은 크게 향상될 수 있다.
도 5는 도 2에 도시된 메모리 시스템의 모드 전환 동작을 수행하기 위한 맵핑 테이블을 예시적으로 보여준다. 도 5에 도시된 맵핑 테이블은 MLC 사용자 영역(도 2 참조, 211)의 P/E 사이클이 25% 수행된 경우를 보여준다.
도 5를 참조하면, 불휘발성 메모리(도 2 참조, 210)는 100개의 메모리 블록(001~100)을 갖는다. 제 1 및 제 2 메모리 블록(001, 002)은 P/E 사이클 초기에 SLC 모드, 즉 SLC 버퍼 영역(도 2 참조, 212)으로 할당되어 있다. 제 3 내지 제 100 메모리 블록(003~100)은 MLC 모드, 즉 MLC 사용자 영역(211)으로 할당되어 있다. MLC 사용자 영역(211)의 P/E 사이클이 25% 수행되면, 제 1 및 제 2 메모리 블록(001, 002)은 웨어-아웃되고, 제 3 및 제 4 메모리 블록(003, 004)은 SLC 모드로 전환된다. 즉, 제 3 및 제 4 메모리 블록(003, 004)은 SLC 버퍼 영역(212)으로 모드 전환된다.
다시 도 2를 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(200)은 프로그램-소거 사이클(P/E cycle) 정보에 근거하여, 사용자 영역(211)의 일부 메모리 블록을 단계적으로 버퍼 영역(212)으로 모드 전환을 수행할 수 있다. 본 발명에 의하면, 버퍼 영역(212)의 P/E 사이클 내구성(endurance)을 좋게 함으로 메모리 시스템(200)의 성능이 향상될 수 있다.
도 6은 ECC 에러율에 근거한 모드 전환 동작을 설명하기 위한 블록도이다. 도 6을 참조하면, 메모리 시스템(300)은 불휘발성 메모리(310) 및 메모리 컨트롤러(320)를 포함한다. 불휘발성 메모리(310)는 사용자 영역(311) 및 버퍼 영역(312)을 포함하고, 메모리 컨트롤러(320)는 ECC 회로(325) 및 마모도 제어 로직(326)을 포함한다.
불휘발성 메모리(310)를 사용할수록, ECC 에러율은 증가한다. ECC 회로(325)는 에러를 정정할 수 있는 최대 비트 수를 정해 놓고 있다. OBP 방식에 의하면, 버퍼 영역(312)에 대한 프로그램이나 읽기 동작이 반복적으로 수행되기 때문에, 사용자 영역(311)보다 버퍼 영역(312)의 ECC 에러율이 더 빠른 속도로 증가한다. 도 6에 도시된 메모리 시스템(300)은 사용자 영역(311)의 일부를 버퍼 영역(312)으로 모드 전환함으로, 버퍼 영역(312)의 ECC 에러 증가율을 줄일 수 있다.
계속해서 도 6을 참조하면, ECC 회로(325)는 불휘발성 메모리(310)의 ECC 에러율(error rate)에 관한 정보를 마모도 제어 로직(326)으로 제공한다. 마모도 제어 로직(326)은 ECC 에러율에 근거하여, 사용자 영역(311)의 일부 메모리 블록에 대한 모드 전환 동작을 수행한다. 예를 들어, 마모도 제어 로직(326)은 ECC 에러율이 미리 정해진 에러율에 도달할 때, 사용자 영역(311)의 일부 메모리 블록을 버퍼 영역(312)으로 전환한다.
도 7a 및 도 7b는 도 6에 도시된 메모리 시스템의 ECC 에러율에 따른 모드 변환 동작을 설명하기 위한 개념도이다. 도 7a는 MLC 사용자 영역의 ECC 에러율에 따른 모드 변환 동작을 보여주고, 도 7b는 SLC 버퍼 영역의 ECC 에러율에 따른 모든 변환 동작을 보여준다. 도 7a 및 도 7b에서는 설명의 편의를 위해, ECC 회로(도 6 참조, 325)의 정정 가능한 ECC 에러 비트는 100인 것으로 가정한다.
도 7a를 참조하면, MLC 사용자 영역(311)의 ECC 에러율이 0%~10%인 구간에서, MLC 사용자 영역(311)은 99개의 메모리 블록을 갖고 SLC 버퍼 영역은 1개의 메모리 블록을 갖는다고 가정한다. ECC 에러율이 10%~20%인 경우에, MLC 사용자 영역(311)의 일부 메모리 블록(예를 들면, 1개의 메모리 블록)은 SLC 버퍼 영역(312)으로 전환된다. 그리고 SLC 버퍼 영역(312)으로 사용되던 메모리 블록은 웨어 아웃(wear-out)으로 처리된다. 이때 MLC 사용자 영역(311)은 98개의 메모리 블록으로 구성된다. 이와 같은 방법으로, ECC 에러율이 90%~100%인 경우에, MLC 사용자 영역(311)의 9개의 메모리 블록은 SLC 버퍼 영역(312)으로 전환된다. 이때 MLC 사용자 영역(311)은 90개의 메모리 블록으로 구성된다.
도 7b를 참조하면, SLC 버퍼 영역(312)의 ECC 에러율이 0%~80%인 구간에서, MLC 사용자 영역(311)은 99개의 메모리 블록을 갖고 SLC 버퍼 영역은 1개의 메모리 블록을 갖는다고 가정한다. SLC 버퍼 영역(312)의 ECC 에러율이 2%씩 증가함에 따라, MLC 사용자 영역(311)의 1개의 메모리 블록은 SLC 버퍼 영역(312)으로 전환된다. 그리고 ECC 에러율이 100% 되기 전에, SLC 버퍼 영역(312)으로 사용되던 일부 메모리 블록은 웨어 아웃(wear-out)으로 처리될 수 있다.
도 7a 및 도 7b는 ECC 에러율에 따라 10 단계로 나누어 사용자 영역(311)을 버퍼 영역(312)으로 전환하는 예를 보여준다. 사용자 영역(311)은 초기에 99%의 사용량을 갖고, 점차 줄어들어 최종적으로 90%의 사용량을 갖는다. 그러나 사용자 영역(311)의 공간이 줄어든 대신에, 버퍼 영역(312)의 비트 에러 증가율은 감소하여, 전체적으로 메모리 시스템(300)의 성능은 향상될 수 있다.
도 8은 소거 루프 횟수에 근거한 모드 전환 동작을 설명하기 위한 블록도이다. 도 8을 참조하면, 메모리 시스템(400)은 불휘발성 메모리(410) 및 메모리 컨트롤러(420)를 포함한다. 불휘발성 메모리(410)는 사용자 영역(411), 버퍼 영역(412), 그리고 소거 루프 카운터(413)를 포함한다. 메모리 컨트롤러(420)는 마모도 제어 로직(426)을 포함한다.
불휘발성 메모리(410)를 사용할수록, 소거 루프(Erase Loop)의 횟수는 증가한다. 소거 루프 횟수는 불휘발성 메모리(410)의 마모도 파라미터로 사용될 수 있다. 소거 루프 카운터(도 8 참조, 413)는 최대 소거 루프 횟수를 정해 놓고 있다. OBP 방식에 의하면, 버퍼 영역(412)에 대한 프로그램, 읽기, 소거 동작이 반복적으로 수행되기 때문에, 사용자 영역(411)보다 버퍼 영역(412)의 마모도(wear-level)가 더 빠른 속도로 증가한다. 도 8에 도시된 메모리 시스템(400)은 사용자 영역(411)의 일부를 버퍼 영역(412)으로 모드 전환함으로, 버퍼 영역(412)의 소거 루프 횟수의 증가율을 줄일 수 있다.
소거 루프 카운터(413)는 불휘발성 메모리(410)의 소거 루프 횟수에 관한 정보를 마모도 제어 로직(426)으로 제공한다. 마모도 제어 로직(426)은 소거 루프 횟수에 근거하여, 사용자 영역(411)의 일부 메모리 블록에 대한 모드 전환 동작을 수행한다. 예를 들어, 마모도 제어 로직(426)은 소거 루프 횟수가 미리 정해진 횟수에 도달할 때, 사용자 영역(411)의 일부 MLC 메모리 블록을 SLC 메모리 블록으로 전환한다.
도 9는 도 8에 도시된 소거 루프 카운터를 설명하기 위한 다이어그램이다. 도 9를 참조하면, 불휘발성 메모리(도 8 참조, 410)의 각각의 메모리 셀은 문턱 전압에 따라 프로그램 상태(P) 및 소거 상태(E)를 가질 수 있다. 프로그램 상태는 하나 또는 그 이상일 수 있다. 메모리 블록에 소거 전압이 제공되면, 메모리 셀의 문턱 전압은 소거 상태(E)로 이동된다. 이후, 메모리 셀이 소거 상태에 있는지 검증하기 위해 소거 검증 전압(Ve)이 제공된다. 이러한 소거 동작은 모든 메모리 셀이 소거 상태(E)로 되기까지 반복된다.
도 9를 참조하면, 제 1 소거 루프(EL=1) 동안에 소거 상태(E)에 도달하지 않은 메모리 셀이 존재하기 때문에, 제 2 소거 루프(EL=2)가 진행된다. 제 2 소거 루프(EL=2)에서도 소거 상태(E)에 이르지 못한 셀이 존재하기 때문에, 제 3 소거 루프(EL=3)이 수행된다. 제 3 소거 루프(EL=3)에서 모든 메모리 셀이 소거 상태로 된다. 이때 소거 루프 카운터(도 8 참조, 413)는 3에 해당하는 소거 루프 횟수 정보를 마모도 제어 로직(도 8 참조, 426)으로 제공한다.
도 10a 및 도 10b는 도 8에 도시된 메모리 시스템의 소거 루프 횟수에 따른 모드 변환 동작을 설명하기 위한 개념도이다. 도 10a는 MLC 사용자 영역(411)의 소거 루프 횟수에 따른 모드 전환 동작을 보여주고, 도 10b는 SLC 버퍼 영역(412)의 모드 전환 동작을 보여준다. 도 10a 및 도 10b에서는 설명의 편의를 위해, 소거 루프 카운터(도 8 참조, 413)의 최대 소거 루프 카운트 횟수는 10인 것으로 가정한다.
도 10a를 참조하면, MLC 사용자 영역(411)의 소거 루프 횟수가 0%~50%인 구간에서, MLC 사용자 영역(411)은 95%이고 SLC 버퍼 영역은 5%이다. 즉, 소거 루프 횟수가 0~5인 구간에서, 불휘발성 메모리(410)는 전체 100개의 메모리 블록 중에서 95개의 메모리 블록을 사용자 영역으로 사용하고 5개의 메모리 블록을 버퍼 영역으로 사용한다.
소거 루프 횟수가 6~10인 경우에, MLC 사용자 영역(411)의 일부 메모리 블록(예를 들면, 5개의 메모리 블록)은 SLC 버퍼 영역(412)으로 전환된다. 그리고 SLC 버퍼 영역(412)으로 사용되던 메모리 블록은 웨어 아웃(wear-out)으로 처리된다. 위의 예에서, MLC 사용자 영역(411)은 90개의 메모리 블록으로 구성된다.
도 10b를 참조하면, SLC 사용자 영역(412)의 소거 루프 횟수가 0%~90%인 구간에서, MLC 사용자 영역(411)은 95%이고 SLC 버퍼 영역은 5%이다. 그리고 소거 루프 횟수가 90%~100%인 경우에, MLC 사용자 영역(411)의 일부 메모리 블록(예를 들면, 5개의 메모리 블록)은 SLC 버퍼 영역(412)으로 전환된다. 그리고 SLC 버퍼 영역(412)으로 사용되던 메모리 블록은 웨어 아웃(wear-out)으로 처리된다. 위의 예에서, MLC 사용자 영역(411)은 90개의 메모리 블록으로 구성된다.
도 10a 및 도 10b는 소거 루프 횟수에 따라 2 단계로 나누어 사용자 영역(411)을 버퍼 영역(412)으로 전환하는 예를 보여준다. 사용자 영역(411)은 초기에 95%의 사용량을 갖고, 점차 줄어들어 최종적으로 90%의 사용량을 갖는다. 그러나 사용자 영역(411)의 공간이 줄어든 대신에, 버퍼 영역(412)의 소거 루프 횟수의 증가율이 줄기 때문에, 전체적으로 메모리 시스템(400)의 성능은 향상될 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 여러 가지 제품에 적용 또는 응용될 수 있다. 본 발명의 실시 예에 따른 메모리 시스템은 퍼스널 컴퓨터, 디지털 카메라, 캠코더, 휴대 전화, MP3, PMP, PSP, PDA 등과 같은 전자 장치들뿐만 아니라, 메모리 카드, USB 메모리, 솔리드 스테이트 드라이브(Solid State Drive, 이하 SSD라 함) 등과 같은 저장 장치로 구현될 수 있다.
도 11 및 도 12는 본 발명에 따른 메모리 시스템의 다양한 적용 예를 보여주는 블록도이다. 도 11 및 도 12를 참조하면, 메모리 시스템(1000, 2000)은 저장 장치(1100, 2100) 및 호스트(1200, 2200)를 포함한다. 저장 장치(1100, 2100)는 플래시 메모리(1110, 2110) 및 메모리 컨트롤러(1120, 2120)를 포함한다.
저장 장치(1100, 2100)는 메모리 카드(예를 들면, SD, MMC 등)나 착탈 가능한 이동식 저장 장치(예를 들면, USB 메모리 등)와 같은 저장 매체를 포함한다. 저장 장치(1100, 2100)는 호스트(1200, 2200)와 연결되어 사용될 수 있다. 저장 장치(1100, 2100)는 호스트 인터페이스를 통해 호스트와 데이터를 주고 받는다. 저장 장치(1100, 2100)는 호스트(1200, 2200)로부터 전원을 공급받아서 내부 동작을 수행할 수 있다.
도 11을 참조하면, 마모도 제어 로직(1101)은 플래시 메모리(1110) 내에 포함될 수 있다. 도 12를 참조하면, 마모도 제어 로직(2201)은 호스트(2200) 내에 포함될 수 있다. 본 발명의 실시 예에 따른 메모리 시스템(1000, 2000)은 마모도 제어 로직을 이용하여, 플래시 메모리의 사용자 영역의 일부를 버퍼 영역으로 전환함으로, 전체 시스템의 성능을 향상시킬 수 있다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다. 메모리 카드 시스템(3000)은 호스트(3100)와 메모리 카드(3200)를 포함한다. 호스트(3100)는 호스트 컨트롤러(3110), 호스트 접속 유닛(3120), 그리고 디램(3130)을 포함한다.
호스트(3100)는 메모리 카드(3200)에 데이터를 쓰거나, 메모리 카드(3200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(3110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(3100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(3120)을 통해 메모리 카드(3200)로 전송한다. 디램(3130)은 호스트(3100)의 메인 메모리이다.
메모리 카드(3200)는 카드 접속 유닛(3210), 카드 컨트롤러(3220), 그리고 플래시 메모리(3230)를 포함한다. 카드 컨트롤러(3220)는 카드 접속 유닛(3210)을 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(3220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 플래시 메모리(3230)에 저장한다. 플래시 메모리(3230)는 호스트(3100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(3100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
도 13에 도시된 메모리 카드 시스템(3000)은 호스트 컨트롤러(3110), 카드 컨트롤러(3220), 또는 플래시 메모리(3230) 내에 마모도 제어 로직(도시되지 않음)을 포함할 수 있다. 앞에서 설명한 바와 같이, 본 발명은 마모도 제어 로직을 이용하여, 플래시 메모리의 사용자 영역의 일부를 버퍼 영역으로 전환함으로, 전체 시스템의 성능을 향상시킬 수 있다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다. 도 14를 참조하면, SSD 시스템(4000)은 호스트(4100)와 SSD(4200)를 포함한다. 호스트(4100)는 호스트 인터페이스(4111), 호스트 컨트롤러(4120), 그리고 디램(4130)을 포함한다.
호스트(4100)는 SSD(4200)에 데이터를 쓰거나, SSD(4200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(4120)는 커맨드, 어드레스, 제어 신호 등의 신호(SGL)를 호스트 인터페이스(4111)를 통해 SSD(4200)로 전송한다. 디램(4130)은 호스트(4100)의 메인 메모리이다.
SSD(4200)는 호스트 인터페이스(4211)를 통해 호스트(4100)와 신호(SGL)를 주고 받으며, 전원 커넥터(power connector, 4221)를 통해 전원을 입력받는다. SSD(4200)는 복수의 불휘발성 메모리(4201~420n), SSD 컨트롤러(4210), 그리고 보조 전원 장치(4220)를 포함할 수 있다. 여기에서, 복수의 불휘발성 메모리(4201~420n)는 낸드 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등으로 구현될 수 있다.
복수의 불휘발성 메모리(4201~420n)는 SSD(4200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리(4201~420n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(4210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(4210)는 호스트 인터페이스(4211)를 통해 호스트(4100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(4210)는 호스트(4100)의 커맨드에 따라 해당 불휘발성 메모리에 데이터를 쓰거나 해당 불휘발성 메모리로부터 데이터를 읽어낸다. SSD 컨트롤러(4210)의 내부 구성은 도 15를 참조하여 상세하게 설명된다.
보조 전원 장치(4220)는 전원 커넥터(4221)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4220)는 호스트(4100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(4220)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4220)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.
도 15는 도 14에 도시된 SSD 컨트롤러(4210)의 구성을 예시적으로 보여주는 블록도이다. 도 15를 참조하면, SSD 컨트롤러(4210)는 NVM 인터페이스(4211), 호스트 인터페이스(4212), 마모도 제어 로직(4213), 제어 유닛(4214), 그리고 에스램(4215)을 포함한다.
NVM 인터페이스(4211)는 호스트(4100)의 메인 메모리로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(4211)는 불휘발성 메모리(4201~420n)로부터 읽은 데이터를 호스트 인터페이스(4212)를 경유하여 호스트(4100)로 전달한다.
호스트 인터페이스(4212)는 호스트(4100)의 프로토콜에 대응하여 SSD(4200)와의 인터페이싱을 제공한다. 호스트 인터페이스(4212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(4100)와 통신할 수 있다. 또한, 호스트 인터페이스(4212)는 호스트(4100)가 SSD(4200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
마모도 제어 로직(4213)은 앞에서 설명한 바와 같이 불휘발성 메모리(4201~420n)의 모드 전환 동작을 관리할 수 있다. 제어 유닛(4214)은 호스트(4100)로부터 입력된 신호(SGL)를 분석하고 처리한다. 제어 유닛(4214)은 호스트 인터페이스(4212)나 NVM 인터페이스(4211)를 통해 호스트(4100)나 불휘발성 메모리(4201~420n)를 제어한다. 제어 유닛(4214)은 SSD(4200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리(4201~420n)의 동작을 제어한다.
에스램(4215)은 불휘발성 메모리(4201~420n)의 효율적 관리를 위해 사용되는 소프트웨어(S/W)를 구동하는 데 사용될 수 있다. 또한, 에스램(4215)은 호스트(4100)의 메인 메모리로부터 입력받은 메타 데이터를 저장하거나, 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 에스램(4215)에 저장된 메타 데이터나 캐시 데이터는 보조 전원 장치(4220)를 이용하여 불휘발성 메모리(4201~420n)에 저장될 수 있다.
다시 도 14를 참조하면, 본 발명의 실시 예에 따른 SSD 시스템(4000)은 앞에서 설명한 바와 같이, 마모도 제어 로직을 이용하여, 플래시 메모리의 사용자 영역의 일부를 버퍼 영역으로 전환함으로, 전체 시스템의 성능을 향상시킬 수 있다.
도 16은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다. 여기에서, 전자 장치(5000)는 퍼스널 컴퓨터(PC)로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 16을 참조하면, 전자 장치(5000)는 메모리 시스템(5100), 전원 장치(5200), 보조 전원 장치(5250), 중앙처리장치(5300), 디램(5400), 그리고 사용자 인터페이스(5500)를 포함한다. 메모리 시스템(5100)은 플래시 메모리(5110) 및 메모리 컨트롤러(5120)를 포함한다. 메모리 시스템(5100)은 전자 장치(5000)에 내장될 수 있다.
앞에서 설명한 바와 같이, 본 발명에 따른 전자 장치(5000)는 마모도 제어 로직을 이용하여, 플래시 메모리의 사용자 영역의 일부를 버퍼 영역으로 전환함으로, 전체 시스템의 성능을 향상시킬 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 2차원 구조를 갖는 플래시 메모리 뿐만 아니라, 3차원 구조를 갖는 플래시 메모리에도 적용될 수 있다. 도 17은 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다. 도 17을 참조하면, 플래시 메모리(6000)는 3차원 셀 어레이(6110), 데이터 입출력 회로(6120), 어드레스 디코더(6130), 그리고 제어 로직(6140)을 포함한다.
3차원 셀 어레이(6110)는 복수의 메모리 블록(BLK1~BLKz)을 포함한다. 각각의 메모리 블록은 3차원 구조 (또는 수직 구조)를 가질 수 있다. 2차원 구조 (또는 수평 구조)를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수평 방향으로 형성된다. 그러나 3차원 구조를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수직 방향으로 형성된다. 각각의 메모리 블록은 플래시 메모리(6100)의 소거 단위를 이룬다.
데이터 입출력 회로(6120)는 복수의 비트 라인(BLs)을 통해 3차원 셀 어레이(6110)와 연결된다. 데이터 입출력 회로(6120)는 외부로부터 데이터(DATA)를 입력받거나, 3차원 셀 어레이(6110)로부터 읽은 데이터(DATA)를 외부로 출력한다. 어드레스 디코더(6130)는 복수의 워드 라인(WLs) 및 선택 라인(GSL, SSL)을 통해 3차원 셀 어레이(6110)와 연결된다. 어드레스 디코더(6130)는 어드레스(ADDR)를 입력받고 워드 라인을 선택한다.
제어 로직(6140)은 플래시 메모리(6000)의 프로그램, 읽기, 소거 등의 동작을 제어한다. 예를 들면, 제어 로직(6140)은 프로그램 동작 시에, 어드레스 디코더(6130)를 제어함으로 선택 워드 라인으로 프로그램 전압이 제공되도록 하고, 데이터 입출력 회로(6120)를 제어함으로 데이터가 프로그램되도록 할 수 있다.
도 18은 도 17에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다. 도 18을 참조하면, 메모리 블록(BLK1)은 기판(SUB)과 수직 방향으로 형성되어 있다. 기판(SUB)에는 n+ 도핑 영역이 형성된다. 기판(SUB) 위에는 게이트 전극막(gate electrode layer)과 절연막(insulation layer)이 교대로 증착된다. 그리고 게이트 전극막(gate electrode layer)과 절연막(insulation layer) 사이에는 전하 저장막(charge storage layer)이 형성될 수 있다.
게이트 전극막과 절연막을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar)가 형성된다. 필라는 게이트 전극막과 절연막을 관통하여 기판(SUB)과 연결된다. 필라(Pillar)의 외곽 부분(O)은 채널 반도체로 구성될 수 있고, 내부(I)는 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다.
계속해서 도 18을 참조하면, 메모리 블록(BLK1)의 게이트 전극막(gate electrode layer)은 접지 선택 라인(GSL), 복수의 워드 라인(WL1~WL8), 그리고 스트링 선택 라인(SSL)에 연결될 수 있다. 그리고 메모리 블록(BLK1)의 필라(pillar)는 복수의 비트 라인(BL1~BL3)과 연결될 수 있다. 도 18에서는, 하나의 메모리 블록(BLK1)이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인(WL1~WL8), 그리고 3개의 비트 라인(BL1~BL3)을 갖는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
도 19는 도 18에 도시된 메모리 블록(BLK1)의 등가 회로도이다. 도 19를 참조하면, 비트 라인(BL1~BL3)과 공통 소스 라인(CSL) 사이에는 낸드 스트링(NS11~NS33)이 연결되어 있다. 각각의 낸드 스트링(예를 들면, NS11)은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀(MC1~MC8), 그리고 접지 선택 트랜지스터(GST)를 포함한다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(String Selection Line; SSL1~SSL3)에 연결되어 있다. 복수의 메모리 셀(MC1~MC8)은 각각 대응하는 워드 라인(WL1~WL8)에 연결되어 있다. 그리고 접지 선택 트랜지스터(GST)는 접지 선택 라인(Ground Selection Line; GSL1~GSL3)에 연결되어 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL; Common Source Line)에 연결되어 있다.
계속해서 도 19를 참조하면, 동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되어 있고, 접지 선택 라인(GSL1~GSL3) 및 스트링 선택 라인(SSL1~SSL3)은 분리되어 있다. 제 1 워드 라인(WL1)에 연결되어 있고 낸드 스트링(NS11, NS12, NS13)에 속해 있는 메모리 셀(이하, 페이지라 함)을 프로그램하는 경우에는, 제 1 워드 라인(WL1)과 제 1 선택 라인(SSL1, GSL1)이 선택된다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
100, 200, 300, 400: 메모리 시스템
110: 불휘발성 메모리 111: 사용자 영역
112: 버퍼 영역 120: 메모리 컨트롤러
121: 호스트 인터페이스 122: 메모리 인터페이스
123: 제어 유닛 124: 램
125: ECC 회로 126: 마모도 제어 로직

Claims (36)

  1. 사용자 영역과 버퍼 영역을 갖는 불휘발성 메모리; 및
    상기 불휘발성 메모리의 마모도 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록을 상기 버퍼 영역으로 전환하는 동작(이하, '모드 전환 동작'이라 함)을 관리하기 위한 마모도 제어 로직을 포함하는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 마모도 정보는 상기 버퍼 영역의 마모도 정보인 것을 특징으로 하는 메모리 시스템.
  3. 제 2 항에 있어서,
    상기 마모도 정보는 프로그램-소거 사이클 정보인 것을 특징으로 하는 메모리 시스템.
  4. 제 2 항에 있어서,
    상기 마모도 정보는 ECC 에러율 정보인 것을 특징으로 하는 메모리 시스템.
  5. 제 2 항에 있어서,
    상기 마모도 정보는 소거 루프 회수 정보인 것을 특징으로 하는 메모리 시스템.
  6. 제 1 항에 있어서,
    상기 마모도 정보는 상기 사용자 영역의 마모도 정보인 것을 특징으로 하는 메모리 시스템.
  7. 제 6 항에 있어서,
    상기 마모도 정보는 프로그램-소거 사이클 정보인 것을 특징으로 하는 메모리 시스템.
  8. 제 6 항에 있어서,
    상기 마모도 정보는 ECC 에러율 정보인 것을 특징으로 하는 메모리 시스템.
  9. 제 6 항에 있어서,
    상기 마모도 정보는 소거 루프 회수 정보인 것을 특징으로 하는 메모리 시스템.
  10. 제 1 항에 있어서,
    상기 사용자 영역에는 메모리 셀 당 N(N은 2 이상인 자연수) 비트 데이터가 저장되고, 상기 버퍼 영역에는 메모리 셀 당 M(M은 N보다 작은 자연수) 비트 데이터가 저장되는 메모리 시스템.
  11. 제 10 항에 있어서,
    상기 버퍼 영역에는 싱글 비트 데이터가 저장되는 메모리 시스템.
  12. 제 1 항에 있어서,
    상기 불휘발성 메모리는 외부로부터 입력된 데이터를 상기 버퍼 영역에 저장한 다음에, 상기 버퍼 영역에 저장된 데이터를 상기 사용자 영역으로 이동하는 메모리 시스템.
  13. 제 1 항에 있어서,
    상기 마모도 제어 로직은 상기 마모도 정보에 따라, 단계적으로 모드 전환 동작을 수행하는 메모리 시스템.
  14. 사용자 영역과 제 1 버퍼 영역을 갖는 불휘발성 메모리; 및
    상기 제 1 버퍼 영역의 마모도 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록을 제 2 버퍼 영역으로 전환하는 동작을 관리하기 위한 마모도 제어 로직을 포함하는 메모리 시스템.
  15. 제 14 항에 있어서,
    상기 마모도 제어 로직은 상기 제 1 및 제 2 버퍼 영역의 마모도 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록을 제 3 버퍼 영역으로 전환하는 메모리 시스템.
  16. 제 14 항에 있어서,
    상기 사용자 영역에는 메모리 셀 당 N(N은 2 이상인 자연수) 비트 데이터가 저장되고, 상기 제 1 및 제 2 버퍼 영역에는 메모리 셀 당 싱글 비트 데이터가 저장되는 메모리 시스템.
  17. 제 14 항에 있어서,
    상기 제 1 버퍼 영역의 마모도 정보는 프로그램-소거 사이클 정보인 것을 특징으로 하는 메모리 시스템.
  18. 제 14 항에 있어서,
    상기 제 1 버퍼 영역의 마모도 정보는 ECC 에러율 정보인 것을 특징으로 하는 메모리 시스템.
  19. 제 14 항에 있어서,
    상기 제 1 버퍼 영역의 마모도 정보는 소거 루프 회수 정보인 것을 특징으로 하는 메모리 시스템.
  20. 제 14 항에 있어서,
    상기 마모도 제어 로직은 상기 제 1 및 제 2 버퍼 영역의 마모도 정보에 따라, 단계적으로 모드 전환 동작을 수행하는 메모리 시스템.
  21. MLC 사용자 영역과 SLC 버퍼 영역을 갖고, 데이터를 상기 SLC 버퍼 영역에 저장한 다음에 상기 MLC 사용자 영역으로 이동하는 플래시 메모리; 및
    상기 SLC 버퍼 영역의 마모도 정보에 근거하여, 상기 MLC 사용자 영역의 일부 메모리 블록에 대한 모드 전환 동작을 수행하는 메모리 컨트롤러를 포함하는 메모리 시스템.
  22. 제 21 항에 있어서,
    상기 메모리 컨트롤러는 상기 모드 전환 동작을 통해 상기 MLC 사용자 영역의 일부 메모리 블록을 SLC 버퍼 영역으로 전환하는 메모리 시스템.
  23. 제 21 항에 있어서,
    상기 메모리 컨트롤러는
    상기 SLC 버퍼 영역의 마모도 정보를 생성하는 제어 유닛; 및
    상기 SLC 버퍼 영역의 마모도 정보를 입력받고 모드 전환 동작을 관리하기 위한 마모도 제어 로직을 포함하는 메모리 시스템.
  24. 제 23 항에 있어서,
    상기 마모도 제어 로직은 상기 SLC 버퍼 영역의 마모도 정보에 따라, 단계적으로 모드 전환 동작을 수행하는 메모리 시스템.
  25. 제 24 항에 있어서,
    상기 SLC 버퍼 영역의 마모도 정보는 프로그램-소거 사이클 정보인 것을 특징으로 하는 메모리 시스템.
  26. 제 24 항에 있어서,
    상기 SLC 버퍼 영역의 마모도 정보는 ECC 에러율 정보인 것을 특징으로 하는 메모리 시스템.
  27. 제 26 항에 있어서,
    상기 메모리 컨트롤러는
    상기 ECC 에러율 정보를 제공하는 ECC 회로; 및
    상기 ECC 에러율 정보를 입력받고 모드 전환 동작을 관리하기 위한 마모도 제어 로직을 포함하는 메모리 시스템.
  28. 제 24 항에 있어서,
    상기 SLC 버퍼 영역의 마모도 정보는 소거 루프 회수 정보인 것을 특징으로 하는 메모리 시스템.
  29. 제 28 항에 있어서,
    상기 플래시 메모리는 상기 소거 루프 횟수 정보를 제공하는 소거 루프 카운터를 포함하고;
    상기 메모리 컨트롤러는 상기 소거 루프 횟수 정보를 입력받고 모드 전환 동작을 관리하기 위한 마모도 제어 로직을 포함하는 메모리 시스템.
  30. 제 29 항에 있어서,
    상기 마모도 제어 로직은 상기 소거 루프 횟수 정보에 따라, 단계적으로 모드 전환 동작을 수행하는 메모리 시스템.
  31. 사용자 영역과 버퍼 영역을 플래시 메모리; 및
    상기 버퍼 영역의 마모도 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록에 대한 모드 전환 동작을 수행하는 메모리 컨트롤러를 포함하는 데이터 저장 장치.
  32. 제 31 항에 있어서,
    상기 버퍼 영역의 마모도 정보는 프로그램-소거 사이클 정보, ECC 에러율 정보, 또는 소거 로푸 회수 정보인 것을 특징으로 하는 데이터 저장 장치.
  33. 사용자 영역과 버퍼 영역을 플래시 메모리; 및
    상기 버퍼 영역의 마모도 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록에 대한 모드 전환 동작을 수행하는 SSD 컨트롤러를 포함하는 솔리트 스테이트 드라이브.
  34. 제 33 항에 있어서,
    상기 버퍼 영역의 마모도 정보는 프로그램-소거 사이클 정보, ECC 에러율 정보, 또는 소거 로푸 회수 정보인 것을 특징으로 하는 솔리드 스테이트 드라이브.
  35. 사용자 영역과 버퍼 영역을 플래시 메모리; 및
    상기 버퍼 영역의 마모도 정보에 근거하여, 상기 사용자 영역의 일부 메모리 블록에 대한 모드 전환 동작을 수행하는 플래시 컨트롤러를 포함하는 메모리 카드.
  36. 제 35 항에 있어서,
    상기 버퍼 영역의 마모도 정보는 프로그램-소거 사이클 정보, ECC 에러율 정보, 또는 소거 로푸 회수 정보인 것을 특징으로 하는 메모리 카드.
KR1020110127043A 2011-11-30 2011-11-30 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브 KR20130060791A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020110127043A KR20130060791A (ko) 2011-11-30 2011-11-30 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
US13/604,780 US20130138870A1 (en) 2011-11-30 2012-09-06 Memory system, data storage device, memory card, and ssd including wear level control logic
JP2012249984A JP2013114679A (ja) 2011-11-30 2012-11-14 ウェアレベル制御ロジックを含むメモリシステム
CN2012105050188A CN103137199A (zh) 2011-11-30 2012-11-30 存储器系统、数据存储设备、存储卡和固态驱动器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110127043A KR20130060791A (ko) 2011-11-30 2011-11-30 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브

Publications (1)

Publication Number Publication Date
KR20130060791A true KR20130060791A (ko) 2013-06-10

Family

ID=48467867

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110127043A KR20130060791A (ko) 2011-11-30 2011-11-30 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브

Country Status (4)

Country Link
US (1) US20130138870A1 (ko)
JP (1) JP2013114679A (ko)
KR (1) KR20130060791A (ko)
CN (1) CN103137199A (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150044264A (ko) * 2013-10-16 2015-04-24 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
KR20160075918A (ko) * 2014-12-19 2016-06-30 삼성전자주식회사 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US9594673B2 (en) 2013-11-13 2017-03-14 Samsung Electronics Co., Ltd. Driving method of memory controller and nonvolatile memory device controlled by memory controller
KR20200022192A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US20220075529A1 (en) * 2020-09-04 2022-03-10 Harman Becker Automotive Systems Gmbh Memory system, method for the operation thereof
US11334248B2 (en) 2019-11-07 2022-05-17 SK Hynix Inc. Storage device and method of changing between memory blocks of different bits based on delay of migration request
US11635896B2 (en) 2021-01-25 2023-04-25 SK Hynix Inc. Method and data storage apparatus for replacement of invalid data blocks due to data migration

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9318182B2 (en) * 2013-01-30 2016-04-19 Intel Corporation Apparatus, method and system to determine memory access command timing based on error detection
US9345404B2 (en) * 2013-03-04 2016-05-24 Hello Inc. Mobile device that monitors an individuals activities, behaviors, habits or health parameters
US9477546B2 (en) * 2013-06-21 2016-10-25 Marvell World Trade Ltd. Methods and apparatus for optimizing lifespan of a storage device
US9519577B2 (en) * 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US20150074489A1 (en) * 2013-09-06 2015-03-12 Kabushiki Kaisha Toshiba Semiconductor storage device and memory system
US9520901B2 (en) * 2014-03-06 2016-12-13 Kabushiki Kaisha Toshiba Memory controller, memory system, and memory control method
WO2015151261A1 (ja) * 2014-04-03 2015-10-08 株式会社日立製作所 不揮発メモリシステム及び情報処理システム
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US9563362B2 (en) 2014-09-02 2017-02-07 Sandisk Technologies Llc Host system and process to reduce declared capacity of a storage device by trimming
US9524112B2 (en) 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by trimming
US9563370B2 (en) 2014-09-02 2017-02-07 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device
US9524105B2 (en) 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US9158681B1 (en) * 2014-09-02 2015-10-13 Sandisk Technologies Inc. Process and apparatus to reduce declared capacity of a storage device by conditionally trimming
US9582220B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9665311B2 (en) 2014-09-02 2017-05-30 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
US9582193B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9582202B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by moving data
US9552166B2 (en) 2014-09-02 2017-01-24 Sandisk Technologies Llc. Process and apparatus to reduce declared capacity of a storage device by deleting data
US9519427B2 (en) 2014-09-02 2016-12-13 Sandisk Technologies Llc Triggering, at a host system, a process to reduce declared capacity of a storage device
US9582203B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9582212B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device
US9652153B2 (en) 2014-09-02 2017-05-16 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
US9513822B2 (en) 2014-09-26 2016-12-06 Hewlett Packard Enterprise Development Lp Unmap storage space
US9984768B2 (en) * 2014-10-20 2018-05-29 Sandisk Technologies Llc Distributing storage of ECC code words
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
RU2682387C1 (ru) * 2015-03-09 2019-03-19 Тосиба Мемори Корпорейшн Полупроводниковое запоминающее устройство
US9870836B2 (en) 2015-03-10 2018-01-16 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
US10008250B2 (en) * 2015-03-27 2018-06-26 Intel Corporation Single level cell write buffering for multiple level cell non-volatile memory
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
US20170075812A1 (en) * 2015-09-16 2017-03-16 Intel Corporation Technologies for managing a dynamic read cache of a solid state drive
JP6158265B2 (ja) 2015-09-16 2017-07-05 株式会社東芝 キャッシュメモリシステム
KR102424702B1 (ko) * 2015-11-19 2022-07-25 삼성전자주식회사 불휘발성 메모리 모듈 및 이를 포함하는 전자 장치
US9946483B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning
US9946473B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive
TWI672706B (zh) 2015-12-14 2019-09-21 南韓商愛思開海力士有限公司 記憶體儲存裝置及其操作方法
KR20170091832A (ko) * 2016-02-01 2017-08-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
TWI591635B (zh) * 2016-02-05 2017-07-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US10192633B2 (en) * 2016-03-01 2019-01-29 Intel Corporation Low cost inbuilt deterministic tester for SOC testing
US10410738B2 (en) * 2016-03-15 2019-09-10 Toshiba Memory Corporation Memory system and control method
US10049047B1 (en) 2017-03-10 2018-08-14 Toshiba Memory Corporation Multibit NAND media using pseudo-SLC caching technique
US10095626B2 (en) 2017-03-10 2018-10-09 Toshiba Memory Corporation Multibit NAND media using pseudo-SLC caching technique
WO2018186453A1 (ja) * 2017-04-07 2018-10-11 パナソニックIpマネジメント株式会社 使用回数を増大させた不揮発性メモリ
TWI653632B (zh) * 2017-09-29 2019-03-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US11314635B1 (en) * 2017-12-12 2022-04-26 Amazon Technologies, Inc. Tracking persistent memory usage
KR20190073824A (ko) * 2017-12-19 2019-06-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102507302B1 (ko) * 2018-01-22 2023-03-07 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
CN110413198B (zh) * 2018-04-28 2023-04-14 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
JP7256976B2 (ja) * 2018-06-25 2023-04-13 日本精機株式会社 車両用表示装置
JP7047628B2 (ja) * 2018-06-25 2022-04-05 日本精機株式会社 車両用表示装置
US10713158B2 (en) * 2018-06-28 2020-07-14 Western Digital Technologies, Inc. Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring
KR102611566B1 (ko) * 2018-07-06 2023-12-07 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법
US11069425B2 (en) * 2018-08-21 2021-07-20 Intel Corporation Multi-level memory repurposing technology to process a request to modify a configuration of a persistent storage media
US10761739B2 (en) 2018-08-23 2020-09-01 Micron Technology, Inc. Multi-level wear leveling for non-volatile memory
US11537307B2 (en) 2018-08-23 2022-12-27 Micron Technology, Inc. Hybrid wear leveling for in-place data replacement media
JP7128088B2 (ja) 2018-11-02 2022-08-30 キオクシア株式会社 メモリシステム
US10963185B2 (en) * 2018-11-20 2021-03-30 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations
CN111600611B (zh) * 2019-02-20 2023-04-07 天津光电通信技术有限公司 一种优化置信度传播的qc-ldpc码构造方法
KR20200110547A (ko) 2019-03-14 2020-09-24 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치
KR20200113047A (ko) * 2019-03-20 2020-10-06 삼성전자주식회사 오픈 채널 스토리지 장치의 동작 방법
US10956049B2 (en) * 2019-06-12 2021-03-23 International Business Machines Corporation Wear-aware block mode conversion in non-volatile memory
US10908844B2 (en) * 2019-06-18 2021-02-02 Western Digital Technologies, Inc. Storage system and method for memory backlog hinting for variable capacity
US11036411B2 (en) * 2019-06-24 2021-06-15 Western Digital Technologies, Inc. Yield improvement through block budget optimization by using a transient pool of multi-level blocks
US10990304B2 (en) * 2019-06-27 2021-04-27 Western Digital Technologies, Inc. Two-dimensional scalable versatile storage format for data storage devices
KR20210006664A (ko) * 2019-07-09 2021-01-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11307951B2 (en) * 2019-09-04 2022-04-19 Micron Technology, Inc. Memory device with configurable performance and defectivity management
TWI791981B (zh) * 2020-04-30 2023-02-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
JP2022146531A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム
WO2023272548A1 (en) * 2021-06-30 2023-01-05 Yangtze Memory Technologies Co., Ltd. Data protection for three-dimensional nand memory
KR20230095157A (ko) 2021-12-21 2023-06-29 삼성전자주식회사 패리티 관리 모듈을 포함하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 스토리지 장치의 동작 방법
JP7220317B1 (ja) 2022-02-08 2023-02-09 ウィンボンド エレクトロニクス コーポレーション 半導体装置およびプログラム方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
JP2001006374A (ja) * 1999-06-17 2001-01-12 Hitachi Ltd 半導体記憶装置及びシステム
US6363008B1 (en) * 2000-02-17 2002-03-26 Multi Level Memory Technology Multi-bit-cell non-volatile memory with maximized data capacity
US6466476B1 (en) * 2001-01-18 2002-10-15 Multi Level Memory Technology Data coding for multi-bit-per-cell memories having variable numbers of bits per memory cell
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6643169B2 (en) * 2001-09-18 2003-11-04 Intel Corporation Variable level memory
US8239735B2 (en) * 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
CN101496110B (zh) * 2006-05-12 2013-02-13 苹果公司 存储设备中的失真估计和消除
US7646636B2 (en) * 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
TWI366828B (en) * 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
US7849275B2 (en) * 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
CN101499315B (zh) * 2008-01-30 2011-11-23 群联电子股份有限公司 快闪存储器平均磨损方法及其控制器
JP4558054B2 (ja) * 2008-03-11 2010-10-06 株式会社東芝 メモリシステム
KR101548175B1 (ko) * 2008-11-05 2015-08-28 삼성전자주식회사 싱글 레벨 메모리 셀 블락과 멀티 레벨 메모리 셀 블락을 포함하는 불휘발성 메모리 장치의 마모 레벨링 방법
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
JP5330136B2 (ja) * 2009-07-22 2013-10-30 株式会社東芝 半導体記憶装置
KR101616100B1 (ko) * 2009-09-25 2016-04-28 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
KR101662273B1 (ko) * 2009-11-27 2016-10-05 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 마모도 관리 방법
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
EP2643761A1 (en) * 2010-11-24 2013-10-02 Sony Ericsson Mobile Communications AB Dynamically configurable embedded flash memory for electronic devices
US8886911B2 (en) * 2011-05-31 2014-11-11 Micron Technology, Inc. Dynamic memory cache size adjustment in a memory device

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150044264A (ko) * 2013-10-16 2015-04-24 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
US9594673B2 (en) 2013-11-13 2017-03-14 Samsung Electronics Co., Ltd. Driving method of memory controller and nonvolatile memory device controlled by memory controller
KR20160075918A (ko) * 2014-12-19 2016-06-30 삼성전자주식회사 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
KR20200022192A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US11334248B2 (en) 2019-11-07 2022-05-17 SK Hynix Inc. Storage device and method of changing between memory blocks of different bits based on delay of migration request
US20220075529A1 (en) * 2020-09-04 2022-03-10 Harman Becker Automotive Systems Gmbh Memory system, method for the operation thereof
US11635896B2 (en) 2021-01-25 2023-04-25 SK Hynix Inc. Method and data storage apparatus for replacement of invalid data blocks due to data migration

Also Published As

Publication number Publication date
JP2013114679A (ja) 2013-06-10
US20130138870A1 (en) 2013-05-30
CN103137199A (zh) 2013-06-05

Similar Documents

Publication Publication Date Title
KR20130060791A (ko) 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
US10466902B2 (en) Memory system and operation method for the same
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
KR101888074B1 (ko) 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
KR102295208B1 (ko) 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US9940193B2 (en) Chunk definition for partial-page read
KR20140031556A (ko) 플래시 메모리를 포함하는 플래시 메모리 시스템 및 그것의 비정상 워드 라인 검출 방법
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
CN110928485B (zh) 存储器系统及其操作方法
CN110955611B (zh) 存储器系统及其操作方法
CN111580744B (zh) 存储器控制器及其操作方法
KR20210026431A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
CN111949204A (zh) 存储器系统、存储器控制器和存储器装置
KR20220075684A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220055717A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20170012006A (ko) 메모리 컨트롤러와 이를 포함하는 메모리 시스템
CN111145818B (zh) 存储器系统及其操作方法
KR20210157544A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
CN111324300A (zh) 控制器以及控制器的操作方法
US20130318419A1 (en) Flash memory system including read counter logic
KR20190012571A (ko) 메모리 장치 및 그 동작 방법
KR20210079552A (ko) 메모리 시스템 및 메모리 컨트롤러
KR102333746B1 (ko) 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법
KR20230072196A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220118004A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid