KR101648531B1 - 불휘발성 메모리 시스템과 이의 동작 방법 - Google Patents
불휘발성 메모리 시스템과 이의 동작 방법 Download PDFInfo
- Publication number
- KR101648531B1 KR101648531B1 KR1020100013183A KR20100013183A KR101648531B1 KR 101648531 B1 KR101648531 B1 KR 101648531B1 KR 1020100013183 A KR1020100013183 A KR 1020100013183A KR 20100013183 A KR20100013183 A KR 20100013183A KR 101648531 B1 KR101648531 B1 KR 101648531B1
- Authority
- KR
- South Korea
- Prior art keywords
- area
- sector
- information
- sector area
- selectable
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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)
Abstract
불휘발성 메모리 시스템이 개시된다. 상기 불휘발성 메모리 시스템은 섹터 데이터를 저장하기 위한 섹터 영역을 포함하는 데이터 영역과, 상기 섹터 영역에 대한 언커렉터블 정보를 저장하기 위한 언커렉터블 정보 영역을 포함하는 불휘발성 메모리; 및 호스트로부터 출력된 명령에 따라 상기 섹터 영역이 언커렉터블 섹터 영역으로 지정되었는지의 여부를 지시하는 상기 언커렉터블 정보를 생성하기 위한 정보 생성 유닛을 포함한다.
Description
본 발명의 개념에 따른 실시 예는 언커렉터블(uncorrectable) 섹터 영역 관리 기술에 관한 것으로, 특히 페이지(page) 내의 언커렉터블 섹터 영역에 대한 정보를 상기 페이지 내에 함께 저장할 수 있는 불휘발성 메모리 시스템과 상기 시스템의 동작 방법에 관한 것이다.
하드디스크 드라이브와 같은 대용량 저장 장치는 호스트 컴퓨터와 원활한 데이터 전송과 관리를 위하여 표준 인터페이스 사양(interface specification)을 사용한다. 상기 인터페이스 사양의 대표적인 예가 ATA와 SCSI(small computer system interface)이다.
대용량 저장 장치는 호스트 컴퓨터에 의하여 의도적으로 언커렉터블 섹터 영역으로 지정할 수 있는 명령을 지원할 수 있어야 한다.
본 발명이 이루고자 하는 기술적인 과제는 언커렉터블 섹터 정보를 효율적으로 관리하기 위하여 언커렉터블 섹터 영역에 대한 정보를 상기 언커렉터블 섹터 영역을 포함하는 페이지 내에 함께 저장할 수 있는 불휘발성 메모리 시스템과 상기 시스템의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 불휘발성 메모리와 컨트롤러를 포함한다.
상기 불휘발성 메모리는 섹터 데이터를 저장하기 위한 섹터 영역을 포함하는 데이터 영역과, 상기 섹터 영역에 대한 언커렉터블 정보를 저장하기 위한 언커렉터블 정보 영역을 포함한다.
상기 컨트롤러는 호스트로부터 출력된 명령에 따라 상기 섹터 영역이 언커렉터블 섹터 영역으로 지정되었는지의 여부를 지시하는 상기 언커렉터블 정보를 생성하기 위한 정보 생성 유닛을 포함한다.
상기 데이터 영역과 상기 언커렉터블 정보 영역은 동일한 페이지 내에 존재한다.
상기 섹터 영역은 라이트 데이터를 저장하기 위한 라이트 데이터 영역과, 상기 라이트 데이터 영역에 저장된 상기 라이트 데이터에 대한 에러 정정을 수행하기 위한 에러 정정 코드를 저장하기 위한 관리 영역을 포함하며,
상기 컨트롤러는, 상기 정보 생성 유닛에 의하여 상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 에러 정정시 오류를 일으킬 수 있도록 상기 에러 정정 코드를 상기 관리 영역에 저장하기 위한 에러 정정 코드 발생 유닛을 포함한다.
상기 불휘발성 메모리 시스템은 메모리 카드 또는 솔리드 스테이트 드라이브이다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 불휘발성 메모리 시스템과 상기 불휘발성 메모리 시스템을 액세스할 수 있는 호스트를 포함한다.
상기 불휘발성 메모리 시스템은 섹터 데이터를 저장하기 위한 섹터 영역을 포함하는 데이터 영역과, 상기 섹터 영역에 대한 언커렉터블 정보를 저장하기 위한 언커렉터블 정보 영역을 포함하는 불휘발성 메모리; 및 상기 호스트로부터 출력된 명령에 따라 상기 섹터 영역이 언커렉터블 섹터 영역으로 지정되었는지의 여부를 지시하는 상기 언커렉터블 정보를 생성하기 위한 정보 생성 유닛을 포함한다.
상기 섹터 영역은 라이트 데이터를 저장하기 위한 라이트 데이터 영역과, 상기 라이트 데이터 영역에 저장된 상기 라이트 데이터에 대한 에러 정정을 수행하기 위한 에러 정정 코드를 저장하기 위한 관리 영역을 포함하며,
상기 컨트롤러는, 상기 정보 생성 유닛에 의하여 상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 에러 정정시 오류를 일으킬 수 있도록 상기 에러 정정 코드를 상기 관리 영역에 저장하기 위한 에러 정정 코드 발생 유닛을 포함한다. 상기 데이터 처리 시스템은 PC이다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템의 동작 방법은 컨트롤러가 호스트로부터 출력된 명령을 수신하는 단계; 상기 컨트롤러가 수신된 명령에 따라 불휘발성 메모리의 하나의 페이지 내의 섹터 영역이 언커렉터블 섹터 영역으로 지정되었는지의 여부를 지시하는 언커렉터블 정보를 생성하는 단계; 및 상기 컨트롤러가 생성된 언커렉터블 정보를 상기 페이지 내의 언커렉터블 정보 영역에 저장하는 단계를 포함한다.
상기 불휘발성 메모리 시스템의 동작 방법은 상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 컨트롤러는 상기 섹터 영역에 저장된 라이트 데이터에 대한 에러 정정시 페일을 일으킬 수 있도록 에러 정정 코드를 상기 라이트 데이터에 부가하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 언커렉터블 섹터 정보를 섹터 데이터가 저장된 페이지 내에 함께 저장할 수 있으므로 상기 언커렉터블 섹터 정보를 효율적으로 관리할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블락도를 나타낸다.
도 2는 도 1에 도시된 시스템의 불휘발성 메모리의 어드레스 공간을 개략적으로 나타낸다.
도 3은 도 2에 도시된 페이지를 개략적으로 나타낸다.
도 4는 도 1에 도시된 데이터 처리 시스템의 동작을 설명하기 위한 플로우차트이다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블락도를 나타낸다.
도 2는 도 1에 도시된 시스템의 불휘발성 메모리의 어드레스 공간을 개략적으로 나타낸다.
도 3은 도 2에 도시된 페이지를 개략적으로 나타낸다.
도 4는 도 1에 도시된 데이터 처리 시스템의 동작을 설명하기 위한 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블락도를 나타낸다.
도 1을 참조하면, 데이터 처리 시스템(1)은 불휘발성 메모리 시스템(10)에 데이터를 라이트하거나 또는 불휘발성 메모리 시스템(1)에 라이트된 데이터를 리드할 수 있는 액세스 장치, 예컨대 호스트(5)를 포함한다.
실시 예에 따라 호스트(5)와 불휘발성 메모리 시스템(10)은 ATA 또는 SCSI 인터페이스를 이용하여 데이터를 주고받을 수 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템(10)은 전체 논리 주소들 (logical addresses)에 상응하는 전체 섹터 영역들 각각이 언커렉터블 섹터 영역인지의 여부와 종류를 나타내는 언커렉터블 섹터 정보를 생성하고 생성된 언커렉터블 섹터 정보를 불휘발성 메모리(40)의 페이지 내에 저장할 수 있다.
실시 예에 따라 데이터 처리 시스템(1)은 PC(personal computer), 포터블 컴퓨터, 이동 전화기, 스마트 폰(smart phone), PDA(personal digital assistant), PMP(portable multimedia player), GPS 자동 네비게이션 시스템(GPS automotive navigation systems), MP3플레이어(MP3 players), 오디오 장치(audio equipment), TV(television), 디지털 카메라, 또는 켐코더일 수 있다.
실시 예에 따라 불휘발성 메모리 시스템(10)은 스마트 카드, 메모리 카드, 또는 메모리 장치(예컨대, 솔리드 스테이트 드라이브, 메모리 스틱, 또는 USB 메모리 스틱)로 구현될 수 있다.
메모리 시스템(10)은 메모리 컨트롤러(20)와 불휘발성 메모리(40)를 포함한다. 실시 예에 따라 메모리 컨트롤러(20)와 불휘발성 메모리(40)는 하나의 칩 또는 별개의 칩으로 구현될 수 있다. 또한, 도 1에서는 설명의 편의를 위하여 하나의 불휘발성 메모리(40)가 도시되어 있으나 메모리 컨트롤러(20)는 복수의 불휘발성 메모리 칩들의 동작을 제어할 수 있다.
호스트(5)는 메모리 컨트롤러(20)를 통하여 불휘발성 메모리(40)와 데이터를 주거나 받을 수 있다.
메모리 컨트롤러(20)는 마이크로프로세서(24), ROM(26), RAM(28), 호스트 인터페이스(30), 에러 정정 코드 생성 유닛(32), 및 불휘발성 메모리 인터페이스 (34)를 포함한다. 실시 예에 따라 호스트 인터페이스(30)와 불휘발성 메모리 인터페이스(34) 사이에는 버퍼가 구현될 수 있다. 상기 버퍼는 페이지 버퍼로 구현될 수 있으며, 상기 페이지 버퍼는 호스트(5)와 불휘발성 메모리(40)가 주거나 받는 데이터를 임시로 저장할 수 있다.
마이크로프로세서(24), ROM(26), RAM(28), 호스트 인터페이스(30), 에러 정정 코드 생성 유닛(32), 및 불휘발성 메모리 인터페이스(34)는 버스(22)를 통하여 서로 접속되어 데이터를 주고받을 수 있다.
마이크로프로세서(24)는 ROM(26)에 저장된 프로그램을 실행시킬 수 있다.
ROM(26)은 마이크로프로세서(24)에 의하여 실행되는 프로그램을 저장할 수 있다. 예컨대, ROM(26)은 호스트 인터페이스(30), 에러 정정 코드 생성 유닛(32), 또는 불휘발성 메모리 인터페이스(34)를 제어하거나 또는 관리할 수 있는 프로그램을 저장할 수 있다.
RAM(28)은 마이크로프로세서(24)에 의하여 실행되는 프로그램을 일시적으로 저장할 수 있다.
호스트 인터페이스(30)는 마이크로프로세서(24)의 제어 하에 호스트(5)와 마이크로프로세서(24) 사이의 통신을 위한 인터페이스를 제공한다. 예컨대, 상기 인터페이스는 ATA 인터페이스, 직렬 ATA 인터페이스, 병렬 ATA인터페이스, 또는 SCSI인터페이스일 수 있다.
에러 정정 코드 엔진(error correction code engine)이라고도 불릴 수 있는 에러 정정 코드 생성 유닛(32)은 호스트(5)로부터 출력된 라이트 데이터로부터 에러 정정 코드를 생성하고, 상기 라이트 데이터에 상기 에러 정정 코드를 더하고 (add), 상기 라이트 데이터와 상기 에러 정정 코드를 섹터 데이터로서 불휘발성 메모리(40)의 페이지의 섹터 영역에 라이트할 수 있다.
또한, 에러 정정 코드 생성 유닛(32)은, 에러 정정 시에 언커렉터블 섹터 영역에서 실패(failure)가 발생하도록, 상기 언커렉터블 섹터 영역에 라이트될 에러 정정 코드를 손상(coppupt)시킬 수 있다.
에러 정정 코드 생성 유닛(32)은 마이크로프로세서(24)의 제어 하에 ROM(26) 또는 RAM(28)에 저장된 프로그램을 실행할 수 있도록 구현된 프로세싱 모듈로 구현될 수 있다.
불휘발성 메모리 인터페이스(34)는 마이크로프로세서(24)의 제어 하에 마이크로프로세서(24)와 불휘발성 메모리(40) 사이의 통신을 위한 인터페이스를 제공한다. 불휘발성 메모리(40)가 NAND 플래시 메모리로 구현될 때, 상기 인터페이스는 NAND 플래시 메모리 인터페이스로 구현될 수 있다.
여기서 인터페이스(interface)라 함은 데이터 통신을 위한 하드웨어, 또는 데이터 통신을 위한 펌웨어가 임베디드된 하드웨어를 의미한다.
불휘발성 메모리(40)는 복수의 플래시 메모리 셀들과 상기 복수의 플래시 메모리 셀들 중에서 적어도 하나의 메모리 셀을 액세스할 수 있는 액세스 회로(미도시)를 포함한다.
실시 예에 따라 복수의 메모리 셀들 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM (Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM 또는 ReRAM), 나노튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)를 포함할 수 있다. 상기 불휘발성 메모리 셀은 하나의 비트 또는 다수의 비트들을 저장할 수 있다.
도 2는 도 1에 도시된 시스템의 불휘발성 메모리의 어드레스 공간을 개략적으로 나타내고, 도 3은 도 2에 도시된 페이지를 개략적으로 나타낸다.
도 1부터 도 3을 참조하면, 마이크로프로세서(24)는 라이트 데이터가 프로그램될 논리 어드레스들과 함께 상기 라이트 데이터를 수신한다.
마이크로프로세서(24)는 수신된 논리 어드레스들을 불휘발성 메모리(40)에 구현된 복수의 페이지들의 물리 어드레스들로 맵핑한다.
도 2에 도시된 바와 같이, 불휘발성 메모리(40)의 메모리 셀 어레이는 n(n은 자연수)개의 블락들(50, 52, ..., 54)로 나누어진다.
n개의 블락들(50, 52, ..., 54) 각각은 한 번의 소거 동작(erase operation)에 의하여 함께 소거되는 메모리 셀들의 가장 작은 단위이다.
n개의 블락들(50, 52, ..., 54) 각각은 m개의 페이지들(51-~51-m)로 나누어진다. 여기서 m은 자연수이다.
도 3에 도시된 바와 같이, m개의 페이지들(51-~51-n) 각각은 데이터 영역 (61)과 유보 영역(63)을 포함한다. 데이터 영역(61)은 복수의 섹터 영역들(61-1~61-8)을 포함한다. 대체 영역 또는 리던던시(redundancy)이라고도 불릴 수 있는 유보 영역(63)은 복수의 섹터 영역들(61-1~61-8) 각각에 대한 언커렉터블 정보를 저장할 수 있는 언커렉커블 정보 영역(63-1)을 포함한다.
예컨대, 하나의 페이지(51-1)가 4224 바이트(bytes)로 구현되고, 하나의 페이지(51-1)에 512 바이트 짜리 라이트 데이터 8개가 저장될 때, 8개의 라이트 데이터 각각은 복수의 섹터 영역들(61-1~61-8) 각각에 저장된다.
복수의 섹터 영역들(61-1~61-8) 각각은 라이트 데이터 영역과 관리 영역을 포함한다.
각각의 라이트 데이터 영역에는 각각의 라이트 데이터(SD1~SD8)가 저장되고, 각각의 관리 영역에는 각각의 라이트 데이터(SD1~SD8)에 대한 에러 정정을 수행하기 위한 각각의 관리 정보, 예컨대 에러 정정 코드(ECC1~ECC8)가 저장된다. 각각의 에러 정정 코드(ECC1~ECC8)는 에러 정정 코드 생성 유닛(32)에 의하여 생성될 수 있다. 하나의 라이트 데이터와 하나의 관리 정보는 하나의 섹터 데이터를 구성한다.
각각의 에러 정정 코드(ECC1~ECC8)가 12 바이트일 때, 각각의 섹터 데이터는 524 바이트이므로 8개의 섹터 데이터, 즉 총 4192 바이트가 하나의 페이지(51-1)에 라이트되더라도 32 바이트의 공간이 남는다. 본 발명의 실시 예에 따른 불휘발성 메모리 시스템(10)은 상기 32 바이트의 공간, 즉 유보 영역(63)을 언커렉커블 정보 영역(63-1)으로 사용할 수 있다.
따라서 메모리 컨트롤러(20), 예컨대 정보 생성 유닛(미 도시)은 호스트(5)로부터 출력된 특정한 명령, 예컨대 불휘발성 메모리(40)의 메모리 셀 어레이를 구성하는 모든 섹터 영역들 중에서 특정 섹터 영역들을 의도적으로 언커렉터블 섹터 영역들로 지정하기 위한 명령에 따라 상기 특정 섹터 영역들 각각이 언커렉터블 섹터 영역으로 지정되었는지의 여부를 지시하는 언커렉터블 정보를 생성하고 생성된 언커렉터블 정보를 언커렉커블 정보 영역(63-1)에 라이트할 수 있다.
예컨대, 메모리 컨트롤러(20)는 호스트(5)로부터 출력된 특정한 명령에 따라 불휘발성 메모리(40)에 구현된 적어도 하나의 섹터 영역을 언커렉터블 섹터 영역으로 설정 또는 지정할 수 있다.
실시 예에 따라 정보 생성 유닛(미 도시)은 마이크로프로세서(24)의 내부에 구현될 수 있고 또한 마이크로프로세서(24)의 외부에 별도의 모듈의 형태로 구현될 수 있다. 정보 생성 유닛(미 도시)은 언커렉터블 정보를 생성할 수 있는 모듈, 예컨대 소프트웨어 또는 하드웨어로 구현될 수 있다.
예컨대, 호스트(5)가 도 3에 도시된 복수의 섹터 영역들(61-1~61-8) 중에서 첫 번째 섹터 영역(61-1)과 마지막 섹터 영역(61-8)을 언커렉터블 섹터 영역들로 지정하고자 할 때, 메모리 컨트롤러(20)는, 호스트로부터 출력된 명령, 예컨대 첫 번째 섹터 영역(61-1)과 마지막 섹터 영역(61-8)을 지시하는 논리 어드레스들을 포함하는 명령에 따라, 첫 번째 섹터 영역(61-1)과 마지막 섹터 영역(61-8) 각각에 대한 언커렉터블 정보를 생성하고 생성된 언커렉터블 정보를 불휘발성 메모리 인터페이스(34)를 통하여 언커렉커블 정보 영역(63-1)에 라이트할 수 있다.
상기 언커렉터블 정보는 첫 번째 섹터 영역(61-1)과 마지막 섹터 영역(61-8)을 포함하는 동일한 페이지 내에서 언커렉커블 정보 영역(63-1)에 저장된다. 즉, 각각의 페이지에 포함된 복수의 섹터 영역들 중에서 언커렉터블 섹터 영역에 대한 언커렉터블 정보는 상기 각각의 페이지에 함께 저장된다.
실시 예에 따라 언커렉터블 정보는 비트 맵(bit map) 형식으로 저장될 수 있고, 상기 언커렉터블 정보는 복수의 비트들로 구성될 수 있다.
예컨대, 상기 언커렉터블 정보가 2-비트로 구성될 때, 메모리 컨트롤러(20)는 언커렉터블 섹터 영역마다 2-비트를 할당할 수 있다. 표 1은 2-비트로 구현된 언커렉터블 정보의 일 예를 나타낸다.
Uncorrectable Information | Definition | Host Report | Block Map Out | Error Logging |
01 | Flagged UNC | Y | N | N |
10 | Pseudo UNC | Y | Y | Y |
00 | Real UNC | Y | Y | Y |
11 | Marked Real UNC | Y | N | Y |
여기서, Host Report는, 메모리 컨트롤러(20)가 호스트(5)로부터 특정 섹터 영역에 저장된 섹터 데이터의 리드 명령을 수신했을 때, 호스트(5)로 상기 섹터 영역이 언커렉터블 섹터 영역임을 보고하는 동작을 의미한다.
Error Logging은 메모리 컨트롤러(20)가 언커렉터블 섹터 영역을 불휘발성 메모리(40) 또는 별도의 메모리에 로깅하는 동작을 의미한다.
Block Map Out은 메모리 컨트롤러(20)가 언커렉터블 섹터 영역이 재사용되지 않도록 제거하는 동작을 의미한다.
Flagged UNC는 진성 불량 형태의 언커렉터블 섹터 영역과 똑같은 데이터 복구 시도나 에러 로깅이 적용되지 않은 섹터 영역을 의미한다.
Pseudo UNC은 진성 불량 형태의 언커렉터블 섹터 영역과 똑같은 데이터 복구 시도나 에러 로깅이 적용되는 섹터 영역을 의미한다.
Real UNC는 호스트(5)의 명령이 아닌 불휘발성 메모리 시스템(10) 내부에서 자체적으로 데이터를 옮기는 동작, 예컨대 머지(merge), 웨어 레벨링(wear-leveling), 또는 리프레쉬(refresh)를 수행하는 도중에 발생한 언커렉터블 섹터 영역을 의미한다. 이 경우 상기 데이터가 저장될 수 있는 목적지 섹터 영역에 상기 언커렉터블 섹터 영역을 Marked Real UNC로 표기함으로써 추후에 상기 목적기 섹터 영역이 Block Map Out이 되는 것을 방지할 수 있다.
상술한 바와 같이 언커렉터블 정보는 언커렉터블 섹터 영역의 종류를 구분하기 위하여 복수의 비트들로 구현될 수 있다. 표 1에는 4가지 경우가 설명되어 있으나 섹터 영역의 종류는 이에 한정되는 것은 아니다.
도 4는 도 1에 도시된 데이터 처리 시스템의 동작을 설명하기 위한 플로우차트이다.
도 1부터 도 4를 참조하면, 메모리 컨트롤러(20)는 호스트(5)로부터 출력된 명령, 예컨대 메모리 어레이의 첫 번째 블락(50)의 첫 번째 페이지(51-1)의 세 번째 섹터 영역(61-3)을 언커렉터블 섹터 영역으로 지정하기 위한 논리 어드레스들을 포함하는 명령을 수신한다(S10).
메모리 컨트롤러(20)는 상기 논리 어드레스를 첫 번째 블락(50)의 첫 번째 페이지(51-1)의 세 번째 섹터 영역(61-3)에 대한 물리 어드레스들로 맵핑한다.
메모리 컨트롤러(20)는 호스트(5)로부터 출력된 상기 명령과 상기 물리 어드레스들에 기초하여 세 번째 섹터 영역(61-3)을 언커렉터블 섹터 영역으로 지정하기 위한 언커렉터블 정보를 생성하고 생성된 정보를 불휘발성 메모리 인터페이스(34)로 전송한다(S20).
불휘발성 메모리 인터페이스(34)는 마이크로프로세서(24)의 제어 하에 상기 물리 어드레스들에 의하여 지정된 세 번째 섹터 영역(61-3)의 언커렉터블 정보 영역(63-1)에 언커렉터블 정보를 저장한다 (S30).
실시 예에 따라, 메모리 컨트롤러(20)가 세 번째 섹터 영역(61-3)을 언커렉터블 섹터 영역으로 지정할 때, 에러 정정 코드 발생 유닛(32)은 마이크로프로세서 (24)의 제어 하에 세 번째 섹터 영역(61-3)의 관리 영역에 저장될 에러 정정 코드 (ECC3)를 변경한다. 즉, 에러 정정 코드 발생 유닛(32)은 관리 영역에 저장될 에러 정정 코드(ECC3)를 손상시킨다(corrupt)(S40).
따라서, 리드 동작 시에 에러 정정 코드 발생 유닛(32)에 의하여 에러 정정 체크가 수행될 때(S50), 에러 정정 코드 발생 유닛(32)은 세 번째 섹터 영역(61-3)의 관리 영역에 저장된 손상된 에러 정정 코드(ECC3)를 이용하여 라이트 데이터 영역에 저장된 라이트 데이터(SD3)에 대한 페일(failure)을 일으킨다(S60).
상술한 바와 같이, 호스트(5)에 의하여 모든 논리 주소들에 상응하는 섹터 영역들 중에서 적어도 하나가 언커렉터블 섹터 영역으로 지정될, 불휘발성 메모리 시스템(10)은 상기 언커렉터블 섹터 영역에 대한 언커렉터블 섹터 정보를 상기 언커렉터블 섹터 영역이 존재하는 페이지 내에 함께 저장할 수 있다.
따라서 불휘발성 메모리 시스템(10)은 각 페이지의 유보 영역을 이용하여 모든 논리 주소들에 대한 언커렉터블 섹터 정보를 저장할 수 있는 효과가 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1: 데이터 처리 시스템
5: 호스트
10: 불휘발성 메모리 시스템
20: 메모리 컨트롤러
24: 마이크로프로세서
26: ROM
28: RAM
30: 호스트 인터페이스
32: 에러 정정 코드 발생 유닛
34: 불휘발성 메모리 인터페이스
40: 불휘발성 메모리
5: 호스트
10: 불휘발성 메모리 시스템
20: 메모리 컨트롤러
24: 마이크로프로세서
26: ROM
28: RAM
30: 호스트 인터페이스
32: 에러 정정 코드 발생 유닛
34: 불휘발성 메모리 인터페이스
40: 불휘발성 메모리
Claims (11)
- 섹터 데이터를 저장하기 위한 섹터 영역을 포함하는 데이터 영역과, 상기 섹터 영역에 대한 언커렉터블(uncorrectable) 섹터 정보를 저장하기 위한 언커렉터블 정보 영역을 포함하는 불휘발성 메모리; 및
호스트로부터 출력된 명령에 따라 상기 섹터 영역이 언커렉터블 섹터 영역으로 지정되었는지의 여부를 지시하는 상기 언커렉터블 섹터 정보를 생성하기 위한 정보 생성 유닛을 포함하는 컨트롤러를 포함하고,
상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 언커렉터블 섹터 정보는 상기 섹터 영역에 해당하는 언커렉터블 섹터 영역의 타입을 지시하는 정보를 더 포함하는 불휘발성 메모리 시스템. - 제1항에 있어서, 상기 데이터 영역과 상기 언커렉터블 정보 영역은 동일한 페이지 내에 존재하는 불휘발성 메모리 시스템.
- 제1항에 있어서,
상기 섹터 영역은 라이트 데이터를 저장하기 위한 라이트 데이터 영역과, 상기 라이트 데이터 영역에 저장된 상기 라이트 데이터에 대한 에러 정정을 수행하기 위한 에러 정정 코드를 저장하기 위한 관리 영역을 포함하며,
상기 컨트롤러는, 상기 정보 생성 유닛에 의하여 상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 에러 정정시 오류를 일으킬 수 있도록 상기 에러 정정 코드를 상기 관리 영역에 저장하기 위한 에러 정정 코드 발생 유닛을 포함하는 불휘발성 메모리 시스템. - 제1항에 있어서, 상기 불휘발성 메모리 시스템은 메모리 카드인 불휘발성 메모리 시스템.
- 제1항에 있어서, 상기 불휘발성 메모리 시스템은 솔리드 스테이트 드라이브인 불휘발성 메모리 시스템
- 불휘발성 메모리 시스템; 및
상기 불휘발성 메모리 시스템을 액세스할 수 있는 호스트를 포함하며,
상기 불휘발성 메모리 시스템은,
섹터 데이터를 저장하기 위한 섹터 영역을 포함하는 데이터 영역과, 상기 섹터 영역에 대한 언커렉터블 섹터 정보를 저장하기 위한 언커렉터블 정보 영역을 포함하는 불휘발성 메모리; 및
상기 호스트로부터 출력된 명령에 따라 상기 섹터 영역이 언커렉터블 섹터 영역으로 지정되었는지의 여부를 지시하는 상기 언커렉터블 섹터 정보를 생성하기 위한 정보 생성 유닛을 포함하는 컨트롤러를 포함하고,
상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 언커렉터블 섹터 정보는 상기 섹터 영역에 대한 언커렉터블 섹터 영역의 종류를 지시하는 정보를 더 포함하는 데이터 처리 시스템. - 제6항에 있어서, 상기 데이터 영역과 상기 언커렉터블 정보 영역은 동일한 페이지 내에 존재하는 데이터 처리 시스템.
- 제6항에 있어서,
상기 섹터 영역은 라이트 데이터를 저장하기 위한 라이트 데이터 영역과, 상기 라이트 데이터 영역에 저장된 상기 라이트 데이터에 대한 에러 정정을 수행하기 위한 에러 정정 코드를 저장하기 위한 관리 영역을 포함하며,
상기 컨트롤러는, 상기 정보 생성 유닛에 의하여 상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 에러 정정시 오류를 일으킬 수 있도록 상기 에러 정정 코드를 상기 관리 영역에 저장하기 위한 에러 정정 코드 발생 유닛을 포함하는 데이터 처리 시스템. - 삭제
- 컨트롤러가 호스트로부터 출력된 명령을 수신하는 단계;
상기 컨트롤러가 수신된 명령에 따라 불휘발성 메모리의 하나의 페이지 내의 섹터 영역이 언커렉터블 섹터 영역으로 지정되었는지의 여부를 지시하는 언커렉터블 섹터 정보를 생성하는 단계; 및
상기 컨트롤러가 생성된 언커렉터블 섹터 정보를 상기 페이지 내의 언커렉터블 정보 영역에 저장하는 단계를 포함하고,
상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 언커렉터블 섹터 정보는 상기 섹터 영역에 대한 언커렉터블 섹터 영역의 종류를 지시하는 정보를 더 포함하는 불휘발성 메모리 시스템의 동작 방법. - 제10항에 있어서, 상기 불휘발성 메모리 시스템의 동작 방법은,
상기 섹터 영역이 상기 언커렉터블 섹터 영역으로 지정될 때, 상기 컨트롤러는 상기 섹터 영역에 저장된 라이트 데이터에 대한 에러 정정시 페일을 일으킬 수 있도록 에러 정정 코드 발생 유닛을 이용하여 에러 정정 코드를 상기 라이트 데이터에 부가하는 단계를 더 포함하는 불휘발성 메모리 시스템의 동작 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100013183A KR101648531B1 (ko) | 2010-02-12 | 2010-02-12 | 불휘발성 메모리 시스템과 이의 동작 방법 |
US13/025,463 US8612836B2 (en) | 2010-02-12 | 2011-02-11 | Non-volatile memory device with uncorrectable information region and operation method using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100013183A KR101648531B1 (ko) | 2010-02-12 | 2010-02-12 | 불휘발성 메모리 시스템과 이의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110093259A KR20110093259A (ko) | 2011-08-18 |
KR101648531B1 true KR101648531B1 (ko) | 2016-08-17 |
Family
ID=44370484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100013183A KR101648531B1 (ko) | 2010-02-12 | 2010-02-12 | 불휘발성 메모리 시스템과 이의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8612836B2 (ko) |
KR (1) | KR101648531B1 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8902653B2 (en) * | 2011-08-12 | 2014-12-02 | Micron Technology, Inc. | Memory devices and configuration methods for a memory device |
KR101417827B1 (ko) * | 2011-10-24 | 2014-07-11 | 한양대학교 산학협력단 | 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법 |
KR20140027859A (ko) | 2012-08-27 | 2014-03-07 | 삼성전자주식회사 | 호스트 장치 및 이를 포함하는 시스템 |
US9768808B2 (en) * | 2015-04-08 | 2017-09-19 | Sandisk Technologies Llc | Method for modifying device-specific variable error correction settings |
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 |
US10013179B2 (en) | 2015-12-03 | 2018-07-03 | Sandisk Technologies Llc | Reading logical groups of data from physical locations in memory using headers |
US9830084B2 (en) | 2015-12-03 | 2017-11-28 | Sandisk Technologies Llc | Writing logical groups of data to physical locations in memory using headers |
TWI594126B (zh) * | 2016-07-05 | 2017-08-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存方法 |
US10095417B1 (en) | 2016-12-13 | 2018-10-09 | EMC IP Holding Company LLC | Method and system for improving flash storage read performance in partially programmed blocks |
US10289550B1 (en) | 2016-12-30 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for dynamic write-back cache sizing in solid state memory storage |
US11069418B1 (en) * | 2016-12-30 | 2021-07-20 | EMC IP Holding Company LLC | Method and system for offline program/erase count estimation |
US10338983B2 (en) | 2016-12-30 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for online program/erase count estimation |
US10403366B1 (en) | 2017-04-28 | 2019-09-03 | EMC IP Holding Company LLC | Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors |
US10290331B1 (en) | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for modulating read operations to support error correction in solid state memory |
US11500719B1 (en) * | 2020-03-31 | 2022-11-15 | Amazon Technologies, Inc. | Reliability improvements for memory technologies |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206751A1 (en) * | 2005-03-10 | 2006-09-14 | Toshiyuki Honda | Nonvolatile memory system, nonvolatile memory device, data read method, and data read program |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3430193B2 (ja) * | 1997-01-20 | 2003-07-28 | 株式会社日立製作所 | ディジタル信号再生装置及びディジタル信号再生方法 |
JP3565687B2 (ja) * | 1997-08-06 | 2004-09-15 | 沖電気工業株式会社 | 半導体記憶装置およびその制御方法 |
JP2005056394A (ja) * | 2003-07-18 | 2005-03-03 | Toshiba Corp | 記憶装置及びメモリカード |
US7012835B2 (en) * | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US7594135B2 (en) * | 2003-12-31 | 2009-09-22 | Sandisk Corporation | Flash memory system startup operation |
US7350044B2 (en) * | 2004-01-30 | 2008-03-25 | Micron Technology, Inc. | Data move method and apparatus |
JP4950886B2 (ja) * | 2005-07-15 | 2012-06-13 | パナソニック株式会社 | 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 |
US8291295B2 (en) * | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US8621138B2 (en) * | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
US8243570B2 (en) * | 2008-11-13 | 2012-08-14 | Nbcuniversal Media, Llc | System and method for combining pre-mastered errors with marks or printed spots on optical media |
US8447918B2 (en) * | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
TWI404071B (zh) * | 2009-06-23 | 2013-08-01 | Phison Electronics Corp | 能識別快閃記憶體中錯誤資料的控制電路及儲存系統與方法 |
US8312349B2 (en) * | 2009-10-27 | 2012-11-13 | Micron Technology, Inc. | Error detection/correction based memory management |
-
2010
- 2010-02-12 KR KR1020100013183A patent/KR101648531B1/ko active IP Right Grant
-
2011
- 2011-02-11 US US13/025,463 patent/US8612836B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206751A1 (en) * | 2005-03-10 | 2006-09-14 | Toshiyuki Honda | Nonvolatile memory system, nonvolatile memory device, data read method, and data read program |
Also Published As
Publication number | Publication date |
---|---|
US8612836B2 (en) | 2013-12-17 |
US20110202818A1 (en) | 2011-08-18 |
KR20110093259A (ko) | 2011-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101648531B1 (ko) | 불휘발성 메모리 시스템과 이의 동작 방법 | |
CN108062258B (zh) | 用于错误恢复的循环交错的xor阵列 | |
CN107797882B (zh) | 存储器系统及其操作方法 | |
TWI527037B (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN109947358B (zh) | 存储器系统及其操作方法 | |
US9201785B2 (en) | Data writing method, memory controller and memory storage apparatus | |
US8555143B2 (en) | Flash memory controller and the method thereof | |
CN107957959B (zh) | 具有文件级安全擦除的存储器系统及其操作方法 | |
KR101739878B1 (ko) | 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템 | |
CN107346214B (zh) | 存储器系统及其操作方法 | |
TWI528174B (zh) | 基於可用記憶體空間選擇冗餘儲存組態 | |
CN110347330B (zh) | 存储器系统及其操作方法 | |
CN110716883B (zh) | 存储器系统及其操作方法 | |
CN110096385B (zh) | 存储器系统及其操作方法 | |
US9177656B2 (en) | Data writing method, memory storage device and memory controlling circuit unit | |
US9141476B2 (en) | Method of storing system data, and memory controller and memory storage apparatus using the same | |
US20160070507A1 (en) | Memory system and method of controlling memory device | |
CN108022611A (zh) | 存储系统及其操作方法 | |
US9141530B2 (en) | Data writing method, memory controller and memory storage device | |
US9720609B1 (en) | Data protecting method, memory control circuit unit and memory storage device | |
US10503433B2 (en) | Memory management method, memory control circuit unit and memory storage device | |
CN108389602B (zh) | 存储器系统及其操作方法 | |
US20150161042A1 (en) | Memory management method, memory controlling circuit unit, and memory storage device | |
TWI486765B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190731 Year of fee payment: 4 |