KR20240043148A - 메모리 디바이스에서 메모리 액세스 커맨드 큐를 사용하는 개선된 메모리 성능 - Google Patents

메모리 디바이스에서 메모리 액세스 커맨드 큐를 사용하는 개선된 메모리 성능 Download PDF

Info

Publication number
KR20240043148A
KR20240043148A KR1020247007476A KR20247007476A KR20240043148A KR 20240043148 A KR20240043148 A KR 20240043148A KR 1020247007476 A KR1020247007476 A KR 1020247007476A KR 20247007476 A KR20247007476 A KR 20247007476A KR 20240043148 A KR20240043148 A KR 20240043148A
Authority
KR
South Korea
Prior art keywords
memory access
memory
access command
queue
die
Prior art date
Application number
KR1020247007476A
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 KR20240043148A publication Critical patent/KR20240043148A/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/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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]

Abstract

메모리 디바이스에 동작 가능하게 결합된 처리 디바이스를 포함하는 시스템들 및 방법들이 개시된다. 처리 디바이스는 메모리 액세스 커맨드를 수신하고; 메모리 액세스 커맨드와 연관된 물리적 어드레스를 결정하고; 물리적 어드레스에 의해 참조되는 메모리 디바이스 상의 다이의 평면을 결정하고; 메모리 액세스 커맨드를 평면과 연관된 큐에 삽입하고; 및 큐로부터 메모리 액세스 커맨드를 처리하는 것을 포함하는 동작들을 수행한다.

Description

메모리 디바이스에서 메모리 액세스 커맨드 큐를 사용하는 개선된 메모리 성능
본 개시의 실시예들은 전반적으로 메모리 서브 시스템들에 관한 것으로, 보다 구체적으로는, 메모리 디바이스들에서 메모리 액세스 커맨드 큐들을 사용하는 개선된 메모리 성능에 관한 것이다.
메모리 서브 시스템은 데이터를 저장하는 하나 이상의 메모리 디바이스를 포함할 수 있다. 메모리 디바이스는 예를 들어, 비휘발성 메모리 디바이스 및 휘발성 메모리 디바이스일 수 있다. 일반적으로, 호스트 시스템은 메모리 디바이스들에 데이터를 저장하고 메모리 디바이스들로부터 데이터를 검색하기 위해 메모리 서브 시스템을 이용할 수 있다.
본 개시는 본 개시의 다양한 실시예에 대한 상세한 설명 및 첨부 도면으로부터 보다 완전하게 이해될 것이다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 시스템을 예시한다.
도 2는 본 개시의 일부 실시예들에 따른 메모리 액세스 커맨드 큐들을 이용하기 위한 예시적인 방법의 흐름도이다.
도 3은 본 개시의 일부 실시예들에 따른 4개의 평면 큐들을 갖는 구조화된 다이를 예시한다.
도 4는 본 개시의 일부 실시예들에 따른 메모리 액세스 커맨드 관리자 및 메모리 디바이스를 포함하는 예시적인 컴퓨팅 시스템을 예시한다.
도 5는 본 개시의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태들은 메모리 디바이스들에서 메모리 액세스 커맨드 큐들을 사용하는 개선된 메모리 성능에 관한 것이다. 메모리 서브 시스템은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 조합일 수 있다. 저장 디바이스들 및 메모리 모듈들의 예들은 도 1과 함께 이하에서 설명된다. 일반적으로, 호스트 시스템은 데이터를 저장하는 메모리 디바이스들과 같은 하나 이상의 컴포넌트를 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있고 메모리 서브 시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 서브 시스템은 메모리 디바이스에 전력이 공급되지 않을 때 데이터의 보유가 요구되는 고밀도 비휘발성 메모리 디바이스들을 포함할 수 있다. 비휘발성 메모리 디바이스의 일 예는 NAND(negative-and) 메모리 디바이스이다. 비휘발성 메모리 디바이스들의 다른 예들이 도 1를 참조하여 설명된다. 비휘발성 메모리 디바이스는 하나 이상의 다이들의 패키지이다. 각각의 다이는 하나 이상의 평면으로 구성될 수 있다. 일부 유형들의 비휘발성 메모리 디바이스들(예를 들어, NAND 디바이스들)의 경우, 각각의 평면은 물리적 블록들의 세트로 구성된다. 각각의 블록은 페이지들의 세트로 구성된다. 각각의 페이지는 메모리 셀("셀")의 세트로 구성된다. 셀은 정보를 저장하는 전자 회로이다. 셀 유형에 따라, 셀은 하나 이상의 이진 정보 비트를 저장할 수 있고, 저장되는 비트들의 수와 상관되는 다양한 논리 상태들을 갖는다. 논리 상태들은 "0" 및 "1"과 같은 이진 값들, 또는 이러한 값들의 조합들에 의해 표현될 수 있다.
메모리 디바이스는 2차원 그리드(grid)로 배열된 다수의 메모리 셀들을 포함할 수 있다. 메모리 셀들은 열(column)들(이하, 비트라인들로도 지칭됨) 및 행(row)들(이하, 워드라인들로도 지칭됨)의 어레이로 실리콘 웨이퍼 상에 에칭된다. 워드라인은 메모리 셀들 각각의 어드레스를 생성하기 위해 하나 이상의 비트라인과 함께 사용되는 메모리 디바이스의 메모리 셀들의 하나 이상의 행을 지칭할 수 있다. 비트라인과 워드라인의 인터섹션(intersection)은 메모리 셀의 어드레스를 구성한다. 이하에서, 블록은 데이터를 저장하는 데 사용되는 메모리 디바이스의 단위를 지칭하며, 메모리 셀들의 그룹, 워드라인 그룹, 워드라인, 또는 개별 메모리 셀들을 포함할 수 있다. 동시 동작들이 각각의 평면 상에서 발생할 수 있게 하기 위해 하나 이상의 블록들이 함께 그룹화되어 메모리 디바이스의 평면을 형성할 수 있다. 메모리 디바이스는 둘 이상의 메모리 평면들의 동시 메모리 페이지 액세스들을 수행하는 회로부를 포함할 수 있다. 예를 들어, 메모리 디바이스는 상이한 페이지 유형들을 포함하여, 2개 이상의 메모리 평면들의 페이지들의 동시 액세스를 용이하게 하기 위해 메모리 디바이스의 각각의 평면에 대한 개개의 액세스 라인 드라이버 회로 및 파워 회로를 포함할 수 있다.
메모리 액세스 동작들은 메모리 서브 시스템에 의해 수행될 수 있다. 메모리 액세스 동작들은 호스트-개시 동작들 또는 메모리 서브 시스템 컨트롤러가 초기화될 수 있다. 예를 들어, 호스트 시스템은 메모리 서브 시스템에서 메모리 액세스 동작(예를 들어, 기록 동작, 판독 동작, 소거 동작 등)을 개시할 수 있다. 호스트 시스템은 메모리 서브 시스템에서 메모리 디바이스 상에 데이터를 저장하고 메모리 서브 시스템 상의 메모리 디바이스로부터 데이터를 판독하는 것과 같은 메모리 액세스 커맨드들(예를 들어, 기록 커맨드, 판독 커맨드)을 메모리 서브 시스템에 발송할 수 있다. 호스트 요청에 의하여 특정된 판독 또는 기록될 데이터를 이하 "호스트 데이터"라 한다. 호스트 요청은 호스트 시스템이 호스트 데이터와 연관시키는 위치인 호스트 데이터에 대한 논리적 어드레스 정보(예를 들어, 로직 블록 어드레스(LBA), 네임스페이스(namespace))를 포함할 수 있다. 논리적 어드레스 정보(예를 들어, LBA, 네임스페이스)는 호스트 데이터에 대한 메타데이터의 일부일 수 있다. 메타데이터는 또한 에러 핸들링 데이터(예를 들어, ECC 코드워드, 패리티 코드), 데이터 버전(예를 들어, 기록된 데이터의 에이지(age)를 구별하기 위해 사용됨), 유효 비트맵(LBA들 또는 로직 전송 유닛들은 유효 데이터를 함유함) 등을 포함할 수 있다. 메모리 서브 시스템 컨트롤러에 의해 개시되는 메모리 액세스 동작들은 가비지 수집, 웨어 레벨링(wear leveling), 불량 블록 관리(bad block management), 블록 리프레시 동작(block refresh operation)들 등과 같은 유지 관리 동작(maintenance operation)들과 관련될 수 있다.
일부 메모리 서브 시스템들에서, 메모리 디바이스의 로컬 매체 컨트롤러는 오픈 NAND 플래시 인터페이스(ONFI) 채널과 같은 단일 통신 채널을 통해 다이 또는 다이들의 세트와 통신한다. 특히, 로컬 매체 컨트롤러는 통신 채널을 통해 판독 커맨드들, 기록 커맨드들, 및 소거 커맨드들을 다이들의 세트에 발행할 수 있다. 판독 커맨드의 경우에, 로컬 매체 컨트롤러는 통신 채널을 통해 다이로부터 요청된 데이터를 수신할 수 있다. 일반적으로, 다이는 한 번에 하나의 단일 평면 메모리 액세스 동작(또는 다중 평면 메모리 액세스 동작을 위한 2개의 동작들)만을 캐싱할 수 있다. 이와 같이, 평면 레벨 판독 커맨드들에 대해, 다이는 계류중인 메모리 액세스 동작이 처리될 때까지 추가 메모리 액세스 동작들을 수신하고 큐잉할 수 없다. 예를 들어, 로컬 매체 컨트롤러로부터 판독 커맨드를 수신한 것에 응답하여, 메모리 디바이스의 다이는 판독 커맨드를 큐잉하고, 판독 커맨드에 의해 요구되는 데이터를 검색함으로써 판독 커맨드를 처리하고, 그런 다음 검색된 데이터를 로컬 매체 컨트롤러로 발송하려고 시도할 수 있다. 그러나, 통신 채널이 사용 중이면(예를 들어, 로컬 매체 컨트롤러가 세트의 다른 다이들과 통신하고 있으면), 다이는 통신 채널이 자유로워(free) 질 때까지 검색된 데이터를 클럭아웃할 수 없다. 이와 같이, 대기 중에 다이가 유휴(idle) 상태를 유지하고, 이는 메모리 디바이스의 감소된 효율로 이어진다.
본 개시의 양태들은 메모리 디바이스들에서 커맨드 큐들을 구현함으로써 상기 및 다른 결함들을 해결한다. 메모리 디바이스의 각각의 다이는 둘 이상의 평면들을 포함할 수 있으며, 각각의 평면은 물리적 블록들의 세트를 포함한다. 각각의 다이는 로컬 매체 컨트롤러에 의해 유지되는 평면별 커맨드 큐를 포함하도록 구성될 수 있다. 평면 커맨드 큐들은 다이의 각각의 평면에 대한 다수의 메모리 액세스 커맨드 엔트리들(예를 들어, 하나 이상의 판독 커맨드, 기록 커맨드, 또는 이들의 임의의 조합)을 추적하고 저장하는 데 사용될 수 있다. 다이는 엔트리들의 우선순위에 기초하여, 또는 다른 처리 기법(scheme)들에 기초하여, 수신된 순서(예를 들어, 선입, 선출, "FIFO")로 메모리 액세스 커맨드 엔트리들을 처리할 수 있다. 예를 들어, 일부 메모리 액세스 동작들은 다른 메모리 액세스 동작들보다 우선순위화될 수 있다. 일부 실시예들에서, 다이는 높은 우선순위 메모리 액세스 커맨드들과 낮은 우선순위 메모리 액세스 커맨드들 간을 구별할 수 있다. 예를 들어, 설사 더 낮은 우선순위 메모리 액세스 커맨드가 더 높은 우선순위 메모리 액세스 커맨드에 앞서 다이에 의해 수신되었을 지라도, 더 높은 우선순위를 갖는 메모리 액세스 커맨드는 더 낮은 우선순위를 갖는 메모리 액세스 커맨드에 앞서 평면 커맨드 큐로부터 처리될 수 있다. 일부 실시예들에서, 호스트 시스템에 의해 발행된 메모리 액세스 커맨드들은 높은 우선순위 메모리 액세스 커맨드들로서 특성화될 수 있고, 매체 또는 백그라운드 활동들을 관리하기 위해 메모리 서브 시스템 컨트롤러에 의해 발행된 메모리 액세스 커맨드들은 낮은 우선순위 메모리 액세스 커맨드들로서 특성화될 수 있다.
일부 실시예들에서, 메모리 액세스 커맨드 엔트리들은, 하나의 프로세스가 다른 프로세스에 영향을 미치지 않고, 처리되고 있는 평면 커맨드 큐로부터의 메모리 액세스 커맨드들에 병렬로 평면 커맨드 큐에 삽입될 수 있다. 예를 들어, 수신된 판독 커맨드가 평면 커맨드 큐에 삽입되는 동안 평면 커맨드 큐로부터의 기록 커맨드가 처리될 수 있다.
본 개시의 이점들은 메모리 디바이스의 개선된 성능 및/또는 호스트 시스템에 대한 개선된 서비스 품질을 포함하지만 이에 제한되지 않는다. 예를 들어, 다수의 메모리 액세스 동작들은 메모리 디바이스의 각각의 다이에 큐잉될 수 있다. 이는 통신 채널이 사용 중일 때 각각의 다이가 다수의 메모리 액세스 동작을 처리할 수 있게 한다. 따라서, 본 개시의 실시예들은 통신 채널이 사용 중(busy)일 때 다이가 유휴(idle)할 시간의 양을 감소시키며, 이는 레이턴시를 감소시키고 메모리 디바이스의 성능을 개선시킨다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 시스템(100)을 예시한다. 메모리 서브 시스템(110)은 하나 이상의 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140)), 하나 이상의 비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130)) 또는 이들의 조합과 같은 매체를 포함할 수 있다.
메모리 서브 시스템(110)은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드일 수 있다. 저장 디바이스의 예들은 솔리드 스테이트 드라이브(SSD), 플래시 드라이브(flash drive), USB 플래시 드라이브, 임베디드 멀티매체 컨트롤러(eMMC) 드라이브, UFS(universal flash storage) 드라이브, SD(secure digital) 카드, 하드 디스크 드라이브(HDD) 등을 포함할 수 있다. 메모리 모듈의 예는 DIMM(Dual In-line Memory Module), SO-DIMM(Small Outline DIMM), 다양한 형태의 NVDIMM(Non-volatile Dual In-line Memory Module)를 포함한다.
컴퓨팅 시스템(100)은 컴퓨팅 디바이스 예컨대, 데스크톱 컴퓨터, 랩톱 컴퓨터, 네트워크 서버, 모바일 디바이스, 운송 수단(vehicle)(예를 들어, 비행기, 드론, 기차, 자동차 또는 다른 교통 기관(conveyance)), 사물 인터넷(IoT) 가능 디바이스, 임베디드 컴퓨터(예를 들어, 운송 수단, 산업 장비 또는 네트워크화된 상용 디바이스에 포함된 것), 또는 메모리 및 처리 디바이스를 포함하는 이러한 컴퓨팅 디바이스일 수 있다.
컴퓨팅 시스템(100)은 하나 이상의 메모리 서브 시스템(110)에 결합된 호스트 시스템(120)을 포함할 수 있다. 일부 실시예들에서, 호스트 시스템(120)은 상이한 유형들의 메모리 서브 시스템(110)에 결합된다. 도 1은 하나의 메모리 서브 시스템(110)에 결합된 호스트 시스템(120)의 일 예를 예시한다. 본 명세서에서 사용되는, "에 결합된" 또는 "과 결합된"은 일반적으로 컴포넌트들 사이의 연결을 지칭하며, 이는 유선 또는 무선에 관계없이, 전기, 광학, 자기 등과 같은 연결들을 포함하여, 간접 통신 연결 또는 직접 통신 연결(예를 들어, 개재하는 컴포넌트들 없음)일 수 있다.
호스트 시스템(120)은 프로세서 칩셋(processor chipset) 및 프로세서 칩셋에 의해 실행되는 소프트웨어 스택을 포함할 수 있다. 프로세서 칩셋은 하나 이상의 코어, 하나 이상의 캐시, 메모리 컨트롤러(예를 들어, NVDIMM 컨트롤러) 및 저장 프로토콜 컨트롤러(예를 들어, PCIe 컨트롤러, SATA 컨트롤러)를 포함할 수 있다. 호스트 시스템(120)은 예를 들어, 메모리 서브 시스템(110)에 데이터를 기록하고 메모리 서브 시스템(110)으로부터 데이터를 판독하기 위해 메모리 서브 시스템(110)을 사용한다.
호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예는 SATA(Serial Advanced Technology Attachment) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, USB(Universal Serial Bus) 인터페이스, 파이버 채널(Fibre Channel), SAS(Serial Attached SCSI), DDR(Double Data Rate) 메모리 버스, SCSI(Small Computer System Interface), DIMM(Dual In-line Memory Module) 인터페이스(예를 들어, DDR(Double Data Rate)을 지원하는 DIMM 소켓 인터페이스) 등을 포함하지만 이에 제한되지 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 송신하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)이 물리적 호스트 인터페이스(예를 들어, PCIe 버스)에 의해 호스트 시스템(120)과 결합될 때 컴포넌트(예를 들어, 메모리 디바이스(130))에 액세스하기 위해 NVMe(NVM Express) 인터페이스를 추가로 이용할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 예로서 메모리 서브 시스템(110)을 예시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다수의 별개의 통신 연결들, 및/또는 통신 연결들의 조합을 통해 다수의 메모리 서브 시스템들에 액세스할 수 있다.
메모리 디바이스들(130, 140)은 상이한 유형들의 비휘발성 메모리 디바이스들 및/또는 휘발성 메모리 디바이스들의 임의의 조합을 포함할 수 있다. 휘발성 메모리 디바이스들(예를 들어, 메모리 디바이스(140))은 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(SDRAM)와 같은 랜덤 액세스 메모리(RAM)일 수 있지만, 이에 제한되지 않는다.
비휘발성 메모리 디바이스들(예를 들어, 메모리 디바이스(130))의 일부 예들은 NAND(negative-and) 유형 플래시 메모리 및 비휘발성 메모리 셀들의 교차점 어레이(cross-point)인 3차원 교차점("3D 교차점") 메모리 디바이스와 같은 기록-인-플레이스(write-in-place) 메모리를 포함한다. 비휘발성 메모리의 교차점 어레이는 적층 가능한 크로스 그리드(cross-gridded) 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가적으로, 많은 플래시 기반 메모리들과 대조적으로, 교차점 비휘발성 메모리는 인-플레이스(in-place) 기록 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. NAND 유형 플래시 메모리는 2차원 NAND(2D NAND) 및 3차원 NAND(3D NAND)를 포함한다.
메모리 디바이스들(130) 각각은 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 하나의 유형의 메모리 셀, 예를 들어, 단일 레벨 셀(SLC)은 셀당 1 비트를 저장할 수 있다. 다중 레벨 셀(MLC), 트리플 레벨 셀(TLC), 쿼드 레벨 셀(QLC) 및 펜타 레벨 셀(PLC)과 같은 다른 유형의 메모리 셀은 셀당 다중 비트를 저장할 수 있다. 일부 실시예들에서, 메모리 디바이스들(130) 각각은 SLC들, MLC들, TLC들, QLC들, PLC들 또는 이들의 임의의 조합과 같은 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 일부 실시예들에서, 특정 메모리 디바이스는 메모리 셀들의 SLC 부분, 및 MLC 부분, TLC 부분, QLC 부분, 또는 PLC 부분을 포함할 수 있다. 메모리 디바이스들(130)의 메모리 셀들은 데이터를 저장하는 데 사용되는 메모리 디바이스의 로직 유닛을 지칭할 수 있는 페이지들로서 그룹화될 수 있다. 일부 유형의 메모리(예를 들어, NAND)에서, 페이지들은 블록들을 형성하기 위해 그룹화될 수 있다.
비휘발성 메모리 셀들의 3D 교차점 어레이 및 NAND 유형 플래시 메모리(예를 들어, 2D NAND, 3D NAND)와 같은 비휘발성 메모리 컴포넌트들이 설명되지만, 메모리 디바이스(130)는 판독 전용 메모리(ROM), 상 변화 메모리(PCM), 자가 선택(self-selecting) 메모리, 다른 칼코게나이드계 메모리들, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전성 랜덤 액세스 메모리(FeRAM), 자기 랜덤 액세스 메모리(MRAM), 스핀 전달 토크(STT)-MRAM, 전도성 브리징 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물계 RRAM(OxRAM), NOR(negative-or) 플래시 메모리, 및 전기적으로 소거 가능한 프로그래밍 가능 판독 전용 메모리(EEPROM)와 같은 임의의 다른 유형의 비휘발성 메모리에 기초할 수 있다.
메모리 서브 시스템 컨트롤러(115)(또는 단순화를 위해 컨트롤러(115))는 메모리 디바이스들(130)에서 데이터를 판독하는 것, 데이터를 기록하는 것, 또는 데이터를 소거하는 것과 같은 동작들 및 다른 그러한 동작들을 수행하기 위해 메모리 디바이스들(130)과 통신할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 하나 이상의 집적 회로 및/또는 이산 컴포넌트, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 하드웨어는 본 명세서에 설명된 동작들을 수행하기 위한 전용(즉, 하드 코딩된) 로직을 갖는 디지털 회로부를 포함할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 마이크로컨트롤러, 특수 목적 로직 회로(예를 들어, 필드 프로그램 가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다.
메모리 서브 시스템 컨트롤러(115)는 로컬 메모리(119)에 저장된 명령을 실행하도록 구성된 하나 이상의 프로세서(예를 들어, 프로세서(117))를 포함하는 처리 디바이스일 수 있다. 예시된 예에서, 메모리 서브 시스템 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이의 통신을 핸들링하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스, 동작, 로직 흐름 및 루틴을 수행하기 위한 명령을 저장하도록 구성된 내장 메모리(embedded memory)를 포함한다.
예시된 예에서, 메모리 서브 시스템 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이의 통신을 핸들링하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스, 동작, 로직 흐름 및 루틴을 수행하기 위한 명령을 저장하도록 구성된 내장 메모리를 포함한다.
일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터들, 페치된(fetched) 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로 코드(micro-code)를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브 시스템(110)이 메모리 서브 시스템 컨트롤러(115)를 포함하는 것으로 예시되었지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(110)은 메모리 서브 시스템 컨트롤러(115)를 포함하지 않고, 대신에 외부 제어(예를 들어, 외부 호스트에 의해, 또는 메모리 서브 시스템과 별개인 프로세서 또는 컨트롤러에 의해 제공되는)에 의존할 수 있다.
일반적으로, 메모리 서브 시스템 컨트롤러(115)는 호스트 시스템(120)으로부터 커맨드들 또는 동작들을 수신할 수 있고, 메모리 디바이스들(130)에 대한 원하는 액세스를 달성하기 위해 커맨드들 또는 동작들을 명령들 또는 적절한 커맨드들로 변환할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 메모리 디바이스들(130)과 연관된 웨어 레벨링 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들, 및 논리적 어드레스(예를 들어, 로직 블록 어드레스(LBA), 네임스페이스)와 물리적 어드레스(예를 들어, 물리적 MU 어드레스, 물리적 블록 어드레스) 사이의 어드레스 변환들과 같은 다른 동작들을 담당할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 커맨드들을 메모리 디바이스들(130)에 액세스하기 위한 커맨드 명령들로 변환할 뿐만 아니라 메모리 디바이스들(130)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
메모리 서브 시스템(110)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트를 포함할 수 있다. 일부 실시예에서, 메모리 서브 시스템(110)은 캐시 또는 버퍼(예를 들어, DRAM) 및 메모리 서브 시스템 컨트롤러(115)로부터 어드레스를 수신하고 메모리 디바이스(130)에 액세스하기 위해 어드레스를 디코딩할 수 있는 어드레스 회로부(예를 들어, 행 디코더 및 열 디코더)를 포함할 수 있다.
일부 실시예들에서, 메모리 디바이스들(130)은 메모리 디바이스들(130)의 하나 이상의 메모리 셀에 대한 동작들을 실행하기 위해 메모리 서브 시스템 컨트롤러(115)와 함께 동작하는 로컬 매체 컨트롤러들(135)을 포함한다. 외부 컨트롤러(예를 들어, 메모리 서브 시스템 컨트롤러(115))는 메모리 디바이스(130)를 외부에서 관리(예를 들어, 메모리 디바이스(130)에 대한 매체 관리 동작을 수행)할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 다이 상의 제어 로직(예를 들어, 로컬 컨트롤러(132))을 갖는 원래의(raw) 메모리 디바이스(130) 및 동일한 메모리 디바이스 패키지 내의 매체 관리를 위한 컨트롤러(예를 들어, 메모리 서브 시스템 컨트롤러(115))를 포함하는 관리형 메모리 디바이스이다. 관리형 메모리 디바이스의 예는 관리된 NAND(MNAND) 디바이스이다.
메모리 서브 시스템(110)은 메모리 디바이스(130)에 메모리 액세스 커맨드를 발행할 수 있는 메모리 액세스 커맨드 관리자(113)를 포함한다. 일부 실시예들에서, 메모리 서브 시스템 컨트롤러(115)는 메모리 관리 컴포넌트(113)의 적어도 일부를 포함한다. 일부 실시예들에서, 메모리 액세스 커맨드 관리자(113)는 호스트 시스템(110), 애플리케이션 또는 운영 체제의 일부이다. 다른 실시예들에서, 로컬 매체 컨트롤러(135)는 메모리 액세스 커맨드 관리자(113)의 적어도 일부를 포함하고 본 명세서에 설명된 기능을 수행하도록 구성된다.
메모리 액세스 커맨드 관리자(113)는 메모리 서브 시스템 컨트롤러(115) 및/또는 호스트(120)로부터 수신된 메모리 액세스 커맨드를 추적하기 위해 메모리 액세스 커맨드 데이터 구조("컨트롤러 커맨드 데이터 구조")를 유지할 수 있다. 컨트롤러 커맨드 데이터 구조는 메모리 디바이스(130)의 각각의 다이에 대한 다이별(per-die) 커맨드 큐, 메모리 디바이스(130)의 각각의 다이의 각각의 평면에 대한 평면별(per-plane) 커맨드 큐, 메모리 디바이스(130)의 다이들의 하나 이상의 세트에 대한 다이별-세트 큐(per-die-set queue), 또는 이들의 임의의 조합을 포함할 수 있다. 예를 들어, 각각의 커맨드 큐는 메모리 디바이스(130) 및/또는 메모리 디바이스(140)의 대응하는 평면에 발행된 계류중인 메모리 액세스 커맨드들(호스트 시스템(120) 메모리 액세스 커맨드들 및 메모리 서브 시스템 컨트롤러(115) 메모리 액세스 커맨드들)을 저장할 수 있다. 메모리 액세스 커맨드 관리자(113)는 어느 물리적 어드레스 또는 어드레스 범위 액세스가 메모리 액세스 커맨드에 의해 요청되는지를 결정함으로써 어느 커맨드 큐에 수신된 메모리 액세스 커맨드를 삽입할지를 결정할 수 있다.
메모리 액세스 커맨드 관리자(113)는 각 메모리 액세스 커맨드에 고유 식별자를 첨부할 수 있다. 고유 식별자는 메모리 서브 시스템 컨트롤러(115)가 메모리 액세스 커맨드를 추적하는 것을 허용할 수 있다. 메모리 액세스 커맨드 관리자(113)는 큐잉된 메모리 액세스 커맨드를 메모리 디바이스(130) 및/또는 메모리 디바이스(140)에 발송할 수 있다. 메모리 액세스 커맨드가 처리되는 것에 응답하여(예를 들어, 메모리 디바이스(130) 및/또는 메모리 디바이스(140)로부터 수신되고 호스트(120)로 전송된 판독 데이터, 메모리 디바이스(130) 및/또는 메모리 디바이스(140)에 기록된 데이터 등), 메모리 액세스 커맨드 관리자(113)는 컨트롤러 커맨드 데이터 구조로부터 대응하는 메모리 액세스 커맨드를 축출(evict)할 수 있다.
일부 실시예들에서, 메모리 액세스 커맨드 관리자(113)는 수신된 순서(예를 들어, FIFO)로 메모리 액세스 커맨드들을 처리할 수 있다. FIFO 구조를 구현함으로써, 메모리 액세스 커맨드 관리자(113)는 데이터 종속성들과 관련된 문제들을 방지할 수 있다. 데이터 종속성은 메모리 액세스 커맨드가 이전의 메모리 액세스 커맨드에 의해 동작되는 데이터를 지칭하는 상황이다. 예를 들어, 메모리 액세스 커맨드 관리자는 메모리 디바이스(130) 상의 물리적 어드레스에 저장된 데이터에 대한 기록 커맨드에 이어서 동일한 물리적 어드레스로부터의 데이터에 대한 판독 커맨드를 수신할 수 있다. 판독 커맨드가 기록 커맨드 이전에 수행되면, 기록 커맨드가 아직 처리되지 않았기 때문에, 판독 커맨드는 호스트 시스템(120)에 부정확한 데이터를 반환할 것이다.
일부 실시예들에서, 메모리 액세스 커맨드 관리자(113)는 2개 이상의 컨트롤러 커맨드 데이터 구조를 유지 및 관리할 수 있다. 2개 이상의 컨트롤러 커맨드 데이터 구조들 각각은 메모리 디바이스(130)의 다이들의 동일한 세트에 대한 또는 메모리 디바이스(130)의 다이들의 상이한 세트들에 대한 독립적인 평면별 커맨드 큐들을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 메모리 액세스 커맨드 관리자(113)는 높은 우선순위 데이터 구조 및 낮은 우선순위 데이터 구조를 유지 및 관리하여 하나의 일부 메모리 액세스 커맨드를 (더 낮은 우선순위 레벨의) 다른 메모리 액세스 커맨드보다 우선순위화할 수 있다. 설사 낮은 우선순위 메모리 액세스 커맨드가 높은 우선순위 메모리 액세스 커맨드 전에 메모리 액세스 커맨드 관리자(113)에 의해 수신되었더라도, 높은 우선순위 메모리 액세스 커맨드는 낮은 우선순위 메모리 액세스 커맨드 전에 메모리 액세스 커맨드 관리자(113)에 의해 처리(예를 들어, 메모리 디바이스(130) 및/또는 메모리 디바이스(140)에 발송)될 수 있다. 높은 우선순위 메모리 액세스 커맨드들은 호스트 시스템(120)에 의해 발행된 메모리 액세스 커맨드들일 수 있는 반면, 낮은 우선순위 메모리 액세스 커맨드들은 메모리 서브 시스템 컨트롤러에 의해 발행된 메모리 액세스 커맨드들(예를 들어, 가비지 수집, 웨어 레벨링, 불량 블록 관리, 블록 리프레시 동작들 등과 같은 유지 관리 동작들에 관한 메모리 액세스 커맨드들)일 수 있다. 높은 우선순위 메모리 액세스 커맨드들 및 낮은 우선순위 메모리 액세스 커맨드들이 예시적인 예들로서 사용된다. 각각의 메모리 액세스 커맨드는 우선순위 식별자(예를 들어, 높은 우선순위 식별자, 낮은 우선순위 식별자 등)를 포함할 수 있다. 우선순위 식별자는 수신된 메모리 액세스 커맨드를 높은 우선순위 데이터 구조 또는 낮은 우선순위 데이터 구조에 저장할지 여부를 나타낼 수 있다.
일부 실시예에서, 메모리 액세스 커맨드 관리자(113)는 트래픽 조정자(traffic arbiter)를 사용하여 메모리 디바이스(130 및/또는 140)로 높은 우선순위 데이터 구조로부터의 높은 우선순위 메모리 액세스 커맨드를 발송하는 것과 낮은 우선순위 데이터 구조로부터의 낮은 우선순위 메모리 액세스 커맨드를 발송하는 것 사이에서 조정할 수 있다. 일부 실시예들에서, 메모리 액세스 커맨드 관리자(113)는 특정 양의 높은 우선순위 메모리 액세스 커맨드들을 발송하는 것 대 특정 양의 낮은 우선순위 메모리 액세스 커맨드들을 발송하는 것 사이에서 조정하기 위한 비율 기법(ratio scheme)을 구현할 수 있다. 예를 들어, 5개의 메모리 액세스 커맨드마다, 메모리 액세스 커맨드 관리자(113)는 4개의 높은 우선순위 메모리 액세스 커맨드 및 하나의 낮은 우선순위 메모리 액세스 커맨드(80% 비율)를 발송할 수 있다. 비율은 메모리 서브 시스템(110)의 제조 및/또는 캘리브레이션 동안 미리 결정되거나, 메모리 서브 시스템(110)의 사용자에 의해 정의될 수 있다. 일부 실시예들에서, 비율 기법은 미리 결정된 조건에 기초하여 개시될 수 있다. 예를 들어, 메모리 액세스 커맨드 관리자(113)는 높은 우선순위 데이터 구조 및 낮은 우선순위 데이터 구조를 샘플링하여 높은 우선순위 데이터 구조 내의 높은 우선순위 메모리 액세스 커맨드들의 양 및 낮은 우선순위 데이터 구조 내의 낮은 우선순위 메모리 액세스 커맨드들의 양을 결정할 수 있다. 기준이 충족된 것에 응답하여, 메모리 액세스 커맨드 관리자(113)는 비율 기법을 인에이블 또는 디스에이블할 수 있다. 기준은 임계값을 초과하는 낮은 우선순위 메모리 액세스 커맨드들에 대한 높은 우선순위 커맨드들의 비율, 임계값을 초과하는 높은 우선순위 데이터 구조 내의 높은 우선순위 메모리 액세스 커맨드들의 양, 임계값을 초과하는 낮은 우선순위 데이터 구조 내의 낮은 우선순위 메모리 액세스 커맨드들의 양, 또는 이들의 임의의 조합을 포함할 수 있다.
메모리 서브 시스템(110)은 메모리 디바이스(130)에 대한 메모리 액세스 커맨드 큐들을 관리할 수 있는 큐 관리자(137)를 더 포함한다. 일부 실시예들에서, 큐 관리자(137)는 메모리 액세스 커맨드 관리자(113) 및/또는 메모리 서브 시스템 컨트롤러(115)의 일부이다. 일부 실시예에서, 큐 관리자(137)의 적어도 일부는 호스트 시스템(120), 애플리케이션 또는 운영 체제의 일부이다. 다른 실시예들에서, 로컬 매체 컨트롤러(135)는 큐 관리자(137)의 적어도 일부를 포함하고 본 명세서에 설명된 기능을 수행하도록 구성된다.
큐 관리자(137)는 메모리 디바이스(130)의 각각의 다이에 대해, 또는 메모리 디바이스(130)의 각각의 다이의 각각의 평면에 대해 커맨드 큐들의 하나 이상의 세트를 관리할 수 있다. 메모리 액세스 커맨드 관리자(113)와 마찬가지로, 큐 관리자(137)는 메모리 서브 시스템 컨트롤러(115)로부터 수신된 아직 처리되지 않은(outstanding) 메모리 액세스 커맨드들을 추적하기 위해 메모리 액세스 커맨드 데이터 구조(이하 "메모리 디바이스 커맨드 데이터 구조")를 유지할 수 있다. 메모리 디바이스 커맨드 데이터 구조는 메모리 디바이스(130)의 각각의 다이에 대한 평면별 커맨드 큐, 다이별 커맨드 큐, 또는 이들의 임의의 조합을 포함할 수 있다. 각각의 커맨드 큐는 메모리 디바이스(130)의 대응하는 평면에 발행된 계류중인 메모리 액세스 커맨드들을 저장할 수 있다. 큐 관리자(137)는 메모리 액세스 커맨드에 의해 어떤 물리적 어드레스 또는 어드레스 범위 액세스가 요청되는지를 결정함으로써, 메모리 액세스 커맨드 관리자(113)로부터 수신된 메모리 액세스 커맨드를 삽입할 커맨드 큐를 결정할 수 있다. 예를 들어, 호스트 커맨드는 메모리 서브 시스템 컨트롤러(115)에 의해 물리적 어드레스로 변환되는 논리적 어드레스를 제공할 수 있다. 물리적 어드레스는 식별된 다이, 평면 등을 포함할 수 있다. 예시적인 예로서, 메모리 디바이스(130)는 16개의 다이를 포함할 수 있으며, 각각의 다이는 4개의 평면들을 포함한다. 따라서, 큐 관리자(137)는 메모리 디바이스 커맨드 데이터 구조를 사용하여 64개의 평면(다이 당 4개의 평면 x 16개의 다이 = 64개의 평면)에 대한 메모리 액세스 커맨드를 관리할 수 있다.
각각의 평면은 적어도 하나의 메모리 액세스 커맨드를 저장할 수 있는 자신의 메모리 액세스 커맨드 큐(이하 "평면 큐(plane queue)")를 포함할 수 있다. 예를 들어, 각각의 평면 큐는 하나의 메모리 액세스 커맨드를 저장하기 위한 단일 엔트리, 2개의 메모리 액세스 커맨드들을 저장하기 위한 2개의 엔트리들, 또는 대응하는 양의 메모리 액세스 커맨드들을 저장하기 위한 2개 초과의 엔트리들을 포함할 수 있다. 각각의 평면 큐는 (예를 들어, 큐 관리자(137)로부터의 입력 없이) 다이에 의해 자율적으로 처리된다. 예를 들어, 평면 큐에서 2개의 계류중인 메모리 액세스 커맨드 중 하나를 처리한 것에 응답하여, 다이는 큐 관리자(137)로부터의 명령 없이 제2 계류중인 메모리 액세스 커맨드를 처리할 수 있다.
큐 관리자(137)는 메모리 액세스 커맨드 관리자(113)로부터 메모리 액세스 커맨드를 수신하고, 메모리 액세스 커맨드에 의해 참조되는 물리적 어드레스를 결정하고, 메모리 디바이스 커맨드 데이터 구조 내의 적절한 커맨드 큐에 메모리 액세스 커맨드를 삽입할 수 있다. 큐 관리자(137)는 또한 메모리 액세스 커맨드를 다이 및 채널 동작들의 세트로 변환하고, 메모리 액세스 커맨드를 적절한 평면 큐에 삽입되도록 메모리 디바이스(130) 상의 적절한 다이에 발송할 수 있다.
일부 실시예들에서, 큐 관리자(137)는 하나 이상의 통신 채널들을 사용하여 다이들에 메모리 액세스 커맨드들을 발송하고 다이들로부터 데이터를 수신할 수 있다. 통신 채널은, 예를 들어, 개방 NAND 플래시 인터페이스 ONFI 채널, 또는 큐 관리자(137)와 다이들 사이의 통신을 가능하게 할 수 있는 임의의 다른 채널을 포함할 수 있다. 일부 실시예들에서, 다수의 통신 채널들이 사용될 수 있으며, 여기서 각각의 통신 채널은 다이들의 특정 세트에 연결된다. 예를 들어, 메모리 디바이스(130)는 다이들의 2개의 세트를 포함할 수 있고, 제1 세트는 다이들 0, 2, 4 및 6을 포함하고, 제2 세트는 다이들 1, 3, 5 및 7을 포함한다. 큐 관리자(137)는 하나의 통신 채널을 사용하여 제1 세트의 다이들에 통신할 수 있고, 다른 통신 채널을 사용하여 제2 세트에 통신할 수 있다.
큐 관리자(137)는 하나 이상의 기법을 사용하여 메모리 디바이스 메모리 액세스 커맨드 구조로부터의 메모리 액세스 커맨드들을 처리할 수 있다. 일부 실시예들에서, 큐 관리자(137)는 라운드-로빈 기법(round-robin scheme)을 사용하여 메모리 액세스 커맨드들을 처리할 수 있으며, 여기서 큐 관리자(137)는 메모리 액세스 커맨드를 각각의 다이에 또는 세트의 각각의 다이에 발송하는 것을 사이클링한다. 예를 들어, 제1 다이 세트에 관하여, 큐 관리자(137)는 메모리 액세스 커맨드를 다이 0, 그 다음 다이 2, 그 다음 다이 4, 그 다음 다이 6, 그 다음 다이 0에 다시 발송할 수 있다. 일부 실시예들에서, 큐 관리자(137)는 메모리 액세스 커맨드들을 발송하기 위한 사이클, 이어서 다이 세트로부터의 데이터에 대해(예를 들어, 판독 커맨드로부터의 데이터에 대해) 청취하기 위한 사이클을 포함할 수 있다. 일부 실시예들에서, 큐 관리자(137)는 다수의 통신 채널들을 통해 메모리 액세스 커맨드들을 병렬로 발송할 수 있다.
일부 실시예들에서, 각각의 다이는 메모리 액세스 커맨드 셋업 동작들(예를 들어, 큐 관리자(137)로부터 메모리 액세스 커맨드들을 수신하고, 메모리 디바이스 커맨드 데이터 구조의 적절한 평면 큐에 메모리 액세스 커맨드들을 삽입하는 것) 및 데이터 전송 동작들(예를 들어, 평면 큐로부터 메모리 액세스 커맨드들을 처리하는 것)을 동시에 수행할 수 있다. 특히, 큐 관리자(137)는 평면 큐가 계류 중인 메모리 액세스 커맨드를 처리하는 동안 새로운 메모리 액세스 커맨드를 평면 큐에 삽입할 수 있다. 예시적인 예에서, 다이의 평면 큐는 계류 중인 커맨드를 포함할 수 있다. 계류중인 메모리 액세스 커맨드를 처리하는 동안, 다이는 큐 관리자(137)로부터 새로운 메모리 액세스 커맨드를 수신할 수 있다. 다이는 계류중인 메모리 액세스 커맨드의 실행을 중단하지 않고 새로운 메모리 액세스 커맨드를 평면 큐에 삽입할 수 있다. 일부 실시예들에서, 다이는 메모리 서브 시스템 컨트롤러(115)에 대한 통신 채널이 자유롭고, 평면 큐가 새로운 메모리 액세스 커맨드를 기록하는데 이용 가능한 적어도 하나의 빈 엔트리를 갖는 한 새로운 메모리 액세스 커맨드들을 수신하여 커맨드 큐에 삽입할 수 있다.
일부 실시예들에서, 단일 메모리 액세스 커맨드는 다이의 다수의 평면들에 걸쳐 있는 메모리 어드레스 범위(이하, "다중 평면 메모리 액세스 커맨드(multi-plane memory access command)")를 포함할 수 있다. 큐 관리자(137)는 다중 평면 메모리 액세스 커맨드를 수신하면, 다중 평면 메모리 액세스 커맨드의 어드레스 범위에 대응하는 둘 이상의 평면 큐에 다중 평면 메모리 액세스 커맨드를 삽입할 수 있다. 예를 들어, 평면 1 및 평면 2의 어드레스 공간에 위치된 어드레스 범위를 포함하는 판독 커맨드를 수신한 것에 응답하여, 큐 관리자(137)는 판독 커맨드를 평면 1의 평면 큐 및 평면 2의 평면 큐에 삽입할 수 있다. 다중 평면 판독 커맨드와 관련하여, 각 평면은 판독 커맨드에 의해 요청된 부분 데이터를 반환할 수 있다. 이에 응답하여, 큐 관리자(137)는 각 평면으로부터 검색된 부분 데이터를 병합하기 위해 조립 동작을 수행할 수 있다. 다중 평면 기록 커맨드들에 관련하여, 큐 관리자(137)는 기록 커맨드를 각각이 기록 커맨드의 데이터의 일부를 포함하는 다수의 기록 커맨드들로 분할할 수 있다. 다수의 기록 커맨드들 각각은 적절한 평면 큐에 삽입될 수 있다.
일부 실시예에서, 큐 관리자(137)는 다중 평면 메모리 액세스 커맨드에 관한 규칙의 세트를 구현할 수 있다. 일부 실시예들에서, 큐 관리자(137)는 다중 평면 메모리 액세스 커맨드에 의해 어드레싱된 대응하는 평면들의 평면 큐들이 비어 있을 때에만(예를 들어, 평면 큐들이 클록 아웃(clock out)할 계류중인 메모리 액세스 커맨드들 또는 데이터를 갖지 않을 때) 다중 평면 메모리 액세스 커맨드들을 다이에 발송할 수 있다. 일부 실시예들에서, 큐 관리자(137)는 평면 큐가 다중 평면 커맨드를 포함할 때 단일 평면 메모리 액세스 커맨드들만을 평면 큐에 삽입할 수 있다. 일부 실시예들에서, 큐 관리자(137)는 높은 우선순위 메모리 액세스 커맨드들만을 계류 중인 메모리 액세스 커맨드를 갖는 평면 큐에 삽입할 수 있다.
일부 실시예에서, 큐 관리자(137) 및/또는 다이의 처리 유닛은 커맨드 동작의 처리를 중단할 수 있다. 예를 들어, 큐 관리자(137) 및/또는 다이의 처리 유닛은 하나 이상의 블록에 데이터를 기록하는 것, 하나 이상의 블록으로부터 데이터를 판독하는 것, 하나 이상의 블록으로부터 데이터를 소거하는 것 등을 중단할 수 있다. 일부 실시예들에서, 큐 관리자(137) 및/또는 다이의 처리 유닛은 다이 당 및/또는 평면 당 얼마나 많은 메모리 액세스 커맨드들이 중단될 수 있는지에 대한 제한들을 포함할 수 있다. 예를 들어, 다이 0이, 낮은 우선순위 메모리 액세스 커맨드로부터 큐 관리자(137)로 데이터를 발송하는 동작 동안, 통신 채널을 통해 다이 2로부터 큐 관리자(137)로 높은 우선순위 메모리 액세스 커맨드를 발송하기 위해 동작은 중단될 수 있다. 일단 높은 우선순위 메모리 액세스 커맨드가 발송되면, 다이의 처리 유닛은 다이 0으로부터 큐 관리자(137)로 데이터를 발송함으로써 원래의 커맨드 동작을 재개할 수 있다.
일부 실시예들에서, 다이의 처리 유닛(예를 들어, 로컬 매체 컨트롤러(135))은 평면 큐에 위치된 메모리 액세스 커맨드를 축출할 수 있다. 예를 들어, 평면 큐는 특정 어드레스 공간으로 어드레싱되는 기록 커맨드를 저장할 수 있다. 그런 다음, 다이는 평면 큐에서 이전에 수신된 기록 커맨드와 동일한 어드레스 공간에 어드레싱되는 새로운 기록 커맨드를 평면 큐에 삽입할 수 있다. 따라서, 다이는 이전에 수신된 기록 커맨드를 축출할 수 있다.
일부 실시예에서, 다이의 처리 유닛은 데이터 액세스 커맨드의 우선순위에 기초하여 평면 큐에서 하나 이상의 데이터 액세스 커맨드의 실행을 우선순위화할 수 있다. 예를 들어, 큐 관리자(137)는 먼저 낮은 우선순위 판독 커맨드를 평면 큐에 삽입하고, 이어서 높은 우선순위 판독 커맨드를 평면 큐에 삽입할 수 있다. 다이의 처리 유닛은 각각의 판독 커맨드의 우선순위들을 식별하고, 낮은 우선순위 판독 커맨드를 실행하기 전에 높은 우선순위 판독 커맨드를 실행할 수 있다.
일부 실시예들에서, 다이의 처리 유닛은 판독 커맨드들이 수신된 순서와 상이한 순서로 다수의 판독 커맨드들로부터 데이터를 발송할 수 있다. 일부 실시예들에서, 다이는 우선순위 레벨에 기초하여 데이터를 클록 아웃할 수 있다. 예를 들어, 다이는 2개의 판독 커맨드 데이터를 수신할 수 있다. 다이는 판독 커맨드들을 적절한 평면 큐에 삽입할 수 있다. 판독 커맨드는 동일한 평면 큐에, 또는 상이한 평면 큐들에 삽입될 수 있다. 다이는 (낮은 우선순위를 갖는) 이전에 수신된 판독 커맨드를 처리할 수 있지만, 통신 채널이 사용 중이기 때문에 판독 커맨드에 관한 데이터를 클록 아웃할 수 없다. 다이는 그런 다음 나중에 수신된 판독 커맨드(높은 우선순위를 가짐)를 처리할 수 있다. 통신 채널이 자유로워지는 것에 응답하여, 다이는 나중에 수신된 판독 커맨드가 이전에 수신된 판독 커맨드보다 더 높은 우선순위를 갖기 때문에 나중에 수신된 판독 커맨드의 데이터를 먼저 클록 아웃할 수 있다. 평면 큐들 및 큐 관리기(137)의 동작들에 관한 추가적인 세부사항들은 이하에서 설명된다.
도 2는 본 개시의 일부 실시예들에 따른 메모리 액세스 커맨드 큐들을 활용하기 위해 수행되는 프로세스들을 예시하는 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스 상에서 실행되거나 실행되는 명령) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예에서, 방법(200)은 도 1의 큐 관리자(137)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하고, 예시된 프로세스들은 상이한 순서로 수행될 수 있고, 일부 프로세스들은 병렬로 수행될 수 있다. 추가적으로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다.
동작(210)에서, 처리 로직은 메모리 액세스 커맨드를 수신할 수 있다. 예를 들어, 처리 로직은 기록 커맨드, 판독 커맨드, 소거 커맨드 등을 수신할 수 있다. 메모리 액세스 커맨드는 호스트 개시되거나 메모리 서브 시스템 컨트롤러가 개시될 수 있다. 일부 실시예들에서, 메모리 액세스 커맨드는 메모리 서브 시스템 컨트롤러(115)가 메모리 액세스 커맨드를 추적할 수 있게 하는 고유 식별자를 포함할 수 있다. 일부 실시예에서, 메모리 액세스 커맨드는 우선순위 식별자(예를 들어, 높은 우선순위 식별자, 낮은 우선순위 식별자 등)를 포함할 수 있다.
동작(220)에서, 처리 로직은 메모리 액세스 커맨드와 연관된 물리적 어드레스를 결정할 수 있다. 실시예들에서, 물리적 어드레스는 단일 평면의 어드레스 공간에 위치될 수 있다. 일부 실시예들에서, 물리적 어드레스는 다이 상의 다수의 평면들의 어드레스 공간에 위치될 수 있다.
동작(230)에서, 처리 로직은 물리적 어드레스에 의해 참조되는 메모리 디바이스 상의 다이의 평면을 결정할 수 있다. 예를 들어, 처리 로직은 어느 다이의 어느 평면이 어드레스 공간을 포함하는지를 결정하기 위해 테이블을 사용할 수 있다.
동작(240)에서, 처리 로직은 메모리 액세스 커맨드를 평면과 연관된 큐에 삽입할 수 있다. 일부 실시예들에서, 큐는 2개 이상의 메모리 액세스 커맨드들을 저장할 수 있다.
동작(250)에서, 처리 로직은 큐로부터의 메모리 액세스 커맨드를 처리할 수 있다. 일 예에서, 메모리 액세스 커맨드가 기록 커맨드인 것에 응답하여, 처리 로직은 기록 커맨드의 데이터를 평면 상의 어드레스 공간에 기록할 수 있다. 다른 예에서, 메모리 액세스 커맨드가 판독 커맨드인 것에 응답하여, 처리 로직은 기록 커맨드의 데이터를 평면 상의 어드레스 공간으로 검색하고, 검색된 데이터를 메모리 서브 시스템 컨트롤러에 발송할 수 있다.
도 3은 본 개시의 일부 실시예들에 따른 4개의 평면 큐들로 구조화된 다이(300)의 예시이다. 일부 실시예들에서, 다이(310)는 평면 A(332), 평면 B(342), 평면 C(352), 및 평면 D(362)를 포함할 수 있다. 평면들 각각은 평면 큐를 포함할 수 있다. 도시된 바와 같이, 평면 A(332)는 큐 A(334)를 포함하고, 평면 B(342)는 평면 B(344)를 포함하고, 평면 C(352)는 큐 C(354)를 포함하고, 평면 D(362)는 큐 D(364)를 포함한다. 각각의 평면 큐는 처리를 위해 메모리 액세스 커맨드들이 삽입될 수 있는 2개의 엔트리들을 포함한다. 도시된 바와 같이, 평면 A(334)는 엔트리 A-1(336) 및 엔트리 A-2(338)를 포함하고, 평면 B(344)는 엔트리 B-1(346) 및 엔트리 B-2(348)를 포함하고, 평면 C(354)는 엔트리 C-1(356) 및 엔트리 C-2(358)를 포함하고, 평면 D(364)는 엔트리 D-1(366) 및 엔트리 D-2(368)를 포함한다. 1차 데이터 캐시 A(372), 1차 데이터 캐시 B(374), 1차 데이터 캐시 C(376), 및 2차 데이터 캐시 D(378)는 각각 평면들의 큐들과 블록들 사이로부터 데이터를 이동시키기 위한 하나 이상의 레지스터들을 포함할 수 있다.
도 4는 본 개시의 일부 실시예들에 따른 메모리 액세스 커맨드 관리자(413) 및 메모리 디바이스(480)를 포함하는 예시적인 컴퓨팅 시스템(400)을 예시한다. 메모리 디바이스(480)는 8개의 다이(다이 0(480), 다이 1(481), 다이 2(482), 다이 3(483), 다이 4(484), 다이 5(485), 다이 6(486), 다이 7(487))를 포함할 수 있다. 각각의 다이는 둘 이상의 평면들을 포함할 수 있다. 각각의 다이는 대응하는 평면 큐 세트(예를 들어, 다이 0 큐(460), 다이 1 큐(461), 다이 2 큐(462), 다이 3 큐(463), 다이 4 큐(464), 다이 5 큐(465), 다이 6 큐(466), 다이 7 큐(467))를 포함할 수 있다. 각각의 평면 큐는 메모리 액세스 커맨드 관리자(413)에 의해 메모리 디바이스(480)의 대응하는 다이의 평면에 발행된 계류중인 메모리 액세스 커맨드들을 저장할 수 있다. 각각의 평면 큐는 처리를 위해 메모리 액세스 커맨드들이 삽입될 수 있는 적어도 2개의 엔트리들을 포함한다.
컴퓨팅 시스템(400)은 메모리 액세스 커맨드 관리자(413)와 통신할 수 있는 호스트 시스템(미도시)을 더 포함할 수 있다. 호스트 시스템(예를 들어, 호스트 시스템(120))은 메모리 액세스 커맨드를 메모리 액세스 커맨드 관리자(413)에 발송할 수 있다.
메모리 액세스 커맨드 관리자(413)는 메모리 액세스 커맨드 관리자(113)와 유사할 수 있다. 메모리 액세스 커맨드 관리자(413)는 높은 우선순위 데이터 구조(420), 낮은 우선순위 데이터 구조(425), 및 큐 관리자(452), 트래픽 조정자(448), 및 트래픽 조정자(470)를 포함할 수 있다. 높은 우선순위 데이터 구조(420)는 메모리(475)의 각각의 다이에 대한 높은 우선순위 커맨드들을 저장하도록 구성될 수 있다. 도시된 바와 같이, 높은 우선순위 데이터 구조(420)는 메모리 디바이스(480)의 각각의 다이에 대해 하나씩, 8개의 커맨드 큐(예를 들어, 다이 0 큐(430), 다이 1 큐(431), 다이 2 큐(432), 다이 3 큐(433), 다이 4 큐(434), 다이 5 큐(435), 다이 6 큐(436), 다이 7 큐(437))를 포함한다. 낮은 우선순위 데이터 구조(425)는 또한 메모리 디바이스(480)의 각각의 다이에 대해 하나씩, 8개의 커맨드 큐(예를 들어, 다이 0 큐(440), 다이 1 큐(441), 다이 2 큐(442), 다이 3 큐(443), 다이 4 큐(444), 다이 5 큐(445), 다이 6 큐(446), 다이 7 큐(447))를 포함한다. 각각의 메모리 액세스 커맨드는 수신된 메모리 액세스 커맨드를 높은 우선순위 데이터 구조(420) 또는 낮은 우선순위 데이터 구조(425)에 저장할지 여부를 표시하기 위해 우선순위 식별자(예를 들어, 높은 우선순위 식별자, 낮은 우선순위 식별자 등)를 포함할 수 있다. 트래픽 조정자(448)는 큐 관리자(452)로 높은 우선순위 데이터 구조(420)로부터의 높은 우선순위 메모리 액세스 커맨드를 발송하는 것과 낮은 우선순위 데이터 구조(425)로부터의 낮은 우선순위 메모리 액세스 커맨드를 발송하는 것 사이에서 조정할 수 있다. 예를 들어, 트래픽 조정자(448)는 특정 양의 높은 우선순위 커맨드들을 발송하는 것 대 특정 양의 낮은 우선순위 메모리 액세스 커맨드들을 발송하는 것 사이에서 조절하기 위한 비율 기법(ratio scheme)을 구현할 수 있다.
큐 관리자(452)는 트래픽 조정자(448)로부터 수신된 해결되지 않은 메모리 액세스 커맨드들을 추적하기 위해 메모리 디바이스 메모리 액세스 커맨드 구조(도시되지 않음)를 관리할 수 있다. 트래픽 조정자(470)는 하나 이상의 기법을 사용하여 메모리 디바이스 메모리 액세스 커맨드 구조로부터 메모리 액세스 커맨드를 처리할 수 있다. 일부 실시예들에서, 트래픽 조정자(470)는 라운드-로빈 기법을 사용하여 메모리 액세스 커맨드들을 처리할 수 있으며, 여기서 트래픽 조정자(470)는 메모리 액세스 커맨드를 각각의 다이에 또는 세트의 각각의 다이에 발송하는 것을 사이클링한다. 예를 들어, 다이들의 제 1 세트에 관하여, 트래픽 조정자(470)는 메모리 액세스 커맨드를 다이 0(480), 그 다음 다이 2(482), 그 다음 다이 4(484), 그 다음 다이 6(486), 그 다음 다이 0으로 다시 발송할 수 있다. 일부 실시예들에서, 트래픽 조정자(470)는 메모리 액세스 커맨드들을 발송하기 위한 사이클, 이어서 다이 세트로부터의 데이터(예를 들어, 판독 커맨드로부터의 데이터에 대해)를 청취하기 위한 사이클을 포함할 수 있다. 메모리(475)의 처리 디바이스는 각각의 메모리 액세스 커맨드를 적절한 다이에 대한 적절한 평면 큐에 삽입할 수 있다.
일부 실시예들에서, 트래픽 조정자(470)는 통신 채널(472)을 사용하여 메모리 디바이스(480)의 다이들에 메모리 액세스 커맨드들을 발송하고 그로부터 데이터를 수신할 수 있다. 일부 실시예들에서, 다수의 통신 채널들이 사용될 수 있으며, 여기서 각각의 통신 채널은 다이들의 특정 세트에 연결된다. 예를 들어, 제1 다이 세트는 다이 0(480), 다이 2(482), 다이 4(484) 및 다이 6(486)을 포함하고, 제2 다이 세트는 다이 1(481), 다이 3(483), 다이 5(485) 및 다이 7(487)을 포함한다. 트래픽 조정자(470)는 하나의 통신 채널을 사용하여 다이들의 제 1 세트에 통신할 수 있고, 다른 통신 채널을 사용하여 다이들의 제 2 세트에 통신할 수 있다.
도 5는 기계로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령들의 세트가 실행될 수 있는 컴퓨터 시스템(500)의 예시적인 기계를 예시한다. 일부 실시예들에서, 컴퓨터 시스템(500)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나 컨트롤러의 동작들을 수행하는 데(예를 들어, 도 1의 메모리 액세스 커맨드 관리자(113)에 대응하는 동작들을 수행하기 위해 운영 체제를 실행하는 데) 사용될 수 있다. 대안 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷의 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계로서, 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 기계로서, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서 서버 또는 클라이언트 기계로서 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인 휴대 정보 단말기(PDA), 셀룰러 전화, 웹 어플라이언스(web appliance), 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 기계에 의해 취해질 액션들을 지정하는 명령들의 세트(순차적 또는 다른 방식)를 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 예시되어 있지만, 용어 "기계"는 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 기계들의 임의의 집합을 포함하는 것으로 간주되어야 한다.
예시적인 컴퓨터 시스템(500)은 버스(530)를 통해 서로 통신하는, 처리 디바이스(502), 메인 메모리(504)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 예컨대 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM) 등), 정적 메모리(506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(518)을 포함한다. 처리 디바이스(502)는 마이크로프로세서, 중앙 처리 유닛 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 보다 구체적으로, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령 세트들을 구현하는 프로세서, 또는 명령 세트들의 조합을 구현하는 프로세서들일 수 있다. 처리 디바이스(502)는 또한 ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(502)는 본 명세서에서 논의된 동작들 및 단계들을 수행하기 위한 명령들(526)을 실행하도록 구성된다. 컴퓨터 시스템(500)은 네트워크(520)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(508)를 더 포함할 수 있다.
데이터 저장 시스템(518)은 본 명세서에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 명령들(526)의 하나 이상의 세트 또는 소프트웨어가 저장되는 기계 판독가능 저장 매체(524)(컴퓨터 판독가능 매체로도 알려짐)를 포함할 수 있다. 명령들(526)은 또한 컴퓨터 시스템(500)에 의한 그의 실행 동안 메인 메모리(504) 내에 및/또는 처리 디바이스(502) 내에 완전히 또는 적어도 부분적으로 상주할 수 있고, 메인 메모리(504) 및 처리 디바이스(502)는 또한 기계 판독가능 저장 매체를 구성한다. 기계 판독 가능 저장 매체(524), 데이터 저장 시스템(518) 및/또는 메인 메모리(504)는 도 1의 메모리 서브 시스템(110)에 대응할 수 있다.
일 실시예에서, 명령들(526)은 도 1의 메모리 액세스 커맨드 관리자(113)에 대응하는 기능을 구현하기 위한 명령들을 포함한다. 기계 판독가능 저장 매체(524)가 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, 용어 "기계 판독가능 저장 매체"는 명령들의 하나 이상의 세트를 저장하는 단일 매체 또는 다수의 매체를 포함하는 것으로 간주되어야 한다. 용어 "기계 판독가능 저장 매체"는 또한 기계에 의한 실행을 위한 명령들의 세트를 저장 또는 인코딩할 수 있고 기계로 하여금 본 개시의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, 용어 "기계 판독가능 저장 매체"는 솔리드 스테이트 메모리들, 광학 매체, 및 자기 매체를 포함하지만 이에 제한되지 않는 것으로 간주되어야 한다.
전술한 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 알고리즘들 및 심볼 표현들의 관점에서 제시되었다. 이러한 알고리즘 설명 및 표현은 데이터 처리 분야의 숙련자가 해당 작업의 내용을 해당 분야의 숙련자에게 가장 효과적으로 전달하는 방법이다. 알고리즘은 본원에서 일반적으로 원하는 결과를 가져오는 일관된 작업 시퀀스로 고안되었다. 동작은 물리량의 물리적 조작이 필요한 작업이다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 양은 저장, 결합, 비교 및 달리 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 때때로, 주로 공통 사용의 이유로, 이들 신호를 비트, 값, 엘리먼트, 심볼, 문자, 용어, 숫자 등으로서 지칭하는 것이 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관되어야 하고 이들 양들에 적용되는 편리한 라벨들에 불과하다는 것을 명심해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자) 양들로서 표현된 데이터를 조작하고 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장 시스템들 내의 물리적 양들로서 유사하게 표현된 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스들을 지칭할 수 있다.
본 개시는 또한 본 명세서에서의 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 예컨대, 플로피 디스크들, 광학 디스크들, CD-ROM들, 및 자기-광학 디스크들, 판독-전용 메모리들(ROM들), 랜덤 액세스 메모리들(RAM들), EPROM들, EEPROM들, 자기 또는 광학 카드들을 포함하는 임의의 유형의 디스크, 또는 전자 명령들을 저장하기에 적합한 임의의 유형의 매체에 그러나 이에 제한되지 않는 컴퓨터 판독가능 저장 매체에 저장될 수 있고, 각각은 컴퓨터 시스템 버스에 결합된다.
본 명세서에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들이 본 명세서의 교시들에 따른 프로그램들과 함께 사용될 수 있거나, 또는 방법을 수행하기 위해 더 전문화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 이러한 다양한 시스템들에 대한 구조는 아래의 설명에서 제시된 바와 같이 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본 명세서에 설명된 바와 같은 본 개시의 교시들을 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하도록 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하는 데 사용될 수 있는 명령들이 저장된 기계 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 기계 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스 등과 같은 기계(예를 들어, 컴퓨터) 판독가능 저장 매체를 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구항들에 기재된 바와 같은 본 개시의 실시예들의 더 넓은 사상 및 범위를 벗어나지 않고 그에 대해 다양한 수정들이 이루어질 수 있다는 것이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 시스템으로서,
    메모리 디바이스; 및
    처리 디바이스를 포함하되, 상기 처리 디바이스는 상기 메모리 디바이스와 동작 가능하게 결합되어,
    메모리 액세스 커맨드를 수신하고;
    상기 메모리 액세스 커맨드와 연관된 물리적 어드레스를 결정하고;
    상기 물리적 어드레스에 의해 참조되는 상기 메모리 디바이스 상의 다이의 평면(plane)을 결정하고;
    상기 메모리 액세스 커맨드를 상기 평면과 연관된 큐(queue)에 삽입하고; 및
    상기 큐로부터 상기 메모리 액세스 커맨드를 처리하는 것을 포함하는 동작을 수행하는, 시스템.
  2. 제1항에 있어서, 상기 처리 디바이스는,
    상기 메모리 액세스 커맨드의 우선순위를 결정하고; 및
    상기 우선순위에 따라 상기 메모리 액세스 커맨드를 처리하는 것을 포함하는 추가 동작을 수행하는, 시스템.
  3. 제1항에 있어서, 상기 처리 디바이스는,
    물리적 어드레스에 의해 참조되는 메모리 액세스 커맨드를 수신한 것에 응답하여, 상기 동일한 물리적 어드레스에 의해 참조되는 큐에 위치된 다른 메모리 액세스 커맨드를 축출하는 것(evicting)을 포함하는 추가 동작을 수행하는, 시스템.
  4. 제1항에 있어서, 상기 처리 디바이스는,
    상기 큐로부터 다음 메모리 액세스 커맨드를 처리하고 - 상기 추가 메모리 액세스 커맨드는 상기 메모리 액세스 커맨드가 상기 큐에 삽입된 후에 상기 큐에 삽입됨 -; 및
    상기 메모리 액세스 커맨드와 연관된 데이터를 발송하기 전에 상기 추가 메모리 액세스 커맨드와 연관된 데이터를 발송하는 것을 포함하는 추가 동작을 수행하는, 시스템.
  5. 제1항에 있어서, 상기 처리 디바이스는,
    상기 큐로부터 상기 메모리 액세스 커맨드의 처리를 중단하고;
    상기 큐로부터 추가 메모리 액세스 커맨드를 처리하고; 및
    상기 큐로부터 상기 메모리 액세스 커맨드 처리를 재개하는 것을 포함하는 추가 동작을 수행하는, 시스템.
  6. 제1항에 있어서, 상기 처리 디바이스는,
    높은 우선순위 데이터 구조 또는 낮은 우선순위 데이터 구조 중 적어도 하나로부터 상기 메모리 액세스 커맨드를 수신하는 것을 포함하는 추가 동작을 수행하고, 각각의 데이터 구조는 상기 메모리 디바이스의 각각의 다이에 대한 다이별 커맨드 큐, 상기 메모리 디바이스의 각각의 다이의 각각의 평면에 대한 평면별 커맨드 큐, 또는 상기 메모리 디바이스의 다이들의 하나 이상의 세트들에 대한 다이별-세트 큐(per-die-set queue) 중 적어도 하나를 포함하는, 시스템.
  7. 제6항에 있어서, 상기 메모리 액세스 커맨드는 제1 양의 높은 우선순위 커맨드들을 발송하는 것 대 제2 양의 낮은 우선순위 메모리 액세스 커맨드들을 발송하는 것 사이에서 조절하는 기법에 기초하여 수신되는, 시스템.
  8. 방법에 있어서,
    메모리 액세스 커맨드를 수신하는 단계;
    상기 메모리 액세스 커맨드와 연관된 어드레스 범위를 결정하는 단계;
    상기 어드레스 범위에 의해 참조되는 메모리 디바이스 상의 다이의 적어도 2개의 평면을 결정하는 단계; 및
    상기 메모리 액세스 커맨드의 상이한 부분들을 복수의 큐들 각각에 삽입하는 단계 - 상기 복수의 큐들 각각은 상기 복수의 평면들의 개개의 평면과 연관됨 -; 및
    상기 복수의 큐 각각으로부터 상기 메모리 액세스 커맨드를 처리하는 단계를 포함하는, 방법.
  9. 제8항에 있어서,
    상기 메모리 액세스 커맨드의 우선순위를 결정하는 단계; 및
    상기 우선순위에 기초하여 상기 메모리 액세스 커맨드를 처리하는 단계를 더 포함하는, 방법.
  10. 제8항에 있어서,
    물리적 어드레스에 의해 참조되는 메모리 액세스 커맨드를 수신한 것에 응답하여, 동일한 물리적 어드레스에 의해 참조되는 큐에 위치된 다른 메모리 액세스 커맨드를 축출하는 단계를 더 포함하는, 방법.
  11. 제8항에 있어서,
    상기 복수의 큐들 중 하나의 큐로부터 다음 메모리 액세스 커맨드를 처리하는 단계 - 상기 추가 메모리 액세스 커맨드는 상기 메모리 액세스 커맨드가 상기 큐에 삽입된 후에 상기 큐에 삽입됨 -; 및
    상기 메모리 액세스 커맨드와 연관된 데이터를 발송하기 전에 상기 추가 메모리 액세스 커맨드와 연관된 데이터를 발송하는 단계를 더 포함하는, 방법.
  12. 제8항에 있어서,
    상기 큐로부터 상기 메모리 액세스 커맨드의 처리를 중단하는 단계;
    상기 큐로부터 추가 메모리 액세스 커맨드를 처리하는 단계; 및
    상기 큐로부터 상기 메모리 액세스 커맨드 처리를 재개하는 단계를 더 포함하는, 방법.
  13. 제1항에 있어서,
    높은 우선순위 데이터 구조 또는 낮은 우선순위 데이터 구조 중 적어도 하나로부터 상기 메모리 액세스 커맨드를 수신하는 단계를 더 포함하고, 각각의 데이터 구조는 상기 메모리 디바이스의 각각의 다이에 대한 다이별 커맨드 큐, 상기 메모리 디바이스의 각각의 다이의 각각의 평면에 대한 평면별 커맨드 큐, 또는 상기 메모리 디바이스의 다이들의 하나 이상의 세트들에 대한 다이별-세트 큐 중 적어도 하나를 포함하는, 방법.
  14. 제13항에 있어서, 상기 메모리 액세스 커맨드는 제1 양의 높은 우선순위 커맨드들을 발송하는 것 대 제2 양의 낮은 우선순위 메모리 액세스 커맨드들을 발송하는 것 사이에서 조절하는 기법에 기초하여 수신되는, 방법.
  15. 명령들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 명령들은 메모리 디바이스에 동작가능하게 결합된 처리 디바이스에 의해 실행될 때,
    메모리 액세스 커맨드를 수신하는 단계;
    상기 메모리 액세스 커맨드와 연관된 물리적 어드레스를 결정하는 단계;
    상기 물리적 어드레스에 의해 참조되는 메모리 디바이스 상의 다이의 평면을 결정하는 단계;
    상기 메모리 액세스 커맨드를 상기 평면과 연관된 큐에 삽입하는 단계; 및
    상기 큐로부터 상기 메모리 액세스 커맨드를 처리하는 단계를 포함하는 동작을 수행하는, 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서, 상기 처리 디바이스는,
    상기 메모리 액세스 커맨드의 우선순위를 결정하는 단계; 및
    상기 우선순위에 따라 상기 메모리 액세스 커맨드를 처리하는 단계를 포함하는 추가 동작을 수행하는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제15항에 있어서, 상기 처리 디바이스는,
    물리적 어드레스에 의해 참조되는 메모리 액세스 커맨드를 수신한 것에 응답하여, 동일한 물리적 어드레스에 의해 참조되는 큐에 위치된 다른 메모리 액세스 커맨드를 축출하는 단계를 포함하는 추가 동작을 수행하는, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제15항에 있어서, 상기 처리 디바이스는,
    상기 큐로부터 다음 메모리 액세스 커맨드를 처리하는 단계 - 상기 추가 메모리 액세스 커맨드는 상기 메모리 액세스 커맨드가 상기 큐에 삽입된 후에 상기 큐에 삽입됨 -; 및
    상기 메모리 액세스 커맨드와 연관된 데이터를 발송하기 전에 추가 메모리 액세스 커맨드와 연관된 데이터를 발송하는 단계를 포함하는 추가 동작을 수행하는, 비일시적 컴퓨터 판독가능 저장 매체.
  19. 제15항에 있어서, 상기 처리 디바이스는,
    상기 큐로부터 메모리 액세스 커맨드의 처리를 중단하는 단계;
    상기 큐로부터 추가 메모리 액세스 커맨드를 처리하는 단계; 및
    상기 큐로부터 상기 메모리 액세스 커맨드 처리를 재개하는 단계를 포함하는 추가 동작을 수행하는, 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제15항에 있어서, 상기 처리 디바이스는,
    높은 우선순위 데이터 구조 또는 낮은 우선순위 데이터 구조 중 적어도 하나로부터 메모리 액세스 커맨드를 수신하는 단계를 포함하는 추가 동작을 수행하고, 각각의 데이터 구조는 상기 메모리 디바이스의 각각의 다이에 대한 다이별 커맨드 큐, 상기 메모리 디바이스의 각각의 다이의 각각의 평면에 대한 평면별 커맨드 큐, 또는 상기 메모리 디바이스의 다이들의 하나 이상의 세트들에 대한 다이별-세트 큐 중 적어도 하나를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020247007476A 2021-08-25 2022-08-24 메모리 디바이스에서 메모리 액세스 커맨드 큐를 사용하는 개선된 메모리 성능 KR20240043148A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/411,572 2021-08-25
US17/411,572 US11868655B2 (en) 2021-08-25 2021-08-25 Memory performance using memory access command queues in memory devices
PCT/US2022/041401 WO2023028163A1 (en) 2021-08-25 2022-08-24 Improved memory performance using memory access command queues in memory devices

Publications (1)

Publication Number Publication Date
KR20240043148A true KR20240043148A (ko) 2024-04-02

Family

ID=85285851

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247007476A KR20240043148A (ko) 2021-08-25 2022-08-24 메모리 디바이스에서 메모리 액세스 커맨드 큐를 사용하는 개선된 메모리 성능

Country Status (4)

Country Link
US (2) US11868655B2 (ko)
KR (1) KR20240043148A (ko)
CN (1) CN117836751A (ko)
WO (1) WO2023028163A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907577B2 (en) * 2021-12-06 2024-02-20 Western Digital Technologies, Inc. Command queuing for data storage devices

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8499293B1 (en) * 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US20080077727A1 (en) * 2006-09-25 2008-03-27 Baca Jim S Multithreaded state machine in non-volatile memory devices
KR20140031515A (ko) 2012-09-03 2014-03-13 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러를 포함하는 전자장치
US9092275B2 (en) * 2012-11-20 2015-07-28 International Business Machines Corporation Store operation with conditional push of a tag value to a queue
US10402319B2 (en) 2014-07-25 2019-09-03 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
KR20180045102A (ko) 2016-10-24 2018-05-04 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 저장 장치의 동작 방법
KR20190031693A (ko) * 2017-09-18 2019-03-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102406340B1 (ko) * 2018-02-26 2022-06-13 에스케이하이닉스 주식회사 전자 장치 및 그것의 동작 방법
KR102516547B1 (ko) * 2018-03-08 2023-04-03 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11237617B2 (en) * 2018-12-31 2022-02-01 Micron Technology, Inc. Arbitration techniques for managed memory
US10877696B2 (en) * 2019-03-28 2020-12-29 Intel Corporation Independent NAND memory operations by plane
US11269552B2 (en) * 2019-06-14 2022-03-08 Micron Technology, Inc. Multi-pass data programming in a memory sub-system having multiple dies and planes
CN112000276B (zh) * 2020-06-19 2023-04-11 浙江绍兴青逸信息科技有限责任公司 一种内存条
KR20220018351A (ko) * 2020-08-06 2022-02-15 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
US20220083266A1 (en) * 2020-09-16 2022-03-17 Kioxia Corporation Plane-based queue configuration for aipr-enabled drives

Also Published As

Publication number Publication date
US11868655B2 (en) 2024-01-09
CN117836751A (zh) 2024-04-05
WO2023028163A1 (en) 2023-03-02
US20230068605A1 (en) 2023-03-02
US20240103770A1 (en) 2024-03-28

Similar Documents

Publication Publication Date Title
US11113006B2 (en) Dynamic data placement for collision avoidance among concurrent write streams
WO2020227294A1 (en) Timed data transfer between a host system and a memory sub-system
US11294820B2 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
US11726690B2 (en) Independent parallel plane access in a multi-plane memory device
US20230161509A1 (en) Dynamic selection of cores for processing responses
US11698864B2 (en) Memory access collision management on a shared wordline
US11385820B2 (en) Command batching for a memory sub-system
US20240103770A1 (en) Improved memory performance using memory access command queues in memory devices
WO2021179164A1 (en) Maintaining queues for memory sub-systems
US20210303470A1 (en) Sequential prefetching through a linking array
US11720490B2 (en) Managing host input/output in a memory system executing a table flush
US11604732B1 (en) Memory performance during program suspend protocol
WO2021179163A1 (en) Methods, systems and readable storage mediums for managing queues of amemory sub-system
US11137943B2 (en) Internal commands for access operations
US11899972B2 (en) Reduce read command latency in partition command scheduling at a memory device
US11188473B1 (en) Cache release command for cache reads in a memory sub-system
US11886346B2 (en) Cache read context switching in a memory sub-system
US20230058232A1 (en) Partition command queues for a memory device
US20240070084A1 (en) Padding cached data with valid data for memory flush commands
US20230056808A1 (en) Managing package switching based on switching parameters