KR20020021001A - 데이터 처리시스템 및 데이터 처리방법 - Google Patents

데이터 처리시스템 및 데이터 처리방법 Download PDF

Info

Publication number
KR20020021001A
KR20020021001A KR1020010052503A KR20010052503A KR20020021001A KR 20020021001 A KR20020021001 A KR 20020021001A KR 1020010052503 A KR1020010052503 A KR 1020010052503A KR 20010052503 A KR20010052503 A KR 20010052503A KR 20020021001 A KR20020021001 A KR 20020021001A
Authority
KR
South Korea
Prior art keywords
data
program
error correction
storage area
error
Prior art date
Application number
KR1020010052503A
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
Priority claimed from JP2000275983A external-priority patent/JP2002091831A/ja
Priority claimed from JP2001189276A external-priority patent/JP2003006053A/ja
Application filed by 가나이 쓰토무, 가부시키가이샤 히타치세이사쿠쇼, 스즈키시게루, 히타치 홋카이 세미콘덕터 가부시키가이샤 filed Critical 가나이 쓰토무
Publication of KR20020021001A publication Critical patent/KR20020021001A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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

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)
  • Read Only Memory (AREA)

Abstract

ECC 코드에 의한 기억영역의 이용에 필요없는 것을 생략하여 불휘발성 메모리에서의 기억정보의 재기록 보증회수를 향상시킨다.
데이터 처리시스템(1)은, 재기록 가능한 불휘발성 메모리(5)와, 중앙처리장치(2)를 가지고, 상기 중앙처리장치는 상기 불휘발성 메모리에 지정된 일부의 기억영역(20Ba)에 대해서만 소프트웨어 ECC 처리의 대상이 된다. 일부의 기억영역에서만 ECC 코드의 부가나 에러정정을 행하여 재기록 보증회수를 향상시키면서 기억영역에 구애되지 않고 모든 기록 데이터에 대해 구별없이 ECC 코드를 부가하는 구성에 비해 실질적으로 필요없는 ECC 코드에 의한 기억영역에 필요없는 것을 생략할 수 있고, 또 ECC 처리를 소프트웨어로 대처하므로 불휘발성 메모리의 디바이스 특성에 맞는 ECC 정정능력을 용이하게 선택할 수 있다.

Description

데이터 처리시스템 및 데이터 처리방법{Data processing system and data processing method}
본 발명은, 불휘발성 메모리에 대한 재기록 보증회수를 개선하는 기술에 관한 것으로서, 예컨대 전기적으로 재기록 가능한 플래시 메모리를 내장하여 마이크로 컴퓨터에 적용하는 유효한 기술에 관한 것이다.
플래시 메모리 등의 전기적으로 재기록 가능한 불휘발성 메모리(이하, 간단히 플래시 메모리라 부른다)는 메모리셀에 프로그램되는 문턱치 전압의 상이에 따라서 정보를 기억한다. 문턱치 전압의 상이는 플로팅 게이트가 보유하는 전자 또는 정공의 양의 차이에 의해 얻어진다. 이렇게 플래시 메모리셀의 전자 또는 정공의 유지성능은 재기록 회수의 증가와 함께 열화한다. 따라서, 기억정보의 신뢰성이라는 관점에서, 통상 플래시 메모리의 사용에는 유한한 재기록 보증회수가 고려된다.
예컨대 100회 정도의 재기록 보증회수에 대해 그것을 상회하는 재기록을 가능하게 하기 위해서는, 100회의 재기록 회수마다 플래시 메모리의 기억영역을 순차 전환해서 제어하여 대처하는 것이 가능하지만, 그것을 위해서는, 실사용량에 대한 수10∼수1000배에도 미치는 큰 기억용량이 필요하게 되어 버린다.
플래시 메모리의 재기록 보증회수를 개선하기 위해서는, 디바이스적 수법으로서, 게이트 산화막을 두껍게 하여 전자 또는 정공의 유지성능을 올리는 것이 가능하다. 또, 회로적 수법으로서 ECC(에러체크 앤드 커렉트)회로를 채용하는 것이 가능하다. 일본공개특허 평11-296392호 공보에는 1칩 마이크로 컴퓨터 내장의EEPROM에 ECC를 적용한 기술이 나타난다.
플래시 메모리 등 전기적으로 재기록 가능한 불휘발성 메모리는 메모리셀의 플로팅 게이트에 주입된 전자 혹은 정공의 양에 따른 문턱치 전압에 의해 정보기억을 한다. 그와 같은 메모리셀의 문턱치 전압 특성은 재기록 회수의 증가 등에 따라서 경시적으로 열화한다. 특성 열화가 진행하면, 데이터 재기록시에서의 검증(verify)동작으로 기록에러가 되는 확립이 증가한다. 이와 같이, 플래시 메모리에서는, 기록 소거를 반복함에 따라, 특성이 열화하고, 정보를 정상으로 유지할 수 없게 되는「떨어져 망가지는 비트」가 발생한다. 플래시 메모리나 그 온칩 마이크로 컴퓨터에서 보증하는 재기록 회수는, 상기 특성 열화에 의해 제한된다. 재기록 회수를 향상시키는 방법으로서, 종래부터 이하와 같은 기술이 알려지고 있다.
제1 기술은, 플래시 메모리의 회로 구조로서 실현하는 수법이다. 예컨대, 기록시에는 2개(일반적으로 복수개)의 셀에 동일의 비트정보를 기록하고, 판독시에는 양쪽의 메모리셀로부터 데이터를 판독하고, 적어도 한편이 높은 문턱치 상태이면 높은 문턱치상태에 대응하는 논리치의 데이터를 출력하도록 구성한다. 또는, 기록시에 3개이상의 메모리셀에 동일의 비트정보를 기록, 판독시에는 이것들의 셀에서 데이터를 판독하여 다수결 논리를 취해 출력하도록 플래시 메모리의 회로를 구성한다. 이와 같은 구성의 플래시 메모리에 대해서 기재된 문헌의 예로서 일본공개특허 평3-57048호 공보가 있다.
제2 기술은, 에러정정 기능블록을 칩상에 구비한 것이고, 기록시에 검사비트를 발생하며, 판독시에 본래의 정보 및 검사비트로부터 에러의 검출과 정정을 하도록 한 것이다. 이 기술에 대해서 기재된 문헌의 예로서, 2000 Symposium on VLSI Circuits Digest of Technical Papers, pp162-165가 있다.
제3 기술로서, 일본공개특허 평7-210215호 공보에 기재와 같이, CPU가 EEPROM에 기록을 행할 때는, EEPROM내의 2개의 영역과 해당 EEPROM과는 다른 백업 메모리와의 3개소에 기록을 행하고, CPU가 데이터 판독을 행할 때는, 상기 3개소에서 데이터를 판독하고, 그 안의 2개의 데이터가 일치한 때는 일치에 관한 데이터를 올바른 것이라고 판단하는 것이 있다.
상기 게이트 산화막을 두껍게함으로써 재기록 보증회수의 개선에는 한계가 있고, 더구나 기록시간의 대폭적인 증대가 예상된다.
또, 플래시 메모리에 하드웨어에서 ECC 기능을 부가하는 경우에는, ECC 코드의 생성회로와, ECC 코드 부가데이터에 대한 에러판정 및 정정의 회로가 마련된다. 그렇지만, 그 경우에는, ECC용의 하드웨어에 의해 칩 면적이 불어난다. 그 위에, 필연적으로 모든 데이터에 대한 ECC 코드를 부가해서 데이터 기억을 행하는 것이 되기 때문에, 그것에 따라서 플래시 메모리 자체의 기억 용량도 크게 되는 것이 된다. 일본공개특허 평11-296392호 공보 기재의 기술은 ECC 코드의 생성을 CPU의 펌 ROM을 이용하여 소프트웨어에서 행함으로써, 그 만큼의 전용 하드웨어는 삭감되고 있다. 한편, ECC 코드 부가데이터에 대한 에러판정 및 정정을 행하는 하드웨어회로는 여전히 설치되어 있다. 더구나, 모든 기억데이터에 대한 ECC 코드를 부가해서 데이터 기억이 행해지고 있다.
특히 본 발명자는, 조립기기 제어 용도의 마이크로 컴퓨터 등에서의 플래시메모리의 이용형태를 고려하였다. 예컨대, 플래시 메모리에는, 비교적 재기록 회수가 적은 데이터로서. 예컨대, 회로특성 조정용의 트리밍 데이터, 참조용의 테이블 데이터, 프로그램 데이터가 기억된다. 게다가 그 외에, 기기의 상태에 따른 파라미터와 같이 빈번히 재기록하는 것이 필요한 데이터도 플래시 메모리에 기억되는 것이 있다. 하나의 플래시 메모리에 그들 데이터를 혼재시키고자 할 때, 종래의 기술에서는 모든 데이터에 대한 ECC 코드가 부가되기 때문에, 기억영역의 이용 효율이 현저하게 악화하여 버린다. 빈번히 재기록해야 할 데이터가 적은 경우에는 특히 기억영역의 이용 효율의 저하가 현저해질 것이다. 불휘발성 메모리의 기억용량이 증대하는 경향에 있을 때, 본 발명자는 일부의 기억영역만을 ECC의 대상으로 한다고 하는 관점의 유용성을 발견하였다.
또, 플래시 메모리의 메모리셀 특성은 프로세스 변동의 영향을 받기 때문에, 같은 재기록 회수라도 판독에러를 생성하기 쉬운 메모리셀과 생성하기 어려운 메모리셀이 있다.
본 발명자는, 그 메모리셀 특성의 개체차에 착안하고, 데이터 비트 수에 대한 ECC 코드의 비트 수를 플래시 메모리의 특성에 따라서 결정할 수 있도록 하는 것의 유용성을 발견하였다. 요컨대, 일정한 재기록 보증회수를 얻는데, 메모리셀의 디바이스 특성에 맞는 ECC 방식을 선택할 수 있도록 하고, 데이터에 대한 ECC 코드의 오버헤드를 작게 하여 기억영역의 이용 효율을 최대한으로 하는 것의 유용성을 발견하였다. 본 발명자의 검토에 의하면, 이 ECC 방식의 선택이라는 융통성은,
ECC 코드의 생성또는 에러검출 및 정정을 하드웨어에서 행하는 경우에는 용이하게 실현하여 어렵다는 것이 분명히 되었다.
또한, 상기 제1 기술에서는, 재기록 회수가 많은 것이 요청되는 용도(예컨대 2 메모리셀/비트구성으로 셀 사용 효율은 희생으로 한다)와, 재기록 회수는 적어도 좋지만, 최대의 셀 사용 효율(즉 1 메모리셀/비트 구성)이 요구되는 용도에서는, 동일 구성의 플래시 메모리를 적용할 수 없으므로, 용도에 따라서 복수 종류의 플래시 메모리를 준비 또는 실장할 필요가 있다. 이것에 의해, 플래시 메모리의 개발 효율이 나쁘게 된다. 또, 회로 모듈의 수도 증가하여, 결국 칩 면적을 증대시키는 요인이 된다.
상기 제2 기술에서는, ECC 같은 에러정정 기능을 가지는 하드웨어를 구비함으로써 칩 면적이 증대하여, 코스트가 상승한다는 문제가 있다. 소프트웨어 ECC 기능을 실현하였다고 하여도, 에러정정 능력이 복수 비트가 되는 순간 방대한 연산처리가 필요하게 되어, 낮은 에러 발생율을 유지하기 위해서는 CPU에 현저히 큰 부담이 걸린다.
상기 제3 기술에서는, 본래 실장되는 EEPROM과는 다른 백업 메모리가 필요하게 된다. 이점에 관하고, 제3 기술을 기재한 문헌에서는 EEPROM을 3분할하여 각각에 동일한 데이터를 기록하는 경우에 비해서 기록회수가 줄어 기록중의 에러에 의한 영향을 받는 기회가 준다고 하고 있다. 요컨대, EEPROM과는 다른 백업 메모리를 이용하는 것의 우위성을 발견하고 있다.
본 발명자에 의한 검토에 의하면, 마이크로 컴퓨터에 온칩된 플래시 메모리는 데이터나 프로그램을 저장하는데 이용되고, 데이터 영역의 경우에는 파라미터와같이 빈번히 재기록되는 것이 예상되고, 프로그램 영역에 대해서는 버젼 업(version up)등을 제외하고 거의 재기록하는 일은 없다. 이와 같은 사정을 고려할 때, 복수의 기억영역에 대한 합목적적으로 그 기억영역의 기능 또는 성능을 최적화하는 것이 필요하게 된다는 것을 본 발명자는 발견하였다. 예컨대, 재기록 회수가 많은 파라미터 등의 기억용도에는 메모리셀의 특성 열화정도가 강하기 때문에 메모리셀 사용 효율을 희생하여도 정보기억의 신뢰성 저하를 억제하는 것을 우선시켜, 재기록 회수가 적어서 좋은 영역에서는 특성 열화의 진행은 완만하므로 메모리셀의 사용 효율을 최대화하는 것을 우선시키는 것이 적절하다.
본 발명의 목적은, 에러정정 정보 예컨대 ECC 코드에 의한 기억영역의 이용의 낭비를 생략하여 기억정보의 신뢰성을 향상시키는 것이 가능한 데이터 처리시스템을 제공하는 것에 있다.
본 발명의 다른 목적은, ECC 코드에 의한 기억영역의 이용의 낭비를 생략하여 기억정보가 재기록 보증회수를 향상시키는 것이 가능한 데이터 처리시스템을 제공하는 것에 있다.
본 발명의 또 다른 목적은, 디바이스의 특성에 맞는 ECC 방식을 선택할 수 있도록 하고, 데이터에 대한 ECC 코드의 오버헤드를 작게 하고 기억영역의 이용 효율을 최대한으로 하는 것이 가능한 데이터 처리시스템을 제공하는 것에 있다.
본 발명의 또 다른 목적은, ECC 코드가 부가된 데이터에 대한 에러판정 및 정정의 처리에 의한 데이터 판독 동작의 지연을 최소한으로 하는 것이 가능한 데이터 처리시스템을 제공하는 것에 있다. ·
본 발명의 그 밖의 목적은, ECC 코드의 생성을 효율적으로 행 할 수 있는 데이터 처리방법을 제공하는 것에 있다.
본 발명의 그 밖의 할 목적은, ECC 코드가 부가된 데이터의 에러판정을 효율적으로 행할 수 있은 데이터 처리방법을 제공하는 것에 있다.
본 발명의 그 밖의 목적은, 전기적으로 소거 및 프로그램 가능한 불휘발성 메모리의 어드레스 공간의 일부의 어드레스 영역의 재기록 회수를 소프트웨어적 처리에 의해 향상하는 것이 가능한 데이터 처리시스템 내지는 데이터 처리방법을 제공하는 것에 있다.
본 발명의 목적은, 재기록 회수가 적은 용도로부터 많은 용도까지 1개의 불휘발성 메모리로 대응할 수 있고, 정보기억의 신뢰성 향상 또는 재기록 상한회수를 향상시키기 위해, 새로운 하드웨어를 구비할 필요가 없는 마이크로 컴퓨터와 같은 데이터 처리장치를 제공하는 것이다.
본 발명의 다른 목적은, 1개의 불휘발성 메모리에 대한 재기록이 빈번한 영역에서는 정보기억의 신뢰성 저하의 억제를 우선시키고, 재기록 회수가 적어서 좋은 영역에서는 메모리셀의 사용 효율을 최대화하는 것을 우선시키는 것이 가능한 데이터 처리장치를 제공하는 것에 있다.
본 발명의 상기 및 그 밖의 목적과 신규한 특징은 본 명세서의 기술 및 첨부도면으로부터 명백해질 것이다.
도 1은 본 발명의 일예에 관한 싱글 칩 마이크로 컴퓨터의 블록도,
도 2는 CPU의 구체예를 나타내는 블록도,
도 3은 재기록 보증회수를 향상시키는 기억영역, ECC 코드생성 프로그램 및 에러정정 프로그램의 기억영역의 매핑 예를 나타내는 설명도,
도 4는 사용자 데이터의 비트 수에 대한 ECC 코드의 비트 수에 의한 에러정정능력과 오버헤드와의 관계를 예시하는 설명도,
도 5는 사용자 데이터와 ECC 코드를 하나의 배열 데이터중에 대응시켜 배열하는 데이터 포맷과, 사용자 데이터와 ECC 코드를 다른 배열 데이터로서 대응시킨 데이터 포맷을 예시하는 설명도,
도 6은 사용자 데이터와 ECC 코드를 하나의 배열 데이터중에 대응시켜 기록할 때의 처리수순을 예시하는 설명도,
도 7은 사용자 데이터와 ECC 코드를 다른 배열 데이터로서 대응시켜 기록할 때의 처리수순을 예시하는 설명도,
도 8은 도 6에서 설명한 코드 배열을 가지는 ECC 코드 부속 데이터를 판독할 때의 처리수순을 예시하는 설명도,
도 9는 도 7에서 설명한 사용자 데이터와 ECC 코드가 개개의 배열 데이터로 되는 ECC 코드 부속 데이터를 판독할 때의 처리수순을 예시하는 설명도,
도 10은 ECC 코드 생성 프로그램 및 에러정정 프로그램의 실행속도를 향상시키기 위한 일예를 나타내는 설명도,
도 11은 에러 판정에 의한 오버헤드를 외관상 해소하기 위한 일예를 나타내는 설명도,
도 12는 에러 판정에 의한 오버헤드를 외관상 해소하기 위한 다른 일예를 나타내는 설명도,
도 13은 16비트 데이터에 대한 1비트 정정을 위해 행렬 테이블(40)의 일예를 나타내는 설명도,
도 14는 ECC 코드를 부가한 부호어를 생성하는 원리적 수법의 설명도,
도 15는 H'8041의 16비트 데이터에 대한 배타적 논리화를 이용해서 ECC 코드를 생성하는 구체예의 설명도,
도 16은 배타적 논리화를 위한 연산수단을 ECC 코드 1비트분의 구성을 대표로해서 예시하는 블록도,
도 17은 도 15의 예에 있어서 배타적 논리화를 채용한 구체적인 연산결과인 ECC 코드를 예시하는 설명도,
도 18은 에러 판정처리의 원리적 수법을 나타내는 설명도,
도 19는 도 18의 예에 있어서 상기 배타적 논리화에 의한 에러 없음의 판정결과가 예시되는 설명도,
도 20은 도 19에 대한 1비트 에러를 가지는 판정결과가 얻어지는 경우를 예시하는 설명도,
도 21은 2비트 이상의 정정불능인 에러가 발생하고 있을 때의 판정결과를 열거하는 설명도,
도 22는 정정불능 에러에 대한 예외처리를 실행 가능하게 하는 예를 나타내는 설명도,
도 23은 사용자 데이터와 ECC 코드의 부호어에 채용되는 고정 포맷의 일예를 나타내는 설명도,
도 24는 도 23의 고정 포맷의 보다 상세를 예시하는 설명도,
도 25는 행렬 테이블의 데이터를 보유하는 ECC 테이블을 예시하는 설명도,
도 26은 ECC 코드생성 프로그램에 의한 처리수순을 예시하는 플로우차트,
도 27은 도 26의 수순에서 생성된 ECC 코드 부가데이터를 판독한 때의 에러 판정처리의 상세를 나타내는 플로우차트,
도 28은 1비트의 에러에 대한 에러정정처리의 상세를 나타내는 플로우차트,
도 29는 멀티 칩의 데이터 처리시스템을 예시하는 블록도,
도 30은 다치 플래쉬 메모리에서의 4치 데이터와 문턱치 전압과의 관계를 예시하는 설명도,
도 31은 본 발명에 관한 데이터 처리장치의 일예인 마이크로 컴퓨터를 나타내는 블록도,
도 32는 불휘발성 기억영역에 배치된 불휘발성 메모리셀의 Ids-Vgs 특성을예시하는 특성도,
도 33은 도 32에 나타낸 낮은 문턱치 상태 및 높은 문턱치 상태를 만들어내기 위한 불휘발성 메모리셀의 구조와 그 이레이즈 상태 및 프로그램 상태를 예시하는ㄴ 설명도,
도 34는 플래쉬 메모리의 일예를 나타내는 블록도,
도 35는 하나의 데이터에 대한 다른 어드레스로의 중복기록 및 대응하는 다른 어드레스에서 판독한 중복 데이터에 의거해서 필요한 에러정정(논리 OR 연산)의 처리 플로우를 예시하는 플로우차트,
도 36은 A0에서 A0+2K-1까지의 2K개의 번지를 포함하는 특정 블록영역의 이용형태를 예시하는 설명도,
도 37은 하나의 데이터에 대한 다른 어드레스로의 중복기록 및 대응하는 다른 어드레스에서 판독한 중복 데이터에 의거해서 필요한 에러정정(논리 AND 연산)의 처리 플로우를 예시하는 플로우차트,
도 38은 3개의 어드레스(Ai, Ai+K, Ai+2K)에 동일한 데이터를 기록, 판독할 때에 이들의 다수결 논리를 채용하여 출력하는 액세스 프로그램에 의한 기록과 판독의 제어 플로우를 예시하는 플로우차트,
도 39는 A0에서 A0+3K-1까지의 3K개의 번지를 포함하는 특정 블록영역(11)의 이용형태를 예시하는 설명도,
도 40은 오프 칩의 플래쉬 메모리를 이용한 데이터 처리장치를 예시하는 블록도이다.
본원에 있어서 개시되는 발명중 대표적인 것의 개요를 간단히 설명하면, 하기와 같다.
[1] 데이터 처리시스템은, 재기록 가능한 불휘발성 메모리(플래시 메모리)와, 중앙처리장치(CPU)를 가지고, 상기 중앙처리장치는, 소정의 처리(프로그램)을 실행하고, 상기 불휘발성 메모리의 어드레스 공간내에 지정된 일부의 기억영역(20Ba)의 재기록 보증회수를 해당 불휘발성 메모리의 어드레스 공간내의 기타 기억영역이 재기록 보증회수보다도 향상되는 처리가 가능하다. 상기 소정의 프로그램의 실행에 의한 처리는, 상기 지정된 일부의 기억영역에 대한 기록 데이터에 에러정정 정보(ECC 코드)를 생성하여 부가하는 처리이고, 상기 불휘발성 메모리로의 지정된 일부의 기억영역에서의 판독 데이터에 대한 ECC 코드에 의한 에러판정과 에러정정을 행하는 처리이다. 상기 일부의 기억영역의 지정은 예컨대 사용자 프로그램에 의해 행해진다.
상기에서 불휘발성 메모리의 지정된 일부의 기억영역에 저장된 데이터에 대한 액세스만을 대상으로 하고, ECC 코드의 부가나 에러정정을 행해 재기록 보증회수를 향상시킨다. 상기 지정된 일부의 기억영역에는 재기록이 빈번한 파라미터 데이터가 저장되고, 다른 기억영역에는 재기록 빈도가 낮은 프로그램 데이터가 저장된다. 따라서, 해당 다른 기억영역에 저장되는 데이터에는, ECC 코드가 부가되지 않는다. 이 구성은, 기억영역에 관계없이 모든 기록 데이터에 대해서 구별없이 ECC 코드를 부가하는 구성에 비해서, 실질적으로 필요없는 ECC 코드에 의한 기억영역의 헛된 이용을 생략하면서 기억정보의 신뢰성을 향상, 혹은 기억정보의 재기록 보증회수의 향상을 실현한다.
기록 데이터에 대한 ECC 코드의 부가 및 ECC 코드에 의한 에러판정 및 정정의 처리를 중앙처리장치에 의한 프로그램 실행으로 실현함으로써, 데이터 비트 수에 대한 ECC 코드의 비트 수의 비율을 정의하는 ECC 방식은 프로그램의 기술내용으로 선택할 수 있다. 그 때문에, 메모리셀의 디바이스 특성에 맞는 ECC 방식의 선택이 용이하고, 데이터에 대한 ECC 코드의 오버헤드를 작게 할 수 있다. 그 결과, 기억영역의 이용 효율을 최대한으로 하는 것이 가능하게 된다. 요컨대, 소프트웨어에 의해 에러정정 효율을 용이하게 변경할 수 있으므로, 디바이스의 능력에 맞은 에러정정방식을 용이하게 선택할 수 있다. 관점을 바꾸면, 이것은 ECC 코드의 비트 수로부터 낭비를 배제하고, 기억영역가 유효 이용을 보증한다.
상기 데이터 처리시스템은, 1개의 반도체 칩에 상기 불휘발성 메모리 및 중앙처리장치가 형성된 싱글 칩의 마이크로 컴퓨터로서 실현하는 것이 가능하다. 한편, 상기 데이터 처리시스템은, 상기 불휘발성 메모리 및 중앙처리장치가 각각 별개의 반도체 칩에 형성된 멀티 칩 형태로 실현하여도 좋다.
중앙처리장치가 실행하는 상기 소정의 프로그램은, 예컨대, 상기 불휘발성 메모리의 지정된 일부의 기억영역으로의 기록데이터에 대한 ECC 코드를 생성하는 ECC 코드생성 프로그램과, 상기 불휘발성 메모리의 지정된 일부의 기억영역에서 판독된 ECC 코드 부가데이터에 대한 에러판정과 에러의 정정을 행하는 에러정정 프로그램이다.
ECC에 의한 부호화나 에러정정의 공지의 수법으로서는 예컨대 해밍코드(Hamming 코드)의 검사행렬을 사용하고, 에러정정에서는 판독 데이터와 해밍 코드의 행렬연산을 적화연산등을 사용하여 행할 수 있다. 여기서는, 데이터를 n 비트로 하고, n 비트의 데이터에 대한 ECC 코드를 m 비트로 할 때, m 비트의 서로 다른 2진수를 m+n열로 열거한 행렬 테이블을 기억영역에 형성하고, 상기 ECC 코드생성 프로그램 및 에러정정 프로그램의 처리에 그 행렬 테이블을 참조시킨다.
예컨대, ECC 코드의 생성에서는, 데이터의 논리치 "1"의 비트 위치에 대응하는 상기 행렬 테이블의 열의 값을 행방향의 비트마다 배타적 논리화를 채용하고, 이것에 의해 얻어진 m 비트의 값을 ECC 코드로 하고, 데이터에 ECC 코드를 부가해서 m+n 비트의 부호어를 생성한다. 에러판정 및 에러정정에서는, 상기 부호어의 논리치 "1"의 비트 위치에 대응하는 상기 행렬 테이블의 열의 값을 행방향의 비트마다 배타적 논리화를 채용하고, 이것에 의해 얻어진 m 비트의 값이 모든 비트 논리치 "0"일 때는 에러 없음으로 판정하여 상기 부호어의 n 비트의 데이터를 정규데이터로 하고, 상기 배타적 논리화에 의해 얻어진 m 비트의 값이 1비트에서도 논리치 "1"일 때는 에러 있음으로 판정하고, 상기 행렬 테이블의 열로서, 상기 배타적 논리화에 의해 얻어진 m 비트의 2진수에 일치하는 열을 검색하고, 검색된 열로 대응되는 위치의 부호어의 비트를 논리치 반전하여 정정하고, 정정된 부호어의 n 비트의 데이터를 정규데이터로 한다. 이 에러판정에서는 적화연산과 나눗셈 연산과 같은 처리를 필요로하지 않고, 적화연산기 및 나눗셈기를 구비하지 않아도, 소프트웨어에 의한 ECC 처리를 능률적으로 행하는 것이 가능하게 된다.
상기 ECC 코드생성 프로그램 및 에러정정 프로그램은 상기 중앙처리장치에의해 액세스 가능한 마스크 ROM에 유지시키어 좋다. 그들 프로그램의 유지에 상기 불휘발성 메모리를 이용하는 경우에는, 그 밖의 기억영역에 유지시키면 좋다. 파라미터에 비해서 프로그램의 재기록 빈도는 적으므로 상대적으로 재기록 보증회수의 작은 그 밖의 기억영역에 유지시키면 충분하다. 요컨대, 열악한 사용조건을 제외하면, 재기록 빈도가 낮은 정보에 ECC 코드를 부가하는 실익은 거의 없다는 것이다.
상기 불휘발성 메모리 그 밖의 기억영역에, 소거동작이 금지된 소거 금지영역(20A)과 소거 및 기록이 허용된 재기록 허용영역(20B)을 할당할 때, 소거 금지영역에 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 저장하여 좋다. 그 경우에는, 일단 기록된 프로그램의 재기록은 원칙적으로 불가능하므로, 바람직하게는, 반도체 집적회로화된 마이크로 컴퓨터와 같은 데이터 처리장치의 제조 메이커(maker)가 기록하는 것이 좋다. 그렇다면, 데이터와 ECC 코드의 포맷은 미리 고정적으로 결정된 쪽이 바람직하고, 상기 ECC 코드생성 프로그램은, ECC 코드를 생성한 후, 생성한 ECC 코드와 그것에 대응하는 데이터를 규정의 포맷에 따라서 ECC 코드 부가데이터로서 상기 불휘발성 메모리의 일부의 기억영역에 저장하고, 에러정정 프로그램은 상기 규정의 포맷에 따라서 ECC 코드 부가데이터를 인식하면 좋다.
또, 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 상기 재기록 허용영역에 유지시키더라도 좋다. 이 경우는, 사용자에 의한 그들 프로그램의 기록을 상정한다. 따라서, 데이터와 ECC 코드와의 포맷에 대해서는 사용자가 작성한 프로그램에 의존한 임의 포맷이라도 좋다. 제조 메이커가 그들 프로그램을 제공하고자하는 경우에도 사용자의 사용의 편리함을 고려하면, C 언어와 같은 고급언어로 기재된 소스 프로그램으로 주는 것이 좋다. 데이터와 ECC 코드를 각각의 배열로서 파악하는 것도 가능하게 된다. ·
ECC 처리속도를 향상시키는 하나의 수단으로서, 랜덤 액세스 메모리(RAM)의 액세스 사이클이 상기 불휘발성 메모리의 액세스 사이클보다 빠른 경우, 상기 불휘발성 메모리에서 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 RAM으로 전송하고, 상기 중앙처리장치에는 상기 RAM으로 전송된 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 실행하면 좋다. 이때, 상기 중앙처리장치는 리셋의 지시에 응답하고 상기 불휘발성 메모리에서 상기 RAM으로 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 전송하면 좋다.
ECC 처리속도를 향상시키는 제2 수단으로서, 상기 중앙처리장치에 의해 액세스 가능한 RAM을 가지고, 상기 중앙처리장치는 리셋의 지시에 응답하고, 상기 불휘발성 메모리의 일부의 기억영역에서 순차 ECC 코드 부가데이터를 판독하고, 판독한 ECC 코드 부가데이터에 대해서, 상기 에러정정 프로그램의 실행에 의해 상기 에러판정과 에러의 정정을 행하고, 상기 에러판정과 에러의 정정처리를 거친 데이터를 상기 RAM에 초기적으로 저장하면 좋다. 그 후, CPU는 RAM에서 필요한 데이터를 판독하면 좋고, 판독 동작시에 그 때마다 에러판정을 행하는 것을 필요로 하지 않는다. 또, CPU에 의한 상기 에러정정 프로그램의 실행하는 방법으로서는, 상기 불휘발성 메모리에서 직접 상기 에러정정 프로그램을 읽어들여 실행하는 방법 또는 RAM으로 전송된 상기 에러정정 프로그램을 읽어들여 실행하는 방법의 어느 것인가를채용하는 것이 가능하다.
상기 에러정정 프로그램의 실행에 의한 상기 에러판정 처리에 있어서 정정불능인 에러가 발생한 때, 오동작 방지의 관점에서 상기 중앙처리장치는, 상기 에러정정 프로그램의 실행에 의한 상기 에러판정 처리에 있어서 정정불능인 에러의 발생을 나타내는 정보를 외부에서 인식 가능하게 레지스터(RER), 혹은 메모리의 플래그 영역(30)에 유지시키면 좋다. 사용자 프로그램을 통해서 그 영역을 소정 간격(interval)마다 참조하면, 정정불능인 에러발생을 인식할 수 있고, 예컨대, 정정불능인 에러를 발생한 데이터 블록의 재기록 등을 실행하여 대처하는 것이 가능하게 된다.
또, 상기 중앙처리장치는 상기 에러정정 프로그램의 실행에 의해 에러정정 가능한 데이터를 검출한 경우에도, 그것을 나타내는 정보를 외부에서 인식 가능하게 범용 레지스터나 메모리의 플래그 영역에 유지시켜 좋다. 그와 같은 정보는 상기와 같은 경고정보로 이용하면 좋다. 이것에 의해, 사용자 시스템은, 데이터 가 깨지게 된다는 것을 재빨리 인식할 수 있어, 깨지게 된다는 데이터의 재기록(재기록)을 재촉하여 데이터의 신뢰성을 더욱 향상시키는 것이 가능하게 된다.
[2] 본 발명의 다른 관점에 의한 데이터 처리시스템은, 연산 제어장치의 어드레스 공간에 재기록 보증회수가 낮은 제1 기억영역(20Bb)과, 재기록 보증회수가 높은 제2 기억영역(20Ba)을 가지고, 상기 제1 기억영역은, 상기 제2 기억영역으로의 기록데이터에 대한 ECC 코드를 생성하는 ECC 코드생성 프로그램과, 상기 제2 기억영역에서 판독된 ECC 코드 부가데이터에 대한 에러판정과 에러의 정정을 행하는에러정정 프로그램을 가지고, 상기 연산 제어장치는, 상기 제2 기억영역에 데이터를 저장할 때, 상기 ECC 코드생성 프로그램을 실행한다.
이 관점에서는, 제2 기억영역에 대한 기록동작에 대해서만 ECC 코드를 소프트웨어로 생성하므로, 상기와 같이, 실질적으로 필요없는 ECC 코드에 의한 기억영역의 헛된 이용을 생략하면서 기억정보의 신뢰성을 향상, 혹은 기억정보가 재기록 보증회수의 향상을 실현할 수 있다. 또, 기록 데이터에 대한 ECC 코드의 부가를 프로그램 실행으로 실현하므로, 역시, 불휘발성 메모리의 메모리셀의 디바이스의 특성에 맞는 ECC 방식의 선택이 용이하고, 데이터에 대한 ECC 코드의 오버헤드가 작게되어, 기억영역의 이용 효율을 최대한으로 하는 것이 가능하다.
상기 연산 제어장치는, 상기 제2 기억영역에서 데이터를 판독할 때, 상기 에러정정 프로그램을 실행한다. ·
상기 연산 제어장치는, 소정의 동작모드에 응답하여 상기 에러정정 프로그램을 실행해서 상기 제2 기억영역의 데이터를 미리 RAM으로 순차 전송 가능하다.
상기 제1 기억영역 및 제2 기억영역은 예컨대 전기적으로 재기록 가능한 플래시 메모리이다. ECC 코드생성 프로그램 및 에러정정 프로그램의 재기록을 고려하면, 기록 소거 프로그램을 상기 플래시 메모리에 미리 저장하고, 소정의 동작모드에 응답하여 이것을 RAM으로 내부 전송하고, RAM상의 기록 소거 프로그램을 실행하여 ECC 코드생성 프로그램 및 에러정정 프로그램의 재기록을 행하도록 하여 서 좋다. 혹은, 소정의 동작모드에 응답하여 외부에서 RAM으로 기록 소거 프로그램을 전송하고, RAM상의 기록 소거 프로그램을 실행하여 ECC 코드생성 프로그램 및 에러정정 프로그램의 재기록을 행하도록 하여 좋다.
[3] ECC 코드를 사용한 부호어를 생성하는 데이터 처리방법에서는, n 비트의 데이터에 대한 ECC 코드를 m 비트로 할 때, m 비트의 서로 다른 2진수를 m+n열로 열거한 행렬 테이블을 이용하고, ECC 코드의 생성에서는, 데이터의 논리치 "1"의 비트 위치에 대응하는 상기 행렬 테이블의 열의 값을 행방향의 비트마다 배타적 논리화를 채용하고, 이것에 의해 얻어진 m 비트의 값을 ECC 코드로 하고, 데이터에 ECC 코드를 부가해서 m+n 비트의 부호어를 생성한다.
상기 부호어에 대한 에러판정을 행하는 데이터 처리방법에서는 상기 부호어의 논리치 "1"의 비트 위치에 대응하는 상기 행렬 테이블의 열의 값을 행방향의 비트마다 배타적 논리화를 채용하고, 이것에 의해 얻어진 m 비트의 값이 모두 비트 논리치 "0"일 때는 에러 없음으로 판정하여 상기 부호어의 n 비트의 데이터를 정규데이터로 하고, 상기 배타적 논리화에 의해 얻어진 m 비트의 값이 1비트에서도 논리치 "1"일 때는 에러 있음으로 판정하고, 상기 행렬 테이블의 열로서, 상기 배타적 논리화에 의해 얻어진 m 비트의 2진수에 일치하는 열을 검색하고, 검색된 열로 대응되는 위치의 부호어의 비트를 논리치 반전하여 정정하고, 정정된 부호어의 n 비트의 데이터를 정규데이터로 한다. 이 에러판정에서는 적화연산 내지 나눗셈 연산과 같은 처리를 필요로하지 않고, 산술논리 연산기나 쉬프터 등의 연산기 및 나눗셈기를 가지고 적화연산기를 구비하고 있지 않은 CPU를 사용하여도 소프트웨어에 의한 ECC 처리를 능률적으로 행하는 것이 가능하게 된다.
데이터 처리장치는 CPU와 재기록 가능한 불휘발성 메모리를 갖는다. 상기CPU는, 상기 불휘발성 메모리에서의 기억영역의 일부인 특정 블록에 정보를 기록할 때는 하나의 데이터를 다른 어드레스의 메모리셀에 저장하고, 상기 특정 블록에서 데이터를 판독할 때는 상기 다른 어드레스의 메모리셀로부터 데이터를 판독하고, 판독한 복수의 데이터에 대해서 논리연산을 실행함으로써 필요한 에러정정을 행하는 것이 가능하게 된다.
상기에서, 1개의 불휘발성 메모리에 대해서 재기록이가 빈번한 일부의 영역을 상기 특정 블록으로서 기록 및 필요한 에러정정 처리대상으로 함으로써 해당 일부의 기억영역에서의 정보기억의 신뢰성 저하의 억제를 우선시킬수 있다. 그리고, 재기록 회수가 적어서 좋은 영역에서는 상기 특정 블록으로서의 처리대상으로 하지 않음으로써 메모리셀의 사용 효율을 최대화하는 것을 우선시킬수 있다. 이것에 의해, 재기록 회수가 적은 용도로부터 많은 용도까지 1개의 불휘발성 메모리로 대응할 수 있고, 정보기억의 신뢰성 향상 또는 재기록 상한회수를 향상시키기 위해, 새로운 하드웨어를 필요로 하지 않는다.
상기 CPU가 실행하는 논리연산은, 예컨대, 상기 다른 어드레스의 수가 2이상일 때, 상기 CPU의 명령셋트에. 포함되는 명령의 실행에 의한 논리 OR 연산 혹은 논리 AND 연산등으로서 좋다. 예컨대, 불휘발성 메모리가 문턱치 전압의 고저에 따른 정보기억을 행하는 것이 가능한 플래시 메모리일 때, 그 메모리셀의 기억정보는 플로팅 게이트가 보유하는 전자 또는 정공의 에 의해 결정되어, 예컨대 열평형상태의 문턱치 전압보다도 문턱치 전압이 높은 상태에 응답하는 기억정보가 논리치 "1", 낮은 상태에 응답하는 기억정보가 논리치 "0",이면, 특성 열화에 의해, 문턱치 전압이 높은 쪽에서 낮은 쪽으로 변화되는 것으로 가정하면 논리 0R 연산을 이용함으로써, 하나의 데이터당 상기 다른 복수 어드레스에 저장한 데이터의 모두가 "0"으로 반전되지 않는 한, 특성 열화에 의한 "1"에서 "0"으로 바람직하지 않은 기억정보의 파괴를 방지할 수 있다. 한편, 특성 열화에 의해, 문턱치 전압이 낮은 쪽에서 높은 쪽으로 변화되는 것으로 가정하면, 논리 AND 연산을 이용함으로써, 하나의 데이터당 상기 다른 복수 어드레스에 저장한 데이터의 모두가 "1",에 반전되지 않은 한, 특성 열화에 의한 "0"에서 "1"으로의 바람직하지 않은 기억정보의 파괴를 방지할 수 있다. 그 반대로, 예컨대 열평형상태의 문턱치 전압보다도 문턱치 전압이 높은 상태에 응답하는 기억정보가 논리치 "0", 낮은 상태에 응답하는 기억정보가 논리치 "1"이면, 특성 열화에 의해, 문턱치 전압이 높은 쪽에서 낮은 쪽으로 변화되는 것으로 가정하면, 논리 AND 연산을 이용함으로써, 하나의 데이터당 상기 다른 복수 어드레스에 저장한 데이터의 모두가 "1"로 반전되지 않은 한, 특성 열화에 의한 "0"에서 "1"로의 바람직하지 않은 기억정보의 파괴를 방지할 수 있다. 한편, 이때, 특성 열화에 의해, 문턱치 전압이 낮은 쪽에서 높은 쪽으로 변화되는 것으로 가정하면, 논리 0R 연산을 이용함으로써, 하나의 데이터당 상기 다른 복수 어드레스에 저장한 데이터의 모두가 "0"으로 반전되지 않은 한, 특성 열화에 의한 "1"에서 "0"으로의 바람직하지 않은 기억정보의 파괴를 방지할 수 있다.
또, 상기 CPU가 실행하는 논리연산은, 예컨대, 상기 다른 어드레스의 수가 3이상일 때, 복수의 명령의 실행에 의해 행해지는 다수결을 채용하는 연산처리로서 서 좋다. "1"에서 "0"으로의 불량과 "0"에서 "1"로의 불량의 쌍방에 대처할 수 있다. 상기 불휘발성 메모리는 상기의 특정 블록과는 다른 블록에, 상기 1개 데이터를 다른 어드레스의 메모리셀에 저장하기 위한 프로그램, 에러정정을 행하기 위한 프로그램 및 그 외의 프로그램을 저장하여 서 좋다.
상기의 특정 블록은 다른 블록에 비해서 많은 재기록 회수를 보증하는 제품사양을 갖는 것이 된다.
상기 불휘발성 메모리는 예컨대 전기적으로 소거 및 기록 가능한 플래시 메모리이다. 상기 CPU와 불휘발성 메모리는 마이크로 컴퓨터를 구성하는 1개의 반도체칩에 형성되어서 좋다. 또한, 상기 CPU와 불휘발성 메모리는 각각 별개의 반도체 칩에 형성되더라도 좋다.
(실시예 1)
《마이크로 컴퓨터》
도 1에는 본 발명의 일예에 관하는 싱글 칩의 마이크로 컴퓨터가 나타난다. 동도에 나타난 마이크로 컴퓨터(1)는, 특별히 제한되지 않지만, 단결정 실리콘과 같은 1개의 반도체기판(반도체 칩)에 CMOS 집적회로 제조기술에 의해 형성된다.
마이크로 컴퓨터(1)는, 연산 제어장치로서의 중앙처리장치(CPU)(2), RAM(3), 버스 스테이트 컨트롤러(BSC)(4), 전기적으로 재기록 가능한 불휘발성 메모리로서의 플래시 메모리(5), 플래시 컨트롤 모듈(6) 및 그 밖의 내장회로를 총칭하는 그 밖의 모듈(7)을 갖는다. 그 밖의 모듈(7)로서 마스크 ROM(8), 인터럽트 컨트롤러(INTC)(9), 타이머(TMR)(10), 입출력포트(I/O)(11) 및 시리얼 인터페이스 컨트롤러(SCI)(12) 등을 갖는다. 그들 회로모듈은 버스 IAB, IIDB, PAB, PDB, CONT를 통해 인터페이스 된다.
상기 버스 IAB, IDB는 정보 전송속도의 비교적 빠른 내부 어드레스 버스, 내부 데이터 버스이다. 상기 버스 PAB, PDB는 정보 전송속도가 비교적 느린 주변 어드레스 버스, 주변 데이터 버스이다. 버스 CONT는 버스 액세스 제어신호나 타이밍 제어신호 등을 전달하는 제어신호선을 총칭한다. 내부 버스 IDB, IAB와 주변 버스 PDB, PAB와의 동작속도의 상이 또는 액세스 대상에 고유의 액세스 형태의 상이에 대한 상기 BSC(4)가 액세스 동작 타이밍 등을 최적 제어함과 동시에, 상기BSC(4)는 액세스 어드레스에 따른 칩 선택 또는 모듈선택 제어 등도 행한다.
상기 CPU(2)는, 특별히 제한되지 않지만, 마스크 ROM(8)또는 RAM(3)으로부터 명령을 페취하고, 페취한 명령을 해독하여 실행한다. RAM(3)는 CPU(2)의 작업영역 혹은 데이터 또는 프로그램의 일시 기억영역으로 된다. 상기 마스크 ROM(8)는 프로그램 또는데이터 테이블 등의 기억영역으로 된다. 인터럽트 컨트롤러(10)는 마이크로 컴퓨터(1)의 외부에서 주어지는 인터럽트 요구 또는 마이크로 컴퓨터(1)내부의 상태에 따라서 내장 회로모듈에서 발생되는 인터럽트 요구를 받아, 인터럽트 우선도 및 인터럽트 마스크 등에 따라서 인터럽트 요구의 접수를 조정한다. 인터럽트 요구가 접수하면, CPU(2)에 인터럽트 신호(IRQ)가 주어지고, 인터럽트 벡터에 의해 인터럽트 요인이 CPU(2)에 주어진다. CPU(2)는 인터럽트 벡터에 의해 지시되는 프로그램으로 처리를 분기한다. I/O(11)는 외부 어드레스 버스 및 외부 데이터 버스로의 접속, SCI(12)의 외부 인터페이스, TMR(10)의 외부 이벤트 신호 입력 등에 사용된다.
상기 CPU(2)의 구체예는 도 2에 나타난다. CPU(2)는, 특별히 제한되지 않지만, 쉬프터(SFT) 및 산술논리 연산기(ALU) 등의 연산기와, 32 비트의 범용 레지스터(R0∼R31), 프로그램 카운터(PC), 컨디션 코드 레지스터(CCR) 및 임시 레지스터(TR) 등의 레지스터군, 그리고 판독 데이터 버퍼(RDB), 기록 데이터 버퍼 (WPB) 및어드레스 버퍼(AB) 등의 버퍼 회로를 실행부에 갖는다. 명령 제어부는 명령 레지스터(IR), 명령 디코더(IDEC), 명령 시퀀스논리(INTL)을 갖는다.
상기 프로그램 카운터(PC)는 다음에 실행해야 할 명령 어드레스를 보유하고, 그 명령 어드레스가 어드레스 버퍼(AB)에서 내부 어드레스 버스(IAB)로 출력되면, RAM(3) 등의 대응 어드레스로부터 판독된 명령이 내부 데이터 버스(IDB)를 통해 명령 레지스터(IR)로 페취된다. 명령 디코더(IDEC)는 명령 레지스터(IR)의 명령을 해독하고, CPU(2) 내부의 제어신호를 생성하고, 상기 실행부에 의한 연산처리를 제어한다. 명령 시퀀스 로직(INTL)은 인터럽트 신호(IRQ) 등에 응답하여 명령 실행순서를 변경하는 제어를 행한다.
도 1에 있어서 플래시 메모리(5)는 메모리셀 어레이(20), X 디코더ㆍ드라이버(XDEㆍDV)(21), 센스앰프(SAA)(22), Y 스위치 어레이(YSW)(23), Y 디코더(YDE)(24), 입출력버퍼(25), 전원회로(VGN)(26) 및 타이밍 발생기(TGN)(27)를 갖는다. 메모리셀 어레이(20)는 매트릭스 배치된 플래시 메모리셀(도시하지 않고)를 갖는다. 플래시 메모리셀은, 특별히 제한되지 않지만, 반도체 기판 혹은 웰 영역에 소스, 드레인을 가지고, 채널의 상방에 각각 절연막을 통해 플로팅 게이트 및 컨트롤 게이트가 형성된 스택 구조를 가지고, 소스를 소스선에, 드레인을 비트선에, 컨트롤 게이트를 워드선에 접속하여 구성된다.
플래시 메모리셀은 문턱치 전압이 프로그램 가능하게 되고, 프로그램된 문턱치 전압에 따라서 정보를 유지한다. 예컨대, 1개의 플래시 메모리셀이 1비트의 정보를 유지하는 경우에, 상대적으로 높은 문턱치 전압상태를 기록상태, 상대적으로 낮은 문턱치 전압상태를 소거상태와 칭한다. 기록상태를 얻기 위한 기록동작은, 특별히 제한되지 않지만, 컨트롤 게이트에 10V, 드레인에 예컨대 5V, 소스 및 기판에 예컨대 0V를 인가하고, 드레인ㆍ소스 사이에 전류를 흘리고, 이것에 의해 핫일랙트론 주입이 일어나거나, 플로팅 게이트에 전자가 축적되어, 메모리셀의 문턱치 전압이 높게 된다. 상기 소거상태를 얻기 위한 소거 동작은, 특별히 제한되지 않지만, 컨트롤 게이트에 10V, 소스 및 기판에 예컨대 -10V를 인가하고, 다시 드레인을 예컨대 개방(플로팅)으로 하여, 플로팅 게이트에 축적된 전자를 기판에 방출시켜, 이것에 의해 메모리셀의 문턱치 전압이 낮게 된다.
상기 입출력회로(25)는 버스 IAB, IDB, PAB, PDB, CONT와의 사이에서 어드레스, 제어신호 및 커맨드를 입력함와 동시에 데이터의 입출력을 행한다. 입출력회로(25)에 입력된 어드레스 신호는 XDECㆍDV(21) 및 YDE(24)에 입력되어 각각 디코드 된다. XDECㆍDV(21)은 그 디코드 결과에 따라서 워드선을 선택한다. YDE(24)는 그 디코드 결과에 따라서 YSW(23)를 통해 비트선을 선택한다. 워드선 선택 및 비트선 선택에 의해 플래시 메모리셀이 선택된다. 판독 동작에서는, 상기 선택된 플래시 메모리셀의 판독 데이터는 SAA(22)에서 검출되고, 입출력회로(25)를 거쳐 버스 PDB 또는 IDB로 출력된다. 기록동작으로서는, 버스 PDB 또는 IDB에서입출력회로(25)에 주어지는 기록데이터가 입출력회로(25)내의 기록 래치회로에 래치되어, 워드선 선택된 메모리셀에 대한, 래치데이터에 따라서 기록ㆍ기록저지가 제어된다. 기록처리의 전에는 미리 블록단위로 플래시 메모리셀에 대한 소거가 행해진다.
상기 전원회로(26)는 클램프 회로나 충전 펌프회로 등을 가지고, 플래시 메모리의 기록ㆍ소거ㆍ판독 등의 동작으로 사용하는 여러가지의 전압을 공급한다. 상기타이밍 제너레이터(27)는, 제어버스(CONT)를 통해 공급되는 스트로브 신호 및 데이터 버스(PDB, IDB)를 통해 입력되는 커맨드에 의거해서 플래시 메모리의 내부 타이밍 신호를 생성한다.
도 1에 있어서 상기 플래시 컨트롤모듈(6)은, 플래시 메모리(5)에 대한 기록 및 소거를 위한 시퀀스 제어 및 ECC 처리에 이용되는 회로블록이다. 이 플래시 컨트롤모듈(6)은, CPU(2)에 의해 액세스 가능한 각각 32 비트의, 기록/소거제어 레지스터(FLMCR), 소거 블록지정 레지스터(EBR), 데이터 레지스터(FMPDR0), FMPAR0 및 리절트 레지스터(FPFR) 등의 제어 레지스터를 구비하고, 또, 플래시 메모리에 대한 기록 및 소거의 시퀀스 동작을 제어하는 시퀀스 제어회로(29)를 갖는다.
상기 기록/소거 제어 레지스터(FLMCR)는 플래시 메모리(5)의 동작모드를 제어하는 레지스터이고, 기록의 유효/무효를 지시하는 기록 인에이블(WE), 소거동작을 지시하는 이레이즈 비트(E), 소거 검증동작을 지시하는 이레이즈 검증 비트(EV), 기록동작을 지시하는 프로그램 비트(P), 기록 검증동작을 지시하는 프로그램 검증 비트(PV), 플래시 메모리의 기록 동작중에 에러가 발생한 것을 나타내는기록 에러비트(PER), 소거 동작중에 에러가 발생한 것을 나타내는 소거 에러비트(EER), 플래시 메모리의 판독 동작때에 에러가 발생한 것을 나타내는 판독 에러비트(RER) 등을 갖는다. 소거 블록지정 레지스터(EBR)는 플래시 메모리셀 어레이(20)의 소거 영역을 블록마다 설정하는 레지스터이고, 블록마다 이레이즈 블록비트(EB0∼EB9)를 갖는다. 데이터 레지스터(FMPDR) 및 리절트 레지스터(FPFR) 등은 후술의 ECC 처리에서 이용되는 레지스터이다. 또, 레지스터(FMPDR 및 FPFR)는, 범용 레지스터(R0-R31)내의 레지스터를 이용하여도 좋다. .
《일부의 영역에 대한 소프트웨어 ECC 처리》
다음에 마이크로 컴퓨터의 ECC 기능에 대해서 설명한다. 플래시 메모리(5)의 메모리셀 어레이(20)는, 특별히 제한되지 않지만, 도 3의 (a)에 예시되는 바와 같이 부트영역(20A)과 사용자 영역(20B)으로 대별된다. 특별히 제한되지 않지만, 부트영역(20A)은 마이크로 컴퓨터(1)의 사용자에 의한 자유로운 재기록이 금지되는 영역이고, 사용자 영역(20B)은 사용자에 의한 자유로운 재기록이 허용되는 영역이다. 요컨대, 상기 소거 블록지정 레지스터(EBR)의 이레이즈 블록비트(EB0∼EB9)의 설정에 의해 소거 가능한 영역은 사용자 영역(20B)으로 한정된다. 부트영역에 저장된 프로그램은 사용자가 소정의 동작모드를 설정하는 것에 의해 실행 가능하다. 또, 플래시 메모리에 대한 재기록 시퀀스의 구체예에 대해서 여기에서는 상술하지않지만, 기록데이터로 하고 싶어한 기록동작은 먼저 소거동작이 완료되는 것을 조건으로 하는 것이고, 소거블록에 의한 소거가 지시되지 않으면 당연히 기록데이터에 따른 기록동작도 행해지지 않도록 되어 있다. 그와 같은 기록ㆍ소거제어는 상기시퀀스 제어회로(29)가 행한다.
마이크로 컴퓨터(1)의 ECC 기능은, 도 3의 (b)에 예시되는 바와 같이, 상기 사용자 영역(20B)에 지정된 일부의 영역(20Ba)의 데이터로 향하고 있다. 즉, ECC 기능은, CPU(2)가 소정의 프로그램을 실행함으로써, 사용자 영역(20B)의 일부의 기억영역(제1영역)(20Ba)이 재기록 보증회수를 해당 사용자 영역(20B) 그 밖의 기억영역(제2영역)(20Bb)이 재기록 보증회수보다도 향상시키는 기능이다. 이 소정의 프로그램 실행에 의한 ECC 기능은, 상기 지정된 일부의 기억영역(20Ba)에 대한 기록 데이터에 ECC 코드를 생성하여 부가하는 처리(ECC 코드생성처리)와, 상기 지정된 일부의 기억영역(20Ba)에서의 판독 데이터에 대한 ECC 코드에 의한 에러판정과 에러정정을 행하는 처리(ECC 에러판정 정정처리)에 의해 실현된다. 전자(前者)의 처리는 CPU(2)가 ECC 생성 프로그램을 실행함으로써 행해지고, 후자(後者)의 처리는 CPU(2)가 에러정정 프로그램(22)을 실행함으로써 행해진다.
상기 영역(20Ba)에는 빈번히 재기록되는 제어용 파라미터 등의 데이터의 기억에 이용된다. 빈번히 재기록되는 제어용 파라미터란, 예를들면 마이크로 컴퓨터(1)가 자동차의 엔진제어에 이용되는 경우, 엔진 정지시의 각 피스톤의 상대위치, 엔진 정지직전까지의 연비정보 등의 정보로 된다. 빈번히 재기록되는 데이터에 ECC 처리를 행하면, 가령, 재기록 회수의 증가에 의한 플래시 메모리셀의 특성 열화에 기인하여 판독 데이터에 에러를 생기게 하여도, ECC 코드에 의한 에러정정능력의 범위에서, 그 에러를 정정할 수 있다. 바꾸어 말하면, ECC 처리에 의해 실질적으로 재기록 보증회수를 개선 또는 향상시킬수 있다.
상기 영역(20Bb)은, 도 3의 (b)에서는, 빈번히 재기록되는 것이 아닌 정보로서, 테이블 데이터 등의 고정데이터, 상기 ECC 생성 프로그램(21), 에러정정 프로그램(22) 및 다른 사용자 프로그램 등의 기억영역으로서 이용된다. 상기 ECC 생성프로그램(21) 및 에러정정 프로그램(22)은, 도 3의 (c)에 예시되는 바와 같이 부트영역(20A)에 저장하고, 혹은 도 3의 (d)에 예시되는 바와 같이 마스크 ROM(8)에 저장하여도 좋다.
상기에서, 사용자 영역(20B)의 일부의 기억영역(20Ba)에 대한 액세스만을 대상으로서, ECC 코드의 부가나 에러정정을 행하여 재기록 보증회수를 향상시키므로, 상기 일부의 기억영역(20Ba)에는 재기록이 빈번한 파라미터 데이터 등을 저장하면 좋다. 다른 기억영역(20Bb)에는 재기록 빈도가 낮은 프로그램 데이터 등을 저장하여도, 해당 다른 기억영역에는 ECC 코드가 부가되지 않는다면, 기억영역에 관계없이 모든 기록 데이터에 대한 구별없이 ECC 코드를 부가하는 구성에 비해서, 실질적으로 필요없는 ECC 코드에 의한 기억영역의 헛된 이용을 생략하면서 플래시 메모리셀의 기억정보의 신뢰성 향상, 바꾸어 말하면 기억정보가 재기록 보증회수의 향상을 실현할 수 있다.
기록 데이터에 대한 ECC 코드의 부가 및 ECC 코드에 의한 에러판정 및 정정의 처리를 CPU(2)에 의한 프로그램 실행으로 실현하므로, 사용자 데이터 비트 수에 대한 ECC 코드의 비트 수의 비율을 정의하는 ECC 방식은 ECC 코드생성 프로그램 및 에러정정 프로그램의 기술내용으로 선택할 수 있고, 플래시 메모리의 메모리셀의 디바이스 특성에 맞는 ECC 방식의 선택이 용이하다. 예컨대, 도 4에 예시되는 바와같이 사용자 데이터 비트 수에 대한 ECC 코드의 비트 수가 줄어들수록 정정능력은 낮게 되지만 ECC 코드에 의해 소비되는 메모리셀의 비율(오버헤드)은 적어지게 된다. 따라서, ECC 처리의 소프트웨어에 의해 에러정정 효율을 용이하게 변경할 수 있으므로, 마이크로 컴퓨터의 디바이스 능력에 맞는 에러정정 방식을 용이하게 선택할 수 있고, 이것은 ECC 코드의 비트 수로부터 낭비를 배제하는 것을 의미하며, 플래시 메모리의 기억영역의 유효 이용을 보증한다. 요컨대, 사용자 데이터에 대한 ECC 코드의 오버헤드를 작게 하여 플래시 메모리의 이용 효율을 최대한으로 하는 것이 가능하게 된다.
《ECC 처리영역의 규정》
상기 사용자 영역(20B)의 일부의 기억영역(20Ba)을 ECC 처리대상으로 할 때, 그 기억영역(20Ba)을 규정하는 것은, 예컨대 기억영역(20Bb)에 저장된 사용자프로그램이다. 상기 기억영역(20Ba)에 파라미터를 저장할 때, 예컨대 사용자 프로그램은, 파라미터 데이터의 소스 어드레스와 영역(20Ba)의 저장소 어드레스를 지정하고, CPU의 처리를 ECC 코드생성 프로그램으로 시프트시킨다. ECC 코드생성 프로그램이 실행되므로서, 소스 어드레스의 파라미터 데이터에 대한 ECC 코드가 생성되어, 파라미터 데이터로서의 사용자 데이터에 ECC 코드를 부가한 ECC 첨부데이터가 상기 저장소 어드레스에 저장된다. 파라미터 데이터를 판독할 때는, 사용자 프로그램은 영역(20Ba)의 소스 어드레스와 임의의 목적지(destination) 어드레스를 지정하고, CPU의 처리를 에러판정 프로그램에 점프한다. 에러판정 프로그램이 실행되므로서, 소스 어드레스의 ECC 첨부데이터가 판독되어, 이것에 대한 에러판정이 행해지고, 필요한 정정이 행해지고 파라미터 데이터로서의 사용자 데이터가 목적지 어드레스에 셋트된다. ECC 처리에 따른 상기 파라미터 데이터의 저장 및 파라미터 데이터의 판독에 있어서, 사용자 프로그램과 ECC 코드생성 프로그램 및 에러정정 프로그램과의 사이에서 행해지는 액세스 어드레스 및 판독 데이터의 주고 받음은, CPU(2)의 범용 레지스터 혹은 RAM(3)의 영역을 통해 행해진다. 이 상세는, 소프트웨어 ECC 처리의 구체예에서 설명한다.
《사용자 데이터와 ECC 코드와의 대응》
상기 처리에 있어서, 사용자 데이터와 ECC 코드와의 대응은 사용자 프로그램, ECC 코드생성 프로그램 및 에러정정 프로그램에 있어서 통일적으로 파악되고 있는 것이 바람직하다. 예컨대, 도 5에 예시되는 바와 같이, ECC 코드생성 대상이되는 사용자 데이터의 배열(DA1)에 대해서, 사용자 데이터와 대응하는 ECC 코드를 하나의 레코드로 하도록 하나의 배열 데이터(DA2)로 하여 포맷화 하고, 혹은, 사용자 데이터의 배열(DA1)에 대한 ECC 코드를 다른 데이터 배열(DA3)로서 규정하여 서 좋다. 후자의 경우는 당연하고, 사용자 데이터의 배열(DA1)과 ECC 코드의 배열(DA3)은 선두 어드레스 등에 의해 배열 상호의 대응붙임이 필요한 것은 말할 필요도 없다.
도 6에는 사용자 데이터와 ECC 코드를 하나의 배열 데이터중에 대응하여 영역(20Ba)에 기록할 때의 처리순서가 예시된다. 우선, 기록대상이 되는 사용자 데이터의 배열이 지정되어 ECC 코드 첨부데이터의 기록처리가 지시되면, 사용자 데이터의 판독와 전개가 행해진다(S1). 즉, (B)에 예시되는 바와 같이, 사용자 데이터의배열(DA1)이 워크메모리로 읽혀지고, 거기에서, 읽혀진 사용자 데이터는 규정의 데이터 포맷에 따라서, (B)의 배열(EXT)에서 예시되는 바와 같이, 사용자 데이터의 이웃에 ECC 코드 영역을 가지는 레코드 형식으로 확장된다. 이어서, (A)에 예시되는 바와 같이 사용자 데이터에 대한 ECC 코드를 생성하고, 이것을 대응레코드의 ECC 코드영역에 저장하고, 레코드 배열(DA2)이 형성된다. 이 레코드 배열(DA2)의 데이터에 대한 상기 플래시 메모리의 영역(20Ba)으로의 기록이 행해진다(S3∼S7). 기록처리는, 기록펄스의 인가(S4),기록데이터의 검증(S5), 검증 결과에 의거해서 기록 종료판정(S6)을 행하고, 소망의 기록상태에 도달하지 않고 있으면 재기록 데이터를 연산하여 스텝(S4)에서터의 처리를 반복하고, 규정회수반복하여도 스텝(S6)의 종료판정을 만족할 수 없으면 기록 이상종료로 되고, 스텝 (S6)에서 규정의 기록상태에 도달하면 기록 정상종료라고 된다. 기록펄스 인가의 전에는 기록영역에 대한 소거가 종료되고 있는 것으로 한다.
도 7에는 사용자 데이터와 ECC 코드를 다른 배열데이터로서 대응하고 있는 영역(20Ba)에 기록할 때의 처리순서가 예시된다. 우선, 기록대상이 되는 사용자 데이터의 배열이 지정되어 ECC 코드 첨부데이터의 기록처리가 지시되면, 사용자 데이터의 판독이 행해진다(S11). 즉, (B)에 예시되는 바와 같이, 사용자 데이터의 배열(DA1)이 워크메모리로 판독된다. 이어서, (A)에 예시되는 바와 같이 사용자 데이터에 대한 ECC 코드를 생성하고, 이것을 다른 데이터배열(DA3)로서 저장한다(S12). 쌍방의 데이터배열(DA1, DA3)에 대한 상기 플래시 메모리의 영역(20Ba)으로의 기록이 행해진다(S13∼S17). 기록처리는 상기 스텝(S4∼S7)의 처치와 같다.
도 8에는 도 6에서 설명한 레코드배열을 갖는 ECC 코드 첨부데이터를 판독할 때의 처리순서가 예시된다. 우선, 판독대상이 되는 ECC 코드 첨부데이터의 레코드선두 어드레스가 설정되고(S21), 이것에 대응하는 ECC 코드 첨부데이터가 플래시 메모리의 영역(20Ba)에서 워크메모리로 판독된다(S22). 판독된 데이터에 대한 에러판정이 행해진다(S23). 이때, 도 6에서 설명한 바와 같이 에러판정을 위해 판독된 배열데이터는 일정한 포맷, 즉, 사용자 데이터와 ECC 코드의 소정 비트 수 단위의 페어(pair)를 단일 레코드로 하는 배열의 포맷을 가지고 있으므로, 에러정정 프로그램은, 그 규정의 포맷인 것을 전제로, 각 레코드로부터 사용자 데이터와 ECC 코드를 참조하여 에러의 판정을 행할 수 있다. 정정 가능한 에러에 대해서는 에러정정이 실행되고(S24), 필요한 정정이 실행된 판독 데이터가 RAM(3) 등의 소정의 영역에 저장된다(S25).
도 9에는 도 7에서 설명한 사용자 데이터와 ECC 코드가 별개의 배열데이터로 되는 ECC 코드 첨부데이터를 판독할 때의 처리순서가 예시된다. 우선, 판독대상이라 할 수 있는 ECC 코드의 배열데이터의 선두 어드레스와 사용자 데이터의 선두 어드레스가 설정되고(S31), 이것에 대응하는 ECC 코드와 사용자 데이터가 플래시 메모리의 영역(20Ba)에서 워크메모리에 판독되고(S32), 판독된 데이터에 대한 에러판정이 행해진다(S33). 에러판정에 있어서, 대응하는 사용자 데이터와 ECC 코드를 참조하는 경우에도 각각의 배열의 구조를 지정하는 정보가 사용자 프로그램을 통해 주지 않으면 안된다. 요컨대, 도 7에서 설명한 ECC 코드용 배열데이터(DA3)의 생성에 있어서, 해당 배열데이터(DA3)의 선두 어드레스 및 구조는 사용자 프로그램을통해 주어지고 있으므로, 그 배열을 이용하는 경우에도 동일하게 사용자 프로그램으로부터 필요한 어드레스 정보 및 배열의 구조 정보가 주어지지 않으면, 그것을 이용할 수 없다. 정정 가능한 에러에 대해서는 에러정정이 실행되고(S34), 필요한 정정이 실행된 판독 데이터가 RAM(3) 등의 소정의 영역에 저장된다(S35).
도 3의 (b)에서 설명한 바와 같이, 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 상기 재기록 허용영역으로서의 사용자 영역(20B)에 유지시키면, 그들 프로그램을 사용자가 개발하여 기록할 수 있다는 자유도를 얻는다. 따라서, 사용자 데이터와 ECC 코드와의 포맷에 대해서는 사용자 작성의 프로그램에 의존한 임의 포맷으로 하는 쪽이 사용자에게 있어서 형편이 좋은 경우도 있다. 이때, 마이크로 컴퓨터(1)의 메이커가 그들 ECC 코드생성 프로그램 및 에러정정 프로그램을 제공하고자 하는 경우에도 사용자의 편의를 고려하면, C 언어같은 고급언어로 기재된 소스프로그램으로 주는 것이 좋다. 그와 같은 임의의 포맷을 고려할 때, ECC 코드의 부가 및 ECC 코드 첨부데이터를 사용한 에러정정 처리방식에는, 예컨대 도 7 및 도 9에서 설명한 순서를 채용하여 좋다.
한편, 도 3의 (c)에서 설명한 바와 같이, 소거 금지영역으로서의 부트영역(20A)에 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 저장하는 것을 상정한다. 이 경우에는, 부트영역(20A)에 일단 기록된 프로그램의 재기록은 원칙적으로 불가능하므로, 바람직하게는, 그들 프로그램은 마이크로 컴퓨터(1)의 메이커가 기록하는 것이 좋다. 그렇다면, 사용자 데이터와 ECC 코드와의 포맷에 대해서도, 사용자에 대한 자유도의 보증이라는 관점은 낮고, 반대로 사용자의 부담경감이라는 관점에서 고정포맷을 채용하는 쪽이 상책이라고 생각된다. 상기 ECC 코드생성 프로그램은, ECC 코드를 생성한 후, 생성한 ECC 코드와 그것에 대응하는 데이터를 규정의 포맷에 따라서 ECC 코드 부가데이터로서 상기 불휘발성 메모리의 일부의 기억영역에 저장하고, 에러정정 프로그램은 상기 규정의 포맷에 따라서 ECC 코드 부가데이터를 인식하면 좋다. 그와 같은 고정포맷을 고려할 때, ECC 코드의 부가 및 ECC 코드 첨부데이터를 사용한 에러정정 처리방식으로서, 예컨대 도 6 및 도 8으로 설명한 순서를 채용하면 좋다. 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 도 3의 (d)에서 설명한 마스크 R0M(8)에 저장하는 경우도 동일하게 생각하여 좋다.
《온 보드 프로그램 모드》
온 보드 프로그램 모드에 대해서 설명한다. 이 동작모드는, 도 3의 (b)에서 설명한 바와 같이 상기 ECC 코드생성 프로그램 및 에러정정 프로그램 등을 사용자 영역(20B)에 유지시킬 때 필요한 동작모드의 일예이다.
우선, 부트모드에 의한 온 보드 프로그램의 순서를 설명한다. 퍼스널 컴퓨터또는 EPROM 라이터 등의 호스트 장치에 기록제어 프로그램과, 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 준비하고, I/O(11)의 소정의 포트에 접속한다. 소정의 외부단자를 규정의 상태로 하여 마이크로 컴퓨터(1)를 부트모드로 천이시킨다. 부트모드로 천이하면, 마이크로 컴퓨터(1)는 부트영역의 부트 프로그램을 실행하고, SCI(12)에 의한 통신을 가능하게 하며, 부트영역에서 RAM(3)에, 플래시 메모리(5)의 사용자 영역(20B)에 대한 소거 프로그램과, SCI(12)를 통하는 통신제어 프로그램을 로드한다. 이어서, 로드된 소거 프로그램이 실행되어 사용자 영역(20B)이 전면 소거되어, 상기 통신제어 프로그램에 의해 호스트에서 기록제어 프로그램이 RAM(3)에 로드된다. 그 후, 기록제어 프로그램이 실행되어, 호스트가 보유하는 상기 ECC 코드생성 프로그램 및 에러정정 프로그램등이 사용자 영역(20B)에 기록된다.
다음에, 사용자 프로그램 모드에 의한 온 보드 프로그램의 순서를 설명한다. 퍼스널 컴퓨터와 같은 호스트 장치에 기록ㆍ소거제어 프로그램과, 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 준비하고, 또, 사용자 영역(20B)에는 호스트장치 사이의 전송제어 프로그램을 미리 저장해 놓는다. 우선, CPU(2)는 인터럽트 에 응답하여 혹은 쟌명령을 실행함으로써 상기 전송제어 프로그램을 실행하고, 호스트 장치로부터 기록ㆍ소거제어 프로그램을 RAM(3)으로 전송한다. 다음에, RAM(3) 상에서 기록ㆍ소거제어 프로그램을 실행하고, 사용자 영역(20B)이 필요한 영역을 소거하며, 그곳에, 호스트가 보유하는 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을 기록한다.
《ECC 처리속도의 향상》
도 10에는 상기 ECC 코드생성 프로그램 및 에러정정 프로그램의 실행속도를 향상시키기 위한 일예가 나타난다. 즉, 상기 플래시 메모리(5)의 부트영역(20A)(도 3의 (c)) 또는 사용자 영역(20B)(도 3의 (b))에서 상기 ECC코드생성 프로그램 및 에러정정 프로그램을 RAM(3)의 소정의 어드레스 영역으로 전송하고, 상기 CPU(2)에는 상기 RAM(3)으로 전송된 상기 ECC 코드생성 프로그램 및 에러정정 프로그램을실행시키면 좋다. 이때, 상기 CPU(2)는 리셋의 지시에 응답하여 상기 플래시 메모리(5)로부터 상기 RAM(3)으로의 전송제어 프로그램을 실행하면 좋다. 그와 같은 전송제어 프로그램은 예컨대 사용자 영역(20Bb)에서의 사용자 프로그램으로서 혹은 부트영역(20A)의 프로그램으로서 소정의 어드레스 영역에 저장해 놓으면 좋다. 이 방법은, RAM(3)의 액세스 사이클이 플래시 메모리(5)의 액세스 사이클보다 빠른 경우에 있어서, 상기 ECC 코드생성 프로그램 및 에러정정 프로그램의 CPU에 의한 실행속도를 고속으로 할 수 있다.
도 1에는 에러판정에 의한 오버헤드를 외관상 해소하기 위한 일예가 나타난다. 즉, 상기 CPU(2)는 리셋의 지시에 응답하고, 소정의 리셋처리 사용자 프로그램을 실행하며, 상기 플래시 메모리(5)의 일부의 기억영역(20Ba)에서 순차 ECC 코드 부가파라미터 데이터(DATA1)를 판독하고, 판독한 ECC 코드 부가파라미터 데이터(DATA1)에 대한, 상기 에러정정 프로그램(22)의 실행에 의해 상기 에러판정과 에러의 정정을 행하여, 상기 에러판정과 에러정정처리를 거친 파라미터 데이터 (DATA2)를 상기 RAM(3)에 초기적으로 저장한다. 그 후, CPU(2)는 제어용 사용자 프로그램에 따라서 RAM(3)에서 필요한 데이터를 판독하면 좋고, 판독 동작시에 그 때마다 에러판정을 행하는 것을 필요로 하지 않는다.
또, 도 11의 상기 에러정정 프로그램(22)은, 도 10에 나타낸 바와 같이, 플래시 메모리(5)의 소정의 어드레스 영역에서 RAM(3)의 소정의 어드레스 영역으로 전송된 상태를 나타내고 있다.
도 12는, 에러판정에 의한 오버헤드를 외관상 해소하기 위한 제2 방법의 일예가 나타난다. 상기 도 11은 상기 에러정정 프로그램(22)을 RAM(3)의 어드레스 공간상에서 CPU(2)에 의해 실행하는 경우를 나타냈지만, 도 12는 RAM(3)의 판독 액세스 사이클이 플래시 메모리(5)의 판독 액세스 사이클보다 빠르지 않은(짧지 않은)경우에 유효한 방법이 나타난다.
플래시 메모리(5)의 액세스 사이클과 RAM(3)의 액세스 사이클이 동일한 경우, 에러정정 프로그램(22)의 CPU(2)에 의한 실행속도는, RAM(3)의 기억영역상에서 에러정정 프로그램을 CPU(2)로 실행하여도, 플래시 메모리의 기억영역상에서 에러정정 프로그램을 CPU(2)로 실행하여도, 그 실행속도는 그 만큼 변화하지 않는다고 생각된다.
따라서, 도 12에 나타내는 바와 같이, 플래시 메모리(5)의 일부의 기억영역상에 에러정정 프로그램(22)을 저장하고, 그 프로그램(22)을 RAM(3)으로 전송하지 않고 플래시 메모리(5)의 상기 일부의 기억영역에서 CPU(2)로 실행하고, 플래시 메모리(5)에 일부의 기억영역(20Ba)에 저장된 ECC 코드 부가파라미터 데이터(DATA11) 에 대한 에러판정 및 에러정정을 행하여, 에러판정 및 에러정정 처리가 시행된 파라미터 데이터(DATA22)를 RAM(3)의 소정의 기억영역에 저장한다. 상기 에러정정 프로그램의 처리는, 상기 도 11에서 설명한 바와 같이, 플래시 메모리(5)의 일부의 영역(20Bb)에 저장된 리셋처리 사용자 프로그램이, 리셋에 응답하는 CPU(2)에 의해 실행되므로서 실행된다.
《소프트웨어 ECC 처리의 원리적 수법》
다음에 소프트웨어 ECC 처리의 원리적인 수법을 설명한다. ECC에 의한 부호화나 에러정정의 공지의 수법에서는 예컨대 해밍 코드의 검사행렬을 이용하고, 에러정정에서는 판독 데이터와 해밍 코드의 행렬연산을 적화연산 등을 이용하여 행할 수 있다. 마이크로 컴퓨터(1)에서의 소프트웨어 ECC 처리에서는, 데이터를 n 비트로 하고, n 비트의 데이터에 대한 ECC 코드를 m 비트로 할 때, m 비트의 서로 다른 2진수를 m+n열로 열거한 행렬 테이블을 예컨대 도 3의 (c)에 예시되는 플래시 메모리(5)의 기억영역(20Bb)에 고정데이터로서 형성하고, 상기 ECC 코드생성 프로그램 및 에러정정 프로그램의 처리에 그 행렬 테이블을 참조시킨다.
도 13에는 16비트 데이터에 대한 1비트 정정을 위한 행렬 테이블(40)의 일예가 나타난다. 동도의 행렬 테이블은 편의상 생성행렬(41)과 검사행렬(42)로 나누어 도시되어 있다. 생성행렬(41)에서의 행(行) 번호 1∼21, 열(列) 번호 1∼16은, 1∼16이 16비트 데이터에 관한 번호, 17∼21이 5비트의 ECC 코드에 관한 번호인 것으로 이해되고 싶다. 검사행렬(42)에서의 행 번호 1∼21은 생성행렬과 동의의, 열 번호 1∼5는 5비트의 ECC 코드에 관한 번호이라고 이해되고 싶다.
ECC 코드 부가데이터, 즉 부호어의 생성은 다음과 같이 행한다. 예컨대 16비트의 데이터를 M = m15, m14,…, m1, m0에 대한 5비트의 ECC 코드(검사비트) P = p 4, p3, p2, p1, p0를 생성하여 21비트의 부호어를 생성한다. 이 부호어를 생성하기 위해서는 생성행렬(41)과 데이터 M과의 행렬연산을 행하면 좋다. 요컨대, 도 14와같이 생성행렬(41)과 데이터 M을 열거하고, 데이터 M의 비트가 "1"에 대응하는 생성행렬(41)의 행을 가산하면 좋다. 여기서 행하는 가산은 2진수의 가산이고, 각 비트마다의 배타적 논리화(Ex-OR)를 계산하면 좋다. 이 연산수법에 있어서, 원래의16비트의 데이터 M은 그대로 남으므로, 생성행렬(41)에서의 ECC 코드 5 비트 상당부분에 대해서 배타적 논리화를 연산하면 좋다. 예컨대, H'8041(b'1000_0000_0100_0001)의 16비트 데이터에 대해서 ECC 코드를 생성하기 위해서는, 도 15에 예시되는 바와 같이, 16비트데이터 M에 대한, 상기 생성행렬(41)내의, ECC 코드 5비트 상당부분에 관한 행렬을 추출한 행렬(41A)을 열거하고, 데이터의 논리치 "1"의 비트 위치에 대응하는 상기 행렬 테이블의 열의 값을 행방향의 비트마다 배타적 논리화를 연산하여 ECC 코드를 생성하면 좋다. 도 16에는 여기서 행하는 배타적 논리화 연산을 위한 연산수단을 ECC 코드 1비트분의 구성을 대표로서 예시한다. 도 16의 구성에서는, 2비트의 배타적 논리화 연산기(43)의 출력을 지정 레지스터(Dreg)(44)가 받고, 배타적 논리화 연산기(43)의 한쪽 입력에는 Dreg (44)의 출력이 귀환되며, 다른쪽의 입력에는 소스 레지스터(Sreg)(45)의 출력이 주어진다. 상기 배타적 논리화 연산에 있어서 Dreg(43)의 초기치는 "0"이고, Sreg(43)에는 순차, 데이터의 논리치 "1"의 비트 위치에 대응하는 상기 행렬 테이블의 열의 값이 행방향의 비트마다 입력되어, 배타적 논리화 연산기(43)는 쌍방의 입력에 대한 배타적 논리화 연산결과를 Dreg(44)에 래치하고, 이것을 Sreg(43)의 다음 출력과의 배타적 논리화에 이용한다. 최종적으로 Dreg(44)에 얻어진 결과가, ECC 코드의 대응비트의 값이 된다.
또한, 도 15, 도 16의 설명에서 명백해진 바와 같이, 생성행렬(41)은 적어도 도 14의 열 번호 17∼21의 부분만이라면 좋다.
도 17에는 도 15의 경우의 배타적 논리화 연산결과가 나타난다. 동도의 Xe-OR 결과가 연산된 ECC 코드이다. H'8041의 경우에는, M = b'1000_0000_0100_000에 P = b'11101를 부가한 데이터 C = 1000_0000_0100_0001, 11101이 21비트의 부호어가 된다.
플래시 메모리에서 판독된 부호어에 대한 에러판정은, 상기 검사행렬(42)과 21비트의 부호어와의 곱셈을 계산한다. 실제로 곱셈을 계산하고자 하면 적화연산에 의한 행렬연산을 행하지 않으면 안된다. 여기서는, 도 18에 예시되는 바와 같이, 검사행렬(42)에 대한 부호어 C를 열거하고, 상기 부호어의 논리치 "1"의 비트 위치에 대응하는 상기 검사행렬(42)의 열의 값을 행방향의 비트마다 배타적 논리화를 채용한다. 이 배타적 논리화연산은 도 16으로 설명한 것과 같은 수법으로 행하면 좋다. 도 18의 예는 플래시 메모리(5)에서 판독된 부호어에 에러가 없는 경우를 나타내고 있고, 상기 생성된 부호어 C= 1000_0000_0100_0001, 11101과 같은 부호어가 판독된 상태가 나타나 있다.
도 19에는 도 18의 예에 있어서 상기 배타적 논리화에 의한 연산결과가 나타난다. 도 19의 결과의 란에 나타난 5비트의 값(R1t)이 모두 비트 논리치 "0"일 때 는 에러 없음으로 판정되어, 상기 부호어 C에 포함되는 16비트의 데이터 M이 정규데이터로 된다.
도 20에는 플래시 메모리(5)에서 판독한 부호어 Cer에 1비트의 에러를 포함하는 경우가 예시된다. 도 20의 결과의 란에 나타난 5비트의 값(Rlt)이 1비트라도 논리치 "1"일 때는 에러 있음으로 판정된다. 에러가 있는 비트 위치는, 상기 검사행렬(42)의 열로서, 상기 배타적 논리화에 의해 얻어진 5비트의 2진수 Rlt에 일치하는 열로 대응되는 위치의 부호어 Cer의 비트 Ber이다. 이 에러비트 Ber에 대해서, 그 논리치를 반전하여 에러정정을 하면 좋다. 정정된 부호어에 포함되는 16비트의 데이터 M이, 정정 후의 정규데이터로 된다.
도 20의 설명에서 명백해진 바와 같이 정정 가능한 1비트의 에러를 생성하고 있을 때, 에러판정의 연산결과 Rlt는 검사행렬(42)의 어느 열의 비트 패턴에 일치하는 것이 된다. 에러판정의 연산결과 Rlt에 그 밖의 비트 패턴이 나타날 때는 2비트 이상의 정정불능인 에러가 발생하고 있는 것이 된다. 도 2에는 그와 같은 정정불능을 의미하는 10 종류의 비트 패턴이 나타난다. 검사행렬(42)에 의한 이 예에서는, 그들 정정불능을 의미하는 10 종류의 비트 패턴의 값은 10진수로 22 이상의 값이 되도록 되어 있으므로 정정불능의 판정도 용이하다.
이상에서 설명한 소프트웨어 ECC 처리로서는 적화연산을 요하는 행렬연산을 직접 행하지 않으므로, CPU(2) 혹은 마이크로 컴퓨터(1)는 적화연산기를 구비하지 않아도, 소프트웨어에 의한 ECC 처리를 능률적으로 행하는 것이 가능하게 된다. 또, 행렬 테이블을 이용하고 있으므로, 그 때마다 생성행렬이나 검사행렬을 생성하지 않아도 좋다.
도 22에는 정정불능 에러에 대한 예외 처리를 실행 가능하게 하는 예가 나타난다. 상기 에러정정 프로그램의 실행에 의한 상기 에러판정 처리에 있어서 정정불능인 에러가 발생한 때, 오동작 방지의 관점에서 상기 CPU(2)는 상기 에러정정 프로그램의 실행에 의한 상기 에러판정 처리에 있어서 정정불능인 에러의 발생을 나타내는 정보를 외부에서 인식 가능하게 RAM(3)의 플래그 영역(FLG30)(혹은 프래시컨트롤 모듈(6)내의 레지스터(FMLCR)의 판독 에러비트(RER))에 유지시킨다. 예외처리 프로그램과 같은 사용자 프로그램을 통해 그 플래그 영역(FLG)을 소정 간격마다 참조시켜, 정정불능인 에러발생을 인식할 때, 정정불능인 에러를 발생한 데이타 블록 혹은 모든 데이터의 재기록, 즉 새로운 사용자 데이터에, ECC 코드를 생성하고, 이것을 부가하여 영역(20Ba)의 소정 영역 기록하는 처리를 실행시킨다.
또 데이터 파괴에 의한 오동작 방지를 더 추진하는 경우에는, 상기 CPU(2)는 상기 에러정정 프로그램의 실행에 의해 에러정정 가능한 데이터를 검출한 경우에도, 그것을 나타내는 정보를 외부에서 인식 가능하게 RAM(3)의 소정 기억영역 또는 소정의 범용 레지스터에 유지시키면 좋다. 그와 같은 정보는경보정보로서 이용하면좋고, 예컨대 소정의 사용자 프로그램을 통해 그 정보영역을 정기적으로 참조시키면 좋다. 이것에 의해, 사용자 시스템은, 데이터가 깨지어버린다는 것을 재빨리 인식할 수 있어, 깨지어버린 데이터의 재기록(재기록)을 재촉하여 데이터의 신뢰성을 더 향상시키는 것이 가능하게 된다. 요컨대 실제로 데이터 에러를 생기게 하는 사태의 발생을 미연에 방지할 수 있다. ·
《ECC 코드생성 처리의 구체예》
여기서는 도 17에서 설명한 고정포맷의 사용자 데이터를 준비하여 ECC 코드를 생성하는 처리를 구체적으로 설명한다. ECC 코드의 생성 전에 예컨대 사용자 프로그램에 따라서 사용자 데이터의 판독와 포맷 전개가 행해진다. 전개된 데이터는 도 23에 예시되는 바와 같이, 사용자 데이터 16비트에 대해서 16비트의 확장비트를 할당하고, 합계 32비트가 하나의 ECC 데이타 블록으로서 부호어 영역이 된다. 상기16비트의 확장비트에는 5비트의 ECC 코드영역 이외에 11비트의 워크비트 영역이 마련되고 있지만, 이것은 필요한 데이타 블록을 워드경계를 단위로 액세스하여얻어지도록 하는 실용적인 관점을 고려한 것이다.
도 24에는 하나의 ECC 데이타 블록의 구성이 더 상세히 나타난다. 동도에 있어서 부호화 검사비트란 ECC 코드를 의미한다. 동도에 있어서 ECC 데이타 블록의 비트번호에 대응하여 기능명이 할당된다. 기능명 D00∼Dl5는 사용자 데이터이고, 기능명 P00∼P04는 ECC 코드이다.
도 25에는 행렬 테이블의 데이터(생성용 데이터)예가 나타난다. 동도에 나타나는 생성용 데이터는 상기 기능명에 대응되어, 각각 테이블 검색 어드레스(검색어드레스)(X∼X+14)가 할당되어 있다. 도 25의 생성용 데이터는, 요컨대 도 18의 검사행렬(42)과 실질적으로 같고, 이 검사행렬(42)의 일부가 도 15에서 설명한 실질적인 생성행렬(41A)로 되어 있다. 도 25의 기능명 D00∼D15의 생성용 데이터는 도 18의 열 번호 16∼1의 비트열로 대응되고, 도 25의 기능명 P00∼P04의 생성용 데이터는 도 18의 열 번호 21∼17의 비트열에 대응되고 있다. 도 25의 테이블을 편의상 ECC 테이블(ECCTLB)으로도 기술한다.
도 26에는 ECC 코드생성 프로그램에 의한 처리순서가 예시된다. ECC 코드생성 프로그램과 그것에 앞서 실행되는 사용자 프로그램과의 사이의 데이터 및 어드레스의 주고 받음에는 CPU(2)의 범용 레지스터 및 플래시 컨트롤모듈(6)내의 레지스터가 이용된다. 즉, 사용자 프로그램은, 플래시 컨트롤모듈(6)내의 레지스터 (FMPAR0)에 기록데이터 영역의 선두 어드레스를 셋트한다. 요컨대, 도 23에 예시되는 것의 RAM(3)에 전개된 데이터의 선두 어드레스가 셋트된다. 범용 레지스터(R0)는 사용자 기록데이터 레지스터, R1는 행렬 테이블 검색 어드레스 포인터, R2는 행렬 테이블 검색스톱치, R3은 사용자 기록데이터 보존 어드레스 포인터, R4는 사용자 기록데이터 보존 어드레스 스톱치, R5는 비트 마스크용 데이터, R6은 검사비트생성용 변수, R7은 논리치 "1"의 비트가 있는가를 검출하기 위한 변수, R8은 비트에 대응하는 테이블치를 저장하는 변수로서 이용된다.
도 26에 있어서, 우선, 레지스터(FMPDR0)의 값을 레지스터(R3)에 셋트하여 RAM(3)상에 전개된 사용자 데이터의 선두 어드레스를 저장한다(S40). 다음에, 레지스터(R3)의 값에 h'80을 가산하여 RAM상에 전개된 사용자 데이터의 스톱 어드레스를 레지스터(R4)에 저장한다(S41). 그리고, 레지스터(R3)의 값이 레지스터(R4)의 값에 도달할 때까지, 이하의 처리를 행한다(S42). 즉, 레지스터(R3)의 값을 이용하여 선두 16비트 사용자 데이터를 판독하여 레지스터(R0)에 로드한다(S43). 레지스터(R1)에는 ECCTLB의 선두의 검색 어드레스 X를 셋트하고, 레지스터(R2)에는 그 스톱 어드레스 X+h'10을 셋트한다(S44). 레지스터(R5)에 비트 마스크 데이터 h'0001을 셋트하고, 레지스터(R6)에 디폴트 데이터 h'0000을 셋트한다(S46). 그리고 레지스터(R1)의 값이 레지스터(R2)의 값에 도달할 때까지 다음 처리를 반복한다(S47). 요컨대, 레지스터(R7)에 레지스터(R5)의 값을 로드하고, 레지스터(R7)와 레지스터 (R0)의 값에 대한 논리곱을 취해, 그 결과를 레지스터(R7)로 반환한다(S48). 레지스터(R7)의 값이 0보다 큰가를 판정한다(S49). 스텝(S49)의 판정결과가 0보다 크면, 그 때의 마스크 데이터(R5)의 논리치 "1"의 비트 위치와 같은 비트 위치에 R0의 사용자 데이터도 논리치 "1"의 비트도 가지는 것이 된다. 그 경우에는 ECC 테이블의 생성용 데이터(Y)를 레지스터(R8)에 저장하고(S50), 레지스터(R6, R8)의 값에 대한 상기 배타적 논리화 처리를 행해, 그 값을 레지스터(R6)로 반환한다. 스텝(S49)에서 R7의 값이 0이면, 레지스터(R5)의 값을 1 비트 왼쪽으로 시프트하여 마스크 비트 위치를 다음의 비트 위치로 하고(S52), 레지스터 R에 h'01을 가산하며, ECCTLB의 검색 어드레스를 다음 어드레스로 진행시킨다(S53). 그리고 재차 스텝(S48)의 처리로 되돌아간다. 스텝(S48∼S53)의 처리는 ECCTLB의 검색 어드레스가 스톱 어드레스가 될 때까지 반복되고(S47), 여기까지의 처리에 의해, 도 17에서 설명한 것과 같은 ECC 코드 P가 레지스터(R6)에 유지된다. 그리고, 다음에 레지스터 (R3)의 값을 1워드분만 인크리먼트하여(S54), 레지스터(R3)의 값이 지시하는 어드레스(RAM(3)상에 전개된 도 23의 데이터 포맷의 확장영역)에 레지스터(R6)가 보유하는 ECC 코드를 저장한다(S55). 그리고 다음 사용자 데이터에 대해서 동일한 처리를 행하기 위해 레지스터(R3)의 어드레스를 1워드분 인크리먼트한다. 상기 스텝 (S43∼S56)까지의 처리를 R3〈 R4가 될 때까지 반복함으로써, RAM(3)상에 전개된 일군의 사용자 데이터에 대해서 ECC 코드가 부가된다. 이 후, ECC 코드생성 프로그램의 실행을 종료하여, 직전의 사용자 프로그램으로 리턴한다. 특히 도시는 하지 않았지만, 리턴된 사용자 프로그램은, RAM(3)상에 전개된 ECC 코드 부가데이터를, 플래시 메모리(5)의 소정의 영역(20Ba)에 기록한다.
《에러판정 처리의 구체예》
도 27에는 도 26의 수순에서 생성된 ECC 코드 부가데이터를 판독할 때의 에러판정 처리의 상세가 나타난다. 에러판정 처리 프로그램과 그것에 앞서 실행되는 사용자 프로그램과의 사이의 데이터 및 어드레스의 주고 받음에는 CPU(2)의 범용 레지스터 및 플래시 컨트롤모듈(6)내의 레지스터가 이용된다. 즉, 사용자 프로그램은, 플래시 컨트롤모듈(6)내의 레지스터(FMPAR0)에 사용자 판독 어드레스를 셋트한다. 요컨대, 도 3의 영역(20Ba)중의 판독 어드레스가 셋트된다. 범용 레지스터(R0)은 에러정정 전의 판독 어드레스, R1는 검사비트 보존변수, R2는 에러검출용 레지스터, R3은 사용자 판독 어드레스, R4는 ECC 계산용 중간테이블, R5는 ECCTLB 검색어드레스, R6는 ECCTLB 검색스톱 어드레스, R7은 비트 마스크 데이터, R8은 논리치 "1"검출용 변수, R9는 ECCTLB 데이터 보존용 변수로서 이용된다.
도 27에 있어서, 우선, 레지스터(FMPAR0)의 사용자 판독 어드레스를 레지스터(R3)에 셋트하고(S60), 이 레지스터(R3)의 판독 어드레스를 이용하여 사용자 데이터를 레지스터(R0)에 저장한다(S61). 또 어드레스를 1워드분 인크리먼트하여(S62), 후속의 ECC 코드의 데이터를 레지스터(R1)에 저장하고, 또한 레지스터(R1)의 데이터를 레지스터(R4)에 복사한다(S63). 상기 레지스터(R4)를 왼쪽으로 16비트 시프트를 행하여, 그 시프트 결과에 대해서 h'001F0000와의 논리곱을 채용한다. 이것에 의해 레지스터(R4)에는, 그 제 17비트째에서 제 21비트에 ECC 코드가 배치되고, 그 밖의 비트를 "0"으로 한 데이터를 얻는다(S64). 또, 레지스터(R0)의 값에 대해서 h'00000FFFF와의 논리곱을 채용하고, 그 결과를 레지스터(R0)에 반환하며, 레지스터(R4)의 값에 레지스터(R0)의 값을 더해서 그 연산결과를 레지스터(R4)로 반환한다(S65). 이것에 의해 도시의 "1"비트 검색테이블이 레지스터(R4)에 얻어진다. "1"비트 검색테이블에서의 미사용 영역은 논리치 "0"으로 되어 있다. 다음에, 레지스터(R2)를 논리치 "0"으로 초기화하여(S66), 레지스터(R5)에 ECCTLB의 검색 어드레스 X를 셋트하고, 레지스터(R6)에 검색스톱 어드레스 X+h'16을 셋트한다(S67). 레지스터(R7)에는 비트 마스크 데이터 h'00000001을 셋트한다(S68). 그리고 R5의 값이 R6의 값이 될 때까지 이하의 처리를 반복한다. 즉, 레지스터(R8)에 레지스터(R4)의 값을 셋트하고, R7과 R8의 논리곱을 R8로 반환하며, R8가 0보다 큰가를 판정한다(S71). 스텝(S71)의 판정결과가 0보다 크면, 그 때의 R7의 마스크 데이터의 논리치 "1"의 비트 위치와 같은 비트 위치에 R4의 부호화 데이터도 논리치 "1"의 비트도 갖게 된다. 그 경우에는 ECC 테이블 ECCTLB의 생성용 데이터(Y)를 레지스터(R9)에 저장하고(S72), 레지스터(R2, R9)의 값에 대한 상기 배타적 논리화 처리를 행하여, 그 값을 레지스터(R2)로 반환한다(S73). 스텝(S71)에서 R8의 값이 0이면, 레지스터(R7)의 값을 1비트 왼쪽으로 시프트하여 마스크 비트 위치를 다음의 비트 위치로 하고(S74), 레지스터(R5)에 h'01을 가산하여, ECCTLB의 검색 어드레스를 다음 어드레스로 진행시킨다(S75). 그리고 재차 스텝(S70)의 처리로 되돌아간다. 스텝(S70∼S77)의 처리는 ECCTLB의 검색 어드레스가 스톱 어드레스가 될 때까지 반복되고(S69), 여기까지의 처리에 의해, 도 19 및 도 20에서 설명한 바와 같은 판정결과(R1t)가 레지스터(R2)에 유지된다. 그리고, 레지스터(R2)의 값이 전체 비트 "0"인가 아닌가를 판정하고(S76), 그렇지 않으면 에러가 있으므로, 정정 가능한 1비트 에러에 대해서는 서브루틴으로서 후술의 에러정정 처리를 실행한다. 그리고, 레지스터(FMPDR0)가 나타내는 영역에, 레지스터(R4)의 하위 16비트의 값을 저장하고(S7), 레지스터(FMPDR0)에 버스 정보를 셋트한다. 또한, 특히 도시는 하지 않지만 스텝(S76)에서는 에러가 정정불능인가 아닌가도 판정하고, 정정불능이면 도 22에서 설명한 정정불능 에러발생의 통지처리을 행해 예외처리를 기다려도 좋다.
《에러정정 처리의 구체예》
도 28에는 1비트의 에러에 대한 에러정정 처리의 상세가 나타난다. 에러정정처리 프로그램에서의 CPU(2)의 범용 레지스터 및 플래시 컨트롤모듈(6)내의 레지스터의 이용형태는 에러판정 처리의 경우와 동일하다. 도 27에 있어서, 우선, 레지스터(R5)에 ECCTLB의 선두 검색 어드레스 X를 셋트하고, 레지스터(R6)에 ECCTLB의 검색스톱 어드레스를 셋트한다(S80). 레지스터(R7)에 비트 반전용 마스크 데이터 h'0001을 셋트한다(S81). 그리고 R5의 값이 R6의 값이 될때까지 이하의 처리를 반복한다. 즉, 레지스터(R5)의 검색 어드레스에 대응하는 생성용 데이터를 ECCTLB에서 레지스터(R9)에 저장한다. 그리고, R9의 값이 상기 레지스터(R2)의 판정결과(Rl t)에 일치하는가가 판별되어, 일치하고 있으면, 그 때의 R7의 비트 반전용 마스크 데이터 에서의 "1"의 비트 위치에 대응하는 사용자 데이터의 비트 위치에 에러가 있다. 상기 에러판정 처리의 스텝(S77)에서 설명한 바와 같이 레지스터(R4)의 하위 16비트를 꺼내서, 정규의 사용자 데이터로 하므로, 그 때, 레지스터(R7)의 마스크데이터와 레지스터(R4)의 데이터를 대응 비트마다 배타적 논리화를 채용함으로써, 마스크 데이터의 비트 "1"에 대응하는 사용자 데이터의 비트만이 논리치 반전되어, 에러정정된 사용자 데이터가 레지스터(R4)로 반환된다(S85). 스텝(S84)에서 R9의값이 R2의 값에 일치하지 않으면, 레지스터(R5)에 h'01을 가산하고, ECCTLB의 검색어드레스를 다음어드레스에 진행시키어(S86), 레지스터(R7)의 마스크 데이터를 1비트 시프트하고(S87), 재차 스텝(S83)의 처리로 되돌아간다. 스텝(S83~S87)의 처리는 ECCTLB의 검색 어드레스가 스톱 어드레스가 될 때까지 반복되고(S82), 해당 서브루틴을 종료한다. 이 서브루틴이 종료될 때, 레지스터(R4)에는 에러정정된 정규의 사용자 데이터를 포함하고 있다.
《멀티 칩의 데이터 처리시스템》
도 29에는 멀티 칩의 데이터 처리시스템이 예시된다. 동도에 나타나는 데이터 처리시스템은 데이터 프로세서(50)와 플래시 메모리(51)가 각각 별개의 반도체 집적회로화 되어 버스(52)에서 접속되고, 그 이외에, 단일 또는 복수개의 반도체 집적회로로 구성된 주변회로(53)가 버스(52)에 접속된다. 데이터 프로세서(50)는 CPU(65), RAM(66), ROM(67) 및 I/0(68)를 갖는다. 플래시 메모리(51)는 범용 플래시 메모리이고, 플래시 메모리셀이 매트릭스 배치된 메모리셀 어레이(70), XDE ㆍDRV(71), YDE(72), TGN(73), VGN(74), YSW(75), SAA(76), 기록ㆍ소거 제어회로(77)를 갖는다. 플래시 메모리(51)의 기본적인 구성은 상기 플래시 메모리(5)와 같으므로 그 상세한 설명은 생략하지만, 기록 및 소거를 제어하는 논리회로로서 기록ㆍ소거 제어회로(77)를 전용으로 구비한다. 플래시 메모리(51)의 동작은 CPU(65)에서 주어지는 커맨드 및 액세스 제어신호에 의해 결정된다. CPU(65)는 플래시 메모리(51)의 위치부의 기억영역(70E)을 빈번히 재기록하는 파라미터 데이터와 같은 데이터의 기억영역으로서 이용한다. 상술과 같이 그 영역(70E)은 다른 영역보다도 재기록 보증회수를 향상시키기 위해 ECC 처리의 대상으로 된다. ROM(67)은 상기 영역(70E)을 액세스하여 데이터 처리를 행하는 사용자 프로그램(67P)을 보유한다. 이 사용자 프로그램(67P)은, 상기 영역(70E)에 파라미터 데이터를 기록할 때에 실행되는 ECC 코드생성 프로그램(67P1), 상기 영역(70E)에서 판독한 ECC 코드 부가데이터에 대한 에러판정 및 에러정정을 행하기 위한 에러정정 프로그램(67P2)을 가진다. 상기 ECC 코드생성 프로그램 및 에러정정 프로그램은 소정의 사용자 프로그램에서 호출되어 실행된다.
상기 멀티 칩의 데이터 처리시스템에도 도 1의 싱글 칩의 마이크로 컴퓨터화된 데이터 처리시스템과 같이, ECC 코드에 의한 기억영역의 이용의 낭비를 생략하여 기억정보의 신뢰성을 향상시킬수 있고, ECC 코드에 의한 기억영역의 이용의 낭비를 생략하여 기억정보가 재기록 보증회수를 향상시키는 것이 가능하며, 디바이스의 특성에 맞는 ECC 방식을 선택하여 데이터에 대한 ECC 코드의 오버헤드를 작게 하고 기억영역의 이용 효율을 최대한으로 하는 것이 가능한 등의 효과를 얻을 수 있다.
《다치 플래시 메모리로의 고려》
상기 플래시 메모리(5, 51)는, 1개의 플래시 메모리셀에 2비트 이상의 기억정보를 유지시키는 것이 가능한 다치(多値) 플래시 메모리라도 좋다. 즉, 1개의 플래시 메모리셀은, 정보기억에 있어서 복수 비트의 기록데이터로 지정되는 4종류이상의 문턱치 전압중 하나의 문턱치 전압으로 설정되어, 정보 판독시에 문턱치 전압의 상태를 대응하는 복수 비트의 기억정보로서 출력하는, 1개의 플래시 메모리셀의기억정보를 복수 비트화한 메모리이다. 여기서는, 하나의 플래시 메모리셀에 2비트의 정보를 기록할 수 있고, 또한 그 정보를 판독할 수 있는 플래시 메모리를 일예로 한다. 이와 같은 플래시 메모리가 실현하고자 하는 다치 정보기억 기술에 있어서, 하나의 메모리셀의 정보기억 상태는, 예컨대 소거상태("11"), 제1 기록상태("10"),제2 기록상태("00"), 제3 기록상태("01")중에서 선택된 하나의 상태로 된다. 전부 4가지의 정보기억 상태는, 2비트의 데이터에 의해 결정되는 상태로 된다. 즉, 2 비트의 데이터를 하나의 메모리셀에서 기억한다. 이 4치의 데이터와 문턱치 전압과의 관계는, 도 30의 문턱치 전압 분포도에 나타나는 바와 같다. 플래시 메모리셀의 기억데이터의 값과 문턱치 전압과의 관계를 도 30과 같이 규정하면, 정보기억 후에, 문턱치 전압이 바람직하지 않게 변화하여도 인접 문턱치 전압의 데이터와는 서로 1비트밖에 상이하지 않게 된다. 따라서, 데이터 에러가 생겨도 거의가 1비트 에러가 되어, 1비트 에러에 대해서 정정 가능한 ECC 처리에 의한 데이터의 신뢰성을 높게 유지하는 것이 가능하게 된다. 바꾸어 말하면, 다치 플래시 메모리셀의 문턱치 전압이 가까운 곳을 데이터 해밍 거리가 1이 되도록 하면, 상대적으로 적은 비트 수의 ECC 코드로서 높은 신뢰성을 얻을 수 있고, 재기록 보증회수의 향상이 용이하게 된다.
이상 본 발명자에 의해 이루어진 발명을 실시형태에 의거해서 구체적으로 설명하였지만, 본 발명은 그것에 한정되는 것이 아니고, 그 요지를 이탈하지 않은 범위에서 여러가지 변경 가능한 것은 말할 필요도 없다.
예컨대, 플래시 메모리셀은 플로팅 게이트와 컨트롤 게이트의 종횡구조에 한정되지 않고, MOS 트랜지스터의 게이트 전극을 플로팅 게이트전극으로 하고 해당 게이트 전극을 연장시켜 형성한 MOS 게이트 용량을 통해 채널영역을 컨트롤 게이트로 사용하고 있는 것과 같은 디바이스 구조 등을 채용하여도 좋다. 또, 불휘발성기억소자는 플래시 메모리에 한정되지 않고, MNOS(메탈ㆍ나이트라이드ㆍ옥사이드ㆍ세미컨덕터) 트랜지스터를 기억소자로 하는 EEPROM(일렉트리컬ㆍ이레이저블ㆍ앤드ㆍ프로그래머블ㆍ판독ㆍ온리ㆍ메모리)와 같은 불휘발성 메모리 혹은 유전체 메모리 등이라도 좋다.
데이터 처리시스템은, 1개의 반도체 칩에 상기 불휘발성 메모리 및 중앙처리장치가 형성된 싱글 칩의 마이크로 컴퓨터로 실현하는 것이 가능하고, 그 한쪽에 있어서, 상술과 같이 상기 데이터 처리시스템은, 상기 불휘발성 메모리 및 중앙처리장치가 각각 별개의 반도체 칩에 형성된 멀티 칩 형태로 실현하여도 좋다. 그리고, 데이터 처리시스템은, 싱글 칩 및 멀티 칩의 마이크로 컴퓨터에 한정되지 않고, 플래시 메모리를 내장한 그래픽 컨트롤러, DRAM을 전용 논리회로와 함꼐 혼재한 시스템 LSI, 그 밖의 멀티 칩에 의한 전자회로에 널리 적용할 수 있다.
본원에 있어서 개시되는 발명중 대표적인 것에 의해 얻어지는 효과를 간단히 설명하면 하기와 같다.
즉, 일부의 기억영역에만 ECC 코드의 부가나 에러정정을 행해 재기록 보증회수를 향상시키므로, 기억영역에 관계없이 모든 라이터 데이터에 대해서 구별없게 ECC 코드를 부가하는 구성에 비해서, 실질적으로 필요없는 ECC 코드에 의한 기억영역의 낭비를 생략할 수 있다. 또, ECC 처리를 소프트웨어에서 대처하므로 불휘발성메모리의 디바이스 특성에 맞는 ECC 정정능력을 용이하게 선택할 수 있다. 이와 같이, 데이터 처리시스템에 있어서 ECC 코드에 의한 기억영역의 이용의 낭비를 생략하여 불휘발성 메모리에 기억된 정보의 신뢰성을 향상시키는 수 있고, 또한, ECC 코드에 의한 기억영역의 이용의 낭비를 생략하여 불휘발성 메모리에서의 기억정보의 재기록 보증회수를 향상시킬수 있다. 또한, 디바이스의 특성에 맞는 ECC 방식을 선택할 수 있고, 데이터에 대한 ECC 코드의 오버헤드를 작게 하여 기억영역의 이용 효율을 최대한으로 하는 것이 가능하다.
ECC 코드가 부가된 데이터에 대한 에러판정 및 정정의 처리에 의한 데이터 판독 동작의 지연을 억제하는 것이 가능하다.
적화연산 등을 행하지 않고 ECC 코드의 생성을 효율적으로 행할 수 있어, ECC 코드가 부가된 데이터의 에러판정을 효율적으로 행할 수 있다.
(실시예 2)
도 31에는 본 발명에 관한 데이터 처리장치의 일예인 마이크로 컴퓨터가 나타난다. 동도에 나타나는 마이크로 컴퓨터(1)는, 재기록 가능한 불휘발성 기억장치의 일예인 플래시 메모리(2), CPU(3), RAM(랜덤 액세스 메모리)(4) 및 인터페이스 회로(5)를 가지고, 그들은 내부 어드레스 버스(6), 내부 데이터 버스(7) 및 도시를 생략하는 컨트롤 버스에 의해 접속된다. 인터페이스 회로(5)는 외부 어드레스 버스8, 외부 데이터 버스(9) 및 도시를 생략하는 외부 컨트롤 버스를 통해 도시를 생략하는 주변회로 등에 접속 가능하게 된다. 동도에 나타나는 마이크로 컴퓨터(1)는, 예컨대 CMOS 집적회로 제조기술에 의해, 단결정 실리콘 등의 1개의 반도체기판또는 반도체 칩에 형성된다.
상기 CPU(3)는, 특히 도시하지 않지만, 명령 제어부와 연산부를 가지고, 명령제어부에서 명령을 페취하며, 페취한 명령을 해독하고, 해독결과에 따라서 제어신호를 생성한다. 연산부는 상기 제어신호에 따라서, 그 명령에 의한 지시를 실현하기 위한 어드레스 연산 및 데이터 연산 등을 실행한다. 상기 RAM(4)는 CPU(3)의 워크영역 또는 데이터 일시 기억영역에 사용된다. CPU의 명령셋트에는, 데이터 전송명령, 논리연산 명령, 산술연산 명령, 비트조작 명령, 분기 명령 등이 있다. 논리연산 명령으로서, 일반적으로는 AND, OR, 배타적 논리화 등의 논리연산 처리를 행하는 명령이 있다.
상기 플래시 메모리(2)는, 불휘발성 메모리셀이 매트릭스 배치된 불휘발성기억영역으로서, 특별히 제한되지 않지만, 빈번히 재기록이 예정되어 있는 제1 영역으로서의 특정 블록영역(11)과, 빈번한 재기록이 예정되어 있지 않은 제 2영역으로서의 프로그램 영역(12)을 가진다. 상기 프로그램 영역(12)에는, 예컨대, 상기 특정 블록영역(11)의 액세스에 이용하는 프로그램이나, 그 밖의 프로그램이 저장된다. 도 31에 있어서 상기 특정 블록영역(11)과 프로그램영역(12)은 물리적으로 분리되어 있도록 도시되어 있지만, 동일한 메모리 어레이내에 배치되어 지장이 없다.
도 32에는 상기 불휘발성 기억영역에 배치된 불휘발성 메모리셀의 Ids-Vgs 특성이 예시된다. 이 예에서는 논리치 "0" 및 "1"을 유지하고 있는 메모리셀에서는 각각 낮은 문턱치 상태 및 높은 문턱치로 된다. 따라서, 게이트ㆍ소스 사이에 적절한 전압을 인가하면(선택), 논리치 "0" 및 "1"을 유지하고 있는 메모리셀에서는 각각 드레인ㆍ소스간이 도통 및 비도통으로 되어, 기억정보에 따른 데이터의 판독이 가능하다.
도 33에는 도 32에 나타낸 바와 같은 낮은 문턱치 상태 및 높은 문턱치 상태를 만들어내기 위한 불휘발성 메모리셀의 구조와 그 기록상태 및 소거상태가 예시된다. 특별히 제한되지 않지만, 여기서는 상기 불휘발성 메모리셀의 문턱치 전압이 높은 상태("1" 상태)를 프로그램(기록)상태, 상기 불휘발성 메모리셀의 문턱치 전압이 낮은 상태("0"상태)를 이레이즈(소거) 상태로 정의한다.
불휘발성 메모리셀은, n 채널형으로 되고, P웰(P형 웰영역)(PW)에 형성된 소스(SC)와 드레인(DR)의 사이의 채널형성 영역의 위에, 산화막을 통해서 플로팅 게이트(FG)가 설치되고, 그 위에 게이트 절연막을 통해서 컨트롤 게이트(CG)가 적층되어 구성된다.
이레이즈 상태는, 예컨대, 소스(SC)에 높은 정전압(10V),컨트롤 게이트(CG)에 높은 부전압(-10V)를 인가하고, 플로팅 게이트(FG)에서 소스(SC)로 전자를 인출함으로써 달성된다. 프로그램 상태는, 예컨대, 드레인(DR)에 정전압(7V), 소스(SC)에 회로의 접지전압(0V), 컨트롤 게이트(CG)에 높은 정전압(10V)을 인가하고, 드레인ㆍ소스 사이에 전류를 흘리고, 이것에 의해 생기는 핫일렉트론을 플로팅 게이트(FG)에 축적하여 달성된다.
도 34에는 상기 플래시 메모리의 일예가 나타난다. 동도에 있어서 메모리 어레이(20)에는 대표적으로 나타난 불휘발성 메모리셀(21)이 다수개 매트릭스 배치되어 있다. 불휘발성 메모리셀의 컨트롤 게이트(CG)는 워드선(22)에, 드레인(DR)은비트선(23)에, 소스(SC)는 소스선(24)에 접속된다. 도시는 생략하지만, 상기 워드선(22), 비트선(23) 및 소스선(24)은 메모리셀(21)의 행렬방향으로 다수 배치된다.
X 디코더(25)는 어드레스 버퍼(26)에 공급되는 X 어드레스를 디코드하여 워드선(22)을 선택적으로 구동한다. 워드선(22)의 구동전압은 판독이나 기록 등의 플래시 메모리의 동작모드에 따라 전원회로(27)에서 공급되는 동작전원의 전압에 따라서 결정된다. 소스 및 기판 제어회로(28)는 상기 소스선(24) 및 불휘발성 메모리셀(21)의 웰영역의 전압을 선택적으로 제어한다. 소스선(22)이나 웰영역으로 공급되는 전압은 플래시 메모리의 동작모드에 따라 전원회로(27)에서 공급되는 동작전원의 전압에 의해 결정된다. 비트선(23)은 Y 셀렉터(29)에서 선택되어 센스앰프(30) 또는 기록버퍼(31)에 접속된다. Y 디코더(32)는 어드레스 버퍼(26)로 공급되는 Y 어드레스를 디코드하여 Y 셀렉터(29)의 선택 제어신호를 생성한다. 상기 기록버퍼(31)는 입력버퍼(33)를 통해 기록데이터를 래치하고, 소거상태의 메모리셀(21)을 프로그램 상태에 변화시키기 위해 비트선(23)을 구동한다. 비트선 구동전압은 동작모드에 따라서 전원회로(27)에서 주어지는 동작전원의 전압에 의해 결정된다. 상기 센스앰프(30)는 판독동작 또는 기록동작에서의 검증동작에서 메모리셀에서 비트선으로 판독된 판독신호를 증폭한다. 증폭된 판독신호 판독 데이터로서 출력버퍼(34)에서 내부 데이터버스(7)로 출력된다.
제어부(36)는 CPU(3)로부터의 액세스 지시를 받아 플래시 메모리(2)의 내부동작을 제어한다. 제어부(36)는, CPU(2)로부터 판독 동작이 지시되면, 내부 어드레스 버스(6)에서 주어진 어드레스를 X 디코더(25) 및 Y 디코더(32)로 디코드시켜 워드선(22) 및 비트선(23)을 선택하고, 이것에 의해 액세스 어드레스에 대응하는 메모리셀을 선택한다. 제어부(36)는 판독 동작시에는 센스앰프(30) 및 출력버퍼(34)를 활성화하고, 판독된 데이터를 내부 데이터버스(7)로 출력시킨다.
제어부(36)는 기록동작을 위한 제어 레지스터(REG)를 가지고, CPU(3)에 의한 그 제어레지스터(REG)의 설정상태에 따라 기록동작을 행한다. 제어 레지스터(REG)는, 프로그램 비트(P), 이레이즈 비트(E) 등의 제어비트를 가지고, 다시, 소거블록(소거영역)의 지정영역(EBLK)을 가진다. 여기에서는, 소거는 소스선을 공통으로 하는 메모리셀군을 최소 단위로 하는 것이고, 소거블록의 지정은 각각 소스선 공통의 복수 블록중에서 소거대상 블록을 지정함으로써 행해진다. 데이터 재기록의 최소 단위는 소거블록 단위로 된다. 상기 이레이즈 비트(E)가 인에이블 되면, 소거블록 지정영역(EBLK)에서 지정되는 블록의 메모리셀에 상기 이레이즈 상태를 위한 이레이즈 전압의 인가가 행해진다. 이레이즈 전압의 인가는 복수회에 나누어 행해지고, 그 때마다 규정의 문턱치 전압에 도달하였는가의 검증이 행해지며, 규정의 문턱치 전압에 도달한 것으로 이레이즈 상태의 동작을 종료한다. 상기 프로그램 비트(P)가 인에이블 되면, 어드레스에서 지정되는 기록동작의 대상 메모리셀에 대해서, 기록데이터의 각 비트의 논리치에 따라, 상기 프로그램 상태를 위한 프로그램전압인가와 프로그램 전압인가 저지가 제어된다. 프로그램 전압의 인가는 복수회에 나누어 행해지고, 그 때마다 규정의 문턱치 전압에 도달하였는가의 검증이 행해져, 규정의 문턱치 전압에 도달한 것으로 프로그램 상태로의 동작을 종료한다.
다음에, 재기록이 빈번히 행해지는 상기 특정 블록영역(11)에 대한 정보기억의 신뢰성을 향상시키기 위한 기록동작 및 판독동작에 대해서 설명한다. 상기 CPU(3)는, 상기 특정 블록영역(11)에 정보를 기록할 때는 하나의 데이터를 다른 어드레스의 메모리셀에 저장하고, 상기 특정 블록영역(11)에서 데이터를 판독할 때는 상기 다른 어드레스의 메모리셀에서 데이터를 판독하며, 판독한 상기 복수 데이터에 대한 논리연산을 실행하여, 필요한 에러정정을 행한다. 한편, 프로그램 영역(12)에 대한 CPU(3)는, 종래와 같이 플래시 메모리 액세스를 행하고, 하나의 데이터에 대한 다른 어드레스의 중복기록, 대응별 어드레스에서 판독한 중복 데이터에 의거해서 필요한 에러정정이란 처리는 행하지 않는다.
도 35에는 하나의 데이터에 대한 다른 어드레스의 중복기록 및 대응별 어드레스에서 판독한 중복 데이터에 의거해서 필요한 에러정정의 처리 플로우가 예시된다. 이 처리 플로우의 제어 주체는 CPU(3)이다. 요컨대, 하나의 데이터에 대한 다른 어드레스로의 중복기록 및 대응별 어드레스에서 판독한 중복 데이터에 의거해서필요한 에러정정의 처리는, CPU(3)의 동작 프로그램에 의해 규정된다. 이 프로그램은 마이크로 컴퓨터의 제조 메이커측에서 사용자에게 제공되는 경우도 있지만, 칩 사용자가 작성하는 경우도 있을 수 있다.
CPU(3)가 실행하는 특정 블록영역(11)으로의 액세스 프로그램은, 데이터 기록동작을 제어하는 것과, 데이터 판독동작을 제어하는 것으로 대별된다. 그와 같은 기술에서, 데이터 기록이라면 CPU(3)는 스텝(S1∼S4)을 실행하고, 데이터 판독이라면 스텝(S5∼S9)을 실행한다.
하나의 데이터 기록의 경우에 대해서 설명한다. 특정 블록영역(11)은, 도 36에 예시되는 바와 같이, A0에서 A0+2X-1까지 2K개의 번지가 포함되어 있는 것으로 한다. 특정 블록영역(11)으로 기록을 행하는 경우에는, 우선 기록해야 할 어드레스를 지정하기 위해서 CPU(3)의 어드레스 레지스터에 어드레스(Ai)(A0≤ Ai≤ A0+K -1)을 셋트하여 내부 어드레스 버스(6)로 출력하고(S1), 내부 데이터 버스(7)를 통해 플래시 메모리(2)의 프로그램 비트(P)를 셋트함과 동시에 기록 데이터(Di)를 출력하여 플래시 메모리(2)의 어드레스(Ai)에 데이터(Di)를 기록한다(S2). 이 어드레스 셋트(S1)와 데이터 기록(S2)의 동작 그 자체는 통상 동작에서의 상기 프로그램 및 프로그램 검증동작과 같은 동작이 된다. 다음에, 기록 어드레스를 K만 엇갈리게 하여(Ai+K에 셋트) CPU(3)의 어드레스 레지스터에 셋트하고, 그 어드레스를 내부 어드레스 버스(6)에 출력하며(S3), 플래시 메모리(2)의 어드레스(Ai+K)에 상기와 동일한 데이터(Di)를 기록한다한다(S4j). 이 어드레스 셋트(S3)와 데이터 기록(S3)의 동작 그 자체는 통상 동작에서의 상기 프로그램 및 프로그램 검증동작과 동일한 동작이 된다.
데이터 판독의 경우에 대해서 설명한다. 우선, 판독해야 할 플래시 메모리의 어드레스(Ai)(A0≤ Ai≤ A0+K-1)를 버스(6)에 출력하여(S5), CPU(3)의 레지스터(예컨대 범용 레지스터)(R0)에 데이터를 로드한다(S6). 다음에, K만큼 엇갈리게 한 어드레스(Ai+K)를 버스(6)에 출력하고(S7), CPU(3)의 레지스터(예컨대 범용 레지스터)(R1)에 데이터를 로드한다(S8). 지금, 플래시 메모리셀의 플로팅 게이트에 전하가 있는 상태 및 없는 상태가 각각 논리치 "1" 및 "0"에 대응하는 것으로 한다. 원래 플로팅 게이트를 있었던 전하가 없어지는 불량(논리치 "1"이 논리치 "0"으로 변신하는 불량)만 일어나고, 그 반대의 불량은 일어나지 않는 것으로 가정하면, 레지스터(R0)의 값과 레지스터(R1)의 값의 논리 OR 연산명령을 CPU(3)로 실행시킨다(S9). 이것에 의해, 상기 논리 OR 연산의 결과는, 고작 한쪽의 데이버밖에 불량이 일어나고 있지 않으면 에러를 정정하여 본래의 올바른 값이 된다. 따라서, CPU(3)는 그와 같은 논리 OR 연산의 결과를 판독 데이터로서 처리함으로써, 플래시 메모리(2)에서 빈번히 재기록되는 데이터의 신뢰성을 향상시킬수 있어, 실질적으로, 보증 재기록회수를 증대시킬수 있다. 도 35의 예는 2중으로 데이터를 기록, 판독하는 것은 이들 논리 OR 연산을 행하는 것이지만, 3중 혹은 또는 그 이상으로 데이터를 기록, 이들 논리 OR 연산을 행해 판독하면, 셀 사용 효율은 더 나쁘게 되지만, 데이터의 신뢰성은 보다 향상한다.
특정 블록영역(11) 이외의 다른 블록을 액세스(기록 및 판독)하는 경우는, 사용자는 상술한 액세스 프로그램을 기동하지 않고 통상의 방법으로 액세스을 행한다. 따라서, 다른 블록에서는 데이터를 용장으로 갖지 않으므로, 셀사용 효율은 열화하지 않지만, 특정 블록영역(11) 정도의 데이터의 신뢰성은 유지할 수 없고, 보증 재기록 회수도 특정 블록영역(11)에서의 값보다 적게 된다. 특정 블록영역(11)을 포함하는 모든 블록에서 특히 높은 재기록 회수를 필요로 하지 않은 사용자는, 특정 블록영역(11)으로의 액세스 때도 상술의 특정 블록영역으로의 액세스 프로그램을 기동하지 않으면, 모든 블록에서 셀사용 효율을 열화시키지 않고서 끝난다. 또, 특정 블록영역(11)에 더해서 다른 일부의 블록에서도 다수의 재기록 회수를 필요로 하는 사용자에 대해서는 이들 복수의 블록에서 상술한 다중의 기록 및 논리OR 연산을 행하는 액세스 프로그램을 제공함으로써 대응할 수 있다. 이와 같이 여러가지 사용자의 니즈(needs)에 대한 특정 블록영역으로의 액세스 프로그램과 같은 프로그램의 사용/비사용 혹은 내용 변경만으로 대응할 수 있고, 플래시 메모리의 하드웨어 구성을 일체 변경할 필요는 없다.
또, 상술의 특정 블록영역으로의 액세스 프로그램을 적용하는 경우는, 적용하는 블록(예컨대 특정 블록영역(11))에서의 판독은 하나의 데이터당 복수의 CPU 명령 스텝을 필요로 하므로, 웨이트 사이클없이 데이터를 계속해서 랜덤 액세스 할 수 없다. 본 발명의 적절한 적용예로서는, 시스템의 전원차단 전에 RAM(4)에서 플래시 메모리(2)로 데이터를 기록하고, 전원투입 직후에 플래시 메모리(2)에서 RAM(4)으로 데이터를 판독하도록 한 용도가 생각된다. 예컨대, 차량 탑재용 전자 제어장치에 있어서 학습치나 차량 탑재 부품의 자기진단 결과를 플래시 메모리(2)에 보존하는, 에어컨 시스템에 있어서 사용자가 사용중에 지정한 바람직한 설정치를 플래시 메모리(2)에 보존하는, 비디오 게임장치에 있어서 데이터를 플래시 메모리(2)에 보존하는, 등의 용도가 생각된다.
도 37에는 플래시 메모리(2)에서 일어나는 불량이 도 35와는 반대의 경우가 되는 것으로 가정한 때의 하나의 데이터에 대한 다른 어드레스로의 중복기록 및 대응별 어드레스에서 판독한 중복 데이터에 의거하여 필요한 에러정정의 처리 플로우가 예시된다. 여기에서는 도 35의 경우와는 반대로, 논리치 "0"이 논리치 "1"로 변화하는 불량에 대처할 때의 특정 블록영역으로의 액세스 프로그램의 예이다. 도 5와의 상이점은, 스텝(S9)을 스텝(S9a)으로 변경한 점이고, 스텝(S9a)에서는 판독시에 논리 AND 연산명령을 실행한다. 이 경우도, 논리 AND 연산의 결과는, 고작 한쪽의 데이터에서 밖에 불량이 일어나고 있지 않으면 에러를 정정하여 본래의 올바른 값이 된다. 따라서, CPU(3)는 그와 같은 논리 AND 연산의 결과를 판독 데이터로서 처리함으로써, 플래시 메모리(2)에서 빈번히 재기록되는 데이터의 신뢰성을향상실킬수 있고, 실질적으로, 보증 재기록 회수를 증대시킬수 있다. 도 37의 예는, 2중에 데이터를 기록, 판독하는 것은 이들 논리 AND 연산을 행하는 것이지, 3중 또는 그 이상으로 데이터를 기록, 이것들의 논리 AND 연산을 행해 판독하면, 셀 사용 효율은 더 나쁘게 되지만, 데이터의 신뢰성은 보다 향상한다.
도 38에는 기록시에 3개의 어드레스(Ai, Ai+K, Ai+2K)에 동일한 데이터를 기록, 판독할 때 이들의 다수결 논리를 채용하여 출력하는 액세스 프로그램에 의한 기록과 판독의 제어 플로우가 예시된다.
CPU(3)가 실행하는 특정 블록영역으로의 액세스 프로그램은, 데이터 기록동작을 제어하는 것과, 데이터 판독동작을 제어하는 것으로 대별된다. 그 기술에서, 데이터 기록이라면 CPU(3)는 스텝(S11∼S16)을 실행하고, 데이터 판독이라면, 스텝(S17∼S26)을 실행한다. ·
하나의 데이터 기록의 경우에 대해서 설명한다. 특정 블록영역(11)은, 도 39에 예시되는 바와 같이, A0에서 A0+3K까지의 3K개의 번지가 포함되어 있는 것으로 한다. 특정 블록영역(11)으로의 기록을 행하는 경우에는, 우선 기록해야 할 어드레스를 지정하기 위해 CPU(3)의 어드레스 레지스터에 어드레스(Ai)(A0 ≤ Ai≤ A0+K -1)을 셋트하여 어드레스 버스(6)에 출력하고(S11), 내부 데이터 버스(7)를 통해플래시 메모리의 프로그램 비트(P)를 셋트함과 동시에 기록 데이터(Di)를 출력하여 플래시 메모리(2)의 어드레스(Ai)에 데이터(Di)를 기록한다(S12). 이 어드레스 셋트(S11)와 데이터 기록(S12)의 동작 그 자체는 통상 동작에서의 상기 프로그램 및 검증동작과 동일한 동작이 된다. 다음에, 기록 어드레스를 K만큼 엇갈리게 하여 CPU(3)의 어드레스 레지스터에 셋트(Ai+K에 셋트)해서 내부 어드레스 버스(6)에 출력하고(S13), 플래시 메모리의 어드레스(Ai+K)에 상기와 동일한 데이터(Di)를 기록한다(S14). 이 어드레스 셋트(S13)와 데이터 기록(S14)동작 그 자체는 통상 동작에서의 상기 프로그램 및 프로그램 검증동작과 같은 동작이 된다. 또, 기록 어드레스를 2K만큼 엇갈리게 하여 CPU(3)의 어드레스 레지스터에 셋트(Ai+2K에 셋트)하여 어드레스 버스(6)에 출력하고(S15), 플래시 메모리의 어드레스(Ai+2K)에 상기와 동일한 데이터(Di)를 기록한다(S16). 이 어드레스 셋트(S15)와 데이터 기록(S16)동작 그 자체는 통상 동작에서의 상기 프로그램 및 프로그램 검증동작과 같은 동작이 된다.
데이터 판독의 경우에 대해서 설명한다. 우선, 판독해야 할 플래시 메모리의 어드레스(Ai)(A0 ≤ Ai ≤ A0+K-1)을 버스(6)에 출력하고(S17), CPU(3)의 레지스터(예컨대 범용 레지스터)(R0)에 데이터를 로드한다(S18). 예컨대 R0 = 0110가 로드된다. 다음에, K만큼 엇갈리게 한 어드레스(Ai+K)를 버스(6)로 출력하고 (S19, CPU(3)의 레지스터(예컨대 범용 레지스터)(R1)에 데이터를 로드한다(S20). 예컨대 R1 = 0111이 로드된다. 또, 2K만큼 엇갈리게 한 어드레스(Ai+2K)를 버스(6)로 출력하고(S21), CPU(3)의 레지스터(예컨대 범용 레지스터)(R2)에 데이터를 로드한다(S22). 예컨대 R2 = 0111이 로드된다.
여기서, 일반적으로, 3개의 값(P, Q, R)의 다수결 논리는, (Pㆍ/ Q+/PㆍQ)ㆍR+PㆍQ에 의해 표시된다. 기호 /는 그것이 붙은 값의 반전을 의미한다. 스텝(S23∼S25)은 그 연산을 일반의 마이크로 컴퓨터의 명령셋트에 포함되어 있는 논리연산 명령의 조합에 의해 실행한다. 스텝(S23)에서는 레지스터(R0)의 데이터와 레지스터(R1)의 데이터에 대한 배타적 논리화 연산을 행해 그 연산결과를 레지스터 (R3)로 얻는다. 스텝(S24)에서는 레지스터(R0)의 데이터와 레지스터(R1)의 데이터에 대한 논리 AND 연산을 행해 연산결과를 레지스터(R1)에 저장한다. 스텝(S25)에서는 레지스터(R2)의 데이터와 레지스터(R3)의 데이터에 대한 논리 AND 연산을 행해 s의 연산결과를 레지스터(R2)에 저장한다. 스텝(S26)에서는 R1과 R2의 논리 OR 연산을 행해 결과를 R1에 저장한다. 스텝(S26)에서 레지스터(R1)로 얻어진 연산의 결과는, 3개의 데이터내의 일치하는 2개의 데이터로 된다. 따라서, CPU(3)는 그와 같은 다수결 논리연산의 결과를 판독 데이터로서 처리함으로써 플래시 메모리(2)에서 빈번히 재기록되는 데이터의 신뢰성을 향상시킬수 있다. 특히 도 35, 도 37의 예에 비해 메모리셀의 사용 효율이 열화하고, 또, 명령 스텝수가 증대한다는 디메리트는 있으면서, 논리치가 "1"이 "0"으로 변신하는 불량과 "0"에서 "1"로 변신하는 불량의 양쪽에 대응할 수 있다는 메리트가 있다.
도 40에는 오프 칩의 플래시 메모리를 사용한 데이터 처리장치의 예가 나타난다. 도 40에 있어서 마이크로 컴퓨터(1A)와 플래시 메모리(2A)는, 각각 별개의 칩에 형성되고, 마이크로 컴퓨터(1A)에는 상기 플래시 메모리(2)가 온칩되지 않고,플래시 메모리(2A)는 단독으로 반도체 집적회로화 되어 있다. 도 40의 구성에 있어서도 플래시 메모리(2A)는 상기 특정 블록영역(11)을 가지고, 그것에 대한 기록 및 판독은, 상기와 같이 마이크로 컴퓨터(1A)의 CPU(3)가 실행하는 프로그램에 의해 제어된다. 이 멀티 칩 구성에 있어서도 플래시 메모리(2A)의 일부가 빈번히 재기록되는 특정 블록영역의 재기록 회수의 실질적인 제한을 완화할 수 있고, 빈번히 재기록되는 데이터의 신뢰성을 향상시킬수 있다.
이상 본 발명자에 의해 이루어진 발명을 실시형태에 따라서 구체적으로 설명하였지만, 본 발명은 그것에 한정되는 것이 아니고, 그 요지를 이탈하지 않은 범위에서 여러가지 변경 가능한 것은 말할 필요도 없다.
예컨대, 기록 및 소거는 상대적인 개념이고, 상기와는 반대로 정의하여도 좋다. 또한, 플래시 메모리의 플로팅 게이트에 대한 전자의 주입방식은 핫일엑트론 주입에 한정되지 않고, 터널주입이라도 좋다. 또한, 불휘발성 메모리는 1개의 메모리셀당 2치로 데이터를 유지하는 구성에 한정되지 않고, 4치 등의 다치 기억을 행하는 구성이라도 좋다. 또, 불휘발성 메모리는 플래시 메모리에 한정되지 않고, 강유전체 메모리 등의 다른 기억형식을 갖는 재기록 가능한 구성이라도 좋다. 또, 플래시 메모리셀 트랜지스터는 p채널형이라도 좋다.
또, 특정 블록영역의 단락방식은 도 6이나 도 9에 예시되는 바와 같이 K 개와 같은 오프셋을 갖게 하여 분리하는 수법에 한정되지 않고, 하나의 데이터를 기록하는 영역을 순차 이웃끼리의 어드레스로 하는 것도 이론상은 가능하다. K개와같은 오프셋을 갖게 하여 분리하는 수법의 쪽이 프로그램의 작성이 용이하고, 또한, 데이터 파악도 용이하다.
데이터 처리장치를 구비하는 회로모듈은 RAM이나 인터페이스 회로에 한정되지 않고, ROM, 코프로세서, 액셀레이터, 그 밖의 주변회로 등이라도 좋다.
실시예 2에 있어서 개시되는 발명중 대표적인 것에 의해 얻어지는 효과를 간단히 설명하면 하기와 같다.
즉, 1개의 불휘발성 메모리에 대한 재기록이 빈번한 일부의 영역을 특정 블록으로 하고, 이 특정 블록에 대한 기록에서는 하나의 데이터에 대한 다른 어드레스로의 중복기록을 행하며, 판독에서는 대응별 어드레스에서 판독한 중복 데이터에 의거해서 에러정정을 행하고, 상기 쌍방의 처리를 CPU의 프로그램에 의해 실현하므로, 불휘발성 메모리의 일부 기억영역에 대한 정보기억의 신뢰성 저하의 억제를 우선시킬수 있다. 재기록 회수가 적어서 좋은 영역에서는 상기 특정 블록으로서 처리대상으로 하지 않으므로서 메모리셀의 사용 효율을 최대화하는 것을 우선시킬수 있다. 이것에 의해, 재기록 회수가 적은 용도로부터 많은 용도까지 1개의 불휘발성 메모리로 대응할 수 있고, 정보기억의 신뢰성 향상 혹은 재기록 상한회수를 향상시키기 위해, 새로운 하드웨어를 필요로 하지 않는다. 상기 CPU가 실행하는 논리연산에 논리 OR 연산 또는 논리 AND 연산의 어느 한쪽을 채용하면, 기억정보의 "1"에서 "0"으로 불량, 또는 "0"에서 "1"로의 불량의 어느 한쪽의 불량분 밖에 대처할 수 없지만, 메모리셀의 이용 효율은 통상보다도 반감하는 만큼으로 끝난다. 논리연산에 다수결 논리를 채용하면 "1"에서 "0"으로의 불량의 쌍방에 대처할 수 있다.

Claims (34)

  1. 재기록 가능한 불휘발성 메모리와, 중앙처리장치를 가지고, 상기 중앙처리장치는 소정의 처리를 실행하고, 상기 불휘발성 메모리의 지정된 일부의 기억영역의 재기록 보증회수를 당해 불휘발성 메모리의 그 밖의 기억영역의 재기록 보증회수보다도 향상시키는 처리를 행하는 것인 것을 특징으로 하는 데이터 처리시스템.
  2. 재기록 가능한 불휘발성 메모리와, 중앙처리장치를 가지고, 상기 중앙처리장치는 소정의 처리를 실행하고, 상기 불휘발성 메모리의 지정된 일부의 기억영역에 대한 기록 데이터에 에러정정정보를 생성하여 부가하며, 상기 지정된 일부의 기억영역에서의 판독 데이터에 대한 에러정정정보에 의한 에러판정과 정정이 가능한 것인 것을 특징으로 하는 데이터 처리시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    1개의 반도체 칩에 상기 불휘발성 메모리 및 중앙처리장치가 형성된 싱글 칩의 마이크로 컴퓨터인 것을 특징으로 하는 데이터 처리시스템.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 불휘발성 메모리 및 중앙처리장치가 각각 별개의 반도체 칩에 형성된 멀치 칩 형태인 것을 특징으로 하는 데이터 처리시스템.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 소정의 처리는, 상기 불휘발성 메모리의 지정된 일부의 기억영역으로의 기록 데이터에 대한 에러정정정보를 생성하는 에러정정 정보생성 프로그램과, 상기 지정된 일부의 기억영역에서 판독된 에러정정 정보 부가데이터에 대한 에러 판정과 에러의 정정을 행하는 에러정정 프로그램인 것을 특징으로 하는 데이터 처리시스템.
  6. 제 5 항에 있어서,
    상기 데이터를 n비트로 하고, n비트의 데이터에 대한 에러정정 정보를 m 비트로 한 때에, m 비트의 상호 다른 2진수를 m+n열로 병행한 행렬 테이블의 기억영역을 가지고, 상기 행렬 테이블은 상기 에러정정 정보생성 프로그램 및 에러정정 프로그램에 의해 찹조되는 것인 것을 특징으로 하는 데이터 처리시스템.
  7. 제 5 항에 있어서,
    상기 중앙처리장치에 의해 액세스 가능한 마스크 ROM을 가지고, 상기 마스크 ROM은 상기 에러정정 생성 프로그램 및 에러정정 프로그램을 보유하는 것을 특징으로 하는 데이터 처리시스템.
  8. 제 5 항에 있어서,
    상기 불휘발성 메모리의 그 밖의 기억영역은, 상기 에러정정 정보생성 프로그램 및 에러정정 프로그램의 저장영역을 가지고 이루어지는 것을 특징으로 하는 데이터 처리시스템.
  9. 제 8 항에 있어서,
    상기 불휘발성 메모리의 그 밖의 기억영역은 소거동작이 금지된 소거 금지영역과 소거 및 기록이 허용된 재기록 허용영역을 가지고, 상기 에러정정 정보생성 프로그램 및 에러정정 프로그램의 저장영역은 상기 소거 금지영역에 할당되고 이루어지는 것을 특징으로 하는 데이터 처리시스템.
  10. 제 7 항 내지 제 9 항중 어느 한 항에 있어서,
    상기 에러정정 정보생성 프로그램은, 에러정정 정보를 생성한 후, 생성한 에러정정 정보와 그것에 대응하는 데이터를 규정의 포맷에 따라서 에러정정 정보 부가데이터로서 상기 지정된 일부의 기억영역에 저장하는 것이고, 상기 에러정정 프로그램은 상기 규정의 포맷에 따라서 에러정정 정보 부가데이터를 인식하는 것을 특징으로 하는 데이터 처리시스템.
  11. 제 8 항에 있어서,
    상기 불휘발성 메모리 그 밖의 기억영역은 소거동작이 금지된 소거 금지영역과 소거 및 기록이 허용된 재기록 허용영역을 가지고, 상기 에러정정 정보생성 프로그램 및 에러정정 프로그램의 저장영역은 상기 재기록 허용영역에 할당되고 이루어지는 것을 특징으로 하는 데이터 처리시스템.
  12. 제 5 항에 있어서,
    상기 불휘발성 메모리에서 상기 에러정정 정보생성 프로그램 및 에러정정 프로그램이 전송되는 RAM을 가지고, 상기 중앙처리장치는 상기 RAM으로 전송된 상기 에러정정 정보생성 프로그램 및 에러정정 프로그램을 실행하는 것을 특징으로 하는데이터 처리시스템.
  13. 제 12 항에 있어서,
    상기 중앙처리장치는 리셋의 지시에 응답하여 상기 불휘발성 메모리에서 상기 RAM으로 상기 에러정정 정보생성 프로그램 및 에러정정 프로그램을 전송하는 것을 특징으로 하는 데이터 처리시스템. ·
  14. 제 5 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 중앙처리장치에 의해 액세스 가능한 RAM을 가지고, 상기 중앙처리장치는 리셋의 지시에 응답하고, 상기 불휘발성 메모리의 일부의 기억영역에서 순차 에러정정 정보 부가데이터를 판독하고, 판독한 에러정정 정보 부가데이터에 대한, 상기 에러정정 프로그램의 실행에 의해 상기 에러판정과 에러의 정정을 행하고, 상기 에러판정과 에러의 정정처리를 거친 데이터를 상기 RAM에 초기적으로 저장하는 것을 특징으로 하는 데이터 처리시스템.
  15. 제 5 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 중앙처리장치는, 상기 에러정정 프로그램의 실행에 의한 상기 에러판정 처리에 있어서 정정불능인 에러의 발생을 나타내는 정보를 외부에서 인식 가능하게 유지하는 수단을 가지고 이루어지는 것을 특징으로 하는 데이터 처리시스템.
  16. 연산 제어장치의 어드레스 공간에 재기록 보증회수가 낮은 제1 기억영역과, 재기록 보증회수가 높은 제2 기억영역을 가지고, 상기 제1 기억영역은, 상기 제2 기억영역으로의 기록데이터에 대한 ECC 코드를 생성하는 ECC 코드생성 프로그램과, 상기 제2 기억영역에서 판독된 ECC 코드 부가데이터에 대한 에러판정과 에러의 정정을 행하는 에러정정 프로그램을 가지고, 상기 연산 제어장치는, 상기 제2 기억영역에 데이터를 저장할 때, 상기 ECC 코드생성 프로그램을 실행하는 것을 특징으로 하는 데이터 처리시스템.
  17. 제 16 항에 있어서,
    상기 연산 제어장치는, 상기 제2 기억영역에서 데이터를 판독할 때, 상기 에러정정 프로그램을 실행하는 것을 특징으로 하는 데이터 처리시스템.
  18. 제 16 항에 있어서,
    상기 연산 제어장치는, 소정의 동작모드에 응답하여 상기 에러정정 프로그램을 실행하여 상기 제2 기억영역의 데이터를 미리 RAM으로 순차 전송가능한 것을 특징으로 하는 데이터 처리시스템.
  19. 제 16 항에 있어서,
    상기 제1 기억영역은 마스크 ROM이고, 상기 제2 기억영역은 전기적으로 재기록 가능한 플래시 메모리인 것을 특징으로 하는 데이터 처리시스템.
  20. 제 16 항에 있어서,
    상기 제1 기억영역 및 제2 기억영역은 전기적으로 재기록 가능한 플래시 메모리이고, 상기 플래시 메모리는 해당 플래시 메모리에 대한 기록 소거 프로그램을 보유하고, 다시, 상기 플래시 메모리에서 상기 기록 소거 프로그램이 전송되는 RAM을 가지며, 상기 연산 제어장치는 특정한 동작모드에 응답하여 RAM상의 상기 기록 소거 프로그램을 실행 가능한 것을 특징으로 하는 데이터 처리시스템.
  21. n 비트의 데이터에 대한 ECC 코드를 m 비트로 할 때, m 비트의 서로 다른 2진수를 m+n열로 열거한 행렬 테이블을 이용하는 데이터 처리방법으로서, ECC 코드의 생성에서는, 데이터의 논리치 "1"의 비트 위치에 대응하는 상기 행렬 테이블의 열의 값을 행방향의 비트마다 배타적 논리화를 채용하고, 이것에 의해 얻어진 m 비트의 값을 ECC 코드로 하고, 데이터에 ECC 코드를 부가해서 m+n 비트의 부호어를생성하는 것을 특징으로 하는 데이터 처리방법.
  22. 제 21 항에 있어서,
    상기 부호어의 논리치 "1"의 비트 위치에 대응하는 상기 행렬 테이블의 열의 값을 행방향의 비트마다 배타적 논리화를 채용하고, 이것에 의해 얻어진 m 비트의 값이 모두 비트 논리치 "0"일 때는 에러 없음으로 판정하여 상기 부호어의 n 비트의 데이터를 정규데이터로 하고, 상기 배타적 논리화에 의해 얻어진 m 비트의 값이 1비트라도 논리치 "1"일 때는 에러 있음으로 판정하며, 상기 행렬 테이블의 열에서, 상기 배타적 논리화에 의해 얻어진 m 비트의 2진수에 일치하는 열을 검색하고, 검색된 열로 대응되는 위치의 부호어의 비트를 논리치로 반전하여 정정하고, 정정된 부호어의 n 비트의 데이터를 정규데이터로 하는 것을 특징으로 하는 데이터 처리방법.
  23. 제 5 항 내지 제 7 항중 어느 한 항에 있어서,
    상기 중앙처리장치는, 상기 에러정정 프로그램의 실행중에 에러정정 가능한 데이터를 검출한 경우, 그 검출결과에 대응하는 정보를 유지하는 기억회로를 갖는 것을 특징으로 하는 데이터 처리시스템.
  24. 제 23 항에 있어서,
    상기 검출결과에 대응하는 정보는, 경고(warning)정보로서 이용되는 것을 특징으로 하는 데이터 처리시스템.
  25. CPU와 재기록 가능한 불휘발성 메모리를 갖는 데이터 처리장치에 있어서, 상기 CPU는, 상기 불휘발성 메모리에서의 기억영역의 일부인 특정 블록에 정보를 기록할 때는 하나의 데이터를 다른 어드레스의 메모리셀에 저장하고, 상기 특정 블록에서 데이터를 판독할 때는 상기 다른 어드레스의 메모리셀로부터 데이터를 판독하며, 판독한 복수의 데이터에 대하여 논리연산을 실행함으로써 필요한 에러정정을 행하는 것이 가능한 것을 특징으로 하는 데이터 처리장치.
  26. 제 25 항에 있어서,
    상기 다른 어드레스의 수는 2이상이고, 상기 논리연산은, 상기 CPU의 명령셋트에 포함되는 명령의 실행에 의한 논리 OR 연산인 것을 특징으로 하는 반도체 집적회로.
  27. 제 25 항에 있어서,
    상기 다른 어드레스의 수는 2이상이고, 상기 논리연산은, 상기 CPU의 명령셋트에 포함되는 명령의 실행에 의한 논리 AND 연산인 것을 특징으로 하는 반도체 집적회로.
  28. 제 25 항에 있어서,
    상기 다른 어드레스의 수는 3이상이고, 상기 논리연산은, 상기 CPU의 명령셋트에 포함되는 명령의 실행에 의해, 상기 다른 어드레스의 메모리셀로부터 판독한 복수의 데이터에 대한 다수결을 채용하는 연산인 것을 특징으로 하는 반도체 집적회로.
  29. 제 25 항 내지 제 28 항중 어느 한 항에 있어서,
    상기 불휘발성 메모리는, 상기 특정 블록과는 다른 영역으로서, 상기 CPU가 실행하는 프로그램을 저장하는 프로그램 영역을 가지고 이루어지는 것을 특징으로 하는 반도체 집적회로.
  30. 제 29 항에 있어서,
    상기 프로그램 영역은, 상기 하나의 데이터를 다른 어드레스의 메모리셀에 저장하기 위한 프로그램, 상기 에러정정을 하기 위한 프로그램 및 그 밖의 프로그램을 보유하는 것을 특징으로 하는 반도체 집적회로.
  31. 제 25 항 내지 제 30 항중 어느 한 항에 있어서,
    상기 특정 블록은 다른 블록에 비해서 많은 재기록 회수를 보증하는 제품수단을 갖는 것을 특징으로 하는 반도체 집적회로.
  32. 제 25 항 내지 제 31 항중 어느 한 항에 있어서,
    상기 불휘발성 메모리는 메모리셀의 문턱치 전압의 고저에 따라서 정보기억을 행하는 것이 가능한 플래시 메모리인 것을 특징으로 하는 반도체 집적회로.
  33. 제 25 항 내지 제 32 항중 어느 한 항에 있어서,
    상기 CPU와 불휘발성 메모리는 마이크로 컴퓨터를 구성하는 1개의 반도체 칩에 형성되어 이루어지는 것을 특징으로 하는 반도체 집적회로.
  34. 제 25 항 내지 제 32 항중 어느 한 항에 있어서,
    상기 CPU와 불휘발성 메모리는 각각 별개의 반도체 칩에 형성되어 이루어지는 것을 특징으로 하는 반도체 집적회로.
KR1020010052503A 2000-09-12 2001-08-29 데이터 처리시스템 및 데이터 처리방법 KR20020021001A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JPJP-P-2000-00275983 2000-09-12
JP2000275983A JP2002091831A (ja) 2000-09-12 2000-09-12 データ処理システム及びデータ処理方法
JP2001189276A JP2003006053A (ja) 2001-06-22 2001-06-22 データ処理装置
JPJP-P-2001-00189276 2001-06-22

Publications (1)

Publication Number Publication Date
KR20020021001A true KR20020021001A (ko) 2002-03-18

Family

ID=26599720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010052503A KR20020021001A (ko) 2000-09-12 2001-08-29 데이터 처리시스템 및 데이터 처리방법

Country Status (3)

Country Link
US (2) US6941505B2 (ko)
KR (1) KR20020021001A (ko)
TW (1) TWI242128B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103899B2 (en) 2003-02-07 2012-01-24 Renesas Electronics Corporation Nonvolatile memory system
US11321016B2 (en) 2019-12-16 2022-05-03 Samsung Electronics Co., Ltd. Method of writing data in memory device, method of reading data from memory device and method of operating memory device including the same

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3750494B2 (ja) * 1999-08-31 2006-03-01 松下電器産業株式会社 半導体装置
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
US6496767B1 (en) * 2001-08-08 2002-12-17 Caterpillar Inc Constant groundspeed autoshift method and apparatus for maximizing fuel economy
TW519734B (en) * 2001-12-04 2003-02-01 Macronix Int Co Ltd Programming and erasing methods of non-volatile memory having nitride tunneling layer
JP3991963B2 (ja) * 2002-10-16 2007-10-17 株式会社デンソー 車両制御装置
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US20040083334A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
KR100543447B1 (ko) * 2003-04-03 2006-01-23 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
US7139942B2 (en) * 2003-07-21 2006-11-21 Sun Microsystems, Inc. Method and apparatus for memory redundancy and recovery from uncorrectable errors
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
US7143332B1 (en) * 2003-12-16 2006-11-28 Xilinx, Inc. Methods and structures for providing programmable width and error correction in memory arrays in programmable logic devices
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
US7464241B2 (en) * 2004-11-22 2008-12-09 Intel Corporation Memory transaction burst operation and memory components supporting temporally multiplexed error correction coding
ITMI20050780A1 (it) * 2005-04-29 2006-10-30 St Microelectronics Srl Metodo di memorizzazione di un array di celle di memoria non-volatile con codice di correzione di errore e relativo dispositivo
US7606980B2 (en) * 2006-02-27 2009-10-20 Intel Corporation Demand-based error correction
DE102006019426B4 (de) * 2006-04-26 2008-03-13 Qimonda Ag Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur
JP2008077810A (ja) * 2006-09-25 2008-04-03 Toshiba Corp 不揮発性半導体記憶装置
JP4375572B2 (ja) * 2006-10-02 2009-12-02 セイコーエプソン株式会社 半導体記憶装置、データ記録装置、半導体記憶装置の制御方法
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
US8856700B1 (en) * 2007-03-17 2014-10-07 Cadence Design Systems, Inc. Methods, systems, and apparatus for reliability synthesis
JP4160625B1 (ja) * 2007-04-04 2008-10-01 シャープ株式会社 誤り検出制御システム
JP4564520B2 (ja) * 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
CN101162449B (zh) * 2007-10-08 2010-06-02 福州瑞芯微电子有限公司 Nand flash控制器及其与nand flash芯片的数据交互方法
US7978516B2 (en) 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout
WO2009156877A1 (en) * 2008-06-24 2009-12-30 Sandisk Il Ltd. Method and apparatus for error correction according to erase counts of a solid-state memory
US8213229B2 (en) * 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device
JP5537551B2 (ja) * 2008-09-28 2014-07-02 ラマト アット テル アビブ ユニバーシティ リミテッド フラッシュメモリにおける適応符号化用の方法およびシステム
US8671327B2 (en) 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
US8458562B1 (en) 2008-12-30 2013-06-04 Micron Technology, Inc. Secondary memory element for non-volatile memory
US8327223B2 (en) * 2009-02-05 2012-12-04 Infineon Technologies Ag System and method for constructing multi-write error correcting code
KR20100096616A (ko) * 2009-02-25 2010-09-02 삼성전자주식회사 저항성 메모리 장치 및 저항성 메모리 장치에서의 입출력 제어 방법
JP5347607B2 (ja) * 2009-03-16 2013-11-20 富士ゼロックス株式会社 文書処理装置、画像形成装置およびプログラム
US8495467B1 (en) 2009-06-30 2013-07-23 Micron Technology, Inc. Switchable on-die memory error correcting engine
US8412987B2 (en) * 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US8412985B1 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Hardwired remapped memory
KR20110026578A (ko) * 2009-09-08 2011-03-16 엘지전자 주식회사 시스템 메모리의 에러 보정 장치 및 방법
US8738995B2 (en) * 2009-09-10 2014-05-27 Hewlett-Packard Development Company, L.P. Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information
US20110250861A1 (en) * 2010-04-08 2011-10-13 Viasat, Inc. Highly integrated, high frequency, high power operation mmic
WO2011159805A2 (en) * 2010-06-15 2011-12-22 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
JP5553309B2 (ja) * 2010-08-11 2014-07-16 国立大学法人 東京大学 データ処理装置
US8325534B2 (en) 2010-12-28 2012-12-04 Taiwan Semiconductor Manufacturing Co., Ltd. Concurrent operation of plural flash memories
WO2012140695A1 (en) * 2011-04-12 2012-10-18 Hitachi, Ltd. Storage control apparatus and error correction method
CN103197985B (zh) * 2011-11-08 2018-07-13 索尼公司 存储控制装置
CN106502624B (zh) 2011-11-30 2019-10-18 英特尔公司 用于提供向量横向多数表决功能的处理器、设备和处理系统
US9323608B2 (en) * 2012-06-07 2016-04-26 Micron Technology, Inc. Integrity of a data bus
US8910017B2 (en) 2012-07-02 2014-12-09 Sandisk Technologies Inc. Flash memory with random partition
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US20140215174A1 (en) * 2013-01-25 2014-07-31 Infineon Technologies Ag Accessing Memory with Security Functionality
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
TWI570738B (zh) * 2013-03-29 2017-02-11 萬國商業機器公司 具有使用歷程記錄的主記憶體模組以及此主記憶體模組於電腦系統之應用
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9448876B2 (en) * 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) * 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
KR102193682B1 (ko) 2014-08-01 2020-12-21 삼성전자주식회사 선택적 ecc 기능을 갖는 반도체 메모리 장치
US9847110B2 (en) * 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9836350B2 (en) 2015-09-30 2017-12-05 Western Digital Technologies, Inc. Joint decoding of rewriting NVM error sectors
US10564969B2 (en) 2015-12-03 2020-02-18 Forrest L. Pierson Enhanced protection of processors from a buffer overflow attack
US11675587B2 (en) 2015-12-03 2023-06-13 Forrest L. Pierson Enhanced protection of processors from a buffer overflow attack
CN106339282B (zh) * 2016-08-26 2019-02-19 哈尔滨工业大学 一种信息存储系统和程序烧写及程序启动加载方法
JP2018156463A (ja) * 2017-03-17 2018-10-04 東芝メモリ株式会社 メモリシステム
JP6857153B2 (ja) * 2018-03-29 2021-04-14 株式会社日立産機システム コントロール装置
JP2019179455A (ja) * 2018-03-30 2019-10-17 東芝メモリ株式会社 記憶装置及びコンピュータシステム
KR20200092036A (ko) * 2019-01-24 2020-08-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11403430B2 (en) 2019-06-11 2022-08-02 At&T Intellectual Property I, L.P. Secure CPU architecture using encryption of return addresses
CN110322979B (zh) * 2019-07-25 2024-01-30 美核电气(济南)股份有限公司 基于fpga的核电站数字控制计算机系统核心处理单元
JPWO2021024083A1 (ko) * 2019-08-08 2021-02-11
WO2022146465A1 (en) * 2020-12-29 2022-07-07 Silicon Storage Technology, Inc. Improved architectures for storing and retrieving system data in a non-volatile memory system
US11538532B2 (en) 2020-12-29 2022-12-27 Silicon Storage Technology, Inc. Architectures for storing and retrieving system data in a non-volatile memory system
CN113377421B (zh) * 2021-06-08 2022-10-28 潍柴动力股份有限公司 一种软硬件版本信息的检测方法、装置、设备及介质
CN116974813B (zh) * 2023-09-25 2024-04-19 南方电网数字电网研究院有限公司 寄存器数据管理方法、装置、寄存器模块、计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0546494A (ja) * 1991-08-19 1993-02-26 Toshiba Corp メモリチエツク方式
JPH0683716A (ja) * 1992-09-01 1994-03-25 Rohm Co Ltd 電気的書換可能型不揮発メモリ
JPH06110793A (ja) * 1992-09-30 1994-04-22 Toshiba Corp 不揮発性半導体記憶装置
KR19990045300A (ko) * 1997-11-14 1999-06-25 가네꼬 히사시 Ecc 회로를 구비한 반도체 기억 장치
JPH11219299A (ja) * 1998-02-02 1999-08-10 Mitsubishi Electric Corp マイクロコンピュータ

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677622A (en) * 1983-06-22 1987-06-30 Hitachi, Ltd. Error correction method and system
US4726021A (en) * 1985-04-17 1988-02-16 Hitachi, Ltd. Semiconductor memory having error correcting means
US4780809A (en) * 1986-08-08 1988-10-25 Amdahl Corporation Apparatus for storing data with deferred uncorrectable error reporting
JPH0812646B2 (ja) * 1989-03-03 1996-02-07 三菱電機株式会社 半導体集積回路
JPH0357048A (ja) 1989-07-25 1991-03-12 Sony Corp 半導体メモリ
US5357521A (en) * 1990-02-14 1994-10-18 International Business Machines Corporation Address sensitive memory testing
JP2816512B2 (ja) * 1992-07-27 1998-10-27 三菱電機株式会社 半導体記憶装置
US5428630A (en) * 1993-07-01 1995-06-27 Quantum Corp. System and method for verifying the integrity of data written to a memory
JPH07210215A (ja) 1994-01-25 1995-08-11 Hitachi Ltd Eepromのデータチェック方法
JPH09237162A (ja) * 1996-02-23 1997-09-09 Hewlett Packard Co <Hp> 走査型データ記憶システム、及びその針摩耗管理方法、媒体摩耗管理方法、並びに残存寿命表示装置
KR100204342B1 (ko) * 1996-08-13 1999-06-15 윤종용 불 휘발성 반도체 메모리 장치
JP3230485B2 (ja) 1998-04-09 2001-11-19 日本電気株式会社 1チップマイクロコンピュータ
US5991202A (en) * 1998-09-24 1999-11-23 Advanced Micro Devices, Inc. Method for reducing program disturb during self-boosting in a NAND flash memory
JP2000268584A (ja) * 1999-03-15 2000-09-29 Nec Corp 不揮発性半導体記憶装置およびその製造方法
JP2001027953A (ja) * 1999-07-15 2001-01-30 Mitsubishi Electric Corp 半導体記憶装置
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0546494A (ja) * 1991-08-19 1993-02-26 Toshiba Corp メモリチエツク方式
JPH0683716A (ja) * 1992-09-01 1994-03-25 Rohm Co Ltd 電気的書換可能型不揮発メモリ
JPH06110793A (ja) * 1992-09-30 1994-04-22 Toshiba Corp 不揮発性半導体記憶装置
KR19990045300A (ko) * 1997-11-14 1999-06-25 가네꼬 히사시 Ecc 회로를 구비한 반도체 기억 장치
JPH11219299A (ja) * 1998-02-02 1999-08-10 Mitsubishi Electric Corp マイクロコンピュータ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103899B2 (en) 2003-02-07 2012-01-24 Renesas Electronics Corporation Nonvolatile memory system
US11321016B2 (en) 2019-12-16 2022-05-03 Samsung Electronics Co., Ltd. Method of writing data in memory device, method of reading data from memory device and method of operating memory device including the same

Also Published As

Publication number Publication date
TWI242128B (en) 2005-10-21
US20020032891A1 (en) 2002-03-14
US6941505B2 (en) 2005-09-06
US20050281113A1 (en) 2005-12-22

Similar Documents

Publication Publication Date Title
KR20020021001A (ko) 데이터 처리시스템 및 데이터 처리방법
JP3176019B2 (ja) 不揮発性半導体記憶部を含む記憶システム
CN105144302B (zh) 存储器装置中的错误校正操作
US7791938B2 (en) MSB-based error correction for flash memory system
US8125825B2 (en) Memory system protected from errors due to read disturbance and reading method thereof
US7440337B2 (en) Nonvolatile semiconductor memory apparatus having buffer memory for storing a program and buffering work data
US6216251B1 (en) On-chip error detection and correction system for an embedded non-volatile memory array and method of operation
KR100543447B1 (ko) 에러정정기능을 가진 플래쉬메모리장치
US8116135B2 (en) Non-volatile memory cell read failure reduction
US5561627A (en) Nonvolatile semiconductor memory device and data processor
KR101967368B1 (ko) 반도체 메모리 장치 및 이의 동작 방법
US20110216587A1 (en) Nonvolatile memory device, methods of programing the nonvolatile memory device and memory system including the nonvolatile memory device
KR20110022414A (ko) 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템, 및 그것의 프로그램 방법
US7502970B2 (en) Memory device and memory card
JP2669303B2 (ja) ビットエラー訂正機能付き半導体メモリ
JP2002091831A (ja) データ処理システム及びデータ処理方法
JP2000030475A (ja) 半導体メモリ装置
EP0428396B1 (en) Bit error correcting circuit for a nonvolatile memory
JP2007104708A (ja) データ処理方法
JP7018089B2 (ja) 半導体記憶装置および読出し方法
CN111290876B (zh) 存储器系统及其操作方法
JP3482543B2 (ja) 半導体メモリ
US20220291845A1 (en) Semiconductor memory device and error detection and correction method
KR100692982B1 (ko) 배드 블럭 정보가 기록된 난드 타입의 플래시 메모리
CN116153378A (zh) 错误检查刷写操作方法和使用该方法的半导体系统

Legal Events

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