KR101730306B1 - 메모리에서의 오류 정정 - Google Patents

메모리에서의 오류 정정 Download PDF

Info

Publication number
KR101730306B1
KR101730306B1 KR1020167010539A KR20167010539A KR101730306B1 KR 101730306 B1 KR101730306 B1 KR 101730306B1 KR 1020167010539 A KR1020167010539 A KR 1020167010539A KR 20167010539 A KR20167010539 A KR 20167010539A KR 101730306 B1 KR101730306 B1 KR 101730306B1
Authority
KR
South Korea
Prior art keywords
data
controller
error correction
memory
memory controller
Prior art date
Application number
KR1020167010539A
Other languages
English (en)
Other versions
KR20160055936A (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 KR20160055936A publication Critical patent/KR20160055936A/ko
Application granted granted Critical
Publication of KR101730306B1 publication Critical patent/KR101730306B1/ko

Links

Images

Classifications

    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)

Abstract

메모리에서의 오류 정정을 위한 장치, 시스템 및 방법이 개시된다. 일 실시예에서, 제어기는, 메모리에 저장되는 데이터에 대한 판독 요청을 호스트 디바이스로부터 수신하고, 데이터 및 연관되는 오류 정정 코드워드를 검색하고, 데이터를 호스트 디바이스에 송신하고, 데이터와 함께 검색되는 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하고, 오류 정정 코드워드에서의 오류에 응답하여 오류와 연관되는 데이터의 위치를 호스트 디바이스에 송신하기 위한 로직을 포함한다. 다른 실시예들도 개시되고 청구된다.

Description

메모리에서의 오류 정정{ERROR CORRECTION IN MEMORY}
본 개시 내용은 일반적으로 전자 장치의 분야에 관한 것이다. 보다 상세하게는, 본 발명의 일부 실시예들은 일반적으로 전자 디바이스들을 위한 메모리에서의 오류 정정(error correction)에 관한 것이다.
다수의 전자 디바이스들은 자주 비휘발성 메모리, 예를 들어 플래시 메모리 등으로 구체화되는 로컬 고속 액세스 메모리를 이용하여 구현될 수 있는 메모리 시스템들을 포함한다. 주기적으로, 판독 오류들이 저장 매체(비휘발성 메모리)에서의 오류들 및/또는 신호 처리에서의 오류들 때문에 발생할 수 있다. 기존 오류 정정 기술들은 메모리 시스템들에서 판독 대기 시간의 상승에 기여할 수 있고, 이것은 전자 디바이스들의 전체 성능에 영향을 미친다. 이에 따라, 메모리에서 오류 정정을 관리하기 위한 기술은, 예를 들어 전자 디바이스들을 위한 메모리 시스템들에서 유용하다고 여길 수 있다.
상세한 설명이 첨부 도면들을 참조하여 제공된다. 상이한 도면들에서의 동일한 참조 번호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 본 명세서에서 논의되는 다양한 예들에 따르는, 메모리에서 오류 정정을 구현하기 위한 장치의 컴포넌트들의 개략적 구성 블록도이다.
도 2-3 및 5는 본 명세서에서 논의되는 다양한 실시예들에 따르는, 메모리에서 오류 정정을 구현하기 위한 방법의 동작들을 나타내는 흐름도이다.
도 4는 본 명세서에서 논의되는 다양한 실시예들에 따르는, 메모리에서 오류 정정을 구현하기 위한 방법에 사용될 수 있는 데이터 블록의 개략도이다.
도 6-10은 본 명세서에서 논의되는 다양한 실시예들에 따르는, 메모리 대기 시간 관리를 구현하기 위해 적응될 수 있는 전자 디바이스들의 개략적 블록도들이다.
다음의 설명에서는, 다양한 실시예들의 철저한 이해를 제공하기 위해서 수많은 특정 상세 사항들이 개시된다. 그러나 본 발명의 다양한 실시예들은 특정 상세 사항들 없이도 실시될 수 있다. 다른 경우들에서는, 본 발명의 특정 실시예들을 모호하게 하지 않도록 잘 알려진 방법들, 절차들, 컴포넌트들, 및 회로들이 상세히 설명되지 않았다. 또한, 본 발명의 실시예들의 다양한 양태들은 다양한 수단, 예를 들어 집적 반도체 회로들("하드웨어"), 하나 이상의 프로그램으로 조직화된 컴퓨터 판독가능 명령어들("소프트웨어"), 또는 하드웨어와 소프트웨어의 일부 조합을 이용하여 수행될 수 있다. 본 개시 내용을 위해, "로직"에 대한 참조는 하드웨어, 소프트웨어, 또는 이들의 일부 조합을 의미한다.
도 1은 본 명세서에서 논의되는 다양한 예들에 따르는, 메모리에서 오류 정정을 구현하기 위한 장치의 컴포넌트들의 개략적 구성 블록도이다. 도 1을 참조하면, 일부 실시예들에서, 중앙 처리 유닛(CPU) 패키지(100)는 제어 허브(120)에 결합되는 하나 이상의 프로세서(110), 및 로컬 메모리(130)를 포함할 수 있다. 제어 허브(120)는 메모리 제어기(122) 및 메모리 인터페이스(124)를 포함한다.
메모리 인터페이스(124)는 통신 버스(160)에 의해 원격 메모리(140)에 결합된다. 일부 예에서, 통신 버스(160)는 인쇄회로 기판상의 트레이스들, 동선들을 가진 케이블, 광섬유 케이블, 커넥팅 소켓, 또는 상기한 것의 조합으로 구현될 수 있다. 메모리(140)는 제어기(142) 및 하나 이상의 메모리 디바이스(들)(150)를 포함할 수 있다. 다양한 실시예들에서, 메모리 뱅크들(150) 중 적어도 일부는, 예를 들어 정적 랜덤 액세스 메모리(SRAM)(Static Random Access Memory), 동적 랜덤 액세스 메모리(DRAM)(Dynamic Random Access Memory)인 휘발성 메모리, 예를 들어 상 변화 메모리, NAND(플래시) 메모리, 강유전성 랜덤 액세스 메모리(FeRAM)(Ferroelectric Random-Access Memory), 나노와이어 기반 비휘발성 메모리, 멤리스터(memristor) 기술을 수용한 메모리, 상 변화 메모리(PCM)(Phase Change Memory)와 같은 3차원(3D) 크로스포인트 메모리, 스핀 전달 토크 메모리(STT-RAM)(Spin-Transfer Torque Memory) 또는 NAND 플래시 메모리인 비휘발성 메모리, 또는 비-휘발성 메모리를 이용하여 구현될 수 있다. 예로서, 일부 실시예들에서, 메모리 디바이스(들)(140)는 통신 링크를 제어기(142)에 제공하는 메모리 채널(144)에 결합되는 하나 이상의 다이렉트 인라인 메모리 모듈(DIMM)(Direct In-line Memory Module)을 포함할 수 있다. 메모리(140)에서 메모리 디바이스(들)(150)의 특정 구성이 결정적인 것은 아니다.
앞서 논의한 바와 같이, 일부 실시예들에서, 제어기(122) 및 메모리 제어기(142)에서의 로직은 메모리(140)에서 오류 정정을 구현한다. 보다 상세하게는, 메모리 제어기(122)와 제어기(142)는 메모리(140)에서 낮은 대기 시간 오류 정정 동작을 구현한다.
메모리에서 오류 정정을 구현하기 위한 제1 기술은 도 2-3을 참조하여 설명될 것이다. 제1 기술에서, 메모리 제어기(122)로부터의 판독 요청에 응답하여 메모리(140)로부터 판독된 데이터는 정정되지 않고 메모리 제어기(122)에 반송된다. 동시에, 제어기(142)는 메모리(140)로부터 판독된 데이터에 대한 ECC 루틴을 구현한다. ECC 루틴이 데이터에 판독 오류들이 없다고 나타내면, 제어기(142)는 데이터가 클린하다는 것을 나타내는 신호를 메모리 제어기(142)에 송신한다. 반대로, ECC 루틴이 데이터에 하나 이상의 오류가 있다고 나타내면, 제어기(142)는 메모리(140)로부터 판독된 데이터에서의 오류(들)의 위치를 메모리 제어기(142)에 전송하고, 이것은 오류 비트(들)를 이진수 1에서 2진수 0으로 플립(flip)하거나 또는 그 반대로 함으로써 오류들을 정정할 수 있다.
도 2를 참조하면, 동작 210에서, 제어기(142)는 호스트 디바이스로부터 판독 요청을 수신한다. 예로서, 도 1에 도시된 메모리 시스템 구성에서, 메모리 제어기(122)는 프로세서(들)(110) 상에서 실행되는 하나 이상의 애플리케이션으로부터 메모리(140) 내의 데이터에 대한 판독 요청을 수신할 수 있다. 판독 요청에 응답하여, 메모리 제어기(122)는 하나 이상의 판독 요청을 메모리 인터페이스(124)를 통해 제어기(142)에 전송할 수 있다. 판독 요청(들)은 특정한 블록 사이즈, 예를 들어 256바이트를 요청할 수 있다.
제어기(142)는 동작 210에서 판독 요청을 수신하고, 동작 215에서 제어기(142)는 데이터와, 그 데이터와 연관되는 동반하는 ECC 코드워드를 메모리(140)로부터 검색한다. 동작 220에서, 제어기(142)는 메모리(140)로부터 검색된 데이터를 호스트 디바이스, 예를 들어, 메모리 제어기(122)에 송신한다. 앞서 설명한 바와 같이, 메모리(140)로부터 검색된 데이터는 ECC 루틴이 완료되기 전에 제어기(122)에 전송될 수 있다.
동작 225에서, 제어기(142)는 데이터와 함께 검색된 ECC 코드워드에 대한 ECC 디코딩 동작을 수행한다. 예로서, ECC 코드워드는 BCH(Bose-Chaudhuri-Hocquenghem) 오류 정정 코드, 리드-솔로몬(Reed-Solomon) 코드, 저밀도 패리티 체크(LDPC)(Low-Density Parity Check) 코드, 터보 코드, 컨볼루션 코드, 또는 극성 코드(polar code) 등으로 구현될 수 있다. ECC 코드워드는, 예를 들어 XOR 동작 등을 적용함으로써 디코딩될 수 있다.
동작 230에서, ECC 디코딩이 메모리(140)로부터 판독된 데이터가 오류들을 포함하지 않는다고 나타낸다면, 제어는 동작 235로 넘어가고, 제어기(142)는 클리어 신호를 메모리 제어기(142)에 송신한다. 반대로, 동작 230에서, ECC 디코딩이 데이터에 오류가 있다고 나타낸다면, 제어는 동작 240으로 넘어가고, 제어기(142)는 오류 위치(들)를 호스트 디바이스로 송신한다. 예로서, 256 바이트 블록에서, 제어기(142)는 오류가 있는 것으로 나타나는 위치들을 바이트들의 블록으로 송신할 수 있다.
도 3은 판독 동작에서 검색된 데이터에 응답하여, 호스트 디바이스, 예를 들어 메모리 제어기(122)에 의해 구현되는 동작을 나타낸다. 도 3을 참조하면, 동작 310에서, 메모리 제어기(122)는 제어기(142)로부터 데이터 블록을 수신한다. 앞서 설명한 바와 같이, 데이터는 ECC 루틴이 데이터에 적용되기 전에 제어기(142)로부터 반송될 수 있다. 그러므로, 메모리 제어기(122)는 판독 데이터를 반송하기 전에 애플리케이션이 프로세서(들)(110) 상에서 실행하도록 요청하기 위한 신호를 제어기(122)로부터 수신하길 기다릴 수 있다.
그러므로, 동작 315에서 메모리 제어기(122)가 판독 데이터에 오류가 없다는 것을 나타내는 클리어 신호를 제어기(122)로부터 수신하면, 제어는 동작 325로 넘어가고, 메모리 제어기(122)는 수신된 판독 데이터를 프로세서(들)(110) 상에서 실행되는 애플리케이션에 반송한다.
반대로, 동작 315에서 메모리 제어기(122)가 클리어 신호를 수신하지 못하면, 제어는 동작 320으로 넘어간다. 동작 320에서 메모리 제어기(122)가 판독 데이터에서 오류들의 위치들을 나타내는 메시지를 제어기(142)로부터 수신하면, 제어는 동작 330으로 넘어가고, 메모리 제어기는 판독 데이터에서 오류 위치(들)의 비트들을 플립한다. 예를 들어, 판독 데이터에서의 특정 비트가 오류인 것으로 나타나면, 메모리 제어기(122)는 판독 오류(들)를 정정하기 위해, 영(0)에서 일(1)로, 또는 그 반대로 비트를 플립한다. 오류들이 정정되었을 때, 정정된 데이터는 프로세서(들)(110) 상에서 실행되는 애플리케이션에 반송될 수 있다.
따라서, 도 2-3에 도시된 동작들은 제어기(142)가, 정정되지 않은 판독 신호를 메모리 제어기(142)에 전송하고 그 다음에 데이터에서의 판독 오류들의 위치(들)를 포함하는 클리어 신호 또는 신호를 전송함으로써 낮은 대기 시간 ECC 절차를 구현하는 것을 가능하게 한다. 메모리 제어기(122)는 이후 필요하다면 어떠한 오류들도 정정할 수 있고, 요청하는 애플리케이션에 데이터를 전송할 수 있다. 판독 오류들이 상대적으로 드물기 때문에, 메모리 제어기(122)가 오류 정정 없이 데이터를 전송할 수 있도록, 대부분의 판독 동작은 제어기(142)로부터 클리어 신호를 초래할 것이다.
메모리에서 오류 정정을 구현하기 위한 제2 기술은 도 4-5를 참조하여 설명될 것이다. 제2 기술에서, 메모리(140)에서의 데이터 블록은 다수의 청크로 세분화될 수 있다. 분리된 ECC 코드워드는 각각의 청크(chunk)와 연관될 수 있고, 글로벌(global) ECC 코드워드는 전체 데이터 블록과 연관될 수 있다. 메모리 제어기(122)로부터의 판독 요청에 응답하여 메모리(140)로부터 판독된 데이터 청크는 메모리 제어기(122)에 정정되지 않고 반송된다. 동시에, 제어기(142)는 메모리(140)로부터 판독된 데이터 청크에 대한 ECC 루틴을 구현한다. ECC 루틴이 데이터 청크에 판독 오류들이 없다는 것을 나타내면, 제어기(142)는 데이터가 클린하다는 것을 나타내는 신호를 메모리 제어기(142)에 송신한다. 반대로, ECC 루틴이 데이터 청크들에 하나 이상의 오류가 있다고 나타내면, 제어기(142)는 메모리(140)로부터 판독된 데이터 청크에서의 오류(들)의 위치를 메모리 제어기(142)에 전송하고, 이것은 오류 비트(들)를 이진수 1에서 2진수 0으로 플립함으로써 오류들을 정정할 수 있다. 또한, 제어기(142)는 전체 데이터 블록과 연관된 ECC 코드워드에 대한 ECC 루틴을 구현한다. ECC 루틴이 오류들을 나타내면, 오류들을 포함하는 데이터 청크(들)는 메모리 제어기(122)에 재전송될 수 있다.
도 4를 참조하면, 일부 실시예에서, 메모리(140)에서 256바이트 데이터 블록(400)은 64바이트 데이터 청크들(410A, 410B, 410C, 410D)로 분할될 수 있고, 이들은 집합적으로 참조 번호(410)로 지칭될 수 있다. 각각의 데이터 청크(410)는 이들과 연관되는 ECC 코드(412A, 412B, 412C, 412D)를 가질 수 있고, 이들은 집합적으로 참조 번호(412)로 지칭될 수 있다. 또한, 블록 ECC 코드(414)는 전체 데이터 블록(400)과 연관될 수 있다.
도 5를 참조하면, 동작 510에서 제어기(142)는 호스트 디바이스로부터 판독 요청을 수신한다. 예로서, 도 1에 도시된 메모리 시스템 구성에서, 메모리 제어기(122)는 프로세서(들)(110) 상에서 실행되는 하나 이상의 애플리케이션으로부터 메모리(140) 내의 데이터에 대한 판독 요청을 수신할 수 있다. 판독 요청에 응답하여, 메모리 제어기(122)는 메모리 인터페이스(124)를 통해 하나 이상의 판독 요청을 제어기(142)에 전송할 수 있다. 판독 요청(들)은 특정한 블록 사이즈, 예를 들어, 64바이트를 요청할 수 있다.
제어기(142)는 동작 510에서 판독 요청을 수신하고, 동작 515에서 제어기(142)는 하나 이상의 데이터 청크(410)와, 데이터 청크들(410)과 연관되는 동반하는 ECC 코드워드(412)를 메모리(140)로부터 수신한다. 동작 520에서, 제어기(142)는 메모리(140)로부터 검색된 데이터 청크들을 호스트 디바이스, 예를 들어 메모리 제어기(122)에 송신한다. 앞서 설명한 바와 같이, 메모리(140)로부터 검색된 데이터는 ECC 루틴이 완료되기 전에 제어기(122)로 전송될 수 있다.
동작 525에서, 제어기(142)는 데이터 청크들(410)과 함께 검색된 ECC 코드워드들(412)에 대한 ECC 디코딩 동작을 수행한다. 예로서, ECC 코드워드는 BCH 오류 정정 코드, 리드-솔로몬 코드, 저밀도 패리티 체크(LDPC) 코드, 터보 코드, 컨볼루션 코드, 또는 극성 코드 등으로서 구현될 수 있다. ECC 코드워드는, 예를 들어 XOR 동작 등을 적용함으로써 디코딩될 수 있다.
동작 530에서, 제어기(142)는 ECC 코드워드들(412)에 대한 ECC 동작으로부터 검출된 임의의 오류 위치들을 메모리 제어기(122)에 송신한다. 동작 535에서, 제어기(142)는 ECC 코드워드(414)에 대한 ECC 디코딩 동작을 수행한다. 동작 540에서 ECC 디코딩이, 메모리(140)로부터 판독된 데이터가 오류들을 포함하지 않는다고 나타내면, 제어는 동작 550으로 넘어가고, 제어기(142)는 클리어 신호를 메모리 제어기(142)에 송신한다. 반대로, 동작 540에서 ECC 디코딩이 데이터에 오류가 있다고 나타내면, 제어는 동작 545으로 넘어가고, 제어기(142)는 오류 데이터를 포함하는 데이터 청크만을 호스트 디바이스에 재전송한다. 메모리 제어기(122)는 제어기(142)로부터 수신된 데이터를 처리하기 위해 도 3에 설명되는 동작들과 유사한 동작들을 구현할 수 있다.
앞서 설명한 바와 같이, 일부 실시예들에서, 전자 디바이스는 컴퓨터 시스템으로서 구체화될 수 있다. 도 6은 본 발명의 실시예에 따른 컴퓨팅 시스템(600)의 블록도를 예시한다. 컴퓨팅 시스템(600)은 상호접속 네트워크(또는 버스)(604)를 경유해 통신하는 하나 이상의 중앙 처리 유닛(들)(CPU들)(602) 또는 프로세서들을 포함할 수 있다. 프로세서들(602)은 범용 프로세서, 네트워크 프로세서(컴퓨터 네트워크(603)를 통해 통신되는 데이터를 처리함), 또는 기타 유형들의 프로세서(RISC(Reduced Instruction Set Computer) 프로세서 또는 CISC(Complex Instruction Set Computer)를 포함함)를 포함할 수 있다. 게다가, 프로세서들(602)은 단일 또는 다중 코어 설계를 가질 수 있다. 다중 코어 설계를 갖는 프로세서들(602)은 동일한 집적 회로(IC) 다이 상에서 다른 유형들의 프로세서 코어들을 통합할 수 있다. 또한, 다중 코어 설계를 갖는 프로세서들(602)은 대칭 또는 비대칭 멀티프로세서들로서 구현될 수 있다. 실시예에서, 프로세서들(602) 중 하나 이상은 도 1의 프로세서들(102)과 동일하거나 유사할 수 있다. 예를 들어, 프로세서들(602) 중 하나 이상은 도 1-3을 참조하여 논의되는 제어 유닛(120)을 포함할 수 있다. 또한, 도 3-5를 참조하여 논의되는 동작들은 시스템(600)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다.
칩셋(606)은 또한 상호접속 네트워크(604)와 통신할 수 있다. 칩셋(606)은 메모리 제어 허브(MCH)(Memory Control Hub)(608)를 포함할 수 있다. MCH(608)는 메모리(612)(도 1의 메모리(130)와 동일하거나 유사할 수 있음)와 통신하는 메모리 제어기(610)를 포함할 수 있다. 메모리(412)는 CPU(602), 또는 컴퓨팅 시스템(600)에 포함되는 임의의 다른 디바이스에 의해 실행될 수 있는 명령어들의 시퀀스들을 포함하는 데이터를 저장할 수 있다. 본 발명의 일 실시예에서, 메모리(612)는 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM)과 같은 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스들, 또는 기타 유형의 스토리지 디바이스들을 포함할 수 있다. 또한, 예를 들어 하드 디스크 또는 솔리드 스테이트 드라이브(SSD)와 같은 비휘발성 메모리가 이용될 수 있다. 예를 들어, 다수의 CPU 및/또는 다수의 시스템 메모리와 같은 추가 디바이스들이 상호접속 네트워크(604)를 통해 통신할 수 있다.
MCH(608)는 또한 디스플레이 디바이스(616)와 통신하는 그래픽 인터페이스(614)를 포함할 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(614)는 가속 그래픽 포트(AGP)(Accelerated Graphics Port)를 통해 디스플레이 디바이스(616)와 통신할 수 있다. 본 발명의 실시예에서, (평판 디스플레이와 같은) 디스플레이(616)는, 예를 들어 비디오 메모리 또는 시스템 메모리와 같은 스토리지 디바이스에 저장되는 이미지의 디지털 표현을 디스플레이(616)에 의해 해석되고 표시되는 표시 신호들로 번역하는 신호 변환기를 통해 그래픽 인터페이스(614)와 통신할 수 있다. 디스플레이 디바이스에 의해 생성되는 표시 신호들은 디스플레이(616)에 의해 해석되고 후속하여 그 상에 표시되기 전에 다양한 제어 디바이스들을 거칠 수 있다.
허브 인터페이스(618)는 MCH(608) 및 입력/출력 제어 허브(ICH)(Input/output Control Hub)(620)가 통신하도록 허용한다. ICH(620)는 컴퓨팅 시스템(600)과 통신하는 I/O 디바이스(들)에 인터페이스를 제공할 수 있다. ICH(620)는, 예를 들어 PCI(Peripheral Component Interconnect) 브리지, USB(Universal Serial Bus) 제어기, 또는 다른 유형들의 주변 기기 브리지들(peripheral bridges) 또는 제어기들과 같은 주변 기기 브리지(또는 제어기)(624)를 통해 버스(622)와 통신할 수 있다. 브리지(624)는 CPU(602)와 주변 기기들 간에 데이터 경로를 제공할 수 있다. 다른 유형의 토폴로지들이 활용될 수 있다. 또한, 다중 버스가, 예를 들어 다중 브리지 또는 제어기를 통해 ICH(620)와 통신할 수 있다. 더욱이, ICH(620)와 통신하는 다른 주변 기기들은, 본 발명의 다양한 실시예들에서, IDE(Integrated Drive Electronics) 또는 SCSI(Small Computer System Interface) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 지원(예를 들어, DVI(Digital Video Interface)), 또는 기타 디바이스들을 포함할 수 있다.
버스(622)는 오디오 디바이스(626), 하나 이상의 디스크 드라이브(들)(628), 및 (컴퓨터 네트워크(603)와 통신하는) 네트워크 인터페이스 디바이스(630)와 통신할 수 있다. 다른 디바이스들은 버스(622)를 통해 통신할 수 있다. 또한, (네트워크 인터페이스 디바이스(630)와 같은) 다양한 컴포넌트들은 본 발명의 일부 실시예들에서, MCH(608)와 통신할 수 있다. 또한, 프로세서(602), 및 본 명세서에서 논의되는 하나 이상의 다른 컴포넌트들은 단일 칩을 형성하기 위해(예를 들어, SOC(System on Chip)를 제공하기 위해) 조합될 수 있다. 더욱이, 그래픽 가속기(616)는 본 발명의 기타 실시예들에서 MCH(608) 내에 포함될 수 있다.
더욱이, 컴퓨팅 시스템(600)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 다음 중 하나 이상을 포함할 수 있다: 판독 전용 메모리(ROM)(Read-Only Memory), 프로그램 가능 ROM(PROM)(programmable ROM), 소거 가능 PROM(EPROM)(erasable PROM), 전기적 EPROM(EEPROM)(electrically EPROM), 디스크 드라이브(예를 들어, 628), 플로피 디스크, 콤팩트 디스크 ROM(CD-ROM)(Compact Disk ROM), 디지털 다기능 디스크(DVD)(Digital Versatile Disk), 플래시 메모리, 광자기 디스크, 또는 전자 데이터를 저장할 수 있는 그 밖의 유형들의 비휘발성 머신 판독가능 매체(예를 들어, 명령어들을 포함함).
도 7은 본 발명의 실시예에 따른 컴퓨팅 시스템(700)의 블록도를 예시한다. 시스템(700)은 하나 이상의 프로세서(702-1 내지 702-N)(일반적으로 "프로세서들(702)" 또는 "프로세서(702)"로서 본 명세서에서 지칭됨)를 포함할 수 있다. 프로세서들(702)은 상호접속 네트워크 또는 버스(704)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트들을 포함할 수 있는데, 그 중 일부가 명확성을 위해 프로세서(702-1)만을 참고하여 논의된다. 따라서, 나머지 프로세서들(702-2 내지 702-N)의 각각은 프로세서(702-1)를 참고하여 논의되는 것과 동일한 또는 유사한 컴포넌트들을 포함할 수 있다.
실시예에서, 프로세서(702-1)는 하나 이상의 프로세서 코어(706-1 내지 706-M)("코어들(706)"로서 또는 보다 일반적으로 "코어(706)"로서 본 명세서에서 지칭됨), 공유 캐시(708), 라우터(710), 및/또는 프로세서 제어 로직 또는 유닛(720)을 포함할 수 있다. 프로세서 코어들(706)은 단일 집적 회로(IC) 칩 상에 구현될 수 있다. 게다가, 칩은 하나 이상의 공유 및/또는 사유 캐시들(예를 들어, 캐시(708)), 버스들 또는 상호접속들(예를 들어, 버스 또는 상호접속 네트워크(712)), 메모리 제어기들, 또는 기타 컴포넌트들을 포함할 수 있다.
일 실시예에서, 라우터(710)는 프로세서(702-1) 및/또는 시스템(700)의 다양한 컴포넌트들 사이에서 통신하기 위해 이용될 수 있다. 더욱이, 프로세서(702-1)는 둘 이상의 라우터(710)를 포함할 수 있다. 게다가, 복수의 라우터(710)는 프로세서(702-1)의 내부 또는 외부의 다양한 컴포넌트들 사이에서 데이터 라우팅을 가능하게 하기 위해 통신 상태에 있을 수 있다.
공유 캐시(708)는 코어들(706)과 같은 프로세서(702-1)의 하나 이상의 컴포넌트에 의해 활용되는 데이터(예를 들어, 명령어들을 포함함)를 저장할 수 있다. 예를 들어, 공유 캐시(708)는 프로세서(702)의 컴포넌트들에 의한 더욱 빠른 액세스를 위해 메모리(714)에 저장되는 데이터를 국부적으로 캐시할 수 있다. 실시예에서, 캐시(708)는 중간 레벨 캐시(예컨대, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4), 또는 기타 레벨들의 캐시), 최종 레벨 캐시(LLC)(Last Level Cache), 및/또는 이들의 조합들을 포함할 수 있다. 더욱이, 프로세서(702-1)의 다양한 컴포넌트들은 버스(예를 들어, 버스(712)), 및/또는 메모리 제어기 또는 허브를 통해 공유 캐시(708)와 직접 통신할 수 있다. 도 7에 도시된 바와 같이, 일부 실시예들에서, 코어들(706) 중 하나 이상은 레벨 1(L1) 캐시(716-1)(일반적으로 "L1 캐시(716)"로서 본 명세서에서 지칭됨)를 포함할 수 있다. 일 실시예에서, 제어 유닛(720)은 도 2에서 메모리 제어기(122)를 참고하여 위에서 설명되는 동작을 구현하기 위한 로직을 포함할 수 있다.
도 8은 본 발명의 실시예에 따르는, 프로세서 코어(706)의 부분들과 컴퓨팅 시스템의 기타 컴포넌트들의 블록도를 예시한다. 일 실시예에서, 도 8에 도시된 화살표들은 코어(706)를 통한 명령어들의 흐름 방향을 예시한다. 하나 이상의 프로세서 코어(예를 들어, 프로세서 코어(706))는 도 7을 참고하여 논의된 바와 같은 단일 집적 회로 칩(또는 다이) 상에 구현될 수 있다. 더욱이, 칩은 하나 이상의 공유 및/또는 사유 캐시(예컨대, 도 7의 캐시(708)), 상호접속들(예컨대, 도 7의 상호접속들(704 및/또는 112)), 제어 유닛들, 메모리 제어기들, 또는 기타 컴포넌트들을 포함할 수 있다.
도 8에 예시된 바와 같이, 프로세서 코어(706)는 코어(706)에 의한 실행을 위한 명령어들(조건부 분기들을 갖는 명령어들을 포함함)을 페치하기 위한 페치 유닛(fetch unit)(802)을 포함할 수 있다. 명령어들은 메모리(714)와 같은 임의의 스토리지 디바이스들로부터 페치될 수 있다. 코어(706)는 또한 페치된 명령어를 디코딩하기 위한 디코드 유닛(804)을 포함할 수 있다. 예를 들어, 디코드 유닛(804)은 페치된 명령어를 복수의 uop(micro-operations)가 되도록 디코딩할 수 있다.
또한, 코어(706)는 스케줄 유닛(806)을 포함할 수 있다. 스케줄 유닛(806)은, 명령어들이 디스패치(dispatch)를 위해 준비될 때까지, 예컨대 디코딩된 명령어의 모든 소스 값들이 이용 가능하게 될 때까지, 디코딩된 명령어들(예컨대, 디코드 유닛(804)으로부터 수신된)을 저장하는 것과 연관되는 다양한 동작들을 수행할 수 있다. 일 실시예에서, 스케줄 유닛(806)은 실행을 위해 실행 유닛(808)에게 디코딩된 명령어들을 스케줄링하고/하거나 발행(또는 디스패치)할 수 있다. 실행 유닛(808)은 디스패치된 명령어들이 (예컨대, 디코드 유닛(804)에 의해) 디코딩되고 (예컨대, 스케줄 유닛(806)에 의해) 디스패치된 후에 디스패치된 명령어들을 실행할 수 있다. 실시예에서, 실행 유닛(808)은 2개 이상의 실행 유닛을 포함할 수 있다. 실행 유닛(808)은 또한 덧셈, 뺄셈, 곱셈, 및/또는 나눗셈과 같은 다양한 산술 연산들을 실행할 수 있고, 또한 하나 이상의 산술 로직 유닛(ALU)(Arithmetic Logic Unit)을 포함할 수 있다. 실시예에서, 보조 프로세서(도시되지 않음)는 실행 유닛(808)과 연계하여 다양한 산술 연산들을 수행할 수 있다.
또한, 실행 유닛(808)은 명령어들 비순차적을 실행할 수 있다. 따라서, 프로세서 코어(706)는 일 실시예에서 비순차적 프로세서 코어일 수 있다. 코어(706)는 또한 리타이어먼트 유닛(retirement unit)(810)을 포함할 수 있다. 리타이어먼트 유닛(810)은 실행되는 명령어들이 커밋(commit)된 후에 이들을 리타이어할 수 있다. 실시예에서, 실행되는 명령어들의 리타이어먼트는 프로세서 상태가 명령어들의 실행으로부터 커밋되는 것과, 명령어들에 의해 이용되는 물리적 레지스터들이 할당 해제(de-allocate)되는 것과, 기타 등등을 초래할 수 있다.
코어(706)는 또한 하나 이상의 버스(예컨대, 버스들(804 및/또는 812))를 통해 프로세서 코어(706)의 컴포넌트들과 기타 컴포넌트들(이를테면, 도 8을 참조하여 논의된 컴포넌트들) 간의 통신을 가능하게 하는 버스 유닛(714)을 포함할 수 있다. 코어(706)는 또한 코어(706)의 다양한 컴포넌트들에 의해 액세스되는 데이터(이를테면, 전력 소비 상태 설정들과 관계되는 값들)를 저장하기 위한 하나 이상의 레지스터(816)를 포함할 수 있다.
게다가, 도 7이 상호접속(812)을 통해 코어(706)에 결합되는 제어 유닛(720)을 예시하지만, 다양한 실시예들에서, 제어 유닛(720)은 코어(706)의 내부와 같은 다른 곳에 자리 잡을 수 있고, 버스(704)를 통해 코어에 결합될 수 있고, 기타 등등과 같이 될 수 있다.
일부 실시예들에서, 본 명세서에서 논의되는 컴포넌트들 중 하나 이상은 SOC(System On Chip) 디바이스로서 구체화될 수 있다. 도 9는 실시예에 따른 SOC 패키지의 블록도를 예시한다. 도 9에 예시된 바와 같이, SOC(902)는 하나 이상의 CPU(Central Processing Unit) 코어들(920), 하나 이상의 GPU(Graphics Processor Unit) 코어들(930), 입력/출력(I/O) 인터페이스(940), 및 메모리 제어기(942)를 포함한다. SOC 패키지(902)의 다양한 컴포넌트들은 다른 도면들을 참고하여 본 명세서에서 논의되는 것과 같은 상호접속 또는 버스에 결합될 수 있다. 또한, SOC 패키지(902)는 다른 도면들을 참고하여 본 명세서에서 논의되는 것들과 같은 컴포넌트들보다 더 많은 것을 또는 더 적은 것을 포함할 수 있다. 또한, SOC 패키지(902)의 각각의 컴포넌트는, 예컨대 본 명세서에서 다른 도면들을 참고하여 논의되는 바와 같은 하나 이상의 다른 컴포넌트를 포함할 수 있다. 일 실시예에서, SOC 패키지(902)(및 그 컴포넌트들)는 하나 이상의 집적 회로(IC) 다이 상에 제공되고, 이것은, 예를 들어 단일 반도체 디바이스에 패키징된다.
도 9에 도시된 바와 같이, SOC 패키지(902)는 메모리 제어기(942)를 통해 메모리(960)(이것은 다른 도면들을 참조하여 본 명세서에서 논의되는 메모리와 유사하거나 동일한 것일 수 있음)에 결합된다. 실시예에서, 메모리(960)(또는 그 일부)는 SOC 패키지(902)상에 통합될 수 있다.
I/O 인터페이스(940)는, 예컨대 다른 도면들을 참조하여 본 명세서에서 논의되는 것과 같은 상호접속 및/또는 버스를 통해 하나 이상의 I/O 디바이스(970)에 결합될 수 있다. I/O 디바이스(들)(970)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(이를테면, 카메라 또는 캠코더/비디오 리코더), 터치스크린, 스피커, 또는 이와 유사한 것 중 하나 이상을 포함할 수 있다.
도 10은 본 발명의 실시예에 따른, 포인트 투 포인트(PtP)(Point-to-Point) 구성으로 배열되는 컴퓨팅 시스템(1000)을 예시한다. 특히, 도 10은 프로세서들, 메모리, 및 입력/출력 디바이스들이 복수의 포인트 투 포인트 인터페이스들에 의해 상호 접속되는 시스템을 도시한다. 도 2를 참조하여 논의된 동작들은 시스템(1000)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
도 10에 도시된 바와 같이, 시스템(1000)은 여러 프로세서를 포함할 수 있는데, 명확성을 위해 그 중에서 두 개의 프로세서(1002 및 1004)만이 도시되었다. 프로세서들(1002 및 1004)은 각각 메모리들(1010 및 1012)과 통신을 가능하게 하기 위한 로컬 메모리 제어기 허브(MCH)(1006 및 1008)를 포함할 수 있다. MCH(1006 및 1008)는 일부 실시예들에서, 도 1의 메모리 제어기(120) 및/또는 로직(125)을 포함할 수 있다.
실시예에서, 프로세서들(1002 및 1004)은 도 7을 참고하여 논의된 프로세서들(702) 중 하나일 수 있다. 프로세서들(1002 및 1004)은 각각 PtP 인터페이스 회로들(1016 및 1018)을 이용하는 PtP 인터페이스(1014)를 통해 데이터를 교환할 수 있다. 또한, 프로세서들(1002 및 1004)은 각각 포인트 투 포인트 인터페이스 회로들(1026, 1028, 1030, 1032)을 이용하는 개별 PtP 인터페이스들(1022 및 1024)을 통해 칩셋(1020)과 데이터를 교환할 수 있다. 칩셋(1020)은, 예를 들어 PtP 인터페이스 회로(1037)를 이용하는 고성능 그래픽 인터페이스(1036)를 통해 고성능 그래픽 회로(1034)와 데이터를 추가로 교환할 수 있다.
도 10에 도시된 바와 같이, 도 1의 코어들(106) 및/또는 캐시(108) 중 하나 이상은 프로세서들(902 및 904) 내에 위치될 수 있다. 하지만, 본 발명의 다른 실시예들은 도 9의 시스템(900) 내의 다른 회로들, 로직 유닛들, 또는 디바이스들에 존재할 수 있다. 게다가, 본 발명의 다른 실시예들은 도 9에 예시된 여러 회로들, 로직 유닛들, 또는 디바이스들의 전체에 걸쳐서 분포될 수 있다.
칩셋(920)은 PtP 인터페이스 회로(941)를 이용하여 버스(940)와 통신할 수 있다. 버스(940)는, 예를 들어 버스 브리지(942) 및 I/O 디바이스들(943)과 같이 자신과 통신하는 하나 이상의 디바이스를 가질 수 있다. 버스(944)를 통해, 버스 브리지(943)는, 예를 들어 키보드/마우스(945), 통신 디바이스들(946)(예를 들어, 모뎀들, 네트워크 인터페이스 디바이스들, 또는 컴퓨터 네트워크(803)와 통신할 수 있는 다른 통신 디바이스들), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(948)와 같은 다른 디바이스들과 통신할 수 있다. 데이터 스토리지 디바이스(948)(이는 하드 디스크 드라이브 또는 NAND 플래시 기반 솔리드 스테이트 드라이브일 수 있음)는 프로세서들(902 및/또는 904)에 의해 실행될 수 있는 코드(949)를 저장할 수 있다.
하기 예들은 추가 실시예들과 관련된다.
예 1은 메모리 디바이스와, 메모리 디바이스에 결합되는 제어기를 포함하는 메모리이며, 제어기는, 메모리에 저장되는 데이터에 대한 판독 요청을 호스트 디바이스로부터 수신하고, 데이터 및 연관되는 오류 정정 코드워드를 검색하고, 데이터를 호스트 디바이스에 송신하고, 데이터와 함께 검색되는 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하고, 오류 정정 코드워드에서의 오류에 응답하여 오류와 연관된 데이터의 위치를 호스트 디바이스에 송신하기 위한 로직을 포함한다.
예 2에서, 예 1의 주제는 오류 정정 코드워드가 BCH(Bose-Chaudhuri-Hocquenghem) 오류 정정 코드인 배열을 선택적으로 포함하고, ECC 루틴은 메모리로부터 검색되는 데이터의 비트별(bitwise) XOR을 수행하는 것을 포함한다.
예 3에서, 예들 1-2 중 어느 하나의 주제는 오류 정정 루틴이 코드워드에 적용되기 전에 데이터가 호스트 디바이스에 송신되는 배열을 선택적으로 포함할 수 있다.
예 4에서, 예들 1-3 중 어느 하나의 주제는 오류 정정 루틴이 데이터에 오류들이 없다는 것을 나타낼 때 클리어 신호를 호스트 디바이스에 송신하기 위한 로직을 선택적으로 포함할 수 있다.
예 5는 프로세서 및 메모리를 포함하는 전자 디바이스이며, 메모리는 메모리 디바이스와, 메모리 디바이스에 결합되는 제어기를 포함하고, 제어기는, 메모리에 저장되는 데이터에 대한 판독 요청을 호스트 디바이스로부터 수신하고, 데이터 및 연관되는 오류 정정 코드워드를 검색하고, 데이터를 호스트 디바이스에 송신하고, 데이터와 함께 검색되는 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하고, 오류 정정 코드워드에서의 오류에 응답하여 오류와 연관된 데이터의 위치를 호스트 디바이스에 송신하기 위한 로직을 포함한다.
예 6에서, 예들 1-5 중 어느 하나의 주제는 오류 정정 코드워드가 BCH 오류 정정 코드인 배열을 선택적으로 포함하고, ECC 루틴은 메모리로부터 검색되는 데이터의 비트별 XOR을 수행하는 것을 포함한다.
예 7에서, 예들 5-6 중 어느 하나의 주제는 오류 정정 루틴이 코드워드에 적용되기 전에 데이터가 호스트 디바이스에 송신되는 배열을 선택적으로 포함할 수 있다.
예 8에서, 예들 5-7 중 어느 하나의 주제는 오류 정정 루틴이 데이터에 오류들이 없다는 것을 나타낼 때 클리어 신호를 호스트 디바이스에 송신하기 위한 로직을 선택적으로 포함할 수 있다.
예 9에서, 예들 5-8 중 어느 하나의 주제는 제어기로부터 데이터를 수신하고, 제어기로부터 클리어 신호를 수신하고, 클리어 신호에 응답하여 데이터를 요청기(requestor)로 반송하기 위한 로직을 선택적으로 포함할 수 있다.
예 10에서, 예들 5-8 중 어느 하나의 주제는 제어기로부터 데이터를 수신하고, 제어기로부터 오류 위치를 수신하고, 오류 위치에 응답하여 오류 위치에서의 비트 값을 플립하기 위한 로직을 선택적으로 포함할 수 있다.
예 11은, 제어기에서 메모리에 저장되는 데이터에 대한 판독 요청을 수신하는 단계, 데이터 및 연관되는 오류 정정 코드워드를 메모리로부터 검색하는 단계, 데이터를 호스트 디바이스에 송신하는 단계, 데이터와 함께 검색된 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하는 단계, 오류 정정 코드워드에서의 오류에 응답하여 오류와 연관된 데이터의 위치를 호스트 디바이스에 송신하는 단계를 포함하는 방법이다.
예 12에서, 예 11의 주제는 오류 정정 코드워드가 BCH 오류 정정 코드인 배열을 선택적으로 포함할 수 있고, ECC 루틴은 메모리로부터 검색되는 데이터의 비트별 XOR을 수행하는 것을 포함한다.
예 13에서, 예들 11-12 중 어느 하나의 주제는 오류 정정 루틴이 코드워드에 적용되기 전에 데이터가 호스트 디바이스에 송신되는 배열을 선택적으로 포함할 수 있다.
예 14에서, 예들 11-13 중 어느 하나의 주제는 오류 정정 루틴이 데이터에 오류들이 없다는 것을 나타낼 때 클리어 신호를 호스트 디바이스에 송신하는 단계를 선택적으로 포함할 수 있다.
예 15에서, 예들 11-14 중 어느 하나의 주제는, 메모리 제어기에서 제어기로부터 데이터를 수신하는 단계, 메모리 제어기에서 제어기로부터 클리어 신호를 수신하는 단계, 및 클리어 신호에 응답하여 데이터를 요청기로 반송하는 단계를 선택적으로 포함할 수 있다.
예 16에서, 예들 11-15 중 어느 하나의 주제는, 메모리 제어기에서 제어기로부터 데이터를 수신하는 단계, 메모리 제어기에서 제어기로부터 오류 위치를 수신하는 단계, 및 오류 위치에 응답하여 오류 위치에서의 비트 값을 플립하는 단계를 선택적으로 포함할 수 있다.
예 17은 메모리 디바이스와, 메모리 디바이스에 결합되는 제어기를 포함하는 메모리이고, 제어기는, 메모리에 저장되는 데이터에 대한 판독 요청을 호스트 디바이스로부터 수신하고 - 그 데이터는 복수의 청크에 저장되고, 각각의 청크는 연관되는 오류 정정 코드를 가짐 -, 적어도 하나의 청크 및 연관되는 오류 정정 코드워드를 검색하고, 청크를 호스트 디바이스에 송신하고, 청크와 함께 검색된 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하고, 오류 정정 코드워드에서의 오류에 응답하여 오류와 연관된 데이터의 위치를 호스트 디바이스에 송신하기 위한 로직을 포함한다.
예 18에서, 예 17의 주제는 오류 정정 코드워드가 BCH 오류 정정 코드인 배열을 선택적으로 포함할 수 있고, ECC 루틴은 메모리로부터 검색되는 데이터의 비트별 XOR을 수행하는 것을 포함한다.
예 19에서, 예들 17-18 중 어느 하나의 주제는 오류 정정 루틴이 코드워드에 적용되기 전에 청크가 호스트 디바이스에 송신되는 배열을 선택적으로 포함할 수 있다.
예 20에서, 예들 17-19 중 어느 하나의 주제는 데이터가 연관되는 블록 오류 정정 코드와 함께 저장되는 배열을 선택적으로 포함할 수 있고, 제어기는 오류 정정 루틴이 데이터에 오류들이 없다는 것을 나타낼 때 클리어 신호를 호스트 디바이스에 송신하기 위한 로직을 더 포함한다.
예 21에서, 예들 17-20 중 어느 하나의 주제는 데이터가 연관되는 블록 오류 정정 코드와 함께 저장되는 배열을 선택적으로 포함할 수 있고, 제어기는 오류 정정 루틴이 데이터 청크에 오류들이 있다는 것을 나타낼 때 데이터 청크를 호스트 디바이스에 재송신하기 위한 로직을 더 포함한다.
예 22는 프로세서와 메모리를 포함하는 전자 디바이스이며, 메모리는 메모리 디바이스와, 메모리 디바이스에 결합되는 제어기를 포함하고, 제어기는, 메모리에 저장되는 데이터에 대한 판독 요청을 호스트 디바이스로부터 수신하고 - 그 데이터는 복수의 청크에 저장되고, 각각의 청크는 연관되는 오류 정정 코드를 가짐 -, 적어도 하나의 청크 및 연관되는 오류 정정 코드워드를 검색하고, 청크를 호스트 디바이스에 송신하고, 청크와 함께 검색된 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하고, 오류 정정 코드워드에서의 오류에 응답하여 오류와 연관된 데이터의 위치를 호스트 디바이스에 송신하기 위한 로직을 포함한다.
예 23에서, 예 22의 주제는 오류 정정 코드워드가 BCH 오류 정정 코드인 배열을 선택적으로 포함할 수 있고, ECC 루틴은 메모리로부터 검색되는 데이터의 비트별 XOR을 수행하는 것을 포함한다.
예 24에서, 예들 22-23 중 어느 하나의 주제는 오류 정정 루틴이 코드워드에 적용되기 전에 청크가 호스트 디바이스에 송신되는 배열을 선택적으로 포함할 수 있다.
예 25에서, 예들 22-24 중 어느 하나의 주제는 데이터가 연관되는 블록 오류 정정 코드와 함께 저장되는 배열을 선택적으로 포함할 수 있고, 제어기는 오류 정정 루틴이 데이터에 오류들이 없다는 것을 나타낼 때 클리어 신호를 호스트 디바이스에 송신하기 위한 로직을 더 포함한다.
예 26에서, 예들 22-25 중 어느 하나의 주제는 데이터가 연관되는 블록 오류 정정 코드와 함께 저장되는 배열을 선택적으로 포함할 수 있고, 제어기는 오류 정정 루틴이 데이터 청크에 오류들이 있다는 것을 나타낼 때 데이터 청크를 호스트 디바이스에 재송신하기 위한 로직을 더 포함한다.
예 27에서, 예들 22-26 중 어느 하나의 주제는 프로세서에 결합된 메모리 제어기를 선택적으로 포함할 수 있고, 메모리 제어기는, 메모리 제어기에서 제어기로부터 데이터를 수신하고, 메모리 제어기에서 제어기로부터 클리어 신호를 수신하고, 클리어 신호에 응답하여 데이터를 요청기로 반송하기 위한 로직을 포함한다.
예 28에서, 예들 22-27 중 어느 하나의 주제는 프로세서에 결합된 메모리 제어기를 선택적으로 포함할 수 있고, 메모리 제어기는, 제어기로부터 데이터를 수신하고, 제어기로부터 오류 위치를 수신하고, 오류 위치에 응답하여 오류 위치에서의 비트 값을 플립하기 위한 로직을 포함한다.
예 29는, 제어기에서 메모리에 저장되는 데이터에 대한 판독 요청을 호스트 디바이스로부터 수신하는 단계 - 그 데이터는 복수의 청크에 저장되고, 각각의 청크는 연관되는 오류 정정 코드를 가짐 -, 메모리로부터 적어도 하나의 청크 및 연관되는 오류 정정 코드워드를 검색하는 단계, 청크를 호스트 디바이스에 송신하는 단계, 청크와 함께 검색되는 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하는 단계, 및 오류 정정 코드워드에서의 오류에 응답하여, 오류와 연관된 데이터의 위치를 호스트 디바이스에 송신하는 단계를 포함하는 방법이다.
예 30에서, 예 29의 주제는 오류 정정 코드워드가 BCH 오류 정정 코드인 배열을 선택적으로 포함할 수 있고, ECC 루틴은 메모리로부터 검색되는 데이터의 비트별 XOR을 수행하는 것을 포함한다.
예 31에서, 예들 29-30 중 어느 하나의 주제는 오류 정정 루틴이 코드워드에 적용되기 전에 청크가 호스트 디바이스에 송신되는 배열을 선택적으로 포함할 수 있다.
예 32에서, 예들 29-31 중 어느 하나의 주제는 데이터가 연관되는 블록 오류 정정 코드와 함께 저장되는 배열을 선택적으로 포함할 수 있고, 제어기는 오류 정정 루틴이 데이터에 오류들이 없다는 것을 나타낼 때 클리어 신호를 호스트 디바이스에 송신하기 위한 로직을 더 포함한다.
예 33에서, 예들 29-32중 어느 하나의 주제는 데이터가 연관되는 블록 오류 정정 코드와 함께 저장되는 배열을 선택적으로 포함할 수 있고, 제어기는 오류 정정 루틴이 데이터 청크에 오류들이 있다는 것을 나타낼 때 데이터 청크를 호스트 디바이스에 재송신하기 위한 로직을 더 포함한다.
예 34에서, 예들 29-33 중 어느 하나의 주제는 프로세서에 결합된 메모리 제어기를 선택적으로 포함할 수 있고, 메모리 제어기는, 메모리 제어기에서 제어기로부터 데이터를 수신하고, 메모리 제어기에서 제어기로부터 클리어 신호를 수신하고, 클리어 신호에 응답하여 데이터를 요청기로 반송하기 위한 로직을 포함한다.
예 35에서, 예들 29-34 중 어느 하나의 주제는 프로세서에 결합된 메모리 제어기를 선택적으로 포함할 수 있고, 메모리 제어기는, 제어기로부터 데이터를 수신하고, 제어기로부터 오류 위치를 수신하고, 오류 위치에 응답하여 오류 위치에서의 비트 값을 플립하기 위한 로직을 포함한다.
본 발명의 다양한 실시예들에서, 예를 들어 도 1 내지 도 10을 참조하여 본 명세서에서 논의되는 동작들은, 예를 들어 본 명세서에서 논의되는 처리를 실행하도록 컴퓨터를 프로그래밍하는데 이용되는 명령어들(예를 들어, 또는 소프트웨어 프로시저들)을 그 상에 저장하는 유형(tangible)(예컨대, 비일시적) 머신 판독가능 또는 컴퓨터 판독가능 매체를 포함하는, 컴퓨터 프로그램 제품으로서 제공될 수 있는 하드웨어(예컨대, 회로), 소프트웨어, 펌웨어, 마이크로코드, 또는 이들의 조합들로서 구현될 수 있다. 또한, "로직"이라는 용어는 예로서, 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합을 포함할 수 있다. 머신 판독가능 매체는 본 명세서에서 논의되는 바와 같은 스토리지 디바이스를 포함할 수 있다.
본 명세서에서 "일 실시예(one embodiment)" 또는 "실시예(an embodiment)"에 대한 참조는, 이 실시예와 관련하여 설명되는 특정 피처, 구조, 또는 특성이 적어도 일 구현에 포함될 수 있다는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 구문의 출현은 모두가 동일 실시예를 지칭할 수도 있고 언급하지 않을 수도 있다.
또한, 본 설명 및 청구항들에서, "결합된(coupled)" 및 "접속된(connected)"이라는 용어들은 그 파생어들과 함께 이용될 수 있다. 본 발명의 일부 실시예들에서, "접속된"은, 두 개 이상의 엘리먼트가 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는데 이용될 수 있다. "결합된"은, 두 개 이상의 엘리먼트가 직접 물리적으로 또는 전기적으로 접촉하는 것을 의미할 수 있다. 그러나, "결합된"은, 두 개 이상의 엘리먼트가 서로 직접 접촉하지 않을 수 있지만 여전히 서로 상호작용하거나 협력하는 것을 또한 의미할 수 있다.
따라서, 본 발명의 실시예들니 구조적 피처들 및/또는 방법론적 작용들에 대해 특정적인 언어로 설명되었지만, 청구 대상은 설명되는 특정적 피처들 또는 작용들에만 제한되지는 않을 수 있다는 것을 이해해야 한다. 오히려, 특정 피처들 및 작용들은 청구 대상을 구현하는 예시적 형태들로서 개시되어 있다.

Claims (23)

  1. 장치로서,
    제1 메모리 제어기;
    메모리 디바이스; 및
    상기 메모리 디바이스와 상기 제1 메모리 제어기 사이에 통신 가능하게 결합되는 제2 제어기
    를 포함하고,
    상기 제2 제어기는,
    상기 메모리 디바이스에 저장되는 데이터에 대한 판독 요청을 상기 제1 메모리 제어기로부터 수신하고;
    상기 데이터 및 연관되는 오류 정정 코드워드를 상기 메모리 디바이스로부터 검색하고;
    상기 판독 요청이 수신된 상기 제1 메모리 제어기에 상기 데이터를 송신하고;
    상기 데이터와 함께 검색되는 상기 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하고;
    상기 오류 정정 코드워드에서의 오류에 응답하여, 상기 오류와 연관되는 데이터의 위치를 상기 판독 요청이 수신된 상기 제1 메모리 제어기에 송신하기 위한 로직을 포함하고,
    상기 데이터는 상기 오류 정정 루틴이 상기 코드워드에 적용되기 전에 상기 제1 메모리 제어기에 송신되고, 상기 제1 메모리 제어기는 상기 제1 메모리 제어기가 상기 제2 제어기로부터 신호를 수신할 때까지 상기 판독 요청으로부터의 상기 데이터를 반송(return)하는 것을 대기하는, 장치.
  2. 제1항에 있어서,
    상기 오류 정정 코드워드는 BCH(Bose-Chaudhuri-Hocquenghem) 오류 정정 코드이고,
    상기 오류 정정 루틴은 상기 메모리 디바이스로부터 검색되는 상기 데이터의 비트별(bitwise) XOR을 수행하는 것을 포함하는, 장치.
  3. 삭제
  4. 제1항에 있어서, 상기 제2 제어기는, 상기 오류 정정 루틴이 상기 데이터에 오류들이 없다는 것을 나타낼 때 상기 신호로서 클리어 신호를 상기 제1 메모리 제어기에 송신하기 위한 로직을 더 포함하는, 장치.
  5. 전자 디바이스로서,
    프로세서; 및
    장치
    를 포함하고,
    상기 장치는,
    제1 메모리 제어기;
    메모리 디바이스; 및
    상기 메모리 디바이스와 상기 제1 메모리 제어기 사이에 통신 가능하게 결합되는 제2 제어기를 포함하고,
    상기 제2 제어기는,
    상기 메모리 디바이스에 저장되는 데이터에 대한 판독 요청을 상기 제1 메모리 제어기로부터 수신하고;
    상기 데이터 및 연관되는 오류 정정 코드워드를 상기 메모리 디바이스로부터 검색하고;
    상기 판독 요청이 수신된 상기 제1 메모리 제어기에 상기 데이터를 송신하고;
    상기 데이터와 함께 검색되는 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하고;
    상기 오류 정정 코드워드에서의 오류에 응답하여, 상기 오류와 연관되는 데이터의 위치를 상기 판독 요청이 수신된 상기 제1 메모리 제어기에 송신하기 위한 로직을 포함하고,
    상기 데이터는 상기 오류 정정 루틴이 상기 코드워드에 적용되기 전에 상기 제1 메모리 제어기에 송신되고, 상기 제1 메모리 제어기는 상기 제1 메모리 제어기가 상기 제2 제어기로부터 신호를 수신할 때까지 상기 판독 요청으로부터의 상기 데이터를 반송하는 것을 대기하는, 전자 디바이스.
  6. 제5항에 있어서,
    상기 오류 정정 코드워드는 BCH(Bose-Chaudhuri-Hocquenghem) 오류 정정 코드이고,
    상기 오류 정정 루틴은 상기 메모리 디바이스로부터 검색되는 상기 데이터의 비트별 XOR을 수행하는 것을 포함하는, 전자 디바이스.
  7. 삭제
  8. 제5항에 있어서, 상기 제2 제어기는, 상기 오류 정정 루틴이 상기 데이터에 오류들이 없다는 것을 나타낼 때 상기 신호로서 클리어 신호를 상기 제1 메모리 제어기에 송신하기 위한 로직을 더 포함하는, 전자 디바이스.
  9. 제5항에 있어서, 상기 제1 메모리 제어기는 상기 프로세서에 결합되고,
    상기 제1 메모리 제어기는,
    상기 제2 제어기로부터 데이터를 수신하고;
    상기 제2 제어기로부터 상기 신호로서 클리어 신호를 수신하고;
    상기 클리어 신호에 응답하여 상기 데이터를 요청기(requestor)로 반송하기 위한 로직을 포함하는, 전자 디바이스.
  10. 제5항에 있어서, 상기 제1 메모리 제어기는 상기 프로세서에 결합되고,
    상기 제1 메모리 제어기는,
    상기 제2 제어기로부터 데이터를 수신하고;
    상기 제2 제어기로부터 상기 데이터 내의 오류의 위치를 수신하고;
    상기 데이터 내의 오류의 위치에서의 비트 값을 플립하기 위한 로직을 포함하는, 전자 디바이스.
  11. 방법으로서,
    제2 제어기에서, 상기 제2 제어기에 통신 가능하게 결합되는 메모리 디바이스에 저장되는 데이터에 대한 판독 요청을 상기 제2 제어기에 통신 가능하게 결합되는 제1 메모리 제어기로부터 수신하는 단계;
    상기 데이터 및 연관되는 오류 정정 코드워드를 상기 메모리 디바이스로부터 검색하는 단계;
    상기 판독 요청이 수신된 상기 제1 메모리 제어기에 상기 데이터를 송신하는 단계;
    상기 데이터와 함께 검색된 상기 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하는 단계;
    상기 오류 정정 코드워드에서의 오류에 응답하여, 상기 오류와 연관되는 데이터의 위치를 상기 판독 요청이 수신된 상기 제1 메모리 제어기에 송신하는 단계
    를 포함하고,
    상기 데이터는 상기 오류 정정 루틴이 상기 코드워드에 적용되기 전에 상기 제1 메모리 제어기에 송신되고, 상기 제1 메모리 제어기는 상기 제1 메모리 제어기가 상기 제2 제어기로부터 신호를 수신할 때까지 상기 판독 요청에 대한 상기 데이터를 반송하는 것을 대기하는, 방법.
  12. 제11항에 있어서,
    상기 오류 정정 코드워드는 BCH(Bose-Chaudhuri-Hocquenghem) 오류 정정 코드이고,
    상기 오류 정정 루틴은 상기 메모리 디바이스로부터 검색되는 상기 데이터의 비트별 XOR을 수행하는 것을 포함하는, 방법.
  13. 삭제
  14. 제11항에 있어서,
    상기 오류 정정 루틴이 상기 데이터에 오류들이 없다는 것을 나타낼 때 상기 신호로서 클리어 신호를 상기 제1 메모리 제어기에 송신하는 단계를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 제1 메모리 제어기에서, 상기 제2 제어기로부터 데이터를 수신하는 단계;
    상기 제1 메모리 제어기에서, 상기 제2 제어기로부터 클리어 신호로서 상기 신호를 수신하고, 상기 클리어 신호에 응답하여 상기 데이터를 요청기로 반송하는 단계
    를 더 포함하는 방법.
  16. 제14항에 있어서,
    상기 제1 메모리 제어기에서, 상기 제2 제어기로부터 데이터를 수신하는 단계;
    상기 제1 메모리 제어기에서, 상기 제2 제어기로부터 상기 데이터 내의 오류의 위치를 수신하는 단계; 및
    상기 데이터 내의 오류의 위치에서의 비트 값을 플립하는 단계
    를 더 포함하는 방법.
  17. 장치로서,
    제1 메모리 제어기;
    메모리 디바이스; 및
    상기 메모리 디바이스와 상기 제1 메모리 제어기 사이에 통신 가능하게 결합되는 제2 제어기
    를 포함하고,
    상기 제2 제어기는,
    상기 메모리 디바이스에 저장되는 데이터에 대한 판독 요청을 상기 제1 메모리 제어기로부터 수신하고 - 상기 데이터는 복수의 청크에 저장되고, 각각의 청크는 연관되는 오류 정정 코드를 가짐 -;
    적어도 하나의 청크 및 연관되는 오류 정정 코드워드를 상기 메모리 디바이스로부터 검색하고;
    상기 판독 요청이 수신된 상기 제1 메모리 제어기에 상기 청크를 송신하고;
    상기 청크와 함께 검색된 상기 오류 정정 코드워드를 디코딩하기 위해 오류 정정 루틴을 적용하고;
    상기 오류 정정 코드워드에서의 오류에 응답하여 상기 오류와 연관되는 데이터의 위치를 상기 판독 요청이 수신된 상기 제1 메모리 제어기에 송신하기 위한 로직을 포함하고,
    상기 청크는 상기 오류 정정 루틴이 상기 코드워드에 적용되기 전에 상기 제1 메모리 제어기에 송신되고, 상기 제1 메모리 제어기는 상기 제1 메모리 제어기가 상기 제2 제어기로부터 신호를 수신할 때까지 상기 판독 요청으로부터의 상기 청크를 반송하는 것을 대기하는, 장치.
  18. 제17항에 있어서,
    상기 오류 정정 코드워드는 BCH(Bose-Chaudhuri-Hocquenghem) 오류 정정 코드이고,
    상기 오류 정정 루틴은 상기 메모리 디바이스로부터 검색되는 상기 데이터의 비트별 XOR을 수행하는 것을 포함하는, 장치.
  19. 삭제
  20. 제17항에 있어서, 상기 데이터는 연관되는 블록 오류 정정 코드와 함께 저장되고, 상기 제2 제어기는 상기 오류 정정 루틴이 상기 데이터에 오류들이 없다는 것을 나타낼 때 상기 신호로서 클리어 신호를 상기 제1 메모리 제어기에 송신하기 위한 로직을 더 포함하는, 장치.
  21. 제17항에 있어서, 상기 데이터는 연관되는 블록 오류 정정 코드와 함께 저장되고, 상기 제2 제어기는 상기 오류 정정 루틴이 데이터 청크에 오류들이 있다는 것을 나타낼 때 상기 데이터 청크를 상기 제1 메모리 제어기에 재송신하기 위한 로직을 더 포함하는, 장치.
  22. 제1항에 있어서, 상기 제2 제어기는 상기 메모리 디바이스에 결합되고, 상기 제1 메모리 제어기는 중앙 처리 유닛 패키지(central processing unit package)에 별도로 결합되는, 장치.
  23. 제22항에 있어서, 메모리 제어기는 상기 중앙 처리 유닛 패키지 내의 통합된 제어기(integrated controller)인, 장치.
KR1020167010539A 2013-11-27 2014-10-23 메모리에서의 오류 정정 KR101730306B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/091,757 US10073731B2 (en) 2013-11-27 2013-11-27 Error correction in memory
US14/091,757 2013-11-27
PCT/US2014/061929 WO2015080819A1 (en) 2013-11-27 2014-10-23 Error correction in memory

Publications (2)

Publication Number Publication Date
KR20160055936A KR20160055936A (ko) 2016-05-18
KR101730306B1 true KR101730306B1 (ko) 2017-04-25

Family

ID=53183755

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167010539A KR101730306B1 (ko) 2013-11-27 2014-10-23 메모리에서의 오류 정정

Country Status (4)

Country Link
US (1) US10073731B2 (ko)
KR (1) KR101730306B1 (ko)
CN (1) CN105659332B (ko)
WO (1) WO2015080819A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652321B2 (en) * 2014-09-23 2017-05-16 Intel Corporation Recovery algorithm in non-volatile memory
US9653185B2 (en) * 2014-10-14 2017-05-16 International Business Machines Corporation Reducing error correction latency in a data storage system having lossy storage media
US9912355B2 (en) 2015-09-25 2018-03-06 Intel Corporation Distributed concatenated error correction
US20170141878A1 (en) * 2015-11-16 2017-05-18 Western Digital Technologies, Inc. Systems and methods for sending data from non-volatile solid state devices before error correction
US10033411B2 (en) 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data
KR102473209B1 (ko) * 2015-12-14 2022-12-02 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
CN107919876B (zh) * 2016-10-09 2021-03-12 旺宏电子股份有限公司 用以寻找一码字中错误位置的方法及电子装置
EP3333709B1 (en) * 2016-12-06 2019-07-24 NXP USA, Inc. Memory management
US10691533B2 (en) * 2017-12-12 2020-06-23 Micron Technology, Inc. Error correction code scrub scheme
US10719397B2 (en) 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
US10802909B2 (en) 2018-08-17 2020-10-13 Micron Technology, Inc. Enhanced bit flipping scheme
US10991445B2 (en) * 2018-09-06 2021-04-27 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
US11216333B2 (en) 2018-10-16 2022-01-04 Micron Technology, Inc. Methods and devices for error correction
JP7215389B2 (ja) * 2019-10-08 2023-01-31 株式会社デンソー 電子制御装置
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置
US11500719B1 (en) * 2020-03-31 2022-11-15 Amazon Technologies, Inc. Reliability improvements for memory technologies
US11170869B1 (en) 2020-06-04 2021-11-09 Western Digital Technologies, Inc. Dual data protection in storage devices
EP4359905A1 (en) * 2021-06-23 2024-05-01 Rambus Inc. Quad-channel memory module reliability
US20240120947A1 (en) * 2022-10-07 2024-04-11 Micron Technology, Inc. Error detection and classification at a host device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007157304A (ja) * 2005-12-08 2007-06-21 Hitachi Global Storage Technologies Netherlands Bv ディスク装置、そのテスト方法、及びその製造方法
US20130166988A1 (en) * 2011-12-22 2013-06-27 Sandisk Technologies Inc. Multi-phase ecc encoding using algebraic codes

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5241546A (en) * 1991-02-01 1993-08-31 Quantum Corporation On-the-fly error correction with embedded digital controller
JP3178909B2 (ja) * 1992-01-10 2001-06-25 株式会社東芝 半導体メモリ装置
US5761220A (en) * 1994-09-19 1998-06-02 Cirrus Logic, Inc. Minimum latency asynchronous data path controller in a digital recording system
JP2001331377A (ja) * 2000-05-22 2001-11-30 Hitachi Ltd 再生エラーの処理方法及びこれを用いたディスク装置
US7257763B1 (en) * 2001-08-03 2007-08-14 Netlogic Microsystems, Inc. Content addressable memory with error signaling
JP4437519B2 (ja) * 2001-08-23 2010-03-24 スパンション エルエルシー 多値セルメモリ用のメモリコントローラ
US7028213B2 (en) * 2001-09-28 2006-04-11 Hewlett-Packard Development Company, L.P. Error indication in a raid memory system
US20040163027A1 (en) * 2003-02-18 2004-08-19 Maclaren John M. Technique for implementing chipkill in a memory system with X8 memory devices
JP2005056394A (ja) * 2003-07-18 2005-03-03 Toshiba Corp 記憶装置及びメモリカード
US7865809B1 (en) 2004-03-11 2011-01-04 Super Talent Electronics, Inc. Data error detection and correction in non-volatile memory devices
US20060010339A1 (en) * 2004-06-24 2006-01-12 Klein Dean A Memory system and method having selective ECC during low power refresh
US7587658B1 (en) * 2005-01-03 2009-09-08 Sun Microsystems, Inc. ECC encoding for uncorrectable errors
US7958430B1 (en) * 2005-06-20 2011-06-07 Cypress Semiconductor Corporation Flash memory device and method
US8245109B2 (en) * 2006-03-31 2012-08-14 Hewlett-Packard Development Company, L.P. Error checking and correction (ECC) system and method
US7774684B2 (en) * 2006-06-30 2010-08-10 Intel Corporation Reliability, availability, and serviceability in a memory device
US7356671B1 (en) * 2006-07-27 2008-04-08 Vbridge Microsystem, Inc. SoC architecture for voice and video over data network applications
KR100833600B1 (ko) * 2006-08-25 2008-05-30 삼성전자주식회사 에러 정정 회로, 그 방법 및 상기 회로를 구비하는 반도체메모리 장치
KR100813630B1 (ko) * 2007-02-07 2008-03-14 삼성전자주식회사 독출 성능을 향상할 수 있는 플래시 메모리 시스템 및그것의 독출 방법
US8122323B2 (en) * 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
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
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
JP2012128778A (ja) * 2010-12-17 2012-07-05 Sony Corp データ転送装置、メモリ制御装置、およびメモリシステム
US8621113B2 (en) 2011-05-31 2013-12-31 Micron Technology, Inc. Apparatus including host bus adapter and serial attachment programming compliant device and related methods
US9177609B2 (en) 2011-06-30 2015-11-03 Sandisk Technologies Inc. Smart bridge for memory core
KR102002933B1 (ko) * 2012-04-09 2019-07-23 삼성전자주식회사 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007157304A (ja) * 2005-12-08 2007-06-21 Hitachi Global Storage Technologies Netherlands Bv ディスク装置、そのテスト方法、及びその製造方法
US20130166988A1 (en) * 2011-12-22 2013-06-27 Sandisk Technologies Inc. Multi-phase ecc encoding using algebraic codes

Also Published As

Publication number Publication date
US20150149857A1 (en) 2015-05-28
WO2015080819A1 (en) 2015-06-04
CN105659332A (zh) 2016-06-08
US10073731B2 (en) 2018-09-11
CN105659332B (zh) 2019-09-17
KR20160055936A (ko) 2016-05-18

Similar Documents

Publication Publication Date Title
KR101730306B1 (ko) 메모리에서의 오류 정정
KR102242872B1 (ko) 비휘발성 메모리 내의 복구 알고리즘
KR101767018B1 (ko) 비휘발성 메모리에서의 오류 정정
CN106575346B (zh) 存储器中的加密完整性校验
US9411683B2 (en) Error correction in memory
TWI566088B (zh) 標頭同位錯誤處置技術
US10572339B2 (en) Memory latency management
US10002043B2 (en) Memory devices and modules
JP6815723B2 (ja) メモリシステム及びその動作方法
TWI635503B (zh) 半導體記憶體裝置及操作該半導體記憶體裝置的方法
CN106663471B (zh) 用于反向存储器备份的方法和装置
US20140089755A1 (en) Reliability enhancements for high speed memory - parity protection on command/address and ecc protection on data

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