KR20170019239A - 통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치 - Google Patents

통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치 Download PDF

Info

Publication number
KR20170019239A
KR20170019239A KR1020150113391A KR20150113391A KR20170019239A KR 20170019239 A KR20170019239 A KR 20170019239A KR 1020150113391 A KR1020150113391 A KR 1020150113391A KR 20150113391 A KR20150113391 A KR 20150113391A KR 20170019239 A KR20170019239 A KR 20170019239A
Authority
KR
South Korea
Prior art keywords
host
buffer
data
memory controller
volatile memories
Prior art date
Application number
KR1020150113391A
Other languages
English (en)
Other versions
KR102396441B1 (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 KR1020150113391A priority Critical patent/KR102396441B1/ko
Priority to US15/168,234 priority patent/US10599341B2/en
Priority to DE102016214657.2A priority patent/DE102016214657A1/de
Publication of KR20170019239A publication Critical patent/KR20170019239A/ko
Application granted granted Critical
Publication of KR102396441B1 publication Critical patent/KR102396441B1/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/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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 하나 이상의 불휘발성 메모리들, 메모리 컨트롤러, 및 버퍼를 포함하는 스토리지 장치를 제공한다. 메모리 컨트롤러는 호스트로부터 제공된 데이터가 불휘발성 메모리들에 저장되도록 불휘발성 메모리들을 제어하고, 버퍼는 불휘발성 메모리들에 저장될 데이터를 임시로 저장한다. 메모리 컨트롤러는 호스트와의 통신이 기준 시간 동안 발생하지 않는 경우 만료 신호를 생성하는 타이머 회로를 포함하고, 만료 신호에 응답하여 버퍼에 임시로 저장된 데이터를 불휘발성 메모리들로 플러시한다. 본 발명의 스토리지 장치는 호스트에 의해 리셋되기 전에 버퍼에 저장된 데이터를 보존하여, 데이터 손실을 방지한다.

Description

통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치 {STORAGE DEVICE OPERATING TO PREVENT DATA LOSS WHEN COMMUNICATION IS INTERRUPTED}
본 발명은 데이터 스토리지에 관한 것으로, 좀 더 구체적으로는 스토리지 장치에서 데이터 손실을 방지하기 위한 구성 및 동작에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 여러 전기/전자 회로의 동작에 따라 고유의 기능을 수행할 수 있다. 몇몇 경우, 회로의 동작에 오류가 발생할 수 있고 전자 장치가 비정상적으로 동작할 수 있다. 그러나, 대부분의 전자 장치들은 비정상적인 동작을 해소하고 정상적으로 동작하기 위한 복구 스킴(Recovery Scheme)을 채용한다.
스토리지 장치는 전자 장치의 한 예이다. 스토리지 장치는 호스트(Host)와 통신하면서 데이터를 저장하거나 데이터를 출력한다. 스토리지 장치는 그것에 포함되는 여러 전기/전자 회로의 동작에 따라 스토리지 서비스를 제공한다.
몇몇 경우, 스토리지 장치와 호스트 사이의 인터페이싱(Interfacing)에 오류가 발생하고 스토리지 장치와 호스트 사이의 통신이 중단될 수 있다. 스토리지 장치와 호스트 사이의 인터페이싱을 위해 채용된 통신 규약(Protocol)은 중단된 통신을 해소하기 위한 복구 스킴을 채용할 수 있다.
그러나, 몇몇 경우, 복구 스킴의 동작에도 불구하고 인터페이싱의 오류가 완전히 복구되지 않을 수 있다. 최악의 경우, 스토리지 장치에 저장된 데이터가 손실될 수 있다. 데이터 손실은 스토리지 장치 또는 스토리지 시스템의 신뢰성을 악화시킬 수 있다. 게다가, 데이터가 손실되는 경우, 스토리지 장치 또는 스토리지 시스템의 사용자가 피해를 입을 수 있다.
본 발명은 호스트와의 통신이 중단된 경우라도 데이터 손실을 방지할 수 있는 스토리지 장치를 제공할 수 있다. 본 발명의 실시 예에 따른 스토리지 장치는 호스트와의 통신이 기준 시간 동안 발생하지 않는 경우 버퍼에 저장된 데이터의 손실을 방지할 수 있다.
본 발명의 일 실시 예에 따른 스토리지 장치는 하나 이상의 불휘발성 메모리들, 메모리 컨트롤러, 및 버퍼를 포함할 수 있다. 메모리 컨트롤러는 호스트로부터 제공된 데이터가 불휘발성 메모리들에 저장되도록 불휘발성 메모리들을 제어할 수 있다. 버퍼는 불휘발성 메모리들에 저장될 데이터를 임시로 저장할 수 있다. 메모리 컨트롤러는 호스트와의 통신이 기준 시간 동안 발생하지 않는 경우 만료 신호를 생성하도록 구성되는 타이머 회로를 포함할 수 있고, 만료 신호에 응답하여 버퍼에 임시로 저장된 데이터를 불휘발성 메모리들로 플러시할 수 있다.
본 발명의 일 실시 예에서, 호스트와의 통신은 호스트로부터의 커맨드의 수신, 호스트로부터의 데이터의 수신, 및 호스트로의 응답의 송신 중 적어도 하나를 포함할 수 있다.
본 발명의 일 실시 예에서, 메모리 컨트롤러는 호스트와의 인터페이싱을 처리하도록 구성되는 호스트 인터페이스 관리기, 불휘발성 메모리들과의 인터페이싱을 처리하도록 구성되는 메모리 인터페이스 관리기, 버퍼의 동작을 관리하도록 구성되는 버퍼 관리기, 및 호스트 인터페이스 관리기, 메모리 인터페이스 관리기, 및 버퍼 관리기 중 적어도 하나를 동작시키기 위한 연산들을 수행하도록 구성되는 프로세서를 더 포함할 수 있다.
본 발명의 일 실시 예에서, 프로세서는 호스트 인터페이스 관리기와 호스트 사이의 통신의 발생에 응답하여 타이머 회로의 동작을 초기화할 수 있다.
본 발명의 일 실시 예에서, 타이머 회로의 동작은 호스트 인터페이스 관리기와 호스트 사이의 통신의 발생에 응답하여 초기화될 수 있다.
본 발명의 일 실시 예에서, 버퍼 관리기는 만료 신호에 응답하여 버퍼에 임시로 저장된 데이터가 불휘발성 메모리들로 플러시되도록 버퍼를 제어할 수 있다.
본 발명의 일 실시 예에서, 호스트 인터페이스 관리기는 만료 신호에 응답하여 버퍼 관리기로 플러시 신호를 송신할 수 있다. 이 실시 예에서, 버퍼 관리기는 플러시 신호에 응답하여 버퍼에 임시로 저장된 데이터가 불휘발성 메모리들로 플러시되도록 버퍼를 제어할 수 있다.
본 발명의 일 실시 예에서, 버퍼에 임시로 저장된 데이터를 메모리 컨트롤러에 의해 불휘발성 메모리들로 플러시하는 동작은 호스트로부터 제공되는 커맨드 없이 수행될 수 있다.
본 발명의 일 실시 예에서, 만료 신호에 응답하여 버퍼에 임시로 저장된 데이터가 불휘발성 메모리들로 플러시되는 경우, 메모리 컨트롤러는 불휘발성 메모리들에 플러시된 데이터를 저장한 메모리 위치와 플러시된 데이터 사이의 대응에 관한 맵핑 데이터가 불휘발성 메모리들에 저장되도록 불휘발성 메모리들을 제어할 수 있다.
본 발명의 다른 실시 예에 따른 스토리지 장치는 하나 이상의 불휘발성 메모리들, 버퍼, 타이머 회로, 및 메모리 컨트롤러를 포함할 수 있다. 불휘발성 메모리들은 호스트로부터 제공된 데이터를 저장할 수 있다. 버퍼는 불휘발성 메모리들에 저장될 데이터를 임시로 저장할 수 있다. 타이머 회로는 호스트와의 통신이 제 1 기준 시간 동안 발생하지 않는 경우 만료 신호를 생성할 수 있다. 메모리 컨트롤러는 만료 신호에 기초하여 불휘발성 메모리들 및 버퍼를 제어할 수 있고, 호스트와의 통신이 제 2 기준 시간 동안 발생하지 않는 경우 불휘발성 메모리들, 버퍼, 및 메모리 컨트롤러 중 적어도 하나의 동작이 리셋되도록 호스트로부터 리셋 커맨드를 제공받을 수 있다. 제 1 기준 시간은 제 2 기준 시간보다 짧을 수 있다.
본 발명의 다른 실시 예에서, 메모리 컨트롤러는 버퍼에 임시로 저장된 데이터가 만료 신호에 응답하여 불휘발성 메모리들로 플러시되도록 불휘발성 메모리들 및 버퍼를 제어할 수 있다.
본 발명의 다른 실시 예에서, 제 1 기준 시간의 값은 호스트로부터 제공될 수 있다.
본 발명의 다른 실시 예에서, 메모리 컨트롤러는 호스트로부터 제 2 기준 시간의 값을 제공받고, 제 2 기준 시간의 값에 기초하여 제 1 기준 시간의 값을 산출할 수 있다.
본 발명의 다른 실시 예에서, 제 1 기준 시간은 버퍼에 임시로 저장된 데이터를 불휘발성 메모리들에 저장하는 데에 소요되는 시간의 값, 및 메모리 컨트롤러에 의해 처리되지 않은 커맨드의 실행을 완료하는 데에 소요되는 시간의 값을 제 2 기준 시간의 값에서 감산함으로써 얻어지는 값 이하의 값을 가질 수 있다.
본 발명의 또 다른 실시 예에 따른 스토리지 장치는 하나 이상의 불휘발성 메모리들, 버퍼, 및 메모리 컨트롤러를 포함할 수 있다. 버퍼는 호스트로부터 제공되어 불휘발성 메모리들에 저장될 데이터를 임시로 저장할 수 있다. 메모리 컨트롤러는 호스트와의 통신이 기준 시간 동안 발생하지 않는 경우 버퍼에 임시로 저장된 데이터가 불휘발성 메모리들에 저장되도록 불휘발성 메모리들 및 버퍼를 제어할 수 있다. 버퍼에 임시로 저장된 데이터를 불휘발성 메모리들에 저장하는 동작은 호스트로부터 제공되는 커맨드 없이 수행될 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치는 호스트와의 통신에 오류가 발생했는지 여부를 예측할 수 있다. 오류에 기인하여 스토리지 장치와 호스트 사이의 통신이 중단되는 경우, 스토리지 장치는 호스트에 의해 리셋되기 전에 버퍼에 저장된 데이터의 손실을 방지할 수 있다. 따라서, 본 발명의 실시 예에 따르면, 호스트가 스토리지 장치와 안정적으로 통신할 수 있고, 스토리지 장치의 신뢰성이 향상될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 시스템에서 수행되는 예시적인 동작들을 설명하는 흐름도이다.
도 3은 호스트와 스토리지 장치 사이의 통신이 중단됨에 따라 버퍼에 저장된 데이터가 손실되는 경우를 설명하는 흐름도이다.
도 4는 본 발명의 실시 예에 따라 도 1의 스토리지 장치의 버퍼에 저장된 데이터를 보존하기 위한 동작들을 설명하는 흐름도이다.
도 5는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다.
도 6은 도 5의 스토리지 장치의 동작을 설명하는 흐름도이다.
도 7은 도 5의 스토리지 장치의 동작을 설명하기 위한 개념도이다.
도 8은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다.
도 9는 도 8의 스토리지 장치에서 타이머(Timer) 회로를 관리하는 과정을 설명하기 위한 개념도이다.
도 10 및 도 11은 도 8의 스토리지 장치에서 기준 시간의 경과에 기초하여 플러시(Flush) 동작을 수행하는 과정을 설명하기 위한 개념도들이다.
도 12는 도 8의 스토리지 장치에서 맵핑(Mapping) 데이터를 저장하는 과정을 설명하기 위한 개념도이다.
도 13은 도 1의 스토리지 장치에서 기준 시간의 값을 설정하는 과정을 설명하기 위한 개념도이다.
도 14는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 전자 시스템의 구성 및 그것의 인터페이스들을 나타낸 블록도이다.
도 15는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다. 스토리지 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다.
호스트(1100)는 스토리지 장치(1200)로 커맨드(CMD)를 제공할 수 있다. 호스트(1100)는 스토리지 장치(1200)와 데이터(DAT)를 교환할 수 있다. 호스트(1100)는 스토리지 장치(1200)로부터 응답(RSP)을 제공받을 수 있다.
예로서, 데이터(DAT)가 쓰기 데이터를 포함하는 경우, 호스트(1100)는 쓰기 커맨드를 포함하는 커맨드(CMD) 및 쓰기 데이터를 포함하는 데이터(DAT)를 스토리지 장치(1200)로 제공할 수 있다. 호스트(1100)는 스토리지 장치(1200)로부터 제공된 응답(RSP)을 참조하여 쓰기 데이터가 스토리지 장치(1200)에 저장되었음을 인지할 수 있다. 예로서, 데이터(DAT)가 읽기 데이터를 포함하는 경우, 호스트(1100)는 읽기 커맨드를 포함하는 커맨드(CMD)를 스토리지 장치(1200)로 제공할 수 있다. 호스트(1100)는 읽기 데이터를 포함하는 데이터(DATA)를 스토리지 장치(1200)로부터 제공받을 수 있다. 이에 따라, 스토리지 시스템(1000)은 사용자에게 스토리지 서비스를 제공할 수 있다.
예로서, 호스트(1100)는 하나 이상의 프로세서 코어들을 포함하도록 구현될 수 있다. 예로서, 호스트(1100)는 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다. 호스트(1100)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 시스템일 수 있다.
스토리지 장치(1200)는 하나 이상의 불휘발성 메모리들(1210), 버퍼(Buffer; 1230), 및 메모리 컨트롤러(1250)를 포함할 수 있다. 불휘발성 메모리들(1210) 각각은 호스트(1100)로부터 제공된 데이터(DAT)를 저장하기 위한 메모리 영역을 포함할 수 있다. 예로서, 불휘발성 메모리들(1210) 각각이 낸드 플래시 메모리(NAND-type Flash Memory)를 포함하는 경우, 불휘발성 메모리들(1210) 각각은 복수의 워드 라인 및 복수의 비트 라인을 따라 형성되는 메모리 셀 어레이를 포함할 수 있다.
그러나, 위 예는 본 발명을 한정하기 위한 것은 아니다. 불휘발성 메모리들(1210) 각각은 PRAM(Phase-change Random Access Memory), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 다양한 불휘발성 메모리들 중 하나 이상을 포함할 수 있다. 불휘발성 메모리들(1210) 각각의 구성은 다양하게 변경 또는 수정될 수 있다.
버퍼(1230)는 불휘발성 메모리들(1210)에 저장될 데이터를 임시로 저장할 수 있다. 예로서, 호스트(1100)로부터 제공된 데이터(DAT)는 버퍼(1230)에서 버퍼링된 후 불휘발성 메모리들(1210)로 제공될 수 있다. 예로서, 버퍼(1230)는 스토리지 장치(1200)의 캐시(Cache) 메모리로서 동작할 수 있다.
예로서, 버퍼(1230)는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 다양한 휘발성 메모리들 중 하나 이상을 포함할 수 있다. 그러나, 본 발명은 이 예에 의해 한정되지 않는다. 버퍼(1230)는 임의 접근 가능하고(Randomly Accessible) 빠른 속도로 동작할 수 있는 다른 유형의 메모리로 구현될 수 있다.
예로서, 호스트(1100)는 버퍼(1230)에 임시로 버퍼링된 데이터를 불휘발성 메모리들(1210)로 "플러시(Flush)"하기 위해 플러시 커맨드를 포함하는 커맨드(CMD)를 스토리지 장치(1200)로 제공할 수 있다. 본 발명의 실시 예에서, 호스트(1100)와 스토리지 장치(1200) 사이의 통신이 중단되는 경우, 버퍼(1230)에 임시로 저장된 데이터는 호스트(1100)로부터 제공되는 플러시 커맨드 없이도 불휘발성 메모리들(1210)로 제공될 수 있다. 이러한 실시 예는 뒤에서 더 상세히 설명될 것이다.
도 1에서, 스토리지 장치(1200)가 버퍼(1230)를 포함하는 것으로 도시되었다. 그러나, 본 발명은 도 1의 구성에 의해 한정되지 않는다. 몇몇 실시 예에서, 버퍼(1230)는 스토리지 장치(1200)와 별개로 제공될 수 있다. 다른 실시 예들에서, 스토리지 시스템(1000)을 채용한 전자 장치/시스템에 포함되는 다른 메모리가 버퍼(1230)로서 이용될 수 있다. 또 다른 실시 예들에서, 버퍼(1230)는 메모리 컨트롤러(1250) 내부에 포함될 수 있다.
메모리 컨트롤러(1250)는 스토리지 장치(1200)의 전반적인 동작들을 제어할 수 있다. 메모리 컨트롤러(1250)는 불휘발성 메모리들(1210) 및 버퍼(1230)를 제어할 수 있다. 메모리 컨트롤러(1250)의 제어에 따라, 호스트(1100)로부터 제공된 데이터(DAT) 또는 버퍼(1230)에 임시로 저장된 데이터가 불휘발성 메모리들(1210)에 저장되거나, 불휘발성 메모리들(1210)에 저장된 데이터가 호스트(1100)로 제공될 수 있다.
예로서, 호스트(1100)와 스토리지 장치(1200)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(Peripheral Component Interconnect Express), NVMe(Nonvolatile Memory Express), M-PCIe(Mobile PCIe), ATA(Advanced Technology Attachment), PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), IDE(Integrated Drive Electronics), UFS(Universal Flash Storage), Firewire 등과 같은 다양한 인터페이스 규약(Interface Protocol)들 중 하나 이상에 따라 서로 통신할 수 있다.
본 발명의 실시 예에서, 호스트(1100)와 스토리지 장치(1200) 사이의 통신이 기준 시간 동안 발생하지 않는 경우, 메모리 컨트롤러(1250)의 제어에 따라 버퍼(1230)에 임시로 저장된 데이터가 불휘발성 메모리들(1210)에 저장될 수 있다. 위에서 설명된 것과 같이, 이러한 "플러시 동작"은 호스트(1100)로부터 제공되는 플러시 커맨드 없이 수행될 수 있다. 본 발명의 실시 예는 뒤에서 더 상세히 설명될 것이다.
도 2는 도 1의 스토리지 시스템에서 수행되는 예시적인 동작들을 설명하는 흐름도이다. 도 2에 나타낸 예시적인 동작들은 호스트(1100)로부터 제공되는 데이터를 하나 이상의 불휘발성 메모리들(1210)에 바로 저장하는 대신, 버퍼(1230)에 임시로 버퍼링한 후 불휘발성 메모리들(1210)에 저장하는 것과 관련될 수 있다. 도 2에 나타낸 예시적인 동작들은 버퍼링 단계 및 플러싱 단계를 포함할 수 있다.
S10 동작에서, 호스트(1100)는 메모리 컨트롤러(1250)로 쓰기 커맨드(CMDw)를 제공할 수 있다. 호스트(1100)는 메모리 컨트롤러(1250)로 쓰기 커맨드(CMDw)에 대응하는 쓰기 데이터(DATw)를 제공할 수 있다.
S11 동작에서, 메모리 컨트롤러(1250)는 쓰기 커맨드(CMDw)에 기초하여 쓰기 데이터(DATw)를 버퍼(1230)로 제공할 수 있다. 버퍼(1230)는 메모리 컨트롤러(1250)의 제어에 따라 쓰기 데이터(DATw)를 임시로 버퍼링할 수 있다.
버퍼(1230)가 쓰기 데이터(DATw)를 저장한 경우, S12 동작에서, 메모리 컨트롤러(1250)는 호스트(1100)로 버퍼링 응답(RSPb)을 제공할 수 있다. 호스트(1100)는 버퍼링 응답(RSPb)에 기초하여 쓰기 데이터(DATw)의 저장이 완료되었음을 인지할 수 있다.
S10 내지 S12 동작들은 버퍼링 단계를 구성할 수 있다. 버퍼링 단계에서, 호스트(1100)로부터 제공된 쓰기 데이터(DATw)는 버퍼(1230)에 임시로 저장될 수 있고, 호스트(1100)는 버퍼링 응답(RSPb)에 기초하여 쓰기 요청을 완료할 수 있다.
이후, S13 동작에서, 호스트(1100)는 메모리 컨트롤러(1250)로 플러시 커맨드(CMDf)를 제공할 수 있다. 플러시 커맨드(CMDf)는 버퍼(1230)에 임시로 저장된 쓰기 데이터(DATw)를 불휘발성 메모리들(1210)로 플러시하기 위해 이용될 수 있다. 몇몇 실시 예에서, 버퍼(1230)는 휘발성 메모리를 포함할 수 있다. 따라서, 전원 공급에 관계없이 쓰기 데이터(DATw)를 보존하기 위해, 플러시 커맨드(CMDf)에 응답하여 쓰기 데이터(DATw)가 불휘발성 메모리들(1210)에 저장될 수 있다. 예로서, 호스트(1100)는 버퍼(1230)의 이용 가능(Available) 용량 및 성능을 고려하여 플러시 커맨드(CMDf)를 메모리 컨트롤러(1250)로 제공할 수 있다.
S15 동작에서, 메모리 컨트롤러(1250)는 플러시 커맨드(CMDf)에 기초하여 버퍼(1230) 및 불휘발성 메모리들(1210)을 제어할 수 있다. S16 동작에서, 버퍼(1230)는 메모리 컨트롤러(1230)의 제어에 따라 그것에 저장된 쓰기 데이터(DATw)를 불휘발성 메모리들(1210)로 플러시할 수 있고, 불휘발성 메모리들(1210)은 메모리 컨트롤러(1230)의 제어에 따라 버퍼(1230)로부터 플러시된 쓰기 데이터(DATw)를 저장할 수 있다.
불휘발성 메모리들(1210)이 쓰기 데이터(DATw)를 저장한 경우, S17 동작에서, 메모리 컨트롤러(1250)는 호스트(1100)로 플러시 응답(RSPf)을 제공할 수 있다. 호스트(1100)는 플러시 응답(RSPf)에 기초하여 쓰기 데이터(DATw)가 불휘발성 메모리들(1210)에 저장되었음을 인지할 수 있다.
S13 내지 S17 동작들은 플러싱 단계를 구성할 수 있다. 플러싱 단계에서, 쓰기 데이터(DATw)는 최종적으로 불휘발성 메모리들(1210)에 저장될 수 있고, 플러시 응답(RSPf)에 기초하여 플러시 동작이 완료될 수 있다.
도 2를 참조하여 설명된 것과 같이, 메모리 컨트롤러(1250)는 플러시 동작을 수반하는 쓰기 동작을 제어할 수 있다. 호스트(1100)의 관점에서, 불휘발성 메모리들(1210)에 쓰기 데이터(DATw)를 바로 저장하는 것보다 버퍼(1230)에 쓰기 데이터(DATw)를 저장하는 것이 더 높은 성능을 제공할 수 있다.
물론, 몇몇 경우, 메모리 컨트롤러(1250)는 호스트(1100)의 요청에 따라 버퍼(1230)에 버퍼링 없이 쓰기 데이터(DATw)를 불휘발성 메모리들(1210)에 바로 저장하는 쓰기 동작을 제어할 수 있다. 예로서, 쓰기 동작의 방식은 호스트(1100)의 정책에 기초하여 선택될 수 있다.
도 3은 호스트와 스토리지 장치 사이의 통신이 중단됨에 따라 버퍼에 저장된 데이터가 손실되는 경우를 설명하는 흐름도이다. 도 3에 나타낸 경우는 호스트(1100)로부터 제공되는 데이터를 버퍼(1230)에 임시로 버퍼링하는 것과 관련될 수 있다.
도 2를 참조하여 설명된 것과 유사하게, S20 내지 S22 동작들은 버퍼링 단계를 구성할 수 있다. S20 동작에서, 호스트(1100)는 메모리 컨트롤러(1250)로 쓰기 커맨드(CMDw) 및 그것에 대응하는 쓰기 데이터(DATw)를 제공할 수 있다. S21 동작에서, 버퍼(1230)는 메모리 컨트롤러(1250)의 제어에 따라 쓰기 데이터(DATw)를 임시로 저장할 수 있다. S22 동작에서, 메모리 컨트롤러(1250)는 쓰기 데이터(DATw)의 버퍼(1230)에의 저장에 응답하여 호스트(1100)로 버퍼링 응답(RSPb)을 제공할 수 있다. 호스트(1100)는 버퍼링 응답(RSPb)에 기초하여 쓰기 데이터(DATw)의 저장이 완료되었음을 인지할 수 있다.
이후, 플러시 동작이 수행되기 전에, S23 동작에서, 호스트(1100)와 메모리 컨트롤러(1250) 사이의 인터페이싱에 오류가 발생할 수 있다. 오류가 발생한 경우, 호스트(1100)와 메모리 컨트롤러(1250) 사이의 통신이 중단될 수 있다. 예로서, 인터페이싱 오류에 기인하여, 호스트(1100)로부터 출력된 데이터가 메모리 컨트롤러(1250)로 제공되지 않거나 메모리 컨트롤러(1250)로부터 출력된 응답이 호스트(1100)로 제공되지 않을 수 있다. 또는, 호스트(1100)로부터 출력된 커맨드가 메모리 컨트롤러(1250)로 제공되지 않을 수 있다.
인터페이싱 오류가 발생한 경우, 호스트(1100)와 메모리 컨트롤러(1250) 사이의 통신을 위해 채용된 인터페이스 규약에 따라 복구 스킴(Recovery Scheme)이 동작할 수 있다. 복구 스킴은 호스트(1100)와 메모리 컨트롤러(1250) 사이의 중단된 통신을 해소하기 위해 동작할 수 있다. 그러나, 몇몇 경우, 복구 스킴의 동작에도 불구하고, 오류가 완전히 복구되지 않고 통신이 발생하지 않을 수 있다.
몇몇 예에서, 호스트(1100)와 메모리 컨트롤러(1250) 사이의 통신이 기준 시간(Tref) 동안 발생하지 않는 경우, S24 동작에서, 호스트(1100)는 리셋 커맨드(CMDs)를 출력할 수 있다. 리셋 커맨드(CMDs)는 하나 이상의 불휘발성 메모리들(1210), 버퍼(1230), 및 메모리 컨트롤러(1250)를 포함하는 도 1의 스토리지 장치(1200)의 동작을 리셋하기 위해 이용될 수 있다.
S25 동작에서, 리셋 커맨드(CMDs)에 응답하여, 불휘발성 메모리들(1210), 버퍼(1230), 및 메모리 컨트롤러(1250) 중 적어도 하나의 동작이 리셋될 수 있다. 스토리지 장치(1200)의 동작이 리셋되는 경우, 마치 전원이 꺼졌다가 다시 켜진 것처럼, 스토리지 장치(1200)에 포함되는 구성 요소들의 동작 상태가 초기화될 수 있다. 이에 따라, 통신 오류의 원인이 해소될 수 있고 호스트(1100)와 메모리 컨트롤러(1250) 사이의 통신이 재개될 수 있다.
그러나, 위에서 설명된 것과 같이, 몇몇 실시 예에서 버퍼(1230)는 휘발성 메모리를 포함할 수 있다. 이 때문에, 플러시 동작이 수행되기 전에 버퍼(1230)의 동작이 리셋되는 경우, 버퍼(1230)에 임시로 저장된 쓰기 데이터(DATw)가 손실될 수 있다. 이러한 데이터 손실은 스토리지 장치(1200)의 신뢰성을 악화시킬 수 있다.
예로서, S26 동작에서, 호스트(1100)는 쓰기 데이터(DATw)를 읽기 위해 메모리 컨트롤러(1250)로 읽기 커맨드(CMDr)를 제공할 수 있다. 그러나, 버퍼(1230)에 임시로 저장된 쓰기 데이터(DATw)가 손실되었기 때문에, 아무런 데이터도 읽히지 않을 수 있다. 또는, S27 동작에서, 의도된 쓰기 데이터(DATw)와 다른 가비지(Garbage) 데이터(DATw' 또는 DATw'')가 버퍼(1230) 또는 불휘발성 메모리들(1210)로부터 읽힐 수 있다.
의도된 쓰기 데이터(DATw)가 읽히지 않는 경우, 호스트(1100)가 비정상적으로 동작할 수 있다. 최악의 경우, 호스트(1100)에 의한 무결성(Integrity) 검사에서 페일(Fail)이 발생하고 호스트(1100)의 동작이 완전히 멈출 수 있다(소위, "커널 패닉(Kernel Panic)"으로 불림). 따라서, 사용자가 피해를 입을 수 있다.
본 발명의 실시 예에서, 통신 중단에 의해 쓰기 데이터(DATw)가 손실되는 것을 방지하기 위해, 통신 오류가 예측되고 버퍼(1230)에 버퍼링된 쓰기 데이터(DATw)가 불휘발성 메모리들(1210)로 미리 플러시될 수 있다. 본 발명의 실시 예는 뒤에서 더 상세히 설명될 것이다.
도 4는 본 발명의 실시 예에 따라 도 1의 스토리지 장치의 버퍼에 저장된 데이터를 보존하기 위한 동작들을 설명하는 흐름도이다.
도 2를 참조하여 설명된 것과 유사하게, S100 내지 S110 동작들은 버퍼링 단계를 구성할 수 있다. S100 동작에서, 호스트(1100)는 메모리 컨트롤러(1250)로 쓰기 커맨드(CMDw) 및 그것에 대응하는 쓰기 데이터(DATw)를 제공할 수 있다. S105 동작에서, 버퍼(1230)는 메모리 컨트롤러(1250)의 제어에 따라 쓰기 데이터(DATw)를 임시로 저장할 수 있다. S110 동작에서, 메모리 컨트롤러(1250)는 쓰기 데이터(DATw)의 버퍼(1230)에의 저장에 응답하여 호스트(1100)로 버퍼링 응답(RSPb)을 제공할 수 있다. 호스트(1100)는 버퍼링 응답(RSPb)에 기초하여 쓰기 데이터(DATw)의 저장이 완료되었음을 인지할 수 있다.
이후, 플러시 동작이 수행되기 전에, S115 동작에서, 호스트(1100)와 메모리 컨트롤러(1250) 사이의 인터페이싱에 오류가 발생할 수 있다. 오류가 발생한 경우, 호스트(1100)와 메모리 컨트롤러(1250) 사이의 통신이 중단될 수 있다. 이에 따라, 메모리 컨트롤러(1250)는 호스트(1100)로부터 커맨드 또는 데이터를 수신하지 못할 수 있다. 또는, 메모리 컨트롤러(1250)는 호스트(1100)로 응답을 송신하지 못할 수 있다.
본 발명의 실시 예에서, 호스트(1100)와의 통신이 제 1 기준 시간(Tref1) 동안 발생하지 않는 경우, 메모리 컨트롤러(1250)는 버퍼(1230)에 임시로 저장된 쓰기 데이터(DATw)가 하나 이상의 불휘발성 메모리들(1210)로 플러시되도록 버퍼(1230) 및 불휘발성 메모리들(1210)을 제어할 수 있다. 즉, 호스트(1100)로부터 플러시 커맨드(CMDf, 도 2 참조)가 제공되지 않더라도, 메모리 컨트롤러(1250)의 제어에 따라 플러시 동작이 미리 수행될 수 있다.
호스트(1100)와의 통신이 제 1 기준 시간(Tref1) 동안 중단된 경우, 통신 오류가 발생했을 가능성이 높을 수 있다. 따라서, 본 발명의 실시 예에서, 메모리 컨트롤러(1250)는 오류가 발생한 것을 예측하고, 호스트(1100)로부터 리셋 커맨드(CMDs)가 제공되기 전에 쓰기 데이터(DATw)가 플러시되도록 만들 수 있다. 본 발명의 실시 예에 따르면, 쓰기 데이터(DATw)가 불휘발성 메모리들(1210)에 저장되기 때문에, 리셋 커맨드(CMDs)에 의해 쓰기 데이터(DATw)가 손실되는 것이 방지될 수 있다.
뒤에서 더 상세히 설명될 것과 같이, 일 실시 예에서, 도 1의 스토리지 장치(1200)는 타이머(Timer)를 포함할 수 있다. 타이머는 통신이 중단된 후 제 1 기준 시간(Tref1)이 경과하였는지 여부를 판별하기 위해 제공될 수 있다. S120 동작에서, 타이머는 제 1 기준 시간(Tref1)의 경과에 응답하여 만료 신호(EXP)를 생성할 수 있다. 만료 신호(EXP)는 통신이 중단된 후 제 1 기준 시간(Tref1)이 경과하였음을 나타낼 수 있다.
S125 동작에서, 만료 신호(EXP)에 기초하여, 버퍼(1230)에 임시로 저장된 쓰기 데이터(DATw)가 불휘발성 메모리들(1210)로 플러시될 수 있다. 따라서, 스토리지 장치(1200)의 동작이 리셋되기 전에, 쓰기 데이터(DATw)가 불휘발성 메모리들(1210)에 보존될 수 있다.
이후, 호스트(1100)와 메모리 컨트롤러(1250) 사이의 통신이 제 2 기준 시간(Tref2) 동안 발생하지 않는 경우, S130 동작에서, 호스트(1100)는 리셋 커맨드(CMDs)를 출력할 수 있다. S135 동작에서, 리셋 커맨드(CMDs)에 응답하여, 불휘발성 메모리들(1210), 버퍼(1230), 및 메모리 컨트롤러(1250) 중 적어도 하나의 동작이 리셋될 수 있다. 그러나, 도 3의 예시와 달리, 쓰기 데이터(DATw)는 손실되지 않을 수 있다.
따라서, 호스트(1100)가 쓰기 데이터(DATw)를 읽기 위해 S140 동작에서 메모리 컨트롤러(1250)로 읽기 커맨드(CMDr)를 제공한 경우, S145 동작에서 불휘발성 메모리들(1210)에 저장된 쓰기 데이터(DATw)가 정상적으로 읽힐 수 있다. 호스트(1100)는 의도된 쓰기 데이터(DATw)에 기초하여 정상적으로 동작할 수 있다. 이를 위해, 제 1 기준 시간(Tref1)은 제 2 기준 시간(Tref2)보다 짧게 설정될 수 있다. 제 1 기준 시간(Tref1)의 설정은 뒤에서 설명될 것이다.
본 발명의 실시 예에 따르면, 스토리지 장치(1200)는 제 1 기준 시간(Tref1)의 경과에 기초하여, 호스트(1100)와의 통신에 오류가 발생했는지 여부를 예측할 수 있다. 나아가, 스토리지 장치(1200)는 제 2 기준 시간(Tref2)의 경과 후 호스트(1100)에 의해 리셋되기 전에, 버퍼(1230)에 저장된 쓰기 데이터(DATw)를 불휘발성 메모리들(1210)에 보존할 수 있다. 따라서, 쓰기 데이터(DATw)의 손실이 방지될 수 있고, 스토리지 장치(1200)의 신뢰성이 향상될 수 있다.
도 5는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다. 스토리지 시스템(2000)은 호스트(1100) 및 스토리지 장치(2200)를 포함할 수 있다. 스토리지 장치(2200)는 하나 이상의 불휘발성 메모리들(1210), 버퍼(1230), 및 메모리 컨트롤러(2250)를 포함할 수 있다.
호스트(1100), 불휘발성 메모리들(1210), 및 버퍼(1230)의 구성들 및 동작들은 도 1을 참조하여 설명되었다. 스토리지 장치(2200) 및 메모리 컨트롤러(2250)는 도 1 내지 도 4를 참조하여 설명된 스토리지 장치(1200) 및 메모리 컨트롤러(1250)와 동일 또는 유사하게 구성되고 동작할 수 있다. 설명의 편의를 위해, 호스트(1100), 스토리지 장치(2200), 불휘발성 메모리들(1210), 버퍼(1230), 및 메모리 컨트롤러(2250)에 관한 중복되는 설명들은 이하 생략될 것이다.
일 실시 예에서, 메모리 컨트롤러(2250)는 타이머 회로(2251)를 포함할 수 있다. 타이머 회로(2251)는 호스트(1100)와 메모리 컨트롤러(2250) 사이의 통신이 기준 시간(예컨대, 도 4의 제 1 기준 시간(Tref1)) 동안 발생하지 않는 경우 만료 신호(EXP)를 생성할 수 있다. 만료 신호(EXP)는 통신이 중단된 후 제 1 기준 시간(Tref1)이 경과하였음을 나타낼 수 있다. 메모리 컨트롤러(2250)는 만료 신호(EXP)에 기초하여 불휘발성 메모리들(1210) 및 버퍼(1230)를 제어할 수 있다.
호스트(1100)와의 통신이 제 1 기준 시간(Tref1) 동안 중단된 경우, 통신 오류가 발생했을 가능성이 높을 수 있다. 본 발명의 실시 예에서, 도 4를 참조하여 설명된 것과 같이, 메모리 컨트롤러(2250)는 만료 신호(EXP)에 기초하여, 버퍼(1230)에 저장된 데이터가 불휘발성 메모리들(1210)로 플러시되도록, 불휘발성 메모리들(1210) 및 버퍼(1230)를 제어할 수 있다. 따라서, 데이터 손실이 방지될 수 있다.
타이머 회로(2251)는 하드웨어로 구현될 수 있다. 또는, 타이머 회로(2251)의 일부 동작들은 소프트웨어로 구현될 수 있다. 하드웨어 구현은 시간의 경과를 카운트(Count)하기 위해 다양한 아날로그 회로 및/또는 논리 회로를 포함할 수 있다. 소프트웨어 구현은 메모리 컨트롤러(2250)에 의해 실행되는 명령어 코드(Instruction Code)를 포함할 수 있다. 타이머의 기능을 구현하는 것은 통상의 기술자들에게 알려져 있으므로, 자세한 설명들은 이하 생략될 것이다.
도 5에서, 메모리 컨트롤러(2250)가 타이머 회로(2251)를 포함하는 것으로 도시되었다. 그러나, 본 발명은 도 5의 구성에 의해 한정되지 않는다. 몇몇 실시 예에서, 타이머 회로(2251)는 메모리 컨트롤러(2250)와 별개로 스토리지 장치(2200) 내부에 제공될 수 있다. 다른 실시 예들에서, 타이머 회로(2251)는 스토리지 장치(2200)와 별개로 제공될 수 있다.
도 6은 도 5의 스토리지 장치의 동작을 설명하는 흐름도이다. 이해를 돕기 위해, 도 5가 도 6과 함께 참조될 것이다.
도 6의 동작은 호스트(1100)와 스토리지 장치(2200) 사이의 통신과 함께 시작될 수 있다. 호스트(1100)와 스토리지 장치(2200) 사이의 인터페이싱에 오류가 발생하지 않은 경우, 호스트(1100)와 스토리지 장치(2200) 사이에서 커맨드(CMD), 데이터(DAT), 및 응답(RSP)이 정상적으로 교환될 수 있다.
S210 동작에서, 호스트(1100)와 스토리지 장치(2200) 사이에서 통신이 발생하는지 여부가 판별될 수 있다. S210 동작의 판별은 타이머 회로(2251) 또는 메모리 컨트롤러(2250)에 의해 수행될 수 있다.
호스트(1100)와 스토리지 장치(2200) 사이에서 통신이 발생하는 경우, S220 동작에서, 타이머 회로(2251)의 동작이 초기화될 수 있다. 예로서, 타이머 회로(2251)가 0의 값에서 시작하여 증가하는 값을 카운트하도록 구성되는 경우, 타이머 회로(2251)의 타이머는 S220 동작에서 0의 값을 갖도록 초기화될 수 있다. 또는, 타이머 회로(2251)가 제 1 기준 시간(Tref1)의 값에서 시작하여 0의 값까지 감소하는 값을 카운트하도록 구성되는 경우, 타이머 회로(2251)의 타이머는 S220 동작에서 제 1 기준 시간(Tref1)의 값을 갖도록 초기화될 수 있다.
본 발명의 실시 예에서, 제 1 기준 시간(Tref1) 동안 통신이 발생하지 않는 경우, 버퍼(1230)에 임시로 저장된 데이터를 보존하기 위해 플러시 동작이 미리 수행될 수 있다. 그러나, 통신이 정상적으로 수행되는 경우, 플러시 동작이 필요하지 않을 수 있다. 따라서, S220 동작에서, 시간의 카운팅이 초기화될 수 있다.
반면, 호스트(1100)와 스토리지 장치(2200) 사이에서 통신이 발생하지 않는 경우, 타이머 회로(2251)는 초기화 없이 동작할 수 있다. 이에 따라, S230 동작에서, 제 1 기준 시간(Tref1)이 만료되었는지 여부가 판별될 수 있다. S230 동작의 판별은 타이머 회로(2251) 또는 메모리 컨트롤러(2250)에 의해 수행될 수 있다. 제 1 기준 시간(Tref1)이 아직 만료되지 않은 경우, S210 동작에서 통신이 발생했는지 여부가 다시 판별될 수 있다.
그러나, 호스트(1100)와 스토리지 장치(2200) 사이에서 통신이 발생하지 않는 동안 제 1 기준 시간(Tref1)이 만료되거나 경과한 경우, 오류가 발생했을 가능성이 높을 수 있다. 이 경우, S240 동작에서, 타이머 회로(2251)가 만료 신호(EXP)를 생성할 수 있다. 나아가, 만료 신호(EXP)에 기초하여, 버퍼(1230)에 임시로 저장된 데이터가 하나 이상의 불휘발성 메모리들(1210)로 미리 플러시될 수 있다. 따라서, 데이터 손실이 방지될 수 있다.
도 7은 도 5의 스토리지 장치의 동작을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 5가 도 7과 함께 참조될 것이다.
타이머 회로(2251)는 호스트(1100)와 스토리지 장치(2200) 사이에서 커맨드(CMD), 데이터(DAT), 및 응답(RSP)이 교환되는지 여부에 기초하여 동작할 수 있다. 호스트(1100)와 스토리지 장치(2200) 사이에서 통신이 발생하는 경우, 타이머 회로(2251)의 동작이 초기화될 수 있다(동작 ①). 반면, 호스트(1100)와 스토리지 장치(2200) 사이의 통신이 기준 시간(예컨대, 도 4의 제 1 기준 시간(Tref1)) 동안 발생하지 않는 경우, 타이머 회로(2251)는 만료 신호(EXP)를 생성할 수 있다(동작 ②).
만료 신호(EXP)가 생성된 경우, 버퍼(1230)에 임시로 저장된 데이터는 하나 이상의 불휘발성 메모리들(1210)로 플러시될 수 있다(동작 ③). 따라서, 호스트(1100)로부터 출력된 리셋 커맨드(CMDs, 도 4 참조)에 의해 스토리지 장치(2200)의 동작이 리셋되더라도, 데이터 손실이 방지될 수 있다.
도 8은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다. 스토리지 시스템(3000)은 호스트(1100) 및 스토리지 장치(3200)를 포함할 수 있다. 스토리지 장치(3200)는 하나 이상의 불휘발성 메모리들(1210), 버퍼(1230), 및 메모리 컨트롤러(3250)를 포함할 수 있다.
호스트(1100), 불휘발성 메모리들(1210), 및 버퍼(1230)의 구성들 및 동작들은 도 1을 참조하여 설명되었다. 스토리지 장치(3200) 및 메모리 컨트롤러(3250)는 도 1 내지 도 4를 참조하여 설명된 스토리지 장치(1200) 및 메모리 컨트롤러(1250)와 동일 또는 유사하게 구성되고 동작할 수 있다. 타이머 회로(3251)는 도 5를 참조하여 설명된 타이머 회로(2251)와 동일 또는 유사하게 구성되고 동작할 수 있다. 설명의 편의를 위해, 호스트(1100), 스토리지 장치(3200), 불휘발성 메모리들(1210), 버퍼(1230), 메모리 컨트롤러(3250), 및 타이머 회로(3251)에 관한 중복되는 설명들은 이하 생략될 것이다.
일 실시 예에서, 메모리 컨트롤러(3250)는 호스트 인터페이스 관리기(3253), 메모리 인터페이스 관리기(3255), 버퍼 관리기(3257), 및 프로세서(3259)를 포함할 수 있다. 타이머 회로(3251)는 도 8에 도시된 것과 같이 메모리 컨트롤러(3250)에 포함되거나, 도 8에 도시된 것과 달리 메모리 컨트롤러(3250)와 별개로 제공될 수 있다.
호스트 인터페이스 관리기(3253)는 호스트(1100)와의 인터페이싱을 처리할 수 있다. 예로서, 호스트 인터페이스 관리기(3253)는 호스트(1100)와 통신하기 위해 인터페이스 회로를 포함할 수 있다. 예로서, 호스트 인터페이스 관리기(3253)는 호스트(1100)로부터 제공된 커맨드(CMD)를 파싱(Parsing)하기 위해 커맨드 파서를 포함할 수 있다.
메모리 인터페이스 관리기(3255)는 불휘발성 메모리들(1210)과의 인터페이싱을 처리할 수 있다. 예로서, 메모리 인터페이스 관리기(3255)는 데이터 스트림들을 관리하기 위해 스트림 버퍼를 포함할 수 있다. 예로서, 호스트 인터페이스 관리기(3253)와 메모리 인터페이스 관리기(3255) 사이에서 데이터를 적절히 처리하기 위해 플래시 변환 계층(Flash Translation Layer)이 제공될 수 있다.
버퍼 관리기(3257)는 버퍼(1230)의 동작을 관리할 수 있다. 예로서, 버퍼 관리기(3257)는 호스트(1100)로부터 제공된 데이터(DAT)가 버퍼(1230)에 임시로 저장되도록 버퍼(1230)를 제어할 수 있다. 버퍼 관리기(3257)는 버퍼(1230)에 임시로 저장된 데이터를 불휘발성 메모리들(1210)로 플러시할 수 있다.
프로세서(3259)는 메모리 컨트롤러(3250)의 전반적인 동작들을 처리하기 위해 다양한 산술 연산 및/또는 논리 연산을 수행할 수 있다. 프로세서(3259)는 호스트 인터페이스 관리기(3253), 메모리 인터페이스 관리기(3255), 및 버퍼 관리기(3257) 중 적어도 하나를 동작시키기 위한 연산들을 수행할 수 있다. 몇몇 실시 예에서, 프로세서(3259)는 타이머(3251)의 동작을 제어하기 위한 연산들을 수행할 수 있다.
프로세서(3259)는 산술 연산 및/또는 논리 연산을 수행하기 위해 프로세서 코어를 포함할 수 있다. 프로세서(3259)는 하나의 프로세서 코어를 포함하거나(즉, 싱글 코어), 둘 이상의 프로세서 코어들을 포함할 수 있다(즉, 멀티 코어). 프로세서 코어들의 개수는 스토리지 장치(3200)의 용도, 성능, 및 크기를 고려하여 다양하게 변경 또는 수정될 수 있다.
메모리 컨트롤러(3250)에 포함되는 구성 요소들은 서로 연결되어 서로 통신할 수 있다. 메모리 컨트롤러(3250)에 포함되는 구성 요소들의 통신에 따라, 본 발명의 실시 예들이 다양하게 구현될 수 있다. 이하, 본 발명의 실시 예들이 더 설명될 것이다.
도 9는 도 8의 스토리지 장치에서 타이머 회로를 관리하는 과정을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 8이 도 9와 함께 참조될 것이다.
호스트(1100)와 스토리지 장치(3200) 사이에서 통신이 정상적으로 수행되는 경우, 호스트 인터페이스 관리기(3253)는 호스트(1100)와 커맨드(CMD), 데이터(DAT), 및 응답(RSP) 중 적어도 하나를 교환할 수 있다. 반면, 호스트(1100)와 스토리지 장치(3200) 사이에서 통신이 발생하지 않는 경우, 호스트 인터페이스 관리기(3253)는 호스트(1100)와 커맨드(CMD), 데이터(DAT), 및 응답(RSP)을 교환하지 않을 수 있다.
일 실시 예에서, 호스트 인터페이스 관리기(3253)와 호스트(1100) 사이에서 통신이 발생하는 경우, 호스트 인터페이스 관리기(3253)는 통신의 발생을 타이머 회로(3251)로 알릴 수 있다(경로 ⓐ). 도 6의 S220 동작 및 도 7의 동작 ①을 참조하여 설명된 것과 같이, 타이머 회로(3251)의 동작은 통신의 발생에 응답하여 초기화될 수 있다. 즉, 이 실시 예에서, 타이머 회로(3251)는 스스로 초기화를 관리할 수 있다.
다른 실시 예에서, 호스트 인터페이스 관리기(3253)와 호스트(1100) 사이에서 통신이 발생하는 경우, 호스트 인터페이스 관리기(3253)는 통신의 발생을 프로세서(3259)로 알릴 수 있다(경로 ⓑ). 프로세서(3259)는 통신의 발생에 응답하여 타이머 회로(3251)의 동작을 초기화할 수 있다(경로 ⓑ). 즉, 이 실시 예에서, 타이머 회로(3251)의 초기화를 관리하기 위해 프로세서(3259)가 다양한 명령어 코드를 실행하고 다양한 연산을 수행할 수 있다.
한편, 호스트 인터페이스 관리기(3253)와 호스트(1100) 사이에서 통신이 발생하지 않는 경우, 호스트 인터페이스 관리기(3253)는 타이머 회로(3251) 및/또는 프로세서(3259)로 통신의 발생을 알리지 않을 수 있다. 이 경우, 타이머 회로(3251)는 초기화 없이 동작할 수 있다. 기준 시간(예컨대, 도 4의 제 1 기준 시간(Tref1))이 만료되거나 경과한 경우, 만료 신호(EXP, 도 7 참조)가 생성될 수 있다.
도 10은 도 8의 스토리지 장치에서 기준 시간의 경과에 기초하여 플러시 동작을 수행하는 과정을 설명하기 위한 개념도들이다. 이해를 돕기 위해, 도 8이 도 10과 함께 참조될 것이다.
위에서 설명된 것과 같이, 몇몇 실시 예에서, 기준 시간(예컨대, 도 4의 제 1 기준 시간(Tref1))이 만료되거나 경과한 경우, 타이머 회로(3251)가 만료 신호(EXP)를 생성할 수 있다. 만료 신호(EXP)는 통신이 중단된 후 제 1 기준 시간(Tref1)이 경과하였음을 나타낼 수 있다. 따라서, 만료 신호(EXP)에 기초하여, 버퍼(1230)에 임시로 저장된 데이터가 하나 이상의 불휘발성 메모리들(1210)로 플러시될 수 있다.
일 실시 예에서, 타이머 회로(3251)에 의해 생성된 만료 신호(EXP)는 호스트 인터페이스 관리기(3253)로 제공될 수 있다(경로 ⓒ). 호스트 인터페이스 관리기(3253)는 만료 신호(EXP)에 응답하여 버퍼 관리기(3257)로 플러시 신호(FL)를 제공할 수 있다(경로 ⓒ). 버퍼 관리기(3257)는 플러시 신호(FL)에 응답하여 버퍼(1230)에 임시로 저장된 데이터가 하나 이상의 불휘발성 메모리들(1210)로 플러시되도록 버퍼(1230)를 제어할 수 있다. 예로서, 호스트 인터페이스 관리기(3253)는 만료 신호(EXP)에 응답하여, 호스트(1100)로부터 플러시 커맨드(CMDf, 도 2 참조)를 수신한 것처럼 동작할 수 있다.
다른 실시 예에서, 타이머 회로(3251)에 의해 생성된 만료 신호(EXP)는 버퍼 관리기(3257)로 제공될 수 있다(경로 ⓓ). 버퍼 관리기(3257)는 만료 신호(EXP)에 응답하여 버퍼(1230)에 임시로 저장된 데이터가 불휘발성 메모리들(1210)로 플러시되도록 버퍼(1230)를 제어할 수 있다. 즉, 이 실시 예에서, 버퍼 관리기(3257)는 호스트 인터페이스 관리기(3253)의 관여 없이 직접 만료 신호(EXP)를 참조할 수 있다.
도 11은 도 8의 스토리지 장치에서 기준 시간의 경과에 기초하여 플러시 동작을 수행하는 과정을 설명하기 위한 개념도들이다. 이해를 돕기 위해, 도 8이 도 11과 함께 참조될 것이다.
위에서 설명된 것과 달리, 몇몇 실시 예에서, 타이머 회로(3251)는 만료 신호(EXP)를 생성하지 않을 수 있다. 대신, 프로세서(3259)가 타이머 회로(3251)의 동작을 모니터링하고(경로 ⓔ), 타이머 회로(3251)에서 기준 시간(예컨대, 도 4의 제 1 기준 시간(Tref1))이 경과하였는지 여부에 기초하여 만료 신호(EXP)를 생성할 수 있다. 이러한 실시 예들에서, 타이머 회로(3251)는 단순히 시간의 경과를 카운트할 수 있다.
일 실시 예에서, 프로세서(3259)에 의해 생성된 만료 신호(EXP)는 호스트 인터페이스 관리기(3253)로 제공될 수 있다(경로 ⓕ). 호스트 인터페이스 관리기(3253)는 만료 신호(EXP)에 응답하여 버퍼 관리기(3257)로 플러시 신호(FL)를 제공할 수 있다(경로 ⓕ). 버퍼 관리기(3257)는 플러시 신호(FL)에 응답하여 버퍼(1230)에 임시로 저장된 데이터가 하나 이상의 불휘발성 메모리들(1210)로 플러시되도록 버퍼(1230)를 제어할 수 있다.
다른 실시 예에서, 프로세서(3259)에 의해 생성된 만료 신호(EXP)는 버퍼 관리기(3257)로 제공될 수 있다(경로 ⓖ). 버퍼 관리기(3257)는 만료 신호(EXP)에 응답하여 버퍼(1230)에 임시로 저장된 데이터가 불휘발성 메모리들(1210)로 플러시되도록 버퍼(1230)를 제어할 수 있다.
이상에서 본 발명의 다양한 실시 예들이 설명되었다. 그러나, 위 실시 예들은 본 발명의 이해를 돕기 위해 제공된 것이고, 본 발명은 위 실시 예들에 의해 한정되지 않는다. 본 발명의 실시 예는 스토리지 장치(3200)의 동작이 리셋되기 전에 기준 시간의 만료에 따라 버퍼(1230)에 임시로 저장된 데이터를 불휘발성 메모리들(1210)로 플러시하기 위해 다양하게 변경 또는 수정될 수 있다.
도 12는 도 8의 스토리지 장치에서 맵핑 데이터를 저장하는 과정을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 8이 도 12와 함께 참조될 것이다.
몇몇 실시 예에서, 버퍼 관리기(3257)는 호스트 인터페이스 관리기(3253)로부터 플러시 신호(FL)를 제공받을 수 있다. 몇몇 다른 실시 예에서, 버퍼 관리기(3257)는 타이머 회로(3251) 및/또는 프로세서(3259)로부터 만료 신호(EXP)를 제공받을 수 있다. 버퍼 관리기(3257)는 플러시 신호(FL) 및/또는 만료 신호(EXP)에 응답하여 메모리 인터페이스 관리기(3255)를 통해 버퍼(1230)에 임시로 저장된 쓰기 데이터(DATw)를 하나 이상의 불휘발성 메모리들(1210)로 플러시할 수 있다.
쓰기 데이터(DATw)가 불휘발성 메모리들(1210)로 플러시되는 경우, 메모리 컨트롤러(3250)의 제어에 따라, 맵핑 데이터(MAP)가 불휘발성 메모리들(1210)에 저장될 수 있다. 맵핑 데이터(MAP)는 불휘발성 메모리들(1210)에 쓰기 데이터(DATw)를 저장한 메모리 위치와 쓰기 데이터(DATw) 사이의 대응에 관한 데이터를 포함할 수 있다. 예로서, 맵핑 데이터(MAP)는 쓰기 데이터(DATw)를 저장한 메모리 위치의 논리 어드레스와 그것에 대응하는 쓰기 데이터(DATw) 사이의 맵핑 관계를 나타내는 맵핑 테이블로서 저장될 수 있다.
예로서, 맵핑 데이터(MAP)는 불휘발성 메모리들(1210)에 이미 저장된 다른 데이터의 메모리 위치들에 관련된 기존 맵핑 데이터를 갱신함으로써 생성될 수 있다. 또는, 맵핑 데이터(MAP)는 기존 맵핑 데이터와 별개로 생성될 수 있다.
맵핑 데이터(MAP)는 호스트(1100)가 쓰기 데이터(DATw)로의 접근을 요청할 경우 메모리 컨트롤러(3250)에 의해 참조될 수 있다. 예로서, 리셋 커맨드(CMDs, 도 4 참조)에 응답하여 스토리지 장치(3200)의 동작이 리셋된 후, 맵핑 데이터(MAP)는 버퍼(1230)로 로드될 수 있다. 호스트(1100)가 쓰기 데이터(DATw)로의 접근을 요청할 경우, 메모리 컨트롤러(3250)는 로드된 맵핑 데이터(MAP)를 참조하여 쓰기 데이터(DATw)를 저장한 메모리 위치를 파악할 수 있다. 이에 따라, 메모리 컨트롤러(3250)는 쓰기 데이터(DATw)를 포함하는 데이터(DAT)를 호스트(1100)로 제공할 수 있다.
도 13은 도 1의 스토리지 장치에서 기준 시간의 값을 설정하는 과정을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1이 도 13과 함께 참조될 것이다.
위에서 설명된 것과 같이, 버퍼(1230)에 임시로 저장된 데이터를 하나 이상의 불휘발성 메모리들(1210)로 플러시하기 위해 제 1 기준 시간(Tref1)이 참조될 수 있다. 예로서, 제 1 기준 시간(Tref1)의 값은 불휘발성 메모리들(1210)에 저장될 수 있다. 일 실시 예에서, 메모리 컨트롤러(1250)는 불휘발성 메모리들(1210)에 저장된 제 1 기준 시간(Tref1)의 값을 참조할 수 있다. 다른 실시 예에서, 불휘발성 메모리들(1210)에 저장된 제 1 기준 시간(Tref1)의 값이 버퍼(1230)로 로드될 수 있고, 메모리 컨트롤러(1250)는 버퍼(1230)로 로드된 제 1 기준 시간(Tref1)의 값을 참조할 수 있다.
제 1 기준 시간(Tref1)은 제 2 기준 시간(Tref2)보다 짧게 설정될 수 있다(도 4 참조). 이는 리셋 커맨드(CMDs, 도 4 참조)에 의해 스토리지 장치(1200)의 동작이 리셋되기 전에 버퍼(1230)에 임시로 저장된 데이터가 불휘발성 메모리들(1210)로 플러시되어야 하기 때문이다.
따라서, 제 1 기준 시간(Tref1)의 값은 스토리지 장치(1200)의 동작이 리셋되기 전에 수행될 필요가 있는 동작에 소요되는 시간을 고려하여 결정될 수 있다. 예로서, 제 1 기준 시간(Tref1)은 버퍼(1230)에 임시로 저장된 데이터를 불휘발성 메모리들(1210)로 플러시하는 데에 소요되는 시간의 값, 및 메모리 컨트롤러(1250)에 의해 처리되지 않은 커맨드(CMD)의 실행을 완료하는 데에 소요되는 시간의 값을 제 2 기준 시간(Tref2)의 값에서 감산함으로써 얻어지는 값 이하의 값을 가질 수 있다. 이 예에서, 제 2 기준 시간(Tref2)의 값은 호스트(1100)의 관리 정책에 기초하여 결정될 수 있다. 나아가, 스토리지 장치(1200)는 그것에 포함되는 구성 요소들의 리소스 사용량(Resource Usage) 및 성능에 관한 정보를 인지할 수 있고, 인지된 정보에 기초하여 위 시간 값들을 산출할 수 있다.
다만, 위 예는 본 발명의 이해를 돕기 위해 제공된 것이고, 본 발명은 위 예에 의해 한정되지 않는다. 제 1 기준 시간(Tref1)의 값은 스토리지 장치(1200)의 동작이 리셋되기 전에 플러시 동작을 완료하기에 적절하도록 다양하게 변경 또는 수정될 수 있다.
제 1 기준 시간(Tref1)의 값은 다양한 방식으로 설정될 수 있다. 일 실시 예에서, 스토리지 장치(1200)가 생산될 때, 불휘발성 메모리들(1210)은 제 1 기준 시간(Tref1)의 적절한 값을 미리 저장할 수 있다. 다른 실시 예에서, 스토리지 장치(1200)가 부팅(Booting)될 때 및/또는 스토리지 장치(1200)의 동작이 초기화될 때, 제 1 기준 시간(Tref1)이 설정될 수 있다. 또는, 스토리지 장치(1200)와 호스트(1100) 사이의 인터페이싱을 위한 링크 스타트업(Link Startup) 동작이 수행될 때, 제 1 기준 시간(Tref1)이 설정될 수 있다. 또 다른 실시 예에서, 스토리지 장치(1200)의 동작 중에 제 1 기준 시간(Tref1)이 설정될 수 있다.
몇몇 실시 예에서, 호스트(1100)가 제 1 기준 시간(Tref1)의 적절한 값을 제공할 수 있다. 몇몇 다른 실시 예에서, 호스트(1100)는 제 2 기준 시간(Tref2)의 값을 메모리 컨트롤러(1250)로 제공할 수 있고, 메모리 컨트롤러(1250)는 제 2 기준 시간(Tref2)의 값에 기초하여 제 1 기준 시간(Tref1)의 적절한 값을 산출할 수 있다. 호스트(1100)와 메모리 컨트롤러(1250) 사이에서 제 1 기준 시간(Tref1)의 값 및/또는 제 2 기준 시간(Tref2)의 값을 전송하기 위해, 추가의 통신 규약이 정의될 수 있다.
제 1 기준 시간(Tref1)의 값은 고정될 수 있다. 또는, 스토리지 장치(1200)의 동작 환경 또는 성능에 기초하여 제 1 기준 시간(Tref1)의 값이 달라질 수 있다(Variable). 본 발명의 실시 예는 다양하게 변경 또는 수정될 수 있다.
도 14는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 전자 시스템의 구성 및 그것의 인터페이스들을 나타낸 블록도이다. 전자 시스템(4000)은 MIPI(Mobile Industry Processor Interface) 연합(Alliance)에 의해 제안된 인터페이스를 이용하거나 지원할 수 있는 데이터 처리 장치로 구현될 수 있다. 예로서, 전자 시스템(4000)은 이동 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 태블릿, 또는 웨어러블 장치 등과 같은 전자 장치들 중 하나일 수 있다.
전자 시스템(4000)은 어플리케이션 프로세서(4100), 디스플레이(4220), 및 이미지 센서(4230)를 포함할 수 있다. 어플리케이션 프로세서(4100)는 DigRF 마스터(4110), DSI(Display Serial Interface) 호스트(4120), CSI(Camera Serial Interface) 호스트(4130), 및 물리 계층(4140)을 포함할 수 있다.
DSI 호스트(4120)는 DSI에 따라 디스플레이(4220)의 DSI 장치(4225)와 통신할 수 있다. 예로서, DSI 호스트(4120)에는 광 시리얼라이저(SER)가 구현될 수 있다. 예로서, DSI 장치(4225)에는 광 디시리얼라이저(DES)가 구현될 수 있다.
CSI 호스트(4130)는 CSI에 따라 이미지 센서(4230)의 CSI 장치(4235)와 통신할 수 있다. 예로서, CSI 호스트(4130)에는 광 디시리얼라이저(DES)가 구현될 수 있다. 예로서, CSI 장치(4235)에는 광 시리얼라이저(SER)가 구현될 수 있다.
전자 시스템(4000)은 어플리케이션 프로세서(4100)와 통신하는 RF(Radio Frequency) 칩(4240)을 더 포함할 수 있다. RF 칩(4240)은 물리 계층(4242), DigRF 슬레이브(4244), 및 안테나(4246)를 포함할 수 있다. 예로서, RF 칩(4240)의 물리 계층(4242)과 어플리케이션 프로세서(4100)의 물리 계층(4140)은 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다.
전자 시스템(4000)은 워킹 메모리(4250) 및 임베디드(Embedded)/카드 스토리지(4255)를 더 포함할 수 있다. 워킹 메모리(4250) 및 임베디드/카드 스토리지(4255)는 어플리케이션 프로세서(4100)로부터 제공받은 데이터를 저장할 수 있다. 나아가, 워킹 메모리(4250) 및 임베디드/카드 스토리지(4255)는 그것들에 저장된 데이터를 어플리케이션 프로세서(4100)로 제공할 수 있다.
워킹 메모리(4250)는 어플리케이션 프로세서(4100)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(4250)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리, 및/또는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
임베디드/카드 스토리지(4255)는 전원 공급에 관계없이 데이터를 저장할 수 있다. 임베디드/카드 스토리지(4255)는 하나 이상의 불휘발성 메모리들, 메모리 컨트롤러, 및 버퍼를 포함할 수 있다. 예로서, 임베디드/카드 스토리지(4255)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다. 예로서, 임베디드/카드 스토리지(4255)는 SD(Secure Digital) 카드, eMMC(Embedded Multimedia Card) 카드 등과 같은 장치들일 수 있다.
임베디드/카드 스토리지(4255)는 본 발명의 실시 예들 중 적어도 하나에 기초하여 구현될 수 있다. 임베디드/카드 스토리지(4255)는 호스트(예컨대, 어플리케이션 프로세서(4100))와의 통신이 기준 시간(예컨대, 도 4의 제 1 기준 시간(Tref1)) 동안 발생하지 않는 경우 버퍼에 저장된 데이터를 불휘발성 메모리들로 플러시할 수 있다. 이러한 플러시 동작은 호스트로부터 제공되는 플러시 커맨드 없이도 수행될 수 있다.
본 발명의 실시 예에 따르면, 임베디드/카드 스토리지(4255)는 호스트와의 통신에 오류가 발생했는지 여부를 예측할 수 있다. 임베디드/카드 스토리지(4255)는 호스트에 의해 리셋되기 전에 버퍼에 저장된 데이터를 보존할 수 있다. 따라서, 데이터 손실이 방지될 수 있고, 임베디드/카드 스토리지(4255)의 신뢰성이 향상될 수 있다. 나아가, 호스트의 비정상적인 동작 또는 동작 중단이 방지될 수 있다.
전자 시스템(4000)은 Wimax(Worldwide Interoperability for Microwave Access; 4260), WLAN(Wireless Local Area Network; 4262), UWB(Ultra Wideband; 4264) 등과 같은 통신 모듈을 통해 외부 시스템과 통신할 수 있다. 전자 시스템(4000)은 음성 정보를 처리하기 위한 스피커(4270) 및 마이크(4275)를 더 포함할 수 있다. 전자 시스템(4000)은 위치 정보를 처리하기 위한 GPS(Global Positioning System) 장치(4280)를 더 포함할 수 있다. 전자 시스템(4000)은 주변 장치들과의 연결을 관리하기 위한 브릿지(Bridge) 칩(4290)을 더 포함할 수 있다.
도 15는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 컴퓨팅 장치를 보여주는 블록도이다. 컴퓨팅 장치(5000)는 중앙 처리 유닛(5100), 워킹 메모리(5200), 스토리지 장치(5300), 통신 블록(5400), 유저 인터페이스(5500), 및 버스(5600)를 포함할 수 있다. 예로서, 컴퓨팅 장치(5000)는 개인용 컴퓨터(Personal Computer), 워크스테이션(Workstation), 노트북, 태블릿 등과 같은 전자 장치들 중 하나일 수 있다.
중앙 처리 유닛(5100)은 컴퓨팅 장치(5000)의 전반적인 동작들을 제어할 수 있다. 중앙 처리 유닛(5100)은 다양한 종류의 산술 연산 및/또는 논리 연산을 수행할 수 있다. 예로서, 중앙 처리 유닛(5100)은 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서를 포함할 수 있다.
워킹 메모리(5200)는 중앙 처리 유닛(5100)과 데이터를 교환할 수 있다. 워킹 메모리(5200)는 컴퓨팅 장치(5000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(5200)는 컴퓨팅 장치(5000)의 버퍼 또는 캐시로서 이용될 수 있다. 예로서, 워킹 메모리(5200)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리 시스템을 포함할 수 있다. 워킹 메모리(5200)는 하나 이상의 메모리 모듈 또는 하나 이상의 메모리 패키지를 포함할 수 있다.
스토리지 장치(5300)는 전원 공급에 관계없이 데이터를 저장할 수 있다. 스토리지 장치(5300)는 하나 이상의 불휘발성 메모리들, 메모리 컨트롤러, 및 버퍼를 포함할 수 있다. 예로서, 스토리지 장치(5300)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다. 예로서, 스토리지 장치(5300)는 SSD(Solid State Drive)와 같은 스토리지 매체를 포함할 수 있다.
스토리지 장치(5300)는 본 발명의 실시 예들 중 적어도 하나에 기초하여 구현될 수 있다. 스토리지 장치(5300)는 호스트(예컨대, 중앙 처리 유닛(5100))와의 통신이 기준 시간(예컨대, 도 4의 제 1 기준 시간(Tref1)) 동안 발생하지 않는 경우 버퍼에 저장된 데이터를 불휘발성 메모리들로 플러시할 수 있다. 이러한 플러시 동작은 호스트로부터 제공되는 플러시 커맨드 없이도 수행될 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(5300)는 호스트와의 통신에 오류가 발생했는지 여부를 예측할 수 있다. 스토리지 장치(5300)는 호스트에 의해 리셋되기 전에 버퍼에 저장된 데이터를 보존할 수 있다. 따라서, 데이터 손실이 방지될 수 있고, 스토리지 장치(5300)의 신뢰성이 향상될 수 있다. 나아가, 호스트의 비정상적인 동작 또는 동작 중단이 방지될 수 있다.
통신 블록(5400)은 중앙 처리 유닛(5100)의 제어에 따라 컴퓨팅 장치(5000)의 외부와 통신할 수 있다. 통신 블록(5400)은 유선 통신 규약 및/또는 무선 통신 규약에 따라 컴퓨팅 장치(5000)의 외부와 통신할 수 있다. 예로서, 통신 블록(5400)은 LTE(Long Term Evolution), WiMax, GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), WiFi(Wireless Fidelity), RFID(Radio Frequency Identification) 등의 다양한 무선 통신 규약 중 적어도 하나, 및/또는 TCP/IP(Transfer Control Protocol/Internet Protocol), USB, SCSI, ATA, PATA, SATA, SAS, IDE, Firewire 등의 다양한 유선 통신 규약 중 적어도 하나에 따라 컴퓨팅 장치(5000)의 외부와 통신할 수 있다.
유저 인터페이스(5500)는 중앙 처리 유닛(5100)의 제어에 따라 사용자와 컴퓨팅 장치(5000) 사이의 통신을 중계할 수 있다. 예로서, 유저 인터페이스(5500)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등의 입력 인터페이스를 포함할 수 있다. 나아가, 유저 인터페이스(5500)는 LCD(Liquid Crystal Display) 장치, LED(Light Emitting Diode) 표시 장치, OLED(Organic LED) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, 스피커, 모터 등의 출력 인터페이스를 포함할 수 있다.
버스(5600)는 컴퓨팅 장치(5000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 컴퓨팅 장치(5000)의 구성 요소들은 버스(5600)의 버스 포맷에 기초하여 서로 데이터를 교환할 수 있다. 예로서, 버스 포맷은 USB, SCSI, PCIe, NVMe, ATA, PATA, SATA, SAS, IDE, UFS 등과 같은 다양한 규약들 중 하나 이상을 포함할 수 있다.
본 발명의 실시 예에 따른 회로들, 칩들, 및 장치들은 다양한 종류의 반도체 패키지를 이용하여 실장될 수 있다. 예로서, 본 발명의 실시 예에 따른 회로들, 칩들, 및 장치들은 PoP(Package on Package), BGAs(Ball Grid Arrays), CSPs(Chip Scale Packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-line Package), MQFP(Metric Quad Flat Pack), TQFP(Thin Quad Flat Pack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등의 패키지를 이용하여 실장될 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 한정하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
1000 : 스토리지 시스템 1100 : 호스트
1200 : 스토리지 장치 1210 : 불휘발성 메모리들
1230 : 버퍼 1250 : 메모리 컨트롤러
2000 : 스토리지 시스템 2200 : 스토리지 장치
2250 : 메모리 컨트롤러 2251 : 타이머 회로
3000 : 스토리지 시스템 3200 : 스토리지 장치
3250 : 메모리 컨트롤러 3251 : 타이머 회로
3253 : 호스트 인터페이스 관리기 3255 : 메모리 인터페이스 관리기
3257 : 버퍼 관리기 3259 : 프로세서
4000 : 전자 시스템 4100 : 어플리케이션 프로세서
4110 : DigRF 마스터 4120 : DSI 호스트
4130 : CSI 호스트 4140 : 물리 계층
4220 : 디스플레이 4225 : DSI 장치
4230 : 이미지 센서 4235 : CSI 장치
4240 : RF 칩 4242 : 물리 계층
4244 : DigRF 슬레이브 4246 : 안테나
4250 : 워킹 메모리 4255 : 임베디드/카드 스토리지
4260 : Wimax 4262 : WLAN
4264 : UWB 4270 : 스피커
4275 : 마이크 4280 : GPS
4290 : 브릿지 칩
5000 : 컴퓨팅 장치 5100 : 중앙 처리 유닛
5200 : 워킹 메모리 5300 : 스토리지 장치
5400 : 통신 블록 5500 : 유저 인터페이스
5600 : 버스

Claims (20)

  1. 하나 이상의 불휘발성 메모리들;
    호스트로부터 제공된 데이터가 상기 불휘발성 메모리들에 저장되도록, 상기 불휘발성 메모리들을 제어하도록 구성되는 메모리 컨트롤러; 및
    상기 불휘발성 메모리들에 저장될 상기 데이터를 임시로 저장하도록 구성되는 버퍼를 포함하되,
    상기 메모리 컨트롤러는 상기 호스트와의 통신이 기준 시간 동안 발생하지 않는 경우 만료 신호를 생성하도록 구성되는 타이머 회로를 포함하고,
    상기 메모리 컨트롤러는 상기 만료 신호에 응답하여, 상기 버퍼에 임시로 저장된 상기 데이터를 상기 불휘발성 메모리들로 플러시하도록 더 구성되는 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 호스트와의 상기 통신은 상기 호스트로부터의 커맨드의 수신, 상기 호스트로부터의 상기 데이터의 수신, 및 상기 호스트로의 응답의 송신 중 적어도 하나를 포함하는 스토리지 장치.
  3. 제 1 항에 있어서,
    상기 메모리 컨트롤러는:
    상기 호스트와의 인터페이싱을 처리하도록 구성되는 호스트 인터페이스 관리기;
    상기 불휘발성 메모리들과의 인터페이싱을 처리하도록 구성되는 메모리 인터페이스 관리기;
    상기 버퍼의 동작을 관리하도록 구성되는 버퍼 관리기; 및
    상기 호스트 인터페이스 관리기, 상기 메모리 인터페이스 관리기, 및 상기 버퍼 관리기 중 적어도 하나를 동작시키기 위한 연산들을 수행하도록 구성되는 프로세서를 더 포함하는 스토리지 장치.
  4. 제 3 항에 있어서,
    상기 프로세서는 상기 호스트 인터페이스 관리기와 상기 호스트 사이의 통신의 발생에 응답하여 상기 타이머 회로의 동작을 초기화하도록 더 구성되는 스토리지 장치.
  5. 제 3 항에 있어서,
    상기 타이머 회로의 동작은 상기 호스트 인터페이스 관리기와 상기 호스트 사이의 통신의 발생에 응답하여 초기화되는 스토리지 장치.
  6. 제 3 항에 있어서,
    상기 버퍼 관리기는, 상기 만료 신호에 응답하여 상기 버퍼에 임시로 저장된 상기 데이터가 상기 불휘발성 메모리들로 플러시되도록, 상기 버퍼를 제어하도록 더 구성되는 스토리지 장치.
  7. 제 3 항에 있어서,
    상기 호스트 인터페이스 관리기는 상기 만료 신호에 응답하여 상기 버퍼 관리기로 플러시 신호를 송신하도록 더 구성되는 스토리지 장치.
  8. 제 7 항에 있어서,
    상기 버퍼 관리기는, 상기 플러시 신호에 응답하여 상기 버퍼에 임시로 저장된 상기 데이터가 상기 불휘발성 메모리들로 플러시되도록, 상기 버퍼를 제어하도록 더 구성되는 스토리지 장치.
  9. 제 1 항에 있어서,
    상기 버퍼에 임시로 저장된 상기 데이터를 상기 메모리 컨트롤러에 의해 상기 불휘발성 메모리들로 플러시하는 동작은 상기 호스트로부터 제공되는 커맨드 없이 수행되는 스토리지 장치.
  10. 제 1 항에 있어서,
    상기 만료 신호에 응답하여 상기 버퍼에 임시로 저장된 상기 데이터가 상기 불휘발성 메모리들로 플러시되는 경우, 상기 메모리 컨트롤러는, 상기 불휘발성 메모리들에 상기 플러시된 데이터를 저장한 메모리 위치와 상기 플러시된 데이터 사이의 대응에 관한 맵핑 데이터가 상기 불휘발성 메모리들에 저장되도록, 상기 불휘발성 메모리들을 제어하도록 더 구성되는 스토리지 장치.
  11. 호스트로부터 제공된 데이터를 저장하도록 구성되는 하나 이상의 불휘발성 메모리들;
    상기 불휘발성 메모리들에 저장될 상기 데이터를 임시로 저장하도록 구성되는 버퍼;
    상기 호스트와의 통신이 제 1 기준 시간 동안 발생하지 않는 경우 만료 신호를 생성하도록 구성되는 타이머 회로; 및
    상기 만료 신호에 기초하여 상기 불휘발성 메모리들 및 상기 버퍼를 제어하도록 구성되는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는, 상기 호스트와의 통신이 제 2 기준 시간 동안 발생하지 않는 경우 상기 불휘발성 메모리들, 상기 버퍼, 및 상기 메모리 컨트롤러 중 적어도 하나의 동작이 리셋되도록, 상기 호스트로부터 리셋 커맨드를 제공받도록 더 구성되고,
    상기 제 1 기준 시간은 상기 제 2 기준 시간보다 짧은 스토리지 장치.
  12. 제 11 항에 있어서,
    상기 메모리 컨트롤러는, 상기 버퍼에 임시로 저장된 상기 데이터가 상기 만료 신호에 응답하여 상기 불휘발성 메모리들로 플러시되도록, 상기 불휘발성 메모리들 및 상기 버퍼를 제어하도록 구성되는 스토리지 장치.
  13. 제 11 항에 있어서,
    상기 제 1 기준 시간의 값은 상기 호스트로부터 제공되는 스토리지 장치.
  14. 제 11 항에 있어서,
    상기 메모리 컨트롤러는 상기 호스트로부터 상기 제 2 기준 시간의 값을 제공받고, 상기 제 2 기준 시간의 값에 기초하여 상기 제 1 기준 시간의 값을 산출하도록 더 구성되는 스토리지 장치.
  15. 제 11 항에 있어서,
    상기 제 1 기준 시간은 상기 제 2 기준 시간의 값에서 상기 버퍼에 임시로 저장된 상기 데이터를 상기 불휘발성 메모리들에 저장하는 데에 소요되는 시간의 값 및 상기 메모리 컨트롤러에 의해 처리되지 않은 커맨드의 실행을 완료하는 데에 소요되는 시간의 값을 감산함으로써 얻어지는 값 이하의 값을 갖는 스토리지 장치.
  16. 하나 이상의 불휘발성 메모리들;
    호스트로부터 제공되어 상기 불휘발성 메모리들에 저장될 데이터를 임시로 저장하도록 구성되는 버퍼; 및
    상기 호스트와의 통신이 기준 시간 동안 발생하지 않는 경우 상기 버퍼에 임시로 저장된 상기 데이터가 상기 불휘발성 메모리들에 저장되도록, 상기 불휘발성 메모리들 및 상기 버퍼를 제어하도록 구성되는 메모리 컨트롤러를 포함하되,
    상기 버퍼에 임시로 저장된 상기 데이터를 상기 불휘발성 메모리들에 저장하는 동작은 상기 호스트로부터 제공되는 커맨드 없이 수행되는 스토리지 장치.
  17. 제 16 항에 있어서,
    상기 버퍼에 임시로 저장된 상기 데이터가 상기 불휘발성 메모리들에 저장되는 경우, 상기 메모리 컨트롤러는, 상기 불휘발성 메모리들에 상기 데이터를 저장한 메모리 위치와 상기 저장된 데이터 사이의 대응에 관한 맵핑 데이터가 상기 불휘발성 메모리들에 저장되도록, 상기 불휘발성 메모리들을 제어하도록 더 구성되는 스토리지 장치.
  18. 제 17 항에 있어서,
    상기 메모리 컨트롤러는, 상기 호스트와의 통신이 상기 기준 시간보다 긴 시간 동안 발생하지 않는 경우 상기 불휘발성 메모리들, 상기 버퍼, 및 상기 메모리 컨트롤러 중 적어도 하나의 동작이 리셋되도록, 상기 호스트로부터 리셋 커맨드를 제공받도록 더 구성되는 스토리지 장치.
  19. 제 18 항에 있어서,
    상기 리셋 커맨드에 응답하여 상기 불휘발성 메모리들, 상기 버퍼, 및 상기 메모리 컨트롤러 중 적어도 하나의 동작이 리셋된 후, 상기 메모리 컨트롤러는 상기 맵핑 데이터 및 상기 불휘발성 메모리들에 저장된 상기 데이터에 기초하여 상기 호스트와 통신하도록 더 구성되는 스토리지 장치.
  20. 제 16 항에 있어서,
    상기 불휘발성 메모리들 및 상기 메모리 컨트롤러는 임베디드 스토리지 또는 카드 스토리지로 구현되는 스토리지 장치.
KR1020150113391A 2015-08-11 2015-08-11 통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치 KR102396441B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150113391A KR102396441B1 (ko) 2015-08-11 2015-08-11 통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치
US15/168,234 US10599341B2 (en) 2015-08-11 2016-05-30 Storage device operating to prevent data loss when communicating is interrupted
DE102016214657.2A DE102016214657A1 (de) 2015-08-11 2016-08-08 Speichervorrichtung, die betrieben wird, um Datenverlust zu verhindern, wenn Kommunikation unterbrochen wird

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150113391A KR102396441B1 (ko) 2015-08-11 2015-08-11 통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치

Publications (2)

Publication Number Publication Date
KR20170019239A true KR20170019239A (ko) 2017-02-21
KR102396441B1 KR102396441B1 (ko) 2022-05-10

Family

ID=57908269

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150113391A KR102396441B1 (ko) 2015-08-11 2015-08-11 통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치

Country Status (3)

Country Link
US (1) US10599341B2 (ko)
KR (1) KR102396441B1 (ko)
DE (1) DE102016214657A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022014798A1 (ko) * 2020-07-15 2022-01-20 (주)헬로팩토리 고객 만족도 조사 수행 시스템

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561729B2 (en) * 2020-08-19 2023-01-24 Micron Technology, Inc. Write determination counter

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100211765A1 (en) * 2006-10-25 2010-08-19 Smart Modular Technologies, Inc. Clock and power fault detection for memory modules
KR20120033372A (ko) * 2010-09-29 2012-04-09 삼성전자주식회사 비휘발성 메모리 시스템
US20140237205A1 (en) * 2011-02-08 2014-08-21 Diablo Technologies Inc. System and method for providing a command buffer in a memory system
KR20140113370A (ko) * 2013-03-15 2014-09-24 시게이트 테크놀로지 엘엘씨 패스 스루 스토리지 디바이스들

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5895488A (en) 1997-02-24 1999-04-20 Eccs, Inc. Cache flushing methods and apparatus
US6065088A (en) 1998-08-31 2000-05-16 International Business Machines Corporation System and method for interrupt command queuing and ordering
JP4927339B2 (ja) 2005-02-23 2012-05-09 株式会社日立製作所 記憶制御装置及びその制御方法
US8370562B2 (en) 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
US20130086311A1 (en) 2007-12-10 2013-04-04 Ming Huang METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS
US8271737B2 (en) * 2009-05-27 2012-09-18 Spansion Llc Cache auto-flush in a solid state memory device
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8578100B1 (en) 2010-11-08 2013-11-05 Western Digital Technologies, Inc. Disk drive flushing write data in response to computed flush time
US9047178B2 (en) * 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US20130135816A1 (en) 2011-11-17 2013-05-30 Futurewei Technologies, Inc. Method and Apparatus for Scalable Low Latency Solid State Drive Interface
US9304901B2 (en) 2013-03-14 2016-04-05 Datadirect Networks Inc. System and method for handling I/O write requests
US20160011965A1 (en) * 2013-03-15 2016-01-14 Seagate Technology Llc Pass through storage devices
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
KR20150113391A (ko) 2014-03-28 2015-10-08 (주)이지정보기술 전기자동차 충전장치의 소비전력 절감 시스템
US10824553B2 (en) * 2015-04-24 2020-11-03 Toshiba Memory Corporation Memory device that controls timing of receiving write data from a host
US10275164B2 (en) * 2015-05-27 2019-04-30 Nutech Ventures Enforcing persistency for battery-backed mobile devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100211765A1 (en) * 2006-10-25 2010-08-19 Smart Modular Technologies, Inc. Clock and power fault detection for memory modules
KR20120033372A (ko) * 2010-09-29 2012-04-09 삼성전자주식회사 비휘발성 메모리 시스템
US20140237205A1 (en) * 2011-02-08 2014-08-21 Diablo Technologies Inc. System and method for providing a command buffer in a memory system
KR20140113370A (ko) * 2013-03-15 2014-09-24 시게이트 테크놀로지 엘엘씨 패스 스루 스토리지 디바이스들

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022014798A1 (ko) * 2020-07-15 2022-01-20 (주)헬로팩토리 고객 만족도 조사 수행 시스템
KR20220009088A (ko) * 2020-07-15 2022-01-24 (주) 헬로팩토리 고객 만족도 조사 수행 시스템

Also Published As

Publication number Publication date
DE102016214657A1 (de) 2017-02-16
US20170046083A1 (en) 2017-02-16
KR102396441B1 (ko) 2022-05-10
US10599341B2 (en) 2020-03-24

Similar Documents

Publication Publication Date Title
CN109213441B (zh) 能够管理工作而无需处理器干预的存储装置
CN110032332B (zh) 存储设备和包括存储设备的电子设备
US9274983B2 (en) Memory systems including nonvolatile buffering and methods of operating the same
US9164833B2 (en) Data storage device, operating method thereof and data processing system including the same
US10866737B2 (en) Apparatus, method and system to store information for a solid state drive
CN102646446B (zh) 硬件动态高速缓存电源管理
KR20200140385A (ko) 메모리 시스템 또는 서브-시스템에서의 프리페치 시그널링
US20210157514A1 (en) Apparatus and method for improving write throughput of memory system
KR20180092715A (ko) 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치
US20170038974A1 (en) Storage device changing condition parameter value based on aging level and method for managing the same
US11474747B2 (en) Data processing system and operating method thereof
KR20190033122A (ko) 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법
KR20150055413A (ko) 데이터 저장 장치
KR20160025292A (ko) 데이터 저장 장치, 그것을 포함하는 데이터 처리 시스템 및 그것의 동작 방법
US20150039948A1 (en) Data storage device and operating method thereof
WO2019090493A1 (zh) 内存块回收方法和装置
KR20150081635A (ko) 불휘발성 반도체 메모리를 포함하는 저장 장치 및 그것의 관리 방법
US20190095117A1 (en) Storage device
US10783033B2 (en) Device and method for accessing in-band memory using data protection
KR102396441B1 (ko) 통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치
US9971549B2 (en) Method of operating a memory device
KR102222445B1 (ko) 선택적으로 동작하는 복수의 디램 장치를 포함하는 메모리 시스템
KR20120021490A (ko) 양방향 통신 기법을 갖는 저장 장치 그리고 그것을 포함한 시스템
US20200242040A1 (en) Apparatus and Method of Optimizing Memory Transactions to Persistent Memory Using an Architectural Data Mover
US10019162B2 (en) Storage device managing nonvolatile memory differently depending on tendency of interruption of power supply

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