KR101826137B1 - 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 - Google Patents

메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 Download PDF

Info

Publication number
KR101826137B1
KR101826137B1 KR1020110026205A KR20110026205A KR101826137B1 KR 101826137 B1 KR101826137 B1 KR 101826137B1 KR 1020110026205 A KR1020110026205 A KR 1020110026205A KR 20110026205 A KR20110026205 A KR 20110026205A KR 101826137 B1 KR101826137 B1 KR 101826137B1
Authority
KR
South Korea
Prior art keywords
block
data
memory
blocks
combination
Prior art date
Application number
KR1020110026205A
Other languages
English (en)
Other versions
KR20120109017A (ko
Inventor
이재욱
이양섭
서정범
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110026205A priority Critical patent/KR101826137B1/ko
Priority to US13/428,231 priority patent/US9003262B2/en
Publication of KR20120109017A publication Critical patent/KR20120109017A/ko
Application granted granted Critical
Publication of KR101826137B1 publication Critical patent/KR101826137B1/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/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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Probability & Statistics with Applications (AREA)

Abstract

메모리 컨트롤러의 동작 방법이 개시된다. 상기 방법은 플래시 메모리의 메모리 셀 어레이에 구현된 다수의 블록들 각각에 프로그램된 데이터에 포함된 에러 비트의 수에 따라, 상기 다수의 블록들 각각을 제1그룹과 제2그룹으로 분류하는 단계와, 상기 제1그룹으로 분류된 다수의 블록들 중에서 제1블록과 상기 제2그룹으로 분류된 다수의 블록들 중에서 제2블록을 결합하여 조합 블록을 생성하는 단계를 포함한다.

Description

메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법{MEMORY CONTROLLER, DEVICES HAVING THE SAME, AND OPERATING METHOD THEREOF}
본 발명의 개념에 따른 실시 예는 메모리 컨트롤러에 관한 것으로, 특히 배드 블록(bad block)을 활용할 수 있는 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법에 관한 것이다.
메모리 장치는 크게 휘발성 메모리 장치(volatile memory device)와 불휘발성 메모리 장치(non-volatile memory device)로 구분된다.
상기 휘발성 메모리 장치는 리드(read) 속도 및 라이트(write) 속도가 빠르지만, 외부로부터 공급되는 전원이 차단되면 상기 휘발성 메모리 장치의 내부에 저장된 데이터를 잃어버리는 단점이 있다. 반면 상기 불휘발성 메모리 장치는 외부로부터 공급되는 전원이 차단되더라도, 상기 불휘발성 메모리 장치의 내부에 저장된 데이터를 보존한다. 따라서, 상기 불휘발성 메모리 장치는 전원의 공급 여부에 무관하게 보존되어야 할 데이터를 저장하는데 사용된다.
불휘발성 메모리 장치로서 마스크 롬(mask read-only memory(MROM)), 프로그램 가능한 롬(programmable read-only memory(PROM)), 소거 및 프로그램 가능한 롬 (erasable programmable read-only memory(EPROM)), 또는 전기적으로 소거 및 프로그램 가능한 롬(electrically erasable programmable read-only memory(EEPROM)) 등이 있다.
일반적으로, MROM, PROM, 및 EPROM은 이레이즈(erase) 및 라이트(write)가 자유롭지 못해 상기 MROM, 상기 PROM 및 상기 EPROM에 저장된 데이터는 갱신하기 용이하지 않다. 이에 반해 EEPROM은 전기적으로 이레이즈 및 라이트가 가능하기 때문에, 계속적으로 갱신이 필요한 시스템 프로그래밍(system programming)이나 보조 기억 장치로서의 응용이 확대되고 있다. 특히 플래시(flash) EEPROM은 기존의 EEPROM에 비해 집적도가 높아, 대용량 보조 기억 장치로서의 응용에 매우 유리하다.
플래시 EEPROM 중에서 NAND-타입 플래시 메모리는 NOR-타입 플래시 메모리에 비해 집적도가 매우 높은 장점을 가진다.
불휘발성 메모리 장치는 복수의 메모리 셀들을 포함한다. 상기 복수의 메모리 셀들 각각은 1-비트 또는 그 이상의 비트를 저장한다. 불휘발성 메모리 장치가 점차 고집적화 및 대용량화, 그리고 칩 사이즈의 증가를 통해서 고기능화되고 있다. 그러나 상술한 트렌드(trend)에 따라, 불휘발성 메모리 장치의 회로 선 폭의 감소, 공정의 증가, 및 복잡도의 증가 등이 수반된다. 이러한 조건들은 칩의 수율(yield)을 감소시키는 요인이 된다. 이러한 문제점을 해결하기 위해, 불휘발성 메모리 장치는 결함이 발생한 메모리 셀을 대체하기 위한 리던던트 메모리 셀 (redundant memory cell)을 포함한다.
또한, 불휘발성 메모리 장치는 결함 셀(defect cell)의 어드레스(address)를 리던던트 메모리 셀의 어드레스로 전환하기 위한 수단을 포함하고 있다. 테스트 동작 동안, 결함 셀을 포함하는 배드 블록(bad block)이 검출되면, 상기 배드 블록은 리던던트 블록(redundant block)으로 대체된다.
상기 배드 블록이 상기 리던던트 블록으로 대체됨에 따라, 상기 배드 블록을 포함하는 불휘발성 메모리 장치는 양품으로 출시될 수 있다. 그러나, 하나의 불휘발성 메모리 장치에 포함된 리던던트 블록의 수는 한정되어 있으므로, 검출된 배드 블록의 수가 리던던트 블록의 수를 초과하는 경우도 발생할 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 배드 블록과 굿 블록을 논리적으로 조합하여 생성된 조합 블록을 활용할 수 있는 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 장치들, 및 상기 메모리 컨트롤러의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 컨트롤러의 동작 방법은 플래시 메모리의 메모리 셀 어레이에 구현된 다수의 블록들 각각에 프로그램된 데이터에 포함된 에러 비트의 수에 따라, 상기 다수의 블록들 각각을 제1그룹과 제2그룹으로 분류하는 단계와, 상기 제1그룹으로 분류된 다수의 블록들 중에서 제1블록과 상기 제2그룹으로 분류된 다수의 블록들 중에서 제2블록을 결합하여 조합 블록을 생성하는 단계를 포함한다.
상기 메모리 컨트롤러의 동작 방법은 상기 조합 블록에 저장될 데이터를 스크램블(scramble)하여 프로그램하는 단계를 더 포함한다.
상기 메모리 컨트롤러의 동작 방법은 상기 스크램블되어 상기 조합 블록에 저장된 데이터를 디스크램블(descramble)하여 리드하는 단계를 더 포함한다.
상기 메모리 컨트롤러의 동작 방법은 상기 제1블록에 저장될 제1데이터 중 일부는 상기 제1블록에 프로그램하고 상기 제1데이터의 나머지는 상기 제2블록에 프로그램하고, 상기 제2블록에 저장될 제2데이터 중 일부는 상기 제1블록에 프로그램하고 상기 제2데이터의 나머지는 상기 제2블록에 프로그램하는 단계를 더 포함한다.
상기 메모리 컨트롤러의 동작 방법은 상기 조합 블록에 저장된 데이터에 대한 에러 비트의 수가 기준 값보다 크면 상기 조합 블록을 분리하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 메모리 컨트롤러는 플래시 메모리의 메모리 셀 어레이에 구현된 다수의 블록들 각각에 대한 에러 비트의 수에 대한 정보를 처리하는 프로세서와, 상기 프로세서에 의하여 처리된 상기 에러 비트의 수에 따라 상기 다수의 블록들 각각을 제1그룹과 제2그룹으로 분류하고 상기 제1그룹으로 분류된 다수의 블록들 중에서 제1블록과 상기 제2그룹으로 분류된 다수의 블록들 중에서 제2블록을 결합하여 조합 블록을 생성하는 조합 블록 매니저를 포함한다.
상기 메모리 컨트롤러는 상기 다수의 블록들 각각에 대한 프로그램 동작 또는 리드 동작을 제어하는 플래시 관리 제어기를 더 포함하고, 상기 프로세서는 상기 조합 블록에 저장될 데이터를 스크램블(scramble)하여 상기 제1블록과 상기 제2블록 각각에 저장하도록 상기 플래시 관리 제어기를 제어한다.
상기 프로세서는 상기 제1블록에 저장될 제1데이터 중 일부를 상기 제1블록에 프로그램하고 상기 제1데이터의 나머지를 상기 제2블록에 프로그램하고, 상기 제2블록에 저장될 제2데이터 중 일부를 상기 제1블록에 프로그램하고 상기 제2데이터의 나머지를 상기 제2블록에 프로그램하도록 상기 플래시 관리 제어기를 제어한다.
상기 조합 블록에 저장된 데이터에 대한 에러 비트 수가 기준 값보다 크면, 상기 조합 블록 매니저는 상기 조합 블록을 분리한다.
상기 조합 블록 매니저는 상기 에러 비트의 수에 따라 상기 다수의 블록들 각각을 상기 제1그룹과 상기 제2그룹으로 분류하는 등급 결정기와, 상기 제1그룹으로 분류된 상기 다수의 블록들 중에서 상기 제1블록과 상기 제2그룹으로 분류된 상기 다수의 블록들 중에서 상기 제2블록을 선택하는 블록 선택기와, 상기 선택된 제1블록과 상기 선택된 제2블록을 결합하여 상기 조합 블록을 생성하는 조합 블록 생성기를 포함한다. 상기 제1블록과 상기 제2블록 중에서 어느 하나는 배드 블록이다.
본 발명의 실시 예에 따른 SSD(solid state drive)는 상기 메모리 컨트롤러와, 상기 메모리 컨트롤러를 제어하는 SSD 컨트롤러를 포함한다.
상기 SSD는 상기 플래시 메모리의 상기 메모리 셀 어레이에 구현된 상기 다수의 블록들 각각을 제어하는 플래시 관리 제어기를 더 포함하고, 상기 프로세서는 상기 조합 블록에 저장될 데이터를 스크램블(scramble)하여 상기 제1블록과 상기 제2블록 각각에 저장하도록 상기 플래시 관리 제어기를 제어한다.
상기 조합 블록에 저장된 데이터에 대한 에러 비트 수가 기준 값보다 크면, 상기 조합 블록 매니저는 상기 조합 블록을 분리한다.
본 발명의 실시 예에 따른 메모리 카드는 인터페이스와, 상기 인터페이스와 상기 플래시 메모리 사이에 접속된 상기 메모리 컨트롤러를 포함한다.
본 발명의 실시 예에 따른 메모리 컨트롤러는 배드 블록을 굿 블록과 논리적으로 조합하여 활용함으로써 불휘발성 메모리 장치의 수명을 연장하는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 불휘발성 메모리 시스템을 도시한 블록도이다.
도 2는 도 1에 도시된 조합 블록 매니저를 상세히 도시한 블록도이다.
도 3은 도 1 및 도 2에 도시된 조합 블록 매니저의 동작을 도시한 개념도이다.
도 4는 도 1에 도시된 조합 블록 매니저에 동작을 도시한 플로우챠트이다.
도 5는 도 1에 도시된 메모리 컨트롤러를 포함하는 SSD(solid state drive)의 일 실시 예를 나타낸다.
도 6은 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 일 실시 예를 나타낸다.
도 7은 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 다른 실시 예를 나타낸다.
도 8은 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 또 다른 실시 예를 나타낸다.
도 9는 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 또 다른 실시 예를 나타낸다.
도 10은 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 또 다른 실시 예를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 불휘발성 메모리 시스템을 도시한 블록도이다. 도 1을 참조하면, 불휘발성 메모리 시스템(100)은 플래시 메모리(10)와 메모리 컨트롤러(20)를 포함한다. 도 1에서는 설명의 편의를 위하여, 불휘발성 메모리 시스템(100)과 호스트(200)를 함께 도시한다.
플래시 메모리(10)는 메모리 셀 어레이(memory cell array; 미도시)에 구현된 다수의 블록들을 포함한다.
플래시 메모리(10)에 구현된 다수의 블록들은 메모리 컨트롤러(20)에 의하여 제1그룹(G1)과 제2그룹(G2)으로 분류될 수 있다. 예시적으로, 제1그룹(G1)은 적어도 하나의 굿 블록(good block; GB)을 포함하고, 제2그룹(G2)은 적어도 하나의 배드 블록(bad block; BB)을 포함한다. 또한, 메모리 컨트롤러(20)는 적어도 하나의 굿 블록(GB)과 적어도 하나의 배드 블록(BB)을 결합, 예컨대 논리적으로 결합하여 적어도 하나의 조합 블록(CB)을 생성한다. 예컨대, 메모리 컨트롤러(20)는 하나의 조합 블록(CB)을 하나의 데이터 저장 공간으로 인식할 수 있다.
굿 블록(GB)은 에러 정정 코드(error correction code (ECC)) 블록(21)에 의하여 에러 정정 가능한 데이터를 저장하는 블록을 의미하고, 배드 블록(BB)은 ECC 블록(21)의 에러 정정 능력을 초과하는 에러 비트들을 포함하는 데이터를 저장하는 블록을 의미한다.
플래시 메모리(10) 내의 배드 블록(BB)은 사용되지 않는다. 왜냐하면, 배드 블록(BB)에 저장된 데이터에 포함된 에러 비트들은 ECC 블록(21)에 의하여 정정될 수 없거나 또는 ECC 블록(21)의 에러 정정 능력을 초과하기 때문이다.
그러나, 본 발명의 개념에 따른 조합 블록(CB)은 배드 블록(BB)과 굿 블록 (GB)을 포함하기 때문에, 조합 블록(CB)에 저장된 데이터의 평균적인 에러 비트의 수는 감소할 수 있다. 따라서, ECC 블록(21)은 조합 블록(CB)에 저장된 데이터의 에러 비트들을 정정할 수 있다.
조합 블록(CB)을 논리적으로 생성하는 방법은 도 2부터 도 4를 참조하여 상세히 설명될 것이다. 예시적으로, 플래시 메모리(10)는 불휘발성 메모리로서, NAND 플래시 메모리로 구현될 수 있다. NAND 플래시 메모리는 1-비트 또는 그 이상의 비트를 저장할 수 있는 메모리 셀들을 포함한다.
플래시 메모리(10)를 제어하는 메모리 컨트롤러(20)는 ECC 블록(21), 호스트 인터페이스(22), 프로세서(23), RAM(random access memory; 24), 플래시 관리 제어기(flash management controller; 25), 및 조합 블록 매니저(combinational block manager; 26)를 포함한다.
회로(circuit) 또는 로직(logic)으로 구현될 수 있는 호스트 인터페이스(22)는 불휘발성 메모리 시스템(100)과 호스트(200) 사이에서 통신하는 데이터 또는 명령을 인터페이싱한다. 예컨대, 호스트 인터페이스(22)는 SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 인터페이스, PCI(Peripheral Component Interconnect) 인터페이스, PCI-EXPRESS(Peripheral Component Interconnect Express) 인터페이스, 또는 SAS(Serial Attached SCSI) 인터페이스로 구현될 수 있다.
회로(circuit), 로직(logic), 코드(code), 또는 이들의 조합으로 구현될 수 있는 프로세서(23)는 ECC 블록(21), 호스트 인터페이스(22), RAM(24), 플래시 관리 제어기(25), 및 조합 블록 매니저(26) 각각의 동작을 제어한다.
회로, 로직, 코드, 또는 이들의 조합으로 구현될 수 있는 ECC 블록(21)은 프로세서(23)의 제어에 따라 플래시 메모리(10)로부터 리드된 데이터에 포함된 에러 비트들을 검출하고 검출된 에러 비트들에 대한 에러들을 정정한다. 플래시 메모리 (10)에 저장된 데이터는 에러 정정 코드(ECC), 즉 ECC 데이터와 함께 플래시 메모리(10)에 저장될 수 있다.
상기 ECC 데이터는 플래시 메모리(10)의 리드 동작시 리드 데이터에 포함된 적어도 하나의 에러 비트를 정정하기 위한 것이다. 상기 ECC 데이터를 이용하여 정정 가능한 에러 비트의 수는 제한되어 있다. 리드 동작시 발생한 에러 비트는 에러 검출 기술과 에러 정정 기술을 통해 정정될 수 있다.
ECC 블록(21)은 라이트(write) 동작 동안 호스트(20)로부터 전송된 데이터에 대한 ECC 데이터를 생성한다. 또한 ECC 블록(21)은 리드 동작 동안 프로세서(23)로 전송되는 데이터의 ECC 데이터를 검사한다. 프로세서(23)로 전송된 데이터로부터 에러 비트가 검출되면, ECC 블록(21)은 상기 에러 비트를 포함하는 데이터를 정정하고 에러 정정된 데이터를 생성한다. ECC 블록(21)은 프로세서(23)로 에러 정정된 데이터를 전송한다.
프로세서(23)는 FTL(Flash Translation Layer; 23-1)을 포함하거나 또는 이를 실행할 수 있다. FTL(23-1)은 플래시 메모리(10)가 데이터 저장 매체로서 사용될 수 있도록 하기 위한 소프트웨어(software)이고 프로세서(23)에 의해 실행된다. FTL(23-1)은 배드 블록(BB)을 관리하기 위한 에러 정보(ER; 23-2)와, 논리적 어드레스(logical address)를 물리적 어드레스(physical address)로 변환하기 위한 맵핑 테이블(MT; 23-3)을 포함한다.
플래시 메모리(10)는 셀 어레이(cell array)를 포함하며, 상기 셀 어레이는 복수의 블록들을 포함한다. 상기 복수의 블록들 각각은 복수의 페이지들을 포함한다. 상기 복수의 페이지들 각각은 복수의 메모리 셀들을 포함한다.
블록(block)은 이레이즈 동작의 기본 단위이고, 페이지(page)는 리드 동작 또는 라이트(또는 프로그램) 동작의 기본 단위이다. 에러 정보(23-2)는 상기 복수의 블록들 각각에 대한 에러 비트의 수, 상기 복수의 블록들 각각에 포함된 복수의 페이지들 각각에 대한 에러 비트 수, 및 상기 에러 비트의 위치에 관한 정보를 포함한다.
플래시 관리 제어기(25)가 플래시 메모리(10)를 액세스할 때마다, ECC 블록 (21)은 플래시 메모리(10)에 대한 에러 정보(23-2)를 FTL(23-1)로 전송한다. 예컨대, 에러 정보(23-2)는 FTL(23-1)에 의하여 업데이트되며, 파워-오프 동작 동안 플래시 메모리(10)에 저장될 수 있다.
플래시 메모리(10) 내의 복수의 블록들 각각은 복수의 페이지들을 포함한다. 상기 복수의 페이지들 각각은 ECC 데이터 및 에러 정보(23-2)를 저장하는 스페어 영역(spare region)을 포함한다.
RAM(24)은 호스트(200)로부터 전송된 데이터 또는 호스트(200)로 전송될 데이터를 일시적으로 저장한다. 또한 RAM(24)은 프로세서(23)에 의하여 처리된 또는 처리될 데이터를 일시적으로 저장한다. RAM(24)은 고속 메모리로써 구성될 수 있다. 예컨대, RAM(24)은 SRAM(static random access memory) 또는 DRAM(dynamic random access memory)으로 구현될 수 있다.
회로, 로직, 코드, 또는 이들의 조합으로 구현될 수 있는 플래시 관리 제어기(25)는 플래시 메모리(10)로 데이터를 프로그래밍(programming)하는 동작, 플래시 메모리(10)로부터 데이터를 리드하는 동작, 또는 블록 단위로 데이터를 이레이즈하는 동작을 제어할 수 있다.
플래시 메모리(10)에서 배드 블록(BB)이 발생하면, 배드 블록(BB)은 리던던트 블록으로 대체된다. 그러나, 플래시 메모리(10) 내에 대체될 수 있는 리던던트 블록이 더 이상 존재하지 않으면, 조합 블록 매니저(26)는 플래시 메모리(10)의 배드 블록(BB)과 굿 블록(GB)을 결합하여, 예컨대 논리적으로 결합하여 조합 블록 (CB)을 생성한다. 조합 블록 매니저(26)의 구성과 동작은 도 2를 참조하여 상세히 설명된다.
도 2는 도 1에 도시된 조합 블록 매니저를 상세히 도시한 블록도이다.
도 1 및 도 2를 참조하면, 조합 블록 매니저(26)는 블록 등급 결정기(261), 블록 선택기(262), 조합 블록 생성기(263), 및 조합 블록 에러 계산기(264)를 포함한다.
블록 등급 결정기(261)는 에러 정보(ER; 23-2)를 프로세서(23)로부터 수신한다. 블록 등급 결정기(261)는 에러 정보(23-2)에 포함된 블록별 에러 비트의 수에 따라 플래시 메모리(10) 내에 구현된 복수의 블록들 각각을 제1그룹(G1)과 제2그룹 (G2)으로 분류한다. 예컨대, 제1그룹(G1)은 적어도 하나의 굿 블록(GB)을 포함하고, 제2그룹(G2)은 적어도 하나의 배드 블록(BB)을 포함한다. 또한, 블록 등급 결정기(261)는 표 1과 표 2에 도시된 바와 같이 에러 정보(23-2)에 포함된 블록별 에러 비트 수에 따라 제1그룹(G1)과 제2그룹(G2) 각각으로 분류된 복수의 블록들 각각에 대한 등급을 결정할 수 있다.
예를 들면, 굿 블록(GB)과 배드 블록(BB)을 구분하기 위한 에러 비트의 수가 20개라고 가정할 때, 복수의 블록들 각각에 저장된 데이터의 에러 비트의 수가 20개보다 크면 해당 블록은 배드 블록(BB)으로 분류되고, 상기 에러 비트의 수가 20보다 같거나 작으면 해당 블록은 굿 블록(GB)으로 분류된다. 실시 예에 따라 해당 블록을 제1그룹(G1)과 제2그룹(G2)를 분류하기 위한 에러 비트의 수는 일정한 값으로 설정될 수 있다.
표 1은 제1그룹(G1)으로 분류된 굿 블록(GB)에 대한 평균 에러 비트의 수에 따른 등급을 나타낸다.
블록별 평균 에러 비트의 수 등급
0 bit G5
1 ~ 5 bit G4
6 ~ 10 bit G3
11 ~ 15 bit G2
16 ~ 20 bit G1
표 2는 제2그룹(G2)으로 분류된 배드 블록(BB)에 대한 평균 에러 비트의 수에 따른 등급을 나타낸다.
블록별 평균 에러 비트의 수 등급
41 ~ 45 bit B5
36 ~ 40 bit B4
31 ~ 35 bit B3
26 ~ 30 bit B2
21 ~ 25 bit B1
예시적으로, 블록 선택기(262)는 제1그룹(G1)으로 분류된 다수의 블록들 중에서 하나의 블록과 제2그룹(G2)으로 분류된 다수의 블록들 중에서 하나의 블록을 선택한다.
예를 들면, 조합 블록(CB)을 생성하기 위하여 블록 선택기(262)는 G5 등급을 갖는 굿 블록(GB)과 B1 등급을 갖는 배드 블록(BB)을 선택한다. 이때, 표 1과 표 2에 도시된 바와 같이, G5 등급을 갖는 굿 블록(GB)과 B1 등급을 갖는 배드 블록 (BB)에 대한 에러 비트의 수의 합은 최대 25비트(bit)이다.
조합 블록(CB)의 에러 비트의 수는 최대 25비트이지만, 조합 블록(CB)에 포함된 굿 블록(GB)과 배드 블록(BB) 각각에 대한 에러 비트의 평균은 13비트보다 작다.
이때, B1 등급의 배드 블록(BB)에 라이트 데이터의 일부가 저장되고, G5 등급의 굿 블록(GB)에 상기 라이트 데이터의 나머지 일부가 저장된다고 가정한다.
배드 블록(BB)에 저장된 라이트 데이터의 일부에서만 에러 비트가 발생할 것이다. 에러 비트가 발생한 상기 라이트 데이터의 일부와 굿 블록(GB)에 저장된 상기 라이트 데이터의 나머지 일부를 결합하면, 조합 블록(CB)의 에러 비트의 수는 평균적으로 13비트보다 작을 것이다. 조합 블록 매니저(26)에 의하여 생성된 조합 블록(CB)에 대해서는 도 3 및 도 4를 참조하여 상세히 설명될 것이다.
조합 블록 생성기(263)는 블록 선택기(262)에 의하여 선택된 적어도 하나의 굿 블록(GB)과 적어도 하나의 배드 블록(BB)을 결합, 예컨대 논리적으로 결합하여 조합 블록(CB)을 생성한다. 이때 조합 블록 생성기(263)는 조합 블록(CB)을 생성하기 위하여 블록 선택기(262)에 의하여 선택된 굿 블록(GB)과 배드 블록(BB) 각각에 대한 어드레스 정보를 맵핑 테이블(MT; 23-3)로 전송한다.
도 1에 도시된 바와 같이, FTL(23-1)은 플래시 메모리(10)에 포함된 복수의 블록들 각각을 액세스하기 위한 맵핑 테이블(23-3)을 포함한다. FTL(23-1)은 조합 블록 생성기(263)로부터 전송된 굿 블록(GB)과 배드 블록(BB) 각각에 대한 어드레스 정보를 이용하여 맵핑 테이블(23-3)을 업데이트한다.
조합 블록 에러 계산기(264)는 조합 블록(CB)에 저장된 데이터에 대한 에러 비트의 수를 측정 또는 계산한다. 조합 블록(CB)에 포함된 굿 블록(GB)에 저장된 데이터 또는 조합 블록(CB)에 포함된 배드 블록(BB)에 저장된 데이터로부터 추가적으로 에러 비트가 더 발생할 수 있다. 추가적으로 발생한 에러 비트의 수가 ECC 블록(21)에 의하여 정정 가능한 에러 비트의 수(즉, 기준 값)보다 크면, 조합 블록 에러 계산기(264)는 조합 블록(CB)의 지정을 해제한다.
도 3은 도 1 및 도 2에 도시된 조합 블록 매니저의 동작을 도시한 개념도이다.
도 1, 도 2, 및 도 3을 참조하면, 조합 블록(CB)은 하나의 굿 블록(GB)과 하나의 배드 블록(BB)을 포함한다. 굿 블록(GB) 및 배드 블록(BB) 각각에 프로그램될 데이터를 저장하기 위한 각 페이지 버퍼의 크기는 1KByte로 가정한다. 즉, 배드 블록(BB)에 상응하는 제1페이지(PB1)와 굿 블록(GB)에 상응하는 제1페이지(PG1)의 크기는 1KByte이다.
도 3의 (a)에는 조합 블록(CB)에 저장될 유저 데이터(UD)가 도시되어 있다.
유저 데이터(UD)의 크기는 2KByte이다. 유저 데이터(UD)는 제1데이터(DA)와 제2데이터(DB)를 포함한다. 제1데이터(DA)는 512byte의 제1서브 데이터(DA1)와 512byte의 제2서브 데이터(DA2)를 포함한다. 제2데이터(DB)는 512byte의 제3서브 데이터(DB1)와 512byte의 제4서브 데이터(DB2)를 포함한다. 예시적으로, 호스트 (200)는 유저 데이터(UD)를 메모리 컨트롤러(20)로 전송한다.
ECC 블록(21)은 유저 데이터(UD)에 대한 에러 정정 코드(error correction code)를 생성한다.
예를 들면, 도 3의 (b)에 도시된 바와 같이, ECC 블록(21)은 제1서브 데이터 (DA1)의 에러 정정 코드인 제1ECC 데이터(PA1), 제2서브 데이터(DA2)의 에러 정정 코드인 제2ECC 데이터(PA2), 제3서브 데이터(DB1)의 에러 정정 코드인 제3ECC 데이터(PB1) 및 제4서브 데이터(DB2)의 에러 정정 코드인 제4ECC 데이터(PB2)를 생성한다.
플래시 관리 제어기(25)는 유저 데이터(UD)를 조합 블록(CB)에 프로그램한다. 예를 들면, 도 3의 (c)에 도시된 바와 같이, 플래시 관리 제어기(25)는 FTL (23-1)의 제어에 따라 배드 블록(BB)의 제1페이지(BP1)에 제1서브 데이터(DA1), 제3서브 데이터(DB1), 제1ECC 데이터(PA1), 및 제3ECC 데이터(PB1)를 프로그램한다.
제1페이지(BP1)는 제1서브 데이터(DA1) 및 제3서브 데이터(DB1)를 저장하는 데이터 영역(DT)과, 제1ECC 데이터(PA1) 및 제3ECC 데이터(PB1)를 저장하는 스페어 영역(SP)을 포함한다.
또한, 플래시 관리 제어기(25)는 FTL(23-1)의 제어에 따라 굿 블록(GB)의 제1페이지(GP1)에 제2서브 데이터(DA2), 제4서브 데이터(DB2), 제2ECC 데이터(PA2), 및 제4ECC 데이터(PB2)를 프로그램한다. 제1페이지(GP1)는 제2서브 데이터(DA2)와 제4서브 데이터(DB2)를 저장하는 데이터 영역(DT)과, 제2ECC 데이터(PA2)와 제4ECC 데이터(PB2)를 저장하는 스페어 영역(SP)을 포함한다.
즉, 플래시 관리 제어기(25)는 도 3의 (c)에 도시된 바와 같이 FTL(23-1)의 제어에 따라 유저 데이터(UD)를 조합 블록(CB)에 스크램블(scramble)하여 프로그램한다.
배드 블록(BB)의 제1페이지(BP1)는 적어도 하나의 배드 셀(BC)을 포함한다. 예시적으로, 배드 블록(BB)의 제1페이지(BP1)는 제1서브 데이터(DA1)와 제3서브 데이터(DB1) 각각이 저장되는 위치에 각각의 배드 셀(BC)을 포함한다. 따라서, 제1서브 데이터(DA1)와 제3서브 데이터(DB1) 각각이 배드 블록(BB)의 제1페이지(BP1)로부터 리드될 때, 제1서브 데이터(DA1)와 제3서브 데이터(DB1) 각각에는 적어도 하나의 에러 비트가 포함된다.
플래시 관리 제어기(25)는 조합 블록(CB)으로부터 유저 데이터(UD)를 리드 (read)한다. 예를 들면, 도 3의 (d)에 도시된 바와 같이, 플래시 관리 제어기(25)는 FTL(23-1)의 제어에 따라 배드 블록(BB)의 제1페이지(BP1)로부터 제1서브 데이터(DA1), 제3서브 데이터(DB1), 제1ECC 데이터(PA1), 및 제3ECC 데이터(PB1)를 리드한다.
이와 동시에, 플래시 관리 제어기(25)는 FTL(23-1)의 제어에 따라 굿 블록 (GB)의 제1페이지(GP1)로부터 제2서브 데이터(DA2), 제4서브 데이터(DB2), 제2ECC 데이터(PA2), 및 제4ECC 데이터(PB2)를 리드한다. 이때, 플래시 관리 제어기(25)는, FTL(23-1)의 제어에 따라, 도 3의 (e)에 도시된 바와 같이 조합 블록(CB)에 스크램블되어 프로그램된 유저 데이터(UD)를 디스크램블(descramble)하여 리드한다.
예시적으로, 제1서브 데이터(DA1)와 제3서브 데이터(DB1) 각각에서만 에러 비트가 발생한다고 가정한다. ECC 블록(21)은 제1ECC 데이터(PA1)를 이용하여 제1서브 데이터(DA1)의 에러 비트를 정정하고, 제3ECC 데이터(PB1)를 이용하여 제3서브 데이터(DB1)의 에러 비트를 정정한다.
배드 셀(BC)은 배드 블록(BB)에서만 존재한다. 그러나, 유저 데이터(UD)는 배드 블록(BB)과 굿 블록(GB)에 스크램블되어 프로그램되고, 디스크램블되어 리드된다. 따라서, 각 배드 셀(BC)로 인한 에러 비트는 제1데이터(DA)와 제2데이터(DB) 각각에서 발생할 수 있다.
예를 들면, 도 4의 (e)에 도시된 바와 같이, 유저 데이터(UD)가 스크램블되어 프로그램된 후 디스크램블되어 리드되기 때문에, 에러 비트는 ECC 블록(21)에 의하여 정정될 수 있다.
도 4는 도 1에 도시된 조합 블록 매니저에 동작을 도시한 플로우챠트이다.
도 1부터 도 4를 참조하면, 블록 등급 결정기(261)는 에러 정보(23-2)를 프로세서(23)로부터 수신한다. 그리고 블록 등급 결정기(261)는 에러 정보(23-2)로부터 블록별 평균 에러 비트의 수를 계산한다(S11).
블록 등급 결정기(261)는 상기 블록별 평균 에러 비트의 수에 따라 플래시 메모리(10)의 복수의 블록들 각각을 제1그룹(G1)과 제2그룹(G2)으로 분류하고, 제1그룹(G1)과 제2그룹(G2) 각각에 포함된 복수의 블록들 각각에 대한 등급을 결정한다(S12).
블록 선택기(262)는 제1그룹(G1)으로 분류된 다수의 블록들 중에서 적어도 하나의 블록과 제2그룹(G2)으로 분류된 다수의 블록들 중에서 적어도 블록을 선택한다(S13).
조합 블록 생성기(263)는 블록 선택기(262)에 의하여 선택된 적어도 하나의 굿 블록(GB)과 적어도 하나의 배드 블록(BB)을 결합하여 조합 블록(CB)을 생성한다 (S14).
조합 블록 에러 계산기(264)는 조합 블록(CB)에 저장된 데이터에 대한 에러 비트의 수를 계산 또는 측정한다(S15). 조합 블록 에러 계산기(264)는 조합 블록 (CB)에 대한 에러 비트의 수가 ECC 블록(21)에 의하여 정정 가능한지의 여부를 판단한다(S16).
조합 블록(CB)에 포함된 에러 비트가 ECC 블록(21)에 의하여 정정 가능하면, 조합 블록(CB)은 계속 사용된다(S17). 그렇지 않으면, 조합 블록 에러 계산기(264)는 조합 블록(CB)을 분리한다. S13 단계에서 블록 선택기(262)는 새로운 조합 블록 (CB)을 생성하기 위하여 적어도 하나의 굿 블록(GB)과 적어도 하나의 배드 블록 (BB)을 선택한다.
도 5는 도 1에 도시된 메모리 컨트롤러를 포함하는 SSD (solid state drive)의 일 실시 예를 나타낸다. 도 1부터 도 5를 참조하면, SSD(110)는 도 1에 도시된 조합 블록 매니저(26)를 포함하는 메모리 컨트롤러(20)를 포함한다. SSD(110)는 불휘발성 메모리 시스템(10-1), 메모리 컨트롤러(20), DRAM(dymanic random access memory; 130), 및 SSD 컨트롤러(120)를 포함한다.
불휘발성 메모리 시스템(10-1)은 제1채널(C1), 제2채널(C2), 제3채널(C3), 및 제4채널(C4) 각각에 접속된 다수의 불휘발성 메모리, 예컨대 플래시 메모리들(10)을 포함한다.
메모리 컨트롤러(20)는 불휘발성 메모리 시스템(10-1)의 동작을 제어한다. SSD 컨트롤러(120)는 메모리 컨트롤러(20)와 호스트(200) 사이에서 주고받는 데이터를 DRAM(130)에 저장한다.
예시적으로, 조합 블록 매니저(26)는 제1채널(C1)에 연결된 다수의 플래시 메모리들(10) 중에서 어느 하나의 플래시 메모리의 굿 블록(GB)과, 제2채널(C2)에 연결된 다수의 플래시 메모리들(10) 중에서 어느 하나의 배드 블록(BB)을 논리적으로 결합하여 조합 블록(CB)을 생성할 수 있다. 또한, 조합 블록 매니저(26)는 제1채널 (C1)에 연결된 다수의 플래시 메모리들(10) 중에서 어느 하나의 플래시 메모리의 굿 블록(GB)과 제1채널(C1)에 연결된 다수의 플래시 메모리들(10) 중에서 다른 하나의 플래시 메모리의 배드 블록(BB)을 논리적으로 결합하여 조합 블록(CB)을 생성할 수 있다.
도 6은 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 일 실시 예를 나타낸다.
도 6을 참조하면, 도 6에 도시된 메모리 컨트롤러(20)는 조합 블록 매니저 (26)를 포함한다. 메모리 컨트롤러(20)를 포함하는 컴퓨터 시스템(30)은 PC (personal computer), 네트워크 서버(Network Server), 태블릿(tablet) PC, 넷-북 (net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
컴퓨터 시스템(30)은 프로세서(31), 플래시 메모리(10), 플래시 메모리(10)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(20), 디스플레이(32), 및 입력 장치(33)를 포함한다.
프로세서(31)는 입력 장치(33)를 통하여 입력된 데이터에 따라 플래시 메모리(10)에 저장된 데이터를 디스플레이(32)를 통하여 디스플레이할 수 있다. 예컨대, 입력 장치(33)는 터치 패드(touch pad) 또는 컴퓨터 마우스와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다. 프로세서 (31)는 컴퓨터 시스템(30)의 전반적인 동작을 제어할 수 있고 메모리 컨트롤러(20)의 동작을 제어할 수 있다.
실시 예에 따라 플래시 메모리(10)의 동작을 제어할 수 있는 메모리 컨트롤러(20)는 프로세서(31)의 일부로서 구현될 수 있고 또한 프로세서(31)와 별도의 칩으로 구현될 수 있다.
도 7은 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 다른 실시 예를 나타낸다.
도 7을 참조하면, 도 7에 도시된 메모리 컨트롤러(20)는 조합 블록 매니저 (26)를 포함한다. 메모리 컨트롤러(20)를 포함하는 컴퓨터 시스템(40)은 이미지 처리 장치(image process device), 예컨대 디지털 카메라 또는 디지털 카메라가 부착된 이동 전화기, 스마트 폰, 또는 태블릿(tablet) PC로 구현될 수 있다.
컴퓨터 시스템(40)은 플래시 메모리(10), 및 플래시 메모리(10)의 데이터 처리 동작, 예컨대 이레이즈 동작, 라이트 동작, 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(20)를 포함한다. 또한, 컴퓨터 시스템(40)은 프로세서(41), 이미지 센서(42) 및 디스플레이(43)를 더 포함한다.
컴퓨터 시스템(40)의 이미지 센서(42)는 광학 이미지를 디지털 신호로 변환하고, 변환된 디지털 신호는 프로세서(41) 또는 메모리 컨트롤러(20)로 전송된다. 프로세서(41)의 제어에 따라, 상기 변환된 디지털 신호는 디스플레이(43)를 통하여 디스플레이되거나 또는 메모리 컨트롤러(20)를 통하여 플래시 메모리(10)에 저장될 수 있다.
또한, 플래시 메모리(10)에 저장된 데이터는 프로세서(41) 또는 메모리 컨트롤러(20)의 제어에 따라 디스플레이(43)를 통하여 디스플레이된다.
실시 예에 따라 플래시 메모리(10)의 동작을 제어할 수 있는 메모리 컨트롤러(20)는 프로세서(41)의 일부로서 구현될 수 있고 또한 프로세서(41)와 별개의 칩으로 구현될 수 있다.
도 8은 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 또 다른 실시 예를 나타낸다.
도 8을 참조하면, 도 8에 도시된 메모리 컨트롤러(20)는 조합 블록 매니저 (26)를 포함한다. 메모리 컨트롤러(20)를 포함하는 컴퓨터 시스템(50)은 플래시 메모리(10), 및 플래시 메모리(10)의 동작을 제어할 수 있는 프로세서(51)를 포함한다.
플래시 메모리(10)는 NAND 플래시 메모리(flash memory)와 같은 불휘발성 메모리로 구현될 수 있다. 또한, 컴퓨터 시스템(50)은 시스템 메모리(52), 메모리 인터페이스(53), ECC 블록(54) 및 호스트 인터페이스(55)를 더 포함한다.
컴퓨터 시스템(50)은 프로세서(51)의 동작 메모리(operation memory)로서 사용될 수 있는 시스템 메모리(52)를 포함한다. 시스템 메모리(52)는 ROM(read only memory)과 같은 불휘발성 메모리로 구현될 수 있고 SRAM(Static random access memory)과 같은 휘발성 메모리로 구현될 수 있다.
컴퓨터 시스템(50)에 접속된 호스트(host; 미도시)는 메모리 인터페이스(53)와 호스트 인터페이스(55)를 통하여 플래시 메모리(10)와 데이터 통신을 수행할 수 있다.
프로세서(51)의 제어에 따라 에러 정정 코드(error correction code(ECC)) 블록(54)은 메모리 인터페이스(53)를 통하여 플래시 메모리(10)로부터 출력된 데이터에 포함된 에러 비트를 검출하고, 상기 에러 비트를 정정하고, 에러 비트가 정정된 데이터를 호스트 인터페이스(55)를 통하여 호스트로 전송할 수 있다. 프로세서 (51)는 버스(56)를 통하여 메모리 인터페이스(53), ECC 블록(54), 호스트 인터페이스(55), 및 시스템 메모리(52) 사이에서 데이터 통신을 제어할 수 있다.
컴퓨터 시스템(50)은 플래시 메모리 드라이브, USB 메모리 드라이브 (universal serial bus memory drive), IC-USB(InterChip-USB) 메모리 드라이브, 또는 메모리 스틱(memory stick)으로 구현될 수 있다.
도 9는 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 또 다른 실시 예를 나타낸다.
도 9를 참조하면, 도 9에 도시된 메모리 컨트롤러(20)는 조합 블록 매니저 (26)를 포함한다. 메모리 컨트롤러(20)를 포함하는 컴퓨터 시스템(60)은 이동 전화기(cellular phone), 스마트 폰(smart phone), PDA(personal digital assistant), 스마트 패드(smart pad) 또는 무선 통신 장치로 구현될 수 있다.
컴퓨터 시스템(60)은 플래시 메모리(10)와 플래시 메모리(10)의 동작을 제어할 수 있는 메모리 컨트롤러(20)를 포함한다.
메모리 컨트롤러(20)는 프로세서(61)의 제어에 따라 플래시 메모리(10)의 데이터 액세스 동작, 예컨대 이레이즈 동작, 라이트 동작, 또는 리드 동작을 제어할 수 있다. 플래시 메모리(10)에 저장된 데이터는 프로세서(61) 및/또는 메모리 컨트롤러(20)의 제어에 따라 디스플레이(62)를 통하여 디스플레이될 수 있다.
무선 송수신기(63)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(63)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(61)에서 처리될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(61)는 무선 송수신기(63)로부터 출력된 신호를 처리하고 처리된 신호를 메모리 컨트롤러 (20) 또는 디스플레이(62)로 전송할 수 있다. 메모리 컨트롤러(20)는 프로세서(61)에 의하여 처리된 신호를 플래시 메모리(10)에 저장할 수 있다.
또한, 무선 송수신기(63)는 프로세서(61)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(64)는 프로세서(61)의 동작을 제어하기 위한 제어 신호 또는 프로세서 (61)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드 (keypad), 또는 키보드로 구현될 수 있다.
프로세서(61)는 메모리 컨트롤러(20)로부터 출력된 데이터, 무선 송수신기 (63)로부터 출력된 데이터, 또는 입력 장치(64)로부터 출력된 데이터가 디스플레이 (62)를 통하여 디스플레이될 수 있도록 디스플레이(62)의 동작을 제어할 수 있다.
실시 예에 따라, 플래시 메모리(10)의 동작을 제어할 수 있는 메모리 컨트롤러(20)는 프로세서(61)의 일부로서 구현될 수 있고 또한 프로세서(61)와 별도의 칩으로 구현될 수 있다.
도 10은 도 1에 도시된 메모리 컨트롤러를 포함하는 컴퓨터 시스템의 또 다른 실시 예를 나타낸다.
도 10을 참조하면, 도 10에 도시된 메모리 컨트롤러(20)는 조합 블록 매니저 (26)를 포함한다. 메모리 컨트롤러(20)를 포함하는 데이터 처리 시스템 또는 컴퓨터 시스템(70)은 호스트 컴퓨터(71)와 메모리 카드(74)를 포함한다. 메모리 카드 (74)는 스마트 카드일 수 있다.
호스트 컴퓨터(71)는 호스트 프로세서(72) 및 호스트 인터페이스(73)를 포함한다. 메모리 카드(74)는 플래시 메모리(10), 메모리 컨트롤러(20), 및 카드 인터페이스(75)를 포함한다. 메모리 컨트롤러(20)는 플래시 메모리(10)와 카드 인터페이스(75) 사이에서 데이터의 교환을 제어할 수 있다.
실시 예에 따라, 카드 인터페이스(75)는 SD(secure digital) 카드 인터페이스, MMC(multi-media card) 인터페이스, SIM(subscriber identification module)카드 인터페이스, 또는 USIM(universal subscriber identity module) 카드 인터페이스 일 수 있으나 이에 한정되는 것은 아니다.
메모리 카드(10)가 호스트 컴퓨터(71)와 전기적으로 접속되면, 카드 인터페이스(75)는 호스트 프로세서(72)의 프로토콜에 따라 호스트 프로세서(72)와 메모리 컨트롤러(20) 사이에서 데이터 교환을 인터페이스할 수 있다.
실시 예에 따라 카드 인터페이스(75)는 USB(Universal Serial Bus) 프로토콜, IC(Inter-Chip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스라 함은 호스트 컴퓨터(71)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어, 또는 신호 전송 방식을 의미할 수 있다.
컴퓨터 시스템(70)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 디지털 셋-탑 박스, 자동 항법 시스템(automotive navigation system), 또는 자동차 네비게이터(car navigator)와 같은 호스트 컴퓨터(71)의 호스트 인터페이스(73)와 접속될 때, 호스트 인터페이스 (73)는 호스트 프로세서(72)의 제어에 따라 카드 인터페이스(75)와 메모리 컨트롤러(20)를 통하여 플래시 메모리(10)와 데이터 통신을 수행할 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 플래시 메모리
20 : 메모리 컨트롤러
21 : ECC 블록
22 : 호스트 인터페이스
23 : 프로세서
24 : RAM
25 : 플래시 관리 제어기
26 : 조합 블록 매니저
100 : 불휘발성 메모리 시스템
200 : 호스트

Claims (10)

  1. 플래시 메모리의 메모리 셀 어레이에 구현된 복수의 블록들 각각에 프로그램된 데이터에 포함된 에러 비트의 수에 따라, 상기 복수의 블록들 각각을 제1그룹과 제2그룹으로 분류하는 단계; 및
    상기 복수의 블록들 중 상기 제1그룹으로 분류된 제1블록과 상기 복수의 블록들 중 상기 제2그룹으로 분류된 제2블록을 결합하고, 상기 제1블록과 상기 제2블록을 포함하는 조합 블록을 생성하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  2. 제1항에 있어서,
    상기 조합 블록에 저장될 데이터를 스크램블(scramble)하여 프로그램하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
  3. 제2항에 있어서,
    상기 스크램블되어 상기 조합 블록에 저장된 데이터를 디스크램블 (descramble)하여 리드하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
  4. 제1항에 있어서,
    상기 제1블록에 저장될 제1데이터 중 일부는 상기 제1블록에 프로그램하고 상기 제1데이터의 나머지는 상기 제2블록에 프로그램하고,
    상기 제2블록에 저장될 제2데이터 중 일부는 상기 제1블록에 프로그램하고 상기 제2데이터의 나머지는 상기 제2블록에 프로그램하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
  5. 제1항에 있어서,
    상기 조합 블록에 저장된 데이터에 대한 에러 비트의 수가 기준 값보다 크면, 상기 조합 블록을 분리하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
  6. 플래시 메모리의 메모리 셀 어레이에 구현된 복수의 블록들 각각에 대한 에러 비트의 수에 대한 정보를 처리하는 프로세서; 및
    상기 프로세서에 의하여 처리된 상기 에러 비트의 수에 따라 상기 복수의 블록들 각각을 제1그룹과 제2그룹으로 분류하고, 상기 복수의 블록들 중 상기 제1그룹으로 분류된 제1블록과 상기 복수의 블록들 중 상기 제2그룹으로 분류된 제2블록을 결합하고, 상기 제1블록과 상기 제2블록을 포함하는 조합 블록을 생성하는 조합 블록 매니저를 포함하는 메모리 컨트롤러.
  7. 제6항에 있어서,
    상기 복수의 블록들 각각에 대한 프로그램 동작 또는 리드 동작을 제어하는 플래시 관리 제어기를 더 포함하며,
    상기 프로세서는 상기 조합 블록에 저장될 데이터를 스크램블(scramble)하여 상기 제1블록과 상기 제2블록 각각에 저장하도록 상기 플래시 관리 제어기를 제어하는 메모리 컨트롤러.
  8. 제7항에 있어서,
    상기 프로세서는 상기 제1블록에 저장될 제1데이터 중 일부를 상기 제1블록에 프로그램하고 상기 제1데이터의 나머지를 상기 제2블록에 프로그램하고,
    상기 제2블록에 저장될 제2데이터 중 일부를 상기 제1블록에 프로그램하고 상기 제2데이터의 나머지를 상기 제2블록에 프로그램하도록 상기 플래시 관리 제어기를 제어하는 메모리 컨트롤러.
  9. 제6항의 메모리 컨트롤러; 및
    상기 메모리 컨트롤러를 제어하는 SSD(solid state drive) 컨트롤러를 포함하는 SSD.
  10. 인터페이스; 및
    상기 인터페이스와 플래시 메모리 사이에 접속된 제6항의 메모리 컨트롤러를 포함하는 메모리 카드.
KR1020110026205A 2011-03-24 2011-03-24 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 KR101826137B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110026205A KR101826137B1 (ko) 2011-03-24 2011-03-24 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법
US13/428,231 US9003262B2 (en) 2011-03-24 2012-03-23 Memory controller, devices including the same, and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110026205A KR101826137B1 (ko) 2011-03-24 2011-03-24 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20120109017A KR20120109017A (ko) 2012-10-08
KR101826137B1 true KR101826137B1 (ko) 2018-03-22

Family

ID=46878369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110026205A KR101826137B1 (ko) 2011-03-24 2011-03-24 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법

Country Status (2)

Country Link
US (1) US9003262B2 (ko)
KR (1) KR101826137B1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9450614B2 (en) * 2013-09-13 2016-09-20 Rambus Inc. Memory module with integrated error correction
JP2015082240A (ja) * 2013-10-23 2015-04-27 株式会社東芝 ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法
GB201322075D0 (en) 2013-12-13 2014-01-29 Ibm Device for selecting a level for at least one read voltage
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US10365859B2 (en) 2014-10-21 2019-07-30 International Business Machines Corporation Storage array management employing a merged background management process
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10339048B2 (en) 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
JP6901831B2 (ja) * 2015-05-26 2021-07-14 株式会社半導体エネルギー研究所 メモリシステム、及び情報処理システム
US9910772B2 (en) 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10289487B2 (en) 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
US10025662B2 (en) 2016-04-27 2018-07-17 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN107391296B (zh) 2016-04-27 2020-11-06 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
US10110255B2 (en) 2016-04-27 2018-10-23 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
KR20180085107A (ko) * 2017-01-17 2018-07-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11314635B1 (en) * 2017-12-12 2022-04-26 Amazon Technologies, Inc. Tracking persistent memory usage
CN112558863B (zh) * 2020-11-25 2023-02-14 成都佰维存储科技有限公司 Ssd坏块替换方法、装置、可读存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100847506B1 (ko) 2004-09-10 2008-07-22 동경 엘렉트론 디바이스 주식회사 기억 장치, 메모리 관리 방법 및 프로그램
JP2009224013A (ja) 2007-12-27 2009-10-01 Hagiwara Sys-Com:Kk 記憶装置、システム、該システムを搭載した遊技機

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
KR100496773B1 (ko) 2000-06-28 2005-06-22 테스텍 주식회사 낸드형 플래시 메모리의 테스트 장치 및 방법
JP2008191701A (ja) 2007-01-31 2008-08-21 Toshiba Corp エラー回復処理方法および情報処理装置
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
JP5166074B2 (ja) * 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
TWI401691B (zh) * 2009-03-20 2013-07-11 Phison Electronics Corp 具快閃記憶體測試功能的控制器及其儲存系統與測試方法
TWI404071B (zh) * 2009-06-23 2013-08-01 Phison Electronics Corp 能識別快閃記憶體中錯誤資料的控制電路及儲存系統與方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100847506B1 (ko) 2004-09-10 2008-07-22 동경 엘렉트론 디바이스 주식회사 기억 장치, 메모리 관리 방법 및 프로그램
JP2009224013A (ja) 2007-12-27 2009-10-01 Hagiwara Sys-Com:Kk 記憶装置、システム、該システムを搭載した遊技機

Also Published As

Publication number Publication date
US20120246540A1 (en) 2012-09-27
US9003262B2 (en) 2015-04-07
KR20120109017A (ko) 2012-10-08

Similar Documents

Publication Publication Date Title
KR101826137B1 (ko) 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법
US20170315925A1 (en) Mapping table loading method, memory control circuit unit and memory storage apparatus
US9947412B1 (en) Data writing method, memory control circuit unit and memory storage apparatus
US9934087B2 (en) Decoding method, memory storage device and memory control circuit unit
US10025660B2 (en) Data reading method, memory control circuit unit and memory storage apparatus
US10747471B2 (en) Cell programming method, memory control circuit unit and memory storage device
US9582224B2 (en) Memory control circuit unit, memory storage apparatus and data accessing method
US10318379B2 (en) Decoding method, memory storage device and memory control circuit unit
US10782920B2 (en) Data access method, memory storage apparatus and memory control circuit unit
US9720609B1 (en) Data protecting method, memory control circuit unit and memory storage device
US20190163363A1 (en) Data accessing method, memory controlling circuit unit and memory storage device
US20170242597A1 (en) Wear leveling method, memory control circuit unit and memory storage device
US20200341676A1 (en) Data writing method, memory control circuit unit and memory storage device
US10872656B1 (en) Data writing method, memory control circuit unit and memory storage device
US20190073298A1 (en) Memory management method, memory control circuit unit and memory storage apparatus
US10409674B2 (en) Decoding method, memory control circuit unit and memory storage apparatus
US10678698B2 (en) Memory storage device, control circuit and method including writing discontinuously arranged data into physical pages on word lines in different memory sub-modules
US10871909B2 (en) Block management method, memory control circuit unit and apparatus using mapping tables and block recognition machine learning with block parameters as training data
US10025708B1 (en) Memory management method, memory control circuit unit and memory storage apparatus
US11216217B2 (en) Data transfer method after data encryption function is disabled and memory storage device
US20180335942A1 (en) Data reading method, memory control circuit unit and memory storage device
US11139044B2 (en) Memory testing method and memory testing system
US10546640B2 (en) Data protecting method and memory storage device
US10067677B2 (en) Memory management method for configuring super physical units of rewritable non-volatile memory modules, memory control circuit unit and memory storage device
US10102121B1 (en) Memory management method, memory control circuit unit and memory storage device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right