KR20220129662A - 순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화 - Google Patents

순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화 Download PDF

Info

Publication number
KR20220129662A
KR20220129662A KR1020227030921A KR20227030921A KR20220129662A KR 20220129662 A KR20220129662 A KR 20220129662A KR 1020227030921 A KR1020227030921 A KR 1020227030921A KR 20227030921 A KR20227030921 A KR 20227030921A KR 20220129662 A KR20220129662 A KR 20220129662A
Authority
KR
South Korea
Prior art keywords
command
data
physical address
memory
buffers
Prior art date
Application number
KR1020227030921A
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 KR20220129662A publication Critical patent/KR20220129662A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Read Only Memory (AREA)

Abstract

시스템은 버퍼들을 갖는 휘발성 메모리와 처리 디바이스를 포함한다. 커맨드 생성 프로세서는 호스트로부터 논리적 블록 어드레스(LBA)를 가진 판독 요청을 수신하고 물리적 어드레스에 매핑될 제1 LBA를 포함하는 제1 논리적 전송 유닛(LTU)을 생성한다. 커맨드 생성 프로세서는 제1 LTU가 LBA 어드레스 공간의 구역과 연관되어 있는지 결정하기 위해 플래그를 판독하며, 이 구역은 순차적 물리적 어드레스들에 순차적으로 매핑되는 순차적 LBA들을 포함한다. 커맨드 생성 프로세서는 처리 디바이스가 메모리 디바이스로부터 데이터를 검색하고 버퍼들의 세트에서 데이터를 저장하도록 지시하는 커맨드 태그들을 생성하고, 여기서 커맨드 태그들은 물리적 어드레스와 연관된 제1 커맨드 태그 및 물리적 어드레스를 순차적으로 뒤따르는 제2 물리적 어드레스와 연관된 제2 커맨드 태그를 포함한다.

Description

순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화
본 개시의 실시예는 일반적으로 메모리 서브시스템에 관한 것으로, 보다 구체적으로, 순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화(sequential read optimization)에 관한 것이다.
메모리 서브시스템은 데이터를 저장하는 하나 이상의 메모리 디바이스들을 포함할 수 있다. 메모리 디바이스는, 예를 들어, 비휘발성 메모리 디바이스 및 휘발성 메모리 디바이스일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브시스템을 활용하여 메모리 디바이스에 데이터를 저장하고 메모리 디바이스로부터 데이터를 검색할 수 있다.
본 개시는 이하의 상세한 설명과 본 발명의 다양한 실시예의 첨부 도면으로부터 보다 완전하게 이해될 것이다.
도 1a는 실시예들에 따른 메모리 서브시스템을 포함하는 예시적인 컴퓨팅 시스템을 도시한다.
도 1b는 일 실시예에 따른 도 1a의 메모리 서브시스템을 추가로 상세히 도시한다.
도 2는 다양한 실시예들에 따른 구역 기반 매핑을 지원하도록 구성된 데이터 구조의 예를 나타내는 블록도이다.
도 3은 일 실시예에 따른 도 1a 내지 도 1b의 메모리 서브시스템 제어기의 커맨드 생성 프로세서, 변환 프로세서, 및 커맨드 실행 프로세서의 상호관계의 블록도이다.
도 4는 일 실시예에 따른 순차 판독 최적화 방법의 흐름도이다.
도 5는 관련 실시예에 따른 순차 판독 최적화 방법의 흐름도이다.
도 6은 본 개시내용의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태는 순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화에 관한 것이다. 메모리 서브시스템은 스토리지 디바이스, 메모리 모듈, 또는 스토리지 디바이스와 메모리 모듈의 하이브리드일 수 있다. 스토리지 디바이스 및 메모리 모듈의 예시는 도 1a와 함께 아래에 설명되어 있다. 일반적으로, 호스트 시스템은 데이터를 저장하는 메모리 디바이스와 같은 하나 이상의 컴포넌트들을 포함하는 메모리 서브시스템을 활용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장될 데이터를 제공할 수 있고 메모리 서브시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 디바이스는 비휘발성 메모리 디바이스일 수 있다. 비휘발성 메모리 디바이스의 한 예는 NAND(negative-and) 메모리 디바이스다. 비휘발성 메모리 디바이스의 다른 예는 도 1a와 함께 아래에서 설명된다. 비휘발성 메모리 디바이스는 하나 이상의 다이들의 패키지이다. 패키지의 다이들은 메모리 서브시스템 제어기와 통신하기 위해 하나 이상의 채널들에 할당될 수 있다. 각각의 다이는 하나 이상의 평면들로 구성될 수 있다. 평면들은 논리 유닛(LUN)으로 그룹화될 수 있다. 일부 유형의 비휘발성 메모리 디바이스(예를 들어, NAND 디바이스)의 경우, 각 평면은 물리적 블록들의 세트로 구성된다. 각각의 블록은 페이지들의 세트로 구성된다. 각각의 페이지는 메모리 셀들("셀들")의 세트로 구성된다. 셀은 정보를 저장하는 전자 회로이다. 이하에서 블록은 데이터를 저장하는 데 사용되는 메모리 디바이스의 유닛을 지칭하며, 메모리 셀들의 그룹, 워드 라인 그룹, 워드 라인 또는 개별 메모리 셀들을 포함할 수 있다.
데이터 동작은 메모리 서브시스템에서 수행될 수 있다. 데이터 동작은 호스트 개시(host-initiated) 동작일 수 있다. 예를 들어, 호스트 시스템은 메모리 서브시스템에서 데이터 동작(예를 들어, 기록, 판독, 소거 등)을 개시할 수 있다. 호스트 시스템은 메모리 서브시스템에 예를 들어, 메모리 서브시스템의 메모리 디바이스에 데이터를 저장하고 메모리 서브시스템의 메모리 디바이스로부터 데이터를 판독하기 위한 액세스 요청(예를 들어, 기록 커맨드, 판독 커맨드)을 발송할 수 있다.
호스트 요청에 의해 지정된 대로 판독되거나 기록될 데이터는 이하 "호스트 데이터"로 지칭된다. 호스트 요청은 호스트 시스템이 호스트 데이터와 연관시키는 위치인 호스트 데이터에 대한 논리적 어드레스 정보(예를 들어, 논리적 블록 어드레스(LBA), 네임스페이스)를 포함할 수 있다. 논리적 어드레스 정보(예를 들어, LBA, 네임스페이스)는 호스트 데이터에 대한 메타데이터의 일부일 수 있다. 메타데이터는 또한 오류 핸들링 데이터(예를 들어, ECC 코드워드, 패리티 코드), 데이터 버전(예를 들어, 기록된 데이터의 연령을 구별하는 데 사용됨), 유효한 비트맵(이 LBA 또는 논리적 전송 유닛은 유효한 데이터를 포함함) 등을 포함할 수 있다. 단순화를 위해, 이하 "데이터"가 언급되는 경우, 그러한 데이터는 적어도 호스트 데이터를 참조하는 것으로 이해될 수 있지만, 미디어 관리 데이터 및/또는 시스템 데이터와 같은 다른 데이터도 참조할 수 있다.
메모리 디바이스의 셀들(또는 간단히 "미디어")은 다이(상위 레벨)로부터 평면, 블록, 페이지(하위 레벨)로 계층적으로(hierarchically) 구성될 수 있다. 블록 세트(블록 스트라이프라고도 함)는 데이터 저장을 위해 블록들이 함께 그룹화되도록 상이한 다이들의 평면들에 걸쳐 배열된 블록들의 세트일 수 있다. 블록 스트라이프들에 기록하는 것은 동시에 여러 다이들에서 동시에 기록되고 판독될 수 있는 더 많은 호스트 데이터를 허용한다. 하나 이상의 블록 세트의 다수의 블록들이 데이터 그룹으로서 식별될 수 있다.
다양한 실시예에서, 호스트 파일 시스템은 지역성(locality)에 의해 호스트 데이터를 그룹화하고 호스트 데이터를 메모리 서브시스템에 순차적으로 기록할 수 있다. 그런 다음 파일 시스템은 서로 다른 지역성들의 호스트 데이터를 병렬 순차 스트림들로서 메모리 서브시스템에 기록할 있으며, 각 스트림은 고유한 지역성을 갖고, 예를 들어 서로 다른 호스트 어플리케이션들은 각각 자신의 스트림에 기록할 수 있다. "지역성"은 시간적 지역성 또는 공간적 지역성을 나타낼 수 있다. 시간적 지역성으로 그룹화된 데이터는 프로세서가 짧은 시간 동안 동일한 메모리 디바이스 위치들에서 반복적으로 액세스하는 경향이 있는 호스트 데이터이며, 예를 들어, 동일한 시간에 기록, 덮어쓰기 및 트리밍된 데이터이다. 트리밍된다는 것은 더 이상 사용되지 않고 예를 들어 가비지 수집을 통해 내부적으로 지울 수 있는 데이터의 블록을 메모리 디바이스에 알리기 위한 트림 커맨드의 운영 체제 사용을 참조한다. 공간적 지역성으로 그룹화된 데이터는 특정 저장 위치가 특정 시간에 참조될 때의 데이터 검색 패턴을 캡처하고 가까운 미래에 가까운 메모리 위치(메모리 디바이스에서)가 참조될 가능성이 높다. 이 경우 프로세서는 이후에 참조되는 위치에 대한 더 빠른 액세스를 준비할 가치가 있는 현재 참조된 메모리 위치 주변 영역의 크기와 모양을 결정하려고 시도할 수 있다. 순차 지역성에 대한 참조는 1차원 어레이의 요소들을 순회할 때와 같이 데이터 요소들이 선형으로 정렬되고 액세스될 때 발생하는 공간 지역성의 특별한 경우이다.
메모리 서브시스템 제어기(예를 들어, 처리 디바이스 포함)는 일반적으로 호스트 데이터(예를 들어, 4KB)의 일부에서 미디어에 무작위로 기록하고 그런 다음 메타데이터를 사용하여 LBA 공간을 미디어의 물리적 어드레스 공간에 매핑한다. 더 큰 그룹의 호스트 데이터(예를 들어, 100MB 이상)가 데이터 지역성으로 그룹화되어 기록될 때, 그러나, "데이터 그룹"은 여러 다이들에 걸쳐 하나 이상의 블록 세트들에 더 큰 청크(chunk)로 순차적으로 기록될 수 있다. 이러한 데이터 그룹의 매핑을 단순화하기 위해 구역(예를 들어, 데이터 그룹과 관련된 논리적 어드레스 공간)의 LBA들은 LBA 공간 내에서 순차적으로 정렬될 수 있고 물리적 어드레스 공간 내에서 순차적으로 정렬된 물리적 어드레스들에 매핑될 수 있다. 즉, 데이터 그룹은 다수의 순차 물리적 어드레스들에 순차적으로 매핑되는 다수의 순차 LBA들을 갖는 LBA 공간 구역과 연관될 수 있다. 한 번에 데이터 구역들을 기록하고(예를 들어, 프로그래밍) 구역들을 매핑할 수 있는 메모리 서브시스템은 구역 네임스페이스(ZNS)에서 동작하고 예를 들어 논리적 어드레스의 구역이 그룹으로 명명/식별된다. 유리하게는, 논리적 대 물리적(LTP) 어드레스 매핑을 위한 ZNS의 사용은 LTP 매핑을 추적하기 위한 메타데이터의 양을 크게 줄인다.
메모리 서브시스템에서, 판독 요청(또는 판독 동작)은 일반적으로 메모리 서브시스템 제어기의 변환 프로세서(예를 들어, 논리적 어드레스를 물리적 어드레스로 변환)에 한 번에 하나의 커맨드 태그를 발행하여 커맨드 태그에 의해 지정된 세분성(granularity)에서 임의 판독(random read)을 초래한다. 시스템 태그(예를 들어, 시스테그(systag))라고도 하는, 커맨드 태그는 논리적 전송 유닛(LTU) 번호와 전송 유닛에 대응하는 콘텐츠가 캐시에 있는 것처럼 저장되는 버퍼(예를 들어, 휘발성 메모리의 슬롯 또는 엔트리)를 식별하는 버퍼 어드레스를 포함한다. 일 실시예에서 데이터의 4KB 부분에 대응하는 LTU는 매핑 데이터 구조들의 세트를 통해 물리적 어드레스에 매핑될 수 있는 다수의 순차 LBA들의 서브세트이다. 따라서 LTU를 생성하기 위해, 메모리 서브시스템 제어기의 커맨드 생성 프로세서는 판독 요청의 LBA를 LBA에 순차적인 추가 LBA들(이는 판독 요청에서도 수신될 수 있음)과 결합할 수 있다. 각 LTU는 LTU 유형에 따라 논리적 블록 또는 논리적 페이지로 변환될 수 있다.
판독 요청은 일반적으로 한 번에 하나의 커맨드 태그로 수행되기 때문에, 각각의 판독 요청은 메모리 하위 시스템 제어기의 커맨드 생성 프로세서에 커맨드 메시지(일 예시에서 메일박스 메시지)를 생성하고(판독이 순차적인지 여부에 관계없이) 자세히 설명되는 바와 같이 판독 요청의 LBA를 메모리 디바이스의 물리적 위치에 매핑하기 위한 다중(예를 들어, 4개) 데이터 구조 조회(lookup)들을 생성한다. 커맨드 메시지는 비휘발성 메모리 커맨드의 페칭 이후에 사용될 수 있으며, 여기서 커맨드 생성 프로세서는 커맨드 수신에 대해 변환 프로세서에 알린다. 이러한 데이터 구조(예를 들어, 테이블)는 긴밀하게 결합된 메모리(TCM) 또는 정적 판독 전용 메모리(SRAM) 또는 기타 휘발성 메모리에 저장될 수 있다. 판독 요청을 처리하는 이러한 방식은 특히 일부 판독 요청이 순차적으로 기록된 물리적 어드레스 공간(예를 들어, ZNS)에 순차적으로 발행되는 경우 대기 시간을 증가시켜 오버헤드를 증가시키고 전체 성능을 저하시킨다. 따라서 순차 기록들로부터의 순차 데이터 레이아웃은 판독 요청을 수행하기 위해 데이터를 검색할 물리적 어드레스들을 결정하기 위해 메모리 서브시스템 제어기(예를 들어, 메모리 서브시스템 제어기의 변환 프로세서)가 수행해야 하는 조회 수를 제한하는 데 활용되지 않는다.
본 개시의 양태는 처리 디바이스의 변환 프로세서가 처리 디바이스의 커맨드 실행 프로세서에 제1 물리적 어드레스를 통신하고 및 제1 물리적 어드레스(제1 커맨드 태그로 지정된 제1 LTU가 매핑됨)가 순차적으로 기록된 데이터의 일부임을 나타내는 플래그(예를 들어, 비트 플래그)를 설정할 수 있는 공유 휘발성 메모리(예를 들어, 적어도 하나의 휘발성 메모리 디바이스)를 사용함으로써 상기 및 기타 결점을 다룬다. 처리 장치의 커맨드 생성 프로세서는 휘발성 메모리에서 물리적 어드레스와 플래그에 액세스하여 그룹으로 발행될 제1 커맨드 태그를 포함하도록 커맨드 태그들의 세트를 생성하는 방법을 결정할 수 있다. 커맨드 생성 프로세서는 매핑 데이터 구조들에서 변환 프로세서에 의한 임의의 추가 조회들을 바이패싱하면서 커맨드 태그들을 포함하는 커맨드들의 세트를 처리 장치의 커맨드 실행 프로세서에 직접 발송할 수 있다. 커맨드 실행 프로세서는 커맨드 태그들에 의해 지정된 물리적 어드레스들로부터 이 목적을 위해 할당된 버퍼들(예를 들어, 휘발성 메모리 내의 슬롯들)의 세트로 데이터를 판독할 수 있다.
다양한 실시예에서, 보다 구체적으로, 이 커맨드 태그들의 세트는 물리적 어드레스와 관련된 제1 커맨드 태그뿐만 아니라 제1 물리적 어드레스에서 시작하는 판독 윈도우 크기(예를 들어, 오프셋 값) 내에서 순차적으로 넘버링된 후속 물리적 어드레스와 관련된 추가 커맨드 태그를 포함할 수 있다. 이러한 방식으로 순차 데이터는 미리보기 방식으로 판독되고 제1 물리적 어드레스와 후속 물리적 어드레스, 예를 들어 오프셋 값의 판독 미리보기에 저장된 데이터의 용량을 처리하기 위해 할당된 버퍼들의 세트에 저장된다. 물리적 어드레스로부터 판독된 호스트 시스템에 의해 요청된 데이터는 호스트 시스템으로 반환된다. 호스트 시스템이 물리적 어드레스의 오프셋 값 내에서 제2 또는 후속 물리적 어드레스로부터 데이터를 요청하는 경우, 커맨드 생성 프로세서는 버퍼들의 세트로부터 데이터를 빠르게 검색하고 추가 조회 또는 변환 없이 데이터를 호스트 시스템으로 발송할 수 있다.
본 개시내용의 이점은 예를 들어, 판독 미리보기 동작으로 버퍼들에서 많은 판독 요청들을 적중(hit)하도록 허용함으로써 개선된 판독 성능 및 많은 판독 요청들(기록 동작들보다 더 자주 발생)을 서비스하기 위해 기록 동작을 중단하는 막대한 비용을 피하는 것을 포함하지만 이에 제한되지는 않는다. 또한, 본 개시는 호스트 시스템으로부터의 순차 판독 요청에 대한 레이턴시를 낮추기 위해 순차 판독 성능 최적화를 수행하는 방법을 설명한다(이러한 판독 요청이 기록 동작 및/또는 다른 영역에 대한 판독 요청으로 산재되어 있더라도). 이러한 이점은 ZNS 지원 메모리 디바이스에서 수행되는 순차 기록을 시너지 효과로 활용한다. 다른 이점은 이후에 논의되는 메모리 서브시스템 내에서 메모리 할당 및 오류 최적화 분야의 당업자에게 명백할 것이다.
도 1a는 본 개시의 일부 실시예들에 따른 메모리 서브시스템(110)을 포함하는 컴퓨팅 시스템(100)을 예시한다. 메모리 서브시스템(110)은 휘발성 메모리(예를 들어, 메모리 디바이스(140)), 하나 이상의 비휘발성 메모리 디바이스들(예를 들어, 메모리 디바이스(130)), 또는 이들의 조합과 같은 매체를 포함할 수 있다. 각각의 메모리 디바이스(130 또는 140)는 하나 이상의 메모리 컴포넌트(들)일 수 있다.
메모리 서브시스템(110)은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드가 될 수 있다. 저장 디바이스의 예들은 SSD(Solid-State Drive), 플래시 드라이브, USB(Universal Serial Bus) 플래시 드라이브, 내장형 멀티미디어 제어기(eMMC) 드라이브, UFS(Universal Flash Storage) 드라이브, 보안 디지털(SD) 카드 및 하드 디스크 드라이브(HDD)를 포함한다. 메모리 모듈들의 예들은 DIMM(Dual In-Line Memory Module), SO-DIMM(Small Outline DIMM) 및 다양한 유형의 비휘발성 듀얼 인-라인 메모리 모듈(NVDIMM)을 포함한다.
컴퓨팅 시스템(100)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 디바이스, 차량(예를 들어, 비행기, 무인 항공기, 기차, 자동차 또는 기타 운송 수단), 사물 인터넷(IoT) 가능 디바이스, 임베디드 컴퓨터(예를 들어, 차량, 산업 장비 또는 네트워크로 연결된 상업용 디바이스에 포함된 컴퓨터)와 같은 컴퓨팅 디바이스 또는 메모리 및 처리 디바이스를 포함하는 그러한 컴퓨팅 디바이스일 수 있다.
컴퓨팅 시스템(100)은 하나 이상의 메모리 서브시스템들(110)과 결합된 호스트 시스템(120)을 포함할 수 있다. 일부 실시예들에서, 호스트 시스템(120)은 상이한 유형의 메모리 서브시스템(110)과 결합된다. 도 1a는 하나의 메모리 서브시스템(110)과 결합된 호스트 시스템(120)의 일례를 도시한다. 본 명세서에서, 일반적으로 "~에 결합된" 또는 "~와 결합된" 은 전기, 광학, 자기 등과 같은 연결들을 포함하여 유선이든 무선이든 간접 통신 연결 또는 직접 통신 연결(예를 들어, 중간 컴포넌트들 또는 디바이스들 없이)이 될 수 있는 컴포넌트들 또는 디바이스들 간의 연결을 나타낸다.
호스트 시스템(120)은 프로세서 칩셋(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 채널, SAS(Serial Attached SCSI), DDR(double data rate) 메모리 버스, SCSI(Small Computer System Interface), 듀얼 인라인 메모리 모듈(DIMM) 인터페이스(예를 들어, DDR(Double Data Rate)를 지원하는 DIMM 소켓 인터페이스), ONFI(Open NAND Flash Interface), DDR(Double Data Rate), LPDDR(Low Power Double Data Rate) 또는 기타 인터페이스를 포함하지만 이에 제한되진 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브시스템(110) 간의 데이터를 송신하는데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합될 때 컴포넌트들(예를 들어, 메모리 디바이스(130))에 액세스하기 위해 NVMe(NVM Express) 인터페이스를 더 활용할 수 있다. 물리적 호스트 인터페이스는 메모리 서브시스템(110)과 호스트 시스템(120) 간의 제어, 어드레스, 데이터 및 기타 신호들을 전달하기 위한 인터페이스를 제공할 수 있다. 도 1a는 예로서 메모리 서브시스템(110)을 도시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다중 개별 통신 연결들, 및/또는 통신 연결들의 조합을 통해 다중 메모리 서브시스템들에 액세스할 수 있다.
메모리 디바이스들(130, 140)은 상이한 유형들의 비휘발성 메모리 디바이스들 및/또는 휘발성 메모리 디바이스들의 임의의 조합을 포함할 수 있다. 휘발성 메모리 디바이스들(예를 들어, 메모리 디바이스(140))는 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(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)들과 같은 메모리 셀들의 다른 유형들은 셀당 여러 비트들을 저장할 수 있다. 일부 실시예들에서, 메모리 디바이스들(130) 각각은 SLC들, MLC들, TLC들, QLC들 또는 이들의 임의의 조합과 같은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 일부 실시예들에서, 특정 메모리 디바이스는 SLC 부분, 및 메모리 셀들의 MLC 부분, TLC 부분 또는 QLC 부분을 포함할 수 있다. 메모리 디바이스들(130)의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 디바이스의 논리 유닛을 참조할 수 있는 페이지들로 그룹화될 수 있다. 일부 유형의 메모리(예를 들어, NAND)에서는 페이지들이 블록들을 형성하도록 그룹화되어질 수 있다.
비휘발성 메모리 셀들의 3D 교차점 어레이 및 NAND 유형 플래시 메모리(예를 들어, 2D NAND, 3D NAND)와 같은 비휘발성 메모리 컴포넌트들이 설명되지만, 메모리 디바이스(130)는 판독 전용 메모리(ROM), 상변화 메모리(PCM), 자가 선택 메모리, 기타 칼코겐화물 기반 메모리, 강유전체 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전체 랜덤 액세스 메모리(FeRAM), 자기 랜덤 액세스 메모리(MRAM), 스핀 전송 토크(STT)-MRAM, 전도성 브리지 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), NOR(negative-or) 플래시 메모리 및 전기적으로 소거 가능한 프로그래밍 가능 판독 전용 메모리(EEPROM)과 같은 임의의 다른 유형의 비휘발성 메모리에 기반할 수 있다.
메모리 서브시스템 제어기(115)(또는 단순화를 위한 제어기(115))는 메모리 디바이스들(130)에서의 데이터 판독, 데이터 기록, 또는 데이터 소거 및 기타 그러한 동작들과 같은 동작들을 수행하기 위해 메모리 디바이스들(130)과 통신할 수 있다. 제어기(115)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 하드웨어는 본 명세서에 설명된 동작들을 수행하기 위한 전용(예를 들어, 하드 코딩된) 로직을 갖는 디지털 회로를 포함할 수 있다. 메모리 서브시스템 제어기(115)는 마이크로제어기, 특수 목적 논리 회로(예를 들어, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit) 등), 또는 다른 적절한 프로세서일 수 있다.
메모리 서브시스템 제어기(115)는 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 프로세서(117)(예를 들어, 처리 디바이스)를 포함할 수 있다. 도시된 예에서, 메모리 서브시스템 제어기(115)의 로컬 메모리(119)는 메모리 서브시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여 메모리 서브시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 내장형 메모리를 포함한다.
일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터들, 페치된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로 코드를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다. 도 1a에서 예시적인 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)를 포함하는 것으로 도시되었지만, 본 개시내용의 또 다른 실시예에서는, 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)를 포함하지 않고, 대신 외부 제어(예를 들어, 외부 호스트에 의해, 또는 메모리 서브시스템으로부터 분리된 프로세서 또는 제어기에 의해 제공되는)에 의존할 수 있다.
일반적으로, 메모리 서브시스템 제어기(115)는 호스트 시스템(120)으로부터 커맨드들 또는 동작들을 수신할 수 있고 메모리 디바이스(130)에 대한 원하는 액세스를 달성하기 위해 커맨드들이나 동작들을 명령어들이나 적절한 커맨드들로 변환할 수 있다. 메모리 서브시스템 제어기(115)는 메모리 디바이스들(130)과 관련된 마모 평준화 동작들, 가비지 수집 동작들, 오류 감지 및 오류 수정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들, 논리적 블록 어드레스(예를 들어, 논리 블록 어드레스(LBA), 네임스페이스)와 물리적 어드레스(예를 들어, 물리 블록 어드레스) 간의 어드레스 변환들과 같은 다른 동작들에 대한 책임이 있다. 메모리 서브시스템 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 커맨드들을 메모리 디바이스들(130)에 액세스하기 위한 커맨드 명령어들로 변환할 수 있을 뿐만 아니라 메모리 디바이스들과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
메모리 서브시스템(110)은 또한 도시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)로부터 어드레스를 수신할 수 있고 메모리 디바이스들(130)에 액세스하기 위한 어드레스를 해독할 수 있는 어드레스 회로부(예를 들어, 로우 디코더 및 컬럼 디코더) 및 캐시 또는 버퍼(예를 들어, DRAM)를 포함할 수 있다.
일부 실시예들에서, 메모리 디바이스들(130)은 메모리 디바이스(130)의 하나 이상의 메모리 셀들 상에서 동작들을 실행하기 위해 메모리 서브시스템 제어기(115)와 함께 동작하는 로컬 미디어 제어기들(135)을 포함한다. 외부 제어기(예를 들어, 메모리 서브시스템 제어기(115))는 메모리 디바이스(130)를 외부적으로 관리할 수 있다(예를 들어, 메모리 디바이스(130)에 대한 미디어 관리 동작을 수행함). 일부 실시예에서, 메모리 디바이스들(130)는 관리형 메모리 디바이스들이고, 이는 동일한 메모리 디바이스 패키지 또는 메모리 다이 내에서 메모리 관리를 위해 로컬 제어기(예를 들어, 로컬 미디어 제어기(135))와 결합된 원시 메모리 디바이스다. 관리형 메모리 디바이스의 예는 관리되는 NAND(MNAND) 디바이스이다.
일부 실시예에서, 제어기(115)는 오류 정정 코드(ECC) 인코더/디코더(111)를 포함한다. ECC 인코더/디코더(111)는 메모리 디바이스들(130)에 기록된 데이터에 대해 ECC 인코딩을 수행하고, 메모리 디바이스들(130)로부터 판독된 데이터에 대해 ECC 디코딩을 수행할 수 있다. ECC 디코딩은 ECC 코드워드를 디코딩하여 원시 판독 데이터의 오류를 수정하고 많은 경우에 원시 판독 데이터의 비트 오류 수를 보고하기 위해 수행될 수 있다.
도 1b는 일 실시예에 따른 도 1a의 메모리 서브시스템(110)을 추가로 상세히 예시한다. 실시예에서, 메모리 서브시스템 제어기(115)(예를 들어, 처리 디바이스, 단순화를 위해 제어기(115)로서 지칭됨)는 하나 이상의 레지스터들(112), 버퍼 관리자(113)를 포함하는 커맨드 생성 프로세서(122), 변환 프로세서(123), 커맨드 실행 프로세서(124) 및 로컬 메모리(119)를 포함한다. 예를 들어, 프로세서(117)(도 1a)는 커맨드 생성 프로세서(123), 변환 프로세서(123), 및 커맨드 실행 프로세서(124)를 포함할 수 있다. 로컬 메모리(119)는 예를 들어, 도 2에 예시된 바와 같이, 다른 ZNS 매핑 데이터 구조들 중에서 구역 맵 데이터 구조(101) 및 블록 세트 맵 데이터 구조(107)를 저장할 수 있다. 일 실시예에서, 구역 맵 데이터 구조(101)는 각각의 엔트리가 블록 세트 맵 데이터 구조(107) 내의 엔트리에 링크되는 블록 세트 엔트리 식별자를 갖도록 다중 엔트리들을 포함하고, 이는 차례로 메모리에서 페이지를 찾는 페이지 맵 데이터 구조의 엔트리에 링크될 수 있고, 도 2를 참조하여 자세히 설명될 것이다.
또한, 하나 이상의 메모리 디바이스(들)(130, 140)를 참조하여 이전에 논의된 바와 같이, 다중 다이(die)들(예를 들어, 다이 A 및 다이 B)의 물리적 어드레스 공간은 평면, 블록 및 페이지에 의해 계층적으로 구성될 수 있다. 그래서, 예를 들어, 각각의 다이 A 및 다이 B는 평면 A 및 평면 B를 포함할 수 있고, 각각의 평면 A 및 평면 B는 블록 A 및 블록 B를 포함할 수 있다. 블록 세트(또는 블록 스트라이프)는 메모리 디바이스(들)의 다중 다이들의 평면들에 걸쳐 배열된 블록들의 그룹으로서 정의될 수 있다. 예시된 바와 같이, 블록 세트(144)는 다이 A의 평면 A의 블록 A, 다이 B의 평면 B의 블록 A 등, 예를 들어, 다이 C의 평면 C도 포함하고, 존재하고 온라인인 경우, 추가 다이까지 배열된다.
다양한 실시예들에서, 변환 프로세서(123)(및/또는 변환 프로세서(123)에 결합된 제어기(115)의 동적 데이터 배치기(placer))는 메모리 디바이스들(130, 140)의 미디어 유닛들 또는 메모리 컴포넌트들(또한 "IC 다이들" 또는 "미디어"로서 지칭됨)에서 논리적 어드레스들과 연관된 데이터를 배치할 미디어 레이아웃을 동적으로 결정한다. 미디어 레이아웃은 메모리 서브시스템(110)에서 수신된(예를 들어, 호스트 시스템(120)으로부터) 커맨드들에 사용된 논리적 어드레스들과 메모리 서브시스템(110)의 미디어에서 물리적 메모리 위치들 사이의 매핑을 지정한다.
변환 프로세서(123)는 예를 들어, 메모리 서브시스템(110)에서 입력/출력 스케줄링 시 데이터를 기록, 프로그래밍, 저장, 커미팅(committing)하기 위한 미디어의 가용성에 기초하여 메모리 디바이스(130 또는 140)의 미디어의 물리적 어드레스들과 연관된 논리적 어드레스들에서 데이터의 배치를 위한 LBA 공간의 논리적 어드레스들의 일부에 대한 미디어 레이아웃을 결정할 수 있다. IC 다이(들) 내에 미디어 유닛들을 포함하는, IC 다이(들)가 데이터를 커미팅/프로그래밍하는 데 이용가능할 때, 기록 커맨드가 메모리 서브시스템(110)에서 실행을 위해 스케줄링되고; 및 변환 프로세서(123)는 기록 커맨드에 대한 미디어 레이아웃의 일부를 생성하고 IC 다이(들) 내에 메모리 위치들로 매핑하기 위해 기록 커맨드에 사용된 논리적 어드레스(들)를 매핑한다. 기록 커맨드의 실행은 메모리 서브시스템(110)이 기록 커맨드와 연관된 데이터를 IC 다이(들)로 커미팅/프로그래밍하게 야기한다.
미디어에 걸친 IC 다이들의 가용성 및/또는 순차적 매핑 체계의 애플리케이션에 따라, 제어기(115)는 한 번에 하나의 IC 다이를 채우기 위해 데이터 그룹들(예를 들어, 데이터 집약성의 순차적 스트림에 제공됨)을 순차적으로 기록할 수 있거나, 또는 예를 들어, 미디어의 IC 다이들을 동시에 채우기 위해, 병렬로, 한 번에 다중 IC 다이들에 순차적으로 기록할 수 있다. ZNS 매핑 데이터 구조들을 참조하여 더 자세히 논의되는 바와 같이, LBA 공간의 영역들 내에 기록들의 매핑은 또한 매핑을 수행하는 데 사용되는 계산들을 단순화하기 위해 순차적으로 수행될 수 있다. 다중 IC 다이들이 이용가능할 때, 다중 기록 스트림들로부터의 커맨드들에 사용된 논리적 어드레스들(예를 들어, LBA들)은 다중 기록 스트림들로부터의 커맨드들의 실행에서 미디어 액세스 충돌이 없도록 미디어 레이아웃의 동적으로 생성된 일부에 의해 개별적으로 다중 IC 다이들에 매핑될 수 있다.
다양한 실시예들에서, 변환 프로세서(123)는 LBA들을 물리적 어드레스 공간의 물리적 블록 어드레스(PBA)들로 변환하기 위해 특정 ZNS 매핑 데이터 구조들(예를 들어, 구역 맵 데이터 구조(101) 및 블록 세트 맵 데이터 구조(107))에 액세스한다. 플래시 미디어(예를 들어, NOR 또는 NAND 플래시 메모리)의 맥락에서 변환 프로세서(123)는 플래시 변환 레이어(FTL)로서 지칭될 수 있다. 변환 프로세서(123)에 의해 사용되는 매핑은 일반적으로 블록 매핑의 유형, 예를 들어, 블록 레벨 매핑 또는 로그 블록 매핑을 포함하는 것으로 가정될 수 있다. 데이터 지역성이 검출되거나 ZNS 메모리 디바이스에서, 변환 프로세서(123)는 예를 들어, ZNS 데이터 구조들 내에, 영역을 형성하는 블록들의 그룹을 매핑할 수 있으며, 이는 이전에 논의된 바와 같이, 순차적으로 넘버링된 LBA들을 순차적으로 넘버링된 PA들로 매핑하는 것을 포함할 수 있다. 영역의 LBA 공간을 미디어의 물리적 어드레스 공간에 매핑하기 위한, ZNS 데이터 구조들의 사용 및 이들의 상호 관계는 도 2를 참조하여 더 자세히 논의된다.
일부 실시예들에서, 메모리 서브시스템(110)은 또한 판독 요청들의 이행에서 데이터를 저장(예를 들어, 캐시)하는 데 사용되는 할당된 버퍼들이 있는 휘발성 메모리 디바이스(140A)(예를 들어, TCM, SRAM, DRAM 또는 이들의 조합과 같은 공유 휘발성 메모리)를 포함한다. 각각의 버퍼는, 예를 들어, 휘발성 메모리 디바이스(140A)의 어드레싱된 슬롯 또는 엔트리일 수 있다. 버퍼들은 제1 버퍼(142A), 제2 버퍼(142B), 제3 버퍼(142C), ... 제N 버퍼(142N)를 포함할 수 있다. 각각의 버퍼는 데이터의 페이지 크기를 저장할 수 있다. 대안적인 실시예에서, 비록 별도로 도시되었지만, 휘발성 메모리 디바이스(140A)는 실제로 제어기(115)의 로컬 메모리(119)의 부분이다.
다양한 실시예들에서, 커맨드 생성 프로세서(122)는 예를 들어, 호스트 시스템(120) 또는 다른 요청 에이전트로부터 개별적으로 수신된 판독 및 기록 요청들에 기초하여 판독 커맨드들 및 기록 커맨드들을 생성하는 커맨드 처리를 수행한다. 실행 판독 요청들의 일부로, 커맨드 생성 프로세서(122)의 버퍼 관리자(113)는 제1 물리적 어드레스(판독 요청의 LBA를 포함하도록 생성된 LTU에 의해 매핑됨) 및 예를 들어, 메모리 디바이스의 판독 윈도우 크기를 정의하는 오프셋 값 내에 제1 물리적 어드레스 다음에 순차적으로 넘버링된 후속 물리적 어드레스들에서 저장된 데이터의 양과 일치하는 용량을 갖는 버퍼들의 특정 수(예를 들어, "세트")를 할당할 수 있다. 일 실시예에서, 오프셋 값은 128KB이고, 제1 판독 요청을 넘어 추가의 124KB의 데이터에 대한 판독 미리보기를 허용한다. 다양한 다른 오프셋 값들 또는 판독 윈도우 크기들이 구상된다. 예를 들어, 각각의 후속 물리적 어드레스는 후속 물리적 어드레스들을 결정하기 위해 오프셋 값에 의해 정의된 순차적 물리적 어드레스 공간의 판독 창에 걸쳐서 페이지 넘버만큼 증가될 수 있다. 버퍼 관리자(113)에 의해, 버퍼들의 할당 및 추적은 판독 미리보기 동작을 용이하게 한다.
이러한 실시예들에서, 커맨드 생성 프로세서(122)는 처리 디바이스의 커맨드 실행 프로세서(124)가 메모리 디바이스(130 또는 140)의 제1 어드레스 및 후속 어드레스들로부터 데이터를 검색하도록 지시하는 데 사용되는 커맨드 태그들의 세트를 추가로 생성할 수 있으며, 버퍼들의 세트에 데이터를 저장한다. 커맨드 생성 프로세서(122)는 커맨드 태그들의 세트를 포함하는 커맨드들의 그룹을 커맨드 실행 프로세서(124)에 더 송신할 수 있다. 이러한 방식으로, 커맨드 태그들의 세트의 각각의 커맨드 태그는 개별의 순차적 물리적 어드레스들 중 하나의 물리적 어드레스에 매핑되는 LTU를 식별하는 LTU 넘버를 포함한다.
관련 실시예들에서, 버퍼 관리자(113)는 버퍼들의 사용을 추적할 수 있고 호스트 커맨드들은 다수의 가능한 애플리케이션들에 의해 다양한 버퍼에 캐싱된 데이터를 추적하기 위해 임의의 수의 버퍼 관리 알고리즘들을 사용하여 이러한 버퍼들에 적중할 때 버퍼의 잠금 또는 해제에 책임이 있다. 버퍼 관리 알고리즘들은 예를 들어, 버퍼들이 LTU 넘버(또는 LBA 넘버)별로 정렬되는 2-3 트리 알고리즘(2-3 트리 알고리즘으로도 지칭됨), 링크 목록 알고리즘 또는 해시 알고리즘을 사용하는 N-웨이 캐시가 포함할 수 있다. 예를 들어, 버퍼 관리자(113)는 표 1에 예시된 바와 같이, 버퍼들에 캐싱된 순차적으로 판독 데이터를 불연속적인 버퍼 넘버들에 대해 인덱싱하는 버퍼 인덱스 테이블을 사용할 수 있다.
데이터 인덱스(예, 64 바이트 데이터에 대해) 버퍼 인덱스
0 0
1 3
2 4
... ...
... ...
63 230
이러한 버퍼 관리 알고리즘들(예를 들어, 버퍼 할당 및 사용 추적을 위한)에 의해 사용될 수 있는 메타데이터는 LTU/LBA(데이터가 정렬됨에 따라), 데이터가 상주하는 버퍼 슬롯을 나타내는 버퍼 어드레스(또는 인덱싱에 사용되는 다른 버퍼 식별자), 및 별도의 판독 또는 기록 경로들에 있는 여러 사용자들(예를 들어, 호스트 애플리케이션들)이 공동으로 추적할 수 있도록 허용하는 버퍼 사용 카운트를 포함한다. 이러한 방식으로, 버퍼 관리자(113)는 비록 할당된 버퍼들이 표 1에 예시된 바와 같이, 순차적으로 넘버링되지 않을 수 있지만 임의의 커맨드의 세트가 순차적으로 저장된 데이터에 기록하거나 판독될 수 있는 다중 영역들로부터 기록 및 판독하는 다중 애플리케이션들을 관리할 수 있다. 버퍼들에서 데이터가 추적되는 경우, 하드웨어 가속은 버퍼들에서 데이터의 추적 및 관리를 용이하게 하기위해 사용될 수 있다.
버퍼 관리자(113)는 임의의 주어진 버퍼가 판독 또는 기록 경로에서 사용되고 있는지 여부를 추적하기 위해 플래그(예를 들어, 비트 플래그) 또는 카운터를 더 사용할 수 있다. 이를 통해 버퍼에 대한 인플라이트 커맨드(inflight command)를 만족시키기 위한 빠른 검색 시간(예를 들어, 이미 처리 중임)과 특정 LBA를 찾기 위한 짧은 검색 시간을 허용하고, 따라서 매핑을 위해 변환 프로세서(123)로 돌아가는 대신, 버퍼가 캐시 적중 및 호스트 시스템(120)으로의 직접 전송에 사용될 수 있는지 여부를 확인할 수 있다. 캐시처럼 수행하는 버퍼들로부터 데이터를 검색하기 때문에, 코히어런시(coherency)는 구역 맵 데이터 구조(101)가 먼저 확인되는 한 문제가 되지 않아야 하며, 이는 커맨드 생성 프로세서(122)가 개시된 순차적 판독 최적화 내에서 계속 수행할 것이다. 일부 실시예들에서, 제어기(115)는 버퍼 관리자(113)의 적어도 일부를 포함한다. 다른 실시예들에서, 또는 조합하여, 호스트 시스템(120)의 제어기 및/또는 처리 디바이스는 버퍼 관리자(113)의 적어도 일부를 포함한다. 예를 들어, 제어기(115) 또는 호스트 시스템(120)의 처리 디바이스는 본 명세서에 설명된 버퍼 관리자(113)의 동작들을 수행하기 위해 메모리에 저장된 명령어들을 실행하도록 구성될 수 있다. 일부 실시예들에서, 버퍼 관리자(113)는 메모리 서브시스템(110)에 배치된 집적 회로 칩에서 구현된다. 다른 실시예들에서, 버퍼 관리자(113)는 호스트 시스템(120)의 운영 체제, 디바이스 드라이버, 또는 애플리케이션의 일부이다.
이들 실시예들에서, 커맨드 실행 프로세서(124)는 데이터 버스의 채널 내에서 메모리 디바이스(들)(130, 140)에 대한 기록 및 판독 커맨드들을 시퀀싱한다. 커맨드 실행 프로세서(124)는 판독 커맨드들의 수신에 응답하여, 제1 물리적 어드레스 및 커맨드 태그들의 세트가 가리키는 메모리 디바이스(들)(130, 140)의 후속 물리적 어드레스로부터 데이터를 더 검색할 수 있다. 각각의 커맨드 태그는 물리적 어드레스에 매핑되고 휘발성 메모리 디바이스(140A)에 캐싱된 버퍼들 내에 버퍼 어드레스를 식별하는 LTU를 포함한다는 것을 상기한다. 커맨드 실행 프로세서(124)는 커맨드 태그들의 세트의 개별의 버퍼 어드레스들에 따라 할당된 버퍼들로 판독 커맨드들을 수행하는 데이터(예를 들어, 캐시)를 더 저장할 수 있고, 이는 커맨드 생성 프로세서(122)에 의해 생성되고 커맨드 실행 프로세서(124)로 발송된 커맨드들의 그룹 내에 포함된다. 커맨드 실행 프로세서(124)는 예를 들어, 물리적 어드레스 공간에 대응하는 물리적 레이어에서 오류 처리를 더 수행할 수 있다.
변환 프로세서(123)는 커맨드 생성 프로세서(122)에 의해 커맨드 실행 프로세서(124)로의 커맨드들의 생성을 용이하게 하기 위해 LTU들을 물리적 어드레스 공간의 물리적 어드레스들로 변환한다. 따라서, 변환 프로세서(123)는 커맨드 생성 프로세서(124)(LBA와 함께 메모리 요청을 수신하고 LBA를 포함하는 LTU를 생성함)와 커맨드를 수행하기 위한 물리적 레이어의 물리적 어드레스를 알 필요가 있는 커맨드 실행 프로세서(124) 사이의 중개자로서 역할을 할 수 있다. 본 개시에서, 다양한 ZNS 매핑 데이터 구조들로의 인덱싱을 위한 변환 프로세서(123)의 규칙적인 사용은 순차적 판독 최적화의 판독 미리 동작들에서 회피될 수 있다.
도 2는 다양한 실시예들에 따른 구역 기반 매핑을 지원하도록 구성된 데이터 구조들의 예를 예시하는 블록도이다. 제어기(115)는 도 2에 예시된 데이터 구조들을 로컬 메모리(119), 예를 들어 SRAM에, 또는 메모리 디바이스(140)의 메모리 컴포넌트들, 예를 들어 DRAM에 저장할 수 있다. 제어기(115)는 또한 도 2의 데이터 구조들을 사용하여 미디어 레이아웃(예를 들어, 영역의 데이터 그룹이 물리적 어드레스 공간 내에 위치되어야 하는 레이아웃)을 구성하거나 구현할 수 있다. 도 2에서, 구역 맵 데이터 구조(201)는 네임스페이스에서 영역, 예를 들어, ZNS 동작을 위한 LBA 공간에 대한 미디어 레이아웃 정보를 제공하도록 구성된다. 구역 맵 데이터 구조(201)는 도 1b의 구역 맵 데이터 구조(101)와 동일하거나 유사할 수 있다. 구역 맵 데이터 구조(201)는 다수의 엔트리들을 가질 수 있다. 구역 맵 데이터 구조(201)에서 각각의 영역 엔트리는 영역의 시작 LBA 어드레스(211), 구역의 블록 세트 식별자(213), 구역의 구역 커서 값(215), 구역의 상태(217) 등과 같은 영역에 대한 정보를 식별한다.
호스트 시스템(120)은 구역 시작 LBA 식별자(211)의 LBA에서 시작하는 구역에 데이터를 기록한다. 호스트 시스템(120)은 LBA 공간의 구역에서 데이터를 순차적으로 기록한다. 데이터 양이 구역에 기록된 후, 후속 데이터를 기록하기 위한 현재 시작 LBA 어드레스는 구역 커서 값(215)으로 식별된다. 구역에 대한 각각의 기록 커맨드는 구역 커서 값(215)을 구역에 대한 다음 기록 커맨드에 대한 새로운 시작 LBA 어드레스로 이동한다. 상태(217)는 해당 구역을 기록하는 진행 상황을 추적하기 위해, 구역이 비어 있음, 가득 참, 암시적으로 열려 있음, 명시적으로 열려 있음, 닫힘 등을 나타내는 값을 가질 수 있다.
도 2에서, 논리적 대 물리적 블록 맵 데이터 구조(203)는 미디어에서 물리적 어드레스로 LBA 어드레스들의 변환을 용이하게 하도록 구성된다. 논리적 대 물리적 블록 맵(203)은 다수의 엔트리들을 가질 수 있다. LBA는 논리적 대 물리적 블록 맵(203)에서 엔트리에 대한 인덱스(예를 들어, LTU 넘버)로 사용되거나 변환될 수 있다. 인덱스는 LBA에 대한 엔트리를 조회하도록 사용될 수 있다. 논리적 대 물리적 블록 맵(203)에서 각각의 엔트리는 LBA에 대해, 미디어에서 메모리 블록의 물리적 어드레스를 식별한다. 예를 들어, 미디어에서 메모리 블록의 물리적 어드레스는 다이 식별자(233), 블록 식별자(235), 페이지 맵 엔트리 식별자(237) 등을 포함할 수 있다. 다이 식별자(233)는 메모리 서브시스템(110)의 메모리 디바이스(들)(130, 140)의 특정 IC 다이(예를 들어, 다이 A 또는 다이 B)를 식별한다. 블록 식별자(235)는 다이 식별자(233)를 사용하여 식별되는 IC 다이 내에 특정 메모리 블록(예를 들어, NAND 플래시 메모리)을 식별한다. 페이지 맵 엔트리 식별자(237)는 페이지 맵 데이터 구조(205)의 엔트리를 식별한다.
페이지 맵 데이터 구조(205)는 다수의 엔트리를 가질 수 있다. 페이지 맵(205)에서 각각의 엔트리는 메모리 셀들의 블록(예를 들어, NAND 메모리 셀들) 내에 메모리 셀들의 페이지를 식별하는 페이지 식별자(251)를 포함할 수 있다. 예를 들어, 페이지 식별자(251)는 NAND 메모리 셀들의 블록에서 페이지에 대한 워드 라인 넘버 및 페이지에 대한 서브 블록 넘버를 포함할 수 있다. 추가로, 페이지에 대한 엔트리는 페이지의 프로그래밍 모드(253)를 포함할 수 있다. 예를 들어, 페이지는 SLC 모드, MLC 모드, TLC 모드 또는 QLC 모드로 프로그래밍될 수 있다. SLC 모드로 구성된 경우, 페이지에서 각각의 메모리 셀은 1비트의 데이터를 저장한다. MLC 모드로 구성된 경우, 페이지에서 각각의 메모리 셀은 2비트의 데이터를 저장한다. TLC 모드로 구성된 경우, 페이지에서 각각의 메모리 셀은 3비트의 데이터를 저장한다. QLC 모드로 구성된 경우, 페이지에서 각각의 메모리 셀은 4비트의 데이터를 저장한다. 집적 회로 다이에서 다른 페이지들은 데이터 프로그래밍을 위한 다른 모드들을 가질 수 있다.
도 2에서, 블록 세트 데이터 구조(207)는 구역에 대한 동적 미디어 레이아웃의 양태들을 제어하는 데이터를 저장한다. 블록 세트 데이터 구조(207)는 도 1b의 블록 세트 맵 데이터 구조(107)와 동일하거나 유사할 수 있다. 일 실시예에서 표일 수 있는, 블록 세트 데이터 구조(207)는 다중 엔트리들을 가질 수 있다. 블록 세트 데이터 구조(207)에서 각각의 블록 세트 엔트리는 구역의 데이터가 저장되는 집적 회로 다이들(예를 들어, 다이 A 및 다이 B)의 넘버/카운트(271)를 식별한다. 구역에 사용되는 집적 회로 다이 각각에 대해, 블록 세트 데이터 구조(207)의 블록 세트 엔트리는 다이 식별자(273), 블록 식별자(275), 페이지 맵 엔트리 식별자(277), 페이지 맵 오프셋 값 등을 갖는다.
다이 식별자(273)는 메모리 서브시스템(110)의 미디어에서 특정 IC 다이(예를 들어, 다이 A 또는 다이 B)를 식별하며, 그 위에 구역의 IC 다이 후속 데이터가 저장될 수 있다. 블록 식별자(275)는 다이 식별자(273)를 사용하여 식별되는 IC 다이 내의 메모리의 특정 블록(예를 들어, NAND 플래시 메모리 또는 다른 미디어)을 식별하며, 블록에서 구역의 후속 데이터가 저장될 수 있다. 페이지 맵 엔트리 식별자(237)는 페이지 맵 데이터 구조(205)에서 페이지 맵 엔트리를 식별하고, 이는 구역의 후속 데이터를 저장하는데 사용될 수 있는 페이지를 식별한다.
예를 들어, 메모리 서브시스템(110)은 기록 커맨드들의 다중 스트림들을 수신한다. 일 실시예에서, 다중 스트림들의 각각의 개별 스트림은 일 실시예에서 논리적 어드레스 공간에 데이터를 순차적으로 기록하도록 구성되며; 및 다른 실시예에서, 다중 스트림들의 스트림은 데이터를 의사-순차적으로(pseudo-sequentially), 또는 일 실시예에서 논리적 어드레스 공간에 무작위로 기록하도록 구성된다. 각각의 기록 스트림은 데이터의 세트를 그룹으로서 함께 기록하고, 트리밍하고, 덮어쓰도록 태그가 지정된 커맨드들의 세트를 포함한다. 그룹에서, 데이터는 논리적 공간에 순차적으로, 무작위로 또는 의사-순차적으로 기록될 수 있다. 바람직하게는, 그룹에서 데이터는 소거 블록 세트에 기록되며, 소거 블록 세트에서 메모리 셀들은 스트림에 대한 데이터를 저장하지만 다른 스트림들로부터의 데이터는 저장하지 않는다. 소거 블록 세트는 다른 스트림들의 데이터를 소거하지 않고 스트림의 데이터를 제거하기 위해 소거될 수 있다.
예를 들어, 각각의 기록 스트림들은 메모리 서브시스템(110)의 메모리 디바이스(들)(130, 140)의 미디어에 할당된 네임스페이스의 구역에 있는 LBA들에 순차적으로 기록되도록 허용되지만, LBA(또는 논리적 어드레스) 공간에서 순서에서 벗어나 데이터를 기록하는 것이 금지된다. 메모리 서브시스템(110)의 변환 프로세서(123)는 데이터를 동시에 기록하는데 이용가능한 메모리 서브시스템(110)에서 다중 미디어 유닛들을 식별한다.
변환 프로세서(123)는 데이터를 기록하는데 이용가능한 다중 미디어 유닛들에서 동시 실행을 위해 다중 스트림들로부터 제1 커맨드를 선택할 수 있다. 변환 프로세서(123)는 다중 미디어 유닛들에서 동시 실행을 위해 선택된 제1 커맨드들에 동적으로 응답하여, 논리적 어드레스 공간에서 제1 커맨드들에 의해 식별된 논리적 어드레스들로부터 다중 메모리 유닛들의 메모리 유닛들의 물리적 어드레스들로 매핑하는 미디어 레이아웃의 일부를 생성 및 저장할 수 있다.
커맨드 실행 프로세서(124)는 물리적 어드레스들에 따라 메모리 유닛들에 데이터를 저장함으로써 제1 커맨드들을 동시에 실행할 수 있다. 예를 들어, 실행을 위해 제1 커맨드들을 스케줄링할 때, 제2 커맨드들의 실행은 메모리 서브시스템(110)의 미디어의 메모리 유닛들의 서브세트에서 진행 중일 수 있다. 따라서, 제2 커맨드들의 실행에 사용되는 메모리 유닛들의 서브세트는 제1 커맨드들에 이용가능하지 않다. 제1 커맨드들이 스케줄링되고 제1 커맨드들에 사용된 논리적 어드레스들에 대한 미디어 레이아웃의 일부가 결정된 후, 제1 커맨드들은 메모리 서브시스템(110)의 나머지 미디어 유닛들에서 제2 커맨드들의 실행의 진행과 동시에 및/또는 동시에 다중의 미디어 유닛들에서 실행될 수 있다.
예를 들어, 다음 커맨드들의 실행에 이용가능한 다중 메모리 유닛들(예를 들어, IC 다이들)의 식별 후, 변환 프로세서(123)는 블록 세트 데이터 구조(207)로부터, 다음 커맨드들의 데이터를 저장하는데 사용될 수 있는 물리적 어드레스들을 식별할 수 있다. 물리적 어드레스들은 다음 커맨드들에 사용되는 LBA 어드레스들에 대한 논리적 대 물리적 블록 맵 데이터 구조(203)의 대응하는 엔트리들을 업데이트하는 데 사용될 수 있다.
예를 들어, IC 다이가 데이터를 기록할 수 있는 경우, 변환 프로세서(123)는 IC 다이에서 메모리 셀들에 기록/프로그래밍될 수 있는 구역의 커맨드를 결정할 수 있다. 블록 세트 데이터 구조(207)로부터, 변환 프로세서(123)는 구역에 대한 엔트리를 찾고, 집적 회로 다이의 식별자(273)와 연관된 블록 식별자(275) 및 페이지 맵 엔트리 식별자(277)를 찾고, 및 구역의 커맨드에 사용된 LBA에 대한 논리 대 물리 블록 맵 데이터 구조(203)에서 엔트리의 대응하는 필드들을 업데이트하기 위해 다이 식별자(273), 블록 식별자(275), 및 페이지 맵 엔트리 식별자(277)를 사용한다.
도 3은 일 실시예에 따른 도 1a 내지 1b의 서브시스템 메모리 제어기(115)의 커맨드 생성 프로세서(122), 변환 프로세서(123), 및 커맨드 실행 프로세서(124)의 상호관계들의 블록도이다. 다양한 실시예들에서, 제어기(115)는 공유 휘발성 메모리(140B) 및 공유 휘발성 메모리(140B)에서 커맨드 버퍼(140C)를 포함한다. 일 실시예에서, 공유 휘발성 메모리(140B)는 도 1b를 참조하여 논의된 로컬 메모리(119) 또는 휘발성 메모리 디바이스(140A)의 일부이다. 다양한 실시예들에서, 커맨드 생성 프로세서(122)는 호스트 시스템(120)(또는 다른 요청 에이전트)으로부터 제1 판독 요청을 수신할 수 있다. 제1 판독 요청은 판독 동작이 지시되는 메모리 디바이스(130 또는 140)의 제1 물리적 어드레스에 대응하는, 제1 LBA를 포함할 수 있다. 제1 판독 요청을 서비스할 때, 커맨드 생성 프로세서(122)는 제1 LBA를 포함하는 제1 논리적 전송 유닛(LTU)을 생성할 수 있으며, 제1 LTU는 메모리 디바이스의 제1 물리적 어드레스에 매핑된다.
일부 실시예들에서, 변환 프로세서(123)는 그들의 데이터가 메모리 디바이스(들)(130, 140)에 프로그래밍될 때 LTU 대 물리적 어드레스(PA) 매핑들(301)을 공유 휘발성 메모리(140B)에 자동으로 저장(또는 버퍼링)하도록 구성될 수 있다. 예를 들어, LTU 대 PA 매핑(301)은 논리적 대 물리적 블록 맵 데이터 구조(203) 및 페이지 맵 데이터 구조(205)의 일부일 수 있으며, 개별의 물리적 어드레스들은 메모리 디바이스(130 또는 140)에 프로그래밍될 때 기록된다. 이는 커맨드 태그 수준에서 단지 LTU 대 PA 매핑만 제공하는 빠르게 액세스 가능한 데이터 구조를 제공할 수 있다. 일부 실시예들에서, 공유 휘발성 메모리(140B)의 LTU 대 PA 매핑(301)은 이 데이터 구조가 크기에서 제한되어 유지하도록 캐시로서 처리될 수 있다.
도 3을 계속 참조하면, 변환 프로세서(123)는 공유 휘발성 메모리(140B)에서 플래그(303)(예를 들어, 비트 플래그 등)를 더 선택적으로 설정할 수 있다. 그러므로 LTU 대 PA 매핑(301)의 각각의 엔트리는 LTU 넘버 및 플래그에 매핑된 물리적 어드레스를 포함할 수 있다. 대안적인 실시예에서, 레지스터들(112)(도 1b)에서 저장된 비트 맵의 비트 값이 설정될 수 있다. 비트 맵의 비트 값들 중 하나는 특정 LTU에 대응할 수 있고 따라서 공유 휘발성 메모리(140B)의 플래그(303)로서 기능할 수 있다. 비트 맵은 예를 들어, ZNS 동작별로 순차적으로 기록되는 것으로 알려진 물리적 어드레스 공간과 상관될 수 있다. 플래그(303)(또는 비트 맵 내에 비트 값)는 LTU 대 PA 매핑 엔트리가 LBA 어드레스 공간의 구역과 연관되는지 여부를 나타낼 수 있으며, 여기서 구역은 메모리 디바이스(130 또는 140)에 순차적으로 기록되는 데이터에 매핑된다. 변환 프로세서(123)는 물리적 어드레스가 위치된 다이가 서비스 커맨드들에 이용가능하다는 것을 나타내기 위해 다이 이용가능 플래그(305)를 선택적으로 더 설정할 수 있다.
다양한 실시예들에서, 플래그(303)가 설정되고 다이 이용가능 플래그(305)가 모두 설정되면, 커맨드 생성 프로세서(122)는 본 명세서에 개시된 판독 미리보기 최적화를 수행한다. 그 판독 최적화는, 예를 들어, 제1 판독 요청에 대해 LTU 대 PA 매핑(301)으로부터 검색된 제1 물리적 어드레스를 자동 증가하여, 제1 물리적 어드레스의 오프셋 값 내에 후속 물리적 어드레스들을 결정하는 것을 포함할 수 있다. 일 실시예에서, 자동 증가는 제1 물리적 어드레스로부터 판독 윈도우 크기의 끝에 도달할 때까지 페이지 넘버만큼 제1 물리적 어드레스를 증가하기 위해 수행된다.
그 다음 커맨드 생성 프로세서(122)는 메모리 디바이스(130 또는 140)로부터 데이터를 검색하고 도 1b를 참조하여 논의된 버퍼들의 세트에 데이터를 저장하기 위해 커맨드 버퍼(140C) 내에서, 커맨드 실행 프로세서(124)를 지시하는 데 사용되는 커맨드 태그들의 세트를 생성(또는 업데이트)할 수 있다. 그 다음 커맨드 생성 프로세서(122)는 커맨드 태그들의 세트 중 하나를 개별적으로 포함하는 커맨드들의 그룹을 처리 디바이스의 커맨드 실행 프로세서(124)에 더 송신할 수 있다. 커맨드들의 세트는 커맨드 버퍼(140C) 내에서 Cmd[0], Cmd[1], Cmd[2],... Cmd[n]로서 버퍼링될 수 있다. 일 실시예에서, 커맨드 생성 프로세서(122)는 커맨드 태그들의 세트를 커맨드 체인(예를 들어, 개별의 커맨드들의 체인)으로 인터링크하고 단일 커맨드 메시지에서 커맨드 체인을 커맨드 실행 프로세서(124)에 송신할 수 있다.
커맨드 실행 프로세서(124)가 제1(또는 원래의) 판독 커맨드의 판독 미리보기를 위해 할당된 개별의 버퍼들에 데이터를 저장한 후, 커맨드 생성 프로세서(122)는 제1 물리적 어드레스에 저장된 데이터를 호스트 시스템(120) 또는 다른 요청 에이전트로 반환할 수 있다. 그러나, 커맨드 생성 프로세서(122)는 또한 버퍼들로부터 직접 후속 물리적 어드레스들로 지시되는 후속 판독 커맨드들을 추가로 서비스할 수 있다. 예를 들어, 제2 판독 요청에 응답하여, 커맨드 생성 프로세서(122)는 제2 판독 요청의 제2 LBA가 후속 물리적 어드레스들 중 제2 물리적 어드레스에 대응한다고 결정할 수 있다. 그 다음 커맨드 생성 프로세서(122)는 제2 커맨드 태그와 연관된 버퍼 어드레스를 갖는 버퍼들의 세트의 커맨드 태그들의 세트의 제2 버퍼로부터 데이터의 제2 서브세트를 검색할 수 있고, 제1 후속 판독 커맨드들에 응답하여 데이터의 제2 서브세트를 호스트 시스템(120)에 송신할 수 있다.
판독 미리보기 동작을 포함하는 위의 순차적 판독 최적화의 예로서, 각각의 구역이 100MB이고, 호스트 시스템(120)이 순차적 판독 위치들에 대한 판독 액세스를 시도한다고 가정한다. 호스트 시스템(120)은 표 2에 예시된 구역들에 매핑되는 예시적인 LBA들 내에 다중 판독 요청들을 발행할 수 있다.
LBA 값 내에: 구역 ID(ZID)
300-399 3
200-299 2
100-199 1
0-99 0
각각의 블록 세트(예를 들어, 블록 스트라이프)에 200개의 페이지들이 있다고 가정하면, 이러한 구역 ID들은 구역 맵 데이터 구조(201)를 통해, 다음 블록 세트 식별자들로 변환하고 표 3에 예시된 대로 포인터들을 기록할 수 있다. 각각의 블록 세트 식별자는 데이터가 기록되는 블록 세트(또는 블록 스트라이프)를 식별하고 기록 포인터는 지정된 구역에서 다음에 새로운 기록 데이터가 기록되어야 하는 위치를 추적한다. 기록 포인터까지의 데이터는 각 구역당 표 2에 설명된 시작 위치로부터 판독가능하다.
구역 ID(ZID) 블록 세트 식별자; 기록 포인터
3 0xA, 99
2 0xF, 200
1 0x7, 178
0 0x2, 0
따라서, 제1 판독 요청이 LBA(200)에서 보내진다고 가정하면, 커맨드 생성 프로세서(122)는 구역 ID가 2인 것으로 결정한다. 이에 응답하여, 커맨드 생성 프로세서(122)는 할당된 버퍼들의 세트에, LBA 값들(200 내지 208)과 연관된 데이터, 예를 들어, 기본 LBA 값에 8의 오프셋을 더한 값을 저장하기 위해 커맨드 실행 프로세서(124)를 지시하는 다중 커맨드들로 본 명세서에 개시된 판독 미리보기 동작을 수행할 수 있다. 오프셋 값은 한 번에 순차적으로 기록되는 미리 결정된 데이터 양 또는 버퍼들이 캐싱할 수 있는 데이터의 양으로 결정되는 미리 결정된 페이지들의 수로 결정될 수 있다. 호스트 시스템(120)이 LBA(200) 이후 다음 순차적의 LBA인 LBA 값(201)으로 제2 판독 요청을 발행할 수 있다고 가정한다. LBA 값(201)에 대한 데이터의 제2 서브세트는 이제 버퍼들에 저장되고, 커맨드 생성 프로세서(122)는 제2 판독 요청에 응답하여 데이터의 제2 서브세트를 호스트 시스템(120)에 반환할 수 있다.
도 4는 일 실시예에 따른 순차적 판독 최적화를 위한 방법(400)의 흐름도이다. 방법(400)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그램가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 작동되거나 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(400)은 도 1a 내지 1b의 제어기(115)(예를 들어, 커맨드 생성 프로세서(122))에 의해 수행된다. 특정한 시퀀스나 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 오직 예시들로서만 이해되어야 하며, 예시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가적으로, 다양한 실시예들에서 하나 이상의 프로세스들이 생략될 수 있다. 따라서, 모든 실시예에서 모든 프로세스들이 필요한 것은 아니다. 다른 프로세스 흐름이 가능하다.
도 4를 참조하면, 동작(410)에서, 처리 로직은 메모리 디바이스에 대한 LBA 어드레스 공간의 제1 논리적 블록 어드레스(LBA)를 포함하는 판독 요청을 수신한다. 동작(415)에서, 처리 로직은 제1 LBA를 포함하는 제1 논리적 전송 유닛(LTU)을 생성하고, 제1 LTU는 메모리 디바이스의 제1 물리적 어드레스에 매핑된다. 변환 프로세서(123)가 공유 휘발성 메모리(140B)(도 3)의 LTU 대 PA 매핑들(301)에서 LTU 대 PA 엔트리를 이미 생성한 한 제1 LTU는 변환 프로세서(123)로 발송될 필요가 없다. 그 다음 처리 로직은 공유 메모리(140B)(도 3) 내에 제1 LTU에 대해 인덱싱된 제1 물리적 어드레스에 액세스할 수 있다.
계속해서 도 4를 참조하면, 동작(420)에서, 처리 로직은 빠른 룩업 플래그가 설정되었는지 여부를 결정한다. 이 빠른 룩업 플래그는 공유 휘발성 메모리(140B)에 설정된, 제1 물리적 어드레스와 연관된, 플래그(303)일 수 있으며; 또는 빠른 룩업 플래그는 메모리 디바이스(130 또는 140)의 ZNS 관련 물리적 어드레스 공간과 연관된 비트 맵을 저장하는 레지스터들(112) 중 하나의 비트 값일 수 있다. 어느 경우든, 빠른 룩업 플래그는 제1 LTU가 다중 순차적 물리적 어드레스에 순차적으로 매핑되는 다중 순차적 LBA들의 구역과 연관되어 있음을 나타낼 수 있다. 동작(440)에서, 처리 로직은 도 3을 참조하여 논의된, 다이 이용가능 플래그(305)가 설정되었는지 여부를 결정한다.
동작(430)에서, 빠른 룩업 플래그 또는 다이 이용가능 플래그가 설정되지 않은 경우, 처리 로직은 변환 프로세서(123)가 ZNS 데이터 구조들 내에서 룩업을 수행하여, 제1 LTU를 제1 물리적 어드레스에 매핑하도록 변환 프로세서(123)에 제1 LTU를 발송하는 것을 포함하는 정상 판독 경로를 통해 판독 요청을 제출한다.
동작(450)에서, 제1 LTU에 대해 빠른 룩업 플래그 및 다이 이용가능 플래그가 설정되어 있다고 가정하고, 처리 로직은 휘발성 메모리(예를 들어, 도 3의 공유 휘발성 메모리(140B))로부터, 변환 프로세서(123)에 의해 거기에 저장(또는 버퍼링)된 제1 물리적 어드레스를 검색한다. 제1 물리적 어드레스는 공유 휘발성 메모리(140B)의 LTU 대 PA 매핑들(301)의 엔트리 내에 인덱싱될 수 있다.
동작(460)에서, 처리 로직은 휘발성 메모리에서 버퍼들의 세트를 할당하고, 여기서 버퍼들의 세트의 용량은 제1 물리적 어드레스 및 제1 물리적 어드레스에서 시작하는 판독 윈도우 크기 내에 순차적으로 넘버링된 후속 물리적 어드레스들에 저장된 데이터의 양과 일치한다. 버퍼들을 저장하는 휘발성 메모리는 로컬 메모리(119), 휘발성 메모리 디바이스(140A), 및/또는 공유 휘발성 메모리(140B)일 수 있다. 다양한 실시예들에서, 처리 로직은 판독 윈도우 크기(예를 들어, 오프셋 값)의 끝에 도달할 때까지 페이지 넘버만큼 제1 물리적 어드레스를 증가시킴으로써 각각의 후속 물리적 어드레스를 결정한다.
동작(470)에서, 처리 로직은 메모리 디바이스로부터 데이터를 검색하고 버퍼들의 세트에서 데이터를 저장하도록 처리 디바이스의 커맨드 실행 프로세서(124)에 지시하는 커맨드 태그들의 세트를 생성한다. 커맨드 태그들의 세트는 제1 물리적 어드레스와 연관된 제1 커맨드 태그 및 후속 물리적 어드레스들과 연관된 추가 커맨드 태그들을 포함할 수 있다.
동작(480)에서, 처리 로직은 커맨드 태그들의 세트를 개별적으로 포함하는 커맨드들의 그룹을 커맨드 실행 프로세서(124)에 송신한다. 일 실시예에서, 커맨드 생성 프로세서(122)는 커맨드 태그들의 세트를 커맨드 체인(예를 들어, 개별의 커맨드들의 체인)으로 인터링크(interlink)하고 단일 커맨드 메시지에서 커맨드 체인을 커맨드 실행 프로세서(124)에 송신할 수 있다.
도 5는 관련 실시예에 따른 순차적 판독 최적화를 위한 방법(500)의 흐름도이다. 방법(500)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그램가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 작동되거나 실행되는 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(500)은 도 1a 내지 1b의 제어기(115)(예를 들어, 커맨드 생성 프로세서(122))에 의해 수행된다. 비록 특정한 시퀀스나 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 오직 예시들로서만 이해되어야 하며, 예시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가적으로, 다양한 실시예들에서 하나 이상의 프로세스들이 생략될 수 있다. 따라서, 모든 실시예에서 모든 프로세스들이 필요한 것은 아니다. 다른 프로세스 흐름이 가능하다.
도 5를 참조하면, 동작(510)에서, 처리 로직은 메모리 디바이스에 대한 LBA 어드레스 공간의 제1 논리적 블록 어드레스(LBA)를 포함하는 판독 요청을 수신한다. 동작(520)에서, 처리 로직은 제1 LBA를 포함하고 메모리 디바이스의 제1 물리적 어드레스에 매핑될 제1 논리적 전송 유닛(LTU)을 생성한다.
동작(530)에서, 처리 로직은 제1 LTU가 LBA 어드레스 공간의 구역과 연관되어 있음을 결정하기 위해 플래그를 판독하고, 여기서 구역은 다중 순차적 물리적 어드레스들에 순차적으로 매핑되는 다중 순차적 LBA들을 포함한다. 논의된 바와 같이, 플래그는 공유 휘발성 메모리(140B)에 저장된 플래그(303) 또는 레지스터들(112)에 저장된 비트 맵의 비트 값일 수 있다. 어느 경우든, 플래그 또는 비트 값은 LTU가 메모리 디바이스에 순차적으로 기록되는 데이터에 매핑되는 구역과 연관되어 있음을 나타낼 수 있다.
동작(540)에서, 처리 로직은 휘발성 메모리에서 버퍼들의 세트를 할당하고, 여기서 버퍼들의 세트의 용량은 제1 물리적 어드레스 및 물리적 어드레스에서 시작하는 판독 윈도우 크기 내에서 순차적으로 넘버링된 후속 물리적 어드레스들에 저장된 데이터의 양과 일치한다. 버퍼들을 저장하는 휘발성 메모리는 로컬 메모리(119), 휘발성 메모리 디바이스(140A), 또는 다른 공유 휘발성 메모리(140B)일 수 있다. 다양한 실시예들에서, 처리 로직은 판독 윈도우 크기의 끝에 도달할 때까지 페이지 넘버만큼 제1 물리적 어드레스를 증가시킴으로써 각각의 후속 물리적 어드레스를 결정한다.
동작(550)에서, 처리 로직은 메모리 디바이스로부터 데이터를 검색하고 버퍼들의 세트에서 데이터를 저장하도록 처리 디바이스의 커맨드 실행 프로세서에 지시하는 커맨드 태그들의 세트를 생성한다. 이 실시예에서, 커맨드 태그들의 세트는 적어도 제1 물리적 어드레스와 연관된 제1 커맨드 태그 및 제1 물리적 어드레스를 순차적으로 뒤따르는 후속 물리적 어드레스들인 제2 물리적 어드레스와 연관된 제2 커맨드 태그를 포함한다.
도 7은 머신이 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템(700)의 예시적인 머신을 도시한다. 일부 실시예에서, 컴퓨터 시스템(700)은 메모리 서브시스템(예를 들어, 도 1a의 메모리 서브시스템(110))을 포함하거나 이에 연결되거나 이를 활용하는 호스트 시스템(예를 들어, 도 1a의 호스트 시스템(120))에 대응할 수 있다. 대안적인 실시예에서, 머신은 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷의 다른 머신에 연결(예를 들어, 네트워크)될 수 있다. 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신의 용량으로, 머신은 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로 또는 클라우드 컴퓨팅 인프라 또는 환경에서 서버 또는 클라이언트 머신으로서 동작할 수 있다.
머신은 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인휴대정보비서(PDA), 휴대폰, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 기계가 취해야 할 조치를 지정하는 일련의 커맨드(순차적이든 아니든)을 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신이 예시되어 있지만, "머신"이라는 용어는 여기서 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 여러 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합체를 포함하는 것으로 고려되어야 한다.
예시적인 컴퓨터 시스템(700)은 처리 디바이스(702), 메인 메모리(704)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 예를 들어 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM) 등), 정적 메모리(706)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(718)을 포함하고, 이들은 버스(730)를 통해 서로 통신한다.
처리 디바이스(702)는 마이크로프로세서, 중앙 처리 디바이스 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 보다 구체적으로, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서 또는 다른 명령어 세트를 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(702)는 또한 주문형 집적 회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(702)는 본 명세서에서 논의된 동작 및 단계를 수행하기 위한 명령어(726)를 실행하도록 구성된다. 컴퓨터 시스템(700)은 네트워크(720)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(708)를 더 포함할 수 있다.
데이터 저장 시스템(718)은 본 명세서에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 소프트웨어 또는 명령어(726)의 하나 이상의 세트가 저장되어 있는 머신 판독 가능 저장 매체(724)(컴퓨터 판독 가능 매체라고도 함)를 포함할 수 있다. 명령어(726)는 또한 컴퓨터 시스템(700)에 의한 실행 동안 메인 메모리(704) 및/또는 처리 디바이스(702) 내에 완전히 또는 적어도 부분적으로 상주할 수 있고, 메인 메모리(704) 및 처리 디바이스(702)는 또한 머신 판독 가능 저장 매체를 구성한다. 머신 판독 가능 저장 매체(724), 데이터 저장 시스템(718), 및/또는 메인 메모리(704)는 도 1a 내지 도 1b의 메모리 서브시스템(110)에 대응할 수 있다.
일 실시예에서, 명령어(726)는 도 1b의 버퍼 관리자(113)에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 머신 판독 가능 저장 매체(724)는 단일 매체의 예시적인 실시예로 도시되어 있지만, "비일시적 머신 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트들을 저장하는 단일 매체 또는 다중 매체들을 포함하는 것으로 고려되어야 한다. "머신 판독 가능 저장 매체"라는 용어는 머신에 의해 실행되는 명령어들의 세트를 저장하거나 인코딩할 수 있고 머신이 본 개시의 방법론 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 또한 포함하는 것으로 고려되어야 한다. "머신 판독 가능 저장 매체"라는 용어는 따라서, 이에 제한되는 것은 아니지만, 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하는 것으로 고려되어야 한다.
이전의 상세한 설명의 일부는 컴퓨터 메모리 내의 데이터 비트에 대한 동작의 알고리즘 및 기호 표현의 관점에서 제시되었다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 기술자가 자신의 작업 내용을 해당 기술 분야의 다른 사람에게 가장 효과적으로 전달하기 위해 사용하는 방법이다. 알고리즘은 본 명세서에서 일반적으로 원하는 결과로 이어지는 자체 일관된 동작들의 시퀀스로 간주된다. 동작들은 물리량의 물리적 조작이 필요한 동작들이다. 일반적으로 반드시 그런 것은 아니지만 이러한 양은 저장, 결합, 비교 및 조작할 수 있는 전기 또는 자기 신호의 형태를 취한다. 주로 일반적인 사용을 위해 이러한 신호를 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 지칭하는 것이 때때로 편리한 것으로 입증되었다.
그러나, 이러한 모든 용어 및 유사한 용어는 적절한 물리량과 관련되어야 하며 단지 이러한 양에 적용되는 편리한 라벨일 뿐이라는 점을 염두에 두어야 한다. 본 개시는 컴퓨터 시스템 또는 컴퓨터 시스템의 레지스터 및 메모리 내에서 물리적(전자적) 수량으로 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 그러한 정보 저장 시스템 내에서 물리적 수량으로 유사하게 표현된 다른 데이터로 조작하고 변환하는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스를 참조할 수 있다.
본 개시는 또한 본 명세서의 동작을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성되거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 이에 제한되는 것은 아니지만 플로피 디스크, 광 디스크, CD-ROM 및 광자기 디스크를 포함하는 임의의 유형의 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 각각 컴퓨터 시스템 버스에 결합된 전자 명령어를 저장하기에 적합한 임의의 유형의 매체와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본 명세서에 제시된 알고리즘 및 디스플레이는 본질적으로 임의의 특정 컴퓨터 또는 기타 장치와 관련이 없다. 다양한 범용 시스템이 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 이러한 다양한 시스템의 구조는 아래 설명에 설명된 대로 나타난다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에 설명된 바와 같이 본 개시내용의 교시를 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시내용은 명령어가 저장된 머신 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있으며, 이는 본 개시내용에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스)을 프로그래밍하는 데 사용될 수 있다. 머신 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예에서, 머신 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 머신(예를 들어, 컴퓨터) 판독가능 저장 매체, 예를 들어 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트 등을 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 하기 청구범위에 기재된 본 개시의 실시예의 보다 넓은 사상 및 범위를 벗어나지 않고 다양한 수정이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 시스템(system)에 있어서,
    메모리 디바이스(memory device);
    버퍼(buffer)들을 포함하는 휘발성 메모리(volatile memory); 및
    상기 메모리 디바이스 및 상기 휘발성 메모리에 결합된 처리 디바이스(processing device)를 포함하고, 상기 처리 디바이스의 커맨드 생성 프로세서(command generation processor)는:
    호스트 시스템(host system)으로부터, 상기 메모리 디바이스에 대한 LBA 어드레스 공간의 제1 논리 블록 어드레스(LBA)를 포함하는 판독 요청(read request)을 수신하고;
    상기 제1 LBA를 포함하도록 제1 논리적 전송 유닛(LTU)을 생성하고-여기서, 상기 제1 LTU 는 상기 메모리 디바이스의 제1 물리적 어드레스에 매핑되는 것임-;
    상기 휘발성 메모리로부터, 상기 제1 LTU가 상기 LBA 어드레스 공간의 구역과 연관되어 있음을 결정하기 위해 플래그(flag)를 판독하고-여기서, 상기 구역은 복수의 순차적 물리적 어드레스들에 순차적으로 매핑되는 복수의 순차적 LBA들을 포함함-; 및
    상기 처리 디바이스의 커맨드 실행 프로세서가 상기 메모리 디바이스로부터 데이터를 검색하고 상기 버퍼들의 세트에 상기 데이터를 저장하도록 지시하는 커맨드 태그들의 세트를 생성하고, 상기 커맨드 태그들의 세트는 상기 제1 물리적 어드레스와 연관된 제1 커맨드 태그 및 상기 제1 물리적 어드레스를 순차적으로 뒤따르는 제2 물리적 어드레스와 연관된 제2 커맨드 태그를 포함하는, 시스템.
  2. 제1항에 있어서, 상기 커맨드 태그들의 세트의 각각의 커맨드 태그는:
    상기 메모리 디바이스의 물리적 어드레스 공간의 물리적 어드레스에 매핑되는 LTU를 식별하는 LTU 넘버; 및
    상기 버퍼들의 상기 세트 내에 위치의 버퍼 어드레스를 포함하는, 시스템.
  3. 제1항에 있어서, 상기 커맨드 태그들의 세트는 상기 제2 물리적 어드레스 다음에 순차적으로 넘버링된 후속 물리적 어드레스들과 연관된 추가 커맨드 태그들을 더 포함하고, 각각의 후속 물리적 어드레스는 상기 제1 물리적 어드레스로부터 판독 윈도우 크기(read window size)의 끝에 도달할 때까지 페이지 넘버(page number)만큼 증가되는, 시스템.
  4. 제1항에 있어서, 상기 처리 디바이스의 상기 커맨드 생성 프로세서는 또한:
    상기 휘발성 메모리로부터, 상기 제1 물리적 어드레스를 검색하고; 및
    상기 제1 물리적 어드레스로부터 검색되고 상기 버퍼들의 상기 세트의 제1 버퍼에서 저장된 상기 데이터의 제1 서브세트(subset)를 상기 호스트 시스템으로 반환하는, 시스템.
  5. 제4항에 있어서, 제2 판독 요청에 응답하여, 상기 커맨드 생성 프로세서는:
    상기 제2 판독 요청의 제2 LBA가 상기 제2 물리적 어드레스에 대응한다고 결정하고;
    상기 버퍼들의 상기 세트의 제2 버퍼로부터 상기 데이터의 제2 서브세트를 검색하고-여기서, 상기 제2 버퍼는 상기 제2 커맨드 태그와 연관된 버퍼 어드레스를 가짐-; 및
    상기 데이터의 상기 제2 서브세트를 상기 호스트 시스템으로 송신하는, 시스템.
  6. 제1항에 있어서, 상기 처리 디바이스의 변환 프로세서(translation processor)는 상기 메모리 디바이스에 순차적으로 기록되는 상기 데이터에 기초하여 상기 휘발성 메모리에 상기 플래그를 설정하는, 시스템.
  7. 제1항에 있어서, 상기 커맨드 생성 프로세서는 또한 상기 커맨드 태그들의 세트 중 하나를 개별적으로 포함하는 커맨드들의 그룹을 상기 처리 디바이스의 상기 커맨드 실행 프로세서에 송신하고, 및 상기 커맨드 태그들의 세트의 수신에 응답하여, 상기 커맨드 실행 프로세서는 상기 메모리 디바이스로부터 상기 데이터를 검색하고 상기 커맨드 태그들의 세트의 개별 버퍼 어드레스들에 따라 상기 버퍼들의 상기 세트에 상기 데이터를 저장하는, 시스템.
  8. 제1항에 있어서, 상기 커맨드 생성 프로세서는 또한:
    상기 커맨드 태그들의 세트를 커맨드 체인(command chain)에 인터링크(interlink)하고; 및
    단일 커맨드 메시지에서 상기 커맨드 체인을 상기 커맨드 실행 프로세서에 송신하는, 시스템.
  9. 제1항에 있어서, 상기 커맨드 생성 프로세서는 또한:
    상기 버퍼들이 LTU 넘버로 분류되는 2-3 트리 알고리즘; 또는
    해시 알고리즘(hash algorithm)을 사용하는 N-way 캐시 중의 하나를 사용하여 상기 휘발성 메모리 내에 상기 버퍼들을 추적하고 할당하는, 시스템.
  10. 방법에 있어서,
    처리 디바이스의 커맨드 생성 프로세서에 의해, 메모리 디바이스에 대한 LBA 어드레스 공간의 제1 논리적 블록 어드레스(LBA)를 포함하는 판독 요청을 수신하는 단계;
    상기 커맨드 생성 프로세서에 의해, 상기 제1 LBA를 포함하도록 제1 전송 유닛(LTU)을 생성하는 단계-여기서 상기 제1 LTU는 상기 메모리 디바이스의 제1 물리적 어드레스에 매핑되는 것임-;
    휘발성 메모리로부터의 상기 커맨드 생성 프로세서에 의해, 제1 LTU가 상기 LBA 어드레스 공간의 구역과 연관되어 있음을 결정하기 위해 비트 맵의 비트 값을 판독하는 단계-여기서, 상기 구역은 복수의 순차적 물리적 어드레스들에 순차적으로 매핑되는 복수의 순차적 LBA들을 포함함-;
    상기 커맨드 생성 프로세서에 의해, 상기 휘발성 메모리에 버퍼들의 세트를 할당하는 단계-여기서, 상기 버퍼들의 세트의 용량(capacity)은 상기 제1 물리적 어드레스 및 상기 제1 물리적 어드레스에서 시작하는 판독 윈도우 크기 내에서 순차적으로 넘버링된 후속 물리적 어드레스에 저장된 데이터의 양과 일치함-; 및
    상기 커맨드 생성 프로세서에 의해, 상기 처리 디바이스의 커맨드 실행 프로세서가 상기 메모리 디바이스로부터 상기 데이터를 검색하고 상기 버퍼들의 세트에 상기 데이터를 저장하도록 지시하는 커맨드 태그들의 세트를 생성하는 단계를 포함하고, 상기 커맨드 태그들의 세트는 적어도 상기 제1 물리적 어드레스와 연관된 제1 커맨드 태그 및 상기 제1 물리적 어드레스에 순차적으로 뒤따르는, 상기 후속 물리적 어드레스들 중 제2 물리적 어드레스와 연관된 제2 커맨드 태그를 포함하는, 시스템.
  11. 제10항에 있어서, 상기 커맨드 생성 프로세서에 의해:
    상기 휘발성 메모리로부터, 상기 제1 물리적 어드레스를 검색하는 단계;
    상기 제1 물리적 어드레스와 연관된, 다이 이용가능 플래그가 설정되었음을 결정하는 단계; 및
    상기 제1 물리적 어드레스로부터 검색되고 상기 버퍼들의 세트의 제1 버퍼에 캐싱된(cached) 상기 데이터의 제1 서브세트를 요청 에이전트(requesting agent)로 반환하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서,
    제2 판독 요청을 수신하는 단계;
    상기 제2 판독 요청의 제2 LBA가 상기 제1 물리적 어드레스로부터 상기 판독 윈도우 크기 내에 상기 제2 물리적 어드레스에 대응한다고 결정하는 단계;
    상기 버퍼들의 세트의 제2 버퍼로부터 상기 데이터의 제2 서브세트를 검색하는 단계-여기서, 상기 제2 버퍼는 상기 제2 커맨드 태그와 연관된 버퍼 어드레스를 가짐-; 및
    상기 데이터의 상기 제2 서브세트를 상기 요청 에이전트에 송신하는 단계를 더 포함하는, 방법.
  13. 제10항에 있어서, 각각의 버퍼에 대한 플래그 또는 카운터 중 하나의 사용을 통해 상기 버퍼들의 세트의 용도를 추적하는 것을 단계를 포함하고, 상기 추적은 다중 구역들에 대응하는 다중 호스트 애플리케이션들에 의한 상기 버퍼들의 세트의 사용을 가능하게 하는, 방법.
  14. 제10항에 있어서, 상기 커맨드 태그들의 세트는 상기 제2 커맨드 태그를 포함하도록 상기 후속 물리적 어드레스들과 연관된 추가 커맨드 태그들을 더 포함하고, 상기 방법은 상기 제1 물리적 어드레스로부터 상기 판독 윈도우 크기의 끝에 도달할 때까지 페이지 넘버만큼 상기 제1 물리적 어드레스를 증가시킴으로써 상기 후속 물리적 어드레스들을 결정하는 단계를 더 포함하는, 방법.
  15. 제10항에 있어서, 상기 커맨드 태그들의 세트를 생성하는 단계는 상기 휘발성 메모리의 커맨드 버퍼 내에서:
    상기 제1 LTU의 제1 LTU 넘버 및 상기 버퍼들의 세트의 제1 버퍼 어드레스로 상기 제1 커맨드 태그; 및
    제2 LBA에 대응하는 제2 LTU의 제2 LTU 넘버, 및 상기 버퍼들의 세트의 제2 버퍼 어드레스로 상기 제2 커맨드 태그를 업데이트 하는 단계를 더 포함하는, 방법.
  16. 제10항에 있어서, 상기 처리 디바이스의 변환 프로세서에 의해:
    상기 제1 LBA가 상기 구역과 연관되었음을 결정하는 단계; 및
    상기 메모리 디바이스에 순차적으로 기록되는 상기 데이터에 기초하여 상기 휘발성 메모리에, 상기 제1 물리적 어드레스와 연관된, 상기 비트 값을 설정하는 단계를 더 포함하는, 방법.
  17. 제10항에 있어서, 상기 커맨드 태그들의 세트는 상기 제2 커맨드 태그를 포함하도록 상기 후속 물리적 어드레스들과 연관된 추가 커맨드 태그들을 더 포함하고, 상기 방법은:
    상기 커맨드 생성 프로세서에 의해 상기 커맨드 실행 프로세서로, 상기 커맨드 태그들의 세트를 개별적으로 포함하는 커맨드들의 그룹을 송신하는 단계;
    상기 커맨드 실행 프로세서에 의해, 상기 메모리 디바이스의 상기 제1 물리적 어드레스 및 상기 후속 물리적 어드레스들로부터 상기 데이터를 검색하는 단계; 및
    상기 커맨드 태그들의 세트의 개별 버퍼 어드레스들에 따라 상기 버퍼들의 세트에 상기 데이터를 저장하는 단계를 더 포함하는, 방법.
  18. 제10항에 있어서,
    상기 커맨드 태그들의 세트를 커맨드 체인에 인터링크하는 단계; 및
    단일 커맨드 메시지에서 상기 커맨드 체인을 상기 커맨드 실행 프로세서에 송신하는 단계를 더 포함하는, 방법.
  19. 제10항에 있어서, 상기 휘발성 메모리 내에:
    버퍼들의 상기 세트가 LTU에 의해 분류되는 2-3 트리 알고리즘; 또는
    해시 알고리즘을 사용하는 N-way 캐시 중 하나를 통해 상기 버퍼들의 세트의 할당을 추적하는 단계를 더 포함하는, 방법.
  20. 명령어를 저장하는 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium)로서, 상기 명령어는 서브 시스템 메모리 제어기의 처리 디바이스의 커맨드 생성 프로세서에 의해 실행될 때, 상기 처리 디바이스로 하여금:
    메모리 디바이스에 대한 LBA 어드레스 공간의 제1 논리적 블록 어드레스(LBA)를 포함하는 판독 요청을 수신하는 단계;
    상기 커맨드 생성 프로세서에 의해, 상기 제1 LBA를 포함하도록 제1 전송 유닛(LTU)을 생성하는 단계-여기서, 상기 제1 LTU는 상기 메모리 디바이스의 제1 물리적 어드레스에 매핑되는 것임-;
    휘발성 메모리로부터, 제1 LTU가 상기 LBA 어드레스 공간의 구역과 연관되어 있음을 결정하기 위해 플래그를 판독하는 단계-여기서, 상기 구역은 복수의 순차적 물리적 어드레스들에 순차적으로 매핑되는 복수의 순차적 LBA들을 포함함-;
    상기 휘발성 메모리에 버퍼들의 세트를 할당하는 단계-여기서, 상기 버퍼들의 세트의 용량(capacity)은 상기 제1 물리적 어드레스 및 상기 제1 물리적 어드레스에서 시작하는 판독 윈도우 크기 내에서 순차적으로 넘버링된 후속 물리적 어드레스에 저장된 데이터의 양과 일치함-; 및
    상기 처리 디바이스의 커맨드 실행 프로세서가 상기 메모리 디바이스로부터 상기 데이터를 검색하고 상기 버퍼들의 세트에 상기 데이터를 저장하도록 지시하는 커맨드 태그들의 세트를 생성하는 단계를 포함하는 복수의 동작들을 수행하게 하고, 상기 커맨드 태그들의 세트는 적어도 제1 물리적 어드레스와 연관된 제1 커맨드 태그 및 상기 제1 물리적 어드레스에 순차적으로 뒤따르는 상기 제2 물리적 어드레스와 연관된 제2 커맨드 태그를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
KR1020227030921A 2020-02-18 2021-02-17 순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화 KR20220129662A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/794,016 US11216364B2 (en) 2020-02-18 2020-02-18 Sequential read optimization in a memory sub-system that programs sequentially
US16/794,016 2020-02-18
PCT/US2021/018429 WO2021168020A1 (en) 2020-02-18 2021-02-17 Sequential read optimization in a memory sub-system that programs sequentially

Publications (1)

Publication Number Publication Date
KR20220129662A true KR20220129662A (ko) 2022-09-23

Family

ID=77272691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227030921A KR20220129662A (ko) 2020-02-18 2021-02-17 순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화

Country Status (6)

Country Link
US (1) US11216364B2 (ko)
EP (1) EP4107624A1 (ko)
JP (1) JP7375215B2 (ko)
KR (1) KR20220129662A (ko)
CN (1) CN115427935A (ko)
WO (1) WO2021168020A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11435914B2 (en) * 2020-03-30 2022-09-06 Western Digital Technologies, Inc. Dynamic ZNS open zone active limit
US11789612B2 (en) * 2020-06-16 2023-10-17 Sandisk Technologies Llc Plane programming scheme for non-volatile memory with large block sizes
US11675695B2 (en) * 2020-06-29 2023-06-13 Micron Technology, Inc. Namespace management for memory sub-systems
KR20220022318A (ko) * 2020-08-18 2022-02-25 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템
JP2023088772A (ja) * 2021-12-15 2023-06-27 キオクシア株式会社 メモリシステムおよび方法
CN114627938A (zh) * 2022-03-16 2022-06-14 英韧科技(上海)有限公司 数据写入方法和装置以及存储介质
CN116126239B (zh) * 2022-12-30 2024-01-23 武汉麓谷科技有限公司 一种提高zns固态硬盘nor flash写入性能的方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353874B1 (en) 2000-03-17 2002-03-05 Ati International Srl Method and apparatus for controlling and caching memory read operations in a processing system
JP2004318940A (ja) 2003-04-14 2004-11-11 Renesas Technology Corp 記憶装置
US7162550B2 (en) * 2003-07-21 2007-01-09 Intel Corporation Method, system, and program for managing requests to an Input/Output device
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8756399B2 (en) 2006-01-25 2014-06-17 Seagate Technology Llc Mutable association of a set of logical block addresses to a band of physical storage blocks
JP2009116834A (ja) * 2007-11-09 2009-05-28 Sony Corp データ記録装置,データ記録装置の内部制御方法及びデータ記録システム
TWI454906B (zh) 2009-09-24 2014-10-01 Phison Electronics Corp 資料讀取方法、快閃記憶體控制器與儲存系統
JP2011154547A (ja) 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP2012064158A (ja) 2010-09-17 2012-03-29 Toshiba Corp メモリ管理装置及びメモリ管理方法
WO2012039002A1 (en) 2010-09-21 2012-03-29 Hitachi, Ltd. Semiconductor storage device and data control method thereof
US10031850B2 (en) 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
US9235346B2 (en) 2012-05-04 2016-01-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Dynamic map pre-fetching for improved sequential reads of a solid-state media
KR20150057069A (ko) 2013-11-18 2015-05-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10656842B2 (en) * 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9760281B2 (en) * 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
US9507711B1 (en) * 2015-05-22 2016-11-29 Sandisk Technologies Llc Hierarchical FTL mapping optimized for workload
US10733100B2 (en) * 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and apparatus for classifying and buffering write commands
US10643707B2 (en) * 2017-07-25 2020-05-05 Western Digital Technologies, Inc. Group write operations for a data storage device

Also Published As

Publication number Publication date
EP4107624A1 (en) 2022-12-28
CN115427935A (zh) 2022-12-02
JP2023514307A (ja) 2023-04-05
JP7375215B2 (ja) 2023-11-07
US11216364B2 (en) 2022-01-04
US20210255949A1 (en) 2021-08-19
WO2021168020A1 (en) 2021-08-26

Similar Documents

Publication Publication Date Title
KR20220129662A (ko) 순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화
US11200179B2 (en) Facilitating sequential reads in memory sub-systems
US11314446B2 (en) Accelerated read translation path in memory sub-system
US11640354B2 (en) Logical-to-physical mapping of data groups with data locality
US11422945B2 (en) Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US20220398045A1 (en) Addressing zone namespace and non-zoned memory based on data characteristics
US11681629B2 (en) Direct cache hit and transfer in a memory sub-system that programs sequentially
CN117121107A (zh) 使用内容可寻址存储器的用于经排序字符串表的密钥存储
US11561855B2 (en) Error handling optimization in memory sub-system mapping
US20240069739A1 (en) Effective storage allocation for sequentially-written memory devices
US11372763B2 (en) Prefetch for data interface bridge
CN112805692A (zh) 混合式双列直插式存储器模块中的高速缓存操作
US20220308993A1 (en) Host system notification based on entry miss
CN113126906B (zh) 用于元数据指示的方法和系统
US11675695B2 (en) Namespace management for memory sub-systems