[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101767018B1 - 비휘발성 메모리에서의 오류 정정 - Google Patents

비휘발성 메모리에서의 오류 정정 Download PDF

Info

Publication number
KR101767018B1
KR101767018B1 KR1020167003655A KR20167003655A KR101767018B1 KR 101767018 B1 KR101767018 B1 KR 101767018B1 KR 1020167003655 A KR1020167003655 A KR 1020167003655A KR 20167003655 A KR20167003655 A KR 20167003655A KR 101767018 B1 KR101767018 B1 KR 101767018B1
Authority
KR
South Korea
Prior art keywords
error correction
contents
memory device
error
memory
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020167003655A
Other languages
English (en)
Other versions
KR20160033722A (ko
Inventor
자이언 에스. ?
자이언 에스. ?o
라비 에이치. 모트와니
키란 팡갈
프라샨트 에스. 담레
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 KR20160033722A publication Critical patent/KR20160033722A/ko
Application granted granted Critical
Publication of KR101767018B1 publication Critical patent/KR101767018B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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/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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

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

Abstract

메모리에서의 오류 정정을 위한 장치, 시스템들, 및 방법들이 기술된다. 일 실시예에서, 메모리 컨트롤러는 메모리에 저장된 데이터에 대한 판독 요청을 수신하고, 데이터 및 적어도 하나의 연관된 오류 정정 코드워드를 검색하고 - 데이터 및 연관된 오류 정정 코드워드는 메모리 내의 복수의 메모리 디바이스에 걸쳐서 분산됨 -, 데이터와 함께 검색된 오류 정정 코드워드를 디코딩하기 위해 제1 오류 정정 루틴을 적용하고, 오류 정정 코드워드에서의 정정 불가능 오류에 응답하여, 메모리 내의 복수의 디바이스에 제2 오류 정정 루틴을 적용하기 위한 로직을 포함한다. 기타 실시예들이 또한 개시되고 청구된다.

Description

비휘발성 메모리에서의 오류 정정{ERROR CORRECTION IN NON_VOLATILE MEMORY}
본 개시 내용은 일반적으로 전자 장치 분야에 관한 것이다. 보다 상세하게는, 본 발명의 몇몇 실시예들은 일반적으로 전자 디바이스들을 위한 비휘발성 메모리에서의 오류 정정(error correction)과 관련된다.
대다수의 전자 디바이스들은 자주 비휘발성 메모리, 예를 들어 플래시 메모리 또는 그와 유사한 것으로서 구체화되는 로컬 고속 접근 메모리를 이용하여 구현될 수 있는 메모리 시스템들을 포함한다. 메모리는 다중 메모리 디바이스를 포함할 수 있고, 데이터는 다중 메모리 디바이스에 걸쳐서 분산될 수 있다. 주기적으로, 판독 오류들이 스토리지 매체(비휘발성 메모리)에서의 오류들 및/또는 신호 처리에서의 오류들 때문에 발생할 수 있다. 그에 따라서, 메모리에서 오류 정정을 관리하기 위한 기법은 예를 들어 전자 디바이스들을 위한 메모리 시스템들에서 유용성을 찾을 수 있다.
상세한 설명이 첨부 도면들을 참조하여 제공된다. 상이한 도면들에서의 동일한 참조 번호들의 이용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 본 명세서에서 논의되는 다양한 예들에 따라서 메모리에서 오류 정정을 구현하기 위한 장치의 컴포넌트들의 구성 블록도 도해이다.
도 2a-2d 및 도 4는 본 명세서에서 논의되는 다양한 실시예들에 따른 메모리의 구성도들이다.
도 3 및 도 5는 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리에서 오류 정정을 구현하기 위한 방법의 예시적 동작들을 흐름도로 그린 것이다.
도 6-10은 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리 대기 시간 관리를 구현하기 위해 구성될 수 있는 전자 디바이스들의 구성 블록도 도해들이다.
다음의 설명에서, 다양한 실시예들의 철저한 이해를 제공하기 위해서 복수의 특정 상세 사항들이 제시된다. 그러나, 본 발명의 다양한 실시예들은 특정 상세 사항들 없이도 실시될 수 있다. 다른 경우에서, 본 발명의 특정 실시예들을 가리지 않기 위해 공지된 방법들, 절차들, 컴포넌트들, 및 회로들은 상세하게 설명되지 않았다. 또한, 본 발명의 실시예들의 다양한 양태들은 다양한 수단, 예컨대 집적 반도체 회로들("하드웨어"), 하나 이상의 프로그램들로 조직되는 컴퓨터 판독가능 명령어들("소프트웨어"), 또는 하드웨어와 소프트웨어의 몇몇 조합을 이용하여 실행될 수 있다. 본 개시의 목적을 위해 "로직"이라고 하는 표현은 하드웨어, 소프트웨어, 또는 이들의 몇몇 조합을 의미한다.
도 1은 본 명세서에서 논의되는 다양한 예들에 따라서 메모리에서 오류 정정을 구현하기 위한 장치의 컴포넌트들의 구성 블록도 도해이다. 도 1을 참조하면, 몇몇 실시예들에서, 중앙 처리 장치(CPU) 패키지(100)는 제어 허브(120)에 결합되는 하나 이상의 CPU들(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), 나노 와이어 기반 비휘발성 메모리, 멤리스터 기술을 수용한 메모리, 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)에서의 로직은 메모리(140)에서 오류 정정을 구현한다. 보다 상세하게는, 몇몇 실시예들에서, 메모리 컨트롤러(122)는 메모리(140)에서의 다중 메모리 디바이스(150)에 걸쳐서 분산되어 있던 오류 정정 코드들을 이용하여 오류 정정 동작들을 구현한다.
도 2a-2d는 본 명세서에서 논의되는 다양한 실시예들에 따른 메모리(140)의 구성 도해들이다. 첫째로 도 2a를 참조하면, 메모리(140)는 복수의 메모리 디바이스(예를 들어, DIMM들)(150A, 150B, 150C, 150D, 150E, 150F)를 포함할 수 있고, 이것은 참조 번호(150)에 의해 본 명세서에서 집합적으로 지칭될 수 있다. 예를 들어, 메모리 디바이스들(150)은 각각이 16 바이트의 스토리지를 포함할 수 있다. 메모리 디바이스들(150A-150E) 중 5개가 데이터를 저장하는데 사용될 수 있는 한편, 제6 메모리 디바이스(150F)가 디바이스들(150A-150E)에 저장되는 데이터의 비트 단위 XOR를 저장하는데 사용될 수 있다.
BCH(Bose-Chaudhuri-Hocquenghem) 코드워드와 같은 오류 정정 코드워드가 코드워드의 일부분을 제각기 디바이스들의 각각에 저장함으로써 메모리 디바이스들(150A-150E)에 걸쳐서 분산된다. 도 2a에 도시된 예에서 BCH 코드워드는 5개의 메모리 디바이스들(150A-150E)에 걸쳐서 분산되는 15 바이트 코드워드이다. XOR을 위해 사용되는 메모리 디바이스(150F)의 ECC 보호에 대한 필요를 제거함으로써, 데이터를 위한 BCH 코드워드는 남아있는 5개의 메모리 디바이스(150A-150E)를 차지하는 하나의 큰 코드워드가 되도록 성장할 수 있다.
도 2b는 XOR이 모든 6개의 메모리 디바이스(150A-150F)에 걸쳐서 분산되는 메모리(140)의 구성도이다. XOR은 모든 6개의 디바이스(150A-150F)에 걸쳐서 원시 비트 단위(raw bit-wise) XOR과 동일한 방식으로 기능한다. 그러므로, 디바이스가 장애를 일으킬 때, 디바이스의 콘텐츠들의 1/6이 기타 디바이스들로부터의 오류들에 대해 복구될 필요가 없는데, 그 이유는 콘텐츠들의 1/6이 BCH 코드워드의 부분이 아닌 XOR 데이터를 포함하기 때문이다.
메모리 디바이스들(150)의 특정 사이즈와 개수는 결정적이지 않다. 오류 정정 코드워드는 BCH만이 아니라 상이한 유형의 ECC 코드일 수 있다. 유사하게, 도 2c는 메모리(140)가, 그 각각이 50 바이트를 저장하는 10개의 메모리 디바이스(150A-150J)를 포함하는 예를 도해한다. 처음의 9개의 디바이스(150A-150I)는 데이터를 저장하고 LDPC(low-density parity-check) 코드워드가 9개의 디바이스(150A-150I)에 걸쳐서 분산된다. 10번째 디바이스(150J)는 XOR을 저장하는데 사용된다.
개관해 보면, LDPC 코드워드가 너무 많은 오류들이 있기 때문에 한 판독 동작 동안 디코딩하는 데 실패할 때, 이것은 단순히 너무 많은 무작위 오류들이 있기 때문이거나, 또는 메모리 디바이스들(150) 중 하나가 기능하지 않기 때문이다. LDPC 코드워드가 데이터를 저장하는 모든 메모리 디바이스들(150)에 걸쳐 있고/이들에 걸쳐서 분산되어 있기 때문에, 메모리 디바이스들(150) 중 어느 것이 더 높은 비트 오류율을 가지고 있고 또한 복구를 필요로 하는지가 알려져 있지 않다. 이 불확실성을 감당하기 위해 각각의 메모리 디바이스들(150)의 콘텐츠들이 차례로 복구되어, 각각의 메모리 디바이스들(150)이 장애를 일으킨 가능성을 개별적으로 검사한다. 이력 데이터에 기초하여 가장 많은 오류들을 가질 공산이 가장 큰 메모리 디바이스(150)의 복구가 먼저 시도될 수 있다.
복수의 ECC 코드워드가 있을 수 있고, ECC 코드들은 상이할 수 있지만, XOR은 항상 최대 ECC 코드워드보다 작다. 도 2d는 메모리(140)가, 그 각각이 110 바이트를 저장하는 5개의 메모리 디바이스(150A-150E)를 포함하는 예를 도해한다. 두 개의 BCH 코드워드가 있는데, 하나는 두 개의 디바이스(150A-150B)에 걸쳐서 확산/분산되어 있고 다른 하나는 두 개의 디바이스(150C-150D)에 걸쳐서 확산/분산되어 있다. 제5 디바이스(150E)는 XOR을 저장하는데 사용된다.
개관해 보면, 너무 많은 오류들은 있기 때문에 판독 동작 동안 도 2d에서 BCH 코드워드들 중 하나 또는 양쪽을 디코딩하는 데에 장애가 있을 때, 이것은 단순히 너무 많은 무작위 오류들이 있기 때문이거나, 또는 메모리 디바이스들(150) 중 하나가 기능하지 않기 때문이다. 양쪽 BCH 코드워드들이 데이터를 홀드하는 둘 이상의 메모리 디바이스(150)에 걸쳐 있기 때문에 메모리 디바이스들(150) 중 어느 것이 더 높은 비트 오류율을 가지고 있고 또한 복구를 필요로 한다는 것이 알려져 있지 않다. 이 불확실성을 감당하기 위해 정정 가능하지 않은 코드워드(들)에 속하는 데이터를 저장하는 각각의 메모리 디바이스들(150)의 콘텐츠들이 차례로 복구될 수 있어서, 각각의 메모리 디바이스들(150)이 장애를 일으킨 가능성을 개별적으로 검사한다. 이력 데이터에 기초하여 가장 많은 오류들을 가질 공산이 가장 큰 메모리 디바이스(150)의 복구가 먼저 시도될 수 있다.
도 3은 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리에서 오류 정정을 구현하기 위한 방법에서의 동작들을 도해하는 흐름도이다. 몇몇 실시예들에서, 도 3에 묘사된 동작들은 메모리 컨트롤러(122)에 의해 또는 메모리(140)에 국지적인 컨트롤러(142)에 의해 실행될 수 있는 로직으로서 구현될 수 있다.
도 3을 참조하면, 동작(310)에서 메모리(140)에 저장된 데이터에 대한 판독 요청이 수신되고 데이터 및 연관된 오류 정정 코드워드가 메모리(140)로부터 검색된다. 도 2a-2d와 관련하여 앞서 논의한 바와 같이, 몇몇 예들에서 데이터 및 적어도 하나의 연관된 오류 정정 코드워드는 메모리(140) 내의 복수의 메모리 디바이스(150)에 걸쳐서 확산/분산된다.
동작 315에서 오류 정정 코드 디코딩이 동작 310에서 검색되는 오류 정정 코드워드(들)에 대해 실행된다. 예를 들어, 오류 정정 코드워드는 BCH 오류 정정 코드, 리드-솔로몬(Reed-Solomon) 코드, LDPC 코드, 터보 코드, 컨볼루션 코드, 또는 극성 코드(polar code)일 수 있다. 판독 동작 동안 메모리 디바이스(들)(150)에서의 하나 이상의 판독 오류들 또는 장애들이 오류 정정 코드워드(들)에서의 오류를 야기할 수 있다. 동작 320에서, 모든 코드워드마다 정정 가능하다면, 이후 데이터는 성공적으로 판독될 수 있고, 판독 동작에 응답하여 반환(return)될 수 있다(동작 325).
대조적으로, 동작 320에서 적어도 하나의 코드워드가 정정 가능하지 않다면, 이후 동작들은 개별 메모리 디바이스들(150)을 검사하기 위해 제2 오류 정정 루틴을 적용하도록 구현된다. 예를 들어, 도 2a에서 묘사된 예에서, 개별 메모리 디바이스(150A-150E)가 검사될 수 있다. 따라서, 동작 330에서, 제1 메모리 디바이스(150)(예를 들어, 150A)가 선택된다. 동작 335에서, 비트 단위 XOR이 디바이스(150A)의 콘텐츠들을 복구하기 위해 남아있는 디바이스들(예를 들어, 150B-150E) 중 몇몇 또는 전부에 대해 실행된다.
동작 340에서, 동작 315에서 실행되는 오류 정정 코드 디코딩이 선택된 메모리 디바이스(예를 들어, 150A)로부터의 콘텐츠들의 복구된 복사본을 이용하여 반복된다. 동작 345에서, 모든 코드워드마다 정정 가능하다면, 이후 데이터는 성공적으로 판독될 수 있고, 판독 동작에 응답하여 반환될 수 있다(동작 350).
대조적으로, 동작 345에서 적어도 하나의 코드워드가 정정 가능하지 않다면, 이후 제어는 동작 355에 넘겨진다. 동작 355는 아직 검사되지 않은 임의의 메모리 디바이스들(150)을 체크한다. 몇몇 예들에서, 동작 355는 아직 검사되지 않았고 또한 정정 불가능한 코드워드에 속하는 데이터를 저장하는 임의의 메모리 디바이스들(150)에 검사를 한정할 수 있다. 동작 355에서 검사할 메모리 디바이스들(150)이 더 이상 있지 않다면, 이후 제어는 동작 360에 넘겨지고 오류 루틴이 판독 명령에 응답하여 호출된다. 예를 들어, 오류 루틴은 판독 오류 메시지를 호스트 디바이스에 반환하는 것을 포함할 수 있다.
대조적으로, 동작 355에서 검사할 추가 메모리 디바이스들(150)이 있다면, 제어는 동작 365에 넘겨지고, 다음 메모리 디바이스(예를 들어, 150B)가 선택된다. 제어는 이후 동작 335에 넘겨지고, 비트 단위 XOR 연산이 선택된 메모리 디바이스(예를 들어, 150B)의 콘텐츠들의 복사본을 복구하기 위해 실행된다.
그러므로, 동작들 335-365는 논리적 루프를 정의하는데, 이 논리적 루프에 따라서 일부 또는 모든 메모리 디바이스들(150)이 판독 오류가 메모리 디바이스들(150) 중 하나 이상을 ECC 디코딩함으로써 정정되었는지를 결정하기 위해 순차적으로 검사된다.
또 다른 예에서 메모리 디바이스(들)(150)는 BCH 오류 정정 코드들이 아니라 리드-솔로몬(RS) 오류 정정 코드를 포함할 수 있다. RS 코드들이 무작위 오류들에 대해 BCH 코드만큼 효율적이지 않지만, RS 코드들은 소거 디코딩에 대해 XOR 만큼은 강하다. XOR 패리티의 1 비트가 소거된 데이터의 1 비트를 복구할 수 있는 것과 마찬가지로, RS 패리티의 1 비트는 소거된 데이터의 1 비트를 복구할 수 있다. 그래서 RS 코드는 칩 장해 복구를 위한 최소의 패리티 비트들의 관점에서 볼 때 XOR의 효율성에 필적할 수 있지만, BCH보다는 덜 효율적이다.
도 4는 본 명세서에서 논의되는 다양한 실시예들에 따른 메모리(140)의 구성도들이다. 도 4는 메모리 디바이스(들)(150)가 64 바이트의 데이터와 몇몇 연관된 메타데이터 및 패리티와 함께 코드워드를 저장하는 예시적 구성을 보여준다. 이 예의 RS 코드는 7 비트 심볼들을 가지고, 18 심볼 오류를 정정할 수 있다. XOR 복구 동안, 이 정정 능력은 9 오류를 정정하는 것과 18 심볼 소거를 디코딩하는 것 사이에서 분할된다. 각각의 메모리 디바이스는 18 심볼 및 2개의 여분 비트를 갖는다. 2개의 여분 비트는 XOR의 2 비트를 이용하여 메모리 디바이스 장애에 대항하여 보호될 수 있다. XOR의 각각의 2 비트는 2개의 메모리 디바이스(150)에서 4 데이터 비트를 보호하고, 메모리 디바이스 장애의 경우에만 이용된다. 리드-솔로몬 인코딩 및 디코딩 목적을 위해, 4 데이터 비트와 2개의 XOR 비트의 각각은 4 데이터 비트, 2개의 XOR 비트, 및 1 패드 비트를 포함하는 하나의 7 비트 데이터 심볼로서 취급된다. XOR 비트들이 필요하지 않지만, 소거된 것으로서 마킹될 필요가 있는 심볼들의 수를 감소시키기 위해 추가될 수 있다. 심볼들의 배열을 위한 유일하게 필요한 규칙은, 심볼들이 대부분 동일 메모리 디바이스(150)에 포함되고, 또한 여러 메모리 디바이스들(150)에 걸쳐서 분산되는 비트들을 갖지 않는다는 것이다. 이것은 작업하기 위해 18 심볼 소거로서 한 칩을 소거하는 데에 중요하다.
64 바이트의 데이터와 32 바이트의 패리티를 가진 그러한 구성에서의 RS 코드는, XOR을 가진 32 바이트들의 절반을 분할하는 대신에, 패리티의 모든 32 바이트를 이용할 수 있고, RS 코드는 BCH의 16 바이트의 패리티와 비교해 32 바이트의 패리티를 갖는다. 그래서 RS 코드가 무작위 비트 오류들을 정정하는 데에 1.5x만큼 덜 효율적이었다 하더라도, 두 배의 패리티 양을 갖고 있으므로, RS 코드는 이제 BCH와 동일한 정정 강도를 위해 0.75x 패리티를 요구할 것이고, 그러므로 30% 더 많은 패리티를 가진 BCH 코드의 강도를 갖는다.
도 5는 본 명세서에서 논의되는 다양한 실시예들에 따라서 RS 코드를 이용하여 메모리에서 오류 정정을 구현하기 위한 방법에서의 동작들을 설명하는 흐름도이다. 몇몇 실시예들에서, 도 5에 묘사된 동작들은 메모리 컨트롤러(122)에 의해 또는 메모리(140)에 국지적인 컨트롤러(142)에 의해 실행될 수 있는 로직으로 구현될 수 있다.
도 5를 참조하면, 동작 510에서 메모리(140)에 저장된 데이터에 대한 판독 요청이 수신되고, 데이터 및 연관된 오류 정정 코드워드는 메모리(140)로부터 검색된다. 도 4를 참조하여 앞서 논의한 바와 같이, 몇몇 예들에서 데이터 및 연관된 오류 정정 코드워드는 메모리(140)에서 복수의 메모리 디바이스(150)에 걸쳐서 분산된다.
동작 515에서, 오류 정정 코드 디코딩은 동작 510에서 검색된 오류 정정 코드워드에 대해 실행된다. 예를 들어, 오류 정정 코드워드는 리드-솔로몬(RS) 오류 정정 코드일 수 있다. 판독 동작 동안 메모리 디바이스(150)에서의 하나 이상의 판독 오류들 또는 장애들이 RS 오류 코드의 오류를 야기할 수 있다. 동작 520에서, 코드워드가 정정가능하다면, 이후 데이터는 성공적으로 판독될 수 있고, 판독 동작에 응답하여(동작 525에서) 반환될 수 있다.
대조적으로, 동작 520에서, 코드워드가 정정 가능하지 않다면, 이후 개별 메모리 디바이스(들)(150)를 검사하기 위해 제2 오류 정정 루틴을 적용하기 위한 동작들이 구현된다. 예를 들어, 도 4에 묘사된 예에서, 개별 메모리 디바이스(150A-150F)가 검사될 수 있다. 따라서, 동작 535에서 선택된 메모리 디바이스(예를 들어, 150A)의 콘텐츠들은 소거된 심볼들로서 마킹된다.
동작 540에서, 동작 515에서 검색된 코드워드에 대한 RS 오류 및 소거 코딩이 선택된 메모리 디바이스(예를 들어, 150A)로부터의 콘텐츠들의 복구된 복사본을 이용하여 반복된다. 동작 545에서, 코드워드가 정정가능하다면, 이후 데이터는 성공적으로 판독될 수 있고, 판독 동작에 응답하여 (동작 550에서) 반환될 수 있다.
대조적으로, 동작 545에서 코드워드가 정정 가능하지 않다면, 이후 제어는 동작 555에 넘겨진다. 동작 555에서 검사를 받을 더 이상의 메모리 디바이스들(150)이 없다면, 이후 제어는 동작 560에 넘겨지고 오류 루틴이 판독 명령에 응답하여 호출된다. 예를 들어, 오류 루틴은 판독 오류 메시지를 호스트 디바이스에 반환하는 것을 포함할 수 있다.
대조적으로, 동작 555에서 검사를 받을 추가 메모리 디바이스들(150)이 있다면 이후 제어는 동작 565에 넘겨지고 다음 메모리 디바이스(예를 들어, 150B)가 선택된다. 제어는 이후 동작 535으로 뒤로 넘겨지고, 선택된 메모리 디바이스(예를 들어, 150A)의 콘텐츠들은 소거된 심볼들로서 마킹된다.
그러므로, 동작들 535-565는 논리적 루프를 정의하는데, 이 논리적 루프에 따라 메모리 디바이스들(150)이, 판독 오류가 메모리 디바이스들(150) 중 하나 이상을 RS 오류 정정 디코딩함으로써 정정될 수 있는지를 결정하기 위해 순차적으로 검사된다.
앞서 논의한 바와 같이, 몇몇 실시예들에서, 전자 디바이스는 컴퓨터 시스템으로서 구체화될 수 있다. 도 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(random access memory), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM)과 같은 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스들, 또는 기타 유형의 스토리지 디바이스들을 포함할 수 있다. 하드 디스크와 같은 비휘발성 메모리도 또한 사용될 수 있다. 다중 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), PROM(programmable ROM), EPROM(erasable PROM), EEPROM(electrically EPROM), 디스크 드라이브(예를 들어, 628), 플로피 디스크, 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)은 둘 이상의 실행 유닛을 포함할 수 있다. 실행 유닛(808)은 또한 덧셈, 뺄셈, 곱셈, 및/또는 나눗셈과 같은 다양한 산술 연산들을 실행할 수 있고, 또한 하나 이상의 ALU(arithmetic logic unit)들을 포함할 수 있다. 실시예에서, 보조 프로세서(도시되지 않음)는 실행 유닛(808)과 연계하여 다양한 산술 연산들을 실행할 수 있다.
또한, 실행 유닛(808)은 명령어들을 비순차적(out-of-order)으로 실행할 수 있다. 따라서, 프로세서 코어(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(Integrated Circuit) 다이상에 제공된다.
도 9에 도시된 바와 같이, SOC 패키지(902)는 메모리 컨트롤러(942)를 통해 메모리(960)(이것은 다른 도면들을 참조하여 본 명세서에서 논의된 메모리와 유사하거나 동일한 것일 수 있음)에 결합된다. 실시예에서, 메모리(960)(또는 이것의 일부)는 SOC 패키지(902)상에 통합될 수 있다.
I/O 인터페이스(940)는, 예컨대 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같은 상호접속 및/또는 버스를 통해 하나 이상의 I/O 디바이스들(970)에 결합될 수 있다. I/O 디바이스(들)(970)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(이를테면, 카메라 또는 캠코더/비디오 리코더), 터치스크린, 스피커, 또는 이와 유사한 것 중 하나 이상을 포함할 수 있다.
도 10은 본 발명의 실시예에 따라 포인트 투 포인트(point-to-point)(PtP) 구성으로 배열되는 컴퓨터 시스템(1000)을 도해한다. 특히, 도 10은 프로세서들, 메모리, 및 입력/출력 디바이스들이 다수의 포인트 투 포인트 인터페이스에 의해 상호 접속되는 시스템을 도시한다. 도 2를 참조하면 논의된 동작들은 시스템(1000)의 하나 이상의 컴포넌트들에 의해 실행될 수 있다.
도 10에 도시된 바와 같이, 시스템(1000)은 몇 개의 프로세서를 포함할 수 있는데, 명확성을 위해 그 중에서 두 개의 프로세서(1002 및 1004)만이 도시되었다. 프로세서들(1002 및 1004)은 각각이 메모리들(1010 및 1012)과의 통신을 가능하게 위한 로컬 MCH(memory controller hub)(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)를 통해, 버스 브리지(942)는 키보드/마우스(945), 통신 디바이스들(946)(모뎀들, 네트워크 인터페이스 디바이스들, 또는 컴퓨터 네트워크(803)와 통신할 수 있는 기타 통신 디바이스들과 같은 것), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(948)와 같은 다른 디바이스들과 통신할 수 있다. 데이터 스토리지 디바이스(948)(이것은 하드 디스크 드라이브 또는 NAND 플래시 기반 SSD(solid state drive)일 수 있음)는 프로세서들(902 및/또는 904)에 의해 실행될 수 있는 코드(949)를 저장할 수 있다.
하기 예들은 추가 실시예들과 관련된다.
예 1은 메모리에 저장된 데이터에 대한 판독 요청을 수신하고 데이터 및 연관된 오류 정정 코드워드를 검색하고 - 여기서 데이터 및 적어도 하나의 연관된 오류 정정 코드워드가 메모리 내의 복수의 메모리 디바이스에 걸쳐서 분산됨 -, 데이터와 함께 검색된 오류 정정 코드워드를 디코딩하기 위해 제1 오류 정정 루틴을 적용하고 및 오류 정정 코드워드에서의 정정 불가능 오류에 응답하여 메모리 내의 복수의 디바이스에 제2 오류 정정 루틴을 적용하기 위한 로직을 포함하는 메모리 컨트롤러이다.
예 2에서, 예 1의 주제는 오류 정정 코드워드가 BCH 오류 정정 코드인 배열을 선택 사항으로 포함할 수 있고, 적어도 하나의 메모리 디바이스는 복수의 메모리 디바이스의 콘텐츠들의 비트 단위 XOR를 포함한다.
예 3에서, 예 1 또는 예 2의 발명의 주제는 제2 오류 정정 루틴이 순차적으로 메모리 디바이스를 선택하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 복구하기 위해 비트 단위 XOR 연산을 실행하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 오류 정정 코드워드에 대해 오류 정정 루틴을 실행하기 위한 로직을 포함하는 배열을 선택 사항으로 포함할 수 있다.
예 4에서, 예들 1-3 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적 복구에 응답하여 데이터를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 5에서, 예들 1-4 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스들의 콘텐츠들의 복사본을 이용한 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 6에서, 예들 1-5 중 임의의 하나의 발명의 주제는 오류 정정 코드워드가 리드-솔로몬(RS) 오류 정정 코드인 배열을 선택 사항으로 포함할 수 있다.
예 7에서, 예들 1-6 중 임의의 하나의 발명의 주제는 순차적으로 메모리 디바이스를 선택하고, 선택된 메모리 디바이스의 콘텐츠들을 소거된 심볼들로서 마킹하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 오류 정정 코드워드에 대해 RS 오류 정정 루틴을 실행하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 8에서, 예들 1-7 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적 복구에 응답하여 데이터를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 9에서, 예들 1-8 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스들의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류 루틴을 호출하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 10은 프로세서; 및 메모리에 저장된 데이터에 대한 판독 요청을 수신하고 데이터 및 적어도 하나의 연관된 오류 정정 코드워드를 검색하고 - 여기서 데이터 및 연관된 오류 정정 코드워드가 메모리 내의 복수의 메모리 디바이스에 걸쳐서 분산됨 -, 데이터와 함께 검색된 오류 정정 코드워드를 디코딩하기 위해 제1 오류 정정 루틴을 적용하고, 및 오류 정정 코드워드에서의 정정 불가능 오류에 응답하여 메모리 내의 복수의 디바이스에 제2 오류 정정 루틴을 적용하기 위한 메모리 제어 로직을 포함하는 전자 디바이스이다.
예 11에서, 예 10의 발명의 주제는 오류 정정 코드워드가 BCH 오류 정정 코드인 배열을 선택 사항으로 포함할 수 있고, 적어도 하나의 메모리 디바이스는 복수의 메모리 디바이스의 콘텐츠들의 비트 단위 XOR를 포함한다.
예 12에서, 예 10 또는 예 11의 발명의 주제는 제2 오류 정정 루틴이, 순차적으로 메모리 디바이스를 선택하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 복구하기 위해 비트 단위 XOR 연산을 실행하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 오류 정정 코드워드에 대해 오류 정정 루틴을 실행하기 위한 로직을 포함하는 배열을 선택 사항으로 포함할 수 있다.
예 13에서, 예들 10-12 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적 복구에 응답하여 데이터를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 14에서, 예들 10-13 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스들의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 15에서, 예들 10-14 중 임의의 하나의 발명의 주제는 오류 정정 코드워드가 리드-솔로몬(RS) 오류 정정 코드인 배열을 선택 사항으로 포함할 수 있다.
예 16에서, 예들 10-15 중 임의의 하나의 발명의 주제는 순차적으로 메모리 디바이스를 선택하고, 선택된 메모리 디바이스의 콘텐츠들을 소거된 심볼들로서 마킹하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 오류 정정 코드워드에 대해 RS 오류 정정 루틴을 실행하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 17에서, 예들 10-16 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적 복구에 응답하여 데이터를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 18에서 예들 10-17 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스들의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류 루틴을 호출하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 19는, 컨트롤러에서, 메모리에 저장된 데이터에 대한 판독 요청을 수신하는 단계, 데이터 및 적어도 하나의 연관된 오류 정정 코드워드를 검색하는 단계 -여기서 데이터 및 연관된 오류 정정 코드워드는 메모리 내의 복수의 메모리 디바이스에 걸쳐서 분산됨-, 컨트롤러에서, 데이터와 함께 검색된 오류 정정 코드워드를 디코딩하기 위해 제1 오류 정정 루틴을 적용하는 단계, 및 오류 정정 코드워드에서의 정정 불가능 오류에 응답하여, 컨트롤러에서, 메모리 내의 복수의 디바이스에 제2 오류 정정 루틴을 적용하는 단계를 포함하는 방법이다.
예 20에서, 예 19의 발명의 주제는 오류 정정 코드워드가 BCH 오류 정정 코드인 배열을 선택 사항으로 포함할 수 있고, 적어도 하나의 메모리 디바이스는 복수의 메모리 디바이스의 콘텐츠들의 비트 단위 XOR를 포함한다.
예 21에서, 예 19 또는 예 20의 발명의 주제는 제2 오류 정정 루틴이, 순차적으로 메모리 디바이스를 선택하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 복구하기 위해 비트 단위 XOR 연산을 실행하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 오류 정정 코드워드에 대해 오류 정정 루틴을 실행하기 위한 로직을 포함하는 배열을 선택 사항으로 포함할 수 있다.
예 22에서, 예들 19-21 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적 복구에 응답하여 데이터를 반환하는 단계를 선택 사항으로 포함할 수 있다.
예 23에서, 예들 19-22 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스들의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류를 반환하는 단계를 선택 사항으로 포함할 수 있다.
예 24에서, 예들 19-23 중 임의의 하나의 발명의 주제는 오류 정정 코드워드가 리드-솔로몬(RS) 오류 정정 코드인 배열을 선택 사항으로 포함할 수 있다.
예 25에서, 예들 19-24 중 임의의 하나의 발명의 주제는 순차적으로 메모리 디바이스를 선택하고, 선택된 메모리 디바이스의 콘텐츠들을 소거된 심볼들로서 마킹하고, 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 오류 정정 코드워드에 대해 RS 오류 정정 루틴을 실행하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 26에서, 예들 19-25 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적 복구에 응답하여 데이터를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다
예 27에서, 예들 19-26 중 임의의 하나의 발명의 주제는 선택된 메모리 디바이스들의 콘텐츠들의 복사본을 이용하는 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류 루틴을 호출하기 위한 로직을 선택 사항으로 포함할 수 있다.
본 발명의 다양한 실시예들에서, 예를 들어 도 1 내지 도 10을 참조하여 본 명세서에서 논의되는 동작들은, 예를 들어 본 명세서에서 논의되는 처리를 실행하도록 컴퓨터를 프로그래밍하는데 이용되는 명령어들(또는 소프트웨어 프로시저들)을 그 상에 저장한 유형(tangible) (예를 들어, 비일시적) 머신 판독가능 또는 컴퓨터 판독가능 매체를 포함하여, 컴퓨터 프로그램 제품으로서 제공될 수 있는 하드웨어(예를 들어, 회로망), 소프트웨어, 펌웨어, 마이크로코드, 또는 이들의 조합들로서 구현될 수 있다. 또한, "로직"이라는 용어는 예로서 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합들을 포함할 수 있다. 머신 판독가능 매체는 본 명세서에서 논의된 바와 같은 스토리지 디바이스를 포함할 수 있다.
본 명세서에서 "일 실시예(one embodiment)" 또는 "실시예(an embodiment)"에 대한 언급은, 이 실시예와 연계하여 설명된 특정의 피처, 구조, 또는 특징이 적어도 한 구현에 포함될 수 있다는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 구문의 출현은 모두가 동일 실시예를 가리킬 수도 있고 그렇지 않을 수도 있다.
또한, 본 설명 및 청구항들에서, "결합된(coupled)" 및 "연결된(connected)"이라는 용어들은 그 파생어들과 함께 이용될 수 있다. 본 발명의 몇몇 실시예들에서, "연결된"은, 2개 이상의 요소들이 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는데 이용될 수 있다. "결합된"은, 2개 이상의 요소들이 직접 물리적으로 또는 전기적으로 접촉하는 것을 의미할 수 있다. 그러나, "결합된"은, 2개 이상의 요소들이 서로 직접 접촉하지 않을 수 있지만 여전히 서로 상호작용하거나 협력하는 것을 또한 의미할 수 있다.
따라서, 본 발명의 실시예들은 구조적 피처들 및/또는 방법론적 작용들에 대해 특정적인 언어로 설명되었지만, 청구 대상은 설명된 특정적 피처들 또는 작용들에만 제한되지 않을 수 있다는 것을 이해해야 한다. 오히려, 특정 피처들 및 작용들은 청구 대상을 구현하는 예시적 형태들로서 개시되어 있다.

Claims (25)

  1. 메모리 컨트롤러로서,
    복수의 메모리 디바이스에 저장된 판독 데이터에 대한 판독 요청을 수신하고 - 단일 오류 정정 코드워드는 상기 복수의 메모리 디바이스에 걸쳐서 분산되고, 상기 복수의 메모리 디바이스에 저장된 상기 판독 데이터 모두와 연관됨 -;
    상기 판독 데이터 및 상기 오류 정정 코드워드를 검색하고;
    상기 오류 정정 코드워드를 디코딩하기 위해 제1 오류 정정 루틴을 적용하고;
    상기 오류 정정 코드워드에서의 정정 불가능 오류에 응답하여, 상기 복수의 메모리 디바이스에 제2 오류 정정 루틴을 적용하기 위한 로직
    을 포함하는 메모리 컨트롤러.
  2. 제1항에 있어서,
    상기 오류 정정 코드워드는 BCH(Bose-Chaudhuri-Hocquenghem) 오류 정정 코드이고;
    적어도 하나의 메모리 디바이스는 상기 복수의 메모리 디바이스의 콘텐츠들의 비트 단위 XOR를 포함하는
    메모리 컨트롤러.
  3. 제2항에 있어서, 상기 제2 오류 정정 루틴은,
    순차적으로,
    메모리 디바이스를 선택하고,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 복구하기 위해 비트 단위 XOR 연산을 실행하고,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 상기 오류 정정 코드워드에 대해 오류 정정 루틴을 실행하기 위한 로직을 포함하는
    메모리 컨트롤러.
  4. 제3항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적 복구에 응답하여 상기 판독 데이터를 반환하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  5. 제3항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류를 반환하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  6. 제1항에 있어서, 상기 오류 정정 코드워드는 리드-솔로몬(RS) 오류 정정 코드인 메모리 컨트롤러.
  7. 제6항에 있어서, 상기 제2 오류 정정 루틴은,
    순차적으로,
    메모리 디바이스를 선택하고,
    상기 선택된 메모리 디바이스의 콘텐츠들을 소거된 심볼들로서 마킹하고,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 상기 오류 정정 코드워드에 대해 RS 오류 정정 루틴을 실행하기 위한 로직을 포함하는
    메모리 컨트롤러.
  8. 제7항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적 복구에 응답하여 상기 판독 데이터를 반환하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  9. 제8항에 있어서,
    상기 선택된 메모리 디바이스들의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류 루틴을 호출하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  10. 전자 디바이스로서:
    프로세서; 및
    메모리 컨트롤러
    를 포함하고,
    상기 메모리 컨트롤러는,
    복수의 메모리 디바이스에 저장된 판독 데이터에 대한 판독 요청을 수신하고 - 단일 오류 정정 코드워드는 상기 복수의 메모리 디바이스에 걸쳐서 분산되고 상기 복수의 메모리 디바이스에 저장된 상기 판독 데이터 모두와 연관됨 -;
    상기 판독 데이터 및 상기 오류 정정 코드워드를 검색하고;
    상기 오류 정정 코드워드를 디코딩하기 위해 제1 오류 정정 루틴을 적용하고;
    상기 오류 정정 코드워드에서의 정정 불가능 오류에 응답하여, 상기 복수의 메모리 디바이스에 제2 오류 정정 루틴을 적용하기 위한 로직
    을 포함하는 전자 디바이스.
  11. 제10항에 있어서,
    상기 오류 정정 코드워드는 BCH 오류 정정 코드이고;
    적어도 하나의 메모리 디바이스는 상기 복수의 메모리 디바이스의 콘텐츠들의 비트 단위 XOR를 포함하는
    전자 디바이스.
  12. 제11항에 있어서, 상기 제2 오류 정정 루틴은,
    순차적으로,
    메모리 디바이스를 선택하고;
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 복구하기 위해 비트 단위 XOR 연산을 실행하고;
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 상기 오류 정정 코드워드에 대해 오류 정정 루틴을 실행하기 위한 로직을 포함하는
    전자 디바이스.
  13. 제12항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적 복구에 응답하여 상기 판독 데이터를 반환하기 위한 로직
    을 더 포함하는 전자 디바이스.
  14. 제12항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류를 반환하기 위한 로직
    을 더 포함하는 전자 디바이스.
  15. 제10항에 있어서, 상기 오류 정정 코드워드는 리드-솔로몬(RS) 오류 정정 코드인 전자 디바이스.
  16. 제15항에 있어서, 상기 제2 오류 정정 루틴은,
    순차적으로,
    메모리 디바이스를 선택하고,
    상기 선택된 메모리 디바이스의 콘텐츠들을 소거된 심볼들로서 마킹하고,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 상기 오류 정정 코드워드에 대해 RS 오류 정정 루틴을 실행하기 위한 로직을 포함하는
    전자 디바이스.
  17. 제16항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적 복구에 응답하여 상기 판독 데이터를 반환하기 위한 로직
    을 더 포함하는 전자 디바이스.
  18. 제17항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류 루틴을 호출하기 위한 로직
    을 더 포함하는 전자 디바이스.
  19. 방법으로서:
    컨트롤러에서, 복수의 메모리 디바이스에 저장된 판독 데이터에 대한 판독 요청을 수신하는 단계 - 단일 오류 정정 코드워드는 상기 복수의 메모리 디바이스에 걸쳐서 분산되고, 상기 복수의 메모리 디바이스에 저장된 상기 판독 데이터 모두와 연관됨 -;
    상기 판독 데이터 및 상기 오류 정정 코드워드를 검색하는 단계;
    상기 컨트롤러에서, 상기 오류 정정 코드워드를 디코딩하기 위해 제1 오류 정정 루틴을 적용하는 단계; 및
    상기 오류 정정 코드워드에서의 정정 불가능 오류에 응답하여, 상기 컨트롤러에서, 상기 복수의 메모리 디바이스에 제2 오류 정정 루틴을 적용하는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    상기 오류 정정 코드워드는 BCH 오류 정정 코드이고;
    적어도 하나의 메모리 디바이스는 상기 복수의 메모리 디바이스의 콘텐츠들의 비트 단위 XOR를 포함하는 방법.
  21. 제20항에 있어서, 상기 제2 오류 정정 루틴은,
    순차적으로,
    메모리 디바이스를 선택하고,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 복구하기 위해 비트 단위 XOR 연산을 실행하고,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 상기 오류 정정 코드워드에 대해 오류 정정 루틴을 실행하기 위한 로직을 포함하는 방법.
  22. 제21항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적 복구에 응답하여 상기 판독 데이터를 반환하는 단계
    를 더 포함하는 방법.
  23. 제22항에 있어서,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용한 상기 오류 정정 코드워드의 성공적이지 않은 복구에 응답하여 오류를 반환하는 단계
    를 더 포함하는 방법.
  24. 제19항에 있어서, 상기 오류 정정 코드워드는 리드-솔로몬(RS) 오류 정정 코드인 방법.
  25. 제24항에 있어서, 상기 제2 오류 정정 루틴은,
    메모리 디바이스를 선택하고,
    상기 선택된 메모리 디바이스의 콘텐츠들을 소거된 심볼들로서 마킹하고,
    상기 선택된 메모리 디바이스의 콘텐츠들의 복사본을 이용하여 상기 오류 정정 코드워드에 대해 RS 오류 정정 루틴을 실행하는 것을 포함하는 방법.
KR1020167003655A 2013-09-27 2013-09-27 비휘발성 메모리에서의 오류 정정 Active KR101767018B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/062405 WO2015047334A1 (en) 2013-09-27 2013-09-27 Error correction in non_volatile memory

Publications (2)

Publication Number Publication Date
KR20160033722A KR20160033722A (ko) 2016-03-28
KR101767018B1 true KR101767018B1 (ko) 2017-08-09

Family

ID=52744231

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167003655A Active KR101767018B1 (ko) 2013-09-27 2013-09-27 비휘발성 메모리에서의 오류 정정

Country Status (4)

Country Link
US (1) US9619324B2 (ko)
KR (1) KR101767018B1 (ko)
CN (1) CN105706059B (ko)
WO (1) WO2015047334A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200046938A (ko) * 2018-10-26 2020-05-07 인하대학교 산학협력단 고속직렬인터페이스용 송수신 오류 정정기법이 포함된 오버헤드최소화 코딩 기법과 하드웨어 구현 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015047334A1 (en) * 2013-09-27 2015-04-02 Intel Corporation Error correction in non_volatile memory
US9680509B2 (en) 2015-03-27 2017-06-13 Intel Corporation Errors and erasures decoding from multiple memory devices
US10033411B2 (en) 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data
JP2017111463A (ja) * 2015-12-14 2017-06-22 ルネサスエレクトロニクス株式会社 半導体装置、機能安全システム及びプログラム
KR102469809B1 (ko) * 2016-05-18 2022-11-24 에스케이하이닉스 주식회사 반도체장치
TWI594126B (zh) * 2016-07-05 2017-08-01 慧榮科技股份有限公司 資料儲存裝置與資料儲存方法
GB2563473B (en) * 2017-06-15 2019-10-02 Accelercomm Ltd Polar coder with logical three-dimensional memory, communication unit, integrated circuit and method therefor
US10855314B2 (en) * 2018-02-09 2020-12-01 Micron Technology, Inc. Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords
KR102718466B1 (ko) * 2018-08-07 2024-10-17 삼성전자주식회사 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템
US10896092B2 (en) 2018-09-18 2021-01-19 Micron Technology, Inc. Memory components with ordered sweep error recovery
US10983890B2 (en) 2018-10-09 2021-04-20 Micron Technology, Inc. Real time trigger rate monitoring in a memory sub-system
US20200127685A1 (en) * 2018-10-19 2020-04-23 Nyquist Semiconductor Limited Systems and methods for a hybrid non-volatile storage system
US11438012B2 (en) * 2018-11-29 2022-09-06 Micron Technology, Inc. Failure-tolerant error correction layout for memory sub-systems
CN109410869A (zh) * 2018-12-11 2019-03-01 惠科股份有限公司 一种数据的读取方法、读取装置及显示装置
CN109410870A (zh) * 2018-12-11 2019-03-01 惠科股份有限公司 时序控制电路、数据读取方法及显示装置
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置
US11461170B2 (en) * 2020-08-14 2022-10-04 Micron Technology, Inc. Error caching techniques for improved error correction in a memory device
KR102673257B1 (ko) * 2021-01-14 2024-06-05 창신 메모리 테크놀로지즈 아이엔씨 비교 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120198309A1 (en) * 2011-01-29 2012-08-02 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures
US20130179753A1 (en) * 2006-12-06 2013-07-11 Fusion-Io, Inc. Systems and methods for adaptive data storage

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6276825A (ja) 1985-09-30 1987-04-08 Hitachi Ltd 符号誤り訂正方法
US5754753A (en) 1992-06-11 1998-05-19 Digital Equipment Corporation Multiple-bit error correction in computer main memory
US5455939A (en) 1992-06-17 1995-10-03 Intel Corporation Method and apparatus for error detection and correction of data transferred between a CPU and system memory
JP2568031B2 (ja) * 1992-07-17 1996-12-25 インターナショナル・ビジネス・マシーンズ・コーポレイション 誤り検出及び訂正システム
JP3190853B2 (ja) * 1997-05-23 2001-07-23 エヌイーシーマイクロシステム株式会社 誤り訂正処理方法及びその装置
US5996105A (en) 1997-11-14 1999-11-30 Cirrus Logic, Inc. ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes
US6662333B1 (en) * 2000-02-04 2003-12-09 Hewlett-Packard Development Company, L.P. Shared error correction for memory design
US6948091B2 (en) * 2002-05-02 2005-09-20 Honeywell International Inc. High integrity recovery from multi-bit data failures
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7509560B2 (en) * 2003-12-29 2009-03-24 Intel Corporation Mechanism for adjacent-symbol error correction and detection
US7389465B2 (en) * 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US20060256615A1 (en) 2005-05-10 2006-11-16 Larson Thane M Horizontal and vertical error correction coding (ECC) system and method
US7676730B2 (en) 2005-09-30 2010-03-09 Quantum Corporation Method and apparatus for implementing error correction coding in a random access memory
US7694208B2 (en) * 2005-12-20 2010-04-06 Quantum Corporation Error correction algorithm using interleaved parity check and Reed-Solomon code
US7355892B2 (en) 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
US7304893B1 (en) 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
US9116823B2 (en) * 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US7921351B2 (en) * 2006-12-22 2011-04-05 Cable Television Labs, Inc. Increasing error correction in data streams encoded with linear block code
US8103934B2 (en) * 2007-12-21 2012-01-24 Honeywell International Inc. High speed memory error detection and correction using interleaved (8,4) LBCs
KR101398200B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8347152B2 (en) 2008-09-10 2013-01-01 Intel Corporation Link performance abstraction for ML receivers based on RBIR metrics
KR101519626B1 (ko) 2009-02-27 2015-05-14 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
US8321775B2 (en) 2009-04-21 2012-11-27 Micron Technology, Inc. Non-volatile memory with extended error correction protection
TWI465898B (zh) * 2009-07-13 2014-12-21 Silicon Motion Inc 避免資料儲存裝置之資料發生移位錯誤的方法及控制器
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
US8607124B2 (en) * 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
US8677203B1 (en) * 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8380915B2 (en) * 2010-01-27 2013-02-19 Fusion-Io, Inc. Apparatus, system, and method for managing solid-state storage media
US8589766B2 (en) 2010-02-24 2013-11-19 Apple Inc. Codeword remapping schemes for non-volatile memories
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8572457B2 (en) * 2010-05-28 2013-10-29 Seagate Technology Llc Outer code protection for solid state memory devices
US8433979B2 (en) 2011-02-28 2013-04-30 International Business Machines Corporation Nested multiple erasure correcting codes for storage arrays
US9058291B2 (en) 2011-02-28 2015-06-16 International Business Machines Corporation Multiple erasure correcting codes for storage arrays
US9176810B2 (en) * 2011-05-27 2015-11-03 SanDisk Technologies, Inc. Bit error reduction through varied data positioning
US9218852B2 (en) * 2011-06-30 2015-12-22 Sandisk Technologies Inc. Smart bridge for memory core
EP2549482B1 (en) * 2011-07-22 2018-05-23 SanDisk Technologies LLC Apparatus, system and method for determining a configuration parameter for solid-state storage media
US9092349B2 (en) 2011-12-14 2015-07-28 Intel Corporation Storage of codeword portions
CN102567134B (zh) * 2012-01-06 2015-01-07 威盛电子股份有限公司 存储器模块的错误检查与校正系统以及方法
US10019353B2 (en) * 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9021337B1 (en) * 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US8949698B2 (en) 2012-09-27 2015-02-03 Intel Corporation Method, apparatus and system for handling data faults
US8812915B2 (en) * 2012-09-27 2014-08-19 Hewlett-Packard Development Company, L.P. Determining whether a right to use memory modules in a reliability mode has been acquired
US9577673B2 (en) * 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US9088303B2 (en) * 2013-02-28 2015-07-21 Micron Technology, Inc. Codewords that span pages of memory
US9136873B2 (en) * 2013-03-11 2015-09-15 Intel Corporation Reduced uncorrectable memory errors
US9164834B2 (en) * 2013-05-06 2015-10-20 Samsung Electronics Co., Ltd. Semiconductor memory devices, memory systems including the same and method of writing data in the same
WO2015047334A1 (en) * 2013-09-27 2015-04-02 Intel Corporation Error correction in non_volatile memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130179753A1 (en) * 2006-12-06 2013-07-11 Fusion-Io, Inc. Systems and methods for adaptive data storage
US20120198309A1 (en) * 2011-01-29 2012-08-02 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200046938A (ko) * 2018-10-26 2020-05-07 인하대학교 산학협력단 고속직렬인터페이스용 송수신 오류 정정기법이 포함된 오버헤드최소화 코딩 기법과 하드웨어 구현 방법
KR102109589B1 (ko) 2018-10-26 2020-05-12 인하대학교 산학협력단 고속직렬인터페이스용 송수신 오류 정정기법이 포함된 오버헤드최소화 코딩 기법과 하드웨어 구현 방법

Also Published As

Publication number Publication date
US20150220387A1 (en) 2015-08-06
US9619324B2 (en) 2017-04-11
KR20160033722A (ko) 2016-03-28
CN105706059B (zh) 2019-09-06
CN105706059A (zh) 2016-06-22
WO2015047334A1 (en) 2015-04-02

Similar Documents

Publication Publication Date Title
KR101767018B1 (ko) 비휘발성 메모리에서의 오류 정정
KR102242872B1 (ko) 비휘발성 메모리 내의 복구 알고리즘
KR101730306B1 (ko) 메모리에서의 오류 정정
CN106575346B (zh) 存储器中的加密完整性校验
JP7276742B2 (ja) メモリエラーを訂正するための共有パリティチェック
US9411683B2 (en) Error correction in memory
KR101669784B1 (ko) 메모리 대기 시간 관리
US10891185B2 (en) Error counters on a memory device
EP2953027A1 (en) Microcontroller and electronic control device using the same
US8566672B2 (en) Selective checkbit modification for error correction
US20070168768A1 (en) ECC coding for high speed implementation
US11726665B1 (en) Memory extension with error correction
JP6943890B2 (ja) 命令パケットのためのパリティ
US20160179611A1 (en) Low overhead error checking and correction apparatus and method
US8495452B2 (en) Handling corrupted background data in an out of order execution environment
US10579470B1 (en) Address failure detection for memory devices having inline storage configurations
US12066888B2 (en) Efficient security metadata encoding in error correcting code (ECC) memory without dedicated ECC bits
JP2010140132A (ja) メモリシステム及びメモリコントローラ
KR20170036038A (ko) 스토리지 노드들의 증거 기반 대체

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

Patent event date: 20160212

Patent event code: PA01051R01D

Comment text: International Patent Application

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20161104

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20170518

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20170803

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20170803

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20200730

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20210728

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20230801

Start annual number: 7

End annual number: 7