KR20220104511A - 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents
컨트롤러 및 이를 포함하는 메모리 시스템 Download PDFInfo
- Publication number
- KR20220104511A KR20220104511A KR1020210006922A KR20210006922A KR20220104511A KR 20220104511 A KR20220104511 A KR 20220104511A KR 1020210006922 A KR1020210006922 A KR 1020210006922A KR 20210006922 A KR20210006922 A KR 20210006922A KR 20220104511 A KR20220104511 A KR 20220104511A
- Authority
- KR
- South Korea
- Prior art keywords
- commands
- zone
- output
- queue
- buffers
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims description 106
- 239000000872 buffer Substances 0.000 claims abstract description 220
- 238000000034 method Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 22
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Systems (AREA)
- Selective Calling Equipment (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 기술은 구역 아이디 및 라이트 포인터를 포함하는 커맨드들을 입력되는 순서대로 큐잉하도록 구성된 라이트 큐; 및 상기 커맨드들의 구역 아이디들에 임시 버퍼들을 할당하고, 상기 라이트 큐에서 출력된 상기 커맨드들을 상기 구역 아이디에 따라 구분된 상기 임시 버퍼들에 저장하도록 구성된 큐 컨트롤러를 포함하고, 상기 큐 컨트롤러는, 상기 임시 버퍼들 중에서 설정된 저장 사이즈가 채워진 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성되는 컨트롤러를 포함한다.
Description
본 발명은 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 메모리 시스템에 포함된 저장 장치를 구역(zone) 단위로 관리하는 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
전자 시스템은 호스트들과 메모리 시스템을 포함할 수 있다.
호스트들은 휴대폰 또는 컴퓨터 등과 같은 장치일 수 있고, 메모리 시스템은 호스트들의 제어에 따라 데이터를 저장하거나 리드된 데이터를 출력하는 시스템일 수 있다. 메모리 시스템은 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분된다.
휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는 저장 장치를 구역 단위로 관리하는 메모리 시스템에서 구역 별로 처리 가능한 커맨드들의 우선 순위를 높임으로써, 커맨드들이 적체되는 현상을 방지할 수 있는 컨트롤러 및 이를 포함하는 메모리 시스템을 제공한다.
본 발명의 실시 예에 따른 컨트롤러는, 구역 아이디 및 라이트 포인터를 포함하는 커맨드들을 입력되는 순서대로 큐잉하도록 구성된 라이트 큐; 및 상기 커맨드들의 구역 아이디들에 임시 버퍼들을 할당하고, 상기 라이트 큐에서 출력된 상기 커맨드들을 상기 구역 아이디에 따라 구분된 상기 임시 버퍼들에 저장하도록 구성된 큐 컨트롤러를 포함하고, 상기 큐 컨트롤러는, 상기 임시 버퍼들 중에서 설정된 저장 사이즈가 채워진 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성된다.
본 발명의 실시 예에 따른 메모리 시스템은, 데이터를 저장하는 다이들을 포함하는 저장 장치; 및 호스트에서 출력된 요청들에 응답하여 커맨드들을 생성하고 상기 다이들의 상태에 따라 상기 커맨드들을 큐잉하도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 다이들을 구역 아이디들로 구분하여 상기 저장 장치를 관리하고, 프로그램 동작 시 큐잉된 상기 커맨드들의 순서에 관계없이 상기 구역 아이디들 중 라이트 포인터들이 모두 채워진 구역 아이디에 우선권을 주고, 상기 우선권을 가진 상기 구역 아이디에 할당된 상기 커맨드들을 출력하도록 구성된다.
본 발명의 실시 예에 따른 컨트롤러는, 호스트로부터 수신된 요청들에 대응되는 커맨드들을 생성하고, 상기 커맨드들이 생성된 순서에 따라 상기 커맨드들에 라이트 포인터들을 할당하고, 데이터가 저장되는 저장 장치의 상태에 따라 상기 커맨드들을 큐잉하도록 구성된 커맨드 관리부; 큐잉된 상기 커맨드들을 임시로 저장하도록 구성된 라이트 큐; 구역 아이디 별로 구분되는 임시 버퍼들; 및 상기 라이트 큐로부터 출력된 상기 커맨드들을 상기 구역 아이디 및 상기 라이트 포인터들의 순서에 따라 상기 임시 버퍼들에 저장하고, 설정된 사이즈가 채워진 임시 버퍼의 상기 커맨드들을 출력하도록 구성된 구역 관리부를 포함하는 컨트롤러를 포함한다.
본 기술은 구역 별로 처리 가능한 커맨드들의 우선 순위를 높임으로써 커맨드들이 적체되는 현상을 방지할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1에 도시된 다이(die)를 설명하기 위한 도면이다.
도 3은 도 2에 도시된 메모리 블록을 설명하기 위한 도면이다.
도 4a 내지 도 4c는 본 발명의 실시 예에 따른 구역(zone)을 설명하기 위한 도면들이다.
도 5는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 컨트롤러의 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 구역 관리부를 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 구역 관리부의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 실시 예에 따른 메모리 인터페이스를 설명하기 위한 도면이다.
도 10은 컨트롤러가 다이들에 액세스(access)하는 동작을 설명하기 위한 도면이다.
도 11 내지 도 18b는 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작을 순차적으로 설명하기 위한 도면들이다.
도 19a 및 도 19b는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 20a 및 도 20b는 본 발명의 제3 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 21은 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 22는 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 2는 도 1에 도시된 다이(die)를 설명하기 위한 도면이다.
도 3은 도 2에 도시된 메모리 블록을 설명하기 위한 도면이다.
도 4a 내지 도 4c는 본 발명의 실시 예에 따른 구역(zone)을 설명하기 위한 도면들이다.
도 5는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 컨트롤러의 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 구역 관리부를 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 구역 관리부의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 실시 예에 따른 메모리 인터페이스를 설명하기 위한 도면이다.
도 10은 컨트롤러가 다이들에 액세스(access)하는 동작을 설명하기 위한 도면이다.
도 11 내지 도 18b는 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작을 순차적으로 설명하기 위한 도면들이다.
도 19a 및 도 19b는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 20a 및 도 20b는 본 발명의 제3 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 21은 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 22는 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(1000)은 데이터를 저장할 수 있는 저장 장치(storage device; 1100)와, 저장 장치(1100)를 제어할 수 있는 컨트롤러(controller; 1200)를 포함할 수 있다.
저장 장치(1100)는 복수의 다이들(D01~Dnm)을 포함할 수 있다. 다이들(D01~Dnm)은 서로 동일하게 구성될 수 있다. 다이들(D01~Dnm)은 컨트롤러(1200)에서 출력된 커맨드에 응답하여 프로그램, 리드 또는 소거 동작을 수행할 수 있다. 다이들(D01~Dnm)은 비휘발성 메모리 장치로 구성될 수 있다. 예를 들면, 비휘발성 메모리 장치는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등을 포함할 수 있다.
컨트롤러(1200)는 호스트(host; 2000)와 저장 장치(1100) 사이에서 통신할 수 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)로부터 출력된 요청(request)에 따라 프로그램, 리드 또는 소거 커맨드를 생성하고, 생성된 커맨드를 저장 장치(1100)에게 전송할 수 있다.
호스트(2000)는 프로그램 동작 시 컨트롤러(1200)에게 프로그램 요청(program request), 라이트 포인터(write pointer) 및 데이터를 출력할 수 있다. 라이트 포인터는 프로그램 요청이 출력되는 순서를 나타낼 수 있다. 예를 들면, 프로그램 요청이 출력될 때마다 라이트 포인터는 단계적으로 증가하는 값을 가질 수 있다.
본 실시 예에 따른 컨트롤러(1200)는 저장 장치(1100)에 포함된 다이들(D01~Dnm)을 구역(zone) 단위로 관리할 수 있다. 예를 들면, 컨트롤러(1200)는 다이들(D01~Dnm) 각각에 포함된 메모리 블록들을 일정한 저장 용량에 따라 논리 블록 어드레스(logical block address) 단위로 구분하고, 복수의 논리 블록 어드레스들을 구역(zone) 단위의 그룹으로 구분할 수 있다. 즉, 하나의 구역에 복수의 논리 블록 어드레스들이 맵핑될 수 있다. 본 실시 예에 따른 컨트롤러(1200)는 구역 단위로 커맨드들을 출력하도록 구성될 수 있다. 따라서, 컨트롤러(1200)는 라이트 포인터를 사용하여 구역 별로 커맨드들을 큐잉하고 출력하도록 구성될 수 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)로부터 수신한 요청들의 순서에 관계 없이 저장 장치(1100)의 상태에 따라 커맨드들을 큐잉할 수 있고, 라이트 포인터를 사용하여 구역 별로 커맨드들을 다시 큐잉하여 커맨드들이 적체되는 현상을 방지할 수 있다.
도 2는 도 1에 도시된 다이(die)를 설명하기 위한 도면으로써, 도 1에 도시된 제01 내지 제nm 다이들(D01~Dnm)은 서로 동일하게 구성될 수 있으므로, 이 중에서 제nm 다이(Dnm)를 예를 들어 설명하도록 한다.
도 2를 참조하면, 다이(Dnm)는 적어도 하나의 플래인(plane)을 포함할 수 있으며, 도 2에는 복수의 플래인들(PL1~PLj)이 포함된 다이(nm)가 도시되어 있다. 제1 내지 제j 플래인들(PL1~PLj)은 서로 동일하게 구성될 수 있으며, 제1 내지 제i 메모리 블록들(BLK1~BLKi)을 각각 포함할 수 있다. 제1 내지 제i 메모리 블록들(BLK1~BLKi) 각각은 데이터가 저장될 수 있는 복수의 메모리 셀들을 포함한다. 프로그램, 리드 또는 소거 동작 시, 제1 내지 제j 플래인들(PL1~PLj) 각각에 포함된 제1 내지 제i 메모리 블록들(BLK1~BLKi) 중에서 적어도 하나의 메모리 블록이 선택될 수 있다. 즉, 다이(nm)에서 프로그램, 리드 또는 소거 동작이 수행될 때, 복수의 메모리 블록들이 동시에 선택될 수 있다. 다이(Dnm)에는 제1 내지 제j 플래인들(PL1~PLj)에 포함된 선택된 메모리 블록들을 프로그램, 리드 또는 소거하도록 구성되는 주변 회로들이 더 포함되며, 주변 회로들은 다이(nm)에 따라 다양하게 구성될 수 있으므로, 본 실시 예에서는 구체적인 설명은 생략한다.
도 3은 도 2에 도시된 메모리 블록을 설명하기 위한 도면이다.
도 3을 참조하면, 도 2에 도시된 복수의 메모리 블록들(BLK1~BLKi) 중 어느 하나의 메모리 블록(BLKi)이 실시 예로써 도시된다.
메모리 블록(BLKi)은 제1 내지 제m 비트 라인들(BL1~BLm; m은 양의 정수)과 소스 라인(SL) 사이에 연결된 복수의 스트링들(ST)을 포함할 수 있다. 스트링들(ST) 각각은 소스 라인(SL)과 제1 내지 제m 비트 라인들(BL1~BLm) 사이에서 직렬로 연결된 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)를 포함할 수 있다.
도 3에 도시된 메모리 블록(BLKi)은 메모리 블록의 구성을 설명하기 위한 도면이므로, 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)의 개수는 도 3에 도시된 개수로 제한되지 않는다.
서로 다른 스트링들(ST)에 연결된 소스 셀렉트 트랜지스터들(SST)의 게이트들은 소스 셀렉트 라인(SSL)에 연결되고, 제1 내지 제n 메모리 셀들(C1~Cn) 각각의 게이트들은 제1 내지 제n 워드 라인들(WL1~WLn)에 연결되고, 드레인 셀렉트 트랜지스터들(DST)의 게이트들은 드레인 셀렉트 라인(DSL)에 연결될 수 있다.
동일한 워드 라인에 연결되고 서로 다른 스트링들(ST)에 포함된 메모리 셀들의 그룹은 하나의 페이지(PG)를 구성할 수 있다. 프로그램 동작 및 리드 동작은 페이지(PG) 단위로 수행될 수 있다.
도 4a 내지 도 4c는 본 발명의 실시 예에 따른 구역(zone)을 설명하기 위한 도면들이다.
도 4a를 참조하면, 저장 장치(1100)는 도 1 및 도 2에 도시된 바와 같이 물리적으로 구분되는 다이들(D01~Dnm)과, 다이들(D01~Dnm) 각각에서 물리적으로 구분되는 메모리 블록들(BLK1~BLKi)을 포함하지만, 본 실시 예에서는 저장 장치(1100)에 포함된 모든 메모리 블록들이 논리적으로 구분될 수 있다. 다이들(D01~Dnm)에 포함된 모든 메모리 블록들은 논리 블록 어드레스(logical block address: LBA) 단위로 구분될 수 있다. 예를 들면, 저장 장치(1100)에 포함된 모든 메모리 블록들에는 논리 블록 어드레스(LBA)가 할당될 수 있다. 즉, 메모리 블록들에 제1 내지 제i 논리 블록 어드레스들(LBA01~LBAi)이 맵핑될 수 있으며, 연속적인 논리 블록 어드레스에 맵핑된 메모리 블록들은 저장 장치(1100) 내에서는 물리적으로 불연속적으로 배치될 수 있다.
도 4b를 참조하면, 논리 블록 어드레스들(LBA01~LBAi)은 복수의 구역들로 그룹핑될 수 있으며, 각각의 구역 그룹들에는 구역 아이디(zone ID; Zid)가 할당될 수 있다. 즉, 구역 아이디(Zid)는 메모리 블록들을 일정한 저장 용량에 따라 그룹핑한 그룹들의 인덱스일 수 있다. 예를 들면, 논리 블록 어드레스들(LBA01~LBAi)은 제1 내지 제x 구역 아이디들(Zid01~Zidx)로 구분되는 복수의 구역들로 구분될 수 있다. 제1 내지 제x 구역 아이디들(Zid01~Zidx) 각각의 저장 용량은 서로 동일하게 설정될 수도 있고, 서로 다르게 설정될 수도 있다. 저장 용량이 서로 동일하게 설정되는 경우, 제1 내지 제x 구역 아이디들(Zid01~Zidx) 각각에 할당되는 논리 블록 어드레스들의 개수는 서로 동일할 수 있다. 저장 용량이 서로 다르게 설정되는 경우, 제1 내지 제x 구역 아이디들(Zid01~Zidx)에 할당되는 논리 블록 어드레스들의 개수는 서로 다를 수 있다. 또는, 제1 내지 제x 구역 아이디들(Zid01~Zidx) 중에서 일부 구역 아이디들의 저장 용량이 서로 동일하게 설정되고, 나머지 구역 아이디들의 저장 용량은 서로 다르게 설정될 수도 있다.
도 4c를 참조하면, 도 4b에 도시된 제1 내지 제x 구역 아이디들(Zid01~Zidx) 중에서 제x 구역 아이디(Zidx)가 예로써 도시된다. 제x 구역 아이디(Zidx)에 제n 내지 제i 논리 블록 어드레스들(LBAn~LBAi)이 할당된다고 가정한다. 호스트로부터 수신되는 라이트 포인터(write pointer; WP)는 연속적인 데이터를 저장할 때 선택되는 논리 블록 어드레스를 나타낼 수 있고, 시작 포인터(start pointer; SP)는 제x 구역 아이디(Zidx)의 첫 번째 논리 블록 어드레스일 수 있다. 예를 들면, 라이트 포인터는 호스트가 컨트롤러에게 전송한 요청들의 순서를 나타낼 수 있다. 도 4c를 참조하면, LBAn, LBAn+1, LBAn+2, … , LBAi 각각은 라이트 포인터(WP)가 되며, 이 중에서 첫 번째 라이트 포인터인 LBAn이 시작 포인터(SP)가 된다. 따라서, 서로 다른 구역 아이디들의 시작 포인터들은 서로 다른 논리 블록 어드레스들로 지정될 수 있다.
도 5는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 5를 참조하면, 컨트롤러(1200)는 구역 관리부(zone manager; 500), 시스템 버퍼(system buffer; 510), 커맨드 관리부(command manager; 520), 호스트 인터페이스(host interface; 530) 및 메모리 인터페이스(memory interface; 540)를 포함할 수 있다. 구역 관리부(500), 시스템 버퍼(510), 커맨드 관리부(520), 호스트 인터페이스(530) 및 메모리 인터페이스(540)는 버스(BUS)를 통해 서로 통신할 수 있다.
구역 관리부(500)는 프로그램 동작 시 커맨드들에 대응되는 라이트 포인터가 불연속적인 경우, 동일한 구역 아이디에서 라이트 포인터가 연속되도록 커맨드들의 큐잉 순서를 조절할 수 있다. 또한, 구역 관리부(500)는 라이트 포인터들이 모두 채워진 구역 아이디가 발생하면, 해당 구역 아이디에 대응되는 커맨드의 출력 우선 순위를 높일 수 있다. 예를 들면, 구역 관리부(500)는 라이트 포인터들이 모두 채워진 구역 아이디에 대응되는 커맨드를 라이트 포인터들이 채워지지 아니한 구역 아이디에 대응되는 커맨드보다 우선적으로 출력할 수 있다.
시스템 버퍼(510)는 컨트롤러(1200)의 동작에 필요한 다양한 정보들을 저장하도록 구성될 수 있다. 예를 들면, 시스템 버퍼(510)는 논리 블록 어드레스 및 물리 블록 어드레스의 맵핑 정보 등을 저장할 수 있다. 예를 들면, 시스템 버퍼(510)는 라이트 포인터들에 대응되는 논리 블록 어드레스와, 논리 블록 어드레스들에 맵핑된 물리 블록 어드레스들을 포함하는 맵 테이블을 저장할 수 있다. 물리 블록 어드레스는 저장 장치에서 관리될 수 있는 다이 및 메모리 블록 각각에 할당된 어드레스이고, 논리 블록 어드레스는 호스트에서 관리될 수 있는 어드레스일 수 있다. 따라서, 순차적인 논리 블록 어드레스들에 비순차적인 물리 블록 어드레스들이 맵핑될 수 있다.
커맨드 관리부(520)는 호스트(2000)로부터 출력된 요청(request)이 입력되면, 요청에 대응되는 커맨드를 생성하고, 저장 장치(1100)의 상태에 따라 커맨드들의 순서를 변경할 수 있다. 이때, 커맨드들은 라이트 포인터의 순서에 관계 없이 큐잉될 수 있다. 큐잉된 커맨드들은 구역 관리부(500)에게 전송될 수 있다.
호스트 인터페이스(530)는 호스트(2000)와 컨트롤러(1200) 사이에서 요청, 어드레스 또는 데이터를 주고받도록 구성될 수 있다.
메모리 인터페이스(540)는 컨트롤러(1200)와 저장 장치(1100) 사이에서 커맨드, 어드레스 또는 데이터를 주고받도록 구성될 수 있다. 메모리 인터페이스(540)는 구역 관리부(500)에서 출력된 커맨드들을 저장 장치(1100)로 출력하기 이전에 임시로 커맨드들을 저장할 수 있는 버퍼들을 포함할 수 있다. 메모리 인터페이스(540)는 구역 관리부(500)에서 출력된 라이트 포인터들에 각각 대응되는 물리 블록 어드레스들을 시스템 버퍼(510)로부터 수신받고, 커맨드 및 물리 블록 어드레스들을 저장 장치(1100)에게 출력할 수 있다.
도 6은 본 발명의 실시 예에 따른 컨트롤러의 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 커맨드 관리부(520)는 호스트로부터 출력된 요청들(RQ#) 및 라이트 포인터들(WP#)이 수신되면, 요청들(RQ#)을 수행하기 위한 커맨드들(CMD#)을 생성하고, 커맨드들(CMD#)이 실행될 다이들의 동작 상태에 따라 커맨드들(CMD#)의 실행 순서를 조절할 수 있다. 즉, 커맨드 관리부(520)는 라이트 포인터들(WP#)의 순서에 관계 없이 저장 장치에 포함된 다이들의 동작 상태에 따라 커맨드들(CMD#)을 큐잉(queueing)할 수 있다. 예를 들면, 커맨드 관리부(520)는 유휴(idle) 다이들과 동작 중인 다이들을 확인할 수 있고, 유휴 다이들에서 실행될 수 있는 커맨드들의 우선 순위가 높아지도록 커맨드들의 실행 순서를 변경할 수 있다. 이 외에도 커맨드 관리부(520)는 다양한 방식으로 커맨드들의 실행 순서를 변경할 수 있다.
구역 관리부(500)는 커맨드 관리부(520)에서 출력된 커맨드들(CMD#)을 임시로 저장하고, 구역 아이디(Zid) 및 라이트 포인터들(WP#)에 따라 커맨드들(CMD#)의 순서를 다시 조절할 수 있다. 구역 관리부(500)는 설정된 라이트 사이즈(write size)에 대응되는 커맨드들(CMD#)이 모두 채워진 구역 아이디(Zid)가 발생하면, 해당 구역 아이디(Zid)의 커맨드들(CMD#)을 메모리 인터페이스(540)로 전송할 수 있다. 여기서, 커맨드들(CMD#)은 프로그램 커맨드일 수 있다.
메모리 인터페이스(540)는 구역 관리부(500)에서 출력되는 커맨드들(CMD)을 구역 아이디(Zid#) 별로 저장하기 위한 복수의 출력 버퍼들(B1~Bp)을 포함할 수 있다. 예를 들면, 출력 버퍼들(B1~Bp)은 구역 아이디들(Zid#)에 1:1로 대응될 수 있다. 메모리 인터페이스(540)는 라이트 포인터들(WP#)에 대응되는 물리 블록 어드레스들(PBA#) 및 커맨드들(CMD#)을 구역 아이디(Zid#)에 대응되는 다이에게 출력할 수 있다.
도 7은 본 발명의 실시 예에 따른 구역 관리부를 설명하기 위한 도면이다.
도 7을 참조하면, 구역 관리부(500)는 라이트 큐(write queue; 710) 및 큐 컨트롤러(queue controller; 720)를 포함할 수 있다.
라이트 큐(710)는 커맨드 관리부(도 6의 520)로부터 출력된 커맨드들(CMD#)과, 커맨드들(CMD#)에 각각 대응되는 구역 아이디 및 라이트 포인터를 임시로 저장하기 위한 큐 버퍼(queue buffer; 711)를 포함할 수 있다. 큐 버퍼(711)에 입력되는 커맨드들(CMD#)의 구역 아이디 및 라이트 포인터들의 순서는 불연속적일 수 있다.
큐 컨트롤러(720)는 라이트 큐(710)로부터 출력된 커맨드들(CMD#)을 구역 아이디 및 라이트 포인터 별로 저장하기 위한 임시 버퍼들(temporary buffers; 721)을 포함할 수 있다. 큐 컨트롤러(720)는 구역 아이디 및 라이트 포인터에 따라 커맨드들(CMD#)을 임시 버퍼들(721)에 순차적으로 저장할 수 있다. 큐 컨트롤러(720)는 설정된 사이즈가 모두 채워진 임시 버퍼가 발생하면, 해당 임시 버퍼에 저장된 커맨드들(CMD#)을 출력할 수 있다.
도 8은 본 발명의 실시 예에 따른 구역 관리부의 동작을 설명하기 위한 도면이다.
도 8을 참조하면, 구역 관리부(500)는 커맨드들(CMD#)이 입력되면, 입력된 순서대로 커맨드들(CMD#)과 커맨드들(CMD#)에 대응되는 구역 아이디들(Zid#) 및 라이트 포인터들(WP#)을 큐 버퍼(711)에 저장할 수 있다. 예를 들면, 저장 장치에 포함된 메모리 블록들이 논리적으로 다섯 개의 구역들로 구분되어 다섯 개의 구역 아이디들이 설정되고, 각각의 구역 아이디에 다섯 개의 라이트 포인터들이 할당되었다고 가정한다. 즉, 구역 아이디(Zid#)는 제1 내지 제5 구역 아이디들(Zid1~Zid5)을 포함할 수 있고, 제1 내지 제5 구역 아이디들(Zid1~Zid5) 각각에는 서로 다른 라이트 포인터들(WP#)이 할당될 수 있다.
도 8에서, 큐 버퍼(711)의 커맨드들의 숫자는 큐 버퍼(711)에 입력된 순서를 나타낸다. 예를 들면, 제1 커맨드(CMD01)는 큐 버퍼(711)에 첫 번째로 입력된 커맨드를 나타낸다. 제1 커맨드(CMD01)에는 제1 구역 아이디(Zid1) 및 제1 라이트 포인터(WP01)가 할당될 수 있다. 이러한 방식으로 큐 버퍼(711)에는 제1 내지 제23 커맨드들(CMD01~CMD23)이 순차적으로 입력될 수 있다. 하지만, 제1 내지 제23 커맨드들(CMD01~CMD23)에 각각 할당된 라이트 포인터들은 커맨드들이 입력된 순서와 다르게 불연속적이다. 이는 호스트가 요청한 커맨드들의 순서가 변경되었다는 것을 의미한다. 예를 들면, 제1 내지 제4 커맨드들(CMD01~CMD04)에는 제1 내지 제4 라이트 포인터들(WP01~WP04)이 할당되므로, 제1 내지 제4 커맨드들(CMD01~CMD04)의 순서는 호스트가 요청한 순서와 동일하다. 제4 커맨드(CMD04) 다음으로 입력된 제5 커맨드(CMD05)에는 제8 라이트 포인터(WP08)가 할당되므로, 제5 커맨드(CMD05)는 제4 커맨드(CMD04)와 불연속적이고, 이는 제5 커맨드(CMD05)는 호스트가 요청한 순서와 다르다는 것을 나타낸다.
큐 컨트롤러(720)는 라이트 큐(710)로부터 출력되는 커맨드들(CMD#)을 구역 아이디(Zid#)에 따라 구분되는 임시 버퍼들(TB1~TB5)에 저장할 수 있다. 예를 들면, 제1 내지 제5 임시 버퍼들(TB1~TB5) 각각은 설정된 개수의 커맨드들(CMD#)을 각각 저장하기 위한 서브 버퍼들을 포함할 수 있다. 예를 들면, 제1 임시 버퍼(TB1)가 제2 내지 제5 임시 버퍼들(TB2~TB5) 대비 더 큰 저장 용량으로 할당된 경우, 제1 임시 버퍼(TB1)는 제1_1 임시 버퍼(TB1_1) 및 제1_2 임시 버퍼(TB1_2)를 포함할 수 있다. 제1_1 임시 버퍼(TB1_1) 및 제1_2 임시 버퍼(TB1_2)는 제1 구역 아이디(Zid1)에 할당될 수 있고, 제2 내지 제5 임시 버퍼들(TB2~TB5)은 제2 내지 제5 구역 아이디들(Zid2~Zid5)에 각각 할당될 수 있다. 큐 컨트롤러(720)는 큐 버퍼(711)에 저장된 커맨드(CMD#)의 구역 아이디(Zid#)에 따라 임시 버퍼를 선택하고, 선택된 임시 버퍼에 포함된 서브 버퍼들 중에서 커맨드(CMD#)의 라이트 포인터(WP#)에 따라 하나의 서브 버퍼를 선택한 후, 선택된 서브 버퍼에 커맨드(CMD#)를 저장할 수 있다.
예를 들면, 제1_1 임시 버퍼(TB1_1)의 시작 포인터(SP)가 01로 설정되고, 제1_2 임시 버퍼(TB_1_2)의 시작 포인터(SP)가 06으로 설정된 경우, 제1_1 임시 버퍼(TB1_1)에는 제1 내지 제5 라이트 포인터들(WP01~WP05)이 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 저장될 수 있고, 제1_2 임시 버퍼(TB1_2)에는 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)이 저장될 수 있다. 여기서, 제1_1 임시 버퍼(TB1_1)의 첫 번째 서브 버퍼에는 시작 포인터(SP) 01로 지정된 제1 라이트 포인터(WP01)가 할당되므로, 첫 번째 서브 버퍼에는 제1 라이트 포인터(WP01)가 할당된 제1 커맨드(CMD01)가 저장되고, 제1_2 임시 버퍼(TB1_2)의 첫 번째 서브 버퍼에는 시작 포인터(SP) 06이 지정된 제6 라이트 포인터(WP06)의 제8 커맨드(CMD08)가 저장된다.
예를 들면, 큐 버퍼(711)에 저장된 제10 커맨드(CMD10)가 라이트 큐(710)로부터 출력되는 경우, 제10 커맨드(CMD10)에는 제3 구역 아이디(Zid3) 및 제16 라이트 포인터(WP16)가 할당되므로, 제1 내지 제5 임시 버퍼들(TB1~TB5) 중에서 제3 구역 아이디(Zid3)가 할당된 제3 임시 버퍼(TB3)가 선택될 수 있다. 제3 임시 버퍼(TB3)의 시작 포인터(SP)가 16이므로, 시작 포인터(SP) 16에 대응되는 서브 버퍼에 제16 라이트 포인터(WP16)가 할당된 제10 커맨드(CMD10)가 저장될 수 있다.
상술한 방식으로 큐 버퍼(711)에 임시로 저장된 제1 내지 제23 커맨드들(CMD01~CMD23)은 구역 아이디 및 라이트 포인터에 따라 임시 버퍼들(721)에 저장될 수 있다.
큐 컨트롤러(720)는 제1 내지 제5 임시 버퍼들(TB1~TB5) 중에서 서브 버퍼들에 커맨드들이 모두 채워진 임시 버퍼가 발생하면, 해당 임시 버퍼에 저장된 커맨드들을 출력할 수 있다. 예를 들면, 제1_1 임시 버퍼(TB1_1)에 포함된 서브 버퍼들에 제1 내지 제5 라이트 포인터들(WP01~WP05)이 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 모두 저장되면, 큐 컨트롤러(720)는 제1_1 임시 버퍼(TB1_1)에 저장된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)을 출력할 수 있다. 즉, 제1 내지 제5 라이트 포인터들(WP01~WP05)에 따라 호스트가 요청한 순서대로 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 재배열될 수 있다. 제1_2 임시 버퍼(TB1_2)에 포함된 서브 버퍼들에 제6 내지 제10 라이트 포인터들(WP06~WP10)이 모두 저장되면, 큐 컨트롤러(720)는 제1_2 임시 버퍼(TB1_2)에 저장된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)을 출력할 수 있다. 이러한 방식으로 제2 및 제3 임시 버퍼들(TB2, TB3)에 커맨드들(CMD#)이 모두 저장되면, 큐 컨트롤러(720)는 커맨드들(CMD#)이 먼저 채워진 임시 버퍼의 커맨드들을 출력할 수 있다.
제4 및 제5 임시 버퍼들(TB4, TB5)에 커맨드들(CMD#)이 모두 채워지지 않으면, 큐 컨트롤러(720)는 커맨드들(CMD#)이 모두 채워질 때까지 제4 및 제5 임시 버퍼들(TB4, TB5)에 저장된 커맨드들(CMD#)의 출력을 홀드(hold)할 수 있다. 예를 들면, 제4 임시 버퍼(TB4)에 제21 내지 제25 라이트 포인터들(WL21~WP25)이 할당되고, 이 중에서 제21 및 제22 라이트 포인터들(WP21, WP22)에 대응되는 제23 및 제18 커맨드들(CMD23, CMD18)만 저장된 경우, 나머지 제23 내지 제25 라이트 포인터들(WP23~WP25)이 할당된 커맨드들(CMD#)이 저장되지 않았으므로, 제4 구역 아이디(Zid4)에 맵핑된 메모리 영역들에 연속적인 데이터를 프로그램할 수 없다. 따라서, 큐 컨트롤러(720)는 제4 임시 버퍼(TB4)에 커맨드들이 모두 채워질 때까지 커맨드들의 출력을 지연시킬 수 있다.
큐 컨트롤러(720)는 제4 임시 버퍼(TB4)보다 제5 임시 버퍼(TB5)가 커맨드들로 먼저 채워지면, 제5 임시 버퍼(TB5)에 저장된 커맨드들을 출력할 수 있다.
도 9는 본 발명의 실시 예에 따른 메모리 인터페이스를 설명하기 위한 도면이다.
도 9 및 도 8을 참조하면, 메모리 인터페이스(540)는 제1 내지 제5 구역 아이디들(Zid1~Zid5)로 구분되는 제1 내지 제5 출력 버퍼들(B1~B5)을 포함할 수 있다. 제1 출력 버퍼(B1)는 제1 내지 제5 라이트 포인터들(WP01~WP05)에 각각 맵핑된 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)을 저장할 수 있다. 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)은 커맨드 관리부(도 5의 520)에 의해 시스템 버퍼(도 5의 510)에서 써치(search)된 정보일 수 있다.
메모리 인터페이스(540)에서 제1 출력 버퍼(B1)에 제1 구역 아이디(Zid1)가 할당된 경우, 제1_1 임시 버퍼(TB1_1) 또는 제1_2 임시 버퍼(TB1_2)에서 출력된 커맨드들(CMD)에 할당된 라이트 포인터들(WP01~WP05 또는 WP06~WP10)의 물리 블록 어드레스들(PBA#)이 제1 출력 버퍼(B1)에 임시로 저장된 후 출력될 수 있다. 메모리 인터페이스(540)는 제1 내지 제5 라이트 포인터들(WP01~WP05)에 각각 맵핑된 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)을 저장한 후, 제1 구역 아이디(Zid1)와 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)에 따라 커맨드(CMD)를 저장 장치에 포함된 다이들에게 전송할 수 있다.
제4 및 제5 임시 버퍼들(TB4, TB5)과 같이 일부 커맨드들이 저장되지 않은 임시 버퍼들에서는 저장되어 있는 커맨드들이 출력되지 않으므로, 제4 및 제5 임시 버퍼들(TB4, TB5)에 제21, 제22 또는 제26 라이트 포인터들(WP21, WP22 또는 WP26)이 할당된 커맨드들이 저장되더라도, 제4 임시 버퍼(TB4)에 대응되는 제4 출력 버퍼(B4)와, 제5 임시 버퍼(TB5)에 대응되는 제5 출력 버퍼(B5)에는 물리 블록 어드레스들(PB#)이 저장되지 않는다.
도 10은 컨트롤러가 다이들에 액세스(access)하는 동작을 설명하기 위한 도면이다.
도 10을 참조하면, 컨트롤러(1200)는 메모리 인터페이스(540)에 저장된 물리 블록 어드레스들(PBA#)과, 물리 블록 어드레스들(PBA#)에 대응되는 구역 아이디(Zid#)에 따라 선택된 다이들에게 물리 블록 어드레스들(PBA#) 및 커맨드(CMD)를 전송할 수 있다.
상술한 설명을 토대로, 구역 관리부가 커맨드들의 출력 순서를 재배치하는 방법을 구체적으로 설명하면 다음과 같다.
도 11 내지 도 18b는 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작을 순차적으로 설명하기 위한 도면들이다.
도 11을 참조하면, 라이트 큐(710)에 커맨드들(CMD#)이 입력되면, 라이트 큐(710)는 커맨드들(CMD#)과, 커맨드들(CMD#)에 할당된 구역 아이디들(Zid1~Zid5) 및 라이트 포인터들(WP01~WP25)을 입력된 순서대로 큐 버퍼(711)에 저장할 수 있다. 제1 실시 예에서는 제1 내지 제22 커맨드들(CMD01~CMD22)이 입력된 경우를 예를 들어 설명하지만, 큐 버퍼(711)에 빈(empty) 영역이 있으면 커맨드들(CMD#)은 계속 입력될 수도 있다. 제1 내지 제22 커맨드들(CMD01~CMD22)은 모두 프로그램 커맨드일 수 있으며, 커맨드들(CMD#)의 숫자 ‘01~22’는 커맨드들(CMD#)이 입력된 순서를 의미한다.
제1 내지 제4 커맨드들(CMD01~CMD04)에 제1 구역 아이디(Zid1) 및 제1 내지 제4 라이트 포인터들(WP01~WP04)이 할당되므로, 임시 버퍼들(721) 중에서 제1 구역 아이디(Zid1)에 대응되는 제1 임시 버퍼(TB1)가 선택될 수 있다. 제1 임시 버퍼(TB1)는 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)을 포함할 수 있다. 제1_1 임시 버퍼(TB1_1)의 시작 포인터(SP)가 01 이므로, 제1 라이트 포인터(WP01)가 할당된 제1 커맨드(CMD01)이 제1_1 임시 버퍼(TB1_1)의 첫 번째 서브 버퍼에 입력되고, 나머지 서브 버퍼들에는 제2 내지 제4 라이트 포인터들(WP02~WP04)이 각각 할당된 제2, 제3 및 제4 커맨드들(CMD02, CMD03, CMD04)이 순차적으로 입력될 수 있다.
도 12를 참조하면, 제4 커맨드(CMD04) 다음으로 입력된 제5 커맨드(CMD05)에는 제1 구역 아이디(Zid1)가 할당되지만, 제5 라이트 포인터(WP05)가 아닌 제8 라이트 포인터(WP08)이므로 라이트 포인터의 순서가 불연속적이다. 따라서, 큐 컨트롤러(720)는 시작 포인터(SP)가 06인 제1_2 임시 버퍼(TB1_2)에서 세 번째 서브 버퍼에 제8 라이트 포인터(WP08)가 할당된 제5 커맨드(CMD05)를 입력할 수 있다. 제8 라이트 포인터(WP08) 다음으로 제1 구역 아이디(Zid1)의 제9 라이트 포인터(WP09)가 할당된 제6 커맨드(CMD06)가 입력되므로, 제9 라이트 포인터(WP09)가 할당된 제6 커맨드(CMD06)는 제1_2 임시 버퍼(TB1_2)의 네 번째 서브 버퍼에 입력될 수 있다.
도 13a를 참조하면, 제6 커맨드(CMD06) 다음으로 입력된 제7 커맨드(CMD07)에는 제1 구역 아이디(Zid1)의 제5 라이트 포인터(WP05)가 할당되므로 라이트 포인터의 순서가 불연속적이다. 따라서, 큐 컨트롤러(720)는 제1_1 임시 버퍼(TB1_1)에서 다섯 번째 서브 버퍼에 제5 라이트 포인터(WP05)가 할당된 제7 커맨드(CMD07)를 입력할 수 있다. 이에 따라, 제1_1 임시 버퍼(TB1_1)의 모든 서브 버퍼들에는 제1 내지 제5 라이트 포인터들(WP01~WP05)이 각각 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 채워질 수 있다. 연속적인 데이터를 프로그램할 수 있는 저장 사이즈인 다섯 개의 서브 버퍼들이 모두 채워졌으므로, 큐 컨트롤러(720)는 제1 구역 아이디(Zid1)와 제1 내지 제5 라이트 포인터들(WP01~WP05)이 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)을 출력할 수 있다. 본 실시 예에서 연속적인 데이터를 프로그램할 수 있는 저장 사이즈가 다섯 개로 설명되지만, 이는 본 실시 예를 설명하기 위한 예시 이므로 저장 사이즈는 메모리 시스템에 따라 변경될 수 있다. 제1_2 임시 버퍼(TB1_2)의 서브 버퍼들은 커맨드들로 완전히 채워지지 않았으므로, 제1_1 임시 버퍼(TB1_1)에서 제1 내지 제5 라이트 포인터들(WP01~WP05)이 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 출력될 때 제1_2 임시 버퍼(TB1_2)에서 제8 및 제9 라이트 포인터들(WP08, WP09)이 할당된 제5 및 제6 커맨드들(CMD05, CMD06)은 출력되지 않는다.
도 13b를 참조하면, 구역 관리부(500)에서 출력된 제1 구역 아이디(Zid1)에 대한 커맨드들(CMD)은 메모리 인터페이스(540)로 전송될 수 있다. 메모리 인터페이스(540)는 제1 구역 아이디(Zid1)에 대응되는 제1 출력 버퍼(B1)에 제1 내지 제5 라이트 포인터들(WP01~WP05)에 맵핑된 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)을 저장하고, 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05) 및 커맨드(CMD)를 저장 장치(1100)로 전송할 수 있다. 저장 장치(1100)는 구역 아이디에 대응되는 다이들에서 물리 블록 어드레스들(PBA#) 및 커맨드(CMD)에 따라 프로그램 동작을 수행할 수 있다.
도 14를 참조하면, 제1_1 임시 버퍼(TB1_1)에 저장된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 출력되었으므로(도 13a 참조) 제1_1 임시 버퍼(TB1_1)는 비워질 수 있다. 제7 커맨드(CMD07) 다음으로 입력된 제8 커맨드(CMD08)에는 제1 구역 아이디(Zid1) 및 제6 라이트 포인터(WP06)가 할당되므로, 큐 컨트롤러(720)는 시작 포인터(SP)가 06인 제1_2 임시 버퍼(TB1_2)에서 첫 번째 서브 버퍼에 제6 라이트 포인터(WP06)가 할당된 제8 커맨드(CMD08)를 입력할 수 있다. 제8 커맨드(CMD08) 다음으로 입력된 제9 커맨드(CMD09)에는 제1 구역 아이디(Zid1) 및 제7 라이트 포인터(WP07)가 입력되므로, 제7 라이트 포인터(WP07)가 할당된 제9 커맨드(CMD09)는 제1_2 임시 버퍼(TB1_2)의 두 번째 서브 버퍼에 입력될 수 있다.
도 15를 참조하면, 제9 커맨드(CMD09) 다음으로 입력된 제10 커맨드(CMD10)에는 제3 구역 아이디(Zid3) 및 제16 라이트 포인터(WP16)가 할당되므로, 큐 컨트롤러(720)는 시작 포인터(SP)가 16인 제3 임시 버퍼(TB3)의 첫 번째 서브 버퍼에 제16 라이트 포인터(WP16)가 할당된 제10 커맨드(CMD10)를 입력할 수 있다. 제16 라이트 포인터(WP16) 다음으로 제3 구역 아이디(Zid3)의 제17 라이트 포인터(WP17)가 큐잉되므로, 제17 라이트 포인터(WP17)가 할당된 제11 커맨드(CMD11)는 제3 임시 버퍼(TB3)의 두 번째 서브 버퍼에 입력될 수 있다.
도 16a를 참조하면, 제11 커맨드(CMD11) 다음으로 입력된 제12 커맨드(CMD12)에는 제1 구역 아이디(Zid1)의 제10 라이트 포인터(WP10)가 할당되므로, 큐 컨트롤러(720)는 제1_2 임시 버퍼(TB1_2)의 다섯 번째 서브 버퍼에 제10 라이트 포인터(WP10)가 할당된 제12 커맨드(CMD12)를 입력할 수 있다. 이에 따라, 제1_2 임시 버퍼(TB1_2)의 모든 서브 버퍼들에 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)이 채워질 수 있다. 연속적인 데이터를 프로그램할 수 있는 저장 사이즈인 다섯 개의 서브 버퍼들이 모두 채워졌으므로, 큐 컨트롤러(720)는 제1 구역 아이디(Zid1)에서 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)을 출력할 수 있다.
도 16b를 참조하면, 구역 관리부(500)에서 출력된 제1 구역 아이디(Zid1)에 대한 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)은 메모리 인터페이스(540)로 전송될 수 있다. 메모리 인터페이스(540)는 제1 구역 아이디(Zid1)에 대응되는 제1 출력 버퍼(B1)에 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)에 할당된 제6 내지 제10 라이트 포인터들(WP06~WP10)에 맵핑된 제6 내지 제10 물리 블록 어드레스들(PBA06~PBA10)을 저장하고, 제6 내지 제10 물리 블록 어드레스들(PBA06~PBA10)에 따라 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)을 저장 장치(1100)로 전송할 수 있다. 저장 장치(1100)는 구역 아이디에 대응되는 다이들에서 물리 블록 어드레스들(PBA#) 및 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)에 따라 프로그램 동작을 수행할 수 있다.
도 16c를 참조하면, 제1_2 임시 버퍼(TB1_2)의 모든 서브 버퍼들에 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)이 채워졌으나 메모리 인터페이스(540)의 제1 출력 버퍼(B1)가 비워지지 않은 경우, 구역 관리부(500)는 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)의 출력을 지연시킬 수 있다. 예를 들면, 메모리 인터페이스(540)의 제1 출력 버퍼(B1)에 이전 커맨드들에 대응되는 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)이 저장되어 있으면, 구역 관리부(500)는 제1 출력 버퍼(B1)가 리셋될 때까지 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)의 출력을 지연시킬 수 있다. 제1 출력 버퍼(B1)가 리셋되면, 도 16b를 참조한 설명과 같이 구역 관리부(500)는 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)을 출력할 수 있다.
도 17a를 참조하면, 제1_2 임시 버퍼(TB1_2)에 저장된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)이 출력되었으므로(도 16a 참조) 제1_1 임시 버퍼(TB1_1)는 비워질 수 있다. 제12 커맨드(CMD12) 다음으로 입력된 제13 내지 제17 커맨드들(CMD13~CMD17)에는 제2 구역 아이디(Zid2) 및 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당되므로, 큐 컨트롤러(720)는 시작 포인터(SP)가 11인 제2 임시 버퍼(TB2)의 서브 버퍼들에 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당된 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)을 순차적으로 입력할 수 있다. 이에 따라, 제2 임시 버퍼(TB2)의 모든 서브 버퍼들에 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당된 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)이 채워질 수 있다. 연속적인 데이터를 프로그램할 수 있는 저장 사이즈인 다섯 개의 서브 버퍼들이 모두 채워졌으므로, 큐 컨트롤러(720)는 제2 구역 아이디(Zid2)에서 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당된 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)을 출력할 수 있다.
도 17b를 참조하면, 구역 관리부(500)에서 출력된 제2 구역 아이디(Zid2) 및 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당된 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)은 메모리 인터페이스(540)로 전송될 수 있다. 메모리 인터페이스(540)는 제2 구역 아이디(Zid2)에 대응되는 제2 출력 버퍼(B2)에 제11 내지 제15 라이트 포인터들(WP11~WP15)에 맵핑된 제11 내지 제15 물리 블록 어드레스들(PBA11~PBA15)을 저장하고, 제11 내지 제15 물리 블록 어드레스들(PBA11~PBA15)에 따라 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)을 저장 장치(1100)로 전송할 수 있다. 저장 장치(1100)는 구역 아이디에 대응되는 다이들에서 물리 블록 어드레스들(PBA#) 및 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)에 따라 프로그램 동작을 수행할 수 있다.
도 18a를 참조하면, 제17 커맨드(CMD17) 다음으로 입력된 제18 내지 제22 커맨드들(CMD18~CMD22)에는 제4 구역 아이디(Zid4) 및 제21 내지 제25 라이트 포인터들(WP21~WP25)이 할당되므로, 큐 컨트롤러(720)는 시작 포인터(SP)가 21인 제4 임시 버퍼(TB4)의 서브 버퍼들에 제21 내지 제25 라이트 포인터들(WP21~WP25)이 할당된 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)을 순차적으로 입력할 수 있다. 이에 따라, 제4 임시 버퍼(TB4)의 모든 서브 버퍼들에 제21 내지 제25 라이트 포인터들(WP21~WP25)이 할당된 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)이 채워질 수 있다. 연속적인 데이터를 프로그램할 수 있는 저장 사이즈인 다섯 개의 서브 버퍼들이 모두 채워졌으므로, 큐 컨트롤러(720)는 제3 구역 아이디(Zid3)보다 제4 구역 아이디(Zid4)에 우선권을 주고, 우선권을 가진 제4 구역 아이디(Zid4)가 할당된 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)을 출력할 수 있다.
도 18b를 참조하면, 구역 관리부(500)에서 출력된 제4 구역 아이디(Zid4) 및 제21 내지 제25 라이트 포인터들(WP21~WP25)이 할당된 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)은 메모리 인터페이스(540)로 전송될 수 있다. 메모리 인터페이스(540)는 제4 구역 아이디(Zid4)에 대응되는 제4 출력 버퍼(B4)에 제21 내지 제25 라이트 포인터들(WP21~WP25)에 맵핑된 제21 내지 제25 물리 블록 어드레스들(PBA21~PBA25)을 저장하고, 제21 내지 제25 물리 블록 어드레스들(PBA21~PBA25)에 따라 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)을 저장 장치(1100)로 전송할 수 있다. 저장 장치(1100)는 구역 아이디에 대응되는 다이들에서 물리 블록 어드레스들(PBA#) 및 커맨드(CMD)에 따라 프로그램 동작을 수행할 수 있다.
도 19a 및 도 19b는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 19a를 참조하면, 구역 관리부(500)는 커맨드들이 모두 채워진 임시 버퍼가 발생하더라도, 호스트(2000)로부터 출력 요청이 수신되기 이전에는 라이트 포인터들(WP#)을 출력하지 아니하고 대기시킬 수 있다. 예를 들면, 제1_1, 제1_2, 제2 및 제4 임시 버퍼들(TB1_1, TB1_2, TB2, TB4)에 커맨드들이 모두 채워지면, 구역 관리부(500)는 호스트(2000)로부터 출력 요청이 수신되었는지를 체크할 수 있다. 수신된 출력 요청이 없으면, 구역 관리부(500)는 커맨드들의 출력을 홀드시킬 수 있다.
도 19b를 참조하면, 호스트(2000)가 출력 요청(RQ_out)을 출력하면, 구역 관리부(500)는 출력 요청(RQ_out)에 응답하여 제1_1, 제1_2, 제2 및 제4 임시 버퍼들(TB1_1, TB1_2, TB2, TB4)에 저장된 커맨드들(CMD)을 출력할 수 있다.
도 20a 및 도 20b는 본 발명의 제3 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 20a를 참조하면, 일부 라이트 포인터들에는 컨트롤 키(CON_KEY)가 포함될 수 있다. 컨트롤 키(CON_KEY)는 호스트(2000)의 출력 요청에 의해서만 출력될 수 있는 라이트 포인터를 지정하는 인덱스(index)일 수 있다. 컨트롤 키(CON_KEY)는 호스트(2000)가 지정하거나, 컨트롤러에 포함된 커맨드 관리부(도 5의 520)가 지정할 수도 있다. 따라서, 노말(normal) 라이트 포인터들은 논리 블록 어드레스(LBA)로만 구성될 수 있고, 호스트(2000) 또는 커맨드 관리부(520)에 의해 선택된 라이트 포인터들은 컨트롤 키(CON_KEY) 및 논리 블록 어드레스(LBA)로 구성될 수 있다.
구역 관리부(500)는 커맨드들이 모두 채워진 임시 버퍼가 발생하면, 해당 임시 버퍼에 포함된 커맨드들을 즉시 출력할 수 있으나, 컨트롤 키(CON_KEY)가 설정된 라이트 포인터들이 포함된 임시 버퍼에서는 호스트(2000)로부터 출력 요청이 수신될 때까지 커맨드들의 출력을 홀드시킬 수 있다. 예를 들면, 제1_1, 제1_2, 제2 및 제4 임시 버퍼들(TB1_1, TB1_2, TB2, TB4)에 커맨드들이 모두 채워진 경우, 구역 관리부(500)는 제1_1, 제1_2, 제2 및 제4 임시 버퍼들(TB1_1, TB1_2, TB2, TB4)에 저장된 커맨드들 중에서 컨트롤 키(CON_KEY)가 설정된 라이트 포인터가 할당된 커맨드가 포함되어 있는지를 체크할 수 있다. 구역 관리부(500)는 제2 및 제4 임시 버퍼들(TB2, TB4)에는 노말 라이트 포인터들이 할당된 커맨드들만 저장된 것으로 판단되면, 제2 및 제4 임시 버퍼들(TB2, TB4)에 저장된 커맨드들(CMD)을 즉시 출력할 수 있다. 구역 관리부(500)는 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)에 저장된 라이트 포인터들(WP01~WP10)이 할당된 커맨드들 중에서 컨트롤 키(CON_KEY)가 설정된 라이트 포인터들(WP03~WP06)이 할당된 커맨드들이 저장된 것으로 판단되면, 호스트(2000)로부터 출력 요청이 수신되었는지를 체크할 수 있다. 수신된 출력 요청이 없으면, 구역 관리부(500)는 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)에 저장되고 라이트 포인터들(WP01~WP10)이 할당된 커맨드들(CMD)의 출력을 홀드시킬 수 있다.
도 20b를 참조하면, 호스트(2000)가 출력 요청(RQ_out)을 출력하면, 구역 관리부(500)는 출력 요청(RQ_out)에 응답하여 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)에 저장된 커맨드들(CMD)을 출력할 수 있다.
도 21은 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 21을 참조하면, 메모리 카드 시스템(3000)은 컨트롤러(3100), 메모리 장치(3200), 및 커넥터(3300)를 포함한다.
컨트롤러(3100)는 메모리 장치(3200)와 연결된다. 컨트롤러(3100)는 메모리 장치(3200)를 접속(access)하도록 구성된다. 예를 들어, 컨트롤러(3100)는 메모리 장치(3200)의 프로그램, 리드 또는 소거 동작을 제어하거나, 배경(background) 동작을 제어하도록 구성될 수 있다. 컨트롤러(3100)는 도 5에 도시된 컨트롤러(1200)와 동일하게 구성될 수 있다. 컨트롤러(3100)는 메모리 장치(3200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(3100)는 메모리 장치(3200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(3100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
컨트롤러(3100)는 커넥터(3300)를 통해 외부 장치와 통신할 수 있다. 컨트롤러(3100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 컨트롤러(3100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 커넥터(3300)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.
예시적으로, 메모리 장치(3200)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등과 같은 다양한 비휘발성 메모리 소자들로 구성될 수 있다.
컨트롤러(3100) 및 메모리 장치(3200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(3100) 및 메모리 장치(3200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 범용 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 22는 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 22를 참조하면, SSD 시스템(4000)은 호스트(4100) 및 SSD(4200)를 포함한다. SSD(4200)는 신호 커넥터(4001)를 통해 호스트(4100)와 신호(SIG)를 주고 받고, 전원 커넥터(4002)를 통해 전원(PWR)을 입력 받는다. SSD(4200)는 컨트롤러(4210), 복수의 플래시 메모리들(4221~422n), 보조 전원 장치(4230), 및 버퍼 메모리(4240)를 포함한다.
본 발명의 실시 예에 따르면, 컨트롤러(4210)는 도 5를 참조하여 설명된 컨트롤러(1200)의 기능을 수행할 수 있다.
컨트롤러(4210)는 호스트(4100)로부터 수신된 신호에 응답하여 복수의 플래시 메모리들(4221~422n)을 제어할 수 있다. 예시적으로, 신호는 호스트(4100) 및 SSD(4200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.
보조 전원 장치(4230)는 전원 커넥터(4002)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4230)는 호스트(4100)로부터 전원 전압을 입력 받고, 충전할 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터의 전원 공급이 원활하지 않을 경우, SSD(4200)의 전원 전압을 제공할 수 있다. 예시적으로, 보조 전원 장치(4230)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4230)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(4240)는 SSD(4200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(4240)는 호스트(4100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(4221~422n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(4221~422n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(4240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.
1000: 메모리 시스템
1100: 저장 장치
1200: 컨트롤러 2000: 호스트
500: 구역 관리부 510: 시스템 버퍼
520: 커맨드 관리부 530: 호스트 인터페이스
540: 메모리 인터페이스 710: 라이트 큐
711: 큐 버퍼 720: 큐 컨트롤러
721: 임시 버퍼들
1200: 컨트롤러 2000: 호스트
500: 구역 관리부 510: 시스템 버퍼
520: 커맨드 관리부 530: 호스트 인터페이스
540: 메모리 인터페이스 710: 라이트 큐
711: 큐 버퍼 720: 큐 컨트롤러
721: 임시 버퍼들
Claims (20)
- 구역 아이디 및 라이트 포인터를 포함하는 커맨드들을 입력되는 순서대로 큐잉하도록 구성된 라이트 큐; 및
상기 커맨드들의 구역 아이디들에 임시 버퍼들을 할당하고, 상기 라이트 큐에서 출력된 상기 커맨드들을 상기 구역 아이디에 따라 구분된 상기 임시 버퍼들에 저장하도록 구성된 큐 컨트롤러를 포함하고,
상기 큐 컨트롤러는,
상기 임시 버퍼들 중에서 설정된 저장 사이즈가 채워진 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성되는 컨트롤러.
- 제1항에 있어서,
상기 구역 아이디들은 연속적인 논리 블록 어드레스들로 구분되는 메모리 영역들에 할당된 인덱스들이고,
상기 라이트 포인터들은 선택된 구역 아이디 내에서 선택된 논리 블록 어드레스 다음으로 선택되는 논리 블록 어드레스들인 컨트롤러.
- 제1항에 있어서, 상기 라이트 큐는,
상기 커맨드들을 임시로 저장하도록 구성된 큐 버퍼를 포함하는 컨트롤러.
- 제1항에 있어서, 상기 큐 컨트롤러는,
상기 라이트 큐에서 출력된 상기 커맨드들의 상기 구역 아이디에 따라 상기 임시 버퍼를 선택하고, 선택된 상기 임시 버퍼에 상기 라이트 포인터의 순서에 따라 상기 커맨드들을 저장하도록 구성되는 컨트롤러.
- 제4항에 있어서,
상기 임시 버퍼들 각각은 상기 라이트 포인터에 따라 상기 커맨드들을 저장하기 위한 서브 버퍼들을 포함하는 컨트롤러.
- 제5항에 있어서,
상기 임시 버퍼들 각각에 포함된 상기 서브 버퍼들 중에서 첫 번째 서브 버퍼에는 시작 포인터로 지정된 라이트 포인터가 할당된 커맨드가 저장되는 컨트롤러.
- 제6항에 있어서, 상기 큐 컨트롤러는,
상기 라이트 포인터들에 따라 상기 커맨드들을 상기 서브 버퍼들에 저장하도록 구성되는 컨트롤러.
- 제5항에 있어서, 상기 큐 컨트롤러는,
상기 임시 버퍼들 중에서 빈(empty) 서브 버퍼가 적어도 하나 이상 포함된 임시 버퍼에 저장된 상기 커맨드들의 출력을 홀드(hold)하고,
상기 임시 버퍼들 중에서 선택된 임시 버퍼에 포함된 모든 상기 서브 버퍼들에 상기 커맨드들이 저장되면, 상기 선택된 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성되는 컨트롤러.
- 제1항에 있어서,
호스트로부터 출력된 요청들을 상기 커맨드들로 변환하고, 상기 커맨드들의 실행 순서를 저장 장치의 상태에 따라 변경하고, 변경된 상기 커맨드들을 상기 라이트 큐에 전송하도록 구성된 커맨드 관리부;
상기 저장 장치에 포함된 다이들(dies)의 물리 블록 어드레스들과 논리 블록 어드레스들, 상기 논리 블록 어드레스들과 상기 구역 아이디의 맵핑 정보를 저장하도록 구성된 시스템 버퍼; 및
상기 큐 컨트롤러에서 출력된 상기 라이트 포인터들에 맵핑된 상기 물리 블록 어드레스들을 저장하고, 상기 구역 아이디에 대응되는 상기 다이들에게 상기 맵핑된 물리 블록 어드레스들 및 상기 커맨드를 전송하도록 구성된 메모리 인터페이스를 더 포함하는 컨트롤러.
- 제9항에 있어서, 상기 메모리 인터페이스는,
상기 구역 아이디들에 1:1로 각각 대응되는 출력 버퍼들을 포함하는 컨트롤러.
- 제9항에 있어서, 상기 커맨드 관리부는,
상기 큐 컨트롤러에서 상기 라이트 포인터들이 출력되면, 상기 시스템 버퍼에 저장된 상기 맵 정보를 사용하여 상기 라이트 포인터들에 각각 맵핑된 상기 물리 블록 어드레스들을 써치(search)하고, 써치된 상기 물리 블록 어드레스들을 상기 메모리 인터페이스의 상기 출력 버퍼들에 저장하도록 구성되는 컨트롤러.
- 제11항에 있어서, 상기 큐 컨트롤러는,
상기 출력 버퍼 중에서 선택된 구역 아이디에 대응되는 출력 버퍼에 상기 물리 블록 어드레스들이 저장되고, 상기 선택된 구역 아이디에 대응되는 임시 버퍼에 포함된 서브 버퍼들에 상기 라이트 포인터들이 모두 저장된 경우,
상기 출력 버퍼가 비워질 때까지 상기 서브 버퍼들에 저장된 상기 라이트 포인터들의 출력을 지연시키도록 구성되는 컨트롤러.
- 데이터를 저장하는 다이들을 포함하는 저장 장치; 및
호스트에서 출력된 요청들에 응답하여 커맨드들을 생성하고 상기 다이들의 상태에 따라 상기 커맨드들을 큐잉하도록 구성된 컨트롤러를 포함하고,
상기 컨트롤러는,
상기 다이들을 구역 아이디들로 구분하여 상기 저장 장치를 관리하고, 프로그램 동작 시 큐잉된 상기 커맨드들의 순서에 관계없이 상기 구역 아이디들 중 라이트 포인터들이 모두 채워진 구역 아이디에 우선권을 주고, 상기 우선권을 가진 상기 구역 아이디에 할당된 상기 커맨드들을 출력하도록 구성되는 메모리 시스템.
- 제13항에 있어서,
상기 다이들 각각은 상기 데이터를 저장하는 복수의 메모리 블록들을 포함하는 메모리 시스템.
- 제13항에 있어서, 상기 컨트롤러는,
상기 호스트로부터 출력된 상기 요청들을 상기 커맨드들로 변환하고, 상기 커맨드들의 실행 순서를 상기 저장 장치의 상태에 따라 변경하도록 구성되는 커맨드 관리부;
상기 다이들의 물리 블록 어드레스들, 논리 블록 어드레스들 및 상기 구역 아이디들의 맵핑 테이블을 저장하도록 구성된 시스템 버퍼;
상기 프로그램 동작 시 상기 커맨드에 대응되는 라이트 포인터들의 순서가 불연속적인 경우, 동일한 구역 아이디에 할당되는 상기 라이트 포인터들의 순서가 연속되도록 상기 커맨드들의 큐잉을 조절하고, 임시 버퍼에 상기 커맨드들이 모두 채워진 구역 아이디가 발생하면, 상기 구역 아이디에게 우선권을 주도록 구성된 구역 관리부; 및
상기 구역 관리부에서 출력된 상기 커맨드들과, 상기 커맨드들에 대응되는 상기 물리 블록 어드레스들을 저장하고, 상기 다이들에게 상기 맵핑된 물리 블록 어드레스들 및 상기 커맨드들을 전송하도록 구성된 메모리 인터페이스를 포함하는 메모리 시스템.
- 제15항에 있어서, 상기 구역 관리부는,
상기 구역 아이디들 및 상기 라이트 포인터들이 할당되며 상기 커맨드 관리부로부터 출력되는 상기 커맨드들을 입력되는 순서대로 큐잉하도록 구성된 라이트 큐; 및
상기 라이트 큐에 저장된 순서대로 상기 커맨드들을 상기 구역 아이디들에 대응되는 임시 버퍼들에 저장하고, 상기 임시 버퍼들 중에서 설정된 저장 사이즈가 채워진 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성된 큐 컨트롤러를 포함하는 메모리 시스템.
- 제16항에 있어서,
상기 임시 버퍼들은 라이트 포인터들이 할당된 서브 버퍼들을 포함하고,
상기 커맨드들은 상기 라이트 포인터들에 대응되는 상기 서브 버퍼들에 저장되는 메모리 시스템.
- 제17항에 있어서,
상기 커맨드들이 모두 채워진 임시 버퍼들과 상기 라이트 포인터들이 채워지지 아니한 임시 버퍼들이 상기 큐 컨트롤러에 포함되는 경우,
상기 큐 컨트롤러는 상기 커맨드들이 모두 채워진 임시 버퍼들에 우선권을 주고, 상기 우선권을 가진 상기 임시 버퍼들에 저장된 상기 커맨드들을 상기 메모리 인터페이스로 출력시키는 메모리 시스템.
- 제13항에 있어서, 상기 컨트롤러는,
상기 라이트 포인터들 중에서 컨트롤 키가 포함된 라이트 포인터들이 포함된 경우, 상기 컨트롤 키가 포함된 상기 라이트 포인터들에 할당된 커맨드들은 상기 호스트로부터 출력 요청에 응답하여 메모리 인터페이스로 출력되고,
상기 컨트롤 키가 포함되지 아니한 라이트 포인터들에 할당된 커맨드들은 상기 출력 요청에 관계없이 상기 메모리 인터페이스에 출력되는 메모리 시스템.
- 호스트로부터 수신된 요청들에 대응되는 커맨드들을 생성하고, 상기 커맨드들이 생성된 순서에 따라 상기 커맨드들에 라이트 포인터들을 할당하고, 데이터가 저장되는 저장 장치의 상태에 따라 상기 커맨드들을 큐잉하도록 구성된 커맨드 관리부;
큐잉된 상기 커맨드들을 임시로 저장하도록 구성된 라이트 큐;
구역 아이디 별로 구분되는 임시 버퍼들; 및
상기 라이트 큐로부터 출력된 상기 커맨드들을 상기 구역 아이디 및 상기 라이트 포인터들의 순서에 따라 상기 임시 버퍼들에 저장하고, 설정된 사이즈가 채워진 임시 버퍼의 상기 커맨드들을 출력하도록 구성된 구역 관리부를 포함하는 컨트롤러.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210006922A KR20220104511A (ko) | 2021-01-18 | 2021-01-18 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
US17/364,401 US11875056B2 (en) | 2021-01-18 | 2021-06-30 | Controller for managing commands with zone identifications and memory system having the same |
CN202111282332.XA CN114817094B (zh) | 2021-01-18 | 2021-11-01 | 控制器和具有控制器的存储器系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210006922A KR20220104511A (ko) | 2021-01-18 | 2021-01-18 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220104511A true KR20220104511A (ko) | 2022-07-26 |
Family
ID=82406388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210006922A KR20220104511A (ko) | 2021-01-18 | 2021-01-18 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11875056B2 (ko) |
KR (1) | KR20220104511A (ko) |
CN (1) | CN114817094B (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11789611B2 (en) | 2020-04-24 | 2023-10-17 | Netapp, Inc. | Methods for handling input-output operations in zoned storage systems and devices thereof |
US11340987B1 (en) | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
US11797377B2 (en) | 2021-10-05 | 2023-10-24 | Netapp, Inc. | Efficient parity determination in zoned solid-state drives of a storage system |
US11803329B2 (en) * | 2021-11-22 | 2023-10-31 | Netapp, Inc. | Methods and systems for processing write requests in a storage system |
US11816359B2 (en) | 2021-12-16 | 2023-11-14 | Netapp, Inc. | Scalable solid-state storage system and methods thereof |
US20230236765A1 (en) * | 2022-01-26 | 2023-07-27 | Samsung Electronics Co., Ltd. | Storage controller performing active zone refresh, method of operating storage controller, and method of operating storage device having storage controller |
US12105970B2 (en) | 2022-02-24 | 2024-10-01 | Micron Technology, Inc. | Host defined zone group configuration at a memory sub-system |
US20230266897A1 (en) * | 2022-02-24 | 2023-08-24 | Micron Technology, Inc. | Dynamic zone group configuration at a memory sub-system |
KR20240105075A (ko) * | 2022-12-28 | 2024-07-05 | 삼성전자주식회사 | 호스트가 접근 가능한 랜덤 기입 영역을 지원하는 스토리지 장치 및 그 동작 방법 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3745552B2 (ja) * | 1999-02-26 | 2006-02-15 | 富士通株式会社 | 情報記憶装置 |
US7870351B2 (en) | 2007-11-15 | 2011-01-11 | Micron Technology, Inc. | System, apparatus, and method for modifying the order of memory accesses |
KR102074329B1 (ko) | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
US9626309B1 (en) * | 2014-07-02 | 2017-04-18 | Microsemi Storage Solutions (U.S.), Inc. | Method and controller for requesting queue arbitration and coalescing memory access commands |
US10417190B1 (en) | 2014-09-25 | 2019-09-17 | Amazon Technologies, Inc. | Log-structured file system for zone block devices with small zones |
US9760281B2 (en) * | 2015-03-27 | 2017-09-12 | Intel Corporation | Sequential write stream management |
KR20180069960A (ko) * | 2016-12-15 | 2018-06-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
US10289552B2 (en) * | 2017-05-03 | 2019-05-14 | Western Digital Technologies, Inc. | Storage system and method for flush optimization |
US11734175B2 (en) * | 2019-08-22 | 2023-08-22 | SK Hynix Inc. | Storage device and method of operating the same |
US11294827B2 (en) * | 2019-09-12 | 2022-04-05 | Western Digital Technologies, Inc. | Non-sequential zoned namespaces |
JP7366795B2 (ja) * | 2020-02-14 | 2023-10-23 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20210108107A (ko) * | 2020-02-25 | 2021-09-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11372543B2 (en) * | 2020-04-10 | 2022-06-28 | Western Digital Technologies, Inc. | Zone-append command scheduling based on zone state |
US11789611B2 (en) * | 2020-04-24 | 2023-10-17 | Netapp, Inc. | Methods for handling input-output operations in zoned storage systems and devices thereof |
KR20220014212A (ko) * | 2020-07-28 | 2022-02-04 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
KR20220028332A (ko) * | 2020-08-28 | 2022-03-08 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
KR20220060372A (ko) * | 2020-11-04 | 2022-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11599304B2 (en) * | 2020-11-16 | 2023-03-07 | Western Digital Technologies, Inc. | Data aggregation in ZNS drive |
JP2022094705A (ja) * | 2020-12-15 | 2022-06-27 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11868652B2 (en) * | 2021-02-25 | 2024-01-09 | SK Hynix Inc. | Utilization based dynamic shared buffer in data storage system |
US11816345B2 (en) * | 2021-03-29 | 2023-11-14 | Micron Technology, Inc. | Zone block staging component for a memory subsystem with zoned namespace |
-
2021
- 2021-01-18 KR KR1020210006922A patent/KR20220104511A/ko unknown
- 2021-06-30 US US17/364,401 patent/US11875056B2/en active Active
- 2021-11-01 CN CN202111282332.XA patent/CN114817094B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US11875056B2 (en) | 2024-01-16 |
CN114817094A (zh) | 2022-07-29 |
US20220229596A1 (en) | 2022-07-21 |
CN114817094B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20220104511A (ko) | 컨트롤러 및 이를 포함하는 메모리 시스템 | |
US11188259B2 (en) | Storage device and method of operating the storage device | |
US10430083B2 (en) | Memory scheduling method for changing command order and method of operating memory system | |
CN113906383B (zh) | 主机系统和存储器子系统之间的定时数据传送 | |
US20170228191A1 (en) | Systems and methods for suppressing latency in non-volatile solid state devices | |
US11307803B2 (en) | Storage device for suspending program operation and performing read operation and operating method thereof | |
US20220229595A1 (en) | Controller and operation method thereof | |
KR102653373B1 (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US11842073B2 (en) | Memory controller and operating method thereof | |
CN110908596A (zh) | 数据存储装置、其操作方法和包括存储装置的存储系统 | |
US20230139864A1 (en) | Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device | |
KR20210014412A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
US10162568B2 (en) | Method for searching matching key of storage device and server system including the same | |
KR20220028332A (ko) | 저장 장치 및 그 동작 방법 | |
CN111722792B (zh) | 存储器系统 | |
US20160132251A1 (en) | Operating method of storage device and data writing method for writing data into storage device | |
KR102596964B1 (ko) | 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치 | |
US11675537B2 (en) | Controller for performing data input/output operation and memory management operation at the same time and operation method thereof | |
US10282328B2 (en) | Apparatus having direct memory access controller and method for accessing data in memory | |
CN114201108B (zh) | 包括映射高速缓存的控制器以及包括控制器的存储器系统 | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 | |
US11625178B2 (en) | Storage device and method of operating the same | |
KR20220138760A (ko) | 컨트롤러 및 이를 포함하는 메모리 시스템 | |
KR20210085499A (ko) | 저장 장치 및 그 동작 방법 | |
US20240241835A1 (en) | Storage device supporting multi-namespace and method of operating the same |