KR101560077B1 - 데이터 무결성을 제공하기 위한 방법 및 장치 - Google Patents
데이터 무결성을 제공하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR101560077B1 KR101560077B1 KR1020137034157A KR20137034157A KR101560077B1 KR 101560077 B1 KR101560077 B1 KR 101560077B1 KR 1020137034157 A KR1020137034157 A KR 1020137034157A KR 20137034157 A KR20137034157 A KR 20137034157A KR 101560077 B1 KR101560077 B1 KR 101560077B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- metadata
- sectors
- predetermined number
- integrity
- Prior art date
Links
Images
Classifications
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
- G06F11/167—Error detection by comparing the memory output
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 데이터 무결성을 제공하기 위한 방법 및 장치(예컨대, 컴퓨팅 시스템, 메모리 시스템, 컨트롤러 등)를 포함한다. 하나 이상의 방법은, 예컨대: 소정 수의 메모리 디바이스에 쓰일 소정 수의 데이터 섹터를 수신하는 것; 특정 포맷을 갖는 제1 메타데이터로서 소정 수의 섹터에 대응하고 제1 무결성 데이터를 포함하는 제1 메타데이터를 소정 수의 섹터에 첨부하는 것; 소정 수의 섹터 중 적어도 하나에 대응하는 제2 무결성 데이터로서 제2 메타데이터에서 제공될 제2 무결성 데이터를 발생시키는 것(제2 메타데이터는 제2 포맷을 가짐); 및 소정 수의 섹터 중 적어도 하나 및 제2 무결성 데이터에 대응하는 에러 데이터를 포함하는 제3 무결성 데이터로서 제2 메타데이터에서 제공될 제3 무결성 데이터를 발생시키는 것을 포함할 수 있다.
Description
본 발명은 일반적으로는 반도체 메모리 디바이스, 방법 및 시스템에 관한 것으로, 더 구체적으로는, 데이터 무결성(data integrity)을 제공하기 위한 방법 및 장치에 관한 것이다.
전형적으로 메모리 디바이스는 컴퓨터 또는 다른 전자 디바이스에서 내부, 반도체, 집적 회로로 제공된다. 휘발성 및 비-휘발성 메모리를 포함하는 여러 유형의 메모리가 많이 있다. 휘발성 메모리는 그 데이터를 유지하기 위해 전력을 요구할 수 있고, 여럿 중에서도, 램(RAM), 동적 램(DRAM) 및 동기식 동적 램(SDRAM)을 포함한다. 비-휘발성 메모리는 저장된 데이터를 전력이 공급되지 않을 때 보유함으로써 영속적 데이터를 제공할 수 있고, 여럿 중에서도, NAND 플래시 메모리, NOR 플래시 메모리, 롬(ROM), 전기적으로 소거 및 프로그래밍 가능한 ROM(EEPROM), 소거 및 프로그래밍 가능한 ROM(EPROM), 및 위상 변화 램(PCRAM), 저항성 램(RRAM), 및 자기저항성 램(MRAM)과 같은 저항 가변 메모리를 포함할 수 있다.
메모리 디바이스는 솔리드 스테이트 드라이브(solid state drive: SSD)와 같이 메모리 시스템의 저장 볼륨을 형성하기 위해 함께 조합될 수 있다. 솔리드 스테이트 드라이브는, 다양한 여러 유형의 비-휘발성 및 휘발성 메모리 중에서도, 비-휘발성 메모리, 예컨대, NAND 플래시 메모리 및 NOR 플래시 메모리를 포함할 수 있고/있거나 휘발성 메모리, 예컨대, DRAM 및 SRAM을 포함할 수 있다. 데이터를 질화물층에서의 차지 트랩에 저장하는 반도체-산화물-질화물-산화물-반도체 및 금속-산화물-질화물-산화물-반도체 커패시터 구조를 사용하는 및 차지 트랩 플래시(charge trap flash: CTF) 디바이스 및 부동 게이트 플래시 디바이스를 포함하는 플래시 메모리 디바이스는 광범위한 전자 애플리케이션에 대해 비-휘발성 메모리로서 이용될 수 있다. 전형적으로 플래시 메모리 디바이스는 높은 메모리 밀도, 높은 신뢰도 및 낮은 전력 소모를 감안하는 단일-트랜지스터 메모리 셀을 사용한다.
솔리드 스테이트 드라이브가 성능, 사이즈, 중량, 견고성, 동작 온도 범위 및 전력 소모의 관점에서 하드 드라이브에 비해 이점을 가질 수 있으므로, SSD는 컴퓨터용 주 저장 디바이스로서 하드 디스크 드라이브를 대신하도록 사용될 수 있다. 예컨대, SSD는 그들의 이동 파트 결여에 기인해서 자기 디스크 드라이브에 비교될 때 우월한 성능을 가질 수 있는데, 자기 디스크 드라이브와 연관된 시크 타임, 레이턴시 및 다른 전자-기계 지연을 회피할 수 있다. SSD 제조자는 내부 배터리 서플라이를 사용하지 않을 수 있어서 드라이브가 더 다용도이고 콤팩트일 수 있게 하는 플래시 SSD를 만들어내기 위해 비-휘발성 플래시 메모리를 사용할 수 있다.
SSD는 소정 수의 메모리 디바이스, 예컨대, 소정 수의 메모리 칩을 포함할 수 있다. 메모리 디바이스는 소정 수의 다이 및/또는 논리적 유닛(logical unit: LUN)을 포함할 수 있다. 각각의 다이는 소정 수의 메모리 어레이 및 그 위의 주변 회로를 포함할 수 있고, 메모리 어레이는 소정 수의 물리적 페이지로 편성된 소정 수의 메모리 셀 블록을 포함할 수 있다.
SSD는 메모리 디바이스와 호스트 사이에서 데이터(예컨대, 사용자 데이터 및 에러 데이터 및 어드레스 데이터와 같은 연관된 무결성 데이터 등)를 전송하기 위해 읽기 및 쓰기 동작과 같은 메모리 동작과 연관하여 호스트로부터 커맨드를 수신할 수 있다. 예컨대 데이터가 전송 동안 손상되지 않았다는 신뢰를 제공하기 위해 그러한 동작과 연관되어 메모리 디바이스와 호스트 사이에서 전송되는 데이터의 단 대 단 무결성을 제공하는 것이 유익할 수 있다.
도 1은 본 발명의 하나 이상의 실시예에 따라 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템의 기능적 블록 선도;
도 2는 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메모리 컨트롤러의 기능성 블록 선도;
도 3은 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메타데이터 포맷의 예시도;
도 4는 본 발명의 하나 이상의 실시예와 연관된 전송되는 데이터의 무결성을 제공하는 것과 연관된 메타데이터 포맷의 예시도;
도 5는 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메타데이터 포맷의 예시도;
도 6은 본 발명의 하나 이상의 실시예에 따라 메모리 컨트롤러의 기능적 블록 선도.
도 2는 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메모리 컨트롤러의 기능성 블록 선도;
도 3은 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메타데이터 포맷의 예시도;
도 4는 본 발명의 하나 이상의 실시예와 연관된 전송되는 데이터의 무결성을 제공하는 것과 연관된 메타데이터 포맷의 예시도;
도 5는 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메타데이터 포맷의 예시도;
도 6은 본 발명의 하나 이상의 실시예에 따라 메모리 컨트롤러의 기능적 블록 선도.
상세한 설명
본 발명은 데이터 무결성을 제공하기 위한 방법 및 장치(예컨대, 컴퓨팅 시스템, 메모리 시스템, 컨트롤러 등)를 포함한다. 하나 이상의 방법 실시예는, 예컨대: 소정 수의 메모리 디바이스(예컨대, 단일 메모리 디바이스)에 쓰일(to be written) 소정 수의 데이터 섹터를 수신하는 것; 특정 포맷을 갖는 제1 메타데이터로서 소정 수의 섹터에 대응하고 제1 무결성 데이터를 포함하는 제1 메타데이터를 소정 수의 섹터에 첨부하는 것; 소정 수의 섹터 중 적어도 하나에 대응하는 제2 무결성 데이터로서 제2 메타데이터에서 제공될 제2 무결성 데이터를 발생시키는 것(제2 메타데이터는 제2 포맷을 가짐); 및 소정 수의 섹터 중 적어도 하나 및 제2 무결성 데이터에 대응하는 에러 데이터를 포함하는 제3 무결성 데이터로서 제2 메타데이터에서 제공될 제3 무결성 데이터를 발생시키는 것을 포함할 수 있다.
본 발명의 하나 이상의 실시예는, 예컨대, 메모리 시스템 내 단 대 단 데이터 무결성을 제공하기 위한 유연한 아키텍처를 제공한다. 예를 들어, 하나 이상의 실시예는, 여러 이득 중에서도, 서로 다른 유형의 메모리 디바이스와 연관된 이용가능한 메타데이터 사이즈 및 또는 서로 다른 페이지 사이즈에 적응할 능력을 제공할 수 있는 메타데이터 포맷 변환을 수행할 수 있다. 하나 이상의 실시예는 본 명세서에서 설명되는 실시예에 따라 데이터 무결성을 유지하면서 에러 복구 동작을 수행할 수 있는 컨트롤러를 포함하여, 여러 이득 중에서도, 행해지는 디바이스 제조 테스트(예컨대, 실제 소비자에게 제공되기 이전에 수행된 예비-출하를 테스트)의 양을 감축시키는 것과 같은 이득을 제공할 수 있다.
본 명세서의 이하의 상세한 설명에 있어서는, 본 발명의 일부를 형성하고 본 발명의 다수의 실시예가 어떻게 실시될 수 있는지 예로써 도시되어 있는 수반 도면을 참조한다. 이들 실시예는 당업자가 본 발명의 실시예를 실시가능하게 하도록 충분히 상세하게 설명되고, 다른 실시예가 이용될 수도 있고 본 발명의 범위로부터 벗어남이 없이 프로세스, 전기적 및/또는 구조적 변경이 이루어질 수도 있다고 이해된다. 본 명세서에서 사용되는 바와 같이, 지시자 "N"은, 특히 도면에서의 참조 숫자에 관하여, 그렇게 지시된 다수의 특정 특징이 본 명세서의 하나 이상의 실시예로 포함될 수 있음을 나타낸다. 본 명세서에서 사용되는 바와 같이, "소정 수의" 무엇은 하나 이상의 그러한 물건을 지칭할 수 있다(예컨대, 소정 수의 메모리 디바이스는 하나 이상의 메모리 디바이스를 지칭할 수 있다).
본 명세서에서 도면은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자가 도면에서의 엘리먼트 또는 컴포넌트를 식별하는 번호 매김 관례를 따른다. 다른 도면들간 유사한 엘리먼트 또는 컴포넌트는 유사한 숫자의 사용에 의해 식별될 수 있다. 예컨대, (108)은 도 1에서 엘리먼트 "08"을 참조할 수 있고, 유사한 엘리먼트가 도 2에서는 (208)로 참조될 수 있다. 인식될 바와 같이, 본 명세서에서 다양한 실시예에 도시된 엘리먼트는 본 발명의 다수의 부가적 실시예를 제공하도록 부가, 교환 및/또는 제거될 수 있다. 이에 더하여, 인식될 바와 같이, 도면에서 제공된 엘리먼트의 비율 및 상대적 척도는 본 발명의 실시예를 예시하려는 의도이고, 한정의 의미로 받아들이지 않아야 한다.
도 1은 본 발명의 하나 이상의 실시예에 따라 적어도 하나의 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100)의 기능적 블록 선도이다. 메모리 시스템(104)은 예컨대 솔리드 스테이트 드라이브(SSD)일 수 있고, 물리적 호스트 인터페이스(106), 메모리 시스템 컨트롤러(108)(예컨대, 프로세서 및/또는 다른 제어 회로), 및 메모리 시스템(104)에 저장 볼륨을 제공하는 하나 이상의 메모리 디바이스(110-1, ..., 110-N)(예컨대, NAND 플래시 디바이스와 같은 솔리드 스테이트 메모리 디바이스)를 포함할 수 있다.
도 1에 예시된 바와 같이, 물리적 호스트 인터페이스(106)는 컨트롤러(108)에 결합되어 있고 메모리 시스템(104)과 호스트(102) 사이에서 데이터를 통신하는데 사용될 수 있다. 인터페이스(106)는 표준화된 인터페이스의 형태일 수 있다. 예컨대, 메모리 시스템(104)이 컴퓨팅 시스템(100)에서의 데이터 저장에 사용될 때, 물리적 호스트 인터페이스(106)는, 여러 커넥터 및 인터페이스 중에서도, 직렬 SATA(serial advanced technology attachment: SATA), PCIe 익스프레스(peripheral component interconnect express: PCIe) 또는 범용 직렬 버스(universal serial bus: USB)일 수 있다. 그렇지만, 일반적으로 물리적 호스트 인터페이스(106)는 물리적 호스트 인터페이스(106)에 대해 호환가능한 수용체를 갖는 호스트(102)와 메모리 시스템(104) 사이에서 제어, 어드레스, 데이터 및 다른 신호를 건네기 위한 인터페이스를 제공할 수 있다.
호스트(102)는, 다양한 여러 유형의 호스트 중에서도, 퍼스널 랩톱 컴퓨터, 데스크톱 컴퓨터, 디지털 카메라, 모바일 전화 또는 메모리 카드 리더와 같은 호스트 시스템일 수 있다. 호스트(102)는 시스템 마더보드 및/또는 백플레인을 포함할 수 있고 메모리 액세스 디바이스(예컨대, 소정 수의 프로세서)를 포함할 수 있다.
컨트롤러(108)는 여러 동작 중에서도 데이터 읽기, 쓰기 및 지우기를 위해 메모리 디바이스(110-1, ..., 110-N)와 통신할 수 있다. 컨트롤러(108)는, 예컨대, 소정 수의 컴포넌트(예컨대, 하나 이상의 집적 회로)를 포함할 수 있는 펌웨어 및/또는 회로일 수 있다. 예컨대, 컨트롤러(108)는 메모리 디바이스(110-1, ..., 110-N)를 가로지르는 액세스를 제어하기 위한 제어 회로 및 호스트(102)와 메모리 시스템(104) 사이에 번역 층을 제공하기 위한 회로를 포함할 수 있다. 그리하여, 메모리 컨트롤러(108)는 적절한 시각에 적절한 I/O 커넥션에서 적절한 신호를 수신하도록 메모리 디바이스(110-1, ..., 110-N)의 I/O 커넥션(도 1에서는 도시하지 않음)을 선택적으로 결합할 수 있다. 유사하게, 호스트(102)와 메모리 시스템(104) 사이의 통신 프로토콜은 메모리 디바이스(110-1, ..., 110-N)로의 액세스에 사용되는 것과는 다를 수 있다. 그 후, 컨트롤러(108)는 소정 수의 메모리 디바이스(110-1, ..., 110-N)로의 소망의 액세스를 달성하기 위해 호스트(102)로부터 수신된 커맨드를 적절한 커맨드로 번역할 수 있다.
메모리 디바이스(110-1, ..., 110-N)는 메모리 셀(예컨대, 비-휘발성 메모리 셀)의 하나 이상의 어레이를 포함할 수 있다. 그 어레이는 예컨대 NAND 아키텍처를 갖는 플래시 어레이일 수 있다. 그렇지만, 실시예는 메모리 어레이 또는 어레이 아키텍처의 특정 유형에 한정되는 것은 아니다.
메모리 디바이스(110-1, ..., 110-N)는 예컨대 소정 수의 물리적 페이지를 포함하는 소정 수의 블록으로 그룹화될 수 있는 소정 수의 메모리 셀을 포함할 수 있다. 소정 수의 블록은 메모리 셀의 플레인에 포함될 수 있고 어레이는 소정 수의 플레인을 포함할 수 있다. 일례로서, 메모리 디바이스는 페이지당 4320 데이터 바이트(B), 블록당 128 페이지, 플레인당 2048 블록, 및 디바이스당 16 플레인을 포함할 수 있다.
동작에 있어서, 데이터는 메모리 시스템의 메모리 디바이스(예컨대, 시스템(104)의 메모리 디바이스(110-1, ..., 110-N))에 쓰이고/쓰이거나 그로부터 읽혀질 수 있다. 그와 같이, 데이터 페이지는 메모리 시스템의 데이터 전송 사이즈라고 지칭될 수 있다. 데이터는 섹터 기준으로 호스트(예컨대, 호스트(102)) 내/외로 전송될 수 있다. 그와 같이, 데이터 섹터는 호스트의 데이터 전송 사이즈라고 지칭될 수 있다.
데이터 페이지는 다수 바이트의 사용자 데이터(예컨대, 소정 수의 데이터 섹터를 포함하는 데이터 페이로드)와 더불어 그에 대응하는 메타데이터도 포함할 수 있지만, 데이터 페이지의 사이즈는 흔히 사용자 데이터를 저장하는데 사용된 바이트 수만을 가리킬 수 있다. 일례로서, 4KB의 페이지 사이즈를 갖는 데이터 페이지는 사용자 데이터를 저장하는데 사용된 4KB(예컨대, 512B의 섹터 사이즈를 상정하면 8개의 섹터)와 더불어 사용자 데이터에 대응하는 메타데이터를 저장하는데 사용된 소정 수의 바이트(예컨대, 32B, 54B, 224B 등)도 포함할 수 있다. 메타데이터는, 사용자 데이터에 대응하는 여러 메타데이터 중에서도, 어드레스 데이터(예컨대, 논리적 어드레스 데이터) 및/또는 에러 데이터(예컨대, 에러 검출 및/또는 정정 코드 데이터)와 같은 무결성 데이터를 포함할 수 있다.
서로 다른 유형의 메모리 디바이스(예컨대, 디바이스(110-1, ..., 110-N))는 서로 다른 페이지 사이즈를 제공할 수 있고/있거나 저장된 페이지와 연관되어 이용가능한 서로 다른 양의 메타데이터 바이트를 가질 수 있다. 또한, 서로 다른 메모리 디바이스 유형은 서로 다른 비트 에러 레이트를 가질 수 있는데, 데이터 페이지의 무결성을 보장하는데 필요한 메타데이터의 서로 다른 양을 초래할 수 있다(예컨대, 더 높은 비트 에러 레이트를 갖는 메모리 디바이스는 더 낮은 비트 에러 레이트를 갖는 메모리 디바이스보다 더 많은 바이트의 에러 정정 코드 데이터를 요구할 수 있다). 일례로서, 멀티-레벨 셀(multi-level cell: MLC) NAND 플래시 디바이스는 단일 레벨 셀(single level cell: SLC) NAND 플래시 디바이스보다 더 높은 비트 에러 레이트를 가질 수 있다. 그와 같이, MLC 디바이스는 SLC 디바이스보다 에러 데이터에 대해 더 많은 메타데이터 바이트를 사용할 수 있다. 일부 경우에 있어서, 데이터 페이지의 소망 무결성을 제공하는데 필요한 메타데이터의 양은 메모리 디바이스에 의해 제공되는 메타데이터 바이트를 초과할 수 있다. 즉, 메타데이터 바이트의 이용가능한 양은 페이지에 대응하는 섹터(예컨대, 사용자 데이터)의 충분한 단 대 단 데이터 무결성을 제공하는데 바람직한 양보다 더 적을 수 있다.
도 2는 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메모리 컨트롤러(208)의 기능적 블록 선도이다. 컨트롤러(208)는 도 1에 예시된 메모리 시스템(104)과 같은 메모리 시스템의 컴포넌트일 수 있다. 당업자는 도 2에 예시된 것들 이상으로 부가적 회로 및 컴포넌트가 제공될 수 있음과 도 2의 상세는 예시를 용이하게 하기 위해 감축되었음을 인식할 것이다. 실시예들은 도 2에 도시된 예에 한정되는 것은 아니다. 예를 들어, 컨트롤러(208)의 예시된 컴포넌트 중 하나 이상은 단일 컴포넌트로 통합될 수 있다. 또한, 예시된 컴포넌트 중 하나 이상은 본 발명의 다수의 실시예에 있어서 옵션일 수 있다.
도 2에 도시된 바와 같이, 메모리 컨트롤러(208)는 호스트 인터페이스(206)와 소정 수의 메모리 디바이스(210) 사이에서 데이터를 전송하는데 사용되는 제어 회로를 포함한다. 메모리 디바이스(210)는 도 1에 예시된 메모리 디바이스(110-1, ..., 110-N)와 같은 메모리 디바이스일 수 있다.
다수의 실시예에 있어서, 제어 회로는 호스트 인터페이스(206)와 소정 수의 메모리 디바이스(210) 사이에서 전송되는 데이터의 무결성을 제공하기 위해 메타데이터 포맷을 제1 포맷과 제2 포맷 사이에서 조절(예컨대, 변경)하도록 구성된다. 일례로서, 제1 메타데이터 포맷은 섹터당 기준으로 무결성 데이터를 포함할 수 있고 제2 메타데이터 포맷은 멀티-섹터 기준으로 무결성 데이터를 포함할 수 있다. 아래에 더 설명되는 바와 같이, 전송되는 데이터의 무결성을 제공하는 것은: (예컨대, 호스트로부터의 쓰기 요청과 연관하여) 호스트로부터 수신된 소정 수의 섹터(예컨대, 도 3에 도시된 데이터 필드(348)에 위치하는 섹터)에 대응하고 제1 포맷(예컨대, 도 3에 도시된 메타데이터(341))을 갖는 메타데이터의 제1 무결성 데이터(예컨대, 에러 데이터 및/또는 어드레스 데이터)의 체크를 수행하는 것; 소정 수의 섹터 중 적어도 하나에 대응하는 제2 무결성 데이터로서 제2 메타데이터(예컨대, 도 4에 도시된 메타데이터(447) 및/또는 도 5에 도시된 메타데이터(547-0/547-1))의 제2 무결성 데이터(예컨대, 도 4에 도시된 무결성 데이터(454-0/454-1) 및/또는 도 5에 도시된 (552/554))를 발생시키는 것; 및 제2 메타데이터의 제3 무결성 데이터(예컨대, 도 4에 도시된 무결성 데이터(458) 및/또는 도 5에 도시된 (558-0/558-1))를 발생시키는 것을 포함할 수 있다. 제3 무결성 데이터는 소정 수의 섹터 중 적어도 하나뿐만 아니라 제2 무결성 데이터에 대응하는 에러 데이터를 포함한다.
컨트롤러(208)는 페이지로서 (예컨대, 호스트로부터의 쓰기 요청에 응답하여) 호스트로부터 수신된 소정 수의 데이터(예컨대, 사용자 데이터) 섹터를 쓸 수 있다. 다양한 경우에 있어서, 컨트롤러(208)에 의해 수신된 섹터의 수는 소정 수의 메모리 디바이스(210)의 페이지 사이즈에 대응하는 섹터의 수보다 더 적을 수 있다. 그러한 경우에 있어서, 컨트롤러(208)는 부분적 페이지 쓰기 동작을 수행할 수 있는데, 예컨대, (예컨대, 읽혀진 페이지 섹터를 호스트로부터 수신된 섹터로 대체함으로써) 메모리 디바이스(210)로부터 읽혀진 페이지 섹터와 호스트로부터 수신된 섹터를 병합함으로써 병합된 페이지를 형성하는 것, 및 그 후 메모리 디바이스(210)에 그 병합된 페이지를 쓰는 것을 포함할 수 있다. 유사하게, 컨트롤러(208)는 (예컨대, 메모리 디바이스(210)의 페이지 사이즈에 대응하는 섹터의 수보다 더 적은 소정 수의 섹터에 대한 호스트 읽기 요청에 응답하여) 부분적 페이지 읽기 동작을 수행할 수 있다. 부분적 페이지 읽기 동작은 메모리 디바이스(210)로부터 데이터 페이지를 읽는 것 및 요청된 그들 데이터 섹터만을 호스트에 제공하는 것을 포함할 수 있다. 아래에 더 설명되는 바와 같이, 본 발명의 실시예는 그러한 부분적 페이지 쓰기 및/또는 읽기 동작과 연관하여 전송되는 데이터의 무결성을 제공할 수 있다.
도 2에 예시된 바와 같이, 컨트롤러(208)는 데이터 무결성(DI) 삽입 컴포넌트(220)를 포함할 수 있다. 컴포넌트(220)는 특정 메타데이터 포맷을 갖는 메타데이터를 호스트로부터 수신된 데이터 섹터에 첨부할 수 있다. 특정 메타데이터 포맷은 호스트 포맷이라고 지칭될 수 있다. 일례의 호스트 메타데이터 포맷이 도 3에 예시되어 있는데, (섹터 필드(348)라고 지칭될 수 있는) 데이터 필드(348)에 위치하고 그에 첨부된 메타데이터(341)를 갖는 사용자 데이터 섹터를 예시하고 있다. 도 3에 도시된 예에 있어서, 섹터 필드(348)의 사이즈는 512B(예컨대, 섹터 사이즈는 512B)이고 메타데이터(341)는 섹터 필드(348)에 대응하는 섹터와 연관된 무결성 데이터를 제공하는 서브필드(342, 344, 346)를 포함하는 8B 데이터 무결성 필드(DIF)이다. 실시예들은 이 예에 한정되는 것은 아니다. 예를 들어, 섹터 필드(348)의 사이즈는 512B보다 더 크거나 더 작을 수 있고 메타데이터 필드(341)의 사이즈는 8B보다 더 크거나 더 작을 수 있다. 일례로서, 호스트 섹터 사이즈는 데이터 필드(348)의 사이즈가 4096 바이트이게 되도록 4096B일 수 있고 메타데이터 필드(341)의 사이즈는 128B일 수 있다(예컨대, 각각의 호스트 섹터는 그와 연관된 128B의 메타데이터를 가질 수 있다). 예시된 예에 있어서, 필드(346)는 섹터 필드(348)에 대응하는 사용자 데이터 섹터에 대응하는 에러 데이터를 포함한다. 이 예에 있어서, 필드(346)의 에러 데이터는 섹터 필드(348)에 대응하는 섹터에 대응하는 2B 주기적 덧붙임 검사(CRC)이다. 필드(344)는 무결성 데이터를 더 포함할 수 있는 2B 애플리케이션 태그이고, 필드(342)는 섹터 필드(348)에 대응하는 섹터와 연관된 어드레스 데이터를 포함할 수 있는 4B 참조 필드이다.
다수의 실시예에 있어서, 메타데이터(341)는 호스트로부터 수신된 사용자 데이터의 각각의 섹터에 첨부된다(예컨대, 메타데이터(341)의 무결성 데이터는 섹터당 기준이다). 일례로서, 컴포넌트(220)는 섹터당 기준으로 각각의 섹터에 대한 에러 데이터(346)를 계산할 수 있다. 소정 수의 섹터의 각각 및 대응하는 메타데이터(341)(예컨대, 소정 수의 데이터 그룹(340)의 각각)는 (예컨대, 쓰기 동작과 연관되어 데이터 버퍼(222)를 통해) 컨트롤러(208)의 무결성 컴포넌트(224)에 전송될 수 있다. 다수의 실시예에 있어서, 각각의 데이터 그룹(340)과 연관된 메타데이터(341)는 호스트 인터페이스(206)로부터 비롯될 수 있고 컴포넌트(220)는 도 4에 예시된 것과 같은 부가적 무결성 데이터(예컨대, 452, 454-0, 454-1 등)를 삽입하도록 사용될 수 있다. 다수의 실시예에 있어서, 메타데이터(341)의 필드(342, 344, 346)와 연관된 데이터는 호스트로부터 수신된 데이터 섹터에 (예컨대, 컴포넌트(220)를 사용하여) 첨부될 수 있거나 또는 메타데이터(341)는 컨트롤러(208)에 의해 수신되기 이전에 데이터 섹터에 첨부될 수 있다.
도 2에 도시된 예에 있어서, 컨트롤러(208)는 (예컨대, 쓰기 동작이 부분적 페이지 쓰기 동작이게 되도록 섹터의 수가 전 페이지에 대응하는 섹터의 수보다 더 적으면) 무결성 컴포넌트(224)에 전송되기 이전에 데이터 그룹(340)이 전송될 수 있는 병합 컴포넌트(228)를 포함한다. 도 2에 도시된 예에 있어서, 메모리 디바이스(210)와 연관된 페이지 사이즈는 4KB(예컨대, 8개의 512B 섹터)이다.
병합 컴포넌트(228)는, 부분적 페이지 쓰기 동작과 연관하여, 소정 수의 메모리 디바이스(210)로부터의 데이터 페이지에 대응하는 제2 수의 섹터(예컨대, 8개의 섹터)를 수신할 수 있다. 제2 수의 섹터는 제2 포맷(예컨대, 메모리 디바이스(210)와 연관된 포맷으로서 본 명세서에서는 메모리 메타데이터 포맷 또는 조절된 포맷이라고 지칭될 수 있음)에 따라 그에 대응하는 메타데이터를 포함할 수 있다. 예시의 조절된 포맷은 도 4 및 도 5와 연관하여 아래에 더 설명된다. 다수의 실시예에 있어서, 병합 컴포넌트(228)는 메모리 디바이스(210)로부터 수신된 데이터 페이지에 대응하는 제2 수의 섹터 중 적어도 하나를 호스트로부터 수신된 제1 수의 섹터(예컨대, 섹터 필드(348)에 대응하는 섹터) 중 적어도 하나로 대체함으로써 병합된 페이지를 형성할 수 있다. 병합 컴포넌트(228)는 또한 병합된 페이지의 섹터를 무결성 컴포넌트(224)에 제공하기 이전에 그 병합된 페이지의 섹터와 연관된 메타데이터 포맷을 조절된 포맷으로부터 호스트 포맷으로 변경할 수 있다. 다수의 실시예에 있어서, 병합 컴포넌트(228)는 데이터 페이지에 대응하는 제2 수의 섹터 중 적어도 하나를 섹터 필드(348)에 대응하는 제1 수의 섹터 중 적어도 하나로 대체하기 이전에 제2 수의 섹터에 대응하는 메타데이터의 에러 데이터의 체크(예컨대, CRC 체크)를 수행하도록 구성된다.
무결성 컴포넌트(224)는 페이지로서 디바이스(210)에 쓰일 소정 수의 섹터에 대응하는 제1 메타데이터(341)의 무결성 데이터의 체크를 수행하도록 구성된다. 예를 들어, 무결성 컴포넌트(224)는, 섹터의 각각에 대해, 에러 데이터(예컨대, CRC)를 계산하고 그것을 메타데이터(341)의 에러 데이터(346)에 비교할 수 있어서, 컴포넌트(220)로부터 컴포넌트(224)로 전송되는 동안 데이터의 무결성의 표시를 제공할 수 있다. 무결성 컴포넌트(224)는, 수신된 데이터의 무결성 체크를 수행하도록 구성된 여러 회로 중에서도, CRC 엔진 및/또는 에러 정정 코드(error correction code: ECC) 엔진을 포함할 수 있다.
무결성 컴포넌트(224)는 또한 제2 메타데이터 포맷(예컨대, 메모리 디바이스(210)와 연관되고, 도 4 및 도 5에 예시된 것들과 같은 메모리 메타데이터 포맷)을 갖는 제2 메타데이터(예컨대, 도 4에 도시된 메타데이터(447) 및/또는 도 5에 도시된 메타데이터(547-0/547-1))를 발생시킬 수 있다. 즉, 컴포넌트(224)는 제1 수의 섹터(예컨대, 섹터 필드(348)에 대응하는 소정 수의 섹터)와 연관된 메타데이터 포맷을 조절된 메타데이터 포맷으로 변경한다. 제2 메타데이터 포맷은 도 4 및 도 5에 예시된 것들과 같은 포맷일 수 있고, 여러 특성 중에서도, 메모리 디바이스(210)의 특정 특성(예컨대, 디바이스 유형, 에러 검출 및/또는 정정 특성, 페이지 사이즈, 및/또는 이용가능한 메타데이터 바이트의 양)에 의존할 수 있다. 제2 메타데이터 포맷은 제1 수의 섹터 중 적어도 하나에 대응하는 제2 무결성 데이터(예컨대, 도 4에 도시된 무결성 데이터(454-0/454-1) 및/또는 도 5에 도시된 (552/554))를 포함할 수 있다. 제2 무결성 데이터는 제1 메타데이터(예컨대, 341)의 제1 무결성 데이터에 부가하여 또는 그 대체로서 에러 데이터 및/또는 어드레스 데이터를 포함할 수 있다. 다수의 실시예에 있어서, 제2 메타데이터는 제1 수의 섹터 중 적어도 하나뿐만 아니라 제2 무결성 데이터에 대응하는 에러 데이터를 포함할 수 있는 제3 무결성 데이터를 또한 포함할 수 있다. 예를 들어, 제3 무결성 데이터는 하나 이상의 사용자 데이터 섹터와 더불어 그에 대응하는 제2 무결성 데이터를 커버(예컨대, 보호)할 수 있는 BCH 에러 정정 코드(ECC)와 같은 에러 정정 코드일 수 있다. 무결성 컴포넌트(224)는, 메모리 디바이스(210)에 쓰일 사용자 데이터와 연관된 메타데이터 포맷을 변경하는 것과 연관하여, 제2 메타데이터의 제2 무결성 데이터를 발생시킬 수 있다.
다수의 실시예에 있어서, 컨트롤러(208)는 제2 메타데이터의 제3 무결성 데이터를 발생시키도록 구성된 컴포넌트(226)를 포함한다. 도 2에 도시된 예에 있어서, 컴포넌트(226)는, 소정 수의 사용자 데이터 섹터 중 적어도 하나뿐만 아니라, 제2 메타데이터의 제2 무결성 데이터에 대응하는 BCHECC 코드의 형태로 제3 무결성 데이터를 발생시키도록 구성된다. 컴포넌트(226)는 에러 데이터를 발생시키는데 적합한 ECC 엔진 또는 다른 컴포넌트를 포함할 수 있다.
컨트롤러(208)는 제2 메타데이터에 대응하는 소정 수의 섹터를 (예컨대, 데이터 페이지로서) 메모리 디바이스(210)에 쓰도록 구성된다. 도 2에 예시된 바와 같이, 컨트롤러(208)는, 메모리 디바이스에 쓰이는 소정 수의 섹터 중 하나 이상과 연관된 읽기 동작과 연관하여, 하나 이상의 섹터에 대응하는 제2 메타데이터와 연관된 제3 무결성 데이터의 체크(예컨대, 에러 있는 데이터의 존재를 검출하기 위해 하나 이상의 섹터 및 그에 대응하는 제2 무결성 데이터에 대응하는 BCHECC의 체크)를 수행하도록 구성된 컴포넌트(230)를 포함할 수 있다. 컴포넌트(230)는 또한 하나 이상의 섹터 및/또는 그에 대응하는 제2 무결성 데이터와 연관된 (있다면) 소정 수의 에러를 정정할 수 있다. 체크된 (그리고 아마도 정정된) 섹터 및 조절된 메타데이터 포맷을 갖는 대응하는 제2 무결성 데이터는 그 후 컨트롤러(208)의 제2 무결성 컴포넌트(234)에 제공될 수 있다. 읽기 동작이 전 페이지 읽기 동작이면, 컴포넌트(230)에 의해 수신된 데이터는 버퍼(232)를 통해 무결성 컴포넌트(234)에 직접 전송될 수 있다. 읽기 동작이 부분적 페이지 읽기 동작이면, 컴포넌트(230)에 의해 수신된 데이터는 버퍼(232)를 통해 무결성 컴포넌트(234)에 전송되기 이전에 병합 컴포넌트(228)에 전송될 수 있다. 이러한 예에 있어서, 부분적 페이지 읽기 동작은 페이지 사이즈가 4KB(예컨대, 각각의 전 4KB 페이지는 8개의 512B 섹터를 포함)이므로 8개의 섹터보다 호스트에 의해 요청된 512B 섹터의 수가 더 적은 읽기 동작일 것이다. 컴포넌트(226)는 데이터에서의 에러를 검출 및/또는 정정하는데 적합한 ECC 엔진 또는 다른 컴포넌트를 포함할 수 있다.
무결성 컴포넌트(234)는 메모리 디바이스(210)로부터 읽혀진 수신된 사용자 데이터 섹터에 대응하는 제2 메타데이터의 제2 무결성 데이터의 체크를 수행할 수 있다. 일례로서, 제2 무결성 데이터는 하나 이상의 섹터에 대응하는 CRC 형태로 에러 데이터를 포함할 수 있다. 무결성 컴포넌트(234)는 제2 무결성 데이터(예컨대, 무결성 컴포넌트(224)에 의해 이전에 발생되었고 하나 이상의 섹터가 메모리 디바이스(210)에 쓰이기 이전에 제2 메타데이터에 삽입되었던 제2 무결성 데이터)의 CRC에 비교될 수 있는 하나 이상의 섹터에 대한 CRC를 발생시킬 수 있다. 아래에 더 설명되는 바와 같이, 제2 무결성 정보는 멀티-섹터 기준으로 에러 데이터(예컨대, CRC)를 포함할 수 있다.
무결성 컴포넌트(234)는 또한 메모리 디바이스(210)로부터 읽혀진 섹터와 연관된 메타데이터 포맷을 조절된 메타데이터 포맷으로부터 다시 호스트 포맷(예컨대, 도 3에 도시된 포맷)으로 조절(예컨대, 변환)할 수 있다. 조절된 메타데이터 포맷을 다시 호스트 포맷으로 변환하는 것은 메모리 디바이스(210)로부터 읽혀진 소정 수의 섹터에 대응하는 제2 메타데이터를 제3 메타데이터로 대체하는 것을 포함한다. 제3 메타데이터는, 무결성 컴포넌트가 섹터당 기준으로 발생시킬 수 있는, 소정 수의 섹터에 대응하는 에러 데이터(예컨대, CRC)와 같은 제4 무결성 데이터를 포함할 수 있다. 제3 메타데이터는 제4 무결성 데이터가 계산되어 도 3에 예시된 필드(346)와 같은 데이터 필드에 포함될 수 있게 되도록 메타데이터(341)와 연관된 것과 같은 포맷을 가질 수 있다.
다수의 실시예에 있어서, 제2 무결성 컴포넌트(234)는, 요청된 수의 섹터를 호스트에 제공하기 이전에 소정 수의 섹터에 대응하는 제4 무결성 데이터(예컨대, 컴포넌트(234)에 의해 발생된 CRC)의 체크를 수행할 수 있는 컴포넌트(236)에, 호스트 포맷을 갖는 소정 수의 섹터를 제공할 수 있다. 이러한 방식으로, (예컨대, 섹터 필드(348)에 대응하는 소정 수의 섹터로서) 호스트로부터 수신되어 메모리 디바이스(210)에 쓰이는 데이터의 무결성은 소정 수의 섹터를 다시 호스트에 제공하는 것과 연관된 읽기 요청과 연관되어 확인받을 수 있다. 다수의 실시예에 있어서, 컴포넌트(236)는 그에 수신된 섹터에 대응하는 메타데이터를, 호스트 인터페이스(206)를 통해 다시 호스트로의 읽기 요청과 연관된 섹터를 제공하기 이전에, 제거할 수 있다(예컨대, 떼어버릴 수 있다). 그렇지만, 실시예들은 그렇게 한정되는 것은 아니다. 예를 들어, 다수의 실시예에 있어서, 컴포넌트(236)에 의해 수신되고 호스트 포맷(예컨대, 도 3에 도시된 포맷)에 대응하는 메타데이터(예컨대, 무결성 데이터)의 하나 이상의 부분은 제거됨이 없이 호스트에 (예컨대, 호스트 인터페이스(206)를 통해) 보내질 수 있다. 제거되지 않은 무결성 데이터는 호스트 인터페이스(206)에 의해 또는 호스트 자체에 의해 (예컨대, 애플리케이션 레벨에서) 다시 체크될 수 있다.
도 2에 예시된 컨트롤러(208)는 그 대응하는 메타데이터뿐만 아니라 소정 수의 섹터와 연관된 데이터 무결성을 제공하는 능력을 유지하면서 소정 수의 섹터와 연관된 메타데이터 포맷을 서로 다른 포맷 사이에서 조절할 수 있다. 아래에 더 설명되는 바와 같이, 조절된 메타데이터 포맷은 섹터가 쓰이고/쓰이거나 읽혀질 메모리 디바이스(예컨대, 메모리 디바이스(210))의 유형에 의존할 수 있다.
다수의 실시예에 있어서, (예컨대, 도 4 및 도 5에 예시된 것과 같은 조절된 메타데이터 포맷에 따라) 메모리 디바이스(210)에 저장된 데이터는 호스트로부터 비롯되지 않은 동작(예컨대, 읽기 및/또는 쓰기 동작)과 연관되어 메모리 디바이스(210) 내/외로 전송될 수 있다. 예를 들어, 컨트롤러(208)와 연관된 메모리 관리 컴포넌트(예컨대, 도 6에 도시된 613)는 데이터 회수(data reclamation) 프로세스와 연관되어 메모리 디바이스(210)에 데이터를 쓰고/쓰거나 그로부터 데이터를 읽을 수 있다. 그러한 경우에 있어서, 무결성 컴포넌트(224) 및/또는 병합 컴포넌트(228)와 같은 컴포넌트는 (예컨대, 메타데이터를 조절된 메타데이터 포맷으로부터 다시 호스트 포맷으로 우선 변환하고 그 후 호스트 포맷과 연관된 무결성 데이터를 체크하는 대신에) 조절된 메타데이터 포맷과 연관된 무결성 데이터를 체크할 수 있다.
도 4는 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메타데이터 포맷을 예시하고 있다. 도 4에 예시된 메타데이터 포맷은 특정 메모리 디바이스(예컨대, 도 2에 도시된 메모리 디바이스(210))와 연관된 메타데이터 포맷이다. 일례로서, 도 4에 예시된 메타데이터 포맷은 SLC NAND 메모리 디바이스와 연관될 수 있다.
도 4에 예시된 메타데이터 포맷은 예컨대 도 3에 예시된 호스트 메타데이터 포맷에 비해 조절된 메타데이터 포맷이다. 도 4는, 예컨대, 도 2와 연관하여 위에서 설명된 컨트롤러(208)의 무결성 컴포넌트(224)에 의해 형성될 수 있는 데이터 그룹(460)을 예시하고 있다. 데이터 그룹(460)은, 예컨대, 그 대응하는 메타데이터와 함께, 쓰기 동작과 연관하여 호스트로부터 수신된 소정 수의 섹터 중 적어도 하나를 각각 포함하는 다수의 데이터 그룹 중 하나일 수 있다. 데이터 그룹(460)은 본 명세서에서는 코드워드(460)라고 지칭될 수 있다.
도 4에 도시된 예에 있어서, 코드워드(460)는 2개의 섹터 데이터 필드(448-0, 448-1)를 포함하는 페이로드 부분(445)을 포함한다. 이러한 예에 있어서, 코드워드(460)는 2개의 512B 섹터(예컨대, 필드(448-0)에 대응하는 사용자 섹터0 및 필드(448-1)에 대응하는 사용자 섹터1)와 더불어 메타데이터(447)도 포함한다. 도 4에 예시되고 있지는 않지만, 독자는 4KB 데이터 페이지가 4개의 코드워드(460)를 포함할 수 있음을 인식할 것이다(예컨대, 각자의 대응하는 메타데이터(447)와 함께, 제1 부가적 코드워드(460)는 제3 및 제4 사용자 섹터를 포함하고, 제2 부가적 코드워드(460)는 제5 및 제6 사용자 섹터를 포함하고, 제3 부가적 코드워드(460)는 제7 및 제8 사용자 섹터를 포함한다). 이러한 예에 있어서, 메타데이터(447)는 56B의 데이터를 포함한다. 그와 같이, 각각의 코드워드(460)는 1KB 페이로드(예컨대, 2개의 512B 섹터) 및 56B의 이용가능한 메타데이터를 포함한다. 그래서, 메모리 디바이스에 데이터 페이지를 쓰는 것은 4320B의 데이터(예컨대, 4KB 페이지 사이즈에 대응하는 4KB의 사용자 데이터와 더불어 320B의 메타데이터)를 쓰는 것을 포함할 수 있다.
코드워드(460)와 연관된 메타데이터(447)는 소정 수의 데이터 필드를 포함한다. 도 4에 예시된 화살표는 특정 무결성 데이터 필드에 의해 데이터의 어느 부분이 커버되는지 나타내도록 사용된다. 이러한 예에 있어서, 필드(450-0)는 필드(448-0)의 사용자 섹터와 연관된 8B DIF 데이터(예컨대, 섹터0 DIF)를 포함하는 무결성 데이터 필드이다. 즉, 필드(450-0)는 섹터0이 무결성 컴포넌트(224)에 제공되기 이전에 (예컨대, 도 2에 도시된 삽입 컴포넌트(220)를 통해) 섹터0에 첨부되었던 메타데이터(예컨대, 341)를 포함할 수 있다. 유사하게, 필드(450-1)는 필드(448-1)의 사용자 섹터와 연관된 8B DIF 데이터(예컨대, 섹터1 DIF)를 포함하는 무결성 데이터 필드이다. 즉, 필드(450-1)는 섹터1이 무결성 컴포넌트(224)에 제공되기 이전에 (예컨대, 도 2에 도시된 삽입 컴포넌트(220)를 통해) 섹터1에 첨부되었던 메타데이터(예컨대, 341)를 포함할 수 있다.
메타데이터(447)의 데이터 필드(452)는 코드워드(460)가 대응하는 데이터 페이지와 연관된 어드레스 데이터를 포함하는 4B 데이터 무결성 필드이다. (플래시 LBA로 도시된) 어드레스 데이터는 필드(448-0, 448-1)의 사용자 데이터 섹터가 대응하는 논리적 데이터 페이지와 연관된 논리적 블록 어드레스(LBA)일 수 있다. 동일 페이지에 대응하는 서로 다른 코드워드(460)의 필드(452)는 어드레스 데이터의 무결성이 그 페이지에 대응하는 소정 수의 코드워드를 가로질러 유지되는지 결정하도록 체크될 수 있다.
메타데이터(447)의 데이터 필드(454-0)는 2B 에러 데이터 필드이다. 이러한 예에 있어서, (플래시 CRC 섹터0로 도시된) 필드(454-0)에 대응하는 에러 데이터는 필드(448-0, 450-0, 452)에 대응하는 데이터를 커버하는 CRC(예컨대, 512B의 사용자 섹터0, 8B 섹터0 DIF, 및 섹터0이 대응하는 페이지의 4B 플래시 LBA를 커버하는 CRC)이다. 유사하게, 메타데이터(447)의 데이터 필드(454-1)는 2B 에러 데이터 필드이다. 이러한 예에 있어서, (플래시 CRC 섹터1로 도시된) 필드(454-1)에 대응하는 에러 데이터는 필드(448-1, 450-1, 452)에 대응하는 데이터를 커버하는 CRC(예컨대, 512B의 사용자 섹터1, 8B 섹터1 DIF, 및 섹터1이 대응하는 페이지의 4B 플래시 LBA를 커버하는 CRC)이다. 도 4에 예시된 조절된 메타데이터 포맷의 데이터 필드(452, 454-0, 454-1)는 도 2와 연관하여 위에서 설명된 바와 같은 제2 무결성 데이터라고 지칭된 데이터를 포함할 수 있다.
이러한 예에 있어서, 메타데이터(447)의 데이터 필드(456)는 4B 예약된 데이터 필드이다. 필드(456)는 메모리 시스템(예컨대, 도 1에 도시된 메모리 시스템(104)) 내 데이터 전송과 연관되어 다양한 목적으로 사용될 수 있다. 예컨대, 필드(456)는 페이로드(445)와 연관된 부가적 에러 데이터 및/또는 다른 무결성 데이터를 포함할 수 있다. 그렇지만, 필드(456)는 데이터 무결성 이외의 목적으로 사용될 수도 있다.
메타데이터(447)의 데이터 필드(458)는 28B 에러 데이터 필드이다. 이러한 예에 있어서, (BCHECC16으로 도시된) 필드(458)에 대응하는 에러 데이터는 페이로드(445)(예컨대, 사용자 섹터0 및 사용자 섹터1)에 대응하는 1024B의 사용자 데이터와 더불어 그와 연관된 56B의 메타데이터(447)를 커버하는 16 비트 에러 정정 코드(ECC)이다. 그와 같이, 필드(458)에 대응하는 에러 데이터는 코드워드(460)당(예컨대, 1080B당) 16 비트 정정을 지원한다. 실시예들은 이러한 예에 한정되는 것은 아니다. 도 4에 예시된 조절된 메타데이터 포맷의 데이터 필드(458)는 도 2와 연관하여 위에서 설명된 바와 같은 제3 무결성 데이터라고 지칭될 수 있다.
도 4에 예시된 조절된 메타데이터 포맷은 컨트롤러를 통해 구현될 수 있고 도 2와 연관하여 위에서 설명된 바와 같이 호스트로부터의 쓰기 및 읽기 요청과 같은 동작과 연관되어 데이터 무결성을 제공하는데 사용될 수 있다. 예를 들어, 무결성 컴포넌트(224)는 호스트로부터 수신된 섹터와 연관된 메타데이터 포맷을 제1 포맷(예컨대, 도 3에 도시된 것과 같은 호스트 포맷)으로부터 제2 포맷(예컨대, 도 4에 도시된 것과 같은 조절된 포맷)으로 변환할 수 있다. 메모리 디바이스(210)에 쓰인 코드워드(예컨대, 460)는 코드워드의 페이로드(예컨대, 445) 및 다른 메타데이터(예컨대, 필드(458) 이외의 데이터 필드에 대응하는 메타데이터(447)의 데이터)를 커버하는, 컴포넌트(226)에 의해 발생된 에러 데이터를 포함하는 에러 데이터 필드(예컨대, 458)를 포함할 수 있다. 다른 메타데이터 및 페이로드를 커버하는 에러 데이터는 코드워드가 (예컨대, 호스트로부터의 읽기 요청에 응답하여) 메모리 디바이스(210)로부터 읽혀질 때 컴포넌트(230)를 통해 체크될 수 있다. 읽기 요청이 부분적 페이지 읽기 요청이든 전 페이지 읽기 요청이든, 컨트롤러(208)는, 데이터 섹터의 데이터 무결성을 유지하면서, 그 요청된 섹터를 호스트에 배달하기 이전에 디바이스로부터 읽혀진 코드워드와 연관된 메타데이터 포맷을 조절된 메타데이터 포맷으로부터 다시 호스트 포맷으로 변환하도록 구성된다.
도 5는 본 발명의 하나 이상의 실시예에 따라 전송되는 데이터의 무결성을 제공하는 것과 연관된 메타데이터 포맷을 예시하고 있다. 도 5에 예시된 메타데이터 포맷은 특정 메모리 디바이스(예컨대, 도 2에 도시된 메모리 디바이스(210))와 연관된 메타데이터 포맷이다. 일례로서, 도 5에 예시된 메타데이터 포맷은 MLC NAND 메모리 디바이스와 연관될 수 있다.
도 5에 예시된 메타데이터 포맷은 예컨대 도 3에 예시된 호스트 메타데이터 포맷에 비해 조절된 메타데이터 포맷이다. 도 5는, 예컨대, 도 2와 연관하여 위에서 설명된 컨트롤러(208)의 컴포넌트(226) 및 무결성 컴포넌트(224)에 의해 형성될 수 있는 제1 데이터 그룹(560-0) 및 제2 데이터 그룹(560-1)을 예시하고 있다. 데이터 그룹(560-0, 560-1)은 코드워드(560-0, 560-1)라고 지칭될 수 있다.
도 5에 도시된 예에 있어서, 코드워드(560-0, 560-1)는 각자의 페이로드 부분(545-0, 545-1)과 더불어 각자의 메타데이터(547-0, 547-1)를 포함한다. 이러한 예에 있어서, 코드워드(560-0, 560-1)의 각각은 2개의 섹터 데이터 필드를 포함한다(예컨대, 코드워드(560-0)는 섹터 필드(548-0, 548-1)를 포함하고 코드워드(560-1)는 섹터 필드(548-2, 548-3)를 포함한다). 코드워드(560-0)는 2개의 512B 섹터(예컨대, 필드(548-0)에 대응하는 사용자 섹터0 및 필드(548-1)에 대응하는 사용자 섹터1)을 포함한다. 코드워드(560-1)는 2개의 512B 섹터(예컨대, 필드(548-2)에 대응하는 사용자 섹터2 및 필드(548-3)에 대응하는 사용자 섹터3)를 포함한다. 도 5에 예시되고 있지는 않지만, 독자는 4KB 데이터 페이지가 4개의 코드워드를 포함할 수 있음을 인식할 것이다(예컨대, 각자, 대응하는 메타데이터(547-0, 547-1)와 함께, 부가적 코드워드(560-0)는 제5 및 제6 사용자 섹터를 포함하고, 부가적 코드워드(560-1)는 제7 및 제8 사용자 섹터를 포함한다). 이러한 예에 있어서, 메타데이터(547-0/547-1)는 56B의 데이터를 포함한다. 그와 같이, 각각의 코드워드는 1024B 페이로드(예컨대, 2개의 512B 섹터) 및 56B의 이용가능한 메타데이터를 포함한다. 그래서, 메모리 디바이스에 데이터 페이지를 쓰는 것은 4320B의 데이터(예컨대, 4KB 페이지 사이즈에 대응하는 4KB의 사용자 데이터와 더불어 320B의 메타데이터)를 쓰는 것을 포함할 수 있다.
코드워드(560-0)와 연관된 메타데이터(547-0) 및 코드워드(560-1)와 연관된 메타데이터(547-1)는 각각 소정 수의 데이터 필드를 포함한다. 도 5에 도시된 예에 있어서, 조절된 메타데이터 포맷은 코드워드(560-0)의 메타데이터(547-0)와 연관된 데이터 필드가 코드워드(560-1)의 메타데이터(547-1)와 연관된 데이터 필드와 다르게 되어 있다(예컨대, 56B의 이용가능한 메타데이터가 서로 다르게 사용된다). 도 4와 유사하게, 도 5에 예시된 화살표는 특정 무결성 데이터 필드에 의해 데이터의 어느 부분이 커버되는지 나타내도록 사용된다.
메타데이터(547-0)의 데이터 필드(552)는 코드워드(560-0, 560-1)가 대응하는 데이터 페이지와 연관된 어드레스 데이터를 포함하는 4B 데이터 무결성 필드이다. (플래시 LBA로 도시된) 어드레스 데이터는 필드(548-0, 548-1, 548-2, 548-3)의 사용자 데이터 섹터가 대응하는 논리적 데이터 페이지와 연관된 논리적 블록 어드레스(LBA)일 수 있다. 동일 페이지에 대응하는 서로 다른 코드워드(560-0)의 필드(552)는 어드레스 데이터의 무결성이 그 페이지에 대응하는 소정 수의 코드워드를 가로질러 유지되는지 결정하도록 체크될 수 있다.
메타데이터(547-1)의 데이터 필드(554)는 4B 에러 데이터 필드이다. 이러한 예에 있어서, (플래시 CRC로 도시된) 필드(554)에 대응하는 에러 데이터는 필드(548-0, 548-1, 548-2, 548-3, 552)에 대응하는 데이터를 커버하는 CRC(예컨대, 32 비트 CRC)이다(예컨대, CRC는, 512B의 사용자 섹터0, 사용자 섹터1, 사용자 섹터2 및 사용자 섹터3과 더불어, 사용자 섹터가 대응하는 페이지의 4B 플래시 LBA를 커버한다). 도 5에 예시된 조절된 메타데이터 포맷의 데이터 필드(552, 554)는 도 2와 연관하여 위에서 설명된 바와 같은 제2 무결성 데이터라고 지칭된 데이터를 포함할 수 있다. 이러한 예에 있어서, 코드워드(560-1)와 연관된 메타데이터(547-1)는 코드워드(560-1)와 연관된 섹터(예컨대, 사용자 섹터2 및 사용자 섹터3)와 더불어 코드워드(560-0)와 연관된 섹터(예컨대, 사용자 섹터0 및 사용자 섹터1)에 대응하는 제2 무결성 데이터(예컨대, 데이터 무결성 필드(554)에 대응하는 CRC 형태의 에러 데이터)를 포함한다. 코드워드(560-0)와 연관된 메타데이터(547-0)는 또한 서로 다른 코드워드와 연관된 섹터에 대응하는 제2 무결성 데이터(예컨대, 데이터 무결성 필드(552)에 대응하는 어드레스 데이터)를 포함한다. 즉, 메타데이터(547-0)의 제2 무결성 데이터(552)는 코드워드(560-0) 내 섹터와 더불어 서로 다른 코드워드(예컨대, 560-1) 내 섹터에도 대응한다. 그와 같이, 코드워드(560-0/560-1)와 연관된 조절된 메타데이터 포맷은 다수의 섹터(예컨대, 이 예에서는 섹터0 내지 3)에 대응하는 제2 무결성 데이터(예컨대, 필드(552, 554)에 대응하는 무결성 데이터)를 포함한다.
메타데이터(547-0)의 데이터 필드(558-0) 및 메타데이터(547-1)의 (558-1)는 각각 52B 에러 데이터 필드이다. 이러한 예에 있어서, (BCHECC29로 도시된) 필드(558-0, 558-1)에 대응하는 에러 데이터는 각자 페이로드(545-0)(예컨대, 사용자 섹터0 및 사용자 섹터1) 및 (545-1)(예컨대, 사용자 섹터2 및 사용자 섹터3)에 대응하는 1024B의 사용자 데이터와 더불어 그와 연관된 각자의 56B의 메타데이터(547-0, 547-1)를 커버하는 29 비트 에러 정정 코드(ECC)이다. 그와 같이, 필드(558-0, 558-1)에 대응하는 에러 데이터는 코드워드당(예컨대, 1080B당) 29 비트 정정을 지원한다. 실시예들은 이러한 예에 한정되는 것은 아니다. 도 5에 예시된 조절된 메타데이터 포맷의 데이터 필드(558-0, 558-1)는 도 2와 연관하여 위에서 설명된 바와 같은 제3 무결성 데이터라고 지칭될 수 있다.
코드워드(560-0, 560-1)는 데이터 페이지에 대응하는 부가적 코드워드와 함께 메모리 디바이스(예컨대, 메모리 디바이스(210))에 쓰일 수 있다. 메타데이터(547-0, 547-1)의 제3 무결성 데이터(예컨대, 무결성 데이터 필드(558-0, 558-1)의 ECC 코드)는 예를 들어 읽기 동작에 응답하여 체크될 수 있다. 제3 무결성 데이터의 체크는 도 2에 도시된 컴포넌트(230)와 같은 컴포넌트에 의해 수행될 수 있다. 다수의 실시예에 있어서, 제3 무결성 데이터의 체크를 수행하는 것 다음에, 메타데이터(547-0, 547-1)의 제2 무결성 데이터(예컨대, 데이터 무결성 필드(554)의 CRC)의 체크가 (예컨대, 무결성 컴포넌트(234)에 의해) 수행될 수 있다. 다수의 실시예에 있어서, 무결성 컴포넌트(234)는, 섹터당 기준으로, 소정 수의 코드워드 중 특정 하나의 적어도 하나의 섹터(예컨대, 코드워드(560-0)의 사용자 섹터0)에 대응하는 제4 무결성 데이터를 발생시킬 수 있다. 위에서 설명된 바와 같이, 컴포넌트(234)는, 소정 수의 코드워드 중 특정 하나와 연관된 메타데이터(예컨대, 코드워드(560-0)와 연관된 메타데이터(547-0))를, 적어도 하나의 섹터(예컨대, 사용자 섹터0)에 대응하고 제4 무결성 데이터(예컨대, 사용자 섹터0에 대응하는 CRC와 같은 에러 데이터)를 포함하는 조절된 메타데이터(예컨대, 도 3에 도시된 메타데이터(341)와 같은 호스트 포맷을 갖는 메타데이터)로 대체할 수 있다.
다수의 실시예에 있어서, 컴포넌트(236)와 같은 컴포넌트는 소정 수의 코드워드 중 특정 하나의 적어도 하나의 섹터에 대응하는 조절된(예컨대, 수정된) 메타데이터의 제4 무결성 데이터의 체크를 수행할 수 있다. 제4 무결성 데이터의 체크는 소정 수의 코드워드 중 특정 하나의 적어도 하나의 섹터에 대응하는 수정된 메타데이터의 제4 무결성 데이터를 적어도 하나의 섹터에 대응하는 제1 무결성 데이터와 비교하는 것을 포함할 수 있다. 예를 들어, 컴포넌트(236)는 제4 무결성 데이터(예컨대, 무결성 컴포넌트(234)에 의해 발생된 CRC)를 이전에 발생된 CRC(예를 들어, 삽입 컴포넌트(220)에 의함 그리고 예컨대 컨트롤러의 버퍼에 저장됨)와 비교할 수 있다. 다수의 실시예에 있어서, 적어도 하나의 섹터에 대응하는 조절된 메타데이터는 적어도 하나의 섹터를 호스트에 포워딩하기 이전에 (예컨대, 컴포넌트(236)를 통해) 제거될 수 있다. 그렇지만, 위에서 나타낸 바와 같이, 다수의 실시예에 있어서, (예컨대, 컴포넌트(234)로부터) 컴포넌트(236)에 의해 수신된 수정된 메타데이터의 하나 이상의 부분은 제거됨이 없이 호스트 인터페이스(206)에 제공될 수 있다.
메타데이터(547-0, 547-1)의 제3 무결성 데이터(예컨대, 무결성 데이터 필드(558-0, 558-1)의 ECC 코드)는 또한 예를 들어 부분적 읽기 동작에 응답하여 체크될 수 있다. 그러한 실시예에 있어서, 제3 무결성 데이터의 체크는 도 2에 도시된 컴포넌트(230)와 같은 컴포넌트에 의해 수행될 수 있다. 다수의 실시예에 있어서는, 제3 무결성 데이터의 체크를 수행하는 것 다음에, 메타데이터(547-0, 547-1)의 제2 무결성 데이터(예컨대, 데이터 무결성 필드(554)의 CRC)의 체크가 (예컨대, 병합 컴포넌트(228)에 의해) 수행될 수 있다. 메타데이터(547-0, 547-1)의 제2 무결성 데이터를 체크하는 것 다음에, 병합 컴포넌트(228)는 도 5에 도시된 조절된 포맷으로부터 호스트 포맷(예컨대, 도 3에 도시된 바와 같이 섹터당 기준으로 무결성 데이터를 포함하는 포맷)으로 메타데이터를 변환하도록 구성된다. 병합 컴포넌트(228)는 메모리 디바이스(210)로부터 읽혀진 페이지 섹터 중 하나 이상을 부분적 읽기 동작과 연관되어 수신된 하나 이상의 호스트 섹터로 대체할 수 있고, 위에서 설명된 바와 같이 호스트 포맷에 따라 데이터를 수신하도록 구성되는 무결성 컴포넌트(224)에 데이터 및 연관된 메타데이터를 전송할 수 있다. 소정 수의 부분적 읽기 동작에 있어서, 병합 컴포넌트(228)는 메모리 디바이스(210)로부터 읽혀진 페이지에 대응하는 코드워드(예컨대, 코드워드(560-0, 560-1)와 더불어, 읽혀진 페이지에 대응하는 다른 코드워드)의 각각의 제2 무결성 데이터의 체크를 수행하지 않을 수 있다. 예를 들어, 부분적 읽기가 메모리 디바이스로부터 읽혀져 6개의 호스트 섹터와 병합되는 2개의 섹터(예컨대, 사용자 섹터0 및 사용자 섹터1)를 포함하면, 그때 병합 컴포넌트(228)는 무결성 데이터 필드(554)의 무결성 데이터(예컨대, 필드(548-1, 548-2, 548-3, 548-4, 552)에 대응하는 CRC)를 체크할 수 있다. 그렇지만, 읽혀진 페이지에 대응하는 다른 코드워드는 호스트 섹터와 병합될 섹터를 포함하지 않으므로, 병합 컴포넌트(228)는 그들 코드워드와 연관된 제2 무결성 데이터의 체크를 수행하지 않도록 구성될 수 있다. 유사하게, 이러한 부분적 읽기 예와 연관하여, 병합 컴포넌트(228)는 호스트 섹터와 병합될 섹터를 포함하지 않는 읽혀진 페이지의 그들 코드워드와 연관된 메타데이터의 조절된 포맷으로부터 호스트 포맷으로의 변환을 포기하도록 구성될 수 있다. 부분적 읽기 동작과 연관된 섹터를 포함하지 않는 그들 코드워드의 메타데이터의 변환을 포기하는 것 및/또는 그 연관된 제2 무결성 데이터의 체크를 포기하는 것은, 여러 이득 중에서도, 프로세싱 자원을 절약할 수 있다.
도 6은 본 발명의 하나 이상의 실시예에 따라 메모리 컨트롤러(608)의 기능적 블록 선도이다. 컨트롤러(608)는 도 1과 연관하여 설명된 컨트롤러(108)와 같은 컨트롤러 또는 도 2와 연관하여 설명된 컨트롤러(208)와 같은 컨트롤러일 수 있다.
도 6에 도시된 예에 있어서, 컨트롤러(608)는 메모리 관리 컴포넌트(613) 및 메모리 제어 컴포넌트(611)를 포함한다. 메모리 관리 컴포넌트(613)는, 메모리 디바이스(610-1, ..., 610-N)와 연관된 여러 메모리 관리 기능 중에서도, 마모 레벨링(예컨대, 폐영역 수집 및/또는 회수), 에러 검출 및/또는 정정, 및/또는 블록 은퇴와 같은 다양한 메모리 관리 기능과 연관된 컴포넌트(예컨대, 회로 및/또는 펌웨어)를 포함한다. 메모리 관리 컴포넌트(613)는 호스트 커맨드(예컨대, 호스트 인터페이스(606)를 통해 호스트로부터 수신된 커맨드)를 디바이스 커맨드(예컨대, 메모리 디바이스(610-1, ..., 610-N)를 동작시키는 것과 연관된 커맨드)로 파싱 및/또는 포맷팅할 수 있다. 메모리 관리 컴포넌트(613)는 또한 (예컨대, 다양한 메모리 관리 기능을 성취하기 위해) 디바이스 커맨드를 발생시킬 수 있다. 메모리 관리 컴포넌트(613)는 메모리 제어 컴포넌트(611)에 디바이스 커맨드를 제공하도록 구성된다.
메모리 제어 컴포넌트(611)는 소정 수의 메모리 디바이스(610-1, ..., 610-N)에 데이터를 쓰는 것, 메모리 디바이스(610-1, ..., 610-N)로부터 데이터를 읽는 것 및 메모리 디바이스(610-1, ..., 610-N) 내 데이터(예컨대, 블록)를 지우는 것과 연관된 메모리 동작을 제어하도록 구성된다. 메모리 동작은 호스트 커맨드(예컨대, 호스트 인터페이스(606)를 통해 컨트롤러(608)에 수신된 호스트 커맨드)에 기반한 동작(예컨대, 읽기 및/또는 쓰기)일 수 있고/있거나 (예컨대, 마모 레벨링, 에러 검출 및/또는 정정 등과 연관되어) 제어 컴포넌트(611) 및/또는 메모리 관리 컴포넌트(613)에 의해 개시된 내부적으로 발생된 디바이스 커맨드에 기반할 수 있다.
제어 컴포넌트(611)에 결합된 메모리 디바이스(610-1, ..., 610-N)는 도 1에서 설명된 디바이스(110-1, ..., 110-N)와 같은 비휘발성 메모리 디바이스일 수 있다. 도 6에 도시된 예에 있어서, 메모리 디바이스(610-1, ..., 610-N)는 NAND 플래시 메모리 디바이스이다. 위에서 설명된 바와 같이, 메모리 디바이스(610-1, ..., 610-N) 내 메모리 셀은 그 연관된 소정 수의 물리적 페이지를 갖는 소정 수의 블록으로 편성될 수 있다.
메모리 제어 컴포넌트(611)는 메모리 디바이스(610-1, ..., 610-N)에 쓰이고/쓰이거나 그로부터 읽혀지는 데이터와 연관된 에러를 검출 및/또는 정정하도록 구성된 ECC 엔진 또는 다른 회로를 포함할 수 있는 에러 정정 컴포넌트(619)를 포함한다. 다수의 실시예에 있어서, 에러 정정 컴포넌트(619)는 그에 제공된 데이터에서의 비트 에러를 검출하기 위해 (예컨대, 도 2, 도 4 및 도 5와 연관하여 위에서 설명된 것과 같은) BCHECC를 채용할 수 있다. 검출된 비트 에러는 (예컨대, 검출된 에러 있는 비트의 수 및 사용된 ECC의 유형 등에 의존하여) 에러 정정 컴포넌트(619)를 통해 정정가능할 수도 또는 아닐 수도 있다. 에러 있는 비트의 수가 컴포넌트(619)를 통해 정정가능하면, 그때 동작은 컴포넌트(619)가 특정 동작의 완료와 연관되어 정정을 진행할 수 있는 정정가능한 비트 에러이다. 에러 있는 비트의 수가 컴포넌트(619)를 통해 정정가능하지 않으면(예컨대, 에러 있는 비트의 수가 컴포넌트(619)와 연관된 정정가능한 비트의 임계 수를 초과하면), 그때 동작은 정정가능하지 않은 비트 에러이다. 메모리 제어 컴포넌트(611)는 정정가능한 비트 에러와 더불어 정정가능하지 않은 비트 에러도 메모리 관리 컴포넌트(613)에 보고하도록 구성될 수 있다.
메모리 관리 컴포넌트(613)는 소정 수의 관리 테이블(615)을 포함한다. 테이블(615)은 메모리 디바이스(610-1, ..., 610-N)와 연관된 다양한 정보를 유지할 수 있다. 예를 들어, 테이블(615)은 디바이스(610-1, ..., 610-N) 내 블록에 대해 블록 연령 및/또는 블록 지우기 카운트에 관한 정보를 포함할 수 있다. 테이블(615)은 메모리 디바이스(610-1, ..., 610-N)와 연관된 페이지 및/또는 블록과 연관된 에러 이력에 관한 정보를 포함할 수 있다. 예를 들어, 테이블(615)은 디바이스(610-1, ..., 610-N)와 연관된 소정 수의 에러 카운트(예컨대, 여럿 중에서도, 쓰기 동작 에러 카운트, 읽기 비트 에러 카운트, 읽기 동작 에러 카운트, 및/또는 지우기 에러 카운트)를 유지할 수 있다. 쓰기 동작 에러는 수행하지 못하는 (예컨대, 호스트 개시되거나 또는 디바이스 개시된) 쓰기 동작을 가리킨다. 읽기 동작 에러는 수행하지 못하는 (예컨대, 호스트 개시되거나 또는 디바이스 개시된) 읽기 동작을 가리킨다. 읽기 비트 에러는 읽혀지고 있는 데이터(예컨대, 페이지)와 연관된 소정 수의 에러 비트의 검출의 결과를 초래하는 읽기 동작을 가리킬 수 있다. 위에서 설명된 바와 같이, 검출된 에러의 수는 에러 정정 컴포넌트(예컨대, 619)를 통해 정정가능할 수도 또는 아닐 수도 있다. 검출된 에러의 수가 에러 정정 컴포넌트(예컨대, 619)를 통해 정정가능한 에러의 임계 수 위에 있으면, 그 비트 에러는 정정가능하지 않은 비트 에러라고 지칭된다. 테이블(615)은 메모리 디바이스(610-1, ..., 610-N)와 연관된 블록에 의해 경험된 정정가능한 및/또는 정정가능하지 않은 읽기 비트 에러의 카운트를 유지할 수 있다. 테이블(615)은 또한, 여럿 중에서도, LBA 테이블을 포함할 수 있다.
컨트롤러(608)의 메모리 관리 컴포넌트(613)는 리던던시 관리 컴포넌트(617)를 포함하는데, RAID(리던던트 어레이의 독립 디스크, 여기서 "디스크"라는 용어는 단지 하드 디스크 드라이브를 사용하는 이전 구현으로부터의 이월) 유닛(617)일 수 있다. RAID 유닛(617)은 메모리 디바이스를 RAID로서 동작시키는 것과 연관되어 리던던시를 통해 데이터 신뢰도를 제공하도록 사용될 수 있다. RAID 유닛(617)은, 예컨대, 다양한 RAID 레벨과 연관된 여러 회로 중에서도, RAID 배타적 또는 (XOR) 회로를 포함할 수 있다.
다수의 실시예에 있어서, 컨트롤러(608)는, 호스트 인터페이스(606)와 메모리 디바이스(610-1, ..., 610-N) 사이에서 전송되는 데이터의 무결성을 유지하면서, 읽기 및 쓰기 동작과 같은 다양한 동작과 연관된 에러 발생(예컨대, 비트 에러 및/또는 동작상 에러)을 적극적으로 검출하고 그로부터 복구하도록 구성된다. 컨트롤러(608)는 장래의 정정가능하지 않은 에러를 방지하기 위해 장애 있는 메모리 자원(예컨대, 페이지, 블록 및/또는 디바이스(610-1, ..., 610-N))을 사용으로부터 제거하도록 구성된다.
예를 들어, 메모리 관리 컴포넌트(613)는 (예컨대, 쓰기를 위해 메모리 디바이스(610-1, ..., 610-N) 내 블록을 준비하기 위해서) 메모리 제어 컴포넌트(611)에 지우기 커맨드를 개시할 수 있다. 제어 컴포넌트(611)는 지우기 동작과 연관되어 지우기 에러의 발생을 검출할 수 있고 메모리 관리 컴포넌트(613)에 에러 발생을 보고할 수 있다. 지우기 에러의 경우에 있어서는, 지우기 동작의 수행 이전에 블록 내 어떠한 유효 데이터라도 다른 블록으로 이동되었을 것이므로 데이터 복구는 필요하지 않다. 지우기 에러와 연관된 블록은 지우기 에러의 수가 임계 수에 도달할 때 은퇴 당할 수 있다. 다수의 실시예에 있어서, 지우기 에러의 임계 수는 하나이다; 그렇지만, 실시예들은 그렇게 한정되는 것은 아니다.
다양한 실시예에 있어서, 컨트롤러(608)는, 컨트롤러가 다양한 디바이스 동작 및/또는 호스트 동작(예컨대, 읽기 및/또는 쓰기 동작 등)을 수행하고 있는 동안, 메모리 디바이스(610-1, ..., 610-N)와 연관된 다양한 여러 메모리 관리 기능 중에서도, 마모 레벨링 기능(예컨대, 폐영역 수집 및/또는 회수), (예컨대, ECC와 연관된) 에러 검출/정정 기능, 페이지 및/또는 블록 은퇴 기능, 및/또는 RAID 기능과 같은 다양한 메모리 관리 기능을 수행할 수 있다. 그와 같이, 다양한 메모리 관리 기능은 사용자에게 인지되는 충격 없이 수행될 수 있다. 본 명세서에서 설명되는 실시예들에 따라 데이터 무결성을 유지하면서 에러 복구 동작을 수행하는 컨트롤러(608)의 능력은 행해지는 디바이스 제조 테스트(예컨대, 실제 소비자에게 제공되기 이전에 수행된 예비-출하를 테스트)의 양을 감축할 수 있다. 예를 들어, 본 발명의 실시예는, 도 6에 예시된 그들 컴포넌트(예컨대, 611, 613, 615, 617, 619)와 같은 하드웨어 컴포넌트를 통해 현장에서 테스트가 수행될 수 있으므로, 불량 블록 또는 불량 메모리 디바이스(예컨대, 610-1, ..., 610-N)의 위치를 결정하는 것과 연관된 디바이스 제조 테스트의 발생을 감축 또는 방지할 수 있다. 즉, 메모리 디바이스(610-1, ..., 610-N)는 메모리 디바이스(610-1, ..., 610-N)와 연관된 불량 블록 위치에 관해 테스트받지 않을 수 있다. 그러한 테스트를 컨트롤러(608)의 하드웨어 컴포넌트에 시프트함으로써 메모리 디바이스(예컨대, 610-1, ..., 610-N)의 예비-출하 테스트를 감축 및/또는 제거하는 것은, 사용자에게 인지되는 충격을, 있다 하더라도, 거의 발생시키지 않으면서, 디바이스의 예비-출하 테스트와 연관된 비용을 감축할 수 있다.
일례로서, 호스트 읽기 동작과 연관하여, 메모리 디바이스(610-1, ..., 610-N)로부터 읽혀진 데이터는 데이터에서의 비트 에러를 결정(예컨대, 검출)하기 위해 에러 정정 컴포넌트(619)를 사용하여 체크될 수 있다. 비트 에러의 수가 (있다면) 검출되고 비트 에러의 수가 컴포넌트(619)에 의해 정정가능한 비트 에러의 임계 수 아래에 있으면(예컨대, 비트 에러가 정정가능한 비트 에러이면), 데이터는 정정되어 호스트에 제공될 것이다. 정정가능한 비트 에러의 발생은, (예컨대, 테이블(615)에서) 데이터가 읽혀져 나왔던 블록과 연관된 비트 에러 카운트(예컨대, 정정가능한 비트 에러의 카운트)를 유지할 수 있고, 비트 에러 카운트가 특정 비트 에러 카운트 임계값을 초과하면 그 블록을 은퇴시킬 수 있는 메모리 관리 컴포넌트(613)에 보고된다. 검출된 비트 에러의 수가 컴포넌트(619)에 의해 정정가능한 비트 에러의 임계 수 위에 있으면(예컨대, 비트 에러가 정정가능하지 않은 비트 에러이면), 요청된 읽기 데이터는 RAID 유닛(617)을 사용하여 자동으로 복구될 수 있고 호스트에 제공될 수 있다. 다수의 실시예에 있어서, 메모리 관리 컴포넌트(613)는 (예컨대, 에러 정정 컴포넌트(619)로부터의 보고를 통해) 정정가능하지 않은 비트 에러 발생의 표시 수신에 응답하여 읽기 데이터의 복구를 자동으로 개시한다. 메모리 관리 컴포넌트(613)는 (예컨대, 테이블(615)에서) 데이터가 읽혀져 나왔던 블록과 연관된 비트 에러 카운트(예컨대, 정정가능하지 않은 비트 에러의 카운트)를 유지할 수 있고, 비트 에러 카운트가 특정 비트 에러 카운트 임계값을 초과하면 그 블록을 은퇴시킬 수 있다. (예컨대, 비트 에러 카운트가 비트 에러 카운트 임계값을 초과하는 것에 응답하여) 블록을 은퇴시키기 이전에 그 블록과 연관된 데이터는 RAID 유닛(617)을 사용하여 복구될 수 있고 그 데이터는 새로운 블록(예컨대, 이용가능한 양호한 블록)으로 이동될 수 있다.
디바이스 읽기 동작(예컨대, 회수와 같은 메모리 관리 프로세스와 연관되어 제어 컴포넌트(611)에 의해 개시된 읽기 동작)과 연관된 비트 에러는 유사하게 취급될 수 있다. 예를 들어, 정정가능한 비트 에러가 컴포넌트(619)에 의해 검출되면, 데이터는 정정되어 (호스트 읽기 동작과 연관되어 호스트에 제공되는 것과는 달리) 메모리 디바이스(610-1, ..., 610-N) 내 새로운 블록으로 이동될 수 있다. 정정가능한 비트 에러의 발생은, 데이터가 읽혀져 나왔던 블록과 연관된 비트 에러 카운트를 유지할 수 있고, 비트 에러 카운트가 특정 비트 에러 카운트 임계값을 초과하면 그 블록을 은퇴시킬 수 있는 메모리 관리 컴포넌트(613)에 보고된다. 검출된 비트 에러의 수가 컴포넌트(619)에 의해 정정가능한 비트 에러의 임계 수 위에 있으면(예컨대, 비트 에러가 정정가능하지 않은 비트 에러이면), 요청된 읽기 데이터는 RAID 유닛(617)을 사용하여 즉시 복구될 수 있고 새로운 블록으로 이동될 수 있다. 정정가능하지 않은 비트 에러의 발생은, 데이터가 읽혀져 나왔던 블록과 연관된 비트 에러 카운트를 유지할 수 있고, 비트 에러 카운트가 특정 비트 에러 카운트 임계값을 초과하면 그 블록을 은퇴시킬 수 있는 메모리 관리 컴포넌트(613)에 보고된다. (예컨대, 비트 에러 카운트가 비트 에러 카운트 임계값을 초과하는 것에 응답하여) 블록을 은퇴시키기 이전에 그 블록과 연관된 데이터는 RAID 유닛(617)을 사용하여 복구될 수 있고 그 데이터는 새로운 블록(예컨대, 이용가능한 양호한 블록)으로 이동될 수 있다.
동작상 읽기 에러(예컨대, 동작상 호스트 읽기 에러 및 동작상 디바이스 읽기 에러)는 호스트 및 디바이스 읽기 동작에 대응하는 비트 에러와 연관하여 위에서 설명된 것과 유사한 방식으로 취급될 수 있다. 예컨대, 읽기 요청이 실패하면, 실패의 표시가 메모리 관리 컴포넌트(613)에 제공될 수 있어서, (예컨대, RAID 유닛(617)을 통해) 그 요청된 읽기 데이터의 복구를 자동으로 개시할 수 있다.
동작상 쓰기 에러(예컨대, 동작상 호스트 쓰기 에러 및 동작상 디바이스 쓰기 에러)는 동작상 읽기 에러 및/또는 호스트 및 디바이스 읽기 동작에 대응하는 비트 에러와 연관하여 위에서 설명된 것과 유사한 방식으로 취급될 수 있다. 예컨대, 쓰기 요청이 실패하면, 실패의 표시가 메모리 관리 컴포넌트(613)에 제공될 수 있어서, (예컨대, RAID 유닛(617)을 통해) 그 요청된 쓰기 데이터의 복구를 자동으로 개시할 수 있다. 다수의 실시예에 있어서, 메모리 관리 컴포넌트(613)는 (예컨대, 제어 컴포넌트(611)로부터의 보고를 통해) 쓰기 에러 발생의 표시 수신에 응답하여 쓰기 데이터의 복구를 자동으로 개시한다. 메모리 관리 컴포넌트(613)는 (예컨대, 테이블(615)에서) 데이터가 쓰이려 했었던 블록과 연관된 쓰기 에러 카운트를 유지할 수 있고, 쓰기 에러 카운트가 특정 쓰기 에러 카운트 임계값을 초과하면 그 블록을 은퇴시킬 수 있다. (예컨대, RAID 유닛(617)을 통해) 쓰기 데이터의 자동 복구와 연관하여, 복구된 쓰기 데이터는 새로운 블록(예컨대, 이용가능한 양호한 블록)으로 이동될 수 있다.
결론
본 발명은 데이터 무결성을 제공하기 위한 방법 및 장치(예컨대, 컴퓨팅 시스템, 메모리 시스템, 컨트롤러 등)를 포함한다. 하나 이상의 방법 실시예는, 예컨대: 소정 수의 메모리 디바이스(예컨대, 단일 메모리 디바이스)에 쓰일 소정 수의 데이터 섹터를 수신하는 것; 특정 포맷을 갖는 제1 메타데이터로서 소정 수의 섹터에 대응하고 제1 무결성 데이터를 포함하는 제1 메타데이터를 소정 수의 섹터에 첨부하는 것; 소정 수의 섹터 중 적어도 하나에 대응하는 제2 무결성 데이터로서 제2 메타데이터에서 제공될 제2 무결성 데이터를 발생시키는 것(제2 메타데이터는 제2 포맷을 가짐); 및 소정 수의 섹터 중 적어도 하나 및 제2 무결성 데이터에 대응하는 에러 데이터를 포함하는 제3 무결성 데이터로서 제2 메타데이터에서 제공될 제3 무결성 데이터를 발생시키는 것을 포함할 수 있다.
엘리먼트가 또 다른 엘리먼트 "상에", "에 접속되어" 또는 "와 결합되어" 있다라고 지칭될 때, 그것은 다른 엘리먼트 상에 직접, 그와 접속되어, 또는 결합되어 있거나 또는 개입하는 엘리먼트가 있을 수 있음을 이해할 것이다. 대조적으로, 엘리먼트가 또 다른 엘리먼트 "상에 직접", "에 직접 접속되어" 또는 "와 직접 결합되어" 있다라고 지칭될 때에는, 개입하는 엘리먼트 또는 층이 없다. 본 명세서에서 사용되는 바와 같이, 용어 "및/또는"은 연관된 열거된 아이템 중 하나 이상의 모든 그리고 어떠한 조합이라도 포함한다.
본 명세서에서 사용되는 바와 같이, 용어 "및/또는"은 연관된 열거된 아이템 중 하나 이상의 모든 그리고 어떠한 조합이라도 포함한다. 본 명세서에서 사용되는 바와 같이, 용어 "또는"은, 달리 언급되지 않으면, 논리적으로 포함적 논리합을 의미한다. 즉, "A 또는 B"는 (A만), (B만), 또는 (A와 B 둘 다)를 포함할 수 있다. 바꾸어 말하면, "A 또는 B"는 "A 및/또는 B" 또는 "A 및 B 중 하나 이상"을 의미할 수 있다.
본 명세서에서 다양한 엘리먼트를 설명하기 위해 용어 제1, 제2, 제3 등이 사용될 수 있기는 하지만, 이들 엘리먼트는 이들 용어에 의해 한정되어서는 아니된다. 이들 용어는 하나의 엘리먼트를 또 다른 엘리먼트와 구별하기 위해 사용될 뿐이다. 그러므로, 본 발명의 교시로부터 벗어남이 없이 제1 엘리먼트는 제2 엘리먼트라고 칭해질 수 있다.
본 명세서에서는 특정 실시예가 예시되고 설명되었지만, 나타낸 특정 실시예에 대해 동일 결과를 달성하도록 계산된 배열이 대체될 수 있음을 당업자는 인식할 것이다. 이러한 개시는 본 발명의 하나 이상의 실시예의 적응 또는 변종을 망라하려는 의도이다. 위의 설명은 제한적 방식이 아니라 예시적 방식으로 이루어졌음을 이해해야 한다. 위 실시예들의 조합, 및 본 명세서에서 구체적으로 설명되지는 않은 다른 실시예가 당업자에게는 위 설명을 검토할 때 명백하게 될 것이다. 본 발명의 하나 이상의 실시예의 범위는 위 구조 및 방법이 사용되는 다른 애플리케이션을 포함한다. 그러므로, 본 발명의 하나 이상의 실시예의 범위는 첨부된 청구범위와 더불어 그러한 청구범위가 권리를 갖는 균등물의 전 범위를 참조하여 결정되어야 한다.
이상의 상세한 설명에 있어서는, 개시를 능률화하려는 목적으로 다양한 특징이 단일 실시예에 함께 그룹화되어 있다. 본 명세서의 이러한 방식은 본 발명의 개시된 실시예가 각각의 청구항에서 명시적으로 열거되는 것보다 더 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되려는 것은 아니다. 오히려, 이하의 청구범위가 반영하는 바와 같이, 진보적 당해 사항은 단일의 개시된 실시예의 모든 특징보다 더 적은 특징에 있는 것이다. 그러므로, 이로써 이하의 청구범위는 상세한 설명 내에 편입되는 것이고, 각각의 청구항은 별개의 실시예로서 독립하여 있는 것이다.
Claims (30)
- 소정 수의 메모리 디바이스에 결합되도록 구성된 컨트롤러를 포함하는 장치로서, 상기 컨트롤러는,
상기 소정 수의 메모리 디바이스에 쓰일(to be written) 소정 수의 데이터 섹터를 수신하고;
제1 포맷을 갖는 제1 메타데이터로서, 상기 소정 수의 섹터에 대응하고 제1 무결성 데이터를 포함하는 상기 제1 메타데이터를 상기 소정 수의 섹터에 첨부하며;
상기 소정 수의 섹터 중 적어도 하나 및 상기 제1 메타데이터 중 적어도 일부를 커버하는 제2 무결성 데이터로서, 제2 포맷을 갖고 상기 제1 메타데이터의 상기 적어도 일부를 포함하는 제2 메타데이터에서 제공될 상기 제2 무결성 데이터를 발생시키고; 그리고
상기 소정 수의 섹터 중 상기 적어도 하나 및 상기 제2 무결성 데이터를 커버하는 에러 데이터를 포함하는 제3 무결성 데이터로서, 상기 제2 메타데이터에서 제공될 상기 제3 무결성 데이터를 발생시키도록 구성되는 것인 장치. - 제1항에 있어서, 상기 컨트롤러는 상기 제2 무결성 데이터를 발생시키기 이전에 상기 제1 무결성 데이터의 체크를 수행하도록 구성되는 것인 장치.
- 제1항에 있어서,
상기 메모리 디바이스에 쓰일 상기 소정 수의 섹터에 대응하는 상기 제1 메타데이터의 상기 제1 무결성 데이터는 섹터당 기준으로 에러 데이터를 포함하고;
상기 제1 수의 섹터 중 상기 적어도 하나에 대응하는 상기 제2 메타데이터의 상기 제2 무결성 데이터는 멀티-섹터 기준으로 에러 데이터를 포함하는 것인 장치. - 제1항에 있어서, 상기 컨트롤러는 상기 소정 수의 섹터 및 상기 제2 포맷을 갖는 대응하는 제2 메타데이터를 상기 소정 수의 메모리 디바이스에 쓰도록 구성되고, 상기 컨트롤러는,
읽기 동작과 연관되어 상기 소정 수의 메모리 디바이스로부터 상기 제1 수의 섹터 및 대응하는 제2 메타데이터를 수신하고;
상기 제3 무결성 데이터의 상기 에러 데이터의 체크를 수행하며;
후속해서 상기 제2 무결성 데이터의 어드레스 데이터 및 에러 데이터 중 적어도 하나의 체크를 수행하고; 그리고
상기 소정 수의 섹터를 호스트에 제공하기 이전에 상기 제1 수의 섹터와 연관된 상기 메타데이터 포맷을 상기 제2 포맷으로부터 다시 상기 제1 포맷으로 조절하도록 더 구성되는 것인 장치. - 제4항에 있어서, 상기 제1 수의 섹터를 상기 호스트에 제공하기 이전에 상기 제1 수의 섹터와 연관된 상기 메타데이터 포맷을 상기 제2 포맷으로부터 다시 상기 제1 포맷으로 조절하도록 구성되는 상기 컨트롤러는,
상기 소정 수의 섹터에 대해 섹터당 기준으로 에러 데이터를 발생시키고; 그리고
상기 소정 수의 섹터를 상기 호스트에 제공하기 이전에 각각의 섹터의 상기 에러 데이터의 체크를 수행하도록 구성되는 상기 컨트롤러를 포함하는 것인 장치. - 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 제1 메타데이터를 첨부하도록 구성되는 상기 컨트롤러는 쓰기 동작과 연관되어 상기 제2 무결성 데이터를 발생시키기 이전에 섹터당 기준으로 상기 제1 무결성 데이터의 에러 데이터를 발생시켜 상기 에러 데이터를 상기 제1 메타데이터에 삽입하도록 구성되는 상기 컨트롤러를 포함하는 것인 장치.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 소정 수의 데이터 섹터는 제1 수의 데이터 섹터를 포함하고 상기 컨트롤러는, 부분적 페이지 쓰기 동작과 연관되어,
상기 제2 포맷을 갖는 그 대응하는 메타데이터와 연관되는 제2 수의 섹터로서 상기 소정 수의 메모리 디바이스로부터의 데이터 페이지에 대응하는 상기 제2 수의 섹터를 수신하고;
상기 소정 수의 메모리 디바이스로부터의 상기 페이지의 상기 섹터와 연관된 메타데이터 포맷을 상기 제2 포맷으로부터 상기 제1 포맷으로 조절하고; 그리고
상기 데이터 페이지에 대응하는 상기 제2 수의 섹터 중 적어도 하나를 상기 제1 수의 섹터 중 적어도 하나로 대체함으로써 병합된 페이지를 형성하도록 더 구성되는 것인 장치. - 제7항에 있어서, 상기 컨트롤러는 상기 데이터 페이지에 대응하는 상기 제2 수의 섹터 중 적어도 하나를 상기 제1 수의 섹터 중 적어도 하나로 대체하기 이전에 상기 제2 수의 섹터에 대응하는 상기 메타데이터의 에러 데이터의 체크를 수행하도록 구성되는 것인 장치.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 소정 수의 섹터는 제1 수의 섹터를 포함하고, 상기 컨트롤러는 상기 제1 수의 섹터 및 상기 제2 포맷을 갖는 대응하는 제2 메타데이터를 상기 소정 수의 메모리 디바이스에 데이터 페이지로서 쓰도록 구성되며, 상기 컨트롤러는, 부분적 페이지 읽기 동작과 연관되어,
상기 제2 포맷을 갖는 그 대응하는 메타데이터와 연관되는 제2 수의 섹터로서 상기 소정 수의 메모리 디바이스로부터의 데이터 페이지에 대응하는 상기 제2 수의 섹터를 수신하고;
상기 부분적 페이지 읽기 동작과 연관된 상기 제2 수의 섹터 중 선택된 하나 이상에 대응하는 상기 메타데이터의 에러 데이터의 체크를 수행하며;
상기 선택된 섹터에 대응하는 상기 메타데이터가 섹터당 기준으로 무결성 데이터를 포함하게 되도록 상기 제2 수의 섹터 중 상기 선택된 하나 이상과 연관된 상기 메타데이터 포맷을 상기 제1 포맷으로 조절하고; 그리고
상기 부분적 페이지의 상기 선택된 섹터를 호스트에 제공하기 이전에 상기 선택된 섹터에 대응하는 상기 무결성 데이터의 체크를 수행하도록 더 구성되는 것인 장치. - 제9항에 있어서, 상기 컨트롤러는, 상기 부분적 페이지 읽기 동작과 연관되어, 상기 선택된 섹터에 대응하는 상기 무결성 데이터의 체크를 수행하기 이전에 상기 소정 수의 메모리 디바이스로부터 수신된 상기 선택된 섹터에 대응하는 상기 메타데이터의 무결성 데이터의 체크를 수행하도록 더 구성되는 것인 장치.
- 데이터 무결성을 제공하기 위한 방법으로서,
소정 수의 메모리 디바이스에 쓰일 소정 수의 데이터 섹터를 수신하는 단계;
조절된 메타데이터 포맷을 갖고 제1 메타데이터의 적어도 일부를 포함하는 제2 메타데이터에서 제공될 제2 무결성 데이터를 발생시키는 단계; 및
상기 제2 메타데이터에서 제공될 제3 무결성 데이터를 발생시키는 단계를 포함하되,
상기 소정 수의 섹터는 그 연관된 제1 무결성 데이터를 포함하는 상기 제1 메타데이터를 갖고, 상기 제1 메타데이터는 특정 메타데이터 포맷을 가지며,
상기 제2 무결성 데이터는 상기 소정 수의 섹터 중 적어도 하나 및 상기 제1 메타데이터의 상기 적어도 일부를 커버하고,
상기 제3 무결성 데이터는 상기 소정 수의 섹터 중 상기 적어도 하나 및 상기 제2 무결성 데이터를 커버하는 에러 데이터를 포함하는 것인, 데이터 무결성을 제공하기 위한 방법. - 제11항에 있어서, 상기 특정 메타데이터 포맷은 섹터당 기준으로 상기 제1 무결성 데이터를 포함하고, 상기 조절된 메타데이터 포맷은 멀티-섹터 기준으로 상기 제2 무결성 데이터를 포함하는 것인, 데이터 무결성을 제공하기 위한 방법.
- 제11항에 있어서, 상기 제1 메타데이터를 상기 제2 메타데이터로 대체하는 단계를 더 포함하는, 데이터 무결성을 제공하기 위한 방법.
- 삭제
- 삭제
- 제11항 내지 제13항 중 어느 한 항에 있어서, 상기 소정 수의 섹터 및 대응하는 제2 메타데이터를 상기 메모리 디바이스에 쓰는 단계를 포함하는, 데이터 무결성을 제공하기 위한 방법.
- 제11항 내지 제13항 중 어느 한 항에 있어서, 상기 방법은, 상기 메모리 디바이스에 쓰인 상기 소정 수의 섹터 중 하나 이상과 연관된 읽기 동작과 연관되어, 상기 하나 이상의 섹터에 대응하는 상기 제2 메타데이터에서 제공된 상기 제3 무결성 데이터의 체크를 수행하는 단계를 포함하는 것인, 데이터 무결성을 제공하기 위한 방법.
- 제17항에 있어서, 상기 방법은, 상기 메모리 디바이스에 쓰인 상기 소정 수의 섹터 중 하나 이상과 연관된 상기 읽기 동작과 연관되어,
상기 제3 무결성 데이터의 체크에 후속해서, 상기 소정 수의 섹터 중 상기 하나 이상에 대응하는 에러 데이터를 포함하는 상기 제2 무결성 데이터의 체크를 수행하는 단계; 및
상기 소정 수의 섹터 중 상기 하나 이상과 연관된 상기 조절된 메타데이터 포맷을 다시 상기 특정 메타데이터 포맷으로 조절하는 단계를 포함하는 것인, 데이터 무결성을 제공하기 위한 방법. - 제18항에 있어서, 상기 소정 수의 섹터 중 상기 하나 이상과 연관된 상기 조절된 메타데이터 포맷을 다시 상기 특정 메타데이터 포맷으로 조절하는 단계는 제3 메타데이터로 상기 제2 메타데이터를 대체하는 단계를 포함하고, 상기 제3 메타데이터는 섹터당 기준으로 상기 소정 수의 섹터 중 상기 하나 이상에 대응하는 제4 무결성 데이터를 포함하는 것인, 데이터 무결성을 제공하기 위한 방법.
- 제19항에 있어서, 상기 방법은 상기 소정 수의 섹터 중 상기 하나 이상을 호스트에 제공하기 이전에 상기 소정 수의 섹터 중 상기 하나 이상에 대응하는 상기 제4 무결성 데이터를 상기 소정 수의 섹터 중 상기 하나 이상에 대응하는 상기 제1 무결성 데이터와 비교하는 단계를 포함하는 것인, 데이터 무결성을 제공하기 위한 방법.
- 제11항 내지 제13항 중 어느 한 항에 있어서, 상기 방법은,
상기 제2 무결성 데이터를 발생시키기 이전에, 상기 메모리 디바이스로부터의 페이지를 읽는 단계로서, 상기 페이지는 다수의 섹터 및 상기 조절된 메타데이터 포맷을 갖는 대응하는 메타데이터를 포함하는 것인, 상기 페이지를 읽는 단계;
상기 페이지와 연관된 무결성 데이터의 체크를 수행하는 단계;
상기 다수의 섹터와 연관된 상기 조절된 메타데이터 포맷을 상기 특정 메타데이터 포맷으로 조절하는 단계; 및
쓰기 페이지를 상기 메모리 디바이스에 쓰기 이전에 상기 읽혀진 페이지와 연관된 상기 다수의 섹터 중 하나 이상을 상기 수신된 수의 섹터 중 하나 이상으로 대체함으로써 상기 쓰기 페이지를 형성하는 단계를 포함하는 것인, 데이터 무결성을 제공하기 위한 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 장치로서,
소정 수의 메모리 디바이스에 쓰일 소정 수의 데이터 섹터에 제1 메타데이터를 첨부하도록 구성된 제1 컴포넌트;
제2 포맷을 갖고 상기 제1 메타데이터의 적어도 일부를 포함하는 제2 메타데이터에서 제공될 제2 무결성 데이터를 발생시키도록 구성된 제2 컴포넌트; 및
상기 제2 메타데이터에서 제공될 제3 무결성 데이터를 발생시키도록 구성된 제3 컴포넌트를 포함하되,
상기 제1 메타데이터는 제1 포맷을 갖고 제1 무결성 데이터를 포함하며, 상기 제2 무결성 데이터는 상기 소정 수의 섹터 중 적어도 하나 및 상기 제1 메타데이터의 상기 적어도 일부를 커버하고, 상기 제3 무결성 데이터는 상기 소정 수의 섹터 중 상기 적어도 하나 및 상기 제2 무결성 데이터를 커버하는 에러 데이터를 포함하는 것인 장치. - 데이터 무결성을 제공하기 위한 방법으로서,
소정 수의 메모리 디바이스에 데이터 그룹을 저장하는 단계를 포함하되,
상기 데이터 그룹은
소정 수의 데이터 섹터; 및
상기 소정 수의 데이터 섹터에 대응하는 메타데이터를 포함하고, 상기 메타데이터는
상기 소정 수의 섹터에 대응하는 제1 무결성 데이터;
상기 소정 수의 섹터 중 적어도 하나에 대응하는 제2 무결성 데이터; 및
상기 소정 수의 섹터 중 상기 적어도 하나에 그리고 상기 제2 무결성 데이터에 대응하는 에러 데이터를 포함하는 제3 무결성 데이터를 포함하고,
상기 소정 수의 섹터에 대응하는 상기 메타데이터는 제2 메타데이터이고,
상기 방법은, 상기 데이터 그룹을 저장하는 단계 이전에, 상기 소정 수의 섹터에 대응하는 제1 메타데이터를 상기 제2 메타데이터로 교체하는 단계를 포함하며, 상기 제2 메타데이터는 상기 제1 메타데이터의 적어도 일부를 포함하고,
상기 제2 무결성 데이터는 상기 소정 수의 섹터 중 적어도 하나 및 상기 제1 메타데이터의 상기 적어도 일부를 커버하는 것인, 데이터 무결성을 제공하기 위한 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/149,488 US8589761B2 (en) | 2011-05-31 | 2011-05-31 | Apparatus and methods for providing data integrity |
US13/149,488 | 2011-05-31 | ||
PCT/US2012/039851 WO2012166725A2 (en) | 2011-05-31 | 2012-05-29 | Apparatus and methods for providing data integrity |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140018393A KR20140018393A (ko) | 2014-02-12 |
KR101560077B1 true KR101560077B1 (ko) | 2015-10-13 |
Family
ID=47260250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137034157A KR101560077B1 (ko) | 2011-05-31 | 2012-05-29 | 데이터 무결성을 제공하기 위한 방법 및 장치 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8589761B2 (ko) |
EP (1) | EP2715550B1 (ko) |
JP (1) | JP5792380B2 (ko) |
KR (1) | KR101560077B1 (ko) |
CN (1) | CN103620565B (ko) |
TW (1) | TWI468942B (ko) |
WO (1) | WO2012166725A2 (ko) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4148883B2 (ja) * | 2002-12-18 | 2008-09-10 | 株式会社パイオラックス | グローブボックス用リッドロック装置 |
US8860117B2 (en) | 2011-04-28 | 2014-10-14 | Micron Technology, Inc. | Semiconductor apparatus with multiple tiers of memory cells with peripheral transistors, and methods |
US9026887B2 (en) | 2012-03-15 | 2015-05-05 | Micron Technology, Inc. | Physical page, logical page, and codeword correspondence |
US8964474B2 (en) | 2012-06-15 | 2015-02-24 | Micron Technology, Inc. | Architecture for 3-D NAND memory |
US9015554B2 (en) * | 2012-12-20 | 2015-04-21 | Seagate Technology Llc | Management of non-valid decision patterns of a soft read retry operation |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US9183081B2 (en) * | 2013-03-12 | 2015-11-10 | Sandisk Technologies Inc. | Systems and methods for performing defect detection and data recovery in a memory system |
KR20150020385A (ko) * | 2013-08-13 | 2015-02-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 |
JPWO2015029230A1 (ja) * | 2013-08-30 | 2017-03-02 | 株式会社日立製作所 | 記憶装置及びデータ制御方法 |
GB201322075D0 (en) | 2013-12-13 | 2014-01-29 | Ibm | Device for selecting a level for at least one read voltage |
US9262268B2 (en) * | 2013-12-20 | 2016-02-16 | Seagate Technology Llc | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US10365966B1 (en) * | 2014-03-25 | 2019-07-30 | Marvell lnternational Ltd. | Methods and systems for wordline based encoding and decoding in NAND flash |
TWI545581B (zh) * | 2014-04-15 | 2016-08-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 |
US9940193B2 (en) | 2014-06-06 | 2018-04-10 | Micron Technology, Inc. | Chunk definition for partial-page read |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9652321B2 (en) * | 2014-09-23 | 2017-05-16 | Intel Corporation | Recovery algorithm in non-volatile memory |
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 |
US10073735B1 (en) * | 2014-10-28 | 2018-09-11 | Seagate Technology Llc | Seeding mechanism for error detection codes |
US10339048B2 (en) | 2014-12-23 | 2019-07-02 | International Business Machines Corporation | Endurance enhancement scheme using memory re-evaluation |
US9990279B2 (en) | 2014-12-23 | 2018-06-05 | International Business Machines Corporation | Page-level health equalization |
US10332613B1 (en) * | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
CN105068939A (zh) * | 2015-07-21 | 2015-11-18 | 广东明阳龙源电力电子有限公司 | 一种应用于工业级嵌入式软件系统的存储芯片及其方法 |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
US9886214B2 (en) | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
US9679650B1 (en) | 2016-05-06 | 2017-06-13 | Micron Technology, Inc. | 3D NAND memory Z-decoder |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
US10283215B2 (en) | 2016-07-28 | 2019-05-07 | Ip Gem Group, Llc | Nonvolatile memory system with background reference positioning and local reference positioning |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US20190065303A1 (en) * | 2017-08-31 | 2019-02-28 | Hewlett Packard Enterprise Development Lp | Processor analysis |
DE102017124313B4 (de) * | 2017-10-18 | 2021-03-18 | Infineon Technologies Ag | Speicheranordnung und verfahren zum verifizieren eines speicherzugriffs |
TW202001565A (zh) * | 2018-06-21 | 2020-01-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 |
CN110659151B (zh) | 2018-06-28 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 数据校验方法及装置,存储介质 |
JP7177338B2 (ja) * | 2018-09-06 | 2022-11-24 | 富士通株式会社 | メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法 |
CN112133362B (zh) * | 2019-06-25 | 2023-05-16 | 华邦电子股份有限公司 | 存储器存储装置及其存储器测试方法 |
US11450381B2 (en) | 2019-08-21 | 2022-09-20 | Micron Technology, Inc. | Multi-deck memory device including buffer circuitry under array |
US11150988B1 (en) * | 2020-03-30 | 2021-10-19 | Dell Products L.P. | Metadata pattern to detect write loss/inconsistencies of optimized-write-once operations |
US12072761B2 (en) * | 2022-06-02 | 2024-08-27 | Micron Technology, Inc. | Memory sub-system addressing for data and additional data portions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010096153A2 (en) | 2009-02-18 | 2010-08-26 | Micron Technology, Inc. | Data integrity in memory controllers and methods |
WO2011019794A2 (en) * | 2009-08-11 | 2011-02-17 | Texas Memory Systems, Inc. | Method and apparatus for addressing actual or predicted failures in a flash-based storage system |
JP2011507066A (ja) | 2007-12-06 | 2011-03-03 | サンディスク アイエル リミテッド | メモリアレイにおけるエラー訂正 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7020835B2 (en) * | 2000-10-19 | 2006-03-28 | Oracle International Corporation | Enhancements to data integrity verification mechanism |
US7315976B2 (en) * | 2002-01-31 | 2008-01-01 | Lsi Logic Corporation | Method for using CRC as metadata to protect against drive anomaly errors in a storage array |
US20040153746A1 (en) | 2002-04-24 | 2004-08-05 | Talagala Nisha D. | Mechanisms for embedding and using integrity metadata |
US20040123032A1 (en) * | 2002-12-24 | 2004-06-24 | Talagala Nisha D. | Method for storing integrity metadata in redundant data layouts |
US7577804B2 (en) | 2004-10-06 | 2009-08-18 | International Business Machines Corporation | Detecting data integrity |
JP4953648B2 (ja) * | 2006-02-03 | 2012-06-13 | パナソニック株式会社 | 不揮発性記憶装置およびメモリコントローラ |
US20080086615A1 (en) * | 2006-10-06 | 2008-04-10 | John Charles Elliott | Method and Apparatus to Internalize Non-Volatile Data Function for Sector Size Conversion |
US7877665B2 (en) | 2006-12-29 | 2011-01-25 | Sandisk Corporation | Page by page ECC variation in a memory device |
US7873878B2 (en) * | 2007-09-24 | 2011-01-18 | International Business Machines Corporation | Data integrity validation in storage systems |
JP5166074B2 (ja) * | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
US8213229B2 (en) | 2008-08-22 | 2012-07-03 | HGST Netherlands, B.V. | Error control in a flash memory device |
-
2011
- 2011-05-31 US US13/149,488 patent/US8589761B2/en active Active
-
2012
- 2012-05-29 EP EP12793438.8A patent/EP2715550B1/en active Active
- 2012-05-29 JP JP2014513640A patent/JP5792380B2/ja active Active
- 2012-05-29 WO PCT/US2012/039851 patent/WO2012166725A2/en active Application Filing
- 2012-05-29 KR KR1020137034157A patent/KR101560077B1/ko active IP Right Grant
- 2012-05-29 CN CN201280026666.3A patent/CN103620565B/zh active Active
- 2012-05-31 TW TW101119614A patent/TWI468942B/zh active
-
2013
- 2013-10-21 US US14/058,619 patent/US9152512B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011507066A (ja) | 2007-12-06 | 2011-03-03 | サンディスク アイエル リミテッド | メモリアレイにおけるエラー訂正 |
WO2010096153A2 (en) | 2009-02-18 | 2010-08-26 | Micron Technology, Inc. | Data integrity in memory controllers and methods |
WO2011019794A2 (en) * | 2009-08-11 | 2011-02-17 | Texas Memory Systems, Inc. | Method and apparatus for addressing actual or predicted failures in a flash-based storage system |
Also Published As
Publication number | Publication date |
---|---|
US20140101490A1 (en) | 2014-04-10 |
JP5792380B2 (ja) | 2015-10-14 |
EP2715550A2 (en) | 2014-04-09 |
TW201303596A (zh) | 2013-01-16 |
EP2715550A4 (en) | 2014-11-12 |
WO2012166725A2 (en) | 2012-12-06 |
US9152512B2 (en) | 2015-10-06 |
WO2012166725A3 (en) | 2013-01-24 |
TWI468942B (zh) | 2015-01-11 |
US8589761B2 (en) | 2013-11-19 |
KR20140018393A (ko) | 2014-02-12 |
JP2014515536A (ja) | 2014-06-30 |
CN103620565B (zh) | 2016-08-17 |
CN103620565A (zh) | 2014-03-05 |
EP2715550B1 (en) | 2015-10-21 |
US20120311388A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101560077B1 (ko) | 데이터 무결성을 제공하기 위한 방법 및 장치 | |
KR101536853B1 (ko) | 데이터 무결성을 제공하기 위한 방법 및 장치 | |
CN107766172B (zh) | 用于ddr sdram接口的dram辅助纠错方法 | |
US9483370B2 (en) | Error detection/correction based memory management | |
EP2529305B1 (en) | System and method to correct data errors using a stored count of bit values | |
US9003264B1 (en) | Systems, methods, and devices for multi-dimensional flash RAID data protection | |
US20240296094A1 (en) | Memory bank protection | |
US20180203625A1 (en) | Storage system with multi-dimensional data protection mechanism and method of operation thereof | |
US11714558B2 (en) | Predictive memory management | |
JP5908106B2 (ja) | 妥当性マスクを記憶する装置および方法ならびに操作装置 | |
US10558523B2 (en) | Computing system with data protection enhancement mechanism and method of operation thereof | |
CN115705906A (zh) | 具有数据校验电路的数据存储设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180920 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190924 Year of fee payment: 5 |