KR20080106775A - Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법 - Google Patents
Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법 Download PDFInfo
- Publication number
- KR20080106775A KR20080106775A KR1020070054620A KR20070054620A KR20080106775A KR 20080106775 A KR20080106775 A KR 20080106775A KR 1020070054620 A KR1020070054620 A KR 1020070054620A KR 20070054620 A KR20070054620 A KR 20070054620A KR 20080106775 A KR20080106775 A KR 20080106775A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- memory
- data
- error
- memory devices
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Information Transfer Systems (AREA)
Abstract
ECC 회로를 포함하는 메모리 시스템 및 그 구동 방법이 개시된다. 상기 메모리 시스템은 다수의 메모리 장치들; 상기 다수의 메모리 장치들을 제어하기 위한 컨트롤러; 및 상기 다수의 메모리 장치들과 상기 컨트롤러 사이에 접속되는 적어도 하나의 채널을 구비하며, 상기 컨트롤러는 버스; 호스트로부터 입력되는 라이트 데이터를 상기 버스로 인터페이스 하여 출력하고, 상기 버스를 통하여 수신되는 리드 데이터를 상기 호스트로 인터페이스 하여 출력하는 호스트 인터페이스; 상기 다수의 메모리 장치들로부터 라이트 또는 리드되는 데이터를 인터페이스 하기 위한 메모리 인터페이스 블락; 및 상기 호스트로부터 입력된 상기 라이트 데이터를 인코딩하거나, 상기 다수의 메모리 장치들로부터 독출된 리드 데이터를 디코딩하는 제1 버퍼 메모리 블락을 구비한다.
메모리 시스템, 플래시 카드, 메모리 카드
Description
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 일반적인 메모리 시스템의 개략적인 블락도를 나타낸다.
도 2는 본 발명의 실시예에 따른 메모리 시스템의 개략적인 블락도이다.
도 3은 도 2에 도시된 제1 버퍼 메모리 블락의 실시예를 나타내는 도면이다.
도 4는 도 2에 도시된 제1 버퍼 메모리 블락의 다른 실시예를 나타내는 도면이다.
도 5는 도 2에 도시된 제1 버퍼 메모리 블락의 또 다른 실시예를 나타내는 도면이다.
도 6은 도 2에 도시된 제2 버퍼 메모리 블락의 실시예를 나타내는 도면이다.
도 7은 도 3 내지 도 6에 도시된 디코더 블락의 실시예를 나타내는 도면이다.
도 8은 도 7에 도시된 디코더 블락의 파이프 라인 동작을 설명하기 위한 도면이다.
도 9는 도 3 내지 도 6에 도시된 디코더 블락의 다른 실시예를 나타내는 도 면이다.
도 10은 도 9에 도시된 디코더 블락의 파이프 라인 동작을 설명하기 위한 도면이다
본 발명은 ECC(Error Correction Code) 회로를 포함하는 메모리 시스템 및 그 동작 방법에 관한 것으로 보다 상세하게는 상기 ECC 회로의 크기(사이즈)를 줄이고, 상기 메모리 시스템에서의 데이터 전송 능력을 향상시킬 수 있는 메모리 시스템 및 그 동작 방법에 관한 것이다.
도 1은 일반적인 메모리 시스템의 개략적인 블락도를 나타낸다. 도 1을 참조하면, 일반적인 메모리 시스템(10)는 컨트롤러(20), 및 다수의 메모리 장치들(31, 32, ...,33)을 포함하는 메모리 블락(30)을 구비한다. 상기 다수의 메모리 장치들(31, 32, ...,33)은 적어도 하나의 채널(CH 0, CH 1, ..., 또는 CH N)을 통하여 상기 컨트롤러(20)와 접속한다.
상기 컨트롤러(20)는 호스트 인터페이스(21), 제1 버퍼 메모리 블락(22), 제2 버퍼 메모리 블락(23), CPU(24), 및 메모리 인터페이스 블락(25)을 구비한다.
일반적으로 상기 메모리 시스템(10)은 호스트로부터 입력되는 라이트 데이터(write data)나 상기 메모리 블락(30)으로부터 독출되는 리드 데이터(read data)의 오류를 검출하고 정정하여 정확한 데이터를 전송하기 위하여 ECC 회로 블락(27) 을 포함하여 제작된다.
상기 ECC 회로 블락(27)은 상기 메모리 인터페이스 블락(25)에 구비되어 상기 적어도 하나의 채널(CH 0, CH 1, ..., 또는 CH N)을 통하여 송수신되는 리드 데이터 또는 라이트 데이터의 오류를 검출하고 정정하여 출력한다.
그런데, 일반적인 메모리 시스템(10)에서의 상기 ECC 회로 블락(27)은 상기 적어도 하나의 채널(CH 0, CH 1, ..., 또는 CH N)에 대응하는 ECC 회로들(ECC #1, ECC #2, ..., ECC #N)을 구비한다. 즉, 상기 메모리 시스템(10)의 채널 수가 증가하게 되면 상기 ECC 회로들(ECC #1, ECC #2, ..., ECC #N)의 수도 그에 상응하여 증가하게 된다.
결국, 상기 채널의 수가 증가할수록 상기 ECC 회로 블락(27)이 차지하는 크기도 비례하여 커지게 됨으로써 상기 메모리 시스템의 제조 비용이 상승하게 된다.
따라서, 본 발명이 이루고자 하는 기술적 과제는 메모리 시스템에서 채널의 증가에도 사이즈가 커지지 않고, 비용의 상승을 방지할 수 있는 ECC 회로를 포함하는 메모리 시스템 및 그 구동 방법을 제공하는 것이다.
본 발명에 따른 메모리 시스템은 다수의 메모리 장치들; 상기 다수의 메모리 장치들을 제어하기 위한 컨트롤러; 및 상기 다수의 메모리 장치들과 상기 컨트롤러 사이에 접속되는 적어도 하나의 채널을 구비하며, 상기 컨트롤러는 버스; 호스트로부터 입력되는 라이트 데이터를 상기 버스로 인터페이스 하여 출력하고, 상기 버스 를 통하여 수신되는 리드 데이터를 상기 호스트로 인터페이스 하여 출력하는 호스트 인터페이스; 상기 다수의 메모리 장치들로 라이트하거나 또는 상기 다수의 메모리 장치들로부터 리드되는 데이터를 인터페이스 하기 위한 메모리 인터페이스 블락; 및 상기 호스트로부터 입력된 상기 라이트 데이터를 인코딩하거나, 상기 다수의 메모리 장치들로부터 독출된 리드 데이터를 디코딩하는 제1 버퍼 메모리 블락을 구비한다.
상기 제1 버퍼 메모리 블락은 호스트로부터 입력된 라이트 데이터 또는 상기 다수의 메모리 장치로부터 출력되는 리드 데이터를 일시 저장하기 위한 메모리 셀 어레이; 및 상기 메모리 셀 어레이로 입출력되는 라이트 데이터 또는 리드 데이터를 제어하기 위한 제1 버퍼 컨트롤러를 구비하며, 상기 제1 버퍼 컨트롤러는 ECC 회로를 포함하며, 상기 ECC 회로는 상기 메모리 셀 어레이로부터 출력되는 데이터를 인코딩하여 인코딩된 데이터를 상기 다수의 메모리 장치들로 출력하는 인코더 블락; 및 상기 다수의 메모리 장치들로부터 출력되는 리드 데이터의 오류를 검사하여 정정하기 위한 디코더 블락을 구비한다.
상기 제1 버퍼 메모리 블락은 인코딩된 라이트 데이터를 저장하거나 상기 다수의 메모리 장치로부터 출력되는 리드 데이터를 일시 저장하기 위한 메모리 셀 어레이; 및 상기 메모리 셀 어레이로 입출력되는 라이트 데이터 또는 리드 데이터를 제어하기 위한 제1 버퍼 컨트롤러를 구비하며, 상기 제1 버퍼 컨트롤러는 ECC 회로를 포함하며, 상기 ECC 회로는 상기 호스트로부터 출력되는 데이터를 인코딩하여 상기 메모리 셀 어레이로 출력하는 인코더 블락; 및 상기 다수의 메모리 장치들로 부터 출력되는 데이터의 오류를 검사하여 정정하기 위한 디코더 블락을 구비한다.
상기 제1 버퍼 메모리 블락은 호스트로부터 입력된 라이트 데이터 또는 상기 다수의 메모리 장치로부터 출력되는 리드 데이터를 일시 저장하기 위한 메모리 셀 어레이; 및 상기 메모리 셀 어레이로 입출력되는 라이트 데이터 또는 리드 데이터를 제어하기 위한 제1 버퍼 컨트롤러를 구비하며, 상기 제1 버퍼 컨트롤러는 ECC 회로를 포함하며, 상기 ECC 회로는 상기 라이트 데이터를 기초로하여 생성된 패리티 정보를 저장하기 위한 레지스터 블락; 상기 호스트로부터 입력된 라이트 데이터를 인코딩하여 상기 인코딩된 패리티 정보를 상기 레지스터 블락으로 출력하고, 상기 라이트 데이터는 상기 메모리 셀 어레이로 각각 출력하는 인코더 블락; 및 상기 다수의 메모리 장치들로부터 출력되는 데이터의 오류를 검사하여 정정하기 위한 디코더 블락을 구비한다. 상기 레지스터는 플립-플롭으로 구현될 수 있다.
상기 컨트롤러는 상기 다수의 메모리 장치들 중 적어도 어느 하나에 저장된 시스템 데이터를 독출하여 그 정보를 업데이트하기 위한 제2 버퍼 메모리 블락을 더 구비한다.
상기 제2 버퍼 메모리 블락은 상기 독출된 시스템 데이터를 저장하기 위한 메모리 셀 어레이; 및 상기 메모리 셀 어레이로 입출력되는 시스템 데이터를 제어하기 위한 제2 버퍼 컨트롤러를 구비하며, 상기 제2 버퍼 컨트롤러는 ECC 회로를 포함하며, 상기 ECC 회로는 상기 다수의 메모리 장치들 중 어느 하나로부터 독출된 상기 시스템 데이터를 수신하여 오류를 검사하여 정정하기 위한 디코더 블락; 및 오류가 정정된 상기 시스템 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인 코터 블락을 구비한다.
상기 디코더 블락은 상기 수신된 리드 데이터의 오류 유무를 검사하기 위한 오류 검출기; 및 상기 오류 검출기의 오류 검출 결과를 수신하여 상기 리드 데이터의 오류 정보를 파이프 라인 방식으로 계산하는 오류 정정기를 구비한다.
상기 디코더 블락은 블락 코드(Block code) 디코더, 비터비 코드(viterbi code) 디코더, 컨캐이트네이티드 코드(concatenated code) 디코더 중 어느 하나이다.
상기 다수의 메모리 장치들 각각은 하나의 메모리 셀에 다수의 데이터 비트를 저장하는 MLC(Multi Level Cell) 메모리 어레이로 구현된다.
본 발명에 따른 메모리 시스템의 오류 정정 방법은 (a) 호스트 인터페이스 블락이 호스트로부터 입력되는 라이트 데이터를 인터페이스하여 버스로 출력하는 단계; (b) 제1 버퍼 메모리 블락이 상기 버스를 통하여 호스트로부터 입력된 라이트 데이터를 수신하고, 상기 수신된 라이트 데이터를 인코딩하여 다수의 메모리 장치들 중 대응하는 메모리 장치로 출력하는 단계; (c) 메모리 인터페이스 블락이 상기 다수의 메모리 장치들로부터 리드 데이터를 독출하여 상기 제1 버퍼 메모리 블락으로 출력하는 단계; 및 (d) 상기 제1 버퍼 메모리 블락이 상기 메모리 장치로부터 출력되는 리드 데이터를 디코딩하여 상기 버스를 통하여 상기 호스트로 출력하는 단계를 구비한다.
상기 (b) 단계는 상기 호스트로부터 입력된 데이터가 상기 제1 버퍼 메모리 블락 내의 메모리 셀 어레이로 저장되는 단계; 인코더 블락이 상기 메모리 셀 어레 이로부터 출력되는 라이트 데이터를 인코딩하여 상기 메모리 장치로 출력하는 단계를 구비한다.
상기 (b) 단계는 인코더 블락이 상기 호스트로부터 출력되는 라이트 데이터를 인코딩하여 상기 제1 버퍼 메모리 블락 내의 메모리 셀 어레이로 출력하는 단계; 상기 인코더 블락으로부터 출력되는 인코딩된 라이트 데이터가 상기 메모리 셀 어레이에 저장되는 단계; 및 저장된 인코딩된 라이트 데이터가 상기 다수의 메모리 장치들로 출력되는 단계를 구비한다.
상기 (b) 단계는 인코더 블락이 상기 호스트로부터 출력되는 데이터를 인코딩하여 수신된 데이터와 인코딩된 패리티 정보를 각각 출력하는 단계; 레지스터 블락이 상기 패리티 정보를 저장하고, 메모리 셀 어레이가 상기 수신된 라이트 데이터를 각각 저장하는 단계; 및 저장된 패리티 정보와 상기 라이트 데이터를 상기 다수의 메모리 장치들로 출력하는 단계를 구비한다.
상기 (d) 단계는 디코더 블락이 상기 수신된 리드 데이터의 오류 정보를 검사하고 수정하여 상기 호스트로 출력하는 단계이다.
상기 (d) 단계는 오류 검출기가 상기 수신된 리드 데이터의 오류 정보를 검사하는 단계; 및 오류 정정기가 상기 오류 검출기의 오류 검출 결과를 수신하여 상기 리드 데이터의 오류 정보를 파이프 라인 방식으로 계산하여 출력하는 단계를 구비한다.
상기 디코더 블락은 블락 코드(Block code) 디코더, 비터비 코드(viterbi code) 디코더, 컨캐이트네이티드 코드(concatenated code) 디코더 중 어느 하나이 다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재번호를 나타낸다.
도 2는 본 발명의 실시예에 따른 메모리 시스템의 개략적인 블락도이다. 도 2를 참조하면, 상기 메모리 시스템(100)은 컨트롤러(200), 및 다수의 메모리 장치들(310, 320, ..., 330)을 포함하는 메모리 블락(300)을 구비한다.
상기 다수의 메모리 장치들(310, 320, ..., 330)은 적어도 하나의 채널(CH 0, CH1, ..., CH N)을 통하여 상기 컨트롤러(200)와 접속된다.
상기 다수의 메모리 장치들(310, 320, ...,330)은 NAND 플래시 칩, 및 NOR 플래시 칩으로 구현될 수 있다. 또한, 상기 다수의 메모리 장치들(310, 320, ..., 330)은 하나의 메모리 셀에 다수의 데이터 비트를 저장하는 MLC(Multi Level Cell) 또는 하나의 메모리 셀에 하나의 데이터 비트를 저장하는 SLC(Single Level Cell) 메모리 어레이로 구현될 수 있다.
상기 컨트롤러(200)는 호스트 인터페이스 블락(210), 제1 버퍼 메모리 블락(220), 제2 버퍼 메모리 블락(230), CPU(240), 및 메모리 인터페이스 블락(250)을 구비한다.
상기 호스트 인터페이스 블락(210)은 호스트(미도시)와의 인터페이스를 담당하며, 상기 호스트로부터 입력되는 라이트 데이터(write data)와 커맨드들을 수신하고, 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출된 리드 데이터(read data)들을 상기 호스트로 출력한다.
상기 CPU(240)는 상기 호스트로부터 입력된 커맨드에 기초하여 상기 컨트롤러(200)에 구비되는 장치들에 액세스하여 상기 리드 데이터 또는 상기 라이트 데이터의 데이터 전송을 제어한다.
상기 메모리 인터페이스 블락(250)은 DMA(Direct Memory Access; 251) 블락을 구비한다. 상기 DMA 블락(251)은 상기 CPU(240)의 명령에 기초하여 상기 호스트로부터 입력되어 상기 제1 버퍼 메모리 블락(220)에 저장된 라이트 데이터를 독출하여 상기 다수의 메모리 장치들(310, 320, ..., 330)로 출력하거나, 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 리드 데이터를 독출하여 상기 제1 버퍼 메모리 블락(220)으로 출력한다.
상기 제1 버퍼 메모리 블락(220)은 제1 버퍼 메모리 컨트롤러(221), 및 제1 메모리 셀 어레이(222)를 구비한다. 상기 제1 버퍼 메모리 컨트롤러(221)는 상기 시스템 버스를 통하여 상기 호스트로부터 입력되는 라이트 데이터, 또는 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출되어 상기 메모리 인터페이스 블락(250)으로부터 출력되는 리드 데이터를 상기 제1 메모리 셀 어레이(222)로 저장하는 것을 제어한다.
상기 제1 버퍼 메모리 컨트롤러(221)는 제1 ECC 회로 블락(223)을 포함한다. 상기 제1 ECC 회로 블락(223)은 상기 라이트 데이터를 인코딩하여 상기 다수의 메모리 장치들(310, 320, ..., 330)로 출력하거나, 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출되어 상기 호스트로 출력하기 위한 리드 데이터를 디코딩하여 출력한다.
상기 제2 버퍼 메모리 블락(230)은 제2 버퍼 메모리 컨트롤러(231), 및 제2 메모리 셀 어레이(232)를 구비한다. 상기 제2 버퍼 메모리 컨트롤러(231)는 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출된 시스템 데이터를 상기 제2 메모리 셀 어레이(232)로 저장하고, 상기 저장된 시스템 데이터를 상기 다수의 메모리 장치들(310, 320, ..., 330)로 출력하는 것을 제어한다.
상기 제2 버퍼 메모리 컨트롤러(231)는 제2 ECC 회로 블락(233)을 포함한다. 상기 제2 ECC 회로 블락(233)은 상기 수신되는 시스템 데이터를 디코딩하여 상기 시스템 데이터의 오류를 정정한다. 또한, 상기 제2 ECC 회로 블락(233)은 상기 제2 메모리 셀 어레이(232)에 저장된 정정된 시스템 데이터를 인코딩하여 상기 다수의 메모리 장치들(310, 320, ..., 330)로 출력한다.
결국, 도 1에 도시된 메모리 시스템과 비교해 보면, 본 발명의 따른 메모리 시스템(100)은 상기 컨트롤러(200)의 버퍼 메모리 블락(220, 230) 내에 ECC 회로(223, 233)를 구비함으로써, 상기 컨트롤러(200)와 상기 다수의 메모리 장치들(310, 320, ..., 330) 간의 채널 수에 영향을 받지 않고, 상기 메모리 시스템(100)에서의 리드 데이터 또는 라이트 데이터의 오류를 검출하고 정정할 수 있다.
도 3은 도 2에 도시된 제1 버퍼 메모리 블락의 실시예를 나타내는 도면이다. 도 2와 도 3을 참조하면, 상기 제1 버퍼 메모리 블락(220)은 제1 ECC 회로 블락(223)을 포함하는 제1 버퍼 메모리 컨트롤러(221), 및 제1 메모리 셀 어레이(222)를 구비한다.
상기 제1 메모리 셀 어레이(222)는 호스트로부터 입력된 라이트 데이터 또는 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출된 리드 데이터를 일시 저장한다.
상기 제1 ECC 회로 블락(223)은 제1 인코더 블락(224), 및 제1 디코더 블락(225)을 구비한다. 상기 제1 인코더 블락(224)은 상기 제1 버퍼 메모리 블락(220)의 출력 스테이지에 구비되어, 상기 메모리 시스템(100)이 라이트 모드일 경우, 상기 제1 메모리 셀 어레이(222)로부터 출력되는 라이트 데이터를 인코딩하여, 인코딩된 데이터(Encoded_data)를 출력한다.
상기 인코딩된 데이터(Encoded_data)는 상기 수신된 라이트 데이터(Write_data)를 기초로 하여 계산된 패리티 정보를 포함하는 데이터이다.
상기 디코더 블락(225)은 오류 검출기(226), 및 오류 정정기(227)를 구비한다. 상기 오류 검출기(226)는 상기 수신된 리드 데이터의 오류 유무를 검사하여 그 결과를 출력한다.
상기 오류 정정기(227)는 상기 오류 검사 결과를 수신하고, 수신된 오류 검사 결과에 기초하여 상기 오류가 발생한 리드 데이터의 오류를 정정하여 출력한다.
상기 인코더 블락(224)은 블락 코드(Block code) 인코더, 컨볼루션 코 드(Convolution code) 인코더, 또는 컨캐이트네이티드 코드(concatenated code) 인코더로 구현될 수 있고, 상기 디코더 블락(225)는 블락 코드(Block code) 디코더, 비터비 코드(Viterbi code) 디코더, 또는 컨캐이트네이티드 코드(concatenated code) 디코더로 구현될 수 있다.
도 4는 도 2에 도시된 제1 버퍼 메모리 블락의 다른 실시예를 나타낸다. 도 2와 도 4를 참조하면, 상기 제1 버퍼 메모리 블락(220-1)은 제1 ECC 회로(223-1)를 포함하는 제1 버퍼 메모리 컨트롤러(221-1), 및 제1 메모리 셀 어레이(222-1)를 구비한다.
상기 제1 메모리 셀 어레이(222-1)는 호스트로부터 입력된 라이트 데이터 또는 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출된 리드 데이터를 일시 저장한다.
상기 제1 ECC 회로 블락(223-1)은 제1 인코더 블락(224-1), 및 제1 디코더 블락(225-1)을 구비한다. 상기 제1 인코더 블락(224-1)은 상기 제1 버퍼 메모리 블락(220-1)의 입력 스테이지에 구비되어, 상기 메모리 시스템(100)이 라이트 모드일 경우, 상기 호스트로부터 입력되는 라이트 데이터를 인코딩하여, 인코딩된 라이트 데이터를 출력한다.
상기 제1 메모리 셀 어레이(222-1)는 상기 제1 인코더 블락(223-1)으로부터 출력된 인코딩된 라이트 데이터를 저장한다. 즉, 상기 제1 메모리 셀 어레이(222-1)는 상기 호스트로부터 입력된 라이트 데이터(Write_data) 및 상기 라이트 데이터에 기초하여 계산된 패리티 정보(Parity)를 포함하는 데이터를 저장할 수 있다.
상기 디코더 블락(225-1)은 오류 검출기(226-1), 및 오류 정정기(227-1)를 구비한다. 상기 오류 검출기(226-1)는 상기 메모리 시스템(100)이 리드 동작을 수행할 경우 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출된 리드 데이터의 오류 유무를 검사하여 그 결과를 출력한다.
상기 오류 정정기(227-1)는 상기 오류 검사 결과를 수신하고, 수신된 오류 검사 결과에 기초하여 상기 오류가 발생한 리드 데이터의 오류를 정정하여 출력한다.
상기 인코더 블락(224-1)은 블락 코드(Block code) 인코더, 컨볼루션 코드(Convolution code) 인코더, 또는 컨캐이트네이티드 코드(concatenated code) 인코더로 구현될 수 있고, 상기 디코더 블락(225-1)는 블락 코드(Block code) 디코더, 비터비 코드(Viterbi code) 디코더, 또는 컨캐이트네이티드 코드(concatenated code) 디코더로 구현될 수 있다.
도 5는 본 발명에 따른 제1 버퍼 메모리 블락의 또 다른 실시예를 나타낸다. 도 2와 도 5를 참조하면, 상기 제1 버퍼 메모리 블락(220-2)은 제1 ECC 회로(223-2)를 포함하는 제1 버퍼 메모리 컨트롤러(221-2), 및 제1 메모리 셀 어레이(222-2)를 구비한다.
상기 제1 메모리 셀 어레이(222-2)는 호스트로부터 입력된 라이트 데이터(Write_data) 또는 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출된 리드 데이터(Read_data)를 일시 저장한다.
상기 제1 ECC 회로 블락(223-2)은 제1 인코더 블락(224-2), 레지스터 블 락(228), 및 제1 디코더 블락(225-2)을 구비한다.
본 발명의 실시예에서는 상기 레지스터 블락(228)을 상기 제1 ECC 회로 블락(223-2)에 구현하였으나, 상기 레지스터 블락(228)은 상기 1 ECC 회로 블락(223-2) 외부의 제1 버퍼 메모리 컨트롤러(221-2)에 구현될 수 있다.
상기 제1 인코더 블락(224-2)은 상기 제1 버퍼 메모리 블락(220-2)의 입력 스테이지에 구비되어, 상기 메모리 시스템(100)이 라이트 동작을 수행을 할 경우, 상기 호스트로부터 입력되는 라이트 데이터(Write_data)를 인코딩하여, 인코딩된 라이트 데이터(Encoded_data)를 출력한다.
상기 레지스터 블락(228)은 상기 인코더 블락(224-2)으로부터 출력되는 인코딩된 라이트 데이터(Encoded_data) 중에서 패리티 정보(Parity)만을 수신하여 저장한다. 상기 레지스터 블락(228)은 플립-플롭(Flip-Flop)으로 구현될 수 있다.
상기 제1 메모리 셀 어레이(222-2)는 상기 제1 인코더 블락(224-2)으로부터 출력되는 인코딩된 데이터 중에서 라이트 데이터(Write_data)만을 수신하여 저장한다.
상기 레지스터 블락(228)에 저장된 상기 패리티 정보(Parity)는 상기 제1 메모리 셀 어레이(222-2)에 저장된 상기 라이트 데이터(Write_data)가 상기 다수의 메모리 장치들(310, 320, ..., 330)로 출력될 때 동시에 출력된다.
상기 디코더 블락(225-2)은 오류 검출기(226-2), 및 오류 정정기(227-2)를 구비한다. 상기 오류 검출기(226-2)는 상기 메모리 시스템(100)이 리드 동작을 수행할 경우 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출된 리드 데 이터(Read_data)의 오류 유무를 검사하여 그 결과를 출력한다.
상기 오류 정정기(227-2)는 상기 오류 검사 결과를 수신하고, 수신된 오류 검사 결과에 기초하여 상기 오류가 발생한 리드 데이터의 오류를 정정하여 출력한다.
상기 인코더 블락(224-2)은 블락 코드(Block code) 인코더, 컨볼루션 코드(Convolution code) 인코더, 또는 컨캐이트네이티드 코드(concatenated code) 인코더로 구현될 수 있고, 상기 디코더 블락(225-2)은 블락 코드(Block code) 디코더, 비터비 코드(Viterbi code) 디코더, 또는 컨캐이트네이티드 코드(concatenated code) 디코더로 구현될 수 있다.
도 6은 도 2에 도시된 제2 버퍼 메모리 블락의 일 실시예이다. 도 2와 도 6을 참조하면, 도 2 내지 도 6에 도시된 제2 버퍼 메모리 블락은(230)은 제2 ECC 회로 블락(233)을 포함하는 제2 버퍼 메모리 컨트롤러(231), 및 제2 메모리 셀 어레이(232)를 구비한다.
상기 메모리 시스템(100)은 상기 다수의 메모리 장치들(310, 320, ..., 330) 중 적어도 어느 하나에 시스템 데이터(System data)를 저장한다.
상기 메모리 시스템(100)은 상기 시스템 데이터를 독출하여 상기 제2 버퍼 메모리 블락(230)에 저장하여 상기 시스템 데이터의 업데이트를 수행하고, 상기 업데이트가 완료되면 다시 상기 다수의 메모리 장치들 중 어느 하나로 출력하여 저장한다. 즉, 상기 제2 버퍼 메모리 블락(230)은 상기 시스템 데이터를 일시 저장하기 위한 시스템 버퍼 메모리 블락이다.
상기 제2 버퍼 메모리 컨트롤러(231)는 상기 다수의 메모리 장치들(310, 320, ..., 330)로부터 독출된 시스템 데이터를 상기 제2 메모리 셀 어레이(232)로 저장하고, 상기 저장된 시스템 데이터를 상기 다수의 메모리 장치들(310, 320, ..., 330)로 출력하는 것을 제어한다.
상기 제2 ECC 회로 블락(233)은 제2 디코더 블락(235), 및 제2 인코더 블락(234)을 구비한다. 상기 제2 디코더 블락(235)은 상기 다수의 메모리 장치들(310, 320, ..., 330) 중 어느 하나로부터 출력되는 상기 리드 시스템 데이터(Read_System_Data)를 수신하여 상기 시스템 데이터의 오류를 검사하고 정정한다.
상기 제2 디코더 블락(235)은 제2 오류 검출기(236), 및 제2 오류 정정기(237)를 구비한다. 상기 오류 검출기(236)는 상기 메모리 시스템(100)이 리드 동작 시 상기 다수의 메모리 장치들(310, 320, ...,330)로부터 독출된 리드 시스템 데이터(Read_System_data)의 오류 유무를 검사하여 그 결과를 출력한다.
상기 오류 정정기(237)는 상기 오류 검사 결과에 기초하여 상기 리드된 시스템 데이터(Read_System_data)의 오류를 정정하여 상기 제2 메모리 셀 어레이(232)로 출력한다.
상기 오류 정정이 완료되면 상기 메모리 시스템(100)은 상기 제2 메모리 셀 어레이(232)에 저장된 상기 시스템 데이터를 업데이트하고, 업데이트된 시스템 데이터를 상기 다수의 메모리 장치들(310, 320, ..., 330) 중 어느 하나로 출력하여 다시 저장한다.
상기 제2 인코더 블락(234)은 상기 제2 버퍼 메모리 컨트롤러(231)의 출력 스테이지에 구비되어 상기 제2 메모리 셀 어레이(232)로부터 출력되는 상기 업데이트된 시스템 데이터를 인코딩하여 상기 메모리 장치들(310, 320, ..., 330)로 인코딩된 시스템 데이터(Encoded_System_data)를 출력한다.
상기 제2 인코더 블락(234)은 블락 코드(Block code) 인코더, 컨볼루션 코드(Convolution code) 인코더, 또는 컨캐이트네이티드 코드(concatenated code) 인코더로 구현될 수 있고, 상기 디코더 블락(235)는 블락 코드(Block code) 디코더, 비터비 코드(Viterbi code) 디코더, 또는 컨캐이트네이티드 코드(concatenated code) 디코더로 구현될 수 있다.
도 7은 도 3 내지 도 6에 도시된 디코더 블락의 일 실시예를 나타내는 도면이다. 좀더 자세히 말하면, 상기 디코더 블락이 블락 코드 디코더로 구현된 예를 나타내는 도면이다. 도 3 내지 도 6에 도시된 디코더 블락들(225, 225-1, 225-2, 및 235)은 도 7에 도시된 디코더 블락과 동일하게 구현될 수 있으므로 설명의 간략함을 위하여 도 3에 도시된 디코더 블락의 실시예를 참조하여 설명하고자 한다.
도 3과 도 7을 참조하면, 상기 디코더 블락(225)은 오류 검출기(51, 52), 선택 블락(53), 및 오류 정정기(54)를 구비한다.
상기 오류 검출기들(51, 52) 각각은 입력된 리드 데이터의 오류를 검사한다. 즉, 블락 코드(Block code) 디코더 방식에서 상기 리드 데이터의 신드롬을 계산하고 계산된 신드롬 결과에 기초하여 상기 리드 데이터의 오류 발생 유무를 판단한다.
상기 리드 데이터에 오류가 발생하면, 상기 메모리 시스템(100)은 상기 제1 버퍼 메모리에 저장된 데이터의 호스트로의 전송을 중지하고, 상기 오류 정정 모드로 진입하게 된다.
상기 선택 블락(53)은 상기 다수의 오류 검출기(예컨대, 신드롬 계산 블락)들 각각으로부터 계산되어 출력되는 신드롬 계산 결과를 수신하고, 수신된 계산 결과 중에서 어느 하나를 선택하여 순차적으로 출력한다.
상기 디코더 블락(225)은 상기 선택 블락(53)으로부터 출력되는 신드롬 계산 결과를 수신하고, 상기 수신된 신드롬 계산 결과에 기초하여 상기 리드 데이터의 오류 정보를 계산하여 오류를 정정한다.
상기 오류 정정기(54)는 KES 블락(55), CS 블락(56), 및 EE 블락(57)을 구비한다. 상기 KES 블락(55), CS 블락(56), 및 EE 블락(57)은 파이프 라인 모드로 동작함으로써 상기 다수의 채널(CH 0, CH 1,..CH N)을 통하여 수신되는 데이터를 빠른 동작 속도로 오류를 계산하여 정정하게 된다.
도 8은 도 7에 도시된 디코더 블락의 파이프 라인 동작을 설명하기 위한 도면이다. 도 7과 도 8을 참조하면, 상기 다수의 오류 검출기들(51, 52) 각각은 다수의 메모리 장치들(310, 320)로부터 출력되어 다수의 채널들(CH0, CH1)을 통하여 수신되는 리드된 데이터를 수신하여 상기 리드된 데이터의 오류 여부를 검사하기 위한 신드롬을 계산하여 출력한다.
설명의 용이함을 위하여 본 발명의 실시예에서는 상기 메모리 시스템이 2개의 채널(CH0, CH1)로 구현되고, 상기 각각의 채널을 통하여 리드된 데이터에 모두 오류가 발생한 경우를 예로 들어 설명하고자 한다.
상기 2개의 채널(CH0, CH1)을 통하여 리드된 데이터에서 모두 오류가 발생하게 되면, 상기 선택 블락(53)은 상기 제1 오류 검출기(51), 및 상기 제2 오류 검출기(52)로부터 출력되는 신드롬 계산 결과(신드롬 데이터)를 수신하여 먼저 제1 데이터(#1)에 대한 신드롬 데이터를 상기 디코더 블락(54)으로 출력한다.
상기 디코더 블락(54)은 상기 신드롬 데이터를 수신하여 오류 수정 모드로 진입하게 된다. 상기 디코더 블락(54)이 오류 수정 모드로 진입하게 되면, 상기 KES(55) 블락은 도 2에 도시된 제1 버퍼 메모리 블락(220)에 미리 저장된 제1 데이터(#1)에 대하여 산출된 신드롬 데이터를 이용하여 미리 결정된 오류 위치 방정식의 계수를 산출하는 'key equation'을 수행한다.
상기 KES 블락(55)의 동작이 완료되면, 상기 CS 블락(56)은 상기 'key equation' 결과를 이용하여 상기 제1 데이터(#1)에 대한 오류 위치 방정식의 해를 구하는 'chien search' 알고리즘을 수행한다.
이때, 상기 CS 블락(56)이 제1 데이터(#1)에 대한 'chien search' 알고리즘을 수행하는 동안, 상기 선택 블락(53)은 상기 제2 데이터(#2)에 대한 신드롬 계산 결과를 상기 KES 블락(55)으로 출력하게 된다.
상기 KES 블락(55)은 상기 제2 데이터(#2)에 대한 신드롬 데이터에 기초하여 제2 데이터(#2)에 대한 오류 위치 방적식의 계수를 산출하는 'key equation'을 수행한다.
상기 CS 블락(56)의 동작이 완료되면, 상기 EE 블락(57)은 상기 제1 데이 터(#1)에 대한 'chien search' 알고리즘 결과를 이용하여 제1 데이터(#1)에 대한 오류 위치를 표시하기 위한 'error evaluate' 알고리즘을 수행하여 그 결과를 출력한다.
상기 제1 버퍼 메모리 컨트롤러(221)는 상기 EE 블락(57)으로부터 출력되는 제1 데이터(#1)에 대한 오류 정보(즉, 오류 위치 정보)에 기초하여 상기 제1 버퍼 메모리 블락(220)에 저장된 제1 데이터(#1)에 대한 오류를 수정하고, 상기 제1 버퍼 메모리 블락(220)은 수정된 리드 데이터를 호스트로 출력하게 된다.
이때, 상기 CS 블락(56)이 상기 제1 데이터(#1)에 대한 'chien search' 동작이 완료되면, 상기 CS 블락(56)은 상기 제2 데이터(#2)에 대한 'key equation' 결과를 수신하고, 상기 제1 버퍼 메모리(220)에 저장되어 있는 제2 데이터(#2)에 대한 'chien search' 알고리즘을 수행한다.
상기 CS 블락(56)이 제2 데이터(#2)에 대한 'chien search' 동작을 수행하는 하게 되면, 상기 KES 블락(55)은 상기 제1 채널(CH 0)로부터 출력되는 제3 데이터(#3)에 대한 신드롬 데이터를 수신하여 제3 데이터(#3)에 대한 오류 방정식의 계수를 구하기 위한 'key equation'을 수행한다.
상기 CS 블락(56)의 동작이 완료되면, 상기 EE 블락(57)은 상기 제2 데이터(#2)에 대한 'chien search' 결과에 기초하여 'error evaluate' 알고리즘을 수행함으로써 상기 제2 데이터(#2)에 대한 오류 정보를 계산하여 출력하고, 상기 오류 정보에 기초하여 상기 제1 버퍼 메모리 컨트롤러(221)는 상기 제1 버퍼 메모리 블락(220)에 저장된 제2 데이터(#2)에 대한 오류를 수정하고, 상기 제1 버퍼 메모리 블락(220)은 수정된 리드 데이터를 호스트로 출력하게 된다.
상기 제1 데이터(#1) 및 제3 데이터(#3)는 제1 채널(CH0)을 통하여 제1 메모리 장치(310)로부터 리드된 데이터일 수 있고, 상기 제2 데이터(#2)는 제2 채널(CH1)을 통해 제2 메모리 장치(320)로부터 리드된 데이터일 수 있다.
도 9는 도 3 내지 도 6에 도시된 디코더 블락의 다른 실시예를 나타내는 도면이다. 좀더 자세히 설명하면, 상기 디코더 블락이 비터비 코드 디코더로 구현된 예를 나타내는 도면이다.
도 3 내지 도 6에 도시된 디코더 블락들은(225, 225-1, 225-2, 및 235))은 동일한 방법으로 구현될 수 있으므로 설명의 간략함을 위하여 도 3에 도시된 디코더 블락의 실시예를 참조하여 설명하고자 한다.
도 3과 도 9를 참조하면, 상기 디코더 블락(225)은 오류 검출기(61, 62), 선택 블락(63), 및 오류 정정기(64)를 구비한다.
상기 디코더 블락(225)이 비터비 코드 디코더로 구현된 경우, 상기 오류 검출기(61, 62)는 BMC(Branch Matrics Calculator) 블락으로 구현되고, 상기 오류 정정기(64)는 ACS(Add-Compare-Select) 블락(65), SMM(State Metrics Memory) 블락(66), 및 SPM(Survivor Path Memory) 블락(67)을 포함하여 구현된다.
상기 BMC 블락들(61, 62) 각각은 상기 다수의 메모리 장치들(310, 320, 330)로부터 출력되는 리드 데이터의 브랜치 매트릭스를 계산하여 출력한다.
상기 선택 블락(63)은 상기 오류 검출기들(예컨대, 브랜치 매트릭스 계산 블락(BMC)들) 각각으로부터 계산되어 출력되는 브랜치 매드릭스 계산 결과를 수신하 고, 수신된 계산 결과 중에서 어느 하나를 선택하여 순차적으로 출력한다.
상기 ACS 블락(65)은 브랜치 매트릭스 계산 결과를 수신하고, SMM 블락(66)에 미리 저장된 상태 매트릭스 값을 더하여 원래의 데이터 패스에 근접한 값을 새로운 상태 매트릭스 값으로 출력한다.
상기 SMM 블락(66)은 상기 ACS 블락(65)으로부터 출력되는 새로운 상태 매트릭스 값을 수신하여, 저장된 상태 매트릭스를 업데이트 한다.
상기 SPM 블락(67)은 상기 ACS 블락(65)으로부터 출력되는 상태 매트릭스 중에서 살아남은 경로(즉, 서바이벌 패스)만을 저장하여 출력함으로써 상기 리드 데이터의 오류를 정정하여 출력한다.
도 10은 도 9에 도시된 디코더 블락의 파이프 라인 동작을 설명하기 위한 타이밍 도이다. 도 9와 도 10을 참조하면, 상기 BMC 블락은 상기 메모리 장치들로부터 출력되어 상기 다수의 채널을 통하여 수신되는 리드 데이터의 브랜치 매트릭스(Branch Matrics)를 계산하여 출력한다.
설명의 용이함을 위하여 본 발명의 실시예에서는 상기 메모리 시스템이 2개의 채널(CH0, CH1)로 구현되고, 상기 각각의 채널을 통하여 리드된 데이터에 모두 오류가 발생한 경우를 예로 들어 설명하고자 한다.
상기 각각의 채널(CH 0, CH 1)을 통하여 리드된 데이터에서 오류가 발생하게 되면, 상기 선택 블락(63)은 상기 각각의 BMC 블락들(61, 62)로부터 출력되는 브랜치 매트릭스 계산 결과를 수신하여 먼저 제1 데이터(#1)에 대한 브랜치 매트릭스 계산 결과를 상기 오류 정정기(64)로 출력한다.
상기 오류 정정기(64)는 상기 브랜치 매트릭스 계산 결과를 수신하여 오류 정정 모드로 진입하게 된다. 상기 오류 정정기(64)가 오류 정정 모드로 진입하게 되면, 상기 ACS 블락(65)은 수신된 제1 데이터(#1)에 대한 브랜치 매트릭스 계산 결과와 상기 SMM 블락(66)에 미리 저장된 상태 매트릭스 값을 더하여 원래의 데이터 패스에 근접한 값을 새로운 상태 매트릭스 값으로 출력한다.
상기 ACS 블락(65)와 SMM 블락(66)의 동작이 완료되면, 상기 SPM 블락(67)은 상기 제1 데이터(#1)에 대한 서바이벌 패스를 구하기 시작한다.
이때, 상기 ACS 블락(65)과 상기 SMM 블락(66)은 제2 데이터(#2)에 대한 브랜치 매트릭스 값을 수신하여 ACS 블락(65)과 상기 SMM 블락(66)이 제2 데이터(#2)에 대한 브랜치 매트릭스 계산 결과와 상기 SMM 블락(66)에 저장된 제2 데이터(#2)에 대한 상태 매트릭스 값을 더하여 원래의 데이터 패스에 근접한 값을 새로운 상태 매트릭스 값을 출력한다.
상기 SPM 블락(67)이 제1 데이터(#1)에 대한 서바이벌 패스를 구하여 출력을 완료하면, 상기 SPM 블락(67)은 제2 데이터(#2)에 대한 서바이벌 패스를 구하여 출력한다.
즉, 상기 디코더 블락(225)은 제1 채널(CH 0)과 제2 채널(CH 1)을 통하여 수신되는 리드 데이터를 파이프 라인 모드로 오류를 검출하고 정정하여 출력하게 된다.
이상 도 7 내지 도 10을 참조하여 상기 디코더 블락(225)이 블락 코드 디코더 또는 비터비 코드 디코더로 구현된 예를 들어 설명하였으나, 상기 디코더 블 락(225)은 상기 블락 코드 방식과 비터비 코드 방식을 함께 사용하는 컨테이트네이티드 코드 방식을 사용하여 구현될 수 있다.
이상 상술한 본 발명에 따른 메모리 시스템은 메모리 카드, 플래시 카드, 플래시 하드 디스크 드라이브로 구현될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 메모리 시스템은 오류를 검출하고 정정하기 위한 ECC 회로 블락을 버퍼 메모리 블락에 구현함으로써 채널 증가에 따른 상기 메모리 시스템의 크기가 증가하는 것을 방지할 수 있고, 고속으로 데이터를 처리할 수 있는 효과가 있다.
Claims (17)
- 다수의 메모리 장치들;상기 다수의 메모리 장치들을 제어하기 위한 컨트롤러; 및상기 다수의 메모리 장치들과 상기 컨트롤러 사이에 접속되는 적어도 하나의 채널을 구비하며,상기 컨트롤러는,버스;호스트로부터 입력되는 라이트 데이터를 상기 버스로 인터페이스 하여 출력하고, 상기 버스를 통하여 수신되는 리드 데이터를 상기 호스트로 인터페이스 하여 출력하는 호스트 인터페이스;상기 다수의 메모리 장치들로 라이트하거나 또는 상기 다수의 메모리 장치들로부터 리드되는 데이터를 인터페이스 하기 위한 메모리 인터페이스 블락; 및상기 호스트로부터 입력된 상기 라이트 데이터를 인코딩하거나, 상기 다수의 메모리 장치들로부터 독출된 리드 데이터를 디코딩하는 제1 버퍼 메모리 블락을 구비하는 메모리 시스템.
- 제1항에 있어서,상기 제1 버퍼 메모리 블락은,호스트로부터 입력된 라이트 데이터 또는 상기 다수의 메모리 장치로부터 출 력되는 리드 데이터를 일시 저장하기 위한 메모리 셀 어레이; 및상기 메모리 셀 어레이로 입출력되는 라이트 데이터 또는 리드 데이터를 제어하기 위한 제1 버퍼 컨트롤러를 구비하며,상기 제1 버퍼 컨트롤러는,ECC 회로를 포함하며,상기 ECC 회로는,상기 메모리 셀 어레이로부터 출력되는 데이터를 인코딩하여 인코딩된 데이터를 상기 다수의 메모리 장치들로 출력하는 인코더 블락; 및상기 다수의 메모리 장치들로부터 출력되는 리드 데이터의 오류를 검사하여 정정하기 위한 디코더 블락을 구비하는 메모리 시스템.
- 제1항에 있어서,상기 제1 버퍼 메모리 블락은,인코딩된 라이트 데이터를 저장하거나 상기 다수의 메모리 장치로부터 출력되는 리드 데이터를 일시 저장하기 위한 메모리 셀 어레이; 및상기 메모리 셀 어레이로 입출력되는 라이트 데이터 또는 리드 데이터를 제어하기 위한 제1 버퍼 컨트롤러를 구비하며,상기 제1 버퍼 컨트롤러는,ECC 회로를 포함하며,상기 ECC 회로는,상기 호스트로부터 출력되는 데이터를 인코딩하여 상기 메모리 셀 어레이로 출력하는 인코더 블락; 및상기 다수의 메모리 장치들로부터 출력되는 데이터의 오류를 검사하여 정정하기 위한 디코더 블락을 구비하는 메모리 시스템.
- 제1항에 있어서,상기 제1 버퍼 메모리 블락은,호스트로부터 입력된 라이트 데이터 또는 상기 다수의 메모리 장치로부터 출력되는 리드 데이터를 일시 저장하기 위한 메모리 셀 어레이; 및상기 메모리 셀 어레이로 입출력되는 라이트 데이터 또는 리드 데이터를 제어하기 위한 제1 버퍼 컨트롤러를 구비하며,상기 제1 버퍼 컨트롤러는,ECC 회로를 포함하며,상기 ECC 회로는,상기 라이트 데이터를 기초로하여 생성된 패리티 정보를 저장하기 위한 레지스터 블락;상기 호스트로부터 입력된 라이트 데이터를 인코딩하여 상기 인코딩된 패리티 정보를 상기 레지스터 블락으로 출력하고, 상기 라이트 데이터는 상기 메모리 셀 어레이로 각각 출력하는 인코더 블락; 및상기 다수의 메모리 장치들로부터 출력되는 데이터의 오류를 검사하여 정정 하기 위한 디코더 블락을 구비하는 메모리 시스템
- 제4항에 있어서,상기 레지스터는 플립-플롭으로 구현된 메모리 시스템.
- 제1항 내지 제5항 중 어느 한 항에 있어서,상기 컨트롤러는,상기 다수의 메모리 장치들 중 적어도 어느 하나에 저장된 시스템 데이터를 독출하여 그 정보를 업데이트하기 위한 제2 버퍼 메모리 블락을 더 구비하는 메모리 시스템.
- 제6항에 있어서,상기 제2 버퍼 메모리 블락은,상기 독출된 시스템 데이터를 저장하기 위한 메모리 셀 어레이; 및상기 메모리 셀 어레이로 입출력되는 시스템 데이터를 제어하기 위한 제2 버퍼 컨트롤러를 구비하며,상기 제2 버퍼 컨트롤러는,ECC 회로를 포함하며,상기 ECC 회로는,상기 다수의 메모리 장치들 중 어느 하나로부터 독출된 상기 시스템 데이터 를 수신하여 오류를 검사하여 정정하기 위한 디코더 블락; 및오류가 정정된 상기 시스템 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코터 블락을 구비하는 메모리 시스템.
- 제1항 내지 제5항 중 어느 한 항에 있어서,상기 디코더 블락은,상기 수신된 리드 데이터의 오류 유무를 검사하기 위한 오류 검출기; 및상기 오류 검출기의 오류 검출 결과를 수신하여 상기 리드 데이터의 오류 정보를 파이프 라인 방식으로 계산하는 오류 정정기를 구비하는 메모리 시스템.
- 제8항에 있어서,상기 디코더 블락은,블락 코드(Block code) 디코더, 비터비 코드(viterbi code) 디코더, 컨캐이트네이티드 코드(concatenated code) 디코더 중 어느 하나인 메모리 시스템.
- 제1항 내지 제5항 중 어느 한 항에 있어서,상기 다수의 메모리 장치들 각각은 하나의 메모리 셀에 다수의 데이터 비트를 저장하는 MLC(Multi Level Cell) 메모리 어레이로 구현된 메모리 시스템.
- (a) 호스트 인터페이스 블락이 호스트로부터 입력되는 라이트 데이터를 인터 페이스하여 버스로 출력하는 단계;(b) 제1 버퍼 메모리 블락이 상기 버스를 통하여 상기 호스트로부터 입력된 라이트 데이터를 수신하고, 상기 수신된 라이트 데이터를 인코딩하여 다수의 메모리 장치들 중 대응하는 메모리 장치로 출력하는 단계; 및(c) 메모리 인터페이스 블락이 상기 다수의 메모리 장치들로부터 리드 데이터를 독출하여 상기 제1 버퍼 메모리 블락으로 출력하는 단계; 및(d) 상기 제1 버퍼 메모리 블락이 상기 다수의 메모리 장치들로부터 출력되는 리드 데이터를 디코딩하여 상기 버스를 통하여 상기 호스트로 출력하는 단계를 구비하는 메모리 시스템의 오류 정정 방법.
- 제11항에 있어서,상기 (b) 단계는,상기 호스트로부터 입력된 데이터가 상기 제1 버퍼 메모리 블락 내의 메모리 셀 어레이로 저장되는 단계;인코더 블락이 상기 메모리 셀 어레이로부터 출력되는 라이트 데이터를 인코딩하여 상기 다수의 메모리 장치들로 출력하는 단계를 구비하는 메모리 시스템의 오류 정정 방법.
- 제11항에 있어서,상기 (b) 단계는,인코더 블락이 상기 호스트로부터 출력되는 라이트 데이터를 인코딩하여 상기 제1 버퍼 메모리 블락 내의 메모리 셀 어레이로 출력하는 단계;상기 인코더 블락으로부터 출력되는 인코딩된 라이트 데이터가 상기 메모리 셀 어레이에 저장되는 단계; 및저장된 인코딩된 라이트 데이터가 상기 다수의 메모리 장치들로 출력되는 단계를 구비하는 메모리 시스템의 오류 정정 방법.
- 제11항에 있어서,상기 (b) 단계는,인코더 블락이 상기 호스트로부터 출력되는 데이터를 인코딩하여 수신된 데이터와 인코딩된 패리티 정보를 각각 출력하는 단계;레지스터 블락이 상기 패리티 정보를 저장하고, 메모리 셀 어레이가 상기 수신된 라이트 데이터를 각각 저장하는 단계; 및저장된 패리티 정보와 상기 라이트 데이터를 상기 다수의 메모리 장치들로 출력하는 단계를 구비하는 메모리 시스템의 오류 정정 방법.
- 제11항 내지 제14항 중 어느 한 항에 있어서,상기 (d) 단계는,디코더 블락이 상기 수신된 리드 데이터의 오류 정보를 검사하고 수정하여 상기 호스트로 출력하는 단계인 메모리 시스템의 오류 정정 방법.
- 제15항에 있어서,상기 (d) 단계는,오류 검출기가 상기 수신된 리드 데이터의 오류 정보를 검사하는 단계; 및오류 정정기가 상기 오류 검출기의 오류 검출 결과를 수신하여 상기 리드 데이터의 오류 정보를 파이프 라인 방식으로 계산하여 출력하는 단계를 구비하는 메모리 시스템의 오류 정정 방법.
- 제15항에 있어서,상기 디코더 블락은,블락 코드(Block code) 디코더, 비터비 코드(viterbi code) 디코더, 컨캐이트네이티드 코드(concatenated code) 디코더 중 어느 하나인 메모리 시스템의 오류 정정 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070054620A KR100921748B1 (ko) | 2007-06-04 | 2007-06-04 | Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법 |
JP2008147195A JP2008299855A (ja) | 2007-06-04 | 2008-06-04 | エンベデッドメモリを利用したマルチチャンネルエラー訂正コーダを備えたメモリシステム及びその方法 |
US12/132,692 US20090024902A1 (en) | 2007-06-04 | 2008-06-04 | Multi-channel error correction coder architecture using embedded memory |
TW097120788A TW200907994A (en) | 2007-06-04 | 2008-06-04 | Multi-channel error correction coder architecture using embedded memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070054620A KR100921748B1 (ko) | 2007-06-04 | 2007-06-04 | Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080106775A true KR20080106775A (ko) | 2008-12-09 |
KR100921748B1 KR100921748B1 (ko) | 2009-10-15 |
Family
ID=40173269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070054620A KR100921748B1 (ko) | 2007-06-04 | 2007-06-04 | Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20090024902A1 (ko) |
JP (1) | JP2008299855A (ko) |
KR (1) | KR100921748B1 (ko) |
TW (1) | TW200907994A (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012099434A3 (en) * | 2011-01-20 | 2012-11-22 | Taejin Info Tech Co., Ltd. | Sas-based semiconductor storage device memory disk unit |
WO2012169823A2 (en) * | 2011-06-08 | 2012-12-13 | Taejin Info Tech Co., Ltd. | Semiconductor storage device memory disk unit with programmable host interface |
WO2012169820A2 (en) * | 2011-06-08 | 2012-12-13 | Taejin Info Tech Co., Ltd. | Semiconductor storage device memory disk unit with multiple host interfaces |
WO2013005995A2 (en) * | 2011-07-06 | 2013-01-10 | Taejin Info Tech Co., Ltd. | Redundant array of independent disk (raid) controlled semiconductor storage device (ssd)-based system having a high-speed non-volatile host interface |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101466694B1 (ko) * | 2007-08-28 | 2014-11-28 | 삼성전자주식회사 | Ecc 회로, ecc 회로를 구비하는 메모리 시스템 및그의 오류 정정 방법 |
US8438455B2 (en) * | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
US8468417B2 (en) | 2009-02-18 | 2013-06-18 | Micron Technology, Inc. | Data integrity in memory controllers and methods |
US8510631B2 (en) * | 2009-11-24 | 2013-08-13 | Mediatek Inc. | Multi-channel memory apparatus and method thereof |
US8898511B2 (en) | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Homogeneous recovery in a redundant memory system |
US8484529B2 (en) | 2010-06-24 | 2013-07-09 | International Business Machines Corporation | Error correction and detection in a redundant memory system |
US8631271B2 (en) | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US8549378B2 (en) * | 2010-06-24 | 2013-10-01 | International Business Machines Corporation | RAIM system using decoding of virtual ECC |
JP2012155541A (ja) * | 2011-01-26 | 2012-08-16 | Toshiba Corp | データ記憶装置、メモリ制御装置及びメモリ制御方法 |
US8522122B2 (en) | 2011-01-29 | 2013-08-27 | International Business Machines Corporation | Correcting memory device and memory channel failures in the presence of known memory device failures |
WO2013095672A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Multi-register gather instruction |
TWI486963B (zh) * | 2012-11-08 | 2015-06-01 | Jmicron Technology Corp | 錯誤檢查及校正方法以及錯誤檢查及校正電路 |
CN103824598B (zh) * | 2012-11-19 | 2017-02-22 | 联芸科技(杭州)有限公司 | 错误检查及校正方法以及错误检查及校正电路 |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10552070B2 (en) | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10761983B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10866859B1 (en) * | 2019-05-28 | 2020-12-15 | Silicon Motion, Inc. | Non-volatile memory accessing method using data protection with aid of look-ahead processing, and associated apparatus |
CN110971244A (zh) * | 2019-10-18 | 2020-04-07 | 天津大学 | 基于突发错误检测的前向纠错译码译码器 |
US20240289218A1 (en) * | 2023-02-24 | 2024-08-29 | Micron Technology, Inc. | Touchup for memory device using embedded encoder/decoder |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06266596A (ja) * | 1993-03-11 | 1994-09-22 | Hitachi Ltd | フラッシュメモリファイル記憶装置および情報処理装置 |
US6243845B1 (en) | 1997-06-19 | 2001-06-05 | Sanyo Electric Co., Ltd. | Code error correcting and detecting apparatus |
US6708248B1 (en) * | 1999-07-23 | 2004-03-16 | Rambus Inc. | Memory system with channel multiplexing of multiple memory devices |
US7383362B2 (en) * | 2003-12-02 | 2008-06-03 | Super Talent Electronics, Inc. | Single-chip multi-media card/secure digital (MMC/SD) controller reading power-on boot code from integrated flash memory for user storage |
JP2001297038A (ja) | 2000-04-11 | 2001-10-26 | Toshiba Corp | データ記憶装置および記録媒体並びに記録媒体制御方法 |
US7055081B2 (en) * | 2001-03-02 | 2006-05-30 | Storage Technology Corporation | System and method for multi-channel decoding error correction |
JP4437519B2 (ja) * | 2001-08-23 | 2010-03-24 | スパンション エルエルシー | 多値セルメモリ用のメモリコントローラ |
US6711663B2 (en) | 2001-11-15 | 2004-03-23 | Key Technology Corporation | Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof |
IL154346A (en) * | 2003-02-06 | 2010-06-16 | Eyal Cohen | Method and system for protecting against illegal copy and/or use of digital content stored on optical or other media |
JP4391170B2 (ja) * | 2003-09-05 | 2009-12-24 | 株式会社日立製作所 | データ転送装置の制御方法、データ転送回路、及びディスクアレイ装置 |
JP2006065697A (ja) * | 2004-08-27 | 2006-03-09 | Hitachi Ltd | 記憶デバイス制御装置 |
JP2006134064A (ja) * | 2004-11-05 | 2006-05-25 | Hitachi Ltd | 記憶メディアへの書込みエラーを検出する記憶制御装置及び方法 |
KR100725271B1 (ko) * | 2005-05-20 | 2007-06-04 | 주식회사 엠피오 | 복수개의 dma 채널을 갖는 usb-sd 저장 장치 및 그저장 방법 |
US7519894B2 (en) * | 2005-06-14 | 2009-04-14 | Infineon Technologies Ag | Memory device with error correction code module |
JP4751123B2 (ja) * | 2005-07-29 | 2011-08-17 | 株式会社日立製作所 | ストレージシステム、フォーマット方法及びコンピュータプログラム |
US7562285B2 (en) * | 2006-01-11 | 2009-07-14 | Rambus Inc. | Unidirectional error code transfer for a bidirectional data link |
-
2007
- 2007-06-04 KR KR1020070054620A patent/KR100921748B1/ko not_active IP Right Cessation
-
2008
- 2008-06-04 US US12/132,692 patent/US20090024902A1/en not_active Abandoned
- 2008-06-04 JP JP2008147195A patent/JP2008299855A/ja not_active Withdrawn
- 2008-06-04 TW TW097120788A patent/TW200907994A/zh unknown
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012099434A3 (en) * | 2011-01-20 | 2012-11-22 | Taejin Info Tech Co., Ltd. | Sas-based semiconductor storage device memory disk unit |
WO2012169823A2 (en) * | 2011-06-08 | 2012-12-13 | Taejin Info Tech Co., Ltd. | Semiconductor storage device memory disk unit with programmable host interface |
WO2012169820A2 (en) * | 2011-06-08 | 2012-12-13 | Taejin Info Tech Co., Ltd. | Semiconductor storage device memory disk unit with multiple host interfaces |
WO2012169823A3 (en) * | 2011-06-08 | 2013-03-07 | Taejin Info Tech Co., Ltd. | Semiconductor storage device memory disk unit with programmable host interface |
WO2012169820A3 (en) * | 2011-06-08 | 2013-03-07 | Taejin Info Tech Co., Ltd. | Semiconductor storage device memory disk unit with multiple host interfaces |
WO2013005995A2 (en) * | 2011-07-06 | 2013-01-10 | Taejin Info Tech Co., Ltd. | Redundant array of independent disk (raid) controlled semiconductor storage device (ssd)-based system having a high-speed non-volatile host interface |
WO2013005995A3 (en) * | 2011-07-06 | 2013-03-14 | Taejin Info Tech Co., Ltd. | Redundant array of independent disk (raid) controlled semiconductor storage device (ssd)-based system having a high-speed non-volatile host interface |
US9207879B2 (en) | 2011-07-06 | 2015-12-08 | Taejin Info Tech Co., Ltd. | Redundant array of independent disk (RAID) controlled semiconductor storage device (SSD)-based system having a high-speed non-volatile host interface |
Also Published As
Publication number | Publication date |
---|---|
KR100921748B1 (ko) | 2009-10-15 |
US20090024902A1 (en) | 2009-01-22 |
TW200907994A (en) | 2009-02-16 |
JP2008299855A (ja) | 2008-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100921748B1 (ko) | Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법 | |
KR101466694B1 (ko) | Ecc 회로, ecc 회로를 구비하는 메모리 시스템 및그의 오류 정정 방법 | |
KR101437517B1 (ko) | 인터리빙 기법을 이용한 메모리 시스템, 및 그 방법 | |
US10847246B2 (en) | Memory systems performing reconfigurable error correction operation using ECC engine with fixed error correction capability | |
KR101659888B1 (ko) | 플래시 메모리 제어 방법, 제어기 및 전자 장치 | |
US8214729B2 (en) | Error detecting/correcting scheme for memories | |
KR101433620B1 (ko) | 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법 | |
US4740968A (en) | ECC circuit failure detector/quick word verifier | |
US20060069851A1 (en) | Integrated circuit memory devices that support detection of write errors occuring during power failures and methods of operating same | |
JP3272903B2 (ja) | 誤り訂正検出回路と半導体記憶装置 | |
US20080195919A1 (en) | Semiconductor memory device for byte-based masking operation and method of generating parity data | |
US8321777B2 (en) | Cyclic redundancy check code generating circuit, semiconductor memory device, and method of driving semiconductor memory device | |
US8370699B2 (en) | Semiconductor memory apparatus for reducing bus traffic between NAND flash memory device and controller | |
US6360347B1 (en) | Error correction method for a memory device | |
KR20140018095A (ko) | 에러 검출 정정 회로 및 메모리 장치 | |
EP1192544B1 (en) | Error correction circuit and method for a memory device | |
US6584594B1 (en) | Data pre-reading and error correction circuit for a memory device | |
US7555698B2 (en) | Method and apparatus for extracting specific data from BIS data | |
US11088711B2 (en) | Memory apparatus and data accessing method thereof | |
CN101160729B (zh) | 用于并行处理递归数据的定址体系结构 | |
JPS6041374B2 (ja) | 1ビツト誤り訂正・2ビツト誤り検出方式 | |
JP3600562B2 (ja) | 半導体記憶装置 | |
JPH09116442A (ja) | 積符号の誤り訂正復号装置及び積符号の誤り訂正復号方法 | |
CN118677466A (zh) | 一种应用于片上存储器的纠错编码系统及方法 | |
CN112540866A (zh) | 存储器装置及其数据存取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |