KR20220050407A - 컨트롤러 및 컨트롤러의 동작방법 - Google Patents
컨트롤러 및 컨트롤러의 동작방법 Download PDFInfo
- Publication number
- KR20220050407A KR20220050407A KR1020200134059A KR20200134059A KR20220050407A KR 20220050407 A KR20220050407 A KR 20220050407A KR 1020200134059 A KR1020200134059 A KR 1020200134059A KR 20200134059 A KR20200134059 A KR 20200134059A KR 20220050407 A KR20220050407 A KR 20220050407A
- Authority
- KR
- South Korea
- Prior art keywords
- command
- memory
- address
- queue
- controller
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 35
- 230000015654 memory Effects 0.000 claims abstract description 163
- 238000012545 processing Methods 0.000 claims abstract description 41
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 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
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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
- 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
-
- 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
- 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
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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
- 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/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
- 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
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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 Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
제1 및 제2 메모리 장치들을 제어하는 컨트롤러는 제1 논리 주소들과 연관된 데이터를 저장하도록 상기 제1 메모리 장치들을 제어하는 제1 코어; 제2 논리 주소들과 연관된 데이터를 저장하도록 상기 제2 메모리 장치들을 제어하는 제2 코어; 및 호스트로부터 수신된 커맨드들을 큐에 큐잉하고, 상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하고, 상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 호스트 인터페이스를 포함한다.
Description
본 발명은 메모리 장치를 제어하는 컨트롤러에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 호스트 커맨드들과 연관된 논리 주소에 관계없이 상기 커맨드들을 리오더링(reordering)함으로써 메모리 시스템의 성능을 향상시킬 수 있는 컨트롤러 및 그의 동작 방법을 제공하고자 한다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
본 발명의 실시 예에 따르면, 복수의 제1 및 제2 메모리 장치들을 제어하는 컨트롤러는, 제1 논리 주소들과 연관된 데이터를 저장하도록 상기 제1 메모리 장치들을 제어하는 제1 코어; 제2 논리 주소들과 연관된 데이터를 저장하도록 상기 제2 메모리 장치들을 제어하는 제2 코어; 및 호스트로부터 수신된 커맨드들을 큐에 큐잉하고, 상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하고, 상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 호스트 인터페이스를 포함한다.
또한, 상기 호스트 인터페이스는 상기 제1 및 제2 메모리 장치들 중 아이들(idle) 상태의 메모리 장치가 있는 경우, 상기 제1 및 제2 코어 중 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 상기 제1 및 제2 메모리 장치들이 모두 비지(busy) 상태인 경우, 상기 큐에 포함된 제1 주소 커맨드와 제2 주소 커맨드를 인터리브(interleave)함으로써 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 정해진 크기의 데이터를 처리하기 위한 제1 주소 커맨드와 제2 주소 커맨드를 교대로 제공하도록 상기 큐잉된 커맨드들의 처리 순서를 결정함으로써 상기 제1 주소 커맨드와 제2 주소 커맨드를 인터리브할 수 있다.
또한, 상기 정해진 크기는 상기 제1 및 제2 코어 중 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초할 수 있다.
또한, 상기 호스트 인터페이스는 상기 제1 및 제2 코어 중, 상기 제1 및 제2 메모리 장치들 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 장치를 제어하는 코어에 커맨드가 먼저 제공되도록 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 상기 큐의 모든 엔트리에 커맨드가 큐잉된 경우 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 상기 큐에 큐잉된 제1 주소 커맨드와 연관된 데이터 크기 및 제2 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 호스트로부터 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드를 수신하지 못한 경우 상기 커맨드 리오더링을 수행할 수 있다.
또한, 호스트 인터페이스는 상기 큐잉된 커맨드들과 연관된 논리 주소들의 모듈로 연산(modulo operation) 결과에 기초하여 상기 논리 주소들을 상기 제1 및 제2 논리 주소들로 분류할 수 있다.
본 발명의 실시 예에 따르면, 제1 논리 주소들과 연관된 데이터를 저장하도록 복수의 제1 메모리 장치들을 제어하는 제1 코어 및 제2 논리 주소들과 연관된 데이터를 저장하도록 복수의 제2 메모리 장치들을 제어하는 제2 코어를 포함하는 컨트롤러의 동작 방법은, 호스트로부터 수신된 커맨드들을 큐에 큐잉하는 단계; 상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하는 단계; 및 상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 단계를 포함한다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 제1 및 제2 메모리 장치들 중 아이들(idle) 상태의 메모리 장치가 있는 경우, 상기 제1 및 제2 코어 중 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 상기 처리 순서를 결정하는 단계를 포함할 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 제1 및 제2 메모리 장치들이 모두 비지(busy) 상태인 경우, 상기 큐에 포함된 제1 주소 커맨드와 제2 주소 커맨드를 인터리브(interleave)하는 단계를 더 포함할 수 있다.
또한, 상기 인터리브하는 단계는 정해진 크기의 데이터를 처리하기 위한 제1 주소 커맨드와 제2 주소 커맨드를 교대로 제공하도록 상기 큐잉된 커맨드들의 처리 순서를 결정하는 단계를 포함할 수 있다.
또한, 상기 정해진 크기는 상기 제1 및 제2 코어 중 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초할 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 제1 및 제2 코어 중, 상기 제1 및 제2 메모리 장치들 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 장치를 제어하는 코어에 커맨드가 먼저 제공되도록 상기 큐잉된 커맨드들의 처리 순서를 결정할 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 큐의 모든 엔트리에 커맨드가 큐잉된 경우 수행될 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 큐에 큐잉된 제1 주소 커맨드와 연관된 데이터 크기 및 제2 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 수행될 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 호스트로부터 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드를 수신하지 못한 경우 수행될 수 있다.
또한, 상기 큐잉된 커맨드들과 연관된 논리 주소들의 모듈로 연산(modulo operation) 결과에 기초하여 상기 논리 주소들을 상기 제1 및 제2 논리 주소들로 분류하는 단계를 포함할 수 있다.
본 발명은 호스트 커맨드들과 연관된 논리 주소에 관계없이 상기 커맨드들을 리오더링(reordering)함으로써 메모리 시스템의 성능을 향상시킬 수 있는 컨트롤러 및 그의 동작 방법을 제공할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급되지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 2는 커맨드 큐 인터페이스 동작을 설명하기 위한 도면이다.
도 3은 도 1에 도시된 메모리 시스템의 구체적인 블록도이다.
도 4a 내지 도 4c는 호스트 인터페이스의 커맨드 리오더링 동작을 설명하는 도면이다.
도 5는 호스트 인터페이스가 커맨드 리오더링을 수행하기 위해 정해진 기준의 예들을 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 호스트 인터페이스의 동작을 나타낸다.
도 2는 커맨드 큐 인터페이스 동작을 설명하기 위한 도면이다.
도 3은 도 1에 도시된 메모리 시스템의 구체적인 블록도이다.
도 4a 내지 도 4c는 호스트 인터페이스의 커맨드 리오더링 동작을 설명하는 도면이다.
도 5는 호스트 인터페이스가 커맨드 리오더링을 수행하기 위해 정해진 기준의 예들을 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 호스트 인터페이스의 동작을 나타낸다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함한다.
호스트(102)는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
호스트(102)는 적어도 하나의 운영 시스템(OS: operating system)을 포함할 수 있다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 운영 시스템은 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있다.
메모리 시스템(110)은 호스트(102)의 요청에 응하여 호스트(102)의 데이터를 저장하기 위해 동작할 수 있다. 예를 들어, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Serial Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
메모리 시스템(110)은 다양한 종류의 저장 장치에 의해 구현될 수 있다. 예를 들어, 상기 저장 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
구현에 따라, 메모리 시스템(110)은 NVMe와 같은 프로토콜을 지원하는 커맨드 큐 인터페이스를 사용하여 호스트(102)와 통신할 수 있다. 커맨드 큐 인터페이스는, 요청된 커맨드의 입력을 위한 서브미션 큐(submission queue, SQ) 및 해당 커맨드의 처리 결과를 기록하기 위한 컴플리션 큐(completion queue, CQ)를 포함하는 큐 페어(queue pair)에 기초하여 호스트(102)와 메모리 시스템(110) 간 인터페이싱을 지원할 수 있다.
도 2는 커맨드 큐 인터페이스 동작을 설명하기 위한 도면이다.
호스트(102)는 서브미션 큐(1022)와 컴플리션 큐(1024)를 포함하는 큐 페어를 생성할 수 있다. 만약, 호스트(102)에 복수의 코어들이 존재하는 경우, 서브미션 큐(1022)와 컴플리션 큐(1024)는 복수의 코어들 중 하나의 코어에 대응하여 생성된 큐 페어일 수 있다. 실시 예에 따라, 큐 페어는 호스트(102)의 메모리에 저장될 수 있다.
메모리 시스템(110)은 커맨드 큐 인터페이스 동작을 수행하기 위해 도어벨 레지스터(202)를 포함할 수 있다.
도어벨 레지스터(202)는 호스트(102)에 의해 생성된 큐 페어를 제어하기 위한 레지스터일 수 있다. 도 2는 예로서 하나의 도어벨 레지스터(202)를 도시하나, 호스트(102)에 복수의 코어들이 존재하는 경우, 상기 코어들의 개수와 동일한 개수의 도어벨 레지스터(202)가 메모리 시스템(110)에 포함될 수 있다. 도어벨 레지스터(202)는 서브미션 큐(1022)의 테일을 가리키는 서브미션 큐 테일 포인터(2022)와 컴플리션 큐(1024)의 헤드를 가리키는 컴플리션 큐 헤드 포인터(2024)를 저장할 수 있다. 메모리 시스템(110)은 도어벨 레지스터(202)를 참조하여 서브미션 큐(1022)와 컴플리션 큐(1024)에 액세스함으로써 호스트(102)와의 커맨드 큐 인터페이스 동작을 수행할 수 있다.
단계 S1에서, 호스트(102)는 메모리 시스템(110)에 커맨드 수행을 요청하기 위해 서브미션 큐(1022)에 커맨드를 큐잉할 수 있다. 단계 S2에서, 호스트(102)는 서브미션 큐 테일 포인터(2022)를 업데이트하고, 업데이트된 서브미션 큐 테일 포인터(2022)를 메모리 시스템(110)으로 제공할 수 있다. 메모리 시스템(110)은 상기 업데이트된 서브미션 큐 테일 포인터(2022)를 도어벨 레지스터(202)에 저장할 수 있다.
단계 S3에서, 메모리 시스템(110)은 서브미션 큐(1022)로부터 커맨드를 페치할 수 있다. 단계 S4에서, 메모리 시스템(110)은 상기 페치된 커맨드를 처리할 수 있다.
단계 S5에서, 메모리 시스템(110)은 커맨드의 처리 후에 컴플리션 큐(1024)에 커맨드의 처리가 완료되었음을 기록할 수 있다. 예를 들어, 메모리 시스템(110)은 컴플리션 큐(1024)에 컴플리션 큐 엔트리를 기입할 수 있다. 이때 컴플리션 큐 헤드 포인터(2024)가 증가할 수 있다. 단계 S6에서, 메모리 시스템(110)은 인터럽트 신호를 생성할 수 있다.
단계 S7에서, 호스트(102)는 커맨드를 완료할 수 있다. 단계 S8에서, 호스트(102)는 업데이트된 컴플리션 큐 헤드 포인터(2024)를 메모리 시스템(110)으로 제공할 수 있다. 예를 들어, 메모리 시스템(110)은 업데이트된 컴플리션 큐 헤드 포인터(2024)를 도어벨 레지스터(202)에 저장할 수 있다.
다시 도 1을 참조하면, 메모리 시스템(110)은 복수의 메모리 장치들 및 컨트롤러(130)를 포함할 수 있다. 복수의 메모리 장치들은 호스트(102)를 위한 데이터를 저장할 수 있으며, 컨트롤러(130)는 복수의 메모리 장치들로의 데이터 저장을 제어할 수 있다.
컨트롤러(130) 및 복수의 메모리 장치들은 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 복수의 메모리 장치들은 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 사용되면, 메모리 시스템(110)에 연결된 호스트(102)의 동작 속도는 향상될 수 있다. 게다가, 컨트롤러(130) 및 복수의 메모리 장치들은, 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예를 들어, 컨트롤러(130) 및 복수의 메모리 장치들은 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
다른 일 예로, 메모리 시스템(110)은, 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB(Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID(radio frequency identification) 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성할 수 있다.
복수의 메모리 장치들은 비휘발성 메모리 장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 복수의 메모리 장치들은 프로그램 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 복수의 메모리 장치들에 저장된 데이터를 제공할 수 있다. 복수의 메모리 장치들 각각은 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 복수의 메모리 장치들은 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 복수의 메모리 장치들을 제어할 수 있다. 예를 들어, 컨트롤러(130)는 복수의 메모리 장치들로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장할 수 있다. 이러한 동작을 위해, 컨트롤러(130)는 복수의 메모리 장치들의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다.
컨트롤러(130)는 서로 내부 버스를 통해 동작 가능하도록 연결된 호스트 인터페이스(132), 프로세서(134), 메모리 인터페이스(142) 및 메모리(144)를 포함할 수 있다.
호스트 인터페이스(132)는 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
호스트 인터페이스(132)는 호스트(102)와 데이터를 주고받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
메모리 인터페이스(142)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하도록, 컨트롤러(130)와 복수의 메모리 장치들 간의 인터페이싱을 위한 메모리/스토리지(storage) 인터페이스로서의 역할을 할 수 있다. 복수의 메모리 장치들이 플래시 메모리, 특히 NAND 플래시 메모리인 경우, 메모리 인터페이스(142)는 복수의 메모리 장치들을 위한 제어 신호를 생성하고, 프로세서(134)의 제어 하에 복수의 메모리 장치들로 제공되는 데이터를 처리할 수 있다. 메모리 인터페이스(142)는 컨트롤러(130)와 복수의 메모리 장치들 사이의 커맨드 및 데이터를 처리하기 위한 인터페이스, 예를 들어 NAND 플래시 인터페이스로서 동작할 수 있다.
메모리 인터페이스(142)는 플래시 인터페이스 계층(FIL: Flash Interface Layer)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
메모리(144)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다. 컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 복수의 메모리 장치들이 리드, 프로그램, 이레이즈 동작을 수행하도록 복수의 메모리 장치들을 제어할 수 있다. 컨트롤러(130)는 복수의 메모리 장치들 로부터 독출되는 데이터를 호스트(102)로 제공할 수 있으며, 호스트(102)로부터 제공되는 데이터를 복수의 메모리 장치들에 저장할 수 있다. 메모리(144)는 컨트롤러(130)와 복수의 메모리 장치가 이러한 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
메모리(144)는 휘발성 메모리로 구현될 수 있다. 예를 들어, 메모리(144)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 메모리(144)는 컨트롤러(130) 내부 또는 외부에 배치될 수 있다. 도 1은 컨트롤러(130) 내부에 배치된 메모리(144)를 예시한다. 일 실시예에서, 메모리(144)는 메모리(144)와 컨트롤러(130) 사이의 데이터를 입출력하는 메모리 인터페이스를 갖는 외부 휘발성 메모리 장치로 구현될 수 있다.
메모리(144)는 호스트(102)와 복수의 메모리 장치들 간의 라이트, 리드 등의 동작을 수행하기 위한 데이터를 저장하기 위해 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.
프로세서(134)는 메모리 시스템(110)의 전체적인 동작을 제어할 수 있다. 프로세서(134)는 메모리 시스템(110)의 전반적인 동작을 제어하기 위해 펌웨어를 구동할 수 있다. 상기 펌웨어는 플래시 변환 계층(FTL: Flash Translation Layer)로 불릴 수 있다. 그리고, 프로세서(134)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다. 특히, 메모리 시스템(110)의 데이터 처리 성능을 향상시키기 위해 프로세서(134)는 복수의 코어들을 포함하는 멀티 코어 프로세서로 구현될 수 있다.
프로세서(134)는 플래시 변환 계층을 구동하여 호스트로부터 수신된 요청에 대응하는 포그라운드 동작(foreground operation)을 수행할 수 있다. 예를 들어, 프로세서(134)는 호스트로부터의 라이트 요청에 응하여 메모리 장치(150)의 라이트 동작을 제어하고, 리드 요청에 응하여 메모리 장치(150)의 리드 동작을 제어할 수 있다.
또한, 프로세서(134)는 복수의 메모리 장치들에 대한 백그라운드(background) 동작을 수행할 수도 있다. 예를 들어, 복수의 메모리 장치들에 대한 백그라운드 동작은 가비지 컬렉션(GC: Garbage Collection) 동작, 웨어 레벨링(WL: Wear Leveling) 동작, 맵 플러시(map flush) 동작, 배드 블록 관리(bad block management) 동작 등을 포함할 수 있다.
프로세서(134)에 포함된 복수의 코어들은 병렬로 동작함으로써 메모리 시스템(110)의 데이터 처리 성능을 향상시킬 수 있다. 상기 복수의 코어들의 병렬 동작이 도 3를 참조하여 자세히 설명된다.
도 3은 도 1에 도시된 메모리 시스템(110)의 구체적인 블록도이다.
도 1을 참조하여 설명된 복수의 메모리 장치들은 도 2에 도시된 복수의 메모리 다이들(DIE11 - DIE44)에 대응할 수 있다. 복수의 메모리 다이들(DIE11 - DIE44)은 복수의 채널들(CH1 - CH4)을 통해 메모리 인터페이스(142)에 연결될 수 있다.
복수의 메모리 다이들(DIE11 - DIE44) 각각은 메모리 다이, 플레인, 메모리 블록 및 페이지의 계층 구조를 가질 수 있다. 하나의 메모리 다이는 채널을 통해 한 번에 하나의 커맨드를 수신할 수 있다. 하나의 메모리 다이는 하나 이상의 플레인들을 포함할 수 있으며, 상기 플레인들은 상기 메모리 다이가 수신한 커맨드를 병렬로 처리할 수 있다. 상기 플레인들 각각은 복수의 메모리 블록들을 포함할 수 있다. 메모리 블록은 이레이즈 동작의 최소 단위일 수 있다. 하나의 메모리 블록은 복수의 페이지들을 포함할 수 있다. 페이지는 프로그램 동작 및 리드 동작의 최소 단위일 수 있다.
복수의 메모리 다이들(DIE11 - DIE44)의 구조는 서로 실질적으로 동일하거나 유사할 수 있다. 복수의 메모리 다이들(DIE11 - DIE44)은 독립적으로 동작할 수 있다.
도 1을 참조하여 설명된 컨트롤러(130)는 도 3에 도시된 컨트롤러(130)와 대응할 수 있다. 도 1을 참조하여 설명된 컨트롤러(130)의 구성요소들 중 일부는 도 2에서 생략되었다. 도 2에 도시된 제1 및 제2 코어(136, 138)는 도 1의 프로세서(134)에 포함된 복수의 코어들에 대응할 수 있다. 제1 및 제2 코어(136, 138)는 독립적으로 동작할 수 있다.
메모리 시스템(110)이 높은 데이터 처리 성능을 제공할 수 있도록 제1 및 제2 코어(136, 138)와 복수의 메모리 다이들(DIE11 - DIE44)은 병렬로 동작할 수 있도록 구성될 수 있다.
제1 및 제2 코어(136, 138)는 서로 다른 논리 주소와 연관된 커맨드를 처리할 수 있다. 예를 들어, 제1 코어(136)는 홀수 논리 주소와 연관된 커맨드만을 처리하고, 제2 코어(138)는 짝수 논리 주소와 연관된 커맨드만을 처리할 수 있다. 이하에서, 홀수 논리 주소와 연관된 커맨드는 홀수 주소 커맨드, 짝수 논리 주소와 연관된 커맨드는 짝수 주소 커맨드로 지칭된다.
두 개의 코어가 짝수 주소 커맨드와 홀수 주소 커맨드를 각각 처리하는 경우를 예로 들어 본 발명의 실시 예가 설명될 것이지만, 본 발명은 이에 제한되지 않는다. 프로세서(134)는 두 개보다 많은 코어들을 포함할 수 있고, 호스트 인터페이스(132)는 호스트(102)로부터의 커맨드와 연관된 논리 주소를 상기 코어들의 개수로 모듈로 연산(modulo operation)을 수행한 결과에 기초하여 각 코어들로 커맨드를 제공할 수 있다.
호스트 인터페이스(132)는 도어벨 레지스터(202) 값을 감지하여 호스트(102)의 서브미션 큐(1022)에 큐잉된 커맨드를 페치할 수 있다. 호스트 인터페이스(132)는 상기 페치된 커맨드를 먼저 HIL 큐(232)에 큐잉할 수 있다. 그리고, 큐잉된 커맨드의 논리 주소가 홀수 논리 주소인지 짝수 논리 주소인지에 따라 제1 코어(136) 또는 제2 코어(138)로 상기 커맨드를 제공할 수 있다.
그리고, 제1 및 제2 코어(136, 138)는 자신에게 독점적으로 할당된 메모리 다이들만을 제어할 수 있다. 예를 들어, 제1 코어(136)는 제1 및 제2 채널(CH1, CH2)로 연결된 메모리 다이들(DIE11 - DIE24)만을 제어하고, 제2 코어(138)는 제3 및 제4 채널(CH3, CH4)로 연결된 메모리 다이들(DIE31 - DIE44)만을 제어할 수 있다. 이하에서 제1 코어(136)에 의해 제어되는 메모리 다이들(DIE11 - DIE24)을 제1 메모리 다이들, 제2 코어(138)에 의해 제어되는 메모리 다이들(DIE31 - DIE44)을 제2 메모리 다이들로 지칭한다.
제1 코어(136)는 홀수 주소 커맨드를 수신하여 제1 FTL 큐(236)에 큐잉한 후 제1 메모리 다이들의 물리 주소에 매핑할 수 있다. 제2 코어(138)는 짝수 주소 커맨드들을 수신하여 제2 FTL 큐(238)에 큐잉한 후 제2 메모리 다이들의 물리 주소에 매핑할 수 있다. 제1 및 제2 코어(136, 138)는 서로 다른 논리 주소 및 물리 주소에 연관된 커맨드를 처리하므로, 서로 간섭하지 않고 병렬로 동작할 수 있다.
제1 코어(136)는 데이터 처리 성능을 향상시키기 위해 인터리브(interleave) 프로그램 등을 고려하여 제1 FTL 큐(236)에 큐잉된 홀수 주소 커맨드들의 커맨드 수행 순서를 리오더링할 수 있다. 제2 코어도 마찬가지로, 제2 FTL 큐(238)에 큐잉된 짝수 주소 커맨드들의 커맨드 수행 순서를 리오더링할 수 있다.
그러나, 제1 및 제2 코어(136, 138)가 서로 간섭하지 않기 때문에 HIL 큐(232)에 큐잉된 커맨드가 제1 및 제2 FTL 큐(236, 238)에 큐잉되고 나면 짝수 논리 주소에 연관된 커맨드와 홀수 논리 주소에 연관된 커맨드 간에는 커맨드 수행 순서가 리오더링될 수 없다.
본 발명의 실시 예에 따르면, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들의 처리 순서를 변경하고, 변경된 순서대로 커맨드들을 제1 및 제2 FTL 큐(236, 238)로 제공할 수 있다. 예를 들어, 호스트 인터페이스(132)는 제1 및 제2 메모리 다이들의 상태에 기초하여 짝수 주소 커맨드와 홀수 주소 커맨드 간 커맨드 처리 순서를 변경할 수 있다. 본 발명의 실시 예에 따르면, HIL 큐(232)가 제1 및 제2 메모리 다이들의 상태를 모두 고려하여 커맨드 처리 순서를 결정함으로써 서로 간섭할 수 없는 제1 및 제2 코어(136, 138)의 커맨드 리오더링의 한계를 보완할 수 있다.
이하에서, 본 발명의 실시 예에 따른 호스트 인터페이스(132)의 커맨드 리오더링 방법이 자세히 설명된다.
도 4a 내지 도 4c는 호스트 인터페이스(132)의 커맨드 리오더링을 설명하는 도면이다. 도 4a 내지 도 4c는 HIL 큐(232), 제1 FTL 큐(236) 및 제2 FTL 큐(238)를 도시하며, 각 큐의 헤드(HEAD) 및 테일(TAIL) 또한 도시한다.
도 4a는 본 발명의 실시 예에 따른 커맨드 리오더링이 수행되기 전의 큐들의 상태를 설명한다.
도 4a는 제1 FTL 큐(236)의 모든 엔트리에 커맨드가 큐잉되고, 제2 FTL 큐(238)에는 커맨드가 큐잉되지 않은 상태를 도시한다. 상기 상태에서 호스트 인터페이스(132)는 복수의 커맨드들을 수신해서 HIL 큐(232)에 큐잉할 수 있다. 도 3a의 예에서 HIL 큐(232)가 8개의 커맨드들을 수신할 수 있다. 상기 8개의 커맨드들 중 먼저 수신된 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)은 홀수 주소 커맨드로서 제1 코어(136)로 제공될 커맨드이며, 나중에 수신된 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)는 짝수 주소 커맨드로서 제2 코어(138)로 큐잉될 커맨드일 수 있다.
만약 호스트 인터페이스(132)가 HIL 큐(232)에 큐잉된 커맨드들의 커맨드 리오더링을 수행하지 않고 커맨드들을 제1 및 제2 코어(136, 138)로 제공하는 경우, 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)를 제1 코어(136)로 제공하기 전까지는 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)은 짝수 주소 커맨드로서 제2 코어(138)로 제공할 수 없다.
제1 FTL 큐(236)의 모든 엔트리에 커맨드가 큐잉된 경우, 제1 FTL 큐(236)에 큐잉된 커맨드들이 처리되기 전까지는 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)가 제1 FTL 큐(236)에 큐잉될 수 없다. 제2 FTL 큐(238)가 비어 있고 제2 코어(138)가 커맨드를 곧바로 처리할 수 있는 경우에도 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)가 모두 제1 FTL 큐(236)에 큐잉될 때까지 대기한 후 호스트 인터페이스(132)가 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)를 제2 FTL 큐(238)로 제공할 수 있다면 제1 및 제2 코어(136, 138)의 병렬 동작이 제한될 수 있다. 제1 및 제2 코어(136, 138)의 병렬 동작이 제한되면 메모리 시스템(110)의 데이터 처리 성능이 제한될 수 있다.
본 발명의 실시 예에 따르면, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들의 커맨드 리오더링을 수행할 수 있다.
도 4b는 본 발명의 실시 예에 따른 커맨드 리오더링을 설명하는 도면이다.
호스트 인터페이스(132)는 호스트(102)로부터 수신된 커맨드들을 HIL 큐(232)에 큐잉하고, 정해진 조건을 만족하면 상기 큐잉된 커맨드들을 리오더링할 수 있다.
정해진 조건의 제1 예로, 호스트 인터페이스(132)는 HIL 큐(232)의 모든 엔트리에 커맨드가 큐잉된 경우에 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다.
정해진 조건의 제2 예로, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들의 논리 주소에 기초하여, 제1 및 제2 코어(136, 138)가 동시에 동작할 수 있을 것으로 판단되는 경우 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다. 예를 들어, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 홀수 주소 커맨드와 연관된 데이터 크기 및 짝수 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다. 홀수 주소 커맨드와 연관된 데이터 크기 및 짝수 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 HIL 큐(232)가 커맨드 리오더링을 수행하여 제1 및 제2 코어(136, 138)로 커맨드를 제공하면 제1 및 제2 코어(136, 138)에서 동시에 포그라운드 동작을 수행할 수 있다.
정해진 조건의 제3 예로, HIL 큐(232)에 마지막으로 큐잉된 커맨드가 페치된 시점으로부터 정해진 기간 이상 도어벨 레지스터(202)의 서브미션 큐 테일 포인터(2022) 값이 변경되지 않는 경우, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다. 즉, 호스트 인터페이스(132)는 커맨드 처리의 지연을 방지하기 위해, 상기 제1 및 제2 예의 정해진 조건을 만족하지 못하더라도 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드가 수신되지 않으면 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다.
도 4b의 예에서, 호스트 인터페이스(132)는 HIL 큐(232)의 모든 엔트리에 커맨드가 큐잉된 것을 감지하고, 커맨드 리오더링을 수행할 수 있다.
호스트 인터페이스(132)는 정해진 기준에 따라 커맨드 리오더링을 수행할 수 있다. 예를 들어, 호스트 인터페이스(132)는 아이들 상태인 메모리 다이들이 포함된 코어에 커맨드가 먼저 제공되도록 커맨드 리오더링을 수행할 수 있다. 도 4b의 예에서, 제2 FTL 큐(238)가 비어 있으므로 제2 코어(138)와 연관된 제2 메모리 다이들도 아이들(idle) 상태일 수 있다. 호스트 인터페이스(132)는 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)가 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)보다 먼저 제공되도록 커맨드들의 순서를 조정할 수 있다.
도 4c는 본 발명의 실시 예에 따른 커맨드 리오더링이 수행된 경우의 효과를 설명한다.
호스트 인터페이스(132)는 제1 FTL 큐(236)에 큐잉된 커맨드들이 처리 완료될 때까지 대기하지 않고 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)를 제2 FTL 큐(238)로 제공할 수 있다. 제2 코어(138)는 아이들 상태로 대기하지 않고, 제1 코어(136)와 동시에 커맨드를 처리할 수 있다. 제2 코어(138)에 의해 제어되는 제2 메모리 다이들도 마찬가지로, 아이들 상태로 대기하지 않고 제1 메모리 다이들과 동시에 동작을 수행할 수 있다. 따라서, 본 발명의 실시 예에 따르면 제1 및 제2 코어(136, 138)의 병렬성(parallelism)이 향상되고 메모리 시스템(110)의 처리량(throughput)이 향상될 수 있다.
한편, 호스트 인터페이스(132)가 커맨드 리오더링을 수행하기 위해 정해진 기준은 도 4b에서 설명된 것으로 제한되지 않는다. 정해진 기준의 다양한 예가 도 5를 참조하여 자세히 설명된다.
도 5는 호스트 인터페이스(132)가 커맨드 리오더링을 수행하기 위해 정해진 기준의 예들을 설명하기 위한 도면이다.
도 5는 복수의 채널들(CH1 - CH4)에 포함된 복수의 메모리 다이들(DIE11 - DIE44)별 다이 상태와 오픈 블록 오프셋을 포함하는 테이블을 도시한다. 다이 상태는 해당 메모리 다이가 동작 중인 상태이면 비지(BUSY), 그렇지 않으면 아이들(IDLE)로 표시된다. 오픈 블록 오프셋은 각 메모리 다이에 포함된 메모리 블록들 중 오픈 블록에서 몇 번째 페이지가 프로그램될 차례인지 나타내는 페이지 오프셋을 지칭한다. 도 5의 예에서 각 메모리 블록들은 100개의 페이지를 포함할 수 있다. 오픈 블록은 메모리 다이의 메모리 블록들 중 프로그램 동작을 수행하기 위해 현재 할당된 메모리 블록으로서, 상기 100개의 페이지가 모두 프로그램되지는 않은 메모리 블록을 지칭할 수 있다.
한편, 도 5는 하나의 채널에 포함된 메모리 다이들끼리는 다이 상태 및 오픈 블록 오프셋이 모두 동일한 경우가 예시된다. 예를 들어, 제1 및 제2 코어(136, 138)는 하나의 채널에 포함된 메모리 다이들끼리의 병렬성을 향상시키기 위해 상기 메모리 다이들의 메모리 블록들을 그룹화하여 슈퍼 블록으로 취급할 수 있다. 하나의 슈퍼블록에 대한 액세스가 수행되는 경우 하나의 채널에 포함된 메모리 다이들끼리는 다이 상태 및 오픈 블록 오프셋이 동일할 수 있다. 그러나, 본 발명은 하나의 채널에 포함된 메모리 다이들의 다이 상태 및 오픈 블록 오프셋이 동일한 경우로 제한되지 않는다.
정해진 기준의 제1 예로, 호스트 인터페이스(132)는 복수의 메모리 다이들(DIE11 - DIE44) 중 아이들 상태의 메모리 다이가 있는 경우, 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 커맨드 리오더링을 수행할 수 있다. 도 6의 예에서, 호스트 인터페이스(132)는 아이들 상태인 메모리 다이들(DIE31 - DIE44)을 제어하는 제2 코어(138)에 연관된 짝수 주소 커맨드가 우선 제공되도록 HIL 큐(232)의 커맨드들의 커맨드 리오더링을 수행할 수 있다.
만약 복수의 메모리 다이들(DIE11 - DIE44)이 모두 비지 상태인 경우, 호스트 인터페이스(132)는 HIL 큐(232)에 포함된 홀수 주소 커맨드와 짝수 주소 커맨드를 인터리브(interleave)함으로써 커맨드 리오더링을 수행할 수 있다. 구체적으로, 호스트 인터페이스(132)는 정해진 크기의 데이터를 처리하기 위한 홀수 주소 커맨드 및 짝수 주소 커맨드가 교대로 제공되도록 커맨드 리오더링을 수행할 수 있다. 예를 들어, 호스트 인터페이스(132)는 96KB의 데이터에 대한 홀수 주소 커맨드와 96KB 데이터에 대한 짝수 주소 커맨드가 교대로 제공되도록 커맨드 리오더링을 수행할 수 있다.
예를 들어, 상기 정해진 크기는 하나의 코어에서 제어되는 메모리 다이들이 동시에 동작할 때 한 번에 처리될 수 있는 데이터 크기일 수 있다. 구체적으로, 상기 정해진 크기는 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초하여 결정될 수 있다.
정해진 기준의 제2 예로, 호스트 인터페이스(132)는 복수의 메모리 다이들(DIE11 - DIE44) 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 다이를 제어하는 코어에 커맨드가 먼저 제공되도록 커맨드 리오더링을 수행할 수 있다. 도 5의 예에서, 오픈 블록 오프셋이 '0'에 가까울수록 해당 오픈 블록의 여유 공간이 많고, 오픈 블록 오프셋이 '100'에 가까울수록 해당 오픈 블록의 여유 공간이 적을 수 있다.
제1 및 제2 코어(136, 138)는 오픈 블록으로 사용되는 메모리 블록의 모든 페이지가 프로그램되면 해당 메모리 블록을 클로즈드 블록으로 결정하고, 이레이즈 상태의 메모리 블록인 프리 블록들 중 하나를 오픈 블록으로 결정할 수 있다. 프리 블록들 중 하나가 오픈 블록으로 결정되면, 메모리 다이의 프리 블록 개수는 감소할 수 있다. 상기 감소한 프리 블록 개수를 회복하기 위해, 제1 및 제2 코어(136, 138)는 가비지 콜렉션과 같은 백그라운드 동작을 수행할 수 있으며, 상기 백그라운드 동작에 의해 포그라운드 동작 성능이 지연될 수 있다.
오픈 블록의 여유 공간이 상대적으로 적게 남은 메모리 다이에서 프로그램 커맨드가 먼저 처리되는 경우, 상대적으로 적은 양의 데이터가 프로그램된 후 메모리 시스템(110)의 백그라운드 동작이 수행될 수 있다. 예를 들어, 제2 코어(138)가 제3 채널(CH3)에 연결된 메모리 다이들(DIE31 - DIE34)에 프로그램 동작을 먼저 수행하면, 메모리 다이별로 10페이지의 데이터를 프로그램한 후 제2 코어(138)에서 백그라운드 동작이 시작될 수 있다. 제2 코어(138)에서 백그라운드 동작이 시작되면 제2 코어(138)의 처리량이 감소할 수 있다. 제2 코어(138)의 처리량이 감소하면 메모리 시스템(110)의 평균적인 처리량이 감소할 수 있다.
반면에, 오픈 블록의 여유 공간이 가장 많이 남은 메모리 다이에서 커맨드가 먼저 처리되는 경우, 많은 양의 데이터가 먼저 프로그램된 후 메모리 시스템(110)의 백그라운드 동작이 수행될 수 있다. 예를 들어, 제1 코어(136)가 제1 채널(CH1)에 연결된 메모리 다이들(DIE11 - DIE14)에 프로그램 동작을 먼저 수행하면, 메모리 다이별로 100페이지의 데이터를 프로그램한 후 제1 코어(136)에서 백그라운드 동작이 시작될 수 있다.
따라서, 호스트 인터페이스(132)는 오픈 블록의 여유 공간이 가장 많이 남은 메모리 다이들(DIE11 - DIE14)을 제어하는 제1 코어(136)에 연관된 홀수 주소 커맨드가 먼저 처리되도록 커맨드 리오더링을 수행할 수 있다.
한편, 도 5는 복수의 메모리 다이들(DIE11 - DIE44)의 다이 상태 및 오픈 블록 오프셋이 하나의 테이블에 포함된 것으로 도시되었으나 본 발명은 이에 제한되지 않는다. 예를 들어, 호스트 인터페이스(132)는 복수의 메모리 다이들(DIE11 - DIE44)의 다이 상태를 메모리 인터페이스(142)의 레지스터에 액세스하여 획득할 수 있으며, 오픈 블록 오프셋은 제1 및 제2 코어(136, 138)의 맵 데이터로부터 획득할 수 있다.
도 6은 본 발명의 실시 예에 따른 호스트 인터페이스(132)의 동작을 나타낸다.
단계 S602에서, 호스트 인터페이스(132)는 커맨드 리오더링을 수행하기 위해 정해진 조건이 만족되었는지 판단할 수 있다. 상기 정해진 조건의 예는 도 4b를 참조하여 자세히 설명되었다.
단계 S604에서, 호스트 인터페이스(132)는 정해진 기준에 따라 HIL 큐(232)에 큐잉된 커맨드들(HIL_CMDs)의 커맨드 리오더링을 수행할 수 있다. 상기 정해진 기준의 예는 도 4b 및 도 5를 참조하여 자세히 설명되었다.
단계 S606에서, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들(HIL_CMDs)을 리오더링된 순서대로 제1 및 제2 코어(136, 138)들로 제공할 수 있다.
본 발명의 실시 예에 따르면, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된, 서로 다른 코어에 연관된 커맨드들 간 커맨드 리오더링을 수행하고, 상기 커맨드 리오더링에 의해 결정된 순서대로 HIL 큐(232)에 큐잉된 커맨드들을 제1 및 제2 코어(136, 138)로 제공할 수 있다. 호스트 인터페이스(132)가 상기 커맨드 리오더링을 수행함으로써 제1 또는 제2 FTL 큐(236, 238)의 적체에 따른 HIL 큐(232)의 적체를 방지하고, 제1 및 제2 코어(136, 138)의 병렬성을 향상시킬 수 있다. 따라서, 메모리 시스템(110)의 성능이 향상될 수 있다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
110: 메모리 시스템
130: 컨트롤러
130: 컨트롤러
Claims (20)
- 복수의 제1 및 제2 메모리 장치들을 제어하는 컨트롤러에 있어서,
제1 논리 주소들과 연관된 데이터를 저장하도록 상기 제1 메모리 장치들을 제어하는 제1 코어;
제2 논리 주소들과 연관된 데이터를 저장하도록 상기 제2 메모리 장치들을 제어하는 제2 코어; 및
호스트로부터 수신된 커맨드들을 큐에 큐잉하고, 상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하고, 상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 호스트 인터페이스
를 포함하는 컨트롤러.
- 제1항에 있어서,
상기 호스트 인터페이스는
상기 제1 및 제2 메모리 장치들 중 아이들(idle) 상태의 메모리 장치가 있는 경우, 상기 제1 및 제2 코어 중 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 상기 커맨드 리오더링을 수행하는
컨트롤러.
- 제2항에 있어서,
상기 호스트 인터페이스는
상기 제1 및 제2 메모리 장치들이 모두 비지(busy) 상태인 경우, 상기 큐에 포함된 제1 주소 커맨드와 제2 주소 커맨드를 인터리브(interleave)함으로써 상기 커맨드 리오더링을 수행하는
컨트롤러.
- 제3항에 있어서,
상기 호스트 인터페이스는
정해진 크기의 데이터를 처리하기 위한 제1 주소 커맨드와 제2 주소 커맨드를 교대로 제공하도록 상기 큐잉된 커맨드들의 처리 순서를 결정함으로써 상기 제1 주소 커맨드와 제2 주소 커맨드를 인터리브하는
컨트롤러.
- 제4항에 있어서,
상기 정해진 크기는 상기 제1 및 제2 코어 중 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초하는
컨트롤러.
- 제1항에 있어서,
상기 호스트 인터페이스는
상기 제1 및 제2 코어 중, 상기 제1 및 제2 메모리 장치들 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 장치를 제어하는 코어에 커맨드가 먼저 제공되도록 상기 커맨드 리오더링을 수행하는
컨트롤러.
- 제1항에 있어서,
상기 호스트 인터페이스는
상기 큐의 모든 엔트리에 커맨드가 큐잉된 경우 상기 커맨드 리오더링을 수행하는
컨트롤러.
- 제1항에 있어서,
상기 호스트 인터페이스는
상기 큐에 큐잉된 제1 주소 커맨드와 연관된 데이터 크기 및 제2 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 상기 커맨드 리오더링을 수행하는
컨트롤러.
- 제1항에 있어서,
상기 호스트 인터페이스는
호스트로부터 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드를 수신하지 못한 경우 상기 커맨드 리오더링을 수행하는
컨트롤러.
- 제1항에 있어서,
상기 호스트 인터페이스는
상기 큐잉된 커맨드들과 연관된 논리 주소들의 모듈로 연산(modulo operation) 결과에 기초하여 상기 논리 주소들을 상기 제1 및 제2 논리 주소들로 분류하는
컨트롤러.
- 제1 논리 주소들과 연관된 데이터를 저장하도록 복수의 제1 메모리 장치들을 제어하는 제1 코어 및 제2 논리 주소들과 연관된 데이터를 저장하도록 복수의 제2 메모리 장치들을 제어하는 제2 코어를 포함하는 컨트롤러의 동작 방법에 있어서,
호스트로부터 수신된 커맨드들을 큐에 큐잉하는 단계;
상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하는 단계; 및
상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 단계
를 포함하는 동작 방법.
- 제11항에 있어서,
상기 커맨드 리오더링을 수행하는 단계는
상기 제1 및 제2 메모리 장치들 중 아이들(idle) 상태의 메모리 장치가 있는 경우, 상기 제1 및 제2 코어 중 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 상기 처리 순서를 결정하는 단계
를 포함하는 동작 방법.
- 제12항에 있어서,
상기 커맨드 리오더링을 수행하는 단계는
상기 제1 및 제2 메모리 장치들이 모두 비지(busy) 상태인 경우, 상기 큐에 포함된 제1 주소 커맨드와 제2 주소 커맨드를 인터리브(interleave)하는 단계
를 더 포함하는 동작 방법.
- 제13항에 있어서,
상기 인터리브하는 단계는
정해진 크기의 데이터를 처리하기 위한 제1 주소 커맨드와 제2 주소 커맨드를 교대로 제공하도록 상기 큐잉된 커맨드들의 처리 순서를 결정하는 단계
를 포함하는 동작 방법.
- 제14항에 있어서,
상기 정해진 크기는 상기 제1 및 제2 코어 중 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초하는
동작 방법.
- 제11항에 있어서,
상기 커맨드 리오더링을 수행하는 단계는
상기 제1 및 제2 코어 중, 상기 제1 및 제2 메모리 장치들 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 장치를 제어하는 코어에 커맨드가 먼저 제공되도록 상기 큐잉된 커맨드들의 처리 순서를 결정하는 단계
를 포함하는 동작 방법.
- 제11항에 있어서,
상기 커맨드 리오더링을 수행하는 단계는
상기 큐의 모든 엔트리에 커맨드가 큐잉된 경우 수행되는
동작 방법.
- 제11항에 있어서,
상기 커맨드 리오더링을 수행하는 단계는
상기 큐에 큐잉된 제1 주소 커맨드와 연관된 데이터 크기 및 제2 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 수행되는
동작 방법.
- 제11항에 있어서,
상기 커맨드 리오더링을 수행하는 단계는
호스트로부터 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드를 수신하지 못한 경우 수행되는
동작 방법.
- 제11항에 있어서,
상기 큐잉된 커맨드들과 연관된 논리 주소들의 모듈로 연산(modulo operation) 결과에 기초하여 상기 논리 주소들을 상기 제1 및 제2 논리 주소들로 분류하는 단계
를 더 포함하는 동작 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200134059A KR20220050407A (ko) | 2020-10-16 | 2020-10-16 | 컨트롤러 및 컨트롤러의 동작방법 |
US17/239,463 US11494318B2 (en) | 2020-10-16 | 2021-04-23 | Controller and operation method thereof |
CN202110637493.XA CN114371812B (zh) | 2020-10-16 | 2021-06-08 | 控制器及其操作方法 |
US17/401,994 US11762590B2 (en) | 2020-09-15 | 2021-08-13 | Memory system and data processing system including multi-core controller for classified commands |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200134059A KR20220050407A (ko) | 2020-10-16 | 2020-10-16 | 컨트롤러 및 컨트롤러의 동작방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220050407A true KR20220050407A (ko) | 2022-04-25 |
Family
ID=81138655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200134059A KR20220050407A (ko) | 2020-09-15 | 2020-10-16 | 컨트롤러 및 컨트롤러의 동작방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11494318B2 (ko) |
KR (1) | KR20220050407A (ko) |
CN (1) | CN114371812B (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220036169A (ko) | 2020-09-15 | 2022-03-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 데이터 처리 시스템 |
US11599304B2 (en) * | 2020-11-16 | 2023-03-07 | Western Digital Technologies, Inc. | Data aggregation in ZNS drive |
TWI822386B (zh) * | 2022-10-11 | 2023-11-11 | 慧榮科技股份有限公司 | 橋接控制晶片與相關的訊號處理方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8880800B2 (en) * | 2011-05-20 | 2014-11-04 | Promise Technology, Inc. | Redundant array of independent disks system with inter-controller communication and method of operation thereof |
US9911477B1 (en) * | 2014-04-18 | 2018-03-06 | Altera Corporation | Memory controller architecture with improved memory scheduling efficiency |
US10019161B2 (en) | 2015-08-31 | 2018-07-10 | Sandisk Technologies Llc | Out of order memory command fetching |
KR102549611B1 (ko) | 2016-04-01 | 2023-06-30 | 삼성전자주식회사 | 스토리지 장치 및 그것의 이벤트 통지 방법 |
JP2018160155A (ja) | 2017-03-23 | 2018-10-11 | 東芝メモリ株式会社 | 記憶装置 |
US10725835B2 (en) | 2017-05-03 | 2020-07-28 | Western Digital Technologies, Inc. | System and method for speculative execution of commands using a controller memory buffer |
US10466904B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
KR20200076491A (ko) * | 2018-12-19 | 2020-06-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20200085967A (ko) * | 2019-01-07 | 2020-07-16 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
KR20200114149A (ko) | 2019-03-27 | 2020-10-07 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11146927B2 (en) * | 2019-08-16 | 2021-10-12 | The Boeing Company | Aircraft to ground data systems and computing methods |
US11269777B2 (en) | 2019-09-25 | 2022-03-08 | Facebook Technologies, Llc. | Systems and methods for efficient data buffering |
-
2020
- 2020-10-16 KR KR1020200134059A patent/KR20220050407A/ko unknown
-
2021
- 2021-04-23 US US17/239,463 patent/US11494318B2/en active Active
- 2021-06-08 CN CN202110637493.XA patent/CN114371812B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US11494318B2 (en) | 2022-11-08 |
US20220121581A1 (en) | 2022-04-21 |
CN114371812A (zh) | 2022-04-19 |
CN114371812B (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11494318B2 (en) | Controller and operation method thereof | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
US11449418B2 (en) | Controller and method for selecting victim block for wear leveling operation | |
US11762590B2 (en) | Memory system and data processing system including multi-core controller for classified commands | |
US11334493B2 (en) | Memory system and operating method thereof | |
US11513948B2 (en) | Controller and memory system | |
KR20210017481A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
KR20200059936A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
US20220155995A1 (en) | Controller and operating method thereof | |
US11922062B2 (en) | Controller and operating method thereof | |
US11675537B2 (en) | Controller for performing data input/output operation and memory management operation at the same time and operation method thereof | |
US20220229595A1 (en) | Controller and operation method thereof | |
US11775209B2 (en) | Controller and operation method thereof | |
US11409444B2 (en) | Memory system and operation method thereof | |
CN109542336B (zh) | 存储设备及其操作方法 | |
CN113778322A (zh) | 存储器***及其操作方法 | |
US11662947B2 (en) | Memory system and data processing system performing operation on commands before fetching of commands | |
KR20200071282A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
US11249686B2 (en) | Controller for handling an abort command using a regeneration queue and operation method thereof | |
US20220156003A1 (en) | Controller and operation method thereof | |
US20220391093A1 (en) | Memory system, data processing system including the same, and operating method thereof | |
KR20210152760A (ko) | 컨트롤러 및 메모리 시스템 |