KR20180023311A - 데이터 저장 장치 - Google Patents

데이터 저장 장치 Download PDF

Info

Publication number
KR20180023311A
KR20180023311A KR1020160108419A KR20160108419A KR20180023311A KR 20180023311 A KR20180023311 A KR 20180023311A KR 1020160108419 A KR1020160108419 A KR 1020160108419A KR 20160108419 A KR20160108419 A KR 20160108419A KR 20180023311 A KR20180023311 A KR 20180023311A
Authority
KR
South Korea
Prior art keywords
buffer
data
memory controller
area
response
Prior art date
Application number
KR1020160108419A
Other languages
English (en)
Other versions
KR102558947B1 (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 KR1020160108419A priority Critical patent/KR102558947B1/ko
Priority to US15/372,564 priority patent/US10359943B2/en
Priority to TW105144175A priority patent/TWI725102B/zh
Priority to CN201710045983.4A priority patent/CN107783729B/zh
Publication of KR20180023311A publication Critical patent/KR20180023311A/ko
Application granted granted Critical
Publication of KR102558947B1 publication Critical patent/KR102558947B1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

데이터 저장 장치는 복수의 채널들에 연결된 비휘발성 메모리 장치들; 및 프로세서, 버퍼 및 상기 채널들에 각각 연결된 메모리 컨트롤러들을 포함하는 컨트롤러를 포함하되, 상기 프로세서는 상기 버퍼의 상태에 무관하게, 호스트 장치의 제1 액세스 요청에 응답하여 제1액세스 커맨드를 제1 메모리 컨트롤러로 전송하고, 상기 제1 메모리 컨트롤러는 상기 제1 액세스 커맨드에 응답하여 상기 버퍼의 상기 상태를 판단함으로써 제1 비휘발성 메모리 장치의 내부 동작을 제어한다.

Description

데이터 저장 장치{DATA STORAGE DEVICE}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 비휘발성 메모리 장치를 포함하는 데이터 저장 장치에 관한 것이다.
데이터 저장 장치는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 데이터 저장 장치는 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
본 발명의 실시 예는, 프로세서의 오버헤드를 감소시키고 향상된 처리 속도로 동작하는 데이터 저장 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 채널들에 연결된 비휘발성 메모리 장치들; 및 프로세서, 버퍼 및 상기 채널들에 각각 연결된 메모리 컨트롤러들을 포함하는 컨트롤러를 포함하되, 상기 프로세서는 상기 버퍼의 상태에 무관하게, 호스트 장치의 제1 액세스 요청에 응답하여 제1액세스 커맨드를 제1 메모리 컨트롤러로 전송하고, 상기 제1 메모리 컨트롤러는 상기 제1 액세스 커맨드에 응답하여 상기 버퍼의 상기 상태를 판단함으로써 제1 비휘발성 메모리 장치의 내부 동작을 제어할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 채널들에 연결된 비휘발성 메모리 장치들; 및 제1 영역을 포함하는 버퍼 및 상기 채널들에 각각 연결된 메모리 컨트롤러들을 포함하는 컨트롤러를 포함하되, 상기 메모리 컨트롤러들 중 제1 메모리 컨트롤러는 제1 리드 커맨드에 응답하여 상기 제1 영역의 상태를 판단함으로써 제1 비휘발성 메모리 장치의 리드 동작을 제어할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 향상된 처리 속도로 동작할 수 있다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치를 도시한 블록도,
도2는 도1의 비휘발성 메모리 장치를 예시적으로 도시한 블록도,
도3은 도1의 데이터 저장 장치가 호스트 장치의 라이트 요청을 처리하는 방법을 도시하는 도면,
도4 및 도5는 도1의 데이터 저장 장치가 호스트 장치의 리드 요청을 처리하는 방법들을 도시하는 도면,
도6은 본 발명의 실시 예에 따른 SSD를 도시하는 블록도,
도7은 본 발명의 실시 예에 따른 데이터 저장 장치가 적용된 데이터 처리 시스템을 도시하는 블록도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치(10)를 도시한 블록도이다.
데이터 저장 장치(10)는 호스트 장치의 액세스 요청들, 즉, 라이트 요청 및 리드 요청에 응답하여, 호스트 장치로부터 전송된 라이트 데이터를 저장하고, 저장된 데이터를 호스트 장치로 출력할 수 있다.
데이터 저장 장치(10)는 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
데이터 저장 장치(10)는 컨트롤러(100) 및 비휘발성 메모리 장치들(NVM11~NVM22)을 포함할 수 있다.
컨트롤러(100)는 호스트 장치로부터 전송된 라이트 요청에 응답하여 비휘발성 메모리 장치들(NVM11~NVM22)에 데이터를 저장하고, 호스트 장치로부터 전송된 리드 요청에 응답하여 비휘발성 메모리 장치들(NVM11~NVM22)에 저장된 데이터를 리드하여 호스트 장치로 출력할 수 있다.
컨트롤러(100)는 호스트 인터페이스(110), 프로세서(120), 버퍼(130), 메모리 컨트롤러들(MCT1, MCT2)을 포함할 수 있다. 도1은 2개의 채널들(CH1, CH2)에 각각 연결된 2개의 메모리 컨트롤러들(MCT1, MCT2)을 도시하지만, 메모리 컨트롤러들의 개수는 이에 제한되지 않는다. 메모리 컨트롤러들의 개수는 채널들의 개수에 따라 달라질 수 있다.
호스트 인터페이스(110)는 호스트 장치와 통신할 수 있다. 호스트 인터페이스(110)는 호스트 장치로부터 전송된 라이트 요청 및 리드 요청을 프로세서(120)로 전송할 수 있다. 또한, 호스트 인터페이스(110)는 호스트 장치로부터 전송된 라이트 데이터를 버퍼(130)로 전송할 수 있고, 비휘발성 메모리 장치들(NVM11~NVM22)로부터 리드되고 버퍼(130)에 저장된 리드 데이터를 호스트 장치로 전송할 수 있다.
프로세서(120)는 호스트 인터페이스(110)로부터 전송된 액세스 요청에 응답하여, 비휘발성 메모리 장치들(NVM11~NVM22) 중 액세스될 비휘발성 메모리 장치, 즉, 타겟 비휘발성 메모리 장치를 결정할 수 있다. 타겟 메모리 컨트롤러는 메모리 컨트롤러들(MCT1, MCT2) 중 타겟 비휘발성 메모리 장치와 연결된 어느 하나일 수 있다. 프로세서(120)는 호스트 인터페이스(110)로부터 전송된 액세스 요청에 응답하여, 액세스 커맨드, 예를 들어, 라이트 커맨드 및 리드 커맨드를 타겟 메모리 컨트롤러로 전송할 수 있다.
한편, 프로세서(120)는, 버퍼(130)의 상태에 무관하게, 액세스 커맨드를 타겟 메모리 컨트롤러로 전송할 수 있다. 후술될 바와 같이, 버퍼(130)의 상태는 타겟 메모리 컨트롤러에 의해 판단될 수 있다. 예를 들어, 호스트 장치로부터 라이트 요청을 수신했을 때 판단될 버퍼(130)의 상태는, 라이트 데이터가 버퍼(130)로 전송 완료되었는지 여부일 수 있다. 예를 들어, 리드 요청을 수신했을 때 판단될 버퍼(130)의 상태는, 버퍼(130)의 소정 영역이 사용가능한지 여부 및 버퍼(130)의 소정 영역에 저장된 데이터가 에러-프리인지 여부일 수 있다. 이러한 버퍼(130)의 상태는 버퍼 관리자(미도시)를 통해 판단될 수 있다. 타겟 메모리 컨트롤러는 버퍼(130)의 상태를 판단함으로써 타겟 비휘발성 메모리 장치로 내부 동작 커맨드를 전송할지 여부를 판단할 수 있다.
버퍼(130)는 호스트 장치와 비휘발성 메모리 장치들(NVM11~NVM22) 간에 전송되는 데이터를 임시 저장할 수 있다. 버퍼(130)는 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리 장치일 수 있지만, 본 발명의 실시 예는 이에 제한되지 않는다.
메모리 컨트롤러들(MCT1, MCT2)은 채널들(CH1, CH2)에 각각 연결될 수 있다. 메모리 컨트롤러들(MCT1, MCT2) 각각은 대응하는 채널에 연결된 비휘발성 메모리 장치들에 대한 액세스 커맨드들을 프로세서(120)로부터 수신하고, 수신된 액세스 커맨드들을 비휘발성 메모리 장치들에 각각 대응하는 커맨드 큐(미도시)에 저장할 수 있다. 메모리 컨트롤러들(MCT1, MCT2) 각각은 액세스 커맨드에 응답하여 버퍼(130)의 상태를 판단하고, 판단 결과에 따라 타겟 비휘발성 메모리 장치로 내부 동작 커맨드를 전송함으로써 타겟 비휘발성 메모리 장치의 내부 동작을 제어할 수 있다.
구체적으로, 프로세서(120)로부터 라이트 커맨드를 수신한 타겟 메모리 컨트롤러는, 라이트 데이터가 버퍼(130)로 전송 완료되었는지를 판단하고, 판단 결과에 따라 라이트 동작 커맨드를 통해 타겟 비휘발성 메모리 장치의 라이트 동작을 제어할 수 있다. 구체적으로, 타겟 메모리 컨트롤러는, 라이트 데이터가 버퍼(130)로 전송 완료된 것으로 판단될 때, 라이트 동작 커맨드를 타겟 비휘발성 메모리 장치로 전송할 수 있다. 타겟 메모리 컨트롤러는, 라이트 데이터가 버퍼(130)로 전송 완료되지 않은 것으로 판단될 때, 라이트 데이터가 버퍼(130)로 전송 완료되었는지를 계속 판단할 수 있다. 타겟 비휘발성 메모리 장치는 라이트 동작 커맨드에 응답하여 라이트 동작을 수행함으로써 라이트 데이터를 저장할 수 있다.
실시 예에 따라, 타겟 메모리 컨트롤러는, 라이트 데이터가 버퍼(130)로 모두 전송 완료되지는 않았더라도 소정 데이터 크기만큼 전송된 것으로 판단될 때, 타겟 비휘발성 메모리 장치로 라이트 동작 커맨드를 전송할 수 있다. 따라서 라이트 데이터의 전체 크기가 매우 클 경우, 모두 전송 완료될 때까지 기다리지 않고 라이트 동작이 개시될 수 있고, 따라서 동작 지연이 억제될 수 있다.
프로세서(120)로부터 리드 커맨드를 수신한 타겟 메모리 컨트롤러는, 버퍼(130)의 소정 영역이 사용가능한지를 판단하고, 판단 결과에 따라 리드 동작 커맨드, 즉, 센싱 동작 커맨드 및 전송 동작 커맨드를 통해 타겟 비휘발성 메모리 장치의 리드 동작, 즉, 센싱 동작 및 전송 동작을 제어할 수 있다. 버퍼(130)의 소정 영역은 호스트의 리드 요청에 대응하고, 리드 요청을 처리하기 위해 호스트 장치 또는 프로세서(120)에 의해 지정될 수 있다. 타겟 메모리 컨트롤러는, 버퍼(130)의 소정 영역이 사용가능한 것으로 판단될 때, 타겟 비휘발성 메모리 장치로 센싱 동작 커맨드 및 전송 동작 커맨드를 전송할 수 있다. 타겟 비휘발성 메모리 장치는 센싱 동작 커맨드 및 전송 동작 커맨드에 응답하여, 리드 요청된 타겟 데이터에 대한 센싱 동작 및 센싱된 데이터에 대한 전송 동작을 수행할 수 있다. 전송된 데이터는 버퍼(130)의 소정 영역에 저장되고, 호스트 장치로 출력될 수 있다.
한편, 버퍼(130)의 소정 영역이 아직 이전 리드 커맨드의 데이터를 위해서 할당되어 있는 경우, 버퍼(130)의 소정 영역은 사용불가능한 것으로 판단될 것이다. 프로세서(120)로부터 리드 커맨드를 수신한 타겟 메모리 컨트롤러는 버퍼(130)의 소정 영역이 사용불가능한 것으로 판단될 때 버퍼(130)의 소정 영역에 저장된 데이터가 에러-프리인지를 판단하고, 판단 결과에 따라 타겟 비휘발성 메모리 장치의 센싱 동작을 제어할 수 있다. 구체적으로, 타겟 메모리 컨트롤러는, 버퍼(130)의 소정 영역에 저장된 데이터가 에러-프리가 아닌 것으로 판단될 때, 에러-프리인지를 계속 판단할 수 있다. 타겟 메모리 컨트롤러는, 버퍼(130)의 소정 영역에 저장된 데이터가 에러-프리인 것으로 판단될 때, 타겟 비휘발성 메모리 장치로 센싱 동작 커맨드를 전송할 수 있다. 즉, 버퍼(130)의 소정 영역에 저장된 데이터가 에러-프리인 경우 해당 데이터는 호스트 장치로 곧 출력될 것이므로, 타겟 메모리 컨트롤러는 리드 커맨드에 대한 타겟 비휘발성 메모리 장치의 센싱 동작을 일단 착수시킬 수 있다. 타겟 비휘발성 메모리 장치는 센싱 동작 커맨드에 응답하여, 리드 요청된 타겟 데이터를 센싱하기 위해서 센싱 동작을 수행할 수 있다.
이어서, 타겟 메모리 컨트롤러는, 타겟 비휘발성 메모리 장치의 센싱 동작이 수행된 이후에 버퍼(130)의 소정 영역이 사용가능한지를 판단하고, 판단 결과에 따라 타겟 비휘발성 메모리 장치의 전송 동작을 제어할 수 있다. 구체적으로, 타겟 메모리 컨트롤러는, 버퍼(130)의 소정 영역이 사용불가능한 것으로 판단될 때, 즉, 소정 영역에 저장된 데이터가 호스트 장치로 아직 출력되지 않았을 때, 버퍼(130)의 소정 영역이 사용가능한지를 계속 판단할 수 있다. 타겟 메모리 컨트롤러는, 버퍼(130)의 소정 영역이 사용가능한 것으로 판단될 때, 즉, 소정 영역에 저장된 데이터가 호스트 장치로 출력된 뒤에, 타겟 비휘발성 메모리 장치로 전송 동작 커맨드를 전송할 수 있다.
실시 예에 따라, 타겟 메모리 컨트롤러는 버퍼(130)의 소정 영역, 즉, 제1 영역에 저장된 데이터가 에러-프리가 아닌 것으로 판단될 때 제1 영역 외에 버퍼(130)의 제2 영역이 사용가능한지 여부를 판단하고, 판단 결과에 따라 상술한 바와 같이 타겟 비휘발성 메모리 장치의 리드 동작을 제어할 수 있다. 즉, 타겟 메모리 컨트롤러는 버퍼(130)의 제2 영역이 사용가능한 것으로 판단될 때 타겟 비휘발성 메모리 장치로 센싱 동작 커맨드 및 전송 동작 커맨드를 순차적으로 전송할 수 있다. 또한, 타겟 메모리 컨트롤러는 버퍼(130)의 제2 영역이 사용불가능한 것으로 판단될 때 제2 영역에 저장된 데이터가 에러-프리인지 여부를 판단하고 제2영역에 저장된 데이터가 에러-프리인 것으로 판단될 때, 타겟 비휘발성 메모리 장치로 센싱 동작 커맨드를 전송할 수 있다. 그리고, 타겟 메모리 컨트롤러는, 타겟 비휘발성 메모리 장치의 센싱 동작이 수행된 이후에 버퍼(130)의 제2 영역이 사용가능한 것으로 판단될 때 타겟 비휘발성 메모리 장치로 전송 동작 커맨드를 전송할 수 있다. 타겟 메모리 컨트롤러는 리드 커맨드를 처리하기 위해 버퍼(130)의 제2 영역을 사용하였음을 프로세서(120)로 보고할 수 있다. 결과적으로, 타겟 비휘발성 메모리 장치로부터 전송된 데이터는 버퍼(130)의 제2 영역에 저장되고, 프로세서(120)는 버퍼(130)의 제2 영역에 저장된 데이터가 호스트 장치로 출력되도록 제어할 수 있다.
실시 예에 따라, 프로세서(120)는, 센싱 동작을 수행한 타겟 비휘발성 메모리 장치가 다른 리드 동작을 먼저 처리해야 할 것으로 판단될 때, 타겟 비휘발성 메모리 장치의 센싱 동작을 취소(abort)시킬 수 있다. 예를 들어, 상술한 바와 같이, 앞서 리드되어 버퍼(130)의 소정 영역에 저장된 데이터, 예를 들어, 제1 데이터가 에러-프리라면 해당 데이터는 호스트 장치로 곧 출력될 것이므로, 프로세서(120)는 타겟 비휘발성 메모리 장치로 센싱 동작 커맨드를 전송할 수 있다. 그런데 이후에, 타겟 비휘발성 메모리 장치로부터 앞서 리드되어 버퍼(130)의 다른 영역에 저장된 데이터, 예를 들어, 제2 데이터가 에러-프리가 아닌 것으로 판단되면, 프로세서(120)는 제2 데이터를 다시 리드하여야 할 것이다. 이때, 프로세서(120)는 제2 데이터의 리드 동작을 먼저 처리해야 할 것으로 판단할 경우, 앞서 수행된 타겟 비휘발성 메모리 장치의 센싱 동작을 취소시키고, 제2 데이터를 먼저 리드하도록 타겟 비휘발성 메모리 장치의 리드 동작을 제어할 수 있다.
메모리 컨트롤러들(MCT1, MCT2) 각각은 프로세서(120)로부터 전송된 복수의 액세스 커맨드들을 응답하여 버퍼(130)의 상태를 판단할 수 있다. 구체적으로, 메모리 컨트롤러들(MCT1, MCT2) 각각은 제1 액세스 커맨드에 응답하여 버퍼(130)의 상태를 판단하는 것과 독립적으로 제2 액세스 커맨드에 응답하여 버퍼(130)의 상태를 판단함으로써, 제2 액세스 커맨드에 대응하는 비휘발성 메모리 장치의 내부 동작을 제어할 수 있다. 제2 액세스 커맨드에 대응하는 비휘발성 메모리 장치는 제1 액세스 커맨드에 대응하는 비휘발성 메모리 장치일 수도 있고, 다른 비휘발성 메모리 장치일 수도 있다. 메모리 컨트롤러들(MCT1, MCT2) 각각은 제1 및 제2 액세스 커맨드들을 수신한 순서에 무관하게 버퍼(130)의 상태에 따라 제1 및 제2 액세스 커맨드들을 처리할 수 있다.
또한, 메모리 컨트롤러들(MCT1, MCT2) 각각은 다른 메모리 컨트롤러와 독립적으로 버퍼(130)의 상태를 판단함으로써 대응하는 채널에 연결된 비휘발성 메모리 장치들을 제어할 수 있다.
메모리 컨트롤러들(MCT1, MCT2) 각각은 버퍼(130)에 저장된 라이트 데이터에 대해 인코딩 동작을 수행하여 타겟 비휘발성 메모리 장치로 전송하고, 타겟 비휘발성 메모리 장치로부터 전송된 데이터에 대해 디코딩 동작을 수행하여 버퍼(130)에 저장할 수 있다. 메모리 컨트롤러들(MCT1, MCT2) 각각은 디코딩 동작을 수행함으로써 타겟 비휘발성 메모리 장치로부터 전송된 데이터가 에러-프리인지 여부를 버퍼 관리자(미도시)로 알려줄 수 있다.
비휘발성 메모리 장치들(NVM11~NVM22)은 채널들(CH1, CH2)을 통해 메모리 컨트롤러들(MCT1, MCT2)과 연결될 수 있다. 비휘발성 메모리 장치들(NVM11~NVM22) 각각은 대응하는 메모리 컨트롤러의 제어에 따라 내부 동작, 즉, 라이트 동작 및 리드 동작을 수행할 수 있다. 리드 동작은 상술한 바와 같이 센싱 동작 및 전송 동작을 포함할 수 있다. 도1은 2개의 채널들 각각에 2개의 비휘발성 메모리 장치들이 연결된 것으로 도시하나, 본 발명의 실시 예에서 채널들 및 비휘발성 메모리 장치들의 개수는 이에 제한되지 않는다.
비휘발성 메모리 장치들(NVM11~NVM22) 각각은 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등으로 구성될 수 있다.
도2는 도1의 비휘발성 메모리 장치(NVM11)를 예시적으로 도시한 블록도이다.
비휘발성 메모리 장치(NVM11)는 제어 로직(210), 데이터 버퍼(220) 및 메모리 셀 어레이(230)를 포함할 수 있다.
제어 로직(210)은 메모리 컨트롤러(MCT1)로부터 채널(CH1)을 통해 전송된 내부 동작 커맨드에 응답하여 메모리 셀 어레이 및 데이터 버퍼(220)를 제어할 수 있다. 제어 로직(210)은 라이트 동작 커맨드에 응답하여, 채널(CH1)을 통해 전송되고 데이터 버퍼(220)에 저장된 라이트 데이터를 메모리 셀 어레이(230)에 저장할 수 있다. 제어 로직(210)은 센싱 동작 커맨드에 응답하여 메모리 셀 어레이(230)에 저장된 데이터를 센싱하여 데이터 버퍼(220)에 저장하고, 전송 동작 커맨드에 응답하여 데이터 버퍼(220)에 저장된 데이터를 메모리 컨트롤러(MCT1)로 전송할 수 있다.
데이터 버퍼(220)는 메모리 컨트롤러(MCT1)와 메모리 셀 어레이(230) 사이에서 데이터를 임시 저장할 수 있다.
메모리 셀 어레이(230)는 데이터를 저장하기 위한 복수의 메모리 셀들을 포함할 수 있다.
본 발명에 따르면, 버퍼(130)의 상태를 확인하는 것은 메모리 컨트롤러들(MCT1, MCT2)로 위임되고 프로세서(120)는 호스트 장치로부터 액세스 요청을 수신하면 버퍼(130)의 상태가 확인되기 전이라도 메모리 컨트롤러들(MCT1, MCT2)로 액세스 커맨드들을 즉시 전송할 수 있다. 따라서, 프로세서(120)의 오버헤드는 감소하고, 데이터 저장 장치(10)의 동작 성능이 향상될 수 있다. 또한, 메모리 컨트롤러들(MCT1, MCT2)은 복수의 액세스 커맨드들에 응답하여 버퍼(130)의 상태를 독립적으로 각각 체크하므로, 커맨드 처리 속도가 향상될 수 있다.
도3은 도1의 데이터 저장 장치(10)가 호스트 장치의 라이트 요청을 처리하는 방법을 도시한다. 도3에서 도1의 호스트 인터페이스(110)의 동작은 설명의 간편화를 위해 생략될 것이다. 이하에서, 타겟 메모리 컨트롤러 및 타겟 비휘발성 메모리 장치는, 예를 들어, 메모리 컨트롤러(MCT1) 및 비휘발성 메모리 장치(NVM11)일 수 있다.
단계(S110)에서, 프로세서(120)는 호스트 장치로부터 라이트 요청(WRQ)을 수신할 수 있다.
단계(S120)에서, 버퍼(130)는 호스트 장치로부터 라이트 데이터(WDT)를 수신할 수 있다.
단계(S130)에서 프로세서(120)는 버퍼(130)의 상태에 무관하게, 라이트 요청(WRQ)에 응답하여 라이트 커맨드(WCMD)를 타겟 메모리 컨트롤러(MCT1)로 전송할 수 있다.
단계(S140)에서, 타겟 메모리 컨트롤러(MCT1)는 라이트 커맨드(WCMD)에 응답하여 라이트 데이터(WDT)가 버퍼(130)에 전송 완료되었는지를 판단할 수 있다. 라이트 데이터(WDT)가 버퍼(130)에 전송 완료되지 않은 것으로 판단될 때, 타겟 메모리 컨트롤러(MCT1)는 라이트 데이터(WDT)가 전송 완료되었는지를 계속 판단할 수 있다. 라이트 데이터(WDT)가 버퍼(130)에 전송 완료된 것으로 판단될 때, 절차는 단계(S150)로 진행될 수 있다.
단계(S150)에서, 타겟 메모리 컨트롤러(MCT1)는 버퍼(130)로부터 라이트 데이터(WDT)를 획득할 수 있다.
단계(S160)에서, 타겟 메모리 컨트롤러(MCT1)는 타겟 비휘발성 메모리 장치(NVM11)로 라이트 동작 커맨드(WOCMD) 및 라이트 데이터(WDT)를 전송할 수 있다.
단계(S170)에서, 타겟 비휘발성 메모리 장치(NVM11)는 라이트 동작 커맨드(WOCMD)에 응답하여 라이트 데이터(WDT)에 대해 라이트 동작을 수행할 수 있다.
도4 및 도5는 도1의 데이터 저장 장치(10)가 호스트 장치의 리드 요청을 처리하는 방법들을 도시한다. 도4 및 도5에서 도1의 호스트 인터페이스(110)의 동작은 설명의 간편화를 위해 생략될 것이다.
도4를 참조하면, 단계(S210)에서, 프로세서(120)는 호스트 장치로부터 리드 요청(RRQ)을 수신할 수 있다.
단계(S220)에서, 프로세서(120)는 버퍼(130)의 상태에 무관하게, 리드 요청(RRQ)에 응답하여 리드 커맨드(RCMD)를 타겟 메모리 컨트롤러(MCT1)로 전송할 수 있다.
단계(S230)에서, 타겟 메모리 컨트롤러(MCT1)는 리드 커맨드(RCMD)에 응답하여, 버퍼(130)의 소정 영역이 사용가능한지를 판단할 수 있다. 버퍼(130)의 소정 영역은 호스트 장치 또는 프로세서(120)에 의해 지정될 수 있다. 타겟 메모리 컨트롤러(MCT1)는 버퍼(130)의 소정 영역이 사용가능한 것으로 판단할 수 있다.
단계(S240)에서, 타겟 메모리 컨트롤러(MCT1)는 타겟 비휘발성 메모리 장치(NVM11)로 센싱 동작 커맨드(SCMD)를 전송할 수 있다.
단계(S250)에서, 타겟 비휘발성 메모리 장치(NVM11)는 센싱 동작 커맨드(SCMD)에 응답하여 메모리 셀 어레이(230)에 저장된 데이터에 대해 센싱 동작을 수행하고, 센싱된 데이터를 데이터 버퍼(220)에 저장할 수 있다.
단계(S260)에서, 타겟 비휘발성 메모리 장치(NVM11)는 센싱 완료 보고(SC)를 타겟 메모리 컨트롤러(MCT1)로 전송할 수 있다.
단계(S270)에서, 타겟 비휘발성 메모리 장치(NVM11)는 타겟 비휘발성 메모리 장치(NVM11)로 전송 동작 커맨드(TCMD)를 전송할 수 있다.
단계(S280)에서, 타겟 비휘발성 메모리 장치(NVM11)는 전송 동작 커맨드(TCMD)에 응답하여 데이터 버퍼(220)에 저장된 데이터(RDT)를 타겟 메모리 컨트롤러(MCT1)로 전송할 수 있다.
단계(S290)에서, 타겟 메모리 컨트롤러(MCT1)는 타겟 비휘발성 메모리 장치(NVM11)로부터 전송된 데이터(RDT)를 버퍼(130)의 소정 영역에 저장할 수 있다.
단계(S300)에서, 버퍼(130)의 소정 영역에 저장된 데이터는 호스트 장치로 출력될 수 있다.
도5를 참조하면, 단계들(S310, S320)은 도4의 단계들(S210, S220)과 동일할 수 있다.
단계(S330)에서, 타겟 메모리 컨트롤러(MCT1)는 버퍼(130)의 소정 영역이 사용불가능한 것으로 판단할 수 있다.
단계(S340)에서, 타겟 메모리 컨트롤러(MCT1)는 버퍼(130)의 소정 영역에 저장된 데이터가 에러-프리인지 여부를 판단할 수 있다. 버퍼(130)의 소정 영역에 저장된 데이터가 에러-프리가 아닌 것으로 판단될 때, 타겟 메모리 컨트롤러(MCT1)는 버퍼(130) 영역에 저장된 데이터가 에러-프리인지 여부를 계속 판단할 수 있다. 버퍼(130)의 소정 영역에 저장된 데이터가 에러-프리인 것으로 판단될 때, 절차는 단계(S350)로 진행될 수 있다.
단계(S350)에서, 타겟 메모리 컨트롤러(MCT1)는 타겟 비휘발성 메모리 장치(NVM11)로 센싱 동작 커맨드(SCMD)를 전송할 수 있다. 즉, 에러-프리인 데이터는 곧바로 호스트 장치로 출력될 수 있기 때문에, 버퍼(130) 영역은 곧 사용가능한 것으로 변경될 수 있다. 따라서, 타겟 메모리 컨트롤러(MCT1)는 센싱 동작 커맨드를 통해 타겟 비휘발성 메모리 장치(NVM11)의 센싱 동작을 우선 착수시킬 수 있다.
단계(S360)에서, 타겟 비휘발성 메모리 장치(NVM11)는 센싱 동작 커맨드(SCMD)에 응답하여 메모리 셀 어레이(230)에 저장된 데이터에 대해 센싱 동작을 수행하고, 센싱된 데이터를 데이터 버퍼(220)에 저장할 수 있다.
단계(S370)에서, 타겟 비휘발성 메모리 장치(NVM11)는 센싱 완료 보고(SC)를 타겟 메모리 컨트롤러(MCT1)로 전송할 수 있다.
단계(S380)에서, 타겟 메모리 컨트롤러(MCT1)는 버퍼(130)의 소정 영역이 사용가능한지를 판단할 수 있다. 버퍼(130)의 소정 영역이 사용불가능한 것으로 판단될 때, 타겟 메모리 컨트롤러(MCT1)는 버퍼(130)의 소정 영역이 사용가능한지를 계속 판단할 수 있다. 버퍼(130)의 소정 영역에 저장된 데이터가 호스트 장치로 출력된 경우, 버퍼(130)의 소정 영역은 사용가능한 것으로 변경될 것이다. 버퍼(130)의 소정 영역이 사용가능한 것으로 판단될 때, 절차는 단계(S390)로 진행될 수 있다.
단계(S390)에서, 타겟 메모리 컨트롤러(MCT1)는 타겟 비휘발성 메모리 장치(NVM11)로 전송 동작 커맨드(TCMD)를 전송할 수 있다.
단계(S400)에서, 타겟 비휘발성 메모리 장치(NVM11)는 전송 동작 커맨드(TCMD)에 응답하여 데이터 버퍼(220)에 저장된 데이터(RDT)를 타겟 메모리 컨트롤러(MCT1)로 전송할 수 있다.
단계들(S410, S420)은 도4의 단계들(S290, S300)과 동일할 수 있다.
도5에서, 단계(S380)는 단계(S370) 이후에 수행하는 것으로 도시되지만, 실시 예에 따라서, 단계(S350) 이후에 곧바로 수행될 수도 있다.
도6은 본 발명의 실시 예에 따른 SSD(1000)를 도시하는 블록도이다.
SSD(1000)는 컨트롤러(1100)와 저장 매체(1200)를 포함할 수 있다.
컨트롤러(1100)는 호스트 장치(1500)와 저장 매체(1200) 사이의 데이터 교환을 제어할 수 있다. 컨트롤러(1100)는 버스(1170)를 통해 연결된 프로세서(1110), 램(1120), 롬(1130), ECC부(1140), 호스트 인터페이스(1150) 및 저장 매체 인터페이스(1160)를 포함할 수 있다.
프로세서(1110)는 컨트롤러(1100)의 제반 동작을 제어할 수 있다. 프로세서(1110)는 호스트 장치(1500)의 데이터 처리 요청에 따라 저장 매체(1200)에 데이터를 저장하고, 저장 매체(1200)로부터 저장된 데이터를 리드할 수 있다. 프로세서(1110)는 저장 매체(1200)를 효율적으로 관리하기 위해서, 머지 동작 및 웨어 레벨링 동작 등과 같은 SSD(1000)의 내부 동작을 제어할 수 있다.
프로세서(1110)는 도1의 프로세서(120)를 포함할 수 있다. 프로세서(1110)는 호스트 장치(1500)로부터 전송된 액세스 요청에 응답하여 램(1120)의 상태에 무관하게, 액세스 커맨드를 타겟 메모리 컨트롤러로 전송할 수 있다.
램(1120)은 프로세서(1110)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 램(1120)은 호스트 인터페이스(1150)로부터 전송된 데이터를 저장 매체(1200)에 전달하기 전에 임시 저장할 수 있고. 저장 매체(1200)로부터 전송된 데이터를 호스트 장치(1500)로 전달하기 전에 임시 저장할 수 있다. 램(1120)은 도1의 버퍼(120)를 포함할 수 있다.
롬(1130)은 프로세서(1110)에 의해 리드되는 프로그램 코드를 저장할 수 있다. 프로그램 코드는 프로세서(1110)가 컨트롤러(1100)의 내부 유닛들을 제어하기 위해서 프로세서(1110)에 의해 처리되는 명령들을 포함할 수 있다.
ECC부(1140)는 저장 매체(1200)에 저장될 데이터를 인코딩하고, 저장 매체(1200)로부터 리드된 데이터를 디코딩할 수 있다. ECC부(1140)는 ECC 알고리즘에 따라 데이터에 발생된 에러를 검출하고 정정할 수 있다.
호스트 인터페이스(1150)는 호스트 장치(1500)와 데이터 처리 요청 및 데이터 등을 교환할 수 있다. 호스트 인터페이스(1150)는 도1의 호스트 인터페이스(110)를 포함할 수 있다.
저장 매체 인터페이스(1160)는 저장 매체(1200)로 제어 신호 및 데이터를 전송할 수 있다. 저장 매체 인터페이스(1160)는 저장 매체(1200)로부터 데이터를 전송받을 수 있다. 저장 매체 인터페이스(1160)는 저장 매체(1200)와 복수의 채널들(CH0~CHn)을 통해 연결될 수 있다.
저장 매체 인터페이스(1160)는 도1의 메모리 컨트롤러들(MCT1, MCT2)을 포함할 수 있다. 저장 매체 인터페이스(1160)는 프로세서(1110)로부터 전송된 액세스 커맨드에 응답하여 램(1120)의 상태를 판단하고, 판단 결과에 따라 타겟 비휘발성 메모리 장치로 내부 동작 커맨드를 전송함으로써 타겟 비휘발성 메모리 장치의 내부 동작을 제어할 수 있다.
저장 매체(1200)는 복수의 비휘발성 메모리 장치들(NVM0~NVMn)을 포함할 수 있다. 복수의 비휘발성 메모리 장치들(NVM0~NVMn) 각각은 컨트롤러(1100)의 제어에 따라 라이트 동작 및 리드 동작을 수행할 수 있다.
도7은 본 발명의 실시 예에 따른 데이터 저장 장치(10)가 적용된 데이터 처리 시스템(2000)을 도시하는 블록도이다.
데이터 처리 시스템(2000)은 컴퓨터, 랩탑, 넷북, 스마트폰, 디지털 TV, 디지털 카메라, 네비게이션 등을 포함할 수 있다. 데이터 처리 시스템(2000)은 메인 프로세서(2100), 메인 메모리 장치(2200), 데이터 저장 장치(2300) 및 입출력 장치(2400)를 포함할 수 있다. 데이터 처리 시스템(2000)의 내부 유닛들은 시스템 버스(2500)를 통해서 데이터 및 제어 신호 등을 주고받을 수 있다.
메인 프로세서(2100)는 데이터 처리 시스템(2000)의 제반 동작을 제어할 수 있다. 메인 프로세서(2100)는, 예를 들어, 마이크로프로세서와 같은 중앙 처리 장치일 수 있다. 메인 프로세서(2100)는 운영 체제, 애플리케이션 및 장치 드라이버 등의 소프트웨어들을 메인 메모리 장치(2200) 상에서 수행할 수 있다.
메인 메모리 장치(2200)는 메인 프로세서(2100)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 메인 메모리 장치(2200)는 데이터 저장 장치(2300) 및 입출력 장치(2400)로 전송될 데이터를 임시 저장할 수 있다.
데이터 저장 장치(2300)는 컨트롤러(2310) 및 저장 매체(2320)를 포함할 수 있다. 데이터 저장 장치(2300)는 도1의 데이터 저장 장치(10)와 실질적으로 유사하게 구성되고 동작할 수 있다.
입출력 장치(2400)는 사용자로부터 데이터 처리 시스템(2000)을 제어하기 위한 명령을 입력받거나 처리된 결과를 사용자에게 제공하는 등 사용자와 정보를 교환할 수 있는 키보드, 스캐너, 터치스크린, 스크린 모니터, 프린터 및 마우스 등을 포함할 수 있다.
실시 예에 따라, 데이터 처리 시스템(2000)은 LAN(Local Area Network), WAN(Wide Area Network) 및 무선 네트워크 등의 네트워크(2600)를 통해 적어도 하나의 서버(2700)와 통신할 수 있다. 데이터 처리 시스템(2000)은 네트워크(2600)에 접속하기 위해서 네트워크 인터페이스(미도시)를 포함할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 장치
100: 컨트롤러
110: 호스트 IF
120: 프로세서
130: 버퍼
MCT1, MCT2: 메모리 컨트롤러들
NVM11~NVM22: 비휘발성 메모리 장치들

Claims (20)

  1. 복수의 채널들에 연결된 비휘발성 메모리 장치들; 및
    프로세서, 버퍼 및 상기 채널들에 각각 연결된 메모리 컨트롤러들을 포함하는 컨트롤러를 포함하되,
    상기 프로세서는 상기 버퍼의 상태에 무관하게, 호스트 장치의 제1 액세스 요청에 응답하여 제1액세스 커맨드를 제1 메모리 컨트롤러로 전송하고,
    상기 제1 메모리 컨트롤러는 상기 제1 액세스 커맨드에 응답하여 상기 버퍼의 상기 상태를 판단함으로써 제1 비휘발성 메모리 장치의 내부 동작을 제어하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 프로세서는 상기 호스트 장치로부터 상기 버퍼로 라이트 데이터가 전송 완료되었는지 여부에 무관하게, 상기 호스트 장치의 라이트 요청에 응답하여 라이트 커맨드를 상기 제1 메모리 컨트롤러로 전송하는 데이터 저장 장치.
  3. 제2항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 라이트 커맨드에 응답하여 상기 버퍼로 상기 라이트 데이터가 전송 완료되었는지 여부를 판단하고, 상기 버퍼로 상기 라이트 데이터가 전송 완료된 것으로 판단될 때 상기 라이트 데이터에 대한 상기 제1 비휘발성 메모리 장치의 라이트 동작을 제어하는 데이터 저장 장치.
  4. 제1항에 있어서,
    상기 버퍼는 상기 호스트 장치의 리드 요청에 대응하는 제1 영역을 포함하고,
    상기 프로세서는 상기 제1 영역이 사용가능한지 여부에 무관하게, 상기 리드 요청에 응답하여 리드 커맨드를 상기 제1 메모리 컨트롤러로 전송하는 데이터 저장 장치.
  5. 제4항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 리드 커맨드에 응답하여 상기 제1 영역이 사용가능한지 여부를 판단하고, 상기 제1 영역이 사용가능한 것으로 판단될 때 상기 제1 비휘발성 메모리 장치의 리드 동작을 제어하는 데이터 저장 장치.
  6. 제4항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 리드 커맨드에 응답하여 상기 제1 영역이 사용가능한지 여부를 판단하고, 상기 제1 영역이 사용불가능한 것으로 판단될 때 상기 제1 영역에 저장된 데이터가 에러-프리인지를 판단하고, 상기 데이터가 에러-프리인 것으로 판단될 때 상기 리드 커맨드에 대응하는 타겟 데이터에 대한 상기 제1 비휘발성 메모리 장치의 센싱 동작을 제어하는 데이터 저장 장치.
  7. 제6항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 센싱 동작을 제어한 이후, 상기 제1 영역이 사용가능한 것으로 판단될 때 센싱된 데이터에 대한 상기 제1 비휘발성 메모리 장치의 전송 동작을 제어하는 데이터 저장 장치.
  8. 제6항에 있어서,
    상기 버퍼는 제2 영역을 더 포함하고,
    상기 제1 메모리 컨트롤러는, 상기 데이터가 에러-프리가 아닌 것으로 판단될 때 상기 제2 영역이 사용가능한지 여부를 판단하고, 상기 제2 영역이 사용가능한 것으로 판단될 때 상기 제1 비휘발성 메모리 장치의 리드 동작을 제어하는 데이터 저장 장치.
  9. 제6항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 제1 비휘발성 메모리 장치에 대해 상기 리드 커맨드보다 다른 리드 커맨드를 먼저 처리해야 할 것으로 판단할 때, 상기 센싱 동작을 취소시키는 데이터 저장 장치.
  10. 제1항에 있어서,
    상기 프로세서는 상기 버퍼의 상기 상태에 무관하게, 상기 호스트 장치의 제2 액세스 요청에 응답하여 제2 액세스 커맨드를 상기 제1 메모리 컨트롤러로 전송하고,
    상기 제1 메모리 컨트롤러는 상기 제1 액세스 커맨드에 응답하여 상기 버퍼의 상기 상태를 판단하는 것과 독립적으로 상기 제2 액세스 커맨드에 응답하여 상기 버퍼의 상기 상태를 판단함으로써, 상기 제2 액세스 커맨드에 대응하는 비휘발성 메모리 장치의 내부 동작을 제어하는 데이터 저장 장치.
  11. 제1항에 있어서,
    상기 프로세서는 상기 버퍼의 상기 상태에 무관하게, 상기 호스트 장치의 제2 액세스 요청에 응답하여 제2 액세스 커맨드를 제2 메모리 컨트롤러로 전송하고,
    상기 제2 메모리 컨트롤러는 상기 제1 메모리 컨트롤러와 독립적으로 상기 제2 액세스 커맨드에 응답하여 상기 버퍼의 상기 상태를 판단함으로써 제2 비휘발성 메모리 장치의 내부 동작을 제어하는 데이터 저장 장치.
  12. 복수의 채널들에 연결된 비휘발성 메모리 장치들; 및
    제1 영역을 포함하는 버퍼 및 상기 채널들에 각각 연결된 메모리 컨트롤러들을 포함하는 컨트롤러를 포함하되,
    상기 메모리 컨트롤러들 중 제1 메모리 컨트롤러는 제1 리드 커맨드에 응답하여 상기 제1 영역의 상태를 판단함으로써 제1 비휘발성 메모리 장치의 리드 동작을 제어하는 데이터 저장 장치.
  13. 제12항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 제1 영역이 사용가능한 것으로 판단될 때 상기 리드 동작을 제어하고, 상기 제1 비휘발성 메모리 장치로부터 전송된 데이터를 상기 제1 영역에 저장하는 데이터 저장 장치.
  14. 제12항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 제1 영역이 사용불가능한 것으로 판단될 때 상기 제1 영역에 저장된 데이터가 에러-프리인지 여부를 판단하는 데이터 저장 장치.
  15. 제14항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 데이터가 에러-프리인 것으로 판단될 때 상기 제1 리드 커맨드에 대응하는 타겟 데이터에 대한 상기 제1 비휘발성 메모리 장치의 센싱 동작을 제어하는 데이터 저장 장치.
  16. 제15항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 센싱 동작을 제어한 이후, 상기 제1 영역이 사용가능한 것으로 판단될 때 센싱된 데이터에 대한 상기 제1 비휘발성 메모리 장치의 전송 동작을 제어하고, 상기 제1 비휘발성 메모리 장치로부터 전송된 데이터를 상기 제1 영역에 저장하는 데이터 저장 장치.
  17. 제14항에 있어서,
    상기 버퍼는 제2 영역을 더 포함하고,
    상기 제1 메모리 컨트롤러는 상기 데이터가 에러-프리가 아닌 것으로 판단될 때 상기 제2 영역이 사용가능한지 여부를 판단하고, 상기 제2 영역이 사용가능한 것으로 판단될 때 상기 리드 동작을 제어하고, 상기 제1 비휘발성 메모리 장치로부터 전송된 데이터를 상기 제2 영역에 저장하는 데이터 저장 장치.
  18. 제12항에 있어서,
    상기 버퍼는 제2 영역을 더 포함하고,
    상기 제1 메모리 컨트롤러는 상기 제1 영역의 상기 상태를 판단하는 것과 독립적으로 제2 리드 커맨드에 응답하여 상기 제2 영역의 상태를 판단함으로써, 상기 제2 리드 커맨드에 대응하는 비휘발성 메모리 장치의 리드 동작을 제어하는 데이터 저장 장치.
  19. 제18항에 있어서,
    상기 제1 메모리 컨트롤러는 상기 제1 및 제2 리드 커맨드들을 수신한 순서에 무관하게 상기 제1 및 제2 리드 커맨드들을 처리하는 데이터 저장 장치.
  20. 제12항에 있어서,
    상기 버퍼는 제2 영역을 더 포함하고,
    상기 메모리 컨트롤러들 중 제2 메모리 컨트롤러는 상기 제1 메모리 컨트롤러와 독립적으로 제2 리드 커맨드에 응답하여 상기 제2 영역의 상태를 판단함으로써 제2 비휘발성 메모리 장치의 리드 동작을 제어하는 데이터 저장 장치.
KR1020160108419A 2016-08-25 2016-08-25 데이터 저장 장치 KR102558947B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160108419A KR102558947B1 (ko) 2016-08-25 2016-08-25 데이터 저장 장치
US15/372,564 US10359943B2 (en) 2016-08-25 2016-12-08 Data storage device
TW105144175A TWI725102B (zh) 2016-08-25 2016-12-30 資料儲存裝置及固態驅動器
CN201710045983.4A CN107783729B (zh) 2016-08-25 2017-01-20 数据存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160108419A KR102558947B1 (ko) 2016-08-25 2016-08-25 데이터 저장 장치

Publications (2)

Publication Number Publication Date
KR20180023311A true KR20180023311A (ko) 2018-03-07
KR102558947B1 KR102558947B1 (ko) 2023-07-25

Family

ID=61242541

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160108419A KR102558947B1 (ko) 2016-08-25 2016-08-25 데이터 저장 장치

Country Status (4)

Country Link
US (1) US10359943B2 (ko)
KR (1) KR102558947B1 (ko)
CN (1) CN107783729B (ko)
TW (1) TWI725102B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10425260B2 (en) * 2017-08-07 2019-09-24 Micron Technology, Inc. Multi-level signaling in memory with wide system interface
KR102605205B1 (ko) * 2018-07-25 2023-11-24 에스케이하이닉스 주식회사 메모리 장치 및 프로세싱 시스템
US10901654B2 (en) * 2018-10-30 2021-01-26 International Business Machines Corporation Buffer credit management in a data storage system
KR102659832B1 (ko) * 2019-03-05 2024-04-22 삼성전자주식회사 데이터 저장 장치 및 시스템
CN109992205B (zh) * 2019-03-27 2020-06-02 无锡海斯凯尔医学技术有限公司 数据存储的装置、方法及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110072196A (ko) * 2009-12-22 2011-06-29 대상 주식회사 육수의 제조방법
JP2011182369A (ja) * 2010-03-04 2011-09-15 Ricoh Co Ltd データ転送装置、データ転送方法、データ転送プログラム及び記録媒体
KR20130040486A (ko) * 2011-10-14 2013-04-24 삼성전자주식회사 저장 장치 및 그것을 이용하는 사용자 장치
KR20140036094A (ko) * 2012-09-14 2014-03-25 삼성전자주식회사 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
KR20140146275A (ko) * 2013-06-14 2014-12-26 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4435752A (en) * 1973-11-07 1984-03-06 Texas Instruments Incorporated Allocation of rotating memory device storage locations
US6928521B1 (en) * 2000-08-01 2005-08-09 International Business Machines Corporation Method, system, and data structures for using metadata in updating data in a storage device
US8386727B2 (en) * 2001-12-31 2013-02-26 Hewlett-Packard Development Company, L.P. Supporting interleaved read/write operations from/to multiple target devices
JP3933027B2 (ja) * 2002-10-17 2007-06-20 日本電気株式会社 ディスクアレイ装置におけるキャッシュメモリ分割管理方式
KR100516694B1 (ko) * 2003-04-02 2005-09-22 주식회사 하이닉스반도체 반도체 메모리 장치
US8180931B2 (en) * 2004-01-20 2012-05-15 Super Talent Electronics, Inc. USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch
US8521955B2 (en) * 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
EP2487794A3 (en) * 2006-08-22 2013-02-13 Mosaid Technologies Incorporated Modular command structure for memory and memory system
US8904098B2 (en) * 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
TW200917256A (en) * 2007-10-04 2009-04-16 Super Talent Electronics Inc Using various flash memory cells to build USB data flash cards with multiple partitions and autorun function
US8762620B2 (en) * 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
US8120990B2 (en) * 2008-02-04 2012-02-21 Mosaid Technologies Incorporated Flexible memory operations in NAND flash devices
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
KR101093620B1 (ko) 2009-06-29 2011-12-15 주식회사 하이닉스반도체 낸드 플래시 메모리를 실장한 메모리 장치 및 그의 리드 오퍼레이션 방법
JP4643729B2 (ja) * 2009-07-09 2011-03-02 株式会社東芝 インタリーブ制御装置、インタリーブ制御方法及びメモリシステム
EP3467832B1 (en) * 2010-12-17 2020-05-20 Everspin Technologies, Inc. Memory controller and method for interleaving dram and mram accesses
KR101772951B1 (ko) * 2011-03-10 2017-09-13 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 읽기 방법
US9417821B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Presentation of direct accessed storage under a logical drive model
US8966327B1 (en) * 2012-06-21 2015-02-24 Inphi Corporation Protocol checking logic circuit for memory system reliability
KR20140093855A (ko) * 2013-01-18 2014-07-29 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 제어 방법
US9459676B2 (en) * 2013-10-28 2016-10-04 International Business Machines Corporation Data storage device control with power hazard mode
KR102166762B1 (ko) * 2013-12-26 2020-10-16 에스케이하이닉스 주식회사 메모리 및 이를 포함하는 메모리 시스템
CN104750425B (zh) * 2013-12-30 2018-12-18 国民技术股份有限公司 一种存储系统及其非易失性存储器的控制方法
US9348518B2 (en) * 2014-07-02 2016-05-24 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US20160070647A1 (en) * 2014-09-09 2016-03-10 Kabushiki Kaisha Toshiba Memory system
CN105653199B (zh) * 2014-11-14 2018-12-14 群联电子股份有限公司 数据读取方法、存储器存储装置及存储器控制电路单元

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110072196A (ko) * 2009-12-22 2011-06-29 대상 주식회사 육수의 제조방법
JP2011182369A (ja) * 2010-03-04 2011-09-15 Ricoh Co Ltd データ転送装置、データ転送方法、データ転送プログラム及び記録媒体
KR20130040486A (ko) * 2011-10-14 2013-04-24 삼성전자주식회사 저장 장치 및 그것을 이용하는 사용자 장치
KR20140036094A (ko) * 2012-09-14 2014-03-25 삼성전자주식회사 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
KR20140146275A (ko) * 2013-06-14 2014-12-26 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템

Also Published As

Publication number Publication date
TW201807562A (zh) 2018-03-01
CN107783729B (zh) 2021-06-18
TWI725102B (zh) 2021-04-21
CN107783729A (zh) 2018-03-09
US10359943B2 (en) 2019-07-23
US20180059935A1 (en) 2018-03-01
KR102558947B1 (ko) 2023-07-25

Similar Documents

Publication Publication Date Title
US11023167B2 (en) Methods and apparatuses for executing a plurality of queued tasks in a memory
KR102558947B1 (ko) 데이터 저장 장치
US11630766B2 (en) Memory system and operating method thereof
US9898199B2 (en) Data storage device and operating method thereof
KR102655347B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US10585822B2 (en) Operation method of host system including storage device and operation method of storage device controller
US10346052B2 (en) Memory system with priority processing and operating method thereof
KR20170086345A (ko) 메모리 칩 및 메모리 컨트롤러를 포함하는 메모리 시스템
KR20170141298A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10191790B2 (en) Data storage device and error recovery method thereof
KR20180108939A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20170093370A (ko) 데이터 저장 장치
KR20190099879A (ko) 메모리 컨트롤러 및 그 동작 방법
US10490237B2 (en) Data storage device and method of operating the same
KR20170139730A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10037151B2 (en) Data storage device performing pattern identification operation, operating method thereof, and data processing system including the same
KR20180089140A (ko) 데이터 저장 장치
KR20180081239A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102523965B1 (ko) 데이터 저장 장치
KR20180009246A (ko) 비휘발성 메모리 장치, 데이터 저장 장치 및 그것의 동작 방법
JP2022165569A (ja) メモリシステム、メモリデバイス、およびデータ送信方法
KR20170133116A (ko) 전자 장치 및 그것의 동작 방법
KR20240010310A (ko) 컴퓨팅 시스템 및 그 동작 방법
CN118210437A (zh) 存储装置、存储装置操作方法和资源管理装置

Legal Events

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