KR20220104030A - 저장 시스템 - Google Patents

저장 시스템 Download PDF

Info

Publication number
KR20220104030A
KR20220104030A KR1020227021307A KR20227021307A KR20220104030A KR 20220104030 A KR20220104030 A KR 20220104030A KR 1020227021307 A KR1020227021307 A KR 1020227021307A KR 20227021307 A KR20227021307 A KR 20227021307A KR 20220104030 A KR20220104030 A KR 20220104030A
Authority
KR
South Korea
Prior art keywords
byte
data
exclusive
signal
bit
Prior art date
Application number
KR1020227021307A
Other languages
English (en)
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 KR20220104030A publication Critical patent/KR20220104030A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

본 발명의 실시예는 저장 시스템을 제공하고, 상기 저장 시스템은, 기록 및 판독 동작 기간에 복수의 데이터를 기록하거나 판독하도록 구성되는 메모리 - 상기 복수의 데이터는 M개의 바이트로 나뉘고, 각각의 상기 바이트는 N개의 데이터를 구비함 - ; 및 인코딩 단계에서, 각각의 상기 바이트의 복수의 데이터에 기반하여 X개의 제1 체크 코드를 생성하고, 상기 인코딩 단계에서, 복수의 상기 바이트에서의 모든 데이터에 기반하여 Y개의 제2 체크 코드를 생성하도록 구성되는 인코딩 모듈을 포함하되, 상이한 상기 바이트에서 동일한 상기 제1 체크 코드에 대응되는 상기 복수의 데이터의 비트는 동일하며, 상기 X개의 제1 체크 코드는 각각의 상기 바이트에서의 상기 N개의 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이고, 상기 Y개의 제2 체크 코드는 상기 M개의 바이트에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이다. 본 발명의 실시예는 저장 시스템의 성능을 향상시키는데 도움을 준다.

Description

저장 시스템
관련 출원의 상호 참조
본 발명은 출원번호가 202110050737.4이고, 출원일자가 2021년 01월 14일인 중국특허출원을 기반으로 제출하고, 상기 중국특허출원의 우선권을 주장하는 바, 상기 중국특허출원의 모든 내용은 참조로서 본 발명에 인용된다.
본 발명의 실시예는 저장 시스템에 관한 것이지만 이에 한정되지 않는다.
반도체 스토리지는 비휘발성 스토리지와 휘발성 스토리지로 나눌 수 있다. 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)는 휘발성 스토리지로서 저장 밀도가 높고 판독 및 기록 속도가 빠른 장점이 있어 다양한 전자 시스템에 널리 사용된다.
DRAM의 공정 기술이 점점 고도화되고 저장 밀도가 높아짐에 따라 DRAM에 저장된 데이터에 오류가 발생할 수 있으며, 이는 DRAM의 성능에 심각한 영향을 미친다. 따라서, 일반적으로 DRAM에서는 오류 정정 코드(Error Checking and Correction or Error correction Coding, ECC) 기술을 사용하여 저장된 데이터의 오류를 검출하거나 정정한다.
본 발명의 실시예는 저장 시스템을 제공하고, 상기 저장 시스템은, 기록 및 판독 동작 기간에 복수의 데이터를 기록하거나 판독하도록 구성되는 메모리 - 상기 복수의 데이터는 M개의 바이트로 나뉘고, 각각의 상기 바이트는 N개의 데이터를 구비함 - ; 및 인코딩 단계에서, 각각의 상기 바이트에서의 복수의 데이터에 기반하여 X개의 제1 체크 코드를 생성하고, 상기 인코딩 단계에서, 복수의 상기 바이트에서의 모든 데이터에 기반하여 Y개의 제2 체크 코드를 생성하도록 구성되는 인코딩 모듈을 포함하되, 상이한 상기 바이트에서 동일한 상기 제1 체크 코드에 대응되는 상기 복수의 데이터의 비트는 동일하며, 상기 X개의 제1 체크 코드는 각각의 상기 바이트에서의 상기 N개의 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이고, 상기 Y개의 제2 체크 코드는 상기 M개의 바이트에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이며, 여기서 상기 M, N, X, Y는 모두 양의 자연수이다.
하나 이상의 실시예는 대응되는 도면의 이미지에 의해 예시적으로 설명되며, 이러한 예시적인 설명은 실시예를 한정하는 것이 아니며, 도면에서 동일한 참조번호를 갖는 구성요소는 유사한 구성요소를 나타내고, 특별한 언급이 없는 한 첨부된 도면의 이미지는 축척 제한을 구성하지 않는다.
도 1은 본 발명의 실시예에서 제공되는 저장 시스템의 기능 블록도 1이다.
도 2는 본 발명의 실시예에서 제공되는 복수의 데이터의 분류 모식도 및 제1 체크 코드와 제2 체크 코드 사이의 관계이다.
도 3은 바이트 0에 대응되는 제1 체크 코드의 확대 모식도이다.
도 4는 본 발명의 실시예에서 제공되는 메모리의 기능 블록도 2이다.
도 5는 모든 바이트에 대해 제2 인코딩 연산을 수행하는 원리 모식도이다.
도 6은 본 발명의 실시예에서 제공되는 저장 시스템에서의 비교 회로의 기능 블록도이다.
도 7은 비교 회로의 회로 구조 모식도이다.
도 8은 본 발명의 실시예에서 제공되는 저장 시스템 중 디코딩 모듈의 구체적인 구조 모식도이다.
도 9는 본 발명의 실시예에서 제공되는 디코딩 모듈 중 바이트 5에 대응되는 디코딩 유닛의 확대 구조 모식도이다.
본 발명의 실시예는, 인코딩 모듈은 인코딩 단계에서 바이트에 대한 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 체크 코드, 및 바이트 중 상이한 비트에 대한 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 체크 코드를 각각 획득함으로써, ECC 기술을 구현하는 동시에, 하드웨어 회로를 단순화하는데 도움을 주고, 저장 시스템의 전력 소비를 감소하며 인코딩 속도를 향상시키는 저장 시스템을 제공한다.
본 발명의 실시예의 목적, 기술적 해결수단 및 장점이 보다 명확해지도록 하기 위해, 아래 도면과 결부하여 본 발명의 각 실시예를 상세하게 설명한다. 그러나, 당업자는 본 발명의 실시예에서 독자가 본 발명을 더 잘 이해하도록 하기 위해 여러 기술적 세부 사항을 제공하였음을 이해할 수 있을 것이다. 그러나, 이러한 기술적 세부 사항 및 이하 각 실시예에 기반한 다양한 변화 및 수정이 이루어지지 않을 지라도 본 발명의 보호하고자 하는 기술적 해결수단을 구현할 수 있을 것이다.
도 1은 본 발명의 실시예에서 제공되는 저장 시스템의 기능 블록도 1이다.
도 1을 참조하면, 본 발명의 실시예에서, 저장 시스템은, 기록 및 판독 동작 기간에 복수의 데이터를 기록하거나 판독하도록 구성되되, 복수의 데이터는 M개의 바이트로 나뉘고, 각각의 바이트는 N개의 데이터를 구비하는 메모리(101); 인코딩 단계에서, 각각의 바이트에서의 복수의 데이터에 기반하여 X개의 제1 체크 코드를 생성하고, 인코딩 단계에서, 복수의 바이트에서의 모든 데이터에 기반하여 Y개의 제2 체크 코드를 생성하도록 구성되는 인코딩 모듈(102)를 포함하고, 여기서, 상이한 바이트에서 동일한 제1 체크 코드에 대응되는 복수의 데이터의 비트는 동일하며, X개의 제1 체크 코드는 각각의 바이트에서의 N개의 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이고, Y개의 제2 체크 코드는 M개의 바이트에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이며; 여기서, M, N, X, Y는 모두 양의 자연수이다.
본 발명의 실시예는 신규 저장 시스템을 제공하는 바, 데이터를 상이한 바이트로 분할하며, 제1 체크 코드는 각각의 바이트에서의 N개의 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이고, 제2 체크 코드는 M개의 바이트에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이며, 이러한 오류 검출 오류 정정의 인코딩 방식은 ECC를 구현할 뿐만 아니라, 보다 적은 하드웨어 회로를 사용하여 ECC를 구현할 수 있으므로, 저장 시스템의 전력 소비를 감소하고 ECC의 속도 및 결과를 최적화하는데 도움을 준다. 유의해야 할 것은, 본 발명의 실시예에서 언급되는 제1 체크 코드는 각각의 바이트에서의 N개의 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이고, 제2 체크 코드는 M개의 바이트에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이며, 이는, 모든 제1 체크 코드 및 제2 체크 코드가 공동으로 M개의 바이트의 모든 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하는데 사용되고, 제2 체크 코드는 M개의 바이트 중 오류가 발생한 데이터가 위치한 바이트를 포지셔닝하기 위한 것이며, 제1 체크 코드는 상기 바이트에서 오류가 발생한 데이터가 위치한 비트를 포지셔닝하는 것으로 이해해야 한다.
이하 도면을 참조하여 본 발명의 실시예에서 제공되는 저장 시스템을 상세히 설명할 것이다.
본 발명의 실시예에서, 메모리(101)는 DRAM이고, 예를 들어 DDR4, LPDDR4, DDR5 또는 LPDDR5일 수 있다. 본 발명의 일부 실시예에서, 메모리는 NAND, NOR, FeRAM, PcRAM 등 비휘발성 메모리와 같은 다른 유형의 메모리일 수도 있다.
일반적으로, 바이트는 데이터 처리의 기본 단위이다. 바이트 단위로 정보를 저장하고 해석하며, 1개의 바이트는 8개의 이진수로 이루어지고, 즉 1개의 바이트는 8개의 비트와 같으며, 8 비트에서 각각의 비트는 상응한 비트를 구비하고, 즉 1Byte=8bit이다. 이에 기반하여, 본 발명의 실시예에서, N이 8이므로, 각각의 바이트에서의 비트가 최대화되어, 인코딩 및 복호화 회로에 필요한 회로의 이용률을 향상시키는데 도움을 준다. 이해할 수 있는 것은, 본 발명의 일부 실시예에서, N은 다른 적합한 양의 정수일 수도 있다.
1회 기록 및 판독 동작 기간에 메모리(101)에 의해 전송된 데이터를 128 비트(즉 128 bit)로 예로 들면, M은 16이고, N은 8이다. 설명해야 할 것은, 본 발명의 일부 실시예에서, 기록 및 판독 동작 기간에 메모리에 의해 전송된 데이터의 비트 수의 상이함에 따라, M*N이 기록 및 판독 동작 기간에 전송된 데이터의 비트 수와 동일하기만 하면 M은 다른 적합한 양의 정수일 수도 있다.
도 2는 본 발명의 실시예에서 제공되는 복수의 데이터의 분류 모식도 및 제1 체크 코드와 제2 체크 코드 사이의 관계이다. N개의 데이터 중 각각의 데이터의 비트는 상이하다. 본 발명의 실시예에서, 도 2에 도시된 바와 같이, 각각의 바이트에 있어서, N개의 데이터는 자연수에 따라 증가된 0번째 비트 내지 7번째 비트를 구비하고; 모든 바이트에 있어서, M개의 바이트는 0번째부터 15번째까지 자연수에 따라 증가된 16개의 바이트로 나뉜다. 또한, 상이한 바이트에 있어서, 바이트에 구비된 N개의 데이터는 모두 0번째부터 7번째까지 증가되는 8개의 비트를 구비한다.
설명해야 할 것은, 도 2에서 실질적으로 같은 행이여야 하는 테이블은 위치의 제한으로 인해 3개의 테이블로 분할되고, 실질적으로 하나의 완전한 테이블이다. 도시의 편의를 위해, 도 3은 바이트 0에 대응되는 제1 체크 코드의 확대 모식도이다.
본 발명의 실시예에서, 인코딩 모듈(102)은 패리티 체크(Parity Check) 원리를 이용하여 제1 체크 코드 및 제2 체크 코드를 생성하고, 상응하게, 제1 체크 코드 및 제2 체크 코드는 모두 패리티 체크 코드이다. 본 발명의 실시예에서, 저장 시스템은 메모리칩이고, 상응한 메모리(101) 및 인코딩 모듈(102)은 동일한 메모리칩에 집적된다. 이해할 수 있는 것은, 본 발명의 일부 실시예에서, 메모리는 메모리칩일 수 있고, 저장 시스템은, 메모리를 제어하도록 구성되는 컨트롤러를 더 포함하며, 인코딩 모듈은 또한 컨트롤러에 집적된다. 설명해야 할 것은, 본 발명의 실시예는 메모리 및 인코딩 모듈이 동일한 칩에 집적되거나 상이한 칩에 설치되는 것을 제한하지 않는다.
도 4는 본 발명의 실시예에서 제공되는 메모리의 기능 블록도 2이다.
도 4를 참조하면, 인코딩 모듈(102)은, X개의 제1 체크 코드를 생성하도록 구성되는 제1 인코딩 유닛(112)을 포함하되, X개의 제1 체크 코드는 X비트의 제1 이진수를 구성하며; 여기서, 2X≥N이고, 각각의 제1 체크 코드는 모든 바이트의 복수의 데이터로 제1 인코딩 연산하여 획득되고, 각각의 제1 체크 코드에 대응되는 복수의 데이터는 바이트 중 상이한 비트 조합에 대응된다. 다시 말하면, 각각의 제1 체크 코드는 각각의 바이트에서의 복수의 비트의 데이터를 선택하여 제1 인코딩 연산하여 획득되고, 동일한 제1 체크 코드에 있어서, 모든 바이트 중 선택된 비트 조합은 동일하며, 상이한 제1 체크 코드에 있어서, N개의 데이터 중 선택된 비트 조합은 상이하다.
여기서, N개의 데이터는 자연수에 따라 증가되는 0번째 비트 내지 N-1번째 비트를 구비하고, 선택된 각각의 비트에 대해 제1 인코딩 연산을 수행하여 획득된 제1 체크 코드는 완전히 동일한 것은 아니다. 본 발명의 실시예에서, 상이한 제1 체크 코드는 모든 바이트 중 상이한 데이터에 기반하여 제1 인코딩 연산을 수행하여 획득되므로, 상이한 제1 체크 코드에 있어서, 제1 체크 코드의 결과에 영향을 미치는 비트는 상이하다. 아울러, 2X≥N이므로, 선택된 각각의 비트에 대해 제1 인코딩 연산을 수행하여 획득된 제1 체크 코드는 완전히 동일한 것이 아닐 수 있어, 분석을 통해, 오류가 발생한 데이터에 대응되는 비트를 획득할 수 있다.
본 발명의 실시예에서, X가 3이므로, 상이한 비트의 데이터의 오류가 모두 표시될 수 있음을 만족할 뿐만 아니라, 제1 인코딩 유닛(112)의 하드웨어 회로의 복잡도를 감소할 수도 있다.
본 발명의 일부 실시예에서, 3개의 제1 체크 코드는 낮은 비트에서 높은 비트로의 배열 순서에 따라 0번째 비트의 제1 체크 코드, 1번째 비트의 제1 체크 코드 및 2번째 비트의 제1 체크 코드를 포함하고, N개의 데이터는 자연수에 따라 증가된 0번째 비트 내지 N-1번째 비트를 구비한다. 예를 들면, 0번째 비트의 경우, 임의의 제1 체크 코드에 대응되는 제1 인코딩 연산에 참여하지 않고; 1번째 비트의 경우, 0번째 비트의 제1 체크 코드에 대응되는 제1 인코딩 연산에 참여하며; 2번째 비트의 경우, 1번째 비트의 제1 체크 코드에 대응되는 제1 인코딩 연산에 참여하고; 3번째 비트의 경우, 0번째 비트 및 1번째 비트의 제1 체크 코드에 대응되는 제1 인코딩 연산에 참여하며; 4번째 비트의 경우, 2번째 비트의 제1 체크 코드에 대응되는 제1 인코딩 연산에 참여하고; 5번째 비트의 경우, 0번째 비트 및 2번째 비트의 제1 체크 코드에 대응되는 제1 인코딩 연산에 참여하며; 6번째 비트의 경우, 1번째 비트 및 2번째 비트의 제1 체크 코드에 대응되는 제1 인코딩 연산에 참여하고; 7번째 비트의 경우, 0번째, 1번째 및 2번째 비트의 제1 체크 코드에 대응되는 제1 인코딩 연산에 참여한다. 이해해야 할 것은, 선택된 각각의 비트에 대해 제1 인코딩 연산을 수행하여 획득된 제1 체크 코드가 완전히 동일한 것이 아님을 만족하는 한, 당업자는 필요에 따라 제1 체크 코드의 수, 및 다른 인코딩 연산 관계를 설정할 수 있다.
본 발명의 실시예에서, 제1 인코딩 연산은 배타적 논리합이며; 상응하게, 제1 인코딩 유닛(112)은, X비트의 제1 이진수에서, 최하위 비트에 위치하는 제1 체크 코드가 모든 바이트 중 1번째 비트, 3번째 비트, 5번째 비트 및 7번째 비트의 데이터의 배타적 논리합이고, 최상위 비트에 위치하는 제1 체크 코드가 모든 바이트 중 4번째 비트, 5번째 비트, 6번째 비트 및 7번째 비트의 데이터의 배타적 논리합이며, 중간 비트에 위치하는 제1 체크 코드가 모든 바이트 중 2번째 비트, 3번째 비트, 6번째 비트 및 7번째 비트의 데이터의 배타적 논리합이도록 구성된다.
설명해야 할 것은, 본 발명의 일부 실시예에서, 제1 인코딩 연산은 또한 배타적 부정 논리합일 수 있으며; 상응하게, 제1 인코딩 유닛은, X비트의 이진수에서, 최하위 비트에 위치하는 제1 체크 코드가 모든 바이트 중 1번째 비트, 3번째 비트, 5번째 비트 및 7번째 비트의 데이터의 배타적 부정 논리합이고, 최상위 비트에 위치하는 제1 체크 코드가 모든 바이트 중 4번째 비트, 5번째 비트, 6번째 비트 및 7번째 비트의 데이터의 배타적 부정 논리합이며, 중간 비트에 위치하는 제1 체크 코드가 모든 바이트 중 2번째 비트, 3번째 비트, 6번째 비트 및 7번째 비트의 데이터의 배타적 부정 논리합이도록 구성된다.
이하 도 2 및 도 3을 참조하여 제1 체크 코드의 생성 원리를 설명할 것이다.
도 2 및 도 3에 도시된 바와 같이, “×”는 현재 이 행의 인코딩 연산에 참여하였음을 나타내고, 즉 배타적 부정 논리합 또는 배타적 논리합을 수행함을 나타내며; 128 비트의 데이터는 0번째부터 15번째까지 총 16개의 바이트에 나뉘어지고, 각각의 바이트에는 8개의 비트가 있다. p10, p11 및 p12는 3개의 제1 체크 코드를 나타내고; p13, p14, p15, p16 및 p17은 5개의 제2 체크 코드를 나타내며; pc0 내지 pc7은 인코딩 연산 수행 시 p10 내지 p17에 대응되게 사용되는 8개의 연산식을 나타낸다. 각 행에서, “×”로 표시된 모든 위치는 이 열에 대응되는 데이터가 이 연산식에서 배타적 논리합 또는 배타적 부정 논리합에 참여해야 함을 나타낸다. 제1 체크 코드 및 제2 체크 코드는 pb에 대응된다.
인코딩 단계의 제1 인코딩 연산 또는 제2 인코딩 연산 시, pc0 내지 pc7 이 8개를 이용하여 제1 인코딩 연산 또는 제2 인코딩 연산을 수행하여, 연산 결과를 p10 내지 p17에 각각 저장하고, p10 내지 p17은 제1 인코딩 연산 또는 제2 인코딩 연산에 참여하지 않으며; 디코딩 단계에서, 각 행에 대응되는 연산식은 변하지 않고, 저장된 p10 내지 p17은 연산에 참여해야 하므로, 도 2의 테이블에서 p10 내지 p17에 대응되게 “×”로 표시되는데, 이점에 대해서는 후속 상세히 설명할 것이다.
본 발명의 실시예에서, 인코딩 단계에서:, 각각의 바이트에 있어서, 이 바이트에서의 1번째 비트, 3번째 비트, 5번째 비트, 7번째 비트의 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행한 다음, 16개의 바이트의 모든 배타적 논리합 결과 또는 배타적 부정 논리합 결과에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하는데, 즉 pc0 연산식이고, 연산 결과를 p10에 제공한다. 각각의 바이트에 있어서, 이 바이트에서의 2번째 비트, 3번째 비트, 6번째 비트, 7번째 비트의 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행한 다음, 16개의 바이트의 모든 배타적 논리합 결과 또는 배타적 부정 논리합 결과에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하는데, 즉 pc1 연산식이고, 연산 결과를 p11에 제공한다. 각각의 바이트에 있어서, 이 바이트에서의 4번째 비트, 5번째 비트, 6번째 비트, 7번째 비트의 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행한 다음, 16개의 바이트의 모든 배타적 논리합 결과 또는 배타적 부정 논리합 결과에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하는데, 즉 pc2 연산식이고, 연산 결과를 p12에 제공한다.
p10, p11 및 p12는 제1 이진수를 구성하고, p10은 최하위 비트이며 p12는 최상위 비트이다. 메모리의 복수의 데이터에서 하나의 비트 데이터에만 오류가 발생한다는 전제 하에, 아래와 같은 것을 어렵지 않게 발견할 수 있다.
0번째 비트의 데이터에 오류가 발생할 경우, 0번째 비트가 pc0, pc1 및 pc2의 3개의 연산식에 참여하지 않으므로, 제1 체크 코드 p10, p11 및 p12는 모두 영향을 받지 않는다.
1번째 비트의 데이터에 오류가 발생할 경우, 1번째 비트가 pc0 연산식에 참여하고 pc1 및 pc2 이 2개의 연산식에 참여하지 않으므로, 제1 체크 코드 p10은 영향을 받고, 제1 체크 코드 p11 및 p12는 영향을 받지 않는다.
2번째 비트의 데이터에 오류가 발생할 경우, 2번째 비트가 pc1 연산식에 참여하므로, 제1 체크 코드 p10 및 p12는 영향을 받지 않고, 제1 체크 코드 p11은 영향을 받는다.
3번째 비트의 데이터에 오류가 발생할 경우, 3번째 비트가 pc0 및 pc1의 2개의 연산식에 참여하므로, 제1 체크 코드 p10 및 p11은 모두 영향을 받고, 제1 체크 코드 p12는 영향을 받지 않는다.
이와 같이 유추하면, 7번째 비트의 데이터에 오류가 발생할 경우, 7번째 비트가 pc0, pc1 및 pc2의 3개의 연산식에 참여하므로, 제1 체크 코드 p10, p11 및 p12는 모두 영향을 받는다.
유의해야 할 것은, 여기에서 언급된 특정 데이터에 오류가 발생한 후 특정 제1 체크 코드가 영향을 받는다는 것은, 특정 데이터에 오류가 발생한 후, 제1 인코딩 연산을 재수행하여 획득된 상기 특정 제1 체크 코드인 경우, 데이터에 오류가 발생하기 전에 형성된 상기 제1 체크 코드와 상이하다는 것을 의미한다.
이해할 수 있는 것은, 각각의 연산식에 있어서, 상이한 바이트에서의 제1 인코딩 연산에 참여하는 비트는 동일하므로, 제1 체크 코드를 통해 오류가 발생한 데이트에 대응되는 비트를 획득할 수 있지만, 오류가 발생한 데이터에 대응되는 상기 비트가 속한 바이트를 검출할 수 없다. 따라서, 제2 체크 코드를 통해 오류가 발생한 상기 비트가 속한 바이트를 획득해야 한다.
상응하게, 본 발명의 실시예에서, 인코딩 모듈(102)은, Y개의 제2 체크 코드를 생성하도록 구성되는 제2 인코딩 유닛(122)을 더 포함하되, Y개의 제2 체크 코드는 Y비트의 제2 이진수를 구성하며, 여기서, 2Y≥M이고, 각각의 제2 체크 코드는 복수의 바이트로 제2 인코딩 연산하여 획득된다.
2Y≥M이므로, 각각의 바이트가 제2 인코딩 연산에 참여하여 획득된 제2 체크 코드가 완전히 동일한 것이 아니도록 보장한다. 본 발명의 실시예에서, 상이한 제2 체크 코드는 상이한 복수의 바이트에 기반하여 제2 인코딩 연산을 수행하여 획득되므로, 상이한 제2 체크 코드에 있어서, 제2 체크 코드의 결과에 영향을 미치는 바이트는 상이하므로, 종합 분석을 통해 어느 바이트에서의 데이터에 오류가 발생하였는지를 획득하기 편리하다. 그 다음 바이트 중 어느 비트에 오류가 발생하였는지를 결부하여, 최종적으로 어느 바이트에서의 어느 비트의 데이터에 오류가 발생하였는지를 판단한다. 유의해야 할 것은, 여기에서 언급된 제2 체크 코드의 결과에 영향을 미친다에서 “영향”은 전술한 “영향”의 의미와 동일하다.
본 발명의 실시예에서, Y가 5이므로, 상이한 바이트의 데이터의 오류가 모두 표시될 수 있음을 만족할 뿐만 아니라, 제2 인코딩 유닛(122)의 하드웨어 회로의 복잡도를 감소할 수도 있다.
본 발명의 실시예에서, 제2 인코딩 연산은 배타적 논리합이며; 제2 인코딩 유닛(122)은, 선택된 2개의 바이트의 모든 데이터에 대해 배타적 논리합을 수행하고, 복수의 제1 연산 결과를 저장하도록 구성되되, 각각의 제1 연산 결과는 선택된 2개의 바이트의 배타적 논리합 결과인 제1 레벨 연산 유닛; 및 적어도 2개의 제1 연산 결과에 대해 배타적 논리합을 수행하고, 제2 체크 코드를 생성하며, 상이한 인코딩 수요에 기반하여 Y개의 제2 체크 코드를 생성하도록 구성되는 제2 레벨 연산 유닛을 포함한다.
본 발명의 일부 실시예에서, 제2 인코딩 연산은 배타적 부정 논리합일 수도 있으며, 상응하게, 제2 인코딩 유닛은, 선택된 2개의 바이트의 모든 데이터에 대해 배타적 부정 논리합을 수행하고, 복수의 제1 연산 결과를 저장하도록 구성되되, 각각의 제1 연산 결과는 선택된 2개의 바이트의 배타적 부정 논리합 결과인 제1 레벨 연산 유닛; 및 적어도 2개의 제1 연산 결과에 대해 배타적 부정 논리합을 수행하고, 상기 제2 체크 코드를 생성하며, 상이한 인코딩 수요에 기반하여 Y개의 제2 체크 코드를 생성하도록 구성되는 제2 레벨 연산 유닛을 포함한다.
본 발명의 실시예에서, 제2 인코딩 유닛(122)에 대한 특수 설계를 통해, 제2 레벨 연산 유닛은 제1 레벨 연산 유닛의 제1 연산 결과를 반복 사용하여, 제2 인코딩 유닛(122)이 보다 적은 하드웨어 회로에 의해 구현되도록 할 수 있으므로, 저장 시스템의 전력 소비를 감소할 수 있다.
상응하게, 제1 레벨 연산 유닛은, 동일한 바이트의 모든 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하고, 제2 연산 결과를 저장하도록 구성되는 제1 연산 서브 유닛; 및 2개의 제2 연산 결과에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하고, 제1 연산 결과를 획득하도록 구성되는 제2 연산 서브 유닛을 포함한다.
본 발명의 실시예에서, 도 5에 도시된 바와 같이, 인코딩 단계에서, 각각의 바이트에 있어서, 이 바이트에서의 모든 8개의 비트의 데이터에 대해 배타적 논리합을 수행하여, 이 바이트의 배타적 논리합 결과를 획득한 다음; 총 16개의 바이트의 16개의 배타적 논리합 결과를 pc3 내지 pc7 인 5개의 연산식에 따라 제2 인코딩 연산을 수행하는 바, 즉 각 행의 테이블에서 “×”로 표시된 데이터는 모두 연산에 참여하고, 상응한 제2 체크 코드 pc13 내지 pc17을 획득한다. 이해할 수 있는 것은, 인코딩 단계에서 제2 체크 코드 pc13 내지 pc17은 인코딩 연산에 참여하지 않고, 후속적인 복호화 단계(또는 디코딩 단계로 지칭됨)에서 제2 체크 코드 pc13 내지 pc17도 연산에 참여해야 하므로, 도 2에서 제2 체크 코드 pc13 내지 pc17도 상응하게 "Х"로 표시되고, 이점에 대해서는 후속 상세히 설명할 것이며, 여기서 반복 설명하지 않는다.
본 발명의 실시예에서, M개의 바이트는 자연수에 따라 증가된 0번째 바이트 내지 15번째 바이트로 나뉘고; Y개의 제2 체크 코드는 자연수에 따라 증가된 3번째 제2 체크 코드 내지 7번째 제2 체크 코드로 나뉘며; 5개의 제2 체크 코드의 획득 방식은 각각 아래와 같다.
3번째 제2 체크 코드(도 2의 p13에 대응)는 0번째 바이트, 2번째 바이트, 3번째 바이트, 4번째 바이트, 5번째 바이트, 6번째 바이트 및 8번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이고; 4번째 제2 체크 코드(도 2의 p14에 대응)는 0번째 바이트, 1번째 바이트, 4번째 바이트, 5번째 바이트, 7번째 바이트, 9번째 바이트, 10번째 바이트 및 12번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이며; 5번째 제2 체크 코드(도 2의 p15에 대응)는 1번째 바이트, 2번째 바이트, 4번째 바이트, 6번째 바이트, 9번째 바이트, 11번째 바이트, 13번째 바이트 및 14번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이고; 6번째 제2 체크 코드(도 2의 p16에 대응)는 3번째 바이트, 5번째 바이트, 6번째 바이트, 7번째 바이트, 10번째 바이트, 11번째 바이트, 14번째 바이트 및 15번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이며; 7번째 제2 체크 코드(도 2의 p17에 대응)는 8번째 바이트, 9번째 바이트, 10번째 바이트, 11번째 바이트, 12번째 바이트, 13번째 바이트 및 15번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이다.
설명해야 할 것은, 각각의 제2 체크 코드는 모두 배타적 논리합 연산에 의해 획득되고; 또는, 각각의 제2 체크 코드는 모두 배타적 부정 논리합 연산에 의해 획득된다.
제2 인코딩 유닛(122)에 대응되는 회로는 다음과 같이 설계된다.
바이트 0 및 바이트 4의 배타적 논리합 결과에 대해 배타적 논리합을 수행하여, 결과 0_4를 얻고; 바이트 2 및 바이트 6의 결과에 대해 배타적 논리합을 수행하여, 결과 2_6을 얻으며; 바이트3 및 바이트 5의 결과에 대해 배타적 논리합을 수행하여, 결과 3_5를 얻고; 바이트 1 및 바이트 5의 결과에 대해 배타적 논리합을 수행하여, 결과 1_5를 얻으며; 바이트 1 및 바이트 4의 결과에 대해 배타적 논리합을 수행하여, 결과 1_4를 얻는다.
도 5에 도시된 바와 같이, 도 5는 모든 바이트에 대해 제2 인코딩 연산을 수행하는 원리 모식도이고, 바이트 0 내지 바이트 7에 비해, 동일한 회로 세트를 사용하여 바이트 8 내지 바이트 15에 대한 연산을 완료할 수 있으며, 즉 입력만 변경하면, 바이트 8 내지 바이트 15에 대해 동일한 연산을 수행하여, 결과 9_13, 결과 10_12, 결과 11_15, 결과 10_14, 결과 11_14를 얻을 수 있음을 어렵지 않게 발견할 수 있다. 또한, 동일한 회로를 사용할 수 있는 이러한 연산 외에도, 바이트 6 및 바이트 7에 대해 배타적 논리합을 수행하여, 결과 6_7을 얻고, 바이트 7 및 바이트9의 결과에 대해 배타적 논리합을 수행하여, 결과 7_9를 얻어야 한다.
pc3 내지 pc7의 연산식 요구사항에 따라 아래와 같은 배타적 논리합을 수행하는 바, 예를 들어 연산식 pc3에 따라, 결과 0_4, 결과 2_6, 결과 3_5 및 바이트 8의 배타적 논리합 결과에 대해 배타적 논리합을 수행하여, 제2 체크 코드 p13을 얻고; 연산식 pc4에 따라, 결과 0_4, 결과 1_5, 결과 7_9 및 결과 10_12에 대해 배타적 논리합을 수행하여, 제2 체크 코드 p14를 얻으며; 제2 체크 코드 p15, p16 및 p17의 획득 방식에 대해서는 일일이 설명하지 않는다. 이해할 수 있는 것은, 결과 0_4, 결과 2_6은 모두 반복 사용될 수 있으므로 회로 자원을 절약할 수 있다.
또한, 본 발명의 실시예에서, 제2 인코딩 유닛(122)은 또한, 각각의 바이트에 대해, 제2 인코딩 연산에 참여한 횟수가 a이고, a가 (Y-1)/2≤a≤(Y+1)/2를 만족하며, a가 양의 정수이도록 구성된다. 이러한 설정을 통해, 후속적인 디코딩 단계에 필요한 디코딩 회로에서, 회로의 경로 및 면적이 감소될 수 있고, 디코딩 속도의 향상에도 도움을 준다.
상술 설명을 보다시피, 제1 체크 코드의 획득이든 제2 체크 코드의 획득이든, 모두 배타적 논리합 또는 배타적 부정 논리합을 사용하므로, 저장 시스템은 배타적 부정 논리합 또는 배타적 논리합을 구현하도록 구성되는 비교 회로를 더 포함한다.
도 6은 본 발명의 실시예에서 제공되는 저장 시스템에서의 비교 회로의 기능 블록도이다. 본 발명의 실시예에서, 인코딩 모듈(102)은, 임의의 2개의 바이트의 모든 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하고, 또는, 복수의 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하도록 구성되는 비교 회로(미도시)를 더 포함한다.
도 6을 참조하면, 비교 회로는, 전원 신호(Vcc)에 연결되고, 제1 신호(B) 및 제2 신호(BN)에 기반하여 전원 신호(Vcc)를 출력하도록 제어하되, 제1 신호(B)와 제2 신호(BN)는 반전되는 제1 공유 유닛(21); 접지 신호(Vss)에 연결되고, 제1 신호(B) 및 제2 신호(BN)에 기반하여 접지 신호(Vss)를 출력하도록 제어하는 제2 공유 유닛(22); 제1 공유 유닛(21)과 제2 공유 유닛(22) 사이에 연결되고, 제3 신호(A) 및 제4 신호(AN)를 수신하며, 제1 연산 신호(Y)를 출력하도록 구성되되, 제3 신호(A)와 제4 신호(AN)는 반전되고, 제1 연산 신호(Y)는 제1 신호(B)와 제3 신호(A)의 배타적 논리합인 제1 논리 유닛(23); 및 제1 공유 유닛(21)과 제2 공유 유닛(22) 사이에 연결되고, 제3 신호(A) 및 제4 신호(AN)를 수신하며 제2 연산 신호(YN)를 출력하도록 구성되는 제2 논리 유닛(24)을 포함하고, 제2 연산 신호(YN)는 제1 신호(B)와 제3 신호(A)의 배타적 부정 논리합이다.
도 7은 비교 회로의 회로 구조 모식도이다.
본 발명의 실시예에서, 도 7을 참조하면, 제1 공유 유닛(21)은, 게이트가 제1 신호(B)를 수신하고, 소스가 전원 신호(Vcc)에 연결되는 제0 PMOS 트랜지스터(MP0); 및 게이트가 제2 신호(BN)를 수신하고, 소스가 전원 신호(Vcc)에 연결되는 제7 PMOS 트랜지스터(MP7)를 포함한다. 제1 신호(B)가 하이 레벨이고, 제2 신호(BN)가 로우 레벨일 경우, 제0 PMOS 트랜지스터(MP0)는 차단되고 제7 PMOS 트랜지스터(MP7)는 도통되며; 제1 신호(B)가 로우 레벨이고, 제2 신호(BN)가 하이 레벨일 경우, 제0 PMOS 트랜지스터(MP0)는 도통되고 제7 PMOS 트랜지스터(MP7)는 차단된다.
제2 공유 유닛(22)은, 게이트가 제1 신호(B)를 수신하고, 소스가 접지 신호(Vss)에 연결되는 제0 NMOS 트랜지스터(MN0); 게이트가 제2 신호(BN)를 수신하고, 소스가 접지 신호(Vss)에 연결되는 제7 NMOS 트랜지스터(MN7)를 포함한다. 제1 신호(B)가 하이 레벨이고, 제2 신호(BN)가 로우 레벨일 경우, 제0 NMOS 트랜지스터(MN0)는 도통되고 제7 NMOS 트랜지스터(MN7)는 차단되며; 제1 신호(B)가 로우 레벨이고, 제2 신호(BN)가 하이 레벨일 경우, 제0 NMOS 트랜지스터(MN0)는 차단되고 제7 NMOS 트랜지스터(MN7)는 도통된다.
본 발명의 실시예에서, 제1 논리 유닛(23)은, 게이트가 제4 신호(AN)를 수신하고, 소스가 제0 PMOS 트랜지스터(MP0)의 드레인에 연결되는 제1 PMOS 트랜지스터(MP1); 게이트가 제3 신호(A)를 수신하고, 드레인이 제1 PMOS 트랜지스터(MP1)의 드레인에 연결되며, 소스가 제0 NMOS 트랜지스터(MN0)의 드레인에 연결되는 제1 NMOS 트랜지스터(MN1); 게이트가 제3 신호(A)를 수신하고, 소스가 제7 PMOS 트랜지스터(MP7)의 드레인에 연결되는 제4 PMOS 트랜지스터(MP4); 및 게이트가 제4 신호(AN)를 수신하고, 드레인이 제4 PMOS 트랜지스터(MP4)의 드레인에 연결되며, 소스가 제7 NMOS 트랜지스터(MN7)의 드레인에 연결되는 제4 NMOS 트랜지스터(MN4)를 포함한다.
제2 논리 유닛(24)은, 게이트가 제3 신호(A)를 수신하고, 소스가 제0 PMOS 트랜지스터(MP0)의 드레인에 연결되는 제2 PMOS 트랜지스터(MP2); 게이트가 제4 신호(AN)를 수신하고, 드레인이 제2 PMOS 트랜지스터(MP2)의 드레인에 연결되며, 소스가 제0 NMOS 트랜지스터(MN0)의 드레인에 연결되는 제2 NMOS 트랜지스터(MN2); 게이트가 제4 신호(AN)를 수신하고, 소스가 제7 PMOS 트랜지스터(MP7)의 드레인에 연결되는 제5 PMOS 트랜지스터(MP5); 게이트가 제3 신호(A)를 수신하고, 드레인이 제5 PMOS 트랜지스터(MP5)의 드레인에 연결되며, 소스가 제7 NMOS 트랜지스터(MN7)의 드레인에 연결되는 제5 NMOS 트랜지스터(MN5)를 포함한다.
또한, 제1 PMOS 트랜지스터(MP1)의 드레인은 제4 PMOS 트랜지스터(MP4)의 드레인에 연결되어, 제1 연산 신호(Y)를 출력하고; 제2 PMOS 트랜지스터(MP2)의 드레인은 제5 PMOS 트랜지스터(MP5)의 드레인에 연결되어, 제2 연산 신호(YN)를 출력한다.
본 발명의 실시예에서 제공되는 비교 회로에서, 배타적 논리합 논리와 배타적 부정 논리합 논리는 4개의 MOS 트랜지스터를 공유하며, MOS 트랜지스터를 공유하므로 면적을 절약할 수 있고, 공유 MOS 트랜지스터 사이즈를 더 크게 할 수 있어, 구동 능력을 향상시킨다.
도 1 및 도 2를 참조하면, 본 발명의 실시예에서, 인코딩 모듈(102)은 또한, 디코딩 단계에서, 전송된 복수의 데이터, X개의 제1 체크 코드 및 Y개의 제2 체크 코드를 수신하고, 각각의 바이트의 복수의 데이터 및 X개의 제1 체크 코드에 기반하여 제3 인코딩 연산을 수행하여 X개의 제1 연산 코드를 생성하며, 복수의 바이트에서의 모든 데이터 및 Y개의 제2 체크 코드에 기반하여 제4 인코딩 연산을 수행하여 Y개의 제2 연산 코드를 생성하도록 구성된다.
본 발명의 실시예에서, 연산에 참여하는 제3 인코딩 연산과 제1 인코딩 연산의 데이터의 비트는 동일하고, 구별점은 제3 인코딩 연산에서 제1 체크 코드도 연산에 참여한다는 것이며; 연산에 참여하는 제4 인코딩 연산과 제2 인코딩 연산의 바이트는 동일하고, 구별점은 제4 인코딩 연산에서 제2 체크 코드도 연산에 참여한다는 것이다.
설명해야 할 것은, 인코딩 단계 및 디코딩 단계의 인코딩 연산 기능은 동일한 기능 유닛에 집적되어 구현될 수 있고, 다른 예에서, 인코딩 단계 및 디코딩 단계의 인코딩 연산 기능은 상이한 기능 유닛을 이용하여 구현될 수 있다.
일반적으로, 디코딩 단계는 판독 동작 시 데이터를 판독하는 과정에서 발생된다. 본 발명의 실시예에서, 도 2를 참조하고 전술한 제1 체크 코드 및 제2 체크 코드의 생성 원리에 대한 설명을 결부하면, 디코딩 단계의 인코딩 연산에서 전술한 인코딩 단계의 인코딩 연산의 기초 위에, 제1 체크 코드 p10, p11 또는 p12에 대해 각각 배타적 논리합을 수행하여, 제1 연산 코드 p20, p21 또는 p22를 상응하게 획득한다. 즉, 제1 연산 코드 p20에 있어서, pc0 연산식을 이용하여, 수신된 각각의 바이트에서의 상이한 비트, 및 제1 체크 코드 p10에 대해 제3 인코딩 연산을 수행하여, 제1 연산 코드 p20을 획득하고; pc1 연산식을 이용하여, 수신된 각각의 바이트에서의 상이한 비트, 및 제1 체크 코드 p11에 대해 제3 인코딩 연산을 수행하여, 제1 연산 코드 p21을 획득하며; pc2 연산식을 이용하여, 수신된 각각의 바이트에서의 상이한 비트, 및 제1 체크 코드 p12에 대해 제3 인코딩 연산을 수행하여, 제1 연산 코드 p22를 획득한다. 제1 연산 코드 및 제2 연산 코드는 도 2의 PB에 대응된다.
마찬가지로, 제2 체크 코드 및 제2 연산 코드에 있어서, 디코딩 단계의 인코딩 연산에서, 전술한 인코딩 단계의 인코딩 연산의 기초 위에, 제2 체크 코드 p13, p14, p15, p16 또는 p17에 대해 각각 배타적 논리합을 수행하여, 제2 연산 코드 p23, p24, p25, p26 또는 p27을 상응하게 획득한다.
p20, p21 및 p22는 제3 이진수를 구성하고, p20은 최하위 비트이며 p22는 최상위 비트이다. 메모리의 복수의 데이터에서 하나의 비트 데이터에만 오류가 발생한다는 전제 하에, 제3 인코딩 연산이 배타적 논리합일 경우(본 발명의 일부 실시예에서 배타적 부정 논리합일 수도 있음), 아래와 같은 경우를 어렵지 않게 발견할 수 있다.
0번째 비트의 데이터에 오류가 발생할 경우, 0번째 비트가 pc0, pc1 및 pc2 인 3개의 연산식에 참여하지 않으므로, 제1 연산 코드 p20, p21 및 p22는 모두 0이고, 제3 이진수 000에 대응되는 10진수는 0이므로, 0번째 비트의 데이터에 오류가 발생하였음을 검출한다.
1번째 비트의 데이터에 오류가 발생할 경우, 제1 비트가 pc0 연산식에 참여하고 pc1 및 pc2인 2개의 연산식에 참여하지 않으므로, 제1 연산 코드 p20은 1이고, 제1 연산 코드 p21 및 p22는 0이며, 제3 이진수 001에 대응되는 10진수는 1이므로, 1번째 비트의 데이터에 오류가 발생하였음을 검출한다.
2번째 비트의 데이터에 오류가 발생할 경우, 2번째 비트가 pc1 연산식에 참여하므로, 제1 연산 코드 p20은 0이고, 제1 연산 코드 p21은 1이며, p12는 0이고, 제3 이진수 010에 대응되는 10진수는 2이므로, 2번째 비트의 데이터에 오류가 발생하였음을 검출한다.
3번째 비트의 데이터에 오류가 발생할 경우, 3번째 비트가 pc0 및 pc1인 2개의 연산식에 참여하므로, 제1 연산 코드 p20 및 p21은 모두 1이고, p12는 0이며; 제3 이진수 011에 대응되는 10진수가 3이므로, 3번째 비트의 데이터에 오류가 발생하였음을 검출한다.
이와 같이 유추하면, 7번째 비트의 데이터에 오류가 발생할 경우, 7번째 비트가 pc0, pc1 및 pc2인 3개의 연산식에 참여하므로, 제1 연산 코드 p20, p21 및 p22는 모두 1이고; 제3 이진수 111에 대응되는 10진수는 7이므로, 7번째 비트의 데이터에 오류가 발생하였음을 검출한다.
본 발명의 실시예에서, 저장 시스템은, X개의 제1 연산 코드 및 Y개의 제2 연산 코드를 수신하고, 에러 데이터 위치를 포지셔닝하도록 구성되는 디코딩 모듈(103)을 더 포함한다. 본 발명의 실시예에서, X개의 제1 연산 코드는 오류가 발생한 비트를 포지셔닝하기 위한 것이고, Y개의 제2 연산 코드는 오류가 발생한 바이트를 포지셔닝하기 위한 것이다. 오류가 발생한 데이터를 포지셔닝하기 위한 제1 연산 코드 및 제2 연산 코드에 관한 구체적인 원리 및 설명은, 전술한 제1 체크 코드 및 제2 체크 코드에 대한 관련 설명을 참조할 수 있고, 여기서 반복 설명하지 않는다.
설명해야 할 것은, 디코딩 모듈(103) 및 메모리(101)는 동일한 메모리칩에 집적될 수 있거나; 저장 시스템은, 메모리를 제어하도록 구성되는 컨트롤러를 더 포함하고, 디코딩 모듈은 컨트롤러에 집적된다. 또한, 설명해야 할 것은, 디코딩 모듈(103) 및 인코딩 모듈(102)도 동일한 기능 모듈에 집적될 수 있다.
도 8은 본 발명의 실시예에서 제공되는 저장 시스템 중 디코딩 모듈의 구체적인 구조 모식도이다. 도 8을 참조하면, 디코딩 모듈(103)은, 각각이 하나의 바이트에 대응되며, X개의 제1 연산 코드 및 Y개의 제2 연산 코드에 대해 디코딩 처리를 수행하여, 바이트에 에러 데이터가 존재하는지 여부를 획득하고 에러 데이터의 비트를 포지셔닝하도록 구성되는 M개의 디코딩 유닛(31)을 포함한다. 도 8에서 p20, p21 및 p22로 제1 연산 코드를 표시하고, p23, p24, p25, p26 및 p27로 제2 연산 코드를 표시한다. 본 발명의 실시예에서, 각각의 디코딩 유닛(31)은 상기 바이트에 대응되는 X개의 제1 연산 코드 및 Y개의 제2 연산 코드에 대해 디코딩 처리를 수행한다.
다시 말해, 디코딩 유닛(31)의 개수는 바이트의 개수와 동일하다.
도 9는 본 발명의 실시예에서 제공되는 디코딩 모듈 중 바이트 5에 대응되는 디코딩 유닛의 확대 구조 모식도이다.
도 9를 참조하면, 본 발명의 실시예에서, 디코딩 유닛(31)은, 상기 X개의 제1 연산 코드를 수신하고 N개의 제1 디코딩 신호를 출력하도록 구성되되, 각각의 제1 디코딩 신호는 N개의 데이터의 하나의 비트에 대응되는 디코더(301); 적어도 2개의 선택된 연산 코드를 수신하고 논리곱 연산을 수행하도록 구성되되, 선택된 연산 코드는 Y개의 제2 체크 코드 중 상응한 상기 바이트에 대응되는 상기 제2 체크 코드가 상기 제4 인코딩 연산을 거쳐 획득된 제2 연산 코드인 제1 AND 게이트 유닛(302); 적어도 2개의 비선택된 연산 코드를 수신하고, 논리 NOR 연산을 수행하도록 구성되되, 비선택된 연산 코드는 Y개의 제2 연산 코드 중 선택된 연산 코드를 제외한 제2 연산 코드인 NOR 게이트 유닛(303); 및 각각의 입력단이 제1 AND 게이트 유닛(302)의 출력단, NOR 게이트 유닛(303)의 출력단 및 하나의 제1 디코딩 신호에 연결되고, N개의 제2 AND 게이트 유닛(304)의 출력에 기반하여, 에러 데이터 위치를 획득하도록 구성되는 N개의 제2 AND 게이트 유닛(304)을 포함한다. 설명해야 할 것은, 여기에서 언급된 상응한 상기 바이트에 대응되는 상기 제2 체크 코드는 선택된 상기 바이트가 제2 인코딩 연산에 참여하여 형성된 제2 체크 코드를 의미하고, 예를 들어, 도 2로부터 알 수 있는 바, 0번째 바이트에 대응되는 제2 체크 코드는 p13 및 p14이다.
설명해야 할 것은, 도 9에서는 하나의 제1 디코딩 신호와 하나의 제2 AND 게이트 유닛(304)의 연결 관계만을 도시한다.
본 발명의 실시예에서, 디코더(301)는 3-8 디코더이고, 3개의 입력단은 3개의 제1 연산 코드를 각각 수신하며, 8개의 출력단은 8개의 제1 디코딩 신호를 각각 출력하고, 각각의 제1 디코딩 신호는 동일한 바이트 중 8개의 비트의 데이터의 상황을 각각 나타낸다.
본 발명의 실시예에서, 제1 연산 코드 p20, p21 및 p22는 0 또는 1이고, 출력단은 0 내지 7로 표시된다. 0번째 비트에 오류가 발생하고, 0번째 비트가 제1 연산 코드의 인코딩 연산에 참여하지 않을 경우, p20, p21 및 p22는 모두 0이고, 상응한 “0” 출력단은 1이며 나머지 출력단은 모두 0이다. 1번째 비트에 오류가 발생할 경우, p20은 1이고 p21 및 p22는 0이며, 상응한 “1” 출력단은 1이고 나머지 출력단은 모두 0이다. 이와 같이 유추하면, 7번째 비트에 오류가 발생할 경우, p20, p21 및 p22는 모두 1이고, 상응한 “7” 출력단은 1이며 나머지 출력단은 모두 0이다.
설명해야 할 것은, 본 발명의 일부 실시예에서, 제1 체크 코드 및 각각의 바이트 중 비트의 개수가 상이함에 따라, 디코더의 입력단의 개수 및 출력단의 개수를 합리적으로 설정할 수도 있다.
제1 AND 게이트 유닛(302)은, 입력단이 모두 1일 경우 출력단은 1이고, 입력단에 하나 이상 또는 복수의 0이 있을 경우 출력단은 0인 특성을 구비한다. 본 발명의 실시예에서, 제1 AND 게이트 유닛(302)은 3개의 입력단을 구비하고; 제1 AND 게이트 유닛(302)은 또한, 선택된 연산 코드의 개수가 2일 경우, 제1 AND 게이트 유닛(302)의 하나의 입력단이 전원(VDD)에 연결되도록 구성된다.
NOR 게이트 유닛(303)은, 입력단이 모두 0일 경우 출력단은 1이며, 입력단에 하나 또는 복수의 1이 있을 경우 출력단은 0인 특성을 구비한다. 본 발명의 실시예에서, NOR 게이트 유닛은 3개의 입력단을 구비하고; NOR 게이트 유닛(303)은 또한, 비선택된 연산 코드의 개수가 2일 경우, NOR 게이트 유닛(303)의 하나의 입력단이 접지(Vss)되도록 구성된다.
본 발명의 실시예에서, 선택된 연산 코드는, 이 바이트에 대응되는 상기 제2 체크 코드가 상기 제4 인코딩 연산을 거쳐 획득된 제2 연산 코드에 대응하고; 비선택된 연산 코드는, 이 바이트에 대응되는 제2 체크 코드 이외의 나머지 제2 체크 코드가 제4 인코딩 연산을 거쳐 획득된 제2 연산 코드에 대응한다.
예를 들어, 바이트 0의 경우, 제2 연산 코드 p23 및 p24가 바이트 0에 대응되는 제2 체크 코드 p13 및 p14가 제4 인코딩 연산을 수행하여 획득한 제2 연산 코드이면, 제2 연산 코드 p23 및 p24는 제1 AND 게이트 유닛(302)의 입력단에 입력되고, 나머지 제2 연산 코드 p25, p26 및 p27는 NOR 게이트 유닛(303)의 입력단에 입력된다. 바이트 1의 경우, 제2 연산 코드 p24 및 p25가 바이트 1에 대응되는 제2 체크 코드 p14 및 p15가 제4 인코딩 연산을 수행하여 획득된 제2 연산 코드이면, 제2 연산 코드 p24 및 p25는 제1 AND 게이트 유닛(302)의 입력단에 입력되고, 나머지 제2 연산 코드 p23, p26 및 p27은 NOR 게이트 유닛(303)의 입력단에 입력된다. 바이트 4의 경우, 제2 연산 코드 p23, p24 및 p25는 제1 AND 게이트 유닛(302)의 입력단에 입력되고, 나머지 제2 연산 코드 p26 및 p27은 NOR 게이트 유닛(303)의 입력단에 입력된다. 다른 바이트의 경우에 대해 일일이 열거하지 않는다.
제2 AND 게이트 유닛(304)의 개수와 동일한 바이트에서의 비트의 개수는 동일하다. 본 발명의 실시예에서, N이 8이면, 상응한 8개의 제2 AND 게이트 유닛(304)을 구비하고, 8개의 제2 AND 게이트 유닛(304)의 출력에 따라 상기 바이트에 에러 데이터가 존재하는지 여부 및 어느 비트에 오류가 발생하였는지를 판단한다.
본 발명의 실시예에서, 각각의 바이트에 있어서, 디코딩 유닛(31)의 회로는 모두 동일하고, 입력단의 배선만 상이하며, 각각의 바이트에 대응되는 제1 AND 게이트 유닛(302) 및 NOR 게이트 유닛(303)의 입력단의 배선은 도 2의 pc3 내지 pc7 이 5개의 연산식에 의해 결정됨을 어렵지 않게 발견할 수 있다. 각각의 바이트에 있어서, 이에 대응되는 상기 제2 체크 코드가 상기 제4 인코딩 연산을 거쳐 획득된 제2 연산 코드를 제1 AND 게이트 유닛(302)의 입력단에 연결하고, 이에 대응되는 제2 체크 코드 이외의 나머지 제2 체크 코드가 제4 인코딩 연산을 거쳐 획득된 제2 연산 코드를 NOR 게이트 유닛(303)의 입력단에 연결한다. 또한, 사용되지 않은 제1 AND 게이트 유닛(302)의 입력단은 전원에 연결되고, 사용되지 않은 NOR 게이트 유닛(303)의 입력단은 접지되며, 제1 연산 코드는 디코더(301)의 입력단에 연결된다. 따라서, 디코더(301)는 8개의 배선만으로 입력단에 연결되고, 각각의 배선은 하나의 제1 연산 코드 또는 하나의 제2 연산 코드를 전송하므로, 레인 및 면적을 절약함과 동시에 디코딩 속도를 향상시키는데 도움을 준다.
디코딩 회로의 이해를 용이하게 하기 위해, 바이트 5에 대응되는 디코딩 유닛을 예로 들어, 이하 디코딩 회로의 작동 원리를 결부하여 디코딩 회로를 보다 상세히 설명할 것이다.
8개의 제2 AND 게이트 유닛(304)의 출력이 모두 0이면, 상기 바이트의 모든 데이터에 오류가 발생하지 않았음을 나타낸다.
8개의 제2 AND 게이트 유닛(304)의 출력에 1개의 1이 있으면, 상기 바이트 중 하나의 비트의 데이터에 오류가 발생하였음을 나타낸다. 본 발명의 실시예에서, 상기 바이트의 데이터에 오류가 발생하며, 제2 연산 코드 p23, p24 및 p26이 모두 1이고 제1 AND 게이트 유닛(302)의 출력이 1이며, 비선택된 연산 코드 p25 및 p27이 모두 0이고 NOR 게이트 유닛(303)의 출력이 1이면; 이때, N개의 제2 AND 게이트 유닛(304) 중 어느 제1 디코딩 신호에 대응되는 제2 AND 게이트 유닛(304)의 출력이 1이면, 이 제1 디코딩 신호에 대응되는 비트의 데이터에 오류가 발생하였다.
이해할 수 있는 것은, 본 발명의 실시예에서, 제1 디코딩 신호가 1일 경우 대응되는 비트의 데이터에 오류가 발생하는 것을 예로 들면, 제1 디코딩 신호가 0일 경우 대응되는 비트의 데이터에 오류가 발생하지 않는다. 본 발명의 일부 실시예에서, 또한 제1 디코딩 신호가 0일 경우 대응되는 비트의 데이터에 오류가 발생하고, 제1 디코딩 신호가 1일 경우 대응되는 비트의 데이터에 오류가 발생하지 않도록 설정할 수 있다. 상응하게, 당업자는 필요에 따라 다른 부분을 스스로 설계할 수 있고, 예를 들어 제1 디코딩 신호를 NOR 게이트 회로에 연결하고 출력한다.
유의해야 할 것은, M개의 바이트의 모든 데이터에 오류가 발생하지 않고, X개의 제1 체크 코드에서의 하나의 비트의 데이터에만 오류가 발생할 경우, 제1 연산 코드에는 하나의 1이 있고, 디코더(301) 중 하나의 출력은 1이지만, 2번째 Y개의 제2 체크 코드에 오류가 발생하지 않았으므로, 모든 제2 연산 코드가 모두 0이고, 제1 AND 게이트 유닛(302)의 출력은 0이며, 제2 AND 게이트 유닛(304)의 출력도 모두 0이므로, M개의 바이트의 모든 데이터에 오류가 발생하지 않았음을 나타낸다. M개의 바이트의 모든 데이터에 오류가 발생하지 않고, Y개의 제2 체크 코드에서의 1비트에만 오류가 발생할 경우, 제1 연산 코드는 모두 0이고, 디코더(301)의 0 출력단은 1이지만, 나머지 Y-1개의 제2 체크 코드에 모두 오류가 발생하지 않았으므로, 이에 대응되는 Y-1개의 제2 연산 코드가 0이고, 제1 AND 게이트 유닛(302)의 출력이 0이며, 제2 AND 게이트 유닛(304)의 출력도 모두 0이므로, M개의 바이트 중 모든 데이터에 오류가 발생하지 않았음을 나타낸다.
이해할 수 있는 것은, 본 발명의 실시예에서, 제1 체크 코드에 기반하여 제1 연산 코드를 생성하고, 제1 체크 코드에 기반하여 생성된 제1 연산 코드를 이용하여 바이트 중 에러 데이터의 위치를 포지셔닝하므로, 제1 체크 코드는 각각의 바이트에서의 N개의 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이다. 제2 체크 코드에 기반하여 제2 연산 코드를 생성하고, 제2 체크 코드에 기반하여 생성된 제2 연산 코드를 이용하여 에러 바이트를 포지셔닝하므로, 제2 체크 코드는 M개의 바이트에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이다.
본 발명의 실시예는, 인코딩 모듈(102)에 대한 특수 설계를 통해 ECC를 구현하여, 1비트의 오류를 검출 및 정정할 수 있고, 하드웨어 회로를 감소할 수도 있어, 저장 시스템의 전력 소비를 감소하고 인코딩 속도 및 디코딩 속도를 향상시키는 구조 성능이 우수한 저장 시스템을 제공한다. 또한, 제1 체크 코드 및 제2 체크 코드에 대한 특수 설계를 통해, 모든 데이터 조합에 대한 인코딩 시간의 차이를 줄이고, 모든 데이터 조합에 대한 디코딩 시간도 줄이므로, 회로 제어에 대한 요구사항을 줄인다.
당업자라면 상술한 각 실시형태는 본 발명을 구현하기 위한 구체적인 실시예이며, 실제 응용에서 본 발명의 사상 및 범위를 벗어나지 않고 형태 및 세부 사항에 다양한 변경이 이루어질 수 있음을 이해할 수 있을 것이다. 당업자라면 본 발명의 사상 및 범위를 벗어나지 않고 각각의 변경 및 수정이 가능하므로 본 발명의 보호 범위는 특허청구범위에 의해 정의된 범위에 따라야 한다.
본 발명의 실시예는 저장 시스템을 제공하고, 상기 저장 시스템은, 기록 및 판독 동작 기간에 복수의 데이터를 기록하거나 판독하도록 구성되되, 상기 복수의 데이터는 M개의 바이트로 나뉘고, 각각의 상기 바이트는 N개의 데이터를 구비하는 메모리; 및 인코딩 단계에서, 각각의 상기 바이트에서의 복수의 데이터에 기반하여 X개의 제1 체크 코드를 생성하고, 상기 인코딩 단계에서, 복수의 상기 바이트에서의 모든 데이터에 기반하여 Y개의 제2 체크 코드를 생성하도록 구성되는 인코딩 모듈을 포함하되, 상이한 상기 바이트에서 동일한 상기 제1 체크 코드에 대응되는 상기 복수의 데이터의 비트는 동일하며, 상기 X개의 제1 체크 코드는 각각의 상기 바이트에서의 상기 N개의 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이고, 상기 Y개의 제2 체크 코드는 상기 M개의 바이트에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이며, 여기서 상기 M, N, X, Y는 모두 양의 자연수이다.
본 발명의 실시예에서 제공되는 저장 시스템에서 인코딩 모듈은, 바이트의 복수의 데이터에 기반하여 X개의 제1 체크 코드를 생성하고, 상이한 바이트에서 상이한 바이트의 복수의 데이터의 비트는 동일하며, X개의 제1 체크 코드를 통해 에러 비트를 포지셔닝할 수 있고; 복수의 바이트의 모든 데이터에 기반하여 Y개의 제2 체크 코드를 생성하며, Y개의 제2 체크 코드를 통해 에러 바이트를 포지셔닝할 수 있고; 바이트 및 바이트에서의 비트를 포지셔닝함으로써, 에러 데이터의 위치를 획득하여, 오류 검출 및 오류 정정 중 적어도 하나의 목적을 달성할 수 있다. 본 발명의 실시예는 특수한 인코딩으로 구현되는 인코딩 모듈을 설계함으로써, 보다 적은 하드웨어 회로를 사용하여 ECC 기술을 구현할 수 있어, 전력 소비를 감소하는 동시에 인코딩 속도를 향상시키고, 인코딩 난이도를 감소하는데 도움을 준다.

Claims (22)

  1. 저장 시스템으로서,
    기록 및 판독 동작 기간에 복수의 데이터를 기록하거나 판독하도록 구성되는 메모리 - 상기 복수의 데이터는 M개의 바이트로 나뉘고, 각각의 상기 바이트는 N개의 데이터를 구비함 - ; 및
    인코딩 단계에서, 각각의 상기 바이트에서의 복수의 데이터에 기반하여 X개의 제1 체크 코드를 생성하고, 상기 인코딩 단계에서, 복수의 상기 바이트에서의 모든 데이터에 기반하여 Y개의 제2 체크 코드를 생성하도록 구성되는 인코딩 모듈을 포함하되, 상이한 상기 바이트에서 동일한 상기 제1 체크 코드에 대응되는 상기 복수의 데이터의 비트는 동일하며, 상기 X개의 제1 체크 코드는 각각의 상기 바이트에서의 상기 N개의 데이터에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이고, 상기 Y개의 제2 체크 코드는 상기 M개의 바이트에 대해 오류 검출 및 오류 정정 중 적어도 하나를 수행하기 위한 것이며;
    상기 M, N, X, Y는 모두 양의 자연수인, 저장 시스템.
  2. 제1항에 있어서,
    상기 인코딩 모듈은, 상기 X개의 제1 체크 코드를 생성하도록 구성되는 제1 인코딩 유닛을 포함하되, 상기 X개의 제1 체크 코드는 X비트의 제1 이진수를 구성하며; 2X≥N이고, 각각의 상기 제1 체크 코드는 모든 상기 바이트에서의 상기 복수의 데이터로 제1 인코딩 연산하여 획득되고, 각각의 상기 제1 체크 코드에 대응되는 복수의 데이터는 상기 바이트 중 상이한 비트 조합에 대응되는, 저장 시스템.
  3. 제2항에 있어서,
    상기 N개의 데이터는 자연수에 따라 증가된 0번째 비트 내지 N-1번째 비트를 구비하고, 선택된 각각의 비트에 대해 상기 제1 인코딩 연산을 수행하여 획득된 상기 제1 체크 코드는 완전히 동일하지 않은, 저장 시스템.
  4. 제2항 또는 제3항에 있어서,
    상기 N은 8이고, 상기 X는 3이며; 상기 제1 인코딩 연산은 배타적 부정 논리합 또는 배타적 논리합을 포함하고,
    상기 제1 인코딩 유닛은, 상기 X비트의 제1 이진수에서, 최하위 비트에 위치하는 상기 제1 체크 코드가 모든 상기 바이트 중 1번째 비트, 3번째 비트, 5번째 비트 및 7번째 비트의 상기 데이터의 배타적 논리합 또는 배타적 부정 논리합이고, 최상위 비트에 위치하는 상기 제1 체크 코드가 모든 상기 바이트 중 4번째 비트, 5번째 비트, 6번째 비트 및 7번째 비트의 상기 데이터의 배타적 논리합 또는 배타적 부정 논리합이며, 중간 비트에 위치하는 상기 제1 체크 코드가 모든 상기 바이트 중 2번째 비트, 3번째 비트, 6번째 비트 및 7번째 비트의 상기 데이터의 배타적 논리합 또는 배타적 부정 논리합이도록 구성되는, 저장 시스템.
  5. 제2항에 있어서,
    상기 인코딩 모듈은, 상기 Y개의 제2 체크 코드를 생성하도록 구성되는 제2 인코딩 유닛을 더 포함하되, 상기 Y개의 제2 체크 코드는 Y비트의 제2 이진수를 구성하며; 2Y≥M이고, 각각의 상기 제2 체크 코드는 복수의 상기 바이트로 제2 인코딩 연산하여 획득되는, 저장 시스템.
  6. 제5항에 있어서,
    상기 제2 인코딩 연산은 배타적 부정 논리합 또는 배타적 논리합을 포함하고; 상기 제2 인코딩 유닛은,
    선택된 2개의 상기 바이트의 모든 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하고, 복수의 제1 연산 결과를 저장하도록 구성되는 제1 레벨 연산 유닛 - 각각의 상기 제1 연산 결과는 선택된 2개의 상기 바이트의 배타적 논리합 결과 또는 배타적 부정 논리합 결과임 - ; 및
    적어도 2개의 상기 제1 연산 결과에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하고, 상기 제2 체크 코드를 생성하며, 상이한 인코딩 수요에 기반하여 Y개의 상기 제2 체크 코드를 생성하도록 구성되는 제2 레벨 연산 유닛을 포함하는, 저장 시스템.
  7. 제6항에 있어서,
    상기 제1 레벨 연산 유닛은,
    동일한 상기 바이트의 모든 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하고, 제2 연산 결과를 저장하도록 구성되는 제1 연산 서브 유닛; 및
    2개의 상기 제2 연산 결과에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하고, 상기 제1 연산 결과를 획득하도록 구성되는 제2 연산 서브 유닛을 포함하는, 저장 시스템.
  8. 제5항에 있어서,
    상기 제2 인코딩 유닛은, 각각의 상기 바이트에 대해, 상기 제2 인코딩 연산에 참여한 횟수가 a이고, a가 (Y-1)/2≤a≤(Y+1)/2를 만족하며, a가 양의 정수이도록 구성되는, 저장 시스템.
  9. 제8항에 있어서,
    상기 M은 16이고, 상기 Y는 5이며; 상기 M개의 바이트는 자연수에 따라 증가된 0번째 바이트 내지 15번째 바이트로 나뉘고; 상기 Y개의 제2 체크 코드는 자연수에 따라 증가된 3번째 제2 체크 코드 내지 7번째 제2 체크 코드로 나뉘며;
    3번째 상기 제2 체크 코드는 0번째 바이트, 2번째 바이트, 3번째 바이트, 4번째 바이트, 5번째 바이트, 6번째 바이트 및 8번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이고;
    4번째 상기 제2 체크 코드는 0번째 바이트, 1번째 바이트, 4번째 바이트, 5번째 바이트, 7번째 바이트, 9번째 바이트, 10번째 바이트 및 12번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이며;
    5번째 상기 제2 체크 코드는 1번째 바이트, 2번째 바이트, 4번째 바이트, 6번째 바이트, 9번째 바이트, 11번째 바이트, 13번째 바이트 및 14번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이고;
    6번째 상기 제2 체크 코드는 3번째 바이트, 5번째 바이트, 6번째 바이트, 7번째 바이트, 10번째 바이트, 11번째 바이트, 14번째 바이트 및 15번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합이며;
    7번째 상기 제2 체크 코드는 8번째 바이트, 9번째 바이트, 10번째 바이트, 11번째 바이트, 12번째 바이트, 13번째 바이트 및 15번째 바이트의 모든 데이터의 배타적 논리합 또는 배타적 부정 논리합인, 저장 시스템.
  10. 제2항 또는 제5항에 있어서,
    상기 인코딩 모듈은, 임의의 2개의 상기 바이트의 모든 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하고, 또는, 상기 복수의 데이터에 대해 배타적 논리합 또는 배타적 부정 논리합을 수행하도록 구성되는 비교 회로를 포함하는, 저장 시스템.
  11. 제10항에 있어서,
    상기 비교 회로는,
    전원 신호에 연결되고, 제1 신호 및 제2 신호에 기반하여 전원 신호를 출력하도록 제어하는 제1 공유 유닛 - 상기 제1 신호와 상기 제2 신호는 반전됨 - ;
    접지 신호에 연결되고, 상기 제1 신호 및 상기 제2 신호에 기반하여 접지 신호를 출력하도록 제어하는 제2 공유 유닛;
    상기 제1 공유 유닛과 상기 제2 공유 유닛 사이에 연결되고, 제3 신호 및 제4 신호를 수신하며, 제1 연산 신호를 출력하도록 구성되는 제1 논리 유닛 - 상기 제3 신호와 상기 제4 신호는 반전되고, 상기 제1 연산 신호는 상기 제1 신호와 상기 제3 신호의 배타적 논리합임 - ; 및
    상기 제1 공유 유닛과 상기 제2 공유 유닛 사이에 연결되고, 상기 제3 신호 및 상기 제4 신호를 수신하며 제2 연산 신호를 출력하도록 구성되는 제2 논리 유닛을 포함하고, 상기 제2 연산 신호는 상기 제1 신호와 상기 제3 신호의 배타적 부정 논리합인, 저장 시스템.
  12. 제11항에 있어서,
    상기 제1 공유 유닛은,
    게이트가 상기 제1 신호를 수신하고, 소스가 상기 전원 신호에 연결되는 제0 PMOS 트랜지스터; 및
    게이트가 상기 제2 신호를 수신하고, 소스가 상기 전원 신호에 연결되는 제7 PMOS 트랜지스터를 포함하고;
    상기 제2 공유 유닛은,
    게이트가 상기 제1 신호를 수신하고, 소스가 상기 접지 신호에 연결되는 제0 NMOS 트랜지스터; 및
    게이트가 상기 제2 신호를 수신하고, 소스가 상기 접지 신호에 연결되는 제7 NMOS 트랜지스터를 포함하는, 저장 시스템.
  13. 제12항에 있어서,
    상기 제1 논리 유닛은,
    게이트가 상기 제4 신호를 수신하고, 소스가 상기 제0 PMOS 트랜지스터의 드레인에 연결되는 제1 PMOS 트랜지스터;
    게이트가 상기 제3 신호를 수신하고, 드레인이 상기 제1 PMOS 트랜지스터의 드레인에 연결되며, 소스가 상기 제0 NMOS 트랜지스터의 드레인에 연결되는 제1 NMOS 트랜지스터;
    게이트가 상기 제3 신호를 수신하고, 소스가 상기 제7 PMOS 트랜지스터의 드레인에 연결되는 제4 PMOS 트랜지스터; 및
    게이트가 상기 제4 신호를 수신하고, 드레인이 상기 제4 PMOS 트랜지스터의 드레인에 연결되며, 소스가 상기 제7 NMOS 트랜지스터의 드레인에 연결되는 제4 NMOS 트랜지스터를 포함하는, 저장 시스템.
  14. 제12항에 있어서,
    상기 제2 논리 유닛은,
    게이트가 상기 제3 신호를 수신하고, 소스가 상기 제0 PMOS 트랜지스터의 드레인에 연결되는 제2 PMOS 트랜지스터;
    게이트가 상기 제4 신호를 수신하고, 드레인이 상기 제2 PMOS 트랜지스터의 드레인에 연결되며, 소스가 상기 제0 NMOS 트랜지스터의 드레인에 연결되는 제2 NMOS 트랜지스터;
    게이트가 상기 제4 신호를 수신하고, 소스가 상기 제7 PMOS 트랜지스터의 드레인에 연결되는 제5 PMOS 트랜지스터; 및
    게이트가 상기 제3 신호를 수신하고, 드레인이 상기 제5 PMOS 트랜지스터의 드레인에 연결되며, 소스가 상기 제7 NMOS 트랜지스터의 드레인에 연결되는 제5 NMOS 트랜지스터를 포함하는, 저장 시스템.
  15. 제1항에 있어서,
    상기 인코딩 모듈은 또한,
    디코딩 단계에서, 전송된 복수의 데이터, 상기 X개의 제1 체크 코드 및 상기 Y개의 제2 체크 코드를 수신하고, 각각의 상기 바이트의 복수의 데이터 및 상기 X개의 제1 체크 코드에 기반하여 제3 인코딩 연산을 수행하여 X개의 제1 연산 코드를 생성하며, 복수의 상기 바이트에서의 모든 데이터 및 상기 Y개의 제2 체크 코드에 기반하여 제4 인코딩 연산을 수행하여 Y개의 제2 연산 코드를 생성하도록 구성되는, 저장 시스템.
  16. 제15항에 있어서,
    상기 저장 시스템은, 상기 X개의 제1 연산 코드 및 상기 Y개의 제2 연산 코드를 수신하고, 에러 데이터 위치를 포지셔닝하도록 구성되는 디코딩 모듈을 더 포함하는, 저장 시스템.
  17. 제16항에 있어서,
    상기 디코딩 모듈은,
    각각이 하나의 상기 바이트에 대응되며, X개의 상기 제1 연산 코드 및 Y개의 상기 제2 연산 코드에 대해 디코딩 처리를 수행하여, 상기 바이트에 에러 데이터가 존재하는지 여부를 획득하고 에러 데이터의 비트를 포지셔닝하도록 구성되는 M개의 디코딩 유닛을 포함하는, 저장 시스템.
  18. 제17항에 있어서,
    상기 디코딩 유닛은,
    상기 X개의 제1 연산 코드를 수신하고 N개의 제1 디코딩 신호를 출력하도록 구성되는 디코더 - 각각의 상기 제1 디코딩 신호는 상기 N개의 데이터의 하나의 비트에 대응됨 - ;
    적어도 2개의 선택된 연산 코드를 수신하고 논리곱 연산을 수행하도록 구성되는 제1 AND 게이트 유닛 - 상기 선택된 연산 코드는 상기 Y개의 제2 체크 코드 중 상응한 상기 바이트에 대응되는 상기 제2 체크 코드가 상기 제4 인코딩 연산을 거쳐 획득된 상기 제2 연산 코드임 - ;
    적어도 2개의 비선택된 연산 코드를 수신하고 논리 NOR 연산을 수행하도록 구성되는 NOR 게이트 유닛 - 상기 비선택된 연산 코드는 상응한 상기 바이트에 대응되는 상기 선택된 연산 코드를 제외한 상기 제2 연산 코드임 - ; 및
    각각의 입력단이 상기 제1 AND 게이트 유닛의 출력단, 상기 NOR 게이트 유닛의 출력단 및 하나의 상기 제1 디코딩 신호에 연결되고, 상기 N개의 제2 AND 게이트 유닛의 출력에 기반하여, 에러 데이터 위치를 획득하도록 구성되는 N개의 제2 AND 게이트 유닛을 포함하는, 저장 시스템.
  19. 제18항에 있어서,
    상기 제1 AND 게이트 유닛은 3개의 입력단을 구비하고; 상기 제1 AND 게이트 유닛은 또한, 상기 선택된 연산 코드의 개수가 2일 경우, 상기 제1 AND 게이트 유닛의 하나의 입력단이 전원에 연결되도록 구성되는, 저장 시스템.
  20. 제18항에 있어서,
    상기 NOR 게이트 유닛은 3개의 입력단을 구비하고; 상기 NOR 게이트 유닛은 또한, 상기 비선택된 연산 코드의 개수가 2일 경우, 상기 NOR 게이트 유닛의 하나의 입력단이 접지되도록 구성되는, 저장 시스템.
  21. 제1항에 있어서,
    상기 저장 시스템은 메모리칩을 포함하는, 저장 시스템.
  22. 제16항에 있어서,
    상기 메모리는 메모리칩을 포함하고; 상기 저장 시스템은, 상기 메모리를 제어하도록 구성되는 컨트롤러를 더 포함하며, 상기 인코딩 모듈 및 상기 디코딩 모듈은 상기 컨트롤러에 집적되는, 저장 시스템.
KR1020227021307A 2021-01-14 2021-08-16 저장 시스템 KR20220104030A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202110050737.4A CN114765056A (zh) 2021-01-14 2021-01-14 存储系统
CN202110050737.4 2021-01-14
PCT/CN2021/112699 WO2022151730A1 (zh) 2021-01-14 2021-08-16 存储系统

Publications (1)

Publication Number Publication Date
KR20220104030A true KR20220104030A (ko) 2022-07-25

Family

ID=82363622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227021307A KR20220104030A (ko) 2021-01-14 2021-08-16 저장 시스템

Country Status (6)

Country Link
US (1) US11886292B2 (ko)
EP (1) EP4053701A4 (ko)
JP (1) JP7454676B2 (ko)
KR (1) KR20220104030A (ko)
CN (1) CN114765056A (ko)
WO (1) WO2022151730A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023512892A (ja) 2021-01-14 2023-03-30 チャンシン メモリー テクノロジーズ インコーポレイテッド 比較システム
US11599417B2 (en) * 2021-01-14 2023-03-07 Changxin Memory Technologies, Inc. Error correction system

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61277230A (ja) 1985-05-31 1986-12-08 Canon Inc 誤り検出訂正符号発生方式
US4736376A (en) * 1985-10-25 1988-04-05 Sequoia Systems, Inc. Self-checking error correcting encoder/decoder
US4749886A (en) 1986-10-09 1988-06-07 Intersil, Inc. Reduced parallel EXCLUSIVE or and EXCLUSIVE NOR gate
FR2714550B1 (fr) 1993-12-24 1996-02-02 Bull Sa Arbre de portes logiques OU-Exclusif et multiplieur de fréquence l'incorporant.
KR19980014906A (ko) 1996-08-17 1998-05-25 구자홍 누산기
US5859858A (en) 1996-10-25 1999-01-12 Intel Corporation Method and apparatus for correcting a multilevel cell memory by using error locating codes
US6891690B2 (en) 2002-11-20 2005-05-10 International Business Machines Corporation On-drive integrated sector format raid error correction code system and method
DE102004020030A1 (de) 2004-04-23 2005-11-24 Infineon Technologies Ag Testvorrichtung zum Testen einer integrierten Schaltung
JP4036338B2 (ja) 2005-03-04 2008-01-23 国立大学法人東京工業大学 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
US7653862B2 (en) 2005-06-15 2010-01-26 Hitachi Global Storage Technologies Netherlands B.V. Error detection and correction for encoded data
US7242219B1 (en) 2005-09-08 2007-07-10 Advanced Micro Devices, Inc. Circuit for parity tree structure
CN101183565B (zh) 2007-12-12 2011-02-16 深圳市硅格半导体有限公司 存储介质中数据校验方法
JP2010079485A (ja) 2008-09-25 2010-04-08 Panasonic Corp 半導体記録装置
US8051337B2 (en) 2009-01-22 2011-11-01 Taiwan Semiconductor Manufacturing Company, Ltd. System and method for fast cache-hit detection
TWI381392B (zh) 2010-02-04 2013-01-01 Transcend Information Inc 雙層面記憶體錯誤修正方法以及相關的記憶體裝置
TWI456579B (zh) 2010-03-26 2014-10-11 Silicon Motion Inc 提昇錯誤更正能力之方法以及相關之記憶裝置及其控制器
JP2012022422A (ja) 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
CN102339641B (zh) 2010-07-23 2014-12-17 北京兆易创新科技股份有限公司 检错/纠错校验模块及该模块读写数据的方法
CN101980339A (zh) * 2010-11-04 2011-02-23 浙江大学 一种用于dram缓存的纠错编码方法
CN102543209B (zh) * 2010-12-31 2015-09-30 深圳市朗科科技股份有限公司 多通道闪存控制器的纠错装置、方法及多通道闪存控制器
JP2012252558A (ja) 2011-06-03 2012-12-20 Sony Corp 不揮発性メモリ、メモリコントローラ、不揮発性メモリのアクセス方法、およびプログラム
JP2013074560A (ja) 2011-09-29 2013-04-22 Elpida Memory Inc 論理回路及びデータ処理システム
CN102857217B (zh) 2012-09-11 2015-06-17 宁波大学 一种低功耗异或/同或门电路
CN103078629A (zh) 2012-12-27 2013-05-01 广州中大微电子有限公司 一种基于7管异或同或单元的全加器电路
CN104425019B (zh) 2013-08-23 2018-07-06 慧荣科技股份有限公司 存取快闪存储器中存储单元的方法以及使用该方法的装置
US9189327B2 (en) 2013-11-19 2015-11-17 International Business Machines Corporation Error-correcting code distribution for memory systems
JP6212396B2 (ja) 2014-01-08 2017-10-11 ルネサスエレクトロニクス株式会社 データ処理装置
US9754684B2 (en) 2014-11-06 2017-09-05 Samsung Electronics Co., Ltd. Completely utilizing hamming distance for SECDED based ECC DIMMs
US9985655B2 (en) 2015-09-01 2018-05-29 International Business Machines Corporation Generating ECC values for byte-write capable registers
CN105471425B (zh) 2015-12-08 2018-05-01 无锡芯响电子科技有限公司 一种可实现异或门或者同或门复用的电路
US9917675B2 (en) 2016-06-01 2018-03-13 Qualcomm Incorporated Enhanced polar code constructions by strategic placement of CRC bits
KR20190012566A (ko) 2017-07-27 2019-02-11 삼성전자주식회사 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법
CN108038023B (zh) 2017-12-26 2021-01-29 广东工业大学 一种多级闪存的信号处理方法、装置、设备及存储介质
CN109036493A (zh) 2018-06-11 2018-12-18 西北工业大学 一种具有检错纠错机制的NAND Flash控制器
CN110968450A (zh) * 2018-09-30 2020-04-07 长鑫存储技术有限公司 数据存储方法及装置、存储介质、电子设备
CN111443887A (zh) 2020-03-26 2020-07-24 京东方科技集团股份有限公司 显示驱动芯片及其数据处理方法
US11239944B1 (en) 2020-08-14 2022-02-01 Huawei Technologies Co., Ltd. Methods and devices for rate adaptive forward error correction using a flexible irregular error correcting code
JP7343709B2 (ja) * 2021-01-14 2023-09-12 チャンシン メモリー テクノロジーズ インコーポレイテッド 誤り訂正システム
US11599417B2 (en) * 2021-01-14 2023-03-07 Changxin Memory Technologies, Inc. Error correction system
JP2023512892A (ja) * 2021-01-14 2023-03-30 チャンシン メモリー テクノロジーズ インコーポレイテッド 比較システム
US20220230701A1 (en) * 2021-01-14 2022-07-21 Changxin Memory Technologies, Inc. Storage system

Also Published As

Publication number Publication date
JP7454676B2 (ja) 2024-03-22
EP4053701A1 (en) 2022-09-07
EP4053701A4 (en) 2023-08-02
WO2022151730A1 (zh) 2022-07-21
US11886292B2 (en) 2024-01-30
CN114765056A (zh) 2022-07-19
US20220365844A1 (en) 2022-11-17
JP2023512893A (ja) 2023-03-30

Similar Documents

Publication Publication Date Title
CN107045463B (zh) 具有纠错码的存储器架构以及其操作方法
US11791009B2 (en) Error correction system
US20220230701A1 (en) Storage system
KR20220107007A (ko) 비교 시스템
US11599417B2 (en) Error correction system
US9811429B2 (en) Microcontroller utilizing redundant address decoders and electronic control device using the same
US6938193B1 (en) ECC circuit-containing semiconductor memory device and method of testing the same
JP2001358702A (ja) 誤り訂正符号の検査装置
KR20220104030A (ko) 저장 시스템
US8773165B2 (en) Logic circuit performing exclusive or operation and data processing system including the same
WO2022151724A1 (zh) 纠错系统
US6360347B1 (en) Error correction method for a memory device
WO2022151722A1 (zh) 存储系统
WO2022151723A1 (zh) 比较系统
CN114765055B (en) Error correction system
WO2022151721A1 (zh) 纠错系统
EP1192544B1 (en) Error correction circuit and method for a memory device
US20210334033A1 (en) Memory device and method reading data
JPH0855066A (ja) エラー訂正及び変換システム
RU51428U1 (ru) Отказоустойчивый процессор повышенной достоверности функционирования
RU2297034C2 (ru) Отказоустойчивое устройство хранения информации
JP4397699B2 (ja) 半導体集積回路
RU42684U1 (ru) Самокорректирующееся запоминающее устройство
KR20080108869A (ko) 데이터 전송 시스템
JPH0534703B2 (ko)

Legal Events

Date Code Title Description
A201 Request for examination