KR20220050177A - 3단의 계층적 메모리 시스템 - Google Patents

3단의 계층적 메모리 시스템 Download PDF

Info

Publication number
KR20220050177A
KR20220050177A KR1020227009117A KR20227009117A KR20220050177A KR 20220050177 A KR20220050177 A KR 20220050177A KR 1020227009117 A KR1020227009117 A KR 1020227009117A KR 20227009117 A KR20227009117 A KR 20227009117A KR 20220050177 A KR20220050177 A KR 20220050177A
Authority
KR
South Korea
Prior art keywords
data
memory
persistent memory
address
persistent
Prior art date
Application number
KR1020227009117A
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 KR20220050177A publication Critical patent/KR20220050177A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • 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
    • 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/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

3단의 계층적 메모리 시스템에 관한 시스템, 장치 및 방법이 여기서 설명된다. 3단의 계층적 메모리 시스템은 비 영구 메모리에 일반적으로 저장된 데이터를 저장하기 위해 영구 메모리를 활용할 수 있으므로, 비 영구 메모리에만 의존하는 접근 방식보다 더 낮은 비용으로 컴퓨팅 시스템에 할당되는 저장 공간의 양을 늘릴 수 있다. 예시적인 장치는 영구 메모리, 및 영구 메모리에 저장된 데이터에 액세스하기 위해 장치가 I/O 디바이스로부터 요청을 수신하기 전 논리 회로의 어드레스에 입력/출력(I/O) 디바이스와 관련된 어드레스를 매핑하고, 장치가 요청을 수신하고 데이터를 액세스한 후 비 영구 메모리의 어드레스에 I/O 디바이스와 관련된 어드레스를 매핑하도록 구성되는 하나 이상의 비 영구 메모리를 포함할 수 있다.

Description

3단의 계층적 메모리 시스템
본 개시는 일반적으로 반도체 메모리 및 방법에 관한 것으로서, 더 상세하게는, 3단의 계층적 메모리 시스템에 관한 것이다.
메모리 디바이스는 컴퓨터 또는 다른 전자 시스템의 내부, 반도체, 직접 회로(integrated circuit)에 일반적으로 제공된다. 휘발성 및 비휘발성 메모리를 포함하는 다양한 유형의 메모리가 있다. 휘발성 메모리는 그 데이터(예를 들어, 호스트 데이터, 오류 데이터, 등)를 유지하기 위해 전력을 요구할 수 있고, 그 중에서도 RAM(random-access memory), DRAM(dynamic random access memory), SRAM(static random access memory) 및 SDRAM(synchronous dynamic random access memory)을 포함한다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지하여 영구적인 데이터를 제공할 수 있고 그 중에서도, STT RAM(Spin Torque Transfer Random Access Memory)과 같은, 낸드 플래시 메모리(NAND flash memory), 노어 플래시 메모리(NOR flash memory), PCRAM(phase change random access memory), RRAM(resistive random access memory), 및 MRAM(magnetoresistive random access memory)과 같은 저항 가변 메모리(resistance variable memory)를 포함할 수 있다.
메모리 디바이스는 컴퓨터 또는 전자 시스템이 동작하는 동안 호스트에 의해 사용하기 위한 데이터, 명령(command), 및/또는 지시(instruction)를 저장하기 위해 호스트(예를 들어, 호스트 컴퓨팅 장치)에 결합될 수 있다. 예를 들어, 데이터, 명령 및/또는 지시는 컴퓨팅 또는 다른 전자 시스템의 동작 중에 호스트와 메모리 디바이스 사이에서 전송될 수 있다.
도 1은 본 개시의 다수의 실시예에 따른 계층적 메모리 컴포넌트를 포함하는 장치의 형태의 기능적인 블록도이다.
도 2는 본 개시의 다수의 실시예에 따른 계층적 메모리 컴포넌트를 포함하는 컴퓨팅 시스템의 형태의 기능적인 블록도이다.
도 3은 본 개시의 다수의 실시예에 따른 계층적 메모리 컴포넌트를 포함하는 컴퓨팅 시스템의 형태의 또 다른 기능적인 블록도이다.
도 4는 본 개시의 다수의 실시예에 따른 데이터 액세스 작업을 나타낸 흐름도이다.
도 5는 본 개시의 다수의 실시예에 따른 데이터 프로그램 작업을 나타낸 흐름도이다.
도 6은 본 개시의 다수의 실시예에 따른 3단의 계층적 메모리 시스템을 위한 예시적인 방법을 나타낸 흐름도이다.
도 7은 본 개시의 다수의 실시예에 따른 3단의 계층적 메모리 시스템을 위한 예시적인 방법을 나타낸 또 다른 흐름도이다.
3단의 계층적 메모리 시스템이 여기서 설명된다. 본 개시에 따른 3단의 계층적 메모리 시스템은 비 영구 메모리에 일반적으로 저장된 데이터를 저장하기 위해 영구 메모리를 활용할 수 있으므로, 비 영구 메모리에만 의존하는 접근 방식보다 더 낮은 비용으로 컴퓨팅 시스템에 할당되는 저장 공간의 양을 늘릴 수 있다. 예시적인 장치는 영구 메모리, 제1 비 영구 메모리, 및 영구 메모리에 저장된 데이터에 액세스하기 위해 장치가 I/O 디바이스로부터 요청을 수신하기 전 논리 회로의 어드레스에 입력/출력(I/O) 디바이스와 관련된 어드레스를 매핑하고, 장치가 요청을 수신하고 데이터를 액세스한 후 비 영구 메모리의 어드레스에 I/O 디바이스와 관련된 어드레스를 매핑하도록 구성되는 제2 비 영구 메모리를 포함할 수 있다.
컴퓨팅 시스템은 작업 동안 다양한 유형의 메모리 리소스를 활용한다. 예를 들어, 컴퓨팅 시스템은 작업 동안 휘발성(예를 들어, 랜덤 액세스 메모리) 메모리 리소스 및 비 휘발성(예를 들어, 저장) 메모리 리소스의 결합을 활용할 수 있다. 일방적으로 휘발성 메모리 리소스는 비 휘발성 메모리 리소스 보다 더 빠른 속도에서 동작할 수 있고 비 휘발성 메모리 리소스 보다 더 긴 수명을 가질 수 있다; 그러나 휘발성 메모리 리소스는 비 휘발성 메모리 리소스보다 일반적으로 더 비싸다. 여기서 사용된 것처럼, 휘발성 메모리 리소스는 "비 영구 메모리 디바이스"로 대안적으로 언급될 수 있고 반면 비 휘발성 메모리 리소스는 "영구 메모리 디바이스"로 대안적으로 언급될 수 있다.
그러나, 영구 메모리 디바이스는 영구적인 방식으로 데이터를 액세스할 수 있는 능력을 더 광범위하게 의미할 수 있다. 예를 들어, 영구 메모리 콘텍스트(context)에서, 메모리 디바이스는 비휘발성인지 여부와 별개로, 메모리 디바이스에서 데이터의 위치를 추적하기 위해, 메모리 어레이에 다수의 논리적 대 물리적 매핑(logical to physical mapping) 또는 변환 데이터 및/또는 룩업 테이블을 저장할 수 있다. 또한, 영구 메모리 디바이스는 연속적인 프로세스에 대한 명령을 서비스하는 기능을 포함하는 것에 의해(예를 들어, 논리적 대 물리적 매핑, 룩업 테이블 등에 의해) 해당 비휘발성을 사용하는 것에 더하여 메모리의 비휘발성을 모두 참조할 수 있다.
이러한 특성은 소비자 및 컴퓨팅 리소스 제공자의 계속 증가하는 요구에 따라 기능하기에 적절한 리소스를 컴퓨팅 시스템에 제공하기 위하여 컴퓨팅 시스템에서 트레이드-오프(trade-off)를 필요로 할 수 있다. 예를 들어, 다중 사용자 컴퓨팅 네트워크(예를 들어, 클라우드 기반 컴퓨팅 시스템 배포, 소프트웨어 정의 데이터 센터, 등)에서, 비교적 많은 양의 휘발성 메모리가 다중 사용자 네트워크에서 실행되는 가상 머신에 공급하기 위해 제공될 수 있다. 그러나, 일부 접근 방식에서 일반적으로, 메모리 리소스를 다중 사용자 네트워크에 제공하기 위해 휘발성 메모리에 의존함으로써, 특히 네트워크 사용자가 점점 더 많은 컴퓨팅 리소스 풀을 사용할 수 있도록 요구함에 따라, 메모리 리소스를 네트워크에 공급하는 것과 관련한 비용이 증가할 수 있다.
또한, 다중 사용자 네트워크에서 가상 머신에 제공하기 위한 메모리 리소스를 제공하기 위해 휘발성 메모리에 의존하는 접근 방식에서, 휘발성 메모리 리소스가 소진되면(예를 들어, 휘발성 메모리 리소스가 다중 사용자 네트워크의 사용자에 할당되면), 추가 사용자는 추가적인 휘발성 메모리 리소스가 사용 가능해지거나 추가될 때까지 다중 사용자 네트워크에 추가되지 않을 수 있다. 이는 잠재적인 사용자의 이탈을 야기할 수 있고, 이는 추가적인 메모리 리소스가 다중 사용자 네트워크에 사용 가능해질 경우 생성될 수 있는 수익의 손실을 야기할 수 있다.
DRAM(dynamic random-access memory)과 같은 휘발성 메모리 리소스는 결정론적 방식으로 작동하는 경향이 있고 반면 스토리지 클래스 메모리(예를 들어, NAND 플래시 메모리 디바이스, SSD(solid-state drive), 가변 저항 메모리 디바이스 등)와 같은 비 휘발성 메모리 리소스는 비 결정론적 방식으로 작동하는 경향이 있다. 예를 들어, 스토리지 클래스 메모리 디바이스에서 검색된 데이터에 대해 수행되는 오류 정정 작업, 암호화 작업, 레이드(RAID) 작업 등으로 인해, 스토리지 클래스 메모리 디바이스로부터 데이터를 요청하는 것과 사용 가능한 데이터 사이의 시간의 양은 판독할 때마다 다를 수 있고, 따라서 스토리지 클래스 메모리 디바이스에서 데이터 검색을 비 결정론적으로 만든다. 대조적으로, DRAM 장치로부터 데이터를 요청하는 것과 사용 가능한 데이터 사이의 시간의 양은 판독할 때마다 고정적으로 유지될 수 있고, 따라서 DRAM에서 데이터 검색을 결정론적으로 만든다.
또한, 휘발성 메모리 리소스의 결정론적 동작과 비 휘발성 메모리 리소스의 비 결정론적 동작 사이의 구별로 인해, 메모리 리소스와 송수신하는 데이터는 일반적으로 사용되는 메모리 유형과 관련된 특정 인터페이스(예를 들어, 버스(bus))를 통과(traverse)한다. 예를 들어, DRAM과 송수신하는 데이터는 DDR(double data rate) 버스를 통해 일반적으로 통과될 수 있고, 반면 NAND와 송수신하는 데이터는 PCI-e(peripheral component interconnect express) 버스를 통해 일반적으로 통과될 수 있다. 그러나, 인식할 수 있는 것처럼, 휘발성 메모리 리소스 및 비 휘발성 메모리 리소스와 데이터를 송수신 할 수 있는 인터페이스의 예시는 이러한 특정 열거된 예시에 제한되지 않는다.
비 휘발성 메모리 디바이스 및 휘발성 메모리 디바이스의 동작으로 인해, 일부 접근 방식은 휘발성 및 비 휘발성 메모리에 특정 유형의 데이터를 저장하도록 선택한다. 이는 예를 들어, 비 휘발성 메모리 디바이스의 비 결정론적 동작과 비교하여 휘발성 메모리 디바이스의 결정론적 동작으로 인해 발생할 수 있는 문제를 완화할 수 있다. 예를 들어, 일부 접근 방식의 컴퓨팅 시스템은 더 크거나 덜 자주 액세스되는 데이터가 비 휘발성 메모리 디바이스에 저장되는 반면, 컴퓨팅 시스템의 동작 동안 정기적으로 액세스되는 소량의 데이터를 휘발성 메모리 디바이스에 저장한다. 그러나, 다중 사용자 네트워크 배포(multi-user network deployments)에서, 대부분의 데이터가 휘발성 메모리 디바이스에 저장될 수 있다. 대조적으로, 여기의 실시예는 다중 사용자 네트워크에 배치된 비 휘발성 메모리 디바이스로부터 데이터 저장 및 검색을 허용할 수 있다.
여기서 설명된 것처럼, 본 개시의 일부 실시예는 비휘발성, 이런 이유로, 비 결정론적 메모리 리소스가 다른 접근 방식의 휘발성 및 결정론적 메모리 리소스에 의해 사용될 수 있도록 제한된 인터페이스를 통해 통과되는 컴퓨팅 시스템에 관한 것이다. 예를 들어, 일부 실시예에서, 일부 접근 방식에서 휘발성, 결정론적 메모리 리소스와의 데이터 송수신을 위해 예약된 DDR 인터페이스와 같은 인터페이스를 통해 데이터는 NAND 플래시 장치와 같은 비 휘발성, 비 결정론적 메모리 리소스, 위상 변환 메모리 디바이스와 같은 가변 저항 메모리 디바이스, 및/또는 저항 메모리 디바이스(예를 들어, 3차원 크로스포인트(3D XP) 메모리 디바이스), SSD(solid-sate drive), SSM(self-selecting memory) 장치 등과 송수신될 수 있다. 따라서, 휘발성, 결정론적 메모리 디바이스가 컴퓨팅 시스템에 메인 메모리를 제공하는데 사용되는 접근 방식과 달리, 여기의 실시예는 비 휘발성, 비 결정론적 메모리 디바이스가 컴퓨팅 시스템의 메인 메모리의 적어도 일부로서 사용될 수 있도록 한다.
일부 실시예에서, 데이터는 중간에 비 휘발성 메모리 리소스에서 캐시(예를 들어, SRAM(small static random-access memory) 캐시) 또는 버퍼(buffer)로부터 전송되고 이후에 데이터를 요청한 애플리케이션에서 사용할 수 있게 될 수 있다. 일반적으로 비 결정론적 메모리 리소스에 결정론적 방식으로 제공되는 데이터를 저장하고 여기서 설명된 것처럼 해당 데이터에 대한 액세스를 허용함으로써, 컴퓨팅 시스템 성능은 예를 들어, 휘발성 메모리 리소스를 사용하여 동작하는 접근 방식에 비해 상당히 감소된 비용에서 다중 사용자 네트워크에 더 많은 양의 메모리 리소스를 사용할 수 있게 함으로써 개선될 수 있다.
본 개시의 실시예를 용이하게 하기 위해, 비 휘발성 메모리 리소스에 대한 가시성(visibility)은 계층적 메모리 시스템이 배포된 컴퓨팅 시스템의 다양한 장치에 대해 난독화 될 수 있다. 예를 들어, 컴퓨팅 시스템 또는 다중 사용자 네트워크에 배치된 호스트, 네트워크 인터페이스 카드, 가상 머신 등은 데이터가 컴퓨팅 시스템의 비 휘발성 메모리 리소스에 저장되는지 휘발성 메모리 리소스에 의해 저장되는지를 구별하지 못할 수 있다. 예를 들어, 하드웨어 회로는 호스트, 네트워크 인터페이스 카드, 가상 머신 등이 데이터가 휘발성 또는 비휘발성 메모리 리소스에 의해 저장되는지를 구별하지 못할 수 있는 그러한 방식에서 데이터에 대응하는 어드레스를 등록할 수 있는 컴퓨팅 시스템에 배치될 수 있다.
여기에 더 상세히 설명된 것처럼, 계층적 메모리 시스템은 리디렉션된 데이터 요청을 가로채고, 요청된 데이터와 관련된 논리 회로에 어드레스를 등록하고(하드웨어 회로가 데이터를 저장하기 위해 자신의 메모리 리소스에 의해 백업되지 않음에도 불구하고), 논리 회로를 이용하여 비 휘발성 메모리 디바이스에서 데이터에 대응하는 물리적 어드레스에 논리 회로에 등록된 어드레스를 매핑할 수 있는 하드웨어 회로(예를 들어, 논리 회로)를 포함할 수 있다.
본 개시의 다음의 상세한 설명에서, 본 개시의 일부를 형성하고 본 개시의 하나 이상의 실시예가 어떻게 실시될 수 있는지를 도시의 방법에 의해 보여주는 첨부된 도면을 참조한다. 이러한 실시예는 기술 분야의 통상의 기술자가 본 개시의 실시예를 실시할 수 있도록 충분히 상세히 설명되고, 다른 실시예가 이용될 수 있고 프로세스, 전기적 및 구조적 변화가 다른 실시예가 본 개시의 범위로부터 벗어나지 않고 이루어질 수 있음을 이해해야 한다.
여기서 사용된 것처럼, 특히 도면에서 참조 번호와 관련하여 "N", "M"등과 같은 지정자는 그렇게 지정된 다수의 특정 특징이 포함될 수 있음을 나타낸다. 여기서 사용된 용어는 단지 특정 실시예를 설명하기 위한 목적으로서 제한하려는 의도가 아님을 이해해야 한다. 여기서 사용된 것처럼, "하나" 및 "상기"등의 단수 형태는 문맥이 명백하게 달리 지시하지 않는 한 단수 및 복수 지시어 모두를 포함할 수 있다. 또한, "다수의", "적어도 하나" 및 "하나 이상"(예를 들어 다수의 메모리 뱅크)은 하나 이상의 메모리 뱅크를 나타낼 수 있는 반면, "복수의"는 그러한 것들 중 하나 이상을 나타내기 위한 것이다.
또한, "할 수 있다"는 본 출원의 전반에 걸쳐 강제적인 의미(예를 들어, 해야함)가 아니라 허용적인 의미(예를 들어, 잠재성을 가지는, 할 수 있는)로 사용된다. "포함하다"는 단어 및 그 파생어는 "포함하지만 이에 제한되지 않는다"를 의미한다. "결합된" 및 "결합하는"이라는 용어는 문맥에 따라 적절하게, 물리적으로 직접 또는 간접적으로 연결되거나 명령 및/또는 데이터에 대한 이동(전송) 및 액세스를 의미한다. "데이터" 및 "데이터 값"이라는 용어는 여기서 상호교환적으로 사용되고 문맥에 따라 적절하게, 동일한 의미로 사용될 수 있다.
여기서 도면은 첫 번째 숫자 또는 숫자들이 도면 숫자에 대응하고 남은 숫자들이 도면의 요소 또는 컴포넌트를 식별하는 넘버링 규칙을 따른다. 다른 도면 사이의 유사한 요소 또는 컴포넌트는 유사한 번호들의 사용에 의해 식별될 수 있다. 예를 들어, 104는 도 1의 요소 "04"참조할 수 있고, 유사한 요소는 도 2의 204로서 참조될 수 있다. 그룹 또는 복수의 유사한 요소 또는 컴포넌트는 여기서 단일 요소 번호로 언급될 수 있다. 예를 들어, 복수의 참조 요소 106-1, 106-2, . . ., 106-N(예를 들어, 106-1 내지 106-N)은 일반적으로 106으로 지칭될 수 있다. 이해되는 바와 같이, 여기의 다양한 실시예에서 보여지는 요소는 본 개시의 다수의 추가적인 실시예를 제공하기 위해 추가, 교환 및/또는 제거될 수 있다. 또한, 도면에서 제공된 요소의 상대적인 크기 및/또는 비율은 본 개시의 특정 실시예를 설명하기 위한 것으로서 제한적인 의미로 이해되지 말아야 한다.
도 1은 본 개시의 다수의 실시예에 따른 계층적 메모리 컴포넌트(104)를 포함하는 장치를 포함하는 컴퓨팅 시스템(100)의 형태의 기능적인 블록도이다. 여기서 설명된 것처럼, "장치"는 예를 들어, 회로 또는 회로들, 다이(die) 또는 다이들(dice), 모듈 또는 모듈들, 장치 또는 장치들, 또는 시스템 또는 시스템들과 같이 다양한 구조 또는 구조의 조합 중 임의의 것을 지칭할 수 있으나, 이에 제한되지 않는다. 일부 실시예에서, 계층적 메모리 컴포넌트(104)는 FPGA(field programmable gate array), ASIC(application-specific integrated circuit) 다수의 개별 회로 컴포넌트 등으로 제공될 수 있고, 여기서 대안적으로 "논리 회로"로 언급될 수 있다.
계층적 메모리 컴포넌트(104)는 도 1에 도시된 것처럼, 메모리 리소스(102)를 포함할 수 있고, 판독 버퍼(103), 기록 버퍼(105), 및/또는 입력/출력(I/O) 디바이스 액세스 컴포넌트(107)를 포함할 수 있다. 일부 실시예에서, 메모리 리소스(102)는 블록 RAM과 같은 랜덤 액세스 메모리 리소스일 수 있고, 이는 계층적 메모리 컴포넌트(104)가 FPGA인 실시예에서 데이터가 실시예의 계층적 메모리 컴포넌트(104)내에 저장되는 것을 허용한다. 그러나, 실시예는 이에 제한되지 않고, 메모리 리소스(102)는 다양한 레지스터, 캐시, 메모리 어레이, 래치(latch) 및 SRAM, DRAM, EPROM 또는 논리 회로(104)의 외부에 데이터가 저장되는 물리적 위치에 대응하는 등록된 어드레스를 포함하는 비트 스트링(bit string)과 같은 데이터를 저장할 수 있는 다른 적절한 메모리 기술을 포함한다. 메모리 리소스(102)는 계층적 메모리 컴포넌트(104)의 내부에 있으며, 계층적 메모리 컴포넌트(104)의 외부에 있을 수 있는 영구 및/또는 비 영구 메모리 리소스와 같은 계층적 메모리 컴포넌트(104)의 외부에 있는 메모리보다 일반적으로 더 작다.
판독 버퍼(103)는 계층적 메모리 컴포넌트(104)에 의해 수신되었지만 계층적 메모리 컴포넌트(104)에 의해 처리되지 않은 데이터를 저장하기 위해 예약된 메모리 리소스(102)의 일부를 포함한다. 일부 실시예에서, 판독 버퍼(103)는 약 4KB 크기일 수 있지만, 실시예는 이러한 특정 크기에 제한되지 않는다. 판독 버퍼(103)는 어드레스 레지스터(106-1 내지 106-N) 중 하나에 등록된 데이터에 버퍼링 될 수 있다.
기록 버퍼(105)는 계층적 메모리 컴포넌트(104) 외부 위치에 전송을 대기하는 데이터를 저장하기 위해 예약된 메모리 리소스(102)의 일부를 포함할 수 있다. 일부 실시예에서, 기록 버퍼(105)는 약 4KB 크기일 수 있지만, 실시예는 이러한 특정 크기에 제한되지 않는다. 기록 버퍼(103)는 어드레스 레지스터(106-1 내지 106-N) 중 어느 하나에 등록된 데이터를 버퍼링 할 수 있다.
I/O 액세스 컴포넌트(107)는 여기 도 2 및 3에 도시된 I/O 디바이스(210/310)와 같은 계층적 메모리 컴포넌트(104) 외부의 컴포넌트에 대한 액세스에 대응하는 데이터를 저장하기 위해 예약된 메모리 리소스(102)의 일부분을 포함할 수 있다. I/O 액세스 컴포넌트(107)는 I/O 디바이스에/로부터 데이터를 판독 및/또는 기록 하는데 이용될 수 있는 I/O 디바이스의 어드레스에 대응하는 데이터를 저장할 수 있다. 또한, I/O 액세스 컴포넌트(107)는 일부 실시예에서, 여기 도 3과 관련하여 더 자세히 설명된 바와 같이, 하이퍼바이저(hypervisor) (예를 들어, 도 3에 도시된 하이퍼바이저(312))의 상태에 대응하는 데이터를 수신, 저장, 및/또는 전송할 수 있다.
계층적 메모리 컴포넌트(104)는 메모리 액세스 멀티플렉서(MUX)(109), 상태 머신(111), 및/또는 계층적 메모리 컨트롤러(113)(또는 단순화를 위해, 컨트롤러)를 더 포함할 수 있다. 도 1에 도시된 것처럼, 계층적 메모리 컨트롤러(113)는 복수의 어드레스 레지스터(106-1 내지 106-N) 및/또는 인터럽트 컴포넌트(115)를 포함할 수 있다. 메모리 액세스 MUX(109)는 하나 이상의 논리 게이트를 포함할 수 있고 논리 회로(104)의 데이터 및/또는 어드레스 버싱(address bussing)을 제어하도록 구성될 수 있는 회로를 포함할 수 있다. 예를 들어, 메모리 액세스 MUX(109)는 아래에서 더 상세히 설명된 것처럼, 계층적 메모리 컨트롤러(113) 및/또는 상태 머신(111)과 통신할 뿐만 아니라 메모리 리소스(102)와 메시지를 송수신할 수 있다.
일부 실시예에서, MUX(109)는 인커밍 메시지 및/또는 명령을 수신된 호스트(예를 들어, 컴퓨팅 장치, 가상 머신 등)에서 계층적 메모리 컴포넌트(104)로 리디렉션할 수 있다. 예를 들어, MUX(109)는 입력/출력(I/O) 디바이스(여기에서, 도 2 및 3에 도시된 I/O 디바이스(210/310))에서 어드레스 레지스터(예를 들어, 아래에서 설명된 것처럼, 계층적 메모리 컨트롤러(113)의 BAR4 영역인 어드레스 레지스터(106-N)) 중 하나로의 액세스(예를 들어, 판독) 또는 프로그램(예를 들어, 기록) 요청에 대응하는 인커밍 메시지를 판독 버퍼(103) 및/또는 기록 버퍼(105)로 리디렉션할 수 있다.
또한, MUX(109)는 계층적 메모리 컴포넌트(104)에 의해 수신된 요청(예를 들어, 판독 요청, 기록 요청)을 리디렉션 할 수 있다. 일부 실시예에서, 요청은 계층적 메모리 컴포넌트(104)에 통신적으로 결합된 호스트 컴퓨팅 장치, 베어 메탈 서버(bare metal server), 또는 하이퍼바이저(예를 들어, 여기에서, 도 3에 도시된 하이퍼바이저(312))로부터 계층적 메모리 컴포넌트(104)에 의해 수신될 수 있다. 이러한 요청은 판독 버퍼(103), 기록 버퍼(105), 및/또는 I/O 액세스 컴포넌트(107)에서 어드레스 레지스터(예를 들어, 아래에서 설명된, 계층적 메모리 컨트롤러(113)의 BAR2 영역일 수 있는 어드레스 레지스터(106-2))로 MUX(109)에 의해 리디렉션 될 수 있다.
MUX(109)는 액세스되는 어드레스 레지스터(들)(106)의 어드레스를 결정하기 위한 작업의 일부로서 그러한 요청을 리디렉션할 수 있다. 일부 실시예에서, MUX(109)는 하이퍼바이저 인터럽트(예를 들어, 인터럽트 컴포넌트(115)에 의해 생성된 계층적 메모리 컴포넌트(104)와 결합되는 하이퍼바이저에 어설션된 인터럽트)의 어설션(assertion)에 대응하여 액세스되는 어드레스 레지스터(들)의 어드레스를 결정하기 위해 작업의 일부로서 그러한 요청을 리디렉션할 수 있다.
요청이 데이터(예를 들어, 계층적 메모리 컴포넌트(104) (예를 들어, 여기에서, 도 2 및 3에 도시된 영구 메모리 디바이스(216/316)과 같은 영구 메모리 디바이스)의 외부의 위치에 기록된 어드레스와 관련된 데이터)에 대응한다는 결정에 응답하여, MUX(109)는 데이터의 검색, 기록 버퍼(105)로 데이터를 전송, 및/또는 계층적 메모리 컴포넌트(104)의 외부의 위치로 데이터를 전송하는 것을 용이하게 할 수 있다. 요청이 계층적 메모리 컴포넌트(104)의 외부의 위치로부터(예를 들어, 영구 메모리 디바이스로부터) 판독되는 데이터에 대응한다는 결정에 응답하여, MUX(109)는 데이터의 검색, 판독 버퍼(103)로 데이터를 전송, 및/또는 어드레스 레지스터(들)(106)과 같은 계층적 메모리 컴포넌트(104)의 내부의 위치로 데이터와 관련된 어드레스 정보 또는 데이터를 전송하는 것을 용이하게 할 수 있다.
비 제한적인 예시로서, 계층적 메모리 컴포넌트(104)는 I/O 디바이스로부터 판독 요청을 수신하고, MUX(109)는 계층적 메모리 컴포넌트(104)에서 전송하기 위한 적절한 메시지를 선택함으로써 하이퍼바이저를 통해 영구 메모리 디바이스로부터 데이터의 검색을 용이하게 할 수 있다. 예를 들어, MUX(109)는 인터럽트 컴포넌트(115)를 이용하여 인터럽트의 생성을 용이하게 할 수 있고, 하이퍼바이저에 어서션하여 인터럽트를 야기할 수 있고, 판독 버퍼(103) 내 영구 메모리 디바이스로부터 수신된 데이터를 버퍼링할 수 있고, 및/또는 판독 요청이 충족되었다는 표시로 I/O 디바이스에 응답할 수 있다. 계층적 메모리 컴포넌트(104)가 I/O 디바이스로부터 기록 요청을 수신하는 비 제한적인 실시예에서, MUX(109)는 계층적 메모리 컴포넌트(104)에서 보내기 위한 적절한 메시지를 선택함으로써 하이퍼바이저를 통해 영구 메모리 디바이스로 데이터를 전송하는 것을 용이하게 할 수 있다. 예를 들어, MUX(109)는 인터럽트 컴포넌트(115)를 이용하여 인터럽트의 생성을 용이하게 할 수 있고, 하이퍼바이저에 어서션하여 인터럽트를 야기할 수 있고, 기록 버퍼(105) 내 영구 메모리 디바이스로부터 전송된 데이터를 버퍼링할 수 있고, 및/또는 기록 요청이 충족되었다는 표시로 I/O 디바이스에 응답할 수 있다.
상태 머신(111)은 입력에 대한 작업을 수행하고 출력을 생성하도록 구성된 하나 이상의 처리 장치, 회로 컴포넌트, 및/또는 로직을 포함할 수 있다. 일부 실시예에서, 상태 머신(111)은 변경 입력을 수신하고 수신된 입력에 기초하여 결과 출력을 생성하도록 구성된 유한 상태 머신(FSM) 또는 하드웨어 상태 머신 일 수 있다. 예를 들어, 상태 머신(111)은 계층적 메모리 컨트롤러(113)에/로부터 인터럽트 요청 메시지(예를 들어, "INTERRUPT REQUEST") 및/또는 인터럽트 구성 정보(예를 들어, "INTERRUPT CONFIG") 뿐만 아니라 액세스 정보(예를 들어, "I/O ACCESS INFO")를 메모리 액세스 멀티플렉서(109)와 송수신할 수 있다. 일부 실시예에서, 상태 머신(111)은 메모리 액세스 멀티플렉서(109)와 제어 메시지(예를 들어, "MUX CTRL")를 더 송수신할 수 있다.
ACCESS INFO 메시지는 계층적 메모리 컴포넌트(104)의 외부의 I/O 디바이스로부터 수신된 데이터 액세스 요청에 대응하는 정보를 포함할 수 있다. 일부 실시예에서, ACCESS INFO는 영구 메모리 디바이스로부터 검색된 데이터에 대응하는 어드레스 정보 또는 영구 메모리에 저장된 데이터에 대응하는 논리 어드레스 정보를 포함할 수 있다.
INTERRUPT CONFIG 메시지는 계층적 메모리 컴포넌트(104)의 외부에 어서션되는 적절한 인터럽트 메시지를 구성하기 위해 계층적 메모리 컨트롤러(113)의 상태 머신(111)에 의해 어서션될 수 있다. 예를 들어, 계층적 메모리 컴포넌트(104)는 리디렉션된 기록 또는 판독 요청을 이행하는 것의 일부로서 계층적 메모리 컴포넌트(104)에 결합되는 하이퍼바이저에 인터럽트를 어서션하면, INTERRUPT CONFIG 메시지는 작업이 영구 메모리 디바이스로부터 데이터를 검색하는 작업인지 영구 메모리 디바이스에 데이터를 기록하는 작업인지에 기초하여 적절한 인터럽트 메시지를 생성하기 위해 상태 머신(111)에 의해 생성될 수 있다.
INTERRUPT REQUEST 메시지는 인터럽트 메시지가 하이퍼바이저(또는 베어 메탈 서버 또는 다른 컴퓨팅 장치)에 어서션되기 위해 인터럽트 컴포넌트(115)에서 어서션되고 상태 머신(111)에 의해 생성될 수 있다. 여기서 더 상세히 설명된 바와 같이, 인터럽트(115)는 하이퍼바이저가 계층적 메모리 시스템의 작업의 일부로서 영구 메모리 디바이스에 데이터 검색 또는 데이터 기록을 우선순위화 하기 위해 하이퍼바이저에 어서션될 수 있다.
MUX CTRL 메시지(들)은 상태 머신(111)에 의해 생성될 수 있고 MUX(109)의 작업을 제어하기 위해 MUX(109)에 어서션될 수 있다. 일부 실시예에서, MUX CTRL 메시지(들)은 상기 설명된 MUX(109)의 수행의 일부로서 상태 머신(111)에 의해 MUX(109)에 어서션될 수 있다(또는 그 반대).
계층적 메모리 컨트롤러(113)는 집적 회로, 칩, 시스템 온 칩, 또는 그 결합과 같은 코어(core)를 포함할 수 있다. 일부 실시예에서, 계층적 메모리 컨트롤러(113)는 PCIe(peripheral component interconnect express) 일 수 있다. 여기서 사용된 것처럼, "코어"는 지시를 수신하고 수신된 지시에 기반하여 작업 또는 동작을 수행하는 로직, 프로세서, 및/또는 코-프로세서의 재사용 가능한 유닛을 나타낼 수 있다.
계층적 메모리 컨트롤러(113)는 어드레스 레지스터(106-1 내지 106-N) 및/또는 인터럽트 컴포넌트(115)를 포함할 수 있다. 어드레스 레지스터(106-1 내지 106-N)는 논리 회로(104) 또는 컴퓨팅 시스템(예를 들어, 여기서, 도 2 및 3에 도시된 컴퓨팅 시스템(201/301))에 의해 사용된 메모리 어드레스를 포함할 수 있는 베이스 어드레스 레지스터(BAR)일 수 있다. 어드레스 레지스터 중 적어도 하나(예를 들어, 어드레스 레지스터(106-1))는 도 3에 도시된 하이퍼바이저(312)와 같은 외부 위치로부터 논리 회로(104)의 내부 레지스터로의 액세스를 제공하는 메모리 어드레스를 저장할 수 있다.
상이한 어드레스 레지스터(예를 들어, 어드레스 레지스터(106-2))는 여기서 더 상세히 설명된 것처럼, 인터럽트 제어에 대응하는 어드레스를 저장하기 위해 사용될 수 있다. 일부 실시예에서, 어드레스 레지스터(106-2)는 DMA(direct memory access) 판독 및 DMA 기록 제어 및/또는 상태 레지스터를 매핑할 수 있다. 예를 들어, 어드레스 레지스터(106-2)는 DMA 명령 체이닝(chaining)을 위한 제어 비트 및/또는 설명자에 대응하는 어드레스를 포함할 수 있고, 이는 여기서 도 3에 관하여 설명된 것처럼, 계층적 메모리 시스템의 작업의 일부로서 하이퍼바이저에 어서션될 수 있는 하나 이상의 인터럽트 메시지의 생성을 포함할 수 있다.
그러나 어드레스 레지스터의 또 다른 하나(예를 들어, 어드레스 레지스터(106-3))는 하이퍼바이저(예를 들어, 여기서, 도 3에 도시된 하이퍼바이저(312))에/로부터의 액세스에 대응하는 어드레스를 저장할 수 있다. 일부 실시예에서, 하이퍼바이저에/로부터의 액세스는 계층적 메모리 컴포넌트(104)와 관련된 AXI(Advanced eXtensible Interface) DMA를 통해 제공될 수 있다. 일부 실시예에서, 어드레스 레지스터는 계층적 메모리 컴포넌트(104)의 외부의 위치에 계층적 메모리 컴포넌트(104)의 DMA(예를 들어, AXI DMA)를 통해 전송되는 데이터에 대응하는 어드레스를 매핑할 수 있다.
일부 실시예에서, 어드레스 레지스터 중 적어도 하나(예를 들어, 어드레스 레지스터(106-N))는 I/O 디바이스(예를 들어, 도 2에 도시된 I/O 디바이스(210)) 액세스 정보(예를 들어, 논리 회로(104)로의 액세스)에 대응하는 어드레스를 저장할 수 있다. 어드레스 레지스터(106-N)는 계층적 메모리 컴포넌트(104)와 관련된 DMA 컴포넌트에 의해 우회될 수 있는 어드레스를 저장할 수 있다. 어드레스 레지스터(106-N)는 그것에 매핑된 어드레스가 논리 회로(104)의 물리적 메모리 위치에 의해 "백업"되지 않도록 제공될 수 있다. 즉, 일부 실시예에서, 계층적 메모리 컴포넌트(104)는 영구 메모리 디바이스(예를 들어, 도 2에 도시된 영구 메모리 디바이스(216))에 저장된 데이터에 대응하고 계층적 메모리 컴포넌트(104)에 의해 저장된 데이터에 대응하지 않는 어드레스를 저장하는 어드레스 공간으로 구성될 수 있다. 예를 들어, 어드레스 레지스터(106-N)는 데이터가 저장되는 물리적 메모리 위치(예를 들어, 메모리 디바이스에)에 대응하는 논리 어드레스를 저장할 수 있는 가상 어드레스 공간으로서 구성될 수 있다.
일부 실시예에서, 어드레스 레지스터(106-N)는 메모리 디바이스(예를 들어, 여기서, 도 2 및 3에 도시된 영구 메모리 디바이스(216/316))의 크기에 대응하는 어드레스 공간의 양을 포함할 수 있다. 예를 들어, 메모리 디바이스가 1 테라바이트의 저장소를 포함하는 경우, 어드레스 레지스터(106-N)는 1 테라바이트의 어드레스 공간을 포함할 수 있는 어드레스 공간을 가지도록 구성될 수 있다. 그러나, 상기에서 설명된 것처럼, 어드레스 레지스터(106-N)는 실제로 1 테라바이트의 저장소를 포함하지 않고, 대신 1 테라바이트의 저장소를 가지는 것처럼 보이도록 구성된다.
비록 도 1에 도시되지는 않았지만, 계층적 메모리 컴포넌트(104)는 호스트 컴퓨팅 시스템에 결합될 수 있다. 호스트 컴퓨팅 시스템은 시스템 마더보드(motherboard) 및/또는 백플레인(backplane)을 포함할 수 있고 다수의 처리 리소스(예를 들어, 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로)를 포함할 수 있다. 호스트 및 장치(100)는 예를 들어, 서버 시스템 및/또는 HPC(high-performance computing) 시스템 및/또는 그 일부일 수 있다. 일부 실시예에서, 컴퓨팅 시스템은 폰 노이만 아키텍처(Von Neumann architecture)를 가질 수 있으나, 본 개시의 실시예에서 종종 폰 노이만 아키텍처와 관련된 하나 이상의 컴포넌트(예를 들어, CPU, ALU 등)를 포함하지 않을 수 있는 비-폰 노이만 아키텍처(non-Von Neumann architecture)로 구현될 수도 있다.
도 2는 본 개시의 다수의 실시예에 따른 계층적 메모리 컴포넌트(204)(예를 들어, 논리 회로)를 포함하는 컴퓨팅 시스템(201)의 형태의 기능적인 블록도이다. 도 2에 도시된 것처럼, 컴퓨팅 시스템(201)은 도 1에 도시된 계층적 메모리 컴포넌트(104)와 유사할 수 있는 계층적 메모리 컴포넌트(204)를 포함할 수 있다. 또한, 컴퓨팅 시스템(201)은 입력/출력(I/O) 디바이스(210), 영구 메모리(216)(예를 들어, 영구 메모리 디바이스), 제1 비 영구 메모리(230)(예를 들어, 비 영구 메모리 디바이스), 중간 메모리 컴포넌트(220), 및 제2 비 영구 메모리(219)를 가진 메모리 관리 회로(예를 들어, 메모리 관리 컴포넌트)(214)를 포함할 수 있다. 이와 같이, 컴퓨팅 시스템(201)은 계층적 메모리 시스템의 다른 계층(예를 들어, 레벨)을 각각 포함하는 영구 메모리 디바이스(216), 제1 비 영구 메모리 디바이스(230), 및 제2 비 영구 메모리 디바이스(219)를 가진, 3단의(예를 들어, 3 레벨) 계층적 메모리 시스템으로서 지칭될 수 있다. 논리 회로(204), I/O 디바이스(210) 및 영구 메모리 디바이스(216), 비 영구 메모리 디바이스(230) 및 메모리 관리 컴포넌트(214)(예를 들어, 제2 비 영구 메모리(219)) 사이의 통신은 인터페이스(208)를 통해 촉진될 수 있다.
I/O 디바이스(210)는 물리적 어드레스 및/또는 가상 머신 물리적 어드레스를 통해 직접 메모리 액세스를 제공하도록 구성되는 장치일 수 있다. 일부 실시예에서, I/O 디바이스(210)는 NIC(network interface card) 또는 네트워크 인터페이스 컨트롤러, 저장 장치, 그래픽 렌더링 장치 또는 다른 I/O 디바이스일 수 있다. I/O 디바이스(210)는 물리적 I/O 디바이스일 수 있고 I/O 디바이스(210)는 가상 I/O 디바이스(210)일 수 있다. 예를 들어, 일부 실시예에서, I/O 디바이스(210)는 PCIe 인터페이스 또는 다른 적절한 인터페이스와 같은 인터페이스 또는 버스를 통해 컴퓨팅 시스템에 물리적으로 결합되는 물리적 카드일 수 있다. I/O 디바이스(210)가 가상 I/O 디바이스(210)인 실시예에서, 가상 I/O 디바이스(210)는 분산 방식으로 I/O 기능을 제공할 수 있다.
영구 메모리 디바이스(216)는 다수의 메모리 셀 어레이를 포함할 수 있다. 어레이는 예를 들어, NAND 아키텍처를 가진 플래시 어레이일 수 있다. 그러나, 실시예는 특정 유형의 메모리 어레이 또는 어레이 아키텍처에 제한되지 않는다. 메모리 셀은 예를 들어, 다수의 물리적 페이지를 포함하는 다수의 블록에 그룹화될 수 있다. 다수의 블록은 메모리 셀의 플레인(plain)에 포함될 수 있고 어레이는 다수의 플레인(plain)을 포함할 수 있다.
영구 메모리 디바이스(216)는 휘발성 메모리 및/또는 비 휘발성 메모리를 포함할 수 있다. 다수의 실시예에서, 영구 메모리 디바이스(216)는 다중 칩 장치를 포함할 수 있다. 다중 칩 장치는 다수의 상이한 메모리 유형 및/또는 메모리 모듈을 포함할 수 있다. 예를 들어, 메모리 시스템은 임의 유형의 모듈에 비 휘발성 또는 휘발성 메모리를 포함할 수 있다. 영구 메모리 디바이스(216)가 비 휘발성 메모리를 포함하는 실시예에서, 영구 메모리 디바이스(216)는 NAND 또는 NOR 플래시 메모리 디바이스와 같은 플래시 메모리 디바이스일 수 있다.
그러나 실시예는 이에 제한되지 않고, 영구 메모리 디바이스(216)는 비 휘발성 랜덤 액세스 메모리 디바이스(예를 들어, NVRAM, ReRAM, FeRAM, MRAM, PCM)와 같은 다른 비 휘발성 메모리 디바이스, 가변 저항 메모리 디바이스와 같은 "신흥(emerging)" 메모리 디바이스(예를 들어, 3D 크로스 포인트(3D XP) 메모리 디바이스와 같은 저항 및/또는 위상 변화 메모리 디바이스), SSM(self-selecting memory) 셀의 어레이를 포함하는 메모리 디바이스, 또는 그 결합을 포함할 수 있다. 비 휘발성 메모리의 저항 및/또는 위상 변화 어레이는 스택 가능한 교차 그리드 데이터 액세스 어레이(stackable cross-gridded data access array)와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 또한, 많은 플래시 기반 메모리와 대조적으로, 저항 및/또는 위상 변화 메모리 디바이스는 제자리 기록 작업(write in-place operation)을 수행할 수 있고, 여기서 비 휘발성 메모리 셀은 비 휘발성 메모리 셀이 사전에 삭제되지 않고 프로그램 될 수 있다. 플래시 기반 메모리와 대조적으로, 자가 선택 메모리 셀(self-selecting memory cell)은 메모리 셀의 스위치 및 저장 요소 모두의 역할을 하는 단일 칼코게나이드(chalcogenide) 물질을 가지는 메모리 셀을 포함할 수 있다.
영구 메모리 디바이스(216)는 컴퓨팅 시스템(201)을 위한 저장 볼륨을 제공할 수 있고 따라서 컴퓨팅 시스템(201), 컴퓨팅 시스템(201)의 메인 메모리, 및 그 결합을 통해 추가적인 메모리 또는 저장소로서 사용될 수 있다. 그러나 실시예는 특정 유형의 메모리 디바이스에 제한되지 않으며, 영구 메모리 디바이스(216)는 그 중에서, RAM, ROM, SRAM DRAM, SDRAM, PCRAM, RRAM, 및 플래시 메모리를 포함할 수 있다. 또한, 비록 단일의 영구 메모리 디바이스(216)가 도 2에 도시되었지만, 실시예는 이에 제한되지 않고, 컴퓨팅 시스템(201)은 하나 이상의 영구 메모리 디바이스(216)를 포함할 수 있고, 이들 각각은 그와 관련된 동일한 아키텍처를 가지거나 가지지 않을 수 있다. 비 제한적인 실시예로서, 일부 실시예에서, 영구 메모리 디바이스(216)는 NAND 메모리 디바이스 및 가변 저항 메모리 디바이스와 같은 상이한 아키텍처인 2개의 개별 메모리 디바이스를 포함할 수 있다.
비 영구 메모리 디바이스(230) 및 비 영구 메모리(219)는 각각 휘발성 메모리 셀 어레이와 같은 휘발성 메모리를 포함할 수 있다. 다수의 실시예에서, 비 영구 메모리 디바이스(230)는 다중 칩 장치를 포함할 수 있다. 다중 칩 장치는 다수의 상이한 메모리 유형 및/또는 메모리 모듈을 포함할 수 있다. 일부 실시예에서, 비 영구 메모리 디바이스(230)는 컴퓨팅 시스템(201)을 위한 메인 메모리로서 역할을 가질 수 있다. 예를 들어, 비 영구 메모리 디바이스(230)는 컴퓨팅 시스템(230)에 메인 메모리를 제공하기 위해 사용되는 DRAM 메모리 디바이스일 수 있다. 일부 실시예에서, 비 영구 메모리 (219)는 DRAM(예를 들어, DRAM 셀의 어레이)을 또한 포함할 수 있다. 그러나 실시예는 비 영구 메모리 디바이스(230) 및 DRAM을 포함하는 비 영구 메모리(210)에 제한되지 않으며, 일부 실시예에서, 비 영구 메모리 디바이스(230) 및/또는 비 영구 메모리(219)는 이들 중 RAM, SRAM DRAM, SDRAM, PCRAM, 및/또는 RRAM과 같은 다른 비 영구 메모리를 포함할 수 있다.
비 영구 메모리 디바이스(230)는 컴퓨팅 시스템(201)의 작업의 일부로서 예를 들어, 호스트 컴퓨팅 장치에 의해 요청(예를 들어, 액세스)될 수 있는 데이터(예를 들어, 사용자 데이터)를 저장할 수 있다. 예를 들어, 컴퓨팅 시스템(201)이 다중 사용자 네트워크의 일부인 경우, 비 영구 메모리 디바이스(230)는 컴퓨팅 시스템(201)의 작업 동안 호스트 컴퓨팅 장치(예를 들어, 다중 사용자 네트워크에서 배포된 가상 머신) 사이에 전송될 수 있는 데이터를 저장할 수 있다.
일부 접근 방식에서, 비 영구 메모리 디바이스(230)와 같은 비 영구 메모리는 호스트에 의해 액세스된 모든 사용자 데이터를 저장할 수 있다(예를 들어, 다중 사용자 네트워크에서 배포된 가상 머신). 예를 들어, 비 영구 메모리의 속도로 인해, 일부 접근 방식은 다중 사용자 네트워크에서 배포된 가상 머신에 메모리 리소스를 공급하기 위해 비 영구 메모리에 의존한다. 그러나, 이러한 접근 방식에서, 비 영구 메모리가 영구 메모리(예를 들어, 영구 메모리 디바이스(216))보다 일반적으로 더 비싸기 때문에 비용이 문제될 수 있다.
대조적으로, 아래에서 더 상세히 설명되는 바와 같이, 여기의 실시예는 비 영구 메모리 디바이스(230)에 저장된 적어도 일부의 데이터가 영구 메모리 디바이스(216)에 저장되는 것을 허용할 수 있다. 이는 사용자 데이터 저장소의 비 영구 메모리에 의존하는 접근 방식보다 더 낮은 비용에서 다중 사용자 네트워크와 같은 컴퓨팅 시스템(201)에 추가적인 메모리 리소스가 공급될 수 있도록 할 수 있다.
컴퓨팅 시스템(201)은 메모리 관리 컴포넌트(214)를 포함할 수 있고, 이는 비 영구 메모리 디바이스(230) 및/또는 인터페이스 (208)에 통신적으로 결합될 수 있다. 일부 실시예에서, 메모리 관리 컴포넌트(214)는 비 영구 메모리 디바이스(230)에 인터페이스(208)와 같은 직접 메모리 액세스 버스를 통신적으로 결합할 수 있는 입력/출력 메모리 관리 유닛(input/output memory management unit, IO MMU)일 수 있다. 그러나 실시예는 이에 제한되지 않으며, 메모리 관리 컴포넌트(214)는 인터페이스(208)와 비 영구 메모리 디바이스(230) 사이에 통신을 용이하게 하는 다른 유형의 메모리 관리 하드웨어일 수 있다.
메모리 관리 컴포넌트(214)의 비 영구 메모리(219)는 물리적 어드레스에 장치 가시적 가상 어드레스(device-visible virtual address)를 매핑할 수 있다. 예를 들어, 비 영구 메모리(219)는 비 영구 메모리 디바이스(230) 및/또는 영구 메모리 디바이스(216)의 물리적 어드레스에 I/O 디바이스(210)와 관련된 가상 어드레스를 매핑할 수 있다. 예를 들어, 비 영구 메모리(219)는 가상 어드레스 공간의 일부를 되돌릴 수 있다(예를 들어, 기존 가상 어드레스 공간을 복제하는 캐시와 대조적으로). 일부 실시예에서 I/O 디바이스(210)와 관련된 가상 엔트리를 매핑하는 것은 여기의 도 1에 도시된 판독 버퍼, 기록 버퍼, 및/또는 I/O 액세스 버퍼에 의해 용이해질 수 있다.
일부 실시예에서, 메모리 관리 컴포넌트(214)는 I/O 디바이스(210)와 관련된 가상 어드레스를 판독할 수 있고, 비 영구 메모리(219)는 계층적 메모리 컴포넌트(204)의 어드레스 또는 비 영구 메모리 디바이스(230)의 물리적 어드레스에 가상 어드레스를 매핑할 수 있다. 비 영구 메모리(219)가 계층적 메모리 컴포넌트(204)의 어드레스에 가상 I/O 디바이스(210) 어드레스를 매핑하는 실시예에서, 메모리 관리 컴포넌트(214)는 계층적 메모리 컴포넌트(204)에 I/O 디바이스(210)로부터 수신된 판독 요청(또는 기록 요청)을 리디렉션 할 수 있고, 이는 계층적 메모리 컴포넌트(204)의 어드레스 레지스터(예를 들어, 어드레스 레지스터(206-N))에 I/O 디바이스(210) 판독 또는 기록 요청과 관련된 가상 어드레스 정보를 저장할 수 있다. 즉, I/O 디바이스(210)와 관련된 어드레스가 매핑되는 계층적 메모리 컴포넌트(204)의 어드레스는 어드레스 레지스터(2016-N)의 어드레스일 수 있다. 일부 실시예에서, 어드레스 레지스터(206-N)는 BAR4 어드레스 레지스터와 같은 계층적 메모리 컴포넌트(204)의 특정 베이스 어드레스 레지스터일 수 있다.
리디렉션된 판독(또는 기록) 요청은 인터페이스(208)를 통해 메모리 관리 컴포넌트(214)에서 계층적 메모리 컴포넌트(204)로 전송될 수 있다. 일부 실시예에서, 인터페이스(208)는 PCIe 인터페이스일 수 있고 따라서 PCIe 프로토콜에 따라 메모리 관리 컴포넌트(214)와 계층적 메모리 컴포넌트(204) 사이에 정보를 전달할 수 있다. 그러나 실시예는 이에 제한되지 않으며, 일부 실시예에서 인터페이스(208)는 또 다른 적절한 프로토콜에 따라 기능하는 인터페이스 또는 버스일 수 있다.
가상 NIC 어드레스가 계층적 메모리 컴포넌트(204)에 저장된 후, 가상 NIC 어드레스에 대응하는 데이터는 영구 메모리 디바이스(216)에 기록 될 수 있다. 예를 들어, 계층적 메모리 컴포넌트(204)에 저장된 가상 NIC 어드레스에 대응하는 데이터는 영구 메모리 디바이스(216)의 물리적 어드레스 위치에 저장될 수 있다. 일부 실시예에서, 여기의 도 3 내지 5와 관련하여 설명된 것처럼, 영구 메모리 디바이스(216)와 데이터를 송수신하는 것은 하이퍼바이저에 의해 용이해질 수 있다.
예를 들어 컴퓨팅 시스템(201)에 배포된 가상 머신과 같은 호스트 컴퓨팅 장치에 의해 데이터가 요청되면, 요청은 메모리 관리 컴포넌트(214)에 의해, I/O 디바이스(210)에서 계층적 메모리 컴포넌트(204)로 리디렉션 될 수 있다. 영구 메모리 디바이스(216)의 데이터의 물리적 위치에 대응하는 가상 NIC 어드레스가 계층적 메모리 컴포넌트(204)의 어드레스 레지스터(206-N)에 저장되기 때문에, 계층적 메모리 컴포넌트(204)는 여기의 도 3 내지 5와 관련하여 더 상세하게 설명된 것처럼, 하이퍼바이저와 관련하여, 영구 메모리 디바이스(216)로부터의 데이터의 검색을 용이하게 할 수 있다.
일부 실시예에서, 영구 메모리 디바이스(216)에 저장된 데이터가 영구 메모리 디바이스(216) 외부로 전송되면(예를 들어, 영구 메모리 디바이스(216)에 저장된 데이터가 호스트 컴퓨팅 장치에 의해 요청되면), 데이터는 호스트 컴퓨팅 장치에 제공되기 전에 중간 메모리 컴포넌트(220) 및/또는 비 영구 메모리 디바이스(230)에 전송될 수 있다. 예를 들어, 호스트 컴퓨팅 장치에 전송된 데이터가 결정론적 방식으로(예를 들어, DDR 인터페이스를 통해) 전송되기 때문에, 데이터는 데이터 요청이 수행되기 전, 중간 메모리 컴포넌트(220) 및/또는 비 영구 메모리 디바이스(230)과 같은 DDR 버스를 이용하여 동작하는 메모리에 일시적으로 전송될 수 있다.
도 3은 본 개시의 다수의 실시예에 따른 계층적 메모리 컴포넌트를 포함하는 컴퓨팅 시스템의 형태의 또 다른 기능적인 블록도이다. 도 3에 도시된 것처럼, 컴퓨팅 시스템(301)은 계층적 메모리 컴포넌트(304)를 포함할 수 있고, 이는 도 1 및 2에 도시된 계층적 메모리 컴포넌트(104/204)에 유사할 수 있다. 또한, 컴퓨팅 시스템(301)은 I/O 디바이스(310), 영구 메모리 디바이스(316), 비 영구 메모리 디바이스(330), 중간 메모리 컴포넌트(320), 비 영구 메모리(319)를 포함하는 메모리 관리 컴포넌트(314), 및 하이퍼바이저(312)를 포함할 수 있다.
일부 실시예에서, 컴퓨팅 시스템(301)은 소프트웨어 정의 데이터 센터, 클라우드 컴퓨팅 환경 등과 같은 다중 사용자 네트워크일 수 있다. 그러한 실시예에서, 컴퓨팅 시스템은 이에서 실행되는 하나 이상의 가상 머신(317)을 가지도록 구성될 수 있다. 예를 들어, 일부 실시예에서, 하나 이상의 가상 머신(317)은 하이퍼바이저(312)에 배포될 수 있고 다중 사용자 네트워크의 사용자에 의해 액세스될 수 있다.
I/O 디바이스(310), 영구 메모리 디바이스(316), 비 영구 메모리 디바이스(330), 중간 메모리 컴포넌트(320), 메모리 관리 컴포넌트(314), 및 비 영구 메모리(319)는 도 2에 도시된 I/O 디바이스(210), 영구 메모리 디바이스(216), 비 영구 메모리 디바이스(230), 중간 메모리 컴포넌트(220), 메모리 관리 컴포넌트(214), 및 비 영구 메모리(219)와 유사할 수 있다. 예를 들어, 영구 메모리 디바이스(316), 비 영구 메모리 디바이스(330), 및 비 영구 메모리(319)는 여기서 이전에 설명된 것처럼, 계층적 메모리 시스템의 다른 계층(tier)을 각각 포함할 수 있다. 논리 회로(304), I/O 디바이스(310) 및 영구 메모리 디바이스(316), 비 영구 메모리 디바이스(330), 하이퍼바이저(312) 및 메모리 관리 컴포넌트(314)(예를 들어, 비 영구 메모리(319)) 사이의 통신은 인터페이스(308)를 통해 용이해질 수 있고, 이는 도 2에 도시된 인터페이스(208)와 유사할 수 있다.
도 2와 관련된 상기에서 설명된 것처럼, 메모리 관리 컴포넌트(314)는 I/O 디바이스(310)와 관련된 판독 요청 또는 기록 요청이 계층적 메모리 컴포넌트(304)에 리디렉션 되도록 할 수 있다. 계층적 메모리 컴포넌트(304)는 요청된 데이터에 대응하는 논리 어드레스를 생성 및/또는 저장할 수 있다. 상기에서 설명된 것처럼, 계층적 메모리 컴포넌트(304)는 계층적 메모리 컴포넌트(304)의 어드레스 레지스터(306-N)와 같은 베이스 어드레스 레지스터에 요청된 데이터에 대응하는 논리 어드레스를 저장할 수 있다.
도 3에 도시된 것처럼, 하이퍼바이저(312)는 인터페이스(308)를 통해 계층적 메모리 컴포넌트(304) 및/또는 I/O 디바이스(310)와 통신할 수 있다. 하이퍼바이저(312)는 계층적 메모리 컴포넌트(304)의 NIC 액세스 컴포넌트(예를 들어, 도 1에 도시된 NIC 액세스 컴포넌트(107))를 통해 계층적 메모리 컴포넌트(304) 사이에 데이터를 전송할 수 있다. 또한, 하이퍼바이저(312)는 영구 메모리 디바이스(316), 비 영구 메모리 디바이스(330), 중간 메모리 컴포넌트(320), 및 메모리 관리 컴포넌트(314)와 통신할 수 있다. 하이퍼바이저는 여기서 설명된 동작 및/또는 작업을 수행하기 위해 특수한 지시를 실행하도록 구성될 수 있다.
예를 들어, 하이퍼바이저(312)는 데이터가 비 영구 메모리 디바이스(330)에 프로그램(예를 들어, 저장)되어야 하는지 또는 데이터가 영구 메모리 디바이스(316)에 프로그램(예를 들어 전송)되어야 하는지를 결정하기 위해 데이터 트래픽 및 데이터 트래픽 패턴을 모니터링하도록 지시를 실행할 수 있다. 즉, 일부 실시예에서, 하이퍼바이저(312)는 패턴에 기초하여 비 영구 메모리 디바이스(330) 또는 영구 메모리 디바이스(316)에 데이터의 부분을 선택적으로 저장하고 시간 경과에 따른 사용자 데이터 요청 패턴을 학습하도록 지시를 실행할 수 있다. 이는 액세스된 데이터가 영구 메모리 디바이스(316)에 덜 자주 저장되도록 하는 반면 액세스된 데이터가 비 영구 메모리 디바이스(330)에 더 자주 저장되도록 할 수 있다.
사용자가 덜 최근에 사용되거나 덜 최근에 본 데이터보다 최근에 사용되거나 본 데이터에 더 빈번하게 액세스할 수 있으므로, 하이퍼바이저는 덜 최근에 사용되거나 본 데이터가 영구 메모리 디바이스(316)에 저장되도록 하거나 더 최근에 액세스 되거나 본 데이터가 비 영구 메모리 디바이스(330)에 저장되도록 하기 위해 특수한 지시를 실행할 수 있다. 비 제한적인 예시에서, 사용자는 덜 최근에(예를 들어, 1달 전, 1년 전 등) 찍힌 사진보다 최근에(예를 들어, 1주일 이내 등) 찍힌 소셜 미디어 상의 사진을 더 빈번하게 볼 수 있다. 이러한 정보에 기초하여, 하이퍼바이저(312)는 덜 최근에 보거나 찍힌 사진이 영구 메모리 디바이스(316)에 저장되도록 하는 특수한 지시를 실행할 수 있으며, 이에 따라 비 영구 메모리 디바이스(330)에 저장된 데이터의 양이 감소할 수 있다. 컴퓨팅 시스템(301)을 공급하는데 필요한 비 영구 메모리의 전체 양을 감소시킬 수 있고, 따라서 비용을 감소하고 더 많은 사용자에게 비 영구 메모리 디바이스(330)에의 액세스를 허용한다.
동작시, 컴퓨팅 시스템(301)은 I/O 디바이스(310)로부터 데이터 요청을 인터셉트하고 계층적 메모리 컴포넌트(304)에 요청을 리디렉션하도록 구성될 수 있다. 일부 실시예에서, 하이퍼바이저(312)는 데이터 요청에 대응하는 데이터가 비 영구 메모리 디바이스(330) 또는 영구 메모리 디바이스(316)에 저장(또는 검색)되어야 하는지 여부를 제어할 수 있다. 예를 들어, 하이퍼바이저(312)는 데이터가 영구 메모리 디바이스(316) 또는 비 영구 메모리 디바이스(330)에 저장(또는 검색)되는지 여부를 선택적으로 제어하는 지시를 실행할 수 있다.
데이터가 영구 메모리 디바이스(316) 및/또는 비 영구 메모리 디바이스(330)에 저장(또는 검색)되는지 여부를 제어하는 부분으로서, 하이퍼바이저(312)는 비 영구 메모리(319)가 계층적 메모리 컴포넌트(304)에 리디렉션되고 계층적 메모리 컴포넌트(304)의 어드레스 레지스터(306)에 저장되는 데이터와 관련된 논리 어드레스를 매핑하게 할 수 있다. 예를 들어, 하이퍼바이저(312)는 비 영구 메모리(319)를 통해 계층적 메모리 컴포넌트(304)에 선택적으로 리디렉션되는 데이터를 포함하는 판독 및 기록 요청을 제어하기 위해 지시를 실행할 수 있다.
비 영구 메모리 (319)는 근본적인 단편화된 물리적 어드레스에 인접한 가상 어드레스를 매핑할 수 있다. 따라서, 일부 실시예에서, 비 영구 메모리(319)는 가상 어드레스가 물리적 가상 어드레스가 인접하는 요구 없이 물리적 어드레스에 매핑할 수 있도록 할 수 있다. 예를 들어, 비 영구 메모리(319)에 의해 매핑되는 I/O 디바이스(310)와 관련된 특정 어드레스는 비 영구 메모리(319)에 의해 매핑된 I/O 디바이스(310)와 관련된 다른 어드레스와 인접할 수 있으나, I/O 디바이스(310)와 관련된 특정 어드레스가 매핑되는 비 영구 메모리 디바이스(330)의 어드레스는 비 영구 메모리(319)가 매핑되는 비 영구 메모리 디바이스(330)의 다른 어드레스와 인접하지 않을 수 있다. 또한, 일부 실시예에서, 비 영구 메모리(319)는 그들의 대응하는 물리적 메모리 공간을 처리할 만큼 충분히 긴 메모리 어드레스를 지원하지 않는 장치가 비 영구 메모리(319)에서 처리될 수 있도록 할 수 있다.
영구 메모리 디바이스(316)과 관련된 데이터 전송의 비 결정론적 특성으로 인해, 일부 실시예에서, 계층적 메모리 컴포넌트(304)는 영구 메모리 디바이스(316)에/로부터 데이터를 전송하는 것에 지연이 발생할 수 있는 컴퓨팅 시스템(301)을 알리도록 구성될 수 있다. 지연을 초기화하는 것의 일부로서, 계층적 메모리 컴포넌트(304)는 계층적 메모리 컴포넌트(304)에 데이터 요청이 리디렉션 될 때 컴퓨팅 시스템(301)에 페이지 폴트(page fault) 처리를 제공할 수 있다. 일부 실시예에서, 계층적 메모리 컴포넌트(304)는 영구 메모리 디바이스(316)의 내부 또는 외부에 데이터를 전송하기 위한 작업을 개시하기 위해 하이퍼바이저(312)에 인터럽트를 어서션하고 생성할 수 있다. 예를 들어, 영구 메모리 디바이스(316)와 관련된 데이터 검색 및 저장의 비 결정론적 특성으로 인해, 계층적 메모리 컴포넌트(304)는 영구 메모리 디바이스(316)에 저장된 데이터의 전송이 요청되면 하이퍼바이저 인터럽트(315)를 생성할 수 있다.
계층적 메모리 컴포넌트(304)에 의해 생성된 페이지 폴트 인터럽트에 대응하여, 하이퍼바이저(312)는 계층적 메모리 컴포넌트(304)의 데이터에 대응하는 정보를 검색할 수 있다. 예를 들어, 하이퍼바이저(312)는 계층적 메모리 컴포넌트로부터 NIC 액세스 데이터를 수신할 수 있고, 이는 계층적 메모리 컴포넌트(304)의 어드레스 레지스터(306)에 저장된 데이터에 대응하는 논리적 대 물리적 어드레스 매핑을 포함할 수 있다.
영구 메모리 디바이스(316)에 데이터가 저장되면, 비 영구 메모리 디바이스(330)의 일부(예를 들어, 페이지, 블록 등)는 계층적 메모리 컴포넌트(304)에 의해 액세스 불가로 표시될 수 있고 컴퓨팅 시스템(301)이 비 영구 메모리 디바이스(330)의 데이터에 액세스를 시도하지 않도록 한다. 이는 데이터 요청이 페이지 폴트와 함께 인터럽트될 수 있도록 하고, 이는 영구 메모리 디바이스(316)에 저장된 데이터가 I/O 디바이스(310)에 의해 요청되면 하이퍼바이저(312)에 어서션되고 계층적 메모리 컴포넌트(304)에 의해 생성될 수 있다.
본 개시의 실시예에서, 메모리 관리 유닛에 의해(예를 들어, 메모리 관리 컴포넌트(314)의 비 영구 메모리(319)에 의해) 매핑되지 않은 메모리의 페이지에 대한 액세스를 요청하는 애플리케이션에 대응하여 페이지 폴트 예외가 발생하는 접근 방식과 대조적으로, 상기에서 설명된 페이지 폴트는 비 영구 메모리(319)에서 계층적 메모리 컴포넌트(304)로 매핑되는 데이터에 대응하여 계층적 메모리 컴포넌트(304)에 의해 생성될 수 있고, 이는 차례로 영구 메모리 디바이스(316)에 데이터를 매핑한다.
일부 실시예에서, 중간 메모리 컴포넌트(320)는 I/O 디바이스(310)에 의해 개시되는 데이터 요청에 대응하여 영구 메모리 디바이스(316)에 저장된 데이터를 버퍼링하는데 이용될 수 있다. PCIe 인터페이스를 통해 데이터를 전달할 수 있는, 영구 메모리 디바이스(316)와 대조적으로, 중간 메모리 컴포넌트(320)는 데이터를 전달하기 위해 DDR 인터페이스를 채용할 수 있다. 따라서, 일부 실시예에서, 중간 메모리 컴포넌트(320)는 결정론적 방식으로 동작할 수 있다. 예를 들어, 일부 실시예에서, 영구 메모리 디바이스(316)에 저장된 요청된 데이터는 영구 메모리 디바이스(316)에서 중간 메모리 컴포넌트(320)로 임시로 전송될 수 있고 이후 중간 메모리 컴포넌트(320)를 I/O 디바이스(310)에 결합하는 DDR 인터페이스를 통해 호스트 컴퓨팅 장치로 전송될 수 있다.
일부 실시예에서, 중간 메모리 컴포넌트는 컴퓨팅 시스템(301)에 배포된 개별 메모리 컴포넌트(예를 들어, SRAM 캐시)를 포함할 수 있다. 그러나, 실시예는 이에 제한되지 않고, 일부 실시예에서, 중간 메모리 컴포넌트(320)는 데이터 요청에 대응하여 영구 메모리 디바이스(316)로부터 데이터를 전송하는데 사용되도록 할당될 수 있는 비 영구 메모리 디바이스(330)의 일부일 수 있다.
비 제한적인 예시에서, 메모리 관리 회로(예를 들어, 메모리 관리 컴포넌트(314))는 논리 회로(예를 들어, 계층적 메모리 컴포넌트(304))에 결합될 수 있다. 메모리 관리 회로는 그와 연관된 대응하는 가상 네트워크 인터페이스 컨트롤러 어드레스를 가지는 데이터를 비 영구 메모리 디바이스(예를 들어, 비 영구 메모리 디바이스(330))에 기록 위해 요청을 수신하도록 구성될 수 있다. 메모리 관리 회로는 데이터의 특성에 적어도 부분적으로 기초하여 논리 회로에 데이터를 기록 위해 요청을 리디렉션하도록 더 구성될 수 있다. 데이터의 특성은 그 중에서도 얼마나 빈번하게 데이터가 요청되거나 액세스되는지, 데이터가 마지막으로 액세스되거나 요청된 이후 경과된 시간의 양, 데이터의 유형(예를 들어, 사진, 문서, 오디오 파일, 애플리케이션 파일 등과 같은 특정 파일 유형에 데이터가 대응하는지 여부)을 포함할 수 있다.
일부 실시예에서, 메모리 관리 회로는 하이퍼바이저(312)에 의해 실행된 지시 및/또는 생성된 명령에 기초하여 논리 회로에 데이터를 기록 위하여 요청을 리디렉션하도록 구성될 수 있다. 예를 들어, 상기에서 설명한 것처럼, 하이퍼바이저(312)는 데이터 요청에 대응하는 데이터(예를 들어, I/O 디바이스(310)에 의해 생성된 데이터 요청)가 영구 메모리 디바이스(316) 또는 비 영구 메모리 디바이스(330)에 저장되어야 하는지 여부를 제어하기 위한 지시를 실행할 수 있다.
일부 실시예에서, 하이퍼바이저(312)는 메모리 관리 회로의 비 영구 메모리(319)에 어드레스(예를 들어, 논리 어드레스)를 기록하는 것에 의해 요청의 리디렉션을 용이하게 할 수 있다. 예를 들어, 하이퍼바이저(312)가 특정 데이터 요청에 대응하는 데이터가 영구 메모리 디바이스(316)에 저장(또는 검색)되어야 하는지를 결정하는 경우, 하이퍼바이저(312)는 요청의 리디렉션에 대응하는 어드레스가 비 영구 메모리(319)에 의해 저장되도록 할 수 있고 데이터 요청이 논리 회로에 리디렉션 된다.
리디렉션된 요청의 수신 시, 논리 회로는 리디렉션된 요청의 수신에 대응하여 데이터에 대응하는 어드레스를 생성 및/또는 논리 회로 내 어드레스 레지스터(306)에 어드레스를 저장하도록 구성될 수 있다. 일부 실시예에서, 논리 회로는 데이터가 리디렉션된 요청의 수신에 기초하여 비 영구 메모리 디바이스(330)에 액세스 불가하다는 것을 나타내는 데이터와 표시를 연결하도록 구성될 수 있다.
논리 회로는 리디렉션된 요청에 적어도 부분적으로 기초하여 영구 메모리 디바이스(예를 들어, 영구 메모리 디바이스(316))에 데이터가 기록되도록 구성될 수 있다(예를 들어, 메모리 관리 컴포넌트(314)가 논리 회로에 기록 요청을 리디렉션하고 기록 요청을 수신한 후). 일부 실시예에서, 논리 회로는 인터럽트 신호를 생성하고 데이터가 영구 메모리 디바이스(316)에 기록되도록 하는 것의 일부로서 논리 회로에 결합된 하이퍼바이저(예를 들어, 하이퍼바이저(312))에 인터럽트 신호를 어서션하도록 구성될 수 있다. 상기에서 설명된 것처럼, 영구 메모리 디바이스(316)는 3D XP 메모리 디바이스, 자체 선택 메모리 셀의 어레이, NAND 메모리 디바이스, 또는 다른 적절한 영구 메모리, 또는 그 조합을 포함할 수 있다.
일부 실시예에서, 논리 회로는 영구 메모리 디바이스(316)의 데이터를 액세스(예를 들어, 검색)하고, 영구 메모리 디바이스(316)에서 논리 회로에 결합된 하이퍼바이저(312)로 데이터를 검색하기 위한 요청을 전송하고, 및/또는 영구 메모리 디바이스(316)의 데이터를 검색하기 위한 요청의 일부로서 하이퍼바이저(312)에 인터럽트 신호를 어서션하도록 구성될 수 있다. 하이퍼바이저(312)는 (예를 들어, 메모리 관리 회로가 요청을 수신하고 논리 회로에 요청을 리디렉션한 후) 영구 메모리 디바이스(316)에서 데이터를 검색 및/또는 데이터를 검색한 후 비 영구 메모리 디바이스(330)에 데이터를 전송하도록 구성될 수 있다. 데이터가 영구 메모리 디바이스(316)로부터 검색되면, 하이퍼바이저(312)는 데이터와 관련된 업데이트된 어드레스가 비 영구 메모리(319)에 전송되고 저장되도록 구성될 수 있다. 업데이트된 어드레스는 데이터에 대응하는 가상 어드레스일 수 있다. 예를 들어, 업데이트된 어드레스는 비 영구 메모리 디바이스(330)에(예를 들어, 데이터가 전송되는 비 영구 메모리 디바이스(330)의 위치에) 데이터를 매핑할 수 있다.
또 다른 비 제한적 예시에서, 컴퓨팅 시스템(301)은 소프트웨어 정의 데이터 센서, 클라우드 컴퓨팅 환경, 등과 같은 다중 사용자 네트워크일 수 있다. 다중 사용자 네트워크는 비 영구 메모리 디바이스(330) 및 영구 메모리 디바이스(316)을 포함하는 컴퓨팅 리소스의 풀(pool)을 포함할 수 있다. 다중 사용자 네트워크는 복수의 어드레스 레지스터(306)를 포함하는 논리 회로(예를 들어, 계층적 메모리 컴포넌트(304))에 결합되는 인터페이스(308)를 더 포함할 수 있다. 일부 실시예에서, 다중 사용자 네트워크는 인터페이스(308)에 결합된 하이퍼바이저(312)를 더 포함할 수 있다.
하이퍼바이저(312)는 비 영구 메모리 컴포넌트(330)에 대응하는 데이터를 액세스하고, 데이터가 영구 메모리 디바이스에 저장되는 것을 결정하고, 데이터에 액세스하기 위한 요청이 논리 회로에 리디렉션되도록 구성될 수 있다. 데이터에 액세스하기 위한 요청은 영구 메모리 디바이스 또는 비 영구 메모리 디바이스에서 데이터를 판독 위한 요청 또는 영구 메모리 디바이스 또는 비 영구 메모리 디바이스에 데이터를 기록 위한 요청일 수 있다.
일부 실시예에서, 논리 회로는 데이터가 영구 메모리 디바이스(316)에 저장되는 결정에 대응하여 영구 메모리 디바이스(316)에서 데이터를 액세스 하기 위해 요청을 하이퍼바이저(312)에 전송하도록 구성될 수 있다. 논리 회로는 영구 메모리 디바이스(316)에 대응하는 데이터를 액세스하기 위해 하이퍼바이저(312)에 대한 요청의 일부로서 하이퍼바이저에 인터럽트를 어서션하도록 구성될 수 있다.
하이퍼바이저(312)는 논리 회로에서 수신된 요청에 기초하여 영구 메모리 디바이스(316)를 이용하여 데이터가 액세스되도록 구성될 수 있다. 상기에서 설명된 것처럼, 영구 메모리 디바이스(316)는 저항성 메모리, 위상 변환 메모리, 자가 선택 메모리 셀의 어레이, 또는 이들의 결합을 포함할 수 있다. 일부 실시예에서, 하이퍼바이저(312)는 영구 메모리 디바이스(316)를 이용하여 데이터가 액세스되도록 하는 것의 일부로서 비 영구 메모리 디바이스(330)에 데이터가 전송되도록 구성될 수 있다.
하이퍼바이저(312)는 영구 메모리 디바이스(316)를 이용하여 데이터가 액세스되도록 하는 것에 대응하여 다중 사용자 네트워크와 관련된 메모리 관리 컴포넌트(314)의 비 영구 메모리(319)에 저장된 정보를 업데이트하도록 더 구성될 수 있다. 예를 들어, 하이퍼바이저(312)는 데이터에 대응하는 업데이트된 가상 어드레스가 비 영구 메모리(319)에 저장되도록 구성될 수 있다.
일부 실시예에서, 다중 사용자 네트워크는 논리 회로에 결합된 I/O 디바이스(310)를 포함할 수 있다. 이러한 실시예에서, 논리 회로는 영구 메모리 디바이스(316)를 이용하여 데이터가 액세스되도록 하는 하이퍼바이저(312)에 대응하여 I/O 디바이스(310)에 알림을 보내도록 구성될 수 있다.
도 4는 본 개시의 다수의 실시예에 따른 데이터 액세스(예를 들어, 판독) 작업을 나타내는 흐름도(440)이다. 블록(441)에서, 도 2 및 3에 도시된 I/O 디바이스(210/310)와 같은 I/O 디바이스는 데이터 요청에 대응하는 어드레스를 이용하여 판독 작업을 개시할 수 있다. 일부 실시예에서, 어드레스는 가상 머신 물리적 어드레스와 같은 물리적 어드레스일 수 있다. 데이터 요청은 데이터가 저장된 논리적 어드레스에 대응하는 특정 어드레스와 관련된 데이터를 판독 위한 요청을 포함할 수 있다. 물리적 어드레스는 영구 메모리 디바이스(예를 들어, 여기의 도 2 및 3에 도시된 영구 메모리 디바이스(216/316))의 위치 또는 비 영구 메모리 디바이스(예를 들어, 여기의 도 2 및 3에 도시된 비 영구 메모리 디바이스(230/330))의 위치에 대응할 수 있다.
데이터가 비 영구 메모리 디바이스에 저장되는 경우, 데이터는 검색될 수 있고, 데이터 요청이 수행될 수 있다. 그러나, 데이터가 영구 메모리 디바이스에 저장되는 경우(예를 들어, 데이터의 물리적 어드레스가 영구 메모리 디바이스의 위치에 대응하는 경우), 블록(442)에서, 메모리 관리 컴포넌트(예를 들어, 여기의 도 2 및 3에 도시된 메모리 관리 컴포넌트(214/314))가 계층적 메모리 컴포넌트(예를 들어, 여기의 도 1 내지 3에 도시된 계층적 메모리 컴포넌트(104/204/304))에 데이터 요청을 리디렉션할 수 있다. 상기에서 설명된 것처럼, 데이터 요청은 하이퍼바이저(예를 들어, 여기의 도 3에 도시된 하이퍼바이저(312))에 의해 정보(예를 들어, 실행된 명령 또는 지시)에 기초하여 리디렉션 될 수 있다.
블록(443)에서, 계층적 메모리 컴포넌트는 데이터 요청에 대응하는 어드레스 레지스터 액세스 정보를 수신할 수 있다. 일부 실시예에서, 어드레스 레지스터 액세스 정보는 어드레스 레지스터(예를 들어, 여기의 도 1 내지 3에 도시된 어드레스 레지스터(106/206/306))의 위치에 대응할 수 있다. 예를 들어, 어드레스 레지스터 액세스 정보는 데이터가 저장된 영구 메모리 디바이스의 물리적 어드레스에 대응하는 논리 어드레스가 있는 계층적 메모리 컴포넌트의 어드레스 레지스터의 위치에 대응할 수 있다.
블록(444)에서, 계층적 메모리 컴포넌트는 하이퍼바이저 인터럽트를 생성할 수 있다. 예를 들어, 도 3과 관련된 상기에서 설명된 바와 같이, 계층적 메모리 컴포넌트가 메모리 관리 컴포넌트에서 리디렉션된 데이터 요청을 수신하면, 계층적 메모리 컴포넌트는 인터럽트를 생성하고 하이퍼바이저(예를 들어, 여기의 도 3에 도시된 하이퍼바이저(312))에 인터럽트를 어서션 할 수 있다. 일부 실시예에서, 인터럽트는 이벤트가 즉각적인 주의를 필요로 함을 하이퍼바이저에 알리기 위해 하이퍼바이저에 어서션되는 신호일 수 있다. 예를 들어, 인터럽트 신호는 하이퍼바이저가 블록(445)에서 어드레스 레지스터 액세스 정보를 수집하는 것과 관련된 지시를 대신 실행하고 현재 실행중인 지시를 인터럽트하도록 하기 위해 하이퍼바이저에 어서션될 수 있다.
블록(445)에서, 하이퍼바이저는 계층적 메모리 컴포넌트에서 어드레스 레지스터 액세스 정보를 수집할 수 있다. 예를 들어, 요청된 데이터의 물리적 어드레스에 대응하는 계층적 메모리 컴포넌트에서 논리적 어드레스 정보를 수신할 수 있다. 논리적 어드레스 정보는 여기 도 1 내지 3에 도시된 어드레스 레지스터(들)(106/206/306)과 같은, 계층적 메모리 컴포넌트의 어드레스 레지스터(예를 들어, 베이스 어드레스 레지스터)의 계층적 메모리 컴포넌트에 저장될 수 있다.
블록(446)에서, 하이퍼바이저는 요청된 데이터의 물리적 위치를 결정할 수 있다. 예를 들어, 주로 레지스터 액세스 정보 및, 따라서, 계층적 메모리 컴포넌트에서 수집된 데이터와 관련된 논리적 어드레스에 기초하여, 하이퍼바이저는 영구 메모리 디바이스에 저장된 데이터의 물리적 위치를 결정할 수 있다.
블록(447)에서, 하이퍼바이저는 어드레스 레지스터 액세스 정보에 대응하는 데이터를 판독할 수 있다. 즉, 일부 실시예에서, 하이퍼바이저는 요청된 데이터가 영구 메모리 디바이스에서 판독될(검색될) 수 있도록 할 수 있다.
블록(448)에서, 하이퍼바이저는 데이터가 비 영구 메모리 디바이스에 전송될 수 있도록 할 수 있다. 일부 실시예에서, 비 영구 메모리 디바이스는 여기의 도 2 및 3에 도시된 비 영구 메모리 디바이스(230/330)일 수 있지만, 실시예는 이에 제한되지 않고, 일부 실시예에서, 하이퍼바이저는 데이터가 여기의 도 2 및 3에 도시된 중간 메모리 컴포넌트(220/320)와 같은 중간 메모리 컴포넌트에 전송되도록 할 수 있다.
블록(449)에서, 하이퍼바이저는 요청된 데이터에 대응하는 I/O 디바이스 데이터를 계층적 메모리 컴포넌트에 쓸 수 있다. I/O 디바이스 데이터는 상기에서 설명된 것처럼, 계층적 메모리 컴포넌트의 어드레스 레지스터에 저장될 수 있다.
블록(450)에서, 계층적 메모리 컴포넌트는 데이터 판독 트랜잭션(data read transaction)을 완료할 수 있다. 예를 들어, 계층적 메모리 컴포넌트는 데이터 판독 요청이 이행되고 데이터가 데이터 판독 요청을 이행하기 위해 결정론적 인터페이스를 통해 전송될 것임을 I/O 디바이스에 알리기 위해 I/O 디바이스에 명령을 전송할 수 있다.
블록(451)에서, 하이퍼바이저는 I/O 디바이스 어드레스를 비 영구 메모리 디바이스(예를 들어, 비 영구 메모리 디바이스의 어드레스)에 매핑(예를 들어, 리디렉션)하기 위해 메모리 관리 컴포넌트의 비 영구 메모리(예를 들어, 여기의 도 2 및 3에 도시된 비 영구 메모리(219/319))를 업데이트할 수 있다. 예를 들어, 블록(450)에서 영구 메모리 디바이스에서 비 영구 메모리 디바이스(예를 들어, 비 영구 메모리 디바이스 및/또는 중간 메모리 컴포넌트)로 데이터가 전송되므로, 하이퍼바이저는 메모리 관리 컴포넌트의 비 영구 메모리를 업데이트할 수 있고 요청된 데이터에 대응하는 어드레스가 비 영구 메모리 디바이스에 매핑된다. 일부 실시예에서, 어드레스는 가상 머신 물리적 어드레스와 같은 물리적 어드레스일 수 있다.
블록(452)에서, 하이퍼바이저는 데이터 요청을 만족시키기 위해 어떠한 메모리가 사용되었는지를 기록할 수 있다. 예를 들어, 하이퍼바이저는 데이터 요청이 I/O 디바이스에서 수신된 시점에 데이터가 영구 메모리 디바이스에 저장되었음을 기록할 수 있다. 일부 실시예에서, 하이퍼바이저는 영구 메모리 디바이스 또는 비 영구 메모리 디바이스에 데이터 기록을 선택적으로 지기하기 위해 시간 경과에 따른 정보를 사용할 수 있다.
도 5는 본 개시의 다수의 실시예에 따른 데이터 프로그램(예를 들어, 기록) 작업을 나타낸 흐름도(560)이다. 블록(561)에서, 도 2 및 3에 도시된 I/O 디바이스(210/310)와 같은 I/O 디바이스는 데이터 기록 요청에 대응하는 어드레스를 이용하여 기록 작업을 개시할 수 있다. 어드레스는 가상 머신 물리적 어드레스와 같은 물리적 어드레스일 수 있다. 데이터 기록 요청은 데이터가 저장되는 논리적 어드레스에 대응하는 특정 가상 어드레스와 관련된 데이터를 기록 위한 요청을 포함할 수 있다. 물리적 어드레스는 영구 메모리 디바이스(예를 들어, 여기의 도 2 및 3에 도시된 영구 메모리 디바이스(216/316))의 위치 또는 비 영구 메모리 디바이스(예를 들어, 여기의 도 2 및 3에 도시된 비 영구 메모리 디바이스(230/330))의 위치에 대응할 수 있다.
데이터가 비 영구 메모리 디바이스에 저장되어야 하는 경우, 데이터는 비 영구 메모리 디바이스에 기록될 수 있고 데이터 기록 요청은 이행될 수 있다. 그러나, 데이터가 영구 메모리 디바이스에 저장되어야 하는 경우, 블록(442)에서, 메모리 관리 컴포넌트(예를 들어, 여기의 도 2 및 3에 도시된 메모리 관리 컴포넌트(214/314))는 계층적 메모리 컴포넌트(예를 들어, 여기의 도 1 내지 3에 도시된 계층적 메모리 컴포넌트(104/204/304))에 데이터 기록 요청을 리디렉션 할 수 있다. 상기에서 설명된 것처럼, 데이터 요청은 하이퍼바이저(예를 들어, 여기의 도 3에 도시된 하이퍼바이저(312))에 의해 정보(예를 들어, 실행된 명령 또는 지시)에 기초하여 리디렉션 될 수 있다.
블록(563)에서, 계층적 메모리 컴포넌트는 데이터 기록 요청에 대응하는 어드레스 레지스터 액세스 정보를 수신할 수 있다. 일부 실시예에서, 어드레스 레지스터 액세스 정보는 어드레스 레지스터(예를 들어, 여기의 도 1 내지 3에 도시된 어드레스 레지스터(106/206/306))의 위치에 대응할 수 있다. 예를 들어, 어드레스 레지스터 액세스 정보는 데이터가 저장되는 영구 메모리 디바이스의 물리적 어드레스에 대응하는 논리적 어드레스가 있는 계층적 메모리 컴포넌트의 어드레스 레지스터의 위치에 대응할 수 있다.
블록(564)에서 계층적 메모리 컴포넌트는 하이퍼바이저 인터럽트를 생성할 수 있다. 예를 들어, 도 3과 관련하여 상기에서 설명한 바와 같이, 계층적 메모리 컴포넌트가 메모리 관리 컴포넌트에서 리디렉션된 데이터 기록 요청을 수신하면, 계층적 메모리 컴포넌트는 인터럽트를 생성하고 하이퍼바이저(예를 들어, 여기의 도 3에 도시된 하이퍼바이저(312))에 인터럽트를 어서션할 수 있다.
블록(565)에서, 하이퍼바이저는 계층적 메모리 컴포넌트에서 어드레스 레지스터 액세스 정보를 수집할 수 있다. 예를 들어, 하이퍼바이저는 데이터가 저장된 물리적 어드레스에 대응하는 계층적 메모리 컴포넌트에서 논리적 어드레스 정보를 수신할 수 있다.
블록(566)에서, 하이퍼바이저는 영구 메모리 디바이스에 데이터를 선택적으로 쓸 수 있다(또는 데이터가 기록될 수 있도록 할 수 있다). 예를 들어, 리디렉션된 데이터 기록 요청에 기초하여, 하이퍼바이저는 데이터가 영구 메모리 디바이스에 기록될 것인지 및 데이터가 영구 메모리 디바이스에 기록될 수 있도록 할 것인지를 결정할 수 있다. 블록(566)이 선택적으로 수행되는 실시예에서, 데이터는 비 영구 메모리 디바이스에 중간에 기록될 수 있다. 또한, 데이터에 대응하는 I/O 디바이스 데이터는 비 영구 메모리 디바이스에 데이터를 기록하는 것의 일부로서 비 영구 메모리 디바이스에 선택적으로 기록될 수 있다.
선택적으로, 블록(567)에서, 하이퍼바이저는 비 영구 메모리 디바이스에 데이터를 쓸 수 있다(또는 데이터가 기록될 수 있도록 할 수 있다). 일부 실시예에서, 하이퍼바이저는 비 영구 메모리 디바이스에 데이터를 쓸 수 있고 데이터는 데이터에 대응하는 판독 요청이 수신되는 이벤트에서 결정론적 인터페이스 또는 버스를 통해 검색될 수 있다.
블록(568)에서, 하이퍼바이저는 I/O 디바이스 가상 어드레스를 비 영구 메모리 디바이스(예를 들어, 비 영구 메모리 디바이스의 어드레스)에 매핑하기 위해 메모리 관리 컴포넌트의 비 영구 메모리(예를 들어, 여기의 도 2 및 3에 도시된 비 영구 메모리(219/319))를 업데이트할 수 있다. 예를 들어, 블록(567)에서 데이터가 비 영구 메모리 디바이스에 기록된 경우, 블록(568)에서, 하이퍼바이저는 메모리 관리 컴포넌트의 비 영구 메모리에 의해 저장된 가상 어드레스를 업데이트할 수 있고 메모리 관리 컴포넌트의 비 영구 메모리에 의해 저장되고 데이터와 관련된 가상 어드레스는 데이터가 저장된 비 영구 메모리 디바이스의 물리적 어드레스에 매핑된다.
도 6은 본 개시의 다수의 실시예에 따른 계층적 메모리 시스템에 대한 예시적인 방법(670)을 나타낸 흐름도이다. 블록(672)에서, 방법(670)은 메모리 관리 회로의 비 영구 메모리에서, I/O 디바이스와 관련된 어드레스를 논리 회로의 어드레스에 매핑하는 것을 포함할 수 있다. 비 영구 메모리는 예를 들어, 여기의 도 2 및 3에 도시된 메모리 관리 컴포넌트(214/314)의 비 영구 메모리(219/319)일 수 있고, I/O 디바이스는 예를 들어, 여기의 도 2 및 3에 도시된 I/O 디바이스(210/310)일 수 있고, 논리 회로는 예를 들어, 여기의 도 1, 2 및 3에 도시된 계층적 메모리 컴포넌트(104/204/304)일 수 있다. 예를 들어, I/O 디바이스와 관련된 가상 어드레스는 여기서 이전에 설명된 것처럼, 비 영구 메모리의 물리적 어드레스에 매핑될 수 있다.
블록(674)에서, 방법(670)은 I/O 디바이스로부터, 영구 메모리 디바이스에 저장된 데이터를 액세스하기 위한 요청을 수신하는 것을 포함할 수 있다. 영구 메모리 디바이스는 예를 들어, 여기의 도 2 및 3에 도시된 영구 메모리 디바이스(216/316)일 수 있고, 요청은 예를 들어, 여기의 도 2 및 3에 도시된 인터페이스(208/308)를 통해 I/O 디바이스로부터 수신될 수 있다.
블록(676)에서, 방법(670)은 요청을 수신한 후 영구 메모리 디바이스에 저장된 데이터를 액세스하는 것을 포함할 수 있다. 예를 들어, 데이터는 여기서 이전에 설명된 바와 같이, 요청이 논리 회로에 리디렉션 된 후 액세스 될 수 있다.
블록(678)에서, 방법(670)은 메모리 관리 회로의 비 영구 메모리에서, 데이터를 액세스한 후 비 영구 메모리 디바이스의 어드레스에 I/O 디바이스와 관련된 어드레스를 매핑하는 것을 포함할 수 있다. 비 영구 메모리 디바이스는 예를 들어, 여기의 도 2 및 3에 도시된 비 영구 메모리 디바이스(230/330)일 수 있다. 예를 들어, 어드레스는 여기에서 이전에 설명된 바와 같이, 비 영구 메모리(219/319)를 업데이트 함으로써 매핑 될 수 있다.
도 7은 본 개시의 다수의 실시예에 따른 3단의 계층적 메모리 시스템에 대한 예시적인 방법(780)을 나타낸 또 다른 흐름도이다. 블록(782)에서, 방법(780)은 제1 비 영구 메모리에서, 논리 회로의 어드레스에 I/O 디바이스와 관련된 어드레스를 매핑하는 것을 포함할 수 있다. 비 영구 메모리는 예를 들어, 여기의 도 2 및 3에 도시된 비 영구 메모리(219/319)일 수 있고, I/O 디바이스는 예를 들어, 여기의 도 2 및 3에 도시된 I/O 디바이스(210/310)일 수 있고, 논리 회로는 예를 들어, 여기의 도 1, 2 및 3에 도시된 계층적 메모리 컴포넌트(104/204/304)일 수 있다. 예를 들어, I/O 디바이스와 관련된 가상 어드레스는 여기에서 이전에 설명된 바와 같이, 비 영구 메모리의 물리적 어드레스에 매핑 될 수 있다.
블록(784)에서, 방법(780)은 I/O 디바이스로부터, 영구 메모리에 데이터를 프로그램하기 위한 요청을 수신하는 것을 포함할 수 있다. 영구 메모리는 예를 들어, 여기의 도 2 및 3에 도시된 영구 메모리 디바이스(216/316)일 수 있고, 요청은 예를 들어, 여기의 도 2 및 3에 도시된 인터페이스(208/308)를 통해 I/O 디바이스에서 수신될 수 있다. 요청은 예를 들어, 여기에서 이전에 설명된 바와 같이, 기록 요청일 수 있다.
블록(786)에서, 방법(780)은 요청을 수신한 후 영구 메모리 또는 제2 비 영구 메모리에 데이터를 프로그래밍하는 것을 포함할 수 있다. 예를 들어, 데이터는 여기서 이전에 설명된 바와 같이, 요청이 논리 회로에 리디렉션 된 후 프로그램 될 수 있다. 제2 비 영구 메모리는 예를 들어, 여기의 도 2 및 3에 도시된 비 영구 메모리 디바이스(230/330)일 수 있다. 데이터가 영구 메모리 또는 제2 비 영구 메모리에 프로그램되는지 여부는 예를 들어, 여기서 이전에 설명된 바와 같이, 데이터와 관련된 트래픽 패턴에 의존할 수 있다.
블록(788)에서, 방법(780)은 제1 비 영구 메모리에서, 데이터를 프로그래밍한 후 제2 비 영구 메모리의 어드레스에 I/O 디바이스와 관련된 어드레스를 매핑하는 것을 포함할 수 있다. 예를 들어, 어드레스는 여기서 이전에 설명된 바와 같이, 제1 비 영구 메모리를 업데이트함으로써 매핑 될 수 있다.
비록 여기에서 특정 실시예가 도시되고 설명되었지만, 기술분야의 통상의 기술자는 동일한 결과를 달성하도록 계산된 배치가 도시된 특정 실시예를 대체할 수 있음을 이해할 것이다. 본 개시는 본 개시의 다양한 실시예의 각색 또는 변형을 다루기 위한 것이다. 상기의 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것으로 이해해야 한다. 상기 실시예의 조합 및 여기서 구체적으로 설명되지 않은 다른 실시예는 상기 설명을 검토할 때 기술 분야의 기술자에게 명백할 것이다. 본 개시의 다양한 실시예의 범위는 상기 구조 및 방법이 사용되는 다른 애플리케이션을 포함한다. 따라서, 본 개시의 다양한 실시예의 범위는 그러한 청구범위가 부여되는 균등물의 전체 범위와 함께, 첨부된 청구범위를 참조하여 결정되어야 한다.
전술한 상세한 설명에서, 다양한 특징이 개시를 간소화하기 위해 단일의 실시예로 함께 그룹화된다. 이러한 개시의 방법은 본 개시의 개시된 실시예가 각 청구항에서 명확히 인용된 것 보다 더 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음 청구항이 방영하는 바와 같이, 진보성 있는 내용이 단일의 개시된 실시예의 모든 특징보다 적은 범위에 있다. 따라서, 다음 청구항은 이에 의해 상세한 설명에 통합되며, 각 청구항은 그 자체로 별개의 실시예로 존재한다.

Claims (20)

  1. 장치에 있어서,
    영구 메모리;
    제1 비 영구 메모리; 및
    제2 비 영구 메모리를 포함하고, 상기 제2 비 영구 메모리는:
    영구 메모리에 저장된 데이터에 액세스하기 위해 상기 장치가 입력/출력(I/O) 디바이스에서 요청을 수신하기 전 논리 회로의 어드레스에 상기 I/O 디바이스와 관련된 어드레스를 매핑하고; 그리고
    상기 장치가 상기 요청을 수신하고 상기 데이터를 액세스한 후 제1 비 영구 메모리의 어드레스에 상기 I/O 디바이스와 관련된 상기 어드레스를 매핑하도록 구성되는, 장치.
  2. 제1항에 있어서, 상기 제2 비 영구 메모리는 상기 장치의 메모리 관리 회로에 포함되는, 장치.
  3. 제1항 내지 제2항 중 어느 하나에 있어서,
    상기 영구 메모리는 NAND 메모리 또는 3D 크로스포인트 메모리(crosspoint memory) 또는 둘 모두를 포함하고; 그리고
    상기 제1 비 영구 메모리 및 제2 비 영구 메모리 각각은 DRAM(dynamic random-access memory)을 포함하는, 장치.
  4. 제1항 내지 제2항 중 어느 하나에 있어서,
    상기 영구 메모리는 컴퓨팅 시스템에 저장 볼륨을 제공하도록 구성되고; 그리고
    상기 제1 비 영구 메모리는 컴퓨팅 시스템의 동작 동안 컴퓨팅 시스템의 호스트 컴퓨팅 장치에 의해 요청된 데이터를 저장하도록 구성되는, 장치.
  5. 제1항 내지 제2항 중 어느 하나에 있어서, 상기 I/O 디바이스와 관련된 어드레스가 매핑되는 논리 회로의 상기 어드레스는 상기 논리 회로의 레지스터의 어드레스인, 장치.
  6. 장치에 있어서,
    영구 메모리 디바이스;
    제1 비 영구 메모리 디바이스; 및
    제2 비 영구 메모리를 갖는 메모리 관리 회로를 포함하고, 상기 제2 비 영구 메모리는:
    상기 영구 메모리에 데이터를 프로그램하기 위해 상기 장치가 입력/출력(I/O) 디바이스에서 요청을 수신하기 전 논리 회로의 어드레스에 I/O 디바이스와 관련된 어드레스를 매핑하고; 그리고
    상기 장치가 상기 요청을 수신하고 상기 데이터를 프로그램 한 후 상기 제1 비 영구 메모리의 어드레스에 상기 I/O 디바이스와 관련된 상기 어드레스를 매핑하도록 구성되는, 장치.
  7. 제6항에 있어서, 상기 제2 비 영구 메모리는 상기 영구 메모리 디바이스의 어드레스에 상기 I/O 디바이스와 관련된 추가적인 어드레스를 매핑하도록 구성되는, 장치.
  8. 제6항에 있어서, 상기 제2 비 영구 메모리는 상기 논리 회로에 상기 데이터와 관련된 어드레스를 매핑하도록 구성되는, 장치.
  9. 제6항 내지 제8항 중 어느 하나에 있어서,
    상기 I/O 디바이스와 관련된 어드레스는 상기 제2 비 영구 메모리에 의해 매핑된 상기 I/O 디바이스와 관련된 다른 어드레스와 인접하고; 그리고
    상기 I/O 디바이스와 관련된 상기 어드레스가 상기 제2 비 영구 메모리에 의해 매핑되는 상기 제1 비 영구 메모리의 어드레스는 상기 제2 비 영구 메모리가 매핑하는 상기 제1 비 영구 메모리의 다른 어드레스와 인접하지 않는, 장치.
  10. 방법에 있어서,
    메모리 관리 회로의 비 영구 메모리에서, 논리 회로의 어드레스에 입력/출력(I/O) 디바이스와 관련된 어드레스를 매핑하는 단계;
    상기 I/O 디바이스로부터, 영구 메모리 디바이스에 저장된 데이터를 액세스하기 위해 요청을 수신하는 단계;
    상기 요청을 수신한 후 상기 영구 메모리 디바이스에 저장된 데이터를 액세스하는 단계; 및
    상기 메모리 관리 회로의 상기 비 영구 메모리에서, 상기 데이터를 액세스한 후 비 영구 메모리 디바이스의 어드레스에 상기 I/O 디바이스와 관련된 상기 어드레스를 매핑하는 단계를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 I/O 디바이스와 관련된 상기 어드레스는 가상 어드레스고; 그리고
    상기 비 영구 메모리 디바이스의 상기 어드레스는 물리적 어드레스인, 방법.
  12. 제10항에 있어서, 상기 방법은:
    인터페이스를 통해 상기 논리 회로에 상기 데이터를 액세스하기 위해 상기 요청을 리디렉션(redirection)하는 단계; 및
    상기 요청을 리디렉션 한 후 상기 데이터를 액세스하는 단계를 포함하는, 방법.
  13. 제12항에 있어서, 상기 메모리 관리 회로의 상기 비 영구 메모리에서, 상기 요청의 리디렉션(redirection)에 대응하는 어드레스를 저장하는 단계를 포함하는, 방법.
  14. 제10항에 있어서, 상기 메모리 관리 회로의 상기 비 영구 메모리에서, 상기 데이터를 액세스한 후 상기 데이터와 관련된 업데이트 어드레스를 저장하는 단계를 포함하는, 방법.
  15. 제14항에 있어서, 상기 업데이트 어드레스는 상기 비 영구 메모리 디바이스에 상기 데이터를 매핑하는 가상 어드레스인, 방법.
  16. 제10항 내지 제15항 중 어느 하나에 있어서, 상기 데이터를 액세스한 후 상기 비 영구 메모리 디바이스에 상기 데이터를 전송하는 단계를 포함하는, 방법.
  17. 방법에 있어서,
    비 영구 메모리에서, 논리 회로의 어드레스에 입력/출력(I/O) 디바이스와 관련된 어드레스를 매핑하는 단계;
    상기 I/O 디바이스로부터, 영구 메모리에 데이터를 프로그램하기 위해 요청을 수신하는 단계;
    상기 요청을 수신한 후 상기 영구 메모리 또는 제2 비 영구 메모리에 상기 데이터를 프로그램하는 단계; 및
    상기 제1 비 영구 메모리에서, 상기 데이터를 프로그램한 후 상기 제2 비 영구 메모리의 어드레스에 상기 I/O 디바이스와 관련된 상기 어드레스를 매핑하는 단계를 포함하는, 방법.
  18. 제17항에 있어서, 상기 방법은:
    인터페이스를 통해 상기 논리 회로에 상기 데이터를 프로그램하기 위해 상기 요청을 리디렉션(redirection)하는 단계; 및
    상기 요청을 리디렉션 한 후 상기 데이터를 프로그램하는 단계를 포함하는, 방법.
  19. 제17항 내지 제18항 중 어느 하나에 있어서, 상기 데이터와 관련된 트래픽 패턴(traffic pattern)에 기초하여 상기 데이터를 프로그램하기 위해 상기 영구 메모리 및 상기 제2 비 영구 메모리 중 하나를 결정하는 단계를 포함하는, 방법.
  20. 제17항 내지 제18항 중 어느 하나에 있어서, 상기 제1 비 영구 메모리에서, 상기 데이터를 프로그램한 후 상기 데이터와 관련된 업데이트 어드레스를 저장하는 단계를 포함하고, 여기서 상기 업데이트 어드레스는 상기 제2 비 영구 메모리의 물리적 어드레스에 상기 데이터를 매핑하는, 방법.
KR1020227009117A 2019-08-22 2020-08-18 3단의 계층적 메모리 시스템 KR20220050177A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/547,635 2019-08-22
US16/547,635 US11074182B2 (en) 2019-08-22 2019-08-22 Three tiered hierarchical memory systems
PCT/US2020/046735 WO2021034792A1 (en) 2019-08-22 2020-08-18 Three tiered hierarchical memory systems

Publications (1)

Publication Number Publication Date
KR20220050177A true KR20220050177A (ko) 2022-04-22

Family

ID=74645562

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227009117A KR20220050177A (ko) 2019-08-22 2020-08-18 3단의 계층적 메모리 시스템

Country Status (5)

Country Link
US (2) US11074182B2 (ko)
EP (1) EP4018326A4 (ko)
KR (1) KR20220050177A (ko)
CN (1) CN114341816A (ko)
WO (1) WO2021034792A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11074182B2 (en) * 2019-08-22 2021-07-27 Micron Technology, Inc. Three tiered hierarchical memory systems
US11928762B2 (en) * 2021-09-03 2024-03-12 Adobe Inc. Asynchronous multi-user real-time streaming of web-based image edits using generative adversarial network(s)

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499384A (en) * 1992-12-31 1996-03-12 Seiko Epson Corporation Input output control unit having dedicated paths for controlling the input and output of data between host processor and external device
US7353301B2 (en) * 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
US8286162B2 (en) 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US7613876B2 (en) 2006-06-08 2009-11-03 Bitmicro Networks, Inc. Hybrid multi-tiered caching storage system
WO2008055272A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Integrating data from symmetric and asymmetric memory
KR100880425B1 (ko) 2007-02-13 2009-01-29 삼성전자주식회사 메모리 맵 테이블 서치 타임을 최소화 또는 줄일 수 있는방법 및 그에 따른 반도체 메모리 장치
US9032181B2 (en) 2009-05-19 2015-05-12 Vmware, Inc. Shortcut input/output in virtual machine systems
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
KR101081907B1 (ko) 2010-01-05 2011-11-09 성균관대학교산학협력단 가상화 장치
US20120047313A1 (en) 2010-08-19 2012-02-23 Microsoft Corporation Hierarchical memory management in virtualized systems for non-volatile memory models
CN103858116B (zh) * 2011-08-09 2015-09-02 Lsi公司 I/o设备及计算主机互操作
US8892802B2 (en) 2012-01-01 2014-11-18 International Business Machines Corporation Enhancing interrupt handling in a virtual environment
KR20150020384A (ko) 2013-08-13 2015-02-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US20160062696A1 (en) * 2014-03-26 2016-03-03 2419265 Ontario Limited Solid-state memory device with plurality of memory devices
US9690716B2 (en) 2015-02-13 2017-06-27 Intel Corporation High performance persistent memory for region-centric consistent and atomic updates
US9349491B1 (en) 2015-04-17 2016-05-24 Micron Technology, Inc. Repair of memory devices using volatile and non-volatile memory
US9720846B2 (en) * 2015-05-28 2017-08-01 Red Hat Israel, Ltd. Memory swap for direct memory access by a device assigned to a guest operating system
US9424155B1 (en) * 2016-01-27 2016-08-23 International Business Machines Corporation Use efficiency of platform memory resources through firmware managed I/O translation table paging
US20170220592A1 (en) 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc Modular data operations system
US10528255B2 (en) * 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11074182B2 (en) * 2019-08-22 2021-07-27 Micron Technology, Inc. Three tiered hierarchical memory systems

Also Published As

Publication number Publication date
US20210056025A1 (en) 2021-02-25
US11698862B2 (en) 2023-07-11
EP4018326A4 (en) 2023-09-27
US20210349822A1 (en) 2021-11-11
EP4018326A1 (en) 2022-06-29
WO2021034792A1 (en) 2021-02-25
CN114341816A (zh) 2022-04-12
US11074182B2 (en) 2021-07-27

Similar Documents

Publication Publication Date Title
US20230072589A1 (en) Hierarchical memory systems
US11698862B2 (en) Three tiered hierarchical memory systems
US20210318904A1 (en) Hierarchical memory systems
US11586556B2 (en) Hierarchical memory systems
US11782843B2 (en) Hierarchical memory systems
US11614894B2 (en) Hierarchical memory systems
US11537525B2 (en) Hierarchical memory systems
KR20220047825A (ko) 계층적 메모리 장치
KR20220043226A (ko) 계층적 메모리 장치