KR101964207B1 - 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기 - Google Patents

데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기 Download PDF

Info

Publication number
KR101964207B1
KR101964207B1 KR1020160067413A KR20160067413A KR101964207B1 KR 101964207 B1 KR101964207 B1 KR 101964207B1 KR 1020160067413 A KR1020160067413 A KR 1020160067413A KR 20160067413 A KR20160067413 A KR 20160067413A KR 101964207 B1 KR101964207 B1 KR 101964207B1
Authority
KR
South Korea
Prior art keywords
data
error detection
memory
controller
memory device
Prior art date
Application number
KR1020160067413A
Other languages
English (en)
Other versions
KR20160066019A (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 시게이트 테크놀로지 엘엘씨
Publication of KR20160066019A publication Critical patent/KR20160066019A/ko
Application granted granted Critical
Publication of KR101964207B1 publication Critical patent/KR101964207B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/1004Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 인터페이스 에러 검출 및 처리 논리를 포함하는 제어기 및 데이터 메모리 디바이스를 포함하는 데이터 저장 시스템을 제공한다. 일 실시예에서, 반도체 패키지를 포함하는 솔리드-스테이트 메모리 디바이스가 제공된다. 메모리 어레이는 반도체 패키지에 제공되며 메모리 어레이에 저장된 데이터를 수신하기 위해 디바이스 버스에 통신가능하게 접속될 수 있는 인터페이스가 제공된다. 에러 검출 콤포넌트는 반도체 패키지에 제공되며 솔리드-스테이트 데이터 메모리 디바이스의 인터페이스와 연관된다. 데이터 검출 콤포넌트는 메모리 어레이에 데이터가 저장되기 이전에, 인터페이스에서 수신된 데이터에서 발생한 에러들을 검출하도록 구성된다.

Description

데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기{DATA MEMORY DEVICE AND CONTROLLER WITH INTERFACE ERROR DETECTION AND HANDLING LOGIC}
본 발명은 일반적으로 데이터 저장 시스템들에 관한 것으로, 제한되는 것은 아니나, 특정하게는 데이터 메모리 및 인터페이스 에러 검출 및 처리 논리를 갖춘 제어 디바이스(device)에 관한 것이다.
복수의 데이터 메모리 디바이스들은 제어기 디바이스로부터 명령들 및 데이터가 전송되는 인터페이스들을 지원한다. 메모리 디바이스는 전송된 명령에 기초하여 동작(operation)을 수행한다. 예를 들어, 대부분의 NAND 플래시 데이터 메모리 디바이스들은 디바이스 내에서의 데이터 저장과 관련된 다양한 명령들을 지원한다. 인터페이스를 통해, 제어 디바이스(예를 들면, 플래시 제어기)로부터 NAND 플래시로 다양한 명령들을 전송함으로써, 데이터가 소거, 프로그래밍, 판독 및/또는 카피될 수 있다. 불행하게도, 예를 들어 상기 동작들과 연관된 명령들, 데이터, 파라미터들 및/또는 상태 정보는 에러들을 포함할 수 있다.
상기 논의는 일반적 배경 정보로만 제공되며 청구되는 대상의 범주의 결정을 보조하는데 이용되도록 의도된 것은 아니다.
일 실시예에서, 솔리드-스테이트(solid-state) 데이터 메모리 디바이스가 제공되며, 솔리드-스테이트 데이터 메모리 디바이스는 반도체 패키지를 포함한다. 메모리 어레이가 반도체 패키지에 제공되며, 메모리 어레이에 저장될 데이터를 수신하도록 디바이스 버스에 통신가능하게 결합될 수 있는 인터페이스가 제공된다. 반도체 패키지에 에러 검출 콤포넌트(component)가 제공되며 에러 검출 콤포넌트는 솔리드-스테이트 데이터 메모리 디바이스의 인터페이스와 연관된다. 에러 검출 콤포넌트는 메모리 어레이에 데이터가 저장되기에 앞서, 인터페이스에서 수신된 데이터에서 발생되는 에러들을 검출하도록 구성된다.
또 다른 실시예에서, 데이터 저장 시스템 내의 제어기가 제공된다. 제어기는 복수의 데이터 메모리 디바이스들과의 데이터 통신을 위한 적어도 하나의 인터페이스 및 복수의 식별자들(identifiers)을 포함하는 데이터 베이스를 포함한다. 적어도 하나의 식별자는 복수의 데이터 메모리 디바이스들 각각과 연관되어 이를 고유하게(uniquely) 식별한다. 제어기와 데이터 메모리 디바이스 간의 데이터 전송을 위해, 데이터 메모리 디바이스와 연관된 적어도 하나의 식별자 및 데이터에 기초하여 에러 제어 코드를 생성하도록 구성된 콤포넌트가 제공된다.
또 다른 실시예에서, 데이터 저장 시스템이 제공된다. 시스템은 복수의 데이터 메모리 디바이스들을 포함하며, 복수의 데이터 메모리 디바이스들 각각은 데이터를 저장하기 위한 메모리 엘리먼트(element)를 포함한다. 또한, 시스템은 복수의 데이터 메모리 디바이스들과의 데이터 통신을 위해 적어도 하나의 인터페이스를 갖춘 제어기를 포함한다. 제어기는 데이터 메모리 디바이스의 메모리 엘리먼트 및 제어기의 인터페이스 사이의 기록 경로(write path)를 따라 데이터 메모리 디바이스에 저장될 데이터를 제공하도록 구성된다. 또한, 시스템은 데이터 메모리 디바이스와 연관되며 제어기와 데이터 메모리 디바이스 사이에서 전송된 데이터 상에서의 에러들을 검출하도록 구성되는 에러 검출 콤포넌트를 포함한다. 기록 경로에 에러 검출 콤포넌트가 제공되며 에러 검출 콤포넌트는 데이터 메모리 디바이스의 메모리 엘리먼트에 데이터가 저장되기 이전에, 데이터에서 에러들(a number of errors)의 수를 결정하도록 구성된다.
이러한 특징들 및 다양한 다른 특징들 및 장점들은 하기의 상세한 설명을 통해 명확해질 것이다. 본 요약은 청구되는 대상의 중요 특징들 또는 필수적 특징들이 인식되도록 의도된 것이 아니며, 청구되는 대상의 범주 결정의 보조에 이용되도록 의도된 것도 아니다. 청구되는 대상은 배경기술에 언급된 임의의 또는 모든 단점들을 해결하는 구현예들로 제한되지 않는다.
도 1은 데이터를 처리하고 저장하기 위한 예시적 시스템의 개략도.
도 2는 데이터 저장 시스템의 일 실시예에 대한 개략도.
도 3은 일 실시예에 따른 솔리드-스테이트 데이터 메모리 디바이스 및 제어 디바이스의 개략도.
도 4는 일 실시예에 따른 솔리드-스테이트 데이터 메모리 디바이스의 개략도.
도 5는 복수의 데이터 메모리 디바이스들에 대한 제어기의 개략도.
도 6은 데이터 메모리 디바이스의 인터페이스에서 수신된 데이터에서 에러들을 검출하는 방법의 흐름도.
도 7은 데이터 메모리 디바이스의 인터페이스에서 전송된 데이터에 대한 에러 검출 정보를 생성하는 방법의 흐름도.
도 8은 에러 검출 코드를 사용하는 데이터 메모리 디바이스와의 데이터 통신을 위한 방법의 흐름도.
도 9는 에러 검출 코드를 사용하여 데이터를 전송하기 위한 시스템의 타이밍 다이어그램.
본 발명은 하나 이상의 데이터 메모리 디바이스들 및 인터페이스 에러 검출 및 처리 논리를 갖춘 하나 이상의 데이터 메모리 디바이스 제어기들을 포함하는 데이터 저장 시스템을 제공한다. 데이터 메모리 디바이스는 디지털 정보를 저장하도록 설계된 디바이스를 포함한다. 데이터 메모리 디바이스들의 예들로는 휘발성 및 비휘발성 메모리가 포함된다. 일반적으로, 휘발성 메모리는 저장된 정보를 유지하기 위해 전력을 요구하는 반면, 비휘발성 메모리는 전력이 공급되지 않더라도 저장된 정보를 유지할 수 있다. 또한, 데이터 메모리 디바이스들의 예들로는 (통상적으로 이동 부품들(moving parts)을 갖지 않는) 솔리드-스테이트 반도체-기반 메모리 및 논-솔리드-스테이트 메모리가 포함된다.
제한되는 것은 아니나, 솔리드-스테이트 반도체-기반 데이터 메모리 디바이스들에 대한 특정 예들로는 NAND 플래시, NOR 플래시, EEPROM, SRAM, DRAM, MRAM, 스핀-토크(spin-torque) RAM, 및 위상 변경 메모리가 포함된다. 본 발명에서는 솔리드-스테이트 반도체-기반 메모리 디바이스들, 특히 플래시 메모리 디바이스들과 관련하여 다양한 실시예들이 개시되지만, 본 발명에 개시되는 개념들은 다른 형태의 데이터 메모리 디바이스들에도 적용될 수 있다는 것이 주목된다. 이는 다른 형태의 솔리드-스테이트 메모리뿐만 아니라 논-솔리드 스테이트 메모리를 포함할 수 있다. 예를 들어, 본 발명에 개시된 실시예들은, 몇 가지만 언급하자면, 하드 디스크들, 플로피 디스크들, 자기 디스크들, 광 디스크들, 자기 테입들, 랜덤 액세스 메모리(RAM), 다이내믹 랜덤 액세스 메모리(DRAM), 스태틱 랜덤 액세스 메모리(SRAM), 리드-온리 메모리(ROM), 및/또는 전기적으로 소거가능한 프로그램가능한 리드-온리 메모리(EEPROM)를 포함하는 데이터 저장 시스템들에서 활용된다.
도 1은 예시적인 데이터 컴퓨팅 시스템(100)의 개략도이다. 예시된 것처럼, 호스트 시스템(101)은 입력/출력(I/O) 디바이스들(104), 이를 테면 키보드, 모니터, 모뎀, 저장 디바이스 또는 포인팅 디바이스에 접속될 수 있는 시스템 버스(103)에 접속된 프로세서(102)를 포함한다. 또한, 시스템 버스(103)는 랜덤 액세스 휘발성 메모리, 이를 테면 다이내믹 랜덤 액세스 메모리(DRAM)를 포함할 수 있는 메모리(106)에 접속된다. 또한, 시스템 버스(103)는 데이터 저장 시스템(108)에 접속된다. 예시된 실시예에서, 데이터 저장 시스템(108)은 비휘발성 반도체-기반 데이터 메모리 디바이스를 포함한다. 예를 들어, 데이터 저장 시스템(108)은 솔리드-스테이트 드라이브를 포함할 수 있다. 다른 실시예들에서, 데이터 저장 시스템(108)은 휘발성 및/또는 논-솔리드-스테이트 메모리를 포함할 수 있다. 예를 들어, 데이터 저장 시스템(108)은 디스크 드라이브 및/또는 솔리드-스테이트 콤포넌트들 및 하드 디스크 콤포넌트들을 포함하는 "하이브리드(hybrid)" 드라이브를 포함할 수 있다.
데이터 저장 시스템(108)은 제어기(110)를 포함할 수 있으며, 제어기(110)는 시스템 버스(103)를 통한 접속을 통해 프로세서(102)와 접속될 수 있다. 일부 시스템들에서 이러한 접속은 하나 이상의 중간(intermediary) 디바이스들, 이를 테면 호스트 버스 어댑터 또는 브릿지(bridge)를 통해 이루어질 수 있다는 것이 주목된다. 예시된 것처럼, 메모리 디바이스(108)는 솔리드-스테이트 메모리(112), 특히 플래시 메모리 셀들의 하나 이상의 어레이들을 포함하는 플래시 메모리를 포함한다. 메모리 셀들의 어레이들은 하나 이상의 집적회로 메모리 칩들을 포함할 수 있다.
동작 동안, 프로세서(102)는 데이터를 리트리브(retrieve) 또는 저장하기 위해 데이터 저장 디바이스(108)로 명령 및 데이터를 전송할 수 있다. 제어기(110)는 프로세서(102)로부터 명령 및 데이터를 수신한 다음 솔리드-스테이트 메모리(12)로부터 데이터를 저장 또는 리트리브(retrieve)할 시기를 결정할 수 있다.
도 2는 데이터 저장 시스템(108)의 일 실시예를 나타내는 개략도이다. 데이터 저장 시스템(108)은 솔리드-스테이트 메모리(212)에 정보를 저장하고 솔리드-스테이트 메모리(212)로부터 정보를 리트리브(retrieve)하도록 구성된 제어 디바이스(210)(예시적으로 플래시 제어기)를 포함한다. 솔리드-스테이트 메모리(212)는 메모리 어레이들을 포함하는 하나 이상의 솔리드-스테이트 데이터 메모리 디바이스들(216, 218)(예시적으로 플래시 칩들)을 포함한다. 일 실시예에서, 플래시 칩은 하우징(housing)에 제공된 하나 이상의 반도체 다이들(semiconductor dice)을 포함하는 반도체 패키지를 포함한다. 반도체 패키지는 메모리 인터페이스(220)와의 정보를 통신하기 위한 인터페이스, 제어 회로 및 칩의 설계에 따라 특정 용량을 갖는 저장 구역을 포함한다. 예를 들어, 일 실시예에서, 각각의 플래시 메모리 칩(216, 218)의 저장 구역은 1기가바이트(GB)의 데이터를 저장할 수 있다. 또 다른 실시예에서, 각각의 플래시 칩(216, 218)은 1GB 이상 또는 1GB 미만(예를 들어,128MB, 256MB, 512MB, 2GB, 4GB, 8GB, 16GB, 등)을 저장할 수 있다.
제어기(210)는 명령들 및/또는 데이터의 통신을 위한 하나 이상의 디바이스 버스들을 통해 데이터 메모리 디바이스들(216, 218)에 접속되는 메모리 인터페이스(220)(예시적으로 플래시 메모리 인터페이스)를 포함한다. 예를 들어, 메모리 인터페이스(220)는 데이터 버스(222), 어드레스 버스(224), 및 칩 선택 신호들(226, 228)을 통해 데이터 메모리 디바이스들에 접속될 수 있다. 도 2는 개별 데이터 및 어드레스 버스를 도시했지만, 제어 디바이스와 데이터 메모리 디바이스 간의 접속 방식에는 다양한 형태들, 예를 들어 몇 가지를 언급하자면 멀티플렉싱된 어드레스 및 데이터 버스, 조합된 I/O 버스들, 및 다양한 일련의 통신 인터페이스들이 있을 수 있다는 것이 주목된다. 또한, 메모리(212)는 2개의 플래시 칩들(216, 218)을 포함하는 것으로 예시되었지만, 메모리(212)는 임의의 개수 및 형태의 메모리 디바이스(들)를 포함할 수 있다는 것이 주목된다. 이는 단일 다이 또는 패키지 내에 다수의 논리 저장 유닛들을 포함할 수 있다. 예를 들어, 일 실시예에서, 도 2에 도시된 것보다 보다 많은 플래시 칩들이 데이터 버스(222), 어드레스 버스(224), 및 칩 선택 라인들(226, 228)에 접속될 수 있다. 또한, 시스템은 다수의 접속 버스들 또는 도 2에 도시된 것과 다른 버스 토폴러지들(topologies)을 포함할 수 있다.
제어기(210)는 호스트에 대해 명령들, 상태 정보 및 데이터를 수신하고 전송할 수 있는 호스트 인터페이스(214)를 통해, 호스트, 이를 테면 도 1에 예시된 호스트 시스템(101)에 통신가능하게 접속된다. 호스트 인터페이스(214)는 처리를 위해 제어기(210)의 제어 회로(230)로 명령들을 전달(pass)하고 수신된 데이터를 버퍼 메모리(232)에 저장할 수 있다. 버퍼 메모리(232)는 수신된 데이터를 메모리 인터페이스(220)에 제공한다.
메모리 인터페이스(220)는 하나 이상의 데이터 메모리 디바이스들(216 또는 218)에 기록되는 데이터를 버퍼 메모리(232)로부터 수신하며 제어 회로(230)로부터 어드레스 비트들을 수신할 수 있다. 메모리 인터페이스(220)는 해당 데이터 및 어드레스 비트들을 선택된 플래시 칩에 대한 적절한 타이밍 및 포맷으로 어서트(assert)할 수 있다. 또한, 메모리 인터페이스(220)는 플래시 칩들(216 및/또는 218)의 임의의 선택된 섹터로부터 이전에 저장된 데이터를 판독할 수 있다.
또한, 제어 회로(230)는 제어 회로(230)가 데이터의 판독 및 기록을 위해 플래시 칩들(216, 218)의 메모리 어레이를 액세스하도록, 다이렉트 메모리 어드레스(DMA) 제어기(234)에 접속될 수 있다.
또한, 제어기(210)는 신뢰성을 보장할 수 없는 하나 이상의 무효(invalid) 비트들을 포함하는 솔리드-스테이트 메모리(212) 내에서 저장 위치들(storage locations)(예를 들면, 블록들, 페이지들 등)의 등록(record)을 유지하는 배드 블록 관리(BBM) 콤포넌트(236)를 포함할 수 있다. "배드(Bad)" 블록들은 메모리 디바이스들이 제조되는 시기를 존재하거나 또는 메모리 디바이스의 수명 동안 발생(develop)될 수 있다. 예를 들어, BBM 콤포넌트(236)는 데이터 메모리 디바이스들(216, 218)의 구역들을 판독함으로써 배드 블록표를 생성할 수 있다. 예를 들어, 상기 표는 솔리드-스테이트 메모리(211)의 여분의(spare) 구역에 저장된다. 배드 블록표에 포함된 블록들은 어드레스가 불가능하다. 이로써, 제어기(210)가 배드 블록표에 의해 식별된 배드 블록들 중 하나에 어드레스되면, BBM 콤포넌트(236)는 솔리드-스테이트 메모리(212)의 새로운 또는 여분의 블록을 할당함으로써 블록 어드레스를 재맵핑(re-map)하고 동작들을 재지시한다(redirect).
도 2의 플래시 메모리 예에서, 데이터의 논리 섹터(즉, 연관된 논리 블록 어드레스(LBA)를 갖는 호스트 시스템(101)으로부터의 데이터의 일부)가 메모리(212)에 기록될 때, 플래시 제어기(210)는 데이터가 기록되는 물리적 블록(physical block)의 물리적 어드레스를 식별한다. 논리 블록 어드레스(LBA)는 데이터 저장 시스템(108)에 대한 데이터의 블록을 판독 또는 기록하기 위해 호스트 시스템을 이용하는 어드레스이다. 물리적 블록 어드레스는 저장 콤포넌트에서 블록의 고정된 물리적 어드레스이다. 제어기(210)는 변환(translation)/맵핑 콤포넌트(238)에서 해당 물리적 어드레스들에 대한 논리 어드레스들의 맵핑을 저장할 수 있다. 콤포넌트(238)에 저장된 맵핑 정보는 메모리(212)에서 요구되는 데이터를 위치시키기 위한 순차적 데이터 액세스 동작들을 위해 이용된다.
또한, 소정 형태의 데이터 메모리 디바이스들, 이를 테면 플래시 칩들(216, 218)은 손상(degradation)에 민감한 메모리 위치들을 포함할 수 있다. 예를 들어, 전형적인 플래시 메모리 디바이스들은 디바이스들이 수행할 수 있는 기록, 판독 및/또는 소거 사이클들의 최대 수에 의해 제한된다. 일 실시예에 따라, 또한 제어기(210)는 메모리 디바이스들의 저장 위치들에 대해 기록 및/또는 판독, 및/또는 소거 사이클들을 분산시키도록 구성된 웨어 레벨링(wear leveling) 콤포넌트(240)를 포함할 수 있다. 이런 방식에서, 데이터 저장 시스템(108)은 개별적 저장 위치들이 과잉의 기록 및/또는 판독 및/또는 소거 사이클들로 인해 조기에 파손될 가능성을 감소시키기 위해, 메모리(212)의 저장 위치들에 대해 데이터 동작들을 분산시키는 웨어 레벨링을 포함한다.
데이터 메모리 디바이스들(216, 218)은 일반적으로 데이터 메모리 디바이스들(216, 218)로 명령 및 연관된 파라미터들을 전송한 다음 인터페이스 또는 디바이스 사양(specification)에 대한 규정된 반응 룰들(behavioral rules)에 기초하여 적절한 시기에 데이터를 전송함으로써 달성되는 명령화된(commanded) 동작들을 지원한다. 또한, 명령들이 전송된 후, 제어 디바이스(210)는 인터페이스를 통해 메모리 디바이스들(216, 218)로부터 상태 정보를 요청하고 리트리브(retrieve)할 수 있다. 예를 들어, 통상적으로 상태 정보는 명령이 완성되었는지를 나타내며, 명령이 완성된 경우, 완성된 명령이 성공적으로 완성되었는지에 대한 표시를 나타낸다. 제어 디바이스(210)는 동작이 성공되었는지 또는 성공되지 않았는지를 결정하기 위해 상태 정보를 이용한다.
언급된 바와 같이, 데이터는 이러한 명령화된 동작들 중 일부 동작으로 전송된다. 일부 경우들에서, 데이터는 메모리 디바이스들(216, 218)과 제어 디바이스(210) 사이의 데이터 버스(222) 및/또는 어드레스 버스(224)를 통해 전송된다. 그러나, 일부 경우들에서 데이터 전송은 메모리 디바이스(들)(216 및/또는 218) 내에 완전히 포함되며 여기서 데이터는 제어 디바이스(210)로 전송되지 않는다. 예를 들어, 일부 메모리 디바이스들에서 디바이스 내의 하나의 저장 위치로부터 디바이스 내의 또 다른 위치로 데이터의 블록을 카피하는 것이 가능하다.
제어 디바이스(210)와 하나 이상의 데이터 메모리 디바이스들(216, 218) 사이에서 전송된 정보는, 제한되는 것은 아니지만, 사용자 데이터, 어드레스 정보, 상태 정보, 명령 정보 및/또는 연관된 파라미터들을 포함할 수 있다. 또한, 정보는 단일 동작으로 전송되거나 또는 다수의 동작들을 통해 전송될 수 있다. 일례에서, 데이터 메모리 디바이스에 기록되는 명령 및 사용자 데이터는 동시에 전송된다. 이를 테면, 정보는 명령부 및 어드레스부를 포함하는 데이터의 블록, 및 데이터 저장 디바이스에 저장되는 사용자 데이터를 포함하는 페이로드부를 포함할 수 있다. 또 다른 예에서, 명령 및 연관된 사용자 데이터는 상이한 시기들로 전송된다.
일부 상황들에서, 메모리 디바이스들(216, 218)로 및/또는 메모리 디바이스들(216, 218)로부터 통신된 정보는 에러들을 포함할 수 있다. 이러한 에러들은 임의의 다양한 원인으로 발생될 수 있다. 예를 들어, 몇 가지를 언급하자면 에러들은 데이터 버스(222)를 통해 데이터가 제어 디바이스(210)로부터 전송되기 전에, 데이터가 메모리 디바이스에 수신되기 전에, 및/또는 데이터가 데이터 메모리 디바이스에 수신된 후에 데이터에서 발생될 수 있다. 이를 테면, 에러들은 단락 또는 개방 회로 접속들과 같은 전기적 노이즈 또는 전기적 접속 실패로 인해, 정보를 전송하는 동안 발생할 수 있다. 또한, 에러들은 예를 들어, 결함 저장 셀로 인해 데이터가 저장될 때 즉시 발생할 수 있다. 또한, 에러들은 예를 들어, 시간에 따라 손상되는 데이터 비트들을 표현하는데 이용되는 전하(electrical charge)의 결과로서, 시간 경과에 따라 저장된 데이터에서 발생할 수 있다. 에러들은 예를 들어, 메모리 및/또는 논리 손상(corruption)을 야기시키는 방사선 붕괴(radioactive decay)에 의해 야기되는 에러들로 인해 제어 디바이스(210)에서도 발생할 수 있다.
일 실시예에 따라, 데이터 메모리 디바이스(이를 테면 데이터 메모리 디바이스들(216 및/또는 218))의 인터페이스는 데이터 저장 시스템의 명령 및 데이터 무결성(integrity)을 개선시킬 수 있는 논리(logic)를 갖는 에러 검출 및 처리 콤포넌트들을 포함한다. 일례로, 데이터 메모리 디바이스의 인터페이스는 데이터 저장 디바이스에 데이터를 저장하기 이전에, 정보에서의 에러들을 검출하고 처리하기 위해, 전송된 데이터(예를 들어, 명령들, 파라미터들, 상태 정보 및/또는 사용자 데이터 등)의 검증(verification)을 수행하기 위한 에러 검출 및 처리 논리를 포함한다. 본 실시예에서, 데이터 메모리 디바이스에서 인터페이스의 논리는 에러 검출 및 처리를 수행하는데 있어 저장 동작을 요구하지 않는다.
도 3은 예를 들어, 명령 및/또는 데이터 무결성을 제공할 수 있는 에러 검출 및 처리 논리를 포함하는 솔리드-스테이트 데이터 메모리 디바이스(이를 테면 데이터 메모리 디바이스들(216 및/또는 218))의 개략도이다. 도 3에 도시된 실시예에서, 데이터 메모리 디바이스(300)는 하우징에 제공된 하나 이상의 반도체 다이들(예를 들어, 플래시 다이들 등)을 포함하는 반도체 패키지를 포함한다. 일 실시예에서, 하나 이상의 칩들(예를 들어, 플래시 칩들 등)이 약 50mm×50mm 미만의 전체 크기를 갖는 하우징에 제공된다. 일 실시예에서, 하우징은 약 20mm×15mm의 전체 크기를 갖는다. 또 다른 실시예에서, 디바이스(300)의 콤포넌트들은 약 1인치×1인치 미만의 전체 크기를 갖는 하우징에 제공된다. 또 다른 실시예에서, 하우징은 1인치×1인치 이상인 전체 크기를 가질 수 있다.
특정한 일례로, 반도체 패키지는 플라스틱 볼-그리드 어레이(BGA)를 포함한다. 또 다른 실시예에서, 반도체 패키지는 칩-온-보드(COB)를 포함하며, 하나 이상의 반도체 다이들은 인쇄 회로 보드에 직접 부착되며 통상적으로는 보호 코팅으로 커버된다. 또 다른 실시예에서, 반도체 패키지는 얇은 소형-아웃트라인 패키지(TSOP)를 포함한다. 또 다른 실시예에서, 반도체 패키지는 랜드(land) 그리드 어레이(LGA)를 포함한다.
또한, 디바이스(300)의 콤포넌트들은 단일 다이 또는 다수의 다이들(dice) 상에 제공될 수 있다. 예를 들어, 하나 이상의 블록들(320, 322, 324, 326, 328) (하기 개시됨)은 반도체 패키지에서 동일한 다이 상에 제공될 수 있다. 또 다른 예에서, 하나 이상의 블록들(320, 322, 324, 326, 328)이 개별 다이에 제공될 수 있다.
데이터 메모리 디바이스(300)는 하나 이상의 디바이스 버스들을 통해 제어 디바이스(310)에 접속된다. 일 실시예에서, 디바이스(300)는 하나 이상의 디바이스 버스들에 디바이스(300)를 통신가능하게 접속시키기 위해 다수의 입력/출력(I/O) 핀들을 갖는 패키지를 포함한다. 다수의 I/O 핀들은 디바이스(300)의 인터페이스(320)가 입력 명령, 어드레스, 및 데이터를 수신하고 출력 데이터를 전송하도록 제어 디바이스(300)와 통신하는 것을 가능케 한다. 예를 들어, 데이터, 명령들, 어드레스 정보 및/또는 임의의 연관된 파라미터들을 통신하도록 입력/출력 채널(312)이 제공된다. 일 실시예에 따라, 명령들 및 데이터는 공통 통신 버스를 통해 인터페이스(320)로 전송된다.
또한, 디바이스(300)의 패키지는 I/O 핀들에 대한 판독들을 제어하기 위해 판독 인에이블 신호(314)를 제공하는 판독 인에이블(enable) 핀 및 I/O 핀들에 대한 기록들을 제어하기 위해 기록 인에이블 신호(316)를 제공하는 기록 인에이블 핀을 포함할 수 있다. 또한, 디바이스(300)의 패키지는 동작을 위해 데이터 메모리 디바이스(300)를 인에이블하기 위한 칩 인에이블 신호(318)를 제공하는 칩 인에이블 핀을 포함할 수 있다. 또한, 몇 가지를 언급하자면, 패키지는 예를 들어, 기록 및 소거 보호를 제공하기 위한 기록 보호 핀, 레디(ready) 또는 비지(busy)로서 디바이스의 상태를 표시하기 위한 레디/비지(ready/busy) 핀, 전원장치 핀, 및 접지 핀을 포함할 수 있다.
예시된 것처럼, 데이터 메모리 디바이스(300)는 제어 디바이스(310)를 이용하여 정보(예를 들어, 사용자 데이터, 명령들, 지시들(instructions), 상태 정보 등)을 수신 및 전송하도록 구성된 인터페이스 및 메모리 제어 회로(320)를 포함한다. 이를 테면, 블록(320)은 제어 디바이스(310)로부터 데이터를 수신하고 메모리 어레이(322)에 데이터를 저장한다. 또 다른 예에서, 블록(320)은 메모리 어레이(322)로부터 데이터를 리트리브(retrieve)하고 제어 디바이스(310)로부터 수신된 명령에 기초하여 제어 디바이스(310)로 리트리브된 데이터를 전송한다. 메모리 어레이(322)는 적어도 하나의 정보 비트에 각각 저장될 수 있는 다수의 메모리 셀들을 포함한다. 예를 들어, 다수의 메모리 셀들은 단일 레벨 셀들 및/또는 셀당 하나보다는 많은 정보 비트를 저장할 수 있는 다수의 레벨 셀들(MLC)을 포함할 수 있다. 일례로, 메모리 셀들은 하나 이상의 플로팅-게이트 트랜지스터들을 포함한다. 또한, 일례로 메모리 어레이(322)는 단일 칩 및/또는 단일 다이 상에서 구현될 수 있다는 것이 주목된다. 일례로, 메모리 어레이(322)는 다수의 칩들 또는 다이들을 포함할 수 있다.
일 실시예에서, 인터페이스 및 메모리 제어 회로(320)는 에러 검출 콤포넌트(324) 및 에러 처리 콤포넌트(326)를 포함한다. 에러 검출 콤포넌트(324)는 인터페이스(320)에서 수신된 데이터에서 에러들을 검출 및/또는 교정하기 위한 논리 및/또는 소프트웨어 또는 펌웨어를 포함한다. 예를 들어, 인터페이스(320)에서 제어 디바이스(310)로부터 수신된 데이터는 하나 이상의 에러 제어 코드들을 포함할 수 있다. 에러 제어 코드들은 데이터에서 발생하는 에러들의 검출(예를 들어, 에러 검출 코드들(EDC)) 및/또는 교정(예를 들어, 에러 교정 코드들(ECC))에 이용될 수 있는 코드들을 포함한다. 일 실시예에 따라, 에러 교정 콤포넌트(324)는 예를 들어, 명령 통신 버스를 통해 제어 디바이스(310)로부터, 인터페이스(320)에서 수신되는 데이터 및 명령들 모두에서의 에러들을 검출하는데 이용되는 논리를 포함한다.
일 실시예에서, 에러 제어 코드는 CRC(cyclical redundancy code) 코드워드 생성 논리를 사용하여 생성된 에러 검출 코드를 포함한다. 다른 예들에서 다른 코드들 및 코딩 기술이 이용될 수 있다. 본 실시예에서, 코드워드 콤포넌트(328)는 수신된 데이터가 에러들을 포함하는지를 결정하기 위해 에러 검출 코드를 분석하도록 구성될 수 있다. 또한, 에러 검출 콤포넌트(324)는 데이터 메모리 디바이스(300)에 의해 전송되는 데이터에 대해, 예를 들어 CRC 논리를 사용하여 에러 검출 코드워드들을 생성하고 첨부(appending)하기 위한 코드워드 생성 논리를 포함할 수 있다. 일 실시예에서, 제어 디바이스(310)는 데이터 채널(312)을 통해 전송되는 데이터에 대한 해당 CRC 논리를 포함한다.
에러 처리 콤포넌트(326)는 에러 검출 콤포넌트(324)가 데이터에서 임계 개수의 에러들(예를 들면, 하나 이상의 에러들)을 검출하는 경우에 데이터를 처리하고 및/또는 명령들을 수행하기 위한 논리를 포함한다. 예를 들어, 에러 처리 콤포넌트(326)는 에러들을 교정하기 위해 데이터에 대한 에러 교정 알고리즘들의 리트라이(retry) 및/또는 수행을 개시하도록 구성될 수 있다. 또한, 에러 처리 콤포넌트(326)는 제어 디바이스(310)에 상태(예를 들어, 몇 가지를 언급하자면 "명령 리트라이", "명령 성공", "명령 실패")를 제공하도록 구성될 수 있다.
데이터 메모리 디바이스들은 다수의 다이들을 포함하는 패키지들, 또는 단일 다이 상의 다수의 논리 디바이스들로 생성될 수 있다는 것이 주목된다. 본 발명에 개시된 개념들은 단일 논리 데이터 메모리 디바이스와 관련하여 개시된다. 이를 테면, 도 3의 실시예에서, 솔리드-스테이트 데이터 메모리 디바이스(300)는 본질적으로 단일 반도체 칩, 이를 테면 플래시 메모리 칩으로 이루어진 디바이스를 포함한다. 이런 방식으로, 예시된 솔리드-스테이트 데이터 메모리 디바이스(300)의 콤포넌트들은 단일 논리 데이터 메모리 디바이스(즉, 실리콘의 단일 부품(piece), 단일 칩) 상에 제공될 수 있다. 그러나, 본 발명에 개시된 개념들은 다수의 디바이스들을 포함하는 다른 구성에도 적용될 수 있다는 것이 주목된다. 예를 들어, 메모리 디바이스(300)는 다수의 칩들 상에 제공될 수 있다. 다른 예에서, 다수의 메모리 디바이스들은 단일 칩 상에 제공될 수 있다.
도 4는 데이터 메모리 디바이스(300)의 일 실시예를 나타낸다. 도 4에 도시된 것처럼, 인터페이스 및 메모리 제어 회로(320)는 채널(312)을 통해 제어 디바이스(310)와 통신하기 위한 I/O 버퍼들 및 드라이버들(330)을 포함한다. 명령 및 제어 논리는 명령 래치들 및 디코더(332) 및 어드레스 레치들 및 디코더(334)를 포함할 수 있다. 메모리 제어 회로는 데이터 레지스터들 및 버퍼들(336)을 사용하여 메모리 어레이(322)로부터 데이터를 저장하고 리트리브(retrieve)하기 위해 블록들(332, 334)을 이용한다.
데이터 메모리 디바이스(300)의 인터페이스(320)는 코드워드 콤포넌트(328)를 포함하는 에러 검출 콤포넌트(324)를 포함한다. 일 실시예에서, 데이터가 메모리 어레이(322)에 저장되기 이전에, 데이터가 분석되어 에러들을 검출하도록 기록 경로(write path)를 따라 에어 검출 콤포넌트(324)가 제공된다. 이를 테면, 도 3을 참조로, 채널(312)을 통해 제어 디바이스(310)로부터 데이터가 제공된다. 데이터는 인터페이스(320)에 의해 수신되며 메모리 어레이(322)로의 저장을 위해 기록 경로를 따라 제공된다. 메모리 어레이(322)로의 저장에 이전에, 데이터에서 에러들의 검사 및/또는 교정을 위해 에러 검출 콤포넌트(324)의 기능이 실행된다. 에러(들)가 검사 및/또는 교정된 후에, 메모리 어레이(322)로의 저장을 위해 기록 경로를 따라 데이터가 메모리 어레이(322)에 제공된다.
예시된 것처럼, 코드워드 콤포넌트(328)는 에러 검출 코드워드(EDC) 검사기/생성기(338)를 포함한다. 일반적으로, EDC 검사기/생성기(338)는 전송된 및/또는 수신된 데이터에서 에러들을 식별하기 위해 에러 검출 코드워드들에 대해 동작하도록 구성된다. 에러 검출 및/또는 교정 코드들에 대한 일부 예들은 Moon, Error Correction Coding- Mathematical Methods and Algorithms, Wiley-Interscience (2005)에 개시되어 있다. 그러나, 본 발명에 개시된 개념들의 범주를 제한하고자 의도되지 않고 이용될 수 있는 에러 검출 및/또는 교정 코드들의 예들이 제공될 수 있다는 것이 주목된다.
예시된 실시예에서, 인터페이스(320)를 통해 수신된 정보는 예를 들어, 상기 정보에 기초하여 생성된 CRC(cyclical redundancy code) 논리를 사용하여, 데이터가 전송된 디바이스에 의해 생성된 에러 검출 코드워드들에 첨부된다. 이를 테면, 디바이스(300)의 인터페이스(320) 및 제어 디바이스(즉, 디바이스(310))는 해당 CRC 논리를 포함할 수 있다. CRC 논리는 채널(312)을 통한 데이터의 전송시 임의의 오류(corrupted) 비트들이 CRC 논리에 의해 검출될 수 있도록 설계된다. 대안적으로 또는 부가적으로, 에러 검출 코드워드들은, 몇 가지를 언급하자면, 예를 들어, 검사(check) 비트들, 패리티 비트들(parity bits), 검사 합계들, 세로 중복 검사들, 해시 함수들(hash functions), 패리티 스켐들, 터보 코드들, 해밍(Hamming) 코드들, 및 리드-솔로몬(Reed-Solomon) 에러 교정 코드들을 사용하여 생성될 수 있다.
콤포넌트(324)는 데이터 및 첨부된 에러 검출 코드워드를 수신하고 데이터가 다수의(a number of) 에러들을 포함하고 있는지를 결정하도록 구성된다. 예를 들어, 블록(338)은 수신된 데이터가 임계치 이상의 에러들의 수를 포함하는지를 결정하기 위해 (예를 들어, CRC 논리를 이용하여) 데이터 및 첨부된 코드워드 모두를 분석하도록 구성된다. 또 다른 예에서, 블록(338)은 수신된 데이터에 기초하여 자체적으로(its own) 코드워드를 생성하도록 구성된다. 이를 테면, 블록(338)은 수신된 데이터의 함수로서 제 2 코드워드를 생성하기 위해 CRC 논리를 이용한다. 다음, 블록(324)은 제 2 코드워드와 먼저-언급된(first-mentioned) 코드워드(수신된 데이터에 첨부된 코드워드)를 비교한다. 비교가 실패되면(즉, 코드워드들이 매칭되지 않거나 또는 에러를 나타내면), 콤포넌트(324)는 수신된 데이터가 다수의 에러들을 포함한다는 것을 결정한다. 콤포넌트(324)에 의한 이러한 결정에 기초하여, 에러 처리 콤포넌트(326)는 데이터 리트라이(data retry), 복귀(return) 상태 정보를 나타내고 및/또는 예를 들어 에러 검출 코드워드를 이용하여 에러 교정을 수행할 수 있다.
또한, 블록(338)은 채널(312)을 통해 데이터 메모리 디바이스(300)로부터 예를 들어 제어 디바이스(310)로, 전송된 데이터에 첨부되는 에러 검출 코드워드들을 생성하도록 구성된다. 에러 검출 코드워드 생성기는 앞서 개시된 에러 검출 코드워드 검사기와 같거나 또는 이와 유사할 수 있다.
일 실시예에 따라, 데이터 메모리 디바이스(300)는 디바이스(300)와 연관된 그리고 디바이스(300)에 저장된 고유(unique) 식별자(340)를 포함한다. 일례로, 식별자(340)는 데이터 메모리 디바이스(300)가 제어 디바이스(예를 들어, 도 3에 예시된 제어 디바이스(310))와 통신하는 다른 모든 데이터 메모리 디바이스들로부터 고유하게 식별되도록 하는 GUID(globally unique identifier)이다.
일 실시예에서, 고유 식별자(340)는 코드워드 논리를 개시하기 위해 EDC 검사기/생성기(338)에 대한 시드(seed)로서 제공된다. 일례로, 고유 식별자는 데이터로부터 생성된 EDC 코드워드와 컨볼루팅된다(convolved). 예를 들어, CRC-기반 EDC에서, 고유 식별자 수는 회로-기반 CRC 구현의 선형 피드백 시프트(shift) 레지스터들을 초기화하는데 이용될 수 있고 및/또는 코드워드는 소프트웨어-기반 CRC 구현의 다양한 해당 상태를 초기화하는데 이용될 수 있다. EDC 검사기/생성기(338)의 초기화는 제어 디바이스로부터 전송된 셋업 명령에 응답하여 및/또는 제어 디바이스로부터 수신된 데이터에 응답하여 실행될 수 있다.
일 실시예에서, 제어 디바이스는 시스템에서 제어되는 모든 메모리 디바이스들에 대해 고유 식별자(340)의 카피들(copies)을 포함한다. 제어 디바이스는 타겟 메모리 디바이스에 해당하는 식별자를 선택하며, 상기 식별자는 제어 디바이스에서 해당하는 코드워드 논리를 초기화시키는데 이용된다. 예시를 위해, 도 4의 예에서, 에러 검출 콤포넌트(324)는 식별자(340)와 초기화되는 CRC 논리를 포함한다. 제어 디바이스는 고유 식별자(340)의 카피를 사용하여 제어 디바이스의 해당 CRC 하드웨어를 초기화시키고(시딩하고) 전송될 데이터에 기초하여 코드워드를 생성한다. 코드워드는 데이터 메모리 디바이스(300)로 전송되는 데이터에 첨부된다. 예시적 일 실시예에서, 에러 검출 코드워드는 순환 중복 코드로 고유 식별자를 컨볼루팅(convoluting)함으로써 생성되며 전송될 데이터 상에 생성된다. 일례로, 컨볼루션(convolution)은 제 3 코드(즉, 에러 검출 코드워드)를 생성하기 위해 고유 식별자 코드(또는 신호) 및 순환 중복 코드(cyclical redundancy code)의 조합을 포함한다. 일 실시예에서, 수신된 데이터에 대해 순환 중복 코드를 적절히 획득 및/또는 사용하기 위해 디바이스(예를 들어, 메모리 디바이스(300))에 의해 고유 식별자의 인지(knowledge)가 요구되며, 에러 검출 코드워드는 고유 식별자 및 순환 중복 코드와 관련되기는 하나, 고유 식별자 및 순환 중복 코드와는 상이하다.
또한, 임의의 적절한 함수, 알고리즘 등이 컨볼루션을 수행하는데 이용될 수 있다는 것이 주목된다. 예를 들어, 컨볼루션은 예를 들어 데이터에 대한 수학적 함수(XOR화, 스케일링(scaling), 교체(shifting) 등)의 수행을 포함할 수 있다. 수학적 함수는 데이터 메모리 디바이스 및 데이터 메모리 디바이스의 제어 회로에서 프로그래밍되는 알고리즘을 포함할 수 있다.
데이터 전송(data transfer)을 수신함에 따라, 데이터 메모리 디바이스(300)는 도달 정보(예를 들어, 명령, 파라미터 및/또는 데이터)에 대한 코드워드 계산을 수행하기 위해 블록(338)을 이용하며 전송시 임의의 에러들이 존재하는지 여부에 대한 결과에 따른 결정을 구성한다. 예를 들어, 콤포넌트(324)는 데이터로부터 첨부된 코드워드를 획득할 수 있다. (UID(340)을 이용하여 초기화되는) EDC 검사기(338)를 사용함으로써, 콤포넌트(324)는 적절한 고유 식별자(즉, UID(340)의 카피(copy))가 코드워드를 생성하기 위해 이용되었는지 그리고 데이터가 에러들을 포함하고 있는지에 대해 결정한다. 이런 방식으로, 데이터 메모리 디바이스(300)로 부정확하게 라우팅되는 명령들 및 데이터가 디바이스(300)의 인터페이스(320)에서 신속하게 검출될 수 있다. 이를 테면, 일례로, 데이터 메모리 디바이스(300)에서 수신된 명령 및/또는 데이터는 (데이터 메모리 디바이스(300) 이외의) 다른 데이터 메모리 디바이스에 대해 의도될 수 있으며 대신 데이터 메모리 디바이스(300)로 잘못 라우팅될 수 있다(misrouted). 에러 결정에 기초하여, 에러 처리 논리(326)는 예를 들어, 명령을 실행하도록 결정되고 및/또는 제어 디바이스로 상태를 복귀시킬 수 있다.
일 실시예에 따라, 에러 검출 코드워드는 메모리 어레이(322)의 데이터와 함께 저장되거나 또는 폐기될 수 있다. 또한, 판독-후-기록(read-after-write) 에러 검사기들은 프로그램 및/또는 판독 에러들을 검출하기 위해 코드워드들을 사용하여 실행될 수 있다.
본 명세서에 개시된 엘리먼트들(elements)은 예를 들어, 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있다.
도 5는 데이터 메모리 제어 디바이스(이를 테면 도 3에 예시된 제어 디바이스(310))의 일 실시예를 나타낸다. 제어 디바이스(500)는 마이크로프로세서(52), 에러 검출 콤포넌트(504) 및 에러 처리 콤포넌트(506) 및 호스트 인터페이스(528)를 포함한다. 에러 처리 콤포넌트(506)는 에러들이 검출되는지 여부 및/또는 콤포넌트(504)에 의해 검출된 에러들의 수에 기초하여 다양한 프로세스들을 구현하기 위한 에러 처리 논리를 포함한다. 이는 몇 가지를 언급하자면, 데이터 리트라이들(retries) 구현, 에러 교정, 경보 구현을 포함할 수 있다. 마이크로프로세서(502)로부터의 데이터는 시퀀서(508) 및 입력/출력 버퍼들 및 드라이버들(510)에 제공된다. 예시적으로 시퀀서(508)는 데이터 채널(512)을 통해 디바이스(500)와 데이터 메모리 디바이스(514) 사이에서의 데이터 전송을 조절하기 위한 기능 블록을 포함한다. 시퀀서(508)는 데이터 메모리 디바이스(514)로부터 데이터를 판독하고 데이터 메모리 디바이스(514)에 데이터를 기록하기 위해 다수의 레지스터들을 포함할 수 있다.
예시된 실시예에서, 예시적으로 데이터 메모리 디바이스(514)는 도 4에 예시된 데이터 메모리 디바이스와 유사하다. 또한, 제어 디바이스(500)는 복수의 데이터 메모리 디바이스들(514, 516, 518, 520)에 접속될 수 있다.
예시된 실시예에서, 에러 검출 콤포넌트(504)는 에러 검출 코드워드들을 생성하도록 구성된 EDC 검사기/생성기(522)를 포함한다. 코드워드들은 하나 이상의 데이터 메모리 디바이스들(예를 들어, 디바이스들(514, 516, 518, 520))로 전송되는 데이터에 첨부된다. 또한, 블록(522)은 제어 디바이스(500)에 의해 수신된 데이터에 첨부된 에러 검출 코드워드들을 수신하고 데이터에서 에러들을 검출하기 위해 에러 검출 코드워드를 이용하도록 구성된다. 일 실시예에서, 블록(522)은 도 4에 예시된 블록(338)과 유사하며 순환 중복 코드 논리를 이용한다.
일 실시예에 따라, 제어 디바이스(500)는 고유 식별자들(UID들)의 데이터베이스(524)를 포함한다. 데이터베이스(524)는 데이터 메모리 디바이스들(514-520)과 연관된 고유 식별자들 각각의 카피들을 포함한다. 이를 테면, 데이터베이스(524)는 데이터 메모리 디바이스(300)와 연관된 고유 식별자(340)의 카피를 포함한다.
정보(예를 들어, 명령들, 사용자 데이터, 지시들, 파라미터들)이 제어 디바이스(500)로부터 특정 데이터 메모리 디바이스로 전송될 때(또는 특정 데이터 메모리 디바이스로부터 정보가 수신될 때), 마이크로프로세서(502)는 데이터베이스(524)로부터 특정 메모리 디바이스와 연관된 고유 식별자의 카피를 리트리브(retrieve)한다. 식별자는 레지스터(526) 및 에러 검출 콤포넌트(504)에 제공된다. 식별자는 EDC 검사기/생성기(522)를 초기화하는데 이용된다. 일 실시예에서, 콤포넌트(504)에 의해 생성된 에러 검출 코드워드는 전송되는 데이터에 기초하여 생성된 순환 중복 코드(CRC)와 고유 식별자를 컨볼루팅(convoluting)함으로써 획득된다.
도 6은 데이터 메모리 디바이스의 인터페이스에서 수신된 에러들을 검출하는 방법의 흐름도이며 도 7은 데이터 메모리 디바이스의 인터페이스로부터 전송된 데이터에 대한 에러 검출 코드를 생성하는 방법의 흐름도이다. 일 실시예에서, 방법들(600, 700)은 도 4에 예시된 데이터 메모리 디바이스(300)의 인터페이스(320)에서 구현된다. 예시를 위해, 방법들(600, 700)은 하기에서 도 4와 관련하여 개시되며 이는 본 발명에 개시되는 개념들의 범주를 제한하고자 의도된 것은 아니다.
단계(602)에서, 정보(예를 들어, 사용자 데이터, 파라미터들, 상태 정보, 기록 명령들, 판독 명령들 등)를 수신하기 이전에, 데이터 메모리 디바이스에서 셋업(setup) 명령이 수신된다. 단계(604)에서 에러 검출 코드워드 논리(EDC)는 데이터 메모리 디바이스와 연관된 고유 식별자들로 초기화된다. 이를 테면, 도 4와 관련하여, 고유 식별자(340)는 정보를 전송하기 전에 EDC 검사기/생성기(338)를 초기화하는데 이용된다. 일부 실시예들에서, EDC 논리는 단계(602)에서의 셋업 명령 전송 없이, 단계(604)에서 초기화될 수 있다는 것이 주목된다.
단계(606)에서, 첨부된 에러 검출 코드워드(EDC)를 포함하는 정보는 데이터 메모리 디바이스(300)의 인터페이스에서 수신된다. 일 실시예에서, EDC는 전송된 정보의 함수에 따라 생성된 순환 중복 코드 및 단계(604)에서 논리를 초기화하는데 이용된 고유 식별자의 카피에 기초하여 제어 디바이스에 의해 사전에(previously) 생성된다.
단계(608)에서, 에러 검출 코드워드(EDC)는 정보로부터 얻어지며 단계(610)에서 에러들을 검출하기 위해 (604에서 초기화되는) EDC 논리에 의해 이용된다. 일 실시예에 따라, 단계(610)는 전송된 데이터에 임의의 에러들이 존재하는지 그리고 적절한 데이터 메모리 디바이스가 EDC 및 고유 식별자를 사용하여 정보를 수신했는지 여부를 결정한다.
단계(612)에서, 상태 정보는 에러들이 검출되었는지 여부에 따라 제공될 수 있다. 예를 들어, 이는 데이터가 에러들을 포함한다는 것을 표시하는 상태 표시(indication)를 제어 디바이스로 전송하는 것을 포함할 수 있다.
따라서 단계(614)에서, 데이터가 처리된다. 예를 들어, 제한되는 것은 아니지만, 이는 데이터 메모리 디바이스에 대한 제 2 데이터 전송(이를 테면 리트라이(retry)) 초기화, 에러 교정 프로세스 수행, 데이터 메모리 디바이스에 데이터 저장, 및/또는 데이터 동작 삭제를 포함할 수 있다.
방법(700)을 참조로, 단계(702)에서 셋업 명령이 수신되며 단계(704)에서 EDC 논리가 초기화된다. 일 실시예에서, 단계들(702, 704)은 도 6에 예시된 단계들(602, 604)과 유사하다. 단계(706)에서, 데이터 메모리 디바이스로부터, 예를 들어 메모리 어레이(322)로부터 전송된 데이터가 액세스된다. 데이터 및 초기화된 EDC 논리를 사용하여, 단계(708)에서 에러 검출 코드워드가 계산된다. 예를 들어, 단계(708)는 데이터 및 고유 식별자에 기초한 순환 중복 코드 생성을 포함할 수 있다. 단계(710)에서 에러 검출 코드가 데이터에 첨부되며 단계(712)에서 데이터는 인터페이스를 통해 제어 디바이스로 전송된다.
도 8은 전송된 데이터에 첨부된 에러 검출 코드워드들을 이용하여 데이터 메모리 디바이스와 데이터 통신을 하는 방법(800)을 나타낸다. 도 8에 예시된 실시예에서, 순환 중복 코드(CRC) 논리는 에러 검출 코드워드들을 생성하는데 이용된다. 그러나, 다른 실시예들에서, 에러 검출 코드워드들은 몇 가지만 언급하자면, 예를 들어, 검사 비트들(check bits), 패리티 비트들, 검사 합들(sums), 세로 중복 검사들(longitudinal redundancy checks), 해시 함수들, 극성 스켐들(polarity schemes), 터보 코드들, 해밍 코드들, 및 리드-솔로몬(Reed-Solomon) 에러 교정 코드들을 이용하여 생성될 수 있다.
단계(802)에서, 예를 들어 제어 디바이스로부터의 셋업 명령에 응답하여, 데이터 메모리 디바이스의 인터페이스와 연관된 CRC 논리가 초기화된다. 일 실시예에서, 단계(802)는 CRC 논리를 초기화하기 위해 데이터 메모리 디바이스와 연관된 고유 식별자를 이용하는 것을 포함한다.
단계(804)에서, 명령들, 파라미터들, 데이터, 상태 정보, 어드레스 정보 및/또는 이들의 조합을 포함하는 정보가 데이터 메모리 디바이스의 인터페이스에서 제어 디바이스로부터 수신된다. 단계(806)는 에러들이 정보에 존재하는지 여부를 결정한다. 단계(806)의 에러 교정 프로세스는 단계(802)에서 초기화된 CRC 논리를 이용하여 수행된다.
에러들이 검출되면(또는 에러들의 수가 미리 한정된 임계치 이상이면), 방법은 블록(822)으로 진행되며, 블록(822)에서는 에러 상태들이 설정되며 선택적으로 제어 디바이스로 복귀된다. 단계(806)에서 에러들이 검출되지 않는다면(또는 에러들의 수가 미리 한정된 임계치 이하이면), 방법은 블록(808)으로 진행되며 방법은 제어 디바이스로부터 데이터가 수신되는지 여부를 결정한다. 예를 들어, 단계(804)에서 수신된 정보는 기록 명령을 포함할 수 있고 단계(808)에서 수신된 정보는 메모리 디바이스에 기록되는 데이터를 포함할 수 있다.
단계(808)에서 데이터가 수신되지 않는다면(예를 들어, 판독 명령이 수신되면), 방법은 블록(816)으로 진행된다. 제어 디바이스로부터 데이터가 수신되면, 방법은 블록(810)으로 진행된다. 블록(810)은 필요한 경우, CRC 논리가 재-초기화될 수 있는 선택적 단계이다. 블록(812)에서, 데이터가 수신되며 CRC 논리를 사용하는 데이터에 기초하여 순환 중복 코드가 계산된다. 단계(814)에서 에러가 검출되면, 방법은 블록(822)으로 진행된다. 에러들이 검출되지 않으면(또는 에러들의 수가 미리 한정된 임계치 이하이면), 방법은 단계(816)로 진행된다.
단계(816)에서, 데이터에 대한 명령이 실행된다. 예를 들어, 블록(816)은 데이터 메모리 디바이스의 저장 위치들로의 데이터 저장을 포함한다. 또 다른 예에서, 블록(816)은 데이터 메모리 디바이스의 저장 위치들로부터의 데이터 판독을 포함한다.
단계(818)에서, 명령이 성공적으로 실행되지 않았다면, 방법은 블록(822)으로 진행된다. 명령이 성공적으로 실행되었다면, 방법은 명령이 성공했다는 것이 표시되도록 상태를 설정하는 블록(820)으로 진행된다.
단계(824)에서, 방법은 데이터 메모리 디바이스로부터 제어 디바이스로 데이터가 복귀되었는지 여부를 결정한다. 데이터가 복귀되지 않았다면, 방법은 블록(832)에서 종료된다. 데이터가 복귀되었다면, 방법은 블록(826)으로 진행된다. 블록(826)은 원할 경우 CRC 논리를 재-초기화시킬 수 있는 선택적 단계이다. 블록(828)에서, 제어 디바이스로 복귀되는 데이터가 액세스되며 에러 검출 코드워드는 CRC 논리를 사용하는 데이터를 기초로 계산된다. 코드워드는 데이터에 첨부되며 단계(830)에서 제어 디바이스로 복귀된다.
도 9는 에러 검출 코드들을 사용하여 데이터를 전송하기 위한 시스템의 타이밍 다이어그램을 나타낸다. 도 9는 입력/출력 채널(900), 기록 인에이블 비트(902), 판독 인에이블 비트(904), 및 칩 선택 비트(906)를 나타낸다. 도 9의 타이밍 다이어그램은 데이터 메모리 디바이스가 요청된 데이터를 제어 디바이스로 복귀시키도록, 제어 디바이스로부터 데이터 메모리 디바이스에 제공된 예시적 판독 명령을 나타낸다. 제 1 부분(901)은 데이터 전송의 명령부를 나타낸다. 제 1 부분(901)에서, 기록 인에이블 비트(902)는 데이터 메모리 디바이스가 연관된 명령 및 어드레스 정보(908-916)에서 수신 또는 판독되도록 하이(high) 상태와 로우(low) 상태 사이에서 토글링된다(toggled). 명령 및 어드레스 정보에는 에러 검출 코드워드 데이터(918, 920)가 첨부되며, 에러 검출 코드워드 데이터(918, 920)는 예를 들어 제어 디바이스에 의해 생성된 순환 중복 코드 정보를 포함할 수 있다.
도 9의 다이어그램의 제 2 부분(903)은 제어 디바이스에 대한 순차적 데이터 복귀 정보를 나타낸다. 제 2 부분(903)에서, 판독 인에이블 비트(904)는 데이터 메모리 디바이스가 제어 디바이스로 데이터를 출력하거나 출력 데이터를 판독하도록, 하이 상태와 로우 상태 사이에서 토글링된다. 에러 검출 코드워드 정보(930, 932)는 제어 디바이스로 복귀되는 사용자 데이터(922-928)에 첨부된다. 일 실시예에서, 에러 검출 코드워드 정보(930, 932)는 순환 중복 코드 논리를 사용하여 생성되며, 명령 정보로 수신된 에러 검출 코드(918, 920)를 검사하기 위해 이용되는 논리와 유사할 수 있다.
본 발명의 다양한 실시예들의 다수의 특징들 및 장점들이 상기 설명들에 개시되었지만, 설명의 다양한 실시예들의 구조 및 기능에 대한 상세설명과 함께, 본 설명은 단지 예시적인 것이며 첨부되는 청구항들이 표현하는 용어들의 광범위한 의미에 의해 표현되는 전체 범위로 본 발명의 원리 내에서 부품들의 구조 및 배열이 세부적으로 변경될 수 있다는 것이 이해될 것이다. 예를 들어, 특정 엘리먼트들은 시스템 또는 방법에 대한 특정 애플리케이션에 따라 변경될 수 있지만, 본 발명 및/또는 첨부된 청구항들의 범주 및 사상을 이탈하지 않고 실질적으로 동일한 기능이 유지될 수 있다.

Claims (28)

  1. 디바이스로서,
    반도체 메모리 패키지를 포함하고, 상기 반도체 메모리 패키지는:
    상기 반도체 메모리 패키지 내의 메모리 어레이;
    외부 데이터 저장 제어기에 접속되도록 그리고 데이터를 수신하고 데이터를 전송하도록 구성되는 인터페이스;
    상기 외부 데이터 저장 제어기로 하여금 동작을 위해 상기 반도체 메모리 패키지를 선택하게 하도록 구성되는 칩 선택 입력; 및
    상기 인터페이스에서의, 상기 외부 데이터 저장 제어기로부터 수신되는 데이터 상에서 발생하는 에러들을 검출하도록 구성되는 상기 반도체 메모리 패키지 내의 에러 검출 콤포넌트
    를 포함하며, 상기 에러들의 검출은 상기 메모리 어레이에 상기 데이터가 저장되기 이전에 발생하고,
    상기 에러 검출 콤포넌트는 상기 데이터가 상기 메모리 어레이에 저장되기 이전에 상기 데이터가 에러들을 포함하는지를 결정하기 위해 상기 외부 데이터 저장 제어기에 의해 상기 데이터에 첨부된 에러 검출 코드워드(codeword)를 이용하는 에러 검출 논리(logic)를 포함하고,
    상기 디바이스는 상기 디바이스에 저장된 고유 식별자(unique identifier)에 의해 식별되며, 상기 에러 검출 논리는 상기 에러 검출 논리가 에러들을 식별하기 위해 상기 데이터를 분석하기 이전에, 상기 고유 식별자로 초기화되는,
    디바이스.
  2. 제 1 항에 있어서,
    상기 반도체 메모리 패키지는 하우징(housing) 내에 제공되는 적어도 하나의 반도체 다이를 포함하며, 상기 메모리 어레이는 다수의 메모리 셀들을 포함하고, 상기 다수의 메모리 셀들 각각은 적어도 하나의 비트를 저장할 수 있는,
    디바이스.
  3. 제 2 항에 있어서,
    상기 메모리 어레이, 인터페이스, 및 에러 검출 콤포넌트는 동일 반도체 다이 상에서 구현되는,
    디바이스.
  4. 제 2 항에 있어서,
    상기 메모리 어레이는 플래시 메모리를 포함하는,
    디바이스.
  5. 제 2 항에 있어서,
    상기 반도체 메모리 패키지는 상기 외부 데이터 저장 제어기에 상기 인터페이스를 통신가능하게 커플링(couple)시키기 위한 다수의 입력/출력(I/O) 입력들을 포함하며, 상기 다수의 I/O 입력들은 상기 디바이스가 입력 명령, 어드레스, 및 데이터를 수신하고 출력 데이터를 전송하도록 상기 외부 데이터 저장 제어기와 통신하는 것을 인에이블하는,
    디바이스.
  6. 제 5 항에 있어서,
    상기 반도체 메모리 패키지는,
    상기 메모리 어레이에 데이터를 저장하는 것을 인에이블하기 위해 상기 외부 데이터 저장 제어기에 접속되도록 구성되는 기록 인에이블 입력; 및
    상기 메모리 어레이로부터 데이터를 판독하는 것을 인에이블하기 위해 상기 외부 데이터 저장 제어기에 접속되도록 구성되는 판독 인에이블 입력
    을 더 포함하는,
    디바이스.
  7. 삭제
  8. 삭제
  9. 제 1 항에 있어서,
    상기 에러 검출 논리는 상기 데이터에 기초하여 제 2 에러 검출 코드워드를 계산하며, 상기 제 2 에러 검출 코드워드는 상기 데이터에서 에러들의 수를 식별하기 위해 상기 데이터에 첨부된 상기 에러 검출 코드워드와 비교되는,
    디바이스.
  10. 제 1 항에 있어서,
    상기 에러 검출 논리는 상기 데이터에서 에러들의 수를 식별하기 위해 상기 데이터와 상기 데이터에 첨부된 상기 에러 검출 코드워드 모두를 분석하는데 중복 코드 논리(redundancy code logic)를 이용하는,
    디바이스.
  11. 삭제
  12. 제 1 항에 있어서,
    상기 에러 검출 논리는 상기 외부 데이터 저장 제어기로부터 수신된 셋업 명령(setup command)에 응답하여 초기화되도록 구성되는,
    디바이스.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 시스템으로서,
    데이터를 저장하기 위한 복수의 데이터 메모리 디바이스들;
    상기 복수의 데이터 메모리 디바이스들과 데이터를 통신하기 위한 적어도 하나의 디바이스 버스 인터페이스를 갖는 제어기 ― 상기 제어기는 선택된 메모리 디바이스에 저장될 데이터에 에러 코드를 첨부하고; 상기 제어기의 인터페이스와 상기 선택된 데이터 메모리 디바이스 사이의 기록 경로(write path)를 따라 상기 선택된 데이터 메모리 디바이스에 상기 데이터 및 에러 코드를 제공하도록 구성됨 ―;
    상기 복수의 데이터 메모리 디바이스들 각각과 상기 제어기 사이의 칩 선택 접속들 ― 상기 칩 선택 접속들에 의해 상기 제어기가 동작을 위해 상기 선택된 데이터 메모리 디바이스를 선택함 ―;
    상기 제어기로 하여금 호스트 디바이스와 통신하게 하도록 구성되는 호스트 인터페이스; 및
    상기 에러 코드에 기초하여 상기 데이터에서 에러들의 수를 검출하도록 구성되며, 상기 기록 경로에서 제공되는 에러 검출 콤포넌트를 포함하며,
    상기 검출은 상기 데이터가 상기 데이터 메모리 디바이스에 저장되기 이전에 발생하고,
    상기 에러 검출 콤포넌트는 상기 데이터가 상기 데이터 메모리 디바이스에 저장되기 이전에 상기 데이터가 에러들을 포함하는지를 결정하기 위해 상기 제어기에 의해 상기 데이터에 첨부된 에러 검출 코드워드를 이용하는 에러 검출 논리를 포함하고,
    상기 복수의 데이터 메모리 디바이스들은 상기 제어기와 통신하도록 구성된 복수의 솔리드-스테이트(solid-state) 메모리 디바이스들을 포함하며, 상기 복수의 솔리드-스테이트 메모리 디바이스들 각각은 상기 복수의 솔리드-스테이트 메모리 디바이스들 각각에 저장된 고유 식별자에 의해 고유하게 식별되며, 상기 에러 검출 논리는 상기 에러 검출 논리가 에러들을 식별하기 위해 상기 데이터를 분석하기 이전에, 상기 고유 식별자로 초기화되는,
    시스템.
  22. 제 21 항에 있어서,
    상기 선택된 데이터 메모리 디바이스는 디바이스 버스를 통해 상기 디바이스 버스 인터페이스에 통신가능하게 커플링되는 데이터 입력을 갖는 솔리드-스테이트 메모리 디바이스를 포함하며,
    상기 에러 검출 콤포넌트는 상기 선택된 데이터 메모리 디바이스의 메모리 엘리먼트와 상기 데이터 입력 사이에 제공되는, 시스템.
  23. 제 22 항에 있어서,
    상기 에러 코드는 상기 솔리드-스테이트 메모리 디바이스에 대한 고유 식별자에 기초하여 상기 제어기에 의해 생성되는 코드워드를 포함하는,
    시스템.
  24. 제 21 항에 있어서,
    상기 복수의 데이터 메모리 디바이스들 각각은 상기 데이터 메모리 디바이스와 상기 제어기 사이에서 전송되는 데이터에 대한 에러 검출 코드워드를 생성하기 위해 상기 데이터 메모리 디바이스의 고유 식별자를 이용하도록 구성된 에러 검출 콤포넌트를 포함하는, 시스템.
  25. 제 21 항에 있어서,
    상기 데이터 및 상기 데이터와 연관된 명령들은 공통 통신 버스를 통해 상기 선택된 데이터 메모리 디바이스로 전송되며,
    상기 에러 검출 콤포넌트는 전송된 명령들 내에서 에러들을 검출하는데 이용되는, 시스템.
  26. 제 1 항에 있어서,
    상기 반도체 메모리 패키지에 커플링되는 상기 외부 데이터 저장 제어기를 더 포함하는,
    디바이스.
  27. 제 26 항에 있어서,
    상기 외부 데이터 저장 제어기에 커플링되는 호스트 디바이스를 더 포함하고, 상기 호스트 디바이스는 상기 반도체 메모리 패키지 내에 데이터를 저장하고 상기 반도체 메모리 패키지로부터 데이터를 리트리브(retrieve)하기 위해 상기 외부 데이터 저장 제어기로 판독 명령들 및 기록 명령들을 송신하도록 구성되는,
    디바이스.
  28. 제 21 항에 있어서,
    상기 호스트 디바이스를 통하여 상기 제어기로 명령들을 발부(issue)하도록 구성되는 상기 호스트 디바이스를 더 포함하는,
    시스템.
KR1020160067413A 2009-01-09 2016-05-31 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기 KR101964207B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/351,283 2009-01-09
US12/351,283 US20100180182A1 (en) 2009-01-09 2009-01-09 Data memory device and controller with interface error detection and handling logic

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020090131515A Division KR20100082710A (ko) 2009-01-09 2009-12-28 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기

Publications (2)

Publication Number Publication Date
KR20160066019A KR20160066019A (ko) 2016-06-09
KR101964207B1 true KR101964207B1 (ko) 2019-04-01

Family

ID=42319891

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020090131515A KR20100082710A (ko) 2009-01-09 2009-12-28 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기
KR1020160067413A KR101964207B1 (ko) 2009-01-09 2016-05-31 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020090131515A KR20100082710A (ko) 2009-01-09 2009-12-28 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기

Country Status (3)

Country Link
US (2) US20100180182A1 (ko)
KR (2) KR20100082710A (ko)
SG (1) SG163469A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US20110040924A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
WO2011073940A1 (en) * 2009-12-17 2011-06-23 International Business Machines Corporation Data management in solid state storage systems
US8286027B2 (en) * 2010-05-25 2012-10-09 Oracle International Corporation Input/output device including a mechanism for accelerated error handling in multiple processor and multi-function systems
US8402320B2 (en) * 2010-05-25 2013-03-19 Oracle International Corporation Input/output device including a mechanism for error handling in multiple processor and multi-function systems
US8504893B1 (en) 2010-09-30 2013-08-06 Micron Technology, Inc. Error detection or correction of a portion of a codeword in a memory device
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8713357B1 (en) * 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9626517B2 (en) * 2013-01-23 2017-04-18 Seagate Technology Llc Non-deterministic encryption
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
WO2016032784A1 (en) * 2014-08-25 2016-03-03 Rambus Inc. Buffer circuit with adaptive repair capability
KR102415385B1 (ko) * 2015-07-22 2022-07-01 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 저장 장치
US10725933B2 (en) * 2016-12-30 2020-07-28 Intel Corporation Method and apparatus for redirecting memory access commands sent to unusable memory partitions
CN109669800B (zh) * 2017-10-13 2023-10-20 爱思开海力士有限公司 用于写入路径错误的高效数据恢复
KR102128941B1 (ko) 2018-07-17 2020-07-01 창원대학교 산학협력단 역 전압 열화 현상이 방지된 고체산화물 연료전지의 제조방법
US11086733B2 (en) * 2018-12-19 2021-08-10 Micron Technology, Inc. Reporting control information errors
KR102100399B1 (ko) 2019-02-21 2020-04-13 김석환 장애인 보도블럭 시스템
DE102019117350A1 (de) * 2019-06-27 2020-12-31 OSRAM Opto Semiconductors Gesellschaft mit beschränkter Haftung Elektronisches gerät mit crc-generator und verfahren zum übertragen von daten von einem elektronischen gerät an eine kontrolleinheit
US11294766B2 (en) * 2019-08-13 2022-04-05 Micron Technology, Inc. Coordinated error correction
US11200112B1 (en) * 2020-08-24 2021-12-14 International Business Machines Corporation Method and apparatus to reduce bandwidth overhead of CRC protection on a memory channel
US11922061B2 (en) 2020-08-31 2024-03-05 Micron Technology, Inc. Adaptive memory refresh control
US11714576B2 (en) * 2020-10-29 2023-08-01 Micron Technology, Inc. Memory bus drive defect detection
US11783885B2 (en) * 2020-10-30 2023-10-10 Micron Technology, Inc. Interactive memory self-refresh control
TWI746331B (zh) * 2020-12-30 2021-11-11 旺宏電子股份有限公司 快閃記憶體的控制方法、快閃記憶體晶粒以及快閃記憶體
US11586393B2 (en) 2020-12-30 2023-02-21 Macronix International Co., Ltd. Control method for requesting status of flash memory, flash memory die and flash memory with the same
US11990199B2 (en) * 2021-01-21 2024-05-21 Micron Technology, Inc. Centralized error correction circuit
JP2022137811A (ja) * 2021-03-09 2022-09-22 キオクシア株式会社 情報処理システム、ストレージデバイスおよびホスト

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010004326A1 (en) 1999-12-20 2001-06-21 Yukio Terasaki Memory controller for flash memory system and method for writing data to flash memory device
US20080258758A1 (en) 2006-12-28 2008-10-23 Fujitsu Limited Embedded system and control method therefor

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231640A (en) * 1990-07-20 1993-07-27 Unisys Corporation Fault tolerant processor/memory architecture
US6209127B1 (en) * 1997-06-05 2001-03-27 Matsushita Electrical Industrial Co., Ltd Terminal device capable of remote download, download method of loader program in terminal device, and storage medium storing loader program
US6457067B1 (en) * 1998-12-18 2002-09-24 Unisys Corporation System and method for detecting faults in storage device addressing logic
US6141276A (en) * 1999-09-02 2000-10-31 Micron Technology, Inc. Apparatus and method for increasing test flexibility of a memory device
US6457154B1 (en) * 1999-11-30 2002-09-24 International Business Machines Corporation Detecting address faults in an ECC-protected memory
US7676640B2 (en) * 2000-01-06 2010-03-09 Super Talent Electronics, Inc. Flash memory controller controlling various flash memory cells
US6701480B1 (en) * 2000-03-08 2004-03-02 Rockwell Automation Technologies, Inc. System and method for providing error check and correction in memory systems
US6700827B2 (en) * 2001-02-08 2004-03-02 Integrated Device Technology, Inc. Cam circuit with error correction
US6754858B2 (en) * 2001-03-29 2004-06-22 International Business Machines Corporation SDRAM address error detection method and apparatus
JP4080227B2 (ja) * 2002-03-28 2008-04-23 株式会社日立製作所 データ検証方法およびディスクアレイ装置
US7234099B2 (en) * 2003-04-14 2007-06-19 International Business Machines Corporation High reliability memory module with a fault tolerant address and command bus
US20050120265A1 (en) * 2003-12-02 2005-06-02 Pline Steven L. Data storage system with error correction code and replaceable defective memory
US7293221B1 (en) * 2004-01-27 2007-11-06 Sun Microsystems, Inc. Methods and systems for detecting memory address transfer errors in an address bus
US7389465B2 (en) * 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7203890B1 (en) * 2004-06-16 2007-04-10 Azul Systems, Inc. Address error detection by merging a polynomial-based CRC code of address bits with two nibbles of data or data ECC bits
US7212440B2 (en) * 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
JP4534854B2 (ja) * 2005-04-26 2010-09-01 ソニー株式会社 情報処理システム、情報処理装置および方法、並びにプログラム
KR101258424B1 (ko) * 2005-12-02 2013-04-26 가부시키가이샤 한도오따이 에네루기 켄큐쇼 반도체 디바이스
US7689894B2 (en) * 2006-05-11 2010-03-30 Mediatek Inc. Decoding apparatus and method therefor
JP2008027326A (ja) * 2006-07-25 2008-02-07 Tdk Corp システムコントローラ、該システムコントローラを有するフラッシュメモリシステム、フラッシュメモリモジュールの制御方法
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多***公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、***和方法
US8015473B2 (en) * 2006-12-19 2011-09-06 Intel Corporation Method, system, and apparatus for ECC protection of small data structures
US8239650B2 (en) * 2007-01-31 2012-08-07 Broadcom Corporation Wirelessly configurable memory device addressing
TW200834597A (en) * 2007-02-15 2008-08-16 Wedotek Technology Inc Data storage device
JP5379956B2 (ja) * 2007-03-19 2013-12-25 株式会社日立製作所 ストレージ装置及び記憶領域配置方法
US20090063786A1 (en) * 2007-08-29 2009-03-05 Hakjune Oh Daisy-chain memory configuration and usage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010004326A1 (en) 1999-12-20 2001-06-21 Yukio Terasaki Memory controller for flash memory system and method for writing data to flash memory device
US20080258758A1 (en) 2006-12-28 2008-10-23 Fujitsu Limited Embedded system and control method therefor

Also Published As

Publication number Publication date
SG163469A1 (en) 2010-08-30
KR20160066019A (ko) 2016-06-09
KR20100082710A (ko) 2010-07-19
US20100180182A1 (en) 2010-07-15
US10152249B2 (en) 2018-12-11
US20170075603A1 (en) 2017-03-16

Similar Documents

Publication Publication Date Title
KR101964207B1 (ko) 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기
TWI442407B (zh) 在固態儲存系統中之資料回復
US9977712B2 (en) Memory device with different parity regions
KR101405741B1 (ko) 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작
US8627180B2 (en) Memory controller ECC
US8510634B2 (en) Methods of data handling
US6388919B2 (en) Memory controller for flash memory system and method for writing data to flash memory device
TWI408688B (zh) 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
US10936415B2 (en) Error correction scheme in flash memory
KR20140013095A (ko) 데이터 무결성을 제공하기 위한 방법 및 장치
KR102319402B1 (ko) 복수의 채널들을 통해 반도체 메모리 장치들을 제어하는 메모리 시스템
JP2002133892A (ja) フラッシュメモリの欠陥管理方法
JP2010500699A (ja) メモリデバイス内のセクタごとに許容できるビットエラー
TWI415134B (zh) 資料存取方法、使用此方法的控制器與儲存系統
CN115587011A (zh) 管理存储装置中的调试日志的方法
TWI500036B (zh) 非揮發性儲存裝置及其控制方法
TWI738390B (zh) 資料保護方法、記憶體儲存裝置及記憶體控制電路單元
US20230153038A1 (en) Storage device performing self-diagnosis and storage system including the same
KR102404257B1 (ko) 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법
CN111858389B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant