KR102293069B1 - 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법 - Google Patents

불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR102293069B1
KR102293069B1 KR1020170115347A KR20170115347A KR102293069B1 KR 102293069 B1 KR102293069 B1 KR 102293069B1 KR 1020170115347 A KR1020170115347 A KR 1020170115347A KR 20170115347 A KR20170115347 A KR 20170115347A KR 102293069 B1 KR102293069 B1 KR 102293069B1
Authority
KR
South Korea
Prior art keywords
command
write
sub
commands
controller
Prior art date
Application number
KR1020170115347A
Other languages
English (en)
Other versions
KR20190028607A (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 KR1020170115347A priority Critical patent/KR102293069B1/ko
Priority to US15/970,237 priority patent/US11029893B2/en
Priority to CN201810919340.2A priority patent/CN109471817B/zh
Publication of KR20190028607A publication Critical patent/KR20190028607A/ko
Priority to US17/307,309 priority patent/US11693605B2/en
Application granted granted Critical
Publication of KR102293069B1 publication Critical patent/KR102293069B1/ko
Priority to US18/345,124 priority patent/US20230350609A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3855
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B43/00EEPROM devices comprising charge-trapping gate insulators
    • H10B43/20EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits

Abstract

본 발명은 스토리지 장치에 관한 것이다. 본 발명의 스토리지 장치는 불휘발성 메모리 장치, 그리고 쓰기 데이터와 연관된 쓰기 커맨드 및 읽기 커맨드들을 순차적으로 수신하고, 쓰기 커맨드 및 쓰기 데이터를 잘라(slice) 서브 커맨드들 및 서브 데이터 요소들을 생성하고, 그리고 읽기 커맨드들 중 적어도 하나의 읽기 커맨드 그리고 서브 커맨드들 및 서브 데이터 요소들 중 하나의 서브 커맨드와 하나의 서브 데이터 요소를 교대로 불휘발성 메모리 장치로 전송하는 제어기를 포함한다.

Description

불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법{STORAGE DEVICE INCLUDING NONVOLATILE MEMORY DEVICE AND CONTROLLER, CONTROLLER AND OPERATING METHOD OF NONVOLATILE MEMORY DEVICE}
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법에 관한 것이다.
반도체 제조 기술이 발전하면서, 불휘발성 메모리 장치의 저장 용량, 성능 및 안전성이 향상되고 제조 비용이 감소하고 있다. 이러한 추세에 따라, 불휘발성 메모리 장치를 포함하는 스토리지 장치의 사용 분야가 넓어지고 있다. 스토리지 장치의 사용 분야가 넓어짐에 따라, 새로운 사용 분야의 독특한 환경에 의해 스토리지 장치의 성능이 제약되는 문제가 발생하고 있다.
예를 들어, 특정한 사용 분야에서, 스토리지 장치는 잦은 읽기 커맨드들과 대용량의 쓰기 커맨드를 경험할 수 있다. 통상적인 스토리지 장치는 읽기 커맨드들 및 쓰기 커맨드를 수신된 순서에 따라 처리한다. 이때, 대용량의 쓰기 커맨드에 후속하는 읽기 커맨드들은 쓰기 커맨드가 없을 때의 읽기 커맨드들보다 긴 지연 시간을 경험한다. 따라서, 쓰기 커맨드에 기인한 지연을 방지하는 새로운 장치 또는 방법에 대한 요구가 존재한다.
본 발명의 목적은 쓰기 커맨드에 의해 후속 커맨드들의 처리가 지연되는 것을 방지하는 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치, 그리고 쓰기 데이터와 연관된 쓰기 커맨드 및 읽기 커맨드들을 순차적으로 수신하고, 쓰기 커맨드 및 쓰기 데이터를 잘라(slice) 서브 커맨드들 및 서브 데이터 요소들을 생성하고, 그리고 읽기 커맨드들 중 적어도 하나의 읽기 커맨드 그리고 서브 커맨드들 및 서브 데이터 요소들 중 하나의 서브 커맨드와 하나의 서브 데이터 요소를 교대로 불휘발성 메모리 장치로 전송하는 제어기를 포함한다.
본 발명의 실시 예에 따른 제어기는 외부 장치로부터 수신되는 커맨드들을 저장하는 제1 큐, 제1 큐에서 꺼내지는(fetched) 커맨드가 쓰기 커맨드이면, 쓰기 커맨드를 잘라 서브 커맨드들을 생성하는 슬라이서(slicer), 서브 커맨드들을 저장하는 제2 큐, 그리고 제1 큐 및 제2 큐 중 하나를 선택하는 선택기를 포함한다. 선택기에 의해 선택된 큐로부터 꺼내지는 커맨드는 외부의 불휘발성 메모리 장치로 전달된다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치의 동작 방법은, 제어기가 외부 장치로부터 쓰기 데이터와 연관된 쓰기 커맨드 및 읽기 커맨드들을 순차적으로 수신하는 단계, 제어기가 쓰기 커맨드 및 쓰기 데이터를 잘라(slice) 서브 커맨드들 및 서브 데이터 요소들을 생성하는 단계, 그리고 제어기가 읽기 커맨드들 중 적어도 하나의 읽기 커맨드와 서브 커맨드들 및 서브 데이터 요소들 중 하나의 서브 커맨드 및 하나의 서브 데이터 요소를 교대로 불휘발성 메모리 장치로 전송하는 단계를 포함한다.
본 발명에 따르면, 쓰기 커맨드가 서브 커맨드들로 분할되고, 서브 커맨드와 적어도 하나의 읽기 커맨드가 교대로 처리된다. 따라서, 쓰기 커맨드에 의해 후속 커맨드들이 지연되는 것을 방지하고 향상된 속도를 갖는 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 3은 본 발명의 제1 실시 예에 따른 제어기의 구현 예를 보여주는 개념도이다.
도 4는 제어기가 커맨드 큐로부터 커맨드를 꺼내어 처리하는 더 구체적인 예를 보여주는 순서도이다.
도 5는 본 발명의 실시 예에 따른 제어기에서 커맨드들이 처리되는 예를 보여준다.
도 6은 도 5에 이어서 제어기에서 커맨드들이 처리되는 예를 보여준다.
도 7은 도 6에 이어서 제어기에서 커맨드들이 처리되는 예를 보여준다.
도 8은 외부의 호스트 장치가 제어기로 전송하는 커맨드들의 예를 보여준다.
도 9는 도 8의 순서에 따라 제어기에 커맨드가 수신될 때, 제어기가 불휘발성 메모리로 장치 커맨드들을 전송하는 예를 보여준다.
도 10은 제어기가 쓰기 데이터의 사이즈에 따라 자름 여부를 판단하는 예를 보여주는 순서도이다.
도 11은 제어기가 사이즈 문턱 또는 자름 단위를 조절하는 예를 보여주는 순서도이다.
도 12는 제어기가 사이즈 문턱 또는 자름 단위를 조절하는 다른 예를 보여주는 순서도이다.
도 13은 제어기가 쓰기 문턱을 조절하는 예를 보여주는 순서도이다.
도 14는 제어기가 쓰기 문턱을 조절하는 다른 예를 보여주는 순서도이다.
도 15는 읽기 커맨드의 주소들과 쓰기 커맨드의 주소들이 중복될 때의 예를 보여주는 순서도이다.
도 16은 도 3의 제어기의 응용 예를 보여주는 블록도이다.
도 17은 도 3의 제어기의 구현 예 또는 도 16의 제어기의 구현 예가 하드웨어로 구현되는 예를 보여주는 블록도이다.
도 18은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다.
도 19는 본 발명의 실시 예에 따른 메모리 블록의 예를 보여준다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치(100)를 보여주는 블록도이다. 도 1을 참조하면, 스토리지 장치(100)는 불휘발성 메모리(110), 제어기(120), 그리고 랜덤 액세스 메모리(130)를 포함한다. 불휘발성 메모리(110)는 불휘발성 메모리 장치들(110a~110d)을 포함할 수 있다. 불휘발성 메모리 장치들(110a~110d)은 서로 독립된 채널들을 통해 제어기(120)와 통신할 수 있다.
불휘발성 메모리 장치들(110a~110d)은 플래시 메모리를 포함할 수 있다. 그러나 불휘발성 메모리 장치들(110a~110d)은 플래시 메모리를 포함하는 것으로 한정되지 않는다. 불휘발성 메모리 장치들(110a~110d)은 PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등과 같은 다양한 불휘발성 메모리 장치들 중 적어도 하나를 포함할 수 있다.
도 4에서, 네 개의 불휘발성 메모리 장치들(110a~110d)이 독립된 채널들을 통해 제어기(120)와 통신하는 것으로 도시된다. 그러나 독립된 채널들을 통해 제어기(120)와 통신하는 불휘발성 메모리 장치들의 수는 한정되지 않는다. 도 4에서, 하나의 불휘발성 메모리 장치(예를 들어 110a)가 하나의 채널을 통해 제어기(120)와 통신하는 것으로 도시된다. 그러나 하나의 채널을 통해 제어기(120)와 통신하는 불휘발성 메모리 장치들의 수는 한정되지 않는다.
제어기(120)는 외부의 호스트 장치(10)와 통신할 수 있다. 제어기(120)는 외부의 호스트 장치(10)로부터 쓰기 커맨드, 읽기 커맨드, 소거 커맨드 등을 포함하는 다양한 커맨드들을 수신할 수 있다. 제어기(120)는 랜덤 액세스 메모리(130) 또는 불휘발성 메모리 장치들(110a~110d)을 이용하여, 외부의 호스트 장치(10)로부터 수신되는 다양한 커맨드들을 처리할 수 있다.
제어기(120)는 랜덤 액세스 메모리(130)를 버퍼 메모리로 이용할 수 있다. 예를 들어, 외부의 호스트 장치(10)로부터 불휘발성 메모리 장치들(110a~110d)로 전달되는 데이터(즉 기입되는 데이터)는 랜덤 액세스 메모리(130)에 임시로 저장될 수 있다. 또한, 불휘발성 메모리 장치들(110a~110d)로부터 외부의 호스트 장치(10)로 전달되는 데이터(즉 읽혀지는 데이터)는 랜덤 액세스 메모리(130)에 임시로 저장될 수 있다.
제어기(120)는 랜덤 액세스 메모리(130)를 동작 메모리로 사용할 수 있다. 제어기(120)가 스토리지 장치(100) 또는 불휘발성 메모리 장치들(110a~110d)을 관리하는 데에 필요한 메타 데이터들 또는 메타 데이터들의 일부가 랜덤 액세스 메모리(130)에 로드될 수 있다. 제어기(120)는 랜덤 액세스 메모리(130)에 로드된 메타 데이터를 이용하여 스토리지 장치(100) 또는 불휘발성 메모리 장치들(110a~110d)을 관리할 수 있다.
제어기(120)는 불휘발성 메모리 장치들(110a~110d)의 쓰기, 읽기 또는 소거를 제어하도록 구성된다. 제어기(120)는 불휘발성 메모리 장치들(110a~110d)에 다양한 커맨드들을 전송하여 쓰기, 읽기 또는 소거가 수행되도록 불휘발성 메모리 장치들(110a~110d)을 제어할 수 있다. 다른 커맨드들과 구별하기 위하여, 이하에서 제어기(120)로부터 불휘발성 메모리 장치들(110a~110d)로 전달되는 커맨드들은 장치 커맨드들이라 불린다.
제어기(120)는 커맨드 큐(122) 및 슬라이서(124)를 포함한다. 커맨드 큐(122)는 외부의 호스트 장치(10)로부터 수신되는 커맨드들을 저장할 수 있다. 예를 들어, 제어기(120)는 외부의 호스트 장치(10)로부터 수신되는 커맨드들을 커맨드 큐(122)에 인큐(enqueue)할 수 있다. 예시적으로, 커맨드 큐(122)에 등록된 커맨드들은 선입선출에 기반하여 처리되며, 예외적인 스케줄링(scheduling)이 허용될 수 있다.
제어기(120)는 커맨드 큐(122)에 저장된 커맨드들을 순차적으로 꺼내어(fetch) 처리할 수 있다. 커맨드 큐(122)로부터 꺼내진 커맨드가 쓰기 커맨드이면, 슬라이서(124)는 쓰기 커맨드 및 쓰기 커맨드와 연관된 쓰기 데이터를 잘라(slice) 서브 커맨드들 및 서브 데이터 요소들을 생성할 수 있다. 제어기(120)는 읽기 커맨드들 및 서브 커맨드들(서브 데이터 요소들과 함께)을 불휘발성 메모리 장치들(110a~110d)로 전송할 수 있다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치(100)의 동작 방법을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S110 단계에서, 제어기(120)는 외부의 호스트 장치(10)로부터 쓰기 커맨드 및 쓰기 데이터 그리고 읽기 커맨드들을 수신할 수 있다.
쓰기 커맨드와 읽기 커맨드들은 순차적으로 수신될 수 있다. 예를 들어, 쓰기 커맨드가 수신된 후에 읽기 커맨드들이 수신될 수 있다. 쓰기 커맨드와 읽기 커맨드들은 커맨드 큐(122)에 저장되고, 쓰기 데이터는 랜덤 액세스 메모리(130)에 저장될 수 있다.
S120 단계에서, 슬라이서(124)는 쓰기 커맨드 및 쓰기 데이터를 잘라 서브 커맨드들 및 서브 데이터 요소들을 생성할 수 있다. 예를 들어, 쓰기 커맨드가 커맨드 큐(122)로부터 꺼내지면(fetched), 슬라이서(124)는 쓰기 커맨드를 잘라 서브 커맨드들을 생성할 수 있다. 쓰기 커맨드가 잘라질 때, 쓰기 커맨드와 연관된 쓰기 데이터의 주소 범위 또한 잘라져 서브 커맨드들에 분배된다.
S130 단계에서, 제어기(120)는 적어도 하나의 읽기 커맨드 및 하나의 서브 커맨드를 교대로 불휘발성 메모리 장치들(110a~110d)로 전송할 수 있다. 서브 커맨드는 연관된 서브 데이터 요소(즉, 쓰기 데이터의 일부)와 함께 전송될 수 있다. 즉, 쓰기 커맨드는 서브 커맨드의 단위로 단계적으로 처리되고, 쓰기 커맨드가 단계적으로 처리되는 도중에 읽기 커맨드가 처리될 수 있다.
읽기 커맨드들 및 쓰기 커맨드의 우선순위가 동일하여도, 제어기(120)는 적어도 하나의 읽기 커맨드와 서브 커맨드를 교대로 전송할 수 있다. 따라서, 스토리지 장치(100)에서 쓰기 커맨드에 의해 읽기 커맨드의 처리가 지연되는 것이 방지된다.
도 3은 본 발명의 제1 실시 예에 따른 제어기(120)의 구현 예를 보여주는 개념도이다. 도 1 및 도 3을 참조하면, 제어기(120)는 호스트 인터페이스(121), 커맨드 큐(122), 데이터 메모리(123), 슬라이서(124), 서브 큐(125), 선택기(126), 스케줄러(127)(scheduler), 변환 계층(128), 그리고 메모리 액세스(129)를 포함한다.
호스트 인터페이스(121)는 외부의 호스트 장치(10)와 통신할 수 있다. 호스트 인터페이스(121)는 외부의 호스트 장치(10)로부터 커맨드(CMD)를 수신할 수 있다. 호스트 인터페이스(121)는 읽기 커맨드 또는 쓰기 커맨드를 커맨드 큐(122)에 인큐할 수 있다. 호스트 인터페이스(121)는 외부의 호스트 장치(10)로부터 데이터(DATA), 예를 들어 쓰기 데이터를 수신할 수 있다. 호스트 인터페이스(121)는 쓰기 데이터를 데이터 메모리(123)에 저장할 수 있다.
호스트 인터페이스(121)는 데이터 메모리(123)에 저장된 데이터(DATA), 예를 들어 읽혀진 데이터를 외부의 호스트 장치(10)로 출력할 수 있다. 예시적으로, 호스트 인터페이스(121) 및 외부의 호스트 장치(10)는 패킷 기반의 통신을 수행할 수 있다. 호스트 인터페이스(121)에 또는 호스트 인터페이스(121)와 커맨드 큐(122) 및 데이터 메모리(123)의 사이에, 패킷을 풀어 커맨드(CMD) 및 데이터(DATA)를 추출하는 블록 또는 데이터(DATA)를 패킷화하는 블록이 제공 또는 추가될 수 있다.
커맨드 큐(122)는 호스트 인터페이스(121)로부터 수신되는 커맨드(CMD)를 저장할 수 있다. 커맨드 큐(122)는 개체들(entities)을 포함할 수 있다. 각 개체는 하나의 커맨드를 저장할 수 있다. 커맨드 큐(122)에 저장된 커맨드들의 우선순위들이 동일하면, 커맨드 큐(122)에 저장된 커맨드들은 선입선출에 따라 꺼내질(fetched) 수 있다.
데이터 메모리(123)는 외부의 호스트 장치(10)로부터 전달되는 데이터(DATA), 예를 들어 쓰기 데이터를 저장할 수 있다. 쓰기 데이터는 메모리 액세스(190)에 의해 불휘발성 메모리 장치들(110a~110d)로 전달될 수 있다. 데이터 메모리(123)는 불휘발성 메모리 장치들(110a~110d)로부터 전달되는 데이터(DATA), 예를 들어 읽혀진 데이터를 저장할 수 있다. 읽혀진 데이터는 호스트 인터페이스(121)를 통해 외부의 호스트 장치(10)로 전달될 수 있다.
슬라이서(124)는 커맨드 큐(122)로부터 꺼내지는 커맨드들 중에서 쓰기 커맨드를 가져올 수 있다. 슬라이서(124)는 쓰기 커맨드를 잘라 서브 커맨드들을 생성할 수 있다. 슬라이서(124)는 서브 커맨드들을 서브 큐(125)에 인큐할 수 있다. 서브 큐(125)는 개체들(entities)을 포함할 수 있다. 각 개체는 하나의 서브 커맨드를 저장할 수 있다. 서브 큐(125)에 저장된 서브 커맨드들의 우선순위들이 동일하면, 서브 큐(125)에 저장된 서브 커맨드들은 선입선출에 따라 꺼내질(fetched) 수 있다.
선택기(126)는 스케줄러(127)의 제어에 따라 커맨드 큐(122) 및 서브 큐(125) 중 하나를 선택할 수 있다. 선택기(126)에 의해 선택된 큐(커맨드 큐(122) 또는 서브 큐(125))로부터 커맨드(읽기 커맨드 또는 서브 커맨드)가 꺼내질 수 있다. 꺼내진 커맨드는 변환 계층(128)으로 전달된다.
스케줄러(127)는 선택기(126)가 커맨드 큐(122) 및 서브 큐(125)를 선택하는 빈도들을 제어할 수 있다. 예를 들어, 선택기(126)는 커맨드 큐(122)에 대응하는 제1 가중치와 서브 큐(125)에 대응하는 제2 가중치에 기반하여 커맨드 큐(122) 및 서브 큐(125) 중 하나를 선택할 수 있다. 스케줄러(127)는 제1 및 제2 가중치들을 설정, 변경 또는 초기화할 수 있다.
스케줄러(127)는 카운터(CT) 및 쓰기 문턱(WT)을 포함할 수 있다. 카운터(CT) 및 쓰기 문턱(WT)은 스케줄러(127)가 커맨드 큐(122)의 제1 가중치와 서브 큐(125)의 제2 가중치를 관리하는 데에 사용될 수 있다. 쓰기 문턱(WT)은 스케줄러(127)에 의해 또는 외부 장치에 의해 설정되는 임의의 양의 정수일 수 있다. 쓰기 문턱(WT)은 스케줄러(127)의 내부 또는 제어기(120)의 내부의 휘발성 또는 비휘발성 메모리에 저장될 수 있다.
스케줄러(127)는 커맨드 큐(122)로부터 읽기 커맨드를 꺼낼 때 카운터(CT)의 카운트를 증가시킬 수 있다. 스케줄러(127)는 카운터(CT)의 카운트가 쓰기 문턱(WT)에 도달하면, 서브 큐(125)로부터 하나의 서브 커맨드를 꺼낼 수 있다. 서브 큐(125)로부터 서브 커맨드를 꺼낸 후, 스케줄러(127)는 카운터(CT)를 리셋할 수 있다. 즉, 쓰기 문턱(WT)은 서브 큐(125)의 액세스 빈도에 대한 커맨드 큐(122)의 액세스 빈도의 비(ratio)를 나타내며, 제1 및 제2 가중치들로 해석될 수 있다.
변환 계층은 커맨드 큐(122) 또는 서브 큐(125)로부터 꺼내진 커맨드의 주소들을 불휘발성 메모리 장치들(110a~110d)의 장치 주소들로 변환할 수 있다. 예를 들어, 꺼내진 커맨드의 주소들은 외부의 호스트 장치(10)에서 사용되는 논리 주소들일 수 있다. 장치 주소들은 불휘발성 메모리 장치들(110a~110d)의 내부에서 저장 공간들을 식별할 수 있다.
변환 계층(128)은 변환 단위에 기반하여 주소 변환을 수행한다. 꺼내진 커맨드의 주소 범위가 변환 단위보다 큰 경우, 변환 계층(128)은 주소 범위를 변환 단위로 잘라 잘려진 주소 범위들을 생성할 수 있다. 변환 계층(128)은 잘려진 주소 범위들을 장치 주소 범위들로 변환할 수 있다. 변환 계층(128)은 장치 주소 범위들을 각각 장치 커맨드들과 연관하여 메모리 액세스(190)로 전달할 수 있다. 변환 계층의 동작은 도 5를 참조하여 더 상세히 설명된다.
메모리 액세스(129)는 불휘발성 메모리 장치들(110a~110d)에 각각 대응하는 직접 메모리 액세스들(DMAs, Direct Memory Accesses)(129a~129d)을 포함할 수 있다. 직접 메모리 액세스들(129a~129d)은 변환 계층(128)으로부터 전달되는 장치 커맨드들에 따라 각각 불휘발성 메모리 장치들(110a~110d)을 액세스할 수 있다.
예를 들어, 쓰기 커맨드에 응답하여, 직접 메모리 액세스들(129a~129d)은 데이터 메모리(123)에 저장된 데이터를 불휘발성 메모리 장치들(110a~110d)로 전달할 수 있다. 읽기 커맨드에 응답하여, 직접 메모리 액세스들(129a~129d)은 불휘발성 메모리 장치들(110a~110d)로부터 데이터를 읽고, 읽혀진 데이터를 데이터 메모리(123)에 저장할 수 있다.
예시적으로, 커맨드 큐(122) 또는 서브 큐(125)는 우선순위에 기반한 스케줄링(scheduling)을 지원할 수 있다. 커맨드 큐(122) 또는 서브 큐(125)에 인큐되는 새로운 커맨드의 우선순위가 기존에 저장되어 있던 커맨드들의 우선순위들보다 높으면, 새로운 커맨드가 기존의 커맨드들보다 앞선 개체(entity)에 저장될 수 있다.
예를 들어, 우선순위에 기반하여 스케줄링을 수행하는 기능은 스케줄러(127)에 제공될 수 있다. 다른 예로서, 우선순위에 기반하여 스케줄링을 수행하는 추가적인 스케줄러가 제어기(120)에 제공될 수 있다. 다만, 앞서 언급된 바와 같이, 본 발명의 실시 예에 따른 제어기(120)는 읽기 커맨드들과 쓰기 커맨드의 우선순위들이 동일한 때에, 쓰기 커맨드를 점진적으로 처리하는 동안 읽기 커맨드들을 처리할 수 있다.
예시적으로, 제어기(120)에 에러 정정 코드를 적용하는 에러 정정 블록(도 17의 350 참조)이 제공될 수 있다. 에러 정정 블록은 데이터 메모리(123)와 메모리 액세스(129)의 사이에 에러 정정 코드를 적용할 수 있다. 데이터 메모리(123)로부터 메모리 액세스(129)로 전달되는 데이터에 에러 정정 코드를 적용한 패리티가 부가될 수 있다. 메모리 액세스(129)로부터 데이터 메모리(123)로 데이터가 전달될 때, 에러 정정 코드 및 패리티에 기반하여 에러가 검출 또는 정정될 수 있다.
예시적으로, 메모리 액세스(129)에도 장치 커맨드 큐들(미도시)이 추가될 수 있다. 직접 메모리 액세스들(129a~129d) 각각은 적어도 하나의 장치 커맨드 큐와 연관될 수 있다. 직접 메모리 액세스들(129a~129d)로 전달되는 커맨드들은 장치 커맨드 큐들에 각각 인큐될 수 있다. 직접 메모리 액세스들(129a~129d) 각각은 장치 커맨드 큐로부터 장치 커맨드를 하나씩 꺼내어 처리할 수 있다.
도 4는 제어기(120)가 커맨드를 꺼내어 처리하는 더 구체적인 예를 보여주는 순서도이다. 도 3 및 도 4를 참조하면, S210 단계에서, 선택기(126)는 카운터(CT)의 카운트가 쓰기 문턱(WT)에 도달했는지 판단한다. 카운트가 쓰기 문턱(WT)에 도달하면 S240 단계가 수행된다. 카운트가 쓰기 문턱(WT)에 도달하지 않으면, S215 단계가 수행된다.
카운트가 쓰기 문턱(WT)에 도달하지 않은 것으로 가정하면, S215 단계에서, 커맨드 큐(122)로부터 하나의 커맨드가 꺼내진다. S220 단계에서, 슬라이서(124)는 꺼내진 커맨드가 쓰기 커맨드인지 판단한다. 꺼내진 커맨드가 쓰기 커맨드이면, S225 단계가 수행된다. 꺼내진 커맨드가 쓰기 커맨드가 아니면, 예를 들어 읽기 커맨드이면, S250 단계가 수행된다.
꺼내진 커맨드가 쓰기 커맨드인 것을 가정하면, S225 단계에서, 슬라이서(124)는 쓰기 커맨드 및 쓰기 데이터를 잘라(slice) 서브 커맨드들 및 서브 데이터 요소들을 생성할 수 있다. S230 단계에서, 슬라이서(124)는 서브 커맨드들 및 서브 데이터 요소들을 서브 큐(125)에 인큐할 수 있다.
S235 단계에서, 선택기(126)는 서브 큐(125)에 인큐된 서브 커맨드들이 첫 번째 서브 커맨드들인지 판단한다. 예를 들어, 첫 번째 서브 커맨드들은 서브 커맨드들을 저장하지 않은 서브 큐(125) 또는 비어 있던 서브 큐(125)에 첫 번째로 인큐되는 서브 커맨드들을 의미한다. 첫 번째 서브 커맨드들은 서브 큐(125)에 가장 처음으로 인큐되는 서브 커맨드들을 의미하는 것으로 한정되지 않는다.
서브 커맨드들이 첫 번째 서브 커맨드들이 아니면, 프로세스가 종료된다. 서브 커맨드들이 첫 번째 서브 커맨드들이면, S240 단계가 수행된다. S240 단계에서, 선택기(126)는 서브 큐(125)로부터 서브 커맨드를 꺼내고, 꺼내진 서브 커맨드를 변환 계층(128)으로 전달할 수 있다.
서브 커맨드는 연관된 서브 데이터 요소와 함께 메모리 액세스(190)를 통해 불휘발성 메모리 장치들(110a~110d)로 전달될 수 있다. S245 단계에서, 서브 커맨드가 꺼내진 후에, 스케줄러(127)는 카운터(CT)의 카운트를 리셋할 수 있다. 이후에, 프로세스가 종료된다.
S220 단계로 돌아가면, 꺼내진 커맨드가 쓰기 커맨드가 아니면, S250 단계가 수행된다. S250 단계에서, 선택기(126)는 꺼내진 커맨드를 변환 계층(128)으로 전송할 수 있다. S255 단계에서, 스케줄러(127)는 카운터(CT)의 카운트를 리셋할 수 있다. 이후에, 프로세스는 종료된다.
다시 S210 단계로 돌아가면, 카운트가 쓰기 문턱(WT)에 도달했으면, S240 단계가 수행된다. S240 단계에서, 선택기(126)는 서브 큐(125)로부터 서브 커맨드를 꺼내고, 꺼내진 서브 커맨드를 변환 계층(128)으로 전달할 수 있다. S245 단계에서, 서브 커맨드가 꺼내진 후에, 스케줄러(127)는 카운터(CT)의 카운트를 리셋할 수 있다. 이후에, 프로세스가 종료된다.
도 4에 도시된 프로세스는 커맨드 큐(122) 또는 서브 큐(125)의 하나의 커맨드가 처리되는 예를 보여준다. 도 4의 프로세스가 수행된 후에, 커맨드 큐(122) 또는 서브 큐(125)에 적어도 하나의 커맨드(또는 서브 커맨드)가 저장되어 있으면, 도 4에 도시된 프로세스가 다시 수행될 수 있다. 도 4에 도시된 프로세스는 커맨드 큐(122) 또는 서브 큐(125)에 저장된 커맨드가 없을 때까지 반복될 수 있다.
예시적으로, 스케줄러(127)는 커맨드 큐(122) 및 서브 큐(125) 중 비어있는 큐를 선택하지 않도록 선택기(126)를 제어할 수 있다. 예를 들어, 서브 큐(125)가 비어있고 커맨드 큐(122)에 적어도 하나의 커맨드가 존재할 때, 스케줄러(127)는 쓰기 문턱(WT)에 관계없이 커맨드 큐(122)로부터 하나의 커맨드를 꺼내도록 선택기(126)를 제어할 수 있다.
커맨드 큐(122)가 비어있고 서브 큐(125)에 적어도 하나의 서브 커맨드가 존재할 때, 스케줄러(127)는 쓰기 문턱에 관계없이 서브 큐(125)로부터 하나의 서브 커맨드를 꺼내도록 선택기(126)를 제어할 수 있다. 커맨드 큐(122) 및 서브 큐(125)가 모두 비어있을 때, 스케줄러(127)는 커맨드 큐(122)에 새로운 커맨드가 인큐될 때까지 대기하도록 선택기(126)를 제어할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 커맨드 큐(122)로부터 커맨드가 꺼내질 때에 적어도 네 개의 절차들 중 하나가 수행될 수 있다. 첫째로, 카운트가 쓰기 문턱(WT)에 도달했으면, 서브 큐(125)로부터 서브 커맨드가 꺼내지고, 불휘발성 메모리 장치들(110a~110d)로 전달된다. 그리고 카운터(CT)의 카운트가 리셋된다.
둘째로, 카운트가 쓰기 문턱(WT)에 도달하지 않았고, 그리고 커맨드 큐(122)로부터 꺼내진 커맨드가 쓰기 커맨드가 아니면, 커맨드 큐(122)로부터 꺼내진 커맨드(예를 들어, 읽기 커맨드)가 불휘발성 메모리 장치들(110a~110d)로 전달된다. 그리고 카운터(CT)의 카운트가 증가된다.
셋째로, 카운트가 쓰기 문턱(WT)에 도달하지 않았고, 그리고 커맨드 큐(122)로부터 꺼내진 커맨드가 쓰기 커맨드이면, 쓰기 커맨드가 잘려 서브 커맨드들이 생성된다. 서브 커맨드들은 서브 큐(125)에 인큐된다. 서브 커맨드들이 첫 번째 커맨드들이 아니면, 카운터(CT)의 카운트가 증가되지 않고 유지된다.
넷째로, 카운트가 쓰기 문턱(WT)에 도달하지 않았고, 그리고 커맨드 큐(122)로부터 꺼내진 커맨드가 쓰기 커맨드이면, 쓰기 커맨드가 잘려 서브 커맨드들이 생성된다. 서브 커맨드들은 서브 큐(125)에 인큐된다. 서브 커맨드들이 첫 번째 커맨드들이면, 서브 큐(125)로부터 하나의 서브 큐가 꺼내지고, 꺼내진 서브 큐가 불휘발성 메모리 장치들(110a~110d)로 전달된다. 카운터(CT)의 카운트를 리셋된다.
예시적으로, 선택기(126)로부터 출력되는 커맨드(또는 서브 커맨드)는 주소들 또는 주소 범위에 따라 불휘발성 메모리 장치들(110a~110d) 중 하나 또는 그보다 많은 것들로 전달될 수 있다. 커맨드(또는 서브 커맨드)를 수신한 불휘발성 메모리 장치 또는 불휘발성 메모리 장치들은 커맨드(또는 서브 커맨드)에 따라 동작할 수 있다.
도 5는 본 발명의 실시 예에 따른 제어기(120)에서 커맨드들이 처리되는 예를 보여준다. 예시적으로, 제어기(120)의 구성 요소들 중 커맨드들이 처리되는 데에 필요한 일부 구성 요소들이 도 5에 도시되고, 나머지 구성 요소들은 생략된다. 또한, 본 발명의 기술적 사상을 간결히 설명하기 위하여, 읽기 커맨드들 및 쓰기 커맨드들만이 수신되는 것으로 가정된다. 그러나 커맨드 큐(122)에 읽기 커맨드들 및 쓰기 커맨드들 외의 다른 커맨드들 또한 인큐될 수 있음이 이해될 것이다.
도 4 및 도 5를 참조하면, 커맨드 큐(122)에 제1 및 제2 읽기 커맨드들(R1, R2), 제1 쓰기 커맨드(W1), 제3 내지 제5 읽기 커맨드들(R3~R5), 제2 쓰기 커맨드(W2), 그리고 제6 읽기 커맨드(R6)가 순차적으로 커맨드 큐(122)에 인큐될 수 있다.
서브 큐(125)가 비어있으므로, S310 단계에서, 커맨드 큐(122)로부터 커맨드가 꺼내질 수 있다. 커맨드 큐(122)의 맨 앞에 제1 읽기 커맨드(R1)가 저장되어 있으므로, 제1 읽기 커맨드(R1)를 꺼내지고 변환 계층(128)으로 전달된다. S315 단계에서, 변환 계층(128)은 변환 단위에 따라 제1 읽기 커맨드(R1)를 자를 수 있다.
예를 들어, 제1 읽기 커맨드(R1)와 연관된 주소 범위(또는 주소들)이 변환 단위의 5배이면, 변환 계층(128)은 제1 읽기 커맨드(R1)의 주소 범위를 다섯 개의 주소 범위들로 자를 수 있다. 잘려진 주소 범위들은 각각 장치 커맨드들(예를 들어, 장치 읽기 커맨드들)과 연관될 수 있다.
S320 단계 내지 S340 단계에서, 장치 커맨드들은 각각 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 예를 들어, 장치 커맨드들은 동일한 직접 메모리 액세스를 통해 동일한 불휘발성 메모리 장치로 전달되거나 또는 상이한 직접 메모리 액세스들을 통해 상이한 불휘발성 메모리 장치들로 전달될 수 있다. 장치 커맨드들이 서로 다른 직접 메모리 액세스들을 통해 출력되는 경우, 장치 커맨드들은 순차적으로 출력되지 않고 병렬로 출력될 수 있다.
S345 단계에서, 커맨드 큐(122)로부터 다음 커맨드가 꺼내진다. 예를 들어, 제1 읽기 커맨드(R1)의 다음에 저장된 제2 읽기 커맨드(R2)가 꺼내질 수 있다. S350 단계에서, 제2 읽기 커맨드(R2)는 변환 단위에 따라 잘려진다. 예시적으로, 제2 읽기 커맨드(R2)의 주소 범위는 다섯 개의 주소 범위들로 자를 수 있다. 잘려진 주소 범위들은 각각 장치 커맨드들(예를 들어, 장치 읽기 커맨드들)과 연관될 수 있다.
S355 단계 내지 S385 단계에서, 장치 커맨드들은 각각 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 예시적으로, 변환 계층(128)이 제1 읽기 커맨드(R1)의 변환을 완료하면, 제1 읽기 커맨드(R1)의 장치 커맨드들이 메모리 액세스(129) 또는 불휘발성 메모리(110)로 전달되기 전이라도 변환 계층(128)은 제2 읽기 커맨드(R2)의 변환을 시작할 수 있다.
도 6은 도 5에 이어서 제어기(120)에서 커맨드들이 처리되는 예를 보여준다. 도 3, 도 5 및 도 6을 참조하면, 커맨드 큐(122)에서 제2 읽기 커맨드(R2)의 다음에 저장된 제1 쓰기 커맨드(W1)가 맨 앞의 개체에 저장될 수 있다. 제3 내지 제5 읽기 커맨드들(R1~R5), 제2 쓰기 커맨드(W2) 및 제6 읽기 커맨드(R6)의 위치 또한 제1 쓰기 커맨드(W1)를 따라 이동될 수 있다. 이후에, 제7 및 제8 읽기 커맨드들(R7, R8)이 커맨드 큐(122)에 인큐될 수 있다.
서브 큐(125)가 비어있는 상태이므로, 커맨드 큐(122)로부터 제1 쓰기 커맨드(W1)가 꺼내진다. 제1 쓰기 커맨드(W1)와 연관된 주소 범위, 즉 제1 쓰기 데이터(WD1)의 사이즈는 미리 정해진 자름 단위(slice unit)의 3배일 수 있다. 따라서, S390 단계에서, 제1 쓰기 커맨드(W1)는 제1 내지 제3 서브 커맨드들(SC1~SC3)로 잘려질 수 있다. 제1 내지 제3 서브 커맨드들(SC1~SC3)은 서브 큐(125)에 인큐될 수 있다.
S395 단계에서, 데이터 메모리(123)에서 제1 쓰기 데이터(WD1)는 제1 내지 제3 서브 데이터 요소들(SD1~SD3)로 잘려질 수 있다. 예를 들어, 제1 쓰기 데이터(WD1)는 데이터 메모리(123)에서 실제로 잘려지지 않고 개념적으로 잘릴 수 있다. 예를 들어, 제1 쓰기 커맨드(W1)의 주소 범위가 제1 내지 제3 서브 커맨드들(SC1~SC3)의 주소 범위들로 잘려짐에 따라, 제1 쓰기 데이터(WD1)가 제1 내지 제3 서브 데이터 요소들(SD1~SD3)로 잘려지는 것으로 이해될 수 있다.
예를 들어, 자름 단위는 변환 계층(128)의 변환 단위와 연관될 수 있다. 자름 단위는 변환 계층(128)의 변환 단위의 정수배로 설정될 수 있다. 다른 예로서, 자름 단위는 불휘발성 메모리 장치의 쓰기 또는 읽기의 단위의 정수배로 설정될 수 있다. 다른 예로서, 자름 단위는 직접 메모리 액세스의 액세스 단위의 정수배로 설정될 수 있다.
도 7은 도 6에 이어서 제어기(120)에서 커맨드들이 처리되는 예를 보여준다. 도 3, 도 6 및 도 7을 참조하면, 커맨드 큐(122)에서 제3 내지 제5 읽기 커맨드들(R3~R5), 제2 쓰기 커맨드(W2), 그리고 제6 내지 제8 읽기 커맨드들(R6~R8)의 위치가 이동되고, 제3 쓰기 커맨드(W3)가 인큐될 수 있다.
제1 내지 제3 서브 커맨드들(SC1~SC3)은 서브 큐(125)가 비어있던 상태에서 인큐된 첫 번째 서브 커맨드들이다. 따라서, S410 단계에서, 서브 큐(125)로부터 제1 서브 커맨드(SC1)가 꺼내진다. 제1 서브 커맨드(SC1)는 변환 계층(128)에서 변환 단위에 따라 잘리고 그리고 변환되고, 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다.
S415 단계에서, 제1 서브 커맨드(SC1)와 연관된 제1 서브 데이터 요소(SD1)가 데이터 메모리(123)로부터 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 제1 서브 커맨드(SC1)가 전송됨에 따라, 카운터(CT)의 카운트가 리셋될(예를 들어, 0으로) 수 있다.
예시적으로, 쓰기 문턱(WT)은 2인 것으로 가정된다. 카운트(예를 들어, 0)가 쓰기 문턱(WT, 예를 들어, 2)보다 작으므로, S420 단계에서, 커맨드 큐(122)로부터 제3 읽기 커맨드(R3)가 꺼내진다. 제3 읽기 커맨드(R3)는 변환 계층(128)에서 변환 단위에 따라 잘리고 그리고 변환되고, 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 카운터(CT)의 카운트가 증가(예를 들어 1로)될 수 있다.
카운트(예를 들어, 1)가 쓰기 문턱(WT, 예를 들어, 2)보다 작으므로, S425 단계에서, 커맨드 큐(122)로부터 제4 읽기 커맨드(R4)가 꺼내진다. 제4 읽기 커맨드(R4)는 변환 계층(128)에서 변환 단위에 따라 잘리고 그리고 변환되고, 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 카운터(CT)의 카운트가 증가(예를 들어 2로)될 수 있다.
카운트(예를 들어, 2)가 쓰기 문턱(WT, 예를 들어, 2)에 도달하였으므로, S430 단계에서 서브 큐(125)로부터 제2 서브 커맨드(SC2)가 꺼내진다. 제2 서브 커맨드(SC2)는 변환 계층(128)에서 변환 단위에 따라 잘려지고 그리고 변환되고, 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. S435 단계에서, 제2 서브 커맨드(SC2)와 연관된 제2 서브 데이터 요소(SD2)가 데이터 메모리(123)로부터 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 제2 서브 커맨드(SC2)가 전송됨에 따라, 카운터(CT)의 카운트가 리셋될(예를 들어, 0으로) 수 있다.
카운트(예를 들어, 0)가 쓰기 문턱(WT, 예를 들어, 2)보다 작으므로, S440 단계에서, 커맨드 큐(122)로부터 제5 읽기 커맨드(R5)가 꺼내진다. 제5 읽기 커맨드(R5)는 변환 계층(128)에서 변환 단위에 따라 잘리고 그리고 변환되고, 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 카운터(CT)의 카운트가 증가(예를 들어 1로)될 수 있다.
카운트(예를 들어, 1)가 쓰기 문턱(WT, 예를 들어, 2)보다 작으므로, S445 단계에서, 커맨드 큐(122)로부터 제2 쓰기 커맨드(W2)가 꺼내진다. 제2 쓰기 커맨드(W2)와 연관된 제2 쓰기 데이터(WD2)의 사이즈(또는 주소 범위)가 자름 단위의 2배인 것으로 가정된다. 제2 쓰기 커맨드(W2)는 자름 단위에 따라 두 개의 서브 커맨드들, 즉 제4 및 제5 서브 커맨드들(SC4, SC5)로 잘릴 수 있다. 제4 및 제5 서브 커맨드들(SC4, SC5)은 서브 큐(125)에 인큐될 수 있다.
S450 단계에서, 제2 쓰기 커맨드가 제4 및 제5 서브 커맨드들(SC4, SC5)로 잘림에 따라, 데이터 메모리(123)에서 제2 쓰기 데이터(WD2)가 제4 및 제5 서브 데이터 요소들(SD4, SD5)로 잘릴 수 있다. 예를 들어, 제2 쓰기 데이터(WD2)는 실제로 잘리기 보다는, 제2 쓰기 커맨드의 주소 범위가 제4 및 제5 서브 커맨드들(SC4, SC5)의 주소 범위들로 잘림에 따라 개념적으로 잘릴 수 있다. 제4 및 제5 서브 커맨드들(SC4, SC5)이 첫 번째 서브 커맨드들이 아니므로, 카운트는 유지(예를 들어, 1)된다.
카운트(예를 들어, 1)가 쓰기 문턱(WT, 예를 들어, 2)보다 작으므로, S455 단계에서, 커맨드 큐(122)로부터 제6 읽기 커맨드(R6)가 꺼내진다. 제6 읽기 커맨드(R6)는 변환 계층(128)에서 변환 단위에 따라 잘리고 그리고 변환되고, 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 카운터(CT)의 카운트가 증가(예를 들어 2로)될 수 있다.
카운트(예를 들어, 2)가 쓰기 문턱(WT, 예를 들어, 2)에 도달하였으므로, S460 단계에서 서브 큐(125)로부터 제3 서브 커맨드(SC3)가 꺼내진다. 제3 서브 커맨드(SC3)는 변환 계층(128)에서 변환 단위에 따라 잘려지고 그리고 변환되고, 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. S465 단계에서, 제3 서브 커맨드(SC3)와 연관된 제3 서브 데이터 요소(SD3)가 데이터 메모리(123)로부터 메모리 액세스(129)를 통해 불휘발성 메모리(110)로 전달될 수 있다. 제3 서브 커맨드(SC3)가 전송됨에 따라, 카운터(CT)의 카운트가 리셋될(예를 들어, 0으로) 수 있다.
도 5 내지 도 7을 참조하여 설명된 실시 예들에서, 제1 쓰기 커맨드(W1)는 제1 내지 제3 서브 커맨드들(SC1~SC3)로 분할되어 점진적으로(또는 단계적으로) 처리된다. 제1 쓰기 커맨드가 점진적으로 처리되는 동안, 제1 쓰기 커맨드(W1)보다 늦게 수신된 제3 내지 제6 읽기 커맨드들(R3~R6)이 처리된다. 제3 내지 제6 읽기 커맨드들(R3~R6)이 처리된 후에, 제1 쓰기 커맨드(W1)가 처리 완료된다. 따라서, 제1 쓰기 커맨드(W1)에 의해 제3 내지 제6 읽기 커맨드들(R3~R6)의 처리가 지연되는 것이 방지된다.
도 8은 외부의 호스트 장치(10)가 제어기(120)로 전송하는 커맨드들의 예를 보여준다. 도 1 및 도 8을 참조하면, 외부의 호스트 장치(10)는 제어기(120)로 제1 및 제2 읽기 커맨드들(R1, R2), 제1 쓰기 커맨드(W1), 제3 내지 제5 읽기 커맨드들(R3~R5), 제2 쓰기 커맨드(W2), 제6 내지 제8 읽기 커맨드들(R6~R8), 그리고 제3 쓰기 커맨드(W3)를 순차적으로 전송할 수 있다.
도 9는 도 8의 순서에 따라 제어기(120)에 커맨드가 수신될 때, 제어기(120)가 불휘발성 메모리(110)로 장치 커맨드들을 전송하는 예를 보여준다. 도 1, 도 8 및 도 9를 참조하면, 외부의 호스트 장치(10)가 제1 및 제2 읽기 커맨드들(R1, R2)을 제어기(120)로 전송함에 따라, 제어기(120)는 불휘발성 메모리(110)로 제1 및 제2 읽기 커맨드들(R1, R2)을 전송할 수 있다.
제어기(120)는 제1 및 제2 읽기 커맨드들(R1, R2) 각각의 주소 범위를 변환 단위에 따라 잘라 장치 읽기 커맨드들을 생성하고, 장치 읽기 커맨드들을 불휘발성 메모리(110)로 전송할 수 있다. 잘려서 생성되는 장치 읽기 커맨드들은 도 9에서 제1 및 제2 읽기 커맨드들(R1, R2)에 각각 대응하는 복수의 화살표들로 표시되어 있다.
제어기(120)는 불휘발성 메모리(110)로 제1 읽기 커맨드(R1)를 전송하여 읽기를 완료하고, 제2 읽기 커맨드(R2)를 전송하여 읽기를 완료할 수 있다. 외부의 호스트 장치(10)가 제1 쓰기 커맨드(W1)를 전송함에 따라, 제어기(120)는 제1 쓰기 커맨드(W1)의 주소 범위를 자름 단위로 잘라 서브 커맨드들을 생성할 수 있다.
제어기(120)는 서브 커맨드들(SC1~SC3) 중 하나(예를 들어, SC1)를 불휘발성 메모리로 전송할 수 있다. 제어기(120)는 제1 서브 커맨드(SC1)의 주소 범위를 변환 단위에 따라 잘라 장치 커맨드들을 생성하고, 장치 커맨드들을 불휘발성 메모리(110)로 전송할 수 있다. 잘려서 생성되는 장치 커맨드들은 도 9에서 제1 서브 커맨드들(SC1)에 대응하는 복수의 화살표들로 표시되어 있다.
제1 서브 커맨드(SC1)가 전송되면, 불휘발성 메모리(110)에서 제1 쓰기 커맨드(W1)에 대응하는 쓰기가 진척된다. 외부의 호스트 장치(10)가 제3 및 제4 읽기 커맨드들(R3, R4)을 전송함에 따라, 제어기(120)는 불휘발성 메모리(110)로 제3 및 제4 읽기 커맨드들(R3, R4)을 전송할 수 있다. 제3 및 제4 읽기 커맨드들(R3, R4)에 의해 읽기들이 완료될 수 있다.
제어기(120)는 제1 쓰기 커맨드(W1)의 서브 커맨드들(SC1~SC3) 중 다른 하나(예를 들어, SC2)를 불휘발성 메모리로 전송할 수 있다. 제2 서브 커맨드(SC2)가 전송되면, 불휘발성 메모리(110)에서 제1 쓰기 커맨드(W1)에 대응하는 쓰기가 진척된다. 외부의 호스트 장치(10)가 제5 및 제6 읽기 커맨드들(R5, R6)을 전송함에 따라, 제어기(120)는 불휘발성 메모리(110)로 제5 및 제6 읽기 커맨드들(R5, R6)을 전송할 수 있다. 제5 및 제6 읽기 커맨드들(R5, R6)에 의해 읽기들이 완료될 수 있다.
제어기(120)는 제1 쓰기 커맨드(W1)의 서브 커맨드들(SC1~SC3) 중 다른 하나(예를 들어, SC3)를 불휘발성 메모리로 전송할 수 있다. 제3 서브 커맨드(SC3)가 전송되면, 불휘발성 메모리(110)에서 제1 쓰기 커맨드(W1)에 대응하는 쓰기가 진척된다. 예를 들어, 제1 쓰기 커맨드(W1)에 대응하는 쓰기가 진척되어 완료될 수 있다.
본 발명의 실시 예에 따르면, 제어기(120)는 스케줄링에 의해 쓰기 커맨드를 처리할 차례가 되었을 때, 쓰기 커맨드의 주소 범위를 잘라 단계적으로 처리한다. 잘려진 서브 커맨드들은 쓰기 커맨드의 다음으로 수신되는 읽기 커맨드들과 교대로 처리된다. 따라서, 대용량의 쓰기에 의해 후속하는 읽기들이 지연되는 것이 방지된다.
도 10은 제어기(120)가 쓰기 데이터의 사이즈에 따라 자름 여부를 판단하는 예를 보여주는 순서도이다. 도 1, 도 3 및 도 10을 참조하면, S510 단계에서, 슬라이서(124)는 커맨드 큐(122)로부터 쓰기 커맨드를 꺼낼 수 있다. S520 단계에서, 슬라이서(124)는 쓰기 커맨드와 연관된 쓰기 데이터의 사이즈가 사이즈 문턱보다 작은지 판단할 수 있다.
쓰기 데이터의 사이즈가 사이즈 문턱보다 작지 않으면, 즉 쓰기 데이터의 사이즈가 사이즈 문턱과 같거나 그보다 크면, S530 단계에서, 슬라이서(124)는 자름 단위(slice unit)에 따라 쓰기 커맨드 및 쓰기 데이터를 잘라 서브 커맨드들 및 서브 데이터 요소를 생성할 수 있다. 서브 커맨드들은 서브 큐(125)에 인큐될 수 있다.
쓰기 데이터의 사이즈가 사이즈 문턱보다 작으면, S540 단계에서, 슬라이서(124)는 쓰기 커맨드 및 쓰기 데이터를 자르지 않을 수 있다. 예를 들어, 슬라이서(124)는 쓰기 커맨드를 자르지 않고, 쓰기 커맨드를 서브 큐(125)에 인큐할 수 있다. 서브 큐(125)에 인큐된 쓰기 커맨드는 서브 큐(125)에 인큐된 다른 서브 커맨드들과 동일하게 관리되고 처리될 수 있다. 즉, 쓰기 커맨드가 서브 커맨드로 식별되는 것으로 이해될 수 있다.
도 11은 제어기(120)가 사이즈 문턱 또는 자름 단위를 조절하는 예를 보여주는 순서도이다. 예시적으로, 도 11에 도시된 동작들은 슬라이서(124)에 의해, 스케줄러(127)에 의해, 또는 제어기(120)에 추가되는 별도 로직에 의해 수행될 수 있다. 도 1, 도 3 및 도 11을 참조하면, S610 단계에서, 서브 큐(125)의 자유 개체들(free entities)의 수가 하부 문턱보다 작은지 판단된다.
자유 개체들의 수가 하부 문턱보다 작으면, S620 단계에서, 자름이 금지된다. 슬라이서(124)는 쓰기 커맨드와 연관된 주소 범위의 크기 또는 쓰기 데이터의 사이즈에 관계없이, 쓰기 커맨드 또는 쓰기 데이터를 자르지 않을 수 있다. 슬라이서(124)는 쓰기 커맨드를 자르지 않고 서브 큐(125)에 인큐할 수 있다.
자유 개체들의 수가 하부 문턱보다 작지 않으면, S630 단계가 수행된다. S630 단계에서, 서브 큐(125)의 자유 개체들의 수가 증가하는지 판단된다. 예를 들어, 자유 개체들의 수가 범위화될 수 있다. 제1 범위에 속한 자유 개체들의 수들은 제2 범위에 속한 자유 개체들의 수들보다 작을 수 있다. 자유 개체들의 수가 증가하여 제1 범위로부터 제2 범위로 변경되는지 판단될 수 있다.
자유 개체들의 수가 증가하면, S640 단계에서, 사이즈 문턱 또는 자름 단위가 감소될 수 있다. 사이즈 문턱이 감소하면, 더 작은 사이즈의 쓰기 데이터와 연관된 쓰기 커맨드가 자름의 대상이 될 수 있다. 즉, 더 많은 수의 쓰기 커맨드들이 자름의 대상이 될 수 있다. 자름 단위가 감소하면, 쓰기 커맨드가 더 많은 서브 커맨드들로 잘릴 수 있다. 즉, 읽기 커맨드들의 지연이 더 감소될 수 있다.
자유 개체들의 수가 증가하지 않으면, S650 단계가 수행된다. S650 단계에서, 서브 큐(125)의 자유 개체들의 수가 감소하는지 판단된다. 예를 들어, 자유 개체들의 수가 감소하여 제2 범위로부터 제1 범위로 변경되는지 판단될 수 있다.
자유 개체들의 수가 감소하면, S660 단계에서, 사이즈 문턱 또는 자름 단위가 증가될 수 있다. 사이즈 문턱이 증가하면, 작은 사이즈의 쓰기 데이터와 연관된 쓰기 커맨드가 자름의 대상으로부터 해제될 수 있다. 즉, 더 적은 수의 쓰기 커맨드들이 자름의 대상이 될 수 있다. 자름 단위가 증가하면, 쓰기 커맨드가 더 적은 서브 커맨드들로 잘릴 수 있다. 즉, 쓰기 커맨드의 지연이 더 감소될 수 있다. 자유 개체들의 수가 감소하지 않으면, 사이즈 문턱 또는 자름 단위가 변경되지 않고 유지된다.
예시적으로, 도 11에 도시된 사이즈 문턱 또는 자름 단위의 조절은 슬라이서(124)가 커맨드 큐(122) 또는 서브 큐(125)로부터 쓰기 커맨드 또는 서브 커맨드를 꺼낼 때에, 슬라이서(124)가 커맨드 큐(122) 또는 서브 큐(125)로부터 특정한 개수의 쓰기 커맨드들 또는 서브 커맨드들을 꺼낼 때에, 서브 큐(125)의 자유 개체들의 수가 속한 범위가 변경될 때에, 또는 스케줄러(127)와 같은 제어 블록의 요청에 의해 수행될 수 있다.
도 12는 제어기(120)가 사이즈 문턱 또는 자름 단위를 조절하는 다른 예를 보여주는 순서도이다. 예시적으로, 도 12에 도시된 동작들은 슬라이서(124)에 의해, 스케줄러(127)에 의해, 또는 제어기(120)에 추가되는 별도 로직에 의해 수행될 수 있다. 도 1, 도 3 및 도 12를 참조하면, S710 단계에서, 제어기(120)에 계류 중인 쓰기 커맨드들의 수(또는 쓰기 지연량)이 상부 문턱보다 큰지 판단된다.
계류 중인 쓰기 커맨드들의 수(또는 쓰기 지연량)가 상부 문턱보다 크면, S720 단계에서, 자름이 금지된다. 슬라이서(124)는 쓰기 커맨드와 연관된 주소 범위의 크기 또는 쓰기 데이터의 사이즈에 관계없이, 쓰기 커맨드 또는 쓰기 데이터를 자르지 않을 수 있다. 슬라이서(124)는 쓰기 커맨드를 자르지 않고 서브 큐(125)에 인큐할 수 있다.
계류 중인 쓰기 커맨드들의 수(또는 쓰기 지연량)가 상부 문턱보다 크지 않으면, S730 단계가 수행된다. S730 단계에서, 계류 중인 쓰기 커맨드들의 수(또는 쓰기 지연량)가 증가하는지 판단된다. 예를 들어, 계류 중인 쓰기 커맨드들의 수(또는 쓰기 지연량)가 범위화될 수 있다. 제1 범위에 속한 쓰기 커맨드들의 수들(또는 쓰기 지연량)은 제2 범위에 속한 쓰기 커맨드들의 수들(또는 쓰기 지연량)보다 작을 수 있다. 쓰기 커맨드들의 수(또는 쓰기 지연량)가 증가하여 제1 범위로부터 제2 범위로 변경되는지 판단될 수 있다.
쓰기 커맨드들의 수(또는 쓰기 지연량)가 증가하면, S740 단계에서, 사이즈 문턱 또는 자름 단위가 증가될 수 있다. 사이즈 문턱이 증가하면, 작은 사이즈의 쓰기 데이터와 연관된 쓰기 커맨드가 자름의 대상으로부터 해제될 수 있다. 즉, 더 적은 수의 쓰기 커맨드들이 자름의 대상이 될 수 있다. 자름 단위가 증가하면, 쓰기 커맨드가 더 적은 서브 커맨드들로 잘릴 수 있다. 즉, 쓰기 커맨드의 지연이 더 감소될 수 있다.
쓰기 커맨드들의 수(또는 쓰기 지연량)가 증가하지 않으면, S750 단계가 수행된다. S750 단계에서, 쓰기 커맨드들의 수(또는 쓰기 지연량)가 감소하는지 판단된다. 예를 들어, 쓰기 커맨드들의 수(또는 쓰기 지연량)가 감소하여 제2 범위로부터 제1 범위로 변경되는지 판단될 수 있다.
쓰기 커맨드들의 수(또는 쓰기 지연량)가 감소하면, S760 단계에서, 사이즈 문턱 또는 자름 단위가 감소될 수 있다. 사이즈 문턱이 감소하면, 더 작은 사이즈의 쓰기 데이터와 연관된 쓰기 커맨드가 자름의 대상이 될 수 있다. 즉, 더 많은 수의 쓰기 커맨드들이 자름의 대상이 될 수 있다. 자름 단위가 감소하면, 쓰기 커맨드가 더 많은 서브 커맨드들로 잘릴 수 있다. 즉, 읽기 커맨드들의 지연이 더 감소될 수 있다. 쓰기 커맨드들의 수(또는 쓰기 지연량)가 감소하지 않으면, 사이즈 문턱 또는 자름 단위가 변경되지 않고 유지된다.
예시적으로, 도 12에 도시된 사이즈 문턱 또는 자름 단위의 조절은 슬라이서(124)가 커맨드 큐(122) 또는 서브 큐(125)로부터 쓰기 커맨드 또는 서브 커맨드를 꺼낼 때에, 슬라이서(124)가 커맨드 큐(122) 또는 서브 큐(125)로부터 특정한 개수의 쓰기 커맨드들 또는 서브 커맨드들을 꺼낼 때에, 쓰기 커맨드들의 수(또는 쓰기 지연량)가 속한 범위가 변경될 때에, 또는 스케줄러(127)와 같은 제어 블록의 요청에 의해 수행될 수 있다.
도 13은 제어기(120)가 쓰기 문턱을 조절하는 예를 보여주는 순서도이다. 예시적으로, 도 13에 도시된 동작들은 스케줄러(127)에 의해, 또는 제어기(120)에 추가되는 별도 로직에 의해 수행될 수 있다. 도 1, 도 3 및 도 13을 참조하면, S810 단계에서, 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)이 증가하는지 판단된다.
예를 들어, 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율이 범위화될 수 있다. 제1 범위에 속한 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)은 제2 범위에 속한 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)보다 작을 수 있다.
쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)이 증가하여 제1 범위로부터 제2 범위로 변경되는지 판단될 수 있다. 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 또는 쓰기 커맨드들의 지연량이 증가하면, 쓰기의 처리에 대한 요구가 증가하는 것으로 이해될 수 있다. 변환 계층(128)의 비지 비율이 증가하면, 변환 계층(128)의 업무 부하를 낮추는 요구가 증가하는 것으로 이해될 수 있다.
따라서, S820 단계에서 쓰기 문턱이 감소된다. 쓰기 문턱이 감소하면, 연속한 서브 커맨드들 사이의 읽기 커맨드들의 수가 감소한다. 즉, 제어기(120)는 읽기 커맨드에 대한 쓰기 커맨드의 처리 비율을 높일 수 있다. 쓰기 커맨드는 연속적인 주소 범위에 대한 쓰기 데이터와 연관된다. 따라서, 변환 계층(128)의 업무 부하 또한 감소된다.
쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)이 증가하지 않으면, S830 단계가 수행된다. S830 단계에서, 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)이 감소하는지 판단된다.
예를 들어, 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)이 감소하여 제2 범위로부터 제1 범위로 변경되는지 판단될 수 있다. 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 또는 쓰기 커맨드들의 지연량이 감소하면, 쓰기의 처리에 대한 요구가 감소하는 것으로 이해될 수 있다. 변환 계층(128)의 비지 비율이 증가하면, 변환 계층(128)의 업무 부하를 낮추는 요구가 감소하는 것으로 이해될 수 있다.
따라서, S840 단계에서 쓰기 문턱이 증가된다. 쓰기 문턱이 증가하면, 연속한 서브 커맨드들 사이의 읽기 커맨드들의 수가 증가한다. 즉, 제어기(120)는 쓰기 커맨드에 대한 읽기 커맨드의 처리 비율을 높일 수 있다. 읽기 커맨드는 불연속적인 주소 범위들과 연관된다. 따라서, 변환 계층(128)의 업무 부하 또한 증가한다. 쓰기 데이터의 사이즈, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)이 감소하지 않으면, 쓰기 문턱은 조절되지 않고 유지된다.
예시적으로, 도 13에 도시된 쓰기 문턱의 조절은 슬라이서(124)가 커맨드 큐(122) 또는 서브 큐(125)로부터 쓰기 커맨드 또는 서브 커맨드를 꺼낼 때에, 슬라이서(124)가 커맨드 큐(122) 또는 서브 큐(125)로부터 특정한 개수의 쓰기 커맨드들 또는 서브 커맨드들을 꺼낼 때에, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)이 속한 범위가 변경될 때에, 또는 스케줄러(127)와 같은 제어 블록의 요청에 의해 수행될 수 있다.
도 14는 제어기(120)가 쓰기 문턱을 조절하는 다른 예를 보여주는 순서도이다. 예시적으로, 도 14에 도시된 동작들은 스케줄러(127)에 의해, 또는 제어기(120)에 추가되는 별도 로직에 의해 수행될 수 있다. 도 1, 도 3 및 도 14를 참조하면, S910 단계에서, 사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 증가하는지 판단된다.
예를 들어, 사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 범위화될 수 있다. 제1 범위에 속한 쓰기 사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율은 제2 범위에 속한 사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율보다 작을 수 있다.
사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 증가하여 제1 범위로부터 제2 범위로 변경되는지 판단될 수 있다. 사용 중인 쓰기 자원들의 비율이 증가하면, 쓰기의 업무 부하가 증가하는 것으로 이해될 수 있다. 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 증가하면, 읽기의 처리에 대한 요구가 증가하는 것으로 이해될 수 있다.
따라서, S90 단계에서 쓰기 문턱이 증가된다. 쓰기 문턱이 증가하면, 연속한 서브 커맨드들 사이의 읽기 커맨드들의 수가 증가한다. 즉, 제어기(120)는 쓰기 커맨드에 대한 읽기 커맨드의 처리 비율을 높일 수 있다. 쓰기 커맨드가 덜 빈번하게 처리되므로, 쓰기 자원들의 사용량이 감소할 수 있다.
사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 증가하지 않으면, S930 단계가 수행된다. S930 단계에서, 사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 감소하는지 판단된다.
예를 들어, 사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 감소하여 제2 범위로부터 제1 범위로 변경되는지 판단될 수 있다. 사용 중인 쓰기 자원들의 비율이 감소하면, 쓰기 자원들에 여유가 있는 것으로 이해될 수 있다. 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 감소하면, 쓰기의 처리에 대한 요구가 증가하는 것으로 이해될 수 있다.
따라서, S940 단계에서 쓰기 문턱이 감소된다. 쓰기 문턱이 감소하면, 연속한 서브 커맨드들 사이의 읽기 커맨드들의 수가 감소한다. 즉, 제어기(120)는 읽기 커맨드에 대한 쓰기 커맨드의 처리 비율을 높일 수 있다. 사용 중인 쓰기 자원들의 비율 또는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율이 감소하지 않으면, 쓰기 문턱은 조절되지 않고 유지된다.
예시적으로, 도 14에 도시된 쓰기 문턱의 조절은 슬라이서(124)가 커맨드 큐(122) 또는 서브 큐(125)로부터 쓰기 커맨드 또는 서브 커맨드를 꺼낼 때에, 슬라이서(124)가 커맨드 큐(122) 또는 서브 큐(125)로부터 특정한 개수의 쓰기 커맨드들 또는 서브 커맨드들을 꺼낼 때에, 계류중인 쓰기 커맨드들의 수, 쓰기 커맨드들의 지연량, 또는 변환 계층(128)의 비지 비율(busy ratio)이 속한 범위가 변경될 때에, 또는 스케줄러(127)와 같은 제어 블록의 요청에 의해 수행될 수 있다.
예시적으로, 도 11 내지 도 14에서, 제1 및 제2 범위들을 참조하여 본 발명의 실시 예들이 설명되었다. 그러나 본 발명에 따른 범위들의 수는 두 개로 한정되지 않는다. 임의의 개수의 범위들이 본 발명의 실시 예에 적용될 수 있다.
도 15는 읽기 커맨드의 주소들과 쓰기 커맨드의 주소들이 중복될 때의 예를 보여주는 순서도이다. 도 1, 도 3 및 도 15를 참조하면, S1010 단계에서, 스케줄러(127)는 커맨드 큐(122)로부터 꺼내진 읽기 커맨드의 읽기 주소들이 진행 중인 쓰기 커맨드의 쓰기 주소들을 포함하는지 판단할 수 있다. 진행 중인 쓰기 커맨드는 서브 커맨드들이 서브 큐(125)에 계류중인 쓰기 커맨드를 의미한다.
S1020 단계에서, 스케줄러(127)는 제어기(120)의 설정이 제1 모드인지 또는 제2 모드인지 판단한다. 예를 들어, 제1 모드는 쓰기 우선 모드이고, 제2 모드는 읽기 우선 모드일 수 있다. 제어기(120)의 설정이 제1 모드이면 S1030 단계가 수행된다.
S1030 단계에서, 스케줄러(127)는 진행 중인 쓰기를 완료하도록 선택기(126)를 제어할 수 있다. 예를 들어, 스케줄러(127)는 진행 중인 쓰기가 완료될 때까지 커맨드 큐(122)를 선택하지 않고 서브 큐(125)를 선택하도록 선택기(126)를 제어할 수 있다.
예를 들어, 읽기 커맨드와 연관된 쓰기 커맨드의 서브 커맨드들의 이전에 다른 서브 커맨드들이 저장된 경우, 스케줄러(127)는 다른 서브 커맨드들이 처리되고 연관된 쓰기 커맨드의 서브 커맨드들이 처리될 때까지 서브 큐(125)를 선택하도록 선택기(126)를 제어할 수 있다.
다른 예로서, 스케줄러(127)는 연관된 쓰기 커맨드의 서브 커맨드들이 다른 서브 커맨드들보다 먼저 처리되도록, 서브 큐(125) 내의 서브 커맨드들의 위치들을 변경할 수 있다. 즉, 스케줄러(127)는 연관된 쓰기 커맨드의 서브 커맨드들의 우선 순위를 높이는 것으로 이해될 수 있다.
연관된 쓰기 커맨드의 처리가 완료된 후에, S1040 단계에서, 스케줄러(127)는 커맨드 큐(122)를 선택하도록 선택기(126)를 제어할 수 있다. 커맨드 큐(122)로부터 쓰기 커맨드와 연관된 읽기 커맨드가 꺼내지고, 방금 불휘발성 메모리(110)에 기입된 데이터가 불휘발성 메모리(110)로부터 읽혀질 수 있다.
제어기(120)의 설정이 제2 모드이면, S1050 단계가 수행된다. S1050 단계에서, 스케줄러(127)는 읽기 커맨드와 연관된 쓰기 데이터가 데이터 메모리(123)에 존재하는지 판단한다. 연관된 쓰기 데이터가 데이터 메모리(123)에 존재하지 않으면, 스케줄러(127)는 커맨드 큐(122)를 선택하도록 선택기(126)를 제어할 수 있다. 커맨드 큐(122)로부터 쓰기 커맨드와 연관된 읽기 커맨드가 꺼내지고, 불휘발성 메모리(110)에 기입된 데이터가 불휘발성 메모리(110)로부터 읽혀질 수 있다.
연관된 쓰기 데이터가 데이터 메모리(123)에 존재하면, 스케줄러(127)는 커맨드 큐(122)를 선택하도록 선택기(126)를 제어할 수 있다. 커맨드 큐(122)로부터 쓰기 커맨드와 연관된 읽기 커맨드가 꺼내지고, 읽기 커맨드에 응답하여 데이터 메모리(123)로부터 데이터가 읽힐 수 있다. S1010 단계에서, 읽기 주소들이 진행중인 쓰기 주소들을 포함하지 않는 경우, 프로세스는 종료된다.
예시적으로, 제어기(120)는 제1 및 제2 모드들 중 설정된 모드에 따라 읽기 또는 쓰기를 처리하는 대신, 제1 및 제2 모드들 중 하나의 모드만을 수행하도록 설계 또는 제조될 수 있다. 이 경우, 제어기(120)는 제1 모드 또는 제2 모드에 따라 읽기 또는 쓰기를 처리하며, S1020 단계와 같이 모드를 판단하는 동작은 생략될 수 있다.
도 16은 도 3의 제어기(120)의 응용 예를 보여주는 블록도이다. 도 1 및 도 16을 참조하면, 제어기(220)는 호스트 인터페이스(221), 커맨드 큐(222), 데이터 메모리(223), 슬라이서(224), 선택기(226), 스케줄러(227)(scheduler), 변환 계층(228), 그리고 메모리 액세스(229)를 포함한다. 스케줄러(227)는 카운터(CT) 및 쓰기 문턱(WT)을 포함하고, 메모리 액세스(229)는 직접 메모리 액세스들(229a~229d)을 포함한다.
도 3과 비교하면, 제어기(220)는 서브 큐(125)를 갖지 않는다. 제어기(220)의 커맨드 큐(222)는 읽기 커맨드 큐(222R) 및 쓰기 커맨드 큐(222W)를 포함한다. 호스트 인터페이스(221)로부터 전달되는 읽기 커맨드(R)는 읽기 커맨드 큐(222R)에 인큐될 수 있다. 호스트 인터페이스(221)로부터 전달되는 쓰기 커맨드(W)는 슬라이서(224)로 전달될 수 있다.
슬라이서(224)는 쓰기 커맨드(W)를 수신하고, 수신된 쓰기 커맨드(W)를 자를 수 있다. 예를 들어, 도 1 내지 도 14를 참조하여 설명된 바와 같이, 슬라이서(224)는 자름 단위 및 사이즈 문턱에 따라 쓰기 커맨드(W)를 자를 수 있다. 슬라이서(224)는 쓰기 커맨드(W)를 잘라 생성되는 서브 커맨드들(SC)을 쓰기 커맨드 큐(222W)에 인큐할 수 있다. 자르기가 금지된 경우, 슬라이서(224)는 쓰기 커맨드(W)를 자르지 않고 쓰기 커맨드 큐(222W)에 인큐할 수 있다.
커맨드 큐(222) 및 슬라이서(224)의 기능이 변경되는 것을 제외하면, 제어기(220)의 구현 예는 도 3을 참조하여 설명된 제어기(120)의 구현 예와 동일하다. 따라서, 중복되는 구성 요소들에 대한 설명은 생략된다.
도 17은 도 3의 제어기의 구현 예(120) 또는 도 16의 제어기(220)의 구현 예가 하드웨어로 구현되는 예를 보여주는 블록도이다. 도 1 및 도 17을 참조하면, 제어기(120)는 버스(310), 프로세서(330), 내부 랜덤 액세스 메모리(340), 에러 정정 블록(350), 호스트 인터페이스(121), 버퍼 제어 회로(360), 그리고 메모리 인터페이스(370)를 포함한다.
버스(310)는 제어기(120)의 구성 요소들 사이에 채널을 제공하도록 구성된다. 프로세서(330)는 제어기(120)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(330)는 호스트 인터페이스(121)를 통해 외부의 호스트 장치와 통신하고, 메모리 인터페이스(370)를 통해 불휘발성 메모리 장치(110a)와 통신하고, 그리고 버퍼 제어 회로(360)를 통해 랜덤 액세스 메모리(130)와 통신할 수 있다.
프로세서(330)는 내부 랜덤 액세스 메모리(340)를 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용하여 스토리지 장치(100)를 제어할 수 있다. 프로세서(330)는 호스트와의 통신 또는 작업을 전담하도록 특수하계 설계 또는 제조된 제1 프로세서, 그리고 불휘발성 메모리(110)와의 통신 또는 작업을 전담하도록 특수하게 설계 또는 제조된 제2 프로세서를 포함할 수 있다.
내부 랜덤 액세스 메모리(340)는 프로세서(330)의 동작 메모리 또는 캐시 메모리로 사용될 수 있다. 내부 랜덤 액세스 메모리(340)는 프로세서(330)가 실행하는 코드들(328) 및 명령들을 저장할 수 있다. 코드들(328)은 프로세서(330)에 의해 실행된 때에 슬라이서(124), 선택기(126), 스케줄러(127), 그리고 변환 계층(128)의 기능을 수행하도록 설계 또는 제조될 수 있다.
내부 랜덤 액세스 메모리(340)는 커맨드 큐(122)를 포함할 수 있다. 프로세서(330)는 호스트 인터페이스(121)를 통해 수신되는 커맨드들을 커맨드 큐(122)에 인큐할 수 있다. 프로세서(330)는 커맨드 큐(122)로부터 커맨드를 꺼내어 처리할 수 있다. 내부 랜덤 액세스 메모리(340)은 SRAM (Static RAM)을 포함할 수 있다.
에러 정정 블록(350)은 에러 정정을 수행할 수 있다. 에러 정정 블록(350)은 메모리 인터페이스(370)를 통해 불휘발성 메모리 장치(110a)에 기입될 데이터에 기반하여 에러 정정 인코딩을 수행할 수 있다. 에러 정정 인코딩된 데이터는 메모리 인터페이스(370)를 통해 불휘발성 메모리 장치(110a)로 전달될 수 있다. 에러 정정 블록(350)은 불휘발성 메모리 장치(110a)로부터 메모리 인터페이스(370)를 통해 수신되는 데이터에 대해 에러 정정 디코딩을 수행할 수 있다. 예시적으로, 에러 정정 블록(350)은 메모리 인터페이스(370)의 구성 요소로서 메모리 인터페이스(370)에 포함될 수 있다.
호스트 인터페이스(121)는 프로세서(330)의 제어에 따라, 외부의 호스트 장치(10)와 통신하도록 구성된다. 호스트 인터페이스(121)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 통신하도록 구성될 수 있다.
버퍼 제어 회로(360)는 프로세서(330)의 제어에 따라, 랜덤 액세스 메모리(130)를 제어하도록 구성된다. 메모리 인터페이스(370)는 프로세서(330)의 제어에 따라, 불휘발성 메모리 장치(110a)와 통신하도록 구성된다. 메모리 인터페이스(370)는 입출력 채널을 통해 커맨드, 어드레스 및 데이터를 불휘발성 메모리 장치(110a)와 통신할 수 있다. 메모리 인터페이스(370)는 제어 채널을 통해 제어 신호를 불휘발성 메모리 장치(110a)와 통신할 수 있다. 메모리 인터페이스(370)는 메모리 액세스(129)를 포함할 수 있다.
랜덤 액세스 메모리(130)는 데이터 메모리(123)로 사용될 수 있다. 예시적으로, 스토리지 장치(100)에 랜덤 액세스 메모리(130)가 제공되지 않는 경우, 제어기(120)에 버퍼 제어 회로(360)가 제공되지 않을 수 있다. 이때, 랜덤 액세스 메모리(130) 대신에 내부 랜덤 액세스 메모리(340)가 데이터 메모리(123)로 사용될 수 있다.
예시적으로, 프로세서(330)는 코드들(328)을 이용하여 제어기(120)를 제어할 수 있다. 프로세서(330)는 제어기(120)의 내부에 제공되는 불휘발성 메모리 장치(예를 들어, Read Only Memory)로부터 코드들(328)을 로드할 수 있다. 다른 예로서, 프로세서(330)는 불휘발성 메모리(110)로부터 메모리 인터페이스(370)를 통해 코드들(328)을 로드할 수 있다.
도 18은 본 발명의 실시 예에 따른 불휘발성 메모리 장치(110a)를 보여주는 블록도이다. 도 1 및 도 18을 참조하면, 불휘발성 메모리 장치(110a)는 메모리 셀 어레이(111), 행 디코더 회로(112), 페이지 버퍼 회로(113), 패스-페일 체크 회로(115), 데이터 입출력 회로(114), 그리고 제어 로직 회로(116)를 포함한다.
메모리 셀 어레이(111)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 복수의 메모리 셀들을 포함한다. 각 메모리 블록은 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WL), 그리고 적어도 하나의 스트링 선택 라인(SSL)을 통해 행 디코더 회로(112)에 연결될 수 있다.
각 메모리 블록은 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(113)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 복수의 비트 라인들(BL)에 공통으로 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)의 메모리 셀들은 동일한 구조들을 가질 수 있다.
예시적으로, 복수의 메모리 블록들(BLK1~BLKz) 각각은 소거 동작의 단위일 수 있다. 메모리 셀 어레이(111)의 메모리 셀들은 하나의 메모리 블록의 단위로 소거될 수 있다. 하나의 메모리 블록에 속한 메모리 셀들은 동시에 소거될 수 있다. 다른 예로서, 각 메모리 블록은 복수의 서브 블록들로 분할될 수 있다. 복수의 서브 블록들 각각은 소거 동작의 단위일 수 있다.
예시적으로, 복수의 메모리 블록들(BLK1~BLKz) 각각은 블록 어드레스에 의해 식별되는 물리적 저장 공간을 포함할 수 있다. 복수의 워드 라인들(WL) 각각은 행 어드레스에 의해 식별되는 물리적 저장 공간에 대응할 수 있다. 복수의 비트 라인들(BL) 각각은 열 어드레스에 의해 식별되는 물리적 저장 공간에 대응할 수 있다.
예시적으로, 각 메모리 블록은 복수의 물리 페이지들을 포함하며, 각 물리 페이지는 복수의 메모리 셀들을 포함할 수 있다. 각 물리 페이지는 프로그램 동작의 단위일 수 있다. 각 물리 페이지의 메모리 셀들은 동시에 프로그램될 수 있다. 각 물리 페이지는 복수의 논리 페이지들을 포함할 수 있다.
각 물리 페이지의 메모리 셀들 각각에 프로그램되는 비트들은 각각 논리 페이지들을 형성할 수 있다. 각 물리 페이지의 메모리 셀들에 프로그램되는 첫 번째 비트들은 첫 번째 논리 페이지를 형성할 수 있다. 각 물리 페이지의 메모리 셀들에 프로그램되는 K-번째 비트들(K는 양의 정수)은 K-번째 논리 페이지를 형성할 수 있다.
행 디코더 회로(112)는 복수의 접지 선택 라인들(GSL), 복수의 워드 라인들(WL), 그리고 복수의 스트링 선택 라인들(SSL)을 통해 메모리 셀 어레이(111)에 연결된다. 행 디코더 회로(112)는 제어 로직 회로(116)의 제어에 따라 동작한다. 행 디코더 회로(112)는 제어기(120)로부터 입출력 채널을 통해 수신되는 어드레스를 디코딩하고, 디코딩된 어드레스에 따라 스트링 선택 라인들(SSL), 워드 라인들(WL), 그리고 접지 선택 라인들(GSL)에 인가되는 전압들을 제어할 수 있다.
페이지 버퍼 회로(113)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(111)에 연결된다. 페이지 버퍼 회로(113)는 복수의 데이터 라인들(DL)을 통해 데이터 입출력 회로(114)와 연결된다. 페이지 버퍼 회로(113)는 제어 로직 회로(116)의 제어에 따라 동작한다.
데이터 입출력 회로(114)는 복수의 데이터 라인들(DL)을 통해 페이지 버퍼 회로(113)와 연결된다. 데이터 입출력 회로(114)는 페이지 버퍼 회로(113)에 의해 읽힌 데이터를 입출력 채널을 통해 제어기(120)로 출력하고, 제어기(120)로부터 입출력 채널을 통해 수신되는 데이터를 페이지 버퍼 회로(113)로 전달할 수 있다.
패스-페일 체크 회로(PFC)(115)는 검증 읽기 후에, 페이지 버퍼 회로(113)로부터 센싱 결과를 수신할 수 있다. 수신된 센싱 결과에 기반하여, 패스-페일 체크 회로(115)는 쓰기 또는 소거의 패스 또는 페일을 판별할 수 있다.
제어 로직 회로(116)는 제어기(120)로부터 입출력 채널을 통해 커맨드(예를 들어, 장치 커맨드)를 수신하고, 제어 채널을 통해 제어 신호를 수신할 수 있다. 제어 로직 회로(116)는 제어 신호에 응답하여 입출력 채널을 통해 수신되는 커맨드를 수신하고, 입출력 채널을 통해 수신되는 어드레스를 행 디코더 회로(112)로 라우팅하고, 그리고 입출력 채널을 통해 수신되는 데이터를 데이터 입출력 회로(114)로 라우팅할 수 있다.
제어 로직 회로(116)는 수신된 커맨드를 디코딩하고, 디코딩된 커맨드에 따라 불휘발성 메모리 장치(110a)를 제어할 수 있다. 예를 들어, 제어 로직 회로(116)는 읽기 장치 커맨드에 응답하여 읽기를 수행하도록 불휘발성 메모리 장치(110a)를 제어할 수 있다. 제어 로직 회로(116)는 쓰기 장치 커맨드에 응답하여 쓰기를 수행하도록 불휘발성 메모리 장치(110a)를 제어할 수 있다.
서브 커맨드들(SC1~SC3, 도 9 참조)에 따라, 쓰기 데이터는 서로 다른 메모리 셀들, 서로 다른 논리 페이지들, 서로 다른 물리 페이지들, 또는 서로 다른 메모리 블록들에 기입될 수 있다. 즉, 서브 커맨드들(SC1~SC3)에 의해 기입되는 서브 데이터 요소들은 서로 다른 주소 범위에 속하는 서로 다른 저장 영역에 기입될 수 있다.
도 19는 본 발명의 실시 예에 따른 메모리 블록(BLKa)의 예를 보여준다. 도 3을 참조하면, 복수의 셀 스트링들(CS)이 기판(SUB) 위에서 행들 및 열들로 배치될 수 있다. 복수의 셀 스트링들(CS)은 기판(SUB) 상에(또는 안에) 형성되는 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 도 19에서, 메모리 블록(BLKa)의 구조의 이해를 돕기 위하여, 기판(SUB)의 위치가 예시적으로 표시되어 있다.
도 19에서, 셀 스트링들(CS)의 하단에 공통 소스 라인(CSL)이 연결되는 것으로 도시되어 있다. 그러나 공통 소스 라인(CSL)은 셀 스트링들(CS)의 하단에 전기적으로 연결되는 것으로 충분하며, 물리적으로 셀 스트링들(CS)의 하단에 위치하는 것으로 한정되지 않는다. 예시적으로, 도 19에서 셀 스트링들(CS)은 4X4로 배열되는 것으로 도시되나 메모리 블록(BLKa)은 더 적은 또는 더 많은 수의 셀 스트링들을 포함할 수 있다.
각 행의 셀 스트링들은 제1 내지 제4 접지 선택 라인들(GSL1~GSL4) 중 대응하는 접지 선택 라인 그리고 제1 내지 제4 스트링 선택 라인들(SSL1~SSL4) 중 대응하는 스트링 선택 라인에 연결될 수 있다. 각 열의 셀 스트링들은 제1 내지 제4 비트 라인들(BL1~BL4) 중 대응하는 비트 라인에 연결될 수 있다. 도면이 복잡해지는 것을 방지하기 위하여, 제2 및 제3 접지 선택 라인들(GSL2, GSL3) 또는 제2 및 제3 스트링 선택 라인들(SSL2, SSL3)에 연결된 셀 스트링들은 옅게 도시되어 있다.
각 셀 스트링은 대응하는 접지 선택 라인에 연결되는 적어도 하나의 접지 선택 트랜지스터(GST), 복수의 워드 라인들(WL1~WL8)에 각각 연결되는 복수의 메모리 셀들(MC), 그리고 스트링 선택 라인들(SSL1, SSL2)에 각각 연결되는 스트링 선택 트랜지스터들(SST)를 포함할 수 있다. 각 셀 스트링에서, 접지 선택 트랜지스터(GST), 메모리 셀들(MC) 및 스트링 선택 트랜지스터들(SST)은 기판과 수직인 방향을 따라 직렬 연결되고, 기판과 수직인 방향을 따라 순차적으로 적층될 수 있다.
예시적으로, 각 셀 스트링(CS)에서 접지 선택 트랜지스터(GST) 및 메모리 셀들(MC) 사이에 하나 또는 그보다 많은 더미 메모리 셀들이 제공될 수 있다. 각 셀 스트링(CS)에서, 스트링 선택 트랜지스터들(SST) 및 메모리 셀들(MC) 사이에 하나 또는 그보다 많은 더미 메모리 셀들이 제공될 수 있다. 각 셀 스트링(CS)에서, 메모리 셀들의 사이에 하나 또는 그보다 많은 더미 메모리 셀들이 제공될 수 있다.
더미 메모리 셀들은 메모리 셀들(MC)과 동일한 구조를 가지며, 프로그램되지 않거나(예를 들어, 프로그램이 금지되거나) 또는 메모리 셀들(MC)과 다르게 프로그램될 수 있다. 예를 들어, 메모리 셀들(MC)이 둘 또는 그보다 많은 문턱 전압 산포 범위를 갖도록 프로그램될 때, 더미 메모리 셀들은 하나의 문턱 전압 산포 범위를 갖도록 프로그램될 수 있다.
기판(SUB) 또는 접지 선택 트랜지스터(GST)로부터 동일한 높이(또는 순서)에 위치한 셀 스트링들(CS)의 메모리 셀들은 전기적으로 공통으로 연결될 수 있다. 기판(SUB) 또는 접지 선택 트랜지스터(GST)로부터 상이한 높이(또는 순서)에 위치한 셀 스트링들(CS)의 메모리 셀들은 전기적으로 분리될 수 있다.
예시적으로, 도 19에서, 동일한 높이의 메모리 셀들은 동일한 워드 라인에 연결되는 것으로 도시되어 있으나, 동일한 높이의 메모리 셀들은 메모리 셀들이 형성된 높이의 평면에서 직접 연결되거나 또는 메탈층과 같은 다른 층을 통해 서로 간접 연결될 수 있다.
메모리 블록(BLKa)은 3차원 메모리 어레이로 제공된다. 3차원 메모리 어레이는, 실리콘 기판(SUB) 및 메모리 셀들(MC)의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들(MC)의 어레이들의 하나 또는 그 이상의 물리 레벨들에 획일적으로(monolithically) 형성될 수 있다. 메모리 셀들(MC)의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 획일적으로 형성되는 것은, 3차원 어레이의 각 레벨의 레이어들이 3차원 어레이의 하위 레벨의 레이어들 위에 직접 증착됨을 의미한다.
본 발명의 기술적 사상에 따른 일 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 셀 스트링들(CS)(또는 NAND 스트링들)을 포함한다. 적어도 하나의 메모리 셀은 전하 포획 레이어를 포함한다. 각 셀 스트링은 메모리 셀들(MC) 위에 위치하는 적어도 하나의 선택 트랜지스터를 더 포함한다. 적어도 하나의 선택 트랜지스터는 메모리 셀들(MC)과 동일한 구조를 갖고, 메모리 셀들(MC)과 함께 획일적으로 형성된다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에서 워드 라인들 또는 비트 라인들이 공유되는 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.
하나의 스트링 선택 라인 및 하나의 워드 라인에 연결된 메모리 셀들은 하나의 물리 페이지를 형성할 수 있다. 서로 다른 스트링 선택 라인들 또는 서로 다른 워드 라인들에 연결된 메모리 셀들은 서로 다른 물리 페이지들에 속할 수 있다. 도 19에 도시된 바와 같이, 하나의 메모리 블록은 기판과 수직한 높이 방향, 그리고 비트 라인들이 신장되는 방향을 따라 순차적으로 배치되는 물리 페이지들을 포함할 수 있다.
도 18을 참조하여 설명된 바와 같이, 서브 커맨드들(SC1~SC3, 도 9 참조)에 따라, 쓰기 데이터는 서로 다른 메모리 셀들, 서로 다른 논리 페이지들, 서로 다른 물리 페이지들, 또는 서로 다른 메모리 블록들에 기입될 수 있다. 즉, 서브 커맨드들(SC1~SC3)에 의해 기입되는 서브 데이터 요소들은 서로 다른 주소 범위에 속하는 서로 다른 저장 영역에 기입될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10: 외부의 호스트 장치
100: 스토리지 장치
110: 불휘발성 메모리
110a~110d: 불휘발성 메모리 장치들
120, 220: 제어기
121, 221: 호스트 인터페이스
122, 222: 커맨드 큐
123, 223: 데이터 메모리
124, 224: 슬라이서
125: 서브 큐
126, 226: 선택기
127, 227: 스케줄러
128, 228: 변환 계층
129, 229: 메모리 액세스
129a~129d, 229a~229d: 직접 메모리 액세스들
130: 랜덤 액세스 메모리
222R: 읽기 커맨드 큐
222W: 쓰기 커맨드 큐

Claims (20)

  1. 불휘발성 메모리 장치; 그리고
    커맨드 큐 및 서브 큐를 포함하는 제어기를 포함하고,
    상기 제어기는:
    제1 쓰기 데이터와 연관된 제1 쓰기 커맨드 및 제1 읽기 커맨드들을 순차적으로 수신하고,
    상기 제1 쓰기 커맨드 및 상기 제1 읽기 커맨드들을 상기 커맨드 큐에 순차적으로 인큐하고,
    상기 제1 쓰기 커맨드를 잘라(slice) 서브 커맨드들을 생성하고,
    상기 제1 쓰기 데이터를 잘라 서브 데이터 요소들을 생성하고,
    상기 서브 커맨드들을 상기 서브 큐에 인큐하고, 그리고
    상기 읽기 커맨드들 중 적어도 하나의 읽기 커맨드를 상기 커맨드 큐로부터 가져오고 그리고 상기 적어도 하나의 읽기 커맨드를 상기 불휘발성 메모리 장치로 전송하는 것과, 그리고 상기 서브 커맨드들 중 하나의 서브 커맨드를 상기 서브 큐로부터 가져오고, 상기 서브 데이터 요소들 중 하나의 서브 데이터 요소를 가져오고, 그리고 상기 상기 하나의 서브 커맨드 및 상기 하나의 서브 데이터 요소를 상기 불휘발성 메모리 장치로 전송하는 것을 교대고 수행하도록 구성되는 스토리지 장치.
  2. 제1항에 있어서,
    상기 제어기는 상기 커맨드 큐 및 상기 서브 큐 중 하나를 선택하고 그리고 상기 선택된 큐에서 커맨드를 가져오도록 구성되는 스토리지 장치.
  3. 제2항에 있어서,
    상기 제어기는
    상기 커맨드의 주소 범위를 변환 단위에 따라 주소 범위들로 분할하고,
    상기 분할된 주소 범위들을 장치 주소 범위들로 변환하고, 그리고
    상기 장치 주소 범위들 각각을 상기 커맨드에 대응하는 장치 액세스 커맨드와 함께 상기 불휘발성 메모리 장치로 전송하도록 더 구성되는 스토리지 장치.
  4. 제1항에 있어서,
    상기 제어기는
    카운트 값이 쓰기 문턱보다 작은 동안, 상기 커맨드 큐로부터 상기 적어도 하나의 읽기 커맨드를 가져오는 것에 응답하여, 상기 카운트 값을 증가시키고 그리고 상기 적어도 하나의 읽기 커맨드를 상기 불휘발성 메모리 장치로 전송하고,
    상기 카운트 값이 상기 쓰기 문턱보다 작은 동안, 상기 커맨드 큐로부터 상기 제1 쓰기 커맨드를 가져오는 것에 응답하여, 상기 제1 쓰기 커맨드를 잘라 상기 서브 커맨드들을 생성하고 그리고 상기 서브 커맨드들을 상기 서브 큐에 인큐하고, 그리고
    상기 카운트 값이 상기 쓰기 문턱에 도달하는 것에 응답하여, 상기 하나의 서브 커맨드 및 상기 하나의 서브 데이터 요소를 상기 불휘발성 메모리 장치로 전송하도록 구성되는 스토리지 장치.
  5. 제4항에 있어서,
    상기 제어기는,
    상기 하나의 서브 커맨드 및 상기 하나의 서브 데이터 요소를 전송한 후에 상기 카운트 값을 리셋하고, 그리고
    상기 적어도 하나의 읽기 커맨드를 전송한 후에 상기 카운트 값을 증가시키는 스토리지 장치.
  6. 제4항에 있어서,
    상기 제1 쓰기 커맨드가 상기 제어기에 계류된 쓰기 커맨드가 없을 때에 수신된 첫 번째 쓰기 커맨드일 때, 상기 제어기는 상기 하나의 서브 커맨드 및 상기 하나의 서브 데이터 요소를 상기 적어도 하나의 읽기 커맨드보다 먼저 상기 불휘발성 메모리 장치로 전송하는 스토리지 장치.
  7. 제4항에 있어서,
    상기 제어기가 상기 쓰기 데이터의 사이즈, 상기 제어기에 계류중인 쓰기 커맨드들의 수, 상기 제어기에 계류중인 쓰기 데이터의 사이즈, 상기 쓰기 커맨드들의 지연, 또는 상기 제어기의 비지 비율(busy ratio)의 증가를 검출하면, 상기 제어기는 상기 쓰기 문턱을 감소시키는 스토리지 장치.
  8. 제4항에 있어서,
    상기 제어기가 사용 중인 쓰기 자원들의 비율 또는 상기 제어기에 수신되는 쓰기 커맨드들에 대한 읽기 커맨드들의 비율의 증가를 검출하면, 상기 제어기는 상기 쓰기 문턱을 증가시키는 스토리지 장치.
  9. 제1항에 있어서,
    상기 제어기는 상기 적어도 하나의 읽기 커맨드 및 상기 하나의 서브 커맨드 각각을 연관된 주소 범위에서 변환 단위로 분할하여 장치 커맨드들을 생성하고, 그리고 상기 장치 커맨드들을 순차적으로 상기 불휘발성 메모리 장치로 전달하도록 구성되는 스토리지 장치.
  10. 제1항에 있어서,
    랜덤 액세스 메모리를 더 포함하고,
    상기 제1 쓰기 데이터는 상기 랜덤 액세스 메모리에 저장되고, 상기 랜덤 액세스 메모리는 상기 하나의 서브 데이터 요소의 단위로 상기 제어기를 통해 상기 제1 쓰기 데이터를 상기 불휘발성 메모리 장치로 전달하도록 구성되는 스토리지 장치.
  11. 제1항에 있어서,
    상기 제어기는 상기 서브 커맨드들 및 상기 서브 데이터 요소들의 형태로 상기 제1 쓰기 커맨드 및 상기 제1 쓰기 데이터 전체를 상기 불휘발성 메모리 장치로 전송함으로써 상기 제1 쓰기 커맨드 및 상기 제1 쓰기 데이터와 연관된 쓰기 동작을 완료하도록 구성되는 스토리지 장치.
  12. 제1항에 있어서,
    상기 제어기는 제2 읽기 커맨드들 및 제2 쓰기 데이터와 연관된 제2 쓰기 커맨드를 순차적으로 수신하도록 더 구성되고,
    상기 제2 쓰기 데이터의 사이즈가 사이즈 문턱보다 작으면, 상기 제어기는 상기 제2 쓰기 커맨드를 자르지 않고 상기 제2 읽기 커맨드들 중 적어도 하나의 읽기 커맨드를 상기 불휘발성 메모리 장치로 전송하는 것, 그리고 상기 제2 쓰기 커맨드 및 상기 제2 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하는 것을 교대로 수행하는 스토리지 장치.
  13. 제12항에 있어서,
    상기 제어기는 상기 순차적으로 수신되는 상기 제2 쓰기 커맨드 및 상기 제2 읽기 커맨드들을 상기 커맨드 큐에 저장하고,
    상기 커맨드 큐는 상기 서브 커맨드들을 상기 서브 큐에 저장하고, 그리고상기 서브 큐의 자유 개체들(entities)의 수가 하부 문턱보다 작으면, 상기 제어기는 상기 사이즈 문턱에 관계없이 상기 제2 쓰기 커맨드를 자르지 않고 상기 쓰기 커맨드 및 상기 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하는 스토리지 장치.
  14. 제13항에 있어서,
    상기 서브 큐의 상기 자유 개체들의 수가 증가할수록, 상기 제어기는 상기 사이즈 문턱을 감소시키는 스토리지 장치.
  15. 제1항에 있어서,
    상기 제어기는 제2 읽기 커맨드들 및 제2 쓰기 데이터와 연관된 제2 쓰기 커맨드를 순차적으로 수신하고,
    상기 제어기에 계류중인 쓰기 커맨드들의 수가 상부 문턱보다 많으면, 상기 제어기는 상기 쓰기 커맨드를 자르지 않고, 상기 읽기 커맨드들 중 적어도 하나의 읽기 커맨드를 상기 불휘발성 메모리 장치로 전송하는 것, 그리고 상기 제2 쓰기 커맨드 및 상기 제2 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하는 것을 교대로 수행하는 스토리지 장치.
  16. 제1 큐, 제2 큐, 그리고 컴퓨터로 실행 가능한 명령들을 저장하는 메모리; 그리고
    상기 컴퓨터로 실행 가능한 명령들을 실행하여 다음 동작들을 수행하는 프로세서를 포함하고,
    다음 동작들은:
    외부 장치로부터 수신되는 커맨드들을 상기 제1 큐에 저장하고;
    상기 제1 큐로부터의 제1 쓰기 커맨드를 잘라 서브 커맨드들을 생성하고;
    상기 서브 커맨드들을 상기 제2 큐에 저장하고;
    상기 제1 큐 및 상기 제2 큐 중 하나를 선택하고; 그리고
    상기 선택된 큐로부터의 커맨드를 외부의 불휘발성 메모리 장치로 전송하는 것을 포함하는 제어기.
  17. 제16항에 있어서,
    상기 다음 동작들은:
    상기 제1 및 제2 큐들에 각각 대응하는 제1 및 제2 가중치들에 따라 상기 제1 및 제2 큐들을 교대로 선택하는 것을 더 포함하는 제어기.
  18. 불휘발성 메모리 장치 및 제어기를 포함하고, 상기 제어기는 커맨드 큐 및 서브 큐를 포함하는 스토리지 장치의 동작 방법에 있어서:
    상기 제어기가 외부 장치로부터 쓰기 데이터와 연관된 쓰기 커맨드 및 읽기 커맨드들을 순차적으로 수신하는 단계;
    상기 제어기가 상기 읽기 커맨드들 및 상기 쓰기 커맨드를 상기 커맨드 큐에 인큐하는 단계;
    상기 제어기가 상기 쓰기 커맨드를 잘라(slice) 서브 커맨드들을 생성하는 단계;
    상기 제어기가 상기 쓰기 데이터를 잘라 서브 데이터 요소들을 생성하는 단계;
    상기 서브 커맨드들을 서브 큐에 인큐하는 단계; 그리고
    상기 제어기가 상기 읽기 커맨드들 중 적어도 하나의 읽기 커맨드를 상기 불휘발성 메모리 장치로 전송하는 것, 그리고 상기 서브 커맨드들 중 하나의 서브 커맨드 및 상기 서브 데이터 요소들 중 하나의 서브 데이터 요소를 상기 불휘발성 메모리 장치로 전송하는 것을 교대로 수행하는 단계를 포함하는 동작 방법.
  19. 제18항에 있어서,
    상기 읽기 커맨드들 및 상기 쓰기 커맨드는 동일한 우선순위를 갖는 동작 방법.
  20. 삭제
KR1020170115347A 2017-09-08 2017-09-08 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법 KR102293069B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020170115347A KR102293069B1 (ko) 2017-09-08 2017-09-08 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법
US15/970,237 US11029893B2 (en) 2017-09-08 2018-05-03 Storage device including nonvolatile memory device and controller, controller and operating method of nonvolatile memory device
CN201810919340.2A CN109471817B (zh) 2017-09-08 2018-08-13 储存设备、控制器和储存设备的操作方法
US17/307,309 US11693605B2 (en) 2017-09-08 2021-05-04 Storage device including nonvolatile memory device and controller, controller and operating method of nonvolatile memory device
US18/345,124 US20230350609A1 (en) 2017-09-08 2023-06-30 Storage device including nonvolatile memory device and controller, controller and operating method of nonvolatile memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170115347A KR102293069B1 (ko) 2017-09-08 2017-09-08 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190028607A KR20190028607A (ko) 2019-03-19
KR102293069B1 true KR102293069B1 (ko) 2021-08-27

Family

ID=65631049

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170115347A KR102293069B1 (ko) 2017-09-08 2017-09-08 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법

Country Status (3)

Country Link
US (3) US11029893B2 (ko)
KR (1) KR102293069B1 (ko)
CN (1) CN109471817B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190047451A (ko) * 2017-10-27 2019-05-08 에스케이하이닉스 주식회사 저항 변화 메모리 장치를 구비한 반도체 메모리 시스템 및 그 구동 방법
CN110209597B (zh) * 2019-05-24 2021-10-15 北京百度网讯科技有限公司 处理访问请求的方法、装置、设备和存储介质
CN112015527B (zh) * 2019-05-29 2024-03-22 闪迪技术有限公司 管理从提交队列获取和执行命令
US10901624B1 (en) 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
US10901733B1 (en) 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Open channel vector command execution
US20210019051A1 (en) * 2019-07-15 2021-01-21 Micron Technology, Inc. Hardware based accelerator for memory sub-system operations
US11416168B2 (en) * 2019-11-07 2022-08-16 FADU Inc. Memory controller and storage device including the same
US11397684B2 (en) * 2019-11-13 2022-07-26 Sandisk Technologies Llc Command interface and pre-fetch architecture
US11139042B2 (en) * 2019-12-19 2021-10-05 Micron Technology, Inc. Capacitor health check
JP7337006B2 (ja) 2020-03-03 2023-09-01 キオクシア株式会社 メモリシステムおよび制御方法
US20220413719A1 (en) * 2020-03-10 2022-12-29 Micron Technology, Inc. Maintaining queues for memory sub-systems
JP7417455B2 (ja) 2020-03-27 2024-01-18 キヤノン株式会社 電子機器及びその制御方法、プログラム
US11733920B2 (en) 2020-09-10 2023-08-22 Western Digital Technologies, Inc. NVMe simple copy command support using dummy virtual function
US20220100425A1 (en) * 2020-09-29 2022-03-31 Samsung Electronics Co., Ltd. Storage device, operating method of storage device, and operating method of computing device including storage device
US11537524B2 (en) * 2020-11-20 2022-12-27 Western Digital Technologies, Inc. Effective PCIe utilization by PCIe TLP coalescing
WO2022120517A1 (en) * 2020-12-07 2022-06-16 Micron Technology, Inc. Techniques to reduce write amplification
KR102570481B1 (ko) * 2020-12-28 2023-09-04 주식회사 에스투더블유 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치
US11556268B2 (en) 2021-04-22 2023-01-17 Western Digital Technologies, Inc. Cache based flow for a simple copy command
CN117795466A (zh) 2021-08-26 2024-03-29 美光科技公司 使用子命令的存取请求管理
US11934684B2 (en) 2021-12-14 2024-03-19 Western Digital Technologies, Inc. Maximum data transfer size per tenant and command type

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040019708A1 (en) 2002-07-24 2004-01-29 Intel Corporation Method, system, and program for returning data to read requests received over a bus
US20080222330A1 (en) 2007-03-08 2008-09-11 Ricoh Company, Limited Semiconductor integrated circuit and image processing apparatus having the same
US20100312984A1 (en) 2008-02-08 2010-12-09 Freescale Semiconductor, Inc. Memory management
US20110078277A1 (en) 2009-09-29 2011-03-31 Cleversafe, Inc. Handling unavailable memories in distributed storage network
US20140244866A1 (en) 2013-02-26 2014-08-28 Oracle International Corporation Bandwidth aware request throttling
US20140281188A1 (en) 2013-03-15 2014-09-18 Samsung Electronics Co., Ltd. Method of updating mapping information and memory system and apparatus employing the same
US20150121006A1 (en) 2013-10-24 2015-04-30 Qualcomm Incorporated Split write operation for resistive memory cache
US20160179404A1 (en) 2014-12-18 2016-06-23 Nimble Storage, Inc. Efficient scheduling of input/output requests to reduce latency and maximize throughput in a flash storage device

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0177989B1 (ko) 1995-12-29 1999-05-15 윤종용 분할 쓰기 기능을 가지는 메모리 제어 장치
JP3846543B2 (ja) 2000-03-13 2006-11-15 富士ゼロックス株式会社 メモリアクセスシステム
US7895398B2 (en) 2005-07-19 2011-02-22 Dell Products L.P. System and method for dynamically adjusting the caching characteristics for each logical unit of a storage array
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US7801877B1 (en) * 2008-04-14 2010-09-21 Netlogic Microsystems, Inc. Handle memory access managers and methods for integrated circuit search engine devices
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
US10353774B2 (en) 2015-10-30 2019-07-16 International Business Machines Corporation Utilizing storage unit latency data in a dispersed storage network
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US9009414B2 (en) 2010-09-21 2015-04-14 Texas Instruments Incorporated Prefetch address hit prediction to reduce memory access latency
US8572325B2 (en) 2010-12-07 2013-10-29 International Business Machines Corporation Dynamic adjustment of read/write ratio of a disk cache
US20120221767A1 (en) 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
JP5958020B2 (ja) * 2012-03-30 2016-07-27 富士通株式会社 ストレージシステム
US9558112B1 (en) * 2012-05-08 2017-01-31 Google Inc. Data management in a data storage device
KR20140094186A (ko) 2013-01-21 2014-07-30 삼성전자주식회사 호스트의 리퀘스트 처리 방법
JP6088837B2 (ja) * 2013-02-12 2017-03-01 株式会社東芝 ストレージ制御装置、ストレージ制御方法、ストレージシステムおよびプログラム
JP2014186600A (ja) 2013-03-25 2014-10-02 Nec Corp 記憶装置
JP2015099430A (ja) 2013-11-18 2015-05-28 三菱電機株式会社 記憶制御装置及び記憶制御システム
US9904472B2 (en) * 2015-01-30 2018-02-27 Sandisk Technologies Llc Memory system and method for delta writes
KR102317786B1 (ko) 2015-02-02 2021-10-26 삼성전자주식회사 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스
US20160357462A1 (en) 2015-06-08 2016-12-08 Samsung Electronics Co., Ltd. Nonvolatile Memory Modules and Data Management Methods Thereof
JP2017010602A (ja) 2015-06-24 2017-01-12 株式会社東芝 ディスク記憶装置、及びデータ処理方法
CN105117283A (zh) * 2015-08-26 2015-12-02 深圳市华验防伪科技有限公司 一种任务拆分方法及系统
JP6950149B2 (ja) * 2015-09-08 2021-10-13 ソニーグループ株式会社 メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
US10331582B2 (en) * 2017-02-13 2019-06-25 Intel Corporation Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time
JP6640776B2 (ja) * 2017-03-17 2020-02-05 キオクシア株式会社 メモリシステム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040019708A1 (en) 2002-07-24 2004-01-29 Intel Corporation Method, system, and program for returning data to read requests received over a bus
US20080222330A1 (en) 2007-03-08 2008-09-11 Ricoh Company, Limited Semiconductor integrated circuit and image processing apparatus having the same
US20100312984A1 (en) 2008-02-08 2010-12-09 Freescale Semiconductor, Inc. Memory management
US20110078277A1 (en) 2009-09-29 2011-03-31 Cleversafe, Inc. Handling unavailable memories in distributed storage network
US20140244866A1 (en) 2013-02-26 2014-08-28 Oracle International Corporation Bandwidth aware request throttling
US20140281188A1 (en) 2013-03-15 2014-09-18 Samsung Electronics Co., Ltd. Method of updating mapping information and memory system and apparatus employing the same
US20150121006A1 (en) 2013-10-24 2015-04-30 Qualcomm Incorporated Split write operation for resistive memory cache
US20160179404A1 (en) 2014-12-18 2016-06-23 Nimble Storage, Inc. Efficient scheduling of input/output requests to reduce latency and maximize throughput in a flash storage device

Also Published As

Publication number Publication date
KR20190028607A (ko) 2019-03-19
US20230350609A1 (en) 2023-11-02
US20190079702A1 (en) 2019-03-14
CN109471817B (zh) 2023-05-23
US20210255810A1 (en) 2021-08-19
US11693605B2 (en) 2023-07-04
US11029893B2 (en) 2021-06-08
CN109471817A (zh) 2019-03-15

Similar Documents

Publication Publication Date Title
KR102293069B1 (ko) 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법
US11086518B2 (en) Memory system and operating method thereof
US11287992B2 (en) Controller and storage device including controller and nonvolatile memory devices
US9715465B2 (en) Storage device and operating method of the same
US8996759B2 (en) Multi-chip memory devices and methods of controlling the same
US9836226B2 (en) Method of processing input/output in storage device and storage device and non-volatile memory device using the method
US8411496B2 (en) Systems and methods for scheduling a memory command for execution based on a history of previously executed memory commands
US10262708B2 (en) Memory system performing training operation
EP3696679A1 (en) Memory controller and method controlling suspend mode
KR102116258B1 (ko) 메모리 시스템 및 그것을 포함하는 유저 장치
US10409718B2 (en) Memory system and operating method thereof
US9679638B2 (en) Semiconductor device and method of operating the same
KR20150133084A (ko) 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
KR102435863B1 (ko) 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법
KR20140011667A (ko) 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법
US11194510B2 (en) Storage device and method of operating the same
KR20180063419A (ko) 호스트와 양방향 통신을 수행하도록 구성된 스토리지 장치 및 그것의 동작 방법
CN108628766B (zh) 非易失存储器、计算系统、及读取方法
US20230130884A1 (en) Method of scheduling commands for memory device and memory system performing the same
KR20160024530A (ko) 반도체 장치 및 이의 동작 방법
KR102473197B1 (ko) 읽기 데이터를 전송 단위로 전송하는 불휘발성 메모리 모듈, 스토리지 장치, 및 전자 장치
CN117931053A (zh) 计算存储设备、操作其的方法和操作主机设备的方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right