KR20180108513A - 역방향 캐시 테이블을 이용한 하드웨어 기반 맵 가속 - Google Patents

역방향 캐시 테이블을 이용한 하드웨어 기반 맵 가속 Download PDF

Info

Publication number
KR20180108513A
KR20180108513A KR1020180034514A KR20180034514A KR20180108513A KR 20180108513 A KR20180108513 A KR 20180108513A KR 1020180034514 A KR1020180034514 A KR 1020180034514A KR 20180034514 A KR20180034514 A KR 20180034514A KR 20180108513 A KR20180108513 A KR 20180108513A
Authority
KR
South Korea
Prior art keywords
cache
map
map page
stored
page
Prior art date
Application number
KR1020180034514A
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 KR20180108513A publication Critical patent/KR20180108513A/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

데이터 저장 디바이스 내의 맵 데이터를 관리하기 위한 장치 및 방법. 프로그래머블 프로세서는 검색 커맨드를 발행하여 맵 구조의 요청된 맵 페이지를 위치파악하고 제1 캐시 내에 위치시켜 수신된 호스트 커맨드가 실행되게 한다. 비-프로그래머블 하드웨어 회로는 순방향 테이블을 탐색하여 요청된 맵 페이지가 제2 캐시 내에 존재하는지 결정하고, 그렇다고 한다면, 맵 페이지를 제1 캐시에 로딩한다. 그렇지 않다면, 하드웨어 회로는 요청된 맵 페이지를 백엔드 프로세서로부터 요청하며, 백엔드 프로세서는 플래시 메모리 어레이와 같은 비휘발성 메모리(NVM)로부터 요청된 맵 페이지를 회수한다. 하드웨어 회로는 NVM으로부터 회수된 요청된 맵 페이지를 위하여 역방향 테이블 및 제1 캐시를 탐색하여 제2 캐시 내의 후보자 위치를 선택하고, 요청된 맵 페이지의 카피가 후보자 위치에 저장되도록 한다.

Description

역방향 캐시 테이블을 이용한 하드웨어 기반 맵 가속{HARDWARE BASED MAP ACCELERATION USING A REVERSE CACHE TABLE}
관련 출원
본 출원은 2017년 3월 24일에 출원된 미국 가특허 출원 제62/476,178호에 대하여 35 U.S.C. 119(e) 하의 국내 우선권을 주장하며, 상기 출원의 내용은 본원에 참조로서 포함된다.
본 발명의 다양한 실시예들은 일반적으로 데이터 저장 디바이스 내의 데이터 관리에 관한 것이다.
일부 실시예들에서, 장치는 비휘발성 메모리(NVM)에 저장된 맵 구조를, 사용자 데이터 블록의 논리적 어드레스를 사용자 블록이 저장된 NVM 내의 물리적 어드레스와 연관시키는 복수의 맵 페이지로서 갖는다. 제1 캐시는 NVM에 저장된 맵 페이지들의 제1 서브세트의 카피를 저장하고, 제2 캐시는 맵 페이지들의 제1 서브세트의 카피 뿐만 아니라 NVM에 저장된 맵 페이지들의 제2 서브세트의 카피를 저장한다.
프로그래머블 프로세서는, 실행될 때, 수신된 호스트 커맨드와 연관된 요청된 맵 페이지를 위치파악하고 제1 캐시 안에 위치시키기 위한 검색 커맨드를 발행하는, 연관된 메모리 내에 저장된 프로그래밍을 갖는다. 비-프로그래머블 하드웨어 회로는, 검색 커맨드에 응답하여, 요청된 맵 페이지를 NVM으로부터 회수하도록 지시하고, 메모리 내의 역방향 테이블(reverse table)에 액세스하여 제2 캐시 내의 선택된 물리적 어드레스에 저장된 잠재적 대체 맵 페이지를 식별하고, 잠재적 대체 맵 페이지가 제1 캐시 내의 맵 페이지들의 제1 서브세트에 존재하지 않는다는 비-프로그래머블 하드웨어 회로에 의한 결정에 응답하여, 요청된 맵 페이지의 카피를 제2 캐시 내의 선택된 물리적 어드레스에 기록하도록 지시하도록 구성된다.
본 개시의 다양한 실시예들을 특징으로 하는 이러한 및 다른 특징들 및 이익들은 다음의 상세한 설명 및 첨부된 도면들을 참조하여 이해될 수 있다.
도 1은 본 개시의 다양한 실시예들에 따른, 예시적인 데이터 저장 디바이스의 기능 블록 표현을 제공한다.
도 2는 일부 실시예들에 따른, 솔리드 스테이트 드라이브(SSD)로서 구성된 도 1의 데이터 저장 디바이스의 양상들을 도시한다.
도 3은 도 2의 예시적인 SSD의 코어 제어기의 기능 블록 표현이다.
도 4는 일부 실시예들에서 멀티-레벨 맵 구조에 대한 예시적인 포맷을 도시한다.
도 5는 맵 구조의 제2 레벨 맵(SLM)에 대한 예시적인 포맷을 도시한다.
도 6은 맵 구조의 제1 레벨 맵(FLM)에 대한 예시적인 포맷을 도시한다.
도 7은 일부 실시예들에서 SSD의 다양한 메모리들 및 그것들의 콘텐츠를 예시한다.
도 8은 일부 실시예들에서 코어 중앙 프로세싱 유닛(CPU) 프로그래머블 프로세서와 도 3의 코어 제어기의 비-프로세서 기반의, 오프로드(offload) 맵 하드웨어 지원(MHA) 관리자 사이의 통신의 기능 블록 표현이다.
도 9a 및 도 9b는 본 개시의 다양한 실시예들에 따른 수행되는 단계들을 예시하는 데이터 프로세싱 루틴에 대한 흐름도를 제공한다.
본 개시는 일반적으로 데이터 저장에 관한 것으로, 더 정확하게는 프로그래머블 프로세서로부터 캐시 관리 태스크들을 분담하기 위한 하드웨어 회로를 이용하여 데이터 저장 디바이스 내의 맵 데이터를 관리하기 위한 방법 및 장치에 관한 것이다.
데이터 저장 디바이스를 이용하여 신속하고 효율적인 방식으로 사용자 데이터를 저장 및 회수한다. 디바이스가 이전에 저장된 데이터를 위치파악 및 회수할 수 있도록 저장 디바이스의 메인 메모리에 저장된 사용자 데이터의 물리적 위치를 추적하는 데 맵 구조가 종종 사용된다. 그러한 맵 구조들은 호스트로부터 수신된 데이터 블록들에 대한 논리적 어드레스를, 매체의 물리적 어드레스, 및 데이터와 연관된 기타 상태 정보와 연관시킬 수 있다.
맵 구조들의 관리는 호스트 디바이스로부터 액세스 커맨드(예를 들어, 판독 커맨드, 기록 커맨드, 상태 커맨드 등)를 제공할 때 저장 디바이스 제어기에 심각한 프로세싱 병목현상을 제공할 수 있다. 이는 플래시 메모리 및 다른 형태의 소거가능한 매체에 대하여 특히 사실이다. SSD와 같은 플래시 메모리 기반 저장 디바이스에서, 각각의 후속적으로 수신되는 버전의 주어진 데이터 블록은 플래시 메모리 내의 상이한 위치에 저장될 것이다.
본 개시의 다양한 실시예들은 일반적으로 데이터 저장 디바이스 내의 데이터의 관리에 관한 것이다. 하기에 설명되는 바와 같이, 일부 실시예들에서 데이터 저장 디바이스는 제어기 회로 및 비휘발성 메모리, 또는 NVM으로서 특징지어지는 메인 메모리를 구비한다. NVM은 플래시 메모리 어레이의 형태를 취할 수 있다.
제어기 회로는 NVM과 호스트 디바이스 사이의 사용자 데이터 블록들의 전달을 지시하는 최상위 레벨 제어기 기능들을 제공한다. NVM에 저장된 사용자 데이터 블록들은 호스트 디바이스에 의해 사용되는 논리적 어드레스와 NVM의 물리적 어드레스 사이의 관계를 설명하는 복수의 맵 페이지들을 갖는 맵 구조에 의해 설명된다. 맵 구조는 멀티-레벨 맵 구조일 수 있거나 또는 다른 형태를 취할 수 있다.
제어기 회로는 메모리 장소에 저장된 프로그래밍(예를 들어, 펌웨어)을 이용하여 호스트 액세스 커맨드들을 프로세싱하는 프로그래머블 프로세서를 포함한다. 각각의 수신된 액세스 커맨드와 연관된 데이터에 대한 맵 페이지 또는 페이지들은, 커맨드가 실행될 수 있기 전에 멀티-캐시 구조의 제1 캐시에 로딩될 필요가 있다.
멀티-캐시 구조는 제1 캐시 및 적어도 제2 캐시를 포함한다. 추가적인 캐시 레벨이 또한 사용될 수 있다. 맵 페이지들의 작은(제1) 서브세트가 제1 캐시 내에 유지된다. 제2 캐시는 맵 페이지들의 더 큰 서브세트를 저장하여, 제1 캐시 내의 모든 맵 페이지는 또한 제2 캐시 내에 유지된다. 이것을 보는 다른 방식은, 제2 캐시가 맵 페이지들의 제1 서브세트를 저장하고, 제2 캐시가 맵 페이지들의 제1 서브세트 뿐만 아니라 제2 서브세트를 저장하는 것이다. 모든 맵 페이지들(예를 들어, 전체 맵 구조)은 또한 NVM 내에 유지된다.
프로그래머블 프로세서는 맵 페이지들을 위치파악하고 제1 캐시에 로딩하기 위한 소정 동작들을 비-프로세서 기반 하드웨어 회로에 분담한다. 프로세서로부터의 검색 커맨드에 응답하여, 하드웨어 회로는 우선 탐색(예를 들어, 액세스 동작)을 수행하여 요청된 (제1) 맵 페이지가 이미 제1 캐시에 상주하는지 결정한다. 그렇다고 한다면, 하드웨어 회로는 제1 캐시 내의 연관된 어드레스(캐시 라인)를 프로세서에 통지한다.
제1 캐시 상의 캐시 미스(cache miss)의 경우에(예를 들어, 요청된 맵 페이지가 제1 캐시 내에 상주하지 않음), 하드웨어 회로는 제2 캐시 내에 저장된 맵 페이지들의 각각과 연관된 논리적 어드레스들을 식별하는 메모리 내의 순방향 테이블을 탐색한다. 요청된 맵 페이지가 제2 캐시 내에 있음을 순방향 테이블이 나타내는 경우, 하드웨어 회로는 요청된 맵 페이지를 제2 캐시에서 제1 캐시로 복사하고 프로세서에 통지한다. 제1 캐시는 보통 가득 차 있기 때문에, 요청된 맵 페이지를 위한 공간을 만들기 위하여 적어도 하나의 기존 맵 페이지가 제1 캐시로부터 축출될 필요가 있을 수 있다. 프로세서는, 필요한 경우, 요청된 맵 페이지로 대체될 제1 캐시 내의 희생자(대체) 맵 페이지를 검색 커맨드와 함께 식별할 수 있다.
제2 캐시 상의 캐시 미스의 경우에(예를 들어, 요청된 맵 페이지가 제2 캐시 내에서 위치파악되지 않음), 하드웨어 회로는 동시에 2개의 동작을 지시한다: 요청된 맵 페이지를 NVM(예를 들어, 플래시)으로부터 회수, 및 요청된 맵 페이지에 의해 대체될 제2 캐시 내의 후보자 (제2) 맵 페이지의 선택.
요청된 맵 페이지를 NVM으로부터 회수하기 위하여, 하드웨어 회로는 맵 구조의 제1 레벨 맵에 액세스하여 요청된 맵 페이지의 플래시 어드레스를 위치파악하고, 요청된 맵 페이지를 NVM에서 로컬 메모리로 회수하기 위한 요청을 제어기의 백엔드 프로세서에 발행한다.
요청된 맵 페이지에 의해 대체될 제2 캐시 내의 잠재적 대체 맵 페이지를 식별하기 위하여, 하드웨어 회로는 제2 캐시 내의 선택된 물리적 어드레스를 식별하고, 로컬 메모리 내의 역방향 테이블을 탐색한다. 역방향 테이블은 맵 페이지들의 각각이 제2 캐시 내에 저장된 물리적 어드레스들을 식별한다. 따라서, 역방향 테이블은 선택된 물리적 어드레스에 저장된 잠재적 대체 맵 페이지를 식별한다. 하드웨어 회로는 제1 캐시를 탐색하여 잠재적 대체 맵 페이지가 또한 제1 캐시 내에 상주하는지 결정한다. 그렇다고 한다면, 제2 캐시 내의 새로운 물리적 어드레스가 선택되고, 잠재적 대체 맵 페이지가 대체 후보자로서 식별될 때까지 프로세스는 반복된다. 선입선출(FIFO) 리스트 또는 유사한 메커니즘을 이용하여 제2 캐시로부터 후보자 물리적 어드레스의 콘텐츠를 축출하기 위하여(예를 들어, 그 위치에 새로운 페이지로 덮어쓰기함) 후보자 물리적 어드레스들을 추적하고 선택할 수 있다. 잠재적 대체 페이지들은 프로그래머블 프로세서에 의해 관리되는 로컬 메모리 내의 선입선출(FIFO) 리스트로부터 공급될 수 있다.
FIFO 메커니즘은 다양한 형태들을 취할 수 있다. 일부 경우들에서, 제1 위치 0에서 최종 위치 N-1로 간 뒤, 다시 0으로 되돌아가는 카운터가 사용될 수 있다. 시스템은 위치 0을 대체하고, 그 다음 1, 그 다음 2, 이런 방식으로 N-1까지 대체한 뒤, 카운트는 다시 0으로 되돌아가는 카운터 값들이 사용된다. 제1 캐시 내에 존재한다고 결정된 임의의 위치는 스킵된다. 주어진 동작이 제1 카운트 값에서 종료한 경우(예를 들어, 위치 3이 업데이트됨), 그 다음 평가 사이클은 순서 상 그 다음 카운트 값(예를 들어, 위치 4)에서 시작한다.
전술한 동작들은 대략적(blocking)이고 원리적(atomic)이다. 하드웨어 회로는 맵 페이지들을 제1 캐시 및 제2 캐시에 각각 물리적으로 기록할 수 있거나, 또는 프로그래머블 프로세서에 의해 요청된 맵 페이지들을 위치파악 및 사용하는 데 사용될 수 있는 포인터들을 설정할 수 있다. 이런 방식으로, 다양한 맵 위치파악 기능들이 프로그래머블 프로세서를 차지할 필요 없이 별개의 하드웨어에 의해 수행됨으로써, 프로세서가 더 높은 우선순위 태스크들을 수행하고 저장 디바이스의 I/O 성능인 데이터 전달 속도를 가속시킬 수 있다.
본 개시의 다양한 실시예들의 이러한 및 다른 특징들 및 이익들은 데이터 저장 디바이스(100)의 간략화된 기능 블록 표현을 제공하는 도 1을 참조하여 시작하는 것으로 이해될 수 있다.
디바이스(100)는 제어기(102) 및 메모리 모듈(104)을 포함한다. 제어기(102)는 디바이스(100)에 대하여 최상위 레벨 제어를 제공하고, 로컬 메모리 내에 연관된 프로그래밍을 구비한 프로그래머블 프로세서 및 하나 이상의 비-프로세서 기반 하드웨어 회로를 포함하는 다수의 회로 요소들로서 구성될 수 있다.
메모리 모듈(104)은 회전형 기록 매체(디스크) 및 솔리드-스테이트 메모리 어레이와 같은 하나 이상의 비휘발성 메모리 요소로서 구성될 수 있다. 별개의 제어기(102)가 도 1에 도시되지만, 그러한 것은 필수적인 것은 아니며, 대안적인 실시예들은 임의의 필요한 제어기 기능들을 직접 메모리 모듈 안에 통합시킬 수 있다.
메모리 모듈(104)은 호스트 디바이스로부터의 사용자 데이터에 대한 메인 저장장치의 역할을 한다. 호스트 디바이스는 저장 디바이스(100)와 통신하는 임의의 디바이스일 수 있다. 제한의 방식이 아닌 예를 들어, 저장 디바이스는 호스트 디바이스에 물리적으로 통합될 수 있거나, 또는 호스트 디바이스는 네트워크를 통해 임의의 적합한 프로토콜을 이용하여 호스트 디바이스와 통신할 수 있다. 일부 실시예들에서, 저장 디바이스(100)는 분산 객체 저장 시스템, 클라우드 기반 컴퓨팅 환경, RAID(redundant array of independent disks) 시스템 등과 같은 대용량 저장 환경에서 멀티-디바이스 저장 인클로저의 일부분을 형성하도록 구성된다
도 2는 일부 실시예들에 따른, 데이터 저장 디바이스(110)의 기능 블록 표현이다. 디바이스(110)는 일반적으로 디바이스(100)에 대응하고, 2차원(2D) 또는 3차원(3D) NAND 플래시 메모리를 메인 메모리 저장장치로서 사용하는 솔리드 스테이트 드라이브(SSD)로서 특징지어진다. 이것은 단지 예시 목적이며 제한하는 것은 아니다. 다른 회로들 및 컴포넌트들이 원하는 대로 SSD(110)에 포함될 수 있지만, 그러한 것들은 명료함을 위하여 도 2에서 생략되었다. 도 2 내의 회로들은 시스템 온 칩(SOC) 디바이스와 같은 단일 집적 회로(IC)에 통합될 수 있거나, 또는 다수의 연결된 IC 디바이스들을 수반할 수 있다.
도 1의 제어기 기능들이 호스트 인터페이스(I/F) 제어기 회로(112), 코어 제어기 회로(114) 및 디바이스 I/F 제어기 회로(116)에 의해 수행된다. 호스트 I/F 제어기 회로(112)는 때때로 프론트엔드 제어기 또는 프로세서로서 지칭될 수 있고, 디바이스 I/F 제어기 회로(116)는 백엔드 제어기 또는 프로세서로서 지칭될 수 있다. 각각의 제어기(112, 114, 116)는 데이터 관리 및 전달 기능들을 실행하기 위한, 적합한 메모리 장소에 연관된 프로그래밍(예를 들어, 펌웨어, FW)을 구비한 별개의 프로그래머블 프로세서, 및 다양한 하드웨어 요소들을 포함한다. 이것은 단지 일 실시예를 예시하는 것일 뿐이며, 다른 실시예들에서, 단일 프로그래머블 프로세서(또는 3개 미만의 프로그래머블 프로세서)가 적합한 메모리 장소 내의 연관된 FW를 이용하여 프론트엔드, 코어 및 백엔드 프로세스들의 각각을 수행하도록 구성될 수 있다.
프론트엔드 제어기(112)는 호스트 디바이스(별개로 도시되지 않음)와의 호스트 통신을 프로세싱한다. 백엔드 제어기(116)는 플래시 메모리(118)의 데이터 판독/기록/소거(R/W/E) 기능을 관리한다. 또한 때때로 비휘발성 메모리(NVM) 또는 메인 메모리로 지칭되는 플래시 메모리(118)는 병렬 데이터 동작들을 가능하게 하는 다수의 플래시 다이로 구성될 수 있다. 메인 제어기 또는 중간 제어기로 또한 지칭되는 코어 제어기(114)는 주요 데이터 관리 및 디바이스(110)에 대한 제어를 수행한다.
도 3은 일부 실시예들에서 도 2의 코어 제어기(114)를 도시한다. 다른 구성들이 사용될 수 있고, 이것은 단지 예시일 뿐이며 제한하는 것은 아니다. SRAM 메모리(120)는 플래시(118)와의 데이터 전달 동작 동안 사용자 데이터를 일시적으로 저장하기 위한 버퍼 메모리 공간으로서 전용되는 휘발성 메모리이다. DDR(DRAM/SDRAM) 메모리(122)는 또한 버퍼 메모리로서 사용될 수 있을 뿐만 아니라, 시스템에 의해 사용되는 기타 데이터를 저장할 수 있는 휘발성 메모리이다. 각각의 메모리들(120, 122)은 단일 집적 회로(IC)로서 실현될 수 있거나 또는, 조합되면, 전체적으로 이용가능한 메모리 공간을 제공하는 다수의 물리적 메모리 디바이스들에 걸쳐 분포될 수 있다.
코어 프로세서(중앙 프로세싱 유닛, CPU)(124)는 코어 제어기(114)에 대한 메인 프로세싱 엔진을 제공하는 프로그래머블 프로세서이다. 맵 하드웨어 지원(MHA) 관리자 회로(126)는 코어 프로세서(124)에 의해 지시되는 대로 분담 기능들을 수행하는 비-프로세서 기반의, 오프로드 하드웨어 회로이며, 이는 하기에 설명되는 바와 같다.
로컬 메모리는 일반적으로 128에 나타난다. 이 메모리는, 코어 제어기에 의해 사용되는 다양한 데이터 구조들, 예컨대, 코어 프로세서(126)에 의해 사용되는 펌웨어(FW) 프로그래밍(130), 시스템 맵(132) 및 다양한 맵 테이블들(134)을 저장하는 데 사용될 수 있는 하나 이상의 개별적인 로컬 메모리들을 포함하는 것으로 고려된다.
이 점에서, "프로세서"라는 용어와 "비-프로세서 기반의," "비-프로그래머블" 및 "하드웨어"와 같은 용어들을 구분하는 것이 도움이 될 것이다. 본원에 사용된 바와 같이, 용어 프로세서는 명령어들(예를 들어, FW)을 실행하여 다양한 기능들을 수행하는 CPU 또는 유사한 프로그래머블 디바이스를 지칭한다. 용어 비-프로세서, 비-프로세서 기반의, 비-프로그래머블, 하드웨어 등은 MHA 관리자(126)에 의해 예시되고, 메모리에 저장된 프로그래밍을 활용하지 않지만, 대신 다양한 하드웨어 회로 요소들(로직 게이트, FPGA 등)에 의해 동작하도록 구성된 회로들을 지칭한다. MHA 관리자(126)는 상태 머신 또는 기타 하드와이어드(hardwired) 디바이스로서 기능한다. 관리자는 다이렉트 메모리 액세스(DMA), 탐색, 로드, 비교 등과 같은 다양한 동작 능력 및 기능들을 갖는다.
맵(132)은 제1 레벨 맵(138) 및 제2 레벨 맵(140)을 구비한 멀티-레벨 맵으로서 도 4에 좀 더 완전하게 도시된다. SSD(110)에 의해 2-레벨 맵이 사용되고 있지만, 단일 레벨 맵 또는 2 레벨 초과의 멀티-레벨 맵을 포함하는 기타 맵 구조들이 용이하게 사용될 수 있다.
제2 레벨 맵(SLM)(140)의 예시 배열이 도 5에 예시된다. SLM(140)은 다수의 제2 레벨 맵 엔트리들(142)(SLME들 또는 엔트리들)로 구성되며, 이들은 플래시(118)에 상주하거나 또는 플래시(118)에 기록될 수 있는 사용자 데이터의 개별적인 블록들을 설명한다. 본 예에서, 맵 유닛들(MU들)로 또한 지칭되는 블록들은 길이가 4KB(4096 bytes)로 설정되지만, 다른 크기가 사용될 수 있다. 소정의 논리적 어드레스들은 사용되지 않았거나 또는 사용되지 않지만, SLM(140)은 SSD(110)에 의해 수용될 수 있는 블록들의 논리적 어드레스들의 전체 가능한 범위를 설명한다.
각각의 엔트리(142)는 다수의 필드들, 예컨대, 로직 블록 어드레스(LBA) 필드(144), 물리적 블록 어드레스 필드(146), 오프셋 필드(148) 및 상태 필드(150)를 포함한다. 다른 포맷들이 사용될 수 있다. LBA 값들은 최솟값에서 최댓값까지 순차적이다(예를 들어, LBA 0에서 LBA N까지, N은 SSD의 전체 데이터 용량에 의해 결정되는 다소 큰 수). 키-값들, 가상 블록 어드레스 등과 같은 다른 논리적 어드레싱 기법이 사용될 수 있다. LBA 값들이 엔트리들의 일부를 형성할 수 있지만, 다른 실시예들에서 LBA들은 대신에 다양한 엔트리들을 위치파악하기 위한 연관된 데이터 구조에 대한 인덱스로서 사용될 수 있다.
통상적인 플래시 어레이에서, 데이터 블록들은 특정 소거 블록 내의 플래시 메모리 셀들의 행들을 따라 기록된 페이지들로서 구성된다. PBA는 어레이, 다이, 가비지 수집 유닛(GCU), 소거 블록, 페이지 등의 용어들로 표현될 수 있다. 오프셋 값은 메모리의 선택된 페이지를 따르는 비트 오프셋일 수 있다. 상태 값은 연관된 블록의 상태(예를 들어, 유효, 무효, 널(null) 등)를 나타낼 수 있다.
엔트리들(142)의 그룹들은 본원에서 맵 페이지들(152)로 지칭되는 더 큰 데이터의 세트들로 구성된다. 일부 선택된 개수(변수 A로 표현됨)의 엔트리들이 각각의 맵 페이지에 제공된다. 본 경우에, 각각의 맵 페이지(144)는 총 100개의 엔트리를 갖는다. 2의 급수인 수를 포함하여, 엔트리들의 다른 그룹들이 각각의 페이지에 만들어질 수 있다.
제2 레벨 맵(SLM)(140)은 시스템 내의 모든 맵 페이지들(152)의 배열을 구성한다. 다소 큰, 맵 페이지들의 총 개수 B가 SSD의 전체 저장 용량을 설명하는 데 필요할 것임을 고려한다. 각각의 맵 페이지는 연관된 맵 ID 값을 가지며, 이는 0에서 B까지 연속적인 수일 수 있다. SLM(140)은 NVM(플래시(118))에 저장되지만, SLM은 플래시 내의 중앙화된 위치보다는 다양한 다이들의 상이한 세트들에 걸쳐 기록되는 경향이 있을 것이다.
도 4의 제1 레벨 맵(FLM)(138)의 배열이 도 6에 도시된다. FLM(138)을 통해 SSD(110)는 플래시에 저장된 다양한 맵 페이지들(152)을 위치파악할 수 있다. 이를 위해, FLM(138)은 제1 레벨 맵 엔트리들(162)(FLME들 또는 엔트리들)로 구성된다. 각각의 FLME(162)은 맵 페이지 ID 필드(164), PBA 필드(166), 오프셋 필드(168) 및 상태 필드(170)를 갖는다. 맵 ID는 위에서 논의되었다. 필드(166) 내의 PBA는 연관된 맵 페이지의 위치를 설명한다. 오프셋 값은 앞서 설명한 것과 같이 특정 페이지 또는 다른 위치를 따르는 비트 오프셋으로서 동작한다. 상태 값은 제2 레벨 맵 내의 상태 값과 동일할 수 있거나, 또는 원하는 경우 맵 페이지 자체의 상태에 관련될 수 있다. 상기와 같이, 도 6의 포맷은 맵 ID가 제1 레벨 맵 내의 각각의 엔트리의 일부를 형성하는 것으로 도시하지만, 다른 실시예들에서 맵 ID들은 대신 연관된 엔트리들을 위치파악하기 위한 데이터 구조에 대한 인덱스로서 사용될 수 있다.
제1 레벨 맵(FLM)(138)은 엔트리 0에서 엔트리 C까지 모든 엔트리들(162)의 배열을 구성한다. 일부 경우들에서, B는 C와 같을 것이지만, 이 값들은 상이할 수 있다. FLM(138)을 액세스함으로써, 맵 ID에 의해, 플래시 메모리(118) 내의 원하는 맵 페이지의 위치의 탐색이 가능해진다. 플래시로부터 원하는 맵 페이지를 회수함으로써, 그 맵 페이지 내의 제2 레벨 맵 엔트리들을 제공할 것이고, 이어서 연관된 제2 레벨 엔트리들 내의 PBA 정보에 기초하여 개별적인 LBA들이 식별되고 회수될 수 있다.
도 7은 일부 실시예들에서 SSD(110)에 의해 활용되는 다양한 메모리 장소들의 배열을 도시한다. 이것들은 도 2 및 도 3에서 논의된 플래시 메모리(118) 및 로컬 코어 메모리(128)뿐만 아니라, 제1 레벨 캐시(FLC)(180) 및 제2 레벨 캐시(SLC)(182)를 포함한다.
제1 캐시 및 계층 1 캐시로 또한 지칭되는 제1 레벨 캐시(180)는 코어 제어기의 온보드 메모리와 같은 별개의 메모리 장소로서 고려된다. 위에서 논의한 바와 같이, 보류중인 호스트 액세스 커맨드가 실행되면 작용할 맵 페이지들이 제1 캐시에 로딩된다. 도 7은 총 개수 D의 맵 페이지들이 제1 캐시(180) 내에 상주하고 있음을 도시한다. D는 D=128과 같이 상대적으로 작은 숫자이지만, 다른 숫자들이 사용될 수 있음을 고려한다. 제1 캐시의 크기는 고정적이다.
제2 캐시 및 계층 2 캐시로 또한 지칭되는 제2 레벨 캐시(182)는 DDR 메모리(122)(도 2 참조)의 적어도 일부분을 구성하는 것으로서 고려된다. 다른 메모리 장소들이 사용될 수 있다. 제2 캐시의 크기는 가변적이거나 또는 고정적일 수 있다. 제2 캐시는 맵 페이지들의 최대 개수 E까지 저장하며, E는 D보다 현저하게 큰 어떤 수이다(E>D). 위에서 언급한 바와 같이, 제1 캐시 내의 D개의 맵 페이지들의 각각은 또한 제2 캐시에 저장된다.
플래시(118)는 주로 맵 구조(132)에 의해 설명되는 사용자 데이터 블록들을 저장하는 데 사용되지만, 이러한 저장은 도 7에 나타나지 않는다. 도 7은 제1 레벨 맵(FLM)(138)의 하나 이상의 백업 카피들뿐만 아니라, 제2 레벨 맵(SLM)(140)의 전체 카피가 플래시 메모리에 저장되는 것을 도시한다. SLM(140)의 백업 카피들은 또한 중복하여 플래시에 저장될 수 있지만, 그러한 중복 카피들이 직접 액세스될 수 있기 전에 FLM(138)의 재구성이 요구될 것이다. 위에서 언급한 바와 같이, FLM(138)은 플래시 내의 SLM(140)의 맵 페이지들의 주요 카피의 위치들을 가리킨다.
로컬 코어 메모리(128)는 FLM(138)의 액티브 카피를 포함하며, 이는 아래 논의된 방식으로 플래시로부터 맵 페이지들을 회수하도록 요구됨에 따라 HMA 관리자(하드웨어 회로)(126)에 의해 액세스된다. 메모리(128)는 또한 도 3의 맵 테이블들(134)을 저장하며, 이들은 도 7에 순방향 테이블 및 역방향 테이블로서 배열된다.
제1 테이블로 또한 지칭되는 순방향 테이블은 제2 캐시(182)에 저장된 맵 페이지들의 각각과 연관된 논리적 어드레스들을 식별하는 데이터 구조이다. 제2 테이블로 또한 지칭되는 역방향 테이블은 맵 페이지들의 각각이 제2 캐시에 저장된 물리적 어드레스들을 식별한다.
순방향 테이블은 일반적으로 LBA-DDR 변환 테이블과 같이 보일 수 있다. 선택된 LBA(또는 원하는 논리적 어드레스와 연관된 기타 입력 값)를 입력함으로써, 그 엔트리에 대한 제2 캐시(이 경우에, DDR 메모리) 내의 연관된 위치가 위치파악될 수 있다. 역방향 테이블은 일반적으로 DDR-LBA 변환 테이블과 같이 보일 수 있다. 제2 캐시(DDR 메모리) 내의 선택된 물리적 어드레스를 입력함으로써, 연관된 LBA(또는 원하는 논리적 어드레스와 연관된 기타 값)가 위치파악될 수 있다.
도 8은 도 3의 코어 CPU(프로세서)(124)와 MHA 관리자(하드웨어 회로)(126) 사이의 상호작용을 도시하기 위한 기능적 표현이다. 도 8의 동작들은, 선택된 호스트 액세스 커맨드, 예컨대, 소정의 사용자 데이터 블록들(예를 들어, LBA들)을 플래시 메모리(118)에서 호스트로의 전달을 보류하는 SRAM 버퍼(122)(도 2)로 회수하기 위한 판독 커맨드의 수신에 응답하여 수행됨을 고려한다.
호스트 액세스 커맨드가 실행되도록 하기 위하여, 요청된 사용자 데이터 블록들에 대한 맵 페이지 또는 페이지들이 제1 캐시(180)에 로딩될 필요가 있다. 검색 커맨드를 하드웨어 회로에 발행하여 선택된 (제1) 맵 페이지를 검색하고 요청된 맵 페이지가 제1 캐시 내에 있음을 보장함으로써, 이 동작은 프로세서(124)에 의해 하드웨어 회로(126)로 분담된다.
일부 경우들에서, 프로세서(124)는 요청된 맵 페이지를 제1 캐시에 넣기 위하여 하드웨어 회로(126)에 의해 필요에 따라 덮어쓰기될 수 있는 제1 캐시 내의 대체 맵 페이지를 식별할 수 있다. 맵 페이지들이 정리되지 못하여 맵 페이지들이 안전하게 제1 캐시로부터 배포될 수 있기 전에 청소를 필요로 할 수 있기 때문에(예를 들어, 사용자 데이터 위치 등의 변화에 기초하여 맵 구조를 업데이트함) 프로세서는 제1 캐시 내의 맵 페이지들의 축출에 대하여 최종적인 제어를 유지할 것임을 고려한다.
검색 커맨드에 응답하여, 하드웨어 회로(126)는 다양한 메모리 장소들, 데이터 구조들 및 프로세서들, 예컨대, 제1 레벨 캐시(FLC)(180), 제2 레벨 캐시(SLC)(182), 제1 레벨 맵(FLM)(138), 플래시 메모리(118), 순방향 테이블(도 8의 184에 표시됨), 역방향 테이블(186에 표시됨), 선입선출(FIFO) 리스트(188) 및 백엔드 프로세서(190)에 액세스할 수 있다.
FIFO 리스트(188)는 가장 최근에 사용된(LRU) 기법과 같은 사용에 기초한 제2 캐시 어드레스들의 리스트일 수 있다. 백엔드 프로세서(190)는 연관된 프로그래밍(FW)을 이용하여 플래시의 프로그래밍 및 판독 동작들을 수행하는 백엔드 제어기(116) 내의 프로그래머블 프로세서를 포함한다. 하드웨어 회로(126)는 판독 요청들을 백엔드 프로세서(190)로 인도하여, 프로세서가 요청된 맵 페이지를 위하여 플래시에 직접 액세스하는 것이 아니라, 필요한 데이터 컨디셔닝(예를 들어, 디코딩, 압축해제, 에러 정정 등)을 수행하여 플래시로부터의 선택된 맵 페이지에 액세스할 수 있도록 할 것이다.
코어 프로세서(124)는 제1 레벨 캐시(180)의 콘텐츠에 대하여 최상위 레벨 제어를 유지하는데, 그 이유는 이 엔트리들이 진행중 및 보류중인 데이터 전달들에 관련된 가장 가치있는 맵 페이지들을 표현하기 때문이다. 제1 레벨 캐시 내의 어떤 맵 페이지들이 캐시 내에 남고 어떤 것들이 축출에 이용가능할지 결정하는 것은 코어 프로세서(124)에 달려 있다. 코어 프로세서가 맵 페이지와 연관된 모든 남은 태스크들을 완료할 때까지 그러한 축출은 일어나지 않는다. 코어 프로세서(124)가 제1 캐시 내의 대체 맵 페이지를 하드웨어 회로(126)에 식별해 주는 경우, 일부 경우들에서 하드웨어 회로는 제1 캐시 내에서 대체 페이지를 새로운 요청된 페이지로 덮어쓰기를 진행하여 프로그래머블 코어 프로세서가 이 동작을 수행할 필요가 없도록 할 수 있다.
하드웨어 회로(126)는 이러한 권한이 코어 프로세서에 의해 위임된 정도에 따라 제2 레벨 캐시(182)의 콘텐츠에 대하여 일정량의 제어권을 갖는다. 제1 레벨 캐시(180) 내의 모든 맵 페이지의 카피가 또한 제2 레벨 캐시(182)에 저장되지만, 그 반대로는 안됨을 상기하게 될 것이다. 제1 레벨 캐시가 보통(또는 항상) 가득 찰 것이기 때문에, 효율성의 이유로, (제2 레벨 캐시 또는 플래시로부터의) 새로운 맵 페이지를 제1 레벨 캐시로 승격시키는 것은 보통 제1 레벨 캐시 내의 기존 맵 페이지가 대체될 것을 요구할 것이다. 새로운 맵 페이지를 제1 레벨 캐시에 이렇게 덮어쓰기하는 것은 코어 프로세서에 의해 제어되는데; 하드웨어 회로가 실제로 새로운 맵 페이지를 제1 레벨 캐시에 기록하는 개체인 경우에도, 코어 프로세서는 제1 레벨 캐시 내에 새로운 맵 페이지를 위치시킬 곳을 하드웨어 회로에 알려준다.
그 다음, 플래시로부터 새로운 맵 페이지를 회수하는 것은 새로운 맵 페이지가 제1 레벨 캐시 및 제2 레벨 캐시에 둘 모두 기록되도록 요구한다. 제1 레벨 캐시로 인도되는 카피는 코어 프로세서에 의해 식별되는 어드레스에 제공된다. 제2 레벨 캐시로 인도되는 카피는 도 8의 FIFO 리스트(188)의 콘텐츠에 기초하여 하드웨어 회로에 의해 최종적으로 결정되는 어드레스에 기록된다.
FIFO 리스트(188)는 축출 후보들로서 이용가능한 제2 레벨 캐시(182) 내의 후보자 위치들(어드레스들)의 코어 제어기(124)에 의해 유지되는 데이터 구조의 일 예이다. 리스트는 임의의 수의 적합한 방식들, 예컨대 가장 최근 사용된(LRU) 기준으로 생성될 수 있다. 하드웨어 회로(126)는 선택된 어드레스를 FIFO 리스트로부터 식별하고, 역방향 테이블(186)을 이용하여 선택된 어드레스에 저장된 맵 페이지를 식별하고, 제1 레벨 캐시(180)를 탐색하여 선택된 어드레스의 맵 페이지가 제1 레벨 캐시에 상주하는지 확인한다. 그렇다고 한다면, 제2 레벨 캐시 내의 상이한 후보자 어드레스가 식별되고 프로세스는 반복된다. 그렇지 않다면, 하드웨어 회로는 선택된 어드레스를 새로운 맵 페이지의 저장을 위한 위치로서 식별함으로써, 새로운 맵 페이지가 이 위치에 기록되도록 지시하며, 이는 하드웨어 회로 또는 코어 제어기에 의해 수행된다.
도 9a 및 도 9b는 일부 실시예들에 따른, 도 8의 배열에 의해 수행되는 단계들을 나타내는 데이터 프로세싱 루틴(200)을 제공한다. 루틴은 단지 예시적일 뿐이고 제한하는 것이 아닌데, 그 이유는 다양한 단계들이 추가, 생략되거나, 상이한 순서 또는 다른 모듈들 등에 의해 수행될 수 있기 때문이다. 일반적으로, 루틴의 각각의 단계는 "FW" 또는 "HW" 식별자를 구비한다. FW는 펌웨어의 실행을 통해 프로그래머블 프로세서에 의해 수행되는 단계를 지칭하며, 편의를 위해 펌웨어에 의해 수행되는 것으로 설명된다. HW는 하드웨어 회로(126)에 의해 수행되는 단계를 지칭하며, 따라서 하드웨어에 의해 수행되는 것으로 설명된다.
루틴은 펌웨어에 의해 호스트 액세스 커맨드가 수신되면 단계(202)에서 시작한다. 이에 응답하여, 단계(204)에서 제1 커맨드가 하드웨어에 발행되어 커맨드와 연관된 선택된 맵 페이지("요청된 맵 페이지")를 위치파악하고, 필요한 경우, 제1 캐시(180) 안으로 로딩한다. 현재 제1 캐시에 상주하고 있는 대체 맵 페이지는 또한 요청에 따라 축출/덮어쓰기를 위하여 식별될 수 있다.
하드웨어는 단계(206)로 진행되어 요청된 맵 페이지를 위하여 제1 레벨 캐시(FLC 또는 제1 캐시)를 탐색한다. 결정 단계(208)는 캐시 히트가 획득되었는지 결정한다(예를 들어, 요청된 맵 페이지가 실제로 제1 캐시에 상주함). 그렇다고 한다면, 흐름은 하드웨어가 제1 캐시 내의 물리적 어드레스를 펌웨어에 통지하는 단계(210)로 넘어 간다. 펌웨어는 그 이후에 단계(212)에서 맵 페이지를 사용하여 커맨드가 실행되도록 진행되고, 흐름은 단계(214)에서 종료한다.
단계(208)에서 캐시 미스가 결정되었다면(예를 들어, 선택된 맵 페이지가 제1 캐시에 상주하지 않음), 하드웨어는 단계(216)에서 계속해서 순방향 테이블(184)에 액세스하여 선택된 맵 페이지가 제2 레벨 캐시(SLC) 내에서 위치하고 있는지 결정한다. 결정 단계(218)는 제2 캐시 상에서 캐시 히트가 획득되었는지 결정한다. 그렇다고 한다면, 흐름은 하드웨어가 선택된 맵 페이지를 제1 레벨 캐시(FLC)에 카피하여, 펌웨어에 의해 식별된 대체 맵 페이지에 덮어쓰는 단계(220)로 넘어 간다. 단계들(210, 212)은 그 이후에 전과 같이 수행된다.
제2 캐시 상에서 캐시 미스가 결정되는 경우(예를 들어, 선택된 맵 페이지가 제2 캐시에 상주하지 않음), 흐름은 표지 "A"를 따라 도 9b로 가며, 하드웨어에 의해 2개의 동시 경로가 취해 진다.
제1 경로는 하드웨어가 제1 레벨 맵(FLM)(138)에 액세스하여 선택된 맵 페이지의 플래시 어드레스를 위치파악하는(도 6 참조) 단계(222)에서 시작한다. 단계(224)에서 하드웨어는 선택된 맵 페이지가 플래시 어드레스 위치로부터 회수되어야 한다는 요청과 함께 플래시 어드레스를 백엔드 프로세서(190)에 공급한다. 단계(226)에서 회수된 맵 페이지가 수신된다.
제2 경로는 하드웨어가 플래시로부터 회수된 맵 페이지를 수용하기 위한 제2 레벨 캐시(SLC)(182) 내의 잠재적 대체 위치(물리적 어드레스)를 선택하는 단계(228)에서 시작한다. 위에서 언급한 바와 같이, 이는 FIFO 리스트(188) 또는 유사한 데이터 구조를 이용하여 수행될 수 있다. 단계(230)에서 하드웨어는 역방향 테이블(186)을 탐색하여 어떤 맵 페이지가 대체 위치에 위치하고 있는지 식별하고, 제1 레벨 캐시(FLC)(180)을 탐색하여 이 맵 페이지가 제1 캐시 내에 있는지 결정한다. 그렇다고 한다면, 결정 단계(234)에서, 새로운 잠재적 대체 위치가 선택되고 적합한 후보자 대체 위치가 발견될 때까지 프로세스는 반복된다.
그 이후에, 두 경로는 하드웨어가 플래시 메모리로부터 회수된 선택된 맵 페이지를 잠재적 대체 맵 페이지 내의 후보자 대체 위치에 카피하는 단계(236)에서 모이고, 단계들(220, 210, 212)의 실행을 위해 루틴은 표지 "B"를 따라 다시 도 9a로 넘어 간다.
하드웨어가 실제로 제2 캐시에서 축출을 수행하도록 구성된다면, 제2 캐시의 콘텐츠의 관리는 하드웨어의 제어 하에 있는 것처럼 보일 수 있음을 주의하게 될 것이다. 대안적으로, 제1 캐시 및 제2 캐시 둘 모두의 관리는 프로세서(펌웨어)에 의해 유지될 수 있어, 펌웨어는 최종적인 결정을 내리게 된다. 두 경우에, 하드웨어에 의해 펌웨어에 제2 캐시 내의 후보자 대체 맵 페이지에 대한 통지가 이루어진다.
제2 캐시 내에 부분적인 맵을 유지함으로써 맵 페이지들을 제1 캐시에 로딩하는 것을 현저하게 향상시킬 수 있는데, 그 이유가 백엔드 프로세서가 맵 페이지들을 플래시로부터 회수하는 데 관여할 필요가 없기 때문임을 알게 될 것이다. 펌웨어가 최종적으로 무슨 맵 페이지들이 제2 캐시에 머무르는지 결정하는 경우에도, 하드웨어 테이블에 의한 역방향 테이블을 이용한 평가는 펌웨어가 이 결정을 내릴 때 워크로드를 현저하게 감소시킬 수 있다.
상기 논의는 프로그래머블 프로세서가 검색 커맨드를 하드웨어 회로에 직접 전달하는 것으로서 고려하였지만, 이는 필수적인 것은 아니다. 다른 실시예들은, 더 높은 레벨 펌웨어의 제어 하에 있더라도 프로세스 동안 하드웨어가 하드웨어에 알려주도록 추가적인 비-프로그래머블 하드웨어를 이용하는 커맨드 프로세싱을 고려한다.
위에서 논의한 바와 같이, 하드웨어 회로는 백엔드 프로세서에 요청을 발행하는 대신에 플래시로부터 직접 요청된 맵 페이지를 회수하도록 구성될 수 있다(이는 코어 프로세서와 동일한 프로세서일 수 있음).
사용자 데이터가 검색 커맨드의 주제로서 간주되었지만, 시스템의 상태를 설명하는 메타데이터와 같은, 시스템 내의 사용자 데이터에 관한 정보에 제한되지 않는 것과 같은 다른 형태의 데이터도 회수될 수 있다.
하드웨어 회로의 일 양상은 제2 캐시로부터 축출할 적합한 후보들인 엔트리들을 제2 캐시로부터 자동으로 선택하는 능력이다. 역방향 테이블은 그러한 후보들을 식별하기 위한 임의의 적합한 포맷을 취할 수 있고, 링크드-리스트(linked-list) 또는 요구되는 정보를 제공할 수 있는 일부 다른 단순한 구조를 포함할 수 있다. 따라서, 역방향 테이블에 대한 참조가 반드시 실제 룩 업 테이블에 제한되는 것은 아니고, 오히려 위에서 제2 캐시 내의 어드레스에 의해 맵 페이지를 표시하는 것과 같이 수행하는 데 적합한 임의의 형태의 메타데이터를 참조할 수 있다. 다른 실시예들에서, 축출 후보자는 하드웨어 회로에 의해 식별될 수 있고, 하드웨어 회로는 실제로 프로그래머블 프로세서 등에 반드시 통지할 필요 없이 자동으로 축출을 관리할 수 있다.
본원에 개시된 다양한 실시예들이 다수의 이득을 제공할 수 있음이 이제 이해될 것이다. 오프로드 하드웨어 회로를 이용하여 멀티-레벨 캐시 내의 맵 데이터를 관리함으로써 현저하게 맵 로딩 기능을 가속시키고 프로세서 효율성을 증가시킬 수 있다. 다양한 실시예들이 플래시 메모리를 구비한 솔리드 스테이트 드라이브(SSD)의 환경을 고려하였지만, 상이한 형태의 저장 메모리, 상이한 개수의 캐시 등을 포함하는 다른 구성들이 용이하게 사용될 수 있다.
본 개시의 다양한 실시예들의 다수의 특성들 및 이익들이 앞서 설명에서 본 개시의 다양한 실시예들 구조 및 기능의 상세사항들과 함께 기술되었지만, 이러한 상세한 설명은 예시일 뿐이고, 상세하게는, 특히 첨부된 청구 범위가 표현되는 용어들의 광범위한 일반적 의미에 의해 표시되는 최대한의 범위까지 본 개시의 원리 내의 부분들의 구조 및 배열의 문제에 있어서 변경이 있을 수 있음을 이해할 것이다.

Claims (20)

  1. 장치로서,
    비휘발성 메모리(NVM) 내에, 사용자 데이터 블록의 논리적 어드레스들을 상기 사용자 블록들이 저장된 상기 NVM 내의 물리적 어드레스들과 연관시키는 복수의 맵 페이지들로서 저장된 맵 구조;
    상기 NVM 내에 저장된 상기 맵 페이지들의 제1 서브세트의 카피를 저장하는 제1 캐시;
    상기 맵 페이지들의 상기 제1 서브세트의 카피뿐만 아니라 상기 NVM 내에 저장된 상기 맵 페이지들의 제2 서브세트의 카피를 저장하는 제2 캐시;
    실행될 때, 수신된 호스트 커맨드와 연관된 요청된 맵 페이지를 위치파악하고 상기 제1 캐시 안에 위치시키기 위한 검색 커맨드를 발행하는 프로그래밍을 연관된 메모리 내에 저장한 프로그래머블 프로세서; 및
    비-프로그래머블 하드웨어 회로 - 상기 비-프로그래머블 하드웨어 회로는, 상기 검색 커맨드에 응답하여, 상기 NVM으로부터 상기 요청된 맵 페이지를 회수하게 하고, 메모리 내의 역방향 테이블에 액세스하여 상기 제2 캐시 내의 선택된 물리적 어드레스에 저장된 잠재적 대체 맵 페이지를 식별하고, 상기 잠재적 대체 맵 페이지가 상기 제1 캐시 내의 상기 맵 페이지들의 상기 제1 서브세트 내에 존재하지 않는다는 상기 비-프로그래머블 하드웨어 회로에 의한 결정에 응답하여 상기 요청된 맵 페이지의 카피를 상기 제2 캐시 내의 상기 선택된 물리적 어드레스에 기록하게 하도록 구성됨 - 를 포함하는, 장치.
  2. 제1항에 있어서, 메모리 내의 데이터 구조로서 상기 제2 캐시 내의 물리적 어드레스들의 선입선출(FIFO) 리스트를 더 포함하며, 상기 비-프로그래머블 하드웨어 회로는 상기 선택된 물리적 어드레스로서 상기 FIFO 리스트로부터 제1 물리적 어드레스를 선택하고, 상기 역방향 테이블을 색인하여 상기 제1 물리적 어드레스에 저장된 제1 맵 페이지로서 상기 잠재적 대체 맵 페이지를 식별하고, 상기 제1 캐시를 탐색하여 상기 제1 맵 페이지가 상기 제1 캐시 내에 저장된 맵 페이지들의 상기 제1 서브세트의 구성원이 아님을 결정하도록 추가로 구성된, 장치.
  3. 제2항에 있어서, 상기 잠재적 대체 맵 페이지가 상기 제1 캐시 내에 저장된 맵 페이지들의 상기 제1 서브세트의 구성원이라는 상기 비-프로그래머블 하드웨어 회로에 의한 결정에 응답하여, 상기 비-프로그래머블 하드웨어 회로는 상기 선택된 물리적 어드레스로서 상기 FIFO 리스트로부터 제2 물리적 어드레스를 선택하고, 상기 역방향 테이블을 색인하여 상기 제2 물리적 어드레스에 저장된 제2 맵 페이지로서 상기 잠재적 대체 맵 페이지를 식별하고, 상기 제1 캐시를 탐색하여 상기 제2 맵 페이지가 상기 제1 캐시 내에 저장된 맵 페이지들의 상기 제1 서브세트의 구성원이 아님을 결정하도록 추가로 구성된, 장치.
  4. 제1항에 있어서, 상기 비-프로그래머블 하드웨어 회로는 상기 요청된 맵 페이지의 카피를 상기 제2 캐시 내의 상기 선택된 물리적 어드레스에 기록하는 것을 수행함으로써 상기 요청된 맵 페이지의 상기 카피를 상기 제2 캐시 내의 상기 선택된 물리적 어드레스에 기록하게 하는, 장치.
  5. 제1항에 있어서, 상기 비-프로그래머블 하드웨어 회로는, 상기 선택된 물리적 어드레스에 대한 통지를 상기 프로그래머블 프로세서에 제공한 뒤, 상기 프로그래머블 프로세서에 의해 상기 선택된 물리적 어드레스에 상기 요청된 맵 페이지의 카피를 기록함으로써, 상기 요청된 맵 페이지의 상기 카피를 상기 제2 캐시 내의 상기 선택된 물리적 어드레스에 기록하게 하는, 장치.
  6. 제1항에 있어서, 상기 역방향 테이블은 논리적 어드레스들을 상기 제2 캐시 내의 물리적 어드레스들과 연관시켜, 상기 제2 캐시의 선택된 물리적 어드레스를 상기 역방향 테이블에 입력함으로써, 상기 역방향 테이블이 상기 선택된 물리적 어드레스에 저장된 상기 대응하는 맵 페이지를 나타내도록 하는 변환 테이블인, 장치.
  7. 제1항에 있어서, 상기 비-프로그래머블 하드웨어 회로는 데이터 구조로서 저장된 메모리 내의 순방향 테이블을 탐색하도록 추가로 구성되며, 상기 순방향 테이블은 상기 제2 캐시 내의 물리적 어드레스들을 상기 맵 페이지들과 연관된 논리적 어드레스들과 연관시켜, 선택된 논리적 어드레스를 상기 순방향 테이블에 입력함으로써, 상기 순방향 테이블이 상기 선택된 논리적 어드레스와 연관된 상기 맵 페이지가 저장된 상기 제2 캐시 내의 상기 대응하는 선택된 물리적 어드레스를 나타내도록 하는 변환 테이블로서 구성된, 장치.
  8. 제1항에 있어서, 상기 비-프로그래머블 하드웨어 회로는, 상기 검색 커맨드에 응답하여 그리고 상기 제1 캐시 상의 캐시 히트에 응답하여, 상기 제1 캐시를 탐색하고 상기 요청된 맵 페이지가 저장된 상기 제1 캐시의 물리적 어드레스에 대하여 상기 프로그래머블 프로세서에 통지하도록 추가로 구성된, 장치.
  9. 제1항에 있어서, 상기 프로그래머블 프로세서는 상기 제1 캐시 내의 제2 잠재적 대체 맵 페이지를 상기 검색 커맨드와 함께 상기 비-프로그래머블 하드웨어 회로에 식별시키도록 추가로 구성되고, 상기 비-프로그래머블 하드웨어 회로는 상기 제1 캐시 내의 상기 제2 잠재적 대체 맵 페이지를 상기 요청된 맵 페이지로 덮어쓰도록 추가로 구성된, 장치.
  10. 제1항에 있어서, 상기 프로그래머블 프로세서는 데이터 저장 디바이스에 대한 전체 프로세싱 제어를 제공하는 코어 프로그래머블 프로세서이고, 상기 장치는 프로그래밍 및 판독 동작이 상기 NVM과 버퍼 메모리 사이에서 데이터를 전달하게 하도록 구성된 프로그래밍을 연관된 메모리에 저장한 백엔드 프로그래머블 프로세서를 더 포함하며, 상기 비-프로그래머블 하드웨어 회로는, 상기 요청된 맵 페이지에 대한 상기 제2 캐시 상의 캐시 미스에 응답하여, 상기 요청된 맵 페이지를 상기 NVM으로부터 회수하기 위한 판독 요청을 상기 백엔드 프로그래머블 프로세서에 발행하도록 추가로 구성된, 장치.
  11. 제1항에 있어서, 상기 요청된 맵 페이지가 상기 제2 캐시 내에 있음을 순방향 테이블이 나타내는 것에 응답하여 상기 제2 캐시 내에서 상기 요청된 맵 페이지를 위치파악할 때, 상기 비-프로그래머블 하드웨어 회로는 상기 요청된 맵 페이지를 상기 제2 캐시에서 상기 제1 캐시로 카피하거나 또는 상기 제2 캐시 내의 상기 요청된 맵 페이지의 상기 물리적 위치를 식별하는 포인터를 상기 프로그래머블 메모리에 제공하는 것 중 적어도 선택된 하나를 수행하도록 추가로 구성된, 장치.
  12. 데이터 저장 디바이스로서,
    비휘발성 메모리(NVM) - 상기 비휘발성 메모리(NVM)는 사용자 데이터 블록의 논리적 어드레스들을 상기 사용자 데이터 블록들이 저장된 상기 NVM의 물리적 어드레스들과 연관시키는 맵 페이지들의 총 개수만큼 배열된 맵 구조를 저장함 -;
    상기 총 개수 미만의 제1 개수의 상기 맵 페이지들을 저장하는 제1 캐시;
    상기 총 개수 미만의 제2 개수의 맵 페이지들을 저장하는 제2 캐시 - 상기 제2 개수의 맵 페이지들은 상기 제1 개수의 맵 페이지들의 각각을 포함함 -;
    상기 제2 캐시 내에 저장된 상기 제2 개수의 맵 페이지들의 각각과 연관된 논리적 어드레스들을 식별하는 메모리 내의 데이터 구조로서 저장된 순방향 테이블;
    상기 제2 개수의 맵 페이지들의 각각이 저장된 상기 제2 캐시 메모리의 물리적 어드레스들을 식별하는 메모리 내의 데이터 구조로서 저장된 역방향 테이블;
    호스트로부터 호스트 액세스 커맨드를 수신하는 것에 응답하여 검색 커맨드를 발행하여 요청된 맵 페이지를 검색하도록 구성된 프로그래밍을 연관된 메모리에 저장한 프로그래머블 프로세서; 및
    비-프로세서 기반의, 맵 하드웨어 지원 관리자 회로를 특징으로 하는 하드웨어 회로를 포함하고, 상기 하드웨어 회로는:
    상기 검색 커맨드에 응답하여, 상기 제1 캐시를 탐색하고 상기 요청된 맵 페이지가 저장된 상기 제1 캐시의 물리적 어드레스에 대하여 상기 프로그래머블 프로세서에 통지하고;
    상기 제1 캐시 상의 캐시 미스에 응답하여, 상기 순방향 테이블을 탐색하고 상기 요청된 맵 페이지가 상기 제2 캐시 내에 있음을 상기 순방향 테이블이 나타내는 것에 응답하여 상기 요청된 맵 페이지를 상기 제2 캐시에서 상기 제1 캐시로 카피하고;
    상기 제2 캐시 상의 캐시 미스에 응답하여, 상기 역방향 테이블을 탐색하여 상기 선택된 물리적 어드레스에 저장된 제2 맵 페이지를 식별하고, 상기 제1 캐시를 탐색하여 상기 제2 맵 페이지가 상기 제1 캐시 내에 저장되어 있지 않음을 결정하고, 상기 잠재적 대체 맵 페이지를 상기 제2 캐시로부터의 축출 후보자로서 상기 프로그래머블 프로세서에 식별시켜주도록 구성된, 데이터 저장 디바이스.
  13. 제12항에 있어서, 상기 프로그래머블 프로세서는 상기 검색 커맨드와 함께 상기 제1 캐시 내의 잠재적 대체 맵 페이지를 상기 비-프로그래머블 하드웨어 회로에 식별시키도록 추가로 구성되고, 상기 하드웨어 회로는 상기 제1 캐시 내의 상기 잠재적 대체 맵 페이지를 상기 요청된 맵 페이지로 덮어쓰도록 추가로 구성된, 데이터 저장 디바이스.
  14. 제12항에 있어서, 상기 프로그래머블 프로세서는 데이터 저장 디바이스에 대한 전체 프로세싱 제어를 제공하는 코어 프로그래머블 프로세서이고, 상기 데이터 저장 디바이스는 프로그래밍 및 판독 동작들이 상기 메인 메모리와 버퍼 메모리 사이의 데이터를 전달하게 하도록 구성된 프로그래밍을 연관된 메모리에 저장한 백엔드 프로그래머블 프로세서를 추가로 포함하고, 상기 하드웨어 회로는, 상기 요청된 맵 페이지에 대한 상기 제2 캐시 상의 캐시 미스에 응답하여, 상기 맵 구조에 액세스하여 상기 요청된 맵 페이지가 위치한 상기 메인 메모리 내의 메인 메모리 물리적 어드레스를 식별하고, 상기 메인 메모리 물리적 어드레스를 상기 백엔드 프로세서에 공급하고, 이와 함께 상기 요청된 맵 페이지를 상기 메인 메모리로부터 회수하기 위한 판독 요청을 상기 백엔드 프로그래머블 프로세서에 공급하도록 추가로 구성된, 데이터 저장 디바이스.
  15. 제12항에 있어서, 상기 역방향 테이블에 대한 입력으로서 상기 제2 캐시 내의 상기 선택된 물리적 어드레스를 식별하기 위하여 상기 하드웨어 회로에 의해 액세스되는 로컬 메모리 내의 데이터 구조로서 선입선출(FIFO) 리스트를 더 포함하고, 상기 FIFO 리스트는 가장 최근에 사용된 (LRU) 기준으로 상기 제2 캐시 내의 위치들을 배열하는, 데이터 저장 디바이스.
  16. 제12항에 있어서, 상기 맵 구조는 제1 레벨 맵 및 제2 레벨 맵을 포함하는 멀티-레벨 맵을 포함하고, 상기 제2 레벨 맵은 상기 메인 메모리 내에 저장되고 상기 요청된 맵 페이지를 포함하는 복수의 맵 페이지들을 포함하며, 상기 제1 레벨 맵은 상기 복수의 맵 페이지들이 상기 메인 메모리 내에 저장된 물리적 어드레스들을 식별하는 엔트리들을 포함하고, 상기 제2 레벨 맵의 제1 개수의 상기 맵 페이지들이 상기 제1 캐시 내에 저장되고, 상기 제2 레벨의 더 많은 제2 개수의 상기 맵 페이지들이 상기 제2 캐시 내에 저장되고, 상기 제1 캐시 내에 저장된 각각의 맵 페이지는 또한 상기 제2 캐시 내에 저장되는, 데이터 저장 디바이스.
  17. 제12항에 있어서, 솔리드 스테이트 드라이브(SSD)로 특징지어지고, 상기 메인 메모리는 플래시 메모리 어레이를 포함하는, 데이터 저장 디바이스.
  18. 방법으로서,
    맵 구조의 요청된 맵 페이지를 위치파악하고 제1 캐시 안에 위치시켜 수신된 호스트 커맨드가 실행되게 하는 프로그래밍을 연관된 메모리에 저장한 프로그래머블 프로세서에 의해 검색 커맨드를 발행하는 단계 - 상기 요청된 맵 페이지는 사용자 데이터 블록의 논리적 어드레스를 상기 사용자 데이터 블록이 저장된 비휘발성 메모리(NVM) 내의 물리적 어드레스와 연관시킴 -;
    비-프로그래머블 하드웨어 회로를 이용하여:
    순방향 테이블을 탐색하고, 상기 요청된 맵 페이지가 상기 제2 캐시 내에 존재한다고 상기 순방향 테이블이 나타내는 것에 응답하여 그리고 상기 제1 캐시 상의 캐시 미스에 응답하여 상기 요청된 맵 페이지를 제2 캐시에서 상기 제1 캐시로 카피하고 - 상기 순방향 테이블은 상기 제2 캐시 내에 저장된 상기 맵 구조의 복수의 맵 페이지들의 각각과 연관된 논리적 어드레스들을 식별하는 메모리 내의 데이터 구조로서 저장됨 -;
    상기 제2 캐시 내의 선택된 물리적 어드레스를 식별하고, 역방향 테이블을 탐색하여 상기 선택된 물리적 어드레스에 저장된 잠재적 대체 맵 페이지를 식별하고, 상기 제1 캐시를 탐색하여 상기 잠재적 대체 맵 페이지가 상기 제1 캐시 내에 저장되어 있지 않음을 결정하고, 상기 요청된 맵 페이지를 상기 제2 캐시 내의 상기 선택된 물리적 어드레스에 덮어쓰게 하는 단계를 포함하는, 방법.
  19. 제18항에 있어서, 상기 검색 커맨드에 응답하여 그리고 상기 제1 캐시 상의 캐시 히트에 응답하여, 상기 비-프로그래머블 하드웨어 회로를 이용하여 상기 제1 캐시를 탐색하고, 상기 요청된 맵 페이지가 저장된 상기 제1 캐시의 물리적 어드레스에 대하여 상기 프로그래머블 프로세서에 통지하는 단계를 더 포함하는, 방법.
  20. 제18항에 있어서, 상기 요청된 맵 페이지에 대한 상기 제2 캐시 상의 캐시 미스에 응답하여, 상기 비-프로그래머블 하드웨어 회로를 동작시켜, 상기 맵 구조에 액세스하여 상기 요청된 맵 페이지가 위치한 상기 NVM 내의 물리적 어드레스를 식별하고, 상기 요청된 맵 페이지를 상기 NVM으로부터 회수하기 위한 판독 요청과 함께 상기 물리적 어드레스를 백엔드 프로세서에 공급하는 단계를 더 포함하고, 상기 백엔드 프로세서는 상기 NVM에 데이터를 프로그래밍하고 상기 NVM으로부터 데이터를 판독하기 위한 연관된 프로그래밍을 메모리에 저장한 제2 프로그래머블 프로세서를 포함하는, 방법.
KR1020180034514A 2017-03-24 2018-03-26 역방향 캐시 테이블을 이용한 하드웨어 기반 맵 가속 KR20180108513A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762476178P 2017-03-24 2017-03-24
US62/476,178 2017-03-24
US15/605,442 2017-05-25
US15/605,442 US10126964B2 (en) 2017-03-24 2017-05-25 Hardware based map acceleration using forward and reverse cache tables

Publications (1)

Publication Number Publication Date
KR20180108513A true KR20180108513A (ko) 2018-10-04

Family

ID=63581054

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180034514A KR20180108513A (ko) 2017-03-24 2018-03-26 역방향 캐시 테이블을 이용한 하드웨어 기반 맵 가속

Country Status (5)

Country Link
US (1) US10126964B2 (ko)
JP (1) JP7046669B2 (ko)
KR (1) KR20180108513A (ko)
CN (1) CN108628772A (ko)
TW (1) TWI673608B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11537515B2 (en) 2020-03-25 2022-12-27 SK Hynix Inc. Reordering a descriptor queue while searching the queue of descriptors corresponding to map segments

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10229052B2 (en) * 2017-05-31 2019-03-12 Seagate Technology Llc Reverse map logging in physical media
US11138069B2 (en) 2018-06-11 2021-10-05 Seagate Technology, Llc Providing additional parity for non-standard sized parity data sets
US10896002B2 (en) 2018-06-29 2021-01-19 Seagate Technology Llc Reverse directory structure in a garbage collection unit (GCU)
KR20200056533A (ko) * 2018-11-14 2020-05-25 삼성전자주식회사 맵 스케줄링을 수행하기 위한 스토리지 장치 및 그것을 포함하는 전자 장치
CN109684238A (zh) * 2018-12-19 2019-04-26 湖南国科微电子股份有限公司 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘
CN111475429B (zh) * 2019-01-24 2023-08-29 爱思开海力士有限公司 存储器访问方法
US11016889B1 (en) 2019-12-13 2021-05-25 Seagate Technology Llc Storage device with enhanced time to ready performance
CN111190835B (zh) * 2019-12-29 2022-06-10 北京浪潮数据技术有限公司 一种数据写入方法、装置、设备及介质
US11726921B2 (en) 2020-05-21 2023-08-15 Seagate Technology Llc Combined page footer for parallel metadata storage
US11392304B2 (en) 2020-05-29 2022-07-19 Seagate Technology Llc Data storage device with adaptive object storage capabilities
CN111966298B (zh) * 2020-08-24 2021-07-27 深圳三地一芯电子有限责任公司 一种基于Flash存储器的倒序编程实现方法及装置
US11392499B2 (en) 2020-09-18 2022-07-19 Kioxia Corporation Dynamic buffer caching of storage devices
JP2022144314A (ja) * 2021-03-18 2022-10-03 キオクシア株式会社 メモリシステム及びストレージ装置
TWI771079B (zh) * 2021-06-24 2022-07-11 群聯電子股份有限公司 記憶體存取方法、記憶體儲存裝置及記憶體控制電路單元
CN114415966B (zh) * 2022-01-25 2022-08-12 武汉麓谷科技有限公司 一种kv ssd存储引擎的构建方法
US20230376425A1 (en) * 2022-05-17 2023-11-23 Dell Products L.P. Methods for cache insertion and cache eviction in a cache system that includes a reverse cache and a main cache

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2833062B2 (ja) * 1989-10-30 1998-12-09 株式会社日立製作所 キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置
US5933857A (en) * 1997-04-25 1999-08-03 Hewlett-Packard Co. Accessing multiple independent microkernels existing in a globally shared memory system
US6804741B2 (en) 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
US7010645B2 (en) * 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US8533401B2 (en) 2002-12-30 2013-09-10 Intel Corporation Implementing direct access caches in coherent multiprocessors
US7613876B2 (en) * 2006-06-08 2009-11-03 Bitmicro Networks, Inc. Hybrid multi-tiered caching storage system
US7844778B2 (en) 2006-07-11 2010-11-30 International Business Machines Corporation Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US8799586B2 (en) * 2009-09-30 2014-08-05 Intel Corporation Memory mirroring and migration at home agent
US9003159B2 (en) * 2009-10-05 2015-04-07 Marvell World Trade Ltd. Data caching in non-volatile memory
US8495299B2 (en) 2009-11-16 2013-07-23 Microsoft Corporation Non-blocking data transfer via memory cache manipulation
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
JP5295286B2 (ja) * 2011-02-23 2013-09-18 株式会社日立製作所 記憶装置およびそれを搭載した計算機
US9218281B2 (en) 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US9250901B2 (en) 2013-03-12 2016-02-02 Intel Corporation Execution context swap between heterogeneous functional hardware units
US9645920B2 (en) * 2013-06-25 2017-05-09 Marvell World Trade Ltd. Adaptive cache memory controller
US9405672B2 (en) 2013-06-25 2016-08-02 Seagate Technology Llc Map recycling acceleration
US9880939B2 (en) * 2015-09-04 2018-01-30 Toshiba Memory Corporation Memory system and information processing system
US10282138B2 (en) * 2016-09-27 2019-05-07 International Business Machines Corporation Secondary read cache optimization in data replication environments

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11537515B2 (en) 2020-03-25 2022-12-27 SK Hynix Inc. Reordering a descriptor queue while searching the queue of descriptors corresponding to map segments

Also Published As

Publication number Publication date
TW201903614A (zh) 2019-01-16
CN108628772A (zh) 2018-10-09
JP2018163659A (ja) 2018-10-18
TWI673608B (zh) 2019-10-01
US10126964B2 (en) 2018-11-13
JP7046669B2 (ja) 2022-04-04
US20180275899A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
KR20180108513A (ko) 역방향 캐시 테이블을 이용한 하드웨어 기반 맵 가속
US10922235B2 (en) Method and system for address table eviction management
US9378131B2 (en) Non-volatile storage addressing using multiple tables
EP3673377B1 (en) Logical to physical mapping
US8688894B2 (en) Page based management of flash storage
US11347428B2 (en) Solid state tier optimization using a content addressable caching layer
US9104327B2 (en) Fast translation indicator to reduce secondary address table checks in a memory device
US9489239B2 (en) Systems and methods to manage tiered cache data storage
US8615640B2 (en) System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
US9639481B2 (en) Systems and methods to manage cache data storage in working memory of computing system
US20080155183A1 (en) Method of managing a large array of non-volatile memories
KR20170098187A (ko) 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법
US10740251B2 (en) Hybrid drive translation layer
CN105339910B (zh) 在混合驱动器中的虚拟nand容量扩展
US20190339904A1 (en) Solid state drive using two-level indirection architecture
WO2020174428A2 (en) Cache management of logical-physical translation metadata
US20120144109A1 (en) Dynamic adjustment of read/write ratio of a disk cache
JP2002140231A (ja) 拡張型キャッシュメモリシステム
US20140258591A1 (en) Data storage and retrieval in a hybrid drive
US11836092B2 (en) Non-volatile storage controller with partial logical-to-physical (L2P) address translation table
CN110968527B (zh) Ftl提供的缓存
US9454488B2 (en) Systems and methods to manage cache data storage
CN109960667B (zh) 大容量固态存储设备的地址转换方法与装置
EP3862863A1 (en) Method for managing performance of logical disk, and storage array
CN117369718A (zh) 在存储装置中形成和选择回收单元的系统、方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application