KR20220060548A - 데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱 - Google Patents

데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱 Download PDF

Info

Publication number
KR20220060548A
KR20220060548A KR1020227011422A KR20227011422A KR20220060548A KR 20220060548 A KR20220060548 A KR 20220060548A KR 1020227011422 A KR1020227011422 A KR 1020227011422A KR 20227011422 A KR20227011422 A KR 20227011422A KR 20220060548 A KR20220060548 A KR 20220060548A
Authority
KR
South Korea
Prior art keywords
memory
application
memory device
address
data
Prior art date
Application number
KR1020227011422A
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 KR20220060548A publication Critical patent/KR20220060548A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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
    • 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/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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

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 (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

컴퓨터 시스템은 컴퓨터 시스템의 메모리에 대해 무작위로 액세스할 수 있는 데이터를 저장하는 물리적 메모리 디바이스를 식별하는 데 사용되는 메타데이터를 저장한다. 한 접근 방식에서, 어드레스 공간의 메모리에 대한 액세스는 컴퓨터 시스템의 운영 체제에 의해 유지된다. 저장된 메타데이터는 어드레스 공간의 제1 어드레스 범위를 제1 메모리 디바이스와 연관시키고, 어드레스 공간의 제2 어드레스 범위를 제2 메모리 디바이스와 연관시킨다. 운영 체제는 저장된 메타데이터에 액세스하여 컴퓨터 시스템에서 실행되는 프로세스를 관리한다. 이 관리는 저장된 메타데이터에 기초하여 제1 프로세스에 대한 데이터가 제1 메모리 디바이스에 저장되고 제2 프로세스에 대한 데이터가 제2 메모리 디바이스에 저장되도록 메모리를 할당하는 것을 포함한다.

Description

데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱
관련 출원
본 출원은 2019년 9월 17일자로 출원되고 발명의 명칭이 "데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱"인 미국 특허 출원 번호 제16/573,490호에 대한 우선권을 주장하며, 그 전체 개시는 본 출원에 참조로 포함된다.
기술 분야
본 출원에 개시된 적어도 일부 실시예는 전반적으로 메모리 시스템에 관한 것으로, 보다 상세하게는 데이터가 저장된 메모리 시스템의 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱에 관한 것이나 이에 제한되지 않는다.
다양한 유형의 메모리 디바이스를 사용하여 컴퓨터 시스템의 메인 메모리에 데이터를 저장할 수 있다. 휘발성 메모리 디바이스의 한 유형은 DRAM(dynamic random access memory) 디바이스이다. 다양한 유형의 비휘발성 메모리 디바이스는 NAND 플래시 메모리 디바이스 또는 비휘발성 랜덤 액세스 메모리(NVRAM) 디바이스를 포함할 수 있다.
운영 체제에서 메모리 관리는 컴퓨터 시스템의 메인 메모리의 관리를 담당한다. 메모리 관리는 메인 메모리의 메모리 위치의 상태(예를 들어, 할당됨 또는 사용 가능 중 어느 하나의 메모리 상태)를 추적한다. 메모리 관리는 운영 체제에서 실행되는 다양한 프로세스 사이의 메모리 할당을 추가로 결정한다. 메모리가 프로세스에 할당되면 운영 체제는 프로세스에 할당할 메모리 위치를 결정한다.
한 가지 접근법에서 운영 체제는 페이지 할당을 사용하여 메인 메모리를 페이지 프레임이라고 지칭되는 고정 크기 단위로 분할한다. 소프트웨어 프로그램의 가상 어드레스 공간은 동일한 크기를 갖는 페이지로 분할된다. 하드웨어 메모리 관리 유닛은 페이지를 물리적 메모리의 프레임에 맵핑한다. 페이지 메모리 관리 접근법에서 각각의 프로세스는 전형적으로 그 고유한 어드레스 공간에서 실행된다.
일부 경우에, 메모리 관리 유닛(MMU)은 페이지 메모리 관리 유닛(PMMU)이라 지칭된다. MMU는 운영 체제에서 사용하는 모든 메모리 참조를 관리하고 가상 메모리 어드레스의 물리적 어드레스로의 변환을 수행한다. MMU는 전형적으로 프로세서에서 사용하는 어드레스 범위인 가상 어드레스 공간을 페이지로 분할한다.
일부 접근법에서, MMU는 페이지 테이블 엔트리를 함유하는 페이지 테이블을 사용하여 가상 페이지 번호를 메인 메모리의 물리적 페이지 번호에 맵핑한다. 일부 경우에는 가상 어드레스가 맵핑될 때 메인 메모리에 저장된 페이지 테이블에 액세스할 필요성을 피하기 위해 TLB(translation lookaside buffer)라고 지칭되는 페이지 테이블 엔트리의 캐시가 사용된다. 가상 메모리를 사용할 때 가상 어드레스의 연접(contiguous) 범위는 물리적 메모리의 여러 비연접 블록에 맵핑될 수 있다.
보다 일반적으로, 컴퓨터 시스템은 하나 이상의 메모리 서브시스템 가질 수 있다. 메모리 서브시스템은 DIMM(dual in-line memory module), SO-DIMM(small outline DIMM) 또는 NVDIMM(non-volatile dual in-line memory module)과 같은 메모리 모듈일 수 있다. 메모리 서브시스템은 저장 시스템, 예컨대, 솔리드 스테이트 드라이브(SSD), 또는 하드 디스크 드라이브(HDD)일 수 있다. 메모리 서브시스템은 데이터를 저장하는 하나 이상의 메모리 컴포넌트를 포함할 수 있다. 메모리 컴포넌트는, 예를 들어, 비휘발성 메모리 컴포넌트 및 휘발성 메모리 컴포넌트일 수 있다. 메모리 컴포넌트의 예는 메모리 집적 회로를 포함한다. 일부 메모리 집적 회로는 휘발성이며 저장된 데이터를 유지하기 위해 전력이 필요하다. 일부 메모리 집적 회로는 비휘발성이며 비급전시에도 저장된 데이터를 유지할 수 있다. 비휘발성 메모리의 예는 플래시 메모리, ROM(Read-Only Memory), PROM(Programmable Read-Only Memory), EPROM(Erasable Programmable Read-Only Memory) 및 EEPROM(Electronically Erasable Programmable Read-Only Memory) 메모리 등을 포함한다. 휘발성 메모리의 예는 DRAM(Dynamic Random-Access Memory) 및 SRAM(Static Random-Access Memory)을 포함한다. 일반적으로, 컴퓨터 시스템은 메모리 서브시스템을 이용하여 메모리 컴포넌트에 데이터를 저장하고 메모리 컴포넌트로부터 데이터를 검색할 수 있다.
예를 들어, 컴퓨터 시스템은 컴퓨터 시스템에 부착된 하나 이상의 메모리 서브시스템을 포함할 수 있다. 컴퓨터 시스템은 데이터 및 명령어를 저장 및/또는 검색하기 위해 하나 이상의 메모리 서브시스템과 통신하는 중앙 처리 유닛(CPU)을 가질 수 있다. 컴퓨터를 위한 명령어는 운영 체제, 디바이스 드라이버 및 애플리케이션 프로그램을 포함할 수 있다. 운영 체제는 컴퓨터의 자원을 관리하고 메모리 할당 및 자원의 시간 공유와 같은 애플리케이션 프로그램에 대한 공통 서비스를 제공한다. 디바이스 드라이버는 컴퓨터에서 특정 유형의 디바이스를 동작하거나 제어하고; 운영 체제는 디바이스 드라이버를 사용하여 디바이스 유형에 의해 제공되는 자원 및/또는 서비스를 제공한다. 컴퓨터 시스템의 중앙 처리 유닛(CPU)은 운영 체제 및 디바이스 드라이버를 실행하여 애플리케이션 프로그램에 서비스 및/또는 자원을 제공할 수 있다. 중앙 처리 유닛(CPU)은 서비스 및/또는 자원을 사용하는 애플리케이션 프로그램을 실행할 수 있다. 예를 들어, 일 유형의 애플리케이션을 구현하는 애플리케이션 프로그램은 메모리 서브시스템의 메모리 컴포넌트에 데이터를 저장하고 메모리 컴포넌트로부터 데이터를 검색하도록 중앙 처리 유닛(CPU)에 지시할 수 있다.
컴퓨터 시스템의 운영 체제는 애플리케이션 프로그램이 메모리의 가상 어드레스를 사용하여 컴퓨터 시스템의 하나 이상의 메모리 서브시스템의 메모리 컴포넌트에 데이터를 저장하거나 메모리 컴포넌트로부터 데이터를 검색하게 할 수 있다. 운영 체제는 가상 어드레스를 컴퓨터 시스템의 중앙 처리 유닛(CPU)에 연결된 하나 이상의 메모리 서브시스템의 물리적 어드레스에 맵핑한다. 운영 체제는 가상 어드레스에 지정된 메모리 액세스를 메모리 서브시스템의 물리적 어드레스로 변환한다.
가상 어드레스 공간은 페이지로 분할될 수 있다. 가상 메모리의 페이지는 메모리 서브시스템의 물리적 메모리 페이지에 맵핑될 수 있다. 운영 체제는 메모리 모듈의 메모리 페이지를 통해 저장 디바이스의 메모리 페이지에 액세스하기 위해 페이징 기술을 사용할 수 있다. 다른 시간 인스턴스에서, 메모리 모듈의 메모리의 동일한 가상 페이지는 저장 디바이스 또는 컴퓨터 시스템의 다른 저장 디바이스의 메모리의 상이한 물리적 페이지에 액세스하기 위해 프록시로 사용될 수 있다.
컴퓨터 시스템에는 가상 기계를 생성하거나 프로비저닝하기 위한 하이퍼바이저(또는 가상 기계 모니터)가 포함될 수 있다. 가상 기계는 컴퓨터 시스템에서 이용 가능한 자원과 서비스를 사용하여 가상으로 구현되는 컴퓨팅 디바이스이다. 하이퍼바이저는 가상 기계의 컴포넌트가 전용 물리적 컴포넌트인 것처럼 운영 체제에 가상 기계를 제공한다. 게스트 운영 체제는 컴퓨터 시스템에서 실행되는 호스트 운영 체제와 유사한 방식으로 가상 기계에서 이용 가능한 자원 및 서비스를 관리하기 위해 가상 기계에서 실행된다. 하이퍼바이저는 다수의 가상 기계가 컴퓨터 시스템의 자원을 공유할 수 있게 하고 가상 기계가 컴퓨터에서 서로 실질적으로 독립적으로 동작할 수 있게 한다.
실시예는 같은 참조 번호가 유사한 요소를 나타내는 첨부 도면의 도면에서 제한이 아니라 예시의 방식으로 예시된다.
도 1은 일부 실시예에 따른 메모리 서브시스템을 갖는 예시적인 컴퓨터 시스템을 예시한다.
도 2는 일부 실시예에 따른 메모리 버스를 사용하여 메모리 모듈의 상이한 유형의 메모리에 액세스하는 모바일 디바이스를 도시한다.
도 3은 일부 실시예에 따른 메모리 서브시스템의 메모리 디바이스에 액세스하는 데 사용되는 메타데이터를 저장하는 예시적인 컴퓨터 시스템을 예시한다.
도 4는 일부 실시예에 따른 메모리 모듈의 휘발성 및 비휘발성 메모리에 대한 호스트 컴퓨터 시스템에 의한 메모리 버스 액세스를 위해 구성된 메모리 모듈을 도시한다.
도 5는 적어도 일부 실시예에 따른, 메모리 버스 액세스를 사용하여 메모리 모듈에 액세스하는 호스트 운영 체제를 도시한다.
도 6은 일부 실시예에 따른 컴퓨터 시스템의 메모리 디바이스에 대한 물리적 어드레스와 어드레스 공간의 프로세스에 대한 가상 어드레스 범위를 연관시키는 저장된 메타데이터에 기초하여 컴퓨터 시스템의 어드레스 공간에서 프로세스에 대한 메모리를 관리하는 방법을 도시한다.
도 7은 본 개시의 실시예가 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 출원의 적어도 일부 실시예는 데이터가 저장되는 메모리 시스템의 메모리 디바이스를 식별하기 위해 저장된 메타데이터에 액세스하는 것에 관한 것이다. 본 출원에 설명된 바와 같은 다양한 실시예에서, 메타데이터는 다양한 유형의 컴퓨터 시스템에 의해 저장 및 액세스될 수 있다. 일 예에서, 컴퓨터 시스템은 SoC 디바이스에서 실행되는 하나 이상의 프로세스에 의한 메모리 사용을 관리하기 위한 메타데이터를 저장하는 SoC(system-on-chip) 디바이스이다. 일 예에서, 모바일 디바이스는 모바일 디바이스에서 실행 중인 하나 이상의 애플리케이션에 대한 메인 메모리 할당을 관리하기 위해 SoC 디바이스를 사용한다.
종래의 컴퓨터 시스템은 종종 데이터를 저장하기 위해 상이한 유형의 메모리 디바이스를 사용한다. 전형적으로, 사용되는 메모리 디바이스의 한 유형은 DRAM이고, 이는 일반적으로, 고속 판독 및 기록 액세스를 제공하는 것으로 고려된다. DRAM은 일반적으로 컴퓨터 시스템의 메인 메모리에 데이터를 저장하는 데 사용된다.
플래시 메모리와 같은 다른 메모리 디바이스는 전형적으로 DRAM보다 느린 것으로 고려된다. 예를 들어, DRAM의 판독 또는 기록 액세스 레이턴시는 전형적으로 플래시 메모리의 판독 또는 기록 액세스 레이턴시보다 훨씬 더 적다. 특정 예로서, 일부 메모리 디바이스에 대한 기록 액세스 레이턴시는 DRAM 디바이스보다 수십 배 또는 심지어 수백 배 더 클 수 있다.
메인 메모리에 데이터를 저장하기 위해 상이한 유형의 물리적 메모리 디바이스를 사용하는 종래의 컴퓨터 시스템에서는 프로세서가 다양한 프로세스에 대한 메모리가 메모리 디바이스에 실제로 맵핑되는 방식을 인식하지 못하는 기술적 문제가 존재한다. 예를 들어, 프로세서는 가상 어드레스 범위를 프로세스에 할당할 수 있다. 그러나, 프로세서는 가상 어드레스 범위가 상이한 메모리 디바이스에 어떻게 맵핑되는지 알지 못한다.
일 예에서, 프로세스에 대한 가상 어드레스 범위가 다른 메모리 디바이스(예를 들어, DRAM)보다 훨씬 느린 물리적 메모리 디바이스(예를 들어, 플래시 메모리)에 맵핑되는 경우, 이때, 프로세스를 계속 실행하는 데 필요한 메인 메모리로부터의 데이터에 빠르게 액세스할 수 없음으로 인해 프로세스가 느리게 실행될 수 밖에 없다. 예를 들어, 프로세스는 데이터 계산 또는 기타 처리를 계속하기 위해 메인 메모리로부터의 응답(예를 들어, 프로세스가 실행되는 동안 필요한 데이터를 획득하기 위해 프로세서에 의해 이루어진 메인 메모리에 대한 판독 액세스 요청에 대한 데이터를 포함하는 응답)을 필요로 할 수 있다. 메인 메모리 디바이스에서 필요한 데이터가 실제로 느린 물리적 메모리 디바이스에 저장되어 있다면, 이때, 응답 대기 동안 처리가 상당히 지연된다.
본 개시의 다양한 실시예는 앞서 설명한 기술적 문제 중 하나 이상에 대한 기술적 해결책을 제공한다. 일부 실시예에서, 컴퓨터 시스템은 컴퓨터 시스템에 의해 사용되는 메모리 디바이스(예를 들어, 메인 메모리를 제공하는 데 사용되는 메모리 디바이스)의 레이턴시에 관한 데이터를 저장한다. 일 예에서, 컴퓨터 시스템의 프로세서에 가시적인 다양한 메모리 구역의 레이턴시는 알려져 있다(예를 들어, 아래에서 설명되는 바와 같이 저장된 메타데이터에서 수집 및/또는 집성된 정보로 표현됨).
일부 실시예에서, 프로세서, 운영 체제 및/또는 애플리케이션(소프트웨어 설계자에 의해 프로그래밍됨)은 느린 메모리 액세스로 인한 상당한 프로세스 지연을 피하기 위해 컴퓨터 시스템에 의한 작용을 개시 및/또는 수행할 수 있다. 예를 들어, 빠른 메모리 응답이 필요한 우선순위가 높은 프로세스는 DRAM에서 실행하도록 구성될 수 있다.
다른 예에서, 모바일 디바이스 상에서 실행되는 애플리케이션에 대한 우선순위가 모니터링될 수 있다. 애플리케이션의 우선순위가 증가하면(예를 들어, 낮음에서 높음으로 변경), 이때, 프로세서 및/또는 운영 체제는 느린 메모리 디바이스에 대응하는 메인 메모리의 어드레스 범위 밖으로 애플리케이션을 자동으로 전달하고, 애플리케이션을 빠른 메모리 디바이스에 대응하는 새로운 어드레스 범위로 이동시킬 수 있다.
일 예에서, 메모리 디바이스 유형은 DRAM, NVRAM 및 NAND 플래시를 포함한다. 프로세스의 우선순위는 프로세서에 의해(예를 들어, 프로세스의 사용 패턴에 기초하여) 결정된다. 이러한 메모리 디바이스 유형에 대한 어드레스 범위 맵핑에 관한 저장된 메타데이터를 기초로, 프로세서는 적절한 메모리 레이턴시를 갖는 어드레스 범위에 프로세스를 할당한다. 예를 들어, 프로세서는 프로세스가 낮음, 중간 또는 높음 우선순위 중 어떤 것을 갖는지를 결정할 수 있다. 프로세스가 중간 우선순위를 갖는다는 결정에 기초하여, 프로세스와 연관된 소프트웨어 및/또는 데이터는 중간 레이턴시를 갖는 NVRAM 메모리 디바이스 유형의 물리적 저장소에 대응하는 어드레스 범위에 저장된다.
일 예에서, NVRAM 디바이스 유형은 3D XPoint 메모리이다. 일 예에서, NVRAM 디바이스 유형은 저항성 랜덤 액세스 메모리, 자기저항 RAM, 상변화 RAM, 및/또는 강유전성 RAM일 수 있다. 일 예에서, NVRAM 칩은 컴퓨터 시스템(예를 들어, NVDIMM-P)의 메인 메모리로 사용된다. 일 예에서, NVRAM 디바이스는 DIMM 패키지의 비휘발성 3D XPoint 메모리를 사용하여 구현된다.
다른 예에서, 프로세서 및/또는 운영 체제가 우선순위 변경에 응답하여 애플리케이션을 다른 어드레스 범위로 자동으로 전달하도록 구성되지 않은 경우, 애플리케이션 자체의 소프트웨어 코드는 저장된 메타데이터에서 하나 이상의 값을 판독하도록 구성할 수 있다. 판독한 값을 기초로, 애플리케이션 자체가 데이터가 더 빠른 메모리 디바이스에 대응하는 어드레스 범위에 우선적으로 저장되도록 데이터 저장소를 관리할 수 있다. 일 예에서, 애플리케이션은 판독 또는 달리 제공된 저장된 메타데이터에 대한 액세스에 기초하여 컴퓨터 시스템에서 이용 가능한 메모리 디바이스의 상대적 레이턴시를 결정할 수 있다. 일 예에서, 저장된 메타데이터는 상이한 레이턴시를 갖는 다양한 상이한 메모리 디바이스 중 어떤 메모리 디바이스에 어떤 데이터가 있는지 지정한다. 이러한 방식으로, 메모리 디바이스를 지정함으로써 애플리케이션은 데이터를 저장하는 데 사용되는 메모리 디바이스에 따라 특정 데이터에 대한 액세스 레이턴시를 결정할 수 있다.
일 예에서, 모바일 디바이스 상의 애플리케이션은 (예를 들어, 시스템 온 칩 디바이스 상에서 실행되는) 운영 체제에 의한 메인 메모리 할당을 요청할 때 저장된 메타데이터를 판독한다. 일 예에서, 애플리케이션은 특정 유형의 메모리 디바이스 및/또는 메모리 판독 또는 기록 액세스와 연관된 특정 레이턴시에 대응하는 메인 메모리의 어드레스 범위를 요청한다.
일 예에서 애플리케이션은 저장된 메타데이터를 판독하거나 달리 액세스하여 어느 메모리가 빠르고 어느 메모리가 느린지를 결정한다. 모바일 디바이스의 제1 컨텍스트(context)에서, 애플리케이션은 빠른 메모리의 할당을 요청한다. 모바일 디바이스의 제2 컨텍스트에서, 애플리케이션은 느린 메모리의 할당을 요청한다. 일 예에서, 미리 결정된 컨텍스트의 검출에 응답하여, 애플리케이션은 메모리 할당의 변경에 대한 요청을 개시하거나 수행한다. 일 예에서, 애플리케이션은 (예를 들어, 프로세서에 의해) 저장된 메타데이터 및/또는 컴퓨터 시스템의 프로세서에 의해 애플리케이션에 제공되는 데이터(예를 들어, 모바일 디바이스의 동작 특성)에 대해 이루어지는 업데이트된 쿼리에 기초하여 컨텍스트의 변경을 결정한다.
하나의 실시예에서, 컴퓨터 시스템은 제1 메모리 디바이스(예를 들어, DRAM) 및 제2 메모리 디바이스(예를 들어, NVRAM 또는 NAND 플래시), 및 하나 이상의 처리 디바이스(예를 들어, CPU 또는 시스템 온 칩(SoC))를 포함한다. 컴퓨터 시스템은 명령어를 함유하는 메모리를 더 포함하고, 명령어는 하나 이상의 처리 디바이스에 운영 체제에 의해 유지되는 어드레스 공간의 메모리에 액세스하고- 액세스는 어드레스 공간의 어드레스를 사용하여 제1 메모리 디바이스 및 제2 메모리 디바이스에 액세스하는 것을 포함함 -; 어드레스 공간의 제1 어드레스 범위를 제1 메모리 디바이스와 연관시키고, 어드레스 공간의 제2 어드레스 범위를 제2 메모리 디바이스와 연관시키는 메타데이터를 저장하고; 및 저장된 메타데이터에 기초하여 운영 체제에 의해 제1 프로세스 및 제2 프로세스를 포함하는 프로세스를 관리하도록- 제1 프로세스에 대한 데이터는 제1 메모리 디바이스에 저장되고, 제2 프로세스에 대한 데이터는 제2 메모리 디바이스에 저장됨 - 지시하도록 구성된다.
하나의 실시예에서, 컴퓨터 시스템은 DRAM, NVRAM 및 NAND 플래시를 포함하는 메모리 디바이스 유형을 사용한다. 일 예에서, DRAM은 NVRAM보다 더 빠르고, NVRAM은 NAND 플래시보다 더 빠르다. 컴퓨터 시스템은 가상 메모리 어드레스를 사용하여 컴퓨터 시스템의 프로세서에서 모든 세 가지 다른 유형의 메모리가 직접 액세스될 수 있도록 구성된다. 일 예에서, 프로세서는 가상 대 물리적 어드레스 맵핑 시스템을 구현하기 위해 메모리 관리 유닛과 통신한다.
하나의 실시예에서, 애플리케이션은 상이한 유형의 메모리 디바이스에 기초한 메모리 할당의 최적화를 관리하거나 취급하도록 사전 프로그래밍 또는 달리 구성되지 않는다. 예를 들어, 이는 레거시 소프트웨어 프로그램에서 발생할 수 있다. 이러한 유형의 상황에서, 애플리케이션에 대한 메모리 할당 최적화를 관리하도록 운영 체제를 구성할 수 있다.
일 예에서, 운영 체제는 애플리케이션의 하나 이상의 특성을 검출하거나 달리 결정한다. 특성에 기초하여, 운영 체제는 저장된 메타데이터를 사용하여 메인 메모리의 하나 이상의 어드레스 범위를 애플리케이션에 할당한다. 일 예에서, 특성은 (예를 들어, 애플리케이션이 모바일 디바이스 상에서 런칭될 때) 애플리케이션 자체에 의해 제공되는 정보에 기초하여 결정된다. 다른 예에서, 특성은 애플리케이션이 실행되고 있는 컴퓨터 시스템 이외의 컴퓨팅 디바이스에 의해 제공된다. 일 예에서, 중앙 저장소는 데이터베이스 또는 애플리케이션의 특성 테이블을 저장하고 업데이트하는 데 사용된다. 일 예에서, 중앙 서버는 사용할 물리적 메모리의 유형에 관한 표시를 운영 체제에 제공한다.
하나의 실시예에서, 운영 체제는 컴퓨터 시스템 및/또는 애플리케이션의 실행과 연관된 컨텍스트를 결정한다. 이 컨텍스트를 기초로 운영 체제는 저장된 메타데이터를 사용하여 메인 메모리의 하나 이상의 어드레스 범위를 애플리케이션에 할당한다.
하나의 실시예에서, 저장된 메타데이터는 데이터가 저장된 디바이스를 식별하기 위해 사용된다. 메모리 서브시스템은 메모리 어드레스 공간에서 프로세서(예를 들어, SoC)에 의해 어드레스될 수 있는 다수의 물리적 메모리 디바이스(예를 들어, DRAM, NVRAM 및 NAND 플래시)를 가지고 있다. 메타데이터는 어떤 메모리 어드레스 구역이 어떤 물리적 메모리 디바이스에 맵핑되는지 지정하는 데 사용된다. 메타데이터는 어떤 데이터가 어떤 디바이스에 있는지를 결정하기 위해 DRAM 및/또는 프로세서에 로딩(예를 들어, 프로세서의 캐시에 로딩)될 수 있고, 및/또는 각각의 데이터에 대한 액세스의 레이턴시를 추정하는 데 사용될 수 있다.
하나의 실시예에서, 애플리케이션은 메인 메모리를 사용하는 프로세서를 갖는 모바일 디바이스 상에서 실행된다. 애플리케이션은 모바일 디바이스의 운영 체제에 애플리케이션이 사용할 메인 메모리의 일부를 할당하도록 요청한다. 할당된 메모리는 논리적/가상 메모리 공간에 있다(예를 들어, 프로그래머와 프로세서의 실행 유닛이 보는 메모리 어드레스는 가상적이다). 하나의 실시예에서, 가상 메모리 어드레스는 페이지 테이블에 의해 실제/물리적 메모리에 맵핑된다. 페이지 테이블에 있는 맵핑 데이터의 일부는 프로세서의 버퍼에 캐싱된다. 일 예에서, 버퍼는 TLB(translation lookaside buffer)이다.
하나의 실시예에서, 컴퓨터 시스템은 DRAM, NVRAM, 및 NAND 플래시 메모리 디바이스를 포함한다. 컴퓨터 시스템의 프로세서는 어드레스별로 메인 메모리에 무작위로 액세스한다. 메인 메모리 내의 어드레스는 이러한 세 가지 유형의 메모리 디바이스 상의 데이터 저장소의 물리적 위치에 대응한다. 일 예에서, 각각의 디바이스는 동기 메모리 버스를 사용하여 프로세서에 의해 액세스된다. 일 예에서, DRAM은 CPU와 메모리 제어기 허브 사이에서 데이터를 전달하는 시스템 버스와 동기화된 인터페이스를 갖는 동기식 동적 랜덤 액세스 메모리(SDRAM)이다.
도 1은 일부 실시예에 따른 메모리 서브시스템(110)을 갖는 예시적인 컴퓨팅 환경(100)을 예시한다. 메모리 서브시스템(110)은 메모리 컴포넌트(109A 내지 109N)와 같은 매체를 포함할 수 있다. 메모리 컴포넌트(109A 내지 109N)는 휘발성 메모리 컴포넌트, 비휘발성 메모리 컴포넌트, 또는 그 조합일 수 있다. 일부 실시예에서, 메모리 서브시스템(110)은 메모리 모듈이다. 메모리 모듈의 예로는 DIMM 및 NVDIMM을 포함한다. 일부 실시예에서, 메모리 서브시스템(110)은 하이브리드 메모리/저장소 서브시스템이다. 일반적으로, 컴퓨팅 환경(100)은 메모리 서브시스템(110)을 사용하는 컴퓨터 시스템(120)을 포함할 수 있다. 예를 들어, 컴퓨터 시스템(120)은 메모리 서브시스템(110)에 데이터를 기록하고 메모리 서브시스템(110)으로부터 데이터를 판독할 수 있다.
컴퓨터 시스템(120)은 컴퓨팅 디바이스, 예컨대, 모바일 디바이스, IoT 디바이스, 데스크탑 컴퓨터, 랩톱 컴퓨터, 네트워크 서버, 또는 메모리 및 처리 디바이스를 포함하는 이러한 컴퓨팅 디바이스일 수 있다. 컴퓨터 시스템(120)은 컴퓨터 시스템(120)이 메모리 서브시스템(110)으로부터 데이터를 판독하거나 메모리 서브시스템에 데이터를 기록할 수 있도록 메모리 서브시스템(110)을 포함하거나 이에 결합될 수 있다. 컴퓨터 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브시스템(110)에 결합될 수 있다. 본 출원에 사용될 때, "결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적, 전기적, 광학적, 자기적, 등 같은 연결을 비롯하여 유선이든 무선이든 간접 통신 연결 또는 직접 통신 연결(예를 들어, 개입 컴포넌트가 없음)일 수 있는, 컴포넌트들 사이의 연결을 일반적으로 지칭한다. 물리적 호스트 인터페이스의 예는 SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 파이버 채널, SAS(Serial Attached SCSI), DDR(double data rate) 메모리 버스 등을 포함하지만 이에 제한되지 않는다. 물리적 호스트 인터페이스는 컴퓨터 시스템(120)과 메모리 서브시스템(110) 사이에서 데이터를 송신하는 데 사용될 수 있다. 컴퓨터 시스템(120)은 메모리 서브시스템(110)이 PCIe 인터페이스에 의해 컴퓨터 시스템(120)과 결합될 때 메모리 컴포넌트(109A 내지 109N)에 액세스하기 위해 NVMe(NVM Express) 인터페이스를 추가로 이용할 수 있다. 물리적 호스트 인터페이스는 메모리 서브시스템(110)과 컴퓨터 시스템(120) 사이에 제어, 어드레스, 데이터 및 기타 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
도 1은 예로서 메모리 서브시스템(110)을 예시한다. 일반적으로, 컴퓨터 시스템(120)은 공유 통신 연결, 다중 개별 통신 연결, 및/또는 통신 연결의 조합을 통해 다중 메모리 서브시스템에 액세스할 수 있다. 일 예에서, 각각의 메모리 서브시스템(110)은 메모리 버스를 통해 처리 디바이스(118)에 의해 무작위로 액세스되는 상이한 유형의 메모리 디바이스일 수 있다.
컴퓨터 시스템(120)은 처리 디바이스(118) 및 제어기(116)를 포함한다. 처리 디바이스(118)는 예를 들어 마이크로프로세서, 중앙 처리 유닛(CPU), 프로세서의 처리 코어, 실행 유닛 등일 수 있다. 일부 경우에, 제어기(116)는 메모리 제어기, 메모리 관리 유닛 및/또는 개시자로서 지칭될 수 있다. 일 예에서, 제어기(116)는 컴퓨터 시스템(120)과 하나 이상의 메모리 서브시스템(110) 사이에 결합된 버스를 통한 통신을 제어한다.
일반적으로, 제어기(116)는 메모리 컴포넌트(109A 내지 109N)에 대한 원하는 액세스를 위해 메모리 서브시스템(110)에 명령 또는 요청을 전송할 수 있다. 제어기(116)는 메모리 서브시스템(110)과 통신하기 위한 인터페이스 회로부를 더 포함할 수 있다. 인터페이스 회로부는 메모리 서브시스템(110)으로부터 수신된 응답을 컴퓨터 시스템(120)에 대한 정보로 변환할 수 있다.
컴퓨터 시스템(120)의 제어기(116)는 메모리 서브시스템(110)의 제어기(115)와 통신하여 메모리 컴포넌트(109A 내지 109N)에서 데이터 판독, 데이터 기록 또는 데이터 소거와 같은 동작 및 기타 이러한 동작을 수행할 수 있다. 일부 경우에, 제어기(116)는 처리 디바이스(118)의 동일한 패키지 내에 통합된다. 다른 경우에, 제어기(116)는 처리 디바이스(118)의 패키지와 별개이다. 제어기(116) 및/또는 처리 디바이스(118)는 하나 이상의 집적 회로 및/또는 이산 컴포넌트, 버퍼 메모리, 캐시 메모리, 또는 그 조합과 같은 하드웨어를 포함할 수 있다. 제어기(116) 및/또는 처리 디바이스(118)는 마이크로제어기, 특수 목적 로직 회로부(예를 들어, FPGA(field programmable gate array), ASIC(application specific integrated circuit) 등), 또는 다른 적절한 프로세서일 수 있다.
메모리 컴포넌트(109A 내지 109N)는 다양한 상이한 유형의 비휘발성 메모리 컴포넌트 및/또는 휘발성 메모리 컴포넌트의 임의의 조합을 포함할 수 있다. 비휘발성 메모리 컴포넌트의 예는 네거티브-AND(NAND) 유형 플래시 메모리를 포함한다. 일 예에서, 각각의 메모리 컴포넌트(109A 내지 109N)는 단일 레벨 셀(SLC) 또는 멀티 레벨 셀(MLC)(예를 들어, 트리플 레벨 셀(TLC) 또는 쿼드 레벨 셀(QLC))과 같은 하나 이상의 메모리 셀 어레이를 포함할 수 있다. 일부 실시예에서, 특정 메모리 컴포넌트는 메모리 셀의 SLC 부분 및 MLC 부분 모두를 포함할 수 있다. 각각의 메모리 셀은 컴퓨터 시스템(120)에 의해 사용되는 하나 이상의 데이터 비트(예를 들어, 데이터 블록)를 저장할 수 있다.
NAND 유형 플래시 메모리와 같은 비휘발성 메모리 컴포넌트가 하나의 예이지만, 메모리 컴포넌트(109A 내지 109N)는 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 실시예에서, 메모리 컴포넌트(109A 내지 109N)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), 스핀 전달 토크(STT)-MRAM, 강유전체 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전성 RAM(FeRAM), 전도성 브리지 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), 네거티브-or(NOR) 플래시 메모리, 전기적 소거 가능 프로그램 가능 판독 전용 메모리(EEPROM), 나노와이어 기반 비휘발성 메모리, 멤리스터 기술이 통합된 메모리 및 비휘발성 메모리 셀의 3D XPoint 어레이일 수 있지만 이에 제한되지 않는다. 비휘발성 메모리의 크로스 포인트 어레이는 스택형 크로스-그리드 데이터 액세스 어레이(stackable cross-gridded data access array)와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가적으로, 많은 플래시 기반 메모리와 달리 크로스-포인트 비휘발성 메모리는 기록 인플레이스 (in-place) 동작을 수행할 수 있고, 여기서, 비휘발성 메모리 셀은 비휘발성 메모리 셀이 사전에 소거되지 않고 프로그래밍될 수 있다. 더욱이, 메모리 컴포넌트(109A 내지 109N)의 메모리 셀은, 데이터를 저장하는 데 사용되는 메모리 컴포넌트의 단위를 의미할 수 있는, 메모리 페이지 또는 데이터 블록으로서 그룹화될 수 있다.
메모리 서브시스템(110)의 제어기(115)는 메모리 컴포넌트(109A 내지 109N)와 통신하여 (예를 들어, 제어기(116)에 의해 명령 버스에서 스케줄링된 명령에 응답하여) 메모리 컴포넌트(109A 내지 109N)에서 데이터 판독, 데이터 기록, 또는 데이터 소거와 같은 동작 및 기타 이러한 동작을 수행할 수 있다. 제어기(115)는 하나 이상의 집적 회로 및/또는 이산 컴포넌트, 버퍼 메모리, 또는 그 조합과 같은 하드웨어를 포함할 수 있다. 제어기(115)는 마이크로제어기, 특수 목적 로직 회로부(예를 들어, FPGA(field programmable gate array), ASIC(application specific integrated circuit) 등), 또는 다른 적절한 프로세서일 수 있다. 제어기(115)는 로컬 메모리(119)에 저장된 명령어를 실행하도록 구성된 처리 디바이스(117)(프로세서)를 포함할 수 있다. 예시된 예에서, 제어기(115)의 로컬 메모리(119)는 메모리 서브시스템(110)과 컴퓨터 시스템(120) 사이의 통신 처리를 비롯하여 메모리 서브시스템(110)의 동작을 제어하는 다양한 프로세스, 동작, 로직 플로우 및 루틴을 수행하기 위한 명령어를 저장하도록 구성된 임베디드 메모리를 포함한다. 일부 실시예에서, 로컬 메모리(119)는 메모리 포인터, 인출된 데이터 등을 저장하는 메모리 레지스터를 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로코드를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브시스템(110)이 제어기(115)를 포함하는 것으로 예시되었지만, 본 개시내용의 다른 실시예에서, 메모리 서브시스템(110)은 제어기(115)를 포함하지 않을 수 있고, 대신에 외부 제어(예를 들어, 외부 호스트 또는 메모리 서브시스템과 분리된 프로세서 또는 제어기에 의해 제공됨)에 의존할 수 있다.
일반적으로, 제어기(115)는 컴퓨터 시스템(120)으로부터 명령 또는 동작을 수신할 수 있고, 명령 또는 동작을 명령어 또는 적절한 명령로 변환하여 메모리 컴포넌트(109A 내지 109N)에 대한 원하는 액세스를 달성할 수 있다. 제어기(115)는 메모리 컴포넌트(109A 내지 109N)와 연관된 마모 평준화(wear leveling) 동작, 가비지 컬렉션 동작, 오류 검출 및 오류 정정 코드(ECC) 동작, 암호화 동작, 캐싱 동작, 논리적 블록 어드레스와 물리적 블록 어드레스 사이의 어드레스 변환과 같은 다른 동작을 담당할 수 있다. 제어기(115)는 물리적 호스트 인터페이스를 통해 컴퓨터 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 컴퓨터 시스템으로부터 수신된 명령를 명령 명령어로 변환하여 메모리 컴포넌트(109A 내지 109N)에 액세스할 수 있을 뿐만 아니라 메모리 컴포넌트(109A 내지 109N)와 연관된 응답을 컴퓨터 시스템(120)에 대한 정보로 변환할 수 있다.
메모리 서브시스템(110)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트를 포함할 수 있다. 일부 실시예에서, 메모리 서브시스템(110)은 제어기(115)로부터 어드레스를 수신하고 메모리 컴포넌트(109A 내지 109N)에 액세스하기 위해 어드레스를 디코딩할 수 있는 캐시 또는 버퍼(121)(예를 들어, DRAM 또는 SRAM) 및 어드레스 회로부(예를 들어, 행 디코더 및 열 디코더)를 포함할 수 있다.
컴퓨팅 환경(100)은 (예를 들어, 위의 다양한 실시예에서 설명된 바와 같이) 데이터가 저장된 메모리 디바이스를 식별하는 데 사용되는 메타데이터를 저장하는 컴퓨터 시스템(120)의 메타데이터 컴포넌트(113)를 포함한다. 메타데이터 컴포넌트(113)의 일부는 컴퓨터 시스템(120) 및/또는 메모리 서브시스템(110)에 상주할 수 있다. 일 예에서, 메타데이터의 일부는 로컬 메모리(119) 및/또는 버퍼(121)에 저장된다. 일 예에서, 메타데이터의 일부는 대안적으로 및/또는 추가적으로 제어기(116)의 캐시에 저장된다(예를 들어, 변환 색인 버퍼(translation lookaside buffer)에 저장됨).
일 예에서, 메모리 서브시스템(110)은 DDR 또는 다른 유형의 동기 메모리 버스를 통해 상이한 유형의 메모리 디바이스에 있는 데이터에 대한 컴퓨터 시스템(120)에 대한 액세스를 제공할 수 있다. 하나의 실시예에서, DIMM 상의 NVRAM의 데이터 및 DRAM의 데이터에 대한 액세스가 제공된다. 일 예에서, 데이터는 DDR 메모리 버스를 통해 구성된 호스트 판독/기록 요청 동안 액세스를 위해 컴퓨터 시스템(120)의 랜덤 액세스 메모리 어드레스 공간에서 액세스 가능해진다.
일 예에서, 컴퓨터 시스템(120)은 제어기(115)에 (페이지에 대한 액세스를 위한) 페이지-인(page-in) 요청을 전송한다. 페이지-인 요청을 수신한 것에 응답하여, 제어기(115)는 비휘발성 메모리 디바이스와 같은 느린 매체로부터 휘발성 메모리 디바이스(예를 들어, 메모리 서브시스템(110) 상의 DRAM)로 페이지를 이동시킨다.
일 예에서, 컴퓨터 시스템(120)은 페이지-아웃(page-out) 요청을 제어기(115)에 전송한다. 페이지-아웃 요청을 수신한 것에 응답하여, 제어기(115)는 버퍼(121)를 통해 휘발성 메모리(예를 들어, 메모리 서브시스템(110) 상의 DRAM)에서 데이터를 비휘발성 메모리로 이동시킨다.
일부 실시예에서, 컴퓨터 시스템(120)의 제어기(116) 및/또는 처리 디바이스(118)는 메타데이터 컴포넌트(113)의 적어도 일부를 포함한다. 예를 들어, 제어기(116) 및/또는 처리 디바이스(118)는 메타데이터 컴포넌트(113)를 구현하는 로직 회로부를 포함할 수 있다. 예를 들어, 컴퓨터 시스템(120)의 처리 디바이스(118)(프로세서)는 본 출원에 설명된 바와 같이 메타데이터 컴포넌트(113)에 대한 디바이스 데이터가 저장되어 있는 디바이스를 식별하는 동작을 수행하기 위해 메모리에 저장된 명령어를 실행하도록 구성될 수 있다. 일부 실시예에서, 메타데이터 컴포넌트(113)는 컴퓨터 시스템(120)의 운영 체제, 디바이스 드라이버, 또는 애플리케이션(예를 들어, 컴퓨터 시스템(120)에서 실행되는 애플리케이션)의 일부이다.
일부 실시예에서, 메모리 서브시스템(110)의 제어기(115) 및/또는 처리 디바이스(117)는 메타데이터 컴포넌트(113)의 적어도 일부를 포함한다. 예를 들어, 제어기(115) 및/또는 처리 디바이스(117)는 메타데이터 컴포넌트(113)를 구현하는 로직 회로부를 포함할 수 있다.
일 예에서, 중앙 처리 유닛(CPU)은 CPU에 연결된 메모리 시스템의 메모리에 액세스할 수 있다. 예를 들어, 중앙 처리 유닛(CPU)은 메타데이터 컴포넌트(113)의 저장된 메타데이터에 대한 쿼리에 기초하여 메모리에 액세스하도록 구성될 수 있다.
도 2는 일부 실시예에 따른 메모리 버스(203)를 사용하여 메모리 모듈(205)의 상이한 유형의 메모리에 액세스하는 모바일 디바이스(200)를 도시한다. 도 2는 상이한 유형의 메모리를 갖는 컴퓨터 시스템을 도시한다. 도 2의 컴퓨터 시스템은 모바일 디바이스(200), 및 메모리 버스(203)를 통해 모바일 디바이스(200)에 연결된 메모리 모듈(205)을 포함한다. 메모리 모듈(205)은 도 1에 예시된 메모리 서브시스템(110)의 일 예이다.
모바일 디바이스(200)는 처리 디바이스(118)를 포함하고, 이는 중앙 처리 유닛 또는 하나 이상의 처리 코어를 갖는 마이크로프로세서일 수 있다. 모바일 디바이스(200)는 캐시 메모리(211)를 가질 수 있다. 캐시 메모리(211)의 적어도 일부는 처리 디바이스(118)의 동일한 집적 회로 패키지 내에 선택적으로 통합될 수 있다.
도 2에 예시된 메모리 모듈(205)은 다수의 유형의 메모리(예를 들어, 221 및 223)를 포함한다. 예를 들어, 유형 A의 메모리(221)(예를 들어, DRAM)는 유형 B의 메모리(223)(예를 들어, NVRAM)보다 더 빠르다. 예를 들어, 메모리 버스(203)는 더블 데이터 레이트 버스일 수 있다. 일반적으로, 여러 메모리 모듈(예를 들어, 205)이 메모리 버스(203)에 결합될 수 있다.
처리 디바이스(118)는 메타데이터 컴포넌트(113)를 사용하여 컴퓨터 시스템의 메모리의 일부에 액세스하기 위해 명령어(예를 들어, 운영 체제 및/또는 하나 이상의 디바이스 드라이버)를 통해 구성된다. 예를 들어, 메모리 모듈(205)의 유형 B(예를 들어, NVRAM)의 메모리(223)가 액세스될 수 있거나 메모리 모듈(205)의 유형 A의 메모리(221)(예를 들어, DRAM)가 액세스될 수 있다. 하나의 실시예에서, 메모리 모듈(205)의 유형 B의 메모리(223)는 메모리 모듈(205)의 유형 A의 메모리(221)를 어드레싱하는 것을 통해서만 액세스 가능하다.
제어기(227)는 유형 A의 메모리(221) 및 유형 B의 메모리(223)에 대한 데이터 액세스를 관리하기 위해 메모리 모듈(205)에 제공될 수 있다. 하나의 실시예에서, 제어기(227)는 버퍼(121)로 또는 버퍼로부터 데이터를 전달할 때 모바일 디바이스(200) 및 메모리 모듈(205)에 의한 DRAM 또는 NVRAM에 대한 액세스를 다중화한다. 일 예에서, 메모리 버스(203)는 모바일 디바이스(200)와 메모리 모듈(205) 사이의 DDR 인터페이스로서 호스트 DDR 채널을 제공한다. 일 예에서, 페이지가 NVRAM 메모리에서 버퍼(121)로 검색되면, 페이지는 통상적인 DDR4 슬롯(예를 들어, 호스트 DDR 채널)을 통해 모바일 디바이스에 의한 액세스를 위해 로딩될 수 있다.
일반적으로, 메모리 서브시스템(예를 들어, 205)은 메모리(예를 들어, 221, …, 223)와 같은 매체를 포함할 수 있다. 메모리(예를 들어, 221, …, 223)는 휘발성 메모리, 비휘발성 메모리(NVM), 및/또는 그 조합을 포함할 수 있다. 처리 디바이스(118)는 메모리 서브시스템(예를 들어, 메모리 모듈(205)) 각각에 데이터를 기록하고 메모리 서브시스템(예를 들어, 메모리 모듈(205))으로부터 데이터를 직접 또는 간접적으로 판독할 수 있다.
하나의 실시예에서, 메모리 모듈(205)은 버퍼(121)를 사용하여 비휘발성 메모리 또는 휘발성 메모리에 대한 메모리 버스 액세스를 제공한다. 일 예에서, 메모리 모듈(205)은 DDR 버스를 통해 모바일 디바이스(200)에 결합된 DIMM이다. 저장 매체는 예를 들어 크로스 포인트 메모리(cross point memory)이다.
하나의 실시예에서, 모바일 디바이스는(예를 들어, DDR4 버스를 사용하여) 판독/기록 동작을 위한 통신 채널을 통해 메모리 모듈과 통신한다. 모바일 디바이스는 메모리 모듈과 같은 컴퓨터 주변 디바이스가 컴퓨터 버스(예를 들어, SATA(Serial AT Attachment), 주변 디바이스 컴포넌트 인터커넥트(PCI), PCI 확장(PCI-X), PCI 익스프레스(PCIe))와 같은 인터커넥트, 통신 부분 및/또는 컴퓨터 네트워크를 통해 연결될 수 있는 하나 이상의 중앙 처리 유닛(CPU)을 가질 수 있다.
하나의 실시예에서, 메모리 모듈은 프로세서에 대한 데이터를 비휘발성 또는 휘발성 저장 매체에 저장하는 데 사용될 수 있다. 메모리 모듈은 통신 채널을 사용하여 모바일 디바이스와의 통신을 구현하는 호스트 인터페이스를 갖는다. 하나의 실시예에서, 메모리 모듈(205)은 처리 디바이스(118)로부터의 통신에 응답하여 동작을 수행하기 위해 예를 들어 펌웨어를 실행하는 제어기(227)를 갖는다. 일 예에서, 메모리 모듈은 휘발성 DRAM(Dynamic Random-Access Memory) 및 NVRAM을 포함한다. DRAM 및 NVRAM은 메모리 어드레스 공간에서 처리 디바이스(118)에 의해 액세스 가능한 데이터를 저장한다.
예시된 바와 같이, 도 2의 컴퓨터 시스템이 모바일 디바이스를 구현하는 데 사용된다. 처리 디바이스(118)는 메모리 서브시스템(예를 들어, 205)으로부터 데이터를 판독하거나 메모리 서브시스템에 데이터를 기록할 수 있다.
물리적 호스트 인터페이스는 처리 디바이스(118)와 메모리 서브시스템(예를 들어, 205) 사이에서 데이터를 송신하는 데 사용될 수 있다. 물리적 호스트 인터페이스는 메모리 서브시스템(예를 들어, 205)과 처리 디바이스(118) 사이에 제어, 어드레스, 데이터, 및 기타 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
일반적으로, 메모리 서브시스템(예를 들어, 메모리 모듈(205))은 메모리(예를 들어, 221, …, 223)를 제공하는 메모리 집적 회로와 같은 메모리 디바이스의 세트를 연결하는 인쇄 회로 보드를 포함한다. 메모리 서브시스템(예를 들어, 205) 상의 메모리(예를 들어, 221, …, 223)는 상이한 유형의 비휘발성 메모리 디바이스 및/또는 휘발성 메모리 디바이스의 임의의 조합을 포함할 수 있다.
일부 구현에서, 메모리(예를 들어, 221, …, 223)는 RAM(random access memory), ROM(read-only memory), DRAM(dynamic random access memory), SRAM(static random access memory), SDRAM(synchronous dynamic random access memory), PCM(phase change memory), MRAM(magneto random access memory), NOR(negative-or) flash memory, EEPROM(electrically erasable programmable read-only memory) 및/또는 비휘발성 메모리 셀의 크로스 포인트 어레이를 포함할 수 있지만 이에 제한되지 않는다.
메모리 서브시스템(예를 들어, 메모리 모듈(205))은 메모리(예를 들어, 221, …, 223)와 통신하여 메모리(예를 들어, 221, …, 223)에서 데이터 판독, 데이터 기록 또는 데이터 소거 같은 동작 및 기타 이러한 동작을 처리 디바이스(118)로부터의 요청, 명령 또는 명령어에 응답하여 수행하는 제어기(예를 들어, 227)를 가질 수 있다. 제어기(예를 들어, 227)는 하나 이상의 집적 회로 및/또는 이산 컴포넌트, 버퍼 메모리, 또는 그 조합과 같은 하드웨어를 포함할 수 있다. 제어기(예를 들어, 227)는 마이크로제어기, 특수 목적 로직 회로부(예를 들어, FPGA(field programmable gate array), ASIC(application specific integrated circuit) 등), 또는 다른 적절한 프로세서일 수 있다. 제어기(예를 들어, 227)는 로컬 메모리에 저장된 명령어를 실행하도록 구성된 하나 이상의 프로세서(처리 디바이스)를 포함할 수 있다.
제어기(예를 들어, 227)의 로컬 메모리는 메모리 서브시스템(예를 들어, 205)과 처리 디바이스(118) 사이의 통신 및 아래에서 더 구체적으로 설명되는 다른 기능들을 취급하는 것을 비롯하여 메모리 서브시스템(예를 들어, 205)의 동작을 제어하는 다양한 프로세스, 동작, 로직 플로우 및 루틴을 수행하기 위한 명령어를 저장하도록 구성된 임베디드 메모리를 포함할 수 있다. 제어기의 로컬 메모리(예를 들어, 227)는 마이크로코드를 저장하기 위한 판독 전용 메모리(ROM) 및/또는 예를 들어 메모리 포인터, 인출된 데이터 등을 저장하는 메모리 레지스터를 포함할 수 있다.
도 2의 예시적인 메모리 서브시스템(205)이 제어기(227)를 포함하는 것으로 예시되었지만, 본 개시내용의 다른 실시예에서, 메모리 서브시스템(예를 들어, 205)은 제어기(예를 들어, 227)를 포함하지 않을 수 있고, 대신에 외부 제어(예를 들어, 외부 호스트 또는 메모리 서브시스템(예를 들어, 205)과 분리된 프로세서 또는 제어기에 의해 제공됨)에 의존할 수 있다.
일반적으로, 제어기(예를 들어, 227)는 통신 채널(예를 들어, 203)에 대한 표준 통신 프로토콜에 따라 처리 디바이스(118)로부터 명령, 요청 또는 명령어를 수신할 수 있고, 메모리(예를 들어, 221, …, 223)에 대한 원하는 액세스를 달성하기 위해 명령, 요청 또는 명령어를 표준 프로토콜에 따라 메모리 서브시스템(예를 들어, 205) 내의 상세 명령어 또는 적절한 명령로 변환할 수 있다. 예를 들어, 제어기(예를 들어, 227)는 메모리(예를 들어, 221, …, 223)와 연관된 논리적 어드레스와 물리적 어드레스 사이의 어드레스 변환과 같은 동작을 담당할 수 있다. 제어기(예를 들어, 227)는 물리적 호스트 인터페이스를 통해 처리 디바이스(118)와 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 처리 디바이스(118)로부터 수신된 명령를 메모리 디바이스(예를 들어, 221, …, 223)에 액세스하기 위한 명령 명령어로 변환할 수 있을 뿐만 아니라 메모리 디바이스(예를 들어, 221, …, 223)와 연관된 응답을 처리 디바이스(118)에 대한 정보로 변환할 수 있다.
메모리 서브시스템(예를 들어, 205)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트를 포함할 수 있다. 일부 구현에서, 메모리 서브시스템(예를 들어, 205)은 캐시 또는 버퍼(예를 들어, DRAM) 및 어드레스 회로부(예를 들어, 행 디코더 및 열 디코더)를 포함할 수 있고, 어드레스 회로는 제어기(예를 들어, 227)로부터의 어드레스를 수신하고, 이 어드레스를 디코딩하여 메모리(예를 들어, 221, …, 223)에 액세스할 수 있다.
일 예에서, 메모리 버스(203)는 메모리 서브시스템(예를 들어, 205)에 전력을 제공하고/하거나 미리 결정된 프로토콜을 통해 메모리 서브시스템(예를 들어, 205)과 통신하기 위한 하나 이상의 커넥터를 갖고; 메모리 서브시스템(예를 들어, 205)은 처리 디바이스(118)로부터 전력, 데이터 및 명령를 수신하기 위한 하나 이상의 커넥터를 갖는다. 일 예에서, 처리 디바이스(118)는 컴퓨터 시스템의 메모리의 일부(예를 들어, NVRAM에 저장된 페이지)가 동기식 메모리 액세스를 사용하여 액세스되는 메모리 액세스를 포함하는 서비스를 제공하기 위해 하나 이상의 운영 체제를 실행할 수 있다.
도 3은 일부 실시예에 따른 메모리 서브시스템(302)의 메모리 디바이스에 액세스하는 데 사용되는 메타데이터(320)를 저장하는 예시적인 컴퓨터 시스템(300)을 예시한다. 메모리 서브시스템(302)에서 액세스되는 메모리 디바이스는 DRAM(304), NVRAM(306), 및 NAND 플래시(308)를 포함한다. 하나의 실시예에서, 컴퓨터 시스템(300)은 대안적으로 및/또는 추가적으로 메모리 디바이스에 액세스하기 위해 사용되는 DRAM(304)에 메타데이터(322)를 저장한다.
하나의 실시예에서, 컴퓨터 시스템(300)의 처리 디바이스(310)는 어드레스 공간의 메모리에 액세스한다. 일 예에서, 메모리는 하나 이상의 애플리케이션을 실행할 때 처리 디바이스(310)에 의해 사용되는 메인 메모리이다. 처리 디바이스(310)는 어드레스 공간의 어드레스를 사용하여 상이한 메모리 디바이스에 액세스한다.
하나의 실시예에서, 메타데이터(320, 322)는 어드레스 공간의 제1 어드레스 범위를 메모리 디바이스(예를 들어, DRAM(304))와 연관시키고 어드레스 공간의 제2 어드레스 범위를 상이한 메모리 디바이스(예를 들어, NVRAM(306) 또는 NAND 플래시(308))와 연관시킨다. 일 예에서, DRAM(304)의 레이턴시는 NVRAM(306) 및 NAND 플래시(308)의 레이턴시보다 더 작다.
처리 디바이스(310) 상에서 실행되는 애플리케이션은 애플리케이션(312)을 포함하고, 이는 메모리 유형(314)을 포함하도록 구성된다. 애플리케이션(312)이 초기에 런칭될 때, 애플리케이션(312)은 컴퓨터 시스템(300)의 메인 메모리에서의 메모리 할당에 대한 요청과 함께 메모리 유형(314)을 처리 디바이스(310)에 제공한다.
메모리 할당에 대한 요청에 응답하여, 처리 디바이스(310)는 메타데이터(320)에 대한 쿼리를 생성하고/하거나 메타데이터(322)에 쿼리를 전송한다. 이들 쿼리 중 하나 또는 양자 모두로부터의 결과에 기초하여, 처리 디바이스(310)는 어드레스 공간의 어드레스 범위를 애플리케이션(312)에 할당한다.
하나의 실시예에서, 애플리케이션(312)은 메모리 디바이스와 연관된 레이턴시의 표시를 위해 처리 디바이스(310)에 요청을 수행한다. 처리 디바이스(310)는 메타데이터(320, 322)에 액세스하여 결과를 획득하고, 이 결과에 기초하여 애플리케이션(312)에 레이턴시의 표시를 제공한다. 레이턴시 표시를 수신한 것에 응답하여, 애플리케이션(312)은 메모리 디바이스, 메모리 유형(314)에 대응하는 메모리 디바이스, 또는 적어도 하나 또는 그 이상의 미리 결정된 임계값 및/또는 요건을 충족하는 성능 특성을 갖는 메모리의 할당에 대한 요청 중 특정 하나에 대응하는 메모리 할당을 요청한다.
하나의 실시예에서, 메타데이터(322)는 가상 어드레스 공간의 어드레스 범위를 메모리 서브시스템(302)의 메모리 디바이스의 물리적 어드레스와 연관시키는 데이터를 저장한다. 일 예에서, 메타데이터(322)는 NVRAM에 대한 어드레스 범위(324) 및 NAND 플래시에 대한 어드레스 범위(326)를 저장한다. 일 예에서, 어드레스 범위(324)는 처리 디바이스(310)의 가상 또는 논리적 어드레스를 NVRAM(306)의 물리적 어드레스에 맵핑한다. 일 예에서, 어드레스 범위(326)는 처리 디바이스(310)의 가상 또는 논리적 어드레스를 NAND 플래시(308)의 물리적 어드레스에 맵핑한다. 하나의 실시예에서, 메타데이터(320 또는 322)는 DRAM(304)에 저장된 데이터에 대한 처리 디바이스(310)의 어드레스를 맵핑하는 하나 이상의 어드레스 범위를 저장한다.
하나의 실시예에서, 메타데이터(322)는 컴퓨터 시스템(300)의 메모리 관리 유닛(316)에 대한 물리적 어드레스에 대한 가상 어드레스의 맵핑을 제공하는 페이지 테이블(328)의 일부로서 저장된다. 처리 디바이스(310)는 메모리 관리 유닛(316)에 가상 어드레스를 제공하고, 이는 변환 색인 버퍼(318)에 액세스하여 메모리 서브시스템(302)의 메모리 디바이스 중 하나의 물리적 어드레스를 획득한다.
하나의 실시예에서, 변환 색인 버퍼(318)는 페이지 테이블(328)로부터의 데이터의 일부를 저장하는 캐시이다. 일 예에서, 버퍼(318)는 메타데이터(322)의 일부를 저장한다. 하나의 실시예에서, 컴퓨터 시스템(300)에 저장된 메타데이터(320)의 일부는 메모리 서브시스템(302)의 메모리 디바이스에 액세스할 때 메모리 관리 유닛(316)에 의한 액세스를 위해 변환 색인 버퍼(318)에 복사된다.
하나의 실시예에서, 처리 디바이스(310)는 애플리케이션(312)에 상이한 메모리 디바이스의 메모리 특성을 제공한다. 애플리케이션(312)은 제공된 메모리 특성에 기초하여 메모리 할당에 대한 요청을 수행한다.
하나의 실시예에서, 처리 디바이스(310)는 애플리케이션(312)으로부터 요청된 레이턴시를 수신한다. 요청된 레이턴시를 기초로 애플리케이션(312)에 어드레스 범위가 할당된다.
하나의 실시예에서, 처리 디바이스(310)는 애플리케이션(312)과 연관된 우선순위를 결정한다. 애플리케이션(312)에 할당된 어드레스 범위는 결정된 우선순위를 기초로 한다. 일 예에서, 결정된 우선순위와 함께 사용하기 위해 더 빠른 메모리 디바이스 유형이 선택된다. 처리 디바이스(310)는 선택된 더 빠른 메모리 디바이스 유형의 메모리 디바이스에 데이터를 물리적으로 저장하는 어드레스 범위를 선택하기 위해 메타데이터(320, 322)를 사용한다.
하나의 실시예에서, 처리 디바이스(310)는 애플리케이션(312)의 우선순위의 변경을 결정한다. 일 예에서, 애플리케이션(312)의 우선순위 증가에 기초하여, 처리 디바이스(310)는 어드레스 공간에서 애플리케이션(312)에 사용되는 메모리 할당을 변경한다. 일 예에서, 우선순위의 증가에 응답하여, 처리 디바이스(310)는 더 빠른 물리적 메모리 디바이스에 대응하는 어드레스 범위를 결정하기 위해 메타데이터(320, 322)에 액세스한다.
하나의 실시예에서, 처리 디바이스(310)는 어드레스 공간에서 애플리케이션(312)에 의한 데이터 액세스와 연관된 관찰 특성에 기초하여 애플리케이션(312)의 우선순위를 결정한다. 관찰된 특성은 애플리케이션(312)에 대한 메모리 사용을 할당하는 데 사용될 수 있다. 하나의 실시예에서, 처리 디바이스(310)는 물리적 메모리 디바이스와 연관된 하나 이상의 레이턴시를 결정한다. 메타데이터(320, 322)는 결정된 하나 이상의 레이턴시에 관한 데이터를 저장하며, 이는 메인 메모리의 할당을 초기에 할당 및/또는 변경할 때 처리 디바이스(310)에 의해 사용될 수 있다.
도 4는 일부 실시예에 따른 휘발성 메모리(402) 및 비휘발성 메모리(404)에 대한 호스트 컴퓨터 시스템(도시되지 않음)에 의한 메모리 버스 액세스를 위해 구성된 메모리 모듈(401)을 도시한다. 메모리 모듈(401)은 메모리 서브시스템(302) 또는 메모리 모듈(205)의 예이다. 일 예에서, 메모리 모듈(401)은 하이브리드 DIMM이다. 휘발성 메모리(402)는 예를 들어 DRAM이다.
메모리 모듈(401)은 메모리 제어기(416)에 의해 휘발성 메모리(402) 및 비휘발성 메모리(404)에 대한 액세스를 제공하기 위해 멀티플렉서(408)를 사용한다. 메모리 제어기(416)는 호스트 시스템에 의한 판독/기록 액세스를 취급하기 위해 호스트 인터페이스(406)에 결합된다. 하나의 실시예에서, 멀티플렉서(408)는 호스트 인터페이스(406)를 통해 호스트 시스템으로부터 판독 또는 기록 명령를 수신한 것에 응답하여 메모리 제어기(416)로부터 수신된 신호에 기초하여 제어된다.
일 예에서, 호스트 시스템은 메모리 모듈(401)(예를 들어, DIMM) 상의 메모리 공간(예를 들어, DRAM 메모리 어드레스 공간)에 액세스한다. DIMM은 그 자체를 DRAM의 채널로서 호스트에 노출시킨다. 하나의 실시예에서, 호스트 시스템의 하이퍼바이저는 DIMM 상의 데이터 이동을 제어한다. 예를 들어, DRAM 어드레스 공간 안팎으로 메모리 블록을 이동하고 호스트에서 실행되는 소프트웨어에 DRAM 페이지를 노출하라는 요청이 이루어진다. 예를 들어, 소프트웨어는 가상 기계(VM)에서 실행된다.
일 예에서, 현재 DRAM 또는 NVRAM에 있는 페이지를 요청하도록 드라이버를 위해 페이지-인/아웃 제어 경로가 제공된다. 일 예에서, NVRAM은 DRAM보다 훨씬 더 큰 용량을 가지고 있다.
일 예에서, 메모리 모듈(401)은 DIMM으로서 구현된다. 비휘발성 메모리(404)는 3D XPoint 메모리 패키지에 의해 제공된다. 일 예에서, 3D XPoint 메모리에서 획득한 데이터 페이지가 버퍼 안팎으로 복사된다(페이지-인/페이지-아웃).
일 예에서 호스트 시스템은 정상적인 DDR4 타이밍을 사용하여 임의의 DRAM 또는 NVRAM 어드레스에 대한 판독/기록 액세스 권한을 갖는다. 예를 들어, 호스트는 이들 시간 동안 DDR4 규칙에 따라 임의적인 트래픽을 생성할 수 있다.
일 예에서, 비휘발성 메모리(404)의 전체 DDR 어드레스 공간은 호스트 시스템에 노출된다. 다양한 실시예에 따르면, 컴퓨터 시스템(120)의 제어기(예를 들어, 제어기(116))는 통상적인 DRAM에 액세스하기 위한 것과 동일한 방식(예를 들어, 동일한 판독/기록 및 리프레시 타이밍 사이클)으로 동작할 수 있다.
도 5는 적어도 일부 실시예에 따른, 메모리 버스를 사용하여 메모리 모듈(502)에 액세스하는 호스트 운영 체제(241)를 도시한다. 메모리 모듈(502)은 버퍼(410)를 포함한다. 버퍼(410)는 버퍼(121)의 예이다. 일 예에서, 버퍼(410)는 메타데이터(322) 및/또는 페이지 테이블(328)의 적어도 일부를 저장한다. 명령 및 데이터는 호스트 인터페이스(406)를 통해 호스트 운영 체제(241)로부터 수신된다. 일 예에서, 호스트 운영 체제(241)는 컴퓨터 시스템(120 또는 300)에서 실행된다.
하나의 실시예에서, 디바이스 드라이버(247)(예를 들어, 백엔드 드라이버)는 하이퍼바이저(245)를 통한 메모리 액세스를 위해 구성된다. 일 예에서, 도 5의 시스템은 도 1 내지 도 3의 컴퓨터 시스템에서 구현된다.
일 예에서, 호스트 운영 체제(241)는 도 1 또는 도 2의 컴퓨터 시스템의 처리 디바이스(118) 또는 도 3의 처리 디바이스(310)에서 실행된다. 호스트 운영 체제(241)는 메모리 모듈(205) 또는 메모리 서브시스템(302)과 같은 메모리 서브시스템의 메모리(예를 들어, 221, …, 223)를 사용하여 메모리 서비스를 제공하는 하나 이상의 디바이스 드라이버(예를 들어, 247)를 포함한다.
하나의 실시예에서, 백엔드 드라이버(247)는 맵핑 테이블(246)을 유지한다. 예를 들어, 드라이버(247)는 DRAM(304), NVRAM(306) 및 NAND 플래시(308)에 저장된 데이터 페이지에 대한 맵핑을 포함하도록 맵핑 테이블(246)을 유지한다.
하나의 실시예에서, 호스트 운영 체제(241)는 가상 기계(249)를 프로비저닝하는 하이퍼바이저(245)를 포함한다. 가상 기계(249)는 도 1 내지 도 3의 컴퓨팅 시스템의 하드웨어를 사용하여 호스트 운영 체제(241)에 의해 제공되는 자원 및 서비스를 통해 구현되는 가상 하드웨어를 갖는다. 예를 들어, 하이퍼바이저(245)는 메모리 모듈(205)과 같은 메모리 서브시스템의 메모리(예를 들어, 221, …, 223)의 일부를 사용하여 가상 기계(249)의 일부로서 가상 메모리를 프로비저닝할 수 있다.
가상 기계(249)는 게스트 운영 체제(243)가 가상 기계에서 프로비저닝하는 것과 동일하거나 유사한 하드웨어 세트를 갖는 물리적 컴퓨팅 기계에서 실행되는 운영 체제(243)와 같은 방식으로 게스트 운영 체제(243)에서 실행되는 애플리케이션(예를 들어, 251, …, 253)에 자원 및/또는 서비스를 제공할 수 있게 한다. 하이퍼바이저(245)는 가상 기계에 프로비저닝된 가상 하드웨어와 호스트 운영 체제(241)에 의해 관리되는 컴퓨팅 시스템의 하드웨어 서비스 사이의 맵핑을 관리한다.
디바이스 드라이버(248)(예를 들어, 프론트엔드 드라이버)는 백엔드 드라이버(247)와 통신한다. 드라이버(247) 및 드라이버(248)는 추가적인 DDR 용량(예를 들어, DRAM 또는 NVRAM의 용량)이 이용 가능한 경우 메모리 벌루닝(memory ballooning)을 위해 통신할 수 있다.
도 5는 가상 기계(249)가 하이퍼바이저(245)에 의해 프로비저닝되는 인스턴스를 예시한다. 일반적으로, 하이퍼바이저(245)는 동일한 게스트 운영 체제(243) 또는 상이한 게스트 운영 체제를 실행할 수 있는 여러 가상 기계(예를 들어, 249)를 프로비저닝할 수 있다. 상이한 가상 기계를 사용하기 위해 상이한 사용자 및/또는 애플리케이션 프로그램의 세트를 할당할 수 있다.
일부 경우에, 호스트 운영 체제(241)는 가상 기계의 프로비저닝을 위한 서비스를 제공하도록 전문화되어 있고 다른 애플리케이션 프로그램을 실행하지 않는다. 대안적으로, 호스트 운영 체제(241)는 애플리케이션(예를 들어, 251, …, 253)과 같은 다른 애플리케이션 프로그램을 지원하기 위해 추가적인 서비스를 제공할 수 있다.
하나의 실시예에서, 디바이스 드라이버(247)는 가상 기계(249)에 의한 사용을 위해 더 느린 메모리(예를 들어, NVRAM)로부터 더 빠른 메모리(예를 들어, DRAM)로 페이지의 페이지-인을 요청하도록 구성될 수 있다. 이 요청은 애플리케이션(예를 들어, 도 3의 애플리케이션(312))으로부터의 요청에 응답하여 이루어질 수 있다. 페이지를 요청한 후, 페이지는 더 느린 메모리로부터 더 빠른 메모리로 데이터의 페이지를 로딩 및/또는 전달함으로써 더 빠른 메모리에서 이용 가능하게 된다. 일 예에서, 처리 디바이스(310)는 메타데이터(320, 322)로서 저장된 어드레스 범위 정보에 기초하여 더 느린 메모리로부터 더 빠른 메모리로 페이지를 이동시킨다. 일 예에서, 더 느린 메모리는 메모리 모듈(401)의 비휘발성 메모리(404)일 수 있고 더 빠른 메모리는 동일한 메모리 모듈(401)의 휘발성 메모리(402)일 수 있다.
하나의 실시예에서, 데이터의 전달(예를 들어, 호스트 운영 체제(241)에 의한 페이지-인 요청에 응답하여 수행됨)은 동일한 메모리 모듈(401) 내와 같은 동일한 메모리 서브시스템 내에서 수행되어 메모리 버스(203)와 같은 처리 디바이스(118)에 연결된 통신 채널의 혼잡을 방지하거나 감소시킨다. 예를 들어, 데이터는 디바이스 드라이버(247)로부터의 하나 이상의 명령, 요청, 및/또는 명령어에 응답하여 메모리 모듈(205)의 제어기(227)의 제어 하에 메모리 모듈(205)의 더 느린 메모리(223)(예를 들어, NVRAM 또는 NAND 플래시)로부터 메모리 모듈(205)의 더 빠른 메모리(221)(예를 들어, DRAM)로 복사될 수 있다.
하나의 실시예에서, 하이퍼바이저(245)는 메모리 서브시스템(예를 들어, 메모리 모듈(205))의 메모리(예를 들어, 221, …, 223)에 액세스할 것을 디바이스 드라이버(247)에 요청할 뿐만 아니라 또한 사용될 메모리(예를 들어, 221, …, 223, …, 또는 225)의 페이지를 관리하는 데 사용될 수 있는 정보를 디바이스 드라이버(247)에 제공한다. 일 예에서, 제공된 정보는 저장된 메타데이터(320 또는 322)를 포함한다.
일 예에서, 드라이버(247)는 메모리 모듈(502)(예를 들어, DIMM)의 메모리 어드레스 공간에 액세스하기 위해 사용되는 메모리 모드 드라이버이다. 드라이버(247)는 어느 페이지들이 어느 때든 한번에 DIMM의 휘발성 메모리에 있게 되는지를 제어한다. 한 가지 접근법에서, 예를 들어, 메모리 어드레스 공간은 게스트 운영 체제(243)에 노출된다. 이 하이퍼바이저 환경에서, 게스트 운영 체제(243)는 DIMM에서 비휘발성 메모리(예를 들어, NVRAM 및 DRAM)의 전체 저장 용량을 보게 된다.
일 예에서, DDR DRAM에 있는 다수의 페이지만이 호스트 운영 체제(241)를 통해 능동적으로 페이지-인 된다. 존재하지 않는 페이지에 대한 게스트 액세스가 있는 경우, 호스트 시스템의 메모리 관리 유닛(MMU)의 페이지 폴트 경로(page fault path)가 드라이버(247)를 트리거하여 페이지의 로딩(페이지-인)을 유발한다. 일 예에서, 페이지는 제어 레지스터를 통해 로딩된다. 페이지가 DDR DRAM에 실제로 존재하면, 이때, 드라이버(247)는 게스트 애플리케이션이 해당 데이터를 직접 판독하고 기록할 수 있도록 (맵핑 테이블(246)을 통해) MMU 맵핑을 설정할 수 있다.
일 예에서, 게스트의 프론트엔드 드라이버와 호스트의 백엔드 드라이버는 메모리 어드레스 공간에 대한 액세스와 관하여 통신한다. 일 예에서, 페이지가 활용도가 떨어진다고 결정할 때(예를 들어, 미리 결정된 임계값에 기초하여 자주 사용되지 않음), DDR 메모리 어드레스 공간에 현재 맵핑된 데이터의 일부를 NVRAM 메모리로 (예를 들어, SRAM 버퍼를 통해) 푸시백하도록 요청하여 다른 페이지가 페이지-인되도록 DRAM 메모리의 이용 가능한 공간을 형성한다. 백엔드 드라이버(247)는 DDR DRAM로부터 NVRAM 메모리로 데이터를 이동시키기 위해 페이지-아웃 요청을 통신한다.
하나의 실시예에서, 백엔드 드라이버(247)는 메모리 모드 드라이버로서 동작한다. 드라이버(247)가 로딩될 때까지, 메모리 모듈(502)의 NVRAM 메모리 용량에 대한 어떠한 액세스도 존재하지 않는다. 메모리 모드 드라이버로서의 이 동작 동안, 게스트 운영 체제(243)는 메모리를 정상으로 보고, 드라이버(247)는 페이지-인 및 페이지-아웃 동작을 위해 메모리 모듈에 DRAM 페이지를 예약한다.
드라이버(247)는 NVRAM 메모리를 게스트 운영 체제(243)에 노출하고, (예를 들어, 맵핑 테이블(246)에서) 페이지 맵핑을 유지한다. 예를 들어, 드라이버(247)는 현재 DRAM에 있는 페이지와 NVRAM 메모리에 있는 페이지 사이의 맵핑을 유지한다.
일 예에서, 드라이버(247)는 호스트 시스템에서 메모리 관리 유닛 맵핑 테이블을 설정하여 현재 DRAM에 저장된 임의의 페이지를 맵핑한다. 페이지-인 요청을 트리거하기 위해 맵핑된 페이지 외부에 대한 액세스가 존재하는 경우, 게스트의 페이지 폴트 경로를 사용할 수 있다. 페이지-아웃 요청은 DRAM의 일부 메모리 공간을 유지하기 위해 수행될 수 있다.
하나의 실시예에서, 동작은 메모리 모드로 제한되지 않는다. 드라이버(247)는 NVRAM 메모리가 블록 모드 저장소로서 노출되는 블록 모드 드라이버로도 동작할 수 있다.
하나의 실시예에서, 메모리 모듈(502)은 SRAM 버퍼(도시되지 않음)에 있는 페이지의 목록을 포함하는 그 자신의 맵핑 테이블을 유지한다. 메모리 모듈(502)은 페이지가 SRAM 버퍼로 이동되면 호스트 시스템에 페이지-인 완료 신호를 반환할 수 있다. 이들은 호스트 시스템이 특정 페이지에 액세스하는 레이턴시의 감소를 허용한다. 드라이버(247)는 맵핑이 설정될 때까지 페이지-인 요청이 완료될 때까지 호스트가 해당 페이지(들)에 액세스하지 않는 것을 보장한다.
하나의 실시예에서, 드라이버(247)는 페이지-아웃 동작을 구현한다. 일 예에서 이 동작은 스레드로서 트리거된다. 이 동작은 DRAM 메모리의 외부로 프리(free) 페이지를 다시 트레이드하고 유효한 페이지의 맵핑을 변경한다.
도 6은 일부 실시예에 따른 컴퓨터 시스템의 메모리 디바이스에 대한 물리적 어드레스와 어드레스 공간의 프로세스에 대한 가상 어드레스 범위를 연관시키는 저장된 메타데이터에 기초하여 컴퓨터 시스템의 어드레스 공간에서 프로세스에 대한 메모리를 관리하는 방법을 도시한다. 예를 들어, 도 6의 방법은 도 1 내지 도 3의 시스템에서 구현될 수 있다.
도 6의 방법은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스 상에서 실시되거나 실행되는 명령어) 또는 그 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예에서, 도 6의 방법은 하나 이상의 처리 디바이스(예를 들어, 도 3의 처리 디바이스(310))에 의해 적어도 부분적으로 수행된다.
특정한 시퀀스나 순서로 도시되어 있지만 달리 명시되지 않는 한, 프로세스의 순서는 수정될 수 있다. 따라서, 예시된 실시예는 예시로서만 이해하여야 하며, 예시된 프로세스는 상이한 순서로 수행될 수 있고, 일부 프로세스는 병렬로 수행될 수 있다. 추가적으로, 다양한 실시예에서 하나 이상의 프로세스가 생략될 수 있다. 따라서, 모든 실시예에서 모든 프로세스가 필요한 것은 아니다. 다른 프로세스 흐름이 가능하다.
블록 601에서, 운영 체제는 어드레스 공간에서 메모리를 유지한다. 메모리는 어드레스 공간의 어드레스를 사용하여 제1 메모리 디바이스 및 제2 메모리 디바이스에 액세스하는 것을 포함하여 액세스된다. 일 예에서, 운영 체제는 도 3의 처리 디바이스(310)에서 실행된다. 일 예에서, 제1 메모리 디바이스는 DRAM(304)이고, 제2 메모리 디바이스는 NVRAM(306)이다. 일 예에서, 제1 메모리 디바이스는 NVRAM(306)이고, 제2 메모리 디바이스는 NAND 플래시(308)이다.
블록 603에서, 어드레스 공간의 제1 어드레스 범위를 제1 메모리 디바이스와 연관시키는 메타데이터가 저장된다. 메타데이터는 또한 어드레스 공간의 제2 어드레스 범위를 제2 메모리 디바이스와 연관시킨다. 일 예에서, 저장된 메타데이터는 도 3의 메타데이터(320 및/또는 322)이다. 일 예에서, 제1 어드레스 범위는 어드레스 범위 324이고, 제2 어드레스 범위는 어드레스 범위 326이다.
블록 605에서, 컴퓨터 시스템에서 실행되는 프로세스는 저장된 메타데이터에 기초하여 관리된다. 프로세스는 제1 프로세스 및 제2 프로세스를 포함한다. 제1 프로세스에 대한 데이터는 제1 메모리 디바이스에 저장되고, 제2 프로세스에 대한 데이터는 제2 메모리 디바이스에 저장된다. 일 예에서, 제1 프로세스에 대한 데이터는 어드레스 범위 324에 저장되고, 제2 프로세스에 대한 데이터는 어드레스 범위 326에 저장된다. 일 예에서, 제1 프로세스에 대한 데이터는 DRAM(304)의 물리적 메모리 저장소에 대응하는 메타데이터(320, 322)의 어드레스 범위에 저장된다. 일 예에서, 컴퓨터 시스템은 컴퓨터 시스템(120 또는 300)이다.
하나의 실시예에서, 방법은 컴퓨터 시스템의 처리 디바이스(예를 들어, 도 3의 처리 디바이스(310))에 의해 어드레스 공간의 메모리에 액세스하는 단계- 컴퓨터 시스템의 메모리 디바이스는 어드레스 공간의 어드레스를 사용하여 처리 디바이스에 의해 액세스됨 -; 어드레스 공간의 제1 어드레스 범위를 제1 메모리 디바이스(예를 들어, DRAM(304))와 연관시키고 어드레스 공간의 제2 어드레스 범위를 제2 메모리 디바이스(예를 들어, NVRAM 306)와 연관시키는 메타데이터(예를 들어, 메타데이터(320 및/또는 322))를 저장하는 단계- 제1 메모리 디바이스의 제1 레이턴시는 제2 메모리 디바이스의 제2 레이턴시와 상이함 -; 및 저장된 메타데이터에 기초하여, 컴퓨터 시스템 상에서 실행되는 애플리케이션(예를 들어, 애플리케이션(312))에 제1 어드레스 범위를 할당하는 단계를 포함한다.
하나의 실시예에서, 애플리케이션에 제1 어드레스 범위를 할당하는 단계는 애플리케이션에 의한 요청에 응답하여 수행된다.
하나의 실시예에서, 방법은 애플리케이션에 의한 제1 요청에 응답하여, 제1 레이턴시가 제2 레이턴시보다 더 크다는 표시를 제공하는 단계; 이 표시에 기초하여 애플리케이션에 의해 이루어진 제2 요청을 수신하는 단계; 및 제2 요청을 수신한 것에 응답하여, 제2 어드레스 범위를 애플리케이션에 할당하는 단계를 더 포함한다.
하나의 실시예에서, 제1 레이턴시는 제2 레이턴시보다 작고, 메타데이터는 제1 메모리 디바이스에 저장된다.
하나의 실시예에서, 컴퓨터 시스템은 메모리 버스를 사용하여 제1 메모리 디바이스 및 제2 메모리 디바이스에 액세스하고, 메타데이터는 제2 메모리 디바이스에 저장된다.
하나의 실시예에서, 메타데이터는 제1 메모리 디바이스에 저장되고, 방법은 메타데이터의 적어도 일부를 버퍼(예를 들어, 변환 색인 버퍼(318))에 로딩하는 단계를 더 포함하고, 처리 디바이스는 버퍼에 쿼리하여 제1 어드레스 범위의 가상 어드레스에 대응하는 물리적 어드레스를 결정한다.
하나의 실시예에서, 컴퓨터 시스템은 시스템 온 칩 디바이스이고, 버퍼는 변환 색인 버퍼이다.
하나의 실시예에서, 방법은 제1 메모리 디바이스 및 제2 메모리 디바이스의 메모리 특성을 애플리케이션에 제공하는 단계를 더 포함하고; 제1 어드레스 범위를 애플리케이션에 할당하는 단계는 제공된 메모리 특성에 기초하여 애플리케이션에 의해 이루어진 요청에 응답한 것이다.
하나의 실시예에서, 방법은 애플리케이션으로부터 요청된 레이턴시를 수신하는 단계를 더 포함하고, 제1 어드레스 범위를 애플리케이션에 할당하는 단계는 요청된 레이턴시에 추가로 기초한다.
하나의 실시예에서, 방법은 애플리케이션과 연관된 우선순위를 결정하는 단계를 더 포함하고, 제1 어드레스 범위를 애플리케이션에 할당하는 단계는 우선순위에 추가로 기초한다.
하나의 실시예에서, 제1 레이턴시는 제2 레이턴시보다 작고; 애플리케이션에 제1 어드레스 범위를 할당하기 전에, 애플리케이션이 제2 어드레스 범위에 할당되고; 제1 어드레스 범위를 애플리케이션에 할당하는 단계는 애플리케이션과 연관된 우선순위의 증가를 결정한 것에 응답하여 수행된다.
하나의 실시예에서, 애플리케이션과 연관된 우선순위의 증가를 결정하는 것은 어드레스 공간에서 애플리케이션에 의한 데이터 액세스에 관한 하나 이상의 관찰에 기초한다.
하나의 실시예에서, 방법은 처리 디바이스에 의해 메모리 디바이스와 연관된 레이턴시를 결정하는 단계를 더 포함하고, 메타데이터를 저장하는 단계는 결정된 레이턴시를 저장하는 단계를 더 포함한다.
하나의 실시예에서, 시스템은 제1 메모리 디바이스; 제2 메모리 디바이스; 적어도 하나의 처리 디바이스; 및 명령어를 함유하는 메모리를 포함하고, 명령어는 적어도 하나의 처리 디바이스에 운영 체제에 의해 유지되는 어드레스 공간의 메모리에 액세스하고- 액세스는 어드레스 공간의 어드레스를 사용하여 제1 메모리 디바이스 및 제2 메모리 디바이스에 액세스하는 것을 포함함 -; 어드레스 공간의 제1 어드레스 범위를 제1 메모리 디바이스와 연관시키고, 어드레스 공간의 제2 어드레스 범위를 제2 메모리 디바이스와 연관시키는 메타데이터를 저장하고; 및 저장된 메타데이터에 기초하여 운영 체제에 의해 제1 프로세스 및 제2 프로세스를 포함하는 프로세스를 관리하도록- 제1 프로세스에 대한 데이터는 제1 메모리 디바이스에 저장되고, 제2 프로세스에 대한 데이터는 제2 메모리 디바이스에 저장됨 - 지시하도록 구성된다.
하나의 실시예에서, 제1 프로세스는 제1 우선순위를 갖고, 제2 프로세스는 제2 우선순위를 갖고, 제1 메모리 디바이스는 제1 우선순위가 제2 우선순위보다 더 높다는 결정에 응답하여 제1 프로세스에 대한 데이터를 저장하도록 선택된다.
하나의 실시예에서, 제1 프로세스는 제1 애플리케이션에 대응하고; 명령어는 데이터를 저장하는 데 사용할 메모리의 유형을 나타내는 요청을 제1 애플리케이션으로부터 수신하도록 적어도 하나의 처리 디바이스에 지시하도록 추가로 구성되며; 제1 메모리 디바이스는 표시된 메모리 유형에 기초하여 제1 프로세스에 대한 데이터를 저장하도록 선택된다.
하나의 실시예에서, 시스템은 메타데이터를 저장하기 위한 버퍼를 더 포함하고, 운영 체제는 제1 프로세스로부터 제1 어드레스 범위의 가상 어드레스를 수신하고, 가상 어드레스에 대응하는 제1 메모리 디바이스의 물리적 어드레스를 결정하기 위해 버퍼에 액세스한다.
하나의 실시예에서, 제1 메모리 디바이스의 판독 레이턴시는 제2 메모리 디바이스의 판독 레이턴시보다 작고, 명령어는 메타데이터를 제1 메모리 디바이스에 저장하도록 적어도 하나의 처리 디바이스에 지시하도록 추가로 구성된다.
하나의 실시예에서, 시스템은 제1 프로세스에 대한 저장된 데이터에 액세스할 때 제1 어드레스 범위의 가상 어드레스를 제1 메모리 디바이스의 물리적 어드레스에 맵핑하도록 구성된 메모리 관리 유닛(예를 들어, 메모리 관리 유닛(316))을 더 포함한다.
하나의 실시예에서, 비일시적 기계 판독 가능 저장 매체는 명렁어를 저장하고, 이 명령어는 적어도 하나의 처리 디바이스 상에서 실행될 때 적어도 하나의 처리 디바이스로 하여금 적어도 어드레스 공간의 메모리에 액세스하고- 컴퓨터 시스템의 메모리 디바이스는 어드레스 공간의 어드레스를 사용하여 적어도 하나의 처리 디바이스에 의해 액세스됨 -; 어드레스 공간의 제1 어드레스 범위를 제1 메모리 디바이스와 연관시키고, 어드레스 공간의 제2 어드레스 범위를 제2 메모리 디바이스와 연관시키는 메타데이터를 저장하고; 컴퓨터 시스템 상에서 실행하는 애플리케이션에, 제1 메모리 디바이스의 제1 레이턴시가 제2 메모리 디바이스의 제2 레이턴시보다 더 작다는 것을 나타내는 제1 데이터를 제공하고; 제1 데이터를 애플리케이션에 제공한 것에 응답하여, 애플리케이션과 연관된 제2 데이터가 제1 메모리 디바이스에 저장되게 하는 요청을 애플리케이션으로부터 수신하고; 제2 데이터를 저장하기 위한 애플리케이션의 요청에 응답하여, 결과를 제공하기 위해 저장된 메타데이터를 쿼리하고; 이 결과에 기초하여, 제2 데이터를 제1 메모리 디바이스에 저장하게 한다.
도 7은 본 개시의 실시예가 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다. 도 7은 기계가 본 출원에 설명된 방법론 중 어느 하나 이상을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템(600)의 예시적인 기계를 예시한다. 일부 실시예에서, 컴퓨터 시스템(600)은 메모리 서브시스템(예를 들어, 도 1의 메모리 서브시스템(110))을 포함하거나, 그에 결합되거나, 그를 이용하는 호스트 시스템(예를 들어, 도 1의 컴퓨터 시스템(120))에 대응할 수 있거나 또는 메타데이터 컴포넌트(113)의 동작을 수행하기 위해(예를 들어, 도 1 내지 도 6을 참조하여 설명된 메타데이터 컴포넌트(113)에 대응하는 동작을 수행하기 위한 명령어를 실행하도록) 사용될 수 있다. 대안 실시예에서, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷의 다른 기계에 연결(예를 들어, 네트워크 연결)될 수 있다. 기계는 클라이언트-서버 네트워크 환경의 서버 또는 클라이언트 기계의 자격으로, 피어-투-피어(또는 분산) 네트워크 환경의 피어 기계로서, 또는 클라우드 컴퓨팅 인프라구조 또는 환경의 서버 또는 클라이언트 기계로서 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인용 디지털 단말(PDA), 이동 전화, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지, 사물 인터넷(IOT) 디바이스 또는 해당 기계에서 수행할 작용을 지정하는 명령어 세트(순차적 또는 다른 방식)를 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 예시되어 있지만, "기계"라는 용어는 또한 본 출원에서 설명된 방법론 중 임의의 하나 이상을 수행하기 위해 명령어 세트(또는 다수의 세트)를 개별적으로 또는 공동으로 실행하는 임의의 기계 집합을 포함하는 것으로 고려되어야 한다.
예시적인 컴퓨터 시스템(600)은 처리 디바이스(602), 메인 메모리(604)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동기 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 등) 및 버스(630)(다중 버스를 포함할 수 있음)를 통해 서로 통신하는 데이터 저장 시스템(618)을 포함한다.
처리 디바이스(602)는 마이크로프로세서, 중앙 처리 유닛 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 더 구체적으로, 처리 디바이스는 복합 명령어 세트 컴퓨팅(CISC) 마이크로프로세서, 축약 명령어 세트 컴퓨팅(RISC) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트를 구현하는 프로세서 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(602)는 또한 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(602)는 본 출원에 설명된 동작 및 단계를 수행하기 위한 명령어(626)를 실행하도록 구성된다. 컴퓨터 시스템(600)은 네트워크(620)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(608)를 더 포함할 수 있다.
데이터 저장 시스템(618)은 본 출원에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 하나 이상의 명령어 세트(626) 또는 소프트웨어가 저장된 기계 판독 가능 저장 매체(624)(컴퓨터 판독 가능 매체라고도 알려짐)를 포함할 수 있다. 명령어(626)는 또한 역시 기계 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(600), 메인 메모리(604) 및 처리 디바이스(602)에 의해 실행되는 동안 메인 메모리(604) 내에 및/또는 처리 디바이스(602) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능 저장 매체(624), 데이터 저장 시스템(618) 및/또는 메인 메모리(604)는 도 1의 메모리 서브시스템(110)에 대응할 수 있다.
하나의 실시예에서, 명령어(626)는 메타데이터 컴포넌트(113)(예를 들어, 도 1 내지 도 6을 참조하여 설명된 메타데이터 컴포넌트(113))에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 기계 판독 가능 저장 매체(624)는 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "기계 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 고려되어야 한다.
맺음말
본 개시는 이러한 방법을 수행하는 데이터 처리 시스템, 및 데이터 처리 시스템 상에서 실행될 때 시스템으로 하여금 이러한 방법을 수행하게 하는 명령어를 함유하는 컴퓨터 판독 가능 매체를 비롯하여, 이러한 방법을 수행하고 앞서 설명된 시스템을 구현하는 다양한 디바이스를 포함한다.
설명 및 도면은 예시적이며 제한으로서 해석되어서는 안 된다. 철저한 이해를 제공하기 위해 다수의 구체적인 세부사항이 설명되어 있다. 그러나, 특정 경우에, 설명을 모호하게 하는 것을 피하기 위해 잘 알려진 또는 통상적인 세부사항을 설명하지 않는다. 본 개시에서 하나의 또는 일 실시예라는 언급은 반드시 동일한 실시예에 대한 언급은 아니며; 및 이러한 언급은 적어도 하나를 의미한다.
본 명세서에서 "하나의 실시예" 또는 "일 실시예"에 대한 참조는 하나의 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성이 본 개시의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서의 다양한 위치에서 "하나의 실시예에서"라는 문구의 출현은 반드시 모두 동일한 실시예를 지칭하는 것도 다른 실시예와 상호 배타적인 별개의 또는 대안 실시예를 지칭하는 것도 아니다. 더욱이, 일부 실시예에서 나타나고 다른 실시예에서는 나타나지 않을 수 있는 다양한 특징이 설명된다. 유사하게, 일부 실시예에 대한 요건이 될 수 있지만 다른 실시예에서는 요건이 아닐 수 있는 다양한 요건이 설명된다.
본 설명에서, 설명을 단순화하기 위해 다양한 기능 및 동작을 소프트웨어 코드에 의해 수행되거나 야기되는 것으로 설명할 수 있다. 그러나, 본 기술 분야의 숙련자는 이러한 표현이 의미하는 바가 기능이 마이크로프로세서, ASIC(Application-Specific Integrated Circuit), 그래픽 프로세서 및/또는 FPGA(Field-Programmable Gate Array) 같은 하나 이상의 프로세서에 의한 코드의 실행의 결과로 얻어진다는 것임을 인식할 것이다. 대안적으로, 또는 조합하여, 기능 및 동작은 소프트웨어 명령어 없이 또는 그와 함께 특수 목적 회로부(예를 들어, 로직 회로부)를 사용하여 구현될 수 있다. 실시예는 소프트웨어 명령어 없이 또는 소프트웨어 명령어와 조합하여 하드와이어드 회로부를 사용하여 구현될 수 있다. 따라서, 기술은 하드웨어 회로부 및 소프트웨어의 임의의 특정 조합이나 컴퓨팅 디바이스에 의해 실행되는 명령어에 대한 임의의 특정 소스로 제한되지 않는다.
일부 실시예는 완전히 기능하는 컴퓨터 및 컴퓨터 시스템에서 구현될 수 있지만, 다양한 실시예는 다양한 형태의 컴퓨팅 제품으로서 배포될 수 있고, 배포를 실제로 실행하는 데 사용되는 특정 유형의 기계 또는 컴퓨터 판독 가능 매체와 무관하게 적용될 수 있다.
개시된 적어도 일부 양태는 적어도 부분적으로 소프트웨어로 구현될 수 있다. 즉, 기술은 마이크로프로세서 같은 그 프로세서가 ROM, 휘발성 RAM, 비휘발성 메모리, 캐시 또는 원격 저장 디바이스 같은 메모리에 함유된 명령어의 시퀀스를 실행한 것에 응답하여 컴퓨팅 디바이스 또는 다른 시스템에서 수행될 수 있다.
실시예를 구현하기 위해 실행되는 루틴은 운영 체제, 미들웨어, 서비스 제공 플랫폼, 소프트웨어 개발 키트(SDK) 컴포넌트, 웹 서비스, 또는 기타 특정 애플리케이션, 컴포넌트, 프로그램, 객체, 모듈 또는 "컴퓨터 프로그램"으로 지칭되는 명령어 시퀀스의 일부로 구현될 수 있다. 이러한 루틴에 대한 호출 인터페이스는 애플리케이션 프로그래밍 인터페이스(API)로서 소프트웨어 개발 커뮤니티에게 노출될 수 있다. 컴퓨터 프로그램은 전형적으로 컴퓨터의 다양한 메모리 및 저장 디바이스에 다양한 시간에 설정된 하나 이상의 명령어로 구성되며, 컴퓨터의 하나 이상의 프로세서에 의해 판독되고 실행될 때 컴퓨터가 다양한 양태를 수반하는 요소를 실행하는 데 필요한 동작을 수행하게 한다.
기계 판독 가능 매체는 컴퓨팅 디바이스에 의해 실행될 때 디바이스가 다양한 방법을 수행하게 하는 소프트웨어 및 데이터를 저장하는 데 사용될 수 있다. 실행 가능한 소프트웨어 및 데이터는 예를 들어 ROM, 휘발성 RAM, 비휘발성 메모리 및/또는 캐시를 비롯한 다양한 위치에 저장될 수 있다. 이러한 소프트웨어 및/또는 데이터의 부분은 이러한 저장 디바이스 중 임의의 하나에 저장될 수 있다. 또한, 중앙 집중식 서버 또는 피어 투 피어 네트워크에서 데이터와 명령어를 획득할 수 있다. 데이터 및 명령어의 상이한 부분이 상이한 시간에 상이한 통신 세션에서 또는 동일한 통신 세션에서 상이한 중앙 집중식 서버 및/또는 피어 투 피어 네트워크에서 획득될 수 있다. 데이터 및 명령어는 애플리케이션 실행 전에 전체적으로 획득할 수 있다. 대안적으로, 실행에 필요할 때 데이터 및 명령어의 일부는 동적으로 적시에 획득될 수 있다. 따라서, 데이터 및 명령어가 특정 시간 인스턴스에 완전히 기계 판독 가능 매체에 있을 필요는 없다.
컴퓨터 판독 가능 매체의 예는 특히 휘발성 및 비휘발성 메모리 디바이스, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 플래시 메모리 디바이스, 솔리드 스테이트 드라이브 저장 매체, 이동식 디스크, 자기 디스크 저장 매체, 광학 저장 매체(예를 들어, 콤팩트 디스크 판독 전용 메모리(CD ROM), 디지털 다용도 디스크(DVD) 등)와 같은 기록 가능 및 비기록 유형 매체를 포함하지만 이에 제한되지 않는다. 컴퓨터 판독 가능 매체는 명령어를 저장할 수 있다.
일반적으로, 유형 또는 비일시적 기계 판독 가능 매체는 기계(예를 들어, 컴퓨터, 모바일 디바이스, 네트워크 디바이스, 개인용 디지털 단말, 제조 도구, 기타 하나 이상의 프로세서 세트를 갖는 임의의 디바이스 등)에 의해 액세스 가능한 형태로 정보를 제공(예를 들어, 저장)하는 임의의 메커니즘을 포함한다.
다양한 실시예에서, 하드와이어드 회로부가 기술을 구현하기 위해 소프트웨어 및 펌웨어 명령어와 조합하여 사용될 수 있다. 따라서, 기술은 하드웨어 회로부 및 소프트웨어의 임의의 특정 조합이나 컴퓨팅 디바이스에 의해 실행되는 명령어에 대한 임의의 특정 소스로 제한되지 않는다.
일부 도면은 특정 순서로 다수의 동작을 예시하지만, 순서에 의존하지 않는 동작은 재정렬될 수 있고 다른 동작은 조합되거나 분할될 수 있다. 일부 재정렬 또는 다른 그룹화를 구체적으로 언급하지만, 본 기술 분야의 숙련자는 다른 것들을 명백히 알 수 있을 것이고 따라서 대안의 완전한 목록을 제시하지는 않는다. 더욱이, 스테이지는 하드웨어, 펌웨어, 소프트웨어 또는 그 임의의 조합으로 구현될 수 있음을 인식해야 한다.
앞서 설명한 명세서에서, 본 개시는 그 특정 예시적인 실시예를 참조하여 설명되었다. 하기 청구범위에 설명된 바와 같은 보다 넓은 사상 및 범위를 벗어나지 않고 다양한 수정이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 고려되어야 한다.
본 출원에 설명된 다양한 실시예는 매우 다양한 상이한 유형의 컴퓨팅 디바이스를 사용하여 구현될 수 있다. 본 출원에 사용될 때, "컴퓨팅 디바이스"의 예는 서버, 중앙 집중식 컴퓨팅 플랫폼, 다중 컴퓨팅 프로세서 및/또는 컴포넌트의 시스템, 모바일 디바이스, 사용자 단말, 차량, 개인 통신 디바이스, 웨어러블 디지털 디바이스, 전자 키오스크, 범용 컴퓨터, 전자 문서 판독기, 태블릿, 랩톱 컴퓨터, 스마트폰, 디지털 카메라, 가정용 가전 제품, 텔레비전 또는 디지털 음악 플레이어를 포함하지만 이에 제한되지 않는다. 컴퓨팅 디바이스의 추가적인 예에는 "사물 인터넷"(IOT)이라고 지칭되는 것의 일부인 디바이스가 포함된다. 이러한 "사물"은 사물을 모니터링하거나 이러한 사물의 설정을 수정할 수 있는 그 소유자 또는 관리자와 가끔 상호 작용할 수 있다. 일부 경우에, 이러한 소유자 또는 관리자가 "사물" 디바이스와 관련한 사용자의 역할을 한다. 일부 예에서, 사용자의 주 모바일 디바이스(예를 들어, Apple iPhone)는 사용자가 착용한 페어링된 "사물" 디바이스(예를 들어, Apple 워치)에 대한 관리자 서버일 수 있다.
일부 실시예에서, 컴퓨팅 디바이스는 컴퓨터 또는 호스트 시스템일 수 있으며, 이는 예를 들어 데스크탑 컴퓨터, 랩톱 컴퓨터, 네트워크 서버, 모바일 디바이스, 또는 메모리 및 처리 디바이스를 포함하는 기타 컴퓨팅 디바이스로 구현된다. 호스트 시스템은 호스트 시스템이 메모리 서브시스템으로부터 데이터를 판독하거나 메모리 서브시스템에 데이터를 기록할 수 있게 메모리 서브시스템을 포함하거나 이에 결합될 수 있다. 호스트 시스템은 물리적 호스트 인터페이스를 통해 메모리 서브시스템에 결합될 수 있다. 일반적으로, 호스트 시스템은 동일한 통신 연결, 다중 개별 통신 연결, 및/또는 통신 연결의 조합을 통해 다중 메모리 서브시스템에 액세스할 수 있다.

Claims (20)

  1. 방법에 있어서,
    컴퓨터 시스템의 처리 디바이스가 어드레스 공간의 메모리에 액세스하는 단계 - 상기 컴퓨터 시스템의 메모리 디바이스는 상기 어드레스 공간의 어드레스를 사용하여 상기 처리 디바이스에 의해 액세스됨 -;
    상기 어드레스 공간의 제1 어드레스 범위를 제1 메모리 디바이스와 연관시키고, 상기 어드레스 공간의 제2 어드레스 범위를 제2 메모리 디바이스와 연관시키는 메타데이터를 저장하는 단계 - 상기 제1 메모리 디바이스의 제1 레이턴시는 상기 제2 메모리 디바이스의 제2 레이턴시와 상이함 - ; 및
    저장된 상기 메타데이터에 기초하여, 상기 컴퓨터 시스템 상에서 실행되는 애플리케이션에 상기 제1 어드레스 범위를 할당하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제1 어드레스 범위를 상기 애플리케이션에 할당하는 단계는 상기 애플리케이션에 의한 요청에 응답하여 수행되는, 방법.
  3. 제1항에 있어서,
    상기 애플리케이션에 의한 제1 요청에 응답하여, 상기 제1 레이턴시가 상기 제2 레이턴시보다 크다는 표시를 제공하는 단계;
    상기 표시에 기초하여 상기 애플리케이션에 의해 이루어진 제2 요청을 수신하는 단계; 및
    상기 제2 요청을 수신한 것에 응답하여, 상기 제2 어드레스 범위를 상기 애플리케이션에 할당하는 단계를 포함하는, 방법.
  4. 제1항에 있어서, 상기 제1 레이턴시는 상기 제2 레이턴시보다 작고, 상기 메타데이터는 상기 제1 메모리 디바이스에 저장되는, 방법.
  5. 제1항에 있어서, 상기 컴퓨터 시스템은 메모리 버스를 사용하여 상기 제1 메모리 디바이스 및 상기 제2 메모리 디바이스에 액세스하고, 상기 메타데이터는 상기 제1 메모리 디바이스 또는 상기 제2 메모리 디바이스에 저장되는, 방법.
  6. 제1항에 있어서, 상기 메타데이터는 상기 제1 메모리 디바이스에 저장되고, 상기 방법은 상기 메타데이터의 적어도 일부를 버퍼에 로딩하는 단계를 더 포함하고, 상기 처리 디바이스는 상기 제1 어드레스 범위의 가상 어드레스에 대응하는 물리적 어드레스를 결정하기 위해 상기 버퍼에 쿼리(query)하는, 방법
  7. 제6항에 있어서, 상기 컴퓨터 시스템은 시스템 온 칩(system-on-chip) 디바이스이고, 상기 버퍼는 변환 색인 버퍼(translation lookaside buffer)인, 방법.
  8. 제1항에 있어서,
    상기 제1 메모리 디바이스 및 상기 제2 메모리 디바이스의 메모리 특성을 상기 애플리케이션에 제공하는 단계;
    상기 제 1 어드레스 범위를 상기 애플리케이션에 할당하는 것은 제공된 상기 메모리 특성에 기초하여 상기 애플리케이션에 의해 이루어진 요청에 응답하는 것인, 방법.
  9. 제1항에 있어서, 상기 애플리케이션으로부터 요청된 레이턴시를 수신하는 단계를 더 포함하고, 상기 애플리케이션에 상기 제1 어드레스 범위를 할당하는 단계는 상기 요청된 레이턴시에 더 기초하는, 방법.
  10. 제1항에 있어서, 상기 애플리케이션과 연관된 우선순위를 결정하는 단계를 더 포함하고, 상기 애플리케이션에 상기 제1 어드레스 범위를 할당하는 단계는 상기 우선순위에 더 기초하는, 방법.
  11. 제1항에 있어서,
    상기 제1 레이턴시는 상기 제2 레이턴시보다 작고;
    상기 애플리케이션에 상기 제1 어드레스 범위를 할당하기 전에 상기 애플리케이션은 상기 제2 어드레스 범위에 할당되고; 및
    상기 애플리케이션에 상기 제1 어드레스 범위를 할당하는 것은 상기 애플리케이션과 연관된 우선순위의 증가를 결정한 것에 응답하여 수행되는, 방법.
  12. 제11항에 있어서, 상기 애플리케이션과 연관된 우선순위의 증가를 결정하는 단계는 상기 어드레스 공간에서 상기 애플리케이션에 의한 데이터 액세스에 관한 하나 이상의 관찰(observation)에 기초하는, 방법.
  13. 제1항에 있어서, 상기 처리 디바이스에 의해, 상기 메모리 디바이스들과 연관된 레이턴시를 결정하는 단계를 더 포함하고, 상기 메타데이터를 저장하는 단계는 결정된 상기 레이턴시를 저장하는 단계를 더 포함하는, 방법.
  14. 시스템에 있어서,
    제1 메모리 디바이스;
    제2 메모리 디바이스;
    적어도 하나의 처리 디바이스; 및
    명령어를 포함하는 메모리로서, 상기 명령어는,
    운영 체제에 의해 유지되는 어드레스 공간의 메모리에 액세스하고, 상기 액세스하는 것은 상기 어드레스 공간의 어드레스를 사용하여 상기 제1 메모리 디바이스 및 상기 제2 메모리 디바이스에 액세스하는 것을 포함하고;
    상기 어드레스 공간의 제1 어드레스 범위를 상기 제1 메모리 디바이스와 연관시키고, 상기 어드레스 공간의 제2 어드레스 범위를 상기 제2 메모리 디바이스와 연관시키는 메타데이터를 저장하고; 및
    저장된 상기 메타데이터에 기초하여 운영 체제에 의해, 제1 프로세스 및 제2 프로세스를 포함하는 프로세스를 관리하기 위해 적어도 하나의 처리 디바이스에 지시하도록 구성되고, 상기 제1 프로세스에 대한 데이터는 상기 제1 메모리 디바이스에 저장되고, 상기 제2 프로세스에 대한 데이터는 상기 제2 메모리 디바이스에 저장되는, 시스템.
  15. 제14항에 있어서, 상기 제1 프로세스는 제1 우선순위를 갖고, 상기 제2 프로세스는 제2 우선순위를 가지며, 상기 제1 메모리 디바이스는 상기 제1 우선순위가 상기 제2 우선순위보다 더 높다는 결정에 응답하여 상기 제1 프로세스에 대한 데이터를 저장하도록 선택되는, 시스템.
  16. 제14항에 있어서,
    상기 제1 프로세스는 제1 애플리케이션에 대응하고;
    상기 명령어는 데이터를 저장하는 데 사용할 메모리의 유형을 나타내는 요청을 상기 제1 애플리케이션으로부터 수신하기 위해 상기 적어도 하나의 처리 디바이스에 지시하도록 추가로 구성되며; 및
    상기 제 1 메모리 디바이스는 표시된 상기 메모리 유형에 기초하여 상기 제 1 프로세스에 대한 데이터를 저장하도록 선택된, 시스템.
  17. 제14항에 있어서, 상기 메타데이터를 저장하기 위한 버퍼를 더 포함하고, 상기 운영 체제는 상기 제1 프로세스로부터 상기 제1 어드레스 범위의 가상 어드레스를 수신하고, 상기 가상 어드레스에 대응하는 상기 제1 메모리 디바이스의 물리적 어드레스를 결정하기 위해 상기 버퍼에 액세스하는, 시스템.
  18. 제14항에 있어서, 상기 제1 메모리 디바이스의 판독 레이턴시는 상기 제2 메모리 디바이스의 판독 레이턴시보다 작고, 상기 명령어는 상기 메타데이터를 상기 제1 메모리 디바이스에 저장하기 위해 상기 적어도 하나의 처리 디바이스에 지시하도록 추가로 구성된, 시스템.
  19. 제14항에 있어서, 상기 제1 프로세스에 대한 저장된 데이터에 액세스할 때, 상기 제1 어드레스 범위의 가상 어드레스를 상기 제1 메모리 디바이스의 물리적 어드레스에 매핑하도록 구성된 메모리 관리 유닛을 더 포함하는, 시스템.
  20. 명령어를 저장하는 비일시적 기계 판독 가능 저장 매체에 있어서, 상기 명령어가 적어도 하나의 처리 디바이스 상에서 실행될 때, 상기 적어도 하나의 처리 디바이스로 하여금 적어도,
    어드레스 공간의 메모리에 액세스하고 - 컴퓨터 시스템의 메모리 디바이스는 상기 어드레스 공간의 어드레스를 사용하여 상기 적어도 하나의 처리 디바이스에 의해 액세스됨 -;
    상기 어드레스 공간의 제1 어드레스 범위를 제1 메모리 디바이스와 연관시키고, 상기 어드레스 공간의 제2 어드레스 범위를 제2 메모리 디바이스와 연관시키는 메타데이터를 저장하고;
    상기 컴퓨터 시스템 상에서 실행하는 애플리케이션에, 상기 제1 메모리 디바이스의 제1 레이턴시가 상기 제2 메모리 디바이스의 제2 레이턴시보다 작다는 것을 나타내는 제1 데이터를 제공하고;
    상기 제1 데이터를 상기 애플리케이션에 제공한 것에 응답하여, 상기 애플리케이션과 연관된 제2 데이터가 상기 제1 메모리 디바이스에 저장되는 요청을 상기 애플리케이션으로부터 수신하고;
    상기 제2 데이터를 저장하기 위한 상기 애플리케이션의 요청에 응답하여, 결과를 제공하기 위해 저장된 상기 메타데이터를 쿼리하고; 및
    상기 결과에 기초하여, 상기 제2 데이터를 상기 제1 메모리 디바이스에 저장하게 하는, 비일시적 기계 판독 가능 저장 매체.
KR1020227011422A 2019-09-17 2020-09-14 데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱 KR20220060548A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/573,490 US11650742B2 (en) 2019-09-17 2019-09-17 Accessing stored metadata to identify memory devices in which data is stored
US16/573,490 2019-09-17
PCT/US2020/050714 WO2021055281A1 (en) 2019-09-17 2020-09-14 Accessing stored metadata to identify memory devices in which data is stored

Publications (1)

Publication Number Publication Date
KR20220060548A true KR20220060548A (ko) 2022-05-11

Family

ID=74869576

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227011422A KR20220060548A (ko) 2019-09-17 2020-09-14 데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱

Country Status (7)

Country Link
US (2) US11650742B2 (ko)
EP (1) EP4031973A4 (ko)
JP (1) JP2022548888A (ko)
KR (1) KR20220060548A (ko)
CN (1) CN114402282B (ko)
TW (1) TWI752619B (ko)
WO (1) WO2021055281A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11650742B2 (en) * 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
KR20210095761A (ko) * 2020-01-23 2021-08-03 삼성전자주식회사 호스트로부터 오프로드된 작업을 수행하는 스토리지 장치 및 스토리지 시스템
US20210089225A1 (en) * 2020-11-19 2021-03-25 Intel Corporation Adaptive device behavior based on available energy
US20230029331A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Dynamically allocatable physically addressed metadata storage
CN114036085B (zh) * 2021-09-24 2024-04-12 北京无线电测量研究所 基于ddr4的多任务读写调度方法、计算机设备及存储介质
US12061800B2 (en) 2021-10-28 2024-08-13 Silicon Motion, Inc. Method and apparatus for performing data access control of memory device with aid of predetermined command
US11977783B2 (en) 2021-10-28 2024-05-07 Silicon Motion, Inc. Method and apparatus for performing data access control of memory device with aid of predetermined command

Family Cites Families (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0447145B1 (en) 1990-03-12 2000-07-12 Hewlett-Packard Company User scheduled direct memory access using virtual addresses
US6256714B1 (en) 1998-09-02 2001-07-03 Sharp Laboratories Of America, Inc. Computer system with efficient memory usage for managing multiple application programs
US6630264B2 (en) * 2000-05-01 2003-10-07 Delphi Technologies, Inc. Solid oxide fuel cell process gas sampling for analysis
US6681311B2 (en) 2001-07-18 2004-01-20 Ip-First, Llc Translation lookaside buffer that caches memory type information
US7346664B2 (en) 2003-04-24 2008-03-18 Neopath Networks, Inc. Transparent file migration using namespace replication
US7444547B2 (en) 2003-06-19 2008-10-28 International Business Machines Corproation Method, system, and product for programming in a simultaneous multi-threaded processor environment
JP2005216053A (ja) 2004-01-30 2005-08-11 Matsushita Electric Ind Co Ltd 最適メモリ配置演算装置及び最適メモリ配置方法
US7533195B2 (en) * 2004-02-25 2009-05-12 Analog Devices, Inc. DMA controller for digital signal processors
US7269708B2 (en) 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
US7552282B1 (en) 2004-08-04 2009-06-23 Emc Corporation Method, computer readable medium, and data storage system for selective data replication of cached data
JP4643395B2 (ja) 2004-08-30 2011-03-02 株式会社日立製作所 ストレージシステム及びデータの移動方法
JP5338859B2 (ja) 2004-10-27 2013-11-13 ソニー株式会社 記憶装置および情報処理システム
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7533198B2 (en) * 2005-10-07 2009-05-12 International Business Machines Corporation Memory controller and method for handling DMA operations during a page copy
JP2007254204A (ja) 2006-03-23 2007-10-04 Seiko Epson Corp マルチレンズアレイの強化処理方法
US8533384B2 (en) 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US8151076B2 (en) 2008-04-04 2012-04-03 Cisco Technology, Inc. Mapping memory segments in a translation lookaside buffer
US20090254851A1 (en) 2008-04-08 2009-10-08 Techneos Systems Inc. Method and system for conducting a survey by using a wireless device
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
JP5531476B2 (ja) 2009-07-15 2014-06-25 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
JP2011154547A (ja) 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
US9075733B1 (en) * 2010-05-20 2015-07-07 Seagate Technology Llc Selective storage of address mapping metadata in a system having multiple memories
WO2011156947A1 (zh) 2010-06-13 2011-12-22 连云港中复连众复合材料集团有限公司 一种兆瓦级风力发电机叶片根部的制作方法
US8521944B2 (en) 2010-08-31 2013-08-27 Intel Corporation Performing memory accesses using memory context information
US8595463B2 (en) 2010-09-15 2013-11-26 International Business Machines Corporation Memory architecture with policy based data storage
US8706697B2 (en) 2010-12-17 2014-04-22 Microsoft Corporation Data retention component and framework
US9558040B2 (en) 2011-06-20 2017-01-31 Microsoft Technology Licensing, Llc Memory manager with enhanced application metadata
US8935491B2 (en) * 2011-07-15 2015-01-13 Throughputer, Inc. Memory architecture for dynamically allocated manycore processor
US20150081965A1 (en) 2012-04-27 2015-03-19 Hitachi, Ltd. Data management system and data management method
US9678863B2 (en) 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9047090B2 (en) * 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
US10303618B2 (en) 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9304828B2 (en) 2012-09-27 2016-04-05 Hitachi, Ltd. Hierarchy memory management
US9747000B2 (en) * 2012-10-02 2017-08-29 Razer (Asia-Pacific) Pte. Ltd. Launching applications on an electronic device
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US9330736B2 (en) 2012-11-09 2016-05-03 Qualcomm Incorporated Processor memory optimization via page access counting
US20140189204A1 (en) 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
CN103174406B (zh) 2013-03-13 2015-12-02 吉林大学 一种油页岩地下原位加热的方法
KR20150044370A (ko) * 2013-10-16 2015-04-24 삼성전자주식회사 이종 메모리들을 관리하는 시스템들
WO2015061965A1 (en) 2013-10-29 2015-05-07 Hua Zhong University Of Science Technology Mixed cache management
CA2881206A1 (en) * 2014-02-07 2015-08-07 Andrew WARFIELD Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices
US9594508B2 (en) 2014-03-04 2017-03-14 Kabushiki Kaisha Toshiba Computer system having tiered block storage device, storage controller, file arrangement method and storage medium
JP6118285B2 (ja) 2014-03-20 2017-04-19 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム
US10108220B2 (en) 2014-05-01 2018-10-23 Wisconsin Alumni Research Foundation Computer architecture having selectable, parallel and serial communication channels between processors and memory
US9450879B2 (en) * 2014-05-09 2016-09-20 Nexgen Storage, Inc. Adaptive bandwidth throttling
US9792227B2 (en) 2014-08-19 2017-10-17 Samsung Electronics Co., Ltd. Heterogeneous unified memory
CN105612505B (zh) * 2014-09-17 2018-12-14 华为技术有限公司 Cpu调度的方法和装置
US9411539B2 (en) * 2014-09-24 2016-08-09 International Business Machines Corporation Providing access information to a storage controller to determine a storage tier for storing data
JP2016085677A (ja) 2014-10-28 2016-05-19 富士通株式会社 メモリ管理方法、メモリ管理プログラム及び情報処理装置
KR20160052240A (ko) 2014-11-04 2016-05-12 삼성전자주식회사 복수의 메모리 장치들을 관리하기 위한 방법 및 장치
US9766819B2 (en) * 2014-12-30 2017-09-19 Sandisk Technologies Llc Systems and methods for managing storage endurance
US10691375B2 (en) * 2015-01-30 2020-06-23 Hewlett Packard Enterprise Development Lp Memory network to prioritize processing of a memory access request
US20180024853A1 (en) 2015-02-17 2018-01-25 Coho Data, Inc. Methods, systems, devices and appliances relating to virtualized application-layer space for data processing in data storage systems
US10049035B1 (en) 2015-03-10 2018-08-14 Reniac, Inc. Stream memory management unit (SMMU)
JP6384375B2 (ja) * 2015-03-23 2018-09-05 富士通株式会社 情報処理装置、記憶装置制御方法、記憶装置制御プログラム及び情報処理システム
US10331384B2 (en) 2015-03-31 2019-06-25 International Business Machines Corporation Storing data utilizing a maximum accessibility approach in a dispersed storage network
US10157008B2 (en) 2015-04-29 2018-12-18 Qualcomm Incorporated Systems and methods for optimizing memory power consumption in a heterogeneous system memory
US10235282B2 (en) 2015-06-01 2019-03-19 Hitachi, Ltd. Computer system, computer, and method to manage allocation of virtual and physical memory areas
JP6403162B2 (ja) 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US9734009B2 (en) * 2015-10-08 2017-08-15 Sandisk Technologies Llc Data encoding techniques for a device
WO2017078681A1 (en) * 2015-11-03 2017-05-11 Hewlett-Packard Development Company, L.P. Operating mode memory migration
US10216643B2 (en) 2015-11-23 2019-02-26 International Business Machines Corporation Optimizing page table manipulations
US10248447B2 (en) 2015-11-25 2019-04-02 Red Hat, Inc. Providing link aggregation and high availability through network virtualization layer
US20170153892A1 (en) 2015-11-30 2017-06-01 Intel Corporation Instruction And Logic For Programmable Fabric Hierarchy And Cache
US10007614B2 (en) 2016-02-02 2018-06-26 Cavium, Inc. Method and apparatus for determining metric for selective caching
JP2017138852A (ja) 2016-02-04 2017-08-10 株式会社東芝 情報処理装置、記憶装置およびプログラム
JP2017138823A (ja) 2016-02-04 2017-08-10 キヤノン株式会社 情報処理装置、情報処理方法および撮像装置
JP6423809B2 (ja) 2016-02-19 2018-11-14 イーソル株式会社 オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法
US10223228B2 (en) 2016-08-12 2019-03-05 International Business Machines Corporation Resolving application multitasking degradation
JP6666813B2 (ja) 2016-08-24 2020-03-18 キオクシア株式会社 記憶装置及びその制御方法
US10372635B2 (en) 2016-08-26 2019-08-06 Qualcomm Incorporated Dynamically determining memory attributes in processor-based systems
JP2018049385A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステムおよびプロセッサシステム
JP2018049381A (ja) 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリ制御回路、メモリシステムおよびプロセッサシステム
US20180173419A1 (en) * 2016-12-21 2018-06-21 Western Digital Technologies, Inc. Hybrid ssd with delta encoding
US10409603B2 (en) 2016-12-30 2019-09-10 Intel Corporation Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
JP6391719B2 (ja) * 2017-01-10 2018-09-19 マイクロン テクノロジー, インク. トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法
US11886732B2 (en) * 2017-01-31 2024-01-30 Seagate Technology Llc Data storage server with multi-memory migration
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US10380039B2 (en) * 2017-04-07 2019-08-13 Intel Corporation Apparatus and method for memory management in a graphics processing environment
US10289555B1 (en) 2017-04-14 2019-05-14 EMC IP Holding Company LLC Memory read-ahead using learned memory access patterns
US10747568B2 (en) 2017-05-30 2020-08-18 Magalix Corporation Systems and methods for managing a cloud computing environment
KR102319189B1 (ko) * 2017-06-21 2021-10-28 삼성전자주식회사 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법
US20200174926A1 (en) * 2017-06-22 2020-06-04 Telefonaktiebolaget Lm Ericsson (Publ) Apparatuses and methods for allocating memory in a data center
US10642744B2 (en) 2017-06-28 2020-05-05 Nvidia Corporation Memory type which is cacheable yet inaccessible by speculative instructions
US10152428B1 (en) * 2017-07-13 2018-12-11 EMC IP Holding Company LLC Virtual memory service levels
US10540203B2 (en) 2017-08-29 2020-01-21 Micro Focus Llc Combining pipelines for a streaming data system
US20190095329A1 (en) 2017-09-27 2019-03-28 Intel Corporation Dynamic page allocation in memory
CN109656833B (zh) 2017-10-12 2022-11-11 慧荣科技股份有限公司 数据储存装置
US10678703B2 (en) 2017-11-16 2020-06-09 Micron Technology, Inc. Namespace mapping structual adjustment in non-volatile memory devices
US11138121B2 (en) 2017-11-20 2021-10-05 Samsung Electronics Co., Ltd. Systems and methods for efficient cacheline handling based on predictions
US11231852B2 (en) 2017-12-18 2022-01-25 Microsoft Technology Licensing, Llc Efficient sharing of non-volatile memory
US20190213165A1 (en) * 2018-01-09 2019-07-11 Qualcomm Incorporated Priority scheme for fast arbitration procedures
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10528489B2 (en) 2018-02-28 2020-01-07 Micron Technology, Inc. Multiple memory type memory module systems and methods
JP6508382B1 (ja) 2018-03-26 2019-05-08 日本電気株式会社 情報処理装置、情報処理方法、プログラム
US20190370043A1 (en) 2018-04-30 2019-12-05 Nutanix, Inc. Cooperative memory management
KR102518095B1 (ko) * 2018-09-12 2023-04-04 삼성전자주식회사 스토리지 장치 및 시스템
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US11144231B2 (en) 2018-12-12 2021-10-12 International Business Machines Corporation Relocation and persistence of named data elements in coordination namespace
US10725853B2 (en) 2019-01-02 2020-07-28 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
US11269780B2 (en) * 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11494311B2 (en) * 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US10963396B1 (en) * 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11650742B2 (en) * 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored

Also Published As

Publication number Publication date
TW202117543A (zh) 2021-05-01
CN114402282B (zh) 2024-04-09
EP4031973A4 (en) 2023-10-11
TWI752619B (zh) 2022-01-11
US11650742B2 (en) 2023-05-16
WO2021055281A1 (en) 2021-03-25
US20210081121A1 (en) 2021-03-18
JP2022548888A (ja) 2022-11-22
CN114402282A (zh) 2022-04-26
EP4031973A1 (en) 2022-07-27
US20230236747A1 (en) 2023-07-27

Similar Documents

Publication Publication Date Title
US12066951B2 (en) Page table hooks to memory types
US11868268B2 (en) Mapping non-typed memory access to typed memory access
TWI752619B (zh) 存取儲存的元資料以識別儲存資料的記憶體裝置
US11526450B2 (en) Memory system for binding data to a memory namespace
KR102408149B1 (ko) 저장 매체에 대한 동기식 메모리 버스 액세스