KR102669517B1 - 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents
메모리 컨트롤러 및 이를 포함하는 메모리 시스템 Download PDFInfo
- Publication number
- KR102669517B1 KR102669517B1 KR1020180161926A KR20180161926A KR102669517B1 KR 102669517 B1 KR102669517 B1 KR 102669517B1 KR 1020180161926 A KR1020180161926 A KR 1020180161926A KR 20180161926 A KR20180161926 A KR 20180161926A KR 102669517 B1 KR102669517 B1 KR 102669517B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory system
- memory
- size
- throttling
- host
- Prior art date
Links
- 230000001934 delay Effects 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims description 12
- 230000003213 activating effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 30
- 230000003111 delayed effect Effects 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 9
- 238000012937 correction Methods 0.000 description 8
- 230000015556 catabolic process Effects 0.000 description 6
- 238000006731 degradation reaction Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/1689—Synchronisation and timing concerns
-
- 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/0658—Controller construction arrangements
-
- 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/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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
- 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
-
- 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]
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)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Dram (AREA)
Abstract
본 기술은 호스트로부터 수신받은 요청에 따라 커맨드를 생성하는 커맨드 생성부; 메모리 시스템의 내부에서 현재 처리중인 데이터의 현재 처리량 사이즈와 앞으로 처리할 데이터의 요청 처리량 사이즈를 합한 총 처리량 사이즈를 산출하고, 상기 총 처리량 사이즈와 목표 사이즈를 서로 비교하여, 비교 결과에 따라 지연 신호를 활성화 또는 비활성화시키는 스로틀링 매니저; 및 상기 지연 신호가 활성화되는 동안, 상기 요청에 대한 완료 신호의 출력을 지연시키고, 상기 지연 신호가 비활성화되면 상기 완료 신호를 출력하는 완료 신호 출력 모듈을 포함하는 메모리 컨트롤러 및 메모리 시스템을 포함한다.
Description
본 발명은 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 스로틀링 매니저(throttling manager)를 포함하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템(memory system)은 메모리 장치(memory device) 및 메모리 컨트롤러(memory controller)를 포함할 수 있다.
메모리 장치는 데이터를 저장하거나, 저장된 데이터를 출력할 수 있다. 예를 들면, 메모리 장치는 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치로 이루어지거나, 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치로 이루어질 수 있다.
메모리 컨트롤러는 호스트(host)와 저장 장치 사이에서 데이터 통신을 제어할 수 있다. 메모리 장치가 비휘발성 메모리 장치의 일종인 플래시 메모리 장치로 이루어진 경우, 메모리 컨트롤러는 메모리 장치와 호스트 사이에서 통신하기 위하여 플래시 변환 계층(Flash Translation Layer)을 포함할 수 있다.
호스트는 PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 메모리 컨트롤러를 통해 메모리 장치와 통신할 수 있다. 호스트와 메모리 시스템 간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들이 포함될 수 있다.
본 발명의 실시예는 메모리 시스템의 내부 처리량을 고려하여 완료 신호(completion signal)를 출력하는 시간을 조절함으로써, 스로틀링(throttling)을 효율적으로 수행할 수 있는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템을 제공한다.
본 발명의 실시예에 따른 메모리 컨트롤러는, 호스트로부터 수신받은 요청에 따라 커맨드를 생성하는 커맨드 생성부; 메모리 시스템의 내부에서 현재 처리중인 데이터의 현재 처리량 사이즈와 앞으로 처리할 데이터의 요청 처리량 사이즈를 합한 총 처리량 사이즈를 산출하고, 상기 총 처리량 사이즈와 목표 사이즈를 서로 비교하여, 비교 결과에 따라 지연 신호를 활성화 또는 비활성화시키는 스로틀링 매니저; 및 상기 지연 신호가 활성화되는 동안, 상기 요청에 대한 완료 신호의 출력을 지연시키고, 상기 지연 신호가 비활성화되면 상기 완료 신호를 출력하는 완료 신호 출력 모듈을 포함한다.
본 발명의 실시예에 따른 메모리 시스템은, 데이터가 저장되는 다수의 다이들(dies); 호스트와 상기 다이들 사이에서 통신하는 메모리 컨트롤러; 및 상기 메모리 컨트롤러에서 생성된 커맨드들을 임시로 저장하는 버퍼 메모리를 포함하고, 상기 메모리 컨트롤러는, 상기 다이들에 포함된 다수의 메모리 블록들을 다수의 슈퍼 블록들로 그룹화하고, 상기 슈퍼 블록들 각각에서 처리중인 현재 처리량 사이즈와 앞으로 처리할 요청 처리량 사이즈에 따라 스로틀링 비율을 조절하고, 상기 스로틀링 비율에 따라 상기 슈퍼 블록들에서 수행되는 스로틀링 동작의 횟수를 조절한다.
본 기술은 메모리 시스템의 내부 처리량을 고려하여 호스트에게 완료 신호(completion signal)를 출력함으로써 메모리 시스템의 스로틀링을 효율적으로 수행할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 실시예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 3은 도 2의 중앙 처리 장치를 설명하기 위한 도면이다.
도 4는 본 발명의 다른 실시예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 5는 도 4의 중앙 처리 장치를 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 스로틀링 매니저를 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 순서도이다.
도 8은 요청 처리량 사이즈와 현재 처리량 사이즈에 영향을 주는 요소들(elements)의 실시예를 설명하기 위한 표 이다.
도 9는 본 발명의 실시예에 따라 완료 신호(completion signal)가 출력 또는 지연되는 다양한 경우들을 설명하기 위한 도면이다.
도 10은 커맨드들이 저장되는 버퍼 메모리에 관계 없이, 내부 처리량에 따라 완료 신호(completion signal)를 출력하는 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 다른 실시예에 따른 스로틀링 매니저를 설명하기 위한 도면이다.
도 12 내지 도 16은 본 발명의 또 다른 실시예를 설명하기 위한 도면이다.
도 17은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 18은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 19는 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 20은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 2는 본 발명의 실시예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 3은 도 2의 중앙 처리 장치를 설명하기 위한 도면이다.
도 4는 본 발명의 다른 실시예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 5는 도 4의 중앙 처리 장치를 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 스로틀링 매니저를 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 순서도이다.
도 8은 요청 처리량 사이즈와 현재 처리량 사이즈에 영향을 주는 요소들(elements)의 실시예를 설명하기 위한 표 이다.
도 9는 본 발명의 실시예에 따라 완료 신호(completion signal)가 출력 또는 지연되는 다양한 경우들을 설명하기 위한 도면이다.
도 10은 커맨드들이 저장되는 버퍼 메모리에 관계 없이, 내부 처리량에 따라 완료 신호(completion signal)를 출력하는 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 다른 실시예에 따른 스로틀링 매니저를 설명하기 위한 도면이다.
도 12 내지 도 16은 본 발명의 또 다른 실시예를 설명하기 위한 도면이다.
도 17은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 18은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 19는 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 20은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시예에 따른 전자 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(Memory System; 1000)은 데이터가 저장되는 메모리 장치(Memory Device; 1100)와, 메모리 시스템(1000)의 동작에 필요한 커맨드 및 데이터를 임시로 저장하기 위한 버퍼 메모리(Buffer Memory; 1300), 그리고 호스트(2000)의 제어에 따라 메모리 장치(1100) 및 버퍼 메모리(1300)를 제어하는 메모리 컨트롤러(Memory Controller; 1200)를 포함할 수 있다.
호스트(2000)는 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) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 메모리 시스템(1000)과 통신할 수 있다.
메모리 장치(1100)는 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치로 이루어지거나, 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치로 이루어질 수 있다. 본 실시예에서는 비휘발성 메모리 장치의 일종인 플래시 메모리 장치(Flash Memory Device)를 예를 들어 설명하도록 한다.
메모리 컨트롤러(1200)는 메모리 시스템(1000)의 동작을 전반적으로 제어하며, 호스트(2000)와 메모리 장치(1100) 사이의 데이터 교환을 제어할 수 있다. 메모리 컨트롤러(1200)는 채널(channel)을 통해 메모리 장치(1100)에 연결될 수 있으며, 채널을 통해 커맨드, 어드레스 및 데이터를 전송할 수 있다. 예를 들면, 메모리 컨트롤러(1200)는 호스트(2000)의 요청에 따라 프로그램(program), 리드(read) 또는 소거(erase)하기 위한 커맨드를 채널을 통해 메모리 장치(1100)에 전송할 수 있다.
보다 구체적으로 설명하면, 메모리 컨트롤러(1200)는 호스트(2000)와 버퍼 메모리(1300) 사이의 커맨드 및 데이터 교환을 제어하거나 메모리 장치(1100)를 제어하기 위한 시스템 데이터를 버퍼 메모리(1300)에 임시로 저장할 수 있다. 예를 들면, 메모리 컨트롤러(1200)는 호스트로부터 프로그램, 리드 또는 소거 동작에 대한 요청(request; REQ)을 받으면 커맨드를 생성하고, 생성된 커맨드를 버퍼 메모리(1300)에 임시로 저장할 수 있다.
버퍼 메모리(1300)는 도 1에 도시된 바와 같이 메모리 컨트롤러(1200)의 외부에 장착될 수 있으나, 메모리 시스템(1000)에 따라 메모리 컨트롤러(1200)의 내부에도 장착될 수 있다. 버퍼 메모리(1300)는 메모리 컨트롤러(1200)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용될 수 있으며, 상기 물리 정보 및 논리 정보를 임시로 저장할 수 있다. 또한, 버퍼 메모리(1300)는 메모리 컨트롤러(1200)에서 생성된 커맨드들이 패치(fetch)되기 이전에 커맨드들을 임시로 저장할 수 있다. 예를 들면, 버퍼 메모리(1300)는 호스트 커맨드 큐(host command queue)를 임시로 저장할 수 있다. 실시예에 따라, 버퍼 메모리(1300)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), DDR4 SDRAM, LPDDR4(Low Power Double Data Rate4) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, LPDDR(Low Power DDR) 또는 RDRAM(Rambus Dynamic Random Access Memory)을 포함할 수 있다.
일반적으로, 버퍼 메모리(1300)에 임시로 저장된 커맨드들이 메모리 장치(1100)로 패치(fetch)되면 버퍼 메모리(1300)에 빈 영역(empty region)이 발생한다. 메모리 컨트롤러(1200)는 버퍼 메모리(1300)에서 커맨드들이 임시로 저장되는 영역에 빈 영역이 발생하면, 다음 요청(REQ)을 수신 받기 위한 완료 신호(completion signal; CPS)를 호스트(2000)로 출력할 수 있다. 호스트(2000)는 메모리 시스템(1000)으로부터 완료 신호(CPS)를 수신 받으면 다음 동작을 위한 요청(REQ)을 메모리 시스템(1000)으로 출력할 수 있다. 완료 신호(CPS)는 메모리 시스템(1000)에 따라 완료 큐(completion queue) 또는 완료 커맨드(completion command) 등으로 표현될 수 있다.
하지만, 메모리 시스템(1000)이 커맨드를 패치(fetch)하여 완료 신호(CPS)를 출력했더라도, 메모리 시스템(1000)은 내부적으로 패치된(fetched) 커맨드를 처리하기 위한 동작이 여전히 수행될 수 있다. 즉, 메모리 시스템(1000)이 내부적으로 동작을 수행하고 있을 때, 호스트(2000)는 완료 신호(CPS)에 응답하여 다음 요청(REQ)을 메모리 시스템(1000)으로 전송할 수 있다. 이러한 경우, 메모리 시스템(1000)은 이전 동작이 여전히 수행중임에도 불구하고 다음 동작을 위한 요청(REQ)을 수신 받으므로, 메모리 시스템(1000)에서 과부하(overload)가 걸릴 수 있다. 이로 인해 메모리 시스템(1000)의 온도가 상승할 수 있고, 온도 상승을 억제하기 위한 스로틀링 동작이 수행될 수 있다. 스로틀링 동작이 수행되면 메모리 시스템(1000)의 성능이 일시적으로 저하되기 때문에 스로틀링 동작이 수행되는 상황이 자주 발생하지 않도록 하는 것이 좋다.
이에 따라, 본 실시예에서는 버퍼 메모리(1300)에 큐잉(queueing)되는 커맨드의 개수 또는 버퍼 메모리(1300)의 빈 영역에 관계 없이, 메모리 컨트롤러(1200)가 메모리 시스템(1000)의 내부 처리량에 따라 완료 신호(CPS)를 출력하도록 구성된다. 즉, 본 실시예에서는 메모리 시스템(1000)의 내부에서 처리되고 있는 현재 처리량과 호스트(2000)의 요청에 따라 처리될 처리량에 따라, 메모리 컨트롤러(1200)는 완료 신호(CPS)가 출력되는 시간을 지연시킬 수 있다. 메모리 시스템(1000)의 내부 처리량에 따라 완료 신호(CPS)가 지연됨으로써, 메모리 시스템(1000)의 과부하(overload)가 억제될 수 있으며, 이로 인해 메모리 시스템(1000)의 스로틀링 동작이 수행되는 횟수가 감소될 수 있다. 스로틀링 동작이 수행되는 횟수가 감소하면, 메모리 시스템(1000)의 성능 저하가 방지될 수 있다. 다시 말하면, 스로틀링 동작이 수행되는 횟수를 감소시킴으로써, 메모리 시스템(1000)의 최저 성능을 보장할 수 있다. 상술한 메모리 컨트롤러(1200)를 구체적으로 설명하면 다음과 같다.
도 2는 도 1의 메모리 컨트롤러를 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 컨트롤러(1200)는 호스트(2000)와 메모리 장치(1100) 사이에서 통신하기 위하여 중앙 처리 장치(Central Process Unit; CPU; 1210A), 내부 메모리(Internal Memory; 1220), 플래시 인터페이스 계층(Flash Interface Layer; 1230), 에러 정정 회로(Error Correction Circuit; ECC; 1240) 및 호스트 인터페이스 계층(Host Interface Layer; 1250)을 포함할 수 있다. 중앙 처리 장치(1210A), 내부 메모리(1220), 플래시 인터페이스 계층(1230), 에러 정정 회로(1240) 및 호스트 인터페이스 계층(1250)은 버스(bus; 1260)를 통해 서로 통신할 수 있다.
중앙 처리 장치(1210A)는 호스트(2000)로부터 요청(REQ)을 수신 받으면, 수신 받은 요청(REQ)을 수행하기 위한 커맨드를 생성할 수 있다. 중앙 처리 장치(1210A)는 생성된 커맨드를 버퍼 메모리(1300)에 저장하고, 버퍼 메모리(1300)에 임시로 저장된 커맨드들을 순차적으로 패치(fetch)할 수 있다. 중앙 처리 장치(1210A)는 메모리 시스템(1000)의 스로틀링(throttling) 동작을 제어하기 위한 스로틀링 매니저(Throttling Manager; 200)를 포함할 수 있다. 즉, 스로틀링 매니저(200)는 중앙 처리 장치(1210A)의 내부에 장착될 수 있다. 스로틀링 매니저(200)는 메모리 시스템(1000)의 내부에서 처리중인 현재 처리량과 호스트(2000)의 요청에 의해 앞으로 처리될 요청 처리량에 따라 완료 신호(completion signal)의 지연을 제어하여 스로틀링 동작을 제어할 수 있다.
내부 메모리(1220)는 메모리 컨트롤러(1200)의 동작에 필요한 다양한 시스템 정보들을 저장할 수 있다. 예를 들면, 내부 메모리(1220)는 SRAM으로 구현될 수 있다. 내부 메모리(1220)는 메모리 시스템(1000)의 동작에 필요한 어드레스 맵핑 정보 및 논리 정보를 저장할 수 있다.
플래시 인터페이스 계층(1230)은 중앙 처리 장치(1210A)의 제어에 따라 메모리 장치(1100)와 통신할 수 있다. 예를 들면, 플래시 인터페이스 계층(1230)은 중앙 처리 장치(1210A)로부터 수신 받은 커맨드들을 메모리 장치(1100)의 상태(status)에 따라 큐잉(queueing)할 수 있고, 큐잉된 순서에 따라 커맨드들을 메모리 장치(1100)로 출력할 수 있다.
에러 정정 회로(1240)는 중앙 처리 장치(1210A)의 제어에 따라 에러 정정 동작을 수행할 수 있다. 예를 들면, 에러 정정 회로(1240)는 중앙 처리 장치(1210A)로부터 수신된 에러 정정 커맨드와 물리 정보 및 논리 정보에 따라 에러 정정 동작을 수행할 수 있다.
호스트 인터페이스 계층(1250)은 중앙 처리 장치(1210A)의 제어에 따라 메모리 시스템(1000)에 접속된 호스트(2000)와 통신하도록 구성될 수 있다. 예를 들면, 호스트 인터페이스 계층(1250)는 호스트(2000)로부터 프로그램 요청, 리드 요청 또는 소거 요청 등의 다양한 요청들을 수신 받을 수 있고, 메모리 장치(1100)로부터 리드된 데이터를 호스트(2000)로 출력할 수 있다.
도 3은 도 2의 중앙 처리 장치를 설명하기 위한 도면이다.
도 3을 참조하면, 중앙 처리 장치(1210A)는 커맨드 생성부(Command Generator; 1211), 완료 신호 출력 모듈(Completion Signal Output Module; 1212) 및 스로틀링 매니저(Throttling Manager; 200)를 포함할 수 있다.
커맨드 생성부(1211)는 호스트(2000)로부터 프로그램, 리드 또는 소거 동작에 대한 요청(REQ)이 수신 되면, 수신된 요청(REQ)을 메모리 시스템(1000)의 내부에서 사용될 수 있는 커맨드(CMD)로 변환하고, 변환된 커맨드(CMD)를 출력할 수 있다.
완료 신호 출력 모듈(1212)은 스로틀링 매니저(200)에서 출력된 지연 신호(DELS)에 따라 완료 신호(completion signal; CPS)를 지연시키거나 출력할 수 있다.
스로틀링 매니저(200)는 메모리 시스템(1000)의 내부 처리량에 따라 지연 신호(DELS)를 출력할 수 있다. 예를 들면, 스로틀링 매니저(200)는 메모리 시스템(1000)에서 현재 처리 중인 데이터의 량에 대한 제1 처리량 정보(1THIF)와, 호스트로부터 요청되어 앞으로 처리할 데이터의 량에 대한 제2 처리량 정보(2THIF)에 따라 지연 신호(DELS)를 출력할 수 있다. 예를 들면, 스로틀링 매니저(200)는 제1 처리량 정보(1THIF) 및 제2 처리량 정보(2THIF)를 서로 비교하여 지연 신호(DELS)를 출력할 수 있다. 예를 들면, 스로틀링 매니저(200)는 연산된 내부 처리량에 따라 지연 신호(DELS)가 출력되는 시간과 지연 신호(DELS)가 유지되는 시간을 결정할 수 있다. 스로틀링 매니저(200)에서 지연 신호(DELS)가 출력되는 동안, 완료 신호 출력 모듈(1212)은 완료 신호(CPS)를 출력하지 않고 지연시킬 수 있다.
도 4는 본 발명의 다른 실시예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 4를 참조하면, 본 발명의 다른 실시예에 따른 메모리 컨트롤러(1200)에서는 스로틀링 매니저(200)가 중앙 처리 장치(1210B)의 외부에 장착될 수 있다. 스로틀링 매니저(200)는 메모리 시스템(1000)의 내부에서 처리중인 현재 처리량과 호스트(2000)의 요청에 의해 앞으로 처리될 요청 처리량에 따라 완료 신호(completion signal)의 지연을 제어하여 스로틀링 동작을 제어할 수 있다. 도 4의 내부 메모리(1220), 플래시 인터페이스 계층(1230), 에러 정정 회로(1240) 및 호스트 인터페이스 계층(1250)은 도 2와 동일하므로, 도 2와 중복되는 장치들에 대해서는 설명을 생략하도록 한다.
도 5는 도 4의 중앙 처리 장치를 설명하기 위한 도면이다.
도 5를 참조하면, 도 4에 도시된 중앙 처리 장치(1210B)는 도 2에 도시된 중앙 처리 장치(1210A)와 다르게 스로틀링 매니저(200)가 중앙 처리 장치(1210B)의 외부에 장착되므로, 스로틀링 매니저(200)에서 출력된 지연 신호(DELS)는 버스(1260)를 통해 완료 신호 출력 모듈(1212)에 전송될 수 있다. 이처럼, 스로틀링 매니저(200)가 중앙 처리 장치(1210B)의 외부에 장착되면, 중앙 처리 장치(1210B)의 처리량이 감소하므로, 중앙 처리 장치(1210B)의 성능 저하를 방지할 수 있다.
도 6은 본 발명의 실시예에 따른 스로틀링 매니저를 설명하기 위한 도면으로써, 도 2 및 도 4에 도시된 스로틀링 매니저에 모두 적용될 수 있다.
도 6을 참조하면, 스로틀링 매니저(200)는 제1 레지스터(First Register; 210), 제2 레지스터(Second Register; 220), 연산기(Calculator; 230) 및 완료 지연 매니저(Completion Delay Manager; 240)를 포함할 수 있다.
제1 레지스터(210)는 메모리 시스템(1000)의 제1 처리량 정보(1THIF)를 임시로 저장하고 출력할 수 있고, 제2 레지스터(220)는 메모리 시스템(1000)의 제2 처리량 정보(2THIF)를 임시로 저장하고 출력할 수 있다.
제1 처리량 정보(1THIF)는 메모리 시스템(1000) 내에서 현재 처리중인 데이터의 량에 대한 정보를 포함할 수 있고, 제2 처리량 정보(2THIF)는 호스트(2000)로부터 요청된 데이터 사이즈에 대한 정보를 포함할 수 있다.
예를 들면, 제1 처리량 정보(1THIF)는 메모리 시스템(1000)에서 현재 처리중인 전체 데이터 사이즈에 대한 정보이거나, 선택된 슈퍼 블록에서 현재 처리중인 데이터 사이즈에 대한 정보이거나, 선택된 메모리 블록에서 현재 처리중인 데이터 사이즈에 대한 정보일 수 있다. 제2 처리량 정보(2THIF)는 호스트(2000)의 요청에 의해 메모리 시스템(1000)에서 처리될 전체 데이터 사이즈에 대한 정보이거나, 선택된 슈퍼 블록에서 처리될 데이터 사이즈에 대한 정보이거나, 선택된 메모리 블록에서 처리될 데이터 사이즈에 대한 정보일 수 있다. 여기서 데이터 사이즈의 단위는 킬로 바이트(KB), 메가 바이트(MB) 또는 기가 바이트(GB) 등 메모리 시스템(1000)에 따라 다양하게 설정될 수 있다.
제1 처리량 정보(1THIF)는 메모리 시스템(1000)의 백그라운드 동작(background operation)에서 처리되는 데이터 사이즈에 대한 정보이거나, 호스트(2000)의 요청에 의해 수행되는 동작에서 처리되는 데이터 사이즈에 대한 정보일 수 있다. 또는, 제1 처리량 정보(1THIF)는 메모리 시스템(1000)에서 현재 실행중인 커맨드들의 개수를 포함하거나, 커맨드 큐(queue)의 깊이(depth)를 포함할 수도 있다. 또는, 제1 처리량 정보(1THIF)는 상술한 값들의 조합일 수도 있다. 제1 처리량 정보(1THIF)는 호스트(2000)로부터 요청이 수신되지 않더라도 메모리 시스템(1000)에서 커맨드가 실행될 때마다 제1 레지스터(210)에 업데이트되거나, 호스트(2000)로부터 요청이 수신될 때에만 제1 레지스터(210)에 저장될 수 있다.
제2 처리량 정보(2THIF)는 호스트(2000)로부터 수신되는 요청에 포함될 수 있으며, 호스트(2000)로부터 요청이 수신될 때마다 제2 레지스터(220)에 저장될 수 있다. 제1 및 제2 레지스터들(210 및 220)은 호스트(2000)로부터 요청이 수신되면, 저장된 제1 및 제2 처리량 정보(1THIF 및 2THIF)를 연산기(230)로 전송할 수 있다.
연산기(230)는 제1 처리량 정보(1THIF)와 제2 처리량 정보(2THIF)를 합하여 총 처리량 사이즈를 산출하고, 총 처리량 사이즈를 목표 사이즈와 비교하여 제1 연산값(1CALV)을 출력할 수 있다. 여기서 목표 사이즈는 메모리 시스템(1000)에서 스로틀링 동작이 수행되는 기준 값일 수 있으며, 메모리 시스템(1000)에 따라 다른 값으로 설정될 수 있다. 연산기(230)는 다양한 방식으로 제1 연산값(1CALV)을 출력하도록 구성될 수 있다. 예를 들면, 연산기(230)는 제1 처리량 정보(1THIF)와 제2 처리량 정보(2THIF)를 합한 값이 목표 사이즈보다 크면 제1 연산값(1CALV)을 하이(high)로 출력하고, 작으면 제1 연산값(1CALV)을 로우(low)로 출력하도록 구성될 수 있다. 이 경우, 제1 처리량 정보(1THIF)와 제2 처리량 정보(2THIF)를 합한 값과 목표 사이즈 간 차이에 따라 제1 연산값(1CALV)이 하이를 유지하는 시간이 결정될 수 있다. 예를 들면, 제1 처리량 정보(1THIF)와 제2 처리량 정보(2THIF)를 합한 값이 목표 사이즈보다 클수록 제1 연산값(1CALV)이 하이를 유지하는 시간이 길어질 수 있다.
또는, 연산기(230)는 제1 처리량 정보(1THIF)와 제2 처리량 정보(2THIF)를 합한 값과 목표 사이즈를 비교한 결과에 따라 제1 연산값(1CALV)을 서로 다른 코드들로 출력하도록 구성될 수 있다. 제1 연산값(1CALV)을 구성하는 코드의 비트 수는 제1 연산값(1CALV)의 해상도에 따라 설정될 수 있다. 예를 들면, 제1 연산값(1CALV)을 구성하는 코드의 비트 수가 많을수록 제1 연산값(1CALV)의 해상도가 높아지므로, 더욱 정밀하게 지연 시간이 조절될 수 있다.
연산기(230)에서 출력되는 제1 연산값(1CALV)의 형태에 따라 완료 지연 매니저(240)도 다르게 구현될 수 있다.
완료 지연 매니저(240)는 제1 연산값(1CALV)에 따라 완료 신호를 지연시키기 위한 지연 신호(DELS)를 출력할 수 있다. 예를 들면, 제1 연산값(1CALV)이 하이 또는 로우의 신호로 출력되는 경우, 완료 지연 매니저(240)는 제1 연산값(1CALV)이 하이(high)인 경우에만 지연 신호(DELS)를 출력할 수 있다. 보다 구체적으로 설명하면, 완료 지연 매니저(240)는 제1 연산값(1CALV)이 하이(high)로 인가되는 동안 지연 신호(DELS)를 하이(high)로 활성화시킬 수 있고, 제1 연산값(1CALV)이 로우(low)로 천이되면 지연 신호(DELS)를 로우(low)로 비활성화시킬 수 있다. 또는, 제1 연산값(1CALV)이 다수의 비트들로 이루어진 코드로 출력되는 경우, 완료 지연 매니저(240)는 제1 연산값(1CALV)을 이루는 코드에 따라 지연 신호(DELS)를 하이(high) 또는 로우(low)로 출력할 수 있으며, 지연 신호(DELS)가 하이(high)를 유지하는 시간을 조절할 수 있다.
완료 신호 출력 모듈(1212)은 지연 신호(DELS)가 활성화되면 완료 신호(CPS)를 출력하지 않고, 지연 신호(DELS)가 비활성화되면 완료 신호(CPS)를 출력할 수 있다. 완료 신호 출력 모듈(1212)에서 출력된 완료 신호(CPS)는 호스트(2000)로 전송될 수 있다. 호스트(2000)는 완료 신호(CPS)가 수신되면, 메모리 시스템(1000)의 호스트 커맨드 큐가 비어 있다는 것으로 판단하고 다음 요청을 메모리 시스템(1000)으로 전송할 수 있다.
도 7은 본 발명의 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 순서도이고, 도 8은 요청 처리량 사이즈와 현재 처리량 사이즈에 영향을 주는 요소들(elements)의 실시예를 설명하기 위한 표 이다.
도 7을 참조하면, 호스트(2000)로부터 요청(REQ)이 수신되면(S71), 메모리 컨트롤러(1200)는 현재 처리량 사이즈(current throughput size; CS)와 요청 처리량 사이즈(request throughput size; RS)를 체크할 수 있다(S72). 여기서, 현재 처리량 사이즈(CS)와 요청 처리량 사이즈(RS)는 다양한 값으로 연산될 수 있다.
도 8을 참조하면, 요청 처리량 사이즈(RS)는 호스트(2000)에 의해 요청된 데이터 사이즈(requested data size; 81)이거나, 호스트(2000)에 의해 요청된 커맨드들의 개수(requested number of CMD; 83)이거나, 호스트(2000)에 의해 요청된 커맨드들의 깊이(requested depth of CMD; 85) 중 어느 하나를 포함 할 수 있다. 또는, 요청 처리량 사이즈(RS)는 요청된 데이터 사이즈(81), 요청된 커맨드들의 개수(83) 및 요청된 커맨드들의 깊이(85) 중에서 일부 또는 전체를 합한 값이 될 수 있다. 현재 처리량 사이즈(CS)는 메모리 시스템(1000)의 내부에서 처리되고 있는 현재 데이터 사이즈(current data size; 82)이거나, 메모리 시스템(1000)의 내부에서 실행중인 커맨드들의 개수(current number of CMD; 84)이거나, 메모리 시스템(1000) 내부에서 큐잉된 커맨드들의 깊이(current depth of CMD; 86) 중 어느 하나를 포함 할 수 있다. 또는, 현재 처리량 사이즈(CS)는 현재 데이터 사이즈(82), 실행중인 커맨드들의 개수(84) 및 큐잉된 커맨드들의 깊이(86) 중에서 일부 또는 전체를 합한 값이 될 수 있다. 이러한 현재 처리량 사이즈(CS)와 요청 처리량 사이즈(RS)에 포함되는 값의 종류는 메모리 시스템(1000)에 미리 설정될 수 있다. 예를 들면, 중앙 처리 장치(1210A 또는 1210B)의 설정에 따라 현재 처리량 사이즈(CS)와 요청 처리량 사이즈(RS)의 종류가 선택될 수 있고, 선택된 현재 처리량 사이즈(CS)와 요청 처리량 사이즈(RS)의 정보는 제1 레지스터(210)와 제2 레지스터(220)에 각각 입력될 수 있다.
제1 및 제2 레지스터들(210 및 220)에 현재 처리량 사이즈(CS)와 요청 처리량 사이즈(RS)의 정보가 입력되면, 연산기(230)는 현재 처리량 사이즈(CS)와 요청 처리량 사이즈(RS)를 합하여 총 처리량 사이즈(CS+RS)를 구하고, 총 처리량 사이즈(CS+RS)를 목표 사이즈(target size; TS)와 비교할 수 있다(S73).
‘S73’ 단계에서 총 처리량 사이즈(CS+RS)가 목표 사이즈(TS)보다 작거나 같으면(Yes) 완료 신호(CPS)가 출력된다(S75). 만약, ‘S73’ 단계에서 총 처리량 사이즈(CS+RS)가 목표 사이즈(TS)보다 크면(No) 완료 신호(CPS)가 출력되지 않고 지연된다(S74). 예를 들면, 총 처리량 사이즈(CS+RS)가 목표 사이즈(TS)보다 크면(No) 완료 지연 매니저(240)는 지연 신호(DELS)를 출력하고, 지연 신호(DELS)가 활성화되는 동안 완료 신호(CPS)는 출력되지 않고 지연될 수 있다.
완료 신호(CPS)가 지연되면, ‘S72’ 단계부터 처리량 사이즈가 다시 연산된다. 즉, 시간에 따라 메모리 시스템(1000)의 내부 처리량이 감소하므로, ‘S72’ 단계부터 처리량을 다시 연산하면 총 처리량 사이즈(CS+RS)가 달라질 수 있다. 따라서, ‘S73’ 단계에서 총 처리량 사이즈(CS+RS)가 목표 사이즈(TS)보다 작거나 같아지면(Yes) 완료 신호(CPS)가 출력되고(S75), 호스트(2000)는 완료 신호(CPS)에 응답하여 다음 요청을 메모리 시스템(1000)으로 출력할 수 있다.
다음은 다양한 처리량 사이즈에 따라 완료 신호가 출력 또는 지연되는 실시예에 대하여 설명하도록 한다.
도 9는 본 발명의 실시예에 따라 완료 신호(completion signal)가 출력 또는 지연되는 다양한 경우들을 설명하기 위한 도면이다.
도 9를 참조하면, 현재 처리량 사이즈(CS)를 기준으로, 요청 처리량 사이즈(RS)가 서로 다른 다양한 경우들(91 및 92)이 일 예로써 도시되어 있다. 도 9에서는 각 처리량의 사이즈가 메가바이트(megabyte; MB)로 도시되어 있으나, 각 처리량의 사이즈는 바이트(byte), 킬로바이트(kilobyte) 또는 기가바이트(gigabyte) 등으로 다양하게 설정될 수도 있다.
메모리 시스템(1000)의 목표 사이즈(TS)는 임의로 설정될 수 있다. 예를 들면, 목표 사이즈(TS)는 완료 신호(CPS)의 최대 지연 시간을 초과하지 않는 범위 내에서 설정될 수 있다. 다시 말하면, 메모리 시스템(1000)의 내부 처리량이 증가할수록 완료 신호(CPS)의 출력이 지연될 수 있는데, 지연 시간이 무제한으로 길어지면 안되므로 메모리 시스템(1000)에 따라 최대 지연 시간이 설정될 수 있다. 따라서, 본 실시예에서 목표 사이즈(TS)는 상술한 최대 지연 시간을 초과하지 않는 범위 내에서 설정될 수 있다. 이처럼 메모리 시스템(1000)이 운용되는 경우, 종래에는 완료 신호(CPS)가 출력될 수 있는 시점에서도 본 실시예에서는 완료 신호(CPS)가 지연된 후 출력될 수 있으나, 본 실시예에서는 스로틀링 동작이 수행되는 횟수가 종래보다 감소할 수 있으므로 메모리 시스템(1000)의 전반적인 성능이 개선될 수 있다. 여기서, 성능은 동작 시간을 의미한다. 즉, 종래에는 메모리 시스템(1000)의 내부 처리량이 증가하여 온도가 높아지면, 메모리 시스템(1000)은 과부하를 방지하기 위하여 스로틀링 동작을 수행하는데, 스로틀링 동작이 수행되면 메모리 시스템(1000)의 동작 속도가 현저하게 느려지는 등 메모리 시스템(1000)의 성능이 일시적으로 저하된다. 하지만, 본 실시예에서는 완료 신호(CPS)의 지연 시간을 조절함으로써 스로틀링 동작이 수행되는 횟수를 감소시키고, 메모리 시스템(1000)의 최저 성능을 보장할 수 있다.
도 9의 ‘91’에 해당되는 경우들(cases)은 완료 신호(CPS)가 출력되는 경우들이고, ‘92’에 해당되는 경우들은 완료 시간(CPS)가 지연되는 경우들이다.
‘91’ 케이스에서 첫 번째 예는 목표 사이즈(TS)가 30MB이고 현재 처리량 사이즈(CS)가 10MB인 경우, 요청 처리량 사이즈(RS)가 10MB인 경우를 나타낸다. 현재 처리량 사이즈(CS)가 10MB이고 요청 처리량 사이즈(RS)가 10MB이므로, 이들을 합한 총 처리량 사이즈(RS+CS)는 20MB가 된다. 총 처리량 사이즈(RS+CS)가 목표 사이즈(TS)보다 적으므로 이러한 경우에는 완료 신호(CPS)가 출력될 수 있다. 다음 예시로, 요청 처리량 사이즈(RS)가 15MB인 경우에는 총 처리량 사이즈(RS+CS)가 25MB이므로 완료 신호(CPS)가 출력될 수 있고, 요청 처리량 사이즈(RS)가 30MB인 경우에는 총 처리량 사이즈(RS+CS)와 동일하므로 이 경우에도 완료 신호(CPS)가 출력될 수 있다.
‘91’ 케이스와 같이, 완료 신호(CPS)가 출력될 때에는 메모리 시스템(1000)이 최대(MAX) 성능(performance)으로 운용될 수 있다. 다시 말하면, 메모리 시스템(1000)이 최대(MAX) 성능(performance)으로 운용된다는 것은, 현재 처리량 사이즈(CS)와 요청 처리량 사이즈(RS)가 메모리 시스템(1000)이 동작하는데 있어서 적절한 사이즈인 경우에 해당되므로, 완료 신호(CPS)가 출력될 수 있다는 것을 의미한다.
‘92’ 케이스에서 첫 번째 예는 요청 처리량 사이즈(RS)가 25MB인 경우를 나타낸다. 이 경우, 총 처리량 사이즈(RS+CS)가 35MB가 되며, 이는 목표 사이즈(TS)보다 크므로, 완료 신호(CPS)가 출력되지 않고 지연될 수 있다. 다음 예시로, 요청 처리량 사이즈(RS)가 30MB인 경우에는 총 처리량 사이즈(RS+CS)가 40MB이므로 이 경우에도 완료 신호(CPS)는 출력되지 않고 지연될 수 있다.
‘91’ 케이스와 같이, 완료 신호(CPS)가 지연될 때에는 메모리 시스템(1000)이 최대(MAX) 성능(performance)으로 운용되지 못하는 경우이지만, 스로틀링 동작까지 수행되는 경우를 방지함으로써 메모리 시스템(1000)의 성능이 급격히 저하되는 현상을 방지할 수 있다.
이처럼, 총 처리량 사이즈(RS+CS)와 목표 사이즈(TS)를 비교하고, 비교 결과에 따라 완료 신호(CPS)를 출력하거나 지연시킴으로써 메모리 시스템(1000)의 성능 저하를 방지하거나 최저 성능을 보장할 수 있다.
도 10은 커맨드들이 저장되는 버퍼 메모리에 관계 없이, 내부 처리량에 따라 완료 신호(completion signal)를 출력하는 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 10을 참조하면, 호스트(2000)가 메모리 시스템(1000)으로 요청(REQ)을 전송하면(①), 메모리 시스템(1000)의 메모리 컨트롤러(1200)는 수신된 요청(REQ)을 내부에서 처리할 수 있는 커맨드(CMD)로 변경하고, 커맨드(CMD)를 버퍼 메모리(1300)로 전송할 수 있다(②). 버퍼 메모리(1300)는 다양한 정보를 임시로 저장할 수 있는데, 이 중에서 호스트 큐 버퍼(host queue buffer; 101)에 커맨드(CMD)가 임시로 저장될 수 있다(③). 호스트 큐 버퍼(101)에는 호스트(2000)로부터 수신된 다수의 커맨드들이 저장될 수 있으며, 커맨드(CMD)가 패치(fetch)될 때마다 프리(free) 영역이 확보될 수 있다. 예를 들면, 호스트 큐 버퍼(101)는 버퍼 메모리(1300) 내에서 호스트(2000)로부터 수신된 커맨드들이 저장될 수 있는 일정한 용량을 할당 받을 수 있고, 할당된 용량 내에서 다수의 커맨드들이 저장될 수 있다. 할당된 용량 내에서 커맨드들이 저장된 영역(102a)과 프리 영역(103a)은 가변될 수 있다. 메모리 컨트롤러(1200)는 큐잉된 커맨드 순서에 따라 호스트 큐 버퍼(101)에 임시로 저장된 커맨드(CMD)를 메모리 장치(1100)로 전송할 수 있다(④). 다시 말하면, 메모리 컨트롤러(1200)는 커맨드(CMD)를 패치(fetch)할 수 있다.
이어서, 메모리 컨트롤러(1200)는 현재 처리량 사이즈(CS)와 요청 처리량 사이즈(RS)에 따라 완료 신호(CPS)를 호스트(2000)로 출력하거나(⑤) 출력을 지연시킬 수 있다. 호스트(2000)는 완료 신호(CPS)가 수신될 때까지 다음 요청(REQ)을 지연시킬 수 있다. 즉, 호스트(2000)는 완료 신호(CPS)가 수신되면 다음 요청(REQ)을 메모리 시스템(1000)으로 전송하고, 완료 신호(CPS)가 수신되지 않으며 다음 요청(REQ)을 출력하지 않고 지연시킬 수 있다.
완료 신호(CPS)가 호스트(2000)로 출력되거나 지연될 때, 메모리 장치(1100)는 메모리 컨트롤러(1200)로부터 수신받은 커맨드(CMD)를 실행할 수 있다. 메모리 장치(1100)에서 실행되는 커맨드(CMD)에 따라 메모리 컨트롤러(1200)는 호스트 큐 버퍼(101)에 큐잉된 커맨드들(CMD)을 순차적으로 패치하므로, 호스트(2000)로부터 요청(REQ)이 수신되기 이전에 커맨드들(CMD)이 패치되면 호스트 큐 버퍼(101)에서 커맨드들이 저장된 영역(102b)은 감소하고 프리 영역(103b)은 상대적으로 증가할 수 있다(⑥).
상술한 실시예에서는 메모리 시스템(1000)의 처리량에 따라 완료 신호(CPS)의 출력 또는 지연이 결정되었으나, 완료 신호(CPS)의 출력 또는 지연 외에도 메모리 시스템(1000)의 백그라운드 동작이 결정될 수도 있다. 이에 대하여 구체적으로 설명하면 다음과 같다.
도 11은 본 발명의 다른 실시예에 따른 스로틀링 매니저를 설명하기 위한 도면이다.
도 11을 참조하면, 스로틀링 매니저(200)는 동작 결정부(Operation Decision Unit; 250)를 더 포함할 수 있다. 도 11에서는 동작 결정부(250)를 제외한 나머지 구성들(210~240)이 도 6에서 설명된 구성들과 동일하므로 중복되는 설명은 생략된다.
동작 결정부(250)는 연산기(230)에서 출력된 제1 연산값(1CALV)에 따라 메모리 시스템(1000)의 내부에서 수행되는 동작들을 제어하기 위한 동작 신호(OPS)를 출력할 수 있다. 예를 들면, 동작 결정부(250)는 제1 연산값(1CALV)에 따라 메모리 시스템(1000)의 백그라운드 동작을 실행하기 위한 동작 신호(OPS)를 출력할 수 있다. 여기서 백그라운드 동작은 호스트(2000)의 요청(REQ)과 관계 없이 메모리 시스템(1000) 자체적인 시스템 관리를 위해 메모리 시스템(1000) 내부에서 수행되는 동작을 의미한다. 예를 들면, 백그라운드 동작은 가비지 컬렉션(Garbage Collection) 동작 및 웨어 레벨링(Wear Leveling) 동작 등을 포함할 수 있다.
즉, 동작 결정부(250)는 제1 연산값(1CALV)을 토대로 메모리 시스템(1000)에서 백그라운드 동작이 수행될 수 있는지를 판단하고, 내부 처리량이 적다고 판단되면 백그라운드 동작이 수행될 수 있도록 동작 신호(OPS)를 출력할 수 있다. 중앙 처리 장치는 동작 신호(OPS)에 따라 백그라운드 동작에 필요한 커맨드들을 생성할 수 있다. 예를 들면, 제1 연산값(1CALV)에 따라 메모리 시스템(1000)의 내부 처리량이 기준값보다 많은 것으로 판단되면, 동작 결정부(250)는 동작 신호(OPS)를 출력하지 않고, 내부 처리량이 기준값보다 적거나 같은 것으로 판단되면, 동작 결정부(250)는 동작 신호(OPS)를 출력할 수 있다. 여기서 기준값은 가비지 컬렉션 동작 또는 웨어 레벨링 동작이 수행되는 기준값일 수 있다. 또한, 기준값은 메모리 장치(1100)에 포함된 다이(die) 및 메모리 블록(memory block)에 따라 다르게 설정될 수도 있다.
동작 결정부(250)는 동작 신호(OPS)의 출력 여부를 결정하고, 동작 신호(OPS)가 출력되는 단자와 서로 다른 단자를 통해 제2 연산값(2CALV)을 출력할 수 있다. 제2 연산값(2CALV)은 제1 연산값(1CALV)과 동일한 값일 수 있으며, 완료 지연 매니저(240)로 전송될 수 있다. 따라서, 도 11에 도시된 완료 지연 매니저(240)는 도 6에 도시된 완료 지연 매니저(240)와 동일하게 동작할 수 있다.
도 12 내지 도 16은 본 발명의 또 다른 실시예를 설명하기 위한 도면이다.
도 12는 메모리 장치의 구성을 설명하기 위한 도면이다.
도 12를 참조하면, 도 11에서 설명된 스로틀링 매니저는 메모리 장치(1100)에 포함된 다이들(DI1~DIi; i는 양의 정수)의 내부 처리량에 따라 서로 다른 동작 신호(OPS) 및 지연 신호(DELS)를 출력할 수 있다. 예를 들면, 다이들(DI1~DIi)은 서로 다른 채널들(CH1~CHk; k는 양의 정수)을 통해 메모리 컨트롤러(1200)와 통신할 수 있다. 예를 들면, 제1 내지 제i 다이들(DI1~DIi)은 제1 채널(CH1)을 통해 메모리 컨트롤러(1200)와 통신할 수 있고, 또 다른 제1 내지 제i 다이들(DI1~DIi)은 제2 채널(CH2)을 통해 메모리 컨트롤러(1200)와 통신할 수 있다. 이러한 방식으로 제1 내지 제i 다이들(DI1~DIi)은 제1 내지 제k 채널들(CH1~CHk)을 통해 메모리 컨트롤러(1200)와 통신할 수 있다. 제1 내지 제i 다이들(DI1~DIi)은 실행중인 커맨드(CMD)에 따라 처리량이 서로 다를 수 있고 제1 내지 제k 채널들(CH1~CHk)에 각각 연결된 제1 내지 제i 다이들(DI1~DIi)의 처리량도 서로 다를 수 있다. 상술한 슈퍼 블록을 구체적으로 설명하면 다음과 같다.
도 13은 슈퍼 블록을 설명하기 위한 도면이다.
도 13을 참조하면, 슈퍼 블록은 동일한 채널에 연결된 제1 내지 제i 다이들(DI1~DIi)의 메모리 블록들의 그룹일 수 있다. 예를 들면, 제1 슈퍼 블록(SB1)은 제1 내지 제i 다이들(DI1~DIi)에 포함된 제1 메모리 블록들(MB1)의 그룹일 수 있고, 제2 슈퍼 블록(SB2)은 제1 내지 제i 다이들(DI1~DIi)에 포함된 제2 메모리 블록들(MB2)의 그룹일 수 있고, 제j 슈퍼 블록(SBj)은 제1 내지 제i 다이들(DI1~DIi)에 포함된 제j 메모리 블록들(MBj; j는 양의 정수)일 수 있다. 제1 내지 제j 슈퍼 블록들(SB1~SBj) 각각은 논리적으로 하나의 블록처럼 동작할 수 있다. 예를 들면, 제1 슈퍼 블록(SB1)이 선택되면, 제1 슈퍼 블록(SB1)에 포함된 제1 내지 제i 다이들(DI1~DIi)의 제1 메모리 블록들(MB1)이 모두 선택될 수 있고, 제1 슈퍼 블록(SB1)에 포함된 제1 메모리 블록들(MB1)에 프로그램, 리드 또는 소거 동작이 동시에 수행될 수 있다.
도 14 내지 도 16은 다양한 내부 처리량에 따른 스로틀링 성능을 설명하기 위한 표들이다.
도 14 내지 도 16에서, 메모리 시스템 또는 슈퍼 블록 각각의 최대 성능이 300MB/s라고 가정하고, 요청 처리량 사이즈(RS)가 동일한 경우를 예를 들어 설명하도록 한다.
도 14를 참조하면, 메모리 시스템은 슈퍼 블록들(SB1~SB7) 각각의 요청 처리량 사이즈(RS) 및 현재 처리량 사이즈(CS)에 따라 슈퍼 블록들(SB1~SB7) 각각의 스로틀링 비율(THR)을 조절하여, 메모리 시스템 전체의 성능 저하를 방지할 수 있다. 예를 들면, 동일한 메모리 시스템 내에 스로틀링이 적게 요구되는 슈퍼 블록들(141)과 많이 요구되는 슈퍼 블록들(142)이 혼재되어 있는 경우, 메모리 시스템은 스로틀링이 적게 요구되는 슈퍼 블록들(141)의 동작 수행 시 메모리 시스템의 성능을 높이고, 스로틀링이 많이 요구되는 슈퍼 블록들(142)의 동작 수행 시 메모리 시스템의 성능을 낮출 수 있다.
구체적으로 설명하면, 지표(index)는 현재 처리량 사이즈(CS)를 요청 처리량 사이즈(RS)로 나눈 값(CS/RS)이고, 성능 값(PF)은 각 슈퍼 블록에 대한 성능 비율이다. 예를 들면, 성능 값(PF)은 최대 성능 값(300MB/s)을 지표로 나눈 값(300/index)일 수 있다. 평균 성능 값(APF)은 슈퍼 블록들의 각 성능 값(PF)을 슈퍼 블록의 개수로 나눈 값일 수 있다. 스로틀링 비율(THR)은 평균 성능 값(APF)에서 각 슈퍼 블록의 성능 값을 뺀 값(APF-PF)일 수 있다. 스로틀링 비율 값(THR)에서 소수점 이하는 반올림되거나 버려질 수 있다.
도 14의 실시예에서, 제1 슈퍼 블록(SB1)의 스로틀링 비율 값(THR)이 -207로 가장 낮으며, 이는 제1 슈퍼 블록(SB1)에서 스로틀링이 가장 적게 요구된다는 것을 의미한다. 반면에, 제7 슈퍼 블록(SB7)의 스로틀링 비율 값(THR)이 +74로 가장 높으며, 이는 제7 슈퍼 블록(SB7)에서 스로틀링이 가장 많이 요구된다는 것을 의미한다. 따라서, 메모리 시스템은 제7 슈퍼 블록(SB7)의 동작 시 성능 값(PF)을 가장 낮추고(PF=19), 제1 슈퍼 블록(SB1)의 동작 시 성능 값(PF)을 가장 높일 수 있다(PF=300). 이러한 방식으로 제1 내지 제7 슈퍼 블록들(SB1~SB7)의 현재 처리량 사이즈(CS)가 서로 다른 경우, 각 슈퍼 블록의 성능 값(PF)을 조절함으로써, 메모리 시스템의 평균 성능(APF)은 92.96으로 유지될 수 있다. 여기서, 제1 내지 제7 슈퍼 블록들(SB1~SB7)의 평균 성능 값(APF)은 메모리 시스템의 최대 성능 값(300MB/s)보다는 낮지만, 급격한 성능 저하가 방지되므로 일부 슈퍼 블록에서 스로틀링 동작이 수행되는 횟수가 감소할 수 있다.
도 15는 모든 슈퍼 블록들(SB1~SB7)에 요청 처리량 사이즈(RS)만 있고 현재 처리량 사이즈(CS)가 없는(0) 경우를 나타내며, 이는 모든 슈퍼 블록들(SB1~SB7)이 최대 성능으로 동작할 수 있는 경우에 해당된다. 이때, 스로틀링 비율 값(THR)은 0 이므로, 스로틀링 동작이 실행되지 않는다.
도 16은 모든 슈퍼 블록들(SB1~SB7)의 현재 처리량 사이즈(CS)가 요청 처리량 사이즈(RS)보다 매우 많은 경우를 나타내며, 이는 모든 슈퍼 블록들(SB1~SB7)이 최저 성능으로 동작할 수 있는 경우에 해당된다. 이처럼 모든 슈퍼 블록들(SB1~SB7)의 성능이 낮아지더라도 스로틀링 비율(THR)이 0 이므로 메모리 시스템에서 스로틀링 동작은 수행되지 않으므로, 슈퍼 블록들(SB1~SB7)의 최저 성능을 보장할 수 있다.
상술한 바와 같이, 슈퍼 블록들의 내부 처리량에 따라 성능이 조절되므로, 스로틀링 동작이 수행되는 횟수를 감소시켜 메모리 시스템의 성능 저하는 방지할 수 있다.
도 17은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 17을 참조하면, 메모리 시스템(Memory System; 30000)은 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다.
메모리 시스템(30000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200), 메모리 컨트롤러(1200)를 제어할 수 있는 호스트(2000)를 포함할 수 있다. 메모리 컨트롤러(1200)는 호스트(2000)의 제어에 따라 메모리 장치(1100)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작 등을 제어할 수 있다.
메모리 장치(1100)에 프로그램된 데이터는 메모리 컨트롤러(1200)의 제어에 따라 디스플레이(Display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(RADIO TRANSCEIVER; 3300)는 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는 안테나(ANT)를 통하여 수신된 무선 신호를 호스트(2000)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 호스트(2000)는 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 메모리 컨트롤러(1200) 또는 디스플레이(3200)로 전송할 수 있다. 메모리 컨트롤러(1200)는 호스트(2000)에 의하여 처리(process)된 신호를 메모리 장치(1100)에 전송할 수 있다. 또한, 무선 송수신기(3300)는 호스트(2000)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(Input Device; 3400)는 호스트(2000)의 동작을 제어하기 위한 제어 신호 또는 호스트(2000)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다. 호스트(2000)는 메모리 컨트롤러(1200)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
도 18은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 18을 참조하면, 메모리 시스템(Memory System; 40000)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
메모리 시스템(40000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(1200), 메모리 컨트롤러(1200)를 제어할 수 있는 호스트(2000)를 포함할 수 있다.
또한, 호스트(2000)는 입력 장치(Input Device; 4200)를 통하여 입력된 데이터에 따라 메모리 장치(1100)에 저장된 데이터를 디스플레이(Display; 4300)를 통하여 출력할 수 있다. 예컨대, 입력 장치(4200)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
호스트(2000)는 메모리 시스템(40000)의 전반적인 동작을 제어할 수 있고 메모리 컨트롤러(1200)의 동작을 제어할 수 있다.
도 19는 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 19를 참조하면, 메모리 시스템(Memory System; 50000)은 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 이동 전화기, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
메모리 시스템(50000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 데이터 처리 동작, 예컨대 프로그램 동작, 소거 동작 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(1200) 및 메모리 컨트롤러(1200)를 제어할 수 있는 호스트(2000)를 포함한다.
메모리 시스템(50000)의 이미지 센서(Image Sensor; 5200)는 광학 이미지를 디지털 신호들로 변환할 수 있고, 변환된 디지털 신호들은 호스트(2000)로 전송될 수 있다. 호스트(2000)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(Display; 5300)를 통하여 출력되거나 메모리 컨트롤러(1200)를 통하여 메모리 장치(1100)에 저장될 수 있다. 또한, 메모리 장치(1100)에 저장된 데이터는 호스트(2000)의 제어에 따라 디스플레이(5300)를 통하여 출력될 수 있다.
도 20은 도 1에 도시된 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 20을 참조하면, 메모리 시스템은 메모리 카드(Memory Card; 70000)를 포함할 수 있다.
메모리 카드(70000)는 스마트 카드(smart card)로 구현될 수 있다. 메모리 카드(70000)는 메모리 장치(1100), 메모리 컨트롤러(1200) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다.
메모리 컨트롤러(1200)는 메모리 장치(1100)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 또한, 카드 인터페이스(7100)는 호스트(HOST; 2000)의 프로토콜에 따라 호스트(2000)와 메모리 컨트롤러(1200) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라 카드 인터페이스(7100)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는 호스트(2000)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000: 메모리 시스템 1100: 메모리 장치
1200: 메모리 컨트롤러 1300: 버퍼 메모리
2000: 호스트 1211: 커맨드 생성부
1212: 완료 신호 출력 모듈 200: 스로틀링 매니저
210: 제1 레지스터 220: 제2 레지스터
230: 연산기 240: 완료 지연 매니저
1200: 메모리 컨트롤러 1300: 버퍼 메모리
2000: 호스트 1211: 커맨드 생성부
1212: 완료 신호 출력 모듈 200: 스로틀링 매니저
210: 제1 레지스터 220: 제2 레지스터
230: 연산기 240: 완료 지연 매니저
Claims (19)
- 호스트로부터 수신받은 요청에 따라 커맨드를 생성하는 커맨드 생성부;
메모리 시스템의 내부에서 현재 처리중인 데이터의 현재 처리량 사이즈와 앞으로 처리할 데이터의 요청 처리량 사이즈를 합한 총 처리량 사이즈를 산출하고, 상기 총 처리량 사이즈와 목표 사이즈를 서로 비교하여, 비교 결과에 따라 지연 신호를 활성화 또는 비활성화시키는 스로틀링 매니저; 및
상기 지연 신호가 활성화되는 동안, 상기 요청에 대한 완료 신호의 출력을 지연시키고, 상기 지연 신호가 비활성화되면 상기 완료 신호를 출력하는 완료 신호 출력 모듈을 포함하는 메모리 컨트롤러.
- ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서, 상기 커맨드 생성부는,
상기 요청을 상기 메모리 시스템의 내부에서 사용될 수 있는 상기 커맨드로 변환하는 메모리 컨트롤러.
- ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서, 상기 스로틀링 매니저는,
상기 현재 처리량 사이즈의 정보를 임시로 저장하는 제1 레지스터;
상기 요청 처리량 사이즈의 정보를 임시로 저장하는 제2 레지스터;
상기 제1 및 제2 레지스터들로부터 상기 현재 처리량 사이즈와 상기 요청 처리량 사이즈를 합하여 상기 총 처리량 사이즈를 산출하고, 상기 비교 결과에 따라 제1 연산값을 출력하는 연산기; 및
상기 제1 연산값에 따라 상기 지연 신호를 활성화 또는 비활성화하는 완료 지연 매니저를 포함하는 메모리 컨트롤러.
- 삭제
- ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서, 상기 목표 사이즈는,
상기 메모리 시스템에서 스로틀링 동작이 수행되는 기준 값인 메모리 컨트롤러.
- ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈제3항에 있어서, 상기 완료 지연 매니저는,
상기 총 처리량 사이즈가 상기 목표 사이즈보다 크면, 상기 제1 연산값에 따라 상기 완료 신호를 지연시키기 위한 상기 지연 신호를 활성화시키고,
상기 총 처리량 사이즈가 상기 목표 사이즈보다 작거나 같으면, 상기 제1 연산값에 따라 상기 지연 신호를 비활성화시키는 메모리 컨트롤러.
- ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 현재 처리량 사이즈는 상기 메모리 시스템의 내부에서 처리되고 있는 현재 데이터 사이즈이거나, 상기 메모리 시스템의 내부에서 실행중인 커맨드들의 개수이거나, 상기 메모리 시스템의 내부에 큐잉된 커맨드들의 깊이(depth) 중 적어도 하나 이상을 포함하는 메모리 컨트롤러.
- ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 요청 처리량 사이즈는 상기 호스트에 의해 요청된 데이터 사이즈이거나, 상기 호스트에 의해 요청된 커맨드들의 개수이거나, 상기 호스트에 의해 요청된 커맨드들의 깊이 중 적어도 하나 이상을 포함하는 메모리 컨트롤러.
- ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈제3항에 있어서,
상기 제1 연산값에 따라 상기 메모리 시스템의 백그라운드 동작을 실행하기 위한 동작 신호를 출력하는 동작 결정부를 더 포함하는 메모리 컨트롤러.
- ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈제9항에 있어서, 상기 동작 결정부는,
상기 제1 연산값을 토대로 하여 상기 메모리 시스템의 내부에서 처리되는 데이터 사이즈가 기준값보다 많은 것으로 판단되면 상기 동작 신호를 비활성화하고,
상기 제1 연산값을 토대로 하여 상기 메모리 시스템의 내부에서 처리되는 데이터 사이즈가 상기 기준값보다 적거나 같은 것으로 판단되면 상기 동작 신호를 활성화하는 메모리 컨트롤러.
- ◈청구항 11은(는) 설정등록료 납부시 포기되었습니다.◈제10항에 있어서,
상기 기준값은 가비지 컬렉션 동작 또는 웨어 레벨링 동작이 수행되는 기준값인 메모리 컨트롤러.
- ◈청구항 12은(는) 설정등록료 납부시 포기되었습니다.◈제11항에 있어서,
상기 동작 신호가 출력되면, 상기 커맨드 생성부는 상기 가비지 컬렉션 동작 또는 상기 웨어 레벨링 동작을 수행하기 위한 커맨드들을 생성하는 메모리 컨트롤러.
- ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈제9항에 있어서,
상기 동작 결정부는 상기 동작 신호를 출력할 때, 상기 제1 연산값과 동일한 제2 연산값을 상기 완료 지연 매니저에게 출력하는 메모리 컨트롤러.
- 데이터가 저장되는 다수의 다이들(dies);
호스트와 상기 다이들 사이에서 통신하는 메모리 컨트롤러; 및
상기 메모리 컨트롤러에서 생성된 커맨드들을 임시로 저장하는 버퍼 메모리를 포함하고,
상기 메모리 컨트롤러는,
상기 다이들에 포함된 다수의 메모리 블록들을 다수의 슈퍼 블록들로 그룹화하고, 상기 슈퍼 블록들 각각에서 처리중인 현재 처리량 사이즈와 앞으로 처리할 요청 처리량 사이즈에 따라 스로틀링 비율을 조절하고, 상기 스로틀링 비율에 따라 상기 슈퍼 블록들에서 수행되는 스로틀링 동작의 횟수를 조절하는 메모리 시스템.
- ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈제14항에 있어서, 상기 메모리 컨트롤러는,
상기 스로틀링 비율이 상대적으로 낮은 슈퍼 블록들의 상기 스로틀링 동작의 횟수를 낮추고,
상기 스로틀링 비율이 상대적으로 높은 슈퍼 블록들의 상기 스로틀링 동작의 횟수를 높이는 메모리 시스템.
- ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈제15항에 있어서,
상기 스로틀링 비율은 메모리 시스템의 평균 성능 값에서 상기 슈퍼 블록의 성능 비율에 해당하는 성능 값을 빼어 산출되는 메모리 시스템.
- ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈제16항에 있어서,
상기 평균 성능 값은 상기 슈퍼 블록들 각각의 성능 값들을 상기 슈퍼 블록들의 개수로 나누어 산출되는 메모리 시스템.
- ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈제17항에 있어서,
상기 슈퍼 블록들 각각의 상기 성능 값들은 상기 메모리 시스템의 최대 성능 값을 지표로 나누어 산출되는 메모리 시스템.
- ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈제18항에 있어서,
상기 지표는 상기 슈퍼 블록들 각각의 상기 현재 처리량 사이즈를 상기 요청 처리량 사이즈로 나누어 산출되는 메모리 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180161926A KR102669517B1 (ko) | 2018-12-14 | 2018-12-14 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US16/533,050 US11086528B2 (en) | 2018-12-14 | 2019-08-06 | Memory controller and memory system having the same |
CN201910930006.1A CN111324301B (zh) | 2018-12-14 | 2019-09-29 | 存储器控制器以及具有存储器控制器的存储器*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180161926A KR102669517B1 (ko) | 2018-12-14 | 2018-12-14 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200073592A KR20200073592A (ko) | 2020-06-24 |
KR102669517B1 true KR102669517B1 (ko) | 2024-05-29 |
Family
ID=71073700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180161926A KR102669517B1 (ko) | 2018-12-14 | 2018-12-14 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11086528B2 (ko) |
KR (1) | KR102669517B1 (ko) |
CN (1) | CN111324301B (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11093244B2 (en) * | 2019-08-28 | 2021-08-17 | Micron Technology, Inc. | Command delay |
US11321017B2 (en) * | 2020-06-29 | 2022-05-03 | SK Hynix Inc. | Systems and methods for controlling completion rate of commands |
KR20220127076A (ko) | 2021-03-10 | 2022-09-19 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작 방법 |
KR102521902B1 (ko) | 2021-03-23 | 2023-04-17 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102496994B1 (ko) | 2021-03-23 | 2023-02-09 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102529761B1 (ko) | 2021-03-18 | 2023-05-09 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014010476A (ja) * | 2012-06-27 | 2014-01-20 | Fujitsu Ltd | ストレージ仮想化装置、ストレージ仮想化方法及びストレージ仮想化プログラム |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6968409B1 (en) * | 2001-08-29 | 2005-11-22 | Lsi Logic Corporation | Method and apparatus of establishing a dynamically adjustable loop of delayed read commands for completion in a queue buffer |
US8015281B2 (en) * | 2008-04-21 | 2011-09-06 | Microsoft Corporation | Dynamic server flow control in a hybrid peer-to-peer network |
US7853681B2 (en) * | 2008-06-30 | 2010-12-14 | International Business Machines Corporation | Method for controlling host throughput to a computer storage subsystem |
US8656088B2 (en) * | 2011-05-20 | 2014-02-18 | International Business Machines Corporation | Optimized flash based cache memory |
KR101861184B1 (ko) * | 2011-11-02 | 2018-05-28 | 삼성전자주식회사 | 스토리지의 동작 성능 조절방법 및 그에 따른 반도체 저장장치 |
US9130969B2 (en) * | 2012-08-23 | 2015-09-08 | Seagate Technology Llc | Data storage I/O communication method and apparatus |
US9575677B2 (en) * | 2014-04-29 | 2017-02-21 | Sandisk Technologies Llc | Storage system power management using controlled execution of pending memory commands |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
KR102317786B1 (ko) | 2015-02-02 | 2021-10-26 | 삼성전자주식회사 | 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스 |
KR102076196B1 (ko) | 2015-04-14 | 2020-02-12 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 모듈 및 메모리 모듈의 동작 방법 |
US9778878B2 (en) * | 2015-04-22 | 2017-10-03 | Sandisk Technologies Llc | Method and system for limiting write command execution |
KR20170085286A (ko) * | 2016-01-14 | 2017-07-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US20170212711A1 (en) | 2016-01-21 | 2017-07-27 | Kabushiki Kaisha Toshiba | Disk apparatus and control method |
US10313251B2 (en) * | 2016-02-01 | 2019-06-04 | Netapp, Inc. | Methods and systems for managing quality of service in a networked storage environment |
CN107526532B (zh) * | 2016-06-21 | 2020-07-10 | 伊姆西Ip控股有限责任公司 | 调节存储设备的吞吐量的方法和装置 |
US10007311B2 (en) * | 2016-08-15 | 2018-06-26 | Sandisk Technologies Llc | Adaptive temperature and memory parameter throttling |
KR20180026876A (ko) * | 2016-09-05 | 2018-03-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10956083B2 (en) * | 2016-12-16 | 2021-03-23 | Western Digital Technologies, Inc. | Method and system for input-output throttling to improve quality of service in a solid state drive |
KR102330254B1 (ko) * | 2017-04-07 | 2021-11-23 | 삼성전자주식회사 | 트래픽 제어 방법 및 그 전자 장치 |
US10140027B1 (en) * | 2017-05-26 | 2018-11-27 | Seagate Technology Llc | Data transfers with adaptively adjusted polling times |
US10013194B1 (en) * | 2017-06-02 | 2018-07-03 | Western Digital Technologies, Inc. | Handling thermal shutdown for memory devices |
US10198353B2 (en) * | 2017-07-07 | 2019-02-05 | Dell Products, Lp | Device and method for implementing save operation of persistent memory |
US10824363B2 (en) * | 2017-07-07 | 2020-11-03 | Dell Products, L.P. | System and method of characterization of a system having persistent memory |
US10514748B2 (en) * | 2017-09-27 | 2019-12-24 | Western Digital Technologies, Inc. | Reactive power management for non-volatile memory controllers |
US10884658B2 (en) * | 2018-02-09 | 2021-01-05 | Western Digital Technologies, Inc. | Completion entry throttling using data storage controller |
US10387078B1 (en) * | 2018-03-13 | 2019-08-20 | Western Digital Technologies, Inc. | Adaptive control of host queue depth for command submission throttling using data storage controller |
US10564861B2 (en) * | 2018-04-17 | 2020-02-18 | Western Digital Technologies, Inc. | Parity relocation for reducing temperature throttling |
WO2020174428A2 (en) * | 2019-02-26 | 2020-09-03 | Marvell Asia Pte, Ltd. | Cache management of logical-physical translation metadata |
-
2018
- 2018-12-14 KR KR1020180161926A patent/KR102669517B1/ko active IP Right Grant
-
2019
- 2019-08-06 US US16/533,050 patent/US11086528B2/en active Active
- 2019-09-29 CN CN201910930006.1A patent/CN111324301B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014010476A (ja) * | 2012-06-27 | 2014-01-20 | Fujitsu Ltd | ストレージ仮想化装置、ストレージ仮想化方法及びストレージ仮想化プログラム |
Also Published As
Publication number | Publication date |
---|---|
KR20200073592A (ko) | 2020-06-24 |
CN111324301A (zh) | 2020-06-23 |
US20200192581A1 (en) | 2020-06-18 |
US11086528B2 (en) | 2021-08-10 |
CN111324301B (zh) | 2023-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102669517B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
US11030094B2 (en) | Apparatus and method for performing garbage collection by predicting required time | |
US10528463B2 (en) | Technologies for combining logical-to-physical address table updates in a single write operation | |
US11995003B2 (en) | Method of data caching and device caching data | |
US20130290606A1 (en) | Power management for a system having non-volatile memory | |
US11061607B2 (en) | Electronic system having host and memory controller, and operating method thereof | |
TW201828035A (zh) | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 | |
US11360902B2 (en) | Adaptive readahead cache manager based on detected active streams of read commands | |
US11537328B2 (en) | Method and apparatus for executing host commands | |
US20240231663A1 (en) | Storage device and method of operating the same | |
CN113467704B (zh) | 通过智能阈值检测的命令优化 | |
US20240176738A1 (en) | Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device | |
CN118043768A (zh) | 用户可配置的slc存储器大小 | |
US11775211B2 (en) | Memory controller and method of operating the same | |
CN106874223B (zh) | 数据传输方法、存储器存储装置及存储器控制电路单元 | |
CN113867640A (zh) | 存储器轮询方法、存储器存储装置及存储器控制电路单元 | |
US11768625B2 (en) | Storage device managing a multi-tier cache memory and operating method thereof | |
US20240036731A1 (en) | Memory system and method of operating the same | |
US11989448B2 (en) | Memory controller and memory system including the same | |
US20240241669A1 (en) | Memory controller and storage device including the same | |
US20230384936A1 (en) | Storage device, electronic device including storage device, and operating method thereof | |
KR20240094776A (ko) | 호스트 장치의 액세스 패턴에 기초하여 스토리지 장치의 리소스들의 일동작에 필요한 데이터의 단위를 결정하기 위한 스토리지 장치, 스토리지 장치 동작 방법 및 리소스 관리 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |