KR20220137120A - 메모리 서브시스템의 큐를 관리하기 위한 방법, 시스템 및 판독 가능 저장 매체 - Google Patents

메모리 서브시스템의 큐를 관리하기 위한 방법, 시스템 및 판독 가능 저장 매체 Download PDF

Info

Publication number
KR20220137120A
KR20220137120A KR1020227031900A KR20227031900A KR20220137120A KR 20220137120 A KR20220137120 A KR 20220137120A KR 1020227031900 A KR1020227031900 A KR 1020227031900A KR 20227031900 A KR20227031900 A KR 20227031900A KR 20220137120 A KR20220137120 A KR 20220137120A
Authority
KR
South Korea
Prior art keywords
command
queue
commands
memory
priority
Prior art date
Application number
KR1020227031900A
Other languages
English (en)
Inventor
지안강 우
징상 리우
윤 리
제임스 피. 크라울리
Original Assignee
마이크론 테크놀로지, 인크
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크 filed Critical 마이크론 테크놀로지, 인크
Publication of KR20220137120A publication Critical patent/KR20220137120A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Memory System (AREA)

Abstract

메모리 서브시스템의 큐를 관리하기 위한 방법, 시스템 및 디바이스가 설명된다. 제1 커맨드는 메모리 서브시스템의 메모리 다이의 제1 큐에 할당될 수 있다. 제1 큐는 제1 우선순위 레벨과 연관될 수 있고, 메모리 다이는 제1 우선순위 레벨과 상이한 제2 우선순위 레벨과 연관된 제2 큐를 포함할 수 있다. 제2 큐는 제2 커맨드를 포함할 수 있고, 제1 커맨드와 제2 커맨드는 각각 메모리 서브시스템에서 수행될 각각의 동작과 연관된다. 일부 예에서, 제1 커맨드는 제1 및 제2 우선순위 레벨에 기초하여 제2 커맨드보다 먼저 발행될 수 있다.

Description

메모리 서브시스템의 큐를 관리하기 위한 방법, 시스템 및 판독 가능 저장 매체
기술 분야
이하는 일반적으로 메모리 서브시스템에 관한 것이고, 보다 상세하게는 메모리 서브시스템의 큐(queue)를 관리하는 것에 관한 것이다.
메모리 서브시스템은 데이터를 저장하는 하나 이상의 메모리 디바이스를 포함할 수 있다. 메모리 디바이스는, 예를 들어, 비휘발성 메모리 디바이스 및 휘발성 메모리 디바이스일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브시스템을 이용하여 메모리 디바이스에 데이터를 저장하고 메모리 구성요소로부터 데이터를 검색할 수 있다.
본 발명은 이하에 주어진 상세한 설명 및 본 발명의 다양한 실시예의 첨부 도면으로부터 보다 완전하게 이해될 것이다. 그러나, 도면은 본 발명을 특정 실시예로 제한하기 위한 것으로 고려되어서는 안 되며, 본 발명을 단지 설명 및 이해하기 위한 것이다.
도 1은 본 발명의 일부 실시예에 따른 메모리 서브시스템을 포함하는 예시적인 컴퓨팅 시스템을 도시한다.
도 2는 본 발명의 일부 실시예에 따른 메모리 서브시스템의 큐를 관리하기 위한 예시적인 방법의 흐름도이다.
도 3a는 본 발명의 일부 실시예에 따른 메모리 서브시스템의 펌웨어 큐의 일례이다.
도 3b는 본 발명의 일부 실시예에 따른 메모리 제어기에 대한 전역 풀(global pool)의 일례이다.
도 4는 본 발명의 일부 실시예에 따른 큐를 관리하기 위한 메모리 시스템의 일례이다.
도 5는 본 발명의 실시예가 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 발명의 양태는 메모리 서브시스템의 큐를 관리하는 것에 관한 것이다. 메모리 서브시스템은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드일 수 있다. 저장 디바이스와 메모리 모듈의 예는 도 1과 함께 본 명세서에 설명된다. 일반적으로, 호스트 시스템은 데이터를 저장하는 메모리 디바이스와 같은 하나 이상의 구성요소를 포함하는 메모리 서브시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장될 데이터를 제공할 수 있고, 메모리 서브시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 디바이스는 비휘발성 메모리 디바이스일 수 있다. 비휘발성 메모리 디바이스의 일례는 네거티브 AND(NAND) 메모리 디바이스이다. 비휘발성 메모리 디바이스의 다른 예는 도 1과 함께 아래에서 설명된다. 비휘발성 메모리 디바이스는 하나 이상의 다이(die) 패키지이다. 각 다이는 하나 이상의 플레인(plane)으로 구성될 수 있다. 플레인은 논리 유닛(LUN)으로 그룹화될 수 있다. 일부 유형의 비휘발성 메모리 디바이스(예를 들어, NAND 디바이스)의 경우 각 플레인은 물리적 블록 세트로 구성된다. 각 블록은 페이지(page) 세트로 구성된다. 각 페이지는 일련의 메모리 셀("셀")로 구성된다. 셀은 정보를 저장하는 전자 회로이다. 이하에서 데이터 블록은 데이터를 저장하는 데 사용되는 메모리 디바이스의 유닛을 지칭하며, 메모리 셀의 그룹, 워드 라인 그룹, 워드 라인 또는 개별 메모리 셀을 포함할 수 있다.
데이터 동작은 메모리 서브시스템에서 수행될 수 있다. 데이터 동작은 호스트 개시 동작일 수 있다. 예를 들어, 호스트 시스템은 메모리 서브시스템에서 데이터 동작(예를 들어, 기입, 판독, 소거 등)을 개시할 수 있다. 호스트 시스템은 메모리 서브시스템의 메모리 디바이스에 데이터를 저장하고 메모리 서브시스템의 메모리 디바이스로부터 데이터를 판독하기 위해 액세스 요청(예를 들어, 기입 커맨드, 판독 커맨드)을 메모리 서브시스템에 보낼 수 있다.
NAND 셀의 기존의 액세스 동작에서 커맨드는 다양한 메모리 다이에 지속적으로 전송될 수 있다. 커맨드는 다양한 레벨의 우선순위를 갖는 상이한 액세스 동작(예를 들어, 판독 동작, 기입 동작 등)과 연관될 수 있다. 즉, 판독 커맨드 또는 기입 커맨드가 동일한 다이에 전송되기 전에 호스트 판독 커맨드가 특정 메모리 다이에 전송되는 것이 바람직할 수 있다. 그러나, 메모리 서브시스템은 많은 다이를 포함하고 각 다이는 다수의 커맨드 및 커맨드 유형과 연관될 수 있기 때문에 기존의 액세스 동작은 전송 커맨드의 우선순위를 효과적으로 지정할 수 없다. 따라서, 기존의 액세스 동작은 (예를 들어, 발행될 커맨드의 백로그(backlog)로 인해) 메모리 디바이스의 로컬 메모리 제어기에 역압(backpressure)을 초래할 수 있으며, 이는 메모리 서브시스템이 커맨드를 발행하는 데 필요한 자원을 묶어둘 수 있다.
본 발명의 양태는 다이 레벨에서 메모리 서브시스템의 큐를 관리함으로써 상기 결함 및 기타 결함을 해결한다. 예를 들어, 메모리 서브시스템의 각각의 메모리 다이는 각각의 다이와 연관된 커맨드를 관리하기 위한 큐(예를 들어, 메모리 다이 큐)와 연관될 수 있다. 또한, 각각의 메모리 다이 큐는 특정 우선순위 레벨과 연관된 커맨드를 관리하기 위한 다수의 서브 큐(예를 들어, 우선순위 큐)를 포함할 수 있다. 메모리 다이와 연관된 커맨드가 수신되면, 연관된 요청(예를 들어, 커맨드 요청)이 발행을 위해 연관된 메모리 다이 큐(및 관련 우선순위 큐)에 할당될 수 있다. 커맨드와 연관된 우선순위 레벨에 따라 커맨드는 로컬 메모리 제어기에 의해 발행될 수 있다.
예를 들어, 메모리 서브시스템의 특정 메모리 다이와 연관된 메모리 다이 큐는 하나 이상의 (예를 들어, 2개, 3개, 6개의) 우선순위 큐를 포함할 수 있다. 각 우선순위 큐는 특정 우선순위 레벨과 연관된 커맨드와 연관될 수 있다(예를 들어, 커맨드를 위해 예비될 수 있다). 예를 들어 3개의 큐가 사용되는 경우 제1 우선순위 큐는 제1 (예를 들어, 가장 높은; 가장 긴급한) 우선순위 레벨을 갖는 커맨드와 연관될 수 있고, 제2 우선순위 큐는 제2 (예를 들어, 중위; 중간) 우선순위 레벨을 갖는 커맨드와 연관될 수 있고, 제3 우선순위 큐는 제3 (예를 들어, 가장 낮은; 가장 긴급하지 않은) 우선순위 레벨을 갖는 커맨드와 연관될 수 있다. 메모리 다이에 대한 커맨드가 수신되면 이 커맨드에는 미리 정해지거나 (예를 들어, 반영구적으로, 동적으로) 구성될 수 있는 연관된 우선순위 레벨에 따라 우선순위 큐가 할당될 수 있다. 발행을 위해 더 높은 우선순위 큐의 커맨드는 더 낮은 우선순위 큐의 커맨드보다 먼저 발행될 수 있고, 즉, 제1 우선순위 큐의 커맨드는 제2 우선순위 큐의 커맨드보다 먼저 발행될 수 있다. 또한, 낮은 우선순위 큐로부터 커맨드가 발행될 때 높은 우선순위 큐에 커맨드가 할당될 때, 낮은 우선순위 큐의 커맨드의 발행은 높은 우선순위 커맨드를 발행하기 위해 일시적으로 일시 중지(paused)될 수 있다. 높은 우선순위 커맨드가 발행되면, 낮은 우선순위 큐의 커맨드의 발행이 재개될 수 있다. 이러한 기술은 다이별로 수행될 수 있으며(예를 들어, 각 메모리 다이는 각각의 큐 세트(예를 들어, 각 메모리 다이마다 다수의 큐)를 포함할 수 있고), 이는 그렇지 않는 경우 로컬 메모리 제어기가 초래할 수 있는 역압을 감소시켜, 메모리 서브시스템이 이용 가능한 자원에 기초하여 커맨드를 발행할 수 있도록 한다.
도 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)의 일례를 도시한다. 본 명세서에 사용된 "~에 결합된" 또는 "~와 결합된"은 일반적으로 전기, 광학, 자기 등과 같은 연결을 포함하여 유선이든 무선이든 간접 통신 연결 또는 직접 통신 연결(예를 들어, 중간 요소 없는 연결)일 수 있는 구성요소 간의 연결을 말한다.
호스트 시스템(105)은 프로세서 칩셋, 및 이 프로세서 칩셋에 의해 실행되는 소프트웨어 스택을 포함할 수 있다. 프로세서 칩셋은 하나 이상의 코어, 하나 이상의 캐시, 메모리 제어기(예를 들어, NVDIMM 제어기) 및 저장 프로토콜 제어기(예를 들어, PCIe 제어기, SATA 제어기)를 포함할 수 있다. 호스트 시스템(105)은 예를 들어 메모리 서브시스템(110)을 사용하여 메모리 서브시스템(110)에 데이터를 기입하고 메모리 서브시스템(110)으로부터 데이터를 판독한다.
호스트 시스템(105)은 물리적 호스트 인터페이스를 사용하여 메모리 서브시스템(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예로는 직렬 진보된 기술 연결(SATA) 인터페이스, 주변 구성요소 상호 연결 익스프레스(PCIe) 인터페이스, USB 인터페이스, 파이버 채널, 소형 컴퓨터 시스템 인터페이스(SCSI), 직렬 연결 SCSI(SAS), 더블 데이터 레이트(DDR) 메모리 버스, 이중 인라인 메모리 모듈(DIMM) 인터페이스(예를 들어, 더블 데이터 레이트(DDR)를 지원하는 DIMM 소켓 인터페이스), 개방형 NAND 플래시 인터페이스(ONFI), 더블 데이터 레이트(DDR), 저전력 더블 데이터 레이트(LPDDR) 또는 기타 인터페이스를 포함하지만 이들로 제한되지 않는다. 물리적 호스트 인터페이스는 호스트 시스템(105)과 메모리 서브시스템(110) 사이에서 데이터를 전송하는데 사용될 수 있다. 호스트 시스템(105)은 메모리 서브시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(105)과 결합될 때 비휘발성 메모리 익스프레스(NVMe) 인터페이스를 더 이용하여 구성요소(예를 들어, 메모리 디바이스(130))에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브시스템(110)과 호스트 시스템(105) 사이에 제어, 어드레스, 데이터 및 기타 신호를 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 일례로서 메모리 서브시스템(110)을 도시한다. 일반적으로, 호스트 시스템(105)은 동일한 통신 연결, 다중 개별 통신 연결, 및/또는 통신 연결의 조합을 통해 다중 메모리 서브시스템에 액세스할 수 있다.
메모리 디바이스(130, 140)는 상이한 유형의 비휘발성 메모리 디바이스 및/또는 휘발성 메모리 디바이스의 임의의 조합을 포함할 수 있다. 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140))는 동적 RAM(DRAM) 및 동기식 DRAM(SDRAM)과 같은 랜덤 액세스 메모리(RAM)일 수 있지만 이들로 제한되지 않는다.
비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130))의 일부 실시예는 비휘발성 메모리 셀의 교차점 어레이인 3차원 교차점("3D 교차점") 메모리와 같은 제자리 기입형 메모리 및 네거티브 AND(NAND) 유형 플래시 메모리를 포함한다. 비휘발성 메모리의 교차점 어레이는 스택 가능한 교차 그리드형 데이터 액세스 어레이와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가적으로, 많은 플래시 기반 메모리와 대조적으로, 교차점 비휘발성 메모리는 비휘발성 메모리 셀이 사전에 소거되지 않고 비휘발성 메모리 셀이 프로그래밍될 수 있는 제자리 기입 동작을 수행할 수 있다. NAND 유형 플래시 메모리는, 예를 들어, 2차원 NAND(2D NAND)와 3차원 NAND(3D NAND)를 포함한다.
메모리 디바이스(130) 각각은 메모리 셀의 하나 이상의 어레이를 포함할 수 있다. 하나의 유형의 메모리 셀, 예를 들어, 단일 레벨 셀(SLC)은 셀당 1비트를 저장할 수 있다. 다중 레벨 셀(MLC), 즉 3중 레벨 셀(TLC), 4중 레벨 셀(QLC) 및 5중 레벨 셀(PLC)과 같은 다른 유형의 메모리 셀은 셀당 여러 비트를 저장할 수 있다. 일부 실시형태에서, 메모리 디바이스(130) 각각은 SLC, MLC, TLC, QLC, 또는 이들의 임의의 조합과 같은 메모리 셀의 하나 이상의 어레이를 포함할 수 있다. 일부 실시형태에서, 특정 메모리 디바이스는 메모리 셀의 SLC 부분, 및 MLC 부분, 즉 TLC 부분, QLC 부분, 또는 PLC 부분을 포함할 수 있다. 메모리 디바이스(130)의 메모리 셀은 데이터를 저장하는데 사용되는 메모리 디바이스의 논리 유닛을 말할 수 있는 페이지로 그룹화될 수 있다. 일부 유형의 메모리(예를 들어, NAND)에서는 페이지를 그룹화하여 블록을 형성할 수 있다.
NAND형 플래시 메모리(예를 들어, 2D NAND, 3D NAND) 및 비휘발성 메모리 셀의 3D 교차점 어레이와 같은 비휘발성 메모리 구성요소에 대해 설명하지만, 메모리 디바이스(130)는 ROM, 상 변화 메모리(PCM), 자가 선택 메모리, 다른 칼코겐화물 기반 메모리, 강유전체 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전성 RAM(FeRAM), 마그네토 RAM(MRAM), 스핀 전달 토크(STT)-MRAM, 전도성 브리지 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), 네거티브 OR(NOR) 플래시 메모리, 및 전기적으로 소거 가능 프로그래밍 가능 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)는 메모리 디바이스(130)와 연관된 마모 평준화 동작, 가비지 수집 절차, 에러 검출 및 에러 보정 코드(ECC) 동작, 암호화 동작, 캐싱 동작, 및 논리적 어드레스(예를 들어, 논리적 블록 어드레스(LBA), 네임스페이스)와 물리적 어드레스(예를 들어, 물리적 블록 어드레스) 사이의 어드레스 변환과 같은 다른 동작을 담당할 수 있다. 메모리 서브시스템 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(105)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 커맨드를 메모리 디바이스(130) 및/또는 메모리 디바이스(140)에 액세스하기 위한 커맨드 명령어로 변환할 수 있을 뿐만 아니라 메모리 디바이스(130) 및/또는 메모리 디바이스(140)와 연관된 응답을 호스트 시스템(105)을 위한 정보로 변환할 수 있다.
메모리 서브시스템(110)은 또한 도시되지 않은 추가 회로부 또는 구성요소를 포함할 수 있다. 일부 실시예에서, 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)로부터 어드레스를 수신하고 메모리 디바이스(130)에 액세스하기 위해 어드레스를 디코딩할 수 있는 캐시 또는 버퍼(예를 들어, DRAM) 및 어드레스 회로부(예를 들어, 행 디코더 및 열 디코더)를 포함할 수 있다.
일부 예에서, 메모리 디바이스(130)는 메모리 디바이스(130)의 하나 이상의 메모리 셀에 대한 동작을 실행하기 위해 메모리 서브시스템 제어기(115)와 함께 동작하는 로컬 매체 제어기(135)를 포함한다. 외부 제어기(예를 들어, 메모리 서브시스템 제어기(115))는 메모리 디바이스(130)를 외부에서 관리할 수 있다(예를 들어, 메모리 디바이스(130)에 대한 매체 관리 동작을 수행할 수 있다). 일부 실시형태에서, 메모리 디바이스(130)는 동일한 메모리 디바이스 패키지 내 매체를 관리하기 위해 로컬 제어기(예를 들어, 로컬 제어기(135))와 결합된 원시 메모리 디바이스인 관리되는 메모리 디바이스이다. 관리되는 메모리 디바이스의 일례는 관리되는 NAND(MNAND) 디바이스이다.
메모리 서브시스템(110)은 연관된 우선순위 레벨에 따라 커맨드를 관리하는 큐 관리자(150)를 포함한다. 예를 들어, 메모리 서브시스템(110)의 각각의 메모리 다이(예를 들어, 메모리 디바이스(130), 메모리 디바이스(140))는 메모리 다이 큐와 연관될 수 있다. 메모리 다이 큐는 커맨드(예를 들어, 판독 커맨드, 기입 커맨드, 호스트 판독 커맨드 등)가 발행을 위해 할당되는 하나 이상의 우선순위 큐를 각각 포함할 수 있다. 특정 다이와 연관된 커맨드가 수신되면, 큐 관리자(150)는 커맨드와 연관된 우선순위 레벨을 결정하고(예를 들어, 큐 관리자(150)는 커맨드의 유형을 결정할 수 있고) 다이와 연관된 우선순위 큐에 커맨드를 할당할 수 있다. 커맨드는 연관된 우선순위 레벨에 기초하여 각각의 우선순위 큐로부터 발행될 수 있다. 이러한 기술을 사용하면, 더 높은 우선순위 레벨을 갖는 큐와 연관된 커맨드는 상대적으로 더 낮은 우선순위 레벨을 갖는 큐와 연관된 커맨드보다 먼저 발행될 수 있다. 커맨드는 다이마다의 레벨에 기초하여 발행되거나(예를 들어, 다이의 더 높은 우선순위 커맨드가 동일한 다이의 더 낮은 우선순위 커맨드보다 먼저 발행되거나) 또는 전역에 기초하여 발행될 수 있다(예를 들어, 메모리 다이에 관계없이 더 높은 우선순위 커맨드가 더 낮은 우선순위 커맨드보다 먼저 발행될 수 있다). 어느 예에서든, 각각의 커맨드의 우선순위 레벨에 따라 커맨드를 발행하는 것은 메모리 서브시스템 제어기(115)가 초래할 수 있는 역압을 감소시켜, 메모리 서브시스템(110)이 이용 가능한 자원에 기초하여 커맨드를 발행할 수 있도록 한다.
일부 예에서, 메모리 서브시스템 제어기(115)는 큐 관리자(150)의 적어도 일부를 포함한다. 예를 들어, 메모리 서브시스템 제어기(115)는 본 명세서에 설명된 동작을 수행하기 위해 로컬 메모리(125)에 저장된 명령어를 실행하도록 구성된 프로세서(120)(예를 들어, 처리 디바이스)를 포함할 수 있다. 일부 예에서, 큐 관리자(150)는 호스트 시스템(105), 애플리케이션, 또는 운영 체제의 일부이다.
도 2는 본 발명의 일부 예에 따른 메모리 서브시스템의 큐를 관리하기 위한 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 논리 회로, 프로그래밍 가능 논리 회로, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 실행되거나 동작되는 명령어), 또는 이들의 조합을 포함할 수 있는 처리 논리 회로에 의해 수행될 수 있다. 일부 예에서, 방법(200)은 도 1의 큐 관리자(150)에 의해 수행된다. 특정한 시퀀스나 순서로 도시되어 있지만 달리 명시되지 않는 한, 프로세스의 순서는 수정될 수 있다. 따라서, 도시된 예는 단지 예로서 이해되어야 하며, 도시된 프로세스는 다른 순서로 수행될 수 있고, 일부 프로세스는 병렬로 수행될 수 있다. 추가적으로, 하나 이상의 프로세스가 다양한 예에서 생략될 수 있다. 따라서, 모든 예에서 모든 프로세스가 필요한 것은 아니다. 다른 방법 흐름이 가능하다.
동작(205)에서, 처리 디바이스는 도 1의 메모리 서브시스템(110)과 같은 메모리 서브시스템의 메모리 다이의 제1 큐에 제1 커맨드를 할당할 수 있다. 제1 큐는 제1 우선순위 레벨과 연관될 수 있고, 메모리 다이는 제1 우선순위 레벨과 상이한 제2 우선순위 레벨과 연관된 제2 큐를 포함할 수 있다. 제2 큐는 제2 커맨드 및 제1 커맨드를 포함할 수 있고, 제2 커맨드는 메모리 서브시스템에 대해 수행될 각각의 동작과 각각 연관될 수 있다.
동작(210)에서, 처리 디바이스는 제1 및 제2 우선순위 레벨에 적어도 부분적으로 기초하여 제2 커맨드를 발행하기 전에 제1 커맨드를 발행할 수 있다.
일부 예에서, 방법(200)은 제1 큐에 제1 커맨드를 할당하기 전에 제2 큐에서 하나 이상의 제2 커맨드를 발행하는 단계, 및 제1 큐에 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여 제2 큐에서 하나 이상의 제2 커맨드의 발행을 중단(suspending)하는 단계를 포함할 수 있다. 일부 예에서, 제1 커맨드를 발행하는 것은 하나 이상의 제2 커맨드의 발행을 중단한 것에 적어도 부분적으로 기초한다.
일부 예에서, 방법(200)은 제1 커맨드를 발행한 후에 제2 큐에서 하나 이상의 제2 커맨드의 발행을 재개하는 단계를 포함할 수 있다.
일부 예에서, 방법(200)은 제2 큐에서 하나 이상의 제2 커맨드를 발행하는 것을 재개한 후에 제1 큐에 추가 제1 커맨드를 할당하는 단계, 제1 큐에 추가 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여 제2 큐에서 하나 이상의 제2 커맨드의 발행을 중단하는 단계, 하나 이상의 제2 커맨드를 중단한 것에 적어도 부분적으로 기초하여 추가 제1 커맨드를 발행하는 단계, 및 추가 제1 커맨드를 발행한 후에 제2 큐에서 하나 이상의 제2 커맨드의 발행을 재개하는 단계를 포함할 수 있다.
일부 예에서, 제1 큐는 하나 이상의 추가 커맨드를 포함하고, 방법(200)은 제2 큐에서 하나 이상의 제2 커맨드를 발행하기 전에, 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여, 하나 이상의 추가 커맨드를 발행하는 단계를 포함할 수 있다.
일부 예에서, 방법(200)은 메모리 서브시스템의 복수의 메모리 다이의 복수의 제1 큐에 제1 커맨드를 할당하는 단계, 및 제1 및 제2 우선순위 레벨에 적어도 부분적으로 기초하여 복수의 메모리 다이의 각각의 제2 큐에서 커맨드를 발행하기 전에 제1 커맨드 각각을 발행하는 단계를 포함한다. 일부 예에서, 복수의 제1 큐 각각은 제1 우선순위 레벨과 연관되고, 복수의 메모리 다이 각각은 제2 우선순위 레벨과 연관된 각각의 제2 큐를 포함한다.
일부 예에서, 방법(200)은 메모리 서브시스템에 이용 가능한 자원의 양을 결정하는 단계를 포함할 수 있다. 일부 예에서, 제2 큐에서 하나 이상의 제2 커맨드를 발행하기 전에 제1 커맨드를 발행하는 것은 메모리 서브시스템에 이용 가능한 자원의 양에 적어도 부분적으로 기초한다.
방법(200)의 일부 예에서, 제1 커맨드는 호스트 판독 커맨드를 포함하고, 여기서 하나 이상의 제2 커맨드는 호스트 기입 커맨드, 판독 커맨드, 기입 커맨드, 소거 커맨드, 또는 이들의 조합을 포함한다.
도 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)는 제1 우선순위 큐, 제2 우선순위 큐 및 제3 우선순위 큐에 각각 대응할 수 있는 우선순위 큐(310, 310-a, 310-b)를 포함할 수 있다. 일부 예에서, 제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)가 비어 있는 (예를 들어, 커맨드를 전혀 포함하지 않는) 경우에만 발행될 수 있다.
예로서, 제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)보다 먼저 발행될 수 있다.
추가적으로 또는 대안적으로, 커맨드(335, 335-a 및 335-b) 중 하나 이상은 커맨드(328, 330 및/또는 330-a)가 우선순위 큐(310 및 310-a)에 각각 입력되기 전에 우선순위 큐(310-b)에 입력될 수 있다. 우선순위 큐(310-b)의 커맨드는 커맨드가 우선순위 큐(310) 또는 우선순위 큐(310-a) 중 하나에 입력될 때까지 (예를 들어, 개별적으로; 하나씩) 발행될 수 있다. 커맨드가 우선순위 큐(310 또는 310-a) 중 어느 하나에 입력될 때, 우선순위 큐(310-b)의 커맨드는 발행되지 않을 수 있다. 즉, 우선순위 큐(310-b)의 임의의 커맨드는 우선순위 큐(310 및/또는 310-a)의 모든 커맨드가 발행될 때까지 일시 중지(예를 들어, 보류; 중단)될 수 있다. 우선순위 큐(310 및/또는 310-a)의 모든 커맨드를 발행할 때, 우선순위 큐(310-b)의 임의의 커맨드가 발행될 수 있다(또는 계속 발행될 수 있다). 유사하게, 우선순위 큐(310)의 커맨드에는 우선순위 큐(310-a)의 커맨드보다 우선순위가 매겨질 수 있다. 따라서, 우선순위 큐(310-a)의 임의의 커맨드는 우선순위 큐(310)의 모든 커맨드가 발행될 때까지 일시 중지(예를 들어, 보류; 중단)될 수 있다. 커맨드가 충족될 때(예를 들어, 큐로부터의 요청이 로컬 메모리 제어기로 전달될 때), 연관된 커맨드는 도 3b에 도시된 전역 풀에 입력될 수 있다. 전역 풀의 커맨드는 로컬 메모리 제어기에 의해 발행될 수 있다.
일부 예에서, 제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)와 관련하여 위에서 논의된 바와 같이, 커맨드(345, 345-a 및 345-b) 중 하나 이상은 커맨드(340, 340-a 및/또는 340-b)가 우선순위 큐(315-a)에 입력되기 전에 우선순위 큐(315-b)에 입력될 수 있다. 우선순위 큐(315-b)의 커맨드에 있는 커맨드는 커맨드가 우선순위 큐(315-a)에 입력될 때까지 (예를 들어, 개별적으로; 하나씩) 발행될 수 있다. 커맨드는 우선순위 큐(315-a)에 입력되면, 우선순위 큐(315-b)에 있는 커맨드는 발행되지 않을 수 있다. 즉, 우선순위 큐(315-b)의 임의의 커맨드는 우선순위 큐(315-a)의 모든 커맨드가 발행될 때까지 일시 중지(예를 들어, 보류, 중단)될 수 있다. 우선순위 큐(315-a)의 모든 커맨드를 발행할 때, 우선순위 큐(315-b)의 임의의 커맨드가 발행될 수 있다(또는 계속 발행될 수 있다). 본 명세서에서 논의된 바와 같이, 커맨드(예를 들어, 커맨드 요청)가 큐로부터 발행될 때, 커맨드는 도 3b에 도시된 전역 풀에 입력될 수 있다. 전역 풀의 커맨드는 로컬 메모리 제어기에 의해 발행될 수 있다.
일부 실시예에서, 커맨드는 상이한 메모리 다이 큐의 대응하는 우선순위 큐에 입력될 수 있다. 예를 들어, 메모리 다이 큐(305)와 메모리 다이 큐(305-a)는 모두 제1, 제2 및 제3 우선순위 큐를 포함할 수 있다. 따라서, 커맨드는 다이별로 또는 전역으로(예를 들어, 다른 메모리 다이 큐의 대응하는 우선순위 큐에 기초하여) 상이한 메모리 다이 큐의 대응하는 우선순위 큐로부터 발행될 수 있다. 예를 들어, 우선순위 큐(310-a)는 커맨드(330 및 330-a)를 포함할 수 있고, 우선순위 큐(315-a)는 커맨드(340, 340-a 및 340-b)를 포함할 수 있다. 언제든지, 두 우선순위 큐는 하나 이상의 커맨드를 포함할 수 있기 때문에, 커맨드는 다이별로 발행될 수 있고, 예를 들어, 메모리 다이 큐(305)는 자신의 우선순위 큐에 따라 커맨드를 발행할 수 있고, 메모리 다이 큐(305-a)는 자신의 우선순위 큐에 따라 커맨드를 발행할 수 있다. 또는 각각의 커맨드는 커맨드가 각각의 우선순위 큐에 입력된 순서에 기초하여 발행될 수 있고, 예를 들어, 커맨드(330, 330-a, 340, 340-a 및 340-b)는 각 커맨드가 동일한 우선순위 레벨과 연관되기 때문에 각 커맨드가 각각의 우선순위 큐에 입력된 순서에 기초하여 발행될 수 있다.
일부 실시예에서, 펌웨어 큐(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)와 연관된 우선순위 레벨로 인해 커맨드(355, 355-a 및 355-b)보다 먼저 발행될 수 있다. 다른 예에서 그리고 본 명세서에서 논의된 바와 같이, 커맨드(355, 355-a 및 355-b)의 발행은 커맨드가 우선순위 큐(320-a)에 할당될 때 일시적으로 중단(예를 들어, 일시 중지; 보류)될 수 있다. 우선순위 큐(320-a)에서 임의의 커맨드를 발행할 때, 우선순위 큐(320-b)에서 커맨드(예를 들어, 커맨드(355, 355-a 및/또는 355-b))의 발행이 재개될 수 있다. 추가적으로 또는 대안적으로, 제3 메모리 다이 큐(305-b) 및/또는 제4 메모리 다이 큐(305-c)와 연관된 커맨드는 (예를 들어, 다른 메모리 다이 큐의 대응하는 우선순위 큐에 기초하여) 다이별로 또는 전역에서 발행될 수 있다.
일부 실시예에서, 특정 커맨드는 미리 정해진 우선순위 레벨과 연관될 수 있다. 예를 들어, 제1 우선순위 레벨(예를 들어, 가장 높은 우선순위 레벨)은 호스트 판독 커맨드와 연관될 수 있다. 즉, 특정 메모리 다이와 연관된 호스트 판독이 발행될 때마다 호스트 판독은 특정 다이와 연관된 메모리 다이 큐의 제1 우선순위 큐에 할당될 수 있다. 다른 예에서, 제1 우선순위 레벨(예를 들어, 중간 우선순위 레벨)은 호스트 기입 커맨드, 판독 커맨드, 기입 커맨드, 소거 커맨드, 또는 이들의 조합과 연관될 수 있다. 다른 모든 유형의 커맨드는 제3 (또는 더 낮은) 우선순위 레벨과 연관될 수 있다.
도 3b는 본 발명의 일부 실시예에 따른 전역 풀(327)의 일례를 도시한다. 전역 풀(327)은 도 3a를 참조하여 논의된 우선순위 큐로부터의 하나 이상의 커맨드를 포함할 수 있다. 즉, 커맨드를 완료하라는 요청이 우선순위 큐로부터 전역 풀(327)로 발행(예를 들어, 방출)될 수 있고, 로컬 메모리 제어기는 전역 풀(327)에 입력되는 순서에 기초하여 연관된 커맨드를 발행할 수 있다. 수신된 순서로(즉, 커맨드가 수신된 시간 및 각 커맨드의 개별 우선순위에 따라) 전역 풀(327)로부터 커맨드를 발행하면 로컬 메모리 제어기가 초래할 수 있는 역압을 감소시켜, 서브시스템은 이용 가능한 자원에 기초하여 커맨드를 발행할 수 있도록 한다.
일부 예에서, 전역 풀(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)에 입력될 수 있다.
일부 예에서, 제3 메모리 다이 큐(305-b)의 제2 우선순위 큐(320-a)로부터의 커맨드(350)는 전역 풀(327)의 제1 커맨드일 수 있다. 커맨드(350)는 더 높은 우선순위와 연관된 임의의 커맨드(예를 들어, 커맨드(328))보다 먼저 수신되기 때문에 전역 풀(327)에 입력된 제1 커맨드일 수 있다. 일부 예에서, 커맨드(350)는 먼저 수신되는 것으로 인해 커맨드(350)는 동일한 우선순위 레벨과 연관된 다른 커맨드(예를 들어, 커맨드(330, 330-a, 340, 340-a, 340-b, 350-a 및/또는 350-b))보다 먼저 전역 풀(327)에 입력될 수 있다. 달리 말해, 제2 우선순위 큐(320-a)는 임의의 다른 메모리 다이 큐가 동일한(또는 더 높은) 우선순위 레벨을 갖는 커맨드를 수신하고 발행하기 전에 커맨드(350)를 수신할 수 있다.
일부 예에서, 제2 메모리 다이 큐(305-a)의 제2 우선순위 큐(315-a)로부터의 커맨드(340)는 전역 풀(327)에서 그 다음(예를 들어, 제2) 커맨드일 수 있다. 커맨드(340)는 커맨드(350) 이후에 그러나 더 높은 우선순위와 연관된 임의의 커맨드(예를 들어, 커맨드(328)) 이전에 수신되는 것에 기초하여 전역 풀에 입력될 수 있다. 일부 예에서, 커맨드(340)가 먼저 수신되기 때문에 커맨드(340)는 동일한 우선순위 레벨과 연관된 다른 커맨드(예를 들어, 커맨드(330, 330-a, 340, 340-a, 340-b, 350-a 및/또는 350-b))보다 먼저 전역 풀(327)에 입력될 수 있다.
일부 예에서, 제3 메모리 다이 큐(305-b)의 제2 우선순위 큐(320-a)로부터의 커맨드(350-a)는 전역 풀(327)의 다음 커맨드일 수 있다. 커맨드(350-a)는 커맨드(340) 이후에 그러나 더 높은 우선순위와 연관된 임의의 커맨드(예를 들어, 커맨드(328)) 이전에 수신되는 것에 기초하여 전역 풀에 입력될 수 있다. 일부 예에서, 커맨드(350-a)가 먼저 수신되기 때문에 커맨드(350-a)는 동일한 우선순위 레벨과 연관된 다른 커맨드(예를 들어, 커맨드(330, 330-a, 340-a, 340-b, 350-a 및/또는 350-b))보다 먼저 전역 풀(327)에 입력될 수 있다.
일부 예에서, 제2 메모리 다이 큐(305-a)의 제2 우선순위 큐(315-a)로부터의 커맨드(340-a)는 전역 풀(327)의 다음 커맨드일 수 있다. 커맨드(340-a)는 커맨드(350-a) 이후에 그러나 더 높은 우선순위와 연관된 임의의 커맨드(예를 들어, 커맨드(328)) 이전에 수신되는 것에 기초하여 전역 풀에 입력될 수 있다. 일부 예에서, 커맨드(350-a)가 먼저 수신되기 때문에 커맨드(340-a)는 동일한 우선순위 레벨과 연관된 다른 커맨드(예를 들어, 커맨드(330, 330-a, 340-a, 340-b 및/또는 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)는 우선순위에만 기초하여 전역 풀에 입력될 수 있다. 예를 들어, 커맨드(328)가 제1 우선순위 큐(예를 들어, 가장 높은 우선순위)와 연관되기 때문에, 커맨드는 다른 메모리 다이 큐가 각각의 우선순위 큐에 커맨드를 포함하더라도 전역 풀(327)에 입력될 수 있다. 예를 들어, 제1 메모리 다이 큐(305)는 제2 우선순위 큐(310-a)의 커맨드(330 및 330-a)를 포함할 수 있다. 그러나, 커맨드(328)의 우선순위로 인해, 커맨드(328)가 먼저 (예를 들어, 커맨드(330 및 330-a) 전에) 발행될 수 있다.
일부 예에서, 제1 메모리 다이 큐(305)의 제2 우선순위 큐(310-a)로부터의 커맨드(330 및 330-a)는 전역 풀(327)의 다음 커맨드일 수 있다. 커맨드(330 및 330-a)는 커맨드(328) 이후에 그러나 더 높은 우선순위와 연관된 임의의 커맨드(예를 들어, 제1 우선순위 큐의 다른 커맨드) 이전에 수신되는 것에 기초하여 전역 풀에 입력될 수 있다. 일부 예에서, 커맨드(330 및 330-a)가 먼저 수신되기 때문에 커맨드(330 및 330-a)는 동일한 우선순위 레벨과 연관된 다른 커맨드(예를 들어, 커맨드(340-a, 340-b 및/또는 350-b))보다 먼저 전역 풀(327)에 입력될 수 있다.
일부 예에서, 제1 메모리 다이 큐(305)의 제3 우선순위 큐(310-b)로부터의 커맨드(335-a)는 전역 풀(327)의 다음 커맨드일 수 있다. 커맨드(335)는 다른 메모리 다이 큐가 더 높은 우선순위 커맨드를 포함하지 않을 때 수신되는 것에 기초하여 전역 풀에 입력될 수 있다. 일부 예에서, 커맨드(335-a)가 먼저 수신되기 때문에 커맨드(335-a)는 동일한 우선순위 레벨과 연관된 다른 커맨드(예를 들어, 커맨드(335-b, 345, 345-a, 345-b, 355, 355-a 및/또는 355-b))보다 먼저 전역 풀(327)에 입력될 수 있다.
일부 예에서, 제2 메모리 다이 큐(305-a)의 제2 우선순위 큐(315-a)로부터의 커맨드(340-b)는 전역 풀(327)의 다음 커맨드일 수 있다. 커맨드(340-b)는 커맨드(335-a) 이후에 그러나 더 높은 우선순위와 연관된 임의의 커맨드(예를 들어, 제1 우선순위 큐의 다른 커맨드) 이전에 수신되는 것에 기초하여 전역 풀에 입력될 수 있다. 일부 예에서, 커맨드(340-b)가 먼저 수신되는 것으로 인해 커맨드(340-b)는 동일한 우선순위 레벨과 연관된 다른 커맨드(예를 들어, 커맨드(350-b))보다 먼저 전역 풀(327)에 입력될 수 있다.
일부 예에서, 제3 우선순위 큐(310-b 및 315-b)로부터의 커맨드(335-b 및 345)는 전역 풀(327)의 다음 커맨드일 수 있다. 커맨드(335-b 및 345)는 다른 메모리 다이 큐가 더 높은 우선순위 커맨드를 포함하지 않을 때 수신되는 것에 기초하여 전역 풀에 입력될 수 있다. 일부 예에서, 커맨드(335-b 및 345)가 먼저 수신되기 때문에 커맨드(335-b 및 345)는 동일한 우선순위 레벨과 연관된 다른 커맨드(예를 들어, 커맨드(345-a, 345-b, 355, 355-a 및/또는 355-b))보다 먼저 전역 풀(327)에 입력될 수 있다. 일부 예에서, 커맨드(335-b)는 커맨드(345)보다 먼저 수신될 수 있고, 이에 따라 먼저 전역 풀(327)에 입력된다. 다른 예에서, 커맨드(335-b)는 제1 메모리 다이 큐(305)가 제2 메모리 다이 큐(305-a)보다 더 높은 우선순위 레벨과 연관되는 것에 기초하여 또는 동일한 우선순위 큐와 연관된 커맨드의 랜덤 입력에 기초하여 커맨드(345) 전에 수신될 수 있다.
일부 예에서, 제3 메모리 다이 큐(305-b)의 제2 우선순위 큐(320-a)로부터의 커맨드(350-b)는 전역 풀(327)의 다음 커맨드일 수 있다. 커맨드(350-b)는 커맨드(345) 이후에 그러나 더 높은 우선순위와 연관된 임의의 커맨드(예를 들어, 제1 우선순위 큐의 다른 커맨드) 이전에 수신되는 것에 기초하여 전역 풀에 입력될 수 있다. 일부 예에서, 커맨드(350-b)가 먼저 수신되는 것으로 인해 커맨드(350-b)는 동일한 우선순위 레벨과 연관된 임의의 다른 커맨드보다 먼저 전역 풀(327)에 입력될 수 있다.
일부 예에서, 나머지 커맨드(예를 들어, 커맨드(345-a, 345-b, 355, 355-a 및 355-b)) 각각은 전역 풀(327)에 마지막으로 입력될 수 있다. 일부 예에서, 커맨드는 수신된 순서에 기초하여 또는 각각의 커맨드의 각각의 메모리 다이 큐와 연관된 우선순위 레벨에 기초하여 입력될 수 있다. 본 명세서에서 논의된 바와 같이, 전역 풀(327)의 각 커맨드는 풀에 입력되는 순서에 따라 로컬 메모리 제어기에 의해 발행될 수 있다. 이러한 순서로 (예를 들어, 각각의 우선순위 레벨에 따라) 커맨드를 발행하면 그렇지 않은 경우 로컬 메모리 제어기가 초래할 수 있는 역압을 감소시켜, 서브시스템이 이용 가능한 자원에 기초하여 커맨드를 발행할 수 있도록 한다.
도 4는 본 발명의 일부 실시예에 따라 큐를 관리하기 위한 메모리 시스템(400)의 일례를 도시한다. 메모리 시스템(400)은 호스트 디바이스(410)와 결합된 메모리 서브시스템(405)을 포함할 수 있다. 일부 예에서, 호스트 디바이스(410)는 프로세서(415)를 통해 메모리 서브시스템(405)과 통신할 수 있다. 호스트 디바이스(410)는 또한 메모리 서브시스템(405)과 통신할 수 있는 판독 관리자(420)(예를 들어, 판독 IO 관리자) 및/또는 기입 관리자(425)(예를 들어, 기입 IO 관리자)와 통신할 수 있다. 즉, 호스트 디바이스(410)는 프로세서(415), 판독 관리자(420), 및/또는 기입 관리자(425)를 통해 메모리 서브시스템(405)과 결합될 수 있다. 일부 예에서, 메모리 서브시스템(405)은 하나 이상의 수신 구성요소(예를 들어, 수신 구성요소(430, 430-a, 430-b)), 메모리 다이 관리자(435)(예를 들어, LUN 관리자), 우선순위 관리자(440), 및 하나 이상의 메모리 다이에 대응하는 메모리 다이 큐(445 및 455)를 포함할 수 있다. 일부 예에서, 메모리 서브시스템은 2개보다 많은 메모리 다이(및 이후 2개보다 많은 메모리 다이 큐)를 포함할 수 있다. 각각의 메모리 다이 큐는 도 3a 및 도 3b를 참조하여 논의된 우선순위 큐의 예일 수 있는 우선순위 큐(예를 들어, 우선순위 큐(450, 460))를 포함할 수 있다. 일부 예에서, 우선순위 큐(450 및 460)는 연관된 우선순위에 따라 커맨드(예를 들어, 연관된 커맨드를 완료하라는 요청)를 발행할 수 있다. 요청은 전역 풀(465)에 입력될 수 있으며, 여기서 로컬 메모리 제어기는 연관 커맨드를 발행할 수 있다. 전역 풀(465)은 도 3b를 참조하여 논의된 바와 같은 전역 풀(327)의 일례일 수 있다.
호스트 디바이스(410)는 프로세서(415)를 통해 메모리 서브시스템(405)과 통신할 수 있다. 일부 예에서, 호스트 디바이스(410)는 메모리 서브시스템(405)에 하나 이상의 커맨드(예를 들어, 호스트 판독, 호스트 기입)를 전송할 수 있다. 커맨드는 메모리 서브시스템(405)의 특정 메모리 셀(예를 들어, 메모리 셀의 블록, 메모리 다이 등)과 연관될 수 있고, 이에 따라 본 명세서에 논의된 바와 같이 우선순위가 매겨질 수 있다. 일부 예에서, 판독 관리자(420)는 메모리 서브시스템(405)의 판독 동작(예를 들어, 내부 판독 동작)을 관리할 수 있고, 기입 관리자(425)는 메모리 서브시스템(405)의 기입 동작(예를 들어, 내부 기입 동작)을 관리할 수 있다. 판독 관리자(420)와 기입 관리자(425)는 각각 호스트 디바이스(410) 및/또는 프로세서(415)와 통신할 수 있다.
커맨드는 메모리 서브시스템(405)의 수신 구성요소(예를 들어, 수신 구성요소(430, 430-a, 및/또는 430-b))에 의해 수신될 수 있다. 위에서 논의된 바와 같이, 커맨드는 호스트 디바이스(410), 판독 관리자(420), 및/또는 기입 관리자(425)로부터 수신될 수 있다. 수신 구성요소(들)는 수신된 커맨드(들)를 메모리 다이 관리자(435)에 전달(예를 들어, 전송 또는 송신)할 수 있다. 일부 예에서, 메모리 다이 관리자(435)는 커맨드와 연관된 특정 메모리 다이를 결정할 수 있다. 즉, 메모리 다이 관리자(435)는 수신된 커맨드와 연관된 메모리 어드레스를 결정할 수 있다. 메모리 다이 관리자(435)는 수신된 커맨드와 연관된 메모리 어드레스를 우선순위 관리자(440)에 전달(예를 들어, 전송)할 수 있다.
우선순위 관리자(440)는 커맨드와 연관된 우선순위 레벨을 결정할 수 있다. 본 명세서에서 논의된 바와 같이, 특정 커맨드(예를 들어, 호스트 판독 커맨드)는 제1 우선순위 레벨과 연관될 수 있고, 다른 커맨드(예를 들어, 호스트 기입 커맨드, 판독 커맨드, 기입 커맨드, 소거 커맨드 등)는 상이한 우선순위 레벨과 연관될 수 있다. 커맨드의 우선순위 레벨은 커맨드가 입력될 수 있는 (메모리 다이 큐의) 우선순위 큐를 결정할 수 있다. 따라서 메모리 다이 관리자(435)와 우선순위 관리자(440)는 커맨드와 연관된 메모리 다이(예를 들어, 메모리 다이의 어드레스)를 결정할 수 있고, 커맨드가 특정 다이와 연관된 올바른 우선순위 큐에 입력되는 것을 보장할 수 있다. 예를 들어, 커맨드는 우선순위 큐(450 또는 460) 중 하나에 입력될 수 있다.
메모리 다이 큐(445 및 455)는 각각 하나 이상의 우선순위 큐를 포함할 수 있다. 예를 들어, 메모리 다이 큐(445)의 우선순위 큐(450)는 도 3a를 참조하여 논의된 바와 같이 다수의 우선순위 큐를 나타낼 수 있다. 유사하게, 메모리 다이 큐(455)의 우선순위 큐(460)는 도 3a를 참조하여 논의된 바와 같이 다수의 우선순위 큐를 나타낼 수 있다. 도 4에 도시된 바와 같이, 우선순위 큐(450)는 각각 1개, 2개 및 3개의 커맨드를 포함하는 3개의 우선순위 큐(예를 들어, 제1, 제2 및 제3 우선순위 큐)를 포함할 수 있다. 추가적으로 또는 대안적으로, 우선순위 큐(460)는 각각 0개, 2개, 및 3개의 커맨드를 포함하는 3개의 우선순위 큐(예를 들어, 제1, 제2 및 제3 우선순위 큐)를 포함할 수 있다. 커맨드는 각각의 커맨드의 각각의 우선순위 레벨에 따라 그리고/또는 커맨드가 각각의 우선순위 큐에 입력되는 순서에 따라 발행(예를 들어, 방출)될 수 있다. 요청(예를 들어, 커맨드)이 방출되면 요청은 전역 풀(465)에 입력될 수 있으며, 여기서 요청은 로컬 메모리 제어기에 의해 발행될 수 있다. 수신된 순서로 (즉, 커맨드를 수신한 시간 및 각 커맨드의 우선순위에 따라) 전역 풀(465)로부터 커맨드를 발행하면 그렇지 않은 경우 로컬 메모리 제어기가 초래할 수 있는 역압을 감소시켜, 서브시스템이 이용 가능한 자원에 기초하여 커맨드를 발행할 수 있도록 한다.
도 5는 본 명세서에 개시된 예에 따른 메모리 서브시스템의 큐를 관리하는 것을 지원하는 컴퓨터 시스템(500)의 예시적인 기계를 도시한다. 컴퓨터 시스템(500)은 기계로 하여금 본 명세서에 설명된 기술 중 임의의 하나 이상을 수행하게 하기 위한 명령어 세트를 포함할 수 있다. 일부 예에서, 컴퓨터 시스템(500)은 메모리 서브시스템(예를 들어, 도 1을 참조하여 설명된 메모리 서브시스템(110))을 포함하거나, 메모리 서브시스템과 결합되거나, 메모리 서브시스템을 이용하는 호스트 시스템(예를 들어, 도 1을 참조하여 설명된 호스트 시스템(105))에 대응하거나, 제어기의 동작을 수행하는 데(예를 들어, 운영 체제를 실행하여 도 1을 참조하여 설명된 큐 관리자(150)에 대응하는 동작을 수행하는 데) 사용될 수 있다. 일부 예에서, 기계는 근거리 통신망(LAN), 인트라넷, 엑스트라넷, 및/또는 인터넷에서 다른 기계와 연결(예를 들어, 네트워크로 연결)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 자격으로, 피어 투 피어(또는 분산) 네트워크 환경에서 피어 기계로, 또는 클라우드 컴퓨팅 인프라 또는 환경에서 서버 또는 클라이언트 시스템으로 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인 휴대 정보 단말기(PDA), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 이 기계가 취해야 할 조치를 지정하는 일련의 명령어(순차적이든 아니든)를 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 도시되어 있지만, "기계"라는 용어는 본 명세서에서 논의된 방법론 중 임의의 하나 이상의 방법을 수행하기 위해 명령어 세트(또는 다수의 세트)를 개별적으로 또는 공동으로 실행하는 임의의 기계 세트를 포함할 수도 있다.
예시적인 컴퓨터 시스템(500)은 버스(545)를 통해 서로 통신하는, 처리 디바이스(505), 주 메모리(510)(예를 들어, ROM, 플래시 메모리, SDRAM 또는 램버스 DRAM(RDRAM)과 같은 DRAM 등), 정적 메모리(515)(예를 들어, 플래시 메모리, 정적 RAM(SRAM) 등), 및 데이터 저장 시스템(525)을 포함할 수 있다.
처리 디바이스(505)는 마이크로프로세서, 중앙 처리 유닛 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 보다 구체적으로, 처리 디바이스는 복잡한 명령어 세트 컴퓨팅(CISC) 마이크로프로세서, 축소된 명령어 세트 컴퓨팅(RISC) 마이크로프로세서, 매우 긴 명령어 워드(VLIW) 마이크로프로세서, 또는 다른 명령어 세트를 구현하는 프로세서, 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(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)

  1. 방법으로서,
    메모리 서브시스템의 메모리 다이의 제1 큐에 제1 커맨드를 할당하는 단계로서, 상기 제1 큐는 제1 우선순위 레벨과 연관되고, 상기 메모리 다이는 상기 제1 우선순위 레벨과 상이한 제2 우선순위 레벨과 연관된 제2 큐를 포함하고, 상기 제2 큐는 제2 커맨드를 포함하고, 상기 제1 커맨드와 상기 제2 커맨드는 각각 상기 메모리 서브시스템에서 수행될 각각의 동작과 연관된, 상기 제1 큐에 제1 커맨드를 할당하는 단계; 및
    상기 제1 및 제2 우선순위 레벨에 적어도 부분적으로 기초하여 상기 제2 커맨드를 발행하기 전에 상기 제1 커맨드를 발행하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제1 큐에 상기 제1 커맨드를 할당하기 전에 상기 제2 큐에서 하나 이상의 제2 커맨드를 발행하는 단계; 및
    상기 제1 큐에 상기 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여 상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 중단하는 단계로서, 상기 제1 커맨드를 발행하는 단계는 상기 하나 이상의 제2 커맨드의 발행을 중단한 것에 적어도 부분적으로 기초하는, 상기 제2 커맨드의 발행을 중단하는 단계
    를 더 포함하는, 방법.
  3. 제2항에 있어서,
    상기 제1 커맨드를 발행한 후에 상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 재개하는 단계를 더 포함하는, 방법.
  4. 제3항에 있어서,
    상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 재개한 후 상기 제1 큐에 추가 제1 커맨드를 할당하는 단계;
    상기 제1 큐에 상기 추가 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여 상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 중단하는 단계;
    상기 하나 이상의 제2 커맨드를 중단한 것에 적어도 부분적으로 기초하여 상기 추가 제1 커맨드를 발행하는 단계; 및
    상기 추가 제1 커맨드를 발행한 후에 상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 재개하는 단계
    를 더 포함하는, 방법.
  5. 제1항에 있어서, 상기 제1 큐는 하나 이상의 추가 커맨드를 포함하고, 상기 방법은,
    상기 제2 큐에서 상기 하나 이상의 제2 커맨드를 발행하기 전에, 상기 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여, 상기 하나 이상의 추가 커맨드를 발행하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 메모리 서브시스템의 복수의 메모리 다이의 복수의 제1 큐에 제1 커맨드를 할당하는 단계로서, 상기 복수의 제1 큐 각각은 상기 제1 우선순위 레벨과 연관되고, 상기 복수의 메모리 다이 각각은 상기 제2 우선순위 레벨과 연관된 각각의 제2 큐를 포함하는, 상기 제1 커맨드를 할당하는 단계; 및
    상기 제1 및 제2 우선순위 레벨에 적어도 부분적으로 기초하여 상기 복수의 메모리 다이의 각각의 제2 큐에서 커맨드를 발행하기 전에 상기 제1 커맨드 각각을 발행하는 단계
    를 더 포함하는, 방법.
  7. 제1항에 있어서,
    상기 메모리 서브시스템에 이용 가능한 자원의 양을 결정하는 단계로서, 상기 제2 큐에서 상기 하나 이상의 제2 커맨드를 발행하기 전에 상기 제1 커맨드를 발행하는 단계는 상기 메모리 서브시스템에 이용 가능한 자원의 양에 적어도 부분적으로 기초하는, 상기 이용 가능한 자원의 양을 결정하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서, 상기 제1 커맨드는 호스트 판독 커맨드를 포함하고, 상기 하나 이상의 제2 커맨드는 호스트 기입 커맨드, 판독 커맨드, 기입 커맨드, 소거 커맨드, 또는 이들의 조합을 포함하는, 방법.
  9. 시스템으로서,
    복수의 메모리 구성요소; 및
    상기 복수의 메모리 구성요소와 동작 가능하게 결합된 처리 디바이스
    를 포함하되, 상기 처리 디바이스는,
    메모리 서브시스템의 메모리 다이의 제1 큐에 제1 우선순위 레벨과 연관된 제1 커맨드를 할당하는 동작으로서, 상기 메모리 다이는 상기 제1 우선순위 레벨과 상이한 제2 우선순위 레벨과 연관된 제2 큐를 포함하는, 상기 제1 커맨드를 할당하는 동작; 및
    상기 제1 및 제2 우선순위 레벨에 적어도 부분적으로 기초하여 상기 제2 큐에 포함된 제2 커맨드보다 먼저 상기 제1 커맨드를 전송하는 동작을 수행하도록 구성된, 시스템.
  10. 제9항에 있어서,
    상기 처리 디바이스는, 추가로
    상기 제1 큐에 상기 제1 커맨드를 할당하기 전에 상기 제2 큐로부터 하나 이상의 제2 커맨드를 전송하고;
    상기 제1 큐에 상기 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여 상기 제2 큐에 포함된 추가 제2 커맨드의 전송을 중단하고, 상기 제1 커맨드를 발행하는 것은 상기 추가 제2 커맨드의 전송을 중단한 것에 적어도 부분적으로 기초하는 것을 더 포함하는, 시스템.
  11. 제10항에 있어서,
    상기 처리 디바이스는, 추가로
    상기 제1 커맨드를 발행한 후 상기 제2 큐에 포함된 추가 제2 커맨드를 전송하는 것을 더 포함하는, 시스템.
  12. 제11항에 있어서,
    상기 처리 디바이스는, 추가로
    상기 제2 큐에 포함된 추가 제2 커맨드의 전송을 재개한 후 상기 제1 큐에 추가 제1 커맨드를 할당하고;
    상기 제1 큐에 상기 추가 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여 상기 제2 큐에서 상기 추가 제2 커맨드 중 하나의 전송을 중단하고;
    상기 추가 제2 커맨드 중 하나의 전송을 중단한 것에 적어도 부분적으로 기초하여 상기 추가 제1 커맨드를 전송하고;
    상기 추가 제1 커맨드를 전송한 후 상기 제2 큐에 있는 상기 추가 제2 커맨드 중 하나를 전송하는 것을 더 포함하는, 시스템.
  13. 제9항에 있어서, 상기 제1 큐는 하나 이상의 추가 제1 커맨드를 포함하고,
    상기 처리 디바이스는, 추가로
    상기 제2 큐에 포함된 하나 이상의 제2 커맨드의 전송 전에, 상기 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여, 상기 하나 이상의 추가 제1 커맨드를 전송하는, 시스템.
  14. 제9항에 있어서,
    상기 처리 디바이스는, 추가로
    상기 메모리 서브시스템의 복수의 메모리 다이의 복수의 제1 큐의 각각의 제1 큐에 제1 커맨드를 할당하는 동작으로서, 상기 제1 커맨드 각각은 상기 제1 우선순위 레벨과 연관되고, 상기 복수의 메모리 다이 각각은 제2 우선순위 레벨과 연관된 제2 큐를 포함하는, 상기 제1 커맨드를 할당하는 동작; 및
    상기 제1 및 제2 우선순위 레벨에 적어도 부분적으로 기초하여 상기 복수의 메모리 다이의 제2 큐에서 하나 이상의 제2 커맨드를 전송하기 전에 상기 제1 커맨드 각각을 전송하는 동작을 수행하는 것을 더 포함하는, 시스템.
  15. 제9항에 있어서,
    상기 처리 디바이스는, 추가로
    상기 메모리 서브시스템에 이용 가능한 자원을 결정하고;
    상기 메모리 서브시스템에 이용 가능한 자원에 적어도 부분적으로 기초하여 상기 제2 큐에서 하나 이상의 제2 커맨드를 발행하기 전에 상기 제1 커맨드를 발행하는 것을 더 포함하는, 시스템.
  16. 명령어를 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령어는, 처리 디바이스에 의해 실행될 때, 상기 처리 디바이스로 하여금,
    메모리 서브시스템의 메모리 다이의 제1 큐에 제1 커맨드를 할당하는 동작으로서, 상기 제1 큐는 제1 우선순위 레벨과 연관되고, 상기 메모리 다이는 상기 제1 우선순위 레벨과 상이한 제2 우선순위 레벨과 연관된 제2 큐를 포함하고, 상기 제2 큐는 제2 커맨드를 포함하고, 상기 제1 커맨드와 상기 제2 커맨드는 각각 상기 메모리 서브시스템에서 수행될 각각의 동작과 연관되는, 상기 제1 커맨드를 할당하는 동작; 및
    상기 제1 및 제2 우선순위 레벨에 적어도 부분적으로 기초하여 상기 제2 커맨드를 발행하기 전에 상기 제1 커맨드를 발행하는 동작을 수행하게 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제16항에 있어서, 상기 처리 디바이스는, 추가로
    상기 제1 큐에 상기 제1 커맨드를 할당하기 전에 상기 제2 큐에서 하나 이상의 제2 커맨드를 발행하는 동작; 및
    상기 제1 큐에 상기 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여 상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 중단하는 동작으로서, 상기 제1 커맨드를 발행하는 것은 상기 하나 이상의 제2 커맨드의 발행을 중단한 것에 적어도 부분적으로 기초하는, 상기 제2 커맨드의 발행을 중단하는 동작을 수행하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제17항에 있어서, 상기 처리 디바이스는, 추가로
    상기 제1 커맨드를 발행한 후 상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 재개하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제18항에 있어서, 상기 처리 디바이스는, 추가로
    상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 재개한 후에 상기 제1 큐에 추가 제1 커맨드를 할당하는 동작;
    상기 제1 큐에 상기 추가 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여 상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 중단하는 동작;
    상기 하나 이상의 제2 커맨드를 중단한 것에 적어도 부분적으로 기초하여 상기 추가 제1 커맨드를 발행하는 동작; 및
    상기 추가 제1 커맨드를 발행한 후 상기 제2 큐에서 상기 하나 이상의 제2 커맨드의 발행을 재개하는 동작을 수행하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제16항에 있어서, 상기 제1 큐는 하나 이상의 추가 커맨드를 포함하되, 상기 처리 디바이스는, 추가로
    상기 제2 큐에서 상기 하나 이상의 제2 커맨드를 발행하기 전에, 상기 제1 커맨드를 할당한 것에 적어도 부분적으로 기초하여, 상기 하나 이상의 추가 커맨드를 발행하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020227031900A 2020-03-10 2020-03-10 메모리 서브시스템의 큐를 관리하기 위한 방법, 시스템 및 판독 가능 저장 매체 KR20220137120A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/078604 WO2021179163A1 (en) 2020-03-10 2020-03-10 Methods, systems and readable storage mediums for managing queues of amemory sub-system

Publications (1)

Publication Number Publication Date
KR20220137120A true KR20220137120A (ko) 2022-10-11

Family

ID=77670394

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227031900A KR20220137120A (ko) 2020-03-10 2020-03-10 메모리 서브시스템의 큐를 관리하기 위한 방법, 시스템 및 판독 가능 저장 매체

Country Status (6)

Country Link
US (1) US20220404979A1 (ko)
EP (1) EP4118521A4 (ko)
JP (1) JP2023516786A (ko)
KR (1) KR20220137120A (ko)
CN (1) CN115516415A (ko)
WO (1) WO2021179163A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11983437B2 (en) * 2020-05-26 2024-05-14 Intel Corporation System, apparatus and method for persistently handling memory requests in a system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5035469B2 (ja) * 2009-03-31 2012-09-26 富士通株式会社 データ転送回路及びデータ転送方法
US8364888B2 (en) * 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
US8918595B2 (en) * 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
JP2013200692A (ja) * 2012-03-23 2013-10-03 Toshiba Corp メモリシステム
US9535627B2 (en) * 2013-10-02 2017-01-03 Advanced Micro Devices, Inc. Latency-aware memory control
US9542344B2 (en) * 2014-02-19 2017-01-10 Sandisk Technologies Llc Datapath management in a memory controller
US9645744B2 (en) * 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US20160162186A1 (en) * 2014-12-09 2016-06-09 San Disk Technologies Inc. Re-Ordering NAND Flash Commands for Optimal Throughput and Providing a Specified Quality-of-Service
US10540115B2 (en) * 2015-04-21 2020-01-21 SK Hynix Inc. Controller adaptation to memory program suspend-resume
CN111857813A (zh) * 2015-05-18 2020-10-30 北京忆芯科技有限公司 调度微指令序列的方法及装置
JP6448571B2 (ja) * 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US10540116B2 (en) * 2017-02-16 2020-01-21 Toshiba Memory Corporation Method of scheduling requests to banks in a flash controller
KR102386811B1 (ko) * 2017-07-18 2022-04-15 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10409739B2 (en) * 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
JP2020016954A (ja) * 2018-07-23 2020-01-30 キオクシア株式会社 メモリシステム

Also Published As

Publication number Publication date
CN115516415A (zh) 2022-12-23
WO2021179163A1 (en) 2021-09-16
EP4118521A4 (en) 2023-05-10
JP2023516786A (ja) 2023-04-20
EP4118521A1 (en) 2023-01-18
US20220404979A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
US11487666B2 (en) Timed data transfer between a host system and a memory sub-system
CN113924545B (zh) 基于存储器子系统中的媒体单元的可用性的预测性数据传输
US11640354B2 (en) Logical-to-physical mapping of data groups with data locality
CN113785278A (zh) 用于避免并发写入流之间冲突的动态数据放置
WO2021179164A1 (en) Maintaining queues for memory sub-systems
US20240028239A1 (en) Zone block staging component for a memory sub-system with zoned namespace
US20230161509A1 (en) Dynamic selection of cores for processing responses
CN113448509A (zh) 用于服务质量设计的读取计数器
CN115552531A (zh) 共享字线上的存储器存取冲突管理
US20230350798A1 (en) Namespace management for memory sub-systems
KR20220070034A (ko) 로드 명령을 위한 타임 투 리브
KR20220137120A (ko) 메모리 서브시스템의 큐를 관리하기 위한 방법, 시스템 및 판독 가능 저장 매체
US20230195350A1 (en) Resequencing data programmed to multiple level memory cells at a memory sub-system
CN113360088B (zh) 基于硬件的相干性检查技术
CN113918479A (zh) 并行独立线程的低位密度存储器高速缓存
CN113012741A (zh) 用于存储器子系统的媒体管理的弹性缓冲器
JP7579875B2 (ja) メモリサブシステムに対するキューの維持
CN113253917B (zh) 用于存储器子系统的媒体管理的多状态炼狱
CN113495695B (zh) 用于存取命令的高速缓存标识符
CN113094293B (zh) 存储器系统及相关方法和计算机可读存储介质
CN113391763A (zh) 存储器裸片资源管理
CN114550780A (zh) 存储器中编程或擦除操作的恢复

Legal Events

Date Code Title Description
E902 Notification of reason for refusal