KR20220104055A - 저장 디바이스를 위한 캐시 아키텍처 - Google Patents

저장 디바이스를 위한 캐시 아키텍처 Download PDF

Info

Publication number
KR20220104055A
KR20220104055A KR1020227022696A KR20227022696A KR20220104055A KR 20220104055 A KR20220104055 A KR 20220104055A KR 1020227022696 A KR1020227022696 A KR 1020227022696A KR 20227022696 A KR20227022696 A KR 20227022696A KR 20220104055 A KR20220104055 A KR 20220104055A
Authority
KR
South Korea
Prior art keywords
memory
read
cache
controller
memory portion
Prior art date
Application number
KR1020227022696A
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 KR20220104055A publication Critical patent/KR20220104055A/ko

Links

Images

Classifications

    • 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
    • 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/10Address translation
    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or 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/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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2236Copy
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory devices with an internal cache buffer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2272Latency related aspects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5643Multilevel memory comprising cache storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5644Multilevel memory comprising counting devices

Abstract

본 개시는 메모리 제어기에 의해 관리되는 복수의 비휘발성 메모리 부분들을 포함하는 저장 디바이스들에서 판독 및/또는 기록 단계를 개선하기 위한 방법에 관한 것으로서, 방법은, 비휘발성 메모리 부분들에 대해 더 낮은 레이턴시 및 더 높은 스루풋을 갖고, 제어기에 방향성을 가지고 연결되는 적어도 더 빠른 메모리 부분을 제공하는 단계; 복수의 비휘발성 메모리 부분들 중 더 빈번하게 판독되거나 기록된 논리적 블록들을 포함하는 메모리 영역들의 컨텐츠를 복사하기 위한 판독 및/또는 기록 캐시 메모리로서 더 빠른 메모리 부분을 사용하는 단계를 포함한다. 방법을 구현하기 위해 관리되는 저장 디바이스에 대한 특정 판독 캐시 아키텍처가 또한 개시된다.

Description

저장 디바이스를 위한 캐시 아키텍처
본 개시는 전반적으로 반도체 메모리 및 방법들에 관한 것으로, 특히 하이브리드 메모리 시스템과 같은 저장 디바이스를 위한 판독 및/또는 기록 캐시 아키텍처에 관련된 장치들 및 방법들에 관한 것이다.
메모리 디바이스들은 전형적으로 컴퓨팅 시스템들에서 내부의, 반도체, 집적 회로들로서 제공된다. 메모리는 휘발성 및 비휘발성 메모리를 포함하는 많은 상이한 유형들이 존재한다. 휘발성 메모리는 그 데이터(예를 들어, 호스트 데이터, 에러 데이터 등)를 유지하기 위해 전력을 필요로 할 수 있고, 그 중에서도, 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 및 사이리스터(thyristor) 랜덤 액세스 메모리(TRAM)를 포함한다.
비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 보유함으로써 영구 데이터를 제공할 수 있고, 특히 NAND 플래시 메모리, NOR 플래시 메모리, 및 저항성 가변 메모리 예컨대, 상변화 랜덤 액세스 메모리(PCRAM), 저항 랜덤 액세스 메모리(RRAM), 및 자기 저항 랜덤 액세스 메모리(MRAM), 예컨대 스핀 토크 전달 랜덤 액세스 메모리(STT RAM)를 포함할 수 있다.
컴퓨팅 시스템들은 종종 명령들을 검색 및 실행하고 실행된 명령들의 결과들을 적절한 위치에 저장할 수 있는 다수의 프로세싱 자원들(예를 들어, 하나 이상의 프로세서들)을 포함한다. 프로세싱 자원은 예를 들어 컴퓨팅 시스템의 동작을 위한 명령들을 실행하는데 사용될 수 있는 산술 로직 유닛(ALU) 회로부, 부동 소수점 유닛(FPU) 회로부, 및 조합 로직 락(combinatorial logic lock)과 같은 다수의 기능 유닛들을 포함할 수 있다.
컴퓨팅 시스템 내의 다수의 컴포넌트들은 실행을 위해 기능 유닛 회로부에 명령들을 제공하는 데 수반될 수 있다. 명령들은 예를 들어, 제어기 및/또는 호스트 프로세서와 같은 프로세싱 자원에 의해 실행될 수 있다. 또한, 상이한 유형들의 동작들이 기능 유닛 회로부를 통해 하나 또는 다수의 클록 사이클들에서 실행될 수 있기 때문에, 명령들 및 데이터의 중간 결과들이 또한 시퀀싱 및/또는 버퍼링될 수 있다.
도 1은 본 개시의 다수의 실시예들에 따른 프레임워크, 호스트 및 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 2는 본 개시의 다수의 실시예들에 따른 메모리 시스템 및 메인 메모리를 포함하는 호스트를 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 3은 본 개시의 실시예들에 따른 하이브리드 또는 관리 메모리 시스템을 위한 캐시 아키텍처의 개략적인 예를 도시한다.
도 4는 본 개시의 메모리 시스템의 휘발성 부분에 저장된 판독 영역 카운터를 도시하는 테이블의 개략도이다.
도 5는 본 발명의 메모리 시스템 내의 판독 캐시 논리적 블록 데이터 및 흐름을 보여주는 개략도이다.
도 6은 본 개시의 메모리 시스템 상에서 활성인 리선시 알고리즘(recency algorithm)의 개입을 예시하는 개략도이다.
도 7은 본 발명의 메모리 시스템에서 수행되는 로드 동작(load operation)의 일 예를 나타낸 흐름도이다.
도 8은 본 개시의 메모리 시스템에 의해 주기적으로 사용되는 리선시 알고리즘의 일 예를 흐름도 다이어그램에 도시한다.
도 9는 본 개시의 메모리 시스템에 의해 주기적으로 사용되는 축출 알고리즘의 일 예를 흐름도로 도시한다.
도 10은 본 개시의 메모리 시스템의 카운터에 대한 도 8의 리선시 알고리즘의 효과의 그래픽 예를 다이어그램에 도시한다.
도 11은 본 발명의 메모리 시스템에서 판독 캐시 논리적 블록 데이터 및 흐름을 보여주는 개략도이다.
도 12는 본 개시에 따른 축출 단계(eviction phase) 동안 도 11의 판독 캐시 논리적 블록 데이터 및 흐름을 도시하는 개략도이다.
도 13은 관리 저장 디바이스에 구현된 본 발명의 판독 방법을 나타내는 블록도이다.
본 개시는 하이브리드 메모리 시스템에 관련된 디바이스들 및 방법들을 포함한다. 예시적인 장치는 호스트에 결합하기 위한 하이브리드 메모리 시스템 및 하이브리드 메모리 시스템에 결합된 제어기를 포함한다. 제어기는 커맨드에 대한 감도를 할당하고, 할당된 감도에 적어도 부분적으로 기초하여 커맨드가 하이브리드 메모리 시스템으로 선택적으로 우회(divert)되게 하도록 구성될 수 있다.
TLC(Triple-Level Cell), QLC(Quadruple-Level Cell), SLC(Single-Level Cell) 및 MLC(Multi-Level Cell) NAND는 오늘날 대용량 저장 디바이스를 생산하는 데 사용된다. 불행하게도, 이들 플래시는 더 오래된 SLC 및 MLC NAND보다 더 긴 액세스 레이턴시에 의해 특징지어진다. 본 개시는, 판독 액세스들을 빠르게 하고 저장 디바이스의 시스템 성능을 증가시키기 위한 비휘발성 판독 캐시 메모리 부분을 구현하기 위해 매우 낮은 판독 레이턴시 및 높은 스루풋을 특징으로 하는 EM(emerging memory)를 포함하는 향상된 저장 솔루션을 제안한다.
본 개시는 외부 호스트 디바이스 또는 장치가 논리적 블록 어드레스(LBA)에 의해 선택된 논리적 블록들로서 알려진 블록들 또는 메모리 부분들을 알 수 있다는 의미에서 "관리된(managed)"으로 정의된 유형의 메모리 디바이스, 예를 들어 비휘발성 메모리 디바이스에 관한 것이다.
반대로, 상메인 메모리 제어기 및 연관된 펌웨어는 물리적 블록으로 알고 있는 위치에 메모리 디바이스의 물리적 공간을 구조화(organize)하도록 구성되고, 물리적 블록은 물리적 블록 어드레스(PBA)에 의해 선택된다. 물리적 블록 어드레스들(PBA)은 논리적 블록 어드레스들(LBA)과 상이할 수 있다.
즉, 메모리 디바이스의 논리적 및 물리적 구조화가 상이하고, 외부 엔티티(예를 들어, 호스트 디바이스)에 의해 사용되는 논리적 어드레스와 내부 제어기 및 그의 펌웨어에 의해 사용되는 물리적 어드레스 사이의 대응 관계를 레포팅(reporting)하는 L2P 테이블(논리적 대 물리적(Logical-to-Physical)을 의미함)이 존재한다.
개인용 컴퓨터, 랩톱, 태블릿, 패블릿, 스마트폰, 사물 인터넷 (IoT) 인에이블 디바이스 등과 같은 컴퓨팅 시스템은 컴퓨팅 시스템과 연관된 데이터 및/또는 명령을 저장하기 위한 하나 이상의 메모리 자원을 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, "IoT 인에이블 디바이스들"은 전자 기기, 소프트웨어, 센서들, 액추에이터들이 내장된 물리적 디바이스들, 차량들, 가전, 다른 디바이스 및/또는 이러한 오브젝트들이 데이터를 연결하고 교환할 수 있게 하는 네트워크 접속을 포함한다. IoT 인에이블 디바이스의 예는 다른 사이버-물리적 시스템 중에서 웨어러블 기술, 스마트 홈 디바이스, 지능형 쇼핑 시스템, 및 모니터링 디바이스를 포함한다. 또한, 컴퓨팅 시스템들은 컴퓨팅 시스템 상에서 실행되는 애플리케이션들에 대한 공통 서비스들을 제공하기 위한 운영 시스템과 같은 시스템 소프트웨어를 실행하기 위해 하나 이상의 프로세싱 자원들을 포함할 수 있다. 운영 체제의 예는 Linux®, Unix®, Windows® 등을 포함한다.
동작 동안, 컴퓨팅 시스템은 펌웨어, 컴퓨터 코드, 메타-코드(meta-code), 프레임워크 파일 등과 같은 명령을 실행하여 컴퓨팅 시스템에 기능을 제공할 수 있다. 이들 명령들의 적어도 일부는 다른 명령들보다 더 빈번하게 실행될 수 있고, 및/또는 이들 명령들의 적어도 일부는 컴퓨팅 시스템의 동작의 특정 시간들에 실행될 수 있다.
예를 들어, 컴퓨팅 시스템이 명령의 동일한 부분을 여러 번 판독하려고 시도하면, 예외(예를 들어, 폴트(fault))가 발생할 수 있다. 일부 접근법들에서, 그러한 예외들을 생성하는 명령들은 컴퓨팅 시스템이 명령들에 여러 번 액세스할 때 사용하는 시간의 양을 감소시키기 위해 미리 판독 메커니즘(readahead mechanism)(또는 다른 적절한 프리페치 메커니즘)을 통해 컴퓨팅 시스템과 연관된 캐시로 로딩될 수 있다. 예외를 경험한(또는 예외를 경험할 가능성이 있는) 프리페치 명령들은 컴퓨팅 시스템이 명령들에 여러 번 액세스하는 데 사용하는 시간의 양을 감소시킬 수 있지만, 이러한 접근법들에 이용되는 캐시들은 일반적으로 다른 메모리 자원들만큼 빠르지 않다.
일부 실시예들에서, 페이지 폴트(page fault)와 같은 예외는 사용자 공간 및/또는 커널 서비스 또는 라이브러리에 배치된 프로그램(예를 들어, 애플리케이션)이 컴퓨팅 시스템 또는 컴퓨팅 시스템의 프로세서와 연관된 내부 캐시에 저장된 명령에 액세스하려고 시도할 때 발생할 수 있고, 명령은 명령에 액세스하려는 시도가 발생할 때 컴퓨팅 시스템의 메모리(예를 들어, RAM)에 존재하지 않는다. 이러한 예외들은 명령이 저장된 저장 디바이스에 액세스하고 저장 디바이스로부터 명령과 연관된 메모리의 페이지들을 로딩함으로써 교정될 수 있다. 미리 판독 동작들이 컴퓨팅 시스템에 의해 수행되는 경우, 그러한 예외들은 저장 디바이스로부터의 명령들과 연관된 메모리의 연속적 로딩에 의해 교정될 수 있다.
다른 예로서, 물리적 메모리 자원들이 과용되면, 예를 들어, 다수의 프로세스들이 가상 메모리에서 실행될 때, 명령들은 실행 전에 물리적 메모리(예를 들어, 메모리의 물리적 페이지들)에 맵핑될 수 있다. 그러나, 명령들을 매핑하기 위한 물리적 메모리가 충분하지 않으면, 물리적 메모리 자원들은 과용될 수도 있고, 이는 컴퓨팅 시스템 성능을 저하시키고/거나 컴퓨팅 시스템에 대한 판독/기록 시간들을 증가시킬 수 있다.
또 다른 예에서, 특정 기록 패턴들은 컴퓨팅 시스템이 동작할 때 공통일 수 있다. 예를 들어, 특정 명령들은 반복적이고 및/또는 예측가능한 기록 패턴들을 나타낼 수 있다; 그러나, 일부 접근법들에서, 이들 기록 패턴들에 관한 정보는 컴퓨팅 시스템에 액세스가능하지 않을 수 있다. 그 결과, 일부 접근법들에서, 반복 및/또는 예측 가능한 판독 또는 기록 패턴들을 갖는 명령들을 반복적으로 페칭 및 기록하는데 시간 및/또는 프로세싱 자원들이 소비될 수 있다.
대조적으로, 본 명세서의 실시예들은 명령이 여러 번 액세스될 때 발생하는 예외를 다루는데 소비되는 프로세싱 자원의 양 및/또는 시간을 감소시킬 수 있고, 가상 메모리 어드레싱을 이용하는 컴퓨팅 시스템에 대한 컴퓨팅 속도 및/또는 판독/기록 시간의 증가를 제공할 수 있고, 및/또는 반복적이고 및/또는 예측가능한 판독 또는 기록 패턴들을 나타내는 명령들을 반복적으로 페치하는 컴퓨팅 시스템에 의해 소비되는 프로세싱 자원 및/또는 시간을 경감시킬 수 있다.
예를 들어, 일부 실시예들에서, 컴퓨팅 시스템과 연관된 하나 이상의 메모리 자원들은 하이브리드 저장 디바이스의 형태로 배치될 수 있다. 예를 들어, 적어도 하나의 메모리 자원은 특정 유형의 메모리 자원을 포함할 수 있는 반면, 적어도 하나의 다른 메모리 자원은 상이한 특정 유형의 메모리 자원을 포함할 수 있다. 비제한적인 예로서, 컴퓨팅 시스템과 연관된 하나의 메모리 자원은 3D Xpoint 비휘발성 메모리와 같은 비휘발성 메모리 자원일 수 있고, 제2 메모리 자원은 플래시 메모리(예를 들어, 저장 볼륨)와 같은 상이한 비휘발성 메모리 자원일 수 있다. 실시예들은 이들 특정 예들에 제한되지 않는다; 그러나, 하이브리드 저장 디바이스를 포함하는 메모리 자원들은 다른 유형들의 비휘발성 메모리 (예를 들어, ROM, PROM, EPROM, EEPROM, NVRAM 등) 및/또는 휘발성 메모리 (예를 들어, RAM, DRAM, SRAM 등) 의 조합들을 포함할 수 있다.
일부 실시예들에서, 본 명세서에서 더 상세히 설명되는 바와 같이, 특정 특성들을 나타내는 것으로 결정되는 명령들 또는 데이터는 제1 메모리 자원 또는 제2 메모리 자원으로부터 저장 및/또는 액세스될 수 있다. 예를 들어, 일부 실시예들에서, 데이터가 제1 메모리 자원으로부터 저장 및/또는 액세스되는 경우 더 낮은 레이턴시가 컴퓨팅 시스템에 의해 실현될 수 있다는 결정에 응답하여, 특정 데이터가 제1 메모리 자원으로부터 저장 및/또는 액세스될 수 있다.
본 발명의 하기의 상세한 설명에서, 본 발명의 일부를 형성하는 첨부 도면을 참조하고, 본 발명의 하나 이상의 실시예가 어떻게 실시될 수 있는지를 예시로서 도시된다. 이들 실시예들은 당업자가 본 개시의 실시예들을 실행할 수 있게 하기에 충분히 상세히 설명되고, 다른 실시예들이 이용될 수 있고, 본 개시의 범위를 벗어나지 않고 프로세스, 전기적, 및/또는 구조적 변화들이 이루어질 수 있다는 것이 이해되어야 한다.
본 명세서에서 사용된, 특히 도면에서의 참조 번호들에 관하여 "N" 등과 같은 지정자들은 그렇게 지정된 특정 피처의 수가 포함될 수 있다는 것을 나타낸다. 본 명세서에서 사용된, "다수의" 특정한 것은 그러한 것들 중 하나 이상을 지칭한다(예를 들어, 다수의 메모리 어레이들은 하나 이상의 메모리 어레이들을 지칭할 수 있음). "복수의"는 이러한 것들 중 하나 이상을 지칭하기 위한 것이다.
도면에서는 첫 번째 숫자 또는 숫자들이 도면 숫자 번호와 일치하고 나머지 숫자는 도면의 요소 또는 컴포넌트를 식별하는 넘버링을 따른다. 상이한 도면들 사이의 유사한 요소들 또는 컴포넌트들은 유사한 숫자들의 사용에 의해 식별될 수 있다. 예를 들어, 104는 도 1의 요소 "04"를 참조할 수 있고, 유사한 요소는 도 2의 204로서 참조될 수 있다. 인식될 바와 같이, 본 개시의 다수의 추가적인 실시예들을 제공하기 위해 본 명세서의 다양한 실시예들에 도시된 요소들이 추가, 교환 및/또는 제거될 수 있다. 또한, 인식될 바와 같이, 도면들에 제공된 요소들의 비율 및 상대적 스케일은 본 발명의 특정 실시예들을 예시하기 위한 것으로, 제한적인 의미로 받아들여져서는 안된다.
도 1은 본 개시의 다수의 실시예들에 따른 프레임워크(110), 호스트(102) 및 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100) 형태의 장치의 블록도이다. 본 명세서에서 사용되는, 프레임워크(110), 호스트(102), 및/또는 메모리 시스템(104)은 또한 개별적으로 "장치"로 간주될 수 있다. 일부 실시예들에서, 메모리 시스템(104)은 도 2와 관련하여 설명된 하이브리드 메모리 시스템일 수 있다.
시스템(100)은 본 명세서에서 도 2에 예시된, 하나 이상의 메모리 자원들을 포함하는 메모리 시스템(104)에 결합(예를 들어, 접속)되는 호스트(102)를 포함한다. 호스트(102)는 다양한 다른 유형의 호스트들 중에서, 개인용 랩탑 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 스마트 폰, 메모리 카드 판독기, IoT 인에이블 디바이스와 같은 호스트 시스템일 수 있다. 호스트(102)는 시스템 마더보드 및/또는 백플레인(backplane)을 포함할 수 있고, 다수의 프로세싱 자원들(예를 들어, 하나 이상의 프로세서들, 마이크로프로세서들, 또는 일부 다른 유형의 제어 회로부)을 포함할 수 있다. 시스템(100)은 분리된 집적 회로들 또는 호스트 둘 모두를 포함할 수 있다
102 및 메모리 시스템(104)은 동일한 집적 회로 상에 있을 수 있다. 시스템(100)은 예를 들어, 서버 시스템 및/또는 고성능 컴퓨팅(HPC) 시스템 및/또는 그 일부일 수 있다.
명료함을 위해, 시스템(100)은 본 개시와 특정 관련성을 갖는 피처들에 초점을 맞추도록 단순화되었다. 메모리 시스템(104)은 DRAM 어레이(예를 들어, 2T2C DRAM 어레이, 3T DRAM 어레이 등), FeRAM, SRAM 어레이, STT RAM 어레이, PCRAM 어레이, TRAM 어레이, RRAM 어레이, NAND 플래시 어레이, 3D Xpoint 메모리, NOR 플래시 어레이와 같은 하나 이상의 메모리 자원들, 및/또는 예를 들어 제어기, 3D Xpoint 메모리 부분 및 NAND 플래시 부분을 포함하는 저장 서브 시스템을 포함할 수 있다.
프레임워크(110)는 시스템(100)의 동작을 가능하게 하기 위해 호스트(102)와 연관된 프로세싱 자원에 의해 실행가능한 명령들을 포함할 수 있다. 예를 들어, 프레임워크는 하나 이상의 파일 시스템들(예를 들어, 가상 파일 시스템, 확장된 파일 시스템과 같은 파일 시스템 등)을 제공하기 위해 판독, 기록, 개방, 폐쇄 등과 같은 컴퓨팅 동작들을 제어하기 위해 호스트(102)의 프로세싱 자원에 의해 실행가능한 명령들 및/또는 블록 디바이스에 대응하는 하나 이상의 명령들을 포함할 수 있다. 일부 실시예들에서, 프레임워크(110)는 Android® 프레임워크와 같은 Linux® 프레임워크일 수 있다. 또한, 프레임워크(110)는 호스트(102) 상에서 실행되는 운영 체제가 호스트(102)에 결합된 하나 이상의 디바이스들과 통신할 수 있게 하도록 실행가능한 드라이버들(예를 들어, 하나 이상의 소프트웨어 드라이버들)을 포함할 수 있다.
일부 실시예들에서, 프레임워크(110)는 운영 체제를 나타낼 수 있다. 예를 들어, 프레임워크(110)는 그와 연관된 Linux® 커널을 갖는 운영 체제를 나타낼 수 있다. 이러한 실시예들에서, 프레임워크(110)는 "소프트웨어 저장 스택"으로 간주될 수 있다(예를 들어, 프레임워크(110)는 운영 체제의 소프트웨어 기반 커널 구현을 나타낼 수 있다).
따라서, 프레임워크(110)는 컴퓨팅 시스템(100)을 동작시키도록 실행가능한 명령들을 저장하기 위해 그와 연관된 하나 이상의 메모리 자원들을 가질 수 있고, 및/또는 프레임워크(110)는 컴퓨팅 시스템(100)의 동작을 위해 프레임워크(110)에 의해 이용되는 명령들이 저장되는 가상화된 메모리 자원들을 포함할 수 있다. 실시예들은 그렇게 제한되지 않는다; 그러나, 프레임워크(110)에 의해 이용되는 명령들 및 데이터는 본 명세서에서 더 상세히 설명되는 바와 같이 메모리 시스템(104) 또는 호스트의 메인 메모리에 저장 및/또는 액세스될 수 있다.
전술한 바와 같이, 프레임워크(110)는 특정 태스크 및/또는 동작을 수행하도록 구성된 다양한 컴포넌트를 포함할 수 있다. 예를 들어, 프레임워크(110)는 시스템 호출 컴포넌트(111), 가상 파일 시스템 컴포넌트(112), 파일 시스템 컴포넌트(113), 블록 디바이스 컴포넌트(114) 및/또는 드라이버 컴포넌트(115)를 포함할 수 있다.
시스템 호출 컴포넌트(111)는 프로세싱 자원(예를 들어, 호스트와 연관된 프로세싱 자원)에 의해 실행가능한 명령들을 포함할 수 있고/있거나, 명령들이 실행될 운영 체제의 커널로부터 하나 이상의 서비스들을 요청하기 위해 명령들이 궁극적으로 실행될 수 있는 하드웨어 자원들로 프로비저닝될 수 있다. 일부 실시예들에서, 시스템 호출 컴포넌트(111)는 애플리케이션 프로그래밍 인터페이스를 통해 액세스될 수 있다. 구현될 때, 시스템 호출 컴포넌트(111)와 연관된 명령들은 사용자 공간으로부터 커널 공간으로 컴퓨팅 시스템(100)의 제어를 전송할 수 있다. 일부 실시예들에서, 이러한 제어의 전송은 소프트웨어 인터럽트(software interrupt)에 응답하여 발생할 수 있다.
가상 파일 시스템 컴포넌트(112)는 프로세싱 자원(예를 들어, 호스트와 연관된 프로세싱 자원)에 의해 실행 가능한 명령들을 포함할 수 있고/있거나, 하드웨어 자원들로 프로비저닝될 수 있고, 하드웨어 자원들 상에서 명령들은 궁극적으로 파일 시스템 컴포넌트(113)의 상부에 추상화 계층을 제공하기 위해 실행될 수 있다. 예를 들어, 가상 파일 시스템 컴포넌트(112)는 로컬 및/또는 네트워크 저장 디바이스들에 액세스하기 위해 실행될 수 있는 명령들을 포함할 수 있다. 일부 실시예들에서, 가상 파일 시스템(112)은 로컬 및/또는 네트워크 저장 디바이스들에 투명하게(예를 들어, 클라이언트 애플리케이션 상호작용 없이) 액세스하기 위해 실행될 수 있는 명령들을 포함할 수 있다. 가상 파일 시스템 컴포넌트(112)와 연관된 명령들은 커널과 파일 시스템 컴포넌트(113) 사이의 인터페이스를 특정할 수 있다.
파일 시스템 컴포넌트(113)는 프로세싱 자원(예를 들어, 호스트와 연관된 프로세싱 자원)에 의해 실행가능한 명령을 포함할 수 있고/있거나, 컴퓨팅 시스템(100)과 연관된 데이터가 저장 및/또는 검색되는 방법을 제어하기 위해 명령들이 궁극적으로 실행될 수 있는 하드웨어 자원들로 프로비저닝될 수 있다. 예를 들어, 파일 시스템 컴포넌트(113)는 본 명세서에서 더 상세히 논의되는 바와 같이, 메모리 시스템(104)으로부터 데이터를 저장 및/또는 검색하도록 실행가능한 명령들을 포함한다.
블록 디바이스 컴포넌트(114)는 프로세싱 자원(예를 들어, 호스트와 연관된 프로세싱 자원)에 의해 실행가능한 명령들을 저장할 수 있고/있거나, 컴퓨팅 시스템(100)과 연관된 특정 메모리 위치 또는 메모리 위치들을 참조하기 위해 명령들이 궁극적으로 실행될 수 있는 하드웨어 자원들로 프로비저닝될 수 있다. 일부 실시예들에서, 블록 디바이스 컴포넌트(114)는 컴퓨팅 시스템(100)에 버퍼링된 액세스를 제공할 수 있는 하드 디스크 드라이브 및/또는 솔리드 스테이트 드라이브(Solid State Drive) SSD를 포함할 수 있다. 예를 들어, 블록 디바이스 컴포넌트(114)와 연관된 명령은 컴퓨팅 시스템(100)과 연관된 디바이스(예를 들어, 메모리 시스템(104))에 대한 액세스를 제공하도록 실행될 수 있다.
드라이버 컴포넌트(115)는 프로세싱 자원(예를 들어, 호스트와 연관된 프로세싱 자원)에 의해 실행가능한 명령들을 포함할 수 있고/있거나, 컴퓨팅 시스템(100)과 연관된 다양한 컴포넌트들에 대한 드라이버 지원을 제공하기 위해 명령들이 궁극적으로 실행될 수 있는 하드웨어 자원들로 프로비저닝될 수 있다. 예를 들어, 드라이버 컴포넌트(115)는 호스트(102), 메모리 시스템(104), 및/또는 컴퓨팅 시스템(100)과 연관될 수 있는 다른 주변 디바이스들(미도시)과 연관된 드라이버들을 로드 및/또는 업데이트하기 위한 명령들을 실행하도록 구성될 수 있다.
일부 실시예들에서, 프레임워크(110)의 다양한 컴포넌트들은 상이한 액세스 패턴들을 나타낼 수 있고, 이들 중 적어도 일부는 본 명세서에서 더 상세히 설명되는 바와 같이 예측가능한 및/또는 반복적인 거동을 나타낼 수 있다.
따라서, 본 명세서에 설명된 실시예들은, 프레임워크(110), 호스트(102), 및/또는 메모리 시스템(104)의 다양한 컴포넌트들과 연관된 다양한 컴포넌트들 및/또는 액세스 패턴들의 관리를 가능하게 하는 하이브리드 저장 시스템을 허용할 수 있다.
프레임워크(110)는 호스트(102)를 통해 메모리 시스템(104)에 결합될 수 있다. 예를 들어, 호스트(102)는 프레임워크(110)에 저장된 명령들(예를 들어, 시스템 호출 컴포넌트(111), 가상 파일 시스템 컴포넌트(112), 파일 시스템 컴포넌트(113), 블록 디바이스 컴포넌트(114) 및/또는 드라이버 컴포넌트(115)와 연관된 명령들)을 실행하도록 구성된 하나 이상의 프로세싱 자원들(예를 들어, 중앙 프로세싱 유닛 및/또는 다른 컴퓨터 프로세서들과 같은 컴퓨터 프로세서들)을 포함할 수 있다.
도 2는 본 개시의 다수의 실시예들에 따른, 메인 메모리(209)를 포함하는 호스트(202) 및 메모리 시스템(204)(예를 들어, 하이브리드 메모리 시스템)을 포함하는 컴퓨팅 시스템(200) 형태의 장치의 블록도이다. 메인 메모리(209)는 컴퓨팅 시스템(200)의 동작과 연관된 하나 이상의 데이터 페이지를 저장하는데 사용될 수 있는 RAM, DRAM, SRAM 등과 같은 휘발성 메모리일 수 있다.
실시예들은 휘발성 메모리로 제한되지 않는다; 그러나, 메인 메모리는 휘발성 메모리 이외에 또는 휘발성 메모리 대신 비휘발성 메모리를 포함할 수 있다.
도 2에 도시된 바와 같이, 하이브리드 메모리 시스템(204)은 제어기(206)에 결합된 하나 이상의 메모리 자원들(208-1,…,208-N)을 포함할 수 있다. 도 2에 도시된 바와 같이, 제어기(206)는 개별 통신 채널(210-1,…,210-N)을 통해 메모리 자원(208-1,…,208-N)에 통신 가능하게 결합된다. 통신 채널(210-1,…,210-N)은 제어기(206)와 메모리 자원(208-1,…,208-N) 사이에서 데이터 및/또는 명령이 전송되는 것을 허용할 수 있다. 다양한 실시예들에서, 제어기(206)는 프레임워크(예를 들어, 도 1에 도시된 프레임워크(110)) 및/또는 호스트(202)로부터의 명령들이 실행되게 하고, 및/또는 메모리 시스템(204)에 대한 액세스를 시퀀싱하는 것을 담당한다.
제어기(206)는 상태 머신, 시퀀서, 또는 일부 다른 유형의 제어기일 수 있고, 애플리케이션 특정 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이 등의 형태의 하드웨어 및/또는 펌웨어(예를 들어, 마이크로코드 명령들)를 포함한다. 제어기(206)는, 예를 들어, 컴퓨팅 시스템(200)의 동작을 가능하게 하기 위해 실행되는 명령들의 액세스 패턴들을 제어할 수 있다.
본 명세서에서 사용되는 바와 같이, 호스트(202), 메모리 시스템(204), 제어기(206), 및/또는 메모리 자원들(208-1,…,208-N)은 별도로 "장치"로 간주될 수도 있다.
일부 실시예들에서, 메모리 시스템(204)은 하이브리드 저장 시스템일 수 있고, 하나 이상의 메모리 자원들(208-1,…,208-N)을 포함할 수 있다.
메모리 자원들(208-1,…,208-N)은 상이한 종류의 메모리 자원들일 수 있다. 예를 들어, 메모리 자원(208-1)는 3D Xpoint 메모리 자원, 강유전체 RAM(FeRAM) 등과 같은 이머징(emerging) 비휘발성 메모리 자원일 수 있는 반면, 메모리 자원(208-N)는 NAND 메모리 자원일 수 있다. 실시예들은 이러한 특정 예들로 제한되지 않으며, 메모리 자원(208-1) 및/또는 메모리 자원(208-N)는 다른 적절한 유형들의 메모리 자원들을 포함할 수 있다.
컴퓨팅 시스템(200)의 동작 동안, 메모리 시스템(204)은 코드 페이징(code paging)을 위해 이용될 수 있다. 본 명세서에서 사용되는, "코드 페이징"은 컴퓨팅 시스템(200)이 호스트(202)의 메인 메모리(209)(예를 들어, 시스템 메모리)에 의해 사용하기 위해 메모리 시스템(204)으로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다. 일부 실시예들에서, 호스트(202)의 메인 메모리(209)에 저장될 수 있는 코드 페이징을 가능하게 하도록 실행가능한 명령들이 컴퓨팅 시스템(200)의 동작의 일부로서 실행될 수 있다.
그러나, 컴퓨팅 시스템(200)의 동작 동안, 메인 메모리(209)의 동일한 부분에 액세스하기 위한 다수의 명령들(예를 들어, 메인 메모리(209)로부터 데이터를 저장 및/또는 검색하기 위한 명령)이 실행될 수 있다. 이는, 일부 실시예들에서 프로그램이 컴퓨팅 시스템(200)의 메인 메모리(209)에 매핑되지 않은 데이터 및/또는 명령들에 액세스할 수 있기 때문에 예외(exception)를 초래할 수 있다. 이 경우, 데이터 및/또는 명령들은 메모리 시스템(204)으로부터 액세스될 수 있고, 이에 의해 데이터 및/또는 명령들이 메인 메모리(209)로부터 액세스되지 않은 결과로서 발생하는 페이지 폴트를 처리할 수 있다. 일부 접근법들에서, 이 예외는 메인 메모리(209) 이외의 메모리 위치에 판독 및/또는 기록 액세스를 제공함으로써 처리(예를 들어, 교정)될 수 있다. 예를 들어, 일부 접근법들에서, 예외를 경험한 명령들의 세트들을 프리페치하고 후속 실행을 위해 컴퓨팅 시스템(200) 및/또는 호스트(202)와 연관된 캐시에 저장하기 위해 미리 판독 메커니즘이 이용될 수 있다.
이러한 예외는 컴퓨팅 시스템(200)의 동작에서 매우 일반적일 수 있다. 예를 들어, 다중 프로세싱 컴퓨팅 환경에서, 매우 많은 양의 판독 및/또는 기록 데이터를 생성할 수 있다 - 일부 예에서는 하루에 수백 기가바이트까지. 일부 실시예들에서, 판독/기록 동작들에서 소비되는 프로세싱 자원들 및/또는 시간을 완화시키기 위해, 판독/기록 레이턴시들을 감소시키고 소비되는 프로세싱 자원들의 양을 감소시키기 위해 메모리 자원(예를 들어, 메모리 자원(208-1))에 임계 수의 액세스들을 생성하는 명령들 또는 데이터를 저장하는 것이 유익할 수 있다.
예를 들어, 일부 실시예들에서, 제어기(206)는 특정 세트의 데이터에 대한 판독 또는 기록 액세스 요청에 대응하는 예외가 발생할(또는 발생했을) 것 인지를 결정하고, 특정 세트의 데이터가 컴퓨팅 시스템(200)에 의한 후속 실행 및/또는 검색을 위해 메모리 자원(208-1)에 기록되게 하도록 구성될 수 있다. 일부 실시예들에서, 특정 세트의 데이터는 메모리 자원(208-1) 내의 파티션(partition) 또는 어드레스 범위에 저장될 수 있다. 파티션 및/또는 어드레스 범위는 특정 데이터 이외의 데이터(예를 들어, 판독 또는 기록 액세스 요청에 대응하지 않는 데이터)가 본 명세서에서 도 3a, 도 3b 및 도 3c와 관련하여 더 상세히 설명되는 바와 같이, 파티션 및/또는 LBA 블록에 저장되지 않도록 할당(예를 들어, 리저브(reserve))될 수 있다.
전술한 바와 같이, 호스트의 메인 메모리(209)는 휘발성 메모리 자원(예를 들어, RAM, DRAM, SRAM 등), 비휘발성 메모리 자원(예를 들어, HDD, 플래시 메모리, 강유전체 RAM 등), 또는 이들의 조합과 같은 물리적 메모리 자원일 수 있다. 그 결과, 메인 메모리(209)의 물리적 성질에 의해 메인 메모리(209)에 저장될 수 있는 데이터의 양이 제한될 수 있다. 예를 들어, 메인 메모리(209)는 데이터가 저장될 수 있는 한정된 양의 공간을 포함할 수 있다.
따라서, 일부 동작 조건들 하에서, 호스트(202)가 메인 메모리(209)에 너무 많은 데이터를 저장하려고 시도할 때, 메인 메모리(209)는 가득 찰 수 있고(full) 및/또는 감소된 성능을 나타낼 수 있다. 이는 메모리 공간의 양이 메인 메모리(209)에 의해 정의된 실제 물리적 메모리 공간의 양보다 더 크다는 착각을 생성하기 위해 메모리 자원들(예를 들어, 메인 메모리(209))을 추상화하기 위해 가상 메모리 기술들을 이용하는 시스템들에서 더 악화될 수 있다.
이러한 구현예들에서, 가상 어드레스 공간들은 논리적 대 물리적 어드레싱 기술들을 사용하여 (예를 들어, 호스트(202)와 연관된 메모리 관리 유닛과 같은 제어 회로부에 의해) 관리될 수 있다. 예를 들어, 가상 어드레스들은, 프로세스가 최종적으로 실행될 수 있는 메인 메모리(209)의 물리적 위치(예를 들어, 메모리의 하나 이상의 페이지들 등)에 대응할 수 있는 대응하는 물리적 어드레스들에 할당될 수 있다. 그러나, 다수의 가상 메모리 어드레스들이 동일한 물리적 메모리 어드레스에 매핑될 때, 컴퓨팅 시스템(200)은 감소된 성능을 경험할 수 있고 및/또는 중단될 수 있다(예를 들어, 프로세스들이 종료될 수 있고 및/또는 예상치 않게 동작할 수 있다).
예를 들어, 가상 메모리 기술들을 이용하는 컴퓨팅 구현예들에서, 하나 이상의 프로세스들은 메인 메모리(209)의 물리적 메모리 위치들에 매핑될 수 있는 하나 이상의 가상 메모리 위치들(예를 들어, 메모리 페이지들, 메모리 블록들 등)을 참조할 수 있다. 또한, 메인 메모리(209)가 가득 찬 경우, 가상 메모리 페이지들은 프로세스를 실행하기 위해 이용가능한 부적절한 물리적 메모리 자원들이 존재하기 때문에 호출될 수 없을 수 있다.
일부 접근법들에서, 이것은 메인 메모리(209)의 물리적 메모리 자원들을 프리(free)하게 하기 위해 메인 메모리(209) 내의 데이터의 페이지들을 스왑 공간으로 전송함으로써 완화될 수 있다. 예를 들어, 일부 접근법들에서, 운영 시스템의 커널은 어나니머스 페이지(anonymous page)들에 대해 할당된 메인 메모리(209)의 물리적 메모리 자원들을 프리하게 하기 위한 메커니즘을 포함할 수 있다. 본 명세서에서 사용되는, "어나니머스 페이지들"은 연관된 파일을 갖지 않는 메모리 페이지들이다. 예를 들어, 어나니머스 페이지는 파일에 의해 백업되지 않는 메모리의 페이지(예를 들어, 지정된 파일을 갖지 않는 메모리의 페이지)일 수 있다. 그러나, 어나니머스 페이지는 파일과 관련이 없을 수 있지만, 어나니머스 페이지는 프로세스 및/또는 프로세스 작업 세트와 관련이 있을 수 있다. 프로세스 및 프로세스 작업 세트의 비제한적인 예는 힙(heap), 스택(stack), 컨스턴트(constant) 등과 같은 데이터 구조를 포함한다.
본 명세서에서 사용되는 바와 같이, 프로세스 작업 세트는 호스트의 메인 메모리와 같은 호스트의 물리적 메모리에 저장되는 호스트의 가상 어드레스 공간 내의 데이터의 하나 이상의 페이지들을 포함한다. 예를 들어, 프로세스 작업 세트는 호스트의 메인 메모리에 표시되는 메모리 페이지(예를 들어, 최근에 호스트에서 참조한 페이지)를 포함한다.
이러한 접근법들에서, 페이지(예를 들어, 어나니머스 페이지)의 관련 컨텐츠들은 스왑 공간 및/또는 스왑 디바이스에 일시적으로 전송(예를 들어, 복사)될 수 있다. 페이지가 후속하여 참조되는 경우에, 페이지는 다시 메인 메모리(209)로 전송(예를 들어, 복사)될 수 있다. 그러나, 페이지를 메인 메모리(209)로부터 스왑 공간 또는 스왑 디바이스로 전송하고, 그런 다음 후속하여 페이지를 스왑 공간 또는 스왑 디바이스로부터 다시 메인 메모리(209)로 전송하는 것과 연관된 시간 및 에너지 소비로 인해, 특히 이러한 기술들이 반복적으로 이용되는 구현예들에서, 종래의 스와핑 기술들은 보다 덜 바람직할 수 있다. 본 명세서에서 사용되는 바와 같이, 프로세스 작업 세트는 호스트의 메인 메모리와 같은 호스트의 물리적 메모리에 저장되는 호스트의 가상 어드레스 공간 내의 데이터의 하나 이상의 페이지들을 포함한다. 예를 들어, 프로세스 작업 세트는 호스트의 메인 메모리에 표시되는 메모리 페이지(예를 들어, 최근에 호스트에서 참조한 페이지)를 포함한다.
메모리의 페이지들에 대응하는 데이터와 같은 데이터의 선택적 전송을 가능하게 하기 위해, 일부 실시예들에서, 하이브리드 메모리 디바이스(204)의 일부는 스왑 디바이스로서 동작하도록 구성될 수 있다(예를 들어, 하이브리드 메모리 시스템(204)의 일부로의 그리고 일부로부터의 메모리의 페이지들의 선택적 전송을 허용하도록 구성될 수 있다). 예를 들어, 메모리 자원(208-1)의 일부는 메모리의 페이지들이 메모리 자원(208-1)의 일부로 선택적으로 전송되도록 스왑 디바이스로서 동작하도록 구성될 수 있다. 일부 실시예들에서, 메모리 자원(208-1)의 메모리의 하나 이상의 페이지들 또는 메모리 자원(208-1)와 연관된 하나 이상의 논리적 블록 어드레스들이 스왑 동작들을 수행하기 위해 할당될 수 있다.
하나 이상의 메모리 페이지들 및/또는 하나 이상의 논리적 블록 어드레스들은 하이브리드 메모리 시스템(204)이 제조될 때(예를 들어, 하이브리드 메모리 시스템(204)이 최종 사용자에게 판매용으로 제공되기 전에) 할당될 수 있거나, 또는 하나 이상의 메모리 페이지들 및/또는 하나 이상의 논리적 블록 어드레스들은 하이브리드 메모리 시스템(204)이 초기화될 때(예를 들어, 컴퓨팅 시스템(200)이 부팅될 때) 할당될 수 있다. 실시예들은 거기에 제한되지 않는다; 그러나, 일부 실시예들에서, 하나 이상의 메모리 페이지들 및/또는 하나 이상의 논리적 블록 어드레스들은 컴퓨팅 시스템(200)의 런타임(runtime) 동안 하이브리드 메모리 시스템(204)에 의해 동적으로 할당될 수 있다.
일부 실시예들에서, 스왑 디바이스로서 할당되는 하이브리드 메모리 시스템(204)의 부분은 하이브리드 메모리 시스템(200)의 다른 부분들보다 더 낮은 액세스 시간을 갖는 하이브리드 메모리 시스템(200)의 부분일 수 있다. 예를 들어, 메모리 자원(208-1)은 3D Xpoint 메모리 자원와 같은 이머징 유형 메모리 자원이기 때문에 메모리 자원(208-1)은 메모리 자원(208-N)보다 더 낮은 액세스 시간을 가질 수 있다. 또한, 일부 실시예들에서, 스왑 디바이스로서 할당되는 하이브리드 메모리 시스템(204)의 부분은 하이브리드 메모리 시스템(200)의 다른 부분들보다 더 높은 내구성을 갖는 하이브리드 메모리 시스템(200)의 부분일 수 있다.
일부 실시예들에서, 호스트(202)에 의해 실행되는 프로세스들 및/또는 애플리케이션들은 NoSQL, SQLite, 클라우드 기반 DBMS, 또는 다른 적절한 DBMS와 같은 데이터베이스 관리 시스템(DBMS)에 의존할 수 있다. DBMS는 최종 사용자가 컴퓨팅 시스템(200)과 연관된 데이터베이스 내의 데이터를 생성, 판독, 업데이트 및/또는 삭제하는 것을 허용할 수 있다. 일부 실시예들에서, DMBS는 데이터 일관성 및/또는 시스템 내구성이 실현될 수 있게 하는 저널링 정책(journaling policy)에 따라 동작할 수 있다. DBMS는 이와 관련된 커맨드을 가질 수 있다. 일부 실시예들에서, DBMS와 연관된 커맨드들은 DBMS 커맨드에 할당된 감도에 적어도 부분적으로 기초하여 하이브리드 메모리 시스템의 일부로 선택적으로 우회(divert)될 수 있다.
저널링 시스템은 파일 시스템(예를 들어, 본 명세서에서 도 1에 도시된 파일 시스템(113))에 아직 커밋(commit)되지 않은 변경들을 추적하는 저널링 파일 시스템일 수 있다. 컴퓨팅 시스템(200)의 동작 동안, 저널링 시스템은 메모리 시스템(204) 및/또는 메인 메모리(209)를 압력(pressure) 하에 둘 수 있는 다수의 랜덤 기록을 발생시킬 수 있다. 예를 들어, 저널링 시스템은 컴퓨팅 시스템(200) 및/또는 메인 메모리(209)의 메모리를 과용할 수 있는 다수의 동기 랜덤 및 빈번한 기록을 발생시켜서 컴퓨팅 시스템(200) 및/또는 메인 메모리의 메모리를 압력 하에 둘 수 있다.
이러한 랜덤 및 빈번한 기록들은, 특히 플래시 기반 메모리 시스템들에서, 포어그라운드(foreground)에서 수행되는 유지 보수 동작들로 인해(예를 들어, 기록 커맨드 실행 동안) 긴 레이턴시(latency)들을 발생시킬 수 있다. 이러한 레이턴시들은 플래시 기반 메모리 시스템이 용량에서 또는 용량에 근접하여 동작할 때 및/또는 플래시 기반 메모리 시스템이 연장된 시간 기간 동안 동작되었을 때와 같은 특정 조건들 하에서 플래시 기반 메모리 시스템들에서 더 악화될 수 있다. 대조적으로, 하이브리드 메모리 시스템(204)은, 시간 경과에 따라 및/또는 하이브리드 메모리 시스템(204)이 용량에서 또는 용량에 근접하여 동작할 때, 플래시 기반 메모리 시스템들보다 더 낮은 레이턴시들을 발생시킬 수 있다.
플래시 기반 메모리 시스템들과 연관된 결함들을 완화하기 위해, 일부 실시예들은 제어기(206)가 DBMS에 의해 핸들링되는 커맨드 트래픽의 감도를 결정하고, 트래픽의 결정된 감도에 기초하여 특정 유형들의 커맨드 트래픽에 표시자를(indicator) 적용하는 것을 허용한다. 커맨드 트래픽의 감도는 커맨드 트래픽의 특성 예컨대, 특정 커맨드의 실행 빈도, 커맨드의 크기, 커맨드의 실행이 소비하는 자원(예를 들어, 메모리 자원 및/또는 프로세싱 자원)의 양, 커맨드가 실행될 수 있는 속도, 또는 다른 적절한 감도 특성에 기초할 수 있다. 일부 실시예들에서, 감도는 커맨드의 실행과 연관된 기록 레이턴시 또는 판독 레이턴시에 기초할 수 있다. 이 예에서, 커맨드는 커맨드의 실행과 연관된 기록 레이턴시가 임계 기록 레이턴시를 초과한다는 결정에 응답하여 하이브리드 메모리 시스템(204)으로 선택적으로 우회될 수 있다.
일단 제어기(206)가 표시자를 커맨드에 첨부하면, 커맨드는 컴퓨팅 시스템(200)의 적절한 메모리 위치로 선택적으로 우회될 수 있다. 예를 들어, 반복, 랜덤 및/또는 빈번하게 실행되는 커맨드 트래픽(예를 들어, 컴퓨팅 시스템(200)의 동작 동안 저널링 시스템에 의해 발생된 동기식 작은 빈번한 및 랜덤 기록들)은 하이브리드 메모리 디바이스(204)로 선택적으로 우회될 수 있다. 일부 실시예들에서, 커맨드 트래픽은 표시자에 기초하여 하이브리드 메모리 시스템(204)과 연관된 복수의 메모리 자원들(208-1,…,208-N) 중 특정 메모리 자원(예를 들어, 메모리 자원(208-1))으로 선택적으로 우회될 수 있다.
커맨드 트래픽의 특정 부분들을 하이브리드 메모리 시스템(204)으로 선택적으로 우회시킴으로써, 커맨드 트래픽이 선택적으로 우회되지 않는 접근법들 또는 커맨드 트래픽이 플래시 기반 메모리 시스템에 의해 핸들링되는 접근법들에 비해 더 낮은 레이턴시 및/또는 증가된 성능이 실현될 수 있다.
일부 실시예들에서, 컴퓨팅 시스템(200)의 파일 시스템(예를 들어, 도 1에 도시된 가상 파일 시스템(112), 도 1에 도시된 파일 시스템(113))은 플래시 친화적 파일 시스템(F2FS)과 같은 플래시 파일 시스템 또는 Ext4와 같은 저널링 파일 시스템일 수 있지만, 파일 시스템(들)은 이러한 특정 예들로 제한되지 않는다. 파일 시스템은 파일이 업데이트될 때 업데이트되는 특정 메타데이터 업데이트에 의해 그 구조를 유지할 수 있다. 예를 들어, 컴퓨팅 시스템(200)의 파일 시스템은 테이블, 트리, 데이터 어레이 등과 같은 데이터 구조를 포함할 수 있고, 파일 시스템의 구조를 유지하기 위해 그와 관련된 파일이 업데이트될 때 업데이트될 수 있다.
파일 시스템이 업데이트될 때(예를 들어, 파일 업데이트에 응답하여 메타데이터 업데이트들이 파일 시스템에 적용될 때), 업데이트들은 작은 랜덤 기록들에서 수행된다. 전술한 바와 같이, 이러한 유형의 작은 랜덤 기록은 메모리 시스템(204) 및/또는 메인 메모리(209)를 압력 하에 둘 수 있다. 이러한 랜덤 기록은 특히, 포그라운드에서 수행되는 유지 보수 동작으로 인해(예를 들어, 기록 커맨드 실행 동안) 플래시 기반 메모리 시스템에서 긴 레이턴시를 발생시킬 수 있다. 이러한 레이턴시들은 플래시 기반 메모리 시스템이 용량에서 또는 용량에 근접하여 동작할 때 및/또는 플래시 기반 메모리 시스템이 연장된 기간 동안 동작되었을 때와 같은 특정 조건들 하에서 플래시 기반 메모리 시스템들에서 더 악화될 수 있다. 대조적으로, 하이브리드 메모리 시스템(204)은, 시간 경과에 따라 및/또는 하이브리드 메모리 시스템(204)이 용량에서 또는 용량에 근접하여 동작할 때, 플래시 기반 메모리 시스템들보다 더 낮은 레이턴시들을 발생시킬 수 있다.
예를 들어, 일부 실시예들에서, 파일 시스템 업데이트들(예를 들어, 파일 시스템 메타데이터 업데이트들)과 연관된 커맨드 트래픽은 컴퓨팅 시스템(200)의 적절한 메모리 위치로 선택적으로 우회될 수 있다. 일부 실시예들에서, 컴퓨팅 시스템(200)의 적절한 메모리 위치는 메모리 자원(208-1)와 같은 하이브리드 메모리 시스템(204)의 일부일 수 있다. 일부 실시예들에서, 제어기(206)는 파일 시스템 업데이트들이 하이브리드 메모리 시스템(204)의 일부로 선택적으로 우회되게 하도록 구성될 수 있다.
파일 시스템 기록들을 하이브리드 메모리 시스템(204)으로 선택적으로 우회시킴으로써, 파일 시스템 기록들이 선택적으로 우회되지 않는 접근법들 또는 파일 시스템 기록들이 플래시 기반 메모리 시스템에 의해 처리되는 접근법들에 비해 더 낮은 레이턴시 및/또는 증가된 성능이 실현될 수 있다.
컴퓨팅 시스템(200)의 동작 동안, 특정 파일 시스템들(예를 들어, 도 1에 도시된 가상 파일 시스템(112), 도 1에 도시된 파일 시스템(113))은 반복적이고 및/또는 예측가능한 기록 패턴들을 나타낼 수 있다. 예를 들어, F2FS 체크포인트들 및/또는 저널링 시스템은 예측 가능한 방식으로 특정 커맨드들 및/또는 데이터를 반복적으로 기록할 수 있다. 이들 커맨드 및/또는 데이터는 전술한 바와 같이, 작은 랜덤 기록로 기록될 수 있다.
전술한 바와 같이, 이러한 작은 랜덤 기록은 특히, 포그라운드에서 수행되는 유지 보수 동작들로 인해(예를 들어, 기록 커맨드 실행 동안) 플래시 기반 메모리 시스템들에서 긴 레이턴시들을 발생시킬 수 있다. 이러한 레이턴시들은 플래시 기반 메모리 시스템이 용량에서 또는 용량에 근접하여 동작할 때 및/또는 플래시 기반 메모리 시스템이 연장된 기간 동안 동작되었을 때와 같은 특정 조건들 하에서 플래시 기반 메모리 시스템들에서 더 악화될 수 있다. 대조적으로, 하이브리드 메모리 시스템(204)은, 시간 경과에 따라 및/또는 하이브리드 메모리 시스템(204)이 용량에서 또는 용량에 근접하여 동작할 때, 플래시 기반 메모리 시스템들보다 더 낮은 레이턴시들을 발생시킬 수 있다.
플래시 기반 메모리 시스템들과 연관된 결함들을 완화하기 위해, 일부 실시예들은 하이브리드 메모리 시스템(204)의 일부분에 대한 작은 랜덤 기록들의 선택적 우회를 허용한다. 예를 들어, 컴퓨팅 시스템(200)(또는 그 부분들)은 기록 동작(예를 들어, 작은, 랜덤 기록들)의 소스를 결정하도록 구성될 수 있다. 일부 실시예들에서, 컴퓨팅 시스템(200)과 연관된 파일 시스템 및/또는 컴퓨팅 시스템(200)과 연관된 드라이버들은 메타데이터 기록들 및/또는 데이터 구조들에 힌트(예를 들어, 표시자에 대한)를 연관시키도록 구성될 수 있다. 힌트(hint)가 기록 커맨드로 전송될 수 있고, 힌트를 포함하는 기록 커맨드는 하이브리드 메모리 시스템(204)으로 전송될 수 있다. 일부 실시예들에서, 기록 커맨드 및 그와 연관된 힌트가 하이브리드 메모리 시스템(204)으로 전송된 후에, 제어기(206)는 액세스 시간들을 감소시키고/시키거나 메인 메모리(209)로의 내구성을 회피하기 위해 하이브리드 메모리 시스템(204)으로 이러한 파일 시스템 기록들(또는 메타데이터 기록들)을 우회시키도록 추가로 구성될 수 있고, 이에 의해 컴퓨팅 시스템(200)의 성능을 증가시킨다.
일부 실시예들에서, 제어기(206)는 파일 시스템 기록들을 그에 우회되는 커맨드 트래픽을 핸들링하기에 가장 적합한 하이브리드 메모리 시스템(204)의 부분들로 선택적으로 우회하도록 구성될 수 있다. 예를 들어, 특정 파일 시스템은 특정 유형의 메모리에 의해 가장 효율적으로 처리될 수 있는 특정 커맨드 트래픽 패턴을 나타낼 수 있다. 비제한적인 예로서, F2FS에서, LFS(Log-structured File System) 기록들은 결정가능한 액세스 패턴으로 실행될 수 있고, 데이터는 NAND 메모리에 잘 적합할 수 있는 매핑되지 않은 LBA들 상에 순차적으로 기록된다. 반면에, SSR(Slack Space Recycle) 기록은 결정가능한 액세스 패턴으로 실행될 수 있고, 데이터는 3D Xpoint 메모리와 같은 낮은 레이턴시 메모리에 잘 적합할 수 있는 매핑된 LBA들 상에 랜덤하게 기록된다.
따라서, 일부 실시예들에서, 제어기(206)는 결정가능한 기록 패턴들과 연관된 커맨드 트래픽을 특정 유형의 파일 시스템 기록들을 핸들링하기에 가장 적합한 하이브리드 메모리 시스템(204)의 일부로 선택적으로 우회할 수 있다. 예를 들어, 제어기(206)는 본 명세서에서 설명된 바와 같이, LFS 기록들을 NAND 메모리일 수 있는 메모리 자원(208-N)으로 우회하도록 구성될 수 있고, 및/또는 제어기(206)는 SSR 기록들을 메모리 자원(208-1)으로 우회하도록 구성될 수 있고, 메모리 자원은 낮은 레이턴시 이머징 메모리 자원일 수 있다.
일부 접근법들에서는, 액세스 시맨틱(access semantic)에 대응하는 정보를 컴퓨팅 시스템(200)과 연관된 메모리 디바이스로 송신하는 것이 가능하지 않다. 예를 들어, 일부 접근법들에서는, 기록 액세스 요청이 사용자 데이터와 연관되는지 또는 파일 시스템 메타데이터와 연관되는지 여부에 대응하는 정보가 컴퓨팅 시스템(200)과 연관된 메모리 디바이스로 송신되지 않는다. 따라서, 일부 접근법들에서는, 특정 LBA 또는 LBA 범위가 페이징 프로세스(paging process)들이 실행되는 저장 위치에 저장된다면, 특정 LBA 또는 LBA 범위가 판독 또는 기록 커맨드들에 의해 빈번하게 액세스될 것인지 여부에 대한 어떠한 지식도 컴퓨팅 시스템(200)과 연관된 메모리 디바이스에 제공되지 않을 수 있다.
대조적으로, 본 명세서의 실시예들은 제어기(206)가 기록 액세스 요청이 예를 들어, 사용자 데이터 또는 파일 시스템 메타데이터와 연관되는지 여부를 결정하고 그리고/또는 특정 LBA 또는 LBA 범위가 판독 또는 기록 커맨드들에 의해 빈번하게 액세스되는지 여부를 결정하고 특정 속성들을 갖는 판독 또는 기록 커맨드들을 하이브리드 메모리 시스템(204)으로 선택적으로 우회시키는 것을 허용한다.
도 3은 제어기(306) 및 몇몇 비휘발성 메모리 부분들(308-1,..., 308-N), 예를 들어 NAND 메모리 부분들, 일반적으로 모바일 저장의 경우에 4/8을 포함하는 저장 디바이스(304)의 개략도를 도시한다. 이들 메모리 부분들은 도 2에 도시된 메모리 자원들(208-1,…,208-N)과 동등하다고 간주될 수 있다.
제어기(306)는 임베디드 휘발성 메모리 부분(315), 예를 들어 SRAM 메모리 부분을 포함한다.
앞서 언급된 바와 같이, 본 개시의 저장 디바이스(304)는 통신 채널(312)을 통해 저장 디바이스(304)의 제어기(306)와 통신하는 호스트 디바이스 또는 제어기(302)와 연관된다. 호스트 제어기(302)와 저장 디바이스(304)의 조합은 관리 또는 하이브리드 메모리 디바이스를 핸들링하기 위한 디바이스(300)의 다음 라인에서 고려될 것이다.
저장 디바이스(304)는 적어도 더 빠른 메모리 부분(310)을 추가로 포함한다. 용어 더 빠른(faster)은 앞서 언급된 비-휘발성 메모리 부분들(308-1,..., 308-N)과 비교할 때 더 낮은 레이턴시 및 더 높은 스루풋을 갖는 메모리 부분을 의도한다. 도 3을 참조하여 개시된 이 실시예에서, 더 빠른 메모리 부분은 여전히 비휘발성 메모리이지만, 예를 들어 3D 크로스 포인트 메모리 부분 또는 대안으로서 SLC 및 MLC NAND 메모리 부분들과 같이 비트 변경될 수 있는 장점을 갖는다.
일반적으로 말하면, TLC 및 QLC NAND 플래시 메모리 부분들은 비휘발성 메모리 부분들(308-1,..., 308-N)을 위한 대용량 저장 디바이스를 구현하는데 사용된다. 불행하게도, 이들 TLC 및 QLC NAND 플래시 메모리 부분들(308-1,..., 308-N)은 SLC 및 MLC NAND보다 상대적으로 더 높은 액세스 레이턴시에 의해 특징지어진다. 본 출원인은 NAND 메모리 부분을 더 낮은 레이턴시 및 더 높은 스루풋을 갖는 이머징 기술 예를 들어, 이전에 언급된 3DXP 메모리와 조합하여 시스템 성능이 상당히 증가될 수 있다는 것을 깨달았다.
본 개시의 일 실시예에서, 더 빠른 메모리 부분(310)은 NAND로부터 데이터를 로드하고 캐시로부터 데이터를 축출(evict)하기 위해 판독 액세스 및 관련 알고리즘을 위한 캐시 메모리로서 사용된다.
본 발명의 적어도 하나의 실시예는 저장 디바이스를 포함하는 하이브리드 메모리 디바이스를 위한 판독 캐시 아키텍처에 관한 것으로, 저장 디바이스는,
복수의 비휘발성 메모리 부분들;
비휘발성 메모리 부분들에 방향성을 가지고(by-directionally) 연결된 저장 디바이스의 제어기;
상기 비휘발성 메모리 부분들에 대해 더 낮은 레이턴시 및 더 높은 스루풋을 갖고 상기 제어기에 방향성을 가지고 연결되는 적어도 더 빠른(faster) 메모리 부분;을 포함하고,
상기 더 빠른 메모리 부분은 상기 복수의 비휘발성 메모리 부분들에 대한 캐시 메모리 부분이다.
본 발명의 추가의 실시예들은 장치에 관한 것으로, 상기 장치는,
- 호스트 디바이스;
- 제어기를 갖는 저장 디바이스;
- 호스트 디바이스와 저장 디바이스의 제어기 사이의 통신 채널을 포함하고,
- 저장 디바이스는,
- 복수의 비휘발성 메모리 부분들;
- 비휘발성 메모리 부분들에 방향성을 가지고 연결된 저장 디바이스의 제어기;
- 상기 비휘발성 메모리 부분들에 대해 더 낮은 레이턴시 및 더 높은 스루풋을 갖고 상기 제어기에 방향성을 가지고 연결되는 적어도 더 빠른 메모리 부분;을 포함하고,
- 상기 더 빠른 메모리 부분은 상기 복수의 비휘발성 메모리 부분들에 대한 캐시 메모리 부분이다.
본 개시의 다른 실시예는 메모리 제어기에 의해 관리되는 복수의 비휘발성 메모리 부분들을 포함하는 저장 디바이스들에서 판독 단계를 개선하기 위한 방법에 관한 것으로, 상기 방법은,
- 상기 비휘발성 메모리 부분들에 대해 더 낮은 레이턴시 및 더 높은 스루풋을 갖고, 상기 제어기에 방향성을 가지고 연결되는 적어도 더 빠른 메모리 부분을 제공하는 단계;
- 상기 복수의 비휘발성 메모리 부분들 중 더 빈번하게 판독되는 논리적 블록 어드레스들을 포함하는 메모리 영역들의 컨텐츠를 복사하기 위한 판독 캐시 메모리로서 상기 더 빠른 메모리 부분을 사용하는 단계를 포함하다.
본 개시의 또 다른 실시예는 복수의 비휘발성 메모리 부분들 및 메모리 제어기를 포함하는 관리되는 저장 디바이스의 판독 단계를 가속화하기 위한 방법에 관한 것으로, 상기 방법은,
- 상기 복수의 비휘발성 메모리 부분들 중 하나에서 메모리 영역의 논리적 블록 어드레스를 판독하는 단계;
- 해당 메모리 영역의 논리적 블록 어드레스에 대한 임의의 판독 액세스에서 각각의 메모리 영역에 연관된 카운터를 업데이트하는 단계;
- 상기 카운터가 세트 임계치(set threshold)를 초과할 때 더 빈번하게 액세스되는 메모리 영역들 컨텐츠를 비휘발성 판독 캐시 메모리 부분에 복사하는 단계를 포함한다.
본 개시는 NAND 기반 저장 디바이스가 동일한 페이지들, 상이한 평면들 또는 다이들로부터 충분한 데이터가 판독되는 경우 양호한 판독 성능에 도달할 수 있다는 고려에 기초한다. 큰 청크 크기로 수행된 순차 판독 액세스는 NAND 큰 페이지 크기를 활용할 수 있다. 한편, 랜덤 판독 성능을 증가시키기 위해, 긴 커맨드 큐들이 사용되어, 상이한 NAND 평면들 또는 다이들로부터 병렬로 데이터를 판독할 수 있게 한다. 불행히도, 모바일 워크로드에서는 커맨드 큐에 단지 소수(fow)의 커맨드가 있는 것이 일반적이므로, NAND 병렬 처리를 이용할 수 없고 이는 낮은 성능을 초래한다.
본 개시는 하이브리드 저장 디바이스의 캐시 부분으로서 EM(emerging memory)의 사용에 기초하여 새로운 판독 캐시 아키텍처를 제안한다. 이머징 메모리 판독 레이턴시는 NAND 메모리들보다 매우 낮기 때문에, 이 기술은 낮은 큐 깊이의 경우에도 매우 높은 랜덤 판독 성능을 제공할 수 있다. 캐시 적중률(hit rate)이 높고 관리 오버헤드가 낮은 경우 판독 캐시는 시스템 성능을 향상시킨다.
다른 말로, NAND 레이턴시는 제1 메모리 액세스에서만 감내하는 반면, 후속 액세스들은 더 빠른 캐시 비휘발성 메모리 부분의 더 낮은 레이턴시로 생각됨을 가능하게 된다. 그러나, 캐시 충전(filling) 및 클리닝(cleaning)을 관리하는 알고리즘은 판독 액세스의 더 나은 최적화에 관련된다.
또한, 본 개시의 실시예들에 따르면, 판독 커맨드들은 어느 LBA가 판독 캐시 메모리 부분에 복사되어야 하고, 어느 LBA가 그로부터 제거되어야 하는지를 발견하기 위해 모니터링된다. 이 모니터링 단계는 저장 디바이스들(304)의 제어기들(306) 내의 고가의 자원인 제한된 양의 SRAM 부분(315)을 사용하여 수행된다.
이하의 설명의 부분은 호스트 제어기(302)에 의해 저장 디바이스(304)를 향해 발행되는 판독 명령들의 청크(chunk) 크기에 주의를 집중시킬 것이다. 청크 크기는 저장 디바이스에 대한 판독 액세스가 있을 때 언제든지 교환될 수 있는 최소 수의 바이트이다. 가장 확산된 청크 크기 중 하나는 4kbyte이고; 그러나, 출원인에 의해 수행된 연구들은 더 큰 청크 크기를 갖는 모바일 애플리케이션들에서 호스트 제어기에 의해 저장 디바이스와 교환되는 커맨드들의 가장 큰 퍼센트를 커버할 수 있다는 것을 입증하였다.
이제, 도 3의 예로 돌아가서, 본 개시의 디바이스는 3D 크로스 포인트 메모리 부분과 같은 이머징 메모리로 구성된 비휘발성 메모리 부분인 판독 캐시 메모리 부분을 갖는 저장 디바이스 아키텍처를 포함한다는 것을 이해하였다. 이러한 구성은, 아래에서 보는 바와 같이, 판독 성능의 상당한 부스트를 얻을 수 있다.
모바일 워크로드에서, 대부분의 판독 트래픽이 큰 청크 크기를 갖는 커맨드로 인한 경우에도, 대부분의 판독 커맨드는 작은 청크 크기, 예를 들어 언급된 4Kbyte 크기를 갖는다.
3DXP 메모리 부분과 같은 낮은 판독 레이턴시를 갖는 이머징 메모리 기술은 동시에 판독되는 물리적 블록의 수와 독립적으로 일관된 판독 성능을 제공한다. 반대로, 충분한 PBA가 동일한 페이지들, 상이한 평면들 또는 다이들로부터 판독되는 경우, NAND 메모리 부분이 더 빠르다.
예를 들어, 단일 4KB 판독은 3DXP에서 훨씬 더 빠른 반면, 256KB 판독은 NAND에서 더 빠를 수 있다. 따라서, 짧은 청크로 빈번하게 판독되는 LBA들은 판독 캐시에 복사될 후보들이다.
제안된 아키텍처에서, 판독 커맨드는 어느 LBA가 판독 캐시에 복사되어야 하고 어느 LBA가 그로부터 제거되어야 하는지를 발견하기 위해 모니터링된다.
판독 캐시 메모리 부분(310)을 포함하는 저장 디바이스(304)의 제어기(306)는 판독 캐시 관리를 담당하는 상주 알고리즘으로 구성된다. 이 판독 관리 알고리즘은, 비휘발성 메모리 부분들(308i)로부터 작은 청크들로 그리고 빈번하게 판독되는 논리적 블록들의 데이터를 더 빠른 메모리 부분(310)에 복사하고, 이들이 더 이상 사용되지 않을 때 동일한 메모리 부분(310)으로부터 LBA들을 축출한다.
어느 LBA가 더 빠른 메모리 부분(310)에 유지되어야 하는지를 결정하기 위해, 전체 저장 디바이스 논리 용량은 소위 LBA 영역들로 분할된다. 즉, 각각의 LBA에 대한 판독 및/또는 기록 액세스의 기록을 유지하는 대신에, 본 개시는 특정 크기를 갖는 LBA 영역에 대해 수행된 액세스의 기록을 유지하는 것을 제안한다.
예를 들어, LBA 영역은 32 MB의 크기를 가질 수 있고, 확장 메모리 페이지로서 간주될 수 있다.
각각의 LBA 영역은 판독 액세스 카운터 및/또는 기록 액세스 카운터를 갖는다: ReadRegionCnt[i] 및/또는 WriteRegionCnt[i]. 이러한 LAB 영역 액세스 카운터들은 제어기(306) 내의 임베디드 휘발성 메모리 부분(315)에 저장된다. 휘발성 메모리 부분(315)은 SRAM 메모리이다.
도 4는 판독 영역 카운터들의 추가 열(430)과 함께 LBA 영역들의 열(420)에 연관되는 논리적 블록 어드레스들을 열(410)에 포함하는 휘발성 메모리(315)에 저장된 데이터를 나타내는 개략적 테이블(400)을 도시한다. 레포팅된 예는 512 GB 저장 디바이스를 기반으로 한다. 기록 영역 카운터에 대해 유사한 테이블이 구현될 수 있다.
보다 구체적으로, 본 개시의 메모리 구조 및 방법은 기록 영역 카운터들 뿐만 아니라 기록 캐시 메모리 부분을 제공하는 메모리 디바이스의 기록 단계에 적응될 수 있다. 이 컨텐츠에서, 캐시 메모리 부분(310)은 휘발성 메모리 부분(315)에 저장된 LAB 액세스 카운터들 또는 기록 영역 카운터들과 통신하는 기록 캐시 메모리 부분으로서 구조화되거나 구성될 수 있다.
이하의 본 개시에서, 본 개시의 예시가 주로 판독 단계에 초점을 맞추더라도, 그것이 판독 또는 기록 동작들에 사용될 수 있다는 것을 의도하는 캐시 메모리 부분을 참조할 것이다.
추가 예로서, 판독 카운터 크기가 1바이트이면, SRAM(315)의 16Kbyte만이 요구된다.
열(410)의 최상위 LBA 비트는 LBA가 속하는 LBA 영역을 식별한다: 예를 들어, 32 Mbyte LBA 영역 크기에 대한 LBA[26:13]이다.
열(430)의 판독 영역 카운터들은 대응하는 LBA 중 하나의 각각의 판독에서 증가된다. 옵션으로서, 판독 커맨드들이 지정된 임계치보다 낮은 청크 크기를 가질 때에만 카운터들이 증분될 수 있다. 카운터는 리선시 알고리즘(recency algorithm)에 의해 주기적으로 감소하며, 그렇지 않으면 모든 카운터가 결국 포화된다.
도 5는 판독 캐시 논리 데이터와 블록 흐름을 보여주는 개략도이다. 510으로 표시된 블록은 도 3의 더 빠른 메모리 부분(310)에 대응하는 반면, 메모리 컴포넌트(508i)는 숫자들(3081, ..., 308N)을 갖는 도 3에 도시된 일반적인 NAND 메모리 부분들 중 하나를 나타낸다.
도면은 화살표들에 의해 표현되는 데이터 흐름을 도시하며, 여기서 LBA 영역은 카운터가 임계치(LoadTh)보다 크거나 같으면 캐시가능하다(그 컨텐츠가 바람직하게는 더 빠른 메모리 부분(510)에 저장된다는 것을 의미함)된다. 논리적 블록들은 다음의 양쪽 조건들이 발생할 때 NAND 부분(508i)으로부터 판독 캐시 메모리 부분(510)으로 복사된다:
Figure pct00001
이것들은 정의된 임계치보다 작거나 같은 전송 길이를 갖는 커맨드로 판독한다;
Figure pct00002
이것들은 캐시 가능한 LBA 영역에 속한다.
이들 조건들이 모두 충족되면, 커맨드의 모든 LBA들이 비휘발성 더 빠른 메모리 부분(510)에 복사된다. 이 메모리 부분(510)은 또한 판독 캐시뿐만 아니라 기록 캐시로서 구성될 수 있다.
호스트 제어기(302)는, 예를 들어, 이들이 빈번하게 판독되기 때문에 또는 이들이 애플리케이션들에 대해 중요하기 때문에 더 빠른 메모리 부분(510)에 복사되어야 하는 LBA 범위들을 나타내는 힌트들을 제공할 수 있다는 것에 유의해야 한다.
예시로서 그리고 더 나은 이해를 위해, 우리는 호스트 제어기(302) 상에 설치된 안드로이드 동작 시스템이 빈번하게 액세스되는 운영 체제의 라이브러리를 시스템 파티션 내에 포함하는 판독 전용 메모리 부분에 액세스해야 하는 실제 상황을 고려할 수 있다. 이러한 경우에, 호스트 제어기(302)는 가장 빈번하게 액세스되는 라이브러리들만을 캐시 더 빠른 메모리 부분(510)에 저장하기 위한 힌트들을 제공할 수 있다.
따라서, 이들 LBA는 호스트 요청 시에 기록되거나 로드될 때 캐시 더 빠른 메모리 부분(510)에 복사될 것이다. 안드로이드 시스템 파티션은 종종 짧은 청크로 판독되기 때문에 피닝(pin)될 수 있는 LBA 범위의 예이다; 그러나 다른 예는 출원인의 권리를 제한하지 않고 행해질 수 있다.
즉, LBA 영역의 LBA는 짧은 청크로 판독될 경우에만 메모리 부분(510)에 복사될 것이다; 이는, 단지 한번 판독 단계에 수반되었으나 동일한 영역에 포함된 큰 수의 LBA를 갖는 영역에 대한 빈번한 LBA 영역의 그룹 내의 삽입을 피하기 위해 수행된다.
캐시 더 빠른 메모리 부분(510)은 빈번하게 판독되는 LBA를 저장하기 위해 캐시 더 빠른 메모리 부분(510) 내에 항상 충분한 공간이 있다는 것을 보장하는 것을 담당하는 알고리즘에 의해 관리된다.
메모리 부분(510) 내의 프리 블록들의 수가 미리 결정된 임계치보다 낮으면, 일부 LBA는 그러한 메모리 부분(510)으로부터 폐기된다. 이 동작은 축출(eviction)라고 불리며 디바이스 유휴 시간 동안 실행된다. 캐시된 메모리 부분은 카운터가 설정된 임계치보다 낮은 경우 "축출 가능(evictable)"으로 간주될 수 있다.
도 6은 리선시 알고리즘 및 최근 이벤트들의 개입 및 축출 가능한 LBA 영역들 목록 업데이트를 예시하는 개략도이다. 판독 영역 카운터(630)는 도 4에 도시된 판독 영역 카운터(430)와 동일하지만, 목록(list)(620)은 도 4에 도시된 목록(420)에 대응하지만 소위 축출 가능 영역을 포함한다.
도 6의 좌측에는 빈번하게 판독되는 그 중앙 부분 LBA 영역 m 또는 j를 포함하는 목록(630)이 도시되어 있다. 따라서, 이들 2개의 영역은 캐시 메모리 부분(510)에 전송될 최상의 후보이다. 모든 LBA 영역 카운터는 리선시 알고리즘에 의해 주기적으로 감소된다.
리선시 알고리즘은 다음 도 9에 나와 있으며 다음 몇 가지 상황에서 활성화된다 : 많은 판독 영역 카운터가 포화 상태에 가깝거나 판독 캐시가 가득 찼을 때 그리고 축출 가능 목록에 요소가 단지 소수의 엘리먼트가 있는 경우. 리선시 알고리즘의 개입은 시스템을 워크로드에 적응되게 하고 종래 기술의 솔루션과 비교할 때 실제 개선을 제공한다.
도면 6의 오른쪽에 주목하면, 이전에 캐싱이 가능했던 LBA 영역 m과 j가 각각의 특성을 변경했음을 알 수 있다. 리선시 이벤트 후에, 판독 영역 카운터(m)는 로드 임계치(LoadTh)보다 높게 유지되는 반면, LBA 영역(j)의 카운터는 축출 임계치(EvictionTh)보다 낮은 값에 유지된다.
이 LBAregion j는 축출 가능하게 되고, 그 인덱스 j는 축출 가능한 LBA 영역 목록(620)에 첨부된다.
축출 동작 동안, 판독 캐시 관리 알고리즘은 축출가능한 판독 영역 목록(620)로부터 "축출가능한" 영역을 검색하고, 판독 캐시 메모리 부분(510)으로부터 해당 영역의 모든 LBA를 폐기한다는 것에 유의해야 한다.
판독 캐시(510)에 존재하는 논리적 블록들은 (판독 캐시(510) 크기가 전체 저장 디바이스 용량에 기여하지 않기 때문에) NAND(508i)에 백업 복사본을 갖고, 축출 동작 동안 데이터 복사본은 없고, L2P 테이블만이 업데이트된다는 것을 추가로 유의해야 한다.
도 7은 캐시 메모리 부분(510)에 대해 수행되는 로드 동작의 예를 흐름도(700)에 도시한다. 제1 테스팅 단계(710)에서, 호스트 제어기(302) 판독 커맨드가 TransferLengthTh와 같거나 낮은 전송 길이(transfer length)를 갖는지 체크된다. 응답이 긍정이면, 단계(720)에서, 연관된 LBA 영역의 카운터는 전송 길이와 동일한 양만큼 증분된다. 단계(730)에서 추가 테스트 단계가 수행되어 카운터 값이 로드 임계치(LoadTh)보다 크거나 같은지 체크한다.
응답이 긍정이면, 대응하는 LBA 영역은 캐싱가능하고, LBA가 판독 캐시 메모리 부분(510)에 이미 존재하는지를 평가하기 위해 단계(740)에서 추가 체크가 수행된다.
이 추가 체크가 부정이면, 단계(750)에서, 판독 커맨드의 모든 LBA는, 아직 존재하지 않으면, NAND로부터 검색된 후에, 판독 캐시 메모리 부분(510)에 복사된다.
판독 영역 카운터는 커맨드가 TransferLengthTh와 같거나 낮은 전송 길이를 갖는 경우에만 단계(720)에서 증분된다. 이는 높은 전송 길이를 갖는 소수의 판독 커맨드들 직후에 LBA 영역들이 캐시가능 영역들로 촉진되는 위험을 감소시킨다.
마지막으로, 판독 캐시 메모리 부분(510) 내의 프리 블록들의 수가 임계치 ReadCacheAvailBlockTh보다 작으면, 단계(770)에서, 축출 동작은 판독 캐시 메모리 부분(510)으로부터 일부 LBA들을 폐기하도록 스케줄링된다.
도 8은 모든 판독 영역 카운터들을 감소시키는데 주기적으로 사용되는, 리선시 알고리즘의 예를 흐름도 다이어그램(800)에 도시한다.
도 8의 이 예에서, 각 카운터 값은 최근 동작 동안 절반으로 줄어든다. 제1 단계(810)에서, 판독 영역 카운터의 위치를 나타내는 k 파라미터는 "0"으로 셋팅된다. 그런 다음, 단계(820)에서, k번째 카운터의 값이 절반으로 감소한다.
테스트 단계(830)는, 리선시 동작 동안, 캐싱된 LBA 영역과 연관된 카운터가 임계치 EvictionTh 아래로 떨어지는지를 체크하기 위해 수행된다. 응답이 긍정이고 LBA영역에 속하는 적어도 하나의 LBA가 판독 캐시 메모리 부분(510)에 로드되면, 그 영역은 축출가능하게 된다.
단계(840)에서, 축출 가능 영역은 축출 가능 LBA 영역 목록(620)에 첨부되고, 해당 목록은 판독 캐시 메모리 부분(510)으로부터 LBA가 제거될 영역을 선택하기 위해 축출 동작 동안 스캐닝될 것이다.
단계(850)에서, 파라미터 k의 값이 증분되고, 단계(860)에서, 값 k가 LBA영역들의 총 수와 동일한지 여부를 체크하기 위해 테스트가 수행되며, 그렇지 않으면 프로그램은 단계(820)로 복귀한다.
도 9는 판독 영역 카운터 관리 알고리즘의 예를 흐름도 다이어그램(900)에 도시한다. 이 알고리즘은 전송 길이가 임계치보다 작거나 같은 경우 판독 커맨드의 처리에서 개시된다.
알고리즘은 단계(910)에서 LBA가 속하는 LBA 영역을 식별하는 최상위(most significative) LBA 비트에 의해 주어진 인덱스의 식별로 시작한다: 예를 들어 LBA[26:13]이다.
카운터가 최대 값(MaxReadCntValue)보다 낮으면, 카운터는 판독 커맨드 Transfer Length와 동일한 양만큼 증분된다(단계 915 및 단계 920 참조). 카운터는 결국 단계 930에서 값 MaxReadCntValue로 포화된다.
이러한 테스트 단계(930)에 대한 응답이 부정이면, 프로그램은 단계(980)를 통해 테스트 단계(985)로 진행하며, 여기서 판독 영역 카운터의 인덱스는 업데이트된다.
반대로, 테스트 단계(930)에 대한 응답이 긍정이면, 포화 판독 영역 카운터의 수는 단계(960)에서, 판독 영역 카운터 인덱스를 적응시키는 단계(940 및 950) 이후에, 이 수가 정의된 임계치(SatCntTh)보다 같거나 더 커지는지를 체크하기 위해 모니터링된다. 단계(970)에서, 리선시 이벤트는 모든 판독 영역 카운터들을 감분시키도록 스케줄링된다.
단계(985)에서, 알고리즘이 종료되지 않으면, 판독 캐시가 거의 가득 찼는지가 체크된다. 그렇지 않고, 단계(990)에 의해 체크된 바와 같이, 축출 가능 판독 영역 목록(620)에 목록된 축출 가능 LBA 영역의 수가 임계 MinEvictListTh보다 낮으면, 단계(970)를 통해 리선시 이벤트가 스케줄링된다.
축출 단계는 예를 들어 유휴 시간 동안 실행되고 판독 캐시가 거의 가득 찰 때 트리거되는 백그라운드 작업이다.
그 실행 동안, 축출 가능한 판독 영역 목록(620)로부터 하나의 축출 가능한 LBA 영역이 선택되고, 그러한 목록에 속하는 모든 캐싱된 LBA는 판독 캐시 메모리부(510)로부터 폐기된다. 어느 영역의 LBA가 판독 캐시 내에 있는지를 검색하는 것은 상당한 양의 L2P 테이블 엔트리들을 스캐닝해야 하기 때문에 긴 동작일 수 있다.
이러한 문제를 다루기 위해 논리적 블록 정보는 판독 영역 링크-목록(read region linked-list)이라는 구조에 저장된다. 판독 캐시 메모리 부분(510)에 존재하는 각각의 LBA 영역에 대한 링크된 목록이 존재한다.
물리적 블록 어드레스(PBA)는 논리적 블록이 저장된 위치를 나타낸다. 물리적 블록은 논리적 블록 데이터 및 일부 메타데이터 정보를 포함한다. 판독 영역 링크 목록은 물리적 블록 메타데이터에 저장된다: 각각의 메타데이터는 판독 캐시 메모리 부분(510)에 복사되고 동일한 LBA 영역에 속하는 다음 논리적 블록의 PBA를 포함한다.
도 10은 비휘발성 캐시 메모리 부분(510) 내의 메모리 영역들의 판독 단계를 최적화하기 위한 목적으로 카운터에 저장된 값들을 주기적으로 감분시키기 위한 본 발명에 따른 메커니즘에 대한 카운터 값들의 증가를 레포팅하는 다이어그램으로 도시한다.
다이어그램에 의해 인식될 수 있는 바와 같이, 2개의 수평 라인은 2개의 미리 결정된 임계치를 나타낸다. 제1 임계치(1010)는 카운터의 값이 판독될 때 캐시 메모리 부분 내의 대응하는 메모리 영역의 컨텐츠의 논리적 블록 블록을 강제하는 상한치를 나타낸다. 제2 임계치(1020)는 카운터의 값이 캐시 메모리 부분으로부터 대응하는 메모리 영역의 컨텐츠의 제거 또는 축출을 강제하는 하한치를 나타낸다.
제1 라인(1050)은 주어진 메모리 영역(m)의 판독 카운터(RdCnt)에 저장된 값, 즉 RdCntm을 나타내고, 제2 라인(1070)은 다른 주어진 메모리 영역(j)의 판독 카운터에 저장된 값, 즉 RdCntj를 나타낸다.
제1 시간 섹터 I에서, 양쪽 라인들은 증가하고 있고, 제1 라인(1010)과 연관된 카운터가 그 포화를 나타내는 최상위 레벨에 도달하도록, 양쪽 영역들이 빈번하게 액세스되고 "핫(hot)"하다고 간주되는 것을 나타낸다.
제1 리선시 이벤트는 제1 시간 섹터 I 내지 제2 섹터 II 사이에서 수행되고, 모든 카운터에 의해 기록된 값을 감소시킨다. 이 가능한 감소는 예를 들어 저장된 값 중 두 개의 분할일 수 있으므로 모든 카운터가 반감된다.
이 리선시의 결과로서, 라인(1050)은 여전히 제1 임계 레벨(1010) 위에 있는 반면, 제2 라인(1070)은 제1 임계 레벨(1010) 아래에 있다.
제2 시간 섹터(II)에서, 메모리 영역(j)은 여전히 빈번하게 액세스되고, 대응하는 카운터 값을 나타내는 대응하는 라인(1070)은 더 이상 그렇게 빈번하게 액세스되지 않는 제1 라인(1050)보다 훨씬 더 많이 증가하고 있는 것이 일어난다.
이제, 제2 시간 섹터(II)와 제3 시간 섹터(III) 사이에서 제2 리선시 이벤트가 수행되어, 메모리 영역(j)과 관련된 카운터의 값을 훨씬 더 감소시킨다. 이 값은 이제 심지어 제2 임계 한계치(1020) 아래에 있다.
이는 메모리 부분(510)의 내부에 원래 복사된 메모리 영역(m)의 컨텐츠가 제거 또는 축출될 수 있고, 그 위치는 그 동안 핫(hot)된 다른 메모리 영역을 복사하여 저장하는데 전용될 수 있음을 의미한다. "핫(hot)" 상태로부터 소위 "콜드(cold)" 상태로 진행되는 이 메모리 부분의 어드레스 "m"은 다음의 가능한 경우에 캐시 메모리 부분(510)으로부터 컨텐츠가 아마도 제거될 축출 가능한 메모리 부분의 목록(620)에 삽입된다.
축출 단계에서는 포인터의 변경만 있으면 된다는 점에 유의해야 한다. 즉, 캐시 메모리 부분에 대해서는 소거 단계가 수행되지 않지만, 단순히 메모리 영역 또는 "콜드" 메모리 영역의 컨텐츠에 대응하는 메모리 위치들은 그동안 "핫"된 다른 메모리 영역의 컨텐츠의 다음 복사 단계의 폐기에서 남겨진다.
본 개시에 따른 절차를 요약하면, 리선시 단계가 주기적으로 모든 판독 카운터들 및 리선시 이후에 콜드된 캐싱된 판독 영역들이 '축출가능'으로서 선택되고 축출가능 목록에 첨부되는 것을 다시 하는 것은 가치가 있다.
따라서, 축출 가능 영역에 속하는 캐시된 LBA는 캐시 메모리 부분이 거의 가득 차면 축출 단계 동안 폐기된다. 그러나, 축출 동안 논리적 블록 데이터는 복사되지 않고 포인터 L2P만이 업데이트된다.
판독 캐시 메모리 부분에 존재하는 각각의 판독 메모리 영역에 대해, 판독 캐시에 복사된 최종 논리적 블록의 PBA는 제어기의 휘발성 SRAM에 저장된 판독 캐시 테이블(315)에 저장된다. 이 휘발성 메모리는 새로운 논리적 블록이 판독 캐시 메모리 부분에 삽입될 때마다 업데이트된다.
도 11은 링크된 목록의 구축 과정을 나타낸 것이다. 일반 메모리 영역(m)의 제1 캐싱된 LBA는 LBAa로서 식별될 수 있고, 도 11의 1120으로 도시된 물리적 블록 어드레스 PBAa에 저장될 수 있다. 이 제1 PBAa는 판독 캐시 메모리 부분(1110)의 캐싱된 LBA에 대한 모든 포인터를 포함하는 판독 캐시 테이블(SRAM)(1115)에 저장된다. 판독 캐시 메모리 부분(1110)은 도 3의 메모리 부분(310) 및 도 5의 메모리 부분(510)에 대응한다는 것을 유의해야 한다.
유사하게, 휘발성 메모리 부분(1115)은 메모리 제어기(306)에 포함된 도 3의 메모리 부분(315)과 동일하다.
다른 논리적 블록 어드레스(LBAb)가 판독 캐시 메모리 부분(1110)에 로드될 때, 이전의 PBAa 값은 연관된 PBAb 메타데이터(1130)에 저장되는 한편, 판독 캐시 테이블(1115)은 이 PBAb의 값으로 업데이트된다. 프로세스는 판독 캐시 메모리 부분(1110)에 로딩된 모든 LBA들에 대해 반복된다.
도 12는 축출 단계 동안 링크된 목록 스캔 프로세스를 도시하며, 여기서 도 11의 메모리 부분(1110)과 완전히 동일한 판독 캐시 메모리 부분(1210)이 새로운 빈번한 판독 메모리 영역들에 대해 이용 가능하게 된다.
일반 LBA 메모리 영역(m)이 판독 캐시 메모리 부분(1210)에 저장되도록 선택되었고, 도 12의 점선 화살표 (1) 참조한다. 판독 캐시 테이블(1215)에 레포팅된 바와 같이, 라인(m)의 대응하는 물리적 블록 어드레스(PBAd)는 판독 캐시 메모리 부분(1210)으로부터 축출되어야 한다.
해당 PBAd로부터 시작하여, 판독 캐시 테이블(1215)에서, 4개의 캐싱된 LBA(즉: LBAd, LBAc LBAb LBAa)는 메타데이터 필드에 저장된 링크 다음에 검색된다. 영역의 최종 LBAa는 메타데이터에 저장된 특정 값으로 인해 검출될 수 있고, 도면 12의 점선 화살표 (2), (3) 및 (4)를 참조한다.
본 개시의 판독 캐시 아키텍처 및 판독 방법은, 대용량 저장 디바이스들을 생성하기 위해 오늘날 사용되는 TLC 및/또는 QLC NAND와 같은 복수의 비휘발성 메모리 부분을 포함하는 관리되는 저장 디바이스의 판독 단계를 가속화하는 큰 이점을 달성한다.

Claims (33)

  1. 저장 디바이스를 포함하는 하이브리드 메모리 디바이스를 위한 캐시 아키텍처(Cache architecture)에 있어서, 상기 저장 디바이스는,
    - 복수의 비휘발성 메모리 부분들;
    - 상기 비휘발성 메모리 부분들에 방향성을 가지고(by-directionally) 연결된 상기 저장 디바이스의 제어기;
    - 상기 비휘발성 메모리 부분들에 대해 더 낮은 레이턴시 및 더 높은 스루풋을 갖고, 상기 제어기에 방향성을 가지고 연결되는 적어도 더 빠른 메모리 부분(faster memory portion);을 포함하고,
    - 상기 더 빠른 메모리 부분은 상기 복수의 비휘발성 메모리 부분들 중 빈번하게 액세스되는 메모리 영역들을 위한 캐시 메모리 부분인, 캐시 아키텍처.
  2. 청구항 1에 있어서, 상기 더 빠른 메모리 부분은 3D 크로스 포인트 메모리 부분과 같은 이머징 메모리(emerging memory)인, 캐시 아키텍처.
  3. 청구항 1에 있어서, 상기 더 빠른 메모리 부분은 SLC 또는 MLC NAND 메모리 부분인, 캐시 아키텍처.
  4. 청구항 1에 있어서, 상기 제어기는 상기 메모리 영역들 각각에 연관된 카운터를 호스팅하는 휘발성 메모리 부분을 포함하고, 상기 카운터는 메모리 영역에 포함된 적어도 하나의 논리적 블록 어드레스의 임의의 액세스에서 업데이트되는, 캐시 아키텍처.
  5. 청구항 1에 있어서, 상기 저장 디바이스의 제어기는 상기 비휘발성 메모리 부분들로부터 더 빈번하게 판독되는 논리적 블록 어드레스들을 포함하는 메모리 영역들의 컨텐츠를 복사하고, 캐시 메모리 부분으로서 사용되는 상기 더 빠른 메모리 부분에 이러한 메모리 영역들을 저장하도록 구성되고; 상기 더 빈번하게 판독되는 논리적 블록 어드레스는 상기 메모리 영역에서 수행된 액세스 횟수의 카운터 유지 정보에 기초하여 선택되는, 캐시 아키텍처.
  6. 청구항 5에 있어서, 상기 저장 디바이스의 제어기는, 상기 판독 메모리 영역과 연관된 상기 카운터가 특정 임계치 미만일 때 상기 더 빠른 메모리 부분으로부터 상기 더 빈번하게 판독되는 논리적 블록 어드레스들을 포함하는 상기 메모리 영역들을 축출하도록 구성되는, 캐시 아키텍처.
  7. 청구항 5에 있어서, 상기 제어기는 임의의 액세스 동작에 수반되는 상기 복수의 비휘발성 메모리 부분들 중 상기 LBA 메모리 영역들의 카운터들을 레코딩(record)하기 위한 임베디드 휘발성 메모리 부분을 포함하는, 캐시 아키텍처.
  8. 청구항 5에 있어서, 상기 더 빈번하게 판독되는 논리적 블록 어드레스들의 작은 청크들에 대한 액세스만이 상기 LBA 메모리 영역의 대응하는 카운터를 업데이트하도록 고려되는, 캐시 아키텍처.
  9. 청구항 5에 있어서, 상기 메모리 영역들은,
    - 상기 메모리 영역들은 정의된 임계치보다 같거나 낮은 전송 길이를 갖는 커맨드로 판독되고,
    - 상기 메모리 영역들은 캐시 가능한 LBA 영역에 속함이라는 조건들 둘 모두가 준수될 때 상기 더 빠른 메모리 부분에 저장되는, 캐시 아키텍처.
  10. 청구항 1에 있어서, 상기 제어기는, 상기 포인터를 상기 대응하는 캐싱된 메모리 영역들에 대한 축출 가능한 판독 영역들 테이블에 삽입함으로써 더 이상 빈번하게 액세스되지 않는 상기 메모리 영역들의 컨텐츠를 상기 캐시 메모리 부분으로부터 축출하도록 구성되는, 캐시 아키텍처.
  11. 장치에 있어서,
    - 호스트 디바이스;
    - 제어기를 갖는 저장 디바이스;
    - 상기 호스트 디바이스와 상기 저장 디바이스의 제어기 간의 통신 채널을 포함하고,
    상기 저장 디바이스는,
    - 복수의 비휘발성 메모리 부분들;
    - 상기 비휘발성 메모리 부분들에 방향성을 가지고 연결된 저장 디바이스의 제어기;
    - 상기 비휘발성 메모리 부분들에 대해 더 낮은 레이턴시 및 더 높은 스루풋을 갖고, 상기 제어기에 방향성을 가지고 연결되는 적어도 더 빠른 메모리 부분;을 포함하고,
    - 상기 더 빠른 메모리 부분은 상기 복수의 비휘발성 메모리 부분들에 대한 캐시 메모리 부분인, 장치.
  12. 청구항 11에 있어서, 상기 더 빠른 메모리 부분은 3D 크로스 포인트 메모리 부분과 같은 이머징 메모리인, 장치.
  13. 청구항 11에 있어서, 상기 저장 디바이스의 제어기는 상기 비휘발성 메모리 부분들로부터 더 빈번하게 판독되거나 기록된 논리적 블록 어드레스들을 포함하는 메모리 영역들의 컨텐츠를 복사하고, 캐시 메모리 부분으로서 사용되는 상기 더 빠른 메모리 부분에 이러한 메모리 영역들을 저장하도록 구성되고; 상기 더 빈번하게 판독되는 상기 논리적 블록 어드레스는 상기 메모리 영역에서 수행된 액세스 횟수의 카운터 유지 정보에 기초하여 선택되는, 장치.
  14. 청구항 13에 있어서, 상기 저장 디바이스의 제어기는, 상기 LBA 메모리 영역에 연관된 상기 카운터가 특정 임계치 미만일 때 상기 더 빠른 메모리 부분으로부터 상기 더 빈번하게 판독 또는 기록된 논리적 블록 어드레스를 포함하는 상기 메모리 영역을 축출하도록 구성되는, 장치.
  15. 청구항 13에 있어서, 상기 제어기는 임의의 액세스 동작에 수반되는 상기 복수의 비휘발성 메모리 부분들 중 상기 LBA 메모리 영역들의 카운터들을 레코딩하기 위한 임베디드 휘발성 메모리 부분을 포함하는, 장치.
  16. 청구항 13에 있어서, 상기 더 빈번하게 판독되는 논리적 블록 어드레스들의 작은 청크들에 대한 액세스만이 상기 LBA 메모리 영역의 대응하는 카운터를 업데이트하기 위해 고려되는, 장치.
  17. 청구항 11에 있어서, 상기 제어기는 상기 메모리 영역들 각각에 연관된 카운터를 호스팅하는 휘발성 메모리 부분을 포함하고, 상기 카운터는 메모리 영역에 포함된 적어도 하나의 논리적 블록 어드레스의 임의의 액세스에서 업데이트되는, 장치.
  18. 메모리 제어기에 의해 관리되는 복수의 비휘발성 메모리 부분들을 포함하는 저장 디바이스들에서 판독 단계를 개선하기 위한 방법에 있어서, 상기 방법은,
    - 상기 비휘발성 메모리 부분들에 대해 더 낮은 레이턴시 및 더 높은 스루풋을 갖고, 상기 제어기에 방향성을 가지고 연결되는 적어도 더 빠른 메모리 부분을 제공하는 단계;
    - 상기 복수의 비휘발성 메모리 부분들 중 상기 더 빈번하게 판독되는 논리적 블록 어드레스들을 포함하는 메모리 영역들의 컨텐츠를 복사하기 위한 캐시 메모리로서 상기 더 빠른 메모리 부분을 사용하는 단계를 포함하는, 방법.
  19. 청구항 18에 있어서, 상기 더 빠른 메모리 부분은 3D 크로스 포인트 메모리 부분과 같은 이머징 메모리인, 방법.
  20. 청구항 18에 있어서,
    - 해당 메모리 영역의 논리적 블록 어드레스에 대한 임의의 액세스에서 각각의 메모리 영역에 연관된 카운터를 업데이트하는 단계;
    - 상기 대응하는 카운터가 미리 결정된 임계치를 초과하는 경우, 상기 더 빠른 메모리 부분에 복사될 상기 메모리 영역을 선택하는 단계를 더 포함하는, 방법.
  21. 청구항 20에 있어서, 상기 카운터들은 상기 제어기의 휘발성 메모리 부분에 저장되는, 방법.
  22. 청구항 18에 있어서, 덜 빈번하게 판독되는 논리적 블록을 포함하는 상기 캐싱된 메모리 영역은 대응하는 캐싱된 메모리 영역으로의 포인터를 포함하는 축출 가능한 LBA 영역 테이블을 업데이트함으로써 상기 더 빠른 메모리 부분으로부터 축출되는, 방법.
  23. 복수의 비휘발성 메모리 부분들 및 메모리 제어기를 포함하는 관리되는 저장 디바이스의 판독 또는 액세스 단계를 가속화하기 위한 방법에 있어서,
    - 상기 복수의 비휘발성 메모리 부분들 중 하나에서 메모리 영역의 논리적 블록 어드레스를 판독하는 단계;
    - 해당 메모리 영역의 논리적 블록 어드레스에 대한 임의의 판독 액세스에서 각각의 메모리 영역에 연관된 카운터를 업데이트하는 단계;
    - 상기 카운터가 셋팅된 임계치를 초과할 때 더 빈번하게 액세스되는 메모리 영역들 컨텐츠를 비휘발성 캐시 메모리 부분에 복사하는 단계를 포함하는, 방법.
  24. 청구항 23에 있어서, 상기 메모리 영역들과 연관된 카운터들은 리선시 알고리즘(recency algorithm)에 의해 주기적으로 감소되는, 방법.
  25. 청구항 23에 있어서, 상기 카운터들은 상기 캐시 메모리 부분 내의 상기 메모리 영역의 컨텐츠의 복사 단계 이후에도 대응하는 메모리 영역의 임의의 액세스에서 업데이트되는, 방법.
  26. 청구항 23에 있어서, 상기 캐싱된 메모리 영역들의 컨텐츠는, 상기 대응하는 카운터 값이 미리 결정된 임계치 미만일 때 상기 캐시 메모리 부분에 의해 축출되는, 방법.
  27. 청구항 26에 있어서, 상기 미리 결정된 임계치 미만의 액세스 카운터를 갖는 상기 메모리 영역들의 상기 컨텐츠에 저장하는 상기 캐시 메모리 부분의 상기 메모리 위치들은 다른 메모리 영역의 컨텐츠의 다음 복사 단계의 폐기에서 남겨지는, 방법.
  28. 청구항 23에 있어서, 상기 더 빈번하게 판독되는 논리적 블록 어드레스들의 작은 청크들에 대한 액세스만이 상기 LBA 메모리 영역의 대응하는 카운터를 업데이트하기 위해 고려되는, 방법.
  29. 청구항 23에 있어서, 비휘발성 캐시 메모리 부분은 3D 크로스 포인트 메모리 부분과 같은 이머징 메모리인, 방법.
  30. 청구항 23에 있어서, 상기 제어기는 임의의 액세스 동작에 수반되는 상기 복수의 비휘발성 메모리 부분들 중 상기 LBA 메모리 영역들의 카운터들을 레코딩하기 위한 임베디드 휘발성 메모리 부분을 포함하는, 방법.
  31. 청구항 23에 있어서, 판독 커맨드가 상기 업데이트 단계는 정의된 임계치보다 같거나 낮은 전송 길이를 갖는 이후에만 수행되는, 방법.
  32. 청구항 23에 있어서, 상기 비휘발성 캐시 메모리 부분은 상기 복수의 비휘발성 메모리 부분들과 비교할 때 더 낮은 판독 레이턴시 및 더 높은 스루풋을 갖는, 방법.
  33. 청구항 23에 있어서, 상기 메모리 영역들과 연관된 카운터들은 많은 카운터들이 포화에 근접할 때 또는 상기 캐시가 거의 가득 찰 때 활성화되는 리선시 알고리즘에 의해 주기적으로 감분(decrement)되는, 방법.
KR1020227022696A 2019-12-03 2019-12-03 저장 디바이스를 위한 캐시 아키텍처 KR20220104055A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2019/001202 WO2021111156A1 (en) 2019-12-03 2019-12-03 Cache architecture for a storage device

Publications (1)

Publication Number Publication Date
KR20220104055A true KR20220104055A (ko) 2022-07-25

Family

ID=76221618

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227022696A KR20220104055A (ko) 2019-12-03 2019-12-03 저장 디바이스를 위한 캐시 아키텍처

Country Status (5)

Country Link
US (2) US11392515B2 (ko)
EP (1) EP4070200A4 (ko)
KR (1) KR20220104055A (ko)
CN (1) CN114746848B (ko)
WO (1) WO2021111156A1 (ko)

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136668A1 (en) * 2004-12-17 2006-06-22 Rudelic John C Allocating code objects between faster and slower memories
US7401188B2 (en) * 2005-06-29 2008-07-15 Intel Corporation Method, device, and system to avoid flushing the contents of a cache by not inserting data from large requests
US7469320B2 (en) * 2005-11-04 2008-12-23 Sun Microsystems, Inc. Adaptive replacement cache
US7853759B2 (en) * 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
KR101517761B1 (ko) * 2008-07-30 2015-05-06 시게이트 테크놀로지 엘엘씨 데이터 저장 위치 관리 방법 및 이를 데이터 저장 시스템
CN101673188B (zh) * 2008-09-09 2011-06-01 上海华虹Nec电子有限公司 一种固态硬盘的数据存取方法
CN101388110B (zh) * 2008-10-31 2011-08-17 深圳市同洲电子股份有限公司 数据快速读取方法及装置
US20110191522A1 (en) * 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
US20120017039A1 (en) * 2010-07-16 2012-01-19 Plx Technology, Inc. Caching using virtual memory
JP5535128B2 (ja) * 2010-12-16 2014-07-02 株式会社東芝 メモリシステム
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8977803B2 (en) * 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US9141534B2 (en) * 2012-12-14 2015-09-22 Sandisk Technologies Inc. Tracking read accesses to regions of non-volatile memory
US9230689B2 (en) * 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US9472248B2 (en) * 2014-03-28 2016-10-18 Intel Corporation Method and apparatus for implementing a heterogeneous memory subsystem
US20170075812A1 (en) * 2015-09-16 2017-03-16 Intel Corporation Technologies for managing a dynamic read cache of a solid state drive
TWI824372B (zh) 2015-10-12 2023-12-01 美商再生元醫藥公司 活化瘦素受體的抗原結合蛋白
CN105677511B (zh) * 2015-12-30 2018-08-17 首都师范大学 一种降低同步开销的数据写入方法和装置
US10169232B2 (en) * 2016-02-19 2019-01-01 Seagate Technology Llc Associative and atomic write-back caching system and method for storage subsystem
US10255177B2 (en) * 2016-10-10 2019-04-09 Dell Products, Lp System and method for adaptive optimization for performance in solid state drives based on read/write intensity
JP2019056972A (ja) * 2017-09-19 2019-04-11 東芝メモリ株式会社 メモリシステムおよびメモリシステムの制御方法
US11487665B2 (en) * 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system

Also Published As

Publication number Publication date
CN114746848A (zh) 2022-07-12
US20220350757A1 (en) 2022-11-03
EP4070200A1 (en) 2022-10-12
EP4070200A4 (en) 2023-09-06
US20210406203A1 (en) 2021-12-30
US11782854B2 (en) 2023-10-10
CN114746848B (zh) 2023-08-04
US11392515B2 (en) 2022-07-19
WO2021111156A1 (en) 2021-06-10

Similar Documents

Publication Publication Date Title
CN110678836B (zh) 用于键值存储的持久性存储器
KR102443600B1 (ko) 하이브리드 메모리 시스템
KR102434170B1 (ko) 하이브리드 메모리 시스템
US9798673B2 (en) Paging enablement of storage translation metadata
KR20170038853A (ko) 호스트-관리 비휘발성 메모리
US11327892B2 (en) Latency-based storage in a hybrid memory system
US11782854B2 (en) Cache architecture for a storage device
US20220382478A1 (en) Systems, methods, and apparatus for page migration in memory systems

Legal Events

Date Code Title Description
A201 Request for examination