KR20040002143A - 플래쉬 메모리 컨트롤러 - Google Patents

플래쉬 메모리 컨트롤러 Download PDF

Info

Publication number
KR20040002143A
KR20040002143A KR1020020037582A KR20020037582A KR20040002143A KR 20040002143 A KR20040002143 A KR 20040002143A KR 1020020037582 A KR1020020037582 A KR 1020020037582A KR 20020037582 A KR20020037582 A KR 20020037582A KR 20040002143 A KR20040002143 A KR 20040002143A
Authority
KR
South Korea
Prior art keywords
parity
flash memory
flash
message
unit
Prior art date
Application number
KR1020020037582A
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 주식회사 하이닉스반도체
Priority to KR1020020037582A priority Critical patent/KR20040002143A/ko
Publication of KR20040002143A publication Critical patent/KR20040002143A/ko

Links

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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2933Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code
    • H03M13/2936Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code comprising an outer Reed-Solomon code and an inner convolutional code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 플래쉬 메모리로 데이터를 리드/라이트시의 전송 에러나 메모리 셀에서의 오류를 감지할 수 있는 에러 정정 코드를 발생할 수 있는 연산기를 포함하여 구성한 플래쉬 메모리 컨트롤러에 관한 것으로, 외부로부터 어드레스 신호와 시리얼 인에이블 신호를 인가받아 선택적으로 앤드형 플래쉬 제어부와 낸드형 플래쉬 제어부를 구동시키는 플래쉬 메모리 컨트롤러에 있어서, 갈로아 필드상에서 정의되며, 원시 함수 P(x)를 이용하여 메시지가 128바이트이며, 패러티가 4바이트인 리드 솔로몬 코드 RS(132, 128)를 생성하는 패러티 연산부와, 설정한 맥스 사이즈까지 상기 패러티를 저장하는 패러티 버퍼를 더 포함하여 이루어짐을 특징으로 한다.

Description

플래쉬 메모리 컨트롤러{Flash Memory Controller}
본 발명은 플래쉬 메모리에 관한 것으로 특히, 플래쉬 메모리로 데이터를 리드(read)/라이트(write)시의 전송 에러(transfer error)나 메모리 셀 에서의 오류를 감지할 수 있는 에러 정정 코드를 발생할 수 있는 연산기를 포함하여 구성한 플래쉬 메모리 컨트롤러에 관한 것이다.
일반적으로 플래쉬 메모리(Flash Memory)란 EEPROM(Electrically Erasable Programmable Read Only Memory)의 집적도 한계를 극복하기 위해서 일괄 소거 방식의 1 트랜지스터/1 셀 구조를 채용한 기억 장치이다. 상기 플래쉬 메모리는 전원을 제거하여도 기억된 정보가 없어지지 않는 비휘발성 메모리이며, 전기적인 방법으로 정보를 자유롭게 입출력하고, 전력 소모가 적고 고속 프로그래밍이 가능하다.
이러한 플래쉬 메모리로는 AND형, NAND형, NOR형의 3가지 형태가 있는데, 각각의 플래쉬 메모리를 지원하기 위해 시스템 내부에 플래쉬 메모리 컨트롤러를 구성한다. 이러한 플래쉬 메모리 컨트롤러에는 상기의 3가지 형태 각각의 플래쉬 메모리를 모두 지원하는 형태의 플래쉬 메모리 컨트롤러가 있기도 하고, 그 중 하나의 형태의 플래쉬 메모리만을 독립적으로 지원하는 형태의 플래쉬 메모리 컨트롤러 등이 있다.
이하에서는, 첨부된 도면을 참조하여 여러 가지 플래쉬 메모리 컨트롤러 중, 상기 AND형과 NAND형의 플래쉬 메모리를 선택적으로 지원하는 플래쉬 메모리 컨트롤러에 대해 설명한다.
도 1은 종래의 플래쉬 메모리 컨트롤러를 나타낸 블록도이다.
도 1과 같이, 종래의 플래쉬 메모리 컨트롤러는, 크게 앤드 플래쉬제어부(100)와 낸드 플래쉬 제어부(200), CE(Chip Enable)부(300), RES(RESet)부(400), 데이터(Data)부(500)로 나뉘어 지며, 플래쉬 선택 신호(F-SEL)에 의해 제어되어 상기 앤드 플래쉬 제어부(100)와 낸드 플래쉬 제어부(200)의 신호를 선택적으로 출력하는 제 1 내지 제 4 먹스(111, 112, 113, 114)를 포함하여 이루어진다.
여기서, 상기 CE(Chip Enable)부(300), RES(RESet)부(400), 데이터(Data)부(500)는 플래쉬 메모리 형태가 앤드 플래쉬(AND Flash)이든, NAND 플래쉬(NAND Flash)이든 공통적으로 이용되며, 그 동작은 다음과 같다.
즉, 상기 CE부(300)는 어드레스 신호 중 16 비트 신호(Addr<16>)와 데이터 신호(<3:0>)에 의해 제어되어 동작하며, 칩 인에이블 신호(CE[15:0])를 출력한다. 상기 칩 인에이블 신호(CE)는 노멀 하이를 유지하다 칩 인에이블시 로우로 떨어진다. 칩 디스에이블시에는 다시 하이로 상승한다.
또, 상기 RES부(400)는 어드레스 신호 중 7비트 신호(Addr<7>)에 제어되어 리셋 신호(RES) 또는 라이트 프로텍션(WP) 신호를 출력할 수 있다. 상기 리셋 신호(RES)는 초기에 플래쉬 메모리로 엉뚱한 데이터가 라이트되는 것을 막기 위해 로우 레벨을 유지하며, 플래쉬 메모리 제어부의 다른 부분에서 인에이블되면 하이로 올라간다.
상기 데이터부(500)는 플래쉬 메모리로부터 8비트[7:0]의 신호를 인가받거나, 상기 플래쉬 메모리로 8비트[7:0] 신호를 출력하여 플래쉬 메모리와 신호가 호환되고 있다.
AND 플래쉬 제어부(100)에는 CDE부와, OE부와, WE부와, SC부가 구성되어 있으며, 각 블록은 할당된 어드레스 및 시리얼 인에이블 신호(각각 차례로, Addr<6>, Addr<8>, Addr<9>, Serial Enable)에 의해 인에이블되어진다.
상기 SC부는 어드레스 신호로 인에이블 되어지지 않고, 시리얼 리드(serial read)나, 시리얼 라이트(serial write)시 자동으로 인에이블된다.
상기 NAND 플래쉬 제어부(200)에는 CLE부와, ALE부와, RE부와, WE부가 구성되어 있으며, 각 블록은 할당된 어드레스 및 시리얼 인에이블 신호(각각 차례로, Addr<6>, Addr<5>, Addr<8>, Addr<9>)에 의해 인에이블 되어진다.
이 경우 상기 NAND 플래쉬 제어부(200)의 RE부 및 WE부는 각각 Addr<8> 신호와, Addr<9> 신호에 의해 제어되는 OE부와, WE부의 출력 값이 인가되고, 공통적으로 SC부의 출력 값이 인가되어, 3가지 신호 값에 의해 그 출력 상태가 달라진다.
이러한 상기 플래쉬 메모리 선택 신호(Flash Select)가 인가되는 영역은 2X1 먹스이며, 이러한 먹스는 4개, 즉, 제 1, 제 2, 제 3, 제 4 먹스(111, 112, 113, 114)로 구성된다. 각각의 먹스는 상기 플래쉬 메모리 선택 신호(Flash Select)를 인가받아 선택적으로 AND 플래쉬부, NAND 플래쉬부에서 신호를 인가받아 그 출력 커맨드 신호를 결정한다.
이 때, 상기 제 1 먹스부터 제 4 먹스까지(111∼114) 관리되는 출력 커맨드 신호는 다음과 같다. CDE/CLE는 제 1 먹스(111)로부터, OE/RE는 제 2 먹스(112)로부터, WE는 제 3 먹스(113)로부터, SC/ALE는 제 4 먹스(114)로부터 출력된다.
이와 같이, 상기 플래쉬 메모리 선택 신호(F-SEL)에 의해 동기되어 AND 플래쉬 제어부의 신호와 NAND 플래쉬 제어부의 신호 중 하나만 외부로 나가게 된다.
한편, 일반적으로 디지탈 신호의 저장 또는 송수신에 있어서, 에러는 확률적으로 언제라도 발생할 수 있는 요소이다. 즉, 이러한 에러는 자연계에 근본적으로 존재하는 양자화 잡음 등의 영향으로 인하여 완전히 회피하는 데에는 한계가 있다. 즉, 에러에 무관하게 동작하는 장치는 매우 비경제적인 장치가 되므로, 어느 정도 에러를 예상하고 그 발생 에러를 어떤 알고리즘에 따라 검출, 정정하는 방식이 보다 일반적인 방식이 되었다.
이러한 에러 검출(Error Detection) 및 정정(Error Correction) 기법에서 에러 정정 코드(Error Correction Code)를 사용하게 되는데, 이 에러 정정 코드의 엔코딩(Encoding), 디코딩(Decoding)은 갈로아 필드(Galois Field)에 관한 수학적인 이론들이 그 밑바탕을 이루고 있다.
일반적으로 덧셈 및 뺄셈이 가능하며, 이 연산에 닫혀있는 집합을 아벨리안 그룹(Abelian Group)이라 칭하고(예, 정수), 여기에 곱셈까지 가능하며, 곱셈에 대해서도 닫혀있는 집합을 링(Ring)이라 칭하고, 나눗셈까지의 모든 사칙연산이 가능하며, 사칙연산에 대해 닫혀있는 집합을 필드(Field)라 하는데, 유리수, 실수 등은 필드의 좋은 예이다.
그런데, 에러 정정 코드는 원소의 수가 유한한 집합으로서 사칙연산이 가능하고, 그것에 닫혀있는 집합 즉, 유한필드(Finite Field)를 요구한다. 이러한 유한필드를 통상 갈로아 필드(Galois Field)라 칭한다.
일반적으로 갈로아 필드로 변환하는 회로는 8비트의 데이터가 병렬로 들어오면 이에 해당하는 갈로아 필드 값을 출력하기 위해서는 조합 로직 게이트를 이용하는 방법과 원시 다항식을 이용하여 계산한 표를 롬에 담는 방법을 이용하고 있다.
그러나, 상기와 같은 종래의 플래쉬 메모리 컨트롤러는 다음과 같은 문제점이 있다.
종래의 플래쉬 메모리 컨트롤러는 에러 정정 코드(Error Correction Code)의 패러티(parity)가 없거나 있어도 2바이트 이내여서 플래쉬 메모리로의 데이터 리드/라이트시의 전송 에러나 플래쉬 메모리 셀 페일로 인한 데이터 값의 상실에 대해 오류 정정 능력이 현저히 떨어져 잘못된 데이터가 전송되거나 저장되어, 이로 인해 시스템이 오동작하는 문제점이 있었다.
본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로 플래쉬 메모리로 데이터를 리드/라이트시의 전송 에러나 메모리 셀에서의 오류를 감지할 수 있는 에러 정정 코드를 발생할 수 있는 연산기를 포함하여 구성한 플래쉬 메모리 컨트롤러를 제공하는 데, 그 목적이 있다.
도 1은 종래의 플래쉬 메모리 컨트롤러를 나타낸 블록도
도 2는 본 발명의 플래쉬 메모리 컨트롤러를 나타낸 블록도
도 3은 도 2의 플래쉬 메모리 컨트롤러의 패러티 연산부를 나타낸 회로도
도 4는 본 발명의 플래쉬 메모리 컨트롤러를 통해 에러를 정정하는 방법을 나타낸 플로우 차트
도면의 주요 부분에 대한 부호 설명
100 : AND 플래쉬 제어부 200 : NAND 플래쉬 제어부
300 : CE부 400 : RES부
500 : 데이터부 501 : 패러티 연산부
502 : 패러티 버퍼 111, 112, 113, 114 : 먹스
31, 32, 33, 34 : 곱셈기
35, 36, 37, 38 : 익스클루시브(exclusive) OR 연산기
39 : 스위칭 소자 40 : 입출력부
상기와 같은 목적을 달성하기 위한 본 발명의 플래쉬 메모리 컨트롤러는 외부로부터 어드레스 신호와 시리얼 인에이블 신호를 인가받아 선택적으로 앤드형 플래쉬 제어부와 낸드형 플래쉬 제어부를 구동시키는 플래쉬 메모리 컨트롤러에 있어서, 갈로아 필드상에서 정의되며, 원시 함수 P(x)를 이용하여 메시지가 128바이트이며, 패러티가 4바이트인 리드 솔로몬 코드 RS(132, 128)를 생성하는 패러티 연산부와, 설정한 맥스 사이즈까지 상기 패러티를 저장하는 패러티 버퍼를 더 포함하여 이루어짐을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 플래쉬 메모리 컨트롤러를 상세히 설명하면 다음과 같다.
본 발명의 플래쉬 메모리 컨트롤러는 에러 정정 코드(Error Correction Code)의 일종인 리드 솔로몬(Reed-Solomon : RS) 코드를 패러티 연산부에서 발생시켜, 상기 RS 코드를 통해 에러를 정정한다.
일반적으로 RS 코드는 갈로아 필드에서 정의되며, 길이 k인 데이터 워드에 (n-k)의 패러티 워드를 추가하여 길이 n인 코드 워드를 만드는 RS(n, k) 코드의 경우 t(=(n-k)/2)개의 에러를 정정할 수 있다.
본 발명에서 형성하는 RS 모드는 RS(132, 128)로 하며, 4바이트의 패러티를 이용하여 2개의 에러를 정정할 수 있는 기능을 갖는다.
도 2는 본 발명 플래쉬 메모리 컨트롤러를 나타낸 블록도이다.
도 2와 같이, 본 발명의 플래쉬 메모리 컨트롤러는 크게 앤드 플래쉬 제어부(100)와 낸드 플래쉬 제어부(200), CE(Chip Enable)부(300), RES(RESet)부(400), 데이터(Data)부(501)로 나뉘어 지며, 여기에 플래쉬 선택 신호(F-SEL)에 의해 제어되어 상기 앤드 플래쉬 제어부(100)와 낸드 플래쉬 제어부(200)의 신호를 선택적으로 출력하는 제 1 내지 제 4 먹스(111, 112, 113, 114)를 포함하여 이루어진다.
상기 데이터부(501)의 데이터를 인가받아 패러티를 발생시키는 패러티 연산부(502)와, 상기 패러티를 저장하는 패러티 버퍼(503)가 더 포함되어 구성된다.
여기서, 상기 CE(Chip Enable)부(300), RES(RESet)부(400), 데이터(Data)부(500)는 플래쉬 메모리 형태가 앤드 플래쉬(AND Flash)이든, NAND 플래쉬(NAND Flash)이든 공통적으로 이용되며, 그 동작은 다음과 같다.
즉, 상기 CE부(300)는 어드레스 신호 중 16 비트 신호(Addr<16>)와 데이터 신호(<3:0>)에 의해 제어되어 동작하며, 칩 인에이블 신호(CE[15:0])를 출력한다. 상기 칩 인에이블 신호(CE)는 노멀 하이를 유지하다 칩 인에이블시 로우로 떨어진다. 칩 디스에이블시에는 다시 하이로 상승한다.
또, 상기 RES부(400)는 어드레스 신호 중 7비트 신호(Addr<7>)에 제어되어 리셋 신호(RES) 또는 라이트 프로텍션(WP) 신호를 출력할 수 있다. 상기 리셋 신호(RES)는 초기에 플래쉬 메모리로 엉뚱한 데이터가 라이트되는 것을 막기 위해 로우 레벨을 유지하며, 플래쉬 메모리 제어부의 다른 부분에서 인에이블되면 하이로 올라간다.
AND 플래쉬 제어부(100)에는 CDE부와, OE부와, WE부와, SC부가 구성되어 있으며, 각 블록은 할당된 어드레스 및 시리얼 인에이블 신호(각각 차례로, Addr<6>, Addr<8>, Addr<9>, Serial Enable)에 의해 인에이블되어진다.
상기 SC부는 어드레스 신호로 인에이블 되어지지 않고, 시리얼 리드(serial read)나, 시리얼 라이트(serial write)시 자동으로 인에이블된다.
상기 NAND 플래쉬 제어부(200)에는 CLE부와, ALE부와, RE부와, WE부가 구성되어 있으며, 각 블록은 할당된 어드레스 및 시리얼 인에이블 신호(각각 차례로,Addr<6>, Addr<5>, Addr<8>, Addr<9>)에 의해 인에이블 되어진다.
이 경우 상기 NAND 플래쉬 제어부(200)의 RE부 및 WE부는 각각 Addr<8> 신호와, Addr<9> 신호에 의해 제어되는 OE부와, WE부의 출력 값이 인가되고, 공통적으로 SC부의 출력 값이 인가되어, 3가지 신호 값에 의해 그 출력 상태가 달라진다.
이러한 상기 플래쉬 메모리 선택 신호(Flash Select)가 인가되는 영역은 2X1 먹스이며, 이러한 먹스는 4개, 즉, 제 1, 제 2, 제 3, 제 4 먹스(111, 112, 113, 114)로 구성된다. 각각의 먹스는 상기 플래쉬 메모리 선택 신호(Flash Select)를 인가받아 선택적으로 AND 플래쉬부, NAND 플래쉬부에서 신호를 인가받아 그 출력 커맨드 신호를 결정한다.
이 때, 상기 제 1 먹스부터 제 4 먹스까지(111∼114) 관리되는 출력 커맨드 신호는 다음과 같다. CDE/CLE는 제 1 먹스(111)로부터, OE/RE는 제 2 먹스(112)로부터, WE는 제 3 먹스(113)로부터, SC/ALE는 제 4 먹스(114)로부터 출력된다.
이와 같이, 상기 플래쉬 메모리 선택 신호(F-SEL)에 의해 동기되어 AND 플래쉬 제어부의 신호와 NAND 플래쉬 제어부의 신호 중 하나만 외부로 나가게 된다.
이상은 종래의 플래쉬 메모리 컨트롤러에 있는 구성과 같고, 에러 정정 코드를 생성하여 종래와 구분되는 본 발명의 구성인 데이터부(501), 패러티 연산부(502), 패러티 버퍼(503)에 대해 살펴본다.
상기 데이터부(501)는 플래쉬 메모리와 8비트의 데이터 신호를 서로 교환하고, 상기 데이터를 메시지 함수의 형태로 인가받아 패러티를 발생시키는 패러티 연산부(502)와 상기 패러티를 저장하는 패러티 버퍼(503)를 더 포함하여 구성한다.
도 3은 도 2의 플래쉬 메모리 컨트롤러의 패러티 연산부를 나타낸 회로도이다.
이하의 실시예에서 설명하는 패러티 연산부는, 8비트 단위로 데이터를 전송하며, 따라서, 갈로아 필드 상에서 정의하는 원시 함수 P(x)는 8차로 다음과 같이 정의한다. 즉, P(x)= x8+ x4+ x2+ x + 1이다.
도 3과 같이, 상기 패러티 연산부(502)는 플래쉬 메모리와 서로 8 비트의 데이터 교환시 원시 함수를 P(x) = x8+ x4+ x2+ x + 1로 정의하고, 리드 솔로몬 코드 RS(132, 128)의 패러티를 각각 r0, r1, r2, r3이라 하며, 전송된 데이터의 메시지 함수(m(x)) 이동을 결정하는 스위칭 소자(39)와, 상기 메시지 함수를 인가받아 각각 원시함수를 곱한 값, 원시함수를 제곱한 값, 원시함수를 세제곱한 값, 원시함수를 네제곱한 값과 곱셈 연산하는 제 1 내지 제 4 곱셈기(31, 32, 33, 34)와, 상기 각 제 1 내지 제 4 곱셈기(31, 32, 33, 34)의 출력 값과 전 사이클(cycle)의 패러티 r0, r1, r2, r3와 익스클루시브 OR(exclusive OR) 연산하는 제 1 내지 제 4 익스클루시브 OR 연산기(35, 36, 37, 38)와, 사이클 별로 상기 메시지 함수(m(x))를 상기 스위칭 소자(39)에 인가하고, 1사이클이 완료되면 계산된 패러티 갖는 리드 솔로몬 코드(RS 코드)를 출력하는 입출력부(40)를 포함하여 이루어진다.
상기 패러티 연산부의 동작은 다음과 같다.
초기의 패러티 r0, r1, r2, r3는 "0"으로 설정한다.
상기 스위칭 소자(39)를 턴온시켜, 메시지 함수 m(x)를 쉬프팅시키며 상기 입출력부(40)를 통해 패러티 연산부로 인가한다.
첫 사이클에는 메시지 함수(m(x))가 상기 제 1 내지 제 4 곱셈기를 통해 연산되어 g0, g1, g2, g3은 각각, m(x)??(x8+ x4+ x2+ x + 1), m(x)??(x8+ x4+ x2+ x + 1)2, m(x)??(x8+ x4+ x2+ x + 1)3, m(x)??(x8+ x4+ x2+ x + 1)4값으로 연산된다.
이는 상기 원시 함수(P(x)=x8+ x4+ x2+ x + 1)를 통해 연산된 값이다.
두 번째 사이클부터는 상기 메시지 함수(m(x))가 제 1 내지 제 4 곱셈기의 연산 값 g0, g1, g2, g3와 전 사이클의 r0, r1, r2, r3을 익스클루시브 OR 연산하여 다음 사이클의 패러티 값으로 구한다.
상기 입출력부(40)에서는 메시지 함수(m(x))가 들어올 때는 메시지를 쉬프팅(shifting)시켜 내보내며, 이후 상기 패러티를 한 사이클 내에서 모두 구하게 되면, 동시에 계산된 패러티 값을 패러티 버퍼(503)에 내보내게 된다.
도면에는 도시하지 않았지만, 상기 패러티 버퍼(503)는 상기 입출력부(40)를 통해 상기 패러티 연산부(502)에서 계산된 4바이트의 패러티(r0, r1, r2, r3)를 동시에 인가받고, 설정되어 있는 맥스 사이즈(max size)까지 상기 패러티(r0, r1, r2, r3)들을 저장한다.
실시예에서는 메시지 함수의 페이지 사이즈(page size)를 최대(max) 2048바이트로 정의하여 64바이트의 패러티가 저장될 수 있는 패러티 버퍼를 구성하여 둔다.
상기 페이지 사이즈와 패러티 버퍼와의 관계는 다음과 같다.
즉, 본 발명에서는 RS(132, 128) 코드를 형성하므로, 메시지의 페이지 사이즈가 512 바이트일 경우에는, 4번의 RS 코드가 형성되어 4*4=16 바이트의 패러티가 형성되며, 메시지의 페이지 사이즈가 2048 바이트일 경우에는, 16번의 RS 코드가 형성되어 16*4=64 바이트의 패러티가 형성된다.
도 4는 본 발명의 플래쉬 메모리 컨트롤러를 통해 에러를 정정하는 방법을 나타낸 플로우 차트이다.
먼저, 플래쉬 메모리로 프로그램 하기 전에 ID 명령어를 읽어(S401) 플래쉬형 및 메시지의 페이지 사이즈를 검사한다.
이어, 페이지 사이즈가 512인지 판단(S402)하고, 상기 페이지 사이즈(page size)가 512인 경우는 카운트 값을 4로 셋팅(S404)하고, 상기 페이지 사이즈가 512가 아닌 경우는 페이지의 사이즈가 2048인 경우로 판단(S403)하여 카운트 값을 16으로 셋팅(S405)한다.
이어, 상기 패러티 버퍼의 출력 어드레스인 제 2 버퍼 어드레스를 0으로 하고, 상기 셋팅된 카운트 값을 1씩 감소하며, 상기 메시지의 카운팅을 담당하는 로컬 카운터를 0으로 하여(S406) 패러티 연산기를 턴온시켜 RS 코드를 형성한다.
이어, 상기 메시지의 초기 로컬 카운트 값인 0에서부터 값을 1씩 증가(S408)시켜 상기 로컬 카운트 값이 127이 되면(S407) 그 때의 패러티 연산부(502)에 있는 4바이트 패러티 값을 동시에 상기 패러티 버퍼(503)로 복사한다. 여기서 상기 로컬 카운트를 0에서 127로 1씩 증가시키는 이유는 RS 코드를 통해 128 바이트 단위의 데이터에 대해 에러 검사가 이루어지기 때문이다.
이 때, 상기 패러티 버퍼(503)에서는 패러티의 어드레스를 담당하는 제 1 버퍼 어드레스를 4씩 증가하며(S409) 상기 카운트 값이 0이 될 때까지(S410) 상기 패러티 버퍼(503)로 복사하는 동작을 반복한다.
이어, 상기 제 2 버퍼 어드레스를 1씩 증가하여, 제 1 버퍼 어드레스와 일치하는지를 판단한다.
이어, 상기 제 1, 제 2 버퍼 어드레스가 일치하게 되면 패러티 연산을 종료하고, 다음 메시지에 대한 패러티 연산을 진행하도록 한다.
즉, 상기 패러티 버퍼(503)에 맥스 값으로 설정되어 있는 값까지 4바이트 단위로 상기 패러티 연산부(502)를 통해 계산된 패러티 값이 복사되어 들어온다.
카운트 값이 0이 되면 상기 패러티 버퍼(503)에 설정된 맥스 값까지 패러티가 저장된 것으로, 상기 패러티 버퍼(503)에 최초 저장된 값부터 차례로 데이터를 이동시켜 플래쉬 메모리에서의 프로그램을 진행한다.
본 발명은 플래쉬 메모리 컨트롤러(Flsah Memory Controller)에 에러 정정 코드(Error Correction Code), 즉 RS 코드를 연산(generation)하는 블록을 내장시켜 플래쉬 메모리로 데이터를 리드/라이트시의 전송 에러나 플래쉬 셀에서의 오류로 인해 데이터의 손상을 입는 것에 대비하여 패러티를 추가하여 이후 에러 정정코드 디코더 블록에서 오류 검출 및 정정을 할 수 있도록 하는 것이다.
상기와 같은 본 발명의 플래쉬 메모리 컨트롤러는 다음과 같은 효과가 있다.
종래의 플래쉬 메모리 컨트롤러는 에러 정정 코드를 발생시키는 패러티 연산기가 없거나, 있더라도 단순히 2 바이트의 패러티를 형성함으로써, 1개의 에러 검출만이 가능하였는 데, 본 발명에서는 버스트 에러 정정(burst error correction) 능력이 뛰어난 리드 솔로콘 코드(RS code)를 이용함과 동시에 패러티 버퍼(parity buffer)를 둠으로써 페이지 당 에러 정정 능력을 향상시킬 수 있다.
즉, 4바이트의 패러티를 형성하여 하나의 RS 코드마다 2개의 에러를 정정할 수 있으며, 페이지의 사이즈에 비례하여 패러티를 저장하는 패러티 버퍼를 구성하여 페이지마다 에러 정정이 이루어질 수 있다. 예를 들어, 페이지 사이즈를 최대 2048로 하는 경우 한 페이지당 상기 RS 코드로 (2048/128)*2, 즉, 32개의 에러의 검출 및 정정이 가능한 것이다.

Claims (4)

  1. 외부로부터 어드레스 신호와 시리얼 인에이블 신호를 인가받아 선택적으로 앤드형 플래쉬 제어부와 낸드형 플래쉬 제어부를 구동시키는 플래쉬 메모리 컨트롤러에 있어서,
    갈로아 필드상에서 정의되며, 원시 함수 P(x)를 이용하여 메시지가 128바이트이며, 패러티가 4바이트인 리드 솔로몬 코드 RS(132, 128)를 생성하는 패러티 연산부;
    설정한 맥스 사이즈까지 상기 패러티를 저장하는 패러티 버퍼를 더 포함하여 이루어짐을 특징으로 하는 플래쉬 메모리 콘트롤러.
  2. 제 1항에 있어서,
    상기 패러티 연산부는
    플래쉬 메모리와 서로 8 비트의 데이터 전송시 원시 함수를 P(x) = x8+ x4+ x2+ x + 1로 정의하고,
    상기 리드 솔로몬 코드 RS(132, 128)의 패러티를 각각 패러티를 각각 r0, r1, r2, r3이라 할 때,
    전송된 데이터의 메시지 함수 이동을 결정하는 스위칭 소자;
    상기 메시지 함수를 인가받아 각각 원시함수를 곱한 값, 원시함수를 제곱한 값, 원시함수를 세제곱한 값, 원시함수를 네제곱한 값과 곱셈 연산하는 제 1 내지 제 4 곱셈기;
    상기 각 제 1 내지 제 4 곱셈기의 출력 값과, 전 사이클의 패러티 r0, r1, r2, r3와 익스클루시브 OR 연산하는 제 1 내지 제 4 익스클루시브 OR 연산기;
    사이클 별로 상기 메시지 함수를 상기 스위칭 소자에 인가하고, 1사이클이 완료되면 계산된 패러티를 갖는 리드 솔로몬 코드를 출력하는 입출력부를 포함하여 이루어짐을 특징으로 하는 플래쉬 메모리 컨트롤러.
  3. 제 1항에 있어서,
    상기 패러티 버퍼는 상기 패러티 연산부를 통해 연산된 4바이트의 패러티 값을 동시에 인가받음을 특징으로 하는 플래쉬 메모리 컨트롤러.
  4. ID 명령어를 읽어 플래쉬형 및 메시지의 페이지 사이즈를 검사하는 단계;
    상기 메시지의 페이지 사이즈에 따라 카운트 값을 셋팅하는 단계;
    카운트 값을 1씩 감소시키며 패러티 연산부를 턴온시키는 단계;
    상기 메시지의 초기 로컬 카운트 값을 0으로 하며, 상기 로컬 카운트 값을 1씩 증가시켜 로컬 카운트 값이 127이 되면 그 때의 패러티 연산부에 있는 4바이트 패러티 값을 동시에 패러티 버퍼로 복사하는 단계;
    상기 패러티 버퍼의 어드레스를 4씩 증가하며 상기 카운트 값이 0이 될 때까지 상기 패러티 버퍼로 복사하는 동작을 반복하는 단계;
    카운트 값이 0이 되면 상기 패러티 버퍼에 최초 저장된 값부터 차례로 데이터를 이동시켜 플래쉬 메모리에서의 프로그램을 진행하는 단계를 포함하여 이루어짐을 특징으로 하는 에러 정정 코드 형성 방법.
KR1020020037582A 2002-06-29 2002-06-29 플래쉬 메모리 컨트롤러 KR20040002143A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020020037582A KR20040002143A (ko) 2002-06-29 2002-06-29 플래쉬 메모리 컨트롤러

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020020037582A KR20040002143A (ko) 2002-06-29 2002-06-29 플래쉬 메모리 컨트롤러

Publications (1)

Publication Number Publication Date
KR20040002143A true KR20040002143A (ko) 2004-01-07

Family

ID=37313861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020037582A KR20040002143A (ko) 2002-06-29 2002-06-29 플래쉬 메모리 컨트롤러

Country Status (1)

Country Link
KR (1) KR20040002143A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100634414B1 (ko) * 2004-09-06 2006-10-16 삼성전자주식회사 에러 검출용 패러티 발생기를 구비한 낸드 플래시 메모리 장치 및 그것의 에러 검출 방법
US7992009B2 (en) 2006-01-09 2011-08-02 Samsung Electronics Co., Ltd. Device and method capable of verifying program operation of non-volatile memory and method card including the same

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756804A (ja) * 1993-08-18 1995-03-03 Toshiba Emi Ltd データ記録再生装置
JPH1139245A (ja) * 1997-07-15 1999-02-12 Toshiba Corp 半導体デバイス制御装置および半導体デバイス制御方法
US5872994A (en) * 1995-11-10 1999-02-16 Nec Corporation Flash memory incorporating microcomputer having on-board writing function
JP2000003305A (ja) * 1998-06-16 2000-01-07 Mitsubishi Electric Corp フラッシュメモリ及びフラッシュメモリを搭載するシステム
KR20000026010A (ko) * 1998-10-16 2000-05-06 김영환 플래시 메모리 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756804A (ja) * 1993-08-18 1995-03-03 Toshiba Emi Ltd データ記録再生装置
US5872994A (en) * 1995-11-10 1999-02-16 Nec Corporation Flash memory incorporating microcomputer having on-board writing function
JPH1139245A (ja) * 1997-07-15 1999-02-12 Toshiba Corp 半導体デバイス制御装置および半導体デバイス制御方法
JP2000003305A (ja) * 1998-06-16 2000-01-07 Mitsubishi Electric Corp フラッシュメモリ及びフラッシュメモリを搭載するシステム
KR20000026010A (ko) * 1998-10-16 2000-05-06 김영환 플래시 메모리 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100634414B1 (ko) * 2004-09-06 2006-10-16 삼성전자주식회사 에러 검출용 패러티 발생기를 구비한 낸드 플래시 메모리 장치 및 그것의 에러 검출 방법
US7783941B2 (en) 2004-09-06 2010-08-24 Samsung Electronics Co., Ltd. Memory devices with error detection using read/write comparisons
US7992009B2 (en) 2006-01-09 2011-08-02 Samsung Electronics Co., Ltd. Device and method capable of verifying program operation of non-volatile memory and method card including the same

Similar Documents

Publication Publication Date Title
CN101329916B (zh) 闪存装置纠错码控制器以及相关方法和存储系统
US8332725B2 (en) Reprogramming non volatile memory portions
CN102132354B (zh) 闪存中的数据的快速低功率读取
US8332727B2 (en) Error correction circuit, flash memory system including the error correction circuit, and operating method of the error correction circuit
US9454427B2 (en) Shifting read data
US8990667B2 (en) Error check and correction circuit, method, and memory device
CN114328316B (zh) Dma控制器、soc系统及基于dma控制器的数据搬运方法
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US3898443A (en) Memory fault correction system
US10191801B2 (en) Error correction code management of write-once memory codes
CN111869111A (zh) 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字
JP2009259113A (ja) 不揮発性メモリ管理装置
KR20100031402A (ko) 프리 페이지 검출 방법 및 장치와 이를 이용한 에러 정정 코드 디코딩 방법 및 장치
TWI493562B (zh) 具有受配置以防止過度校正之錯誤校正的記憶體
KR20040002143A (ko) 플래쉬 메모리 컨트롤러
US11088711B2 (en) Memory apparatus and data accessing method thereof
TWI812346B (zh) 半導體儲存裝置及讀出方法
US11115055B2 (en) Method and apparatus for encoding and decoding data in memory system
US20190294497A1 (en) Method of implementing error correction code used by memory storage apparatus and memory storage apparatus using the same
CN112540866A (zh) 存储器装置及其数据存取方法
KR20230132697A (ko) 일반 연결 코드 코드워드를 디코딩하는 장치, 저장 시스템 및 그 제어 방법
Kumar et al. Write Pattern Format Algorithm (WPFA) for Reliable NAND-based SSDs
CN115732014A (zh) 半导体存储装置
Anitha Implementing NAND Flash Controller using Product Reed Solomon code on FPGA chip K Chandra Naik, J. Chinna Babu, Dr. K. Padmapriya, Dr

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
N231 Notification of change of applicant
E601 Decision to refuse application