KR20200088565A - 저장 장치, 컨트롤러 및 저장 장치의 동작 방법 - Google Patents

저장 장치, 컨트롤러 및 저장 장치의 동작 방법 Download PDF

Info

Publication number
KR20200088565A
KR20200088565A KR1020190004970A KR20190004970A KR20200088565A KR 20200088565 A KR20200088565 A KR 20200088565A KR 1020190004970 A KR1020190004970 A KR 1020190004970A KR 20190004970 A KR20190004970 A KR 20190004970A KR 20200088565 A KR20200088565 A KR 20200088565A
Authority
KR
South Korea
Prior art keywords
firmware
loading time
recovery
storage device
memory block
Prior art date
Application number
KR1020190004970A
Other languages
English (en)
Inventor
김정애
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020190004970A priority Critical patent/KR20200088565A/ko
Priority to US16/537,830 priority patent/US10877676B2/en
Priority to CN201910932838.7A priority patent/CN111435305B/zh
Publication of KR20200088565A publication Critical patent/KR20200088565A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/0703Error 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/0706Error 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/0727Error 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 in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error 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/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 개시는 저장 장치 및 그 동작 방법에 관한 것으로서, 본 개시의 실시예에 따른 저장 장치는, 복수의 메모리 블록들을 포함하는 반도체 메모리 장치 및 반도체 메모리 장치를 제어하는 컨트롤러를 포함하되, 반도체 메모리 장치는 제1 펌웨어를 복수의 메모리 블록들 중 임의의 제1 메모리 블록에 저장하며, 제2 펌웨어를 복수의 메모리 블록들 중 임의의 제2 메모리 블록에 저장하고, 컨트롤러는 제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 제1 펌웨어에 대한 누적 로딩 시간 정보, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정하는 리커버리 결정부 및 리커버리 결정부에서 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하는 리커버리 수행부를 포함하는 저장 장치를 포함한다.

Description

저장 장치, 컨트롤러 및 저장 장치의 동작 방법{STORAGE DEVICE, CONTROLLER AND OPERATING METHOD OF STORAGE DEVICE THEREOF}
본 개시는 저장 장치, 컨트롤러 및 그 동작 방법에 관한 것이다.
저장 장치(Storage Device)는 컴퓨터, 스마트폰과 같은 호스트(host)의 요청을 기초로 데이터를 저장하는 장치이다. 저장 장치는 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치뿐 아니라, 솔리드 스테이트 드라이브(SSD, Solid State Drive), UFS(Universal Flash Storage) 장치, eMMC(embedded MMC) 장치 등과 같이 비휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
저장 장치는 호스트의 요청에 따라 비휘발성 메모리에 읽기 및 쓰기 동작을 수행하기 위해서, SoC(System On Chip) 및 이에 탑재되는 펌웨어(FW, firmware)를 포함할 수 있다. 펌웨어는 저장 장치 내에 포함된 메모리에 저장되며, 저장 장치는 부팅 시에 메모리에 저장된 펌웨어를 로드한다. 또한, 메모리에 저장된 펌웨어는 호스트의 요청 또는 외부 장치에 의해서 업데이트될 수 있다.
본 개시의 실시예는, 부팅 시 펌웨어의 리커버리 여부를 결정하기 위해 사용되는 시간 및 공간 자원을 감소시킬 수 있는 저장 장치 및 그 동작 방법을 제공한다.
본 개시의 실시예에 따른 저장 장치는, 복수의 메모리 블록들을 포함하는 반도체 메모리 장치 및 반도체 메모리 장치를 제어하는 컨트롤러를 포함하되, 반도체 메모리 장치는 제1 펌웨어를 복수의 메모리 블록들 중 임의의 제1 메모리 블록에 저장하며, 제2 펌웨어를 복수의 메모리 블록들 중 임의의 제2 메모리 블록에 저장하고, 컨트롤러는 제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 제1 펌웨어에 대한 누적 로딩 시간 정보, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정하는 리커버리 결정부 및 리커버리 결정부에서 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하는 리커버리 수행부를 포함하는 저장 장치를 포함한다.
본 개시의 실시예에 따른 반도체 메모리 장치를 제어하는 컨트롤러는, 제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 제1 펌웨어에 대한 누적 로딩 시간 정보, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정하는 리커버리 결정부 및 리커버리 결정부에서 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하는 리커버리 수행부를 포함한다.
본 개시의 실시예에 따른 복수의 메모리 블록들을 포함하는 반도체 메모리 장치 및 반도체 메모리 장치를 제어하는 컨트롤러를 포함하는 저장 장치의 동작 방법은, 복수의 메모리 블록들 중 임의의 제1 메모리 블록에 저장된 제1 펌웨어를 로딩하는 단계, 복수의 메모리 블록들 중 임의의 제2 메모리 블록에 저장된 제2 펌웨어를 로딩하는 단계, 제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 제1 펌웨어에 대한 누적 로딩 시간 정보, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할지 여부를 결정하는 단계 및 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하는 단계를 포함한다.
본 개시에 따르면, 부팅 시 펌웨어의 리커버리 여부를 결정하기 위해 사용되는 시간 및 공간 자원을 감소시킬 수 있는 저장 장치 및 그 동작 방법이 제공된다.
도 1은 본 개시의 실시예에 따른 저장 장치를 설명하기 위한 구성도이다.
도 2는 도 1의 저장 장치에서 부팅 시, 펌웨어를 로딩하는 동작을 설명하는 도면이다.
도 3은 도 1의 저장 장치에서 리커버리 동작 수행 여부를 결정하고, 리커버리를 수행하는 동작을 설명하는 도면이다.
도 4는 본 개시의 실시예에서, 펌웨어를 로딩하고 펌웨어에 대한 리커버리 동작을 수행할지 여부를 결정하는 과정을 나타낸 순서도이다.
도 5는 본 개시의 실시예에서, 펌웨어에 대한 리커버리 동작 수행 여부를 결정하는 구체적인 과정을 나타낸 순서도이다.
도 6은 본 개시의 실시예에 따른 저장 장치의 동작 방법을 나타낸 순서도이다.
본 개시의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 통해 설명될 것이다. 그러나 본 개시는 여기에서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시예들은 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 본 개시의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
본 개시의 도면들에 있어서, 본 개시의 실시예들은 도시된 특정 형태로만 제한되는 것이 아니며 명확성을 기하기 위하여 표현된 것이다. 또한, 도면들과 명세서 전체에 걸쳐서 동일한 참조 번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서는 특정한 용어들이 사용되었으나 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 개시의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서 또는 출원에 개시되어 있는 본 개시의 개념에 따른 실시예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 개시의 개념에 따른 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 개시의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 개시의 개념에 따른 실시예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명한다. 그러나 이는 본 개시의 개념에 따른 실시예를 특정한 개시 형태로만 한정하려는 것이 아니며, 본 개시의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 명세서에서 '및/또는'이란 표현은 전후에 나열된 구성 요소 중 적어도 하나를 포함하는 의미로 사용된다. 제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예컨대 본 개시의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 서술된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
실시예를 설명함에 있어서, 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 개시의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
또한, 본 개시의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
이하에서, 통상의 기술자가 본 개시의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 개시의 실시예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 개시의 실시예에 따른 저장 장치를 설명하기 위한 구성도이다.
도 1을 참조하면, 저장 장치(100)는 반도체 메모리 장치(110) 및 컨트롤러(120)를 포함할 수 있다.
반도체 메모리 장치(110)는 데이터를 저장할 수 있다. 반도체 메모리 장치(110)는 컨트롤러(120)의 제어에 응답하여 동작한다. 반도체 메모리 장치(110)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다.
실시예에서, 반도체 메모리 장치(110)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR4(Low Power Double Data Rate4) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, LPDDR(Low Power DDR), RDRAM(Rambus Dynamic Random Access Memory), 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리(Vertical NAND), 노아 플래시 메모리(NOR flash memory), 저항성 램(resistive random access memory: RRAM), 상변화 메모리(phase-change memory: PRAM), 자기저항 메모리(magnetoresistive random access memory: MRAM), 강유전체 메모리(ferroelectric random access memory: FRAM), 스핀주입 자화반전 메모리(spin transfer torque random access memory: STT-RAM) 등이 될 수 있다.
실시예에서, 반도체 메모리 장치(110)는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 개시는 전하 저장층이 전도성 부유 게이트(floating gate; FG)로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 적용될 수 있다.
반도체 메모리 장치(110)는 컨트롤러(120)로부터 커맨드 및 어드레스를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 즉, 반도체 메모리 장치(110)는 어드레스에 의해 선택된 영역에 대해 커맨드에 해당하는 동작을 수행할 수 있다.
예를 들면, 반도체 메모리 장치(110)는 프로그램 동작, 읽기 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 반도체 메모리 장치(110)는 어드레스에 의해 선택된 영역에 데이터를 프로그램할 것이다. 읽기 동작 시에, 반도체 메모리 장치(110)는 어드레스에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 반도체 메모리 장치(110)는 어드레스에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
반도체 메모리 장치(110)는 내부에 복수의 메모리 블록들을 포함할 수 있다. 반도체 메모리 장치(110)의 내부에 포함된 N(N은 자연수)개의 메모리 블록들은 각각 BLK1, BLK2, ... , BLK(N)으로 호칭될 수 있다. 반도체 메모리 장치(110)는 이 중 적어도 하나의 메모리 블록에 펌웨어를 저장할 수 있다.
한편, 펌웨어는 하나 이상일 수 있으며, 각 펌웨어는 반도체 메모리 장치(110) 내의 서로 다른 메모리 블록에 저장될 수 있다.
예를 들어, 반도체 메모리 장치(110)의 내부에 포함된 메모리 블록들 중에서, 제1 메모리 블록에는 제1 펌웨어가 저장되고 제2 메모리 블록에는 제2 펌웨어가 저장될 수 있다.
이처럼 각 펌웨어가 저장되는 메모리 블록을 분리하는 이유는, 하나의 펌웨어가 저장된 메모리 블록에 오류가 발생하더라도 다른 펌웨어가 영향을 받는 것을 방지하기 위함이다.
컨트롤러(120)는 호스트(50)의 요청에 따라 또는 호스트(50)의 요청과 무관하게 반도체 메모리 장치(110)의 동작을 제어할 수 있다. 예를 들면 컨트롤러(120)는 반도체 메모리 장치(110)에 대한 쓰기, 읽기, 소거 및 백그라운드(background) 동작을 제어할 수 있다. 여기서, 백그라운드 동작은 일 예로 가비지 컬렉션(GC, Garbage Collection), 웨어 레벨링(WL, Wear Leveling), 배드 블록 관리(BBM, Bad Block Management) 동작 등이 될 수 있다.
컨트롤러(120)는 호스트 인터페이스(121), 프로세서(122), 플래시 인터페이스(123), 램(124), 리커버리 결정부(125), 리커버리 수행부(126), 버스(127)를 포함할 수 있다.
호스트 인터페이스(121)는 호스트(50)와의 통신을 위한 인터페이스를 제공한다.
프로세서(122)는 컨트롤러(120)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(122)는 호스트 인터페이스(121)를 통해 호스트(50)와 통신하고, 플래시 인터페이스(123)를 통해 반도체 메모리 장치(110)와 통신할 수 있다.
그리고 프로세서(122)는 플래시 변환 계층(FTL)의 기능을 수행할 수 있다. 프로세서(122)는 플래시 변환 계층(FTL)을 통해 호스트가 제공한 논리 블록 어드레스(LBA, logical block address)를 물리 블록 어드레스(PBA, physical block address)로 변환할 수 있다. 플래시 변환 계층(FTL)은 맵핑 테이블을 이용하여 논리 블록 어드레스(LBA)를 입력 받아, 물리 블록 어드레스(PBA)로 변환시킬 수 있다. 플래시 변환 계층의 주소 맵핑 방법에는 맵핑 단위에 따라 여러 가지가 있다. 대표적인 어드레스 맵핑 방법에는 페이지 맵핑 방법(Page mapping method), 블록 맵핑 방법(Block mapping method), 그리고 혼합 맵핑 방법(Hybrid mapping method)이 있다.
프로세서(122)는 호스트로부터 수신된 데이터를 랜더마이즈하도록 구성된다. 예를 들면, 프로세서(122)는 랜더마이징 시드(seed)를 이용하여 호스트로부터 수신된 데이터를 랜더마이즈할 것이다. 랜더마이즈된 데이터는 저장될 데이터로서 메모리 장치에 제공되어 메모리 셀 어레이에 프로그램된다.
프로세서(122)는 읽기 동작 시 메모리 장치로부터 수신된 데이터를 디랜더마이즈하도록 구성된다. 예를 들면, 프로세서(122)는 디랜더마이징 시드를 이용하여 메모리 장치로부터 수신된 데이터를 디랜더마이즈할 것이다. 디랜더마이즈된 데이터는 호스트(50)로 출력될 것이다.
프로세서(122)는 컨트롤러(120)의 제반 동작을 제어하고, 논리 연산을 수행하기 위해 부팅 시 램(124)에 로드된 펌웨어를 구동할 수 있다.
플래시 인터페이스(123)는 반도체 메모리 장치(110)와의 통신을 위한 인터페이스를 제공한다.
램(124)은 컨트롤러(120)의 구동하기 위해 필요한 펌웨어, 프로그램 코드, 커맨드 또는 데이터들을 저장할 수 있으며, SRAM 또는 DRAM일 수 있다.
이하, 도 2에서 부팅 시 반도체 메모리 장치(110)내에 저장된 펌웨어가 램(124)에 로드되는 동작에 대해 자세히 설명한다.
리커버리 결정부(125)는 전술한 제1 펌웨어 및 제2 펌웨어와 관련하여, 제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 제1 펌웨어에 대한 누적 로딩 시간 정보, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 하여, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정한다.
펌웨어에 대한 리커버리 동작이란, 펌웨어의 로딩 또는 동작 중 이상이 발생하는 경우에 펌웨어를 정상화시키는 동작을 의미하며, 일 예로 반도체 메모리 장치(110) 내에 저장된 펌웨어를 정상 상태의 펌웨어로 다시 저장하는 동작이 될 수 있다.
펌웨어에 대한 누적 로딩 시간 정보는, 이전에 저장 장치(100)가 부팅되는 시점마다, 각 부팅 시 펌웨어를 램(124)에 로딩할 때 소요되는 시간값에 대한 히스토리 정보를 의미한다. 예를 들어 저장 장치(100)가 10번 부팅된 경우, 각 10번의 부팅 시에 펌웨어를 램(124)에 로딩할 때 소요되는 시간값에 대한 정보가 모두 펌웨어에 대한 누적 로딩 시간 정보에 반영된다.
단, 펌웨어에 대한 누적 로딩 시간 정보는 각 부팅시마다 펌웨어를 로딩할 때 소요되는 시간값을 별도로 포함하는 형태일 수도 있고, 각 부팅시 펌웨어를 로딩할 때 소요되는 시간값의 총합의 형태일 수도 있다.
예를 들어, 저장 장치(100)가 이전에 3번 부팅되었고, 각 부팅 시 펌웨어의 로딩 시간이 1.0(ms) / 1.5(ms) / 1.2(ms)라고 가정하면, 펌웨어에 대한 누적 로딩 시간 정보는 1.0(ms) / 1.5(ms) / 1.2(ms)값을 별개로 저장한 형태일 수 있고, 펌웨어의 로딩 시간의 총합인 (1.0 + 1.5 + 1.2) = 3.7(ms)이 저장된 형태일 수도 있다.
이하, 제1 펌웨어 및 제2 펌웨어에 대한 리커버리 여부를 결정하기 위해서 제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 제1 펌웨어에 대한 누적 로딩 시간 정보, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 이용하는 이유에 대해 설명한다.
펌웨어가 저장된 메모리 블록에 가해진 스트레스를 파악하여 펌웨어를 리커버리하기 위해서, 일반적으로 펌웨어가 저장된 메모리 블록과 동일한 조건(동일한 조건이란, 펌웨어가 저장된 메모리 블록과 동일한 방식으로 쓰기 동작이 수행된 것을 의미한다)의 테스트 메모리 블록을 이용하여 간접적으로 펌웨어가 저장된 메모리 블록에 가해진 스트레스를 추정하는 방법이 사용된다.
구체적으로, 부팅 시마다 테스트 메모리 블록에 저장된 데이터를 독출한 후에 만약 독출 과정에서 오류가 발생하면, 펌웨어가 저장된 메모리 블록 역시 동일한 스트레스가 가해졌다고 추정하여 펌웨어를 리커버리한다.
그러나 전술한 테스트 메모리 블록을 이용하는 방법을 사용하면, 데이터를 저장하기 위해 사용될 메모리 블록을 테스트 메모리 블록에 사용해야 하므로 데이터 저장 공간이 줄어들고, 부팅 시에 테스트 메모리 블록의 상태를 확인하는 시간이 추가로 소요되므로 전체 부팅 시간이 증가하는 문제가 발생할 수 있다. 즉, 테스트 메모리 블록을 이용하게 되면 부팅 시 시간 및 공간 자원의 낭비가 발생하게 된다.
또한, 펌웨어가 서로 다른 메모리 블록에 분산되어 있는 경우, 그 중 특정한 메모리 블록에 저장된 펌웨어만 리커버리하면 되는 상황에서도 모든 펌웨어에 대한 리커버리가 수행될 수 있다. 따라서, 독출 과정에서 오류가 발생하지 않은 펌웨어가 저장된 메모리 블록의 소거/쓰기(Erase/Write) 카운트가 부당하게 증가하는 문제가 발생할 수 있다.
따라서, 펌웨어가 저장된 메모리 블록에 가해진 스트레스를 파악하기 위해서는, 별도의 테스트 블록을 이용한 간접적인 추정 방법보다는, 펌웨어의 로딩 시간을 이용하여 펌웨어가 저장된 메모리 블록의 상황을 직접 판단하는 방법이 더 바람직하다.
리커버리 수행부(126)는 리커버리 결정부(125)에서 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행한다.
이하, 도 3에서 리커버리 결정부(125)와 리커버리 수행부(126)의 동작에 대해 자세히 설명한다.
버스(127)는 컨트롤러(120)의 구성 요소들 사이의 채널을 제공하도록 구성될 수 있다.
도 2는 도 1의 저장 장치에서 부팅 시, 펌웨어를 로딩하는 동작을 설명하는 도면이다.
우선, 도 1에서 설명한 예와 같이 반도체 메모리 장치(110)의 내부에 포함된 메모리 블록들 중에서, 제1 메모리 블록에는 제1 펌웨어가 저장되고 제2 메모리 블록에는 제2 펌웨어가 저장되어 있다고 가정한다.
부팅 시에, 제1 메모리 블록에 저장된 제1 펌웨어가 먼저 램(124)에 로딩된다. 이때, 제1 펌웨어에 대한 리커버리 여부를 결정하기 위해 사용될 제1 펌웨어의 로딩 시간이 측정될 수 있다.
제1 펌웨어의 로딩 시간은 제1 펌웨어를 램(124)에 로딩하는 모듈에 의해 측정될 수 있다. 일 예로 부팅시 최초로 동작하는 ROM 장치에 의해서 제1 펌웨어의 로딩 시간이 측정될 수 있다.
제1 펌웨어가 램(124)에 로딩된 이후에, 제2 메모리 블록에 저장된 제2 펌웨어가 램(124)에 로딩된다. 이때, 이전에 램(124)에 로딩된 제1 펌웨어는 제2 펌웨어를 램(124)을 로딩하는 동작을 수행하기 위한 펌웨어일 수 있다. 즉, 제1 펌웨어가 램(124)에 로딩되면 프로세서(122)가 제1 펌웨어를 구동하여, 제2 메모리 블록에 저장된 제2 펌웨어가 램(124)에 로딩된다.
일 예로 제1 펌웨어는 부팅시 후술한 메인 펌웨어를 반도체 메모리 장치(110)로부터 독출하여 램(124)에 로딩하는 부트로더(bootloader) 펌웨어고, 제2 펌웨어는 컨트롤러(120)의 전반적인 동작을 수행하는 메인 펌웨어일 수 있다.
한편, 제1 펌웨어와 마찬가지로, 제2 펌웨어에 대한 리커버리 여부를 결정하기 위해 사용될 제2 펌웨어의 로딩 시간이 측정될 수 있다. 일 예로 제2 펌웨어를 로딩하기 위한 제1 펌웨어가 구동되면서, 제2 펌웨어의 로딩 시간이 측정될 수 있다.
전술한 제1 펌웨어의 로딩 시간 및 제2 펌웨어의 로딩 시간을 측정하기 위해 시스템 틱(system tick) 또는 RTC(real time clock) 등을 사용할 수 있다.
이처럼 제1 펌웨어의 로딩 시간 및 제2 펌웨어의 로딩 시간을 별도로 측정하는 이유는 제1 펌웨어와 제2 펌웨어의 리커버리 동작을 각각 나누어 처리하기 위해서이다.
만약, 서로 다른 메모리 블록에 분산된 펌웨어에 대한 리커버리를 동시에 수행하면, 하나의 메모리 블록에 저장된 펌웨어에 문제가 발생하여 리커버리가 수행되면 다른 메모리 블록에 저장된 펌웨어 역시 자신에 문제가 발생하였는지 여부와 상관없이 리커버리가 수행되어야 하는 단점이 있다.
하지만, 제1 펌웨어의 로딩 시간 및 제2 펌웨어의 로딩 시간을 별도로 측정하여 제1 펌웨어와 제2 펌웨어의 리커버리 동작을 각각 나누어 처리하면, 문제가 발생한 펌웨어에 대해서만 리커버리를 수행하면 되고 나머지 정상인 펌웨어에 대해서는 불필요한 리커버리를 수행할 필요가 없다는 장점이 있다.
또한, 부팅 시 타임아웃이 발생했을 때, 어떤 펌웨어를 로딩하는 과정에서 문제가 발생하여 타임아웃이 발생하였는지를 파악할 수 있으므로 디버깅 동작이 용이하다는 장점이 있다. 일 예로 제1 펌웨어가 ROM 장치에 의해 로딩되는 부트로더인 경우에는 제1 펌웨어에 오류가 발생하였는지 확인이 어려운데, 제1 펌웨어의 로딩 시간을 기초로 제1 펌웨어에 오류가 발생하였는지 여부를 확인할 수 있다.
이후, 제1 펌웨어의 로딩 시간은 제1 펌웨어에 대한 누적 로딩 시간 정보에 반영되고, 제2 펌웨어의 로딩 시간은 제2 펌웨어에 대한 누적 로딩 시간 정보에 반영된다. 즉, 매 부팅 시마다 제1 펌웨어 및 제2 펌웨어에 대한 누적 로딩 시간 정보가 갱신된다. 이는 이후에 저장 장치가 재부팅될 경우에 현재의 제1 펌웨어 및 제2 펌웨어의 로딩 시간까지 반영하기 위함이다.
제1 펌웨어의 로딩 시간이 제1 펌웨어에 대한 누적 로딩 시간 정보에 반영되는 시점 및 제2 펌웨어의 로딩 시간이 제2 펌웨어에 대한 누적 로딩 시간 정보에 반영되는 시점은 리커버리 동작을 수행할 지 여부가 결정되기 전이거나 또는 결정된 후일 수 있다.
한편, 저장된 펌웨어가 새로운 버전으로 업데이트되는 경우에는 펌웨어의 사이즈가 달라지므로 펌웨어의 로딩 시간이 변경되고, 이 경우 이전 버전의 펌웨어에 대한 누적 로딩 시간 정보는 더 이상 유효하지 않게 된다.
따라서, 제1 펌웨어에 대해 펌웨어 업데이트가 수행되면, 제1 펌웨어에 대한 누적 로딩 시간 정보가 초기화될 수 있다. 마찬가지로 제2 펌웨어에 대한 펌웨어 업데이트가 수행되면, 제2 펌웨어에 대한 누적 로딩 시간 정보가 초기화될 수 있다.
도 3은 도 1의 저장 장치에서 리커버리 동작 수행 여부를 결정하고, 리커버리를 수행하는 동작을 설명하는 도면이다.
리커버리 결정부(125)는 제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 제1 펌웨어에 대한 누적 로딩 시간 정보, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 하여, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정한다.
여기서 제1 펌웨어의 로딩 시간 및 제2 펌웨어의 로딩 시간은 도 2에서 설명한 바와 같이, 제1 펌웨어 및 제2 펌웨어를 램(124)에 로딩하는 과정에서 측정된다.
그리고 제1 펌웨어에 대한 누적 로딩 시간 정보 및 제2 펌웨어에 대한 누적 로딩 시간 정보는 반도체 메모리 장치(110)로부터 독출된다. 일 예로 제1 펌웨어에 대한 누적 로딩 시간 정보는 제1 펌웨어와 동일하게 제1 메모리 블록으로부터 독출할 수 있다. 또한, 제2 펌웨어에 대한 누적 로딩 시간 정보는 제2 펌웨어와 동일하게 제2 메모리 블록으로부터 독출할 수 있다.
마지막으로 부팅 횟수 정보는 저장 장치(100)가 이전에 몇 번 부팅이 되었는지를 알려주는 정보로서, 역시 반도체 메모리 장치(110)로부터 독출될 수 있다.
이처럼 각 펌웨어에 대한 누적 로딩 시간 정보를 각 펌웨어가 저장된 메모리 블록으로부터 독출하는 이유는, 램 또는 레지스터에 저장할 경우 SPO(Sudden Power Off)등으로 인해서 누적 로딩 시간 정보가 소실될 가능성이 있기 때문이다.
리커버리 결정부(125)는 제1 펌웨어에 대한 리커버리 여부를 결정하기 위해, 제1 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 제1 펌웨어에 대한 평균 로딩 시간을 계산한다.
일 예로, 제1 펌웨어에 대한 누적 로딩 시간의 총합이 A'이고 부팅 횟수가 C라면 제1 펌웨어에 대한 평균 로딩 시간 D = A'/C로 계산될 수 있다. 이 경우 각 부팅 과정에서의 로딩 시간 간의 가중치는 동일하다.
다른 예로, 제1 펌웨어에 대한 누적 로딩 시간 정보에서, 최근의 제1 펌웨어의 로딩 시간보다 이전의 제1 펌웨어의 로딩 시간에 대해서 추가로 가중치를 부여하여, 제1 펌웨어에 대한 평균 로딩 시간을 계산하는 것도 가능하다.
최초 부팅 시에 측정된 제1 펌웨어의 로딩 시간은 정상값일 가능성이 높지만, 부팅이 반복되면서 제1 메모리 블록의 읽기 카운트가 올라가면 이후 측정된 제1 펌웨어의 로딩 시간은 정상값에 비해 더 길어질 가능성이 높기 때문이다. 따라서, 이전의 제1 펌웨어의 로딩 시간에 대해서 추가로 가중치를 부여하면, 현재 부팅 시의 제1 펌웨어의 로딩 시간의 이상을 더 명확하게 확인할 수 있다.
구체적으로, 이전에 3번의 부팅 시 제1 펌웨어의 로딩 시간이 각각 1.0 / 1.2 / 1.4 ms라고 가정한다. 만약 각 부팅 과정에서의 로딩 시간 간의 가중치가 동일하면 제1 펌웨어에 대한 평균 로딩 시간은 (1.0 + 1.2 + 1.4)/3 = 1.2 ms가 된다.
그러나 첫번째 부팅 과정에 대한 가중치를 1, 두번째 부팅 과정에 대한 가중치를 0.8, 세번째 부팅 과정에 대한 가중치를 0.6이라고 하면, 제1 펌웨어에 대한 평균 로딩 시간은 (1.0 * 1 + 1.2 * 0.8 + 1.4 * 0.6)/(1.0 + 0.8 + 0.6) = 1.16 ms이 된다.
만약 4번째 부팅 시 제1 펌웨어의 로딩 시간이 1.45 ms라면, 제1 펌웨어의 로딩 시간과 제1 펌웨어에 대한 평균 로딩 시간과의 차이는 후자가 더 크므로, 후자가 리커버리가 필요한 상황으로 판단될 가능성이 높다.
리커버리 결정부(125)는 부팅 시 제1 펌웨어를 로딩하면서 측정한 제1 펌웨어의 로딩 시간 A과 전술한 제1 펌웨어에 대한 평균 로딩 시간 D를 비교하여 제1 펌웨어에 대한 리커버리 동작을 수행할 지 여부를 결정할 수 있다.
일 예로 리커버리 결정부(125)는 제1 펌웨어의 로딩 시간과 제1 펌웨어에 대한 평균 로딩 시간의 차이가 제1 임계값(e.g. 1ms) 이상인 경우에, 제1 펌웨어에 대한 리커버리 동작을 수행하도록 결정할 수 있다. 이때, 제1 임계값 이상의 차이를 두는 이유는 로딩 시간 측정 과정에서 내/외부 요인(e.g. 내부 온도/공급 전압)으로 인한 오차가 발생할 수 있기 때문이다.
그리고 리커버리 결정부(125)는 제2 펌웨어에 대한 리커버리 여부를 결정하기 위해, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 제2 펌웨어에 대한 평균 로딩 시간을 계산한다.
일 예로, 제2 펌웨어에 대한 누적 로딩 시간의 총 합이 B'이고 부팅 횟수가 C라면 제1 펌웨어에 대한 평균 로딩 시간 E = B'/C로 계산될 수 있다. 이 경우 각 부팅 과정에서의 로딩 시간 간의 가중치는 동일하다.
다른 예로, 제1 펌웨어와 동일하게, 제2 펌웨어에 대한 누적 로딩 시간 정보에서, 최근의 제2 펌웨어의 로딩 시간보다 이전의 제2 펌웨어의 로딩 시간에 대해서 추가로 가중치를 부여하여, 제2 펌웨어에 대한 평균 로딩 시간을 계산하는 것도 가능하다.
그리고 리커버리 결정부(125)는 부팅 시 제2 펌웨어를 로딩하면서 측정한 제2 펌웨어의 로딩 시간 B와 전술한 제1 펌웨어에 대한 평균 로딩 시간 E를 비교하여 제2 펌웨어에 대한 리커버리 동작을 수행할 지 여부를 결정할 수 있다.
일 예로 리커버리 결정부(125)는 제1 펌웨어와 동일하게, 제2 펌웨어의 로딩 시간과 제2 펌웨어에 대한 평균 로딩 시간의 차이가 제2 임계값 이상인 경우에, 제2 펌웨어에 대한 리커버리 동작을 수행하도록 결정할 수 있다.
전술한 제1 임계값 및 제2 임계값은 반복 실험을 통해 측정된 값을 기초로 결정될 수 있다.
전술한 제1 펌웨어에 대한 리커버리 동작 수행 여부와 제2 펌웨어에 대한 리커버리 동작 수행 여부는 독립적으로 결정된다. 즉, 리커버리 결정부(125)는 제1 펌웨어 및 제2 펌웨어 중 하나에 대해서만 리커버리 동작을 수행하도록 결정할 수 있지만, 제2 펌웨어 및 제2 펌웨어 모두에 대해 리커버리 동작을 수행하도록 결정할 수도 있다.
리커버리 수행부(126)는 리커버리 결정부(125)에서 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행할 수 있다.
이때, 리커버리 동작은 펌웨어가 저장된 메모리 블록을 소거(erase)한 후 다시 재프로그램(re-program)하는 방식으로 수행될 수 있다. 일반적인 플래쉬 메모리에서의 쓰기 동작에서는 데이터가 저장된 메모리 블록과 다른 별도의 메모리 블록에 새로 데이터를 쓰는 방식으로 리커버리 동작이 수행되나, 펌웨어에 대한 리커버리는 펌웨어가 저장된 메모리 블록을 직접 소거(erase)한 후 동일한 메모리 블록에 재프로그램하는 방식을 사용한다. 부팅 시 펌웨어를 로딩하기 위해서는 펌웨어가 저장된 메모리 블록의 위치가 고정될 필요가 있기 때문이다.
따라서, 리커버리 수행부(126)는 제1 펌웨어에 대한 리커버리 동작을 수행할 때, 제1 메모리 블록을 소거한 후 제1 메모리 블록에 제1 펌웨어를 재프로그램할 수 있다. 마찬가지로 리커버리 수행부(126)는 제2 펌웨어에 대한 리커버리 동작을 수행할 때, 제2 메모리 블록을 소거한 후 제2 메모리 블록에 제2 펌웨어를 재프로그램할 수 있다.
이때, 메모리 블록을 소거하면서 원래 메모리 블록에 저장된 펌웨어도 소거되기 때문에, 재프로그램을 위해 별도의 영역에 펌웨어의 백업이 저장되어 있어야 한다.
예를 들어, 제1 메모리 블록에 제1 펌웨어를 재프로그램할 경우 램에 로딩된 제1 펌웨어를 이용할 수도 있지만, 반도체 메모리 장치(110) 내의 메모리 블록들 중 임의의 백업 메모리 블록에 저장된 제1 펌웨어를 독출하여 재프로그램할 수 있다.
마찬가지로, 제2 메모리 블록에 제2 펌웨어를 재프로그램할 경우 램에 로딩된 제2 펌웨어를 이용할 수도 있지만, 반도체 메모리 장치(110) 내의 메모리 블록들 중 임의의 백업 메모리 블록에 저장된 제2 펌웨어를 독출하여 재프로그램할 수 있다.
도 4는 본 개시의 실시예에서, 펌웨어를 로딩하고 펌웨어에 대한 리커버리 동작을 수행할지 여부를 결정하는 과정을 나타낸 순서도이다.
이하, 도 1에서 설명한 저장 장치(100)에 의해 본 과정이 수행되는 것을 예시로 설명한다.
먼저 반도체 메모리 장치(110) 내의 제1 메모리 블록에 저장된 제1 펌웨어가 램(124)에 로딩된다(S410). 이때, 도 2에서 설명한 바와 같이 제1 펌웨어의 로딩 시간이 측정된다.
그리고 부팅 횟수 및 제1 펌웨어의 누적 로딩 시간 정보를 기초로 하여, 리커버리 결정부(125)는 제1 펌웨어에 대한 평균 로딩 시간을 계산한다(S420). 이때, 제1 펌웨어의 누적 로딩 시간 정보는 반도체 메모리 장치(110) 내에 저장되고, 일 예로 제1 펌웨어와 동일하게 제1 메모리 블록으로부터 독출될 수 있다.
제1 펌웨어가 로딩이 완료되면, 반도체 메모리 장치(110) 내의 제2 메모리 블록에 저장된 제2 펌웨어가 램(124)에 로딩된다(S430). 이때, S410 단계에서 로딩된 제1 펌웨어는 제2 펌웨어를 로딩하는 동작을 수행하기 위한 펌웨어로서, 프로세서(122)가 로딩된 제1 펌웨어를 구동하여, 제2 펌웨어가 램(124)에 로딩되도록 한다.
그리고 부팅 횟수 및 제2 펌웨어의 누적 로딩 시간 정보를 기초로 하여, 리커버리 결정부(125)는 제2 펌웨어에 대한 평균 로딩 시간을 계산한다(S440). 이때, 제2 펌웨어의 누적 로딩 시간 정보는 제2 펌웨어와 동일하게 제2 메모리 블록으로부터 독출될 수 있다.
이후, 리커버리 결정부(125)는 S410 단계에서 측정된 제1 펌웨어의 로딩 시간, S420 단계에서 계산한 제1 펌웨어에 대한 평균 로딩 시간, S430 단계에서 측정된 제2 펌웨어의 로딩 시간, S440 단계에서 계산한 제2 펌웨어에 대한 평균 로딩 시간을 이용하여, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정할 수 있다(S450). 이하, 리커버리 동작을 수행하는 구체적인 과정은 도 5에서 후술한다.
도 5는 본 개시의 실시예에서, 펌웨어에 대한 리커버리 동작 수행 여부를 결정하는 구체적인 과정을 나타낸 순서도이다.
이하, 도 1에서 설명한 저장 장치(100)에 의해 본 과정이 수행되는 것을 예시로 설명한다.
먼저 리커버리 결정부(125)는 제1 펌웨어의 로딩 시간 A와 제1 펌웨어에 대한 평균 로딩 시간 D를 비교한다(S510).
만약 제1 펌웨어의 로딩 시간과 제1 펌웨어에 대한 평균 로딩 시간의 차이(A-D)가 제1 임계값 이상인 경우(S520-Y), 리커버리 수행부(126)는 제1 펌웨어에 대한 리커버리 동작을 수행한다(S530). 반대로 제1 펌웨어의 로딩 시간과 제1 펌웨어에 대한 평균 로딩 시간의 차이(A-D)가 제1 임계값 미만인 경우(S520-N), 제1 펌웨어에 대한 리커버리 동작은 수행되지 않는다.
이후, 리커버리 결정부(125)는 제2 펌웨어의 로딩 시간 B와 제2 펌웨어에 대한 평균 로딩 시간 E를 비교한다(S540).
만약 제2 펌웨어의 로딩 시간과 제2 펌웨어에 대한 평균 로딩 시간의 차이(B-E)가 제2 임계값 이상인 경우(S550-Y), 리커버리 수행부(126)는 제2 펌웨어에 대한 리커버리 동작을 수행한다(S560). 반대로 제2 펌웨어의 로딩 시간과 제2 펌웨어에 대한 평균 로딩 시간의 차이(B-E)가 제1 임계값 미만인 경우(S560-N), 제2 펌웨어에 대한 리커버리 동작은 수행되지 않는다.
도 3에서 설명한 바와 같이, S530 단계에서 제1 펌웨어에 대한 리커버리 동작을 수행할 때, 리커버리 수행부(126)는 제1 메모리 블록을 소거한 후 제1 메모리 블록에 제1 펌웨어를 재프로그램할 수 있다. 마찬가지로 S560 단계에서 제2 펌웨어에 대한 리커버리 동작을 수행할 때, 리커버리 수행부(126)는 제2 메모리 블록을 소거한 후 제2 메모리 블록에 제2 펌웨어를 재프로그램할 수 있다.
도 6은 본 개시의 실시예에 따른 저장 장치의 동작 방법을 나타낸 순서도이다.
이하, 도 1에서 설명한 저장 장치(100)에 의해 본 과정이 수행되는 것을 예시로 설명한다.
먼저, 저장 장치(100)는 반도체 메모리 장치(110) 내의 제1 메모리 블록에 저장된 제1 펌웨어를 컨트롤러(120) 내부의 램(124)에 로딩한다(S610). 전술한 바와 같이, 제1 펌웨어가 램(124)에 로딩되는 과정에서 제1 펌웨어의 로딩 시간이 측정된다.
그리고 저장 장치(100)는 반도체 메모리 장치(110) 내의 제1 메모리 블록에 저장된 제1 펌웨어를 컨트롤러(120) 내부의 램(124)에 로딩한다(S620). 역시 전술한 바와 같이, 제2 펌웨어가 램(124)에 로딩되는 과정에서 제2 펌웨어의 로딩 시간이 측정된다.
전술한 바와 같이, 제1 펌웨어가 제2 펌웨어를 로딩하는 동작을 수행하기 위한 펌웨어인 경우 제1 펌웨어는 제2 펌웨어보다 이전에 로딩된다.
이후, 저장 장치(100)의 컨트롤러(120) 내의 리커버리 결정부(125)는 제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 제1 펌웨어에 대한 누적 로딩 시간 정보, 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정한다(S630).
그리고 저장 장치(100)의 컨트롤러(120) 내의 리커버리 수행부(126)는 리커버리 결정부(125)에서 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 제1 펌웨어 및 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행한다(S640). 이때, 도 3에서 설명한 바와 같이, 리커버리 동작은 펌웨어가 저장된 메모리 블록을 소거(erase)한 후 다시 재프로그램(re-program)하는 방식으로 수행될 수 있다.
이하, 본 개시의 실시예에서 설명한 저장 장치의 효과에 대해 설명한다.
본 개시의 실시예에서 설명한 저장 장치는 테스트 메모리 블록을 사용하지 않기 때문에, 기존의 저장 장치에 비해서 별도의 테스트 메모리 블록에 사용되는 공간을 절약하고 부팅시 테스트 메모리 블록에 저장된 데이터를 독출하는 과정에서 발생하는 시간을 단축할 수 있다는 장점이 있다.
그리고 서로 다른 메모리 블록에 분산된 펌웨어에 대해서 각각 독립적으로 리커버리가 수행될 수 있기 때문에, 기존의 저장 장치에서 리커버리가 필요하지 않은 펌웨어가 저장된 메모리 블록에 대해서도 리커버리가 수행되면서 소거/쓰기(Erase/Write) 카운트가 증가하는 문제를 방지할 수 있다.
따라서, 본 개시의 실시예에서 설명한 저장 장치는 부팅 시간을 단축하고, 불필요한 메모리 블록 소비를 방지하면서도 펌웨어를 안정적으로 유지할 수 있다는 장점이 있다.
본 개시의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 개시의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 개시의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출될 수 있는 모든 변경 또는 변형된 형태가 본 개시의 범위에 포함되는 것으로 해석되어야 한다.
상술한 실시예들에서, 모든 단계는 선택적으로 수행의 대상이 되거나 생략의 대상이 될 수 있다. 또한, 각 실시예에서 단계들은 반드시 순서대로 일어날 필요는 없으며 뒤바뀔 수 있다.
한편, 본 명세서와 도면에 개시된 본 명세서의 실시예들은 본 명세서의 기술 내용을 쉽게 설명하고 본 명세서의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 명세서의 범위를 한정하고자 하는 것은 아니다. 즉 본 명세서의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 명세서가 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
한편, 본 명세서와 도면에서 비록 특정 용어들이 사용되었으나, 이는 단지 본 개시의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 의미로 사용된 것이지, 본 개시의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예 외에도 본 개시의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명하다.
50 : 호스트
100 : 저장 장치
110 : 반도체 메모리 장치
120 : 컨트롤러
121 : 호스트 인터페이스
122 : 프로세서
123 : 플래시 인터페이스
124 : 램
125 : 리커버리 결정부
126 : 리커버리 수행부

Claims (17)

  1. 복수의 메모리 블록들을 포함하는 반도체 메모리 장치; 및
    상기 반도체 메모리 장치를 제어하는 컨트롤러;를 포함하되,
    상기 반도체 메모리 장치는,
    제1 펌웨어를 상기 복수의 메모리 블록들 중 임의의 제1 메모리 블록에 저장하며, 제2 펌웨어를 상기 복수의 메모리 블록들 중 임의의 제2 메모리 블록에 저장하고,
    상기 컨트롤러는,
    상기 제1 펌웨어의 로딩 시간, 상기 제2 펌웨어의 로딩 시간, 상기 제1 펌웨어에 대한 누적 로딩 시간 정보, 상기 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로, 상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정하는 리커버리 결정부; 및
    상기 리커버리 결정부에서 상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하는 리커버리 수행부;를 포함하는 저장 장치.
  2. 제 1항에 있어서,
    상기 제1 펌웨어는,
    상기 제2 펌웨어보다 먼저 로딩되고,
    상기 제2 펌웨어를 로딩하는 동작을 수행하기 위한 펌웨어인 저장 장치.
  3. 제 1항에 있어서,
    상기 리커버리 결정부는,
    상기 제1 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 상기 제1 펌웨어에 대한 평균 로딩 시간을 계산하고,
    상기 제1 펌웨어의 로딩 시간과 상기 제1 펌웨어에 대한 평균 로딩 시간의 차이가 제1 임계값 이상인 경우에, 상기 제1 펌웨어에 대한 리커버리 동작을 수행하도록 결정하는 저장 장치.
  4. 제 3항에 있어서,
    상기 리커버리 수행부는,
    상기 제1 메모리 블록을 소거한 후, 상기 제1 메모리 블록에 상기 제1 펌웨어를 재프로그램하는 저장 장치.
  5. 제 1항에 있어서,
    상기 리커버리 결정부는,
    상기 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 상기 제2 펌웨어에 대한 평균 로딩 시간을 계산하고,
    상기 제2 펌웨어의 로딩 시간과 상기 제2 펌웨어에 대한 평균 로딩 시간의 차이가 제2 임계값 이상인 경우에, 상기 제2 펌웨어에 대한 리커버리 동작을 수행하도록 결정하는 저장 장치.
  6. 제 5항에 있어서,
    상기 리커버리 수행부는,
    상기 제2 메모리 블록을 소거한 후, 상기 제2 메모리 블록에 상기 제1 펌웨어를 재프로그램하는 저장 장치.
  7. 제 1항에 있어서,
    상기 제1 펌웨어에 대한 누적 로딩 시간 정보는 상기 제1 메모리 블록에 저장되는 저장 장치.
  8. 제 1항에 있어서,
    상기 제2 펌웨어에 대한 누적 로딩 시간 정보는 상기 제2 메모리 블록에 저장되는 저장 장치.
  9. 반도체 메모리 장치를 제어하는 컨트롤러에 있어서,
    제1 펌웨어의 로딩 시간, 제2 펌웨어의 로딩 시간, 상기 제1 펌웨어에 대한 누적 로딩 시간 정보, 상기 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로, 상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정하는 리커버리 결정부; 및
    상기 리커버리 결정부에서 상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하는 리커버리 수행부;를 포함하는 컨트롤러.
  10. 복수의 메모리 블록들을 포함하는 반도체 메모리 장치 및 상기 반도체 메모리 장치를 제어하는 컨트롤러를 포함하는 저장 장치의 동작 방법에 있어서,
    상기 복수의 메모리 블록들 중 임의의 제1 메모리 블록에 저장된 제1 펌웨어를 로딩하는 단계;
    상기 복수의 메모리 블록들 중 임의의 제2 메모리 블록에 저장된 제2 펌웨어를 로딩하는 단계;
    상기 제1 펌웨어의 로딩 시간, 상기 제2 펌웨어의 로딩 시간, 상기 제1 펌웨어에 대한 누적 로딩 시간 정보, 상기 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로, 상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리(recovery) 동작을 수행할 지 여부를 결정하는 단계; 및
    상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하기로 결정되면, 상기 제1 펌웨어 및 상기 제2 펌웨어 중 적어도 하나에 대한 리커버리 동작을 수행하는 단계;를 포함하는 저장 장치의 동작 방법.
  11. 제 10항에 있어서,
    상기 제1 펌웨어는,
    상기 제2 펌웨어보다 먼저 로딩되고,
    상기 제2 펌웨어를 로딩하는 동작을 수행하기 위한 펌웨어인 저장 장치의 동작 방법.
  12. 제 10항에 있어서,
    상기 리커버리(recovery) 동작을 수행할 지 여부를 결정하는 단계는,
    상기 제1 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 상기 제1 펌웨어에 대한 평균 로딩 시간을 계산하고,
    상기 제1 펌웨어의 로딩 시간과 상기 제1 펌웨어에 대한 평균 로딩 시간의 차이가 제1 임계값 이상인 경우에, 상기 제1 펌웨어에 대한 리커버리 동작을 수행하도록 결정하는 저장 장치의 동작 방법.
  13. 제 12항에 있어서,
    상기 리커버리 동작을 수행하는 단계는,
    상기 제1 메모리 블록을 소거한 후, 상기 제1 메모리 블록에 상기 제1 펌웨어를 재프로그램하는 저장 장치의 동작 방법.
  14. 제 10항에 있어서,
    상기 리커버리(recovery) 동작을 수행할 지 여부를 결정하는 단계는,
    상기 제2 펌웨어에 대한 누적 로딩 시간 정보 및 부팅 횟수 정보를 기초로 상기 제2 펌웨어에 대한 평균 로딩 시간을 계산하고,
    상기 제2 펌웨어의 로딩 시간과 상기 제2 펌웨어에 대한 평균 로딩 시간의 차이가 제2 임계값 이상인 경우에, 상기 제2 펌웨어에 대한 리커버리 동작을 수행하도록 결정하는 저장 장치의 동작 방법.
  15. 제 14항에 있어서,
    상기 리커버리 동작을 수행하는 단계는,
    상기 제2 메모리 블록을 소거한 후, 상기 제2 메모리 블록에 상기 제1 펌웨어를 재프로그램하는 저장 장치의 동작 방법.
  16. 제 10항에 있어서,
    상기 제1 펌웨어에 대한 누적 로딩 시간 정보는 상기 제1 메모리 블록에 저장되는 저장 장치의 동작 방법.
  17. 제 10항에 있어서,
    상기 제2 펌웨어에 대한 누적 로딩 시간 정보는 상기 제2 메모리 블록에 저장되는 저장 장치의 동작 방법.
KR1020190004970A 2019-01-15 2019-01-15 저장 장치, 컨트롤러 및 저장 장치의 동작 방법 KR20200088565A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190004970A KR20200088565A (ko) 2019-01-15 2019-01-15 저장 장치, 컨트롤러 및 저장 장치의 동작 방법
US16/537,830 US10877676B2 (en) 2019-01-15 2019-08-12 Storage device, controller and method for operating storage device
CN201910932838.7A CN111435305B (zh) 2019-01-15 2019-09-29 存储装置、控制器及操作存储装置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190004970A KR20200088565A (ko) 2019-01-15 2019-01-15 저장 장치, 컨트롤러 및 저장 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200088565A true KR20200088565A (ko) 2020-07-23

Family

ID=71517678

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190004970A KR20200088565A (ko) 2019-01-15 2019-01-15 저장 장치, 컨트롤러 및 저장 장치의 동작 방법

Country Status (3)

Country Link
US (1) US10877676B2 (ko)
KR (1) KR20200088565A (ko)
CN (1) CN111435305B (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
KR20070010892A (ko) 2005-07-20 2007-01-24 엘지전자 주식회사 광디스크장치의 부팅시간에 따른 제어방법
US20080235501A1 (en) * 2007-03-19 2008-09-25 James Ray Bailey Method For Detecting and Correcting Firmware Corruption
US8589730B2 (en) 2010-08-31 2013-11-19 Apple Inc. Handling errors during device bootup from a non-volatile memory
WO2013027642A1 (en) * 2011-08-19 2013-02-28 Kabushiki Kaisha Toshiba Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device
US9092300B2 (en) * 2013-04-18 2015-07-28 Ottr Products, Llc Peripheral device and method for updating firmware thereof
US9558080B2 (en) * 2013-10-31 2017-01-31 Microsoft Technology Licensing, Llc Crash recovery using non-volatile memory
US10558524B2 (en) * 2015-12-29 2020-02-11 Cnex Labs, Inc. Computing system with data recovery mechanism and method of operation thereof

Also Published As

Publication number Publication date
US20200225858A1 (en) 2020-07-16
US10877676B2 (en) 2020-12-29
CN111435305B (zh) 2023-04-11
CN111435305A (zh) 2020-07-21

Similar Documents

Publication Publication Date Title
US10372342B2 (en) Multi-level cell solid state device and method for transferring data between a host and the multi-level cell solid state device
US10990378B2 (en) Storage device and operating method thereof
US20220342813A1 (en) Storing highly read data at low impact read disturb pages of a memory device
US20220214970A1 (en) Power loss protection in memory sub-systems
US11656777B2 (en) Memory system and operating method thereof
KR20210079549A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US11960888B2 (en) Memory system, memory controller, and method for operating memory system
US11614886B2 (en) Memory system and operating method thereof
US11474721B2 (en) Storage device managing bad block information of memory blocks and operating method thereof
US11048440B2 (en) Memory system, memory device and operating method thereof
US10877676B2 (en) Storage device, controller and method for operating storage device
US11640263B2 (en) Memory system and operating method thereof
US20240143168A1 (en) Storage device controlling garbage collection or wear leveling on the basis of timestamp, and method thereof
US11404137B1 (en) Memory system and operating method of memory system
US11704050B2 (en) Memory system for determining a memory area in which a journal is stored according to a number of free memory blocks
US11626175B2 (en) Memory system and operating method for determining target memory block for refreshing operation
US20240202090A1 (en) Storage device for storing temperature log information according to temperature storage level and operating method thereof
US11709610B2 (en) Memory system, memory controller and operating method
US20230144376A1 (en) Performance optimization device of memory system and operating method thereof
KR20220150180A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220077689A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20210149314A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20220059272A (ko) 저장 장치 및 그 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination