KR101029938B1 - 플래시 메모리 시스템 개시 동작 - Google Patents

플래시 메모리 시스템 개시 동작 Download PDF

Info

Publication number
KR101029938B1
KR101029938B1 KR1020067012949A KR20067012949A KR101029938B1 KR 101029938 B1 KR101029938 B1 KR 101029938B1 KR 1020067012949 A KR1020067012949 A KR 1020067012949A KR 20067012949 A KR20067012949 A KR 20067012949A KR 101029938 B1 KR101029938 B1 KR 101029938B1
Authority
KR
South Korea
Prior art keywords
firmware
copy
memory
data
firmware code
Prior art date
Application number
KR1020067012949A
Other languages
English (en)
Other versions
KR20070003808A (ko
Inventor
카를로스 제이. 곤잘레즈
앤드류 톰린
Original Assignee
쌘디스크 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20070003808A publication Critical patent/KR20070003808A/ko
Application granted granted Critical
Publication of KR101029938B1 publication Critical patent/KR101029938B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Abstract

비휘발성 플래시 메모리 시스템이 동작을 제어하기 위한 펌웨어 코드의 다중 카피들은 메모리 시스템의 플래시 메모리의 서로 다른 적절한 위치들에 저장된다. 이러한 위치들의 어드레스들의 맵은 또한 상기 플래시 메모리 내에 저장된다. 상기 메모리 시스템이 초기화 시에, 상기 메모리 제어기 내에 저장되는 부트 코드가 어드레스 맵을 참조로 하여 그것의 마이크로프로세서에 의해 실행되고 상기 플래시 메모리로부터 제어기 메모리로 펌웨어의 하나의 카피를 로딩하며, 그것은 그 후에 상기 메모리 시스템을 동작시키고, 사용자 데이터를 저장 및 검색하기 위해 마이크로프로세서에 의해 실행될 수 있다. 에러 정정 코드(ECC)는 데이터를 검사하기 위해 사용되지만, 플래시 메모리 내에 저장되는 2개 또는 그 이상의 펌웨어 카피들의 가장 양호한 부분들이 ECC를 사용하기 위한 필요성을 감소시키기 위해 사용된다. 상기 펌웨어 코드는 사용자 데이터가 2개 상태들 이상에 따른 동일한 메모리 내에 저장될 때 2개 상태들로 상기 플래시 메모리 내에 저장될 수 있다.

Description

플래시 메모리 시스템 개시 동작{FLASH MEMORY SYSTEM STARTUP OPERATION}
본 발명은 일반적으로 비휘발성 플래시 메모리의 제어기의 초기화, 보다 구체적으로는 플래시 메모리 내 운영 펌웨어를 저장하고, 초기화 시에 제어기 메모리로 그 저장된 펌웨어를 판독하거나 상기 메모리 시스템을 리셋하는데 관한 것이다.
특히 플래시 EEPROM(Electrically Erasable and Programmable Read Only Memory)의 배열을 활용하는 적은 형태 인자 카드들의 형태로 오늘날 사용되는 많은 상업적으로 성공한 비휘발성 메모리 제품들이 존재한다. 메모리 제어기는 또한 카드가 접속되는 호스트와 인터페이싱하고, 그 카드 내에서 메모리 배열의 동작을 제어하도록 상기 카드 내에 포함된다. 그러한 제어기는 전형적으로 마이크로프로세서, 몇 개의 비휘발성 읽기 전용 메모리(ROM) 및 휘발성 랜덤 액세스 메모리(RAM)를 포함한다. 상기 메모리 카드 구현 이외에, 하나 또는 그 이상의 집적 회로들의 형태에서 메모리 시스템의 이러한 타입은 대안적으로 다양한 타입들의 호스트 시스템들로 매립될 수 있다.
2개의 일반적 메모리 셀 배열 구조들은 상업적 애플리케이션, NOR 및 NAND를 발견하였다. 전형적인 NOR 배열에 있어서, 메모리 셀들은 셀들의 행들에 따라 확장하는 워드 라인들에 접속되는 제어 게이트들을 통해 열 방향으로 확장하는 드레인 확산들 및 인접한 비트 라인 소스 사이에 접속된다. 메모리 셀은 소스 및 드레인 사이의 셀 채널 영역의 적어도 일부에 걸쳐 배치되는 적어도 하나의 저장 요소를 포함한다. 따라서, 저장 요소들 상의 전하의 프로그래밍된 레벨은 상기 셀들의 동작 특징을 제어하고, 그에 따라 이것은 어드레싱된 메모리 셀들의 적절한 전압들을 적용함으로써 판독될 수 있다. 그러한 셀들의 예들, 메모리 시스템들 내에서 그것들의 사용들, 및 그것들의 제조 방법들은 미국 특허 번호 제 5,070,032 호, 제 5,095,344 호, 제 5,315,541 호, 제 5,343,063 호, 제 5,661,053 호, 및 제 6,222,762 호에 제시되어 있다.
NAND 배열은 셀들의 열들을 형성하기 위해 기준 전위 및 개별적 비트 라인들 사이의 하나 또는 그 이상의 선택 트랜지스터들에 따라 접속되는 16개 또는 32개와 같은 2개의 메모리 셀들 이상의 직렬 스트링들을 사용한다. 워드 라인들은 다수의 이러한 열들 내에서 셀들에 걸쳐 확장한다. 열 내에 개별적 셀은 스트링을 통해 흐르는 전류가 어드레싱된 셀 내에 저장되는 전하의 레벨에 의존하도록 그 스트링 내에 남아있는 셀들이 견고히 턴 온되도록 하여 프로그래밍 동안 판독 및 검증된다. NAND 구조 배열들 및 메모리 시스템의 일부로서 그것들의 동작의 예들은 미국 특허 번호 제 5,570,315 호, 제 5,774,397 호, 제 6,046,935 호, 및 제 6,522,580 호에서 발견된다.
상기 언급된 특허들 및 주제들에서 논의된 바와 같이, 최신 플래시 EEPROM의 전하 저장 요소들은 전형적으로 도핑된 폴리실리콘 재료로부터 형성되는 가장 흔한 전기적 전도성 플로팅 게이트들이다. 플래시 EEPROM 시스템들에서 유용한 메모리 셀들의 또 다른 타입은 비휘발성 방식으로 전하를 저장하기 위해 전도성 플로팅 게이트 대신에 비휘발성 전도성 유전체 재료를 사용한다. 그러한 셀은 1987년 3월, pp 93-95, No. 3, Vol. EDL-8, IEEE Electron Device Letters, Chan 등에 의한 논문 "트루 단일 트랜지스터 산화물 질화물 산화물 EEPROM 디바이스(A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device)"에 기술되어 있다. 실리콘 산화물, 실리콘 질화물, 및 실리콘 산화물("ONO")로 형성되는 3층의 유전체는 메모리 셀 채널 위에 반도체 기층의 표면 및 전도성 제어 게이트 사이에 삽입된다. 상기 셀은 셀 채널로부터 질화물로 전자들을 주입하여 프로그래밍되고, 그것들은 제한된 영역 내에 트래핑되어 저장되며, 질화물로 들뜬 상태의 정공들을 주입시켜 삭제된다. 유전성 저장 요소들을 활용하는 몇 가지 특정한 셀 구조들은 2002년 10월 25일 출원된 미국 특허 출원서 시리얼 번호 f0/280,352, 공보 번호 2003-0109093에 기술되어 있다.
대부분의 모든 집적 회로 애플리케이션들과 마찬가지로, 몇 개의 집적 회로 기능을 구현하기 위해 요구되는 실리콘 기판 영역을 위축시키기 위한 압력이 또한 플래시 EEPROM 메모리 셀 배열들을 통해 존재한다. 패키지들의 다른 타입들 및 제시된 사이즈 메모리의 저장 용량을 증가시키거나, 용량을 증가시키고 사이즈를 감소시키기 위해, 실리콘 기판의 제시된 영역 내에 저장될 수 있는 디지털 데이터의 양을 계속해서 증가시키는 것이 바람직하다. 데이터의 저장 밀도를 증가시키기 위한 한가지 방식은 메모리 셀 당 및/또는 저장 요소 당 1비트 이상의 데이터를 저장하는 것이다. 이것은 저장 요소 전하 레벨 전압 범위의 윈도우를 2개 상태들 이상 으로 나눠서 달성된다. 4개의 그러한 상태들의 사용은 각각의 셀이 2비트의 데이터를 저장하도록 허용하고, 8개 상태들은 저장 요소 당 3비트의 데이터를 저장한다. 플로팅 게이트들을 사용하는 다중 상태 플래시 EEPROM 구조들 및 그것들의 동작은 미국 특허 번호 제 5,043,940 호 및 제 5,172,338 호에 개시되어 있고, 유전성 플로팅 게이트들을 사용하는 구조들에 대해서는 상기 언급된 미국 출원서 시리얼 번호 10/280,352에 개시되어 있다. 다중 상태 메모리 셀 배열의 선택된 부분들은 또한 미국 특허 번호 제 5,930,167 호 및 제 6,456,528 호에 개시된 방식에 따라 다양한 이유들에 대해 2개 상태(2진수)로 동작될 수 있다.
전형적인 플래시 EEPROM 배열의 메모리 셀들은 함께 삭제되는 셀들의 이산 블록들로 나뉜다. 즉, 상기 블록은 삭제 유닛이다. 하나 이상의 페이지가 단일 동작에 따라 프로그래밍되거나 판독될 수 있을지라도, 각각의 블록은 전형적으로 데이터의 하나 또는 그 이상의 페이지들을 저장하고, 그 페이지는 프로그래밍 및 판독의 최소 유닛이다. 각각의 페이지는 전형적으로 데이터의 하나 또는 그 이상의 섹터들을 저장하고, 그 섹터의 사이즈는 호스트 시스템에 의해 규정된다. 예시적인 섹터는 자기 디스크 드라이브들을 통해 설정되는 표준에 따라 자신들이 저장되는 사용자 데이터 및/또는 블록에 대한 오버헤드 정보의 얼마간의 바이트들을 합한 512 바이트의 사용자 데이터를 포함한다. 메모리 시스템들은 전형적으로 각각의 블록 내에 16, 32, 또는 그 이상의 페이지들을 통해 구성되고, 각각의 페이지는 데이터의 하나 또는 단지 몇 개의 호스트 섹터들을 저장한다.
플래시 메모리 시스템 내 제어기는 전형적으로 호스트 시스템 및 배열 사이에 데이터의 흐름 및 메모리 배열의 동작을 제어하도록 펌웨어 운영 시스템으로부터 명령어들을 실행하는 마이크로프로세서를 포함한다. 몇 가지 상업적 제품들에 있어서, 이러한 펌웨어는 전형적으로 하나 또는 그 이상의 메모리 셀 배열 집적 회로 칩들로부터 분리되는 집척 회로 칩인, 제어기의 일부로써 작은 플래시 EEPROM 내에 저장된다. 플래시 메모리의 사용은 재프로그래밍에 의해 펌웨어를 쉽게 업데이트되도록 허용한다. 그 펌웨어는 전형적으로 시스템을 파워 업 또는 리셋할 시에 플래시 메모리로부터 그리고 제어기 RAM으로 판독된다. 제어기 ROM 내에 저장되는 부팅 코드의 작은 양은 RAM으로 펌웨어를 로딩하도록 제어기 마이크로프로세서에 의해 초기에 실행된다. 그 후에, 플래시 메모리보다 훨씬 더 빨리 판독될 수 있는 그러한 메모리의 타입이 사용될 수 있기 때문에, 마이크로프로세서는 RAM으로부터 펌웨어의 명령어들을 실행한다. 물론, 전력이 사라지는 경우, RAM은 휘발성이며, 펌웨어는 전력이 복구될 시에 플래시 메모리로부터 RAM으로 다시 로딩되어 메모리 시스템의 동작이 다시 시작된다.
이러한 펌웨어 부팅 시스템이 양호하게 동작할지라도, 제어기 집적 회로 칩은 서로 다른 프로세스가 그 칩 상에 나머지 회로들을 형성하도록 사용되는 플래시 메모리를 형성하기 위해 사용되어야 하기 때문에 고가이다. 그러므로, 제품 비용을 감소시키기 위해 사용자 데이터를 저장하기 위해 호스트에 의해 액세스되도록 허용되지 않는 플래시 메모리의 지정된 블록들 내에 펌웨어를 저장하는 것이 제안되어 왔다. 시스템 초기화 시에, 제어기 마이크로프로세서는 플래시 메모리의 지정된 블록들로부터 RAM으로 펌웨어를 로딩하기 위해 ROM 부트 코드를 실행한다. 이것은 단지 코드의 작은 양이 펌웨어를 로딩하기 위해 ROM 내에 저장되기 때문에 그러한 플래시 블록들로 재프로그래밍되어 거의 모든 펌웨어가 변경되고 업데이트되도록 계속해서 허용한다.
제어기 ROM으로 로딩되는 펌웨어의 보전성을 유지하는 것은 명백하게 매우 중요하다. 로딩된 펌웨어 내 어떠한 에러, 심지어 단지 1비트만이라도 그 메모리 시스템이 불규칙하게 동작하거나, 심지어 전혀 동작하지 않도록 야기할 수 있다. 그러한 불규칙한 동작 또는 실패의 다른 부정적인 영향들 이외에, 사용자 데이터는 그것이 프로그래밍 또는 판독되거나, 심지어 메모리로부터 복구불가능하게 렌더링됨에 따라 손상될 수 있다. 심지어 에러가 펌웨어를 다시 로딩하여 나중에 정정되는 경우에도, 플래시 메모리로부터 그것을 판독하도록 사용자 데이터 또는 능력에 따라 이미 복구 불가능한 손상이 행해졌을 수 있다. 그러므로, 플래시 메모리의 예약된 블록들로 펌웨어를 프로그래밍하는 프로세스에서, 그리고 플래시 메모리의 다른 블록들 내 사용자 데이터를 프로그래밍하고 저장하기 위해 마이크로프로세서의 동작을 제어하는 펌웨어의 보전성을 향상시키도록 시스템 초기화 시에 RAM에 그것을 전달하는 동안 단계들이 취해진다.
운영 펌웨어의 2개 또는 그 이상의 카피들은 플래시 메모리 내 서로 다른 위치들에 저장된다. 그러한 위치들은 고정될 필요가 없다. 오히려, 매립된 메모리 시스템 또는 각각의 카드의 메모리 셀들의 예약된 블록들은 펌웨어가 각각의 시스템의 최종 제조 단계들 중 하나와 같이 메모리로 프로그래밍되는 순간에 그 펌웨어를 저장하기 위해 최적으로 선택될 수 있다. 펌웨어 카피들이 저장되는 블록들의 어드레스들을 갖는 맵은 또한 제조 동안 메모리의 몇 개의 특정한 블록들 중 하나로 프로그래밍된다. ROM 부트 코드는 제어기 마이크로프로세서가 어드레스 맵을 찾을 때까지 그것이 순차적으로 이러한 몇 개의 특정한 블록들을 어드레싱하도록 한다. 그 후에, 그 맵은 제어기 RAM으로 카피되고, 펌웨어의 제 1 카피의 시작이 존재하는 플래시 메모리 블록의 어드레스가 마이크로프로세서에 의해 상기 맵으로부터 판독되며, 그에 따라 RAM으로 제 1 펌웨어 카피를 복사하기 시작하기 위해 그 블록을 어드레싱하도록 사용된다. 프로그램 가능한 펌웨어 어드레스 맵의 사용은 그 펌웨어가 ROM 부트 코드 또는 부팅 프로세스의 복잡성을 증가시키지 않으며 서로 다른 카드들 상의 서로 다른 플래시 메모리 위치들 내에 저장되도록 허용한다.
보통의 플래시 메모리가 사용자 데이터에 대해 다중 상태들로 동작될지라도, 펌웨어를 저장하는 예약된 블록들은 사용자 데이터에 대해 사용되는 것보다 더 적은 수의 상태들 또는 2진수로 동작될 수 있다. 즉, 플래시 메모리의 대다수에서 메모리 셀들의 저장 요소들이 데이터의 2개 또는 그 이상의 비트들을 사용할지라도, 그러한 예약된 블록들은 저장 요소 당 데이터의 하나 또는 그 이상의 비트들의 더 적은 수를 각각 저장하도록 동작될 수 있다. 이것은 서로 다른 상태들 사이의 한계를 향상시키고, 따라서 그 펌웨어 데이터를 방해들 및 에러들을 야기할 수 있는 다른 효과들에 덜 민감하게 한다. 이러한 향상된 신뢰성 이외에, 소수의 상태들을 통해 저장되는 데이터가 더 빠르게 판독될 수 있다. 이것이 예약된 블록들 내에 저장되는 데이터의 밀도를 감소시킬지라도, 단지 상대적으로 소수의 블록들만이 포함된다. 전체적으로 상기 메모리 시스템상의 그러한 영향은 보통 낮을 것이다.
펌웨어 데이터는 보통 공지된 리던던시 코드 알고리즘에 따라 데이터로부터 계산된 ECC(error correction code)를 통해 플래시 메모리 내에 저장될 것이다. ECC는 전형적으로 펌웨어 데이터의 페이지 또는 각각의 섹터에 따라 저장된다. 블록들이 예약된 플래시 메모리로부터 제어기로 펌웨어 데이터를 업로딩할 시에, 그 데이터는 에러들에 대해 ECC를 통해 체크된다. 섹터의 하나 또는 그 이상의 비트들이 잘못된 경우, 섹터의 ECC는 그것들을 정정하도록 사용될 수 있고, 잘못된 비트들의 수는 사용되는 특정한 ECC 알고리즘의 능력 내에서 제공된다. 대안적으로, 그 섹터는 플래시 메모리 내에 저장되는 하나 또는 그 이상의 대안적인 카피들로부터 판독될 수 있다. 제 1 카피 내 에러들의 수가 그것들을 정정하기 위한 ECC 알고리즘의 능력을 초과하는 경우, 그 섹터는 대안적 펌웨어 카피로부터 확실하게 판독된다. 섹터의 모든 대안적 카피들이 에러들을 포함하는 경우, 더 적은 에러들을 갖는 것이 정정되어 사용될 수 있다. ECC 계산들은 ROM 부트 코드의 제어 하에서 제어기 마이크로프로세서보다는 제어기의 일부로 제공되는 하드웨어 회로에 의해 수행되는 것이 바람직하다. 일단 정정가능한 데이터 에러가 검출되면, 그 후에 마이크로프로세서는 ROM 부트 코드 명령어들을 실행하여 그 에러를 정정하도록 포함된다.
마지닝 테크닉(margining technique)은 또한 판독 동안 펌웨어 데이터 비트들의 에러들이 검출될 때 사용될 수 있다. 즉, 에러들이 존재하는 것으로 ECC의 사용에 의해 결정되는 경우, 그에 따라 동일한 데이터는 서로 다른 기준 레벨들을 통해 두번 판독될 수 있고; 즉 펌웨어의 하나 또는 그 이상의 비트들의 저장 레벨 내에 일부의 에러에 대한 마진을 제공한다. 판독된 마진은 보통 그것이 정정할 수 있는 것보다 더 많은 다수의 에러들을 검출하는 ECC에 응답하여 사용될 것이다. 대안적으로, 판독된 마진은 그것들을 정정하기 위해 ECC를 사용하기 이전을 제외한 ECC가 에러들을 검출한 후에 활용될 수 있다. 그 경우에, ECC는 마진을 통해 판독된 데이터의 유효성을 증명하기 위해 사용된다. 유효한 데이터는 이러한 방식에 따라 판독될 수 없고, 그에 따라 제 2 펌웨어 카피가 판독된다.
"펌웨어 존재" 플래그는 펌웨어 코드의 카피가 저장되는 것을 표시하도록 플래시 메모리의 예약된 섹터 내에 세팅될 수 있다. 그 후에, 부트 코드는 부트 코드를 포함하는 영역들이 어드레싱되기 이전에 그 플래그가 판독되도록 한다. 상기 플래그가 제공되기 위한 연관된 펌웨어 카피를 표시하지 않는 경우, 그에 따라 판독하기 위한 어떠한 시도도 이루어지지 않는다. "로드 금지(Don't Load)" 플래그는 또한 진단들이 수행될 때 그것의 로딩을 막도록 유효하게 저장된 펌웨어를 통해 사용될 수 있다. 이러한 2개 플래그들의 조합은 마이크로프로세서가 플래시 메모리로부터 펌웨어를 판독 및 로딩하려 시도하는지의 여부를 제어한다.
본 발명의 추가적인 측면들, 장점들, 및 특징들은 그의 예시적인 예들의 다음의 기술 내에 포함되고, 그러한 기술은 첨부된 도면들과 관련하여 취해질 것이다. 본 명세서에서 참조되는 모든 특허, 특허 출원서들, 논문들, 및 다른 공보들은 모든 목적들을 위해 그것들의 전체가 참조 문헌으로 본 명세서에 포함된다.
도 1은 본 발명의 다양한 측면들이 구현될 수 있는 비휘발성 메모리 시스템 을 도시한 블록도.
도 2는 예비된 파일들의 저장소의 맵과 펌웨어 파일들을 포함하는 상기 저장소를 도시하고, 도 1의 시스템의 비휘발성 메모리의 어드레스 공간을 개략적으로 도시한 도면.
도 3은 도 1 및 도 2의 비휘발성 메모리 내에 저장되는 맵 파일의 데이터 콘텐츠를 도시한 도면.
도 4는 상기 시스템의 초기화 시에 비휘발성 메모리로부터 제어기로 펌웨어를 업로딩하기 위한 도 1의 메모리 시스템의 동작의 제 1 실시예를 도시한 흐름도.
도 5는 도 4의 흐름도에 의해 도시된 동작의 한 측면을 도시한 도면.
도 6은 호스트로부터 도 1의 비휘발성 메모리 시스템으로 펌웨어의 다운로딩을 도시한 흐름도.
도 7은 펌웨어를 인스톨 또는 업그레이드하기 위한 카드의 제조 동안 발생하는 동작을 도시한 흐름도.
도 8은 상기 시스템의 초기화 시에 비휘발성 메모리로부터 제어기로 펌웨어를 업로딩하기 위한 도 1의 메모리 시스템의 동작의 제 2 실시예를 도시한 흐름도.
배경 기술로 상기 기술된 바와 같은 플래시 EEPROM 시스템들은 도 1에 기능적으로 표현될 수 있다. 비휘발성 메모리 시스템(11)은 전형적으로 비휘발성 메모리 셀들의 배열(13) 및 제어기(15) 모두를 포함한다. 메모리 셀 배열(13)은 배경 기술에서 상기 기술된 타입의 것이거나, 재프로그램 가능한 비휘발성 메모리의 어 떤 다른 타입일 수 있다. 제어기는 메모리 셀 배열(13), 마이크로프로세서(19), 랜덤 액세스 메모리(RAM)(21), 읽기 전용 메모리(ROM)(23), 에러 정정 코드(ECC) 계산 회로들(25), 및 호스트 인터페이스 회로들(27)을 포함한다. 메모리 시스템(11)은 호스트 인터페이스 회로들(27)을 통해 호스트(29)로 접속된다. 호스트(29)는 개인용 컴퓨터, 디지털 카메라, 개인용 디지털 보조기, 무선 전화기, 디지털 오디오 플레이어, 또는 그러한 비휘발성 메모리 시스템에 대한 필요성을 갖는 다른 전자 시스템일 수 있다. 메모리 시스템(11)은 호스트 내에 매립될 수 있고, 따라서 호스트 시스템의 일부로 구성될 수 있거나, 호스트에 전기적 및 기계적 이동가능하게 접속되는 카드의 형태로 구성될 수 있다.
내부 제어기를 통해 플래시 메모리에 대해 사용되는 그러한 이동식 카드들에 대한 몇 가지 기존 표준들이 존재한다. 한가지 그러한 표준, PC 카드 표준은 PC 카드들의 3개 타입들에 대한 사양들을 제공한다. PC 카드 표준은 PCMCIA(Personal Computer Memory Card International Association)의 제품이다. CompactFlashTM 카드(CFTM 카드)는 PC와 기능적으로 호환가능하지만, 훨씬 더 작다. 더 작은 비휘발성 메모리 카드로는 MultiMediaCard(MMCTM)이 있다. 대략 동일한 사이즈를 갖는 MMCTM 카드의 수정된 버전은 이후의 SD(Secure Digital) 카드이다. 표준들은 메모리 카드들로 사용하기에 적절한 이러한 전자 카드들 및 다른 전자 카드들에 대해 존재한다. 이러한 표준들의 일부는 대중의 어떤 구성원에 대해 사용가능하고, 다른 것들은 그 카드들을 사용하도록 형성되는 단체들의 구성원들에 대해 사용가능하다.
동작에 있어서, 제어기(11)는 데이터가 프로그래밍될 논리 어드레스들에 따라 호스트(29)로부터 데이터의 섹터들을 수신한다. 그 후에, 제어기는 메모리 셀 배열(13) 내 물리적 페이지들의 어드레스들로 이러한 어드레스들을 맵핑한다. 배열(13)의 예시적인 물리적 메모리 맵은 도 2에 도시되어 있다. 메모리는 블록(31)과 같은 다수의 블록들로 나뉘어지고, 각각의 블록은 단일 삭제 동작의 일부로 함께 삭제되는 메모리 셀들의 가장 작은 유닛이다. 차례대로, 각각의 블록은 페이지(31)의 페이지들(33, 35, 37, 39)와 같은 메모리 셀들의 페이지들로 나뉜다. 단지 4개 페이지들만이 설명의 명확성을 위해 각각의 블록 내에 존재하는 것으로 도시되었을지라도, 더 많은 페이지들이 보통 사용된다. 추세는 페이지들의 증가한 수를 갖는 더 큰 블록들을 지향하고, 각각의 페이지는 데이터의 다중 섹터들을 저장한다.
메모리 셀 배열(13)은 도 2에 표시된 바와 같이, 다수의 블록들로 나뉜다. 몇 개의 이러한 블록들은 배열(13)의 동작을 관리하고 호스트(29)와 통신하기 위한 제어기(15)에 의해 사용되는 다른 데이터, 파라미터들, 및 펌웨어를 저장하기 위해 "예약된 블록들"로 지정된다. 블록들(41, 43, 45, 47, 49)은 예약된 블록들로 이러한 예에 도시되어 있다. 이러한 블록들은 동일한 메모리 시스템의 서로 다른 카피들에서 동일할 필요가 없고, 심지어 단일 메모리 시스템의 동작 동안 변화하는 조건들이 이것을 바람직하게 하는 경우 동적으로 재지정될 수 있다. 제어기(15)는 예약된 블록들로 호스트(29)에 의한 액세스를 허용하지 않지만, 제어기는 그 시스템을 동작시키기 위해 그것들 내에 저장된 데이터를 사용한다. 상기 시스템의 남아있 는 블록들은 일부의 경우들에서 시스템의 동작 동안 그것이 필요하게 되는 경우 다른 블록들로 대체될 수 있는 여분의 블록들로 지정되고 통상적인 사용으로부터 억제되는 것을 제외하고, 호스트(29)에 의해 제공되는 사용자 데이터의 저장을 위해 제어기(15)에서 사용가능하다.제어기는 호스트로부터 사용자 데이터의 저장을 위해 사용가능하게 구성되는 배열의 물리적 어드레스 공간으로 논리적 어드레스들을 맵핑한다.
제어기에 의한 펌웨어 동작의 사용 및 저장을 설명하는 목적을 위해, 펌웨어의 제 1 카피는 하나의 블록의 용량을 초과하는 펌웨어가 물리적으로 인접한 블록들 내에 반드시 저장될 필요가 없을지라도, 인접한 예약된 블록들(47, 49) 내에 저장되는 것으로 제시된다. 펌웨어의 제 2 카피는 예약된 블록들(41, 43) 내에 저장된다. 동작 파라미터들의 것들과 같은 제어기에 의해 사용되는 다른 데이터 및 펌웨어가 메모리 시스템의 동작에서 매우 중요하기 때문에, 그것들은 메모리 시스템이 사용될 때 시간에 따라 제 1 카피의 가능한 손상에 대한 보호로 2개 카피들 내에 저장된다. 물론, 펌웨어 파일에 의해 점유되는 블록들의 수는 그 블록들의 데이터 저장 용량 및 파일의 사이즈에 의존한다.
전력 공급 시에 또는 하드 리셋에 응답하여 발생하는 것과 같은 시스템의 초기화 동안, 펌웨어 코드의 하나의 카피는 플래시 메모리(13)로부터 제어기의 RAM(21)으로 로딩된다. 마이크로프로세서(19)는 그 후에 RAM(21)으로부터 펌웨어 코드를 실행한다. 펌웨어 코드를 로딩할 시에 마이크로프로세서(19)에 명령어들을 제공하기 위해, 부트 코드의 적은 양이 ROM(23) 내에 제공된다. 시스템 초기화 시 에, 마이크로프로세서(19)는 플래시 메모리(13)의 예약된 섹터들로부터 RAM(21)으로 다른 필요한 동작 데이터 및 하나의 펌웨어 카피를 로딩하도록 부트 코드의 명령어들을 판독하여 실행한다. 그 후에, 마이크로프로세서(19)는 메모리 시스템의 동작을 제어하기 위해 로딩된 펌웨어 코드의 명령어들을 실행한다. ROM(23)의 일반적 타입을 통해 부트 코드가 쉽게 업데이트 되거나 다른 방식으로 변경될 수 없기 때문에, 가능한 한 많은 시스템 코드가 플래시 메모리(13) 내에 저장되는 펌웨어 코드 내에 위치되고, 그 이유는 이것이 다시 쉽게 기록될 수 있기 때문이다.
펌웨어 및 동작 데이터의 부트 코드 플래시 메모리 어드레스들 내에 영구적으로 포함하기 보다는, 부트 코드는 마이크로프로세서가 이러한 정보를 포함하는 맵을 포함하는 플래시 메모리 내에 더 작은 파일을 초기에 액세스하도록 한다. 이러한 예에 있어서, 상기 맵은 플래시 메모리의 하나의 페이지 내에 저장된다. 몇 개의 페이지들 중 어느 것에 이 맵을 저장할 수 있기 위해, 부트 코드는 마이크로프로세서가 순서대로 몇 개의 지정된 페이지들을 액세스하고 그것이 맵을 찾을 때까지 그것들로부터 데이터를 판독하도록 한다. 이러한 예는 도 2에 도시되어 있고, 페이지들(51, 53, 55, 57)이 지정된다. 이러한 예에서, 지정된 페이지들은 배열에 걸쳐 서로 다른 위치들에 물리적으로 분포되는 몇 개의 블록들의 제 1 페이지(페이지 0)이다. 따라서, 배열 내 일부 위치들이 다른 것들보다 더 양호한 것으로 알려진 경우, 그것이 정확하게 맵을 판독할 수 있기 위해 제어기에 대해 중요하기 때문에, 맵 데이터는 더 양호한 위치들로 프로그래밍된다. 10개 또는 12개 그러한 잠재적 맵 페이지들은 예를 들어 사용자 데이터 저장 용량의 1 또는 수 기가바이트들을 갖는 메모리 시스템 내에 지정될 수 있다.
예시적 맵 페이지 내에 저장되는 데이터가 도 3에 도시되어 있다. 필드(61)는 맵 데이터를 포함하도록 페이지를 식별하는 독특한 서명을 포함한다. 마이크로프로세서가 액세스하기 위해 필요로 하는 몇 개의 예약된 파일들에 대한 어드레스 데이터는 그 맵 페이지 내에 포함되고, 2개의 그러한 예약된 파일들(0, 1)에 대한 데이터가 도 3에 도시되어 있다. 4개 데이터 필드들은 각각의 예약된 파일에 대해 포함된다. 예약된 파일(0)에 대해, 필드(63)는 파일의 식별자(ID)를 포함한다. 이것은 펌웨어 파일로 지정될 수 있다. 필드(65)는 페이지들의 수와 같은 파일의 길이를 명시한다. 예약된 파일의 제 1 카피의 플래시 메모리 내 어드레스는 필드(67) 내에 명시되고, 제 2 카피는 필드(69) 내에 명시된다. 이러한 어드레스들은 공통적으로 파일의 제 1의 것이고, 이것은 파일 길이 필드(65)에 의해 표시되는 다수의 연속적인 페이지들 내에 저장된다. 예약된 파일(1)에 대해 동일한 데이터와 적어도 초기화 프로세스 동안 제어기에 의해 액세스되기 위해 필요한 어떠한 다른 것들이 또한 맵 내에 포함된다.
제어기로 펌웨어를 업로딩하는 제 1 실시예
도 4의 흐름도는 플래시 메모리(13)로부터 제어기 RAM(21)으로 펌웨어 코드를 로딩하기 위한 메모리 시스템(11)의 초기화 예를 도시하고 있다. 상기 프로세스는 단계(71)에 표시된 바와 같이, 시스템으로 전력을 턴 온하거나, 전력 공급 시스템 내에 하드 리셋의 수신시에 시작한다. 다음 단계(73)는 제어기 ASIC(application-specific-integrated-circuit)를 초기화하고, 플래시 메모리(13) 에 전력을 인가하며, 메모리가 분주한 호스트에 신호를 전달한다. 단계(75)에서, ROM(23) 내 부트 코드는 그 후에 마이크로프로세서(19)에 의해 판독되어 실행된다.
단계(75)는 플래시 메모리 내에 맵 페이지를 배치하는 단계와(도 2 참조), 그것을 판독하는 단계와, 그 후에 2개의 1비트 플래그들을 포함하도록 맵 내에서 식별되는 예약된 블록들에서 파일을 판독하는 단계를 포함한다. 이러한 플래그들 중 하나는 "FW_Present" 플래그이고, 이것은 플래시 메모리 내에 저장되는 펌웨어 코드가 존재하는지의 여부를 표시한다. 이 플래그는 플래시 메모리 내에 아무것도 존재하지 않는 경우 제어기가 펌웨어 코드를 판독하려는 시도를 피하도록 허용한다. 제 2 "로드 금지" 플래그는 펌웨어가 제어기로 로딩되지 않는 것이 희망될 때, 심지어 그것이 플래시 메모리 내에 존재할 때조차 세팅된다. 이러한 제 2 플래그는 예를 들어 진단 루틴들이 펌웨어 코드 없이 실행될 때 세팅된다. 그러나, 그러한 동작이 기대되지 않는 경우, "로드 금지" 플래그는 사용될 필요가 없다. 사용되는 경우, 레지스터 또는 하드웨어 플래그와 같은 플래시 메모리의 외부로 대안적으로 저장될 수 있다. 양자의 플래그들이 사용된다고 가정하면, 다음 단계(77)는 그것들이 펌웨어의 존재 및 세팅될 "로드 금지" 플래그의 부재를 표시하는지의 여부를 결정한다. 그러한 경우, 단계(79)를 통해 시작하는 시퀀스는 펌웨어를 로딩하도록 진행한다. 그렇지 않은 경우, 제어기는 단계(101)에 의해 표시되는 바와 같이 상기 프로세스를 제어하도록 개입하기 위해 호스트에 대한 옵션을 통해 유휴 루프로 진입한다.
예약된 섹터들 내에 데이터의 2비트들로 2개 플래그들을 저장하는데 대한 대 안으로, 2개 핀들은 이러한 2비트들을 세팅하기 위해 패키지 외부로 지정될 수 있다. 이러한 핀들 중 하나가 그라운드되는 경우, 그 핀에 의해 표현되는 플래그가 세팅된다. 따라서, 이러한 핀들의 전기적 상태들은 단계(75, 77)의 일부로 질의된다.
단계(79)에 의해 표시되는 바와 같이, 제어기는 단계(75)에서 맵 페이지로부터 판독된 2개 카피들의 어드레스들을 조합하는 단계와, 상기 제 1 카피를 판독하기 위해 준비하는 단계를 포함하는 펌웨어를 판독하도록 그 자체를 셋업한다. 특정한 메모리 배열에 대한 판독 동안 사용될 다양한 전압 레벨들과 같은 명목상의 판독 조건들은 FW_Present 플래그(단계 75)와 동일한 시간에 예약된 블록들로부터 판독될 수 있고, 또한 그 판독을 셋업하기 위해 단계(79)에서 사용될 수 있다.
단계(81)에서, 제 1 펌웨어 카피의 제 1 페이지가 판독된다. 이러한 예에서, 각각의 페이지가 데이터의 하나의 섹터를 저장하기 때문에, 용어 "섹터"는 판독의 유닛으로 흐름도들에서 사용된다. 개별적 페이지들이 데이터의 2개, 4개, 또는 그 이상의 섹터들을 저장하기 위한 것인 경우, 그에 따라 페이지 내 데이터의 모든 섹터들은 동일한 시간에 판독될 것이다. 그러나, 데이터의 하나의 섹터는 계속해서 도 4의 흐름도에서 표시되는 바와 같은 시간에 프로세싱될 수 있다.
판독 펌웨어 데이터는 근본적으로 플래시 메모리로부터 판독된 어떠한 데이터와 동일한 방식으로 제어기의 ECC 회로들(25)을 통해 통과된다. ECC는 데이터의 각각의 섹터로부터 계산되고, 섹터의 일부로써 오버헤드 데이터로 저장되는 ECC와 비교된다. 저장된 ECC는 그것의 프로그래밍 동안 데이터로부터 계산된다. 에러 정 정이 섹터 레벨에서 수행되는 한, 이것은 각각의 페이지 내에 저장되는 데이터의 하나 또는 다중 섹터들이 존재하는지의 여부에 상관없이 이루어진다. 대안적으로, 단일 ECC가 단일 페이지 내에 다중 호스트 섹터들의 데이터에 대해 사용되는 경우, 그에 따라 ECC 검사가 페이지에 대해 단 한 번만 이루어진다. 그러나, 데이터의 각각의 섹터에 대해 2개의 ECC들, 하나는 펌웨어 데이터 부분에 대한 것이고, 다른 것은 데이터 ECC 및/또는 다른 동작상의 파라미터들을 포함하는 오버헤드 부분에 대한 것을 포함하는 것이 통례적이다. 추가적인 대안으로, 펌웨어 데이터의 하나 또는 다중 섹터들과 연관된 오버헤드 데이터는 순차적으로 판독되고 함께 관련되는 펌웨어 데이터 이외에 서로 다른 페이지 또는 블록 내에 저장될 수 있다.
단계(83)에 있어서, 기술된 특정한 예들에서 ECC 회로들(25)은 ECC가 판독 펌웨어 데이터로부터 계산되도록 하고, 데이터에 따라 판독된 ECC와의 비교의 결과로 ECC에 의해 커버되는 데이터의 판독 섹터 또는 섹터들의 상태를 표시하는 몇 개의 출력 비트들을 제공한다. 그 후에, 부트 코드를 실행하는 프로세서(19)는 그 상태 비트들이 판독되도록 한다. 상태 비트들이 판독 데이터 내에 에러가 없다는 것을 표시하는 경우, 그에 따라 단계(85)에 도시된 바와 같이 페이지 어드레스 등은 다음 페이지를 판독하도록 업데이트된다. 펌웨어 파일의 제 1 카피를 포함하는 모든 페이지들이 판독되지 않은 경우, 프로세싱은 다음 페이지를 판독하도록 단계(79)로 복귀한다. 그러나, 방금 판독된 페이지가 제 1 펌웨어 파일의 마지막인 경우, 프로세싱은 이하 기술되는 단계들(95, 97, 99)을 통해 진행한다.
그러나, 단계(83)에서 ECC 회로들(25)로부터의 상태 비트들이 판독 비트들 중 하나 또는 그 이상이 에러 상태에 있다는 것을 표시하는 경우, 제어기(15)가 에러(들)를 정정하기 위해 ECC를 사용하도록 인에이블되는지의 여부를 그것이 할 수 있는 경우 단계(89)에서 부트 코드를 실행함으로써 다음으로 결정한다. 이것은 이하 설명되어 있다. 엔에이블링 된 경우, 에러들의 수 및 타입들이 사용될 특정한 에러 정정 알고리즘에 의해 정정가능한지의 여부를 부트 코드를 실행하는 마이크로프로세서(19)에 의해 단계(91)에서 상태 비트들로부터 결정한다. 그러한 경우, 판독 데이터는 단계(93)에서 부트 코드를 실행하여 정정되고, 그 후에 프로세싱은 데이터가 어떠한 에러들도 없는 것으로 판독된 경우와 동일하게 단계(85)로 진행한다. 그러나, 에러들이 부트 코드 내에 포함되는 에러 정정 알고리즘의 사용에 의해 정정 가능하지 않도록 ECC 회로들(25)에 의해 생성되는 상태 비트들로부터 결정되는 경우, 그에 따라 단계(105)에서 순서대로 다음 펌웨어 카피가 식별된다. 전형적인 ECC 알고리즘은 그것의 복잡성에 의존하여 제시된 수의 비트 에러들을 식별할 수 있지만, 그것보다 더 적은 비트들을 정정할 수 있다. 예를 들어, 제 1 펌웨어 파일 카피(0)의 섹터 데이터가 정정 불가능한 경우, 그에 따라 제 2 펌웨어 파일 카피(1)의 동일한 섹터가 판독되어 대신 사용된다. 단계(107)는 판독되지 않은 펌웨어 데이터 카피가 남아있는지의 여부를 결정하고, 그러한 경우 상기 프로세싱이 제 2 펌웨어 카피의 동일한 섹터에 대해 상기 기술된 프로세스를 반복하기 위해 단계(81)로 다시 진행하도록 한다. 그러나, 그 섹터가 펌웨어 코드의 카피들 모두(또는 제공된 경우 이상)로부터 성공적이지 않게 판독된 경우, 프로세싱은 그 후에 이하 기술되는 바와 같이 단계(109)로 진행한다.
그러나, 정정이 인에이블되지 않은 경우, 보통의 초기 조건인 단계(89)로 우선적으로 복귀하는 것을 제외하고, 다음 단계(103)는 플래그가 ECC 에러의 존재를 표시하는 것을 세팅하도록 한다 (즉, 하우스키핑 플래그가 세팅됨). 다음 카피의 동일한 섹터는 그 후에 방금 기술된 루프를 지나서 단계들(105, 107, 81)에 의해 판독된다. 단계(103)에 의해 세팅되는 플래그는 하나 또는 그 이상의 비트 에러들을 포함하는 펌웨어 카피의 섹터와 연관되고, 데이터 섹터와 관련하여 어떠한 교정 행동을 취하도록 이후의 기준에 대해 섹터의 오버헤드의 일부 또는 다른 곳에 저장되는 것이 바람직하다. 펌웨어는 업로딩 프로세스 동안 세팅된 모든 그러한 플래그들에 대해 검색하도록 루틴을 포함할 수 있으므로, 일단 펌웨어가 제어기에 성공적으로 로딩되면, 몇 가지 행동이 플래시 메모리 내에 저장되는 잘못된 펌웨어 데이터 섹터들을 직접 정정하거나 그 잘못된 데이터의 가능한 이유를 어드레싱하기 위해 취해질 수 있다. 예를 들어, 플래그로 된 펌웨어 데이터 섹터들은 데이터를 정정하여 그 시간에 제거되거나 리프레시될 수 있고, 그 후에 동일한 플래시 메모리 페이지에 정정된 데이터를 재기록할 수 있다. 몇 가지 특정한 제거 프로세스들은 예를 들어 미국 특허 번호 제 5,532,962 호, 제 6,151,246 호, 및 제 6,222,762 호와, 2003년 10월 3일 출원된 미국 특허 출원서 시리얼 번호 10/678,345에 기술되어 있다. 섹터의 데이터는 섹터 데이터 ECC의 사용에 의해, 또는 자신들이 프로그래밍된 상태들에 대한 최초 엄격한 범위 밖으로 이동한 (또는 다른 전하 저장 요소들과의 필드 결합으로 인해 이동한 것으로 보이는) 그러한 저장된 전하 레벨들에 대해 보상하도록 통상적으로 사용되는 것과 다른 기준 레벨들로 데이터를 판독("마진 판독")하여 정정될 수 있다. 대안적으로, 정정되지 않은 에러들을 갖는 데이터의 섹터들은 펌웨어의 또 다른 카피로부터 판독될 수 있고, 정정될 카피로 삽입된다. 그 정정된 카피는 그 후에 플래시 메모리로, 바람직하게는 새로운 위치에 재기록되지만, 또한 삭제 후 동일한 위치에 재기록될 수 있다.
다시 단계(89)로 돌아가서, 어떠한 잘못된 판독 데이터의 정정은 이러한 예에서 초기에 디스에이블된다. 하나의 카피로부터 잘못된 데이터를 정정하기 보다는, 특정한 데이터 섹터가 어떠한 에러 없이 플래시 메모리 내에 저장되는 카피들 중 어느 것으로부터 판독될 수 없다는 것이 결정될 때까지 차례대로 다음 펌웨어 카피로부터 우선적으로 판독된다. 이것은 어떠한 에러들 없이 모든 펌웨어 카피들로부터 제시된 섹터를 판독하기 위한 시도가 실패한 후에 단계(107)에 의해 결정된다. 그 후에, 프로세싱은 섹터 데이터가 에러 없이 판독될 때까지, 단계(81)로 복귀하는 단계들(109, 111, 112, 113)을 포함하는 루프를 통해 차례로 한번에 하나씩 섹터가 펌웨어 카피들로부터 지정된 횟수로 다시 판독되도록 하고, 따라서 프로세싱이 단계(83)로부터 단계(85)로 진행하도록 한다. 몇 번의 재시도들은 단계(112)에 의해 표시되는 바와 같이, 서로 다른 마진 조건들 하에서 이루어질 수 있다.
그러나, 단계(113)에 의해 결정된 바와 같이, 허용되는 재시도들의 수의 마지막 후에 이것이 계속되지 않는 경우, 에러들의 정정은 단계(115)에서 ECC 정정을 인에이블링하여 동일한 섹터 데이터의 다음 판독 시에 발생하도록 허용된다. 이것은 정정가능한 ECC 에러가 존재하도록 단계(83)에 의해 결정될 때, 프로세싱이 상기 기술된 바와 같이 단계들(91, 93)의 경로를 통해 단계(89)에 의해 유도되도록 한다. 정정 불가능한 ECC 에러가 존재하는 경우, 단계들(105, 107)을 통해 데이터 섹터의 다음 카피를 다시 동일하게 시도된다. 그러나, 펌웨어 데이터 섹터의 모든 카피들의 ECC 정정을 통한 판독들이 실패한 경우, 그에 따라 단계(111)에서 프로세싱은 단계(101)로 표시되는 유휴 루프로 들어간다.
요약하자면, 이러한 예시적 구현에 대해, 2개 펌웨어 카피들이 플래시 메모리 내에 저장될 때, 양자의 카피들 내의 에러들을 갖는 제시된 데이터 섹터는 ECC를 통한 데이터의 정정을 시도하지 않고 단계(109)에서 설정된 재시도들의 세트 수에 의해 결정되는 여러 회수에 따라 각각 판독될 수 있다. 그 후에, 각각의 카피로부터 제시된 섹터의 마지막 판독된 재시도는 ECC를 통해 데이터를 정정하기 위한 능력로 수행된다. 단지 데이터 섹터가 정정가능하지 않은 경우에만 프로세스가 실패한다.
대안적으로, 그러나 바람직하지는 않지만 일반적으로, 단계(89)는 항상 정정을 인에이블링하도록 세팅될 수 있지만, 섹터 내 데이터 에러들을 나중에 다루는 단계(103)에서 플래그를 동시에 세팅할 수 있다. 그러한 경우에, 도 4의 프로세싱은 각각의 펌웨어 카피로부터 오직 한번 제시된 데이터 섹터를 판독할 것이다. 제 1 카피가 판독되어 ECC에 의해 그것의 에러들이 정정되도록 시도된다. 성공적인 경우, 단계(85)로 도달한다. 성공적이지 않은 경우, 제 2 펌웨어 카드의 제시된 섹터가 판독되고, 에러가 존재하는 경우, 정정이 시도된다. 양자 모두가 성공적이지 않은 경우, 그에 따라 프로세싱은 단계(109)로 진행한다.
도 4에 구체적으로 도시되지 않았을지라도, 맵 페이지 및 예약된 블록의 어 떠한 부분들을 판독하는 단계(75)는 펌웨어 카피들에 대해 기술되는 것과 유사한 방식으로 실행되는 것이 바람직하다. 즉, 하나 또는 그 이상의 ECC들은 그러한 데이터에 따라 저장되고 판독 데이터가 어떠한 비트 에러들을 포함하는지의 여부를 판독 동안 결정하기 위해 사용된다. 그러한 경우, 정정가능한 경우 데이터는 ECC의 사용에 의해 정정될 수 있다. 정정 불가능한 경우, 데이터는 잠재적으로 서로 다른 판독 조건들 하에서 다시 판독된다. ECC는 에러들이 계속해서 존재하는 경우 다시 판독된 데이터에 대해 사용될 수 있다. 일단 정정되면, 에러 상태에 있는 맵 페이지 및/또는 예약된 블록 부분들은 보통 플래시 메모리 내에 서로 다른 위치에 재기록된다. 맵 페이지의 이중 카피는 양호한 데이터가 하나의 카피로부터 획득될 수 없는 경우에 유지될 수 있다.
도 5를 참조로 하면, 예는 도 4와 관련하여 기술된 프로세싱의 일부에 따라 플래시 메모리 내에 저장되는 카피들 모두로부터 펌웨어의 성공적인 판독을 개념적으로 도시되어 있다. 펌웨어가 긴 8개 섹터들이라고 설명의 단순성을 위해 가정하면, 제어기 RAM(21)으로 판독되는 펌웨어 파일(121)의 8개 섹터들은 펌웨어 카피들(123, 125) 모두로부터 취해지는 것으로 도시되어 있다. 제 1 펌웨어 파일(123) 및 섹터들(3, 6)로부터 얻어진 섹터들(0, 1, 2, 4, 5, 7)은 그것들이 제 1 카피로부터 성공적으로 판독될 수 없기 때문에 제 2 펌웨어 파일(125)로부터 취해진다.
도 4의 프로세싱 흐름도로 돌아가면, 특히 단계(87)에서 프로세싱은 도 5의 파일(121)과 같은 펌웨어 파일이 일단 판독되면 단계(95)로 진행한다. 단계(95)의 일부로, 판독 펌웨어 파일의 오버헤드 필드들(127, 129)(도 5)이 검사된다. 이러한 필드들은 부트 코드가 서로 다른 메모리 시스템들에서 시간에 걸쳐 변경될 수 있기 때문에, ROM(23) 내에 저장되는 부트 코드의 버전의 지정 및 펌웨어 파일의 길이 모두를 각각이 포함한다. 판독 파일(121)의 실제 길이는 필드들(127, 129)로부터 판독된 값과 비교된다. ROM 부트 코드 버전의 필드들(127, 129)로부터 판독된 지정은 또한 부트 코드 자체에 포함되는 버전 지정과 비교된다. 단계(97)에서 이러한 길이들 및 부트 코드 지정들의 비교가 긍정적으로 모두 결정되는 경우, 펌웨어 파일(121)(도 5)은 제어기 RAM(21)(도 1)에 업로딩되고, 프로세스가 완료된다. 그러나, 펌웨어 파일 길이들 또는 부트 코드 버전 지정들이 긍정적으로 비교하는 경우, 어떠한 추가적 명령어들이 호스트로부터 수신될 때까지 단계(101)에 의해 표시되는 바에 따라 정지한다.
플래시 메모리로부터 펌웨어 다운로딩
도 6은 도 1 및 도 2의 메모리 시스템(11)의 플래시 메모리(13)의 예약된 섹터들로 펌웨어를 프로그래밍하는 프로세스를 도시하고 있다. 이것은 전형적으로 생산의 최종 단계들 동안 또는 초기 제작된 카드의 펌웨어가 업데이트 될 때 메모리 시스템의 제조업자에 의해 보통 컴퓨터의 형태로 호스트 시스템(29)을 통해 달성된다. 메모리 시스템의 구매자 및 사용자는 보통 플래시 메모리로 펌웨어 코드를 로딩하지 않을 것이다.
도 6을 참조로 하면, 단계(131)는 다운로딩 프로세스에 대한 시작을 표시하고 있다. 단계(133) 동안, 데이터의 서로 다른 패턴들은 대안적으로 펌웨어 데이터를 저장하기 위해 예약된 블록들에 대한 후보들인 다양한 메모리 블록들로부터 판 독되고 그 블록들로 기록된다. 도 2의 블록 쌍들(41, 43 및 47, 49)과 같은 하나 또는 그 이상의 각각의 블록들의 2개 펌웨어 코드 저장 영역들은 이러한 테스트의 결과로 선택된다. 어떠한 에러들 없이 프로그래밍된 테스트 데이터의 판독을 허용하는 블록들만이 선택된다. 추가로, 테스트는 저장된 전하 레벨들이 최적 범위들 내에 있는지의 여부를 결정하기 위해 저장된 테스트 데이터에 대해 추가로 수행될 수 있다. 또한, 메모리 시스템은 저장된 데이터가 결과에 따라 변경되는지의 여부를 결정하도록 테스트 데이터를 프로그래밍한 후에 다양한 환경 루틴들을 통해 연결될 수 있다.
다음의 단계(135)에서, 호스트 컴퓨터는 플래시 메모리(13)의 선택된 예약 블록들로 메모리 제어 펌웨어를 기록하기 위한 명령어들을 제공하도록 제어기 RAM(21)으로 다운로딩 펌웨어를 로딩한다. (도 1 및 도 2) 다음으로, 단계(137)에서 플래시 메모리로 프로그래밍될 펌웨어의 일부로 저장되는 ROM 부트 코드 호환성 표시와 ROM(23) 내에 저장되는 부트 코드 버전 표시는 호스트에 의해 판독되어 비교된다. 메모리 시스템 제어 펌웨어의 다운로딩은 ROM(23) 내에 재기록가능하지 않게 저장되고 영구적인 부트 코드와 호환 가능한 경우에만 진행할 것이다. 호환성 없음이 알려진 경우, 그에 따라 교정은 보통 이미 거기에 있는 ROM 부트 코드와 호환 가능한 것으로 플래시 메모리로 로딩될 시스템 펌웨어 코드의 버전을 변경하기 위한 것이다.
그 후에, 단계(139)에서 호스트는 제어기(15)로 펌웨어 기록 명령을 전달하고, 단계(141)에서 제어기(15)는 FW_Present 플래그를 지움으로써 초기에 응답한 다. 이러한 플래그는 상기 언급되어 있다. 다음으로, 단계(143)에서 펌웨어 데이터의 섹터들의 그룹은 메모리 시스템으로 호스트에 의해 전달된다. 단계(145)에 표시된 바와 같이, 펌웨어 코드를 저장하기 위해 단계(133)에 의해 선택되는 2개 예약된 블록 영역들 중 하나는 제 1 펌웨어 코드 카피를 수신하도록 지정된다. 제어기(15)는 그 후에 단계(147)에 의해 표시된 바와 같이 제 1 선택된 예약 블록(들)으로 호스트로부터 이전에 수신된 펌웨어 데이터 섹터들을 프로그래밍한다. 단계(149)에 의해 결정되는 바와 같이 이러한 프로그래밍 단계가 성공적인 경우, 제어기는 동일한 펌웨어 데이터 섹터들이 제 2 선택된 예약 블록(들)으로 프로그래밍되도록 한다. 단계들(151, 153, 145)을 포함하는 부분적 루프는 제 2 위치가 어드레싱되도록 하고, 동일한 데이터 섹터들이 단계(147)에 의해 그에 프로그래밍된다.
일단 데이터 섹터들의 이러한 그룹이 플래시 메모리의 위치들 모두에서 프로그래밍되면, 프로세싱은 프로그래밍될 필요가 있는 더 많은 펌웨어 데이터 섹터들이 존재하는지의 여부를 결정하도록 단계(155)로 진행한다. 그러한 경우, 데이터 섹터들의 또 다른 그룹이 단계(143)에서 호스트에 의해 전달되고, 이것들은 플래시 메모리 위치들 모두에서 단계들(145 내지 153)을 포함하는 루프를 통해 동일한 방식으로 프로그래밍된다. 단계(155)에 의해 결정된 바에 따라 모든 펌웨어 코드 섹터들이 이러한 방식으로 프로그래밍된 후, FW_Present 플래그는 단계(157)에 의해 표시된 바와 같이 세팅되며, 다운로딩 동작은 단계(159)에서 완료된다.
단계(149)에서 섹터들의 그룹의 프로그래밍의 실패가 검출된 경우, 단계(147)에서 그러한 섹터들의 프로그래밍은 단계들(161, 163)에 의해 표시된 바와 같이 프리셋 횟수에 따라 반복된다. 섹터들의 어떠하 하나의 그룹의 성공적인 프로그래밍이 그 수의 시도들에 따라 달성되지 않는 경우, 그에 따라 프로그래밍 동작의 실패는 단계(165)에서 알려지고 프로세스가 종료된다.
플래시 메모리가 배경 기술에서 기술된 바와 같이 전하 저장 요소 당 데이터의 1비트 이상을 저장하기 위해 다중 상태들로 동작될지라도, 다중 상태 시스템의 예약된 블록들은 전하 저장 요소 당 하나 또는 그 이상의 비트들 중 더 적은 수를 저장하도록 동작될 수 있다. 예를 들어, 전하 저장 요소들이 사용자 데이터에 대해 8개 상태들로 동작되는 경우, 데이터는 전하 저장 요소 당 4개 상태들을 통해 예약된 블록들 내에 저장될 수 있다. 유사하게는, 사용자 데이터가 4개 상태들로 저장되는 경우, 예약된 블록 데이터는 2진수로 저장될 수 있다. 이것은 특히 메모리 맵 및 펌웨어를 저장하는 예약된 블록들에 대해 중요할 수 있다. 몇 개의 상태들이 활용될 때 각각의 상태를 규정하는 더 큰 범위들 때문에, 몇 개의 상태들 내에 저장되는 데이터가 잘못 판독되기는 어렵다. 전하 저장 레벨들 및 메모리 트랜지스터 문턱 전압들의 범위들 사이에 더 큰 마진이 존재하고, 그 범위들은 더 적은 상태들이 각각의 전자 저장 요소 내에 저장될 때 더 크다. 물론, 더 적은 데이터는 몇 개의 상태들을 통해 동작되는 그러한 블록들 내에 저장되지만, 상기 기술된 펌웨어, 플래그들, 동작 파라미터들, 및 메모리 맵을 저장하는 예약된 블록들의 그러한 동작은 메모리의 저장 용량에 심각한 영향을 미치지 않으며, 그 이유는 이것이 더 적은 수의 상태들에서 메모리의 적은 비율만을 동작하도록 요구하기 때문이다.
도 7은 펌웨어가 업데이는 되는 것들 및 새로운 비어있는 카드들 모두에 대 해 메모리 카드들의 형태로 그러한 시스템들의 제조업자에 의해 플래시 메모리 시스템들로 펌웨어 데이터를 프로그래밍는 전체 프로세스를 도시하고 있다. 이러한 프로세스는 단계(165)에서 도 4의 펌웨어 업로딩과 단계(167)에서 펌웨어 다운로딩 모두의 사용을 포함한다. 처음에 카드는 메모리 카드가 비어있는지의 여부를 단계들(169, 171)에서 결정하는 호스트와 접속된다. 비어있는 경우, 메모리 배열은 단계들(173, 175)에서 포맷팅된다. 다음으로, 펌웨어 카피들은 도 6과 관련하여 이전에 기술된 바에 따라 카드 메모리 배열로 프로그래밍된다. 일단 펌웨어가 단계(177)에서 카드로 성공적으로 프로그래밍되면, 프로세스가 끝난다. 그 카드는 그 후에 사용을 위해 준비된다.
단계(171)에서 카드가 비어있지 않은 것으로 결정되는 경우, 그에 따라 플래시 메모리 내에 상주하도록 가정되는 펌웨어는 도 4와 관련하여 상기 기술된 바와 같이 제어기 RAM로 로딩된다. 단계(179)에서 펌웨어 업로드가 실패한 것이 결정된 경우, 그에 따라 실패 분석 기능(181)이 그 실패에 대한 이유들을 학습하도록 수행된다. 도 4에서, 실패는 프로세스가 유휴 루프(101) 내에 있을 때 존재하는 것으로 고려된다. 응답에 있어서, 카드는 그 후에 폐기된다.
그러나, 단계(179)에서 펌웨어가 적절히 업로딩된 것으로 결정된 경우, 펌웨어는 카드가 다시 포맷될 필요가 있거나(단계 183) 펌웨어가 새로운 버전으로 업그레이드되어야 하는 것(단계185)이 결정된 경우, 단계(167)의 프로세스에 의해 재기록될 수 있다. 그러나, 다시 포맷하거나 펌웨어를 업그레이드할 필요가 없는 경우, 그에 따라 펌웨어가 플래시 메모리로부터 제어기 RAM로 적절히 로딩한다는 확정은 프로세스가 종료하도록 한다. 그 후에, 카드는 사용을 위해 준비되도록 확정된다.
제어기로 펌웨어를 업로딩하는 제 2 실시예
도 8은 제어기(15)(도 1)의 RAM(21)으로 플래시 메모리(13)로부터 펌웨어를 업로딩하도록 ROM 부트 코드에 의해 제어되는 프로세스의 제 2 실시예를 도시하고 있다. 이 프로세스는 도 4와 관련하여 상기 기술된 제 1 실시예의 것과 유사하다. 도 4의 것들과 근본적으로 동일하거나 같은 도 8의 그러한 단계들은 동일 참조 번호들로 도시되며, 여기서 추가로 설명되지는 않는다. 2개 실시예들 사이의 차이들은 에러가 판독된 데이터 내에 존재한다는 결정에 응답하는데 있다.
도 8을 참조로 하면, 이러한 실시예의 프로세싱은 데이터 에러가 상기 기술된 나중의 사용들에 대해 단계(103)에서 플래그의 세팅에 직접적으로 ECC의 사용에 의해 검출된 단계(83)에서 결정에 응답하여 진행한다. 다음의 단계(191)에서, 에러가 사용될 ECC에 의해 정정가능한지의 여부와, 에러가 특정 수의 비트들 보다 적게(N 비트보다 적게) 포함하는지의 여부가 결정된다. 그러한 경우, 데이터는 단계(193)에서 ECC에 의해 정정되고, 프로세싱은 펌웨어 데이터의 다음 섹터를 계속해서 판독한다. 잘못된 데이터는 이러한 실시예에서 단지 정정될 비트들의 수가 낮은 경우에만 ECC가 정정할 수 있는 판독 섹터의 비트들의 수보다 적은 프로세싱의 이러한 초기 단계에서 정정된다. 이것은 데이터를 정정하는 단계가 정정될 비트들의 수에 관한 양에 따라 프로세싱 시간이 걸리기 때문이다.
그러므로, 단계(191)에서 데이터가 정정가능하지 않거나 정정가능하지만 정정하기 위해 N 또는 그 이상의 비트들을 갖는 것으로 결정한 경우, 다음의 단 계(195)는 어느 것이 그 경우인지 결정한다. N 또는 그 이상의 잘못된 비트들이 정정가능한 경우, 단계(197)는 제시된 섹터가 플래시 메모리 내에 저장되는 하나 또는 그 이상의 다른 펌웨어 카피들로부터 판독되었는지의 여부를 결정한다. 그러한 경우, 그에 따라 단계(193)에서 ECC를 사용하여 데이터가 정정되고, 프로세싱은 판독될 다음 데이터 섹터로 단계(85)를 통해 진행한다. 제시된 섹터가 아직 판독되지 않은 펌웨어 카피가 남아있는 경우, 그에 따라 단계(199)는 단계(81)가 다른 카피를 판독하도록 하기 위해 스위칭한다.
그러나, N 또는 그 이상의 잘못된 비트들이 정정가능하지 않다는 것이 단계(197)에서 결정되는 경우, 그에 따라 단계(201)는 제시된 섹터가 모든 펌웨어 카피들로부터 일정한 방식에 따라 특정한 횟수로 판독되었는지의 여부를 결정하도록 사용될 수 있다. 그렇지 않은 경우, 그에 따라 단계(199)는 또 다른 펌웨어 카피에서 제시된 섹터를 어드레싱할 것이며, 그것은 단계(81)에 의해 판독된다. 모든 펌웨어 카피들이 특정한 회수들에 따라 이미 판독된 경우, 그 후에 특수한 수고들이 데이터를 판독하기 위해 활용된다. 일정한 판독들의 특정한 수는 2, 3, 또는 그 이상일 수 있지만, 데이터를 다시 판독하는 단계는 시간이 걸리며, 초기 판독들이 정정가능하지 않은 잘못된 데이터를 제시한 후에 동일한 조건들 하에서 동일한 데이터 섹터들을 다시 판독하는 단계는 정정 데이터를 제공할 확률이 없을 수 있다. 그러므로, 프로세스는 하나가 될 각각의 펌웨어 카피의 판독들의 특정한 수를 통해 구현될 수 있고, 그 후에 어느 것도 성공적이지 않은 경우, 특수한 판독 단계들이 취해진다.
특수한 판독 프로세스에서 제 1 단계(203)는 제시된 펌웨어 카피로부터 데이터의 제시된 섹터를 판독하기 위한 하나 또는 그 이상의 특정한 시도들이 이미 수행되었는지의 여부를 결정하는 것이다. 그렇지 않은 경우, 특수한 판독 파라미터들이 단계(211)에 의해 세팅되고, 그 섹터는 다시 이러한 서로 다른 파라미터들을 통해 단계(81)에서 판독된다. 그러나, 제시된 데이터 섹터가 특수한 판독 파라미터들을 통해 하나 또는 그 이상의 특정한 시간들에 따라 성공적이지 않게 판독된 경우, 단계(205)는 그것이 플래시 메모리 내에 저장되는 다른 펌웨어 카피들에 대한 경우인지의 여부를 결정한다. 그러한 경우, 펌웨어 업로딩은 잘못된 데이터를 정장하거나 판독하는 추가적인 테크닉들이 제공되지 않는 것과 마찬가지로 207로 표시된 바와 같이 실패한 것으로 고려된다. 그러나, 모든 펌웨어 카피들이 특수한 방식에 따라 판독되지 않은 경우, 그에 따라 특수한 판독 파라미터들은 단계(209)에 의해 세팅되고, 다음의 단계(199)는 서로 다른 펌웨어 카피의 제시된 섹터가 단계(81)에 의해 판독되도록 한다.
특수한 판독 프로세스는 잘못된 데이터를 판독할 가능성이 더 높은 서로 다른 판독 조건들의 단계들(209, 211)에서 세팅하는 단계를 포함할 수 있다. 마지닝으로 언급되는 한가지 테크닉은 데이터 섹터의 처음의 일반적 판독 동안 사용되는 것으로부터 메모리 셀 전하 저장 요소의 각각의 상태에 대해 판독 범위를 넓힌다. 이것은 그 범위들 사이의 마진을 감소시키는 효과를 갖고, 그러므로 판독 프로세스에서 다른 에러들을 들여올 수 있다. 그러나, 데이터가 통상적으로 판독될 수 없을 때, 마지닝은 또한 그것들의 각각의 범위들 밖에 있는 셀들의 상태들이 정확하게 판독되도록 할 수 있다. 마지닝된(margined) 판독이 정확한지의 여부는 단계(83)를 통해 ECC의 사용에 의해 결정되고, 그 외에 통상적 데이터 판독들과 동일한 방식으로 결정된다.
본 발명의 다양한 측면들이 그의 예시적 실시예들과 관련하여 기술되었을지라도, 본 발명이 첨부된 특허청구범위 내 보호에 대한 권한이 있다는 것을 이해할 것이다.

Claims (27)

  1. 서로 다른 위치들에 저장된 펌웨어 코드의 적어도 제1 및 제2 카피들을 포함하는 플래시 메모리와, 마이크로프로세서와, 마이크로프로세서 액세스 가능한 부트 코드를 포함하는 읽기 전용 메모리(ROM)와, 마이크로프로세서 액세스 가능한 펌웨어 코드를 저장하기 위한 랜덤 액세스 메모리(RAM)를 구비한 메모리 저장 시스템을 시작하는 방법에 있어서,
    펌웨어의 제1 카피를 상기 플래시 메모리로부터 상기 RAM으로 전달하기 위해 상기 부트 코드를 실행하는 단계;
    펌웨어 코드의 상기 전달된 제1 카피에서 비트 에러들을 식별하는 단계;
    비트 에러들이 정정 가능한 것으로 식별되는 경우, 에러 비트들을 정정하는 단계;
    비트 에러들이 정정 불가한 것으로 식별되는 경우, 정정 불가한 비트 에러들을 포함하는 제1 카피의 적어도 일부 대신에 펌웨어 코드의 제2 카피의 적어도 일부를 상기 RAM으로 판독하는 단계; 및
    상기 RAM으로부터 상기 펌웨어 코드의 에러 없는 카피를 실행하는 단계;
    를 포함하는 메모리 저장 시스템 시작 방법.
  2. 제 1 항에 있어서, 상기 전달된 제1 카피에서 비트 에러들을 식별하는 단계는,
    상기 제1 카피의 개개의 부분들이 상기 플래시 메모리로부터 상기 RAM으로 전달되고 있는 동안에 상기 제1 카피의 부분들을 연속적으로 ECC 회로에 통과시켜 상기 제1 카피의 부분들로부터 에러 정정 코드들을 계산하는 단계; 및
    상기 계산된 에러 정정 코드들을 상기 제1 카피의 부분들로부터 이전에 계산된 에러 정정 코드들과 비교하는 단계;
    를 포함하는 메모리 저장 시스템 시작 방법.
  3. 제 2 항에 있어서, 상기 에러 비트들을 정정하는 단계는 에러 비트들을 정정하기 위해 상기 마이크로프로세서가 상기 부트 코드의 에러 정정 알고리즘을 실행하는 메모리 저장 시스템 시작 방법.
  4. 제 2 항에 있어서, 펌웨어 코드의 제 1 카피의 개개의 부분들은 하나 이상의 섹터의 데이터 및 상기 데이터로부터 이전에 계산되어 상기 데이터와 함께 상기 플래시 메모리에 저장된 ECC를 포함하는 메모리 저장 시스템 시작 방법.
  5. 제 1 항에 있어서, 상기 펌웨어의 제1 카피를 상기 플래시 메모리로부터 상기 RAM으로 전달하기 위해 상기 부트 코드를 실행하는 단계 전에,
    초기화 메모리 맵이 상기 플래시 메모리 내의 복수의 고정된 위치 중 적어도 하나에서 저장되는 것으로 발견될 때까지 한 번에 하나씩 상기 복수의 고정된 위치들을 초기에 액세스하는 단계로서, 상기 초기화 메모리 맵은 펌웨어 코드의 상기 적어도 제1 및 제2 카피들이 저장되는 플래시 메모리의 상기 서로 다른 위치들의 어드레스들을 포함함; 및
    상기 어드레스들을 얻기 위해 상기 초기화 메모리 맵의 데이터를 판독하고, 그 후에 상기 펌웨어 코드의 제 1 카피를 액세싱하는 단계를 더 포함하는, 상기 메모리 저장 시스템 시작 방법.
  6. 제 5 항에 있어서,
    상기 초기화 메모리 맵으로부터 판독된 데이터에서 비트 에러들을 식별하는 단계;
    상기 판독된 데이터에서 비트 에러들이 정정 가능한 것으로 식별되는 경우, 에러 비트들을 정정하는 단계; 및
    상기 판독된 데이터에서 비트 에러들이 정정 불가한 것으로 식별되는 경우, 상기 초기화 메모리 맵의 데이터를 기준 레벨들을 달리하여 재판독하는 단계;
    를 더 포함하는 메모리 저장 시스템 시작 방법.
  7. 제 1 항에 있어서,
    펌웨어 코드의 상기 제 1 및 제 2 카피들은 자신의 플래시 메모리 저장 요소 당 저장되는 단지 펌웨어 코드의 하나 또는 그 이상의 비트들의 제시된 수만을 통해 상기 플래시 메모리의 서로 다른 위치들에 저장되고, 반면에 상기 메모리 저장 시스템은 자신이 저장 요소 당 사용자 데이터의 상기 제시된 수 이상을 통해 상기 메모리의 다른 위치들에 사용자 데이터를 저장하는 것을 더 특징으로 하는, 상기 메모리 저장 시스템 시작 방법.
  8. 제 7 항에 있어서,
    하나 또는 그 이상의 비트들의 상기 제시된 수는 플래시 메모리 저장 요소 당 정확하게 1 비트인, 상기 메모리 저장 시스템 시작 방법.
  9. 제 1 항에 있어서,
    상기 펌웨어 코드의 제 2 카피의 전달된 적어도 일부에서 어떠한 비트 에러들을 식별하는 단계와,
    상기 펌웨어 코드의 제 2 카피의 전달된 적어도 일부에서 식별되는 비트 에러들이 정정가능하지 않은 경우, 상기 제 2 카피의 전달된 적어도 일부에서 비트 에러들의 수를 감소시키기 쉬운 조건들 하에서 상기 펌웨어 코드의 제 2 카피의 상기 적어도 일부의 판독을 반복하는 단계를 더 포함하는, 상기 메모리 저장 시스템 시작 방법.
  10. 제 1 항에 있어서,
    상기 플래시 메모리로부터 상기 RAM으로 상기 펌웨어의 제 1 카피를 전달하기 위해 상기 부트 코드를 실행하기 이전에, 펌웨어가 상기 플래시 메모리 내에 저장될 때 세팅되는 펌웨어 프리젠트 플래그의 상태를 검사하는 단계와, 상기 펌웨어 프리젠트 플래그가 세팅될 때만 상기 플래시 메모리로부터 상기 RAM으로 상기 펌웨어의 제 1 카피를 전달하기 위해 상기 부트 코드를 계속해서 실행하는 단계를 더 포함하는, 상기 메모리 저장 시스템 시작 방법.
  11. 제 1 항에 있어서,
    하나 또는 그 이상의 미리 규정된 수의 비트 에러들의 수를 식별하는 단계에 응답하여, 상기 펌웨어의 제 1 카피의 잘못된 데이터가 저장되는 상기 플래시 메모리의 위치들과 연관된 하우스키핑(housekeeping) 플래그를 세팅하는 단계를 더 포함하는, 상기 메모리 저장 시스템 시작 방법.
  12. 제 11 항에 있어서,
    세팅될 상기 하우스키핑 플래그에 응답하여, 상기 펌웨어 코드의 에러 없는 카피가 상기 RAM으로 전달된 후에 상기 펌웨어의 제 1 카피의 잘못된 데이터를 정정하는 단계를 더 포함하는, 상기 메모리 저장 시스템 시작 방법.
  13. 제 12 항에 있어서,
    상기 펌웨어의 제 1 카피의 잘못된 데이터를 정정하는 단계는 상기 플래시 메모리에서 상기 펌웨어의 정정된 제 1 카피를 재기록하는 단계를 포함하는, 상기 메모리 저장 시스템 시작 방법.
  14. 제 13 항에 있어서,
    상기 펌웨어의 정정된 제 1 카피를 재기록하는 단계는 그것이 최초에 저장된 것과 서로 다른 위치에 상기 정정된 제 1 카피를 재기록하는 단계를 포함하는, 상기 메모리 저장 시스템 시작 방법.
  15. 제 12 항에 있어서,
    펌웨어의 제 1 카피의 잘못된 데이터는 에러 정정 코드의 사용을 포함하는, 상기 메모리 저장 시스템 시작 방법.
  16. 제 12 항에 있어서,
    펌웨어의 제 1 카피의 잘못된 데이터를 정정하는 단계는 펌웨어 코드의 제 2 카피로부터 양호한 데이터의 전달을 포함하는, 상기 메모리 저장 시스템 시작 방법.
  17. 플래시 메모리와, 마이크로프로세서와, 상기 마이크로프로세서에 의해 액세스 가능한 부트 코드를 포함하는 읽기 전용 메모리(ROM)와, 랜덤 액세스 메모리(RAM)와, 통과 데이터로부터 에러 정정 코드(ECC)를 계산하는 ECC 회로를 구비한 메모리 저장 시스템을 동작시키는 방법에 있어서,
    펌웨어 코드의 적어도 제1 및 제2 카피들을 한 번에 하나씩 상기 ECC 회로에 통과시키고 계산된 ECC들을 플래시 메모리에 저장함으로써 펌웨어 코드의 상기 카피들을 플래시 메모리의 서로 다른 어드레스 가능한 위치들에 저장하는 단계;
    상기 마이크로프로세서가 상기 부트 코드를 실행하도록 하여 펌웨어의 제1 카피를 ECC를 계산하는 상기 ECC 회로를 통해 상기 플래시 메모리로부터 상기 RAM으로 전달함으로써 메모리 시스템의 동작을 시작하는 단계;
    펌웨어 코드의 상기 전달된 제1 카피에서 비트 에러들을 식별하기 위해 상기 계산되어 저장된 ECC들을 사용하는 단계; 및
    비트 에러들이 정정 가능한 것으로 식별되는 경우, 펌웨어 코드가 에러 없이 상기 RAM에 로딩될 수 있도록, 상기 마이크로프로세서가 상기 부트 코드 내의 에러 정정 알고리즘을 에러 비트들을 정정하기 위해 실행하도록 하는 단계; 또는
    비트 에러들이 정정 불가한 것으로 식별되는 경우, 펌웨어 코드가 에러 없이 상기 RAM에 로딩될 수 있도록, 정정 불가한 비트 에러들을 포함하는 제1 카피의 적어도 일부 대신에 펌웨어 코드의 제2 카피의 적어도 일부를 상기 RAM에 전송하는 단계;
    를 포함하는 메모리 저장 시스템 동작 방법.
  18. 제 17 항에 있어서,
    상기 펌웨어 코드를 저장하는 단계는 상기 펌웨어 코드의 하나 또는 그 이상의 섹터들로부터 개별적으로 계산되는 ECC들을 저장하는 단계를 포함하는, 상기 메모리 저장 시스템 동작 방법.
  19. 제 17 항에 있어서,
    펌웨어 코드의 상기 적어도 제 1 및 제 2 카피들의 어드레스 가능한 위치들을 포함하는 상기 플래시 메모리의 미리 결정된 복수의 위치들 중 하나에 맵을 저장하는 단계를 더 포함하며, 상기 마이크로프로세서에 의한 상기 부트 코드의 실행은 상기 맵이 발견될 때까지 한번에 하나씩 상기 미리 결정된 복수의 위치들을 액세싱하여 상기 맵을 초기에 배치하는 단계와, 상기 맵이 저장되는 위치에서 상기 맵의 콘텐츠들을 판독하는 단계를 포함하는, 상기 메모리 저장 시스템 동작 방법.
  20. 제 17 항에 있어서,
    상기 펌웨어 코드를 저장하는 단계는 적어도 하나의 펌웨어 카피의 플래시 메모리 내에서의 존재를 표시하기 위해 플래그를 세팅하는 단계를 더 포함하며, 상기 펌웨어 코드의 제 1 또는 제 2 카피들 중 하나를 전달하기 위해 상기 부트 코드를 실행하는 단계는 그와 연관된 플래그를 우선적으로 판독하는 단계와, 단지 상기 연관된 플래그만이 세팅되는 경우 상기 펌웨어 코드의 카피를 판독하기 위해 진행 하는 단계를 포함하는, 상기 메모리 저장 시스템 동작 방법.
  21. 플래시 메모리 저장 시스템에 있어서,
    데이터를 전하 저장 요소들에 저장하는 플래시 메모리 셀들의 배열로서, 상기 메모리 셀들은 상기 배열의 복수의 미리 결정된 어드레스 중 적어도 하나에서 메모리 맵을 포함하고, 상기 메모리 맵은 펌웨어 코드의 하나 이상의 카피가 저장되는 어드레스들을 특정하는 데이터를 포함함;
    제어기 프로세서;
    상기 저장 시스템의 초기화에 응답하여 상기 프로세서가 액세스 및 실행하는 부트 코드를 포함하는 읽기 전용 메모리(ROM); 및
    실행될 명령어들을 얻기 위해 상기 프로세서에 의해 액세스 가능한 랜덤 액세스 메모리(RAM);
    를 포함하며, 상기 부트 코드는 상기 제어기 프로세서가 상기 플래시 메모리 내의 상기 복수의 미리 결정된 어드레스에 액세스하도록 하여, 펌웨어 코드의 하나 이상의 카피가 저장되는 어드레스들을 특정하는 상기 메모리 맵의 데이터를 배치 및 판독하고, 그 후에 상기 특정된 어드레스들 중 적어도 하나에 배치된 펌웨어 코드를 판독하고, 그 후에 상기 판독된 펌웨어 코드를 상기 RAM에 기록하는 것을 특징으로 하는 플래시 메모리 저장 시스템.
  22. 제 21 항에 있어서,
    상기 맵 및 상기 펌웨어 코드는 메모리 셀 저장 요소 당 그의 1비트를 통해 상기 플래시 메모리 내에 저장되고, 추가로 데이터는 메모리 셀 저장 요소 당 그의 1비트 이상을 통해 상기 맵 및 펌웨어를 포함하는 것들과는 다른 상기 메모리 배열의 적어도 일부 어드레스들에 저장되는, 상기 플래시 메모리 저장 시스템.
  23. 플래시 메모리 저장 시스템에 있어서,
    전하 저장 요소들 내에 데이터를 저장하고, 펌웨어 코드의 제 1 및 제 2 카피들로부터 계산되는 에러 정정 코드들(ECC들)의 각각의 제 1 및 제 2 세트들에 따라 자신에 저장되는 상기 펌웨어 코드의 적어도 제 1 및 제 2 카피들을 포함하는 플래시 메모리 셀들의 배열과,
    제어기 프로세서와,
    회로를 통해 통과하는 데이터로부터 ECC들을 계산하는 상기 회로와,
    상기 프로세서가 상기 저장 시스템에 응답하여 액세싱하고 실행하는 부트 코드를 포함하는 읽기 전용 메모리와,
    실행될 명령어들을 획득하도록 상기 프로세서에 의해 액세스 가능한 랜덤 액세스 메모리를 포함하며,
    상기 부트 코드는 상기 프로세서가 ECC들을 계산하는 상기 ECC 계산 회로를 통해 판독 제 1 펌웨어 코드 카피를 통과시키는 단계를 포함하는 상기 제 1 펌웨어 코드 카피를 판독하도록 하며, 저장된 ECC들의 제 1 세트와 관련하여 상기 ECC들이 관련되는 상기 제 1 펌웨어 코드 카피의 부분들 내에 존재하는 어떠한 데이터 에러 들과 관련한 상태를 상기 제 1 펌웨어 코드 카피에 제공하며,
    (A) 상기 상태가 상기 제 1 펌웨어 코드 카피의 일부분들 중 제시된 것에 데이터 에러들이 존재하지 않는다는 것을 표시하는 경우, 그 후에 상기 랜덤 액세스 메모리로 상기 펌웨어 코드의 제 1 카피의 제시된 부분을 기록하고,
    (B) 상기 상태가 상기 제 1 펌웨어 코드 카피의 제시된 부분에 데이터 에러들이 존재한다는 것을 표시하는 경우, 상기 부트 코드는 상기 펌웨어 코드 내에 비트 에러들의 수가 제시된 수를 초과하는지의 여부를 상기 프로세서가 결정하도록 하며,
    (i) 비트 에러들의 수가 상기 제시된 수를 초과하지 않는 경우, 추가로 상기 잘못된 비트들을 정정하고, 상기 랜덤 액세스 메모리로 상기 정정된 제 1 펌웨어 코드 카피를 기록하도록 하고,
    (ii) 비트 에러들의 수가 상기 제시된 수와 같거나 초과하는 경우, 추가로 상기 프로세서가 상기 제 2 펌웨어 카피의 적어도 일부를 판독하고, 적어도 하나의 ECC를 자신으로부터 계산하는 상기 ECC 계산 회로를 통해 상기 판독 제 2 펌웨어 코드를 통과시키고, 상기 적어도 하나의 ECC가 관련되는 상기 제 2 펌웨어 코드 카피의 상기 적어도 일부에 존재하는 어떠한 데이터 에러들과 관련한 상태를 제공하며, 상기 상태가 상기 제 2 펌웨어 코드 카피의 상기 적어도 하나의 부분에 데이터 에러들이 존재하지 않는다는 것을 표시하는 경우, 그 후에 상기 랜덤 액세스 메모리로 상기 펌웨어 코드의 상기 판독 제 2 카피의 상기 적어도 한 부분을 기록하는, 상기 플래시 메모리 저장 시스템.
  24. 제 23 항에 있어서,
    상기 펌웨어 코드는 메모리 셀 저장 요소 당 자신의 1비트를 통해 상기 플래시 메모리 내에 저장되고, 추가로 데이터는 메모리 셀 저장 요소 당 자신이 1비트 이상을 통해 상기 펌웨어 코드를 포함하는 것들과는 다른 상기 메모리 배열의 어드레스들 중 적어도 일부에서 저장되는, 상기 플래시 메모리 저장 시스템.
  25. 플래시 메모리 저장 시스템에 있어서,
    데이터를 전하 저장 요소들에 저장하고, 펌웨어 코드의 존재를 표시하는 제1 플래그 및 펌웨어 코드가 존재하는 경우에는 로딩되지 않아야 한다는 것을 표시하는 제2 플래그와 함께 저장된 펌웨어 코드의 적어도 하나의 카피를 포함하는 플래시 메모리 셀들의 배열;
    제어기 프로세서;
    상기 저장 시스템의 초기화에 응답하여 상기 프로세서가 액세스하고 실행하는 부트 코드를 포함하는 읽기 전용 메모리; 및
    실행될 명령어들을 얻기 위해 상기 프로세서에 의해 액세스 가능한 랜덤 액세스 메모리;
    를 포함하고, 상기 부트 코드는 상기 프로세서가 상기 제1 및 제2 플래그들을 조사하도록 하여,
    (A) 상기 제1 플래그가 존재하고 상기 제 2 플래그가 존재하지 않는 경우, 상기 펌웨어 코드를 상기 랜덤 액세스 메모리에 로딩하는 것을 진행하거나,
    (B) 상기 제1 및 제2 플래그들이 모두 존재하는 경우, 상기 펌웨어 코드를 상기 랜덤 액세스 메모리에 로딩함이 없이 테스트를 위해 상기 펌웨어 코드에 대한 액세스를 제공하거나,
    (C) 상기 제1 플래그가 존재하지 않는 경우, 상기 펌웨어 코드를 상기 랜덤 액세스 메모리에 로딩하는 것을 시도하지 않고 테스트를 위해 상기 펌웨어 코드에 대한 액세스를 제공하는 것을 시도하지 않는 것을 특징으로 하는 플래시 메모리 저장 시스템.
  26. 제 25 항에 있어서,
    상기 펌웨어 코드와, 제 1 및 제 2 플래그들은 메모리 셀 저장 요소 당 자신의 1비트를 통해 상기 플래시 메모리 내에 저장되고, 추가로 데이터는 메모리 셀 저장 요소 당 자신의 1비트 이상을 통해 상기 펌웨어 코드와, 제 1 및 제 2 플래그들을 포함하는 것들과는 다른 상기 메모리 배열의 적어도 일부 어드레스들에 저장되는, 상기 플래시 메모리 저장 시스템.
  27. 서로 다른 위치들에 저장된 펌웨어 코드의 적어도 제1 및 제2 카피들을 포함하고 다른 위치들에 있는 사용자 데이터를 포함하는 플래시 메모리와, 마이크로프로세서와, 마이크로프로세서 액세스 가능한 부트 코드를 포함하는 읽기 전용 메모리(ROM)와, 마이크로프로세서 액세스 가능한 펌웨어 코드를 저장하기 위한 랜덤 액세스 메모리(RAM)를 구비한 메모리 저장 시스템을 시작하는 방법에 있어서,
    펌웨어 코드의 상기 적어도 제1 및 제2 카피들의 1 비트를 플래시 메모리의 상기 서로 다른 위치들 내에 있는 메모리 셀들의 개개의 저장 요소들에 저장하고, 상기 사용자 데이터의 1 비트 이상을 플래시 메모리의 상기 다른 위치들 내에 있는 메모리 셀들의 개개의 저장 요소들에 저장하는 단계;
    펌웨어 코드의 제1 카피를 상기 플래시 메모리로부터 상기 RAM으로 전달하기 위해 상기 부트 코드를 실행하는 단계;
    펌웨어 코드의 제1 카피에서 비트 에러들을 상기 제1 카피가 전달되고 있는 동안에 식별하는 단계;
    상기 전달된 제1 카피에서 식별된 비트 에러들 중 특정한 것들을 정정하거나, 상기 식별된 비트 에러들을 포함하는 제1 카피의 적어도 일부를 대신하기 위해 펌웨어 코드의 제2 카피의 적어도 일부를 판독하는 단계; 및
    상기 RAM으로부터 상기 펌웨어 코드의 에러 없는 카피를 실행하는 단계;
    를 포함하는 메모리 저장 시스템 시작 방법.
KR1020067012949A 2003-12-31 2004-12-16 플래시 메모리 시스템 개시 동작 KR101029938B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/751,033 US7594135B2 (en) 2003-12-31 2003-12-31 Flash memory system startup operation
US10/751,033 2003-12-31

Publications (2)

Publication Number Publication Date
KR20070003808A KR20070003808A (ko) 2007-01-05
KR101029938B1 true KR101029938B1 (ko) 2011-04-19

Family

ID=34749345

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067012949A KR101029938B1 (ko) 2003-12-31 2004-12-16 플래시 메모리 시스템 개시 동작

Country Status (7)

Country Link
US (2) US7594135B2 (ko)
EP (1) EP1700207B8 (ko)
JP (1) JP4933268B2 (ko)
KR (1) KR101029938B1 (ko)
CN (1) CN1902583B (ko)
TW (1) TWI272536B (ko)
WO (1) WO2005066773A1 (ko)

Families Citing this family (157)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
EP1723498A2 (de) * 2004-03-11 2006-11-22 Preh KeyTec GmbH Tastatur, insbesondere kassentastatur, und verfahren zur inbetriebnahme sowie zum austausch und update von firmware der tastatur
DE102004013493B4 (de) * 2004-03-18 2009-11-05 Infineon Technologies Ag Zugriffs-Verfahren für einen NAND-Flash-Speicherbaustein und ein entsprechender NAND-Flash-Speicherbaustein
US20050268077A1 (en) * 2004-05-11 2005-12-01 Peter Kuan Memory system for an electronic device and the method for controlling the same
KR101074423B1 (ko) * 2004-05-29 2011-10-17 삼성전자주식회사 메모리 카드의 처리 상황을 판별할 수 있는 메모리 카드시스템 및 그것의 판별 방법
WO2005116827A1 (en) * 2004-05-31 2005-12-08 Stmicroelectronics Pvt. Ltd. A method for remotely upgrading the firmware of a target device using wireless technology
US7336531B2 (en) 2004-06-25 2008-02-26 Micron Technology, Inc. Multiple level cell memory device with single bit per cell, re-mappable memory block
US7340594B2 (en) * 2004-06-30 2008-03-04 Intel Corporation Bios-level incident response system and method
US7269829B2 (en) * 2004-07-30 2007-09-11 Signature Control Systems, Inc. Method and system for remote update of microprocessor code for irrigation controllers
US7334117B2 (en) * 2004-08-04 2008-02-19 National Instruments Corporation Device boot loader for processing one or more requests from a host computer system concurrently with loading or updating the firmware of the device
US8275969B2 (en) * 2004-08-05 2012-09-25 Sandisk Il Ltd. Storage with persistent user data
US20060070059A1 (en) * 2004-09-27 2006-03-30 Starr Matthew T Co-existing dedicated system software and read/writeable data storage space on removable media
JP2006146485A (ja) * 2004-11-18 2006-06-08 Toshiba Corp 携帯端末
US20060143368A1 (en) * 2004-12-23 2006-06-29 M-Systems Flash Disk Pioneers Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
US7970984B2 (en) * 2004-12-23 2011-06-28 Sandisk Il Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
JP4817836B2 (ja) 2004-12-27 2011-11-16 株式会社東芝 カードおよびホスト機器
US8423788B2 (en) * 2005-02-07 2013-04-16 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8108691B2 (en) 2005-02-07 2012-01-31 Sandisk Technologies Inc. Methods used in a secure memory card with life cycle phases
US8321686B2 (en) 2005-02-07 2012-11-27 Sandisk Technologies Inc. Secure memory card with life cycle phases
KR100640389B1 (ko) * 2005-04-06 2006-10-30 삼성전자주식회사 Nand플래시 메모리를 구비한 장치에서 어플리케이션을실행하는 방법 및 그 장치
TWI345175B (en) * 2005-06-08 2011-07-11 Winbond Electronics Corp Method for updating firmware of memory card
US7743409B2 (en) 2005-07-08 2010-06-22 Sandisk Corporation Methods used in a mass storage device with automated credentials loading
TWI267861B (en) * 2005-09-06 2006-12-01 Alcor Micro Corp Method and device for loading configuration values of nonvolatile memory
US20070058923A1 (en) * 2005-09-09 2007-03-15 Buhler Kirk A Use of flash based memory to store and play feature length licensed movie or TV productions
WO2007033322A2 (en) * 2005-09-14 2007-03-22 Sandisk Corporation Hardware driver integrity check of memory card controller firmware
US7536540B2 (en) * 2005-09-14 2009-05-19 Sandisk Corporation Method of hardware driver integrity check of memory card controller firmware
US20070061597A1 (en) * 2005-09-14 2007-03-15 Micky Holtzman Secure yet flexible system architecture for secure devices with flash mass storage memory
CN1937083B (zh) * 2005-09-23 2010-05-05 安国国际科技股份有限公司 非挥发性存储器设定值加载方法与其存储器装置
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
KR100625811B1 (ko) * 2005-12-09 2006-09-18 엠텍비젼 주식회사 코드 데이터 에러 정정 방법 및 장치
US20070169086A1 (en) * 2005-12-30 2007-07-19 Siliconmotion Inc. System and method for updating in-system program
JP5077225B2 (ja) * 2006-02-27 2012-11-21 富士通株式会社 情報処理装置及び処理実行方法
US7822958B1 (en) * 2006-03-10 2010-10-26 Altera Corporation Booting mechanism for FPGA-based embedded system
US7810017B2 (en) 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
JP4908026B2 (ja) * 2006-03-22 2012-04-04 株式会社東芝 情報処理装置
US20070236519A1 (en) * 2006-03-31 2007-10-11 Edelen John G Multi-Level Memory for Micro-Fluid Ejection Heads
JP4840859B2 (ja) * 2006-05-10 2011-12-21 ルネサスエレクトロニクス株式会社 半導体装置、及び起動方法
JP2009205187A (ja) * 2006-06-23 2009-09-10 Panasonic Corp メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法
US7292495B1 (en) * 2006-06-29 2007-11-06 Freescale Semiconductor, Inc. Integrated circuit having a memory with low voltage read/write operation
TWI316184B (en) * 2006-08-03 2009-10-21 Etron Technology Inc Programmable system-chip device and method of programming firmware
TWI387878B (zh) * 2006-08-21 2013-03-01 Sandisk Il Ltd 輸出以邏輯區段為基礎的介面之非及快閃記憶體控制器
US20080052524A1 (en) * 2006-08-24 2008-02-28 Yoram Cedar Reader for one time password generating device
US20080072058A1 (en) * 2006-08-24 2008-03-20 Yoram Cedar Methods in a reader for one time password generating device
JP2008084291A (ja) * 2006-08-28 2008-04-10 Fujitsu Ltd 記憶装置、制御方法及び制御装置
JP2008090433A (ja) * 2006-09-29 2008-04-17 Toshiba Corp メモリコントローラ、メモリシステム及びデータ転送方法
US8286156B2 (en) * 2006-11-07 2012-10-09 Sandisk Technologies Inc. Methods and apparatus for performing resilient firmware upgrades to a functioning memory
US20080109647A1 (en) * 2006-11-07 2008-05-08 Lee Merrill Gavens Memory controllers for performing resilient firmware upgrades to a functioning memory
US8423794B2 (en) * 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
KR100881052B1 (ko) * 2007-02-13 2009-01-30 삼성전자주식회사 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
EP1973016A1 (de) * 2007-03-19 2008-09-24 Siemens Aktiengesellschaft Verfahren zum Durchführen der Firmware eines Automatisierungsgerätes
US20100122017A1 (en) * 2007-03-28 2010-05-13 Masayuki Toyama Memory controller, non-volatile memory system, and host device
TW200849096A (en) * 2007-06-12 2008-12-16 Realtek Semiconductor Corp Data recovering method
JP5072446B2 (ja) * 2007-06-15 2012-11-14 スパンション エルエルシー 半導体装置及びその制御方法
KR20090030078A (ko) 2007-09-19 2009-03-24 삼성전자주식회사 부트 로딩 동작을 안전하게 수행하기 위한 반도체 메모리장치 및 그것의 부트 로딩 방법
KR101420798B1 (ko) * 2007-11-23 2014-07-17 삼성전자주식회사 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말
US20090172246A1 (en) * 2007-12-26 2009-07-02 Sandisk Il Ltd. Device and method for managing initialization thereof
JP2009187199A (ja) * 2008-02-05 2009-08-20 Panasonic Corp 情報処理システム及び情報処理方法
TWI381387B (zh) * 2008-02-21 2013-01-01 Phison Electronics Corp 儲存裝置、控制器及其資料存取方法
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
WO2009133599A1 (ja) * 2008-04-28 2009-11-05 富士通株式会社 無線通信システムにおける接続処理方法並びに無線基地局及び無線端末
US8281229B2 (en) * 2008-12-30 2012-10-02 Intel Corporation Firmware verification using system memory error check logic
US8375227B2 (en) 2009-02-02 2013-02-12 Microsoft Corporation Abstracting programmatic representation of data storage systems
KR101605875B1 (ko) * 2009-04-03 2016-03-24 삼성전자주식회사 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법
US8751860B2 (en) * 2009-06-03 2014-06-10 Micron Technology, Inc. Object oriented memory in solid state devices
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
TWI442406B (zh) * 2009-07-02 2014-06-21 Silicon Motion Inc 針對一快閃記憶體的控制器之錯誤管理機制來提升驗證效率之方法以及相關之記憶裝置及其控制器
CN101604248B (zh) * 2009-07-20 2012-09-26 北京海尔集成电路设计有限公司 一种修正只读存储器中程序的嵌入式系统及其实现方法
CN102043651B (zh) * 2009-10-22 2013-07-03 鸿富锦精密工业(深圳)有限公司 Nand闪存及其数据更新管理方法
TWI425514B (zh) * 2009-10-29 2014-02-01 Hon Hai Prec Ind Co Ltd Nand快閃記憶體及其資料更新管理方法
KR101090394B1 (ko) * 2009-12-24 2011-12-07 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8443263B2 (en) 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
KR101648531B1 (ko) * 2010-02-12 2016-08-17 삼성전자주식회사 불휘발성 메모리 시스템과 이의 동작 방법
US20120173795A1 (en) * 2010-05-25 2012-07-05 Ocz Technology Group, Inc. Solid state drive with low write amplification
TWI426385B (zh) * 2010-06-29 2014-02-11 Genesys Logic Inc 支援大容量儲存裝置存取之方法與系統
CN101944036B (zh) * 2010-09-27 2013-05-01 苏州光格设备有限公司 一种基于工业监控系统的ria应用的内存优化方法
US9612979B2 (en) * 2010-10-22 2017-04-04 Intel Corporation Scalable memory protection mechanism
US8627141B2 (en) 2011-02-14 2014-01-07 Dell Products L.P. System and method for auto-failover and version matching of bootloader in an access controller
KR101293223B1 (ko) 2011-04-01 2013-08-05 (주)아토솔루션 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법
CN102163158A (zh) * 2011-04-29 2011-08-24 北京凡达讯科技有限公司 一种系统级芯片利用nand闪存启动的方法
TWI447579B (zh) 2011-05-18 2014-08-01 Phison Electronics Corp 程式碼載入與存取方法、記憶體控制器與記憶體儲存裝置
US8886881B2 (en) * 2011-05-24 2014-11-11 International Business Machines Corporation Implementing storage adapter performance optimization with parity update footprint mirroring
CN102800357B (zh) * 2011-05-27 2016-05-18 群联电子股份有限公司 程序码载入与存取方法、存储器控制器与存储器储存装置
JP2012252557A (ja) * 2011-06-03 2012-12-20 Mega Chips Corp メモリコントローラ
JP2011210277A (ja) * 2011-06-20 2011-10-20 Toshiba Corp 情報処理装置および情報処理方法
US8909981B2 (en) 2011-06-21 2014-12-09 Hamilton Sundstrand Corporation Control system software execution during fault detection
US8706955B2 (en) * 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
CN102317920A (zh) * 2011-07-18 2012-01-11 华为技术有限公司 数据处理方法及设备
JP5770557B2 (ja) * 2011-08-02 2015-08-26 Necプラットフォームズ株式会社 情報更生装置、メモリ制御システム、情報更生方法およびコンピュータプログラム
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
KR20130032077A (ko) * 2011-09-22 2013-04-01 에스케이하이닉스 주식회사 설정 데이터 저장회로, 이를 포함하는 비휘발성 메모리 장치 및 메모리 시스템
CN102508742B (zh) * 2011-11-03 2013-12-18 中国人民解放军国防科学技术大学 面向硬件不可恢复内存故障的内核代码软容错方法
US20130166893A1 (en) * 2011-12-23 2013-06-27 Sandisk Technologies Inc. Auxiliary card initialization routine
CN103197750B (zh) * 2012-01-09 2015-10-28 爱思开海力士有限公司 内嵌式记忆卡控制系统及其内嵌式记忆卡
US8954791B2 (en) * 2012-01-18 2015-02-10 Seagate Technology Llc Mirroring disk drive sectors
US9046915B2 (en) * 2012-02-27 2015-06-02 Advanced Micro Devices, Inc. Circuit and method for initializing a computer system
CN102637461B (zh) * 2012-03-07 2014-12-03 山东华芯半导体有限公司 支持坏块闪存扫描的启动方法
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
TWI520148B (zh) * 2012-07-05 2016-02-01 慧榮科技股份有限公司 記憶體裝置和記憶體控制方法
CN104685474B (zh) * 2012-09-25 2018-04-20 慧与发展有限责任合伙企业 用于处理不可纠正的内存错误的方法及非瞬态处理器可读介质
CN102968355A (zh) * 2012-11-13 2013-03-13 浪潮电子信息产业股份有限公司 一种基于Intel-Brickland-EX平台的内存纠错方法
TWI494849B (zh) * 2013-05-06 2015-08-01 Phison Electronics Corp 韌體碼載入方法、記憶體控制器與記憶體儲存裝置
US9116774B2 (en) 2013-05-14 2015-08-25 Sandisk Technologies Inc. Firmware updates for multiple product configurations
US9183086B2 (en) * 2013-06-03 2015-11-10 Sandisk Technologies Inc. Selection of data for redundancy calculation in three dimensional nonvolatile memory
KR20140144989A (ko) * 2013-06-12 2014-12-22 에스케이하이닉스 주식회사 메모리 시스템, 반도체 메모리 장치 및 그것들의 동작 방법
US20150067314A1 (en) * 2013-08-30 2015-03-05 Timothy J. Strauss Secure firmware flash controller
US9177673B2 (en) 2013-10-28 2015-11-03 Sandisk Technologies Inc. Selection of data for redundancy calculation by likely error rate
CN104679622A (zh) * 2013-11-29 2015-06-03 英业达科技有限公司 基本输入输出系统维护方法
TWI484337B (zh) 2014-01-06 2015-05-11 威盛電子股份有限公司 記憶體晶片與資料保護方法
CN103927187B (zh) * 2014-05-09 2017-03-22 金祺创(北京)技术有限公司 嵌入式系统程序执行方法
US9772856B2 (en) * 2014-07-10 2017-09-26 Lattice Semiconductor Corporation System-level dual-boot capability in systems having one or more devices without native dual-boot capability
US9858229B2 (en) * 2014-09-30 2018-01-02 International Business Machines Corporation Data access protection for computer systems
CN104731674B (zh) * 2015-02-02 2020-09-01 北京忆恒创源科技有限公司 使用mlc nvm存储电子系统固件的方法与设备
DE102015203776A1 (de) * 2015-03-03 2016-09-08 Robert Bosch Gmbh Verfahren zur Programmierung eines Steuergeräts eines Kraftfahrzeugs
RU2682387C1 (ru) * 2015-03-09 2019-03-19 Тосиба Мемори Корпорейшн Полупроводниковое запоминающее устройство
US9886285B2 (en) * 2015-03-31 2018-02-06 Western Digital Technologies, Inc. Communication interface initialization
US10157093B2 (en) * 2015-05-27 2018-12-18 Nxp Usa, Inc. Data integrity check within a data processing system
KR102290988B1 (ko) * 2015-06-08 2021-08-19 삼성전자주식회사 불휘발성 메모리 모듈 및 그것의 동작 방법
US10055236B2 (en) * 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
US9401216B1 (en) 2015-09-22 2016-07-26 Sandisk Technologies Llc Adaptive operation of 3D NAND memory
US9691473B2 (en) 2015-09-22 2017-06-27 Sandisk Technologies Llc Adaptive operation of 3D memory
US9952925B2 (en) * 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
JP6723863B2 (ja) * 2016-08-01 2020-07-15 オリンパス株式会社 組み込みシステム、撮影機器及びリフレッシュ方法
US10423487B2 (en) * 2016-08-19 2019-09-24 Samsung Electronics Co., Ltd. Data protection offloads using SSD peering
FR3055714B1 (fr) * 2016-09-08 2018-09-28 Continental Automotive France Procede de correction d'erreur dans une memoire flash
JP2018067072A (ja) * 2016-10-18 2018-04-26 東芝メモリ株式会社 半導体記憶装置及びその制御方法
KR101886176B1 (ko) * 2016-10-25 2018-08-08 시큐리티플랫폼 주식회사 소유자만 기록 가능한 부트영역을 포함하는 저장장치
TWI646551B (zh) * 2017-05-10 2019-01-01 慧榮科技股份有限公司 儲存裝置、記錄方法以及預載方法
CN108877856B (zh) 2017-05-10 2021-02-19 慧荣科技股份有限公司 储存装置、记录方法以及预载方法
TW201913391A (zh) * 2017-09-01 2019-04-01 慧榮科技股份有限公司 快閃記憶體裝置的重新啟動方法以及使用該方法的裝置
KR20190029316A (ko) * 2017-09-12 2019-03-20 에스케이하이닉스 주식회사 마이크로 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작방법
US11537389B2 (en) 2017-12-12 2022-12-27 Infineon Technologies LLC Memory devices, systems, and methods for updating firmware with single memory device
US10552145B2 (en) * 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device
TWI659306B (zh) * 2018-01-10 2019-05-11 英屬開曼群島商捷鼎創新股份有限公司 卷搬移中執行資料讀寫的方法及電子裝置
KR102549346B1 (ko) * 2018-07-24 2023-06-28 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메타 데이터 액세스 방법
KR20200019444A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
CN109284135B (zh) * 2018-09-07 2022-02-01 深圳市航顺芯片技术研发有限公司 一种简捷调用微控制器内部启动程序的方法
JP7074020B2 (ja) 2018-10-24 2022-05-24 Tdk株式会社 メモリコントローラ、及びメモリシステム
JP7143735B2 (ja) 2018-11-15 2022-09-29 Tdk株式会社 メモリコントローラ、及びメモリシステム
CN109634676B (zh) * 2018-12-12 2021-10-26 深圳忆联信息系统有限公司 基于主控芯片的nand boot启动方法和装置
US10896033B2 (en) 2018-12-31 2021-01-19 Micron Technology, Inc. Configurable NAND firmware search parameters
JP2020154540A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム及び制御システム
US11288373B2 (en) * 2019-04-11 2022-03-29 Baidu Usa Llc Boot failure recovery scheme for hardware-based system of autonomous driving vehicles
FR3099607B1 (fr) * 2019-07-30 2021-11-05 Stmicroelectronics Grand Ouest Sas Composant électronique à micrologiciel
US11822930B2 (en) * 2019-07-31 2023-11-21 Hewlett Packard Enterprise Development Lp Electrically programmable application-specific integrated circuit initialization engine
CN111209137B (zh) * 2020-01-06 2021-09-17 支付宝(杭州)信息技术有限公司 数据访问控制方法及装置、数据访问设备及系统
JP7395388B2 (ja) * 2020-03-06 2023-12-11 キオクシア株式会社 メモリシステム及びその制御方法
US11422896B2 (en) * 2020-03-27 2022-08-23 Intel Corporation Technology to enable secure and resilient recovery of firmware data
US11500719B1 (en) * 2020-03-31 2022-11-15 Amazon Technologies, Inc. Reliability improvements for memory technologies
TWI749704B (zh) * 2020-08-13 2021-12-11 群聯電子股份有限公司 韌體碼的執行方法、記憶體儲存裝置及記憶體控制電路單元
JP2022051374A (ja) * 2020-09-18 2022-03-31 キオクシア株式会社 半導体記憶装置及び半導体記憶装置の動作制御プログラムの書き込み方法
US20210110043A1 (en) * 2020-12-23 2021-04-15 Intel Corporation Platform firmware boot mechanism
CN116737181A (zh) * 2023-04-26 2023-09-12 珠海妙存科技有限公司 通用闪存存储芯片及烧录方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US6665813B1 (en) * 2000-08-03 2003-12-16 International Business Machines Corporation Method and apparatus for updateable flash memory design and recovery with minimal redundancy

Family Cites Families (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US560660A (en) * 1896-05-26 Wheel
JPS6048769B2 (ja) * 1978-05-23 1985-10-29 株式会社東芝 ロ−デイング方式
JPS5760409A (en) * 1980-09-30 1982-04-12 Fanuc Ltd Loading system of numerical control device
US4439837A (en) * 1981-06-16 1984-03-27 Ncr Corporation Non-volatile memory system for intelligent terminals
US4590557A (en) * 1983-09-12 1986-05-20 Pitney Bowes Inc. Method and apparatus for controlling software configurations in data processing systems
JPS60186935A (ja) * 1984-03-05 1985-09-24 Nec Corp マイクロプログラムロ−ド方式
JPS61151744A (ja) * 1984-12-26 1986-07-10 Hitachi Ltd マイクロプログラムロ−ド時の障害回復方式
CA1242809A (en) * 1985-12-20 1988-10-04 Mitel Corporation Data storage system
US4910666A (en) * 1986-12-18 1990-03-20 Bull Hn Information Systems Inc. Apparatus for loading and verifying a control store memory of a central subsystem
US4914576A (en) * 1986-12-18 1990-04-03 Bull Hn Information Systems Inc. Apparatus and method of loading a control store memory of a central subsystem
US5172328A (en) * 1988-04-01 1992-12-15 Restaurant Technology, Inc. Food preparation system and method
US5095344A (en) * 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5043940A (en) * 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5148516A (en) * 1988-08-30 1992-09-15 Hewlett-Packard Company Efficient computer terminal system utilizing a single slave processor
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5003591A (en) * 1989-05-25 1991-03-26 General Instrument Corporation Functionally modifiable cable television converter system
CA2010122A1 (en) * 1989-06-21 1990-12-21 Makoto Sakamoto Integrated circuit including programmable circuit
EP0489204B1 (en) * 1990-12-04 1995-08-16 Hewlett-Packard Limited Reprogrammable data storage device
US5343063A (en) * 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5268928A (en) * 1991-10-15 1993-12-07 Racal-Datacom, Inc. Data modem with remote firmware update
JPH05204770A (ja) * 1991-10-17 1993-08-13 Nec Corp メモリエラーリカバリ方法
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5313421A (en) * 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US5532962A (en) * 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) * 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JPH06119230A (ja) * 1992-10-06 1994-04-28 Fujitsu Ltd 半導体記憶装置
US5379342A (en) * 1993-01-07 1995-01-03 International Business Machines Corp. Method and apparatus for providing enhanced data verification in a computer system
JPH06347277A (ja) * 1993-06-04 1994-12-20 Sumitomo Electric Ind Ltd ナビゲーション装置
US5555204A (en) * 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5570032A (en) * 1993-08-17 1996-10-29 Micron Technology, Inc. Wafer scale burn-in apparatus and process
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) * 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
JPH07302175A (ja) * 1994-05-09 1995-11-14 Toshiba Corp 半導体ディスク装置
US5606660A (en) 1994-10-21 1997-02-25 Lexar Microsystems, Inc. Method and apparatus for combining controller firmware storage and controller logic in a mass storage system
EP0709782B1 (en) 1994-10-25 1999-03-03 Hewlett-Packard Company Error detection system and method for mirrored memory between dual disk storage controllers
JPH09160834A (ja) * 1995-12-01 1997-06-20 Mitsubishi Electric Corp フラッシュメモリを用いた計算機
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5960445A (en) 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
JP3904099B2 (ja) * 1996-04-24 2007-04-11 ソニー株式会社 情報処理装置、プログラム更新方法、および、情報処理システム
US5819087A (en) * 1996-07-19 1998-10-06 Compaq Computer Corporation Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events
US5793943A (en) * 1996-07-29 1998-08-11 Micron Electronics, Inc. System for a primary BIOS ROM recovery in a dual BIOS ROM computer system
JP3773607B2 (ja) * 1996-11-28 2006-05-10 Necエレクトロニクス株式会社 フラッシュeeprom内蔵マイクロコンピュータ
JPH1131102A (ja) * 1997-07-14 1999-02-02 Toshiba Corp データ記憶システム及び同システムに適用するアクセス制御方法
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
EP0905704B1 (en) 1997-09-24 2010-03-31 STMicroelectronics S.r.l. Sectored semiconductor memory device with configurable memory sector addresses
JP2914360B2 (ja) * 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
KR100248757B1 (ko) * 1997-12-20 2000-03-15 윤종용 손상된 롬 바이오스 복구 방법
JP3968876B2 (ja) * 1998-06-26 2007-08-29 株式会社デンソー 電子制御装置
JP2000173289A (ja) * 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6301656B1 (en) * 1999-01-11 2001-10-09 Alcatel Usa Sourcing, L.P. Method and apparatus for initial programming of flash based firmware
US6282145B1 (en) 1999-01-14 2001-08-28 Silicon Storage Technology, Inc. Array architecture and operating methods for digital multilevel nonvolatile memory integrated circuit system
JP2001027953A (ja) * 1999-07-15 2001-01-30 Mitsubishi Electric Corp 半導体記憶装置
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
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US7165137B2 (en) 2001-08-06 2007-01-16 Sandisk Corporation System and method for booting from a non-volatile application and file storage device
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP3816788B2 (ja) * 2001-11-22 2006-08-30 株式会社東芝 不揮発性半導体記憶装置
WO2003065210A1 (fr) * 2002-01-31 2003-08-07 Matsushita Electric Industrial Co., Ltd. Appareil de traitement d'informations, appareil de gestion de memoire, procede de gestion de memoire et procede de traitement d'informations
JP2003242044A (ja) * 2002-02-18 2003-08-29 Hitachi Kokusai Electric Inc マイクロコンピュータ回路
US7234052B2 (en) 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
TWI228220B (en) * 2002-03-08 2005-02-21 Samsung Electronics Co Ltd System boot using NAND flash memory and method thereof
US7080245B2 (en) * 2002-05-23 2006-07-18 Hewlett-Packard Development Company, L.P. Method and system of switching between two or more images of firmware on a host device
US7082525B2 (en) * 2002-10-02 2006-07-25 Sandisk Corporation Booting from non-linear memory
US7039799B2 (en) * 2002-10-31 2006-05-02 Lsi Logic Corporation Methods and structure for BIOS reconfiguration
US7043664B1 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Firmware recovery
US7089414B2 (en) * 2003-04-10 2006-08-08 International Business Machines Corporation Method and apparatus for updating a microcode image in a memory
US7363484B2 (en) * 2003-09-15 2008-04-22 Hewlett-Packard Development Company, L.P. Apparatus and method for selectively mapping proper boot image to processors of heterogeneous computer systems
US20050081090A1 (en) * 2003-09-29 2005-04-14 Giga-Byte Technology Co., Ltd. Method for automatically and safely recovering BIOS memory circuit in memory device including double BIOS memory circuits
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7594135B2 (en) 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US6665813B1 (en) * 2000-08-03 2003-12-16 International Business Machines Corporation Method and apparatus for updateable flash memory design and recovery with minimal redundancy

Also Published As

Publication number Publication date
EP1700207A1 (en) 2006-09-13
TWI272536B (en) 2007-02-01
CN1902583B (zh) 2010-05-12
CN1902583A (zh) 2007-01-24
EP1700207B1 (en) 2016-07-27
KR20070003808A (ko) 2007-01-05
US7594135B2 (en) 2009-09-22
US20090254776A1 (en) 2009-10-08
EP1700207B8 (en) 2016-09-14
TW200601151A (en) 2006-01-01
US20050160217A1 (en) 2005-07-21
JP4933268B2 (ja) 2012-05-16
JP2007518166A (ja) 2007-07-05
US7962777B2 (en) 2011-06-14
WO2005066773A1 (en) 2005-07-21

Similar Documents

Publication Publication Date Title
KR101029938B1 (ko) 플래시 메모리 시스템 개시 동작
US7813187B2 (en) Multi-bit flash memory device and program method thereof
US9098428B2 (en) Data recovery on cluster failures and ECC enhancements with code word interleaving
US8887011B2 (en) Erased page confirmation in multilevel memory
US8125825B2 (en) Memory system protected from errors due to read disturbance and reading method thereof
US5200959A (en) Device and method for defect handling in semi-conductor memory
US8533562B2 (en) Data protection after possible write abort or erase abort
US8694855B1 (en) Error correction code technique for improving read stress endurance
US7447936B2 (en) Nonvolatile memory system
US8069382B2 (en) Memory cell programming
KR20100033507A (ko) 새로운 불량 블록 검출
US9471418B2 (en) Memory system that detects bit errors due to read disturbance and methods thereof
US20060143368A1 (en) Method for using a multi-bit cell flash device in a system not designed for the device
US20080072119A1 (en) Allowable bit errors per sector in memory devices
US7970984B2 (en) Method for using a multi-bit cell flash device in a system not designed for the device
US7313648B2 (en) Corruption tolerant method and system for deploying and modifying data in flash memory

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140319

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160401

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 7