KR20220139410A - 메모리 서브시스템에 대한 대기열 유지 - Google Patents
메모리 서브시스템에 대한 대기열 유지 Download PDFInfo
- Publication number
- KR20220139410A KR20220139410A KR1020227033726A KR20227033726A KR20220139410A KR 20220139410 A KR20220139410 A KR 20220139410A KR 1020227033726 A KR1020227033726 A KR 1020227033726A KR 20227033726 A KR20227033726 A KR 20227033726A KR 20220139410 A KR20220139410 A KR 20220139410A
- Authority
- KR
- South Korea
- Prior art keywords
- commands
- queue
- memory
- command
- threshold
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 347
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000012545 processing Methods 0.000 claims abstract description 31
- 238000003860 storage Methods 0.000 claims description 24
- 230000002401 inhibitory effect Effects 0.000 claims 3
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000963007 Anelosimus may Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001360 synchronised effect 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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- 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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
메모리 서브시스템에 대한 대기열을 유지하기 위한 데이터 스트림 처리를 위한 방법, 시스템 및 디바이스가 설명된다. 메모리 서브시스템의 메모리 다이의 복수의 대기열들의 대기열에 포함된 커맨드들의 수가 결정될 수 있다. 각각의 대기열은 개별 우선순위 레벨과 연관될 수 있고 커맨드들의 개별 세트를 유지하도록 구성될 수 있다. 대기열에 포함된 커맨드들의 수를 기초로 커맨드가 대기열에 할당될 수 있다. 대기열들의 개별 우선순위 레벨에 기초하여 대기열들로부터 하나 이상의 커맨드들이 발행될 수 있다.
Description
다음은 일반적으로 메모리 서브시스템에 관한 것이며, 보다 구체적으로는 메모리 서브시스템에 대한 대기열(queue)을 유지하는 것에 관한 것이다.
메모리 서브시스템은 데이터를 저장하는 하나 이상의 메모리 디바이스들을 포함할 수 있다. 메모리 디바이스들은, 예를 들어, 비휘발성 메모리 디바이스 및 휘발성 메모리 디바이스일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브시스템을 활용하여 메모리 디바이스에 데이터를 저장하고 메모리 디바이스로부터 데이터를 검색할 수 있다.
본 개시는 이하에 주어진 상세한 설명 및 본 개시의 다양한 예의 첨부 도면으로부터 보다 완전하게 이해될 것이다. 그러나, 도면은 본 개시를 특정 예에 제한하기 위해 취해져서는 안 되며, 단지 설명 및 이해를 위한 것이다.
도 1은 본 개시의 일부 예에 따른 메모리 서브시스템을 포함하는 예시적인 컴퓨팅 시스템을 도시한다.
도 2는 본 개시의 일부 예에 따른 메모리 서브시스템에 대한 대기열을 유지하기 위한 예시적인 방법의 흐름도이다.
도 3a는 본 개시의 일부 예에 따른 메모리 서브시스템의 펌웨어 대기열의 예이다.
도 3b는 본 개시의 일부 예에 따른 메모리 제어기에 대한 글로벌 풀(global pool)의 예이다.
도 4는 본 개시의 일부 예에 따라 대기열을 유지하기 위한 메모리 서브시스템의 예이다.
도 5는 본 개시의 예가 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
도 1은 본 개시의 일부 예에 따른 메모리 서브시스템을 포함하는 예시적인 컴퓨팅 시스템을 도시한다.
도 2는 본 개시의 일부 예에 따른 메모리 서브시스템에 대한 대기열을 유지하기 위한 예시적인 방법의 흐름도이다.
도 3a는 본 개시의 일부 예에 따른 메모리 서브시스템의 펌웨어 대기열의 예이다.
도 3b는 본 개시의 일부 예에 따른 메모리 제어기에 대한 글로벌 풀(global pool)의 예이다.
도 4는 본 개시의 일부 예에 따라 대기열을 유지하기 위한 메모리 서브시스템의 예이다.
도 5는 본 개시의 예가 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태는 메모리 서브시스템의 대기열을 유지하는 것에 관한 것이다. 메모리 서브시스템은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드일 수 있다. 저장 디바이스 및 메모리 모듈의 예는 도 1과 함께 본 명세서에서 설명된다. 일반적으로, 호스트 시스템은 데이터를 저장하는 메모리 디바이스와 같은 하나 이상의 컴포넌트들을 포함하는 메모리 서브시스템을 활용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장될 데이터를 제공할 수 있고 메모리 서브시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 디바이스는 비휘발성 메모리 디바이스일 수 있다. 비휘발성 메모리 디바이스의 한 예는 NAND(negative-and) 메모리 디바이스다. 비휘발성 메모리 디바이스의 다른 예는 도 1과 함께 아래에서 설명된다. 비휘발성 메모리 디바이스는 하나 이상의 다이들의 패키지이다. 각각의 다이는 하나 이상의 평면들로 구성될 수 있다. 평면들은 논리 유닛(LUN)들로 그룹화될 수 있다. 일부 유형의 비휘발성 메모리 디바이스(예를 들어, NAND 디바이스)의 경우, 각각의 평면은 물리적 블록들의 세트로 구성된다. 각각의 블록은 페이지들의 세트로 구성된다. 각각의 페이지는 메모리 셀들("셀들")의 세트로 구성된다. 셀은 정보를 저장하는 전자 회로이다. 이하에서 데이터 블록은 데이터를 저장하는 메모리 디바이스의 유닛을 지칭하며, 메모리 셀들의 그룹, 워드 라인 그룹, 워드 라인 또는 개별 메모리 셀들을 포함할 수 있다.
데이터 동작은 메모리 서브시스템에 의해 수행될 수 있다. 데이터 작업은 호스트 개시형(host-initiated) 동작일 수 있다. 예를 들어, 호스트 시스템은 메모리 서브시스템에서 데이터 동작(예를 들어, 기록, 판독, 소거 등)을 시작할 수 있다. 호스트 시스템은 메모리 서브시스템에 액세스 요청(예를 들어, 기록 커맨드, 판독 커맨드)을 발송하여, 예를 들어 메모리 서브시스템에서 메모리 디바이스에 데이터를 저장하고 메모리 서브시스템의 메모리 디바이스로부터 데이터를 판독할 수 있다.
NAND 셀의 기존 액세스 동작에서, 커맨드는 다양한 메모리 다이들에 지속적으로 송신될 수 있다. 커맨드는 다양한 레벨들의 우선순위(priority)를 갖는 다른 액세스 동작들(예를 들어, 판독 동작, 기록 동작 등)과 연관될 수 있다. 즉, 판독 커맨드 또는 기록 커맨드가 동일한 다이에 송신되기 전에 호스트 판독 커맨드가 특정 메모리 다이에 송신되는 것이 바람직할 수 있다. 그러나 메모리 서브시스템은 많은 다이들을 포함하고 있고 각각의 다이는 여러 커맨드들 및 커맨드 유형들과 연관될 수 있기 때문에, 기존 액세스 동작들은 송신 커맨드들의 우선순위를 효과적으로 지정할 수 없다. 또한, 기존 액세스 동작들은 송신 커맨드들의 우선순위를 효과적으로 지정할 수 없기 때문에, 낮은 우선순위 커맨드들은 높은 우선순위 커맨드보다 먼저 발행될 수 있고, 이는 시스템 리소스(예를 들어, 전력)를 바람직하지 않게 사용할 수 있다. 따라서 기존 액세스 동작들은 시스템 리소스가 상대적으로 낮은 우선순위 동작에 할당되는 결과를 초래할 수 있고, 이는 메모리 서브시스템이 필요할 때 더 높은 우선순위 커맨드를 실행할 수 없도록 한다.
본 개시의 양태는 다이 레벨에서 메모리 서브시스템의 대기열을 유지함으로써 상기 및 다른 결점을 해결한다. 예를 들어, 메모리 서브시스템의 각각의 메모리 다이는 개별 다이와 연관된 커맨드들을 유지하기 위한 대기열(예를 들어, 메모리 다이 대기열)과 연관될 수 있다. 또한, 각각의 메모리 다이 대기열은 특정 우선순위 레벨들과 관련된 커맨드들을 유지하기 위한 다수의 서브대기열들(예를 들어, 우선순위 대기열들)을 포함할 수 있다. 커맨드들은 개별 우선순위 대기열과 연관된 우선순위 레벨에 기초하여 그리고 또한 개별 대기열의 커맨드들의 양에 기초하여 발행될 수 있다. 즉, 대기열의 커맨드들의 수가 임계값을 초과하는 경우, 추가 커맨드들이 대기열에 할당되기 전에 커맨드들이 발행될 수 있다. 따라서 커맨드들은 커맨드와 연관된 우선순위 레벨과 대기열의 커맨드들의 수를 기초로 발행될 수 있다. 일부 예에서, 커맨드들은 로컬 메모리 제어기에 의해 발행될 수 있다.
예를 들어, 메모리 서브시스템의 특정 메모리 다이와 연관된 메모리 다이 대기열은 하나 이상의(예를 들어, 2, 3, 6개) 우선순위 대기열들을 포함할 수 있다. 각각의 우선순위 대기열은 특정 우선순위 레벨과 연관된 커맨드와 연관될 수 있다(예를 들어, 그에 대해 예약됨). 예를 들어, 3개의 우선순위 대기열들이 사용되는 경우, 제1 우선순위 대기열은 제1(예를 들어, 가장 높은, 가장 긴급한) 우선순위 레벨을 갖는 커맨드와 연관될 수 있고, 제2 우선순위 대기열은 제2(예를 들어, 중급, 중간) 우선순위 레벨을 갖는 커맨드와 연관될 수 있으며, 제3 우선순위 대기열은 제3(예를 들어, 가장 낮은, 가장 덜 긴급한) 우선순위 레벨을 갖는 커맨드와 연관될 수 있다. 메모리 다이에 대한 커맨드가 수신되면, 미리 정의될 수 있는 관련 우선순위 레벨에 기초하여 우선순위 대기열에 할당될 수 있다. 따라서, 우선순위가 더 높은 대기열에 있는 커맨드가 더 낮은 우선순위 대기열의 커맨드 전에 발행될 수 있고-즉, 제1 우선순위 대기열의 커맨드가 제2 우선순위 대기열의 커맨드보다 먼저 발행될 수 있다. 더 높은 우선순위 커맨드들이 발행될 때, 커맨드들은 여전히 더 낮은 우선순위 대기열에 할당될 수 있다. 그러나 대기열의 커맨드들의 양이 임계값을 초과하면, 대기열의 커맨드들(예를 들어, 대기열의 모든 커맨드들)은 대기열과 관련된 우선순위 레벨에 관계없이 발행될 수 있다. 커맨드들이 발행되면, 다른(예를 들어, 더 높은 우선순위) 대기열의 커맨드들의 발행이 재개될 수 있다. 이러한 기술은 다이별 또는 시스템 레벨에서 수행될 수 있으며, 둘 모두 단일 대기열에서 많은 양의 커맨드들을 발행하는 데 필요한 시스템 리소스(예를 들어, 전력)를 완화할 수 있다.
도 1은 본 개시의 일부 실시예에 따른 메모리 서브시스템(110)을 포함하는 컴퓨팅 시스템(100)의 예를 도시한다. 메모리 서브시스템(110)은 하나 이상의 비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130)), 하나 이상의 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140)) 또는 이들의 조합과 같은 미디어를 포함할 수 있다.
메모리 서브시스템(110)은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드일 수 있다. 저장 디바이스의 예는 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브, 내장형 멀티미디어 제어기(eMMC) 드라이브, 범용 플래시 저장(UFS) 드라이브, 보안 디지털(SD) 카드 및 하드 디스크 드라이브(HDD)를 포함한다. 메모리 모듈의 예는 듀얼 인라인 메모리 모듈(DIMM), 스몰 아웃라인 DIMM(SO-DIMM) 및 다양한 유형의 비휘발성 DIMM(NVDIMM)을 포함한다.
컴퓨팅 시스템(100)은 데스크탑 컴퓨터, 노트북 컴퓨터, 네트워크 서버, 모바일 디바이스, 차량(예를 들어, 비행기, 무인 항공기, 기차, 자동차 또는 기타 운송 수단), 사물인터넷(IoT) 가능 디바이스, 내장형 컴퓨터(예를 들어, 차량, 산업 장비 또는 네트워크로 연결된 상업용 디바이스에 포함된 컴퓨터), 또는 메모리 및 처리 디바이스를 포함하는 그러한 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스일 수 있다.
컴퓨팅 시스템(100)은 하나 이상의 메모리 시스템(110)에 결합된 호스트 시스템(105)을 포함할 수 있다. 일부 예에서, 호스트 시스템(105)은 상이한 유형의 메모리 시스템(110)에 결합된다. 도 1은 하나의 메모리 서브시스템(110)에 결합된 호스트 시스템(105)의 일례를 도시한다. 본 명세서에 사용된 바와 같이, "에 결합된(coupled to)" 또는 "와 결합된(coupled with)"은 일반적으로 컴포넌트들 간의 연결을 의미하며, 이는 전기, 광학, 자기 등과 같은 연결을 포함하여, 유선이든 무선이든, 간접 통신 연결 또는 직접 통신 연결(예를 들어, 중간에 컴포넌트 없이)이 될 수 있다.
호스트 시스템(105)은 프로세서 칩셋 및 프로세서 칩셋에 의해 실행되는 소프트웨어 스택을 포함할 수 있다. 프로세서 칩셋은 하나 이상의 코어, 하나 이상의 캐시, 메모리 제어기(예를 들어, NVDIMM 제어기) 및 스토리지 프로토콜 제어기(예를 들어, PCIe 제어기, SATA 제어기)를 포함할 수 있다. 호스트 시스템(105)은 예를 들어 메모리 서브시스템(110)을 사용하여 메모리 서브시스템(110)에 데이터를 기록하고 메모리 서브시스템(110)으로부터 데이터를 판독한다.
호스트 시스템(105)은 물리적 호스트 인터페이스를 사용하여 메모리 서브시스템(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예는 SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, USB 인터페이스, 파이버 채널, SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), DDR(double data rate) 메모리 버스, 듀얼 인라인 메모리 모듈(DIMM) 인터페이스(예를 들어, DDR(Double Data Rate)를 지원하는 DIMM 소켓 인터페이스), 개방형 NAND 플래시 인터페이스(ONFI), 이중 데이터 레이트(DDR), LPDDR(Low Power Double Data Rate) 또는 기타 인터페이스 등을 포함하지만 이에 제한되지 않는다. 물리적 호스트 인터페이스는 호스트 시스템(105)과 메모리 서브시스템(110) 사이에서 데이터를 전송하는데 사용될 수 있다. 호스트 시스템(105)은 메모리 서브시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(105)과 결합될 때 컴포넌트(예를 들어, 메모리 디바이스(130))에 액세스하기 위해 비휘발성 메모리 익스프레스(NVMe) 인터페이스를 추가로 활용할 수 있다. 물리적 호스트 인터페이스는 메모리 서브시스템(110)과 호스트 시스템(105) 사이에서 제어, 어드레스, 데이터 및 기타 신호를 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 예로서 메모리 서브시스템(110)을 도시한다. 일반적으로, 호스트 시스템(105)은 동일한 통신 연결, 다중 개별 통신 연결, 및/또는 통신 연결들의 조합을 통해 다중 메모리 서브시스템에 액세스할 수 있다.
메모리 디바이스들(130, 140)은 상이한 유형의 비휘발성 메모리 디바이스 및/또는 휘발성 메모리 디바이스의 임의의 조합을 포함할 수 있다. 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140))는 동적 RAM(DRAM) 및 동기식 동적 RAM(SDRAM)와 같은 랜덤 액세스 메모리(RAM)일 수 있지만 이에 제한되지 않는다.
비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130))의 일부 예는 비휘발성 메모리 셀들의 교차점 어레이인 3차원 교차점("3D 교차점") 메모리와 같은 NAND(negative-and) 유형 플래시 메모리 및 제자리 기록(write-in-place) 메모리를 포함한다. 비휘발성 메모리의 교차점 어레이는 스택형 교차 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 따라 비트 저장을 수행할 수 있다. 또한, 많은 플래시 기반 메모리와 달리, 교차점 비휘발성 메모리는 제자리 기록 동작을 수행할 수 있으며, 여기서, 비휘발성 메모리 셀은 비휘발성 메모리 셀이 사전에 소거되지 않고 프로그래밍될 수 있다. NAND형 플래시 메모리는, 예를 들어 2차원 NAND(2D NAND)와 3차원 NAND(3D NAND)를 포함한다.
메모리 디바이스들(130)의 각각은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 하나의 유형의 메모리 셀, 예를 들어 단일 레벨 셀(SLC)은 셀당 1 비트를 저장할 수 있다. 멀티 레벨 셀(MLC), 트리플 레벨 셀(TLC), 쿼드 레벨 셀(QLC) 및 펜타 레벨 셀(PLC)과 같은 다른 유형의 메모리 셀은 셀당 여러 비트를 저장할 수 있다. 일부 실시예에서, 메모리 디바이스들(130)의 각각은 SLC, MLC, TLC, QLC, 또는 이들의 임의의 조합과 같은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 일부 실시예에서, 특정 메모리 디바이스는 메모리 셀의 SLC 부분, 및 MLC 부분, TLC 부분, QLC 부분 또는 PLC 부분을 포함할 수 있다. 메모리 디바이스(130)의 메모리 셀들은 데이터를 저장하는 데 사용되는 메모리 디바이스의 논리적 유닛을 지칭할 수 있는 페이지 또는 코드워드로 그룹화될 수 있다. 일부 유형의 메모리(예를 들어, NAND)에서는 페이지를 그룹화하여 블록을 형성할 수 있다. 3D 교차점과 같은 일부 유형의 메모리는 관리 단위(MU)를 형성하기 위해 다이들 및 채널들에 걸쳐 페이지들을 그룹화할 수 있다.
NAND 형 플래시 메모리(예를 들어, 2D NAND, 3D NAND) 및 비휘발성 메모리 셀의 3D 교차점 어레이와 같은 비휘발성 메모리 컴포넌트가 설명되지만, 메모리 디바이스(130)는 ROM, 상변화 메모리(PCM), 자기 선택 메모리, 다른 칼코게나이드 기반 메모리, 강유전체 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전체 RAM(FeRAM), 마그네토 RAM(MRAM), 스핀 전달 토크(STT)-MRAM, 전도성 브리지 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), NOR(negative-or) 플래시 메모리 및 전기적으로 소거 가능한 프로그래밍 가능한 ROM(EEPROM)와 같은 임의의 다른 유형의 비휘발성 메모리에 기초할 수 있다.
메모리 서브시스템 제어기(115)(또는 간단히 제어기(115))는 메모리 디바이스들(130)과 통신하여 메모리 디바이스들(130)에서 데이터 판독, 데이터 기록 또는 데이터 소거와 같은 동작 및 기타 그러한 동작들을 수행할 수 있다. 메모리 서브시스템 제어기(115)는 하나 이상의 집적 회로 및/또는 개별 컴포넌트, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 메모리 서브시스템 제어기(115)는 마이크로제어기, 특수 목적 논리 회로(예를 들어, 필드 프로그래밍 가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC), 디지털 신호 프로세서(DSP)), 또는 다른 적절한 프로세서일 수 있다.
메모리 서브시스템 제어기(115)는 로컬 메모리(125)에 저장된 명령어를 실행하도록 구성된 프로세서(120)(예를 들어, 처리 디바이스)를 포함할 수 있다. 예시된 예에서, 메모리 서브시스템 제어기(115)의 로컬 메모리(125)는 메모리 서브시스템(110)과 호스트 시스템(105) 사이의 통신을 처리하는 것을 포함하는 메모리 서브시스템(110)의 동작을 제어하는 다양한 프로세스, 동작, 논리 흐름 및 루틴을 수행하기 위한 명령어를 저장하도록 구성된 내장형 메모리를 포함한다.
일부 예에서, 로컬 메모리(125)는 메모리 포인터, 페치된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(125)는 또한 마이크로 코드를 저장하기 위한 ROM를 포함할 수 있다. 도 1의 예시적인 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)를 포함하는 것으로 도시되었지만, 본 개시의 다른 예에서, 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)를 포함하지 않고, 대신 외부 제어(예를 들어, 외부 호스트에 의해, 또는 메모리 서브시스템과 분리된 프로세서 또는 제어기에 의해 제공됨)에 의존할 수 있다.
일반적으로, 메모리 서브시스템 제어기(115)는 호스트 시스템(105)으로부터 커맨드 또는 동작을 수신할 수 있고, 커맨드 또는 동작을 명령어 또는 적절한 커맨드로 변환하여 메모리 디바이스(130) 및/또는 메모리 디바이스(140)에 대한 원하는 액세스를 달성할 수 있다. 메모리 서브시스템 제어기(115)는 웨어 레벨링 동작, 가비지 수집 절차, 오류 검출 및 오류 정정 코드(ECC) 동작, 암호화 동작, 캐싱 동작 및 메모리 디바이스(130)와 연관된 논리적 어드레스(예를 들어, 논리적 블록 어드레스(LBA), 네임스페이스)와 물리적 어드레스(예를 들어, 물리적 블록 어드레스) 사이의 어드레스 변환과 같은 다른 동작을 담당할 수 있다. 메모리 서브시스템 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(105)과 통신하기 위한 호스트 인터페이스 회로를 더 포함할 수 있다. 호스트 인터페이스 회로는 호스트 시스템으로부터 수신된 커맨드를 메모리 디바이스(130) 및/또는 메모리 디바이스(140)에 액세스하기 위한 커맨드 명령어로 변환할 수 있을 뿐만 아니라 메모리 디바이스(130) 및/또는 메모리 디바이스(140)와 연관된 응답을 호스트 시스템(105)에 대한 정보로 변환할 수 있다.
메모리 서브시스템(110)은 또한 도시되지 않은 추가 회로 또는 컴포넌트를 포함할 수 있다. 일부 예에서, 메모리 서브시스템(110)은 캐시 또는 버퍼(예를 들어, DRAM) 및 메모리 서브시스템 제어기(115)로부터 어드레스를 수신하고 메모리 디바이스(130)에 액세스하기 위해 어드레스를 디코딩할 수 있는 어드레스 회로(예를 들어, 로우 디코더 및 컬럼 디코더)를 포함할 수 있다.
일부 예에서, 메모리 디바이스들(130)는 메모리 디바이스(130)의 하나 이상의 메모리 셀들에 대한 동작을 실행하기 위해 메모리 서브시스템 제어기(115)와 함께 동작하는 로컬 미디어 제어기들(135)을 포함한다. 외부 제어기(예를 들어, 메모리 서브시스템 제어기(115))는 메모리 디바이스(130)를 외부적으로 관리할 수 있다(예를 들어, 메모리 디바이스(130)에 대한 미디어 관리 동작 수행). 일부 실시예에서, 메모리 디바이스(130)는 동일한 메모리 디바이스 패키지 내의 미디어 관리를 위해 로컬 제어기(예를 들어, 로컬 제어기(135))와 결합된 원시 메모리 디바이스인 관리형 메모리 디바이스다. 관리형 메모리 디바이스의 예는 관리형 NAND(MNAND) 디바이스이다.
메모리 서브시스템(110)은 연관된 우선순위 레벨 및 특정 대기열과 연관된 커맨드들의 수에 따라 커맨드들을 관리하는 대기열 관리자(150)를 포함한다. 예를 들어, 메모리 서브시스템(110)의 각각의 메모리 다이(예를 들어, 메모리 디바이스(130), 메모리 디바이스(140))는 메모리 다이 대기열과 연관될 수 있다. 메모리 다이 대기열들은 각각 커맨드들(예를 들어, 판독 커맨드, 기록 커맨드, 호스트 판독 커맨드 등)이 발행을 위해 할당되는 하나 이상의 우선순위 대기열들을 포함할 수 있다. 특정 다이와 관련된 커맨드가 수신될 때, 대기열 관리자(150)는 커맨드와 관련된 우선순위 레벨을 결정할 수 있고(즉, 대기열 관리자(150)는 커맨드의 유형을 결정할 수 있음) 다이와 관련된 우선순위 대기열에 커맨드를 할당할 수 있다. 관련 우선순위 레벨들에 기초하여 개별 우선순위 대기열들로부터 커맨드들이 발행될 수 있다. 따라서, 더 높은 우선순위 레벨을 갖는 대기열들과 연관된 커맨드들은 상대적으로 더 낮은 우선순위 레벨을 갖는 대기열들과 연관된 커맨드들보다 먼저 발행될 수 있다. 그러나 일부 경우에는, 더 높은 우선순위 커맨드들이 발행되는 동안 더 낮은 우선순위 커맨드가 개별 대기열에 누적될 수 있다. 대기열 관리자(150)는 임의의 하나의 대기열에 포함된 커맨드들의 양을 관리(예를 들어, 추적)할 수 있고, 양이 임계값을 초과하는 경우 커맨드들(예를 들어, 대기열의 모든 커맨드들)을 발행할 수 있다. 일단 커맨드들이 발행되면, 대기열 관리자(150)는 그들의 관련된 우선순위 레벨들에 기초하여 커맨드들을 발행하는 것을 재개할 수 있다.
하나의 대기열에 있는 커맨드들의 양은 다이 단위 레벨(예를 들어, 단일 다이와 관련된 우선순위 대기열들의 커맨드들의 수) 또는 전역적으로(예를 들어, 서브시스템의 활성 다이들 수를 기초로 함) 관리될 수 있다. 어느 예에서든, 대기열들이 커맨드들의 임계량을 축적하는 것을 방지하면 대기열에서 커맨드들을 발행하는 데 사용될 수 있는 시스템 리소스(예를 들어, 전력)를 완화할 수 있다.
일부 예에서, 메모리 서브시스템 제어기(115)는 대기열 관리자(150)의 적어도 일부를 포함한다. 예를 들어, 메모리 서브시스템 제어기(115)는 본 명세서에 설명된 동작을 수행하기 위해 로컬 메모리(125)에 저장된 명령어를 실행하도록 구성된 프로세서(120)(예를 들어, 처리 디바이스)를 포함할 수 있다. 일부 예에서, 대기열 관리자(150)는 호스트 시스템(105), 어플리케이션 또는 운영 체제의 일부이다.
도 2는 본 개시의 일부 예에 따른 메모리 서브시스템에 대한 대기열들을 유지하기 위한 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 운영되거나 실행되는 명령어), 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 예에서, 방법(200)은 도 1의 대기열 관리자(150)에 의해 수행된다. 특정한 시퀀스나 순서로 도시되어 있지만, 달리 명시되지 않는 한 프로세스들의 순서는 수정될 수 있다. 따라서, 도시된 예들은 단지 예로서 이해되어야 하며, 도시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수 있다. 또한, 다양한 예에서 하나 이상의 프로세스들이 생략될 수 있다. 따라서 모든 예에서 모든 프로세스들이 필요한 것은 아니다. 다른 방법 흐름이 가능하다.
동작(205)에서, 처리 디바이스는 메모리 서브시스템의 메모리 다이의 복수의 대기열들에 포함된 커맨드들의 수를 결정할 수 있다. 각각의 커맨드는 메모리 서브시스템에서 수행될 개별 동작과 연관될 수 있으며 복수의 대기열들의 각각의 대기열은 개별 우선순위 레벨과 연관될 수 있고 메모리 서브시스템에서 수행될 커맨드들의 개별 세트를 유지하도록 구성될 수 있다.
동작(210)에서, 처리 장치는 대기열에 포함된 커맨드들의 수에 적어도 부분적으로 기초하여 복수의 대기열들의 대기열에 커맨드를 할당할 수 있다.
동작(215)에서, 처리 디바이스는 개별 우선순위 레벨들에 적어도 부분적으로 기초하여 복수의 대기열들의 커맨드들의 개별 세트들로부터 하나 이상의 커맨드들을 발행할 수 있다.
일부 예에서, 방법(200)은 커맨드들의 수가 임계값 미만일 때까지 임계값을 초과하는 커맨드들의 수를 갖는 복수의 대기열들의 각각이 추가 커맨드들을 수락하는 것을 금지하는 단계를 포함할 수 있다.
일부 예에서, 방법(200)은 임계값 미만의 개별 커맨드들의 수를 갖는 각각의 대기열에 하나 이상의 추가 커맨드들을 할당하는 단계 및 개별 우선순위 레벨들에 적어도 부분적으로 기초하여 각각의 대기열로부터 하나 이상의 추가 커맨드들을 발행하는 단계를 포함할 수 있다.
일부 예에서, 방법(200)은 임계값을 초과하는 커맨드들의 수를 갖는 각각의 대기열에 대한 커맨드들 모두를 발행하는 단계를 포함할 수 있다. 각각의 대기열에 하나 이상의 추가 커맨드들을 할당하는 단계는 모든 커맨드들을 발행하는 것에 적어도 부분적으로 기초할 수 있다.
일부 예에서, 방법(200)은 임계값을 초과하는 개별 커맨드들의 수를 갖는 대기열과 연관된 적어도 하나의 커맨드를 메모리 서브시스템의 메모리에 저장하는 단계 및 임계값 아래로 떨어지는 개별 커맨드들의 수에 적어도 부분적으로 기초하여 커맨드를 대기열에 할당하는 단계를 포함할 수 있다.
방법(200)의 일부 예에서, 임계값은 메모리 서브시스템에 대한 동작을 수행하기 위해 이용가능한 메모리 서브시스템의 리소스에 적어도 부분적으로 기초한다.
일부 예에서, 방법(200)은, 메모리 서브시스템의 복수의 메모리 다이들에 대한 대기열들의 세트에, 메모리 서브시스템에서 수행될 동작과 연관된 하나 이상의 커맨드들을 할당하는 단계 및 개별 우선순위 레벨들에 따라 대기열들의 세트로부터 커맨드들을 발행하는 단계를 포함할 수 있다. 대기열들의 세트의 각각의 대기열은 개별 우선순위 레벨과 연관될 수 있다.
일부 예에서, 방법(200)은 메모리 서브시스템의 활성 메모리 다이들의 수를 결정하는 단계 및 활성 메모리 다이들의 수가 임계값을 초과할 때 메모리 서브시스템의 하나 이상의 활성 메모리 다이들이 추가 커맨드를 수락하는 것을 금지하는 단계를 포함할 수 있다.
일부 예에서, 방법(200)은 메모리 서브시스템의 복수의 활성 메모리 다이들이 임계값을 초과한다고 결정하는 단계를 포함할 수 있다. 하나 이상의 활성 메모리 다이들이 추가 커맨드들을 수락하는 것을 금지하는 단계는 하나 이상의 활성 메모리 다이들의 각각과 연관된 커맨드들의 수에 적어도 부분적으로 기초한다.
방법(200)의 일부 예에서, 메모리 다이에 대한 동작을 수행하기 위한 하나 이상의 커맨드들은 판독 커맨드, 기록 커맨드, 호스트 판독 커맨드, 호스트 기록 커맨드, 또는 이들의 조합을 포함한다.
도 3a는 본 개시의 일부 예에 따라 메모리 서브시스템의 대기열들을 유지하는 것을 지원하는 펌웨어 대기열(300-a)의 예를 도시한다. 펌웨어 대기열(300-a)은 각각이 하나 이상의 우선순위 대기열들을 포함하는 복수의 메모리 다이 대기열들(305)(예를 들어, LUN 대기열들(305))를 예시한다. 예를 들어, 제1 메모리 다이 대기열(305)은 우선순위 대기열들(310, 310-a, 310-b)을 포함할 수 있다. 일부 예들에서, 우선순위 대기열(310)은 제1 우선순위 대기열에 대응할 수 있고, 우선순위 대기열(310-a)은 제2 우선순위 대기열에 대응할 수 있고, 우선순위 대기열(310-b)은 제3 우선순위 대기열에 대응할 수 있다. 우선순위 대기열(310)은 특정 커맨드들(예를 들어, 커맨드를 완료하라는 요청)을 포함할 수 있고, 커맨드들은 로컬 메모리 제어기(예를 들어, 플래시 메모리 제어기)에 의해 발행될 수 있다. 일부 예들에서, 로컬 메모리 제어기는 개별 대기열(310)의 우선순위 레벨에 따라 또는 임계값을 초과하는 임의의 하나의 특정 대기열의 커맨드들의 양에 기초하여 커맨드들을 발행할 수 있다. 일부 예에서, 커맨드들은 즉석에서 대기열(310)에 할당될 수 있고, 이는 다른 커맨드들(다른 우선순위 레벨과 연관됨)의 발행이 일시적으로 중단되는 결과를 초래할 수 있다. 특정 대기열이 임계값을 초과하는 커맨드들의 양을 포함하는 것을 방지함으로써, 시스템은 그렇지 않으면 개별 대기열에 포함된 훨씬 더 많은 양의 커맨드들로 인해 발생하는 리소스를 보존할 수 있습니다.
본 명세서에서 논의된 바와 같이, 메모리 다이 대기열(305)은 우선순위 대기열들(310, 310-a, 310-b)을 포함할 수 있고, 이는 제1 우선순위 대기열, 제2 우선순위 대기열 및 제3 우선순위 대기열에 각각 대응할 수 있다. 일부 예들에서, 제1 우선순위 대기열(310)은 가장 높은 우선순위 레벨이 할당될 수 있다(예를 들어, 제2 및 제3 우선순위 대기열들 대비). 우선순위 대기열(310)에 가장 높은 우선순위 레벨을 할당함으로써, 우선순위 대기열(310)에 배치된 연관된 메모리 다이에 관한 임의의 커맨드는 우선순위 대기열들(310-a 및 310-b)의 커맨드들보다 먼저 발행될 수 있다(예를 들어, 로컬 메모리 제어기에 발송됨). 유사하게, 제2 우선순위 대기열(310-a)에 중간 우선순위 레벨이 할당될 수 있다(예를 들어, 제1 및 제3 우선순위 대기열들 대비). 우선순위 대기열(310)에 중간 우선순위 레벨을 할당함으로써, 우선순위 대기열(310-a)에 배치된 연관된 메모리 다이에 관한 임의의 커맨드는 우선순위 대기열(310-b)의 커맨드들보다 먼저 발행될 수 있다. 다른 예들에서, 제3 우선순위 대기열(310-b)에 가장 낮은 우선순위 레벨이 할당될 수 있다(예를 들어, 제1 및 제2 우선순위 대기열들 대비). 우선순위 대기열(310-b)에 가장 낮은 우선순위 레벨을 할당함으로써, 우선순위 대기열(310-b)에 배치된 연관된 메모리 다이에 관한 임의의 커맨드는 우선순위 대기열들(310 및 310-a)이 비어 있는 경우에만 발행될 수 있습니다(예를 들어, 그들은 어떠한 커맨드도 포함하지 않음).
추가적으로 또는 대안적으로, 메모리 다이 대기열(305)의 각각의 우선순위 대기열은 임계값과 연관될 수 있다. 즉, 특정 우선순위 대기열에 있는 커맨드들의 수가 임계값을 초과하면, 시스템은 시스템 리소스를 줄이기 위해 해당 대기열의 하나 이상의(또는 모두) 커맨드들을 발행할 수 있다. 우선순위 대기열로부터 커맨드를 발행하기 위한 임계값을 구현하지 않고, 대기열은 발행될 커맨드들을 계속 수신할 수 있다. 따라서 시스템은 그렇지 않으면 특정 대기열에 누적되었을 커맨드들을 강제로 발행하지 않음으로써 리소스를 절약할 수 있다. 본 명세서에서 논의된 바와 같이, 임계값은 메모리 다이 대기열당(per-memory-die-queue) 또는 우선순위 대기열당(per-priority-queue) 할당될 수 있다. 예를 들어 임계값이 메모리 다이 대기열당 할당된 경우, 메모리 다이 대기열(305)의 제1 우선순위 대기열(310), 제2 우선순위 대기열(310-a), 및 제3 우선순위 대기열(310-b)은 모두 동일한 임계값과 연관될 수 있다. 반대로 임계값이 우선순위 대기열당 할당된 경우, 메모리 다이 대기열(305)의 제1 우선순위 대기열(310), 제2 우선순위 대기열(310-a), 및 제3 우선순위 대기열(310-b)은 모두 상이한 임계값과 연관될 수 있다.
예로서, 제1 메모리 다이 대기열(305)은 우선순위 대기열(310)의 커맨드(328) 및 우선순위 대기열(310-a)의 커맨드들(330 및 330-a)을 포함할 수 있다. 제1 메모리 다이 대기열(305)은 또한 우선순위 대기열(310-b)에 커맨드들(335, 335-a, 335-b)을 포함할 수 있다. 일부 예들에서, 우선순위 대기열들(310, 310-a, 310-b)의 커맨드들의 각각은 상이한 시간들에 수신되는 상이한 커맨드들일 수 있다. 즉, 커맨드들은 그들이 발행될 때 우선순위 대기열들(310, 310-a, 310-b)에 입력될 수 있다. 따라서, 우선순위 대기열(310)은 우선순위 대기열들(310-a, 310-b)보다 높은 우선순위 레벨과 연관될 수 있으므로, 커맨드(328)는 커맨드들(330, 330-a, 335, 335-a, 335-b)보다 먼저 발행될 수 있다.
그러나, 제3 우선순위 대기열(310-b)은 커맨드들(335, 335-a, 335-b)이 커맨드들(328, 330, 330-a) 중 하나 이상 전에 발행되도록 허용할 수 있는 임계값과 연관될 수 있다. 예를 들어, 제3 우선순위 대기열(310-b)에 대한 임계값(메모리 다이 대기열당 또는 우선순위 대기열당 구성에서)은 2개의 커맨드들일 수 있다. 커맨드들(335, 335-a, 335-b)은 제3 우선순위 대기열(310-b)에 동시에 있을 수 있으므로(그리고 동시에 하나 이상의 커맨드들(328, 330, 및/또는 330-a)이 개별 우선순위 대기열에 포함됨), 임계값이 초과될 수 있다. 따라서, 일부 예들에서, 커맨드들(335, 335-a, 335-b)의 각각은 메모리 다이 대기열(305)의 다른 커맨드들 중 임의의 것이 발행되기 전에 발행될 수 있다(예를 들어, 한 번에, 연속적으로 등).
또한, 제3 우선순위 대기열(310-b)의 커맨드들의 양이 임계값을 초과하는 것으로 결정되면, 제3 우선순위 대기열(310-b)이 임의의 추가 커맨드들을 수신하는 것이 일시적으로 방지될 수 있다(즉, 제3 우선순위 대기열(310-b)은 "머킹(mucking)"될 수 있음). 이 시간 동안(예를 들어, 커맨드들의 양을 임계값 아래로 줄이기 위해 커맨드의 양이 발행될 때까지), 제3 우선순위 대기열(310-b)에 할당될 임의의 추가 커맨드들은 메모리 서브시스템의 메모리에 일시적으로 할당될 수 있다. 커맨드들의 양이 임계값 아래로 떨어지면, 메모리 서브시스템의 메모리에 일시적으로 할당된 커맨드(들)는 개별 우선순위 대기열로 이동(예를 들어, 전송)될 수 있다.
일부 예들에서, 제2 메모리 다이 대기열(305-a)은 우선순위 대기열(315-a)에 커맨드들(340, 340-a, 340-b)을 포함할 수 있다. 제2 메모리 다이 대기열(305-a)은 또한 우선순위 대기열(315-b)에 커맨드들(345, 345-a, 345-b)을 포함할 수 있다. 도 3a에 도시된 바와 같이 우선순위 대기열(315)은 일시적으로 비어 있을 수 있지만(예를 들어, 널(NULL)), 하나 이상의 커맨드들을 수신할 수 있다(예를 들어, 후속 시간에, 도시된 것과 다른 시간에). 일부 예들에서, 우선순위 대기열들(315-a, 315-b)의 커맨드들의 각각은 상이한 시간들에 수신되는 상이한 커맨드들일 수 있다. 즉, 커맨드들은 그들이 발행될 때 우선순위 대기열들(315-a, 315-b)에 입력될 수 있다. 일부 예에서, 커맨드들은 제1 메모리 다이 대기열(305)의 우선순위 대기열(310-a, 310-b)에 입력된 커맨드들과 동일하거나 상이한 시간에 입력될 수 있다. 우선순위 대기열(315-a)은 우선순위 대기열(315-b)보다 더 높은 우선순위 레벨과 연관될 수 있기 때문에, 커맨드들(340, 340-a, 340-b)은 커맨드들(345, 345-a, 345-b)보다 먼저 발행될 수 있다.
메모리 다이 대기열(305)과 관련하여 위에서 논의된 바와 같이, 메모리 다이 대기열(305-a)의 각각의 우선순위 대기열은 임계값과 연관될 수 있다. 즉, 특정 우선순위 대기열에 있는 커맨드들의 수가 임계값을 초과하면, 시스템은 시스템 리소스를 줄이기 위해 해당 대기열에서 하나 이상의(또는 모두) 커맨드들을 발행할 수 있다. 본 명세서에서 논의된 바와 같이, 임계값은 메모리 다이 대기열당 또는 우선순위 대기열당 할당될 수 있다. 예를 들어 임계값이 메모리 다이 대기열당 할당된 경우, 메모리 다이 대기열(305-a)의 제1 우선순위 대기열(315), 제2 우선순위 대기열(315-a) 및 제3 우선순위 대기열(315-b)은 모두 동일한 임계값과 연관될 수 있다. 이 임계값은 예를 들어 메모리 다이 대기열(305-a)의 우선순위 대기열과 같거나 다른 임계값일 수 있다. 반대로, 임계값이 우선순위 대기열당 할당된 경우, 메모리 다이 대기열(305-a)의 제1 우선순위 대기열(315), 제2 우선순위 대기열(315-a) 및 제3 우선순위 대기열(315-b)은 모두 상이한 임계값과 연관될 수 있다. 메모리 다이 대기열당 임계값과 마찬가지로 이 임계값은 예를 들어 메모리 다이 대기열(305-a)의 우선순위 대기열과 같거나 다른 임계값일 수 있다.
예를 들어, 제2 메모리 다이 대기열(305-a)은 제2 우선순위 대기열(315-a)의 커맨드들(340, 340-a, 340-b) 및 제2 우선순위 대기열(315-b)의 커맨드들(345, 345-a, 345-b)을 포함할 수 있다. 일부 예들에서, 우선순위 대기열들(315-a, 315-b)의 커맨드들의 각각은 상이한 시간들에 수신되는 상이한 커맨드들일 수 있다. 즉, 커맨드들은 그들이 발행될 때 우선순위 대기열들(315-a, 315-b)에 입력될 수 있다. 따라서, 우선순위 대기열(310-a)은 우선순위 대기열(315-b)보다 더 높은 우선순위 레벨과 연관될 수 있기 때문에, 커맨드들(340, 340-a, 340-b)은 커맨드들(345, 345-a, 345-b)보다 먼저 발행될 수 있다.
그러나, 제3 우선순위 대기열(315-b)은 커맨드들(345, 345-a, 345-b)이 커맨드들(340, 340-a, 340-b) 중 하나 이상 전에 발행되도록 허용할 수 있는 임계값과 연관될 수 있다. 예를 들어, 제3 우선순위 대기열(315-b)에 대한 임계값(메모리 다이 대기열당 또는 우선순위 대기열당 구성에서)은 하나의 커맨드일 수 있다. 커맨드들(345, 345-a, 345-b)은 동시에 제3 우선순위 대기열(315-b)에 있을 수 있으므로(그리고 동시에 하나 이상의 커맨드들(340, 340-a, 340-b)이 제2 우선순위 대기열(315-a)에 포함됨), 임계값이 초과될 수 있다. 따라서, 일부 예들에서, 커맨드들(345, 345-a, 345-b)의 각각은 메모리 다이 대기열(305-a)의 다른 커맨드들 중 임의의 것이 발행되기 전에 발행될 수 있다(예를 들어, 한 번에, 연속적으로 등).
또한, 제3 우선순위 대기열(315-b)에 포함된 커맨드들의 양이 임계값을 초과하는 것으로 결정되면, 제3 우선순위 대기열(315-b)이 임의의 추가 커맨드를 수신하는 것이 일시적으로 방지될 수 있다(즉, 제3 우선순위 대기열(315-b)이 "머킹"될 수 있음). 이 시간 동안(예를 들어, 커맨드들의 양을 임계값 아래로 줄이기 위해 커맨드들의 양이 발행될 때까지), 제3 우선순위 대기열(315-b)에 할당될 임의의 추가 커맨드들은 메모리 서브시스템의 메모리(예를 들어, 도 1의 메모리 서브시스템(110)의 로컬 메모리(125))에 일시적으로 할당될 수 있다. 커맨드들의 양이 임계값 아래로 떨어지면, 메모리 서브시스템의 메모리에 일시적으로 할당된 커맨드(들)는 개별 우선순위 대기열로 이동(예를 들어, 전송)될 수 있다.
일부 예에서, 펌웨어 대기열(300-a)는 또한 제3 메모리 다이 대기열(305-b) 및 제4 메모리 다이 대기열(305-c)을 포함할 수 있다. 제4 메모리 다이 대기열(305)은 또한 펌웨어 대기열(300-a)의 제n 메모리 다이 대기열이거나 이를 나타낼 수 있다. 즉, 펌웨어 대기열(300-a)은 메모리 서브시스템의 메모리 다이들에 대응하는 복수의 메모리 다이 대기열들을 포함할 수 있다. 일부 예에서, 제3 메모리 다이 대기열(305-b) 및 제4 메모리 다이 대기열(305-b)은 각각 커맨드들에 대한 하나 이상의 우선순위 대기열들을 포함할 수 있다. 예를 들어, 제3 메모리 다이 대기열(305-b)은 우선순위 대기열(320-a)의 커맨드들(350, 350-a, 350-b) 및 우선순위 대기열(320-b)의 커맨드들(355, 355-a, 355-b)을 포함할 수 있다. 도 3a에 도시된 바와 같이, 제4 메모리 다이 대기열(305-c)의 우선순위 대기열들은 일시적으로 비어 있을 수 있지만(예를 들어, 널(NULL)), 하나 이상의 커맨드들을 수신할 수 있다(예를 들어, 나중에, 다른 시간에).
메모리 다이 대기열들(305, 305-a)을 참조하여 논의된 바와 같이, 메모리 다이 대기열들(305-b, 305-c)은 개별 우선순위 대기열들과 연관된 우선순위 레벨들에 따라 그리고 임계값을 초과하는 임의의 특정 우선순위 대기열의 커맨드들의 양에 기초하여 커맨드들을 발행할 수 있다. 예를 들어, 커맨드들(350, 350-a 및 350-b)은 우선순위 대기열(320-a)과 연관된 우선순위 레벨로 인해 및/또는 우선순위 대기열(320-a)에서 커맨드들의 양이 임계값을 초과하는 것에 기인하여 커맨드들(355, 355-a 및 355-b)보다 먼저 발행될 수 있다. 다른 예에서, 그리고 본 명세서에서 논의된 바와 같이, 커맨드들(350, 350-a, 350-b)의 발행은 우선순위 대기열(320-b)의 커맨드들의 양이 임계값을 초과하는 경우 일시적으로 중단(예를 들어, 머킹)될 수 있다. 추가적으로 또는 대안적으로, 제3 메모리 다이 대기열(305-b) 및/또는 제4 메모리 다이 대기열(305-c)과 연관된 임계값들은 이용 가능한 시스템 리소스의 양(예를 들어, 메모리 서브시스템에 대해 사용가능한 전력량)에 기초하여 설정될 수 있고 메모리 다이 대기열당 또는 우선순위 대기열당 기준으로 설정될 수 있다.
다른 예들에서, 임계값은 메모리 서브시스템의 활성 메모리 다이들의 수에 기초할 수 있다. 예를 들어, 메모리 서브시스템이 임계값을 초과하는 활성 메모리 다이들의 수를 포함하는 경우, 활성 메모리 다이들의 수가 임계값 아래로 떨어질 때까지 하나 이상의 메모리 다이들이 커맨드를 수신하는 것이 금지될 수 있다(그의 우선순위 레벨에 관계없이). 활성 메모리 다이는 액세스 동작을 겪는 메모리 다이 및/또는 특정 대기열(예를 들어, 특정 우선순위 대기열)의 적어도 하나의 커맨드를 포함하는 임의의 메모리 다이를 지칭할 수 있다. 예를 들어, 활성 메모리 다이의 임계값은 열(10)개의 메모리 다이들일 수 있다. 제11(11번째) 메모리 다이가 활성화되면, 11개의 메모리 다이들 중 적어도 하나는 적어도 하나의 메모리 다이가 비활성 상태로 되돌아갈 때까지 임의의 추가 커맨드를 수신하는 것이 금지될 수 있다(예를 들어, 이는 더 이상 액세스 동작이 적용되지 않거나 및/또는 그의 우선순위 대기열에 더 이상 커맨드를 포함하지 않음). 커맨드 수신이 일시적으로 금지된 메모리 다이에 커맨드를 발송해야 하는 경우, 커맨드는 메모리 서브시스템의 메모리에 임시로 할당될 수 있다. 활성 메모리 다이들의 양이 임계값 아래로 떨어지면, 메모리 서브시스템의 메모리에 일시적으로 할당된 커맨드(들)은 개별 메모리 다이의 대기열로 이동(예를 들어, 전송)될 수 있다.
일부 예에서, 특정 커맨드들은 미리 정의된 우선순위 레벨들과 연관될 수 있다. 예를 들어, 제1 우선순위 레벨(예를 들어, 가장 높은 우선순위 레벨)은 호스트 판독 커맨드와 연관될 수 있다. 즉, 특정 메모리 다이와 관련된 호스트 판독이 발행될 때마다, 이는 특정 다이와 관련된 메모리 다이 대기열의 제1 우선순위 대기열에 할당될 수 있다. 다른 예들에서, 제2 우선순위 레벨(예를 들어, 중간 우선순위 레벨)은 호스트 기록 커맨드, 판독 커맨드, 기록 커맨드, 소거 커맨드, 또는 이들의 조합과 연관될 수 있다. 다른 모든 유형의 커맨드들은 제3(또는 더 낮은) 우선순위 레벨과 연관될 수 있다.
도 3b는 본 개시의 일부 예에 따른 글로벌 풀(327)의 예를 도시한다. 글로벌 풀(327)은 도 3a를 참조하여 논의된 우선순위 대기열들로부터의 하나 이상의 커맨드들을 포함할 수 있다. 즉, 커맨드들을 완료하라는 요청이 우선순위 대기열들로부터 글로벌 풀로 발행(예를 들어, 해제)될 수 있으며, 로컬 메모리 제어기는 풀에 입력되는 순서에 기초하여 연관된 커맨드를 발행할 수 있다. 하나 이상의 커맨드들은 임계값을 초과하는 연관된 우선순위 대기열의 커맨드들의 수를 기초로 발행될 수 있다. 특정 대기열이 임계값을 초과하는 커맨드들의 양을 포함하는 것을 방지함으로써, 시스템은 그렇지 않으면 개별 대기열에 포함된 훨씬 더 많은 양의 커맨드들로 인해 발생하는 리소스를 보존할 수 있다.
일부 예들에서, 글로벌 풀(327)은 도 3a를 참조하여 논의된 커맨드들의 각각을 포함할 수 있다. 커맨드들은 수신된 순서(예를 들어, 개별 메모리 다이 대기열(305)에 의해) 임계값을 초과하는 특정 대기열의 커맨드의 양으로 인해 커맨드들과 연관된 개별 우선순위 레벨, 또는 이들의 조합에 기초하여 글로벌 풀(327)에 입력될 수 있다(예를 들어, 이에 포함될 수 있다). 일부 예에서, 글로벌 풀(327)의 커맨드들은 커맨드들과 연관된 하나 이상의 리소스들(예를 들어, 메모리 어드레스들)에 대응할 수 있다. 즉, 글로벌 풀(327)의 커맨드들은 특정 메모리 셀 또는 메모리 셀들의 그룹에 액세스하기 위해 로컬 메모리 제어기에 의해 발행될 수 있다.
글로벌 풀(327)은 도 3a를 참조하여 논의된 메모리 다이 대기열들(305)의 각각으로부터의 커맨드들을 포함할 수 있다. 예를 들어, 제1 메모리 다이 대기열(305)로부터의 커맨드들(328, 330, 303-a, 335, 335-a, 335-b)은 글로벌 풀(327)에 포함될 수 있다. 추가적으로 또는 대안적으로, 제2 메모리 다이 대기열(305-a)로부터의 커맨드들(340, 340-a, 340-b, 345, 345-a, 345-b)과 뿐만 아니라 제2 메모리 다이 대기열(305-b)로부터의 커맨드들(350, 350-a, 350-b, 355, 355-a, 355-b)이 포함될 수 있다. 커맨드들은 개별 메모리 다이 대기열(305)에서 수신된 순서에 기초하여, 임계값을 초과하는 특정 대기열의 커맨드들의 양으로 인해 커맨드와 연관된 개별 우선순위 레벨에 기초하여, 또는 이들의 조합에 기초하여 글로벌 풀(327)에 입력될 수 있다.
일부 예에서, 제1 메모리 다이 대기열(305)의 제2 우선순위 대기열(310-a)로부터의 커맨드(330)는 글로벌 풀(327)의 제1 커맨드일 수 있다. 커맨드(330)는 더 높은 우선순위와 연관된 임의의 커맨드(예를 들어, 커맨드(328))보다 먼저 수신되기 때문에 글로벌 풀(327)에 입력된 제1 커맨드일 수 있다. 일부 예에서, 커맨드(330)가 먼저 수신되기 때문에 커맨드(330)는 동일한 우선순위 레벨과 연관된 다른 커맨드들(예를 들어, 커맨드들(330-a, 340, 340-a, 340-b, 350, 350-a, 및/또는 350-b))보다 먼저 글로벌 풀(327)에 입력될 수 있다. 달리 말하면, 제2 우선순위 대기열(310-a)은 임의의 다른 메모리 다이 대기열이 동일한(또는 더 높은) 우선순위 레벨을 갖는 커맨드를 수신하고 발행하기 전에 커맨드(330)를 수신할 수 있다.
일부 예들에서, 제2 메모리 다이 대기열(305-a)의 제2 우선순위 대기열(315-a)로부터의 커맨드(340)는 글로벌 풀(327)의 다음(예를 들어, 제2) 커맨드일 수 있다. 커맨드(340)는 커맨드(330) 이후에, 그러나 더 높은 우선순위와 연관된 임의의 커맨드들(예를 들어, 커맨드(328)) 이전에 수신되는 것에 기초하여 글로벌 풀(327)에 입력될 수 있다. 일부 예들에서, 커맨드(340)는 커맨드(340)가 먼저 수신되기 때문에 동일한 우선순위 레벨과 연관된 다른 커맨드들(예를 들어, 커맨드들(330-a, 340, 340-a, 340-b, 350, 350-a 및/또는 350-b))보다 먼저 글로벌 풀(327)에 입력될 수 있다.
일부 예에서, 제1 메모리 다이 대기열(305)의 제2 우선순위 대기열(310-a)로부터의 커맨드(330-a)는 글로벌 풀(327)의 다음 커맨드일 수 있다. 커맨드(330-a)는 커맨드(340) 이후에, 그러나 더 높은 우선순위와 연관된 임의의 커맨드들(예를 들어, 커맨드(328)) 이전에 수신되는 것에 기초하여 글로벌 풀(327)에 입력될 수 있다. 일부 예들에서, 커맨드(330-a)는 커맨드(330-a)가 먼저 수신되기 때문에 동일한 우선순위 레벨과 연관된 다른 커맨드들(예를 들어, 커맨드들(340-a, 340-b, 350, 350-a 및/또는 350-b))보다 먼저 글로벌 풀(327)에 입력될 수 있다.
일부 예에서, 제2 메모리 다이 대기열(305-a)의 제2 우선순위 대기열(315-a)로부터의 커맨드(340-a)는 글로벌 풀(327)의 다음 커맨드일 수 있다. 커맨드(340-a)는 커맨드(350-a) 이후에, 그러나 더 높은 우선순위와 연관된 임의의 커맨드들(예를 들어, 커맨드(328)) 이전에 수신되는 것에 기초하여 글로벌 풀(327)에 입력될 수 있다. 일부 예들에서, 커맨드(340-a)는 커맨드(340-a)가 먼저 수신되기 때문에 동일한 우선순위 레벨과 연관된 다른 커맨드들(예를 들어, 커맨드들(340-a, 340-b, 350, 350-a 및/또는 350-b))보다 먼저 글로벌 풀(327)에 입력될 수 있다.
일부 예에서, 제1 메모리 다이 대기열(305)의 제3 우선순위 대기열(310-b)로부터의 커맨드(335)는 글로벌 풀(327)의 다음 커맨드일 수 있다. 커맨드(335)는 더 높은 우선순위 커맨드들을 포함하는 다른 메모리 다이 대기열이 없을 때 수신되는 것에 기초하여 글로벌 풀에 입력될 수 있다. 일부 예들에서, 커맨드(335)는 커맨드(335)가 먼저 수신되기 때문에 동일한 우선순위 레벨과 연관된 다른 커맨드들(예를 들어, 커맨드들(335-a, 335-b, 345, 345-a, 345-b, 355, 355-a 및/또는 355-b))보다 먼저 글로벌 풀(327)에 입력될 수 있다.
일부 예에서, 제1 메모리 다이 대기열(305)의 제1 우선순위 대기열(310)로부터의 커맨드(328)는 글로벌 풀(327)의 다음 커맨드일 수 있다. 커맨드(328)는 그의 우선순위에만 기초하여 전역 풀(327)에 입력될 수 있다. 예를 들어, 커맨드(328)가 제1(예를 들어, 가장 높은 우선순위)와 연관되기 때문에, 이는 다른 메모리 다이 대기열들이 개별 우선순위 대기열들에 커맨드들을 포함하더라도 글로벌 풀(327)에 입력될 수 있다. 예를 들어, 제1 메모리 다이 대기열(305)은 제2 우선순위 대기열(310-a)의 커맨드들(330, 330-a)을 포함할 수 있다. 그러나, 커맨드(328)의 우선순위로 인해, 커맨드(328)가 먼저(예를 들어, 커맨드들(330 및 330-a) 전에) 발행될 수 있다.
일부 예들에서, 이 시점에서, 메모리 다이 대기열(305-b)의 제2 우선순위 대기열(320-a)에 있는 커맨드들의 양은 임계값을 초과할 수 있다. 예를 들어, 임계값은 두 개(2)의 커맨드들일 수 있고 커맨드들(350, 350-a, 350-b)의 각각은 우선순위 대기열(320-a)에 있을 수 있다. 따라서, 임의의 다른 더 높은 우선순위 커맨드들이 메모리 서브시스템의 임의의 다른 우선순위 대기열들에 있음에도 불구하고 커맨드들(350, 350-a, 350-b)이 발행될 수 있다. 커맨드들이 발행될 때까지, 메모리 다이 대기열(305-b)의 제2 우선순위 대기열(320-a)은 임의의 추가 커맨드를 수신하는 것이 방지될 수 있다. 즉, 우선순위 대기열(320-a)에 포함될 커맨드는 커맨드들(350, 350-a, 350-b)이 발행될 때까지 메모리 서브시스템의 메모리에 임시로 저장될 수 있다. 커맨드들이 발행되고 우선순위 대기열(320)의 커맨드들의 수가 임계값 아래로 떨어지면, 우선순위 대기열(320-a)은 커맨드를 수신하는 것을 재개할 수 있고 글로벌 풀(327)의 다른 커맨드들이 발행될 수 있다. 특정 대기열들이 임계값을 초과하는 커맨드들의 양을 포함하는 것을 방지함으로써, 시스템은 그렇지 않으면 개별 대기열에 포함된 훨씬 더 많은 양의 커맨드들로 인해 발생하는 리소스를 보존할 수 있다.
일부 예에서, 나머지 커맨드들(예를 들어, 커맨드들(340-b, 335-b, 345, 335-a, 345-a, 345-b, 355, 355-a, 355-b))의 각각은 글로벌 풀(327)에 마지막으로 입력될 수 있다. 일부 예에서, 커맨드들은 수신된 순서에 기초하여, 각각의 커맨드의 개별 메모리 다이 대기열과 연관된 우선순위 레벨에 기초하여, 또는 임계값을 초과하는 연관된 우선순위 대기열의 커맨드들의 수에 기초하여 입력될 수 있다. 본 명세서에서 논의된 바와 같이, 글로벌 풀(327)의 각각의 커맨드는 그것이 글로벌 풀(327)에 입력되는 순서에 따라 로컬 메모리 제어기에 의해 발행될 수 있다. 특정 대기열이 임계값을 초과하는 커맨드들의 양을 포함하는 것을 방지함으로써, 시스템은 그렇지 않으면 개별 대기열에 포함된 훨씬 더 많은 양의 커맨드들로 인해 발생하는 리소스를 보존할 수 있다.
도 4는 본 개시의 일부 예에 따라 대기열을 유지하기 위한 메모리 서브시스템(400)의 예를 도시한다. 메모리 서브시스템(400)은 메모리 서브시스템의 메모리 다이들에 송신될 하나 이상의 커맨드들을 포함하는 메일박스(mailbox)(405)를 포함할 수 있다. 커맨드들은 대기열 관리자(410)를 사용하여 개별 메모리 다이 대기열들(415)에 통신(예를 들어, 송신, 발송)될 수 있다. 각각의 메모리 다이 대기열(415)은 우선순위 대기열들(420, 425, 430)과 같은 하나 이상의 우선순위 대기열들을 포함할 수 있고, 이는 도 3a를 참조하여 논의된 바와 같이, 각각 제1 우선순위 대기열, 제2 우선순위 대기열, 및 제3 우선순위 대기열에 대응할 수 있다. 각각의 대기열과 연관된 커맨드들의 양을 결정하기 위해, 스코어보드(scoreboard)(417)는 메모리 서브시스템(400)의 각각의 메모리 다이 대기열(415)의 각각의 우선순위 대기열의 커맨드들의 수를 추적할 수 있다(예를 들어, 스코어보드는 카운트를 유지할 수 있다). 메모리 다이 관리자(435)는 각각의 개별 우선순위 대기열과 연관된 커맨드들을 발행할 수 있고, 커맨드들을 높은 우선순위(440) 또는 보통 우선순위(445)(또는 다른 우선순위 레벨)로 표시할 수 있다. 높은 우선순위(440) 또는 보통 우선순위(445)로 표시된 커맨드들은 로컬 메모리 제어기에 의해 발행될 수 있다.
메일박스(405)는 메모리 서브시스템의 다양한 메모리 다이 대기열들(415)에 송신될 커맨드들의 세트를 보유할 수 있다. 예를 들어, 커맨드들이 수신됨에 따라(예를 들어, 호스트 디바이스로부터), 커맨드들은 메일박스(405)에 저장(예를 들어, 임시 저장)될 수 있다. 대기열 관리자(410)는 메일박스(405)의 커맨드들을 개별 메모리 다이 대기열(415)에 할당할 수 있고, 일부 예에서는 커맨드들과 연관된 우선순위에 기초하여 개별 메모리 다이 대기열(415)의 특정 우선순위 대기열에 할당할 수 있다. 예를 들어, 높은 우선순위 커맨드는 우선순위 대기열(420)에 할당될 수 있고, 중간 우선순위 커맨드는 우선순위 대기열(425)에 할당될 수 있고, 및 다른 커맨드들이 우선순위 대기열(430)(또는 다른 우선순위 대기열)에 할당될 수 있다.
일부 예에서, 대기열 관리자(410)는 스코어보드(417) 및/또는 메모리 다이 관리자(435)와 통신하여 커맨드들이 다양한 우선순위 대기열들 및/또는 메모리 다이들에 할당되는 것을 금지할 수 있다. 예를 들어, 우선순위 대기열이 머킹될 때, 대기열 관리자(410)는 대기열에 있는 커맨드들의 양이 임계값 아래로 떨어질 때까지 해당 대기열에 커맨드를 송신하지 않을 수 있다. 또한, 전체 다이가 머킹될 때(예를 들어, 임계값을 초과하는 활성 메모리 다이들의 수로 인해), 대기열 관리자(410)는 활성 메모리 다이들의 양이 임계값 아래로 떨어질 때까지 하나 이상의 활성 메모리 다이들에 커맨드를 송신하는 것을 억제할 수 있다. 활성 메모리 다이들의 수 및/또는 메모리 서브시스템의 각각의 우선순위 대기열에 포함된 커맨드들의 수는 스코어보드(417)에 의해 관리될 수 있다.
메모리 다이 관리자(435)는 메모리 서브시스템(400)의 다양한 우선순위 대기열들에 포함된 커맨드들을 발행할 수 있다. 본 명세서에서 논의된 바와 같이, 커맨드들은 그들의 개별 우선순위에 기초하여 및/또는 임계값을 초과하는 임의의 하나의 우선순위 대기열에 있는 커맨드들의 양에 기초하여 발행될 수 있다. 추가적으로 또는 대안적으로, 단일 메모리 다이와 연관된 커맨드들은 임계값을 초과하는 메모리 다이들의 활성 양에 기초하여 발행될 수 있다. 하나 이상의 커맨드들이 발행될 때, 메모리 다이 관리자(435)는 커맨드의 유형(예를 들어, 판독 커맨드, 기록 커맨드, 호스트 판독 커맨드, 호스트 기록 커맨드 등)을 결정할 수 있고 커맨드와 관련된 특정 메모리 셀(들)을 결정할 수 있다. 즉, 메모리 다이 관리자(435)는 커맨드를 발행하고 수행하기 위해 리소스(예를 들어, 연관된 메모리 셀들의 어드레스)와 커맨드를 연관시킬 수 있다. 일부 예에서, 메모리 다이 관리자(435)는 임의의 커맨드(들)를 높은 우선순위(440) 또는 보통 우선순위(445)로 지정할 수 있다.
높은 우선순위 커맨드(440)는 그의 우선순위 레벨 및/또는 초과되는 임계값에 기초하여 발행될(예를 들어, 즉시 발행되는) 임의의 커맨드를 포함할 수 있다. 예를 들어, 중간 우선순위 대기열(425)로부터 커맨드들이 발행되는 동안 커맨드가 수신되고 제1우선순위 대기열(420)에 입력되면, 메모리 다이 관리자(435)는 새로 수신된 커맨드를 높은 우선순위 커맨드(440)로 지정할 수 있다. 따라서, 로컬 메모리 제어기는 다른 더 낮은 우선순위 커맨드들(이는 보통 우선순위(445)로 지정될 수 있음)을 발행하기 전에 커맨드를 발행할 수 있다. 유사하게, 활성 메모리 다이들의 임계값 및/또는 우선순위 대기열에 있는 커맨드들의 임계값이 초과되면, 메모리 다이 관리자(435)는 높은 우선순위(440) 커맨드들로서 커맨드들을 연관시킬 수 있다. 따라서, 로컬 메모리 제어기는 다른 더 낮은 우선순위 커맨드들(이는 보통 우선순위(445)로 지정될 수 있음)을 발행하기 전에 커맨드를 발행할 수 있다. 이러한 방식으로 커맨드들을 발행하면 그렇지 않으면 시스템이 각각의 대기열 또는 많은 양의 메모리 다이에 포함되는 훨씬 더 많은 양의 커맨드들로 인해 발생하는 리소스를 보존할 수 있다.
도 5는 본 명세서에 개시된 예에 따라 메모리 서브시스템에 대한 대기열을 유지하는 것을 지원하는 컴퓨터 시스템(500)의 예시적인 머신을 도시한다. 컴퓨터 시스템(500)은 머신이 본 명세서에 설명된 기술 중 임의의 하나 이상을 수행하게 하기 위한 명령어들의 세트를 포함할 수 있다. 일부 예에서, 컴퓨터 시스템(500)은 메모리 서브시스템(예를 들어, 도 1을 참조하여 설명된 메모리 서브시스템(110))을 포함하거나, 이와 결합되거나, 이를 활용하는 호스트 시스템(예를 들어, 도 1을 참조하여 설명된 호스트 시스템(105))에 대응할 수 있거나 제어기의 동작을 수행하기 위해(예를 들어, 도 1을 참조하여 설명된 대기열 관리자(150)에 대응하는 동작을 수행하기 위해 운영 체제를 실행하기 위해) 사용될 수 있다. 일부 예에서, 머신은 근거리 통신망(LAN), 인트라넷, 엑스트라넷, 및/또는 인터넷의 다른 머신에 연결(예를 들어, 네트워크와)될 수 있다. 머신은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신의 용량으로, 피어 투 피어(또는 분산) 네트워크 환경에서 피어 머신, 또는 클라우드 컴퓨팅 인프라 또는 환경에서 서버 또는 클라이언트 머신으로서 동작할 수 있다.
머신은 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인휴대정보비서(PDA), 휴대폰, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신이 취해야 할 조치를 지정하는 명령어 세트(순차적이든 아니든)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신이 예시되어 있지만, "머신"라는 용어는 또한 본 명세서에서 논의된 방법론 중 하나 이상을 수행하기 위해 명령어 세트(또는 다중 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 집합을 포함할 수 있다.
예시적인 컴퓨터 시스템(500)은 버스(545)를 통해 서로 통신하는 처리 디바이스(505), 메인 메모리(510)(예를 들어, ROM, 플래시 메모리, DRAM, 예를 들어 SDRAM 또는 램버스 DRAM(RDRAM) 등), 정적 메모리(515)(예를 들어, 플래시 메모리, 정적 RAM(SRAM) 등), 및 데이터 저장 시스템(525)을 포함할 수 있다.
처리 디바이스(505)는 마이크로프로세서, 중앙 처리 디바이스 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 보다 구체적으로, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서 또는 다른 명령어 세트를 구현하는 프로세서, 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(505)는 또한 ASIC, FPGA, DSP, 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(505)는 본 명세서에서 논의된 동작 및 단계를 수행하기 위한 명령어(535)를 실행하도록 구성된다. 컴퓨터 시스템(500)은 네트워크(540)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(520)를 더 포함할 수 있다.
데이터 저장 시스템(525)은 하나 이상의 명령어 세트(535) 또는 본 명세서에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 소프트웨어가 저장되어 있는 머신 판독 가능 저장 매체(530)(컴퓨터 판독 가능 매체라고도 함)를 포함할 수 있다. 명령어(535)는 또한 컴퓨터 시스템(500)에 의한 실행 동안 메인 메모리(510) 및/또는 처리 디바이스(505) 내에 완전히 또는 적어도 부분적으로 상주할 수 있으며, 메인 메모리(510) 및 처리 디바이스(505)는 또한 머신 판독 가능 저장 매체를 구성한다. 머신 판독 가능 저장 매체(530), 데이터 저장 시스템(525), 및/또는 메인 메모리(510)는 메모리 서브시스템에 대응할 수 있다.
일 예에서, 명령어(535)는 대기열 관리자(550)(예를 들어, 도 1과 관련하여 설명된 대기열 관리자(150))에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 머신 판독 가능 저장 매체(530)는 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "머신 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다중 매체를 포함할 수 있다. "머신 판독 가능 저장 매체"라는 용어는 머신에서 실행하기 위한 명령어 세트를 저장하거나 인코딩할 수 있고 그리고 머신이 본 개시의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함할 수 있다. "머신 판독 가능 저장 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 제한되지 않는다.
이전의 상세한 설명의 일부는 컴퓨터 메모리 내의 데이터 비트에 대한 동작의 알고리즘 및 기호 표현의 관점에서 제시되었다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 기술자가 자신의 작업 내용을 해당 기술 분야의 다른 사람에게 가장 효과적으로 전달하기 위해 사용하는 방법이다. 알고리즘은 본 명세서에서 일반적으로 원하는 결과로 이어지는 자체 일관된 동작 시퀀스로 간주된다. 동작은 물리량의 물리적 조작이 필요한 동작이다. 일반적으로 반드시 그런 것은 아니지만 이러한 양은 저장, 결합, 비교 및 조작할 수 있는 전기 또는 자기 신호의 형태를 취한다. 주로 일반적인 사용을 위해 이러한 신호를 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 지칭하는 것이 때때로 편리한 것으로 입증되었다.
그러나 이러한 모든 용어 및 유사한 용어는 적절한 물리량과 관련되어야 하며 이러한 양에 적용되는 편리한 레이블일 뿐이라는 점을 염두에 두어야 한다. 본 개시는 컴퓨터 시스템의 레지스터와 메모리 내에서 물리적(전자적) 수량으로 표현된 데이터를 컴퓨터 시스템 메모리나 레지스터 또는 기타 정보 저장 시스템 내에서 물리적 수량으로 유사하게 표현된 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스를 참조할 수 있다.
본 개시는 또한 본 명세서의 동작을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성되거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 이에 제한되지 않지만, 플로피 디스크, 광 디스크, CD-ROM 및 광자기 디스크를 포함하는 임의의 유형의 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 컴퓨터 시스템 버스에 각각 결합된 전자 명령어를 저장하는 데 적합한 임의의 유형의 매체와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본 명세서에 제시된 알고리즘 및 디스플레이는 본질적으로 특정 컴퓨터 또는 기타 장치와 관련이 없다. 다양한 범용 시스템이 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리할 수 있다. 이러한 다양한 시스템의 구조는 아래 설명에 설명된 대로 나타난다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에 설명된 바와 같이 본 개시의 교시를 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시는 명령어가 저장된 머신 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있으며, 이는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스)을 프로그래밍하는 데 사용될 수 있다. 머신 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 예에서, 머신 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 머신(예를 들어, 컴퓨터) 판독가능 저장 매체, 예를 들어 ROM, RAM, 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트 등을 포함한다.
전술한 명세서에서, 본 개시의 예들은 그 특정 예시적인 예들을 참조하여 설명되었다. 다음의 청구범위에 기재된 본 개시의 예시의 보다 넓은 사상 및 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.
Claims (20)
- 방법에 있어서,
메모리 서브시스템(memory sub-system)의 메모리 다이(die)의 복수의 대기열(queue)들의 대기열에 포함된 커맨드(command)들의 수를 결정하는 단계-여기서, 각각의 커맨드는 상기 메모리 서브시스템에서 수행될 개별 동작과 연관되며, 상기 복수의 대기열들의 각각의 대기열은 개별 우선순위 레벨(priority level)과 연관되고 상기 메모리 서브시스템에서 수행될 커맨드들의 개별 세트를 유지하도록 구성됨-;
상기 대기열에 포함된 상기 커맨드들의 수에 적어도 부분적으로 기초하여 상기 복수의 대기열들의 상기 대기열에 커맨드를 할당하는 단계; 및
상기 개별 우선순위 레벨들에 적어도 부분적으로 기초하여 상기 복수의 대기열들의 상기 커맨드들의 개별 세트들로부터 하나 이상의 커맨드들을 발행하는 단계를 포함하는, 방법. - 제1항에 있어서,
임계값(threshold value)을 초과하는 커맨드들의 수를 갖는 상기 복수의 대기열들의 각각이 상기 커맨드들의 수가 상기 임계값 미만일 때까지 추가 커맨드들을 수락하는 것을 금지하는 단계를 더 포함하는, 방법. - 제2항에 있어서,
상기 임계값 미만의 개별 커맨드들의 수를 갖는 각각의 대기열에 하나 이상의 추가 커맨드들을 할당하는 단계; 및
상기 개별 우선순위 레벨들에 적어도 부분적으로 기초하여 각각의 대기열로부터 하나 이상의 추가 커맨드들을 발행하는 단계를 더 포함하는, 방법. - 제3항에 있어서,
상기 임계값을 초과하는 커맨드들의 수를 갖는 각각의 대기열에 대해 모든 상기 커맨드들을 발행하는 단계를 더 포함하고, 각각의 대기열에 하나 이상의 추가 커맨드들을 할당하는 단계는 모든 상기 커맨드들을 발행하는 단계에 적어도 부분적으로 기초하는, 방법. - 제2항에 있어서,
상기 임계값을 초과하는 개별 커맨드들의 수를 갖는 대기열과 연관된 적어도 하나의 커맨드를 상기 메모리 서브시스템의 메모리에 저장하는 단계; 및
임계값 아래로 떨어지는 개별 커맨드들의 수에 적어도 부분적으로 기초하여 상기 커맨드를 상기 대기열에 할당하는 단계를 더 포함하는, 방법. - 제2항에 있어서, 상기 임계값은 상기 메모리 서브시스템에 대한 동작을 수행하기 위해 이용가능한 상기 메모리 서브시스템의 리소스에 적어도 부분적으로 기초하는, 방법.
- 제1항에 있어서,
상기 메모리 서브시스템의 복수의 메모리 다이들에 대한 대기열들의 세트에, 상기 메모리 서브시스템에서 수행될 동작과 연관된 하나 이상의 커맨드들을 할당하는 단계-여기서, 상기 대기열들의 세트의 각각의 대기열은 개별 우선순위 레벨과 연관됨-; 및
개별 우선순위 레벨에 따라 상기 대기열들의 세트로부터 커맨드들을 발행하는 단계를 더 포함하는, 방법. - 제7항에 있어서,
상기 메모리 서브시스템의 활성 메모리 다이들의 수를 결정하는 단계; 및
상기 활성 메모리 다이의 수가 임계값을 초과할 때 상기 메모리 서브시스템의 하나 이상의 활성 메모리 다이들이 추가 커맨드들을 수락하는 것을 금지하는 단계를 더 포함하는, 방법. - 제8항에 있어서,
상기 메모리 서브시스템의 복수의 활성 메모리 다이들이 상기 임계값을 초과한다고 결정하는 단계를 더 포함하고, 상기 하나 이상의 활성 메모리 다이들이 추가 커맨드들을 수락하는 것을 금지하는 단계는 상기 하나 이상의 활성 메모리 다이들의 각각과 연관된 커맨드들의 수에 적어도 부분적으로 기초하는, 방법. - 제1항에 있어서, 상기 메모리 다이에 대한 동작을 수행하기 위한 상기 하나 이상의 커맨드들은 판독 커맨드, 기록 커맨드, 호스트 판독 커맨드, 호스트 기록 커맨드, 또는 이들의 조합을 포함하는, 방법.
- 시스템에 있어서,
복수의 메모리 컴포넌트들; 및
상기 복수의 메모리 컴포넌트들과 동작 가능하게 결합되어:
메모리 서브시스템의 메모리 다이의 복수의 대기열들 중 하나에 포함된 커맨드들의 수를 결정하고-여기서, 상기 커맨드들은 상기 메모리 서브시스템에서 수행될 개별 동작과 연관되며, 상기 복수의 대기열들의 각각의 대기열은 개별 우선순위 레벨과 연관되고 상기 메모리 서브시스템에서 수행될 커맨드들의 개별 세트를 유지하도록 구성됨-;
상기 대기열에 포함된 상기 커맨드들의 수에 적어도 부분적으로 기초하여 커맨드를 상기 대기열에 할당하고; 및
상기 개별 우선순위 레벨들에 적어도 부분적으로 기초하여 상기 복수의 대기열들의 상기 커맨드들의 개별 세트들로부터 하나 이상의 커맨드들을 상기 복수의 메모리 컴포넌트들 중 하나 이상으로 송신하는, 처리 디바이스를 포함하는, 시스템. - 제11항에 있어서,
상기 처리 디바이스가 또한:
상기 커맨드들의 수가 임계값을 충족할 때까지 상기 임계값을 초과하는 상기 커맨드들의 수를 갖는 상기 복수의 대기열들의 각각이 추가 커맨드들을 수락하는 것을 금지하는 것을 더 포함하는, 시스템. - 제12항에 있어서,
상기 처리 디바이스가 또한:
상기 임계값을 초과하지 않는 커맨드들의 수를 포함하는 각각의 대기열에 하나 이상의 추가 커맨드들을 할당하고; 및
상기 개별 우선순위 레벨들에 적어도 부분적으로 기초하여 상기 개별 대기열들로부터 상기 하나 이상의 추가 커맨드들을 송신하는 것을 더 포함하는, 시스템. - 제13항에 있어서,
상기 처리 디바이스가 또한:
상기 임계값을 초과하는 상기 커맨드들의 수를 갖는 각각의 대기열과 연관된 모든 상기 커맨드들을 송신하는 것을 더 포함하고, 상기 임계값을 초과하는 상기 커맨드들의 수를 포함하는 각각의 대기열에서 하나 이상의 추가 커맨드들을 추가하는 것은 모든 상기 커맨드를 발행하는 단계에 적어도 부분적으로 기초하는, 시스템. - 제12항에 있어서,
상기 처리 디바이스가 또한:
상기 임계값을 초과하는 상기 커맨드들의 수를 포함하는 대기열과 연관된 적어도 하나의 커맨드를 메모리 컴포넌트에 저장하고; 및
상기 임계값 아래로 떨어지는 개별 대기열의 상기 커맨드들의 수에 적어도 부분적으로 기초하여 상기 커맨드를 상기 대기열에 할당하는 것을 더 포함하는, 시스템. - 명령어(instruction)를 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 명령어는 처리 디바이스에 의해 실행될 때 상기 처리 디바이스로 하여금:
메모리 서브시스템의 메모리 다이의 복수의 대기열들의 대기열에 포함된 커맨드들의 수를 결정하게 하고-여기서, 각각의 커맨드는 상기 메모리 서브시스템에서 수행될 개별 동작과 연관되며, 상기 복수의 대기열들의 각각의 대기열은 개별 우선순위 레벨과 연관되고 상기 메모리 서브시스템에서 수행될 커맨드들의 개별 세트를 유지하도록 구성됨-;
상기 대기열에 포함된 상기 커맨드들의 수에 적어도 부분적으로 기초하여 상기 복수의 대기열들의 상기 대기열에 커맨드를 할당하게 하고; 및
상기 개별 우선순위 레벨들에 적어도 부분적으로 기초하여 상기 복수의 대기열들의 상기 커맨드들의 개별 세트들로부터 하나 이상의 커맨드들을 발행하게 하는, 비일시적 컴퓨터 판독가능 저장 매체. - 제16항에 있어서, 상기 처리 디바이스는 또한:
임계값을 초과하는 커맨드들의 수를 갖는 상기 복수의 대기열들의 각각이 상기 커맨드들의 수가 상기 임계값 미만일 때까지 추가 커맨드들을 수락하는 것을 금지하는, 비일시적 컴퓨터 판독가능 저장 매체. - 제17항에 있어서, 상기 처리 디바이스는 또한:
상기 임계값 미만의 개별 커맨드들의 수를 갖는 각각의 대기열에 하나 이상의 추가 커맨드들을 할당하고; 및
개별 우선순위 레벨들에 적어도 부분적으로 기초하여 각각의 대기열로부터 하나 이상의 추가 커맨드들을 발행하는, 비일시적 컴퓨터 판독가능 저장 매체. - 제18항에 있어서, 상기 처리 디바이스는 또한:
상기 임계값을 초과하는 상기 커맨드들의 수를 갖는 각각의 대기열에 대한 모든 상기 커맨드들을 발행하고, 각각의 대기열에 하나 이상의 추가 커맨드들을 할당하는 것은 모든 상기 커맨드들을 발행하는 것에 적어도 부분적으로 기초하는, 비일시적 컴퓨터 판독가능 저장 매체. - 제17항에 있어서, 상기 처리 장치는 또한:
상기 임계값을 초과하는 개별 커맨드들의 수를 갖는 대기열과 연관된 적어도 하나의 커맨드를 상기 메모리 서브시스템의 메모리에 저장하고; 및
상기 임계값 아래로 떨어지는 개별 커맨드들의 수에 적어도 부분적으로 기초하여 상기 커맨드를 상기 대기열에 할당하는, 비일시적 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/078605 WO2021179164A1 (en) | 2020-03-10 | 2020-03-10 | Maintaining queues for memory sub-systems |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220139410A true KR20220139410A (ko) | 2022-10-14 |
Family
ID=77671121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227033726A KR20220139410A (ko) | 2020-03-10 | 2020-03-10 | 메모리 서브시스템에 대한 대기열 유지 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220413719A1 (ko) |
EP (1) | EP4100825A4 (ko) |
JP (1) | JP2023517080A (ko) |
KR (1) | KR20220139410A (ko) |
CN (1) | CN115427926A (ko) |
WO (1) | WO2021179164A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024144306A1 (ko) * | 2022-12-30 | 2024-07-04 | 주식회사 에스티씨랩 | 디지털 서비스 기반의 접속 통제를 위한 트랜잭션 관리 서버 및 방법 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220082563A (ko) * | 2020-12-10 | 2022-06-17 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
US11966635B2 (en) * | 2022-08-31 | 2024-04-23 | Micron Technology, Inc. | Logical unit number queues and logical unit number queue scheduling for memory devices |
TWI840221B (zh) * | 2023-05-12 | 2024-04-21 | 慧榮科技股份有限公司 | 快閃記憶體控制器及相關的控制方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937205A (en) * | 1995-12-06 | 1999-08-10 | International Business Machines Corporation | Dynamic queue prioritization by modifying priority value based on queue's level and serving less than a maximum number of requests per queue |
US6898679B2 (en) * | 2001-09-28 | 2005-05-24 | Intel Corporation | Method and apparatus for reordering memory requests for page coherency |
US20070174529A1 (en) * | 2005-12-29 | 2007-07-26 | Intel Corporation | Queue manager having a multi-level arbitrator |
US9535627B2 (en) * | 2013-10-02 | 2017-01-03 | Advanced Micro Devices, Inc. | Latency-aware memory control |
JP6448571B2 (ja) * | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
CN107885456B (zh) * | 2016-09-29 | 2022-09-16 | 北京忆恒创源科技股份有限公司 | 减少io命令访问nvm的冲突 |
US10528255B2 (en) * | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Interface for non-volatile memory |
KR20180062247A (ko) * | 2016-11-30 | 2018-06-08 | 삼성전자주식회사 | 효율적인 버퍼 할당을 수행하는 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법 |
US20180173460A1 (en) * | 2016-12-15 | 2018-06-21 | Western Digital Technologies, Inc. | Contention reduction scheduler for nand flash array with raid |
KR20180092435A (ko) * | 2017-02-09 | 2018-08-20 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10466904B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10635617B2 (en) * | 2017-05-19 | 2020-04-28 | Western Digital Technologies, Inc. | Context-aware dynamic command scheduling for a data storage system |
KR102293069B1 (ko) * | 2017-09-08 | 2021-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법 |
US10656872B2 (en) * | 2018-03-15 | 2020-05-19 | Western Digital Technologies, Inc. | Storage device with multi-die management |
US10642746B2 (en) * | 2018-03-22 | 2020-05-05 | Western Digital Technologies, Inc. | Controlling cached/non-cached memory access decisions based on memory access queue fill levels |
US10866764B2 (en) * | 2018-07-23 | 2020-12-15 | SK Hynix Inc. | Memory system with parity cache scheme and method of operating such memory system |
US11023166B2 (en) * | 2018-08-08 | 2021-06-01 | Micron Technology, Inc. | Quality of service control for read operations in memory systems |
KR102694483B1 (ko) * | 2018-08-14 | 2024-08-13 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
US11144240B2 (en) * | 2018-08-24 | 2021-10-12 | Micron Technology, Inc. | Memory sub-system for increasing bandwidth for command scheduling |
US20200089537A1 (en) * | 2019-11-20 | 2020-03-19 | Intel Corporation | Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants |
-
2020
- 2020-03-10 EP EP20924654.5A patent/EP4100825A4/en not_active Withdrawn
- 2020-03-10 CN CN202080099077.2A patent/CN115427926A/zh active Pending
- 2020-03-10 JP JP2022554441A patent/JP2023517080A/ja active Pending
- 2020-03-10 WO PCT/CN2020/078605 patent/WO2021179164A1/en unknown
- 2020-03-10 KR KR1020227033726A patent/KR20220139410A/ko not_active Application Discontinuation
- 2020-03-10 US US16/954,272 patent/US20220413719A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024144306A1 (ko) * | 2022-12-30 | 2024-07-04 | 주식회사 에스티씨랩 | 디지털 서비스 기반의 접속 통제를 위한 트랜잭션 관리 서버 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
CN115427926A (zh) | 2022-12-02 |
JP2023517080A (ja) | 2023-04-21 |
WO2021179164A1 (en) | 2021-09-16 |
EP4100825A1 (en) | 2022-12-14 |
EP4100825A4 (en) | 2023-04-12 |
US20220413719A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11487666B2 (en) | Timed data transfer between a host system and a memory sub-system | |
US11573742B2 (en) | Dynamic data placement for collision avoidance among concurrent write streams | |
US11669272B2 (en) | Predictive data transfer based on availability of media units in memory sub-systems | |
US11782841B2 (en) | Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system | |
KR20220139410A (ko) | 메모리 서브시스템에 대한 대기열 유지 | |
CN113448509A (zh) | 用于服务质量设计的读取计数器 | |
CN115905057A (zh) | 存储器装置中用于媒体管理命令的高效缓冲器管理 | |
CN113093990B (zh) | 存储器子系统处的数据块切换 | |
KR20220114078A (ko) | 캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행 | |
US11829650B2 (en) | Memory sub-system data migration | |
KR20240043148A (ko) | 메모리 디바이스에서 메모리 액세스 커맨드 큐를 사용하는 개선된 메모리 성능 | |
US11693586B2 (en) | Over provisioning component for memory management | |
WO2021179163A1 (en) | Methods, systems and readable storage mediums for managing queues of amemory sub-system | |
CN113253917B (zh) | 用于存储器子系统的媒体管理的多状态炼狱 | |
US12093564B2 (en) | Partition command queues for a memory device | |
US20240176527A1 (en) | Memory device region allocation using lifetime hints | |
US20240028230A1 (en) | Storage Access Communications and Data Placement for Improved Performance and Reduced Write Amplification | |
CN112231252A (zh) | 用于存储器子系统的内部管理业务调节 | |
CN113126899A (zh) | 完全多平面操作启用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |