KR20230069661A - 메모리 시스템 및 이의 동작 방법 - Google Patents

메모리 시스템 및 이의 동작 방법 Download PDF

Info

Publication number
KR20230069661A
KR20230069661A KR1020210155883A KR20210155883A KR20230069661A KR 20230069661 A KR20230069661 A KR 20230069661A KR 1020210155883 A KR1020210155883 A KR 1020210155883A KR 20210155883 A KR20210155883 A KR 20210155883A KR 20230069661 A KR20230069661 A KR 20230069661A
Authority
KR
South Korea
Prior art keywords
debugging
firmware
memory
normal
execution unit
Prior art date
Application number
KR1020210155883A
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 KR1020210155883A priority Critical patent/KR20230069661A/ko
Priority to US17/730,121 priority patent/US11822794B2/en
Priority to CN202210712578.4A priority patent/CN116129983A/zh
Publication of KR20230069661A publication Critical patent/KR20230069661A/ko
Priority to US18/476,145 priority patent/US20240020026A1/en

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/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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/142Reconfiguring to eliminate the error
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • 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/073Error 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 memory management context, e.g. virtual memory or cache management
    • 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/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/0793Remedial or corrective actions
    • 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/1441Resetting or repowering
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • G11C29/16Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/46Test trigger logic
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

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)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 기술은 데이터를 저장하도록 구성된 저장 장치; 노말 펌웨어(normal firmware) 및 디버깅 펌웨어(debugging firmware)가 저장된 시스템 메모리; 상기 노말 펌웨어 또는 상기 디버깅 펌웨어를 실행하도록 구성된 펌웨어 실행부; 및 상기 노말 펌웨어에 의해 구동되는 노말 모드(normal mode)에서, 상기 저장 장치를 컨트롤하도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는 상기 노말 모드에서 정정이 불가능한 에러가 검출되면 상기 노말 모드를 디버깅 모드(debugging mode)로 전환하기 위하여 상기 시스템 메모리에 저장된 상기 디버깅 펌웨어를 상기 펌웨어 실행부에 업로드하고, 상기 펌웨어 실행부는 업로드된 상기 디버깅 펌웨어를 실행하여 상기 저장 장치에 대한 디버깅 동작을 수행하는 메모리 시스템 및 이의 동작 방법을 포함한다.

Description

메모리 시스템 및 이의 동작 방법{Memory system and operation method of the memory system}
본 발명은 메모리 시스템 및 이의 동작 방법에 관한 것으로, 보다 구체적으로는 펌웨어(firmware)에 의해 구동될 수 있는 메모리 시스템 및 이의 동작 방법에 관한 것이다.
메모리 시스템(memory system)은 데이터가 저장되는 저장 장치(storage device), 저장 장치를 제어할 수 있는 컨트롤러(controller) 및 펌웨어(firmware)가 저장되는 시스템 메모리(system memory)를 포함할 수 있다.
펌웨어는 하드웨어를 컨트롤할 수 있는 소프트웨어이다. 펌웨어는 롬(Read Only Memory; ROM)에 저장될 수 있다. 펌웨어는 컨트롤러에서 수행될 수 있는 일반 소프트웨어보다 우선권을 가질 수 있다. 따라서, 메모리 시스템이 부팅(booting)되면 펌웨어가 가장 먼저 실행될 수 있다.
본 발명의 실시예는 메모리 시스템에 추가 장치를 연결하지 않고 노말 펌웨어(normal firmware)와 디버깅 펌웨어(debugging firmware)를 선택적으로 실행할 수 있는 메모리 시스템 및 이의 동작 방법을 제공한다.
본 발명의 실시 예에 따른 메모리 시스템은, 데이터를 저장하도록 구성된 저장 장치; 노말 펌웨어(normal firmware) 및 디버깅 펌웨어(debugging firmware)가 저장된 시스템 메모리; 상기 노말 펌웨어 또는 상기 디버깅 펌웨어를 실행하도록 구성된 펌웨어 실행부; 및 상기 노말 펌웨어에 의해 구동되는 노말 모드(normal mode)에서, 상기 저장 장치를 컨트롤하도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는 상기 노말 모드에서 정정이 불가능한 에러가 검출되면 상기 노말 모드를 디버깅 모드(debugging mode)로 전환하기 위하여 상기 시스템 메모리에 저장된 상기 디버깅 펌웨어를 상기 펌웨어 실행부에 업로드하고, 상기 펌웨어 실행부는 업로드된 상기 디버깅 펌웨어를 실행하여 상기 저장 장치에 대한 디버깅 동작을 수행한다.
본 발명의 실시 예에 따른 메모리 시스템의 동작 방법은, 시스템 메모리에 노말 펌웨어 및 디버깅 펌웨어를 저장하는 단계; 상기 시스템 메모리에 저장된 상기 노말 펌웨어를 펌웨어 실행부에 업로드하는 단계; 상기 노말 펌웨어에 따라 컨트롤러를 노말 모드로 셋업하는 단계; 상기 노말 모드로 구동중인 저장 장치에서 에러가 발생하면, 상기 노말모드를 디버깅 모드로 전환하기 위하여 상기 시스템 메모리에 저장된 상기 디버깅 펌웨어를 상기 펌웨어 실행부에 업로드하는 단계; 상기 디버깅 펌웨어에 따라 상기 저장 장치를 테스트하는 디버깅 동작을 수행하는 단계; 및 상기 디버깅 동작이 완료된 후, 상기 시스템 메모리에 저장된 상기 노말 펌웨어를 상기 펌웨어 실행부에 업로드하여 상기 디버깅 모드를 상기 노말 모드로 전환하는 단계를 포함한다.
본 기술에 따르면, 메모리 시스템에서 에러가 발생한 경우, 추가적인 장치의 연결 없이 디버깅 펌웨어를 실행하여 에러가 발생한 메모리 블록을 소거할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 메모리 장치를 설명하기 위한 도면이다.
도 3은 메모리 셀 어레이를 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 시스템 메모리 및 펌웨어 실행부를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 7a 내지 도 7i는 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법을 상세히 설명하기 위한 도면들이다.
도 8은 본 발명의 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 9는 본 발명의 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(memory system; MEMS)은 호스트(host; HT)의 요청에 응답하여 데이터(DATA)를 저장하거나, 소거 또는 출력하도록 구성될 수 있다. 예를 들면, 메모리 시스템(MEMS)은 저장 장치(storage device; STD), 컨트롤러(controller; CON), 시스템 메모리(system memory; SMEM) 및 펌웨어 실행부(firmware implementer; FWIP)를 포함할 수 있다.
저장 장치(STD)는 제1 내지 제n 메모리 장치들(memory devices; M1~Mn)을 포함할 수 있다. 제1 내지 제n 메모리 장치들(M1~Mn)은 휘발성(volatile) 메모리 장치 또는 비휘발성(non-volatile) 메모리 장치로 구성될 수 있다. 휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 중단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM) 또는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM)로 구성될 수 있다. 비휘발성 메모리 장치는 전원이 중단되어도 저장된 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM) 또는 플래시 메모리(Flash Memory)로 구성될 수 있다.
메모리 시스템(MEMS)은 외부로부터 외부 전원(ePWR)을 공급받고, 외부 전원(ePWR)의 레벨을 조절한 내부 전원을 저장 장치(STD), 컨트롤러(CON), 시스템 메모리(SMEM) 및 펌웨어 실행부(FWIP)의 전원으로 사용할 수 있다. 외부 전원(ePWR)은 호스트(HT)로부터 공급받거나, 별도의 전원 공급 장치로부터 공급받을 수 있다.
컨트롤러(CON)는 호스트(HT)로부터 출력된 요청(request)이 수신되면, 요청(RQ)에 따라 저장 장치(STD)를 제어하기 위한 커맨드(command)를 생성할 수 있다. 컨트롤러(CON)는 호스트(HT)에서 사용되는 논리 어드레스(logical address)와 저장 장치(STD)에서 사용되는 물리 어드레스(physical address)를 관리하고, 다양한 동작들에 대한 요청(RQ)을 커맨드(CMD)로 변환 및 출력하도록 구성될 수 있다. 예를 들면, 프로그램 동작 시 컨트롤러(CON)는 호스트(HT)에서 사용되는 논리 어드레스와 저장 장치(STD)에서 사용되는 물리 어드레스를 서로 맵핑할 수 있다. 리드 동작 시, 컨트롤러(CON)는 호스트(HT)가 요청한 논리 어드레스에 맵핑된 물리 어드레스를 찾고, 물리 어드레스에 따라 저장 장치(STD)로부터 리드된 데이터를 호스트(HT)에게 출력할 수 있다.
시스템 메모리(SMEM)는 노말 펌웨어(normal firmware; NFW) 및 디버깅 펌웨어(debugging firmware; DFW)를 저장할 수 있다. 시스템 메모리(SMEM)는 전원 공급이 중단되어도 데이터가 유지되는 비휘발성 메모리 장치로 구성될 수 있다. 예를 들면, 시스템 메모리(SMEM)는 롬(Read Only Memory; ROM), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM) 또는 플래시 메모리(Flash Memory)로 구성될 수 있다.
펌웨어 실행부(FWIP)는 시스템 메모리(SMEM)에 저장된 노말 펌웨어(NFW) 및 디버깅 펌웨어(DFW) 중에서 선택된 펌웨어를 펌웨어 실행부(FWIP) 내부에 업로드(upload)하고, 업로드된 펌웨어를 실행하도록 구성될 수 있다. 예를 들면 펌웨어 실행부(FWIP)는 노말 펌웨어(NFW) 또는 디버깅 펌웨어(DFW)를 저장하고 구동하기 위한 프로세서(processor)와, 프로세서의 제어에 따라 다양한 신호들을 입출력하도록 구성된 트리밍 회로를 포함할 수 있다.
노말 펌웨어(NFW)는 메모리 시스템(MEMS)이 정상적으로 동작할 때 실행될 수 있고, 디버깅 펌웨어(DFW)는 노말 모드에서 검출된 에러(error)의 정정이 불가능한 경우, 에러가 발생한 메모리 블록의 디버깅 소거 동작을 수행하기 위하여 실행될 수 있다. 예를 들면, 노말 펌웨어(NFW)는 메모리 시스템(MEMS)에 포함된 하드웨어를 구동하기 위한 소프트웨어일 수 있고, 디버깅 펌웨어(DFW)는 메모리 시스템(MEMS)에서 에러를 검출하고, 에러가 검출된 메모리 블록을 소거하여 메모리 블록이 노말 모드에서 재 사용되도록하기 위한 소프트웨어일 수 있다. 예를 들면, 노말 펌웨어(NFW)는 다양한 장치들을 셋업(setup)하기 위한 셋업 요청(SRQ)을 포함할 수 있다. 디버깅 펌웨어(DFW)는 디버깅 프로그램, 디버깅 리드, 디버깅 소거 등의 동작을 수행하기 위한 다양한 디버깅 커맨드들(dCMD)과, 저장 장치(STD)에 액세스하기 위한 어드레스(ADD)와, 디버깅 프로그램 동작을 위한 디버깅 데이터(dDATA)를 포함할 수 있다. 이 외에도 디버깅 펌웨어(DFW)는 디버깅 동작 시 저장 장치(STD)를 설정하기 위한 파라미터와 저장 장치(STD)를 직접 제어하기 위한 다양한 정보를 포함할 수 있다.
펌웨어 실행부(FWIP)에 노말 펌웨어(NFW)가 업로드(upload)되면, 펌웨어 실행부(FWIP)는 노말 펌웨어(NFW)를 실행하여 컨트롤러(CON)에게 셋업 요청(SRQ)을 출력할 수 있다. 펌웨어 실행부(FWIP)에 디버깅 펌웨어(DFW)가 업로드되면, 펌웨어 실행부(FWIP)는 디버깅 펌웨어(DFW)를 실행하여 컨트롤러(CON)에게 디버깅 커맨드(dCMD), 어드레스(ADD) 및 디버깅 데이터(dDATA)를 전송할 수 있다. 펌웨어 실행부(FWIP)는 디버깅 동작 시 저장 장치(STD)에서 리드된 데이터(rDATA)를 컨트롤러(CON)를 통해 수신받을 수 있고, 리드된 데이터(rDATA)에 포함된 에러 비트의 수를 카운트할 수 있다. 펌웨어 실행부(FWIP)는 디버깅 동작이 완료되면, 디버깅 결과(dRST)를 컨트롤러(CON)에게 출력할 수 있다.
펌웨어 실행부(FWIP)는 리셋 신호(RS)가 수신되면, 펌웨어 실행부(FWIP) 내부에 업로드되어 있는 펌웨어를 삭제할 수 있다.
메모리 시스템(MEMS)에서 에러가 검출되지 않은 정상 상태인 경우에는 펌웨어 실행부(FWIP)에 노말 펌웨어(NFW)가 업로드(upload)될 수 있고, 메모리 시스템(MEMS)에서 정정 불가능한 에러가 검출된 경우에는 펌웨어 실행부(FWIP)에 디버깅 펌웨어(DFW)가 업로드(upload)될 수 있다.
예를 들면, 메모리 시스템(MEMS)에서 정정이 불가능한 에러가 검출되면, 펌웨어 실행부(FWIP)에 업로드된 노말 펌웨어(NFW)는 디버깅 펌웨어(DFW)로 교체되고, 디버깅 펌웨어(DFW)에는 디버깅 펌웨어(DFW)가 업로드(upload)될 수 있다. 정정이 불가능한 에러는 노말 모드의 에러 정정 기능으로 해결이 안되는 문제를 의미한다. 예를 들면, 저장 장치(STD)에서 검출된 에러 비트의 개수가 노말 기준 개수보다 많은 경우, 컨트롤러(CON)가 에러를 정정할 수 없는 상태가 될 수 있다.
펌웨어 실행부(FWIP)에 업로드된 디버깅 펌웨어(DFW)는 이러한 에러를 검출하고 정정하기 위한 다양한 디버깅 커맨드들(dCMD), 어드레스(ADD) 및 디버깅 데이터(dDATA)를 포함할 수 있다. 디버깅 펌웨어(DFW)에 포함된 어드레스(ADD)는, 디버깅 펌웨어(DFW)가 저장 장치(STD)에 직접적으로 액세스할 수 있도록 저장 장치(STD)의 물리 어드레스일 수 있다.
에러를 검출하고 정정하는 디버깅 동작이 완료되면, 펌웨어 실행부(FWIP)에 업로드된 디버깅 펌웨어(DFW)는 노말 펌웨어(NFW)로 다시 교체될 수 있다. 따라서, 메모리 시스템(MEMS)이 재부팅되면, 펌웨어 실행부(FWIP)에 저장된 노말 펌웨어(NFW)가 실행될 수 있다.
시스템 메모리(SMEM) 및 펌웨어 실행부(FWIP)는 컨트롤러(CON)에 의해 동작할 수 있다. 예를 들면, 컨트롤러(CON)는 저장 장치(STD)로부터 리드된 데이터에 컨트롤러(CON)에 의한 정정이 불가능한 에러가 발생하면 시스템 메모리(SMEM)에 디버깅 신호(DS)를 출력할 수 있고, 디버깅 동작이 완료되면 시스템 메모리(SMEM)에 노말 신호(NS)를 출력할 수 있다. 시스템 메모리(SMEM)는 디버깅 신호(DS)에 응답하여 디버깅 펌웨어(DFW)를 펌웨어 실행부(FWIP)에 업로드할 수 있고, 노말 신호(NS)에 응답하여 노말 펌웨어(NFW)를 펌웨어 실행부(FWIP)에 업로드할 수 있다. 또한, 컨트롤러(CON)는 펌웨어 실행부(FWIP)에 리셋 신호(RS)를 출력하여 펌웨어 실행부(FWIP)를 리셋할 수 있다. 펌웨어 실행부(FWIP)가 리셋되면 이전에 업로드된 펌웨어가 삭제되므로, 펌웨어 실행부(FWIP)는 다른 펌웨어를 새로 업로드(upload)할 수 있는 상태가 될 수 있다.
도 2는 메모리 장치를 설명하기 위한 도면이다.
도 2를 참조하면, 저장 장치(도 1의 STD)에 포함된 제1 내지 제n 메모리 장치들(M1~Mn)은 서로 동일하게 구성되므로, 이 중에서 제n 메모리 장치(Mn)가 예로써 도시된다.
제n 메모리 장치(Mn)는 데이터가 저장되는 메모리 셀 어레이(memory cell array; 110)와, 프로그램, 리드 또는 소거 동작을 수행할 수 있는 주변 회로(peripheral circuit; 120~170)를 포함할 수 있다.
메모리 셀 어레이(110)는 데이터가 저장되는 복수의 메모리 블록들을 포함할 수 있다. 메모리 블록들 각각은 복수의 메모리 셀들을 포함하며, 메모리 셀들은 기판에 평행하게 배열되는 2차원 구조 또는 기판에 수직 방향으로 적층되는 3차원 구조로 구현될 수 있다.
주변 회로(120~170)는 로우 디코더(row decoder; 120), 전압 생성부(voltage generator; 130), 페이지 버퍼 그룹(page buffer group; 140), 컬럼 디코더(column decoder; 150), 입출력 회로(input/output circuit; 160) 및 제어 로직 회로(control logic circuit; 170)를 포함할 수 있다.
로우 디코더(120)는 로우 어드레스(RADD)에 따라 메모리 셀 어레이(110)에 포함된 메모리 블록들 중에서 하나의 메모리 블록을 선택하고, 선택된 메모리 블록에 동작 전압들(Vop)을 전송할 수 있다.
전압 생성부(130)는 동작 코드(OPCD)에 응답하여, 다양한 동작들에 필요한 동작 전압들(Vop)을 생성하고 출력할 수 있다. 예를 들면, 전압 생성부(130)는 동작 코드(OPCD)에 응답하여 프로그램 전압, 리드 전압, 소거 전압, 패스 전압, 검증 전압 및 음전압 등을 생성하고 생성된 전압들을 선택적으로 출력할 수 있다.
페이지 버퍼 그룹(140)은 비트 라인들(bit lines)을 통해 메모리 셀 어레이(110)에 연결될 수 있다. 예를 들면, 페이지 버퍼 그룹(140)은 비트 라인들 각각에 연결된 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼들은 페이지 버퍼 제어 신호들(PBSIG)에 응답하여 동시에 동작할 수 있으며, 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수 있다. 페이지 버퍼들은 리드 동작 또는 검증 동작 시, 메모리 셀들의 문턱전압에 따라 가변되는 비트 라인들의 전압을 센싱할 수 있다. 즉, 페이지 버퍼들에서 수행되는 센싱 동작의 결과에 따라, 메모리 셀들의 문턱전압들이 리드 전압 또는 검증 전압보다 낮은지 또는 높은지가 판단될 수 있다.
컬럼 디코더(150)는 컬럼 어드레스(CADD)에 따라, 입출력 회로(160) 및 페이지 버퍼 그룹(140) 사이에서 데이터(DATA)를 전송할 수 있다.
입출력 회로(160)는 입출력 라인들(IO)을 통해 컨트롤러(도 1의 CON)에 연결될 수 있다. 입출력 회로(160)는 입출력 라인들(IO)을 통해 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 입출력 할 수 있다. 예를 들면, 입출력 회로(160)는 입출력 라인들(IO)을 통해 컨트롤러(도 1의 CON)로부터 수신된 커맨드(CMD) 및 어드레스(ADD)를 제어 로직 회로(170)에 전송할 수 있고, 입출력 라인들(IO)을 통해 컨트롤러(CON)로부터 수신된 데이터(DATA)를 컬럼 디코더(150)로 전송할 수 있다. 입출력 회로(160)는 컬럼 디코더(150)로부터 수신된 데이터(DATA)를 입출력 라인들(IO)을 통해 컨트롤러(CON)로 출력할 수 있다.
제어 로직 회로(170)는 커맨드(CMD) 및 어드레스(ADD)에 응답하여, 동작 코드(OPCD), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIG) 및 컬럼 어드레스(CADD)를 출력할 수 있다. 예를 들면, 제어 로직 회로(170)는 커맨드(CMD)에 응답하여 알고리즘을 수행하는 소프트웨어와, 어드레스(ADD) 및 알고리즘에 따라 다양한 신호들을 출력하도록 구성된 하드웨어를 포함할 수 있다.
도 3은 메모리 셀 어레이를 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 셀 어레이(110)는 싱글 플래인(single plane) 또는 멀티 플래인(multi plane)으로 구성될 수 있다. 싱글 플래인은 메모리 셀 어레이(110)에 하나의 플래인만 포함된 구성을 의미하고, 멀티 플래인은 메모리 셀 어레이(110)에 복수의 플래인들이 포함된 구성을 의미한다. 도 3에는 멀티 플래인으로 구성된 메모리 셀 어레이(110)가 도시된다. 플래인들(PL1~PLj; j는 양의 정수)은 서로 다른 로우 디코더들과 서로 다른 페이지 버퍼 그룹들이 연결된 메모리 영역으로 정의될 수 있다. 예를 들면, 메모리 셀 어레이(110)에 제1 내지 제j 플래인들(PL1~PLj)이 포함된 경우, 제1 내지 제j 플래인들(PL1~PLj) 각각은 제1 내지 제i 메모리 블록들(BLK1~BLKi; i는 양의 정수)을 포함할 수 있다. 서로 다른 플래인들에 포함된 제1 내지 제i 메모리 블록들(BLK1~BLKi)은 서로 다른 로우 디코더들과 서로 다른 페이지 버퍼 그룹들에 연결될 수 있고, 동일한 플래인에 포함된 제1 내지 제i 메모리 블록들(BLK1~BLKi)은 동일한 로우 디코더와 동일한 페이지 버퍼 그룹에 연결될 수 있다. 제1 내지 제i 메모리 블록들(BLK1~BLKi)은 서로 동일한 구조로 구성될 수 있다.
도 4는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 4를 참조하면, 컨트롤러(CON)는 호스트 인터페이스(host interface; 410), 에러 정정 회로(error correction circuit; 420), 중앙 처리 장치(central processing unit; 430), 메모리 인터페이스(memory interface; 440), 버퍼 메모리(buffer memory; 450), 시스템 메모리 인터페이스(SMEM interface; 460) 및 펌웨어 실행부 인터페이스(FWIP interface; 470)를 포함할 수 있다. 호스트 인터페이스(410), 에러 정정 회로(420), 중앙 처리 장치(430), 메모리 인터페이스(440), 버퍼 메모리(450), 시스템 메모리 인터페이스(460) 및 펌웨어 실행부 인터페이스(470)는 버스(bus)를 통해 서로 통신할 수 있다.
호스트 인터페이스(410)는 호스트(HT)와 컨트롤러(CON) 사이에서 정보를 전송하도록 구성될 수 있다. 예를 들면, 호스트 인터페이스(410)는 호스트(HT)로부터 출력된 요청을 수신하여 중앙 처리 장치(430)에게 전송하고, 호스트(HT)로부터 출력된 논리 어드레스 및 데이터를 수신하도록 구성될 수 있다. 또한, 호스트 인터페이스(410)는 저장 장치(STD)로부터 리드된 데이터를 호스트(HT)에게 출력하도록 구성될 수 있다.
에러 정정 회로(420)는 프로그램 동작 시 호스트 인터페이스(410)로부터 수신된 데이터에 대한 에러 정정 인코딩 동작을 수행할 수 있고, 리드 동작 시 메모리 인터페이스(440)를 통해 저장 장치(STD)로부터 수신된 데이터에 대한 에러 정정 디코딩 동작을 수행하도록 구성될 수 있다. 에러 정정 회로(420)는 검출된 에러 비트의 개수가 노말 정정 허용 개수보다 적으면 검출된 에러를 정정하고, 검출된 에러 비트의 개수가 노말 정정 허용 개수 이상이면 에러 정정이 불가능한 것으로 판단할 수 있다.
중앙 처리 장치(430)는 컨트롤러(CON)에 포함된 장치들을 전반적으로 제어하도록 구성될 수 있다. 또한, 중앙 처리 장치(430)는 호스트(HT)의 다양한 요청들을 커맨드들(commands)로 변환하고, 커맨드들을 저장 장치(STD)에게 전송하여 저장 장치(STD)를 제어할 수 있다. 예를 들면, 중앙 처리 장치(430)는 호스트(HT)가 프로그램 요청을 전송하면, 프로그램 요청을 프로그램 커맨드로 변환하고, 프로그램 커맨드를 저장 장치(STD)에게 전송할 수 있다. 중앙 처리 장치(430)는 호스트(HT)가 리드 요청을 전송하면, 리드 요청을 리드 커맨드로 변환하고, 리드 커맨드를 저장 장치(STD)에게 전송할 수 있다.
중앙 처리 장치(430)는 정정이 불가능한 에러가 발생하지 않은 상태에서는, 부팅 시 펌웨어 실행부 인터페이스(470)로부터 수신된 셋업 요청(SRQ)에 따라, 메모리 시스템이 동작하기 위한 다양한 값들을 셋업할 수 있다. 중앙 처리 장치(430)는 에러 정정 회로(420)가 에러 정정이 불가능한 상태를 판단하거나, 메모리 시스템 내부에서 에러가 검출되면, 리셋 신호(RS) 및 디버깅 신호(DS)를 출력할 수 있다.
메모리 인터페이스(440)는 컨트롤러(CON)와 저장 장치(STD) 사이에서 정보를 전송하도록 구성될 수 있다. 예를 들면, 메모리 인터페이스(440)는 저장 장치(STD)와 컨트롤러(CON) 사이에서 커맨드, 어드레스 및 데이터를 전송하도록 구성될 수 있다.
버퍼 메모리(450)는 컨트롤러(CON)에서 사용되는 시스템 데이터를 임시로 저장하도록 구성될 수 있다. 예를 들면, 버퍼 메모리(450)는 논리 어드레스와 물리 어드레스의 맵핑 테이블을 저장할 수 있고, 프로그램 또는 리드 동작 시 버스(bus)를 통해 수신된 데이터를 임시로 저장할 수 있다. 버퍼 메모리(450)는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구성될 수 있다. 도 4에 도시된 버퍼 메모리(450)는 컨트롤러(CON)의 내부에 포함되지만, 실시 예에 따라 컨트롤러(CON)의 외부에 연결될 수도 있다.
시스템 메모리 인터페이스(460)는 시스템 메모리(SMEM)와 컨트롤러(CON) 사이에서 신호를 전송하도록 구성될 수 있다. 예를 들면, 중앙 처리 장치(430)에서 출력된 노말 신호(NS) 또는 디버깅 신호(DS)는 시스템 메모리 인터페이스(460)로 전송되고, 시스템 메모리 인터페이스(460)는 노말 신호(NS) 또는 디버깅 신호(DS)를 시스템 메모리(SMEM)에게 출력할 수 있다.
펌웨어 실행부 인터페이스(470)는 펌웨어 실행부(FWIP)와 컨트롤러(CON) 사이에서 신호를 전송하도록 구성될 수 있다. 예를 들면, 펌웨어 실행부 인터페이스(470)는 중앙 처리 장치(430)에서 출력된 리셋 신호(RS)를 펌웨어 실행부(FWIP)에게 전송할 수 있고, 펌웨어 실행부(FWIP)로부터 출력된 디버깅 커맨드(dCMD) 또는 디버깅 데이터(dDATA)를 수신받고 메모리 인터페이스(440)로 전송할 수 있다. 디버깅 커맨드(dCMD)가 전송될 때, 디버깅 펌웨어는 펌웨어 실행부 인터페이스(470)를 통해 어드레스(ADD)를 메모리 인터페이스(440)로 전송할 수도 있다. 디버깅 펌웨어가 전송하는 어드레스(ADD)는 저장 장치(STD)에서 사용될 수 있는 물리 어드레스이다. 디버깅 커맨드(dCMD), 디버깅 데이터(dDATA) 및 어드레스(ADD) 외에도, 디버깅 동작이 저장 장치(STD)에서 수행되도록 파라미터들(parameters)도 저장 장치(STD)에게 출력될 수 있다. 파라미터들은 디버깅 동작에서 수행될 수 있는 동작들의 다양한 설정 값들일 수 있다. 예를 들면, 파라미터들은 디버깅 프로그램, 디버깅 리드 또는 디버깅 소거 동작 시 사용되는 전압들의 레벨 정보, 전압들이 메모리 블록에 인가되는 시간 정보 등을 포함할 수 있다.
도 5는 본 발명의 실시 예에 따른 시스템 메모리 및 펌웨어 실행부를 설명하기 위한 도면이다.
도 5를 참조하면, 시스템 메모리(SMEM)는 데이터를 저장하도록 구성된 제1 및 제2 저장부들(1REG, 2REG)을 포함할 수 있다. 제1 및 제2 저장부들(1REG, 2REG)은 비휘발성 메모리 장치로 구성될 수 있다. 예를 들면, 제1 및 제2 저장부들(1REG, 2REG)은 롬(Read Only Memory; ROM), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM) 또는 플래시 메모리(Flash Memory)로 구성될 수 있다.
제1 저장부(1REG)에는 노말 펌웨어(NFW)가 저장될 수 있고, 제2 저장부(2REG)에는 디버깅 펌웨어(DFW)가 저장될 수 있다. 노말 펌웨어(NFW)는 메모리 시스템에 포함된 하드웨어의 입출력을 설정하기 위한 셋업 요청(SRQ)을 포함할 수 있다. 디버깅 펌웨어(DFW)는 메모리 시스템의 에러를 검출하고, 에러가 검출된 메모리 블록을 초기화하기 위하여, 디버깅 커맨드(dCMD), 디버깅 데이터(dDATA) 및 디버깅 파라미터(dPARA)를 포함할 수 있다.
시스템 메모리(SMEM)는 컨트롤러(CON)로부터 출력된 노말 신호(NS) 또는 디버깅 신호(DS)에 응답하여 노말 펌웨어(NFW) 또는 디버깅 펌웨어(DFW)를 출력할 수 있다. 시스템 메모리(SMEM)는 컨트롤러(CON)로부터 출력된 노말 신호(NS)가 수신되면, 노말 신호(NS)에 응답하여 노말 펌웨어(NFW)를 펌웨어 실행부(FWIP)로 출력할 수 있다. 시스템 메모리(SMEM)는 컨트롤러(CON)로부터 출력된 디버깅 신호(DS)가 수신되면, 디버깅 신호(DS)에 응답하여 디버깅 펌웨어(DFW)를 펌웨어 실행부(FWIP)로 출력할 수 있다.
펌웨어 실행부(FWIP)는 시스템 메모리(SMEM)로부터 출력된 노말 펌웨어(NFW) 또는 디버깅 펌웨어(DFW)를 업로드(upload)하고, 업로드된 노말 펌웨어(NFW) 또는 디버깅 펌웨어(DFW)를 실행하도록 구성될 수 있다.
예를 들면, 펌웨어 실행부(FWIP)는 프로세서(processor; PRC) 및 트리밍 회로(trimming circuit; TRC)를 포함할 수 있다. 프로세서(PRC)는 노말 펌웨어(NFW) 또는 디버깅 펌웨어(DFW)를 업로드(upload)하고, 업로드된 펌웨어를 실행하도록 구성될 수 있다. 즉, 프로세서(PRC)에는 펌웨어와 같은 소프트웨어와, 펌웨어를 실행하기 위한 논리 회로(logical circuit)가 포함될 수 있다. 트리밍 회로(TRC)는 프로세서(PRC)에 업로드된 펌웨어에 따라 다양한 신호들을 출력하도록 구성될 수 있다. 예를 들면, 트리밍 회로(TRC)는 프로세서(PRC)에 업로드된 펌웨어에 따라, 셋업 요청(SRQ), 디버깅 커맨드(dCMD) 및 디버깅 데이터(dDATA)를 선택적으로 출력하도록 구성될 수 있다. 예를 들면, 프로세서(PRC)에 노말 펌웨어(NFW)가 업로드되면, 트리밍 회로(TRC)는 노말 펌웨어(NFW)에 따라 셋업 요청(SRQ)을 출력할 수 있다. 예를 들면, 프로세서(PRC)에 디버깅 펌웨어(DFW)가 업로드되면, 트리밍 회로(TRC)는 디버깅 펌웨어(DFW)에 따라 디버깅 커맨드(dCMD)를 출력할 수 있다. 디버깅 동작의 종류에 따라, 트리밍 회로(TRC)는 디버깅 데이터(dDATA)를 출력할 수도 있다.
또한, 프로세서(PRC)는 컨트롤러(CON)로부터 출력된 리셋 신호(RS)가 수신되면, 프로세서(PRC) 내부에 업로드된 펌웨어를 삭제할 수 있다.
도 5에 도시된 도면을 참조하여 메모리 시스템의 동작 방법을 설명하면 다음과 같다.
도 6은 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 5 및 도 6을 참조하면, 메모리 시스템은 노말 상태에서 노말 펌웨어에 의해 동작하는 노말 모드(N_MD)로 구동될 수 있고, 에러가 검출된 상태에서는 디버깅 펌웨어에 의해 동작하는 디버깅 모드(T_MD)로 구동될 수 있다. 디버깅 모드(T_MD)에서 에러가 처리되면, 메모리 시스템은 다시 노말 모드(N_MD)로 구동될 수 있다.
각 모드를 구체적으로 설명하면 다음과 같다.
노말 모드(N_MD)에서, 노말 펌웨어(NFW)가 펌웨어 실행부(FWIP)에 업로드될 수 있다(S61). 펌웨어 실행부(FWIP)에 의해 노말 펌웨어(NFW)가 실행될 수 있으므로, 메모리 시스템은 노말 모드(N_MD)에서 다양한 노말 동작들(normal operations)을 수행할 수 있다(S62). 예를 들면, 노말 동작들은 호스트의 요청에 따라 동작하는 노말 프로그램 동작, 노말 리드 동작 및 노말 소거 동작 등을 포함할 수 있다.
노말 동작 중에 에러를 검출하는 동작이 수행될 수 있다(S63). 예를 들면, 선택된 메모리 블록에서 수행되는 동작이 종료되지 않거나, 정정 가능한 에러가 반복적으로 발생하거나, 이 외에도 다양한 에러들을 검출하기 위한 동작이 수행될 수 있다. 에러를 검출하기 위한 동작(S63)에서 에러가 검출되지 않으면(NO), 메모리 시스템은 노말 모드(N_MD)를 유지할 수 있다. 에러를 검출하기 위한 동작(S63)에서 에러가 검출되면(YES), 메모리 시스템의 모드는 디버깅 모드(T_MD)로 변경될 수 있다.
단계 S63에서 에러가 검출되면, 노말 모드(N_MD)가 디버깅 모드(T_MD)로 변경되고, 펌웨어 실행부(FWIP)에는 디버깅 펌웨어(DFW)가 업로드될 수 있다(S64). 기존에는 디버깅 펌웨어(T_FW)를 로딩하기 위해서 메모리 시스템에 별도의 외부 장치가 연결되었으나, 본 실시 예에서는 외부 장치의 연결없이 메모리 시스템 자체적으로 펌웨어가 변경될 수 있다. 예를 들면, 기존에는 Trace32와 같은 외부 장치가 메모리 시스템에 연결되고, 연결된 외부 장치를 통해 디버깅 펌웨어가 실행되었으나, 본 실시 예에서는 디버깅 펌웨어(DFW)가 메모리 시스템 내부에 저장되고, 에러 발생 시 메모리 시스템 자체적으로 디버깅 펌웨어(DFW)가 실행될 수 있다.
이어서, 디버깅 펌웨어(DFW)에 의해 디버깅 동작이 수행될 수 있다(S65). 디버깅 동작은 디버깅 펌웨어에 따라 다양한 동작들을 포함할 수 있다. 예를 들면, 디버깅 동작은 디버깅 프로그램 동작, 디버깅 리드 동작 및 디버깅 소거 동작 등을 포함할 수 있다. 본 실시 예에 따른 디버깅 펌웨어(DFW)는 디버깅 동작을 직접 실행하기 위한 디버깅 커맨드를 포함할 수 있으며, 저장 장치(STD)에 직접 액세스(access)하기 위한 어드레스를 저장 장치(STD)로 전송할 수 있다. 따라서, 디버깅 펌웨어(DFW)에는 저장 장치(STD)에 포함된 모든 메모리 장치들 및 페이지들의 어드레스들이 포함될 수 있다. 또한, 본 실시 예에 따른 디버깅 펌웨어(DFW)는 디버깅 동작에 사용할 디버깅 파라미터 및 디버깅 데이터를 포함할 수 있다. 디버깅 파라미터는 저장 장치에서 수행될 디버깅 동작들의 다양한 설정 값들을 포함할 수 있으며, 디버깅 데이터를 디버깅 프로그램 동작 시 사용될 수 있다. 디버깅 펌웨어(DFW)는 디버깅 동작 저장 장치로부터 리드된 데이터를 토대로 에러를 검출할 수 있고, 에러가 검출된 메모리 블록을 소거할 수 있다.
디버깅 동작이 수행된 후(S65), 디버깅 펌웨어(DFW)는 디버깅 동작의 결과를 컨트롤러에게 전송할 수 있다. 예를 들면, 디버깅 펌웨어(DFW)는 에러가 검출되어 디버깅 소거 동작이 수행된 메모리 블록의 어드레스를 컨트롤러에게 전송할 수 있다. 또는, 검출된 에러의 정정이 불가능한 경우, 디버깅 펌웨어(DFW)는 에러 정정이 불가능한 메모리 블록의 어드레스를 저장하고, 저장된 어드레스를 컨트롤러에게 전송할 수 있다.
디버깅 결과 전송 동작이 완료되면(S66), 펌웨어 실행부(FWIP)에는 다시 노말 펌웨어(S67)가 업로드(upload)되고 디버깅 모드(T_MD)는 종료될 수 있다.
디버깅 모드(T_MD)가 종료되면, 메모리 시스템은 다시 노말 모드(N_MD)로 변경되고 재부팅(rebooting)될 수 있다(S68). 메모리 시스템이 재부팅되면, 펌웨어 실행부(FWIP)에 업로드된 노말 펌웨어(NFW)에 따라 메모리 시스템에 포함된 장치들은 재설정될 수 있다.
상술한 메모리 시스템의 동작 방법을 본 실시 예에 따른 장치들을 사용하여 구체적으로 설명하면 다음과 같다.
도 7a 내지 도 7i는 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법을 상세히 설명하기 위한 도면들이다.
도 7a를 참조하면, 메모리 시스템이 부팅되면, 컨트롤러(CON)는 노말 신호(NS)를 출력하여 시스템 메모리(SMEM)에게 전송할 수 있다. 시스템 메모리(SMEM)는 노말 펌웨어(NFW)가 저장된 제1 저장부(1REG)와, 디버깅 펌웨어(DFW)가 저장된 제2 저장부(2REG)를 포함할 수 있다. 시스템 메모리(SMEM)는 노말 신호(NS)가 수신되면 제1 저장부(1REG)에 저장된 노말 펌웨어(NFW)를 펌웨어 실행부(FWIP)의 프로세서(PRC)에 업로드할 수 있다.
프로세서(PRC)는 노말 펌웨어(NFW)에 따라 트리밍 회로(TRC)를 사용하여 셋업 요청(SRQ)을 출력할 수 있다. 셋업 요청(SRQ)은 메모리 시스템에 포함된 다양한 장치들을 셋업(setup)하기 위한 요청일 수 있다. 컨트롤러(CON)는 셋업 요청에 따라 컨트롤러(CON)에 포함된 장치들이 구동될 수 있도록 셋업할 수 있고, 저장 장치와 데이터를 입출력 하기 위한 값들을 셋업할 수 있다.
도 7b를 참조하면, 컨트롤러(CON)는 호스트(HT)의 요청(RQ)에 따라 노말 커맨드(nCMD)를 생성할 수 있고, 노말 커맨드(nCMD) 및 어드레스(ADD)를 저장 장치(STD)에게 전송할 수 있다. 노말 프로그램 동작이 수행되는 경우, 컨트롤러(CON)는 노말 커맨드(nCMD), 어드레스(ADD) 및 노말 데이터(nDATA)를 저장 장치(STD)에 전송할 수 있다.
도 7c를 참조하면, 노말 리드 동작이 수행되는 경우, 컨트롤러(CON)는 저장 장치(STD)에서 리드된 노말 데이터(nDATA)를 수신받고, 수신된 노말 데이터(nDATA)의 에러를 검출 및 정정할 수 있다.
도 7d를 참조하면, 컨트롤러(CON)에 전송된 노말 데이터(nDATA)의 에러 정정이 불가능한 경우, 컨트롤러(CON)는 노말 모드(N_MD)에서 디버깅 모드(T_MD)로 전환하기 위하여 펌웨어 실행부(FWIP)의 트리밍 회로(TRC)에 리셋 신호(RS)를 출력할 수 있다. 예를 들면, 컨트롤러(CON)는 노말 데이터(nDATA)에 포함된 에러 비트의 개수가 노말 정정 허용 개수를 초과하면, 에러 정정이 불가능하다고 판단하고, 트리밍 회로(TRC)에 리셋 신호(RS)를 출력할 수 있다.
트리밍 회로(TRC)는 리셋 신호(RS)에 응답하여, 프로세서(PRC)에 업로드된 노말 펌웨어(NFW)를 삭제할 수 있다.
도 7e를 참조하면, 컨트롤러(CON)는 디버깅 신호(DS)를 출력하여 시스템 메모리(SMEM)에게 전송할 수 있다. 시스템 메모리(SMEM)는 디버깅 신호(DS)가 수신되면 제2 저장부(2REG)에 저장된 디버깅 펌웨어(DFW)를 펌웨어 실행부(FWIP)의 프로세서(PRC)에 업로드할 수 있다.
프로세서(PRC)는 디버깅 펌웨어(DFW)에 따라 트리밍 회로(TRC)를 사용하여 디버깅 커맨드(dCMD), 어드레스(ADD) 및 디버깅 데이터(dDATA)를 컨트롤러(CON)에게 출력할 수 있다. 디버깅 커맨드(dCMD)는 디버깅 동작을 수행하기 위한 커맨드로써, 컨트롤러(CON)의 개입 없이 저장 장치(STD)에게 전송될 수 있다. 즉, 디버깅 커맨드(dCMD)는 호스트의 요청이 없더라도 컨트롤러(CON)에서 저장 장치(STD)로 전송될 수 있는 커맨드일 수 있다. 예를 들면, 디버깅 커맨드(dCMD)는 디버깅용 프로그램 커맨드, 리드 커맨드 또는 소거 커맨드일 수 있다. 디버깅용 프로그램 커맨드에 따라, 저장 장치(STD)에서는 디버깅 프로그램 동작이 수행될 수 있다. 예를 들면, 디버깅 펌웨어(DFW)는 디버깅 프로그램 동작을 위한 디버깅 데이터(dDATA)를 포함할 수 있다. 디버깅 데이터(dDATA)는 0 및 1 데이터가 랜덤(random)으로 혼합된 패턴을 가지거나, 0 및 1 데이터 중에서 어느 하나(0 또는 1)로만 구성된 패턴을 가질 수 있다. 또한, 디버깅 펌웨어(DFW)는 디버깅 프로그램 동작 수행 시, 디버깅 데이터(dDATA)를 프로그램하는 동작 시간이 디버깅 기준 시간보다 오래 걸리거나, 디버깅 데이터(dDATA)를 프로그램하는데 사용된 프로그램 전압의 펄스 수가 디버깅 기준 펄스 수 이상이 되면, 해당 메모리 블록을 배드 블록으로 처리하기 위하여 해당 메모리 블록의 어드레스를 저장할 수 있다. 디버깅 프로그램 동작에서 사용되는 디버깅 기준 시간 및 디버깅 기준 펄스 수는 노말 모드의 에러 정정 동작에서 사용되는 노말 기준 시간 및 노말 기준 펄수 수보다 높게 설정될 수 있다.
디버깅 리드 동작이 수행되는 경우, 디버깅 펌웨어(DFW)는 디버깅 프로그램 동작에서 프로그램된 디버깅 데이터(dDATA)가 에러 없이 리드되는지를 판단할 수 있다. 이때, 검출된 에러 비트의 개수가 디버깅 기준 개수보다 작으면, 디버깅 펌웨어(DFW)는 에러가 발생한 메모리 블록을 소거 하기 위한 디버깅 소거 동작을 수행할 수 있다. 디버깅 리드 동작에서 검출된 에러 비트의 개수가 디버깅 기준 개수 이상이면, 디버깅 펌웨어(DFW)는 에러가 검출된 메모리 블록을 배드 블록(bad block)으로 처리할 수 있다.
디버깅 소거 동작이 수행되는 경우, 디버깅 펌웨어(DFW)는 디버깅 프로그램 동작이 수행된 메모리 블록의 소거 동작을 수행할 수 있고, 이때 메모리 블록에 포함된 모든 메모리 셀들이 소거되는데 걸리는 시간 또는 사용된 소거 전압의 펄스 수에 따라 메모리 블록의 에러 여부를 판단할 수 있다. 예를 들면, 선택된 메모리 블록의 소거 동작이 완료되는데 걸리는 시간이 디버깅 기준 시간보다 오래 걸리거나, 소거 동작에 사용된 소거 전압의 펄스 수가 디버깅 기준 펄스 수보다 많으면, 디버깅 펌웨어(DFW)는 해당 메모리 블록을 배드 블록으로 설정하기 위하여, 해당 메모리 블록의 어드레스를 저장할 수 있다. 디버깅 소거 동작의 디버깅 기준 시간 및 디버깅 기준 펄스 수는 노말 모드의 에러 정정 동작에서 사용되는 노말 기준 시간 및 노말 기준 펄수 수보다 높게 설정될 수 있다.
도 7f를 참조하면, 디버깅 동작들 중 디버깅 리드 동작이 수행된 경우, 저장 장치(STD)에서 리드된 데이터(rDATA)는 컨트롤러(CON)를 통해 프로세서(PRC)에 전송될 수 있다. 프로세서(PRC)는 저장 장치(STD)로부터 리드된 데이터(rDATA)가 수신되면, 리드된 데이터(rDATA)에 포함된 에러를 검출하고, 검출된 에러 비트의 개수를 카운트할 수 있다.
도 7g를 참조하면, 프로세서(PRC)는 검출된 에러의 정정이 가능하거나 불가능하다고 판단되면, 디버깅 동작에 대한 디버깅 결과(dRST)를 컨트롤러(CON)에게 전송할 수 있다. 예를 들면, 에러 정정이 가능한 경우, 프로세서(PRC)는 에러 정정이 가능한 메모리 블록의 어드레스 등의 정보를 디버깅 결과(dRST)에 포함시킬 수 있다. 에러 정정이 불가능한 경우, 프로세서(PRC)는 에러 정정이 불가능한 것으로 판단된 메모리 블록의 어드레스와, 배드 블록 정보를 디버깅 결과(dRST)에 포함시킬 수 있다.
도 7h를 참조하면, 컨트롤러(CON)는 디버깅 결과(도 7g의 dRST)에 응답하여 디버깅 모드(D_MD)를 노말 모드(N_MD)로 전환할 수 있다. 디버깅 모드(D_MD)에서 노말 모드(N_MD)로 전환하기 위하여, 컨트롤러(CON)는 펌웨어 실행부(FWIP)의 트리밍 회로(TRC)에 리셋 신호(RS)를 출력할 수 있다. 트리밍 회로(TRC)는 리셋 신호(RS)에 응답하여, 프로세서(PRC)에 업로드된 디버깅 펌웨어(DFW)를 삭제할 수 있다.
도 7i를 참조하면, 메모리 시스템이 재부팅되면, 컨트롤러(CON)는 메모리 시스템을 노말 모드(N_MD)로 구동하기 위하여 노말 신호(NS)를 시스템 메모리(SMEM)에게 출력할 수 있다.
시스템 메모리(SMEM)는 노말 신호(NS)가 수신되면 제1 저장부(1REG)에 저장된 노말 펌웨어(NFW)를 펌웨어 실행부(FWIP)의 프로세서(PRC)에 업로드할 수 있다.
프로세서(PRC)는 노말 펌웨어(NFW)에 따라 트리밍 회로(TRC)를 사용하여 셋업 요청(SRQ)을 출력할 수 있다. 셋업 요청(SRQ)은 메모리 시스템에 포함된 다양한 장치들을 셋업(setup)하기 위한 요청일 수 있다. 컨트롤러(CON)는 셋업 요청에 따라 컨트롤러(CON)에 포함된 장치들이 구동될 수 있도록 셋업할 수 있고, 저장 장치와 데이터를 입출력 하기 위한 값들을 셋업할 수 있다.
상술한 바와 같이, 본 실시 예에서는 노말 펌웨어로 정정이 불가능한 에러 발생 시, 에러가 검출된 메모리 블록을 처리하기 위한 디버깅 펌웨어(DFW)를 메모리 시스템 자체에서 업로드 및 실행함으로써, 메모리 시스템의 디버깅(debugging) 동작이 간소화될 수 있다.
도 8은 본 발명의 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 8을 참조하면, 메모리 카드 시스템(3000)은 컨트롤러(CON), 시스템 메모리(SMEM), 펌웨어 실행부(FWIP) 및 저장 장치(STD)를 포함할 수 있다.
컨트롤러(CON)는 메모리 카드 시스템(3000)의 전체 동작을 제어할 수 있다. 예를 들면, 컨트롤러(CON)는 시스템 메모리(SMEM), 펌웨어 실행부(FWIP) 및 저장 장치(STD)를 제어하도록 구성될 수 있다. 컨트롤러(CON)는 도 4에 도시된 컨트롤러(CON)와 동일하게 구성될 수 있다. 컨트롤러(CON)는 시스템 메모리(SMEM), 펌웨어 실행부(FWIP) 및 저장 장치(STD) 사이에 인터페이스를 제공하도록 구성될 수 있다.
컨트롤러(CON)는 커넥터(3300)를 통해 외부 장치와 통신할 수 있다. 컨트롤러(CON)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 컨트롤러(CON)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성될 수 있다. 예를 들면, 커넥터(3300)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.
시스템 메모리(SMEM)는 노말 펌웨어(normal firmware; NFW) 및 디버깅 펌웨어(debugging firmware; DFW)를 저장할 수 있다. 시스템 메모리(SMEM)는 비휘발성 메모리 장치로 구성될 수 있다. 예를 들면, 시스템 메모리(SMEM)는 롬(Read Only Memory; ROM), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM) 또는 플래시 메모리(Flash Memory)로 구성될 수 있다.
펌웨어 실행부(FWIP)는 시스템 메모리(SMEM)에 저장된 노말 펌웨어(NFW) 및 디버깅 펌웨어(DFW) 중에서 선택된 펌웨어를 펌웨어 실행부(FWIP) 내부에 업로드(upload)하고, 업로드된 펌웨어를 실행하도록 구성될 수 있다. 예를 들면 펌웨어 실행부(FWIP)는 노말 펌웨어(NFW) 또는 디버깅 펌웨어(DFW)를 저장하고 구동하기 위한 프로세서(processor)와, 프로세서의 제어에 따라 다양한 신호들을 입출력하도록 구성된 트리밍 회로를 포함할 수 있다.
저장 장치(STD)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등과 같은 다양한 비휘발성 메모리 소자들로 구성될 수 있다.
컨트롤러(CON), 시스템 메모리(SMEM), 펌웨어 실행부(FWIP) 및 저장 장치(STD)는 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(CON), 시스템 메모리(SMEM), 펌웨어 실행부(FWIP) 및 저장 장치(STD)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCprocessor, eMMC), SD 카드(SD, miniSD, processorSD, SDHC), 범용 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 9는 본 발명의 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 9를 참조하면, SSD 시스템(4000)은 호스트(4100) 및 SSD(4200)를 포함할 수 있다. SSD(4200)는 신호 커넥터(4001)를 통해 호스트(4100)와 신호들을 주고받고, 전원 커넥터(4002)를 통해 전원을 공급받을 수 있다. SSD(4200)는 컨트롤러(CON), 시스템 메모리(SMEM), 펌웨어 실행부(FWIP), 복수의 플래시 메모리들(4221~422n) 및 보조 전원 장치(4230)를 포함할 수 있다.
본 발명의 실시 예에 따르면, 컨트롤러(CON)는 도 4를 참조하여 설명된 컨트롤러(CON)의 기능을 수행할 수 있다.
컨트롤러(CON)는 호스트(4100)로부터 수신된 신호들에 응답하여 복수의 플래시 메모리들(4221~422n)을 제어할 수 있다. 예시적으로, 신호들은 호스트(4100) 및 SSD(4200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호들은 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호들일 수 있다.
시스템 메모리(SMEM)는 노말 펌웨어(normal firmware; NFW) 및 디버깅 펌웨어(debugging firmware; DFW)를 저장할 수 있다. 시스템 메모리(SMEM)는 제1 및 제2 저장부들(1REG, 2REG)은 비휘발성 메모리 장치로 구성될 수 있다. 예를 들면, 시스템 메모리(SMEM)는 롬(Read Only Memory; ROM), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM) 또는 플래시 메모리(Flash Memory)로 구성될 수 있다.
펌웨어 실행부(FWIP)는 시스템 메모리(SMEM)에 저장된 노말 펌웨어(NFW) 및 디버깅 펌웨어(DFW) 중에서 선택된 펌웨어를 펌웨어 실행부(FWIP) 내부에 업로드(upload)하고, 업로드된 펌웨어를 실행하도록 구성될 수 있다. 예를 들면 펌웨어 실행부(FWIP)는 노말 펌웨어(NFW) 또는 디버깅 펌웨어(DFW)를 저장하고 구동하기 위한 프로세서(processor)와, 프로세서의 제어에 따라 다양한 신호들을 입출력하도록 구성된 트리밍 회로를 포함할 수 있다.
보조 전원 장치(4230)는 전원 커넥터(4002)를 통해 호스트(4100)와 연결될 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터 전원을 공급받고 전원을 충전할 수도 있다. 보조 전원 장치(4230)는 호스트(4100)로부터의 전원 공급이 원활하지 않을 경우, SSD(4200)의 전원 전압을 제공할 수 있다. 예시적으로, 보조 전원 장치(4230)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4230)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.
MEMS: 메모리 시스템 HT: 호스트
CON: 컨트롤러 SMEM: 시스템 메모리
FWIP: 펌웨어 실행부 STD: 저장 장치
M1~Mn: 메모리 장치 1REG, 2REG: 저장부
PRC: 프로세서 TRC: 트리밍 회로
NFW: 노말 펌웨어 DFW: 디버깅 펌웨어

Claims (35)

  1. 데이터를 저장하도록 구성된 저장 장치;
    노말 펌웨어(normal firmware) 및 디버깅 펌웨어(debugging firmware)가 저장된 시스템 메모리;
    상기 노말 펌웨어 또는 상기 디버깅 펌웨어를 실행하도록 구성된 펌웨어 실행부; 및
    상기 노말 펌웨어에 의해 구동되는 노말 모드(normal mode)에서, 상기 저장 장치를 컨트롤하도록 구성된 컨트롤러를 포함하고,
    상기 컨트롤러는 상기 노말 모드에서 정정이 불가능한 에러가 검출되면 상기 노말 모드를 디버깅 모드(debugging mode)로 전환하기 위하여 상기 시스템 메모리에 저장된 상기 디버깅 펌웨어를 상기 펌웨어 실행부에 업로드하고,
    상기 펌웨어 실행부는 업로드된 상기 디버깅 펌웨어를 실행하여 상기 저장 장치에 대한 디버깅 동작을 수행하는 메모리 시스템.
  2. 제1항에 있어서, 상기 시스템 메모리는,
    상기 노말 펌웨어를 저장하는 제1 저장부; 및
    상기 디버깅 펌웨어를 저장하는 제2 저장부를 포함하는 메모리 시스템.
  3. 제2항에 있어서,
    상기 제1 및 제2 저장부들은 롬(Read Only Memory; ROM), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 중에서 적어도 어느 하나로 구성되는 메모리 시스템.
  4. 제1항에 있어서, 상기 컨트롤러는,
    상기 노말 모드에서 상기 시스템 메모리에 저장된 상기 노말 펌웨어를 상기 펌웨어 실행부로 업로드하고,
    상기 디버깅 모드에서상기 시스템 메모리에 저장된 상기 디버깅 펌웨어를 상기 펌웨어 실행부로 업로드하는 메모리 시스템.
  5. 제1항에 있어서, 상기 펌웨어 실행부는,
    상기 시스템 메모리로부터 업로드된 상기 노말 펌웨어 또는 상기 디버깅 펌웨어를 실행하도록 구성된 프로세서(processor); 및
    상기 프로세서에 업로드된 상기 노말 펌웨어 또는 상기 디버깅 펌웨어에 따라 디버깅 커맨드, 어드레스 또는 디버깅 데이터를 입출력하도록 구성된 트리밍 회로를 포함하는 메모리 시스템.
  6. 제1항에 있어서,
    상기 펌웨어 실행부에 상기 노말 펌웨어가 업로드되면,
    상기 펌웨어 실행부는 상기 컨트롤러에 셋업 요청(setup request)을 전송하도록 구성되는 메모리 시스템.
  7. 제6항에 있어서,
    상기 셋업 요청은 메모리 시스템에 포함된 장치들 사이의 입출력에 필요한 값들을 셋업(setup)하기 위한 요청인 메모리 시스템.
  8. 제1항에 있어서,
    상기 펌웨어 실행부에 상기 디버깅 펌웨어가 업로드되면,
    상기 펌웨어 실행부는 상기 컨트롤러에 디버깅 커맨드, 어드레스 및 디버깅 데이터를 전송하도록 구성되는 메모리 시스템.
  9. 제8항에 있어서,
    상기 디버깅 커맨드는 디버깅 프로그램 동작, 디버깅 리드 동작 및 디버깅 소거 동작 중에서 선택된 동작을 수행하기 위한 커맨드이고,
    상기 어드레스는 상기 저장 장치에 포함된 메모리 장치들의 물리 어드레스들이고,
    상기 디버깅 데이터는 상기 디버깅 프로그램 동작 시 상기 저장 장치에 임시로 저장되는 데이터인 메모리 시스템.
  10. 제9항에 있어서, 상기 디버깅 펌웨어는,
    상기 디버깅 프로그램 동작 수행 시, 상기 저장 장치에 포함된 메모리 장치들에 상기 디버깅 데이터를 프로그램하는 메모리 시스템.
  11. 제10항에 있어서,
    상기 디버깅 데이터는 0 및 1 데이터가 랜덤(random)으로 혼합된 패턴을 가지도록 구성된 메모리 시스템.
  12. 제10항에 있어서,
    상기 디버깅 데이터는 0 및 1 데이터 중에서 어느 하나(0 또는 1)로만 구성된 패턴을 가지도록 구성된 메모리 시스템.
  13. 제9항에 있어서, 상기 디버깅 펌웨어는,
    상기 디버깅 프로그램 동작 시, 상기 디버깅 데이터를 프로그램하는 데 걸리는 시간이 디버깅 기준 시간보다 오래 걸리거나, 상기 디버깅 데이터를 프로그램하는 데 사용된 프로그램 전압의 펄스 수가 디버깅 기준 펄스 수보다 많은 메모리 블록이 검출되면, 상기 메모리 블록을 배드 블록으로 처리하는 메모리 시스템.
  14. 제9항에 있어서, 상기 디버깅 펌웨어는,
    상기 디버깅 리드 동작 수행 시, 상기 저장 장치에 저장된 디버깅 데이터를 리드하는 메모리 시스템.
  15. 제14항에 있어서, 상기 디버깅 펌웨어는,
    상기 저장 장치로부터 리드된 데이터에서 에러가 검출되고, 상기 리드된 데이터에서 검출된 상기 에러의 비트 수가 디버깅 정정 허용 개수보다 적으면, 상기 에러가 검출된 메모리 블록의 디버깅 소거 동작을 수행하고,
    상기 저장 장치로부터 리드된 데이터에서 에러가 검출되고, 상기 리드된 데이터에서 검출된 상기 에러의 비트 수가 상기 디버깅 정정 허용 개수 이상이면, 상기 에러가 검출된 메모리 블록을 배드 블록으로 처리하는 메모리 시스템.
  16. 제9항에 있어서, 상기 디버깅 펌웨어는,
    상기 디버깅 소거 동작 수행 시, 상기 저장 장치에 포함된 메모리 블록들 중 에러가 검출된 메모리 블록을 소거하는 메모리 시스템.
  17. 제16항에 있어서, 상기 디버깅 펌웨어는,
    상기 디버깅 소거 동작이 수행되는 데 걸리는 시간이 디버깅 기준 시간보다 오래 걸리거나, 상기 디버깅 소거 동작에 사용된 소거 전압의 펄스 수가 디버깅 기준 펄스 수보다 많으면, 해당 메모리 블록을 배드 블록으로 처리하는 메모리 시스템.
  18. 제1항에 있어서, 상기 노말 모드에서,
    상기 컨트롤러는 상기 시스템 메모리에게 노말 신호를 출력하고,
    상기 시스템 메모리는 상기 노말 신호에 응답하여 상기 노말 펌웨어를 상기 펌웨어 실행부에게 업로드하고,
    상기 펌웨어 실행부는 상기 노말 펌웨어를 실행하도록 구성되는 메모리 시스템.
  19. 제1항에 있어서, 상기 노말 모드가 상기 디버깅 모드로 변경되면,
    상기 컨트롤러는 상기 펌웨어 실행부에게 리셋 신호를 출력하고, 상기 시스템 메모리에게 디버깅 신호를 출력하고,
    상기 펌웨어 실행부는 상기 리셋 신호에 응답하여, 업로드된 상기 노말 펌웨어를 삭제하고,
    상기 시스템 메모리는 상기 디버깅 신호에 응답하여 상기 디버깅 펌웨어를 상기 펌웨어 실행부에게 업로드하고,
    상기 노말 펌웨어가 삭제된 상기 펌웨어 실행부는 업로드된 상기 디버깅 펌웨어를 실행하는 메모리 시스템.
  20. 제1항에 있어서, 상기 디버깅 모드가 종료되면,
    상기 컨트롤러는 상기 펌웨어 실행부에게 리셋 신호를 출력하고, 상기 시스템 메모리에게 노말 신호를 출력하고,
    상기 펌웨어 실행부는 상기 리셋 신호에 응답하여, 내부에 업로드된 상기 디버깅 펌웨어를 삭제하고,
    상기 시스템 메모리는 상기 노말 신호에 응답하여 상기 노말 펌웨어를 상기 펌웨어 실행부에게 업로드하고,
    상기 펌웨어 실행부는 상기 노말 펌웨어를 실행하는 메모리 시스템.
  21. 제20항에 있어서,
    상기 디버깅 모드에서 상기 노말 모드로 변경된 후, 상기 컨트롤러는 재부팅되는 메모리 시스템.
  22. 제1항에 있어서, 상기 컨트롤러는,
    호스트와 통신하도록 구성된 호스트 인터페이스;
    데이터를 저장하는 저장 장치와 통신하도록 구성된 메모리 인터페이스;
    논리 어드레스 및 물리 어드레스가 맵핑된 맵핑 테이블을 저장하는 버퍼 메모리;
    상기 시스템 메모리와 통신하도록 구성된 시스템 메모리 인터페이스;
    상기 펌웨어 실행부와 통신하도록 구성된 펌웨어 실행부 인터페이스;
    상기 데이터의 에러를 검출 및 정정하도록 구성된 에러 정정 회로; 및
    상기 호스트 인터페이스, 상기 메모리 인터페이스, 상기 버퍼 메모리, 상기 메모리 인터페이스, 상기 펌웨어 실행부 인터페이스 및 상기 에러 정정 회로를 컨트롤하도록 구성된 중앙 처리 장치를 포함하는 메모리 시스템.
  23. 시스템 메모리에 노말 펌웨어 및 디버깅 펌웨어를 저장하는 단계;
    상기 시스템 메모리에 저장된 상기 노말 펌웨어를 펌웨어 실행부에 업로드하는 단계;
    상기 노말 펌웨어에 따라 컨트롤러를 노말 모드로 셋업하는 단계;
    상기 노말 모드로 구동중인 저장 장치에서 에러가 발생하면, 상기 노말모드를 디버깅 모드로 전환하기 위하여 상기 시스템 메모리에 저장된 상기 디버깅 펌웨어를 상기 펌웨어 실행부에 업로드하는 단계;
    상기 디버깅 펌웨어에 따라 상기 저장 장치를 테스트하는 디버깅 동작을 수행하는 단계; 및
    상기 디버깅 동작이 완료된 후, 상기 시스템 메모리에 저장된 상기 노말 펌웨어를 상기 펌웨어 실행부에 업로드하여 상기 디버깅 모드를 상기 노말 모드로 전환하는 단계를 포함하는 메모리 시스템의 동작 방법.
  24. 제23항에 있어서,
    상기 디버깅 펌웨어를 상기 펌웨어 실행부에 업로드하는 단계 이전에,
    상기 펌웨어 실행부에 업로드된 상기 노말 펌웨어를 삭제하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  25. 제23항에 있어서,
    상기 디버깅 동작이 완료된 후, 상기 노말 펌웨어를 상기 펌웨어 실행부에 업로드하는 단계 이전에,
    상기 펌웨어 실행부에 업로드된 상기 디버깅 펌웨어를 삭제하는 단계; 및
    재부팅하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  26. 제23항에 있어서,
    상기 메모리 시스템에 포함된 장치들을 셋업하는 단계에서,
    상기 메모리 시스템에 포함된 장치들 사이의 입출력에 필요한 값들이 설정되는 메모리 시스템의 동작 방법.
  27. 제23항에 있어서,
    상기 디버깅 동작은 디버깅 프로그램 동작, 디버깅 리드 동작 및 디버깅 소거 동작을 포함하는 메모리 시스템의 동작 방법.
  28. 제27항에 있어서,
    상기 디버깅 프로그램 동작은 상기 저장 장치에 포함된 메모리 장치들에 디버깅 데이터를 프로그램하는 방식으로 수행되는 메모리 시스템의 동작 방법.
  29. 제28항에 있어서,
    상기 디버깅 데이터는 0 및 1 데이터가 랜덤(random)으로 혼합된 패턴을 가지도록 구성된 메모리 시스템의 동작 방법.
  30. 제28항에 있어서,
    상기 디버깅 데이터는 0 및 1 데이터 중에서 어느 하나(0 또는 1)로만 구성된 패턴을 가지도록 구성된 메모리 시스템의 동작 방법.
  31. 제27항에 있어서,
    상기 디버깅 프로그램 동작 시, 상기 디버깅 데이터를 프로그램하는 데 걸리는 시간이 디버깅 기준 시간보다 오래 걸리거나, 상기 디버깅 데이터를 프로그램하는 데 사용된 프로그램 전압의 펄스 수가 디버깅 기준 펄스 수보다 많은 메모리 블록이 검출되면,
    상기 디버깅 펌웨어는 상기 메모리 블록을 배드 블록으로 처리하는 메모리 시스템의 동작 방법.
  32. 제27항에 있어서,
    상기 디버깅 리드 동작은 상기 저장 장치에 저장된 디버깅 데이터를 리드하는 방식으로 수행되는 메모리 시스템의 동작 방법.
  33. 제32항에 있어서,
    상기 저장 장치로부터 리드된 데이터에서 에러가 검출된 경우,
    상기 리드된 데이터에서 검출된 상기 에러의 비트 수가 디버깅 정정 허용 개수보다 적으면, 상기 에러가 검출된 메모리 블록의 디버깅 소거 동작이 수행되고,
    상기 리드된 데이터에서 검출된 상기 에러의 비트 수가 상기 디버깅 정정 허용 개수 이상이면, 상기 에러가 검출된 메모리 블록을 배드 블록으로 처리하는 메모리 시스템의 동작 방법.
  34. 제27항에 있어서,
    상기 디버깅 소거 동작은 상기 저장 장치에 포함된 메모리 블록들을 소거하는 방식으로 수행되는 메모리 시스템의 동작 방법.
  35. 제34항에 있어서,
    상기 디버깅 소거 동작이 수행되는 데 걸리는 시간이 디버깅 기준 시간보다 오래 걸리거나, 상기 디버깅 소거 동작에 사용된 소거 전압의 펄스 수가 디버깅 기준 펄스 수보다 많으면,
    상기 디버깅 펌웨어는 해당 메모리 블록을 배드 블록으로 처리하는 메모리 시스템의 동작 방법.
KR1020210155883A 2021-11-12 2021-11-12 메모리 시스템 및 이의 동작 방법 KR20230069661A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210155883A KR20230069661A (ko) 2021-11-12 2021-11-12 메모리 시스템 및 이의 동작 방법
US17/730,121 US11822794B2 (en) 2021-11-12 2022-04-26 Memory system and operation method of the memory system
CN202210712578.4A CN116129983A (zh) 2021-11-12 2022-06-22 存储系统以及存储系统的操作方法
US18/476,145 US20240020026A1 (en) 2021-11-12 2023-09-27 Memory system and operation method of the memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210155883A KR20230069661A (ko) 2021-11-12 2021-11-12 메모리 시스템 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20230069661A true KR20230069661A (ko) 2023-05-19

Family

ID=86305038

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210155883A KR20230069661A (ko) 2021-11-12 2021-11-12 메모리 시스템 및 이의 동작 방법

Country Status (3)

Country Link
US (2) US11822794B2 (ko)
KR (1) KR20230069661A (ko)
CN (1) CN116129983A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117637012B (zh) * 2024-01-25 2024-05-07 合肥康芯威存储技术有限公司 一种存储芯片的检测系统及检测方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61188626A (ja) * 1985-02-18 1986-08-22 Fujitsu Ltd マイクロプロセツサ
KR100240662B1 (ko) * 1997-09-25 2000-01-15 윤종용 제이태그에 의한 다이나믹램 테스트장치
US7051239B2 (en) * 2001-12-28 2006-05-23 Hewlett-Packard Development Company, L.P. Method and apparatus for efficiently implementing trace and/or logic analysis mechanisms on a processor chip
ITRM20030198A1 (it) * 2003-04-28 2004-10-29 Micron Technology Inc Monitor ad unita' di controllo basata su rom in un
KR101806807B1 (ko) 2010-11-08 2017-12-11 삼성전자주식회사 메모리 카드
TWI472912B (zh) * 2012-09-11 2015-02-11 Univ Nat Cheng Kung 以電路內部事件作為觸發條件之除錯控制系統及其方法
JP6255282B2 (ja) 2014-02-28 2017-12-27 ルネサスエレクトロニクス株式会社 半導体装置
JP5859173B1 (ja) * 2014-05-08 2016-02-10 三菱電機株式会社 エンジニアリングツール、プログラム編集装置およびプログラム編集システム

Also Published As

Publication number Publication date
US11822794B2 (en) 2023-11-21
CN116129983A (zh) 2023-05-16
US20240020026A1 (en) 2024-01-18
US20230152981A1 (en) 2023-05-18

Similar Documents

Publication Publication Date Title
KR102485812B1 (ko) 메모리 시스템과 메모리 시스템의 동작방법 및 메모리 시스템을 포함하는 데이터 처리 시스템
KR20110099570A (ko) 불휘발성 메모리 장치, 그것의 프로그램 방법, 그리고 그것을 포함하는 메모리 시스템
KR20180071675A (ko) 메모리 시스템 및 그것의 동작 방법
US11216332B2 (en) Memory controller and method of operating the same
KR20160064849A (ko) 메모리 시스템 및 그것의 동작 방법
US20200174921A1 (en) Data storage device, operation method thereof, and storage system including the same
US20240020026A1 (en) Memory system and operation method of the memory system
US11561725B2 (en) System and operating method thereof
KR102620727B1 (ko) 전자 장치
KR20200120159A (ko) 데이터 저장 장치 및 이의 동작 방법
KR20220032268A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220001137A (ko) 메모리 시스템, 메모리 장치 및 메모리 장치의 동작 방법
KR20210157544A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
CN112908370A (zh) 存储器装置和操作该存储器装置的方法
KR20200114216A (ko) 데이터 저장 장치 및 동작 방법
CN114237975A (zh) 存储器系统、存储器装置和操作存储器装置的方法
KR20210071314A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US11782646B2 (en) Memory device and memory system having the memory device
US11688465B2 (en) Memory system having memory controller
KR20190072306A (ko) 메모리 시스템 및 그것의 동작 방법
US11880599B2 (en) Memory system and operating method of the memory system inputting an additional read enable toggle signal to output status information of memory device
US11853573B2 (en) Storage device sharing system and operating method thereof
US20240061616A1 (en) Memory device command history management
US11404137B1 (en) Memory system and operating method of memory system
KR20220029903A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법