KR20120021210A - 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 - Google Patents
불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 Download PDFInfo
- Publication number
- KR20120021210A KR20120021210A KR1020110084763A KR20110084763A KR20120021210A KR 20120021210 A KR20120021210 A KR 20120021210A KR 1020110084763 A KR1020110084763 A KR 1020110084763A KR 20110084763 A KR20110084763 A KR 20110084763A KR 20120021210 A KR20120021210 A KR 20120021210A
- Authority
- KR
- South Korea
- Prior art keywords
- nvm
- error
- electronic device
- memory
- volatile memory
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 claims abstract description 46
- 230000008569 process Effects 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 9
- 230000015556 catabolic process Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0787—Storage of error reports, e.g. persistent data storage, storage using memory protection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Retry When Errors Occur (AREA)
Abstract
불휘발성 메모리("NVM")로부터 디바이스 부트업 동안 에러들을 핸들링(handling)하기 위해 시스템들 및 방법들이 제공된다. 전자 디바이스의 NVM 인터페이스는 디바이스가 부트업되고 있는 동안 에러들을 검출하고 휘발성 메모리에 에러 로그를 유지하도록 구성될 수 있다. 일단 디바이스 부트업이 완료되었다면, 전자 디바이스의 NVM 드라이버는 에러 로그를 이용하여 검출된 에러들을 정정하도록 구성될 수 있다. 예를 들어, 전자 디바이스는 데이터를 더 신뢰성 있는 블록들로 이동하고 및/또는 고장에 가까운 블록들을 폐기할 수 있으므로, 전체 디바이스 신뢰성을 향상시킬 수 있다.
Description
NAND 플래시 메모리 및 다른 타입의 불휘발성 메모리들(non-volatile memories; "NVMs")은 보통 대용량 저장을 위해 전자 디바이스들에 이용된다. 예를 들어, 포터블 미디어 플레이어들과 같은 소비자 전자제품들은 종종 음악, 비디오들, 및 다른 미디어 프로그램들을 저장하기 위해 NAND 플래시 메모리를 포함한다.
전자 디바이스가 전력 공급을 받거나 재부팅될 때, 오퍼레이팅 시스템은 전자 디바이스의 NVM으로부터 부트업(boot up)될 수 있다. 오퍼레이팅 시스템의 부트업은 다수의 스테이지들에서 진행할 수 있다. 예를 들어, 전자 디바이스는 먼저 NVM 또는 마스크 판독 전용 메모리(read-only memory; "ROM")로부터 휘발성 메모리로 부트로더(bootloader)를 로드(load)하도록 구성될 수 있다. 전자 디바이스는 그 다음에 부트로더를 이용하여 오퍼레이팅 시스템 및 연관된 펌웨어를 NVM으로부터 휘발성 메모리로 로드할 수 있다.
일부 상황들에서, NVM에서의 에러들은 디바이스가 부트업되고 있는 동안에 일어날 수 있다. 이러한 에러들이 정정되지 않은 채로 남는 경우, 이들 에러들은 데이터 손실을 가져오거나 디바이스를 동작불가능하게 할 수 있다.
NAND 플래시 메모리와 같은 불휘발성 메모리("NVM")로부터 디바이스 부트업 동안 에러들을 핸들링(handling)하기 위해 시스템들 및 방법들이 제공된다. 전자 디바이스는 디바이스가 오직 NVM으로부터 데이터를 판독할 수 있을 때 디바이스 부트업 동안 에러 통지들을 계속 파악하기 위하여 휘발성 메모리 내의 에러 로그를 이용할 수 있다. 예를 들어, 전자 디바이스가 NVM으로부터 부트업되고 있는 동안, 디바이스의 NVM 인터페이스는 에러들을 검출하고 에러 로그에 하나 이상의 에러 통지들을 저장할 수 있다. 그 다음, 일단 디바이스가 부팅을 완료했고 디바이스에의 기입들(writes)이 가능한 상태에 도달했다면, 디바이스의 NVM 드라이버는 에러 로그를 이용하여 앞서 검출된 에러들을 정정하도록 구성될 수 있다.
본 발명의 상기한 및 다른 양태들 및 이점들은 첨부 도면들과 함께 다음의 상세한 설명을 고려하면 더욱 명백해질 것이며, 첨부 도면들에서 유사한 참조 문자들은 도면 전체에 걸쳐서 유사한 부분들을 가리킨다.
도 1은 본 발명의 다양한 실시예들에 따라 구성된 전자 디바이스의 예시적인 블록도.
도 2는 본 발명의 다양한 실시예들에 따른 전자 디바이스 부트업의 그래픽도면.
도 3은 본 발명의 다양한 실시예들에 따른 디바이스 부트업 동안 에러들을 핸들링하기 위한 예시적인 프로세스의 흐름도.
도 2는 본 발명의 다양한 실시예들에 따른 전자 디바이스 부트업의 그래픽도면.
도 3은 본 발명의 다양한 실시예들에 따른 디바이스 부트업 동안 에러들을 핸들링하기 위한 예시적인 프로세스의 흐름도.
불휘발성 메모리("NVM")로부터 디바이스 부트업 동안 에러들을 핸들링하기 위한 시스템들 및 방법들이 제공된다. 펌웨어 고장(failure)을 방지하고 데이터 손실을 피하기 위해서, 전자 디바이스의 NVM 인터페이스는 디바이스가 부트업되고 있는 동안 에러들을 검출하고 에러 로그를 휘발성 메모리에 유지하도록 구성될 수 있다. 이 스테이지 동안, 전자 디바이스는 판독 전용 콘텍스트(read-only context)에서 동작하고 있을 수 있다. 본원에서 이용되는 바와 같이, "판독 전용 콘텍스트"는 전자 디바이스가 NVM에의 기입들을 수행할 수 없고, 후속하여 또한 NVM에서 검출된 임의의 에러들을 정정할 수 없는 동작 상태를 가리킬 수 있다.
다음으로, 일단 전자 디바이스가 기입가능 콘텍스트에 진입하였다면(예를 들어, 디바이스 부트업이 완료되었다면), 전자 디바이스의 NVM 드라이버는 에러 로그를 이용하여 검출된 에러들을 정정하도록 구성될 수 있다. 본원에서 이용되는 바와 같이, "기입가능 콘텍스트"는 전자 디바이스의 하나 이상의 컴포넌트들이 NVM에의 기입 동작들을 수행할 수 있는 동작 상태를 가리킬 수 있다.
따라서, 일단 디바이스가 기입가능 콘텍스트에 진입하였다면, NVM 드라이버는 데이터를 더 신뢰성 있는 블록들로 이동시키고 및/또는 고장에 가까운 블록들을 폐기할 수 있다. 따라서, 디바이스에 저장된 펌웨어는 임의의 업데이트들을 요구하지 않고 더 긴 시간 기간(period of time) 동안 이용될 수 있고, 치명적 에러들의 발생이 또한 감소될 수 있다.
도 1은 전자 디바이스(100)의 블록도를 예시한다. 일부 실시예들에서, 전자 디바이스(100)는 포터블 미디어 플레이어(예를 들어, 캘리포니아주 쿠퍼티노의 Apple Inc.에 의해 이용가능하게 된 iPod™), 셀룰러 전화기(예를 들어, Apple Inc.에 의해 이용가능하게 된 iPhone™), 포켓 크기의 개인용 컴퓨터, PDA(personal digital assistance), 데스크톱 컴퓨터, 랩톱 컴퓨터, 및 임의의 다른 적합한 타입의 전자 디바이스일 수 있거나 또는 그것들을 포함할 수 있다.
전자 디바이스(100)는 시스템 온 칩(system-on-a-chip; "SoC")(110) 및 불휘발성 메모리("NVM")(120)를 포함할 수 있다. NVM(120)은 부동 게이트 또는 전하 트래핑(charge trapping) 기술에 기초한 NAND 플래시 메모리, NOR 플래시 메모리, EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory), FRAM(Ferroelectric RAM), MRAM(magnetoresistive RAM) 또는 그의 임의의 조합을 포함할 수 있다.
NVM(120)은 최소 소거가능 유닛인 "블록들"로 조직될 수 있고, 또한 프로그램 또는 판독될 수 있는 최소 유닛일 수 있는 "페이지들"로 조직될 수 있다. 일부 실시예들에서, NVM(120)은 복수의 집적 회로들을 포함할 수 있고, 각각의 집적 회로는 복수의 블록들을 가질 수 있다. 대응하는 집적 회로들로부터의 블록들(예를 들어, 동일한 위치 또는 블록 번호를 갖는 블록들)은 "수퍼블록들(super blocks)"을 형성할 수 있다. NVM(120)의 각각의 메모리 장소(예를 들어, 페이지 또는 블록)는 물리적 어드레스(예를 들어, 물리적 페이지 어드레스 또는 물리적 블록 어드레스)를 이용하여 참조될 수 있다.
시스템 온 칩(System-on-a-chip; "SoC")(110)은 SoC 제어 회로(112), 메모리(114), 및 NVM 인터페이스(116)를 포함할 수 있다. SoC 제어 회로(112)는 SoC(110) 및 SoC(110) 또는 디바이스(100)의 다른 컴포넌트들의 일반적인 동작들 및 기능들을 제어할 수 있다. 예를 들어, 사용자 입력들 및/또는 애플리케이션 또는 오퍼레이팅 시스템의 명령어들에 응답하여, SoC 제어 회로(112)는 NVM(120)으로부터 데이터를 취득하거나 NVM(120)에 데이터를 저장하기 위해 NVM 인터페이스(116)에 판독 또는 기입 커맨드들을 발행할 수 있다. 명료함을 위해, SoC 제어 회로(112)가 저장 또는 검색을 위해 요청할 수 있는 데이터는 "사용자 데이터"라고 지칭될 수 있지만, 데이터는 사용자 또는 사용자 애플리케이션과 직접 연관되지 않을 수 있다. 오히려, 사용자 데이터는 (예를 들어, 애플리케이션 또는 오퍼레이팅 시스템을 통해) SoC 제어 회로(112)에 의해 생성 또는 취득된 디지털 정보의 임의의 적합한 시퀀스일 수 있다.
SoC 제어 회로(112)는 하드웨어, 소프트웨어, 및 펌웨어의 임의의 조합, 그리고 전자 디바이스(100)의 기능을 구동하도록 동작하는 임의의 컴포넌트들, 회로, 또는 로직을 포함할 수 있다. 예를 들어, SoC 제어 회로(112)는 NVM(120) 또는 메모리(114)에 저장된 소프트웨어/펌웨어의 제어하에서 동작하는 하나 이상의 프로세서를 포함할 수 있다. SoC 제어 회로(112)는 애플리케이션, 오퍼레이팅 시스템, NVM 드라이버(117), 또는 메모리(114)에 로드된 부트로더와 같은 프로그램의 제어하에서 동작할 수 있다.
메모리(114)는 RAM(random access memory)(예를 들어, SRAM(static RAM), DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory), DDR(double-data-rate) RAM), 캐시 메모리, ROM(read-only memory), 또는 그의 임의의 조합과 같은 임의의 적합한 타입의 휘발성 메모리를 포함할 수 있다. 메모리(114)는 불휘발성 메모리(120)로부터 판독하거나 불휘발성 메모리(120)로 프로그램하기 위한 사용자 데이터를 일시적으로 저장할 수 있는 데이터 소스를 포함할 수 있다. 일부 실시예들에서, 메모리(114)는 SoC 제어 회로(112)의 부분으로서 구현된 임의의 프로세서들을 위한 메인 메모리로서 작용할 수 있다. 또한, 메모리(114)의 하나 이상의 부분은 디바이스 부트업 동안 이용되는 에러 로그, 오퍼레이팅 시스템, 및 연관된 펌웨어 및 커널을 저장하는 데 이용될 수 있다.
NVM 인터페이스(116)는 NVM(120)과 오퍼레이팅 시스템, 애플리케이션, 부트로더, 또는 SoC 제어 회로(112)에 의해 실행되는 다른 비-메모리-특정 또는 비-벤더-특정 프로그램들 사이의 인터페이스 또는 드라이버로서 작용하도록 구성되는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 적절한 조합을 포함할 수 있다. NVM 인터페이스(116)에 포함되는 임의의 소프트웨어 모듈들에 대해, 대응하는 프로그램 코드가 NVM(120) 또는 메모리(114)에 저장될 수 있다.
NVM 인터페이스(116)는 SoC 제어 회로(112)가 NVM(120)에 액세스하고 NVM(120)의 메모리 장소들(예를 들어, 페이지들, 블록들, 수퍼블록들, 집적 회로들) 및 거기에 저장된 데이터(예를 들어, 사용자 데이터)를 관리할 수 있게 하는 다양한 기능을 수행할 수 있다. 예를 들어, NVM 인터페이스(116)는 SoC 제어 회로(112)로부터의 판독 또는 기입 커맨드들을 해석하고, 웨어 레벨링(wear leveling)을 수행하고, NVM(120)의 버스 프로토콜과 양립될 수 있는 판독 및 프로그램 명령어들을 생성할 수 있다.
NVM 인터페이스(116)는 NVM 드라이버(117) 및 버스 컨트롤러(118)를 포함할 수 있다. NVM 드라이버(117)는 프로그램으로부터 메모리 액세스 커맨드들을 해석하기 위한 NVM-특정 또는 벤더-특정 소프트웨어 및/또는 펌웨어를 포함할 수 있다. 일부 실시예들에서, NVM 드라이버(117)는 NVM(120)의 상이한 부분들에 대해 액세스를 제공하는 복수의 소프트웨어 모듈들 또는 드라이버들을 포함할 수 있다. 예를 들어, NVM 드라이버(117)는 파일 시스템을 통해 NVM(120)의 메모리 장소들의 적어도 일부에 대해 액세스를 제공하기 위한 블록 디바이스 드라이버를 포함할 수 있다. 또한, NVM 드라이버(117)는 NVM(120)의 다른 메모리 장소들에 저장된 불휘발성 프리-부트 정보(예를 들어, 부트업 동안 전자 디바이스(100)에 의해 이용되는 정보)에 대해 액세스를 제공하기 위한 별개의 불휘발성 프리-부트 스토리지 드라이버(separate non-volatile pre-boot storage driver)(예를 들어, 마스크 ROM)를 포함할 수 있다.
NVM 드라이버(117)는 예를 들어 오퍼레이팅 시스템과 NVM(120) 사이의 계층화된(layered) 소프트웨어 인터페이스를 제공하기 위해 다양한 소프트웨어 모듈들 또는 드라이버들을 더 포함할 수 있다. NVM 드라이버(117)는 NVM(120)과 인터페이스하고 NVM 드라이버(117)의 고레벨 소프트웨어 모듈들, 오퍼레이팅 시스템, 및 임의의 애플리케이션들로부터 NVM(120)의 상세들을 애브스트랙트(abstract)하는 저레벨 소프트웨어 모듈들을 포함할 수 있다. 저레벨 소프트웨어 모듈들은 예를 들어, NVM(120)의 블록들을 고레벨 소프트웨어 모듈들에 의한 사용을 위한 수퍼 블록들로 그룹화하는 드라이버들을 포함할 수 있다. 저레벨 소프트웨어 모듈들은 또한 불휘발성 프리-부트 스토리지 드라이버를 포함할 수 있다.
일부 실시예들에서, NVM 드라이버(117)는 판독 전용 콘텍스트에서 구성될 수 있고, 여기서 드라이버(117)는 NVM(120)에 대해 판독 전용 액세스를 제공할 수 있다. 판독 전용 콘텍스트는 더 작은 소프트웨어 모듈들 및 더 빠른 속도들을 허용한다. 따라서, 이 콘텍스트는 디바이스 부트업들 동안 이용될 수 있고, 여기서 NVM(120)에의 기입들은 일반적으로 불필요하다. 다른 실시예들에서, NVM 드라이버(117)는 기입가능 콘텍스트에서 구성될 수 있고, 여기서 NVM 드라이버(117)는 버스 컨트롤러(118)에 NVM(120)에의 하나 이상의 기입들을 수행하도록 지시할 수 있다. 특히, 기입가능 콘텍스트에서 동작하고 있는 동안, NVM 드라이버(117)는 전자 디바이스(100)의 기입가능 콘텍스트를 위해 컴파일되는 소프트웨어 모듈들을 실행할 수 있다.
버스 컨트롤러(118)는 NVM 드라이버(117)가 NVM(120)의 버스 사양들(예를 들어, 데이터 레이트)을 이용하여 NVM(120)에 액세스할 수 있게 하는 임의의 적절한 하드웨어 컴포넌트들을 포함할 수 있다. 도 1에 도시되지 않은 일부 실시예들에서, NVM 드라이버(117) 및/또는 버스 컨트롤러(118)는 플래시 메모리 드라이브에서와 같은, NVM(120)을 위한 별개의 메모리 컨트롤러(예를 들어, 플래시 컨트롤러)에 구현될 수 있다. 이들 실시예들에서, SoC(110) 또는 SoC 제어 회로(112)는 호스트 컨트롤러로서 작용할 수 있다. 예를 들어, 호스트 컨트롤러로서, SoC(110)는 NVM(120)에 판독 및 기입 요청들을 발행할 수 있다.
NVM 인터페이스(116) 및 SoC 제어 회로(112)는 별개의 모듈들로서 도시되지만, 이것은 단지 본 발명의 실시예들의 설명을 간단하게 하도록 의도된다. 이들 모듈들은 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들, 또는 둘다를 공유할 수 있음을 이해해야 한다. 예를 들어, SoC 제어 회로(112)는 NVM 인터페이스(116)를 위한 소프트웨어 기반 메모리 드라이버를 실행할 수 있다.
전자 디바이스(100)의 파워-업(power-up) 또는 재부트(reboot) 시, 부트로더는 NVM(120)으로부터 메모리(114)로 로드될 수 있다. 전자 디바이스(100)는 그 다음에 부트로더를 이용하여 데이터(예를 들어, 오퍼레이팅 시스템 및 연관된 펌웨어 및 커널)를 NVM(120)으로부터 메모리(114)로 로드할 수 있다.
부트로더가 NVM(120)의 하나 이상의 블록에 저장된 데이터를 메모리(114)에 판독하고 로드하고 있는 동안, 그들의 블록들 중 일부에서 에러들이 검출될 수 있다. 예를 들어, 일부 에러들은 비-치명적 에러들(예를 들어, 하나 이상의 리프레시 통지들의 발행에 의해 표시됨)일 수 있고, 다른 에러들은 치명적 에러들(예를 들어, 하나 이상의 정정 불가능한 에러 정정 코딩(uncorrectable error correction coding; "uECC") 통지들의 발행에 의해 표시됨)일 수 있다.
몇개의 인자들은 이들 에러들이 디바이스(100)에 의해 정정되지 않게 할 수 있다. 한 인자는, 데이터가 부트로더에 의해 판독되고 있을 때, 디바이스(100)가 에러들이 정정될 수 없는 판독 전용 콘텍스트에서 동작할 수 있다는 것이다. 앞서 언급한 바와 같이, "판독 전용 콘텍스트"는 전자 디바이스가 NVM에의 기입들을 수행할 수 없고 후속하여 NVM에서 검출된 임의의 에러들을 정정할 수 없는 동작의 상태를 가리킬 수 있다.
다른 인자는, 검출된 에러들 중 일부가 일시적일 수 있다는 것이다. 예를 들어, 디바이스 부트업 동안, 전자 디바이스(100)는 리프레시 동작이 특정 페이지 또는 블록에서 수행될 필요가 있음을 표시하는 하나 이상의 리프레시 통지들을 수신할 수 있다. 그러나, 그 페이지 또는 블록의 후속 판독들에서, 디바이스(100)는 임의의 부가적인 리프레시 통지들을 수신할 수 없을 수 있다. 그럼에도 불구하고, 리프레시 동작은 페이지 또는 블록에서 여전히 수행되어야 한다.
또한, 로드되고 있는 데이터가 부트로더에 의해서만 판독되기 때문에, 디바이스(100)는 일단 디바이스(100)가 부트업을 완료했다면 이들 에러들을 재검출할 수 없을 수 있다. 따라서, 이들 에러들은 디바이스 부트업이 완료된 후에 정정되지 않은 채로 남을 수 있다.
결과로서, 이들 에러들은 (예를 들어, NVM(120)에서 하나 이상의 블록들을 폐기하거나 저장된 데이터를 상이한 블록들로 이동함으로써) 가능한 한 빨리 정정되는 것이 바람직하지만, 디바이스(100)는 (예를 들어, 하나 이상의 치명적 에러들로 인해) 펌웨어가 로드를 실패할 때까지 동작을 계속할 수 있다. 그 다음에 이것은 디바이스(100)에 수행되도록 강제 복원(force restore)을 요구할 수 있다.
강제 복원의 완료후에도, 원래의 에러들은 여전히 정정되지 않은 채로 남아있을 수 있다. 특히, 강제 복원 동안, 새로운 펌웨어가 NVM(120)에 기입될 수 있다. 일부 경우들에서, 오래된 펌웨어가 저장되었던 동일한 블록들에 새로운 펌웨어가 기입될 수 있다. 일반적으로, 새로운 펌웨어를 NVM(120)에 기입하기 전에 디바이스(100)가 오래된 펌웨어를 판독하고 검사하기 위한 프로토콜이 존재하지 않기 때문에 디바이스(100)는 원래의 에러들을 재검출하지 않을 수 있다.
하나의 가능한 해결책은, 부트업 프로세스가 완료된 후에 전자 디바이스(100)가 메모리(114)에 저장된 펌웨어를 재입증하는 것이다. 그렇더라도, 이러한 접근법을 이용하면, 디바이스(100)는 일시적인 비-치명적 에러들을 재검출할 수 없을 수 있다. 또한, 이러한 접근법은 디바이스(100)가 완전 기능(fully functional)될 때 데이터를 판독하는 시간을 낭비하기 때문에 디바이스 성능에 악영향을 미칠 수 있다.
따라서, 펌웨어 고장을 방지하고 데이터 손실을 피하기 위해서, NVM 인터페이스(116)는 디바이스 부트업 동안 에러들을 검출하고 에러 로그를 유지하도록 구성될 수 있다. 일단 디바이스(100)가 기입가능 콘텍스트에 진입했다면(예를 들어, 디바이스 부트업이 완료되었다면), NVM 드라이버(117)는 에러 로그를 이용하여 검출된 에러들을 정정하도록 구성될 수 있다. 예를 들어, NVM 드라이버(117)는 데이터를 더 신뢰성 있는 블록들로 이동하고 및/또는 고장에 가까운 블록들을 폐기할 수 있으므로, 전체 디바이스 신뢰성을 향상시킨다. 앞서 언급한 바와 같이, "기입가능 콘텍스트"는 전자 디바이스의 하나 이상의 컴포넌트들이 NVM에의 기입 동작들을 수행할 수 있는 동작 상태를 가리킬 수 있다.
이제 도 2를 참조하면, 전자 디바이스 부트업의 예시적인 그래픽 도면(200)이 도시된다. 메모리(214)는 메모리(114)(도 1)와 동일하거나 유사할 수 있다. 마찬가지로, NVM(220)은 NVM(120)(도 1)와 동일하거나 유사할 수 있다.
도 2에 도시된 메모리(214)의 부분들(230-234)은 단지 예시적인 것임을 이해해야 한다. 예를 들어, 각각의 부분의 도시된 크기는 예시적이며, 실시예들을 도시된 크기로 한정하는 것으로서 보아서는 안된다. 또한, 부분들의 순서는 임의의 적절한 순서로 재배열될 수 있다는 것을 이해해야 한다.
일부 실시예들에서, 전자 디바이스(예를 들어, 도 1의 전자 디바이스(100))의 오퍼레이팅 시스템은 전자 디바이스의 파워-업 또는 재부트 동안 NVM(220)으로부터 부트업될 수 있다. 도 2에 도시된 바와 같이, 예를 들어, 시간 기간 T1 동안 디바이스의 파워-업 또는 재부트시에, 부트로더(230)는 NVM 인터페이스(예를 들어, 도 1의 NVM 인터페이스(116))를 통해 NVM(220)으로부터 휘발성 메모리(214)로 로드될 수 있다.
시간 기간 T2 동안, 부트로더(230)는 오퍼레이팅 시스템 및 연관된 데이터를 메모리(214)에 로드하도록 구성될 수 있다. 예를 들어, 오퍼레이팅 시스템에 부가하여, NVM 인터페이스는 또한 커널 및 펌웨어를 로드할 수 있고, 이것은 오퍼레이팅 시스템을 구성하도록 이용될 수 있고 및/또는 오퍼레이팅 시스템에 의해 시작(start up)하는 데 이용될 수 있다. 특히, NVM 인터페이스는 NVM의 하나 이상의 메모리 장소(예를 들어, 하나 이상의 블록)로부터 오퍼레이팅 시스템, 커널, 및 펌웨어를 판독할 수 있다. 일부 실시예들에서, NVM 인터페이스는 판독 전용 콘텍스트에서 판독을 수행할 수 있다. 따라서, 도 2에 도시된 바와 같이, 오퍼레이팅 시스템 및 연관된 데이터는 데이터(232)에 의해 표시될 수 있고, 이것은 NVM 인터페이스를 통해 NVM(220)으로부터 메모리(214)로 로드될 수 있다.
데이터(232)가 메모리(214)로 로드되고 있는 동안, NVM 인터페이스는 NVM(220)에서 하나 이상의 에러들(250)(예를 들어, NVM(220)으로부터 판독되고 있는 펌웨어에서의 하나 이상의 에러들)을 검출할 수 있다. 이러한 에러를 검출시, NVM 인터페이스는 메모리(214)의 일부분에 하나 이상의 에러 통지들(예를 들어, 리프레시 통지들 또는 uECC 통지들)을 저장할 수 있다. 예를 들어, 시간 기간 T3 동안, NVM 인터페이스는 메모리(214)의 예비 랜덤 액세스 메모리 영역 및/또는 스크래치 메모리 버퍼(scratch memory buffer)로서 구현될 수 있는 에러 로그(234)에 하나 이상의 에러 통지들을 저장할 수 있다.
일단 전자 디바이스가 부트되었다면(예를 들어, 오퍼레이팅 시스템이 메모리(214)로 로드되어 시작했다면), NVM 드라이버(예를 들어, 도 1의 NVM 드라이버(117))는 에러 로그(234)를 검사하고 하나 이상의 정정 조치를 수행할 수 있다. 특히, NVM 드라이버는 하나 이상의 정정 조치를 수행하도록 버스 컨트롤러(예를 들어, 도 1의 버스 컨트롤러(118))에 지시할 수 있는 기입가능 콘텍스트에서 동작할 수 있다.
따라서, 도 2의 시간 기간 T4 동안, NVM 드라이버는 에러 로그(234)를 검사할 수 있다. 예를 들어, NVM 드라이버는 에러 로그(234)를 프로세스하고 하나 이상의 에러 통지를 판독할 수 있다.
그 다음, 시간 기간 T5 동안, NVM 드라이버는 에러 통지들을 이용하여 에러들(250)을 정정할 수 있다. 예를 들어, 에러 로그(234)로부터 하나 이상의 리프레시 통지들을 판독하는 것에 응답하여, NVM 드라이버는 (예를 들어, 쓰레기 수거(garbage collection)를 수행함으로써) NVM(220)의 페이지 또는 블록에 저장된 데이터를 리프레시할 수 있다. 다른 예로서, 에러 로그(234)로부터 하나 이상의 uECC 통지들을 판독하는 것에 응답하여, NVM 드라이버는 디바이스가 복원(restore)될 필요가 있을 수 있음을 표시하는 통지들을 전송할 수 있다.
이제 도 3을 참조하면, NVM(예를 들어, 도 1의 NVM(120) 또는 도 2의 NVM(220))으로부터의 디바이스 부트업 동안 에러들을 핸들링하기 위한 예시적인 프로세스(300)의 흐름도가 도시된다. 프로세스(300)의 단계들은 NVM과 인터페이스할 수 있는 NVM 인터페이스(예를 들어, 도 1의 NVM 인터페이스(116)), NVM에 데이터를 기입할 수 있는 NVM 드라이버(예를 들어, 도 1의 NVM 드라이버(117)), 또는 전자 디바이스(예를 들어, 도 1의 전자 디바이스(100))의 임의의 컴포넌트 또는 컴포넌트들의 조합에 의해 실행될 수 있다.
프로세스(300)는 단계(302)에서 시작할 수 있다. 단계(304)에서, NVM 인터페이스는 펌웨어를 업데이트할 수 있다. 예를 들어, 펌웨어는 전자 디바이스가 공장에 있는 동안 또는 디바이스가 이용되고 있을 때 소프트웨어 다운로드 동안 업데이트될 수 있다.
그 다음, 단계(306)에서, 펌웨어 업데이트가 성공적이었는지에 대한 결정이 이루어질 수 있다. 단계(306)에서 펌웨어 업데이트가 성공적이지 않다고 결정이 이루어지면, 프로세스(300)는 펌웨어가 다시 업데이트될 수 있는 단계(304)로 리턴할 수 있다.
단계(306)에서, 펌웨어 업데이트가 성공적이라고 결정이 이루어지면, 프로세스(300)는 단계(308)로 이동할 수 있다. 단계(308)에서, 전자 디바이스는 NVM으로부터 부트될 수 있다. 예를 들어, NVM 인터페이스는 NVM으로부터 휘발성 메모리(예를 들어, 도 1의 메모리(114) 또는 도 2의 메모리(214))로 부트로더를 로드할 수 있다. 그 다음, 부트로더를 이용하여, NVM 인터페이스는 오퍼레이팅 시스템, 커널, 및 펌웨어를 휘발성 메모리로 로드하려고 시도할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, NVM 인터페이스는 NVM(220)으로부터 메모리(214)로 부트로더(230)를 로드할 수 있고, 부트로더(230)는 데이터(232)를 메모리(214)로 로드하려고 시도할 수 있다.
단계(310)를 계속하면, 치명적 에러(예를 들어, 치명적 부트 로딩 에러)가 발생하였는지에 대한 결정이 이루어질 수 있다. 이러한 치명적 에러는 전자 디바이스가 성공적으로 부트업하지 못하게 할 수 있다. 단계(310)에서 치명적 에러가 발생하였다고 결정이 이루어지면, 프로세스(300)는 NVM 인터페이스가 펌웨어를 다시 업데이트하려고 시도할 수 있는 단계(304)로 리턴할 수 있다.
단계(310)에서, 치명적 에러가 발생하지 않았다고 결정이 이루어지면, 프로세스(300)는 단계(312)로 이동할 수 있다. 단계(312)에서, 적어도 하나의 에러가 NVM에서 발생하였는지(예를 들어, 펌웨어 로드 동안 하나 이상의 에러들)에 대한 결정이 이루어질 수 있다.
단계(312)에서, 적어도 하나의 에러가 NVM에서 발생하지 않았다고 결정이 이루어지면, 프로세스(300)는 일단 NVM 인터페이스가 오퍼레이팅 시스템, 커널, 및 펌웨어를 휘발성 메모리로 로드하는 것을 완료하였고 오퍼레이팅 시스템이 시작하였다면(예를 들어, 디바이스가 기입가능 콘텍스트에 도달하였다면) 단계(314)로 이동할 수 있다.
그러나, 단계(312)에서, 적어도 하나의 에러가 NVM에서 발생하였다고 결정이 이루어지면, 프로세스(300)는 단계(316)로 이동할 수 있다. 일부 실시예들에서, NVM 인터페이스는 하나 이상의 에러 통지들(예를 들어, 리프레시 통지들 및/또는 uECC 통지들)을 수신하는 것에 응답하여 적어도 하나의 에러가 발생하였음을 결정할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, NVM 인터페이스는 NVM(220)에서 하나 이상의 에러(250)를 검출할 수 있다.
단계(316)에서, 하나 이상의 에러 통지들이 휘발성 메모리의 일부분에 저장될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, NVM 인터페이스는 메모리(214)의 에러 로그(234)에 에러 통지들을 저장할 수 있다. 하나 이상의 에러 통지들을 저장한 후에, 프로세스(300)는 단계(314)로 이동할 수 있다.
단계(314)에서, NVM에서의 하나 이상의 에러가 디바이스 부트업 동안 검출되었는지에 대한 결정이 이루어질 수 있다. 예를 들어, NVM 드라이버(예를 들어, 도 1의 NVM 드라이버(117))는 에러 로그를 프로세스하고, 하나 이상의 에러 통지들이 에러 로그에 저장되는지를 결정할 수 있다.
단계(314)에서, 어떠한 에러들도 디바이스 부트업 동안 검출되지 않았다고 결정이 이루어지면, 프로세스(300)는 단계(318)에서 종료할 수 있다. 일부 실시예들에서, 나중의 시점에, 전자 디바이스는 파워 다운(power down)되고 재부트될 수 있다. 서브-프로세스(330)는 그 다음에 개시될 수 있고, 단계(308)에서, 전자 디바이스는 NVM으로부터 부트될 수 있다.
단계(314)에서, 디바이스 부트업 동안 하나 이상의 에러들이 검출되었다고 결정이 이루어지면, NVM 드라이버는 저장된 에러 통지들을 이용하여 하나 이상의 에러를 정정하려고 시도할 수 있다. 따라서, 프로세스(300)는 단계(320)로 이동할 수 있다.
단계(320)에서, 디바이스 부트업 동안 하나 이상의 치명적 에러들이 검출되었는지에 대한 결정이 이루어질 수 있다. 예를 들어, NVM 드라이버는 에러 로그가 하나 이상의 uECC 통지들을 포함하는지를 결정할 수 있다.
단계(320)에서, 디바이스 부트업 동안 검출된 에러들은 치명적 에러들이었다고 결정이 이루어지면, 프로세스(300)는 단계(322)로 이동할 수 있다. 단계(322)에서, NVM 드라이버는 치명적 에러들과 연관된 하나 이상의 블록들을 폐기할 수 있다. 예를 들어, NVM 드라이버는 먼저 연관된 블록들을 식별할 수 있다. NVM 드라이버는 그 다음에 연관된 블록들에 저장된 데이터를 NVM의 다른 블록들에 복사함으로써 블록들을 폐기할 수 있다. 데이터를 복사한 후에, 연관된 블록들은 이용가능한 프로그램 가능한 블록들의 풀(pool)로부터 폐기될 수 있다. 블록들을 폐기한 후에, 프로세스(300)는 단계(304)로 리턴할 수 있고, 여기서 NVM 인터페이스는 전자 디바이스의 복원을 강제로 할 수 있다. 예를 들어, NVM 인터페이스는 펌웨어를 다시 업데이트하려고 시도할 수 있다.
단계(320)에서, 디바이스 부트업 동안 검출된 에러들이 치명적 에러들이 아니라고 결정이 이루어지면, 프로세스(300)는 단계(324)로 이동할 수 있다. 예를 들어, NVM 드라이버는 하나 이상의 에러들이 부팅을 위해 필수적이지 않은 비-치명적 에러들이었다고 결정했을 수 있다.
단계(324)에서, NVM 드라이버는 비-치명적 에러와 연관되는 하나 이상의 블록들에 저장된 데이터를 이동할 수 있다. 이러한 선제 이동(preemptive move)은 비-치명적 에러가 나중에 치명적 에러로 발전하지 못하게 할 수 있다. 예를 들어, NVM 드라이버는 먼저 연관된 블록들을 식별할 수 있다. 블록들을 식별한 후에, NVM 드라이버는 연관된 블록들에 저장된 데이터를 NVM의 다른 블록들에 기입할 수 있다. 프로세스(300)는 그 다음에 단계(318)에서 종료할 수 있다.
에러 로그는 전자 디바이스(도 2의 전자 디바이스(100))의 임의의 부트업 프로세스 동안 유지되고 프로세스될 수 있다는 것을 이해해야 한다. 따라서, 단계들(308 내지 322)(도 3에서 점선으로 윤곽이 표시되고 서브-프로세스(330)로서 라벨이 붙음)은 임의의 디바이스 부트업 프로세스 동안 NVM 인터페이스 및/또는 NVM 드라이버에 의해 취해지는 단계들을 표현할 수 있다. 예를 들어, 서브-프로세스(330)는 정상 디바이스 부트업들 동안(예를 들어, 실행하고 있는 전자 디바이스가 파워 다운되고 재부트될 때) 단계(308)에서 시작할 수 있다.
도 3의 프로세스들은 단지 예시적인 것임을 이해해야 한다. 본 발명의 범위로부터 벗어나지 않고, 프로세스(300) 및 서브-프로세스(330)의 단계들 중 임의의 것이 제거, 수정, 또는 결합될 수 있고, 임의의 부가적인 단계들이 추가될 수 있다.
본 발명의 설명된 실시예들은 예시의 목적으로 제시되며 한정의 목적이 아니다.
Claims (20)
- 전자 디바이스에서 에러들을 핸들링(handling)하는 방법으로서,
불휘발성 메모리("NVM")로부터 상기 전자 디바이스를 부팅(booting)하는 단계;
상기 NVM에서 에러가 발생하였는지를 결정하는 단계;
상기 NVM에서 에러가 발생하였다고 결정하는 것에 응답하여, 휘발성 메모리의 일부분에 적어도 하나의 에러 통지(error notification)를 저장하는 단계; 및
일단 상기 전자 디바이스가 부팅을 완료하였다면, 상기 적어도 하나의 에러 통지를 이용하여 상기 에러를 정정하는 단계
를 포함하는 에러 핸들링 방법. - 제1항에 있어서, 상기 NVM에서 에러가 발생하지 않았다고 결정하는 것에 응답하여, 상기 NVM으로부터 상기 전자 디바이스를 부팅하는 것을 계속하는 단계를 더 포함하는 에러 핸들링 방법.
- 제1항에 있어서, 상기 휘발성 메모리의 일부분은 메모리 버퍼인 에러 핸들링 방법.
- 제1항에 있어서, 상기 휘발성 메모리의 일부분은 예비 랜덤 액세스 메모리 영역(reserved random-access memory area)인 에러 핸들링 방법.
- 제1항에 있어서, 상기 정정하는 단계는,
상기 에러가 비-치명적 에러임을 결정하는 단계;
상기 에러와 연관된 상기 NVM의 적어도 하나의 블록을 식별하는 단계; 및
상기 적어도 하나의 블록에 저장된 데이터를 상기 NVM의 다른 블록에 기입하는 단계
를 포함하는 에러 핸들링 방법. - 제1항에 있어서, 상기 정정하는 단계는,
상기 에러가 치명적 에러임을 결정하는 단계;
상기 에러와 연관된 상기 NVM의 적어도 하나의 블록을 식별하는 단계; 및
상기 적어도 하나의 블록을 폐기하는 단계
를 포함하는 에러 핸들링 방법. - 제6항에 있어서,
상기 전자 디바이스의 복원을 강제로 하는(forcing) 단계; 및
상기 전자 디바이스에 대한 펌웨어를 업데이트하는 단계
를 더 포함하는 에러 핸들링 방법. - 전자 디바이스로서,
불휘발성 메모리("NVM");
에러 로그를 저장하도록 동작하는 휘발성 메모리; 및
상기 NVM에 액세스하도록 동작가능한 메모리 인터페이스
를 포함하고,
상기 메모리 인터페이스는,
상기 NVM으로부터 상기 휘발성 메모리로 부트로더를 로드(load)하고;
상기 부트로더를 이용하여 상기 NVM으로부터 상기 휘발성 메모리로 펌웨어를 로드하고;
상기 펌웨어의 로드 동안 적어도 하나의 에러가 발생하였는지를 결정하고;
상기 적어도 하나의 에러가 발생하였다고 결정하는 것에 응답하여, 상기 에러 로그에 적어도 하나의 에러 통지를 저장하도록 동작하는 전자 디바이스. - 제8항에 있어서, 상기 전자 디바이스는 상기 펌웨어가 로드되고 있는 동안 판독 전용 콘텍스트(read-only context)에 있는 전자 디바이스.
- 제8항에 있어서, 상기 메모리 인터페이스는 리프레시 통지 및 정정불가능한 에러 정정 코딩 통지(uncorrectable error correction coding notification) 중 적어도 하나를 수신하는 것에 응답하여 상기 적어도 하나의 에러가 발생하였음을 결정하도록 동작하는 전자 디바이스.
- 제8항에 있어서, 상기 메모리 인터페이스는 상기 휘발성 메모리에 오퍼레이팅 시스템을 로드하도록 동작하는 전자 디바이스.
- 제11항에 있어서, 상기 NVM에 데이터를 기입하도록 동작하는 NVM 드라이버를 더 포함하는 전자 디바이스.
- 제12항에 있어서, 상기 NVM 드라이버는,
상기 에러 로그를 프로세스하고;
상기 적어도 하나의 에러를 정정하도록 더 동작하는 전자 디바이스. - 제8항에 있어서, 상기 적어도 하나의 에러가 발생하지 않았음을 결정하는 것에 응답하여, 상기 메모리 인터페이스는 상기 펌웨어를 상기 휘발성 메모리에 로드하는 것을 계속하도록 동작하는 전자 디바이스.
- 제8항에 있어서, 상기 NVM은 NAND 플래시 메모리인 전자 디바이스.
- 메모리 인터페이스로서,
판독 전용 콘텍스트에서 전자 디바이스의 불휘발성 메모리("NVM")로부터 상기 전자 디바이스의 휘발성 메모리로 펌웨어를 판독하고, 판독되는 상기 펌웨어에서 적어도 하나의 에러를 검출하도록 동작하는 제어 회로; 및
일단 상기 전자 디바이스가 기입가능 콘텍스트(writeable context)에 도달하였다면 상기 적어도 하나의 에러를 정정하도록 동작하는 NVM 드라이버
를 포함하는 메모리 인터페이스. - 제16항에 있어서, 상기 제어 회로는 상기 휘발성 메모리의 일부분에 적어도 에러 통지를 저장하도록 동작하는 메모리 인터페이스.
- 제16항에 있어서, 상기 NVM 드라이버는 기입가능 콘텍스트에서 동작하고 있는 메모리 인터페이스.
- 제16항에 있어서, 상기 NVM 드라이버는,
상기 적어도 하나의 에러가 비-치명적 에러임을 결정하고;
상기 에러와 연관된 상기 NVM에서의 적어도 하나의 블록을 식별하고;
상기 적어도 하나의 블록에 저장된 데이터를 상기 NVM의 적어도 하나의 다른 블록으로 이동하도록 동작하는 메모리 인터페이스. - 제16항에 있어서, 상기 NVM 드라이버는,
상기 적어도 하나의 에러가 치명적 에러임을 결정하고;
상기 에러와 연관된 상기 NVM에서의 적어도 하나의 블록을 식별하고;
상기 NVM의 적어도 하나의 다른 블록에 데이터를 복사하고;
상기 적어도 하나의 블록을 폐기하도록 동작하는 메모리 인터페이스.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/872,867 | 2010-08-31 | ||
US12/872,867 US8589730B2 (en) | 2010-08-31 | 2010-08-31 | Handling errors during device bootup from a non-volatile memory |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120010714A Division KR101635658B1 (ko) | 2010-08-31 | 2012-02-02 | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120021210A true KR20120021210A (ko) | 2012-03-08 |
KR101375992B1 KR101375992B1 (ko) | 2014-03-18 |
Family
ID=44513205
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110084763A KR101375992B1 (ko) | 2010-08-31 | 2011-08-24 | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 |
KR1020120010714A KR101635658B1 (ko) | 2010-08-31 | 2012-02-02 | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120010714A KR101635658B1 (ko) | 2010-08-31 | 2012-02-02 | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8589730B2 (ko) |
EP (1) | EP2612241A1 (ko) |
JP (1) | JP5608139B2 (ko) |
KR (2) | KR101375992B1 (ko) |
CN (1) | CN102385535B (ko) |
TW (2) | TWI514408B (ko) |
WO (1) | WO2012030547A1 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101467302B1 (ko) * | 2013-03-11 | 2014-12-02 | 전자부품연구원 | 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템 |
KR101467309B1 (ko) * | 2013-03-11 | 2014-12-02 | 전자부품연구원 | 에러 검출 테이블 생성에 의한 스토리지 관리 방법 및 이를 적용한 시스템 |
KR20170017713A (ko) * | 2015-08-05 | 2017-02-15 | 삼성전자주식회사 | 부트 로더 업데이트 펌웨어, 및 부트 로더 업데이트 방법 |
KR20170068373A (ko) * | 2015-12-09 | 2017-06-19 | 삼성전자주식회사 | 메모리 데이터 보호 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법 |
US9817591B2 (en) | 2014-12-18 | 2017-11-14 | Samsung Electronics Co., Ltd. | Storage device and storage system storing data based on reliability of memory area |
WO2020145742A1 (ko) * | 2019-01-11 | 2020-07-16 | 주식회사 엘지화학 | 에러 복구 방법, 이를 이용한 마이크로 컨트롤러 유닛, 및 상기 마이크로 컨트롤러를 포함하는 배터리 장치 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727570B2 (en) * | 2011-06-03 | 2017-08-08 | Apple Inc. | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
US8706955B2 (en) | 2011-07-01 | 2014-04-22 | Apple Inc. | Booting a memory device from a host |
US9146824B1 (en) * | 2011-11-04 | 2015-09-29 | Marvell International Ltd. | Management of bit line errors based on a stored set of data |
US8756458B2 (en) | 2011-12-12 | 2014-06-17 | Apple Inc. | Mount-time reconciliation of data availability |
DE102013108478A1 (de) * | 2013-08-06 | 2015-02-12 | Endress+Hauser Process Solutions Ag | Verfahren zur Erweiterung einer eingebetteten Softwarekomponente eines Feldgerätes |
US20150046772A1 (en) * | 2013-08-06 | 2015-02-12 | Sandisk Technologies Inc. | Method and device for error correcting code (ecc) error handling |
CN104750598B (zh) * | 2013-12-26 | 2017-11-24 | 南京南瑞继保电气有限公司 | 一种iec61850日志服务的存储方法 |
KR102289001B1 (ko) * | 2014-06-09 | 2021-08-13 | 삼성전자주식회사 | 솔리드 스테이드 드라이브 및 그것의 동작 방법 |
KR102372825B1 (ko) * | 2015-07-31 | 2022-03-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10665305B2 (en) | 2015-09-09 | 2020-05-26 | Toshiba Memory Corporation | Host device connectable to memory device performing patrol read and memory device performing patrol read |
US10055377B2 (en) | 2016-02-24 | 2018-08-21 | Western Digital Technologies, Inc. | Using a proprietary framework on a standards-based embedded device |
US10733045B2 (en) * | 2016-07-14 | 2020-08-04 | Microsoft Technology Licensing, Llc | Online repair of metadata for structured data including file systems |
JP6723863B2 (ja) * | 2016-08-01 | 2020-07-15 | オリンパス株式会社 | 組み込みシステム、撮影機器及びリフレッシュ方法 |
US10365961B2 (en) * | 2016-09-09 | 2019-07-30 | Dell Products L.P. | Information handling system pre-boot fault management |
TWI640872B (zh) * | 2017-07-07 | 2018-11-11 | 群聯電子股份有限公司 | 記憶體控制電路單元、記憶體儲存裝置及其控制方法 |
TWI645289B (zh) * | 2017-10-31 | 2018-12-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體操作方法 |
US11023302B2 (en) | 2018-03-07 | 2021-06-01 | Dell Products L.P. | Methods and systems for detecting and capturing host system hang events |
US10705902B2 (en) | 2018-05-03 | 2020-07-07 | Western Digital Technologies, Inc. | Crash log storage and retrieval using boot partitions in solid state systems |
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
KR20200088565A (ko) | 2019-01-15 | 2020-07-23 | 에스케이하이닉스 주식회사 | 저장 장치, 컨트롤러 및 저장 장치의 동작 방법 |
KR20200089482A (ko) | 2019-01-17 | 2020-07-27 | 주식회사 엘지화학 | 메모리, 상기 메모리의 에러 복구 방법, 및 상기 메모리를 포함하는 배터리 장치 |
US11237838B2 (en) * | 2020-01-02 | 2022-02-01 | Western Digital Technologies, Inc. | Storage system and method for enabling a direct accessible boot block in a memory die |
US20210342241A1 (en) * | 2020-04-29 | 2021-11-04 | Advanced Micro Devices, Inc. | Method and apparatus for in-memory failure prediction |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPM348794A0 (en) * | 1994-01-20 | 1994-02-17 | Alcatel Australia Limited | Microprocessor fault log |
US5768498A (en) * | 1996-01-23 | 1998-06-16 | Lucent Technologies | Protocol verification using symbolic representations of queues |
US5737520A (en) * | 1996-09-03 | 1998-04-07 | Hewlett-Packard Co. | Method and apparatus for correlating logic analyzer state capture data with associated application data structures |
US6463550B1 (en) * | 1998-06-04 | 2002-10-08 | Compaq Information Technologies Group, L.P. | Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory |
US6496945B2 (en) * | 1998-06-04 | 2002-12-17 | Compaq Information Technologies Group, L.P. | Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory |
US6279127B1 (en) * | 1998-08-20 | 2001-08-21 | International Business Machines Corporation | System for predicting year-2000 instruction failures |
US6807643B2 (en) * | 1998-12-29 | 2004-10-19 | Intel Corporation | Method and apparatus for providing diagnosis of a processor without an operating system boot |
US6591272B1 (en) * | 1999-02-25 | 2003-07-08 | Tricoron Networks, Inc. | Method and apparatus to make and transmit objects from a database on a server computer to a client computer |
EP1046991B1 (de) * | 1999-04-20 | 2002-12-11 | Siemens Aktiengesellschaft | Verfahren zum Testen der Unabhängigkeit und Verträglichkeit eines Software-Moduls |
US6467052B1 (en) * | 1999-06-03 | 2002-10-15 | Microsoft Corporation | Method and apparatus for analyzing performance of data processing system |
GB2366879B (en) * | 2000-09-16 | 2005-02-16 | Ibm | Tracing the execution path of a computer program |
GB2383437B (en) * | 2001-12-20 | 2004-02-04 | Sun Microsystems Inc | System trace unit |
KR100441608B1 (ko) * | 2002-05-31 | 2004-07-23 | 삼성전자주식회사 | 낸드 플래시 메모리 인터페이스 장치 |
KR100448905B1 (ko) * | 2002-07-29 | 2004-09-16 | 삼성전자주식회사 | 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치 |
KR100484485B1 (ko) * | 2002-10-01 | 2005-04-20 | 한국전자통신연구원 | 비휘발성 메모리에의 데이터 저장 방법 및 장치 |
JP2006526831A (ja) * | 2003-06-03 | 2006-11-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 不揮発性メモリからのブート |
US20050229020A1 (en) * | 2004-04-06 | 2005-10-13 | International Business Machines (Ibm) Corporation | Error handling in an embedded system |
US7711989B2 (en) | 2005-04-01 | 2010-05-04 | Dot Hill Systems Corporation | Storage system with automatic redundant code component failure detection, notification, and repair |
US7523350B2 (en) * | 2005-04-01 | 2009-04-21 | Dot Hill Systems Corporation | Timer-based apparatus and method for fault-tolerant booting of a storage controller |
US7702966B2 (en) * | 2005-09-07 | 2010-04-20 | Intel Corporation | Method and apparatus for managing software errors in a computer system |
US7546487B2 (en) * | 2005-09-15 | 2009-06-09 | Intel Corporation | OS and firmware coordinated error handling using transparent firmware intercept and firmware services |
US7975184B2 (en) * | 2006-04-03 | 2011-07-05 | Donald Goff | Diagnostic access system |
JP4840859B2 (ja) * | 2006-05-10 | 2011-12-21 | ルネサスエレクトロニクス株式会社 | 半導体装置、及び起動方法 |
TWI327290B (en) * | 2006-10-03 | 2010-07-11 | Magic Pixel Inc | Electronic system with nand flash memory storing boot code and a highly reliable boot up method |
JP2008191701A (ja) | 2007-01-31 | 2008-08-21 | Toshiba Corp | エラー回復処理方法および情報処理装置 |
US20080256400A1 (en) * | 2007-04-16 | 2008-10-16 | Chih-Cheng Yang | System and Method for Information Handling System Error Handling |
US8161474B2 (en) * | 2007-12-14 | 2012-04-17 | Sharp Laboratories Of America, Inc. | Diagnostic information preservation during installations of over the air update of wireless handset software |
JP2010044635A (ja) * | 2008-08-14 | 2010-02-25 | Hitachi Ltd | ファイルサーバシステム及びファイルサーバシステム起動方法 |
CN101740123B (zh) * | 2008-11-10 | 2012-04-04 | 扬智科技股份有限公司 | 存储器的数据保护方法 |
JP2010140266A (ja) | 2008-12-11 | 2010-06-24 | Toshiba Corp | 電子デバイスシステムと電子デバイス |
CN101520735B (zh) * | 2008-12-18 | 2013-09-18 | 康佳集团股份有限公司 | 一种启动闪存内引导程序的方法及其网络电视和机顶盒 |
US8175012B2 (en) * | 2009-03-26 | 2012-05-08 | Mediatek Inc. | Decoding/encoding method for booting from a NAND flash and system thereof |
US8555050B2 (en) * | 2010-07-15 | 2013-10-08 | Broadcom Corporation | Apparatus and method thereof for reliable booting from NAND flash memory |
-
2010
- 2010-08-31 US US12/872,867 patent/US8589730B2/en active Active
-
2011
- 2011-08-18 EP EP11749060.7A patent/EP2612241A1/en not_active Withdrawn
- 2011-08-18 WO PCT/US2011/048223 patent/WO2012030547A1/en active Application Filing
- 2011-08-24 JP JP2011197631A patent/JP5608139B2/ja active Active
- 2011-08-24 CN CN201110253454.6A patent/CN102385535B/zh active Active
- 2011-08-24 TW TW101106787A patent/TWI514408B/zh not_active IP Right Cessation
- 2011-08-24 TW TW100130379A patent/TWI501253B/zh not_active IP Right Cessation
- 2011-08-24 KR KR1020110084763A patent/KR101375992B1/ko active IP Right Grant
-
2012
- 2012-02-02 KR KR1020120010714A patent/KR101635658B1/ko active IP Right Grant
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101467302B1 (ko) * | 2013-03-11 | 2014-12-02 | 전자부품연구원 | 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템 |
KR101467309B1 (ko) * | 2013-03-11 | 2014-12-02 | 전자부품연구원 | 에러 검출 테이블 생성에 의한 스토리지 관리 방법 및 이를 적용한 시스템 |
US9817591B2 (en) | 2014-12-18 | 2017-11-14 | Samsung Electronics Co., Ltd. | Storage device and storage system storing data based on reliability of memory area |
KR20170017713A (ko) * | 2015-08-05 | 2017-02-15 | 삼성전자주식회사 | 부트 로더 업데이트 펌웨어, 및 부트 로더 업데이트 방법 |
KR20170068373A (ko) * | 2015-12-09 | 2017-06-19 | 삼성전자주식회사 | 메모리 데이터 보호 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법 |
WO2020145742A1 (ko) * | 2019-01-11 | 2020-07-16 | 주식회사 엘지화학 | 에러 복구 방법, 이를 이용한 마이크로 컨트롤러 유닛, 및 상기 마이크로 컨트롤러를 포함하는 배터리 장치 |
US11899951B2 (en) | 2019-01-11 | 2024-02-13 | Lg Energy Solution, Ltd. | Error restoring method, microcontroller unit using the same, and battery device including the microcontroller unit |
Also Published As
Publication number | Publication date |
---|---|
JP5608139B2 (ja) | 2014-10-15 |
TW201222554A (en) | 2012-06-01 |
EP2612241A1 (en) | 2013-07-10 |
TWI501253B (zh) | 2015-09-21 |
US8589730B2 (en) | 2013-11-19 |
KR20120024906A (ko) | 2012-03-14 |
KR101375992B1 (ko) | 2014-03-18 |
TWI514408B (zh) | 2015-12-21 |
WO2012030547A1 (en) | 2012-03-08 |
TW201230057A (en) | 2012-07-16 |
CN102385535B (zh) | 2015-03-11 |
JP2012069107A (ja) | 2012-04-05 |
KR101635658B1 (ko) | 2016-07-01 |
CN102385535A (zh) | 2012-03-21 |
US20120054541A1 (en) | 2012-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101375992B1 (ko) | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 | |
US8341386B2 (en) | Method for updating basic input/output system and method for repairing thereof | |
US8799555B2 (en) | Boot data storage schemes for electronic devices | |
US20120260027A1 (en) | Device bootup from a nand-type non-volatile memory | |
US11138080B2 (en) | Apparatus and method for reducing cell disturb in an open block of a memory system during a recovery procedure | |
US8812910B2 (en) | Pilot process method for system boot and associated apparatus | |
TWI404054B (zh) | 處理微碼程式更新錯誤的裝置及其方法 | |
US20150199190A1 (en) | System and method for updating firmware | |
US11755315B2 (en) | Boot ROM update method and boot-up method of embedded system | |
JP2012198878A (ja) | 半導体不揮発性メモリ装置のリフレッシュ操作開始方法およびシステム | |
CN111352580A (zh) | 存储装置及其操作方法 | |
US8788800B2 (en) | OS processing method, system and non-transitory computer readable storage medium thereof | |
JP2010198252A (ja) | 不揮発メモリ装置、不揮発メモリの書込み方法、及び不揮発メモリ書込みプログラム | |
CN102279757A (zh) | 一种系统程序启动的方法及装置 | |
TWI798680B (zh) | 主機記憶體緩衝區管理方法、記憶體儲存裝置與記憶體控制電路單元 | |
CN116185299A (zh) | 闪存控制器及相关装置和方法 | |
JP2008251154A (ja) | 不揮発性半導体記憶装置 | |
CN108986864B (zh) | 控制器和存储器系统以及存储器系统的操作方法 | |
US11182245B2 (en) | Operating method of memory controller, memory controller, and storage device | |
CN113094107B (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
KR100575927B1 (ko) | 이동통신 단말기에서 부팅 방법 | |
CN112965670B (zh) | 主机存储器缓冲区管理方法、存储装置与控制电路单元 | |
JP2013174976A (ja) | メモリシステムおよび制御プログラムの更新方法 | |
CN101464817B (zh) | 数据恢复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170220 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180219 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20200218 Year of fee payment: 7 |