KR102430983B1 - 스토리지 장치 및 그 동작 방법 - Google Patents

스토리지 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR102430983B1
KR102430983B1 KR1020170122664A KR20170122664A KR102430983B1 KR 102430983 B1 KR102430983 B1 KR 102430983B1 KR 1020170122664 A KR1020170122664 A KR 1020170122664A KR 20170122664 A KR20170122664 A KR 20170122664A KR 102430983 B1 KR102430983 B1 KR 102430983B1
Authority
KR
South Korea
Prior art keywords
write
state
storage device
mode
data
Prior art date
Application number
KR1020170122664A
Other languages
English (en)
Other versions
KR20190033920A (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 KR1020170122664A priority Critical patent/KR102430983B1/ko
Priority to CN201811117877.3A priority patent/CN109542337B/zh
Priority to US16/138,089 priority patent/US10795594B2/en
Publication of KR20190033920A publication Critical patent/KR20190033920A/ko
Application granted granted Critical
Publication of KR102430983B1 publication Critical patent/KR102430983B1/ko

Links

Images

Classifications

    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/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]

Abstract

본 개시의 기술적 사상에 따른 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법은, 제1 상태에서 호스트로부터 기입 커맨드를 수신하는 단계, 제2 상태에서, 상기 호스트로부터 기입 데이터를 수신하는 단계 및 설정된 기입 모드에 따라, 동작 상태를 상기 제2 상태에서 상기 제1 상태 및 제3 상태 중 하나로 천이하는 단계를 포함하며, 상기 제1 상태에서 상기 기입 커맨드가 수신될 수 있고, 상기 제3 상태에서 수신된 상기 기입 데이터가 상기 비휘발성 메모리에 프로그램될 수 있다.

Description

스토리지 장치 및 그 동작 방법{Storage device and method of operating the same}
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 기입 신뢰성을 보장하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다. 스토리지 장치의 기입 신뢰성과 기입 성능을 향상시킬 수 있는 방법 및 장치에 대한 요구가 지속적으로 제기되고 있다.
본 개시의 기술적 사상은 기입 신뢰성과 기입 성능이 향상되는 스토리지 장치 및 상기 스토리지 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법은, 제1 상태에서 호스트로부터 기입 커맨드를 수신하는 단계, 제2 상태에서, 상기 호스트로부터 기입 데이터를 수신하는 단계 및 설정된 기입 모드에 따라, 동작 상태를 상기 제2 상태에서 상기 제1 상태 및 제3 상태 중 하나로 천이하는 단계를 포함하며, 상기 제1 상태에서 상기 기입 커맨드가 수신될 수 있고, 상기 제3 상태에서 수신된 상기 기입 데이터가 상기 비휘발성 메모리에 프로그램될 수 있다.
또한, 본 개시의 기술적 사상에 따른 비휘발성 메모리를 포함하는 eMMC 장치의 동작 방법은, 호스트로부터 기입 커맨드를 수신하는 단계, 상기 호스트로부터 기입 데이터를 수신하는 단계, 및 상기 기입 데이터의 수신이 완료된 후 상기 기입 커맨드를 수신할 수 있는 상태를 나타내는 제1 상태 신호를 상기 호스트에 전송하는 단계를 포함할 수 있다.
또한, 본 개시의 기술적 사상에 따른 스토리지 장치는, 비휘발성 메모리 및
설정된 동작 모드 및 기입 커맨드 중 적어도 하나를 기초로 기입 모드를 결정하고, 상기 기입 모드에 따라 상기 데이터를 상기 비휘발성 메모리에 기입하는 프로그래밍 상태로 진입할지 여부를 결정하는 디바이스 컨트롤러를 포함할 수 있다.
본 개시의 기술적 사상에 따르면, 스토리지 장치가 기입 데이터의 무결성(integrity)이 요구되는지에 따라 적응적으로 동작 상태의 변경을 제어함으로써, 기입 신뢰성 및 기입 성능이 향상될 수 있다. 또한, 스토리지 장치가 비동기식(asynchronous) 입출력 처리가 가능하며, 이에 따라, 스토리지 시스템의 데이터 처리 성능이 향상될 수 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 스토리지 장치의 동작 상태들을 나타내는 상태도이다.
도 3a 및 도 3b는 도 1의 스토리지 장치의 타이밍 다이어그램이다.
도 4는 도 1의 스토리지 장치에 포함된 디바이스 컨트롤러를 상세하게 나타내는 블록도이다.
도 5는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 6 은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 7 내지 도 9는 본 개시의 실시예들에 따른 기입 모드 결정 방법을 나타내는 흐름도이다.
도 10은 본 개시의 일 실시예에 따른 스토리지 장치가 수신하는 커맨드의 구성을 나타내는 도면이다.
도 11은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이다.
도 13a및 도 13b는 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 14는 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이다.
도 15a및 도 15b는 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 16은 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이다.
도 17a및 도 17b는 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 18은 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 19는 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(1000)은 스토리지 장치(100) 및 호스트(200)를 포함할 수 있다.
호스트(200)는 CPU(Central Processing Unit), 프로세서, 마이크로프로세서 또는 어플리케이션 프로세서(Application Processor, AP) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치를 의미할 수 있고, 전자 장치에 내장(embedded) 또는 구현될 수 있다. 전자 장치는 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT (Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다. 일 실시예에서, 호스트(200)는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수 있다.
호스트(200)는 다양한 인터페이스를 통하여 스토리지 장치(100)와 통신할 수 있고, 스토리지 장치(100)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다.
커맨드 채널(101)을 통해, 커맨드(CMD)는 호스트(200)로부터 스토리지 장치(100)로 전송되고, 커맨드(CMD)에 대한 응답(RES)은 스토리지 장치(100)로부터 호스트(200)로 전송될 수 있다. 또한, 복수의 데이터 채널들(102)을 통해, 기입(write) 동작을 위한 기입 데이터는 호스트(200)로부터 스토리지 장치(100)에 전송되고, 독출(read) 동작을 위한 독출 데이터는 스토리지 장치(100)로부터 호스트(200)에 전송될 수 있다. 실시예에 있어서, 복수의 데이터 채널들(102) 중 하나의 채널을 통해서 스토리지 장치(100)의 상태를 나타내는 신호, 예컨대 비지 신호가 호스트(200)로 제공될 수 있다.
스토리지 장치(100)는 디바이스 컨트롤러(110) 및 비휘발성 메모리(120)를 포함할 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 내장되는(embedded) 내부(internal) 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 eMMC(embedded Multimedia Card), SSD(Solide state Drive), 임베디드 UFS(Ununival Flash Storage) 메모리 장치일 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 착탈 가능한 외장(external) 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다. 이하, 본 개시에서, 스토리지 장치(100)는 eMMC인 것을 가정하여 설명하기로 한다.
디바이스 컨트롤러(110)는 호스트(200)와 비휘발성 메모리(120) 사이에서 데이터 통신을 제어한다. 디바이스 컨트롤러(110)는 기입 모드 결정부(10) 및 상태 매니저(20)를 포함할 수 있다.
스토리지 장치(100)의 비동기식(asynchronous) 입출력 동작을 위하여 디바이스 컨트롤러(110)는 캐시 기능을 지원할 수 있다. 호스트(200)로부터 제공되는 캐시 온 커맨드를 기초로 캐시 기능이 활성화되는 캐시 온 모드가 설정되고, 캐시 오프 커맨드를 기초로 캐시 기능이 비활성화되는 캐시 오프 모드가 설정될 수 있다. 실시예에 있어서, 캐시 오프 모드가 디폴트로 설정될 수 있다.
기입 모드 결정부(10)는 캐시 기능 활성화 여부(즉, 캐시 온 모드인지 또는 캐시 오프 모드인지) 및 호스트(200)로부터 수신되는 기입 커맨드 중 적어도 하나를 기초로 기입 모드를 결정할 수 있다. 기입 모드는 호스트(200)로부터 수신되는 기입 데이터가 비휘발성 메모리(120)에 저장되는 것이 보장되는 신뢰 모드 및 기입 데이터가 비휘발성 메모리(120)에 저장되는 것이 보장되지 않는 성능 모드를 포함할 수 있다. 기입 모드 결정부(10)는 캐시 기능이 활성화 되었는지 여부, 기입 커맨드가 강제 프로그램을 요청하는지 여부, 기입 커맨드가 비정상적인지 여부 등을 기초로 신뢰 모드 및 성능 모드 중 하나를 기입 모드로서 선택할 수 있다.
예를 들어서, 캐시 기능이 비활성화 되었거나, 기입 커맨드가 강제 프로그램을 요청하는 경우, 또는 기입 커맨드에 결함이 있는 경우, 기입 모드 결정부(1110)는 신뢰 모드를 선택할 수 있다. 캐시 기능이 활성화된 경우, 강제 프로그램이 요청된다거나 또는 기입 데이터를 처리하고 처리 결과를 호스트(200)에 제공해야하는 예외적인 케이스가 발생하지 않으면, 기입 모드 결정부(10)는 성능 모드를 선택할 수 있다. 이에 대해서는 도 7 내지 도 9를 참조로 상세하게 후술하기로 한다.
상태 매니저(20)는 스토리지 장치(100)의 동작 상태를 결정할 수 있으며, 특정 동작 상태에서, 동작 상태에 대응하는 동작의 수행이 완료되거나 또는 다른 처리 동작이 필요한 경우, 다른 상태로 동작 상태를 변경할 수 있다. 상태 매니저(20)는 유한 상태 머신(finite state machine)으로 구현될 수 있으며, 스토리지 장치(100)가 기입 동작 수행 시, 세 가지 상태 중 하나의 상태를 스토리지 장치(100)의 동작 상태로 결정할 수 있다. 상태 매니저(20)는 기입 모드 결정부(10)에서 결정된 기입 모드를 기초로 스토리지 장치(100)의 동작 상태를 결정할 수 있다.
도 2는 스토리지 장치의 동작 상태들을 나타내는 상태도(state diagram)이다.
도 2를 참조하면, 스토리지 장치(100)는 세 가지 상태, 예컨대 트랜스퍼 상태(TFS), 수신-데이터 상태(RDS) 및 프로그래밍 상태(PGMS)를 통해 기입 커맨드를 처리할 수 있다. 트랜스퍼 상태(TFS), 수신-데이터 상태(RDS) 및 프로그래밍 상태(PGMS)는 상태 매니저(20)에 의하여 결정된다. 트랜스퍼 상태(TFS), 수신-데이터 상태(RDS) 및 프로그래밍 상태(PGMS)는 각각 제1 상태, 제2 상태 및 제3 상태로 간략하게 지칭되며, 서로 구분될 수 있다.
스토리지 장치(100)는 트랜스퍼 상태(TFS)에서 커맨드, 즉 기입 커맨드를 기다리고, 호스트(200)로부터 커맨드가 제공되면, 커맨드를 수신할 수 있다. 스토리지 장치(100)는 수신-데이터 상태(RDS)에서 호스트(200)로부터 제공되는 기입 데이터를 수신할 수 있으며, 프로그래밍 상태(PGMS)에서 수신한 기입 데이터를 비휘발성 메모리(120)에 프로그램할 수 있다.
계속하여 도 1 및 도 2를 참조하면, 트랜스퍼 상태(TFS)에서 기입 커맨드가 수신되고, 기입 커맨드의 수신이 완료되면, 상태 매니저(20)는 수신-데이터 상태(RDS)로 동작 상태를 변경할 수 있다. 수신-데이터 상태(RDS)에서, 기입 데이터의 수신이 완료되면, 상태 매니저(20)는 기입 모드 결정부(10)에서 결정된 기입 모드에 따라 다음 동작 상태를 결정할 수 있다. 신뢰 모드일 때, 기입 데이터가 비휘발성 메모리(120)에 프로그램 되거나, 기입 데이터의 처리 동작이 요구되므로, 상태 매니저(20)는 동작 상태를 수신-데이터 상태(RDS)에서 프로그래밍 상태(PGMS)로 변경할 수 있다. 상태 매니저(20)는 프로그래밍이 완료되면 동작 상태를 프로그래밍 상태(PGMS)에서 트랜스퍼 상태(TFS)로 변경할 수 있다.
성능 모드일 때, 기입 데이터가 비휘발성 메모리(120)에 프로그램되는 것이 보장되지 않아도 무방하므로, 다음 커맨드를 수신하기 위하여 상태 매니저(20)는 동작 상태를 수신-데이터 상태(RDS)에서 트랜스퍼 상태(TFS)로 변경할 수 있다.
한편, 커맨드의 처리 완료는 상태 신호, 예컨대 비지 신호에 의해 보호될 수 있다. 예를 들어서, 기입 데이터 수신이 완료되면 디바이스 컨트롤러(110)는 비지 신호를 해제함으로써, 스토리지 장치(100)가 커맨드 처리가 완료되고 다른 커맨드를 수신할 수 있는 트랜스퍼 상태(TFS)임을 나타내고, 비지 신호를 설정함으로써, 스토리지 장치(100)가 커맨드를 처리(또는 실행)하는 프로그래밍 상태(PGMS)임을 나타낼 수 있다. 스토리지 장치(100)는 제1 상태 신호를 호스트(200)에 전송함으로써, 비지 신호가 해제되었음을 호스트(200)에 알리고, 제2 상태 신호를 호스트(200)에 전송함으로써, 비지 신호가 설정되었음을 호스트(200)에 알릴 수 있다. 비지 신호가 설정되는 것은 '비지 설정(busy set)'으로 비지 신호가 해제되는 것은 '비지 해제(busy clear)'로 지칭될 수 있다
스토리지 장치(100)의 동작 상태가 수신-데이터 상태(RDS)에서 프로그래밍 상태로(PGMS)로 천이될 때, 비지 신호가 설정되고, 이후 프로그래밍 상태(PGMS)에서 트랜스퍼 상태(TFS)로 천이될 때, 비지 신호가 해제될 수 있다. 스토리지 장치(100)의 동작 상태가 수신-데이터 상태(RDS)에서 트랜스퍼 상태(TFS)로 천이될 경우, 기입 데이터의 수신이 완료된 후, 바로 비지 신호가 해제될 수 있다.
비지 신호가 해제되지 않았다면 스토리지 장치(100)는 트랜스퍼 상태(TRS)로 천이되지 않은 상태이며, 이 상태에서, 호스트(200)가 입출력과 관련한 커맨드를 발생(issue)하면, 스토리지 장치(100)는 상기 커맨드를 부당(illegal) 커맨드로 판정하고, 에러 처리할 수 있다.
비휘발성 메모리(120)는 메모리 셀 어레이(MCA)를 포함할 수 있다. 일 실시예에서, 메모리 셀 어레이(MCA)는 복수의 플래쉬 메모리 셀들을 포함할 수 있고, 예를 들어, 복수의 플래쉬 메모리 셀들은 낸드(NAND) 플래쉬 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 메모리 셀들은 ReRAM(1istive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
일 실시예에서, 메모리 셀 어레이(MCA)는 3 차원(3D) 메모리 어레이일 수 있다. 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역과, 메모리 셀들의 동작과 관련된 회로로서 상기 기판 상에 또는 상기 기판 내에 형성된 회로를 가지는 메모리 셀 어레이들의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식"은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. 본 개시의 기술적 사상에 의한 일 실시예에서, 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 버티칼 NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다.
미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
도 3a 및 도 3b는 도 1의 스토리지 장치의 타이밍 다이어그램이다. 도 3a는신뢰 모드에서의 타이밍 다이어그램이고, 도 3b는 성능 모드에서의 타이밍 다이어그램이다.
도 3a를 참조하면, 스토리지 장치(100)는 신뢰 모드에서, 데이터의 프로그램을 보장하는 동기식(synchronous) 입출력 처리를 수행할 수 있다. 스토리지 장치(100)는 호스트(200)로부터 기입 커맨드(CMD_W)가 수신되면, 스토리지 장치(100)는 데이터 수신을 위한 준비를 할 수 있다. 예컨대 스토리지 장치(100)는 내부에 구비되는 데이터 버퍼의 영역들 중 수신되는 데이터가 저장될 영역을 할당할 수 있다. 이후 기입 데이터가 수신되고, 기입 데이터의 수신이 완료되면, 스토리지 장치(100)는 프로그래밍 상태(도 2의 PGMS)에 진입할 수 있다. 수신된 기입 데이터가 비휘발성 메모리(도 1의 120)에 프로그램될 수 있으며, 스토리지 장치(100)는 프로그램 완료 후 비지 신호를 해제하고, 트랜스퍼 상태(도 2의 TFS)로 진입할 수 있다.
스토리지 장치(100)는 비지 신호를 호스트(도 1의 200)에 제공할 수 있다. 호스트(200)는 비지 신호가 해제되었음을 확인하고, 다음 입출력 처리를 준비할 수 있다. 스토리지 장치(100)는 비지 신호가 해제 된 후, 소정의 시간 이후에 호스트(200)로부터 다음 커맨드, 예컨대 기입 커맨드(CMD_W)를 수신할 수 있다.
도 3b를 참조하면, 스토리지 장치(100)는 성능기입 모드에서, 비동기식(asynchronous) 입출력 처리를 수행할 수 있다. 성능 모드에서는, 기입 데이터의 수신이 완료되면, 스토리지 장치(100)는 즉시 비지 신호를 해제하고, 트랜스퍼 상태(TFS)로 진입할 수 있다. 호스트(200)는 비지 신호가 해제되었음을 확인하고, 다음 입출력 처리를 준비할 수 있다.
스토리지 장치(100)는 다음 커맨드, 예컨대 기입 커맨드(CMD_W)가 호스트(200)로부터 수신될 때까지 백그라운드 동작을 수행하거나, 호스트(200)로부터 다음 커맨드가 수신되기를 기다릴 수 있다. 백그라운드 동작은 호스트(200)로부터 수신된 기입 커맨드(CMD_W)와 무관하게 수행될 수 있는 동작이며, 예를 들어, 백그라운드 동작은 캐시로서 동작하는 데이터 버퍼에 기입 단위에 대응하는 용량의 데이터가 저장된 경우, 상기 데이터를 비휘발성 메모리(120)에 프로그램하는 동작을 포함할 수 있다.
전술한 바와 같이, 본 개시의 실시예에 따른 스토리지 장치(100)는 캐시 기능 활성화 여부 및 기입 커맨드 중 적어도 하나를 기초로, 기입 데이터가 비휘발성 메모리(120)에 저장되는 것이 보장되어야 하는지 여부, 즉 데이터 무결성에 따라 기입 모드를 결정하고, 기입 데이터 수신이 완료되면, 결정된 기입 모드를 기초로 프로그래밍 상태(PGMS) 또는 트랜스퍼 상태(TFS) 중 하나로 동작 상태를 변경할 수 있다. 이와 같이, 스토리지 장치(100)가 기입 데이터의 무결성(integrity)이 요구되는지에 따라 적응적으로 동작 상태의 변경을 제어함으로써, 기입 신뢰성 및 기입 성능이 향상될 수 있다. 또한, 스토리지 장치(100)가 비동기식(asynchronous) 입출력 처리가 가능하므로, 스토리지 시스템(1000)의 데이터 처리 성능이 향상될 수 있다.
도 4는 도 1의 스토리지 장치에 포함된 디바이스 컨트롤러를 상세하게 나타내는 블록도이다.
도 4를 참조하면, 디바이스 컨트롤러(110)는 프로세서(30), 기입 모드 결정부(10), 상태 매니저(20), 호스트 인터페이스(40), 메모리(50) 및 비휘발성 메모리 인터페이스(60)를 포함할 수 있다. 실시예에 있어서, 디바이스 컨트롤러(110)는 프로세서(30), 기입 모드 결정부(10), 상태 매니저(20), 호스트 인터페이스(40), 메모리(50) 및 비휘발성 메모리 인터페이스(60)는 버스(BUS)를 통해 서로 통신할 수 있다.
프로세서(30)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 디바이스 컨트롤러(110)의 전반적인 동작을 제어할 수 있다.
기입 모드 결정부(10)는 캐시 기능 활성화 여부 및 기입 커맨드 중 적어도 하나를 기초로 기입 모드를 결정할 수 있으며, 하드웨어, 소프트웨어(또는 펌웨어)또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 기입 모드 결정부(10)가 소프트웨어 또는 펌웨어로 구현되는 경우, 기입 모드 결정부(10)는 메모리(50)에 로딩될 수 있고, 프로세서(30)의 제어에 따라 동작할 수 있다.
상태 매니저(20)는 동작 상태를 결정할 수 있으며, 기입 동작 수행 시에, 설정된 기입 모드를 기초로, 프로그램 상태 진입 여부를 결정할 수 있다. 상태 매니저(20)는 수신-데이터 상태에서 기입 데이터 수신이 완료된 후, 기입 모드를 기초로 프로그램 상태로 동작 상태를 변경할 지 또는 트랜스퍼 상태로 동작 상태를 변경할지 결정할 수 있다. 상태 매니저(20)는 하드웨어, 소프트웨어(또는 펌웨어)또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 상태 매니저(20)가 소프트웨어 또는 펌웨어로 구현되는 경우, 상태 매니저(20)는 메모리(50)에 로딩될 수 있고, 프로세서(30)의 제어에 따라 동작할 수 있다.
메모리(50)는 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있고, 예를 들어, 메모리(50)는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리 또는 PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM), 플래시 메모리 등과 같은 비휘발성 메모리로 구현될 수 있다. 메모리(50)에는 펌웨어가 로딩될 수 있다.
호스트 인터페이스(40)는 호스트(200)와 디바이스 컨트롤러(110) 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC, PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등에 따른 인터페이스를 제공할 수 있다.
비휘발성 메모리 인터페이스(60)는 디바이스 컨트롤러(110)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있다. 기입 수행 시, 비휘발성 메모리 인터페이스(60)는 프로세서(30)의 제어 하에 메모리(50)에 저장된 데이터를 독출하고 독출된 데이터를 비휘발성 메모리(120)에 저장할 수 있다. 독출 수행 시, 비휘발성 메모리 인터페이스(60)는 프로세서(30)의 제어 하에 비휘발성 메모리(120)로부터 데이터를 독출하고, 독출된 데이터를 메모리(50)에 임시로 저장할 수 있다.
도 5는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 본 실시예에 따른 동작 방법은 스토리지 장치에서 기입 동작을 수행 시 스토리지 장치의 동작 상태 천이 순서를 결정하는 방법으로서, 예를 들어, 도 1의 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 1 및 도 4를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있으며, 중복된 설명은 생략하기로 한다. 이하에서는, 도 1 및 도 5를 함께 참조하여 스토리지 장치의 동작 방법을 설명하기로 한다.
도 5를 참조하면, 스토리지 장치(100)는 제1 상태에서, 기입 커맨드를 수신할 수 있다(S110). 예를 들어, 상태 매니저(20)가 동작 상태를 트랜스퍼 상태(도 2의 TFS)로 설정하면, 스토리지 장치(100)는 호스트(200)로부터 전송되는 기입 커맨드를 수신할 수 있다. 스토리지 장치(100)는 트랜스퍼 상태에서 호스트(200)로부터 전송되는 기입 커맨드를 수신하고, 이를 처리할 수 있으며, 스토리지 장치(100)가 트랜스퍼 상태가 아닌 경우, 호스트(200)로부터 기입 커맨드가 수신되면, 이를 부당(illegal) 커맨드로 판정하고, 에러 처리할 수 있다.
제2 상태에서, 스토리지 장치(100)는 기입 데이터를 수신할 수 있다(S120). 기입 커맨드의 수신이 완료되면, 상태 매니저(20)는 동작 상태를 제2 상태, 예컨대 수신-데이터 상태(도 2의 RDS)로 천이시킬 수 있으며, 스토리지 장치(100)는 호스트(200)로부터 전송되는 기입 데이터를 수신할 수 있다. 기입 데이터는 스토리지 장치(100) 내부에 구비되는 데이터 버퍼에 저장될 수 있다.
스토리지 장치(100)는 설정된 기입 모드에 따라 제1 상태 및 제3 상태 중 하나의 상태를 선택할 수 있다(S130). 예컨대, 기입 데이터의 수신이 완료되면, 상태 매니저(20)는 설정된 기입 모드에 따라 트랜스퍼 상태(TFS) 및 프로그래밍 상태(PGMS) 중 하나의 상태를 다음 동작 상태로 결정할 수 있다. 도 1을 참조하여 설명한 바와 같이, 상태 매니저(20)는 기입 모드가, 신뢰 모드로 설정되었으면, 프로그래밍 상태(PGMS)를 다음 동작 상태로 결정하고, 기입 모드가 성능 모드로 설정되었으면, 트랜스퍼 상태(TFS)를 다음 동작 상태로 결정할 수 있다.
스토리지 장치(100)는 제2 상태에서 선택된 상태, 즉 제1 상태 및 제3 상태 중 하나로 천이될 수 있다(S140). 다시 말해서, 상태 매니저(20)는 동작 상태를 기입 데이터를 수신할 수 있는 수신-데이터 상태(RDS)에서, 트랜스퍼 상태(TFS) 및 프로그래밍 상태(PGMS) 중 하나로 변경할 수 있다.
기입 모드가 성능 모드로 설정된 경우, 동작 상태는 트랜스퍼 상태(TFS)로 천이되고, 스토리지 장치(100)는 호스트(200)로부터 기입 커맨드가 수신되기를 기다릴 수 있다. 동작 상태가 트랜스퍼 상태(TFS)로 천이될 때, 스토리지 장치(100)는 커맨드가 처리중임을 나타내는 비지 신호를 해제하고, 호스트(200)에 비지 신호가 해제되었음, 다시 말해서 기입 커맨드를 수신할 수 있는 상태임을 알릴 수 있다.
기입 모드가 신뢰 모드로 설정된 경우, 동작 상태는 프로그래밍 상태(PGMS)로 천이되고, 스토리지 장치(100)는 데이터 버퍼에 저장된 기입 데이터를 비휘발성 메모리(도 1의 120)에 프로그램할 수 있다. 이후, 프로그램이 완료되면, 동작 상태는 트랜스퍼 상태(TFS)로 천이되고, 비지 신호를 해제할 수 있다.
도 6 은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 본 실시예에 따른 동작 방법은 스토리지 장치에서 기입 동작을 수행 단계를 나타내는 방법으로서, 예를 들어, 도 1의 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 1, 도 4 및 도 5를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있으며, 중복된 설명은 생략하기로 한다. 이하에서는, 도 1 및 도 6을 함께 참조하여 스토리지 장치의 동작 방법을 설명하기로 한다.
도 6을 참조하면, 스토리지 장치(100)는 기입 커맨드를 수신할 수 있다(S210). 스토리지 장치(100)는 트랜스퍼 상태(도 2의 TFS)에서 호스트(200)로부터 전송되는 기입 커맨드를 수신할 수 있다.
스토리지 장치(100)는 기입 모드를 결정할 수 있다(S220). 스토리지 장치(100)는 캐시 기능 활성화 여부 및 기입 커맨드 중 적어도 하나를 기초로 기입 모드를 결정할 수 있다. 기입 모드는, 기입 데이터가 비휘발성 메모리(120)에 저장되는 것이 보장되는 신뢰 모드 및 기입 데이터가 비휘발성 메모리(120)에 저장되는 것이 보장되지 않는 성능 모드 중 하나로 결정될 수 있다. 기입 모드 결정 방법은 도 7 내지 도 9를 참조하여 상세하게 후술하기로 한다.
스토리지 장치(100)는 기입 데이터를 수신할 수 있다(S230). 기입 커맨드의 수신이 완료된 후, 스토리지 장치(100)는 트랜스퍼 상태(TFS)에서 제2 상태에서 수신-데이터 상태(RDS)로 트랜지션될 수 있으며, 수신-데이터 상태(RDS)에서, 스토리지 장치(100)는 기입 데이터를 수신할 수 있다.
스토리지 장치(100)는 기입 모드가 신뢰 모드인지 판단할 수 있다(S240). 스토리지 장치(100)는 판단 결과에 따라 이후 상이한 동작을 수행할 수 있다.
스토리지 장치(100)는 S220 단계에서 결정된 기입 모드가 신뢰 모드가 아니면, 다시 말해서, 기입 모드가 성능 모드이면, 비지 신호를 해제할 수 있다(S260). 스토리지 장치(100)는 수신-데이터 상태(RDS)에서 트랜스퍼 상태(TFS)로 천이될 수 있으며, 호스트(200)에 입출력 커맨드를 수신할 수 있는 상태임을 알리기 위하여, 비지 신호를 해제할 수 있다.
스토리지 장치(100)는 S220 단계에서 결정된 기입 모드가 신뢰 모드이면, 프로그램을 수행하거나 또는 기입 후처리를 수행할 수 있다(S250). 스토리지 장치(100)는 수신-데이터 상태(RDS)에서 프로그래밍 상태(PGMS)로 천이될 수 있다. 스토리지 장치(100)는 수신되어 데이터 버퍼에 저장된 기입 데이터를 비휘발성 메모리(120)에 프로그램할 수 있다. 스토리지 장치(100)는 또한 기입 후처리를 수행할 수 있다. 예를 들어, 기입 커맨드에 에러가 발생하였거나, 기입 데이터를 비휘발성 메모리(120)에 프로그램하는 중 에러가 발생하는 경우, 스토리지 장치(100)는 기입 데이터를 처리하거나, 에러 발생을 추후 호스트(200)에 알리기 위한 기입 후처리를 수행할 수 있다.
이후, 스토리지 장치(100)는 프로그램이 완료되거나 기입 후처리가 완료되면, 수신-데이터 상태(RDS)에서 트랜스퍼 상태(TFS)로 천이될 수 있으며, 호스트(200)에 입출력 커맨드를 수신할 수 있는 상태임을 알리기 위하여, 비지 신호를 해제할 수 있다(S260).
도 6에서, 기입 모드 결정(S220)은, 기입 커맨드 수신(S210) 이후에 수행되는 것으로 도시었으나, 이에 제한되는 것은 아니며, 실시예에 있어서, 기입 모드 결정(S220)은 기입 커맨드 수신(S210) 이전 또는 기입 데이터 수신(S230)에 수행될 수도 있다.
도 7 내지 도 9는 본 개시의 실시예들에 따른 기입 모드 결정 방법을 나타내는 흐름도이다. 도 7 내지 도 9의 기입 모드 결정 방법은 도 6의 S220 단계에서 수행될 수 있다. 이하에서, 도 1을 도 7 내지 도 9과 함께 참조하여 설명하기로 하며, 중복되는 설명은 생략하기로 한다.
도 7을 참조하면, 스토리지 장치(100)의 기입 모드 결정부(10)는 스토리지 장치(100)가 캐시 온 모드인지 판단할 수 있다(S11). 도 1을 참조하여 전술한 바와 같이, 호스트(200)로부터 제공되는 캐시 온 커맨드를 기초로 캐시 기능이 활성화되는 캐시 온 모드가 설정될 수 있다. 예를 들어, 스토리지 장치(100)는 캐시 온 모드를 나타내는 데이터 값을 내부 레지스터 또는 메모리(도 2의 50)에 저장하고, 기입 모드 결정부(10)는 상기 데이터 값을 확인하여, 스토리지 장치(100)가 캐시 온 모드인지 확인할 수 있다.
기입 모드 결정부(10)는 스토리지 장치(100)가 캐시 온 모드이면, 기입 데이터의 무결성이 요구되지 않으므로, 성능 모드를 스토리지 장치(100)의 기입 모드로 결정하고(S12), 스토리지 장치(100)가 캐시 온 모드가 아니면, 즉 캐시 오프 모드이면, 기입 데이터의 무결성이 요구되므로, 신뢰 모드를 스토리지 장치(100)의 기입 모드로 결정할 수 있다(S13)
도 8을 참조하면, 스토리지 장치(100)의 기입 모드 결정부(10)는 스토리지 장치(100)가 캐시 온 모드인지 판단하고(S21), 스토리지 장치(100)가 캐시 온 모드가 아니면, 즉 캐시 오프 모드이면, 신뢰 모드를 스토리지 장치(100)의 기입 모드로 결정할 수 있다(S24).
기입 모드 결정부(10)는 스토리지 장치(100)가 캐시 온 모드이면, 비휘발성 메모리에 대한 프로그램이 필요한지 여부를 판단할 수 있다(S22). 기입 모드 결정부(10)는 기입 커맨드를 기초로 프로그램 필요 여부를 판단할 수 있다. 예컨대, 기입 커맨드가 신뢰 기입(Reliable Write) 또는 강제 기입(Forced Write)과 같이 강제 프로그램을 요청하는 커맨드일 경우, 기입 모드 결정부(10)는 비휘발성 메모리에 대한 프로그램이 필요하다고 판단할 수 있다.
기입 모드 결정부(10)는 프로그램이 필요하다고 판단되면, 신뢰 모드를 스토리지 장치(100)의 기입 모드로 결정할 수 있고(S24), 프로그램이 필요하지 않다고 판단되면, 성능 모드를 스토리지 장치(100)의 기입 모드로 결정할 수 있다(S23).
도 9를 참조하면, 기입 모드 결정부(10)는 기입 커맨드의 결함 여부를 기초로 기입 모드를 결정할 수 있다.
기입 모드 결정부(10)는 수신된 기입 커맨드에 결함이 있는지를 판단할 수 있다(S31). 예를 들어, 기입 커맨드가 디코딩할 수 없는 커맨드 변수(argument)를 포함한다거나 또는 기입 커맨드에 포함된 어드레스가 비휘발성 메모리(120)의 저장 영역에 대응하지 않을 경우 등과 같이 정상적으로 처리될 수 없는 기입 커맨드가 수신되는 경우, 기입 모드 결정부(10)는 기입 커맨드에 결함이 있다고 판단할 수 있다.
기입 모드 결정부(10)는 기입 커맨드에 결함이 있다고 판단되면, 신뢰 모드를 스토리지 장치(100)의 기입 모드로 결정할 수 있다(S35). 기입 모드 결정부(10)는 기입 커맨드에 결함이 없다고 판단되면, 이후, 스토리지 장치(100)가 캐시 온 모드인지 여부 판단(S32), 및 비휘발성 메모리에 대한 프로그램이 필요한지 여부 판단(S33)을 기초로 기입 모드를 결정할 수 있다. S32 단계 및 S33 단계는 도 8의 S21 단계 및 S22 단계와 동일한 바, 중복되는 설명은 생략하기로 한다.
기입 모드 결정부(10)는 기입 커맨드에 결함이 없고, 스토리지 장치(100)가 캐시 온 모드이며, 비휘발성 메모리에 대한 프로그램이 필요없다고 판단되면, 성능 모드를 스토리지 장치(100)의 기입 모드로 결정할 수 있다(S35).
이상에서, 도 7 내지 도 9를 참조하여, 기입 모드 결정 방법에 대하여 설명하였다. 그러나, 이는 예시적인 실시예들일 뿐이며, 도 7 내지 도 9의 기입 모드 결정 방법들의 다양한 변형이 가능할 것이다.
도 10은 본 개시의 일 실시예에 따른 스토리지 장치가 수신하는 커맨드의 구성을 나타내는 도면이다.
도 10을 참조하면, 커맨드(CMD)는 복수의 비트들을 포함할 수 있으며, 시작 비트(start bit), 전송 비트(transmission bit), 커맨드 인덱스(command index), 명령 인자(argument), CRC(Cyclical Redundancy Check), 종료 비트(end bit)등을 포함할 수 있다.
시작 비트는 커맨드(CMD)의 시작을 알리는 비트로서 예컨대, 0으로 고정될 수 있다. 전송 비트는 커맨드(CMD)를 생성한 주체를 나타내는 비트로서 예컨대, 1일 경우 호스트(200)에 의해 생성된 커맨드임을 나타낼 수 있다. 커맨드 인덱스는 커맨드의 종류를 나타내는 복수의 비트들로서 스토리지 장치(100)가 수행할 수 있는 복수의 커맨드들 중 특정 커맨드임을 나타낼 수 있다. 예컨대, 커맨드 인덱스가 CMD 1일 경우 커맨드(CMD)가 기입 커맨드임을, 커맨드 인덱스가 CMD 2일 경우 커맨드(CMD)가 독출 커맨드임을 각각 나타낼 수 있다. 따라서, 스토리지 장치(100)는 커맨드 인덱스에 따라 어떠한 커맨드가 입력되는지 인식할 수 있고 해당 커맨드 인덱스에 따른 동작을 수행할수 있다.
커맨드 변수는 커맨드(CMD)에 따른 동작을 수행함에 있어 필요한 정보들을 포함할 수 있다. 예컨대, 커맨드(CMD)가 독출 커맨드 또는 기입 커맨드일 경우 커맨드 변수는 독출 또는 기입할 비휘발성 메모리(도 1의 120)의 메모리 셀 어레이의 시작 주소 정보와 독출 데이터 또는 기입 데이터의 데이터 사이즈 정보를 포함할 수 있다. 또한, 커맨드(CMD)가 기입 커맨드일 경우, 커맨드 변수는 신뢰 기입(Reliable Write) 또는 강제 기입(Forced Write) 등에 대한 정보를 포함할 수 있다.
CRC는 커맨드(CMD)의 전송 시에 발생할 수 있는 에러를 검출하기 위한 것으로 예컨대, 7 비트로 구현될 수 있다. 종료 비트는 커맨드(CMD)의 종료를 알리는 비트로서 예컨대, 1로 고정될 수 있다.
예를 들어, 커맨드(CMD)가 커맨드 채널(101)을 통해 수신될 때, 전송 오류가 발생할 수 있으며, 이로 인하여 커맨드(CMD)의 복수의 비트들, 예컨대 커맨드 변수 또는 CRC 등의 비트가 변경될 수 있다. CRC에 의하여 에러를 검출할 수 없는 경우, 스토리지 장치(100)는 기입 커맨드를 정상적으로 처리할 수 없을 수 있다. 또는 호스트(200)가 잘못된 커맨드 변수를 설정하였거나, 또는 어드레스가 잘못 설정된 경우, 스토리지 장치(100)는 기입 커맨드를 정상적으로 처리할 수 없을 수 있다.
도 11은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 본 실시예에 따른 동작 방법은 스토리지 장치에서 기입 동작을 수행 단계를 나타내는 방법으로서, 예를 들어, 도 1의 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 본 실시예에 따른 스토리지 장치의 동작 방법은 도 6을 참조하여 설명한 스토리지 장치의 동작 방법과 유사하다. 따라서, 이하, 도 1 및 도 11을 함께 참조하여, 도 6의 동작 방법과의 차이점을 중심으로 설명하기로 한다.
도 7을 참조하면, 스토리지 장치(100)는 트랜스퍼 상태(도 2의 TFS)에서 기입 커맨드를 수신할 수 있고(S310). 기입 모드를 결정할 수 있다(S320). 기입 커맨드의 수신이 완료된 후, 스토리지 장치(100)는 트랜스퍼 상태(TFS)에서 수신-데이터 상태(RDS)로 트랜지션될 수 있으며, 수신-데이터 상태(RDS)에서, 스토리지 장치(100)는 기입 데이터를 수신할 수 있다(S330).
이후, 스토리지 장치(100)는 수신된 기입 데이터에 데이터 에러가 발생하였는지를 판단할 수 있다(S340). 예컨대, 스토리지 장치(100)는 기입 데이터에 포함된 CRC를 기초로 에러를 검출 및 정정할 수 있으며, 기입 데이터에 정정될 수 없는 에러가 발생하였는지를 판단할 수 있다.
스토리지 장치(100)는 기입 데이터에 에러가 발생하였다고 판단되면, 프로그램을 수행하거나 또는 데이터 후처리를 수행할 수 있다(S360). 스토리지 장치(100)는 수신-데이터 상태(RDS)에서 프로그래밍 상태(PGMS)로 천이될 수 있다. 실시예에 있어서, 스토리지 장치(100)는 기입 데이터에 에러가 발생하였다고 판단되면, 기입 모드를 신뢰 모드로 변경할 수 있다.
스토리지 장치(100)는 기입 데이터에 에러가 발생하지 않았다고 판단되면, 기입 모드가 신뢰 모드인지 판단할 수 있다(S350). 또는 스토리지 장치(100)는 기입 데이터에 에러가 발생하여 기입 모드가 변경된 후, 기입 모드가 신뢰 모드인지 판단할 수 있다.
스토리지 장치(100)는 기입 모드가 신뢰 모드이면, 프로그램을 수행하거나 또는 데이터 후처리를 수행할 수 있으며(S360), 기입 모드가 신뢰 모드이면, 다시 말해서 기입 모드가 성능 기입모드이면, 비지 신호를 해제할 수 있다(S370). 스토리지 장치(100)는 수신-데이터 상태(RDS)에서 트랜스퍼 상태(TFS)로 천이될 수 있다.
이와 같이, 스토리지 장치(100)는 기입 데이터 수신이 완료된 후, 설정된 기입 모드 및 데이터 무결성에 따른 판단에 따라 트랜스퍼 상태(TFS)로 진입하거나 프로그래밍 상태(PGMS)로 진입할 수 있다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이다.
도 12를 참조하면, 스토리지 장치(100a)는 디바이스 컨트롤러(110a) 및 비휘발성 메모리(120)를 포함할 수 있고, 디바이스 컨트롤러(110a)는 플래시 변환 계층(Flash Translation Layer, 이하 'FTL'로 지칭)(70a), 메모리(50), 호스트 인터페이스(40a) 및 비휘발성 메모리 인터페이스(60)를 포함할 수 있다. 스토리지 장치(100a)는 도 1의 스토리지 장치(100)의 일 구현예에 대응하며, 디바이스 컨트롤러(110a)는 도 4의 디바이스 컨트롤러(110)의 일 구현예에 대응할 수 있다. 따라서, 도 1 및 도 4를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 본 실시예에서, 스토리지 장치(100a)는 eMMC 장치일 수 있다. 그러나, 본 개시의 기술적 사상은 이에 한정되지 않는다.
호스트 인터페이스(40a)는 커맨드 디코더(111) 및 호스트 매니저(112)를 포함할 수 있다. 커맨드 디코더(111)는 호스트(200)로부터 수신한 커맨드(CMD)를 디코딩하고, 디코딩된 커맨드를 FTL(70a)에 전달할 수 있다.
호스트 매니저(112)는 호스트(200)와의 데이터 송수신 및 호스트(200)로의 비지 신호 전송을 관리할 수 있다. 실시예에 있어서, 데이터(DATA)가 전송되는 복수의 데이터 채널들 중 하나의 채널을 통해서 비지 신호가 호스트(200)로 전송될 수 있다. 예를 들어, 도시된 바와 같이, 제1 내지 제8 데이터 채널들(DAT[7:0])을 통해 데이터가 송수신되는 경우, 호스트 매니저(112)는 제1 내지 제8 데이터 채널들(DAT[7:0]) 중 하나의 데이터 채널, 예컨대 제1 데이터 채널(DAT[0])을 통해 풀링-다운 방식으로 '0'신호(예컨대 로우 레벨)를 구동함으로써, 비지 신호가 설정되었음을 호스트(200)에 알리고, 제1 데이터 채널(DAT[0])을 통해 '1'신호(예컨대 하이 레벨)를 구동함으로써, 비지 신호가 해제 되었음을 호스트(200)에 알릴 수 있다. 그러나, 이에 제한되는 것은 아니며, 호스트 매니저(112)는 데이터 채널들과 구별되는 별도의 채널을 통해 비지 신호를 호스트(200)로 전송할 수도 있다.
메모리(50)는 데이터 버퍼(52)를 포함할 수 있으며, 메모리(50)에는 맵핑 테이블(51)이 로딩될 수 있다. 예컨대, 메모리(50)의 일 영역(또는 메모리 칩)은 데이터 버퍼(52)로서 동작할 수 있고, 다른 영역(또는 다른 메모리 칩)에는 맵핑 테이블(51)이 로딩될 수 있다. 맵핑 테이블(51)은 수신된 데이터(DATA)(기입 데이터 또는 독출 데이터)의 논리 어드레스와 물리 어드레스 간의 맵핑 정보를 포함할 수 있다. 데이터 버퍼(52)는 수신된 데이터(DATA)(기입 데이터 또는 독출 데이터)를 임시로 저장할 수 있으며, 호스트 매니저(112)의 제어 하에 호스트(200)로부터 기입 데이터를 수신하거나 또는 호스트(200)로 독출 데이터를 전송할 수 있다.
FTL(70a)은, 펌웨어가 프로세서(도 4의 30)에 의하여 실행됨에 따라 소프트웨어적으로 구현될 수 있다. 일 실시예에서, FTL(70a)은 메모리(50)에 로딩되어 프로세서(30)에 의하여 실행될 수 있다. 일 실시예에서, FTL(70a)은 제1 메모리 칩에 로딩될 수 있고, 메모리(50)는 제2 메모리 칩일 수 있다.
FTL(70a)은 커맨드 파서(71), 맵핑 매니저(72) 및 입출력 매니저(73)를 포함할 수 있으며, FTL(70a)은 기입 모드 결정부(10a) 및 상태 매니저(20a)를 더 포함할 수 있다. 본 실시예에서, FTL(70a), 예컨대 펌웨어가 기입 모드를 결정할 수 있으며, 또한 펌웨어가 동작 상태를 결정하고, 호스트 매니저(112)에 비지 신호 해제를 요청할 수 있다.
커맨드 파서(71)는 호스트 인터페이스(40a)로부터 수신된 커맨드 및 커맨드 변수를 처리하여 커맨드의 무결성을 확인을 수행할 수 있다. 맵핑 매니저(72)는 데이터(기입 데이터 또는 독출 데이터)의 논리 어드레스와 물리 어드레스 간의 맵핑을 관리할 수 있다. 입출력 매니저(73)는 맵핑 매니저(72)를 통해서 비휘발성 메모리(120) 상의 물리 어드레스를 할당받고, 비휘발성 메모리 인터페이스(60)를 통해서 비휘발성 메모리(120)에 데이터 버퍼(52)에 임시 저장된 기입 데이터를 프로그램할 것을 요청하거나, 또는 비휘발성 메모리(120)에 저장된 데이터의 독출을 요청할 수 있다.
기입 모드 결정부(10a)는 전술한 바와 같이 캐시 기능 활성화 여부(즉, 캐시 온 모드인지 또는 캐시 오프 모드인지) 및 호스트(200)로부터 수신되는 기입 커맨드 중 적어도 하나를 기초로 기입 모드를 결정할 수 있으며, 상태 매니저(20a)는 기입 모드 결정부(10a)에서 결정된 기입 모드를 기초로 스토리지 장치(100a)의 동작 상태를 결정할 수 있다. 상태 매니저(20a)는 동작 상태가 프로그래밍 상태(도 2의 PGMS)이면, 호스트 매니저(112)에 비지 신호 설정을 요청하며, 동작 상태가 트랜스퍼 상태(도 2의 TFS)이면, 호스트 매니저(112)에 비지 신호 해제를 요청할 수 있다. 호스트 매니저(112)는 상태 매니저(20a)의 요청에 따라 비지 신호를 설정하거나 또는 비지 신호를 해제할 수 있다.
비휘발성 메모리 인터페이스(60)는 디바이스 컨트롤러(110)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있으며, 예를 들어, FIL(Flash Interface Layer)로 구현될 수 있다. 비휘발성 메모리 인터페이스(60)는 호스트(200)로부터 수신된 커맨드(CMD)를 기초로 생성된 내부 커맨드(CMD_I) 및 어드레스(ADDR), 예컨대 물리 어드레스를 비휘발성 메모리(120)에 제공함으로써, 비휘발성 메모리(120)에 데이터(DATA)를 기입하거나 또는 비휘발성 메모리(120)로부터 데이터(DATA)를 독출할 수 있다.
도 13a및 도 13b는 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 13a는 기입 모드가 성능 모드로 설정된 경우를 나타내고 도 13b는 기입 모드가 신뢰 모드로 설정된 경우를 나타낸다. 도 13a및 도 13b의 동작 방법은 도 12의 스토리지 장치(100a)에서 수행될 수 있으며, 컨트롤러(300a)는 하드웨어로서, 도 12의 호스트 인터페이스(40a), 메모리(50) 및 비휘발성 메모리 인터페이스(60)를 포함하며, 펌웨어(400a)는 도 12의 FTL(70a)을 포함할 수 있다. 펌웨어(400a)는 기입 모드 결정부(10a) 및 상태 매니저(20a)를 포함할 수 있다.
도 13a를 참조하면, 호스트(200)가 컨트롤러(300a)에 기입 커맨드를 전송하면(S411), 컨트롤러(300a)는 펨웨어(400a)에 기입 커맨드 수신을 알리고, 커맨드 변수를 펌웨어(400a)에 전송할 수 있다(S421).
펌웨어(400a)는 기입 모드를 결정하고, 기입 모드가 성능 모드로 결정됨에 따라 성능 모드를 셋팅할 수 있다(S431a).
호스트(200)는 기입 커맨드 전송(S411) 후, 기입 데이터를 컨트롤러(300a)에 전송할 수 있다(S412). 펌웨어(400a)는 기입 데이터가 저장될 데이터 버퍼(도 12의 52)를 할당할 수 있다(S432). 다시 말해서, 펌웨어(400a)는 기입 데이터가 저장될 데이터 버퍼의 위치(영역)를 지정할 수 있다. 펌웨어(400a)는 컨트롤러(300a)에 할당된 데이터 버퍼(52)의 위치 및 데이터 수신 준비 완료를 알릴 수 있다(S433). 컨트롤러(300a)는 수신되는 기입 데이터를 할당된 데이터 버퍼에 전송할 수 있다(S422). 다시 말해서 컨트롤러(300a)는 기입 데이터를 데이터 버퍼(52)에 저장할 수 있다.
컨트롤러(300a)는 기입 데이터의 수신이 완료되고, 수신된 기입 데이터가 데이터 버퍼(52)에 저장되면, 데이터 수신 완료를 펌웨어(400a)에 알릴 수 있다(S424). 컨트롤러(300a)는 또한 비지 신호를 설정함으로써'비지 설정'을 호스트(200)에 알릴 수 있다(S423).
기입 모드가 성능 모드로 설정되었으므로, 폄웨어(400a)는 동작 상태를 수신-데이터 상태(도 2의 RDS)에서 트랜스퍼 상태(도 2의 TFS)로 변경함에 따라 컨트롤러(300a)에 비지 신호 해제를 요청할 수 있다(S433). 컨트롤러(300a)는 펌웨어(400a)의 요청에 따라 비지 신호를 해제함으로써 호스트(200)에 '비지 해제'를 알릴 수 있다(S424a).
도 13b를 참조하면, S411 단계 내지 S424 단계는 도 13a의 S411 단계 내지 S424 단계와 유사하다. 다만 펌웨어(400a)는 컨트롤러(300a)로부터 기입 커맨드 수신 알림 및 커맨드 변수가 수신되면, 기입 모드를 결정하고, 기입 모드가 신뢰 모드로 결정됨에 따라 신뢰 모드를 셋팅할 수 있다(S431b).
이후, 컨트롤러(300a)로부터 데이터 수신 완료 알림이 수신되면, 펌웨어(400a)는 기입 모드가 성능 모드로 설정되었으므로, 동작 상태를 수신-데이터 상태(도 2의 RDS)에서 프로그래밍 상태(도 2의 PGMS)로 변경하고, 프로그램 준비를 수행할 수 있다(S434b). 예컨대, 펌웨어(400a)는 비휘발성 메모리(120) 상의 물리 어드레스를 할당받을 수 있다. 펌웨어(400a)는 컨트롤러(300a)에 프로그램을 요청할 수 있다(S435b).
컨트롤러(300a)는 펌웨어(400a)로부터의 프로그램 요청에 따라 프로그램을 수행할 수 있다(S425b). 컨트롤러(300a)는 데이터 버퍼(52)에 저장된 기입 데이터를 할당된 물리 어드레스에 대응하는 비휘발성 메모리(120)의 영역에 프로그램할 수 있다.
프로그램이 완료되면, 컨트롤러(300a)는 펌웨어(400a)에 프로그램 완료를 알릴 수 있다(S426b). 펌웨어(400a)는 할당된 데이터 버퍼를 해제(release)할 수 있다(S436b). 기입 데이터가 저장되었던 데이터 버퍼의 영역은 자유 영역이 될 수 있으며, 다른 데이터가 저장될 수 있다. 이후, 펌웨어(400a)는 동작 상태를 프로그래밍 상태(PGMS)에서 트랜스퍼 상태(TFS)로 변경함에 따라 컨트롤러(300a)에 비지 신호 해제를 요청할 수 있다(S437b). 컨트롤러(300a)는 펌웨어(400a)의 요청에 따라 비지 신호를 해제함으로써 호스트(200)에 '비지 해제'를 알릴 수 있다(S426b).
도 14는 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이다.
도 14를 참조하면, 스토리지 장치(100b)는 디바이스 컨트롤러(110b) 및 비휘발성 메모리(120)를 포함할 수 있고, 디바이스 컨트롤러(110b)는 FTL(70b), 메모리(50), 호스트 인터페이스(40b) 및 비휘발성 메모리 인터페이스(60)를 포함할 수 있다. 스토리지 장치(100b)는 도 1의 스토리지 장치(100)의 일 구현예에 대응하며, 디바이스 컨트롤러(110b)는 도 4의 디바이스 컨트롤러(110)의 일 구현예에 대응할 수 있다. 따라서, 도 1 및 도 4를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
스토리지 장치(100b)의 구성들 및 구성들의 동작은 도 12를 참조하여 설명한 스토리지 장치(100a)의 구성들 및 구성들의 동작과 유사하다. 따라서, 차이점을 중심으로 설명하기로 한다.
도 14를 참조하면, 기입 모드 결정부(10b) 및 상태 매니저(20b)는 하드웨어로 구현될 수 있으며, 호스트 인터페이스(40c)에 포함될 수 있다. 이에 따라서 호스트 인터페이스(40c), 예컨대 하드웨어가 기입 모드를 결정할 수 있으며, 또한 하드웨어가 동작 상태를 결정하고, 호스트 매니저(112)에 비지 신호 해제를 요청할 수 있다. 실시예에 있어서, 커맨드 디코더(111)가 수신된 기입 데이터의 무결성 확인을 수행할 수 있으며, 기입 데이터의 수신이 완료된 후, 상태 매니저(20b)가 기입 모드 결정부(10b)에서 결정된 기입 모드 및 기입 데이터의 무결성을 기초로, 동작 상태를 결정하고 호스트 매니저(112)에 비지 신호 해제를 요청할 수 있다.
도 15a및 도 15b는 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 15a는 기입 모드가 성능 모드로 설정된 경우를 나타내고 도 15b는 기입 모드가 신뢰 모드로 설정된 경우를 나타낸다. 도 15a및 도 15b의 동작 방법은 도 14의 스토리지 장치(100b)에서 수행될 수 있으며, 컨트롤러(300b)는 하드웨어로서, 도 14의 호스트 인터페이스(40b), 메모리(50) 및 비휘발성 메모리 인터페이스(60)를 포함하며, 펌웨어(400b)는 도 14의 FTL(70b)을 포함할 수 있다. 컨트롤러(300b)는 기입 모드 결정부(10b) 및 상태 매니저(20b)를 포함할 수 있다.
도 15a를 참조하면, 호스트(200)가 컨트롤러(300a)에 기입 커맨드를 전송하면(S511), 컨트롤러(300b)는 펨웨어(400b)에 기입 커맨드 수신을 알리고, 커맨드 변수를 펌웨어(400a)에 전송할 수 있다(S521).
펌웨어(400b)는 컨트롤러(300b)에 기입 모드 설정을 요청할 수 있다(S531). 펌웨어(300b)는 기입 모드 설정 요청에 따라 기입 모드를 성능 모드로 결정하고, 성능 모드를 셋팅할 수 있다(S522a). 컨트롤러(300b)는 기입 모드가 성능 모드로 설정되었음을 펌웨어(400b)에 알릴 수 있다.
호스트(200)는 기입 커맨드 전송(S511) 후, 기입 데이터를 컨트롤러(300b)에 전송할 수 있다(S512). 펌웨어(400b)는 기입 데이터가 저장될 데이터 버퍼(도 14의 52)를 할당할 수 있다(S532). 펌웨어(400b)는 컨트롤러(300b)에 할당된 데이터 버퍼(52)의 위치 및 데이터 수신 준비 완료를 알릴 수 있다(S533). 컨트롤러(300b)는 수신되는 기입 데이터를 할당된 데이터 버퍼에 전송할 수 있다(S524). 다시 말해서 컨트롤러(300b)는 기입 데이터를 데이터 버퍼(52)에 저장할 수 있다.
컨트롤러(300b)는 기입 데이터의 수신이 완료되고, 수신된 기입 데이터가 데이터 버퍼(52)에 저장되면, 데이터 수신 완료를 펌웨어(400c)에 알릴 수 있다(S525). 컨트롤러(300c)는 또한 비지 신호를 설정함으로써'비지 설정'을 호스트(200)에 알릴 수 있다(S525).
기입 모드가 성능 모드로 설정되었으므로, 컨트롤러(300b)는 동작 상태를 수신-데이터 상태(도 2의 RDS)에서 트랜스퍼 상태(도 2의 TFS)로 변경함에 따라 비지 신호를 해제함으로써 호스트(200)에 '비지 해제'를 알릴 수 있다(S527a).
도 15b를 참조하면, S511 단계 내지 S526 단계는 도 15a의 S511 단계 내지 S526 단계와 유사하다. 다만, 컨트롤러(300b)는 펌웨어(400b)로부터 기입 모드 설정 요청이 수신되면, 기입 모드를 신뢰 모드로 결정하고, 신뢰 모드를 셋팅할 수 있다(S522b).
이후, 컨트롤러(300b)로부터 데이터 수신 완료 알림이 수신되면, 펌웨어(400b)는 프로그램 준비를 수행하고(S534b), 컨트롤러(300a)에 프로그램을 요청할 수 있다(S535b).
컨트롤러(300b)는 펌웨어(400b)로부터의 프로그램 요청에 따라 프로그램을 수행하고(S527b), 프로그램이 완료되면, 펌웨어(400b)에 프로그램 완료를 알릴 수 있다(S528b). 컨트롤러(300b)는 동작 상태를 프로그래밍 상태(PGMS)에서 트랜스퍼 상태(TFS)로 변경함에 따라 비지 신호를 해제함으로써 호스트(200)에 '비지 해제'를 알릴 수 있다(S529b). 펌웨어(400b)는 할당된 데이터 버퍼를 해제(release)할 수 있다(S536b).
도 16은 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이다.
도 16을 참조하면, 스토리지 장치(100c)는 디바이스 컨트롤러(110c) 및 비휘발성 메모리(120)를 포함할 수 있고, 디바이스 컨트롤러(110c)는 FTL(70c), 메모리(50), 호스트 인터페이스(40c) 및 비휘발성 메모리 인터페이스(60)를 포함할 수 있다. 스토리지 장치(100c)는 도 1의 스토리지 장치(100)의 일 구현예에 대응하며, 디바이스 컨트롤러(110c)는 도 4의 디바이스 컨트롤러(110)의 일 구현예에 대응할 수 있다. 따라서, 도 1 및 도 4를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
스토리지 장치(100c)의 구성들 및 구성들의 동작은 도 12를 참조하여 설명한 스토리지 장치(100a)의 구성들 및 구성들의 동작과 유사하다. 따라서, 차이점을 중심으로 설명하기로 한다.
도 16을 참조하면, 기입 모드 결정부(10c)는 펌웨어로 구현될 수 있으며 상태 매니저(20c)는 하드웨어로 구현될 수 있다. 기입 모드 결정부(10c)는 FTL(70c)에 포함될 수 있으며, 상태 매니저(20c)는 호스트 인터페이스(40c)에 포함될 수 있다. 이에 따라서 FTL(70c), 예컨대 펌웨어가 기입 모드를 결정할 수 있으며, 호스트 인터페이스(40c), 예컨대 하드웨어가 동작 상태를 결정하고, 호스트 매니저(112)에 비지 신호 해제를 요청할 수 있다.
도 17a및 도 17b는 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 17a는 기입 모드가 성능 모드로 설정된 경우를 나타내고 도 17b는 기입 모드가 신뢰 모드로 설정된 경우를 나타낸다. 도 17a및 도 17b의 동작 방법은 도 15의 스토리지 장치(100c)에서 수행될 수 있으며, 컨트롤러(300c)는 하드웨어로서, 도 15의 호스트 인터페이스(40c), 메모리(50) 및 비휘발성 메모리 인터페이스(60)를 포함하며, 펌웨어(400c)는 도 15의 FTL(70c)을 포함할 수 있다. 컨트롤러(300c)는 상태 매니저(20b)를 포함하고, 펌웨어(400c)는 기입 모드 결정부(10c)를 포함할 수 있다.
도 17a를 참조하면, 호스트(200)가 컨트롤러(300a)에 기입 커맨드를 전송하면(S611), 컨트롤러(300c)는 펨웨어(400c)에 기입 커맨드 수신을 알리고, 커맨드 변수를 펌웨어(400c)에 전송할 수 있다(S621).
펌웨어(400c)는 기입 모드를 성능 모드로 결정하고(S631a), 컨트롤러(300c)에 성능 모드를 알림으로써, 성능 모드를 셋팅할 수 있다(S632a).
호스트(200)는 기입 커맨드 전송(S611) 후, 기입 데이터를 컨트롤러(300c)에 전송할 수 있다(S612). 펌웨어(400c)는 기입 데이터가 저장될 데이터 버퍼(도 14의 52)를 할당할 수 있다(S633). 펌웨어(400c)는 컨트롤러(300c)에 할당된 데이터 버퍼(52)의 위치 및 데이터 수신 준비 완료를 알릴 수 있다(S634). 컨트롤러(300c)는 수신되는 기입 데이터를 할당된 데이터 버퍼에 전송할 수 있다(S622).
컨트롤러(300c)는 기입 데이터의 수신이 완료되고, 수신된 기입 데이터가 데이터 버퍼(52)에 저장되면, 데이터 수신 완료를 펌웨어(400c)에 알릴 수 있다(S624). 컨트롤러(300c)는 또한 비지 신호를 설정함으로써'비지 설정'을 호스트(200)에 알릴 수 있다(S623).
기입 모드가 성능 모드로 설정되었으므로, 컨트롤러(300c)는 동작 상태를 수신-데이터 상태(도 2의 RDS)에서 트랜스퍼 상태(도 2의 TFS)로 변경함에 따라 비지 신호를 해제함으로써 호스트(200)에 '비지 해제'를 알릴 수 있다(S625a).
도 17b를 참조하면, S611 단계 내지 S624 단계는 도 17a의 S611 단계 내지 S624 단계와 유사하다. 다만, 펌웨어(400c)는 기입 모드를 신뢰 모드로 결정하고, 컨트롤러(300c)에 신뢰 모드를 알림으로써, 신뢰 모드를 셋팅할 수 있다(S632b).
이후, 컨트롤러(300c)로부터 데이터 수신 완료 알림이 수신되면, 펌웨어(400c)는 프로그램 준비를 수행하고(S634b), 컨트롤러(300c)에 프로그램을 요청할 수 있다(S635b).
컨트롤러(300b)는 펌웨어(400b)로부터의 프로그램 요청에 따라 프로그램을 수행하고(S625b), 프로그램이 완료되면, 펌웨어(400c)에 프로그램 완료를 알릴 수 있다(S626b). 컨트롤러(300c)는 동작 상태를 프로그래밍 상태(PGMS)에서 트랜스퍼 상태(TFS)로 변경함에 따라 비지 신호를 해제함으로써 호스트(200)에 '비지 해제'를 알릴 수 있다(S624b). 펌웨어(400c)는 할당된 데이터 버퍼를 해제(release)할 수 있다(S636b).
도 18은 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 18의 동작 방법은 도 15의 스토리지 장치(100c)에서 수행될 수 있으며, 수신된 기입 데이터에 데이터 에러가 발생된 경우 스토리지 장치의 동작 방법을 나타낸다. 도 17a 및 도 17b를 참조하여 전술한 바와 같이, 컨트롤러(300c)는 상태 매니저(20b)를 포함하고, 펌웨어(400c)는 기입 모드 결정부(10c)를 포함할 수 있다. 이에 따라서, 펌웨어(400c)가 기입 모드를 결정하고, 컨트롤러(300c)가 동작 상태를 결정하고, 호스트(200)에 비지 설정 또는 비지 해제를 알릴 수 있다.
도 18의 S711 단계 내지 S723 단계는 도 17a의 S611 단계 내지 S623 단계와 동일하므로 중복되는 설명은 생략하기로 한다.
펌웨어(400c)는 컨트롤러(300c)로부터 데이터 전송 완료 알림을 수신하면, 수신된 기입 데이터에 데이터 에러 발생을 판단할수 있다(S735). 예컨대, 컨트롤러(300c)는 기입 데이터에 포함된 CRC를 기초로 에러를 검출 및 정정할 수 있으며, 기입 데이터에서 정정될 수 없는 에러가 검출된 경우, 에러가 발생하였다고 판단할 수 있다. 펌웨어(400c)는 데이터 에러 발생을 컨트롤러(300c)에 알리고(S736), 기입 후처리(S637)를 수행할 수 있다. 펌웨어(400c)는 기입 데이터를 처리하거나, 에러 발생을 추후 호스트(200)에 알리기 위한 처리를 수행할 수 있다.
펌웨어(400c)는 기입 후처리가 완료되면, 처리 완료를 컨트롤러(300c)에 알릴 수 있다(S738). 컨트롤러(300c)는 펌웨어(400c)로부터 처리 완료 알림이 수신되면, 호스트(200)에 비지 해제를 알릴 수 있다(S725). 예컨대, 컨트롤러(300c)는 펌웨어(400c)로부터 데이터 에러 발생 알림이 수신되면, 컨트롤러(300c)로부터 처리 완료 알림이 수신된 후, 동작 상태를 트랜스퍼 상태(도 2의 TFS)로 변경하고, 이에 따라 비지 신호를 해제할 수 있다.
본 실시예에서, 펌웨어(400c)가 데이터 에러 발생을 판단하는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 일 실시예에 있어서, 컨트롤러(300c)가 데이터 에러 발생을 판단하고, 펌웨어(400c)에 기입 후처리를 요청할 수 있다. 일 실시예에 있어서, 컨트롤러(300c) 및 펌웨어(400c)가 함께 데이터 에러 발생을 판단하고, 판단 결과를 공유할 수도 있다.
도 19는 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 19를 참조하면, 전자 장치(2000)는 프로세서(2100), 메모리 장치(2200), 스토리지 장치(2300), 모뎀(2400), 입출력 장치(2500) 및 파워 서플라이(2600)를 포함할 수 있다. 본 실시예에서, 스토리지 장치(2300)는 캐시 기능 활성화 여부 및 기입 커맨드를 기초로 기입 모드를 결정하고, 기입 데이터의 수신이 완료되면, 기입 모드를 기초로 다음 동작 상태를 선택할 수 있다.
스토리지 장치(2300)는 비휘발성 메모리를 포함할 수 있으며, 기입 모드가 기입 데이터가 비휘발성 메모리에 저장되는 것이 보장되는 신뢰 모드이면, 기입 데이터 수신이 완료된 후, 프로그래밍 상태로 진입하고, 비지 신호를 설정할 수 있다. 스토리지 장치(1300)는 기입 데이터의 프로그램이 완료된 후, 트랜스퍼 상태로 진입하고, 비지 신호를 해제할 수 있다.
스토리지 장치(2300)는 기입 모드가 기입 데이터가 비휘발성 메모리에 저장되는 것이 보장되지 않는 성능 모드이면, 기입 데이터 수신이 완료된 후, 트랜스퍼 상태로 진입하고, 비지 신호를 해제할 수 있다.
도 1 내지 도 18을 참조하여 상술된 내용은 스토리지 장치(2300)에 적용될 수 있다. 스토리지 장치(2300)가 기입 데이터의 무결성(integrity)이 요구되는지에 따라 적응적으로 동작 상태의 변경을 제어함으로써, 기입 신뢰성 및 기입 성능이 향상될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 스토리지 시스템, 100, 100a, 100b, 100c: 스토리지 장치, 200: 호스트
110, 110a, 110b, 110c: 디바이스 컨트롤러, 120: 비휘발성 메모리
10, 10a, 10b, 10c: 기입 모듈 결정부 20, 20a, 20b, 20c: 상태 매니저

Claims (10)

  1. 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법으로서,
    상기 스토리지 장치가, 제1 상태에서 호스트로부터 기입 커맨드를 수신하는 단계;
    상기 스토리지 장치가, 캐시 기능 활성화 여부를 나타내는 상기 스토리지 장치의 동작 모드 및 상기 기입 커맨드에 포함되어 상기 기입 커맨드가 상기 비휘발성 메모리에 프로그래밍을 요구하는지 여부를 나타내는 기입 정보를 기초로 상기 스토리지 장치의 기입 모드를 결정하는 단계;
    상기 스토리지 장치의 동작 상태가 상기 제1 상태에서 제2 상태로 천이하는 단계;
    상기 스토리지 장치가, 상기 제2 상태에서 상기 호스트로부터 기입 데이터를 수신하는 단계; 및
    상기 기입 모드가 제1 기입 모드이면, 상기 스토리지 장치의 동작 상태가 상기 제2 상태에서 상기 제1 상태로 천이하고, 상기 기입 모드가 제2 기입 모드이면, 상기 스토리지 장치의 동작 상태가 상기 제2 상태에서 제3 상태로 천이하는 단계를 포함하며,
    상기 스토리지 장치는, 상기 제1 상태에서 상기 기입 커맨드를 수신하고, 상기 제2 상태에서 상기 기입 데이터를 수신하고, 상기 제3 상태에서 수신된 상기 기입 데이터를 상기 비휘발성 메모리에 프로그램할 수 있는 것을 특징으로 하는 방법.
  2. 제1 항에 있어서,
    상기 스토리지 장치의 상기 동작 상태가 상기 제2 상태에서 상기 제1 상태로 천이되면, 상기 기입 데이터를 수신할 수 있는 상태를 나타내는 상태 신호를 상기 호스트로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제1 항에 있어서,
    상기 스토리지 장치의 상기 동작 상태가 상기 제2 상태에서 상기 제3 상태로 천이되면, 상기 기입 데이터를 상기 비휘발성 메모리에 프로그램하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제1 항에 있어서,
    상기 제1 기입 모드는 상기 기입 데이터가 상기 비휘발성 메모리에 저장되는 것이 보장되는 모드이고, 상기 제2 기입 모드는 상기 기입 데이터가 상기 비휘발성 메모리에 저장되는 것이 보장되지 않는 모드인 것을 특징으로 하는 방법.
  5. 삭제
  6. 제4 항에 있어서, 상기 스토리지 장치의 상기 기입 모드를 결정하는 단계는,
    상기 스토리지 장치가 캐시 기능이 활성화된 캐시 온 모드로 동작하면, 상기 기입 모드를 상기 제1 기입 모드로 결정하는 것을 특징으로 하는 방법.
  7. 제4 항에 있어서, 상기 스토리지 장치의 상기 기입 모드를 결정하는 단계는,
    상기 스토리지 장치가 캐시 기능이 비활성화된 캐시 오프 모드로 동작하거나 또는 상기 기입 커맨드가 강제 프로그램을 요청하면, 상기 기입 모드를 상기 제2 기입 모드로 결정하는 것을 특징으로 하는 방법.
  8. 제4 항에 있어서, 상기 스토리지 장치의 상기 기입 모드를 결정하는 단계는,
    모드 설정 커맨드가 데이터 무결성을 보장하지 않는 캐시 온을 요청하고, 상기 기입 커맨드가 강제 프로그램을 요청하지 않고, 상기 기입 커맨드가 정상 커맨드이면 상기 기입 모드를 상기 제1 기입 모드로 결정하는 것을 특징으로 하는 방법.
  9. 제1 항에 있어서,
    상기 기입 데이터에 데이터 에러가 발생되면, 상기 스토리지 장치의 상기 동작 상태가 상기 제2 상태에서 상기 제3 상태로 천이하는 것을 특징으로 하는 방법.
  10. 제1 항에 있어서,
    상기 스토리지 장치는 eMMC인 것을 특징으로 하는 방법.
KR1020170122664A 2017-09-22 2017-09-22 스토리지 장치 및 그 동작 방법 KR102430983B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170122664A KR102430983B1 (ko) 2017-09-22 2017-09-22 스토리지 장치 및 그 동작 방법
CN201811117877.3A CN109542337B (zh) 2017-09-22 2018-09-21 存储设备
US16/138,089 US10795594B2 (en) 2017-09-22 2018-09-21 Storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170122664A KR102430983B1 (ko) 2017-09-22 2017-09-22 스토리지 장치 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20190033920A KR20190033920A (ko) 2019-04-01
KR102430983B1 true KR102430983B1 (ko) 2022-08-09

Family

ID=65809040

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170122664A KR102430983B1 (ko) 2017-09-22 2017-09-22 스토리지 장치 및 그 동작 방법

Country Status (3)

Country Link
US (1) US10795594B2 (ko)
KR (1) KR102430983B1 (ko)
CN (1) CN109542337B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102549540B1 (ko) * 2017-09-22 2023-06-29 삼성전자주식회사 스토리지 장치 및 그 동작 방법
KR102535243B1 (ko) * 2017-12-18 2023-05-23 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11303429B2 (en) * 2019-06-28 2022-04-12 Intel Corporation Combined SHA2 and SHA3 based XMSS hardware accelerator
US20230259471A1 (en) * 2022-02-14 2023-08-17 Infineon Technologies Ag Write busy signaling for interface structures

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279114B1 (en) * 1998-11-04 2001-08-21 Sandisk Corporation Voltage negotiation in a single host multiple cards system
US7243185B2 (en) 2004-04-05 2007-07-10 Super Talent Electronics, Inc. Flash memory system with a high-speed flash controller
US7889544B2 (en) * 2004-04-05 2011-02-15 Super Talent Electronics, Inc. High-speed controller for phase-change memory peripheral device
US6523102B1 (en) * 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
JP3923715B2 (ja) * 2000-09-29 2007-06-06 株式会社東芝 メモリカード
JP3839288B2 (ja) 2001-09-12 2006-11-01 株式会社ルネサステクノロジ メモリカード
JP3641230B2 (ja) * 2001-10-22 2005-04-20 株式会社東芝 メモリカードを制御するための装置および方法
US7051217B2 (en) * 2003-08-14 2006-05-23 Solid State System Co., Ltd. Method of state maintenance for MMC flash storage card in communication protocol
JP4817836B2 (ja) * 2004-12-27 2011-11-16 株式会社東芝 カードおよびホスト機器
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8271737B2 (en) * 2009-05-27 2012-09-18 Spansion Llc Cache auto-flush in a solid state memory device
US20120179860A1 (en) * 2009-06-10 2012-07-12 Francesco Falanga Suspension of memory operations for reduced read latency in memory arrays
US8356131B2 (en) 2009-10-25 2013-01-15 Sony Mobile Communications Ab System and method for controlling interruption of a process in electronic equipment based on priority of the process, and program
US10025711B2 (en) * 2012-01-16 2018-07-17 Qualcomm Incorporated Hybrid write-through/write-back cache policy managers, and related systems and methods
KR20140035771A (ko) 2012-09-14 2014-03-24 삼성전자주식회사 임베디드 멀티미디어 카드, 상기 임베디드 멀티미디어 카드를 제어하는 호스트, 및 그 동작방법
KR101988260B1 (ko) * 2012-09-14 2019-06-12 삼성전자주식회사 임베디드 멀티미디어 카드, 및 이의 동작 방법
KR101932920B1 (ko) * 2012-09-14 2019-03-18 삼성전자 주식회사 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
KR20140101626A (ko) * 2013-02-12 2014-08-20 삼성전자주식회사 솔리드 스테이트 드라이브의 데이터 처리 방법
US9158687B2 (en) * 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9170943B2 (en) 2013-08-29 2015-10-27 Globalfoundries U.S. 2 Llc Selectively enabling write caching in a storage system based on performance metrics
JP6275427B2 (ja) * 2013-09-06 2018-02-07 株式会社東芝 メモリ制御回路およびキャッシュメモリ
KR102295223B1 (ko) * 2015-01-13 2021-09-01 삼성전자주식회사 속도 모드 관리자를 포함하는 저장 장치 및 사용자 장치
JP2016026345A (ja) * 2015-09-03 2016-02-12 マイクロン テクノロジー, インク. メモリアレイにおける読み出し待ち時間を短縮するためのメモリ操作の一時停止
CN105117179A (zh) * 2015-09-22 2015-12-02 天津瑞发科半导体技术有限公司 一种主机与存储设备数据交互的方法及存储控制器
US10310580B2 (en) * 2015-10-09 2019-06-04 Sandisk Technologies Llc Voltage level detection and analog circuit arrangements for memory systems
US10671313B2 (en) * 2018-01-23 2020-06-02 Goke Us Research Laboratory Apparatus and methods for fast and secure storage of data

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
일본공개특허 제2002-109490호(2002.04.12.) 1부.*
일본공개특허 제2015-052938호(2015.03.19.) 1부.*
한국공개특허 제10-2014-0035776호(2014.03.24.) 1부.*
한국공개특허 제10-2014-0101626호(2014.08.20.) 1부.*
한국공개특허 제10-2017-0016995호(2017.02.14.) 1부.*

Also Published As

Publication number Publication date
KR20190033920A (ko) 2019-04-01
US20190095117A1 (en) 2019-03-28
US10795594B2 (en) 2020-10-06
CN109542337A (zh) 2019-03-29
CN109542337B (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
US10891236B2 (en) Data storage device and operating method thereof
KR102487553B1 (ko) 리페어 가능한 휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10572158B2 (en) Method of operating storage device to recover performance degradation due to retention characteristic and method of operating data processing system including the same
US10303378B2 (en) Data storage device
KR102419036B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102430983B1 (ko) 스토리지 장치 및 그 동작 방법
US20200218653A1 (en) Controller, data storage device, and operating method thereof
US11567685B2 (en) Storage controller and storage device including the same
US11461226B2 (en) Storage device including memory controller
US10445252B2 (en) Storage device and operating method performed by the same
US11520694B2 (en) Data storage device and operating method thereof
US20230031745A1 (en) Memory system and controller of memory system
US11782638B2 (en) Storage device with improved read latency and operating method thereof
KR20200089939A (ko) 메모리 시스템 및 그 동작 방법
US11461238B2 (en) Storage device, memory controller, and method for fetching write commands from submission queues to perform full page writes
US20210191626A1 (en) Data processing system
EP3955102B1 (en) Storage system performing overwrite, host system controlling storage system, and operating method for storage system
US11586379B2 (en) Memory system and method of operating the same
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
KR20210001206A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102583244B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US11294587B2 (en) Data storage device capable of maintaining continuity of logical addresses mapped to consecutive physical addresses, electronic device including the same, and method of operating the data storage device
EP4220374A1 (en) Storage device and operating method of storage device
KR102660399B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20240003648A (ko) 메모리 시스템 및 그에 포함된 메모리 컨트롤러의 동작 방법

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