KR102641107B1 - 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법 - Google Patents

스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR102641107B1
KR102641107B1 KR1020160096759A KR20160096759A KR102641107B1 KR 102641107 B1 KR102641107 B1 KR 102641107B1 KR 1020160096759 A KR1020160096759 A KR 1020160096759A KR 20160096759 A KR20160096759 A KR 20160096759A KR 102641107 B1 KR102641107 B1 KR 102641107B1
Authority
KR
South Korea
Prior art keywords
task
write
storage device
data
storage
Prior art date
Application number
KR1020160096759A
Other languages
English (en)
Other versions
KR20180013284A (ko
Inventor
박현철
안준호
설봉관
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020160096759A priority Critical patent/KR102641107B1/ko
Priority to US15/390,865 priority patent/US10649692B2/en
Priority to CN201710628774.2A priority patent/CN107665722B/zh
Publication of KR20180013284A publication Critical patent/KR20180013284A/ko
Application granted granted Critical
Publication of KR102641107B1 publication Critical patent/KR102641107B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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
    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • 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/061Improving I/O performance
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0656Data buffering 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3422Circuits or methods to evaluate read or write disturbance in nonvolatile memory, without steps to mitigate the problem
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits

Abstract

스토리지 장치의 동작 방법은, 호스트 장치로부터 기입 태스크를 수신하는 단계, 스토리지 장치에 포함되는 태스크 큐에 상기 기입 태스크를 저장하는 단계, 상기 호스트 장치로부터 기입 실행 코맨드를 수신하는 단계, 상기 기입 실행 코맨드에 응답하여 상기 기입 태스크를 수행하는 단계 및 상기 기입 태스크를 저장한 후 상기 기입 실행 코맨드를 수신하기 전에 상기 스토리지 장치 내부의 관리 동작을 수행하는 단계를 포함한다. 데이터 백업 동작과 같은 관리 동작을 기입 실행 코맨드를 수신하기 전에 큐잉 단계(queueing stage) 및 레디 단계(ready stage)에서 미리 수행함으로써 호스트 장치의 기입 실행 코맨드에 대한 스토리지 장치의 응답 시간(response time)을 감소하고 상기 스토리지 장치를 사용하는 시스템의 성능을 향상시킬 수 있다.

Description

스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법 {Storage device, system including the same and method of operating the same}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 스토리지 장치, 상기 스토리지 장치를 포함하는 시스템 및 상기 스토리지 장치의 동작 방법에 관한 것이다.
반도체 메모리 장치는 일반적으로 디램(DRAM, dynamic random access memory), 에스램(SRAM, static random access memory) 등과 같은 휘발성 메모리와 플래시 메모리, 에프램(FRAM, ferroelectric random access memory), 피램(PRAM, phase-change random access memory), 엠램(MRAM, magnetic random access memory) 등과 같은 불휘발성 메모리 장치로 분류된다. 휘발성 메모리 장치는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리 장치는 전원이 차단되더라도 저장된 데이터를 보존한다. 특히, 불휘발성 메모리 중 하나인 플래시 메모리는 빠른 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 가진다. 이에 따라 플래시 메모리는 엠피쓰리 플레이어(MP3 player), 디지털 카메라(digital camera), 솔리드 스테이트 드라이브(Solid State Drive: SSD, 이하 SSD라 칭함), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 컴퓨터 시스템 등과 같이 저전력 및 대용량 스토리지 장치를 필요로 하는 다양한 분야에서 저장 매체로 광범위하게 사용되고 있다.
불휘발성 메모리를 이용한 데이터 스토리지 장치 중 하나인 임베디드 멀티미디어 카드(eMMC, embedded multimedia card)는 컨트롤러가 결합된 제품으로서 주로 스마트폰, 태블릿PC 등의 모바일 제품에 사용된다. 호스트 장치의 서비스 요청으로부터 스토리지 장치의 제공까지의 지연 시간에 상응하는 응답 시간(response time), 즉 레이턴시가 증가할수록 이러한 스토리지 장치를 이용하는 시스템의 전체적인 성능이 저하되는 문제가 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 효율적으로 기입 동작을 수행할 수 있는 스토리지 장치를 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 기입 동작을 수행할 수 있는 스토리지 장치를 포함하는 시스템을 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 기입 동작을 수행할 수 있는 스토리지 장치의 동작 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법은, 호스트 장치로부터 기입 태스크를 수신하는 단계, 스토리지 장치에 포함되는 태스크 큐에 상기 기입 태스크를 저장하는 단계, 상기 호스트 장치로부터 기입 실행 코맨드를 수신하는 단계, 상기 기입 실행 코맨드에 응답하여 상기 기입 태스크를 수행하는 단계 및 상기 기입 태스크를 저장한 후 상기 기입 실행 코맨드를 수신하기 전에 상기 스토리지 장치 내부의 관리 동작을 수행하는 단계를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함한다.
상기 스토리지 컨트롤러는 태스크 큐 및 프로세서를 포함한다. 상기 태스크 큐는 호스트 장치로부터 제공되는 기입 태스크 및 상기 기입 태스크의 상태 정보를 저장한다. 프로세서는 상기 스토리지 컨트롤러의 동작을 제어한다. 상기 프로세서는 상기 기입 태스크를 상기 태스크 큐에 저장한 후 상기 호스트 장치로부터 기입 실행 코맨드를 수신하기 전에 상기 스토리지 장치 내부의 관리 동작을 수행한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 시스템은 호스트 장치 및 상기 호스트 장치에 의해 제어되는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card)를 포함한다.
상기 임베디드 멀티미디어 카드는 상기 호스트 장치로부터 수신된 기입 태스크를 상기 임베디드 멀티미디어 카드에 포함되는 태스크 큐에 저장한 후 상기 호스트 장치로부터 기입 실행 코맨드를 수신하기 전에 상기 임베디드 멀티미디어 카드 내부의 관리 동작을 수행한다.
본 발명의 실시예들에 따른 스토리지 장치, 상기 스토리지 장치를 포함하는 시스템 및 스토리지 장치의 동작 방법은, 데이터 백업 동작과 같은 관리 동작을 기입 실행 코맨드를 수신하기 전의 큐잉 단계(queueing stage) 및 레디 단계(ready stage)에서 미리 수행함으로써 호스트 장치의 기입 실행 코맨드에 대한 스토리지 장치의 응답 시간(response time)을 감소하고 상기 스토리지 장치를 사용하는 시스템의 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 3은 도 2의 스토리지 장치에 포함되는 태스크 큐의 일 실시예를 나타내는 도면이다.
도 4는 도 2의 시스템의 코맨드 큐잉에 따른 기입 동작 및 독출 동작을 설명하기 위한 흐름도이다.
도 5는 도 2의 시스템에서 사용되는 코맨드의 포맷의 일 예를 나타내는 도면이다.
도 6은 도 2의 시스템에서 사용되는 코맨드 정의의 일 예를 나타내는 도면이다.
도 7은 도 6의 코맨드 정의에 포함된 태스크 관리 코드(op-code)의 일 예를 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 순서도이다.
도 9는 도 2의 스토리지 장치에 포함되는 비휘발성 메모리 셀 어레이의 일 실시예를 나타내는 회로도이다.
도 10은 정상적인 기입 동작이 수행되었을 때의 멀티 레벨 셀들의 상태 변화를 설명하기 위한 도면이다.
도 11은 멀티 레벨 셀들의 최하위 비트 페이지의 기입 동작 중 서든 파워 오프가 발생한 경우를 설명하기 위한 도면이다.
도 12는 최하위 비트 페이지의 기입 동작 중 서든 파워 오프가 발생한 경우의 멀티 레벨 셀들의 상태 변화를 설명하기 위한 도면이다.
도 13은 멀티 레벨 셀들의 최상위 비트 페이지의 기입 동작 중 서든 파워 오프가 발생한 경우를 설명하기 위한 도면이다.
도 14는 최상위 비트 페이지의 기입 동작 중 서든 파워 오프가 발생한 경우의 멀티 레벨 셀들의 상태 변화를 설명하기 위한 도면이다.
도 15는 스토리지 장치가 기입 실행 코맨드를 수신한 후에 관리 동작을 수행하는 경우를 나타내는 순서도이다.
도 16은 본 발명의 일 실시예에 따른 스토리지의 동작 방법을 나타내는 순서도이다.
도 17 및 도 18은 본 발명의 실시예들에 따른 스토리지의 동작 방법들을 나타내는 순서도들이다.
도 19는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 스토리지의 동작 방법을 나타내는 순서도이다.
도 1을 참조하면, 스토리지 장치는 호스트 장치로부터 기입 태스크를 수신한다(S10). 상기 기입 태스크는 후술하는 바와 같이 호스트 장치로부터의 적어도 하나의 코맨드를 통하여 상기 스토리지 장치에 제공될 수 있다. 상기 기입 태스크는 호스트 장치로부터 제공되는 기입 데이터를 상기 스토리지 장치 내의 저장 공간에 기입하기 위한 상기 호스트 장치의 서비스 리퀘스트(service request)에 상응한다.
수신된 기입 태스크는 스토리지 장치에 포함되는 태스크 큐에 저장한다(S20). 상기 스토리지 장치는 코맨드 큐잉(command queueing)을 지원하기 위하여 내부의 태스크 큐를 포함할 수 있고, 태스크 큐를 이용하여 복수의 태스크들을 저장할 수 있다. 저장된 태스크들은 우선순위에 따라서 그 실행 순서가 조정될 수 있고, 일단 태스크들을 태스크 큐에 저장하고 실제의 실행 타이밍을 나중에 결정함으로써 데이터 버스를 효율적으로 운용할 수 있다.
상기 스토리지 장치는 상기 호스트 장치로부터 기입 실행 코맨드를 수신하고(S30), 상기 기입 실행 코맨드에 응답하여 상기 기입 태스크를 수행한다(S40). 일 실시예에서, 스토리지 장치는 상기 태스크 큐에 저장된 상기 기입 태스크를 실행할 준비가 완료된 경우 상기 호스트 장치에게 상기 기입 태스크가 레디 상태에 있음을 통지하고, 상기 호스트 장치는 이러한 레디 상태의 통지를 확인한 후에 상기 기입 실행 코맨드를 상기 스토리지 장치로 전송할 수 있다.
이와 같이, 호스트 장치와 저장 장치 사이의 기입 트랜잭션(write transaction)은 기입 태스크를 전달하여 상기 스토리지 장치의 태스크 큐에 저장하는 큐잉 단계(queueing stage), 상기 태스크 큐에 저장된 기입 태스크를 실행할 준비가 완료되었는지 여부를 결정하고 상기 기입 태스크가 레디 상태에 있음을 상기 호스트 장치에 통지하는 레디 단계(ready stage) 및 상기 기입 실행 코맨드와 함께 기입 데이터를 상기 스토리지 장치에 전송하여 상기 기입 태스크를 실행하는 실행 단계(execution stage)로 이루어질 수 있다.
본 발명의 실시예들에 따라서, 상기 스토리지 장치는 상기 기입 태스크를 저장한 후 상기 기입 실행 코맨드를 수신하기 전에 상기 스토리지 장치 내부의 관리 동작을 수행한다(S50).
일 실시예에서, 상기 관리 동작은 상기 스토리지 장치의 저장 영역에 저장된 데이터 중에서 상기 기입 태스크의 수행에 의해 손상될 가능성이 있는 위험 데이터를 상기 스토리지 장치의 백업 영역에 백업 데이터로서 저장하는 데이터 백업 동작을 포함할 수 있다. 다른 실시예에서, 상기 관리 동작은 오류가 발생했거나 오류가 발생할 가능성이 있는 상기 스토리지 장치의 저장 영역에 더미 데이터를 기입하는 더미 기입 동작을 포함할 수 있다. 또 다른 실시예에서, 상기 관리 동작은 상기 스토리지 장치의 제어를 위한 메타 데이터의 기입 동작을 포함할 수 있다.
상기 데이터 백업 동작이 상기 기입 실행 코맨드를 수신한 후에 수행되는 경우에는 상기 호스트 장치의 기입 실행 요청에 대한 상기 스토리지 장치의 응답 시간(response time)이 증가하게 된다. 한편, 상기 더미 기입 동작 및 상기 메타 데이터의 기입 동작이 수행되는 경우, 즉 상기 스토리지 상태가 비지 상태(busy state)에 있는 경우에는 상기 호스트 장치가 상기 스토리지 장치에 액세스하는 것이 제한되거나 지연될 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 동작 방법은, 데이터 백업 동작과 같은 관리 동작을 기입 실행 코맨드를 수신하기 전의 큐잉 단계(queueing stage) 및 레디 단계(ready stage)에서 미리 수행함으로써 호스트 장치의 기입 실행 코맨드에 대한 스토리지 장치의 응답 시간을 감소하고 상기 스토리지 장치를 사용하는 시스템의 성능을 향상시킬 수 있다.
본 명세서는 JEDEC(http://www.jedec.org)에 의해 2015년 2월에 공개된 Embedded Multimedia Card(eMMC), Electrical Standard 5.1, 즉 JESD84-B51을 참조(reference)로서 포함한다. 따라서, 본 명세서의 용어들과 정의들(terms and definitions)이 JESD84-B51의 용어들과 정의들과 다르게 정의되지 않는 한, 본 명세서의 용어들과 정의들은 JESD84-B51의 용어들과 정의들과 동일한 것으로 간주될 수 있다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 시스템을 나타내는 블록도이고, 도 3은 도 2의 스토리지 장치에 포함되는 태스크 큐의 일 실시예를 나타내는 도면이다.
도 2를 참조하면, 시스템(1000)은 호스트 장치(2000) 및 스토리지 장치(3000)를 포함한다. 예를 들어, 스토리지 장치(3000)는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card)일 수 있다.
호스트 장치(2000)는 스토리지 장치(3000)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다. 상기 데이터 처리 동작은 싱글 데이터 레이트(SDR, single data rate) 또는 더블 데이터 레이트(DDR, double data rate)로 수행될 수 있다.
호스트 장치(2000)는 씨피유(CPU, central processing unit), 프로세서, 마이크로프로세서 (microprocessor) 또는 애플리케이션 프로세서(application processor) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치일 수 있고, 상기 데이터 처리 장치(2000) 및 스토리지 장치(3000)는 전자 장치에 내장(embedded) 또는 구현될 수 있다.
도 2의 시스템(1000)은 임의의 전자 장치(electronic device)일 수 있다. 상기 전자 장치는 PC(personal computer), 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트폰(smartphone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), 오디오 장치(audio device), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book) 등으로 구현될 수 있다.
스토리지 장치(3000)는 호스트 장치(2000)와 데이터 통신을 위해 접속 수단들, 예컨대, 패드들(pads), 핀들(pins), 버스(bus), 또는 통신 라인들을 통하여 전기적으로 서로 접속될 수 있다.
호스트 장치(2000)는 버스(20)를 통하여 연결된 프로세서(CPU)(2100), 메모리(MEM)(2200) 및 호스트 컨트롤러 인터페이스(HCI)(2300)를 포함할 수 있다. 프로세서(2100)에 의해 운영 체제(OS) 및/또는 호스트 펌웨어(FW)(2110)가 구동될 수 있다. 도시된 구성 요소 이외에도 호스트 장치(2000)는 클록 생성기(미도시), 상태 제어 유닛(미도시) 등을 더 포함할 수 있다. 클록 생성기는 호스트 장치(2000)와 스토리지 장치(3000)에서 사용될 클록 신호(CLK)를 생성한다. 예컨대, 클록 생성기는 위상 동기 루프(PLL, phase locked loop)로 구현될 수 있다.
프로세서(2100)는 코맨드(CMD)의 생성, 응답(RES)의 해석, 스토리지 장치(3000)의 레지스터, 예를 들어, Extended(EXT)_CSD 레지스터(미도시)에 저장된 데이터 및/또는 데이터 처리 동작을 제어할 수 있는 하드웨어를 의미할 수 있다. 프로세서(2100)는 운영 체제/호스트 펌웨어(2110)를 구동하여 상기와 같은 동작들을 수행할 수 있다.
호스트 컨트롤러 인터페이스(2300)는 스토리지 장치(3000)와 인터페이스하기 위한 구성요소이다. 호스트 컨트롤러 인터페이스(2300)는 스토리지 장치(3000)로 코맨드(CMD)를 발급하고(issuing), 코맨드(CMD)에 대한 응답(RES)을 스토리지 장치(3000)로부터 수신하고, 스토리지 장치(3000)에 저장될 기입 데이터를 전송하고, 스토리지 장치(3000)로부터 독출한 독출 데이터를 수신한다.
스토리지 장치(3000)는 복수의 비휘발성 메모리 장치들(NVM)(100) 및 스토리지 컨트롤러(200)를 포함한다.
비휘발성 메모리 장치들(100)은 옵션적으로 외부 고전압(VPP)을 제공받도록 구현될 수 있다. 비휘발성 메모리 장치들(100)은 플래시 메모리, 에프램(FRAM, ferroelectric random access memory), 피램(PRAM, phase-change random access memory), 엠램(MRAM, magnetic random access memory) 등으로 구현될 수 있다.
스토리지 컨트롤러(200)는 복수의 채널들(CH1~CH4)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. 스토리지 컨트롤러(200)는 버스(30)를 통하여 연결된 적어도 하나의 프로세서(210), 에러 정정 회로(ECC)(220), 호스트 인터페이스(230), 버퍼 메모리(240), 비휘발성 메모리 인터페이스(250) 및 태스크 큐(TQ)(260)를 포함한다. 일 실시예에서, 비휘발성 메모리 장치들(100)은 온칩 ECC 엔진을 포함할 수 있고, 이 경우, 스토리지 컨트롤러(200)의 에러 정정 회로(220)는 생략될 수 있다.
버퍼 메모리(240)는 스토리지 컨트롤러(200)의 구동에 필요한 데이터를 임시로 저장할 수 있다. 도 2에서 버퍼 메모리(240)는 스토리지 컨트롤러(200)의 내부에 포함되는 것으로 도시되어 있지만 반드시 여기에 제한되지 않을 것이다. 실시예에 따라서, 버퍼 메모리(240)는 스토리지 컨트롤러(200)의 외부에 별도로 존재할 수도 있다.
에러 정정 회로(220)는 기입 동작에서 프로그램될 데이터의 에러 정정 코드 값을 계산하고, 읽기 동작에서 읽혀진 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정하고, 데이터 복구 동작에서 비휘발성 메모리 장치(100)로부터 복구된 데이터의 에러를 정정할 수 있다. 도 2에 도시되지는 않았지만, 스토리지 컨트롤러(200)는 펌웨어(FW)(212)를 저장하는 코드 메모리를 더 포함할 수 있다. 상기 코드 메모리는 비휘발성 메모리 장치로 구현될 수 있다.
프로세서(210)는 스토리지 컨트롤러(200)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, 프로세서(210)는 플래시 변환 계층(FTL, Flash Translation Layer) 등을 포함하는 펌웨어(212)를 운용하도록 구성된다. 플래시 변환 계층(FTL)은 다양한 기능들을 수행할 수 있다. 예를 들면, 플래시 변환 계층(FTL)은 어드레스 맵핑 동작, 읽기 교정 동작, 에러 정정 동작, 등을 수행하는 다양한 계층들을 포함할 수 있다.
태스크 큐(260)는 호스트 장치(2000)로부터 제공되는 독출 태스크, 기입 태스크와 같은 태스크들 및 상기 태스크들의 상태 정보를 저장한다. 도 2에는 태스크 큐(260)가 호스트 인터페이스(230)의 외부에 구현된 것으로 도시되어 있으나 태스크 큐(260)는 호스트 인터페이스(230)에 포함될 수도 있다. 태스크 큐(26)에 대해서는 도 3을 참조하여 후술한다.
호스트 인터페이스(230)는 호스트 장치(2000)와의 인터페이스 기능을 제공할 수 있다. 비휘발성 메모리 인터페이스(250)는 비휘발성 메모리 장치(100)와의 인터페이스 기능을 제공할 수 있다.
호스트 장치(2000)와 스토리지 장치(3000)는 버스(10)를 통하여 상호 연결될 수 있다. 예를 들어, 도 2에 도시된 버스(10)는 JESD84-B51에 규정된 버스는 11개의 신호 라인들(wires)을 포함하는 eMMC 버스일 수 있다. 즉 eMMC 버스는 클록 라인, 데이터 스트로브 라인, 코맨드 라인, 리셋 라인 및 8 비트의 데이터 버스를 포함할 수 있다. 그러나, 본 발명의 실시예들이 이에 한정되는 것은 아니다. 예를 들어, eMMC 버스는 데이터 스트로브 라인을 제외한 10개의 신호 라인들을 포함할 수도 있다.
클록 라인은 클록 신호(CLK)를 호스트 장치(2000)로부터 스토리지 장치(3000)로 전송하고, 양방향(bidirectional) 코맨드 신호 라인은 코맨드(CMD)를 호스트 장치(2000)로부터 스토리지 장치(3000)로 전송하고 코맨드(CMD)에 대한 응답(RES)을 스토리지 장치(3000)로부터 호스트 장치(2000)로 전송한다. 양방향 데이터 버스는 데이터 기입 동작을 위한 기입 데이터(DAT[7:0])를 호스트 장치(2000)로부터 스토리지 장치(3000)로 전송하거나 데이터 독출 동작을 위한 독출 데이터(DAT[7:0])를 스토리지 장치(3000)로부터 호스트 장치(2000)로 전송할 수 있다. 데이터 스트로브 라인은 데이터 스트로브 신호(DS)를 스토리지 장치(3000)로부터 호스트 장치(2000)로 전송한다. 데이터 스트로브 신호(DS)는 스토리지 장치(3000)로부터 호스트 장치(2000)로 전송되는 데이터와 동기된 클록 신호일 수 있다. 호스트 장치(2000)는 리셋 라인을 통하여 하드웨어 리셋 신호를 스토리지 장치(3000)로 전송할 수 있다.
도 3을 참조하면, 태스크 큐(260)는 태스크 매니저(262), 태스크 저장부(264) 및 상태 저장부(266)를 포함할 수 있다.
태스크 매니저(262)는 태스크 저장부(264) 및 상태 저장부(266)를 관리한다. 호스트 장치(2000)로부터 전달된 코맨드가 특정한 코맨드, 예를 들어, 후술하는 태스크 설정 코맨드(CMD44) 및 태스크 어드레스 코맨드(CMD45) 등에 해당하는 경우에는 태스크 매니저(262)는 상기 코맨드가 나타내는 태스크를 태스크 저장부(264)에 저장한다. 태스크 저장부(264)에 저장될 코맨드는 버스(10)에 포함된 데이터 버스의 상태와 무관하게 호스트 장치(2000)로부터 스토리지 장치(3000)로 발급될 수 있다. 데이터 버스의 상태는 유휴 상태(idle), 데이터 송신 상태, 데이터 수신 상태 또는 비지 상태(busy)일 수 있다.
태스크 매니저(262)는 태스크 저장부(264)에 저장된 태스크들의 상태를 상태 저장부(266)에 저장한다. 태스크 매니저(262)는 태스크 저장부(264)에 저장된 태스크들을 기반으로 호스트 장치(2000)와 스토리지 장치(3000) 사이에 전달되는 데이터를 효율적으로 관리할 수 있다. 태스크 매니저(262)는 또한 상태 저장부(266)를 통해 태스크별 상태를 관리함으로써, 실행할 준비가 완료된 태스크, 즉 레디(ready)된 태스크에 대한 정보를 호스트 장치(2000)의 요청에 따라 또는 호스트 장치(2000)의 요청과 무관하게 능동적으로 호스트 장치(2000)에 알려줄 수 있다.
태스크 매니저(262)는 태스크 저장부(264)에 저장된 복수의 태스크들의 준비 동작이나 병렬 처리를 관리할 수 있다. 태스크 저장부(264)에 저장되는 태스크에 대해서는, 태스크 매니저(262)가 아직 완료되지 않은 태스크의 데이터 처리를 위해 필요로 하는 동작을 미리 수행하거나 비휘발성 메모리 장치들(100)의 인터리빙 동작 등을 이용하여 데이터를 미리 준비하는 등의 병렬 처리를 가능하게 한다. 이와 같은 병렬 처리를 통하여 스토리지 장치(3000)의 성능, 예를 들어, 기입 성능이나 독출 성능이 향상될 수 있다.
도 3에 도시된 바와 같이 태스크 저장부(264)는 복수의 태스크 레지스터들(CRG1~CRGN)을 포함하여 구현될 수 있다. N은 태스크 레지스터들의 사이즈(즉, 개수)를 나타내며, 2이상의 자연수이다. N을 멀티 큐 깊이(multi queue depth)라 정의할 수 있다.
따라서, 스토리지 장치(3000)는 최대 멀티 큐 깊이(N)만큼의 태스크들을 태스크 레지스터(CRG1~CRGN)에 저장할 수 있다. 태스크 레지스터(CRG1~CRGN) 각각에는 태스크 아이디, 전송 방향 정보, 데이터 크기, 및 시작 어드레스를 포함하는 태스크 정보가 저장될 수 있다. 태스크 정보는 또한 우선 순위 정보를 더 포함할 수 있다. 태스크 정보는 호스트 장치(2000)로부터 전송되는 코맨드의 아규먼트(argument)로 포함되어 스토리지 장치(3000)로 전송될 수 있다. 이에 대해서는 후술한다.
태스크 매니저(262)는 태스크의 우선 순위 정보 및/또는 전송 방향 정보를 이용하여 태스크의 실행 순서를 조절할 수 있다. 예를 들어, 태스크 매니저(262)는 우선 순위가 높은 태스크가 먼저 처리되도록 제어할 수 있다. 또는 태스크 매니저(262)는 독출 태스크가 기입 태스크보다 우선적으로 처리되도록 제어할 수 있다.
도 3에 도시된 바와 같이, 상태 저장부(266)는 상태 레지스터들(RRG1~RRGN)로 구현될 수 있다. 상태 레지스터들(RRG1~RRGN)은 태스크 레지스터들(CRG1~CRGN)에 저장된 태스크들의 상태를 각각 저장한다.
태스크의 정보가 저장된 태스크 레지스터, 즉 점유된 태스크 레지스터(CRGi)는 태스크 매니저(262)를 통해 관리되며, 태스크 매니저(262)는 태스크 레지스터(CRGi)(i는 1~N)에 저장된 태스크를 실행하기 위해 필요로 하는 내부 동작을 완료한 이후에 상응하는 상태 레지스터(RRGi)에 '레디(READY)' 정보를 업데이트할 수 있다.
예를 들어, 상태 레지스터들(RRG1~RRGN)은 N비트의 상태 정보를 저장할 수 있다. 상태 레지스터들(RRG1~RRGN)에 저장되는 제1 내지 제N 비트는 각각 제1 내지 제N 태스크 레지스터들(CRG1~CRGN)에 저장된 태스크(설명의 편의상 제1 내지 제N 태스크라 함)의 상태를 나타내는 정보이다. 예컨대, 제1 비트(예컨대, LSB(least significant bit))는 제1 태스크가 실행 준비가 완료된 상태(이하, "ready" 상태라 함) 인지 혹은 실행 준비가 완료되지 않은 상태(이하, "not-ready" 상태) 인지를 나타내고, 제N 비트(예컨대, MSB(most significant bit))는 제N 태스크가 "ready" 상태 인지 혹은 "not-ready" 상태 인지를 나타낸다.
일 실시예에서, 상태 레지스터들(RRG1~RRGN)의 초기값은 모두 '0'일 수 있다. 제1 내지 제 N 태스크 중 어느 하나의 태스크가 "ready" 상태가 되면, 상응하는 상태 레지스터의 해당 비트는 '1'로 변환된다. 태스크 매니저(262)는 태스크 레지스터들(CRG1~CRGN)에 저장된 태스크들의 상태를 확인하여, 상태 레지스터들(RRG1~RRGN)의 해당 비트들을 업데이트한다.
상기 실시예에서는, 각 태스크에 하나의 비트가 상태 정보로서 매핑되지만, 다른 실시예에서는, 각 태스크에 대하여 둘 이상의 비트들이 상태 정보로서 매핑될 수 있다. 즉, 각 태스크의 상태가 복수의 비트들로 표현될 수 있다.
예를 들어, 태스크당 2비트의 상태 비트들을 할당하여, 각 태스크의 상태를 아이들(idle), 비지(busy), 레디(ready) 및 에러(error)의 네 가지 상태로 나타낼 수도 있다. 물론, 태스크당 상태 비트의 수는 3 이상으로 확장될 수도 있다.
또한 도 3에 도시된 실시예에서는, 태스크 저장부(264) 및 상태 저장부(266)는 각각 태스크 레지스터들(CRG1~CRGN) 및 상태 레지스터들(RRG1~RRGN)로 구현되나, 본 발명의 실시예가 이에 한정되는 것은 아니다. 예를 들어, 태스크 저장부(264)는 큐(queue) 또는 슬롯(slot)으로 구현될 수도 있고, SRAM이나 DRAM과 같은 메모리로 구현될 수도 있다. 호스트 장치(2000)로부터 수신되는 코맨드 또는 태스크는 순차적으로 태스크 레지스터들(CRG1~CRGN)에 저장될 수 있으나, 저장된 순서대로 태스크가 실행되는 것은 아닐 수 있다. 예컨대, 태스크의 우선순위에 따라 실행 순서가 달라질 수도 있다.
도 4는 도 2의 시스템의 코맨드 큐잉에 따른 기입 동작 및 독출 동작을 설명하기 위한 흐름도이고, 도 5는 도 2의 시스템에서 사용되는 코맨드의 포맷의 일 예를 나타내는 도면이고, 도 6은 도 2의 시스템에서 사용되는 코맨드 정의의 일 예를 나타내는 도면이고, 도 7은 도 6의 코맨드 정의에 포함된 태스크 관리 코드(op-code)의 일 예를 나타내는 도면이다.
먼저 도 5를 참조하면, 각 코맨드는 48비트의 고정된 코드 길이를 가질 수 있고, 53 MHz의 동작 주파수에서 0.92 us(micro second)의 전송 시간을 필요로 할 수 있다.
코맨드는 "0"의 시작 비트로 시작할 수 있고, 시작 비트의 뒤에는 전송 방향을 나타내는 비트가 뒤따를 수 있다. 다음의 6비트는 코맨드의 인덱스를 나타내고 이 값은 0과 64 사이의 바이너리 코드 수(binary coded number)로 해석될 수 있다. 일부의 코맨드들은 어드레스와 같은 아규먼트(argument)를 필요로 하고, 아규먼트는 32 비트로 코딩될 수 있다. 도 5에서 x는 "0" 또는 "1"의 값을 나타내고, 코맨드에 따라서 변화할 수 있다. 모든 코맨드들은 7비트의 CRC(cyclic redundancy check) 코드(CRC7)에 의해 보호될 수 있다. 모든 코맨드 코드워드는 "1"의 종료 비트(end bit)로 끝날 수 있다. JESD84-B51에 규정된 일부 코맨드들의 예가 도 6에 도시되어 있다. 각 코맨드는 호스트 장치(2000)로부터 스토리지 장치(3000)로 발급(issue)된다.
도 2 내지 도 7을 참조하면, 호스트 장치(2000)는 제1 태스크(TSK1)에 대한 태스크 설정 코맨드(CMD44)를 스토리지 장치(3000)로 전송하고, 또한 제1 태스크(TSK1)에 대한 태스크 어드레스 코맨드(CMD45)를 스토리지 장치(3000)로 전송한다(S110). 데이터 버스를 통하여 이전 데이터를 전송하는 도중에도, 호스트 장치(2000)는 태스크 설정 코맨드(CMD44) 및 태스크 어드레스 코맨드(CMD45)를 스토리지 장치(3000)로 전송할 수 있다(S110).
태스크 설정 코맨드(CMD44)는 태스크의 아이디 및 해당 태스크의 동작의 방향을 설정하는 코맨드이다. 동작의 방향이란 데이터의 전송 방향을 의미한다. 이를 위하여, 태스크 설정 코맨드(CMD44)는 태스크 아이디(TASK ID), 데이터 전송 방향을 나타내는 전송 방향 정보(DD), 및 상기 플래시 메모리에 라이트할 데이터 또는 상기 플래시 메모리로부터 리드할 데이터 크기를 지정하기 위한 크기 정보(number of blocks)를 아규먼트로서 포함할 수 있다.
일 실시예에서, 태스크 설정 코맨드(CMD44)의 32 비트 아규먼트 중 하위 16비트([15:0])는 데이터 크기를 블록 수(number of blocks)로 나타내고, 그 다음 하위 5비트([20:16])는 태스크 아이디(TASK ID)를 나타내고, [23]비트는 우선순위(priority)를 나타내고, [30]비트는 데이터 전송 방향(DD)을 나타낼 수 있다. 여기서, 블록이란 미리 정의된 사이즈를 갖는 데이터의 단위로서, 예를 들어, 플래시 메모리의 한 페이지 또는 한 페이지의 배수에 해당할 수 있으나, 이에 한정되는 것은 아니다.
예를 들어, 태스크 설정 코맨드(CMD44)의 32 비트 아규먼트 중 [30]비트(DD)가 '0'으로 설정되면, 해당 태스크가 eMMC(300A)로 데이터를 저장하는 "기입(write)" 태스크임을 의미하고, '1'로 설정되면 해당 태스크가 eMMC(300A)로부터 데이터를 독출하는 "독출(read)" 태스크임을 의미한다.
일 실시예에서, 하나의 코맨드(CMD44)에서 아규먼트의 설정을 달리하여, "기입(write)" 태스크와 "독출(read)" 태스크를 구분하지만, 다른 실시예에서는, "기입(write)" 태스크를 위한 코맨드와 "독출(read)" 태스크를 위한 코맨드가 별개로 정의될 수 있다. 또한 일 실시예에서는, 우선순위가 1 비트([23])로 표현되지만, 다른 실시예에서는, 2이상의 비트로 표현될 수도 있다.
태스크 어드레스 코맨드(CMD45)는 해당 태스크의 데이터의 시작 어드레스(data block address) 정보를 포함할 수 있다. 시작 어드레스는 논리 어드레스(logical address)일 수 있다.
예를 들어, 해당 태스크가 "기입(write)" 태스크인 경우, 시작 어드레스 정보는 플래시 메모리에 라이트할 데이터의 시작 어드레스를 지정하기 위한 정보이고, 해당 태스크가 "독출(read)" 태스크인 경우, 시작 어드레스 정보는 플래시 메모리로부터 리드할 데이터의 시작 어드레스를 지정하기 위한 정보이다. 예를 들어, 태스크가 "독출(read)" 태스크이고, 시작 어드레스는 100, 데이터 크기가 10이면, 100번 시작 어드레스에서부터 10 블록(blocks)만큼의 데이터를 리드하는 태스크일 수 있다.
본 발명의 일 실시예에서는, 시작 어드레스 정보를 포함하는 태스크 어드레스 코맨드(CMD45)가 태스크 설정 코맨드(CMD44)와 별도로 정의되나, 본 발명의 다른 실시예에서는, 하나의 코맨드, 예컨대, 태스크 설정 코맨드(CMD44)에 데이터 크기 정보와 시작 어드레스 정보가 함께 포함될 수도 있다.
스토리지 장치(3000)는 호스트 장치(2000)로부터 전송되는 코맨드를 수신하여 태스크 아이디별로 태스크 정보를 태스크 레지스터들(CRG1~CRGN)에 저장할 수 있다. 예를 들어, 스토리지 장치(3000)는 호스트(200A)로부터 제1 태스크에 대한 태스크 설정 코맨드(CMD44)를 수신하고, 제1 태스크(TSK1)에 대한 태스크 정보를 태스크 레지스터들(CRG1~CRGN) 중 하나의 레지스터에 저장한다.
호스트 장치(2000)로부터 수신되는 코맨드는 순차적으로 태스크 레지스터들(CRG1~CRGN)에 저장될 수 있으나, 저장된 순서대로 태스크가 실행되는 것은 아닐 수 있다. 예컨대, 태스크의 우선순위에 따라 실행 순서가 달라질 수도 있다. 또한, 스토리지 장치(3000)는 호스트 장치(2000)로부터 제1 태스크(TSK1)에 대한 태스크 어드레스 코맨드(CMD45)를 수신하고, 제1 태스크에 해당하는 태스크 레지스터(예를 들어, CRG1)에 시작 어드레스 정보를 저장한다.
호스트 장치(2000)는 제1 태스크(TSK1)에 대한 데이터를 스토리지 장치(3000)로 전송하거나, 스토리지 장치(3000)로부터 전송받기 전에 다른 태스크인 제2 태스크(TSK2)에 대한 태스크 설정 코맨드(CMD44)를 스토리지 장치(3000)로 전송하고, 또한 제2 태스크(TSK2)에 대한 어드레스 코맨드(CMD45)를 스토리지 장치(3000)로 전송할 수 있다(S120). 스토리지 장치(3000)는 호스트 장치(2000)로부터 태스크 설정 코맨드(CMD44)를 수신하여, 제2 태스크(TSK2)에 대한 태스크 정보를 코맨드 레지스터들(CRG1~CRGN) 중 하나의 레지스터(예를 들어, CRG2)에 저장하고, 호스트 장치(2000)로부터 태스크 어드레스 코맨드(CMD45)를 수신하여, 제2 태스크(TSK)에 해당하는 코맨드 레지스터(예컨대, CRG2)에 시작 어드레스 정보를 저장할 수 있다.
도 4의 실시예에서는, 제1 태스크(TSK1)는 "기입(write)" 태스크이고, 제2 태스크(TSK2)는 "독출(read)" 태스크인 것으로 가정하지만, 이에 한정되는 것은 아니다.
다음으로, 호스트 장치(2000)는 상태 레지스터들(CRG1~CRGN)의 상태를 체크하기 위하여 상태 확인 코맨드(CMD13)를 스토리지 장치(3000)로 전송한다(S130). 상태 확인 코맨드(CMD13)는 코맨드 레지스터들(CRG1~CRGN)에 저장된 각 태스크의 준비 상태를 확인하기 위해 정의된 코맨드이다.
도 6에 도시된 바와 같이, 호스트 장치(2000)는 상태 확인 코맨드로 CMD13을 사용할 수 있다. 예를 들어, CMD13의 아규먼트 중 미리 정해진 하나의 비트(예컨대, [15]비트)를 '1'로 설정하여, 상태 확인 코맨드로 사용할 수 있다.
상태 확인 코맨드(CMD13)에 응답하여, 스토리지 장치(3000)는 상태 레지스터들(CRG1~CRGN)의 값들을 포함하는 상태 응답 메시지(RES)를 호스트 장치(2000)로 전송한다(S140). 호스트 장치(2000)는 상태 응답 메시지(RES)로부터 실행 준비가 완료된 태스크의 아이디를 확인한다. 예를 들어, 상태 응답 메시지(RES)는 상태 레지스터들(CRG1~CRGN)의 N비트(예를 들어, 32 비트) 값들을 아규먼트로 포함할 수 있다. 상태 레지스터들(CRG1~CRGN)의 비트 값들 중 '1'은 해당 태스크가 실행 준비가 완료된 상태(ready)임을 나타낼 수 있고, 호스트 장치(2000)는 상태 레지스터들(CRG1~CRGN)의 비트들 중 '1'에 해당하는 태스크를 확인할 수 있다.
S140 단계의 상태 응답 메시지(RES)로부터 제1 태스크(TSK1)가 'ready'임을 확인하면, 호스트 장치(2000)는 스토리지 장치(3000)로 제1 태스크(TSK1)에 대한 기입 실행 코맨드(CMD47)를 전송하고(S150), 또한 제1 태스크(TSK1)에 관련된 기입 데이터(WDT)를 전송한다(S160).
스토리지 장치(3000)는 기입 실행 코맨드(CMD47)에 응답하여, 기입 데이터(WDT)를 수신하여 버퍼 메모리(240)에 저장하고, 버퍼 메모리(240)에 저장된 데이터의 프로그램을 위하여 플래시 메모리 장치들(100)로 프로그램 제어 신호를인가하여, 플래시 메모리 장치들(100)로 기입 데이터를 프로그램할 수 있다.
호스트 장치(2000)는 주기적 또는 비주기적으로 상태 레지스터들(CRG1~CRGN)의 상태를 체크하기 위하여 상태 확인 코맨드(CMD13)를 스토리지 장치(3000)로 전송할 수 있다.
S170 단계에서, 호스트 장치(2000)는 상태 확인 코맨드(CMD13)를 스토리지 장치(3000)로 전송한다(S170). 상태 확인 코맨드(CMD13)에 응답하여, 스토리지 장치(3000)는 상태 레지스터들(CRG1~CRGN)의 값들을 포함하는 상태 응답 메시지(RES)를 호스트 장치(2000)로 전송한다(S180).
S180 단계의 상태 응답 메시지(RES)로부터 제2 태스크(TSK2)가 'ready'임을 확인하면, 호스트 장치(2000)는 제2 태스크(TSK)에 대한 독출 실행 코맨드(CMD46)를 전송한다(S190). 독출 실행 코맨드(CMD46)에 응답하여 스토리지 장치(3000)는 제2 태스크(TSK2)에 관련된 독출 데이터(RDT)를 호스트 장치(2000)로 전송한다(200).
도 6을 참조하면, 태스크를 관리하기 위한 태스크 관리 코맨드(CMD48)가 또한 정의된다. 태스크 관리 코맨드(CMD48)는 태스크 저장부(264)에 저장된 태스크를 관리 또는 제어하기 위하여 정의된 코맨드이다. 태스크 관리 코맨드(CMD48)는 특정 태스크를 취소하거나 전체 태스크를 취소할 수 있다. 또한, 태스크 관리 코맨드(CMD48)는 특정 태스크를 재실행, 즉 리트라이(retry)시키기 위하여 사용될 수도 있다.
태스크 관리 코맨드(CMD48)는 아규먼트로서 태스크 아이디(task identification)와 태스크 관리 코드(TM op-code)를 포함할 수 있다. 태스크 관리 코드(TM op-code)로 4비트([3:0])가 지정될 수 있으나, 이에 한정되는 것은 아니다.
도 7을 참조하면, 태스크 관리 코드(TM op-code)가 '1h'값으로 설정되면, 태스크 저장부(264)에 저장된 전체 태스크를 취소(또는 폐기)하고, 태스크 관리 코드(TM op-code)가 '2h'값으로 설정되면, 태스크 저장부(264)에 저장된 전체 태스크 중 특정 태스크(예컨대, 태스크 관리 코맨드(CMD48)에 포함된 태스크 아이디에 해당하는 태스크)만을 취소할 수 있다. 도 7에서는, 태스크 관리 코드(TM op-code)의 다른 값들은 '유보(reserved)'되어 있으나, 각 값은 특정 관리 동작에 대응하도록 정의될 수 있다. 이에 따라, 태스크 관리 코맨드(CMD48)는 특정 태스크를 재실행시키거나, 우선 순위를 변경하는 등 적어도 하나의 태스크를 관리 또는 제어하는 용도로 사용될 수 있다
도 6에 정의된 코맨드들 중 CMD44-CMD45는 쌍(pair)을 이루어 하나의 태스크를 구성하게 되고, 데이터의 전송(Data Transfer) 여부와 무관하게 스토리지 장치(3000)로 발급되어 태스크 저장부(264)에 저장될 수 있다. 태스크 저장부(264)에 저장된 태스크 중 실행 준비가 완료된 태스크는 기입 태스크인 경우 CMD46, 기입 태스크인 경우 CMD47을 사용하여 특정 태스크를 지정하여 리드 및 기입 동작을 실행할 수 있다.
도 8은 본 발명의 일 실시예에 따른 스토리지의 동작 방법을 나타내는 순서도이다.
호스트 장치(2000)와 스토리지 장치(3000) 사이의 신호 전달은 도 2 내지 도 7을 참조하여 설명한 방법으로 수행될 수 있으며, 이하 중복되는 설명은 생략될 수 있다. 스토리지 장치(3000)의 펌웨어(FW) 및 호스트 인터페이스(IF)는 태스크들을 저장하기 위하여 각각의 큐를 포함할 수 있다. 이하, 펌웨어(FW)의 큐는 펌웨어 큐(FWQ)라 칭하고 호스트 인터페이스(IF)는 전술한 태스크 큐(TQ)에 해당할 수 있다. 예를 들어, 펌웨어 큐(FWQ)는 스토리지 장치(3000) 내의 저장 영역의 일부일 수 있으며 태스크 큐(TQ)는 전술한 태스크 레지스터들로 구현될 수 있다.
스토리지 장치(3000)에 포함되는 프로세서(210)에 의해 실행되는 펌웨어(FW)가 기입 태스크를 실행할 준비가 완료되었는지 여부를 결정하는 실시예가 도 8에 도시되어 있다.
도 8을 참조하면, 호스트 장치(2000)가 기입 태스크(WTSK)를 스토리지 장치(3000)에 전달하면(S211) 스토리지 장치(3000)의 호스트 인터페이스(IF)는 태스크 큐(TQ)에 기입 태스크(WTSK)를 저장하고 이를 펌웨어(FW)에 전달한다(S212). 기입 태스크(WTSK)는 전술한 바와 같은 CMD44 및 CMD45를 통하여 호스트 장치(2000)로부터 스토리지 장치(3000)로 전달될 수 있다.
호스트 인터페이스(IF)가 펌웨어(FW)에게 기입 태스크(WTSK)를 전달하면, 펌웨어(FW)는 기입 태스크(WTSK)를 펌웨어 큐(FWQ)에 저장한다(ENQ). 이와 같이, 호스트 인터페이스(IF)의 태스크 큐(TQ)는 기입 태스크(WTSK)를 프로세서(210)에 전달하고, 프로세서(210)에 의해 수행되는 펌웨어(FW)는 기입 태스크(WTSK)를 펌웨어 큐(FWQ)에 저장할 수 있다.
호스트 장치(2000)는 전달한 기입 태스크(WTSK)가 레디 상태에 있는지를 체크하기 위해서 상태 확인 코맨드(CMD13)를 스토리지 장치(3000)로 전송한다(S213). 호스트 인터페이스(IF)는 기입 태스크(WTSK)의 레디 상태 여부를 나타내는 상태 응답 메시지(RES)를 호스트 장치(2000)로 전달한다(S213). 아직 기입 태스크(WTSK)를 실행할 준비가 되지 않은 경우 상태 응답 메시지(RES)는 기입 태스크(WTSK)가 레디 상태가 아님을 나타낸다.
펌웨어(FW)는 기입 태스크(WTSK)를 실행할 준비가 완료되면 태스크 레디 갱신(TRU)을 수행하고 기입 태스크(WTSK)가 레디 상태 통지(RDN)를 호스트 인터페이스(IF)에 전달하고(S215), 호스트 인터페이스(IF)는 태스크 큐(TQ)의 상태 정보를 갱신한다.
이후, 본 발명의 실시예들에 따라서 펌웨어(FW)는 데이터 백업 동작(DBKU)을 수행한다. 데이터 백업 동작은 스토리지 장치(3000)의 저장 영역에 저장된 데이터 중에서 기입 태스크(WTSK)의 수행에 의해 손상될 가능성이 있는 위험 데이터를 스토리지 장치(3000)의 백업 영역에 백업 데이터로서 저장하는 것이다. 데이터 백업 동작에 대해서는 도 9 내지 도 14를 참조하여 후술한다.
호스트 장치(2000)가 다시 상태 확인 코맨드(CMD13)를 스토리지 장치(3000)로 전송하면(S216), 호스트 인터페이스(IF)는 기입 태스크(WTSK)의 레디 상태 여부를 나타내는 상태 응답 메시지(RES)를 호스트 장치(2000)로 다시 전달한다(S217). 이와 같이, 호스트 장치(2000)는 기입 태스크(WTSK)가 레디 상태에 있음을 통지 받을 때까지 스토리지 장치(3000)에게 기입 태스크(WTSK)의 레디 상태를 체크하기 위한 상태 확인 코맨드(CMD13)를 반복적으로 전송할 수 있다.
호스트 장치(2000)는 기입 태스크(WTSK)가 레디 상태에 있음을 통지 받은 후에 기입 실행 코맨드(CMD47)를 스토리지 장치(3000)에 전달한다(S218). 기입 실행 코맨드(CMD47)는 호스트 인터페이스(IF)를 통하여 펌웨어(FW)에 전달되고(S219), 펌웨어(FW)는 데이터 백업 동작(DBKU)이 완료된 후에 기입 동작(WREXE)을 수행한다.
기입 동작(WREXE)이 완료되면, 펌웨어(FW)는 비지 해제(busy clear)에 대한 통지(BSC)를 발급하고(S230)는 비지 해제 통지(BSC)는 호스트 인터페이스(IF)를 통하여 호스트 장치(2000)에 전달된다(S221). 비지 해제 통지(BSC)를 받은 후에 호스트 장치(2000)는 스토리지 장치(3000)에 대하여 다른 서비스를 요청할 수 있다.
이상 설명한 바와 같이, 프로세서(210)에 의해 실행되는 펌웨어(FW)는 기입 태스크(WTSK)를 실행할 준비가 완료되었는지 여부를 결정할 수 있다. 펌웨어(FW)는 기입 태스크(WTSK)를 실행할 준비가 완료된 경우 태스크 큐(TQ)에 기입 태스크(WTSK)의 레디 상태를 통지한 후에 관리 동작, 즉 데이터 백업 동작(DBKU)을 수행하고, 태스크 큐(TQ)는 레디 상태의 통지(RDN)에 응답하여 기입 태스크(WTSK)의 상태 정보를 갱신할 수 있다.
호스트 장치(2000)의 기입 실행 코맨드(CMD47)에 대한 스토리지 장치(3000)의 응답 시간(RSa)은 호스트 장치(2000)가 기입 실행 코맨드(CMD47)를 발급한 시점부터 호스트 장치(2000)가 비지 해제 통지(BSC)를 수신한 시점까지의 시간으로 정의될 수 있다.
이와 같이, 본 발명의 실시예들에 따른 스토리지 장치, 상기 스토리지 장치를 포함하는 시스템 및 스토리지 장치의 동작 방법은, 데이터 백업 동작과 같은 관리 동작을 기입 실행 코맨드를 수신하기 전의 큐잉 단계(queueing stage) 및 레디 단계(ready stage)에서 미리 수행함으로써 호스트 장치의 기입 실행 코맨드에 대한 스토리지 장치의 응답 시간(RSa)을 감소하고 상기 스토리지 장치를 사용하는 시스템의 성능을 향상시킬 수 있다.
도 9는 도 2의 스토리지 장치에 포함되는 비휘발성 메모리 셀 어레이의 일 실시예를 나타내는 회로도이다.
도 9를 참조하면, 메모리 셀 어레이(110)는 스트링 선택 트랜지스터(SST)들, 접지 선택 트랜지스터(GST)들 및 메모리 셀(MC2)들을 포함할 수 있다. 스트링 선택 트랜지스터(SST)들은 비트 라인들(BL(1), ..., BL(m))에 연결되고, 접지 선택 트랜지스터(GST)들은 공통 소스 라인(CSL)에 연결될 수 있다. 동일한 열에 배열된 메모리 셀(MC2)들은 비트 라인들(BL(1), ..., BL(m)) 중 하나와 공통 소스 라인(CSL) 사이에 직렬로 배치될 수 있으며, 동일한 행에 배열된 메모리 셀(MC2)들은 워드 라인들(WL(1), WL(2), WL(3), ..., WL(n-1), WL(n)) 중 하나에 공통으로 연결될 수 있다. 즉, 스트링 선택 트랜지스터(SST)들과 접지 선택 트랜지스터(GST)들 사이에 메모리 셀(MC2)들이 직렬로 연결될 수 있으며, 스트링 선택 라인(SSL)과 접지 선택 라인(GSL) 사이에는 16개, 32개 또는 64개의 복수의 워드 라인들이 배열될 수 있다.
스트링 선택 트랜지스터(SST)들은 스트링 선택 라인(SSL)에 연결되어, 스트링 선택 라인(SSL)으로부터 인가되는 전압의 레벨에 따라 제어될 수 있고, 접지 선택 트랜지스터(GST)들은 접지 선택 라인(GSL)에 연결되어, 접지 선택 라인(GSL)으로부터 인가되는 전압의 레벨에 따라 제어될 수 있다. 메모리 셀(MC2)들은 워드 라인들(WL(1), ..., WL(n))에 인가되는 전압의 레벨에 따라 제어될 수 있다.
NAND형 플래시 메모리 장치는 페이지(page, 111) 단위로 기입 동작 및 독출 동작을 수행하며, 블록(112) 단위로 소거 동작을 수행한다. 기입 동작이 수행되는 경우에, 상기 NAND형 플래시 메모리 장치의 벌크 기판에는 약 0V의 벌크 전압이 인가될 수 있다.
도 2의 스토리지 장치에 포함되는 비휘발성 메모리 셀 어레이는 도 9에 도시된 구성에 한정되지 않으며, NOR형 낸드 플래시, 3차원 낸드 플래시(또는 버티컬 낸드 플래시) 등과 같은 다양한 구성을 가질 수 있다.
도 10은 정상적인 기입 동작이 수행되었을 때의 멀티 레벨 셀들의 상태 변화를 설명하기 위한 도면이다.
일 예로서, 도 10에는 2비트 프로그램 또는 MLC 프로그램에 따른 문턱 전압 산포가 표시되어 있다. 한 워드라인에 2개의 페이지 정보가 기록된다. 이하, 첫 번째 프로그램 되는 페이지를 최하위 비트(LSB, Least Significant Bit) 페이지, 수행되는 프로그램은 LSB 프로그램이라고 하고, 두 번째 프로그램 되는 페이지는 최상위(MSB, Most Significant Bit) 페이지, 수행되는 프로그램은 MSB 프로그램이라 한다. 도 10에서 가로축은 문턱전압을 나타내고 세로축은 셀 수 (NOC, Number of cells)를 나타낸다.
도 10을 참조하면, 제1 그래프(G11)에 도시된 바와 같이 선택 워드라인에 연결된 셀들의 문턱전압의 산포는 프로그램이 수행 되기 전에 소거(Erase) 상태인 E0에 있다. 선택 워드라인에 연결된 셀들에 LSB 프로그램을 수행하면 제2 그래프(G12)에 도시된 바와 같이 문턱전압의 산포는 E0 상태로부터 LSB 프로그램 상태인 P0 상태로 이동한다. 이러한 2개의 문턱전압의 산포들, 즉 MLC의 상태들(E0, P0)은 하나의 독출 전압(VR0)을 이용하여 독출될 수 있다. 이어서 선택 워드라인에 MSB 프로그램을 수행하면 제3 그래프(G31)에 도시된 바와 같이 문턱 전압의 산포는 E0 상태로부터 P1 상태로, P0 상태로부터 P2 또는 P3 상태로 이동한다. 선택 워드라인에 LSB 페이지와 MSB페이지의 프로그램이 완료되면 선택워드라인에 연결된 셀들은 4개의 문턱 전압 산포를 갖는다. 이러한 4개의 상태들(E0, P1, P2, P3)은 3개의 독출 전압들(VR1, VR2, VR3)을 이용하여 독출될 수 있다.
도 11은 멀티 레벨 셀들의 최하위 비트 페이지의 기입 동작 중 서든 파워 오프가 발생한 경우를 설명하기 위한 도면이고, 도 12는 최하위 비트 페이지의 기입 동작 중 서든 파워 오프가 발생한 경우의 멀티 레벨 셀들의 상태 변화를 설명하기 위한 도면이다.
프로그램 동작 수행 시 서든 파워 오프(SPO, Sudden Power Off)와 같이 정상적인 프로그램 동작의 수행을 방해하는 상황이 발생하면, 메모리 셀은 목표한 상태로 프로그램되지 못하고, 메모리 셀들의 문턱전압 산포가 비정상적으로 형성될 수 있다. 이에 따라, 메모리 셀의 상태 독출 시, 다수의 메모리 셀에서 프로그램 수행 시 목표로 했던 상태가 아닌, 다른 상태가 독출되는 독출 에러가 발생할 수 있다. 따라서, 메모리 장치에 있어서 프로그램된 메모리 셀들이 정상적으로 프로그램 되었는지 확인하고, 비정상적으로 프로그램 된 경우에 데이터가 안정적으로 저장될 수 있도록 보완하는 동작이 요구된다.
도 11을 참조하면, 예를 들어, 멀티 레벨 셀(MLC, multi-level cell) 프로그램이 수행되는 기입 메모리 블록(WMB)에서는 워드라인들(WL1~WL7)의 각각에 대하여 두 개의 페이지들에 상응하는 데이터를 저장 할 수 있다. 도 11에는 6개의 페이지들(PG1~PG6)에 대한 프로그램이 수행된 경우를 예시하고 있으며, 페이지들(PG1~PG6)의 숫자는 프로그램 순서에 해당한다. 예를 들어, 제2 워드라인(WL2)의 MSB 페이지(PG5)의 프로그램 순서는 5번 째이다. 이후의 6번째 프로그램을 하는 순서는 제4 워드라인(WL4)의 LBS 페이지(PG6)이다. 이와 같이, MLC 프로그램의 순서는 각 워드라인의 LSB 페이지 MSB 페이지를 상위 워드라인 및 하위 워드라인과 번갈아 가며 프로그램을 수행할 수 있다. 이와 같이 정해진 순서에 따라서 MLC 프로그램을 수행함으로써 인접 워드라인들 사이의 간섭 및 커플링(coupling) 영향을 최소화 할 수 있다. 도 11은 제4 워드라인(WL4)의 LSB 페이지(PG6)를 프로그램할 때 서든 파워 오프(SPO, Sudden Power Off)가 발생 한 경우를 나타낸다. SPO가 발생하면 전원 공급이 갑자기 중단되어 진행 중인 프로그램은 완료되지 못하고 중단된다. SPO가 발생한 워드라인에 연결된 셀들의 문턱전압 산포는 소거 상태도 아니고 프로그램 상태도 아닌 소프트 프로그램(Soft Program)된 상태로 남게 된다.
도 11 및 도 12를 참조하면, 선택 워드라인인 제4 워드라인(WL4)의 문턱전압 산포는 제1 그래프(G21)에 도시된 바와 같이 프로그램이 수행되기 전에는 소거 상태인 E0 이다. 제2 그래프(G22)는 제4 워드라인(WL4)에 LSB 프로그램이 진행 중에 서든 파워 오프가 발생하여 LSB 프로그램이 중단 되었을 때 제4 워드라인(WL4)에 연결된 셀들의 문턱 전압 산포를 나타낸다. 제4 워드라인(WL4)에 연결된 셀들의 산포는 소거 상태인 E0에서 프로그램 진행 중에 중단 되어 소프트 프로그램 상태인 SP0 상태가 된다. 프로그램이 완료되지 않은 상태에서 SPO가 발생하였기 때문에 호스트 장치(2000)는 전원이 복구된 후에 중단된 제6 페이지(PG6)에 대한 프로그램을 다시 시도한다.
도 13은 멀티 레벨 셀들의 최상위 비트 페이지의 기입 동작 중 서든 파워 오프가 발생한 경우를 설명하기 위한 도면이고, 도 14는 최상위 비트 페이지의 기입 동작 중 서든 파워 오프가 발생한 경우의 멀티 레벨 셀들의 상태 변화를 설명하기 위한 도면이다. 이하 도 10 내지 도 12의 설명과 중복되는 설명은 생략한다.
도 13에는 9개의 페이지들(PG1~PG9)에 대한 프로그램이 수행된 경우를 예시하고 있으며, 페이지들(PG1~PG9)의 숫자는 프로그램 순서에 해당한다. 또한 도 13은 제4 워드라인(WL4)의 MSB 페이지(PG9)를 프로그램할 때 서든 파워 오프(SPO, Sudden Power Off)가 발생 한 경우를 나타낸다.
도 13 및 도 14를 참조하면, 선택 워드라인인 제4 워드라인(WL4)의 문턱전압 산포는 제1 그래프(G31)에 도시된 바와 같이 프로그램이 수행되기 전에는 소거 상태인 E0 이다. 제4 워드라인(WL4)에 연결된 셀들에 LSB 프로그램을 수행하면 제2 그래프(G32)에 도시된 바와 같이 문턱전압의 산포는 E0 상태로부터 LSB 프로그램 상태인 P0 상태로 이동한다. 제3 그래프(G33)는 제4 워드라인(WL4)에 MSB 프로그램이 진행 중에 서든 파워 오프가 발생하여 MSB 프로그램이 중단 되었을 때 제4 워드라인(WL4)에 연결된 셀들의 문턱 전압 산포를 나타낸다. 제4 워드라인(WL4)에 연결된 셀들의 산포는 LSB프로그램 상태도 아니고 MSB 프로그램 상태도 아닌 소프트 프로그램된 상태들(SP1, SP2, SP3)로 남게 된다. 프로그램이 완료되지 않은 상태에서 SPO가 발생하였기 때문에 호스트 장치(2000)는 전원이 복구된 후에 중단된 제9 페이지(PG9)에 대한 프로그램을 다시 시도한다.
이하 도 11 및 도 13을 다시 참조하여 도 8에서 설명한 데이터 백업 동작(DBKU)을 설명한다. 데이터 백업 동작(DBKU)은 스토리지 장치(3000)의 저장 영역, 즉 기입 메모리 블록(WMB)에 저장된 데이터 중에서 기입 태스크의 수행에 의해 손상될 가능성이 있는 위험 데이터를 스토리지 장치(3000)의 백업 영역, 즉 백업 메모리 블록(BMB)에 백업 데이터로서 저장하는 것을 말한다.
도 11 및 도 13을 참조하면, 백업 메모리 블록(BMB)에는 이전에 수행된 데이터 백업 동작에 의한 백업 데이터, 즉 백업 페이지들(BPG1, BPG2)이 저장되어 있을 수 있다. 새로운 기입 동작이 수행될 때마다 이전의 백업 페이지는 폐기 또는 무효화되고 새로운 백업 페이지가 백업 메모리 블록(BMB)에 저장될 수 있다.
도 11에서와 같이 LSB 페이지인 제6 페이지(PG6)를 프로그램하는 중에 SPO가 발생한 경우에는 호스트 장치(2000)는 프로그램이 완료되지 않은 것으로 판단하고 전원이 복구된 후에 제6 페이지(PG6)에 대한 프로그램을 다시 수행하도록 스토리지 장치(3000)에게 요청할 수 있다. 이 경우에는 스토리지 장치(3000)의 펌웨어(FW)는 위험 데이터가 존재하지 않은 것으로 결정할 수 있다. 즉 펌웨어(FW)는 기입 태스크가 MLC들의 LSB 페이지에 대하여 수행되는 경우에는 데이터 백업 동작(DBKU)을 수행하지 않을 수 있다.
제4 워드라인(WL4)의 메모리 셀들은 전술한 소프트 프로그램된 상태(SP0)에 있으므로 다시 새로운 데이터가 기입될 수 없다. 한편, 제3 워드 라인(WL3)에 저장된 제4 페이지(PG4)는 제4 워드라인(WL4)에 의해 영향을 받아 오류가 발생할 가능성이 있으며, 제4 페이지(PG4)는 기입 메모리 블록(WMB)의 다른 빈 공간에 이전하여 저장될 수 있다. 이와 같이 오류가 발생했거나 오류가 발생할 가능성이 있는 스토리지 장치(2000)의 저장 영역, 즉 제3 워드라인(WL3) 및/또는 제4 워드라인(WL4)에는 임의의 데이터나 또는 미리 정해진 더미 데이터를 기입하는 더미 기입 동작이 수행될 수 있다.
도 13에서와 같이 MSB 페이지인 제9 페이지(PG9)를 프로그램하는 중에 SPO가 발생한 경우에는 호스트 장치(2000)는 프로그램이 완료되지 않은 것으로 판단하고 전원이 복구된 후에 제9 페이지(PG6)에 대한 프로그램을 다시 수행하도록 스토리지 장치(3000)에게 요청할 수 있다. 그러나 이미 제4 워드라인(WL4)에 저장되어 있는 LSB 페이지인 제6 페이지(PG6)는 전술한 바와 같은 소프트 프로그램된 상태(SP1, SP2, SP3)를 갖게 되므로 손상되어 정정이 불가능하게 된다. 이와 같이 손상될 가능성이 있는 제6 페이지(PG6)는 제9 페이지(PG9)에 대한 프로그램이 수행되기 전에 백업 메모리 블록(BMB)에 백업 데이터(BPG3)로서 저장될 수 있다. 나아가, 프로그램이 수행되는 제4 워드라인(WL4)에 인접한 제5 워드라인(WL5)에 이미 저장되어 있는 제8 페이지(PG8)도 손상될 가능성이 있다고 판단하여 백업 메모리 블록(BMB)에 백업 데이터(BPG4)로서 저장될 수 있다. 이와 같이, 기입 태스크의 수행에 의해 손상될 가능성이 있는 위험 데이터는 상기 기입 태스크가 수행되기 전에 상기 멀티 레벨 셀들에 이미 기입되어 있는 적어도 하나의 페이지(PG6, PG8)에 상응하는 데이터를 포함할 수 있다. 스토리지 장치(3000)는 전원이 복구된 후에 위험 데이터(PG6, PG8)가 손상되었는지 여부를 결정할 수 있다. 위험 데이터(PG6, PG8)가 손상되었다고 판단된 경우, 스토리지 장치(3000)는 백업 영역(BMB)에 저장된 백업 데이터(BPG3, BPG4)에 기초하여 위험 데이터(PG6, PG8)를 복구할 수 있다.
한편, 전술한 바와 같이, 오류가 발생했거나 오류가 발생할 가능성이 있는 스토리지 장치(2000)의 저장 영역, 즉 제4 워드라인(WL4) 및/또는 제5 워드라인(WL5)에는 임의의 데이터나 또는 미리 정해진 더미 데이터를 기입하는 더미 기입 동작이 수행될 수 있다.
도 11 및 도 13에 예시된 바와 같이, 기입 태스크가 수행되는 저장 영역, 즉 기입 메모리 블록(WMB)은 복수의 비트들을 각각 저장하는 멀티 레벨 셀들을 포함하고, 데이터 백업 동작이 수행되는 백업 영역, 즉 백업 메모리 블록(BMB)은 하나의 비트를 각각 저장하는 싱글 레벨 셀들을 포함할 수 있다. 즉, 기입 메모리 블록(WMB)에서는 하나의 워드라인마다. LSB 페이지 및 MLS 페이지가 저장되지만 백업 메모리 블록(BMB)에서는 하나의 워드라인마다 LSB 페이지만이 저장될 수 있다. 백업 메모리 블록(BMB)을 SLC 방식으로 운용함으로써 데이터 백업 동작을 신속하게 수행하고 데이터 백업 동작에 의해 시스템의 동작 속도 및 성능이 저하되는 것을 줄일 수 있다.
이와 같은 데이터 백업 동작, 더미 기입 동작과 같은 관리 동작은 전술한 본 발명의 실시예들에 따라서 기입 실행 코맨드를 수신하기 전의 큐잉 단계(queueing stage) 및 레디 단계(ready stage)에서 미리 수행할 수 있고, 이로써 호스트 장치의 기입 실행 코맨드에 대한 스토리지 장치의 응답 시간(response time)을 감소하고 상기 스토리지 장치를 사용하는 시스템의 성능을 향상시킬 수 있다.
도 15는 스토리지 장치가 기입 실행 코맨드를 수신한 후에 관리 동작을 수행하는 경우를 나타내는 순서도이다.
도 15에 도시된 동작 및/또는 단계들(S311~S321, ENQ, TRU, DBKU, WREXE)은 도 8에 도시된 동작 및/또는 단계들(S211~S221, ENQ, TRU, DBKU, WREXE)과 실질적으로 동일하므로 중복되는 설명은 생략한다.
도 8의 경우에는 본 발명의 실시예들에 따라서 펌웨어(FW)는 기입 태스크(WTSK)를 저장한 후 기입 실행 코맨드(CMD47)를 수신하기 전에 스토리지 장치(3000) 내부의 관리 동작, 즉 데이터 백업 동작(DBKU)을 수행한다. 반면에 도 15의 경우에는 펌웨어(FW)는 기입 실행 코맨드(CMD47)를 수신한 후에 데이터 백업 동작(DBKU)을 시작하고 데이터 백업 동작(DBKU)이 완료된 후에 기입 동작(WREXE)을 수행한다. 결과적으로 도 15의 기입 실행 코맨드(CMD47)에 대한 스토리지 장치(3000)의 응답 시간(RSb)은 도 8의 기입 실행 코맨드(CMD47)에 대한 스토리지 장치(3000)의 응답 시간(RSa)보다 증가함을 알 수 있다.
이와 같이, 본 발명의 실시예들에 따라서, 기입 실행 코맨드를 수신하기 전의 큐잉 단계(queueing stage) 및 레디 단계(ready stage)에서 미리 수행함으로써 호스트 장치의 기입 실행 코맨드에 대한 스토리지 장치의 응답 시간을 감소하고 상기 스토리지 장치를 사용하는 시스템의 성능을 향상시킬 수 있다.
도 16은 본 발명의 일 실시예에 따른 스토리지의 동작 방법을 나타내는 순서도이다.
호스트 장치(2000)의 호스트 인터페이스(IF)에 포함되는 태스크 큐(TQ)가 기입 태스크를 실행할 준비가 완료되었는지 여부를 결정하는 실시예가 도 16에 도시되어 있다.
도 16에 도시된 동작 및/또는 단계들(S411~S418, ENQ, TRU, DBKU, WREXE)은 도 8에 도시된 동작 및/또는 단계들(S211~S221, ENQ, TRU, DBKU, WREXE)과 실질적으로 동일하므로 중복되는 설명은 생략한다.
프로세서(210)에 의해 실행되는 펌웨어(FW)가 기입 태스크(WTSK)를 실행할 준비가 완료되었는지 여부를 결정하는 도 8의 실시예와는 다르게, 도 16의 실시예에서는 태스크 큐(TQ)는 기입 태스크(WTSK)를 실행할 준비가 완료되었는지 여부를 결정할 수 있다. 태스크 큐(TQ)는 기입 태스크(WTSK)를 실행할 준비가 완료된 경우 기입 태스크(WTSK)의 상태 정보를 갱신하고, 펌웨어(FW)는 기입 태스크(WTSK)를 펌웨어 큐에 저장한(ENQ) 후에 관리 동작, 즉 데이터 백업 동작(DBKU)을 수행할 수 있다.
도 17 및 도 18은 본 발명의 실시예들에 따른 스토리지의 동작 방법들을 나타내는 순서도들이다.
도 17 및 도 18에 도시된 데이터 백업 동작(DBKU)을 제외한 동작 및/또는 단계들(S211~S221, ENQ, TRU, WREXE)은 도 8에 도시된 동작 및/또는 단계들(S211~S221, ENQ, TRU, WREXE)과 실질적으로 동일하므로 중복되는 설명은 생략한다.
도 17의 실시예에서는, 펌웨어(FW)는 기입 태스크(WTSK)를 펌웨어 큐에 저장한(ENQ) 후에 더미 기입 동작(DMWR)을 전술한 관리 동작으로서 수행할 수 있다. 더미 기입 동작(DMWR)은 도 11 및 도 13을 참조하여 설명한 바와 같이 상기 비휘발성 메모리 장치의 오류가 발생했거나 오류가 발생할 가능성이 있는 저장 영역에 더미 데이터를 기입하는 것을 말한다.
도 18의 실시예에서는, 펌웨어(FW)는 기입 태스크(WTSK)를 펌웨어 큐에 저장한(ENQ) 후에 스토리지 장치(3000)의 제어를 위한 메타 데이터의 기입 동작(MTWR)을 전술한 관리 동작으로서 수행할 수 있다. 메타 데이터는 펌웨어(FW)가 실행되면서 발생되고 갱신되는 레지스터 데이터 및 프로그램 시퀀스(sequence) 데이터 등을 포함할 수 있다. 또한 메타 데이터는 플래시 변환 계층이 관리하는 어드레스 맵핑 데이터, 배드 블럭 데이터, 등이 포함될 수 있다. 상기 메타 데이터는 도 2의 스토리지 장치(3000)의 버퍼 메모리(240)에 저장될 수도 있고 비휘발성 메모리 장치(100)에 저장될 수도 있다.
도 19는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
도 19를 참조하면, 모바일 장치(4000)는 어플리케이션 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 저장 장치(4400), 및 모바일 램(4500)을 포함한다.
어플리케이션 프로세서(4100)는 모바일 장치(4000)의 전반적인 동작을 제어한다. 어플리케이션 프로세서(4100)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 통신 모듈(4200)은 외부와의 유선 통신 및/또는 무선 통신을 제어하도록 구현될 수 있다. 디스플레이/터치 모듈(4300)은 어플리케이션 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다. 저장 장치(4400)는 사용자의 데이터를 저장하도록 구현될 수 있다.
저장 장치(4400)는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 솔리드 스테이트 드라이브(SSD, solid state drive), 유니버셜 플래시 스토리지(UFS, universal flash storage) 장치일 수 있다. 저장 장치(4400)는 전술한 바와 같이 기입 실행 코맨드를 수신하기 전에 관리 동작을 수행하기 위한 구성을 가질 수 있다.
모바일 램(4500)은 모바일 장치(4000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 예를 들어, 모바일 램(4500)은 DDR SDRAM, LPDDR SDRAM, GDDR SDRAM, RDRAM 등과 같은 동적 랜덤 액세스 메모리일 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 스토리지 장치, 상기 스토리지 장치를 포함하는 시스템 및 스토리지 장치의 동작 방법은, 데이터 백업 동작과 같은 관리 동작을 기입 실행 코맨드를 수신하기 전에 큐잉 단계(queueing stage) 및 레디 단계(ready stage)에서 미리 수행함으로써 호스트 장치의 기입 실행 코맨드에 대한 스토리지 장치의 응답 시간(response time)을 감소하고 상기 스토리지 장치를 사용하는 시스템의 성능을 향상시킬 수 있다.
본 발명의 실시예들은 스토리지 장치 및 이를 포함하는 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 비휘발성 메모리 장치 및 스토리지 컨트롤러를 포함하는 스토리지 장치의 동작 방법으로서,
    상기 스토리지 컨트롤러에 의해, 호스트 장치로부터 기입 태스크를 수신하는 단계;
    상기 스토리지 컨트롤러에 의해, 상기 스토리지 컨트롤러에 포함되는 태스크 큐에 상기 기입 태스크를 저장하는 단계;
    상기 스토리지 컨트롤러에 의해, 상기 호스트 장치로부터 기입 실행 코맨드를 수신하는 단계;
    상기 스토리지 컨트롤러에 의해, 상기 기입 실행 코맨드에 응답하여 상기 기입 태스크를 수행하는 단계; 및
    상기 스토리지 컨트롤러에 의해, 상기 기입 태스크를 상기 태스크 큐에 저장한 후 상기 호스트 장치로부터 상기 기입 실행 코맨드를 수신하기 전에 상기 스토리지 장치 내부의 관리 동작을 수행하는 단계를 포함하고,
    상기 관리 동작을 수행하는 단계는,
    상기 스토리지 장치의 저장 영역에 저장된 데이터 중에서 상기 기입 태스크의 수행에 의해 손상될 가능성이 있는 위험 데이터를 상기 스토리지 장치의 백업 영역에 백업 데이터로서 저장하는 데이터 백업 동작을 수행하는 단계를 포함하는 스토리지 장치의 동작 방법.
  2. 삭제
  3. 제1 항에 있어서,
    상기 저장 영역은 복수의 비트들을 각각 저장하는 멀티 레벨 셀들을 포함하고,
    상기 위험 데이터는 상기 기입 태스크가 수행되기 전에 상기 멀티 레벨 셀들에 이미 기입되어 있는 적어도 하나의 페이지에 상응하는 데이터를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  4. 제3 항에 있어서,
    상기 기입 태스크가 상기 멀티 레벨 셀들의 최하위 페이지에 대하여 수행되는 경우에는 상기 데이터 백업 동작을 수행하지 않는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  5. 제1 항에 있어서,
    상기 백업 영역은 하나의 비트를 각각 저장하는 싱글 레벨 셀들을 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  6. 제1 항에 있어서,
    상기 위험 데이터가 손상된 경우, 상기 백업 영역에 저장된 상기 백업 데이터에 기초하여 상기 위험 데이터를 복구하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  7. 제1 항에 있어서,
    상기 스토리지 장치가 상기 태스크 큐에 저장된 상기 기입 태스크를 실행할 준비가 완료된 경우 상기 호스트 장치에게 상기 기입 태스크가 레디 상태에 있음을 통지하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  8. 제7 항에 있어서,
    상기 호스트 장치는 상기 기입 태스크가 레디 상태에 있음을 통지 받을 때까지 상기 스토리지 장치에게 상기 기입 태스크의 레디 상태를 체크하기 위한 상태 확인 코맨드를 반복적으로 전송하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  9. 제1 항에 있어서,
    상기 호스트 장치로부터 기입 태스크를 수신하는 단계는,
    태스크 아이디, 데이터 전송 방향을 나타내는 전송 방향 정보, 기입 데이터의 크기를 나타내는 크기 정보 및 우선순위 정보를 포함하는 기입 설정 코맨드를 수신하는 단계; 및
    상기 기입 데이터의 시작 어드레스를 나타내는 어드레스 정보를 포함하는 기입 어드레스 코맨드를 수신하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  10. 제1 항에 있어서,
    상기 관리 동작을 수행하는 단계는,
    오류가 발생했거나 오류가 발생할 가능성이 있는 상기 스토리지 장치의 저장 영역에 더미 데이터를 기입하는 더미 기입 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  11. 제1 항에 있어서,
    상기 관리 동작을 수행하는 단계는,
    상기 스토리지 장치의 제어를 위한 메타 데이터의 기입 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  12. 제1 항에 있어서,
    상기 스토리지 장치는 비휘발성 메모리를 포함하는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card)인 것을 특징으로 하는 스토리지 장치의 동작 방법.
  13. 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는,
    호스트 장치로부터 제공되는 기입 태스크 및 상기 기입 태스크의 상태 정보를 저장하는 태스크 큐; 및
    상기 스토리지 컨트롤러의 동작을 제어하는 프로세서를 포함하고,
    상기 프로세서는 상기 기입 태스크를 상기 태스크 큐에 저장한 후 상기 호스트 장치로부터 기입 실행 코맨드를 수신하기 전에 스토리지 장치 내부의 관리 동작을 수행하고,
    상기 태스크 큐는 상기 기입 태스크를 상기 프로세서에 전달하고,
    상기 프로세서에 의해 수행되는 펌웨어는 상기 기입 태스크를 펌웨어 큐에 저장하는 스토리지 장치.
  14. 삭제
  15. 제13 항에 있어서,
    상기 펌웨어는 상기 기입 태스크를 실행할 준비가 완료되었는지 여부를 결정하는 것을 특징으로 하는 스토리지 장치.
  16. 제15 항에 있어서,
    상기 펌웨어는 상기 기입 태스크를 실행할 준비가 완료된 경우 상기 태스크 큐에 상기 기입 태스크의 레디 상태를 통지한 후에 상기 관리 동작을 수행하고,
    상기 태스크 큐는 상기 레디 상태의 통지에 응답하여 상기 기입 태스크의 상태 정보를 갱신하는 것을 특징으로 하는 스토리지 장치.
  17. 제13 항에 있어서,
    상기 태스크 큐는 상기 기입 태스크를 실행할 준비가 완료되었는지 여부를 결정하는 것을 특징으로 하는 스토리지 장치.
  18. 제17 항에 있어서,
    상기 태스크 큐는 상기 기입 태스크를 실행할 준비가 완료된 경우 상기 기입 태스크의 상태 정보를 갱신하고,
    상기 펌웨어는 상기 기입 태스크를 펌웨어 큐에 저장한 후에 상기 관리 동작을 수행하는 것을 특징으로 하는 스토리지 장치.
  19. 제13 항에 있어서,
    상기 관리 동작은,
    상기 비휘발성 메모리 장치의 저장 영역에 저장된 데이터 중에서 상기 기입 태스크의 수행에 의해 손상될 가능성이 있는 위험 데이터를 상기 스토리지 장치의 백업 영역에 백업 데이터로서 저장하는 데이터 백업 동작을 포함하는 것을 특징으로 하는 스토리지 장치.
  20. 호스트 장치; 및
    상기 호스트 장치에 의해 제어되는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card)를 포함하고,
    상기 임베디드 멀티미디어 카드는 상기 호스트 장치로부터 수신된 기입 태스크를 상기 임베디드 멀티미디어 카드에 포함되는 태스크 큐에 저장한 후 상기 호스트 장치로부터 기입 실행 코맨드를 수신하기 전에 상기 임베디드 멀티미디어 카드 내부의 관리 동작을 수행하고,
    상기 태스크 큐는 상기 기입 태스크를 상기 임베디드 멀티미디어 카드에 포함되는 프로세서에 전달하고,
    상기 프로세서에 의해 수행되는 펌웨어는 상기 기입 태스크를 펌웨어 큐에 저장하는 시스템.
KR1020160096759A 2016-07-29 2016-07-29 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법 KR102641107B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160096759A KR102641107B1 (ko) 2016-07-29 2016-07-29 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
US15/390,865 US10649692B2 (en) 2016-07-29 2016-12-27 Storage device, system including the same and method of operating the same
CN201710628774.2A CN107665722B (zh) 2016-07-29 2017-07-28 存储装置、包括存储装置的系统以及操作存储装置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160096759A KR102641107B1 (ko) 2016-07-29 2016-07-29 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20180013284A KR20180013284A (ko) 2018-02-07
KR102641107B1 true KR102641107B1 (ko) 2024-02-27

Family

ID=61009988

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160096759A KR102641107B1 (ko) 2016-07-29 2016-07-29 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법

Country Status (3)

Country Link
US (1) US10649692B2 (ko)
KR (1) KR102641107B1 (ko)
CN (1) CN107665722B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180076605A (ko) * 2016-12-28 2018-07-06 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102353363B1 (ko) * 2017-08-14 2022-01-20 에스케이하이닉스 주식회사 메모리 시스템의 동작 방법
KR20190100782A (ko) * 2018-02-21 2019-08-29 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR20200073122A (ko) * 2018-12-13 2020-06-23 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20200076524A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11163474B2 (en) * 2019-02-20 2021-11-02 International Business Machines Corporation Migration of data from a storage controller to cloud storage by using parallel readers for the data
US11157192B2 (en) * 2019-02-20 2021-10-26 International Business Machines Corporation Recall of previously migrated data from a cloud storage to a storage controller by using parallel writers for the data
US11234023B2 (en) * 2019-06-28 2022-01-25 Microsoft Technology Licensing, Llc Features of range asymmetric number system encoding and decoding
US11687363B2 (en) * 2019-07-15 2023-06-27 Micron Technology, Inc. Internal management traffic regulation for memory sub-systems
KR20210071314A (ko) * 2019-12-06 2021-06-16 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130242425A1 (en) * 2012-03-16 2013-09-19 Toshiba America Electronics Components, Inc. Write reordering in a hybrid disk drive

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100876084B1 (ko) 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US7275140B2 (en) 2005-05-12 2007-09-25 Sandisk Il Ltd. Flash memory management method that is resistant to data corruption by power loss
US8019944B1 (en) * 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
KR100845526B1 (ko) * 2006-10-19 2008-07-10 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 프로그램방법
WO2009140112A1 (en) * 2008-05-13 2009-11-19 Rambus Inc. Fractional program commands for memory devices
TWI428918B (zh) * 2009-09-29 2014-03-01 Silicon Motion Inc 記憶裝置以及記憶裝置之資料存取方法
KR101602939B1 (ko) 2009-10-16 2016-03-15 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US8886870B2 (en) 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
US20120221767A1 (en) * 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
US9323667B2 (en) 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
KR101979392B1 (ko) * 2012-05-17 2019-05-16 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR101919903B1 (ko) * 2012-09-14 2018-11-19 삼성전자 주식회사 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
US9754648B2 (en) * 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US20140156718A1 (en) 2012-11-30 2014-06-05 Ligong Chen Definition of Two Self-weights for Continuous Random Variable and Their Applications in Basic Statistics
KR102002826B1 (ko) 2012-12-04 2019-07-23 삼성전자 주식회사 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법
KR20140100330A (ko) 2013-02-06 2014-08-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US9335952B2 (en) * 2013-03-01 2016-05-10 Ocz Storage Solutions, Inc. System and method for polling the status of memory devices
KR102088193B1 (ko) 2013-08-08 2020-03-13 삼성전자주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
KR102190399B1 (ko) 2013-10-11 2020-12-11 삼성전자주식회사 신뢰성을 보장할 수 있는 불휘발성 메모리 장치의 동작 방법 및 상기 방법을 수행하는 메모리 시스템
KR102111741B1 (ko) 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
TWI528379B (zh) 2014-02-05 2016-04-01 廣明光電股份有限公司 固態硬碟的讀取方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130242425A1 (en) * 2012-03-16 2013-09-19 Toshiba America Electronics Components, Inc. Write reordering in a hybrid disk drive

Also Published As

Publication number Publication date
KR20180013284A (ko) 2018-02-07
US20180032283A1 (en) 2018-02-01
US10649692B2 (en) 2020-05-12
CN107665722A (zh) 2018-02-06
CN107665722B (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
KR102641107B1 (ko) 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
US9778878B2 (en) Method and system for limiting write command execution
US20130013853A1 (en) Command executing method, memory controller and memory storage apparatus
KR102468751B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN107797855B (zh) 存储器系统及其操作方法
KR102485812B1 (ko) 메모리 시스템과 메모리 시스템의 동작방법 및 메모리 시스템을 포함하는 데이터 처리 시스템
CN109992202B (zh) 数据存储设备、其操作方法以及包括其的数据处理系统
US20200034081A1 (en) Apparatus and method for processing data in memory system
US11294814B2 (en) Memory system having a memory controller and a memory device having a page buffer
US10296233B2 (en) Method of managing message transmission flow and storage device using the method
CN110910944A (zh) 保持存储器系统中的固件的设备和方法
CN109656749B (zh) 存储器系统及其操作方法
US11675543B2 (en) Apparatus and method for processing data in memory system
US11966603B2 (en) Memory system for updating firmware when SPO occurs and operating method thereof
CN110678852A (zh) 控制对缓冲器的存储器操作的设备和方法
KR102559549B1 (ko) 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치
US20230004320A1 (en) Method of managing debugging log in storage device
US11061614B2 (en) Electronic apparatus having data retention protection and operating method thereof
US11815985B2 (en) Apparatus and method for checking an operation status of a memory device in a memory system
KR20190046169A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
US11500728B2 (en) Storage controller and method of restoring error of the same
US11829228B2 (en) Storage devices of performing metadata management and methods of operating the same
US20240012569A1 (en) Storage controller receiving read data and distribution information, method of operating the same, and method of operating storage device including the same
CN113050884A (zh) 存储设备中调度作业的方法和操作存储系统的方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant