KR20220085708A - 고체 상태 드라이브 내의 영구적 메모리 내의 논리 대 물리 어드레스 인디렉션 테이블 - Google Patents

고체 상태 드라이브 내의 영구적 메모리 내의 논리 대 물리 어드레스 인디렉션 테이블 Download PDF

Info

Publication number
KR20220085708A
KR20220085708A KR1020210155399A KR20210155399A KR20220085708A KR 20220085708 A KR20220085708 A KR 20220085708A KR 1020210155399 A KR1020210155399 A KR 1020210155399A KR 20210155399 A KR20210155399 A KR 20210155399A KR 20220085708 A KR20220085708 A KR 20220085708A
Authority
KR
South Korea
Prior art keywords
logical
block
volatile memory
address
physical
Prior art date
Application number
KR1020210155399A
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 KR20220085708A publication Critical patent/KR20220085708A/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Abstract

영구적 메모리에 저장된 논리 대 물리(L2P) 인디렉션 테이블을 갖는 고체 상태 드라이브가 제공된다. L2P 인디렉션 테이블은 복수의 엔트리를 갖고, 각각의 엔트리는 논리 블록 어드레스에 할당된 블록 어드레싱가능한 메모리 내의 물리 블록 어드레스를 저장한다. 고체 상태 드라이브는 영구적 메모리 및 블록 어드레싱가능한 메모리에 통신 가능하게 결합된 고체 상태 드라이브 컨트롤러 회로를 포함한다. 고체 상태 드라이브 컨트롤러 회로는 논리 대 물리 어드레스 인디렉션 테이블 캐시를 저장하기 위한 휘발성 메모리; 및 논리 대 물리 어드레스 인디렉션 테이블 캐시를 모니터링하고, 논리 대 물리 어드레스 인디렉션 테이블 캐시 내의 더티 논리 대 물리 엔트리들을 영구적 메모리 내의 논리 대 물리 어드레스 인디렉션 테이블에 기입하는 회로를 포함한다.

Description

고체 상태 드라이브 내의 영구적 메모리 내의 논리 대 물리 어드레스 인디렉션 테이블{LOGICAL TO PHYSICAL ADDRESS INDIRECTION TABLE IN A PERSISTENT MEMORY IN A SOLID STATE DRIVE}
본 개시내용은 저장 디바이스들, 특히 고체 상태 드라이브 내의 영구적 메모리에 저장된 논리 대 물리(L2P) 어드레스 인디렉션 테이블(Logical to Physical (L2P) address indirection table)에 관한 것이다.
컴퓨터 시스템은 전형적으로 휘발성 시스템 메모리, 예를 들어 동적 랜덤 액세스 메모리(DRAM) 및 저장 디바이스를 포함한다. 저장 디바이스는 블록 어드레싱가능한 비휘발성 메모리를 포함하는 고체 상태 드라이브(SSD)일 수 있다.
논리 블록은 고체 상태 드라이브 내의 블록 어드레싱가능한 비휘발성 메모리에 액세스하기 위한 판독 및 기입 커맨드에 대한 최소 어드레싱가능한 데이터 유닛이다. 논리 블록의 어드레스는 일반적으로 논리 블록 어드레스(Logical Block Address)(LBA)라고 지칭된다.
논리 대 물리(L2P) 어드레스 인디렉션 테이블은 각각의 LBA에 대응하는 고체 상태 드라이브 내의 블록 어드레싱가능한 비휘발성 메모리에 물리 블록 어드레스를 저장한다. L2P 어드레스 테이블의 크기는 고체 상태 드라이브의 사용자 용량에 의존한다. 전형적으로, L2P 어드레스 테이블의 크기는 고체 상태 드라이브의 사용자 용량의 기가바이트(GB)당 약 1 메가바이트(MB)이다.
청구된 주제의 실시예들의 특징들은 이하의 상세한 설명이 진행됨에 따라, 그리고 유사한 번호들이 유사한 부분들을 묘사하는 도면을 참조하면 명백해질 것이다.
도 1은 고체 상태 드라이브의 실시예의 블록도이다.
도 2는 도 1에 도시된 고체 상태 드라이브 L2P 인디렉션 테이블의 예이다.
도 3은 호스트 시스템에서 실행되는 운영 체제로부터 수신된 기입 커맨드에 응답하여 고체 상태 드라이브에서 수행되는 동작들의 흐름도이다.
도 4는 호스트 시스템에서 실행되는 운영 체제로부터 수신된 판독 커맨드에 응답하여 고체 상태 드라이브에서 수행되는 동작들의 흐름도이다.
도 5는 호스트 시스템에서 실행되는 운영 체제로부터 수신된 TRIM 커맨드에 응답하여 고체 상태 드라이브에서 수행되는 동작들의 흐름도이다.
도 6은 L2P 인디렉션 테이블을 저장하기 위해 고체 상태 드라이브 내의 영구적 메모리를 포함하는 컴퓨터 시스템의 실시예의 블록도이다.
이하의 상세한 설명이 청구된 주제의 예시적인 실시예들을 참조하여 진행될 것이지만, 그것의 다수의 대안, 수정 및 변형이 본 기술분야의 통상의 기술자에게 명백할 것이다. 따라서, 청구된 주제는 광범위하게 보여지고 첨부된 청구항들에 제시된 대로 정의되도록 의도된다.
L2P 어드레스 테이블(L2P 인디렉션 테이블 또는 L2P 테이블이라고도 지칭됨)은 바이트 어드레싱가능한 휘발성 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM) 또는 동기식 동적 랜덤 액세스 메모리(SDRAM))에 저장된다. L2P 테이블은 고체 상태 드라이브 내의 블록 어드레싱가능한 비휘발성 메모리(예를 들어, NAND 플래시 메모리)의 물리 블록에 액세스하기 위한 L2P 인디렉션 테이블로부터의 물리 블록 어드레스 판독의 속도를 높이기 위해 바이트 어드레싱가능한 휘발성 메모리에 저장된다. L2P 인디렉션 테이블을 저장하기 위한 바이트 어드레싱가능한 휘발성 메모리는 고체 상태 드라이브 내에 또는 고체 상태 드라이브에 통신 가능하게 연결된 호스트에 포함될 수 있다.
L2P 인디렉션 테이블은 호스트 메모리 버퍼, 예를 들어 시스템 DRAM의 일부에 저장될 수 있다. 호스트 메모리 버퍼 내의 L2P 인디렉션 테이블에 대한 기입(업데이트)마다, 고체 상태 드라이브 내의 블록 어드레싱가능한 비휘발성 메모리에 저장된 L2P 인디렉션 테이블이 동시에 기입된다(라이트-쓰루 모드(write-through mode)). L2P 테이블에 대한 기입의 성능은 가장 긴 기입 시간, 즉 블록 어드레싱가능한 비휘발성 메모리 또는 호스트 메모리 버퍼에 기입하는 시간에 기초한다.
L2P 인디렉션 테이블은 고체 상태 드라이브 내의 바이트 어드레싱가능한 휘발성 메모리에 저장될 수 있다. 그러나, L2P 인디렉션 테이블의 크기는 고체 상태 드라이브의 사용자 용량에 의존한다(예를 들어, 사용자 용량의 기가바이트(GB)당 약 1 메가바이트(MB)). 고체 상태 드라이브 내의 비휘발성 메모리(사용자 용량이라고도 함)의 증가는 L2P 인디렉션 테이블을 저장하기 위한 바이트 어드레싱가능한 휘발성 메모리의 대응하는 증가를 필요로 한다.
실시예에서, L2P 인디렉션 테이블에 대한 기입의 성능은 L2P 인디렉션 테이블을 고체 상태 드라이브 내의 영구적 메모리에 저장함으로써 증가된다.
본 발명의 다양한 실시예들 및 양태들은 아래에서 논의되는 세부사항을 참조하여 설명될 것이며, 첨부 도면들은 다양한 실시예들을 도시할 것이다. 아래의 설명 및 도면은 본 발명을 예시하는 것이며 본 발명을 제한하는 것으로 해석되어서는 안 된다. 본 발명의 다양한 실시예들에 대한 완전한 이해를 제공하기 위해 다수의 특정 세부사항이 설명된다. 그러나, 특정한 경우에, 본 발명의 실시예들에 대한 간결한 논의를 제공하기 위해 공지되어 있거나 통상적인 세부사항은 설명되지 않는다.
명세서에서 "일 실시예" 또는 "실시예"에 대한 참조는 그 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 명세서의 다양한 위치들에서의 "일 실시예에서"라는 문구의 출현은 반드시 모두 동일한 실시예를 지칭하는 것은 아니다.
도 1은 고체 상태 드라이브(100)의 실시예의 블록도이다. 고체 상태 드라이브(100)는 고체 상태 드라이브 컨트롤러 회로(104), 영구적 메모리(106), 및 블록 어드레싱가능한 비휘발성 메모리(108)를 포함한다.
고체 상태 드라이브 컨트롤러 회로(104)는 호스트 인터페이스 회로(102), 영구적 메모리 컨트롤러 회로(110), 비휘발성 블록 어드레싱가능한 메모리 컨트롤러 회로(112), 프로세서(122), 펌웨어(140), 하드웨어 보조 회로(116), 및 정적 랜덤 액세스 메모리(130)를 포함한다. 고체 상태 드라이브 컨트롤러 회로(104)는 필드 프로그래밍가능한 게이트 어레이(Field Programmable Gate Array)(FPGA) 또는 주문형 집적 회로(Application Specific Integrated Circuit)(ASIC)에 포함될 수 있다.
호스트 시스템은 고속 직렬 컴퓨터 확장 버스(120), 예를 들어 PCI 익스프레스(Peripheral Component Interconnect Express)(PCIe) 버스를 통해 고체 상태 드라이브(100)와 통신할 수 있다. 호스트 인터페이스 회로(102)는 PCI 익스프레스(PCIe) 버스를 통한 통신을 관리한다. 실시예에서, 호스트 시스템은 비휘발성 메모리 익스프레스(Non-Volatile Memory Express)(NVMe) 표준 프로토콜을 사용하여 PCI 익스프레스(PCIe) 버스를 통해 통신한다. 비휘발성 메모리 익스프레스(NVMe) 표준 프로토콜은 호스트 소프트웨어가 PCI 익스프레스(PCIe) 버스를 통해 고체 상태 드라이브(SSD)(100)와 통신하기 위한 레지스터 레벨 인터페이스를 정의한다. NVM 익스프레스(NVM Express) 표준은 www.nvmexpress.org에서 입수가능하다. PCIe 표준은 pcisig.com에서 입수가능하다.
NVM 익스프레스 인터페이스는 호스트 소프트웨어가 쌍을 이루는 제출(submission) 및 완료(completion) 큐 메커니즘에 기초하여 고속 직렬 컴퓨터 확장 버스(120)를 통해 고체 상태 드라이브(100)와 통신하는 것을 허용한다. 제출 큐들(SQ)(144) 및 완료 큐들(CQ)(142)은 메모리에서 할당된다. 제출 큐(144)는 호스트 소프트웨어가 고체 상태 드라이브 컨트롤러 회로(104)에 의한 실행을 위해 커맨드들을 제출하는 데 사용하는 고정 슬롯 크기를 가진 순환 버퍼이다. 완료 큐(142)는 완료된 커맨드들을 위한 상태를 게시하는 데에 사용되는 고정 슬롯 크기를 가진 순환 버퍼이다.
NVMe 커맨드 세트는 쌍을 이루는 제출 및 완료 큐들을 위해 사용된다. 호스트 소프트웨어는 NVMe 커맨드 세트로부터의 커맨드들을 고체 상태 드라이브 컨트롤러 회로(104)에 의한 실행을 위해 제출 큐(144)에 삽입한다. 고체 상태 드라이브 컨트롤러 회로(104)는 연관된 완료 큐(142)에 완료를 삽입한다.
정적 랜덤 액세스 메모리(130)의 한 부분은 영구적 메모리(106)에 저장되는 영구적 메모리(PM) L2P 인디렉션 테이블(118)의 일부를 저장하기 위해 L2P 인디렉션 테이블 캐시(132)로서 할당된다. 정적 랜덤 액세스 메모리(130)의 다른 부분은 고속 직렬 컴퓨터 확장 버스(120)를 통해 전송된 데이터를 저장하기 위한 버퍼(134)로서 할당된다. 실시예에서, 정적 랜덤 액세스 메모리(130)는 1 메가바이트(MB) 이상이다.
정적 랜덤 액세스 메모리(130)의 다른 부분은 물리 대 논리(Physical-To-Logical)(P2L) 인디렉션 테이블(136)로서 할당된다. L2P 인디렉션 테이블 캐시(132) 및 물리 대 논리(P2L) 인디렉션 테이블(136) 둘 다는 논리 블록 어드레스에 대응하는 고체 상태 드라이브 내의 블록 어드레싱가능한 비휘발성 메모리 내에 물리 블록 어드레스들을 저장한다. P2L 인디렉션 테이블(136) 내의 엔트리들은 정적이다(기입된 후 업데이트되지 않음). L2P 인디렉션 테이블 캐시(132) 내의 엔트리들은 동적으로 업데이트된다.
정적 랜덤 액세스 메모리(130)는 휘발성 메모리이다. 휘발성 메모리는 디바이스에 대한 전력이 차단되는 경우 그것의 상태(따라서, 그에 저장된 데이터)가 불확정적인 메모리이다. SRAM은 래칭 회로를 사용하여 각각의 비트를 저장하는 휘발성 메모리의 한 유형이다. 동적 랜덤 액세스 메모리(DRAM)와는 대조적으로, SRAM에 저장된 데이터는 주기적으로 리프레시될 필요가 없기 때문에, SRAM은 전형적으로 캐시 메모리로서 사용된다.
영구적 메모리(106) 및 블록 어드레싱가능한 비휘발성 메모리(108)는 비휘발성 메모리이다. 비휘발성 메모리(NVM) 디바이스는 디바이스에 대한 전력이 차단되어도 상태가 확정적인 메모리이다. 일 실시예에서, 블록 어드레싱가능한 비휘발성 메모리(108)는 NAND 플래시 메모리, 또는 더 구체적으로는 다중 임계 레벨 NAND 플래시 메모리(예를 들어, 단일-레벨 셀("SLC"), 다중-레벨 셀("MLC"), 3중-레벨 셀(Tri-Level Cell)("TLC"), 4중-레벨 셀(Quad-Level Cell)("QLC"), 5중-레벨 셀(Penta-Level Cell)("PLC") 또는 소정의 다른 NAND 플래시 메모리)이다.
블록 어드레싱가능한 비휘발성 메모리(108)는 적어도 하나의 비휘발성 메모리 다이, 예를 들어 NAND 플래시 다이를 포함한다. 전형적으로, 데이터는 기입 대역폭을 최적화하기 위해 SSD 내의 다수의 NAND 플래시 다이에 걸쳐 기입(스트라이핑)된다. 비휘발성 메모리 다이 상의 비휘발성 메모리는 복수의 블록을 포함하고, 각각의 블록은 복수의 페이지를 포함한다. 복수의 페이지 중의 각각의 페이지는 데이터 및 연관된 메타데이터를 저장한다. 실시예에서, 비휘발성 메모리 다이는 2048개의 블록을 갖고, 각각의 블록은 64개의 페이지를 가지며, 각각의 페이지는 2048 바이트의 데이터와 64 바이트의 메타데이터를 저장할 수 있다.
영구적 메모리(106)는 바이트 어드레싱가능한 라이트-인-플레이스(write-in-place) 비휘발성 메모리이다. 바이트 어드레싱가능한 라이트-인-플레이스 비휘발성 메모리 디바이스들의 예들은 3차원 크로스포인트 메모리 디바이스, 단일 또는 다중-레벨 상변화 메모리(PCM) 또는 스위치가 있는 상변화 메모리(phase change memory with a switch)(PCMS), INTEL OPTANE, 칼코게나이드 상변화 재료(예를 들어, 칼코게나이드 유리)를 사용하는 비휘발성 메모리 디바이스, 금속 산화물 기반, 산소 결손 기반 및 전도성 브리지 랜덤 액세스 메모리(CB-RAM)를 포함한 저항성 메모리, 나노와이어 메모리, 강유전성 랜덤 액세스 메모리(FeRAM, FRAM), 멤리스터 기술을 통합한 자기저항성 랜덤 액세스 메모리(MRAM), 스핀 전달 토크(STT)-MRAM, 스핀트로닉 자기 접합 메모리 기반 디바이스, 자기 터널링 접합(MTJ) 기반 디바이스, DW(Domain Wall) 및 SOT(Spin Orbit Transfer) 기반 디바이스, 사이리스터 기반 메모리 디바이스, 또는 상술한 것 중 임의의 것의 조합, 또는 다른 메모리를 포함한다.
하드웨어 보조 회로(116)(회로(116)라고도 지칭됨)는 영구적 메모리(106)와 블록 어드레싱가능한 비휘발성 메모리(108) 사이의 데이터 전송을 관리한다. 영구적 메모리(106)의 일부는 PM L2P 인디렉션 테이블(118)을 저장하도록 할당된다. 블록 어드레싱가능한 비휘발성 메모리(108)의 일부는 마스터 L2P 인디렉션 테이블(148)을 저장하기 위해 사용된다. PM L2P 인디렉션 테이블(118)의 크기는 1:1000의 비율에 기반한 블록 어드레싱가능한 비휘발성 메모리(108)의 용량에 의존하는데, 예를 들어, 영구적 메모리(106) 내의 PM L2P 인디렉션 테이블(118)은 블록 어드레싱가능한 비휘발성 메모리(108)의 1 기가바이트(GB) 당 1 메가바이트(MB)이다. PM L2P 인디렉션 테이블(118)은 마스터 L2P 인디렉션 테이블(148)의 사본이다. PM L2P 인디렉션 테이블(118) 및 마스터 L2P 인디렉션 테이블(148) 둘 다는 비휘발성 메모리에 저장되고 고체 상태 드라이브(100)의 동작 동안 주기적으로 동기화된다.
영구적 메모리(106)의 나머지는 PM L2P 인디렉션 테이블(118), 사용자 데이터, 영구적 메모리 메타데이터 및 호스트 메타데이터, 영구적 메모리/호스트 메타데이터를 저장하기 위해 사용될 수 있다. 실시예에서, 영구적 메모리의 약 5%는 PM L2P 인디렉션 테이블(118)을 저장하는 데 사용되고, 약 5%는 영구적 메모리/호스트 메타데이터를 저장하는 데 사용되며, 약 90%는 사용자 데이터를 저장하는 데 사용된다.
실시예에서, 영구적 메모리(106)에 저장되는 사용자 데이터는 자주 액세스되는 사용자 데이터, 운영 체제 파일들 및 실행가능한 프로그램들을 포함할 수 있다. 자주 액세스되는 사용자 데이터는 "핫" 사용자 데이터라고 지칭될 수 있다. "콜드" 사용자 데이터라고도 지칭되는 자주 액세스되지 않는 데이터는 블록 어드레싱가능한 비휘발성 메모리(108)에 저장될 수 있다. 영구적 메모리(106)는 "저장 가속기 메모리"라고 지칭될 수 있는데, 왜냐하면 영구적 메모리(106)에 대한 판독 대기시간은 블록 어드레싱가능한 비휘발성 메모리(108)에 대한 판독 대기시간보다 짧기 때문이다.
다른 실시예들에서, 영구적 메모리(106)는 SLC NAND일 수 있고 블록 어드레싱가능한 비휘발성 메모리는 셀당 하나보다 많은 비트를 갖는 NAND일 수 있다(예를 들어, MLC, TLC, QLC, PLC NAND). SLC NAND의 판독 대기시간은 셀 당 1비트 초과인 NAND에 대한 것보다 빠르다.
고체 상태 드라이브 컨트롤러 회로(104) 내의 비휘발성 블록 어드레싱가능한 메모리 컨트롤러 회로(112)는 블록 어드레싱가능한 비휘발성 메모리(108)에 저장된 사용자 데이터에 대한 커맨드들(예를 들어, 판독, 기입("프로그래밍"), 소거 커맨드)을 큐잉하고 프로세싱한다.
고체 상태 드라이브(100)는 동적 랜덤 액세스 메모리(DRAM)를 포함하지 않으며, 무-DRAM(DRAMless) 고체 상태 드라이브로 지칭될 수 있다.
도 2는 도 1에 도시된 영구적 메모리(106)에 저장될 수 있는, 도 1에 도시된 PM L2P 인디렉션 테이블(118)의 예이다. 고체 상태 드라이브 PM L2P 인디렉션 테이블(118) 내의 각각의 L2P 엔트리("행")(204)는 고체 상태 드라이브(100) 내의 블록 어드레싱가능한 비휘발성 메모리(108)에 물리적 위치("PLOC")를 저장한다. 물리적 위치는 논리 블록 어드레스(LBA)(인덱스 0으로부터 MAXLBA까지의 테이블 인덱스)에 대응한다. L2P 엔트리(204)는 또한 메타데이터("META")를 포함한다.
고체 상태 드라이브(100) 내의 블록 어드레싱가능한 비휘발성 메모리(108)가 하나 이상의 NAND 플래시 다이를 포함하는 실시예에서, PLOC는 특정 LBA에 대한 데이터가 저장되는 하나 이상의 NAND 플래시 다이 내의 물리적 위치이다. 예를 들어, L2P 엔트리(204)에서, LBA 0에 대응하는 물리적 위치 A("PLOC-A")는 NAND 플래시 다이-0, 블록-1, 페이지-1, 오프셋-0일 수 있다.
메타데이터는 다른 데이터에 관한 정보를 제공하는 데이터이다. 예를 들어, 메타데이터의 하나의 비트는 L2P 인디렉션 테이블(200) 내의 L2P 엔트리(204) 내의 PLOC에 대한 판독/기입 액세스를 방지하기 위한 "잠금 비트"일 수 있다. 메타데이터의 다른 비트는 "더티 비트(dirty bit)"일 수 있으며, 그것의 상태는 L2P 엔트리(204)에 대한 사용자 데이터가 고체 상태 드라이브(100) 내의 블록 어드레싱가능한 비휘발성 메모리(108)로 플러시되었는지를 나타낸다. L2P 엔트리(204)에 대한 더티 비트는, L2P 엔트리(204)가 기입될 때 "더티"로 설정된다.
실시예에서, L2P 인디렉션 테이블들의 복수의 레벨, 즉 L2P 인디렉션 테이블 캐시(132), PM L2P 인디렉션 테이블(118) 및 마스터 L2P 인디렉션 테이블(148)이 있다. 프로세서(122)에 의해 실행되는 펌웨어(140)는 정적 랜덤 액세스 메모리(130) 내의 L2P 인디렉션 테이블 캐시(132)에서의 L2P 엔트리에 대한 초기 검색, 및 영구적 메모리(106) 내의 PM L2P 인디렉션 테이블(118)에서의 다음 검색을 수행한다. L2P 위치가 정적 랜덤 액세스 메모리(130) 내의 L2P 인디렉션 테이블 캐시(132) 또는 영구적 메모리(106) 내의 PM L2P 인디렉션 테이블(118)에 있지 않은 경우, L2P 엔트리는 블록 어드레싱가능한 비휘발성 메모리(108)의 마스터 L2P 인디렉션 테이블(148)에 있다.
도 3은 호스트 시스템에서 실행되는 운영 체제로부터 수신된 기입 커맨드에 응답하여 고체 상태 드라이브(100)에서 수행되는 동작들의 흐름도이다.
앞에서 논의된 바와 같이, 제출 큐는 고정된 슬롯 크기를 갖는 원형 버퍼이다. 호스트 시스템에서 실행되는 운영 체제는 고체 상태 드라이브 컨트롤러 회로(104)에 의한 실행을 위해 제출 큐에 커맨드들을 삽입할 수 있다. 프로세서(122) 내의 펌웨어(140)는 커맨드들을 제출 큐로부터 순서대로 페치하고, 커맨드들을 임의의 순서로 실행할 수 있다.
블록(300)에서, 프로세싱될 기입 커맨드가 제출 큐 상에 있는 경우, 프로세싱은 블록(302)으로 계속된다.
블록(302)에서, 프로세서(122) 내의 펌웨어(140)는 호스트 인터페이스 회로(102) 내의 제출 큐(144)로부터 페치된 기입 커맨드를 실행한다. 호스트 인터페이스 회로(102)를 통해 호스트로부터 수신되는, 고체 상태 드라이브(100)에 기입될 데이터는 버퍼(134)에 기입되고, P2L 엔트리가 P2L 인디렉션 테이블(136)에 삽입된다.
블록(304)에서, 버퍼(134)에 저장된 데이터는 블록 어드레싱가능한 비휘발성 메모리(108)로 이동되고, P2L 인디렉션 테이블(136) 테이블 내의 P2L 엔트리는 L2P 인디렉션 테이블 캐시(132)에 삽입된다.
블록(306)에서, L2P 인디렉션 테이블 캐시(132) 내의 엔트리들이 영구적 메모리(106) 내의 PM L2P 인디렉션 테이블(118)로 이동된다. 축적되는 L2P 인디렉션 테이블 캐시(132) 내의 엔트리들의 수는 영구적 메모리(106)로의 최소 전송 크기에 의존한다. 프로세싱은 제출 큐로부터의 다른 기입 요청을 프로세싱하기 위해 블록(300)으로 계속된다.
도 4는 호스트 시스템에서 실행되는 운영 체제로부터 수신된 판독 커맨드에 응답하여 고체 상태 드라이브(100)에서 수행되는 동작들의 흐름도이다. 실시예에서, 판독 커맨드는 NVMe 판독 커맨드이다. NVMe 판독 커맨드는 영구적 메모리(106) 및 블록 어드레싱가능한 비휘발성 메모리(108) 둘 다에 송신될 수 있다. NVMe 판독 커맨드는 영구적 메모리(106)에 저장된 메타데이터의 판독을 초래할 수 있다.
호스트 시스템에서 실행되는 운영 체제는 프로세서(122) 내의 펌웨어(140)에 의한 실행을 위해 제출 큐에 판독 커맨드를 삽입할 수 있다. 고체 상태 드라이브 컨트롤러 회로(104)는 제출 큐로부터 판독 커맨드를 페치한다. 판독 커맨드는 고체 상태 드라이브(100)의 블록 어드레싱가능한 비휘발성 메모리(108) 또는 영구적 메모리(106)로부터 판독될 데이터에 대한 논리 블록 어드레스를 포함한다.
블록(400)에서, 프로세싱될 제출 큐 상에 판독 커맨드가 있는 경우, 고체 상태 드라이브 컨트롤러 회로(104)는 제출 큐로부터 판독 커맨드를 페치하고, 프로세싱은 블록(402)으로 계속된다.
블록(402)에서, 고체 상태 드라이브(100)의 고체 상태 드라이브 컨트롤러 회로(104)는 논리 블록 어드레스에 대응하는 P2L 엔트리에 대해 고체 상태 드라이브(100) 내의 정적 랜덤 액세스 메모리(130) 내의 P2L 인디렉션 테이블(136)을 검색한다. 판독될 데이터에 대한 논리 블록 어드레스에 대응하는 P2L 엔트리가 존재하는 경우, 프로세싱은 블록(404)으로 계속된다. 그렇지 않은 경우, 프로세싱은 블록(406)으로 계속된다.
블록(404)에서, 논리 블록 어드레스에 대응하는 물리 블록의 물리 어드레스는 P2L 인디렉션 테이블(136)의 L2P 엔트리로부터 판독된다. 데이터는 논리 블록 어드레스에 대응하는 P2L 인디렉션 테이블(136) 내의 P2L 엔트리의 물리 블록에 있는 블록 어드레싱가능한 비휘발성 메모리(108)로부터 판독된다. 프로세싱은 제출 큐로부터 다른 판독 커맨드를 페치하기 위해 블록(400)으로 계속된다.
블록(406)에서, 고체 상태 드라이브(100) 내의 고체 상태 드라이브 컨트롤러 회로(104)는 논리 블록 어드레스에 대응하는 L2P 엔트리에 대해 고체 상태 드라이브(100) 내의 정적 랜덤 액세스 메모리(130) 내의 L2P 인디렉션 테이블 캐시(132)를 검색한다. 판독될 데이터에 대한 논리 블록 어드레스에 대응하는 L2P 엔트리가 존재하는 경우, 프로세싱은 블록(408)으로 계속된다. 그렇지 않은 경우, 프로세싱은 블록(410)으로 계속된다.
블록(408)에서, 논리 블록 어드레스에 대응하는 물리 블록의 물리 어드레스는 정적 랜덤 액세스 메모리(130)의 L2P 인디렉션 테이블 캐시(132) 내의 L2P 엔트리로부터 판독된다. 데이터는 논리 블록 어드레스에 대응하는 L2P 인디렉션 테이블 캐시(132)의 L2P 엔트리의 물리 블록에서, 블록 어드레싱가능한 비휘발성 메모리(108)로부터 판독된다. 프로세싱은 제출 큐로부터 다른 판독 커맨드를 페치하기 위해 블록(400)으로 계속된다.
블록(410)에서, 고체 상태 드라이브(100) 내의 고체 상태 드라이브 컨트롤러 회로(104)는 논리 블록 어드레스에 대응하는 L2P 엔트리에 대해 고체 상태 드라이브(100) 내의 영구적 메모리(106)에서 PM L2P 인디렉션 테이블(118)을 검색한다. 판독될 데이터에 대한 논리 블록 어드레스에 대응하는 L2P 엔트리가 존재하는 경우, 프로세싱은 블록(412)으로 계속된다. 그렇지 않은 경우, 프로세싱은 블록(400)으로 계속된다.
블록(412)에서, 논리 블록 어드레스에 대응하는 물리 블록의 물리 어드레스는 PM L2P 인디렉션 테이블(118) 내의 L2P 엔트리로부터 판독된다. 데이터는 블록 어드레싱가능한 비휘발성 메모리(108)의 물리 블록으로부터 판독된다. 프로세싱은 제출 큐로부터 다른 판독 커맨드를 페치하기 위해 블록(400)으로 계속된다.
고체 상태 드라이브 컨트롤러 회로(104)는 블록 어드레싱가능한 비휘발성 메모리(108) 내의 데이터 블록으로부터 데이터 페이지를 판독 및 기입할 수 있지만 블록 레벨에서만 소거할 수 있다. 고체 상태 드라이브 컨트롤러 회로(104)는 데이터가 소거될 때까지 블록 어드레싱가능한 비휘발성 메모리 내의 데이터를 덮어쓸 수 없다. 판독/기입 성능이 소거 동작들의 영향을 받지 않을 것을 보장하기 위해, "가비지 컬렉션(garbage collection)"이라고도 알려진 소거 동작들이 집계된다. 운영 체제는 더 이상 필요하지 않으며 고체 상태 드라이브(100)에 TRIM 커맨드를 발행함으로써 소거될 수 있는 파일들 및 데이터를 식별한다.
도 5는 호스트 시스템에서 실행되는 운영 체제로부터 수신된 TRIM 커맨드에 응답하여 고체 상태 드라이브(100)에서 수행되는 동작들의 흐름도이다. TRIM 커맨드의 예는 NVMe 할당해제 커맨드이다. TRIM 커맨드는 소거될 수 있는 블록 어드레싱가능한 비휘발성 메모리(108) 내의 블록들을 식별한다.
블록(500)에서, 프로세싱될 제출 큐 상의 TRIM 커맨드가 존재하는 경우, 고체 상태 드라이브 컨트롤러 회로(104)는 제출 큐로부터 TRIM 커맨드를 페치하고, 프로세싱은 블록(502)으로 계속된다.
블록(502)에서, 고체 상태 드라이브(100) 내의 정적 랜덤 액세스 메모리(130) 내의 P2L 인디렉션 테이블(136)은 소거될 논리 블록 어드레스 또는 논리 블록 어드레스 범위에 대응하는 P2L 엔트리 또는 엔트리들에 대해 검색한다. 논리 블록 어드레스에 대응하는 P2L 엔트리가 존재하는 경우, 프로세싱은 블록(504)으로 계속된다. 그렇지 않은 경우, 프로세싱은 블록(506)으로 계속된다.
블록(504)에서, 논리 블록 어드레스에 대응하는 P2L 인디렉션 테이블의 엔트리가 클리어된다. 프로세싱은 블록(500)에서 계속된다.
블록(506)에서, 고체 상태 드라이브(100) 내의 고체 상태 드라이브 컨트롤러 회로(104)는 논리 블록 어드레스에 대응하는 L2P 엔트리에 대해 고체 상태 드라이브(100) 내의 정적 랜덤 액세스 메모리(130) 내의 L2P 인디렉션 테이블 캐시(132)를 검색한다. 판독될 데이터에 대한 논리 블록 어드레스에 대응하는 L2P 엔트리가 존재하는 경우, 프로세싱은 블록(508)으로 계속된다. 그렇지 않은 경우, 프로세싱은 블록(510)으로 계속된다.
블록(508)에서, 정적 랜덤 액세스 메모리(130) 내의 L2P 인디렉션 테이블 캐시(132) 내의 L2P 엔트리가 클리어된다. 프로세싱은 블록(500)으로 계속된다.
블록(510)에서, 고체 상태 드라이브(100) 내의 고체 상태 드라이브 컨트롤러 회로(104)는 논리 블록 어드레스에 대응하는 L2P 엔트리에 대해 고체 상태 드라이브(100) 내의 영구적 메모리(106)에서 PM L2P 인디렉션 테이블(118)을 검색한다. 판독될 데이터에 대한 논리 블록 어드레스에 대응하는 L2P 엔트리가 존재하는 경우, 프로세싱은 블록(512)으로 계속된다. 그렇지 않은 경우, 프로세싱은 블록(500)으로 계속된다.
블록(512)에서, 영구적 메모리(106) 내의 PM L2P 인디렉션 테이블(118)의 L2P 엔트리가 클리어된다. 예를 들어, 엔트리 내의 모든 비트는 모든 비트를 논리 1 또는 논리 0으로 기입함으로써 클리어될 수 있다. 프로세싱은 블록(500)으로 계속된다.
영구적 메모리에 L2P 인디렉션 테이블을 저장하면, 영구적 메모리(106)에서 PM L2P 인디렉션 테이블(118)에 대한 업데이트의 빈도가 감소하고 입도가 증가한다. 추가로, 블록 어드레싱가능한 비휘발성 메모리(108) 내의 마스터 L2P 인디렉션 테이블(148)을 업데이트하기 위해 하드웨어 보조 회로(116)를 사용하면, 마스터 L2P 인디렉션 테이블(148)을 업데이트하고 블록 어드레싱가능한 비휘발성 메모리(108)에 데이터를 저장하기 위해 더 많은 대역폭이 제공된다.
도 6은 PM L2P 인디렉션 테이블(118)을 저장하기 위해 고체 상태 드라이브(100)에 영구적 메모리(106)를 포함하는 컴퓨터 시스템(600)의 실시예의 블록도이다. 컴퓨터 시스템(600)은 서버, 워크스테이션 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터 및/또는 태블릿 컴퓨터를 포함하지만 이에 제한되지 않는 컴퓨팅 디바이스에 대응할 수 있다.
컴퓨터 시스템(600)은 프로세서, 그래픽, 메모리, 및 입력/출력(I/O) 제어 로직을 하나의 SoC 패키지로 결합하는 시스템 온 칩(SOC 또는 SoC)(604)을 포함한다. SoC(604)는 적어도 하나의 중앙 처리 장치(CPU) 모듈(608), 휘발성 메모리 컨트롤러(614), 및 그래픽 프로세서 유닛(GPU)(610)을 포함한다. 다른 실시예들에서, 휘발성 메모리 컨트롤러(614)는 SoC(604)의 외부에 있을 수 있다. CPU 모듈(608)은 적어도 하나의 프로세서 코어(602), 및 레벨 2(L2) 캐시(606)를 포함한다.
도시되지는 않지만, 프로세서 코어(들)(602) 각각은 하나 이상의 명령어/데이터 캐시, 실행 유닛, 프리페치 버퍼, 명령어 큐, 분기 어드레스 계산 유닛, 명령어 디코더, 부동 소수점 유닛, 리타이어먼트 유닛 등을 내부적으로 포함할 수 있다. CPU 모듈(608)은 일 실시예에 따라 Intel® Corporation에 의해 제공되는 것과 같은 단일 코어 또는 다중 코어 범용 프로세서에 대응할 수 있다.
그래픽 프로세서 유닛(GPU)(610)은 하나 이상의 GPU 코어, 및 GPU 코어에 대한 그래픽 관련 데이터를 저장할 수 있는 GPU 캐시를 포함할 수 있다. GPU 코어는 하나 이상의 실행 유닛과 하나 이상의 명령어 및 데이터 캐시를 내부적으로 포함할 수 있다. 추가적으로, 그래픽 프로세서 유닛(GPU)(610)은 하나 이상의 버텍스 프로세싱 유닛, 래스터화 유닛, 미디어 프로세싱 유닛, 및 코덱과 같은, 도 6에 도시되지 않은 다른 그래픽 로직 유닛들을 포함할 수 있다.
I/O 서브시스템(612) 내에서, 프로세서 코어(들)(602) 내에서 이용되는 호스트 통신 프로토콜을 특정 I/O 디바이스들과 호환가능한 프로토콜로 변환하기 위해 하나 이상의 I/O 어댑터(들)(616)가 존재한다. 변환을 위해 어댑터들이 사용될 수 있는 프로토콜들 중 일부는 PCI(peripheral component interconnect) 익스프레스(PCIe), 범용 직렬 버스(USB); SATA(Serial Advanced Technology Attachment) 및 IEEE(Institute of Electrical and Electronics Engineers) 1594 "Firewire"를 포함한다.
I/O 어댑터(들)(616)는 예를 들어 디스플레이 및/또는 터치 스크린 디스플레이(640)를 포함하는 사용자 인터페이스 디바이스(들), 프린터, 키패드, 키보드, 통신 로직, 하드 디스크 드라이브("HDD"), 고체 상태 드라이브("SSD"), 이동식 저장 매체, 디지털 비디오 디스크(DVD) 드라이브, 컴팩트 디스크(CD) 드라이브, RAID(Redundant Array of Independent Disks), 테이프 드라이브 또는 다른 저장 디바이스를 포함할 수 있는 유선 및/또는 무선의 저장 디바이스(들)를 포함할 수 있는 외부 I/O 디바이스들(624)과 통신할 수 있다. 저장 디바이스들은 직렬 부착 SCSI(Serial Attached SCSI(Small Computer System Interface))(SAS), PCI 익스프레스(PCIe), NVM 익스프레스(NVMe) 오버 PCI 익스프레스(PCIe) 및 직렬 ATA(Serial ATA(Advanced Technology Attachment))(SATA)를 포함하지만 그에 제한되지 않는 다양한 프로토콜들 중 하나 이상을 사용하여 하나 이상의 버스를 통해 통신 가능하게 및/또는 물리적으로 함께 결합될 수 있다.
추가로, 하나 이상의 무선 프로토콜 I/O 어댑터가 존재할 수 있다. 무선 프로토콜들의 예들은 특히, IEEE 802.15 및 Bluetooth, 4.0과 같은 개인 영역 네트워크; IEEE 802.11 기반 무선 프로토콜과 같은 무선 근거리 통신망; 및 셀룰러 프로토콜에서 사용된다.
I/O 어댑터(들)(616)는 또한 고체 상태 드라이브 컨트롤러 회로(104) 및 도 1과 관련하여 논의된 PM L2P 인디렉션 테이블(118)을 저장하기 위한 영구적 메모리(106)를 포함하는 고체 상태 드라이브("SSD")(100)와 통신할 수 있다.
I/O 어댑터(들)(616)는 고속 직렬 컴퓨터 확장 버스(120)를 통해 NVM 익스프레스(NVMe) 오버 PCI 익스프레스(PCIe) 프로토콜을 사용하여 고체 상태 드라이브(100) 내의 호스트 인터페이스 회로(102)에 통신 가능하게 결합되는 PCI 익스프레스(PCIe) 어댑터를 포함할 수 있다. 비휘발성 메모리 익스프레스(NVMe) 표준은 호스트 소프트웨어가 고속 직렬 컴퓨터 확장 버스인 PCI 익스프레스(PCIe)를 통해 비휘발성 메모리 서브시스템(예를 들어, SSD(Solid State Drive))과 통신하기 위한 레지스터 레벨 인터페이스를 정의한다. NVM 익스프레스 표준은 www.nvmexpress.org에서 입수가능하다. PCIe 표준은 www.pcisig.com에서 입수가능하다.
휘발성 메모리는 디바이스에 대한 전력이 차단될 때 그것의 상태(따라서 이에 저장된 데이터)가 불확정적인 메모리이다. 동적 휘발성 메모리는 상태를 유지하기 위해 디바이스에 저장된 데이터의 리프레시를 필요로 한다. 동적 휘발성 메모리의 일례는 동적 랜덤 액세스 메모리(DRAM) 또는 동기식 DRAM(SDRAM)과 같은 일부 변형을 포함한다. 본 명세서에 설명된 바와 같은 메모리 서브시스템은 DDR3(더블 데이터 레이트 버전 3, 2007년 6월 27일에 JEDEC(Joint Electronic Device Engineering Council)에 의한 최초 릴리스), DDR4(DDR 버전 4, JEDEC에 의해 2012년 9월에 공개된 초기 사양), DDR4E(DDR 버전 4), LPDDR3(저전력 DDR 버전 3, JESD209-3B, JEDEC에 의해 2013년 8월), LPDDR4(LPDDR 버전 4, JESD209-4, 2014년 8월 JEDEC에 의해 최초 공개), WIO2(와이드 입력/출력(Wide Input/Output) 버전 2, JESD229-2, 2014년 8월 JEDEC에 의해 최초 공개), HBM(고대역폭 메모리(High Bandwidth Memory), JESD325, 2013년 10월 JEDEC에 의해 최초 공개), DDR5(DDR 버전 5, JEDEC에 의해 현재 논의 중), LPDDR5(JEDEC에 의해 현재 논의 중), HBM2(HBM 버전 2, JEDEC에 의해 현재 논의 중), 또는 메모리 기술들 중 다른 것들 또는 조합들, 및 이러한 사양들의 파생물들 또는 확장들에 기초하는 기술들과 같은 다수의 메모리 기술과 호환될 수 있다. JEDEC 표준은 www.jedec.org에서 입수가능하다.
운영 체제(642)는 메모리 할당 및 I/O 디바이스에 대한 액세스를 포함하는 컴퓨터 하드웨어 및 소프트웨어를 관리하는 소프트웨어이다. 운영 체제들의 예는 Microsoft® Windows®, Linux®, iOS® 및 Android®를 포함한다.
본 명세서에 도시된 흐름도들은 다양한 프로세스 액션들의 시퀀스들의 예들을 제공한다. 흐름도들은 소프트웨어 또는 펌웨어 루틴에 의해 실행될 동작들은 물론, 물리적 동작들을 나타낼 수 있다. 일 실시예에서, 흐름도는 하드웨어 및/또는 소프트웨어에서 구현될 수 있는 유한 상태 머신(FSM)의 상태를 도시할 수 있다. 특정 시퀀스 또는 순서로 표시되지만, 달리 지정되지 않는 한, 액션들의 순서는 수정될 수 있다. 따라서, 도시된 실시예들은 예로서 이해되어야 하며, 프로세스는 다른 순서로 수행될 수 있고, 일부 액션들은 병렬로 수행될 수 있다. 추가로, 다양한 실시예들에서 하나 이상의 액션이 생략될 수 있으며; 따라서 모든 실시예에서 모든 액션들이 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
다양한 동작들 또는 기능들이 본 명세서에 설명되는 범위 내에서, 그것들은 소프트웨어 코드들, 명령어들, 구성들 및/또는 데이터로서 설명되거나 정의될 수 있다. 콘텐츠는 직접 실행파일("객체" 또는 "실행파일" 형식), 소스 코드 또는 차이 코드("델타" 또는 "패치" 코드)일 수 있다. 본 명세서에 설명된 실시예들의 소프트웨어 콘텐츠는 콘텐츠가 저장된 제품을 통해, 또는 통신 인터페이스를 통해 데이터를 송신하기 위해 통신 인터페이스를 동작시키는 방법을 통해 제공될 수 있다. 머신 판독가능한 저장 매체는 머신으로 하여금 설명된 기능들 또는 동작들을 수행하게 할 수 있으며, 기록가능한/비-기록가능한 매체(예를 들어, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스 등)와 같이, 머신(예를 들어, 컴퓨팅 디바이스, 전자 시스템 등)에 의해 액세스가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함한다. 통신 인터페이스는 메모리 버스 인터페이스, 프로세서 버스 인터페이스, 인터넷 연결, 디스크 컨트롤러 등과 같이, 다른 디바이스와 통신하기 위해 유선, 무선, 광학 등의 매체 중 임의의 것에 인터페이스하는 임의의 메커니즘을 포함한다. 통신 인터페이스는 소프트웨어 콘텐츠를 설명하는 데이터 신호를 제공하도록 통신 인터페이스를 준비시키기 위해 구성 매개변수들을 제공하고/하거나 신호들을 송신함으로써 구성될 수 있다. 통신 인터페이스는 통신 인터페이스에 송신되는 하나 이상의 커맨드 또는 신호를 통해 액세스될 수 있다.
본 명세서에 설명된 다양한 컴포넌트들은 설명된 동작들 또는 기능들을 수행하기 위한 수단일 수 있다. 본 명세서에 설명된 각각의 컴포넌트는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함한다. 컴포넌트들은 소프트웨어 모듈, 하드웨어 모듈, 특수 목적 하드웨어(예를 들어, 주문형 하드웨어(application specific hardware), 주문형 집적 회로(ASIC), 디지털 신호 프로세서(DSP) 등), 임베디드 컨트롤러, 유선 회로 등으로 구현될 수 있다.
본 명세서에 설명된 것 외에도, 본 발명의 범위를 벗어나지 않고서, 본 발명의 개시된 실시예들 및 구현들에 대해 다양한 수정이 이루어질 수 있다.
따라서, 본 명세서의 도시들 및 예들은 제한적인 의미가 아니라 예시적인 것으로 해석되어야 한다. 본 발명의 범위는 오직 이하의 청구항들을 참조하여 판단되어야 한다.

Claims (22)

  1. 고체 상태 드라이브로서,
    데이터를 저장하기 위한 블록 어드레싱가능한 비휘발성 메모리;
    논리 대 물리 어드레스 인디렉션 테이블을 저장하기 위한 영구적 메모리 - 상기 논리 대 물리 어드레스 인디렉션 테이블은 복수의 엔트리를 갖고, 각각의 엔트리는 논리 블록 어드레스에 할당된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스를 저장함 - ; 및
    상기 영구적 메모리 및 상기 블록 어드레싱가능한 비휘발성 메모리에 통신 가능하게 결합된 고체 상태 드라이브 컨트롤러 회로
    를 포함하고, 상기 고체 상태 드라이브 컨트롤러 회로는:
    논리 대 물리 어드레스 인디렉션 테이블 캐시를 저장하기 위한 휘발성 메모리; 및
    상기 휘발성 메모리에 통신 가능하게 결합되어, 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시를 모니터링하고, 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시 내의 더티(dirty) 논리 대 물리 엔트리들을 상기 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블에 기입하는 보조 회로
    를 포함하는, 고체 상태 드라이브.
  2. 제1항에 있어서, 상기 휘발성 메모리는 상기 보조 회로에 의해 상기 블록 어드레싱가능한 비휘발성 메모리에 기입될 데이터를 일시적으로 저장하기 위한 버퍼를 포함하는, 고체 상태 드라이브.
  3. 제1항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 어드레스에 데이터를 기입하라는 커맨드에 응답하여, 데이터는 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 어드레스에 기입되고, 상기 물리 어드레스 및 상기 논리 어드레스에 연관된 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시 내의 엔트리는 더티로 설정되는, 고체 상태 드라이브.
  4. 제1항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 판독하라는 커맨드에 응답하여, 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시는 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 검색되는, 고체 상태 드라이브.
  5. 제1항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 판독하라는 커맨드에 응답하여, 상기 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블은 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 검색되는, 고체 상태 드라이브.
  6. 제1항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 소거하라는 커맨드에 응답하여, 상기 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블은 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 검색되는, 고체 상태 드라이브.
  7. 제1항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리는 NAND이고, 상기 영구적 메모리는 3차원 크로스포인트인, 고체 상태 드라이브.
  8. 방법으로서,
    블록 어드레싱가능한 비휘발성 메모리에 데이터를 저장하는 단계;
    논리 대 물리 어드레스 인디렉션 테이블을 영구적 메모리에 저장하는 단계 - 상기 논리 대 물리 어드레스 인디렉션 테이블은 복수의 엔트리를 갖고, 각각의 엔트리는 논리 블록 어드레스에 할당된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스를 저장함 - ;
    휘발성 메모리에 논리 대 물리 어드레스 인디렉션 테이블 캐시를 저장하는 단계; 및
    상기 논리 대 물리 어드레스 인디렉션 테이블 캐시를 모니터링하고, 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시 내의 더티 논리 대 물리 엔트리들을 상기 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블에 기입하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서, 상기 휘발성 메모리는 상기 블록 어드레싱가능한 비휘발성 메모리에 기입될 데이터를 일시적으로 저장하기 위한 버퍼를 포함하는, 방법.
  10. 제8항에 있어서,
    상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 어드레스에 데이터를 기입하라는 커맨드에 응답하여, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 어드레스에 데이터를 기입하는 단계; 및
    상기 물리 어드레스 및 상기 논리 어드레스에 연관된 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시 내의 엔트리를 더티로 설정하는 단계
    를 더 포함하는 방법.
  11. 제8항에 있어서,
    상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 판독하라는 커맨드에 응답하여, 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시를 검색하는 단계
    를 더 포함하는 방법.
  12. 제8항에 있어서,
    상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 판독하라는 커맨드에 응답하여, 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블을 검색하는 단계
    를 더 포함하는 방법.
  13. 제8항에 있어서,
    상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 소거하라는 커맨드에 응답하여, 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블을 검색하는 단계
    를 더 포함하는 방법.
  14. 제8항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리는 NAND이고, 상기 영구적 메모리는 3차원 크로스포인트 메모리인, 방법.
  15. 장치로서,
    제8항 내지 제14항 중 어느 한 항의 방법들을 수행하기 위한 수단을 포함하는 장치.
  16. 시스템으로서,
    프로세서;
    상기 프로세서에 통신 가능하게 결합된 고체 상태 드라이브
    를 포함하고, 상기 고체 상태 드라이브는:
    데이터를 저장하기 위한 블록 어드레싱가능한 비휘발성 메모리;
    논리 대 물리 어드레스 인디렉션 테이블을 저장하기 위한 영구적 메모리 - 상기 논리 대 물리 어드레스 인디렉션 테이블은 복수의 엔트리를 갖고, 각각의 엔트리는 논리 블록 어드레스에 할당된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스를 저장함 - ; 및
    상기 영구적 메모리 및 상기 블록 어드레싱가능한 비휘발성 메모리에 통신 가능하게 결합된 고체 상태 드라이브 컨트롤러 회로
    를 포함하고, 상기 고체 상태 드라이브 컨트롤러 회로는:
    논리 대 물리 어드레스 인디렉션 테이블 캐시를 저장하기 위한 휘발성 메모리; 및
    상기 휘발성 메모리에 통신 가능하게 결합되어, 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시를 모니터링하고, 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시 내의 더티 논리 대 물리 엔트리들을 상기 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블에 기입하는 보조 회로
    를 포함하는, 시스템.
  17. 제16항에 있어서, 상기 휘발성 메모리는 상기 보조 회로에 의해 상기 블록 어드레싱가능한 비휘발성 메모리에 기입될 데이터를 일시적으로 저장하기 위한 버퍼를 포함하는, 시스템.
  18. 제16항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 어드레스에 데이터를 기입하라는 커맨드에 응답하여, 데이터는 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 어드레스에 기입되고, 상기 물리 어드레스 및 상기 논리 어드레스에 연관된 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시 내의 엔트리는 더티로 설정되는, 시스템.
  19. 제16항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 판독하라는 커맨드에 응답하여, 상기 논리 대 물리 어드레스 인디렉션 테이블 캐시는 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 검색되는, 시스템.
  20. 제16항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 판독하라는 커맨드에 응답하여, 상기 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블은 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 검색되는, 시스템.
  21. 제16항에 있어서, 상기 블록 어드레싱가능한 비휘발성 메모리 내의 논리 블록 어드레스로부터 데이터를 소거하라는 커맨드에 응답하여, 상기 영구적 메모리 내의 상기 논리 대 물리 어드레스 인디렉션 테이블은 상기 논리 블록 어드레스에 연관된 상기 블록 어드레싱가능한 비휘발성 메모리 내의 물리 블록 어드레스에 대한 엔트리에 대해 검색되는, 시스템.
  22. 머신 판독가능한 저장소로서,
    실행될 때, 제8항 내지 제14항 중 어느 한 항의 방법을 구현하기 위한 머신 판독가능한 명령어들을 포함하는 머신 판독가능한 저장소.
KR1020210155399A 2020-12-15 2021-11-12 고체 상태 드라이브 내의 영구적 메모리 내의 논리 대 물리 어드레스 인디렉션 테이블 KR20220085708A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/122,152 US20210097004A1 (en) 2020-12-15 2020-12-15 Logical to physical address indirection table in a persistent memory in a solid state drive
US17/122,152 2020-12-15

Publications (1)

Publication Number Publication Date
KR20220085708A true KR20220085708A (ko) 2022-06-22

Family

ID=75163415

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210155399A KR20220085708A (ko) 2020-12-15 2021-11-12 고체 상태 드라이브 내의 영구적 메모리 내의 논리 대 물리 어드레스 인디렉션 테이블

Country Status (6)

Country Link
US (1) US20210097004A1 (ko)
EP (1) EP4016310A1 (ko)
JP (1) JP2022094912A (ko)
KR (1) KR20220085708A (ko)
CN (1) CN114637694A (ko)
TW (1) TW202226253A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114840447A (zh) * 2022-04-01 2022-08-02 成都忆芯科技有限公司 一种加速器
US11947818B2 (en) * 2022-04-20 2024-04-02 Silicon Motion, Inc. Method for accessing flash memory module and associated flash memory controller and electronic device

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711923B2 (en) * 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
CN103885892A (zh) * 2012-12-20 2014-06-25 株式会社东芝 存储器控制器
TWI584122B (zh) * 2015-11-17 2017-05-21 群聯電子股份有限公司 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US20190354482A1 (en) * 2018-05-21 2019-11-21 Microsoft Technology Licensing, Llc Time-based mechanism supporting flush operation
US11074188B2 (en) * 2019-02-18 2021-07-27 Intel Corporation Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two-level main memory
WO2020174428A2 (en) * 2019-02-26 2020-09-03 Marvell Asia Pte, Ltd. Cache management of logical-physical translation metadata
US11144467B2 (en) * 2019-05-17 2021-10-12 Intel Corporation Bypassing cache memory in a write transaction in a system with multi-level memory
GB2598784B (en) * 2020-09-14 2022-11-16 Advanced Risc Mach Ltd Draining operation for draining dirty cache lines to persistent memory
US11940912B2 (en) * 2022-03-01 2024-03-26 Micron Technology, Inc. Managing power loss recovery using a dirty section write policy for an address mapping table in a memory sub-system
US11714748B1 (en) * 2022-03-01 2023-08-01 Micron Technology, Inc. Managing power loss recovery using an oldest section write policy for an address mapping table in a memory sub-system

Also Published As

Publication number Publication date
EP4016310A1 (en) 2022-06-22
CN114637694A (zh) 2022-06-17
TW202226253A (zh) 2022-07-01
US20210097004A1 (en) 2021-04-01
JP2022094912A (ja) 2022-06-27

Similar Documents

Publication Publication Date Title
US20190042413A1 (en) Method and apparatus to provide predictable read latency for a storage device
US20190087343A1 (en) Methods for Caching and Reading Data to be Programmed into a Storage Unit and Apparatuses Using the Same
EP3696680B1 (en) Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two level main memory
US20190042460A1 (en) Method and apparatus to accelerate shutdown and startup of a solid-state drive
US20190050161A1 (en) Data storage controller
US10599579B2 (en) Dynamic cache partitioning in a persistent memory module
NL2030989B1 (en) Two-level main memory hierarchy management
US20210096778A1 (en) Host managed buffer to store a logical-to physical address table for a solid state drive
EP4016310A1 (en) Logical to physical address indirection table in a persistent memory in a solid state drive
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
EP4320508A1 (en) Method and apparatus to reduce nand die collisions in a solid state drive
US10747439B2 (en) Method and apparatus for power-fail safe compression and dynamic capacity for a storage device
EP3772682A1 (en) Method and apparatus to improve write bandwidth of a block-based multi-level cell non-volatile memory
US10872041B2 (en) Method and apparatus for journal aware cache management
US20220357851A1 (en) Runtime selection of memory devices and storage devices in a disaggregated memory system
CN114664361A (zh) 利用nand缓冲器进行无dram的多级单元编程
EP3842949B1 (en) Read quality of service for non-volatile memory
US11868642B2 (en) Managing trim commands in a memory sub-system
US20220083280A1 (en) Method and apparatus to reduce latency for random read workloads in a solid state drive
KR20240006932A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN113360088A (zh) 基于硬件的相干性检查技术