KR102444562B1 - 계층적 메모리 시스템 - Google Patents

계층적 메모리 시스템 Download PDF

Info

Publication number
KR102444562B1
KR102444562B1 KR1020227009499A KR20227009499A KR102444562B1 KR 102444562 B1 KR102444562 B1 KR 102444562B1 KR 1020227009499 A KR1020227009499 A KR 1020227009499A KR 20227009499 A KR20227009499 A KR 20227009499A KR 102444562 B1 KR102444562 B1 KR 102444562B1
Authority
KR
South Korea
Prior art keywords
memory device
data
logic circuitry
persistent memory
request
Prior art date
Application number
KR1020227009499A
Other languages
English (en)
Other versions
KR20220044606A (ko
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 KR20220044606A publication Critical patent/KR20220044606A/ko
Application granted granted Critical
Publication of KR102444562B1 publication Critical patent/KR102444562B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

계층적 메모리 시스템들에 대응하는 장치들, 시스템들, 및 방법들이 설명된다. 논리 회로부는 영구 메모리 디바이스 상에 상주할 수 있으며, 이에 의해 논리 회로부와 영구 메모리 디바이스 사이에서 데이터를 전송하는 것과 연관된 레이턴시를 감소시킬 수 있다. 영구 메모리 디바이스 상의 논리 회로부는 저장된 데이터에 대응하는 논리 어드레스들을 저장하도록 구성된 어드레스 레지스터를 포함할 수 있다. 논리 회로부는 영구 메모리 디바이스에 저장된 데이터의 부분을 리트리브하기 위해 (예를 들어, 리다이렉트 이전에, 비영구 메모리 디바이스로 지향된) 리다이렉트된 요청을 수신하고, 데이터의 부분을 리트리브하기 위한 요청의 수신에 응답하여, 어드레스 레지스터에 저장된 논리 어드레스에 기초하여 데이터의 부분에 대응하는 물리 어드레스를 결정하며, 데이터가 영구 메모리 디바이스로부터 리트리브되게 할 수 있다.

Description

계층적 메모리 시스템
본 개시는 일반적으로 반도체 메모리 및 방법들, 그리고 더 구체적으로는, 계층적 메모리 시스템들에 관한 장치들, 시스템들, 및 방법들에 관한 것이다.
메모리 디바이스들은 통상적으로 컴퓨터들 또는 다른 전자 시스템들 내에 내부 반도체, 집적 회로부로서 제공된다. 많은 상이한 유형들의 메모리들은 휘발성 및 비휘발성 메모리를 포함한다. 휘발성 메모리는 자신의 데이터(예를 들어, 호스트 데이터, 에러 데이터 등)를 유지하기 위해 전력을 필요로 할 수 있고 특히, 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함할 수 있다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 영구 데이터를 제공할 수 있고, 특히, NAND 플래시 메모리, NOR 플래시 메모리, 가변 메모리, 이를테면 상 변화 랜덤 액세스 메모리(PCRAM), 저항 랜덤 액세스 메모리(RRAM), 및 자기 랜덤 액세스 메모리(MRAM), 이를테면 회전 토크 전달 랜덤 액세스 메모리(STT RAM)를 포함할 수 있다.
메모리 디바이스들은 컴퓨터 또는 전자 시스템이 동작하는 동안 호스트에 의해 사용하기 위한 데이터, 커맨드들, 및/또는 명령어들을 저장하기 위해 호스트(예를 들어, 호스트 컴퓨팅 디바이스)에 결합될 수 있다. 예를 들어, 컴퓨팅 또는 다른 전자 시스템의 동작 동안 데이터, 커맨드들, 및/또는 명령어들이 호스트와 메모리 디바이스(들) 사이에서 전달될 수 있다.
도 1은 본 개시의 다수의 실시예들에 따른 논리 회로부를 포함하는 장치 형태의 기능 블록도이다.
도 2은 본 개시의 다수의 실시 예들에 따른 영구 메모리 디바이스 상에 상주하는 논리 회로부를 포함하는 컴퓨팅 시스템 형태의 기능 블록도이다.
도 3은 본 개시의 다수의 실시예들에 따른 영구 메모리 디바이스 상에 상주하는 논리 회로부를 포함하는 컴퓨팅 시스템 형태의 기능 블록도이다.
도 4는 본 개시의 다수의 실시예들에 따른 데이터 판독 동작을 나타내는 흐름도이다.
도 5는 본 개시의 다수의 실시예들에 따른 예측 데이터 기록 동작들을 나타내는 흐름도이다.
도 6은 본 개시의 다수의 실시예들에 따른 메모리 내의 논리 회로부에 대한 예시적인 방법을 나타내는 흐름도이다.
계층적 메모리 시스템들에 대응하는 장치들, 시스템들, 및 방법들이 설명된다. 논리 회로부는 영구 메모리 디바이스 상에 상주할 수 있으며, 이에 의해 논리 회로부와 영구 메모리 디바이스 사이에서 데이터를 전송하는 것과 연관된 레이턴시를 감소시킬 수 있다. 예시적인 장치는 영구 메모리 디바이스 및 영구 메모리 디바이스 상에 상주하는 논리 회로부를 포함한다. 논리 회로부는 영구 메모리 디바이스에 저장된 데이터에 대응하는 논리 어드레스들을 저장하도록 구성된 어드레스 레지스터를 포함한다. 논리 회로부는 영구 메모리 디바이스에 저장된 데이터의 부분을 리트리브하기 위해 (예를 들어, 리다이렉트 이전에, 비영구 메모리 디바이스로 지향된) 리다이렉트된 요청을 수신하도록, 영구 메모리 디바이스에 저장된 데이터의 부분을 리트리브하기 위한 요청의 수신에 응답하여, 어드레스 레지스터에 저장된 논리 어드레스에 기초하여 데이터의 부분에 대응하는 물리 어드레스를 결정하도록; 그리고 결정된 어드레스에 기초하여, 데이터가 영구 메모리 디바이스로부터 리트리브되게 하도록 구성될 수 있다.
컴퓨팅 시스템들은 동작 동안 다양한 유형들의 메모리 자원들을 이용한다. 예를 들어, 컴퓨팅 시스템은 동작 동안 휘발성(예를 들어, 랜덤 액세스 메모리) 메모리 자원들 및 비휘발성(예를 들어, 스토리지) 메모리 자원들의 조합을 이용할 수 있다. 일반적으로, 휘발성 메모리 자원들은 비휘발성 메모리 자원들보다 훨씬 더 빠른 속도로 동작할 수 있고, 비휘발성 메모리 자원들보다 더 긴 수명을 가질 수 있지만; 휘발성 메모리 자원들은 통상적으로 비휘발성 메모리 자원들보다 더 고가이다. 본원에서 사용될 때, 휘발성 메모리 자원은 대안적으로 "비영구 메모리 디바이스"로 지칭될 수 있는 한편, 비휘발성 메모리 자원은 대안적으로 "영구 메모리 디바이스"로 지칭될 수 있다.
그러나, 영구 메모리 디바이스는 더 광범위하게는 영구 방식으로 데이터에 액세스할 수 있는 능력을 지칭할 수 있다. 예로서, 영구 메모리와 관련하여, 메모리 디바이스는 메모리가 비휘발성인지 여부와는 별개로, 메모리 디바이스에서의 데이터의 위치를 추적하기 위해 메모리 어레이에 복수의 논리 대 물리 매핑 또는 변환 데이터 및/또는 룩업 테이블들을 저장할 수 있다. 나아가, 영구 메모리 디바이스는 연속적인 프로세스들에 대한 커맨드들을 서비스할 수 있는 능력을 포함함으로써(예를 들어, 논리 대 물리 매핑, 룩업 테이블들 등을 사용함으로써) 비휘발성을 사용하는 것 외에 메모리의 비휘발성 양자를 지칭할 수 있다.
이러한 특성들은 소비자들 및 컴퓨팅 자원 제공자들의 계속 증가하는 요구들에 따라 기능하기에 적절한 자원들을 컴퓨팅 시스템에 프로비저닝하기 위해 컴퓨팅 시스템들에서 트레이드 오프를 필요로 할 수 있다. 예를 들어, 다중 사용자 컴퓨팅 네트워크(예를 들어, 클라우드 기반 컴퓨팅 시스템 배치, 소프트웨어 정의 데이터 센터 등)에서, 비교적 많은 양의 휘발성 메모리가 다중 사용자 네트워크에서 실행되는 프로비전 가상 머신들에 제공될 수 있다. 그러나, 일부 접근법들에서 공통적인 바와 같이, 다중 사용자 네트워크에 메모리 자원들을 제공하기 위해 휘발성 메모리에 의존함으로써, 특히 네트워크의 사용자들이 이용 가능하게 될 컴퓨팅 자원들의 점점 더 큰 풀들을 요구함에 따라, 메모리 자원들을 네트워크에 프로비저닝하는 것과 연관된 비용이 증가할 수 있다.
나아가, 다중 사용자 네트워크에서 가상 기계들을 프로비저닝하기 위한 메모리 자원들을 제공하기 위해 휘발성 메모리에 의존하는 접근법들에서, 휘발성 메모리 자원들이 소진되면(예를 들어, 휘발성 메모리 자원들이 다중 사용자 네트워크의 사용자들에게 할당되면), 추가적인 사용자들은 추가적인 휘발성 메모리 자원들이 이용 가능하거나 추가될 때까지 다중 사용자 네트워크에 추가되지 않을 수 있다. 이는 잠재적인 사용자들이 외면하게 할 수 있으며, 이는 추가적인 메모리 자원들이 다중 사용자 네트워크에 이용 가능하다면 발생될 수 있는 수익의 손실을 초래할 수 있다.
동적 랜덤 액세스 메모리(DRAM)와 같은 휘발성 메모리 자원들은 결정론적 방식으로 동작하는 경향이 있는 한편, 스토리지 클래스 메모리들(예를 들어, NAND 플래시 메모리 디바이스들, 고체 상태 드라이브들, 저항 가변 메모리 디바이스들 등)과 같은 비휘발성 메모리 자원들은 비결정론적 방식으로 동작하는 경향이 있다. 예를 들어, 스토리지 클래스 메모리 디바이스들로부터 리트리브되는 데이터에 대해 수행되는 에러 정정 동작들, 암호화 동작들, RAID 동작들 등으로 인해, 스토리지 클래스 메모리 디바이스로부터의 데이터를 요청하는 것과 데이터가 이용 가능한 것 사이의 시간량은 판독마다 달라질 수 있으며, 이에 의해 스토리지 클래스 메모리 디바이스로부터의 데이터 리트리벌을 비결정론적으로 만든다. 대조적으로, DRAM 디바이스로부터의 데이터를 요청하는 것과 데이터가 이용 가능한 것 사이의 시간량은 판독마다 고정적으로 유지될 수 있으며, 이에 의해 DRAM 디바이스로부터의 데이터 리트리벌을 결정론적으로 만든다.
또한, 휘발성 메모리 자원들의 결정론적 거동과 비휘발성 메모리 자원들의 비결정론적 거동 사이의 구별 때문에, 메모리 자원으로 그리고 이로부터 전송되는 데이터는 일반적으로 사용되는 메모리의 유형과 연관되는 특정 인터페이스(예를 들어, 버스)를 순회한다. 예를 들어, DRAM 디바이스로 그리고 이로부터 전송되는 데이터는 통상적으로 더블 데이터 레이트(DDR) 버스를 통해 전달되는 한편, NAND 디바이스로 그리고 이로부터 전송되는 데이터는 일반적으로 PCIe(peripheral component interconnect express) 버스를 통해 전달된다. 그러나, 이해될 바와 같이, 데이터가 휘발성 메모리 자원 및 비휘발성 메모리 자원으로 그리고 이들로부터 전송될 수 있는 인터페이스들의 예들은 이들 특정한 열거된 예들에 제한되지 않는다.
비휘발성 메모리 디바이스 및 휘발성 메모리 디바이스들의 상이한 거동들 때문에, 일부 접근법들은 특정 유형들의 데이터를 휘발성 또는 비휘발성 메모리 중 어느 하나에 저장하도록 선택한다. 이는 예를 들어, 비휘발성 메모리 디바이스들의 비결정론적 거동에 비해 휘발성 메모리 디바이스들의 결정론적 거동으로 인해 발생할 수 있는 이슈들을 완화시킬 수 있다. 예를 들어, 일부 접근법들에서의 컴퓨팅 시스템들은 컴퓨팅 시스템의 동작 동안 정기적으로 액세스되는 소량의 데이터를 휘발성 메모리 디바이스들에 저장하는 한편, 더 크거나 덜 빈번하게 액세스되는 데이터는 비휘발성 메모리 디바이스에 저장된다. 그러나, 다중 사용자 네트워크 배치에서, 대다수의 데이터는 휘발성 메모리 디바이스들에 저장될 수 있다. 대조적으로, 본원에서의 실시예들은 다중 사용자 네트워크에 배치된 비휘발성 메모리 디바이스로부터의 데이터 스토리지 및 리트리벌을 허용할 수 있다.
본원에서 설명되는 바와 같이, 본 개시의 일부 실시예들은 비휘발성, 그리고 이로 인해 비결정론적 메모리 자원으로부터의 데이터가 다른 접근법들에서 휘발성 및 결정론적 메모리 자원에 의한 사용으로 제한되는 인터페이스를 통해 전달되는 컴퓨팅 시스템들에 관한 것이다. 예를 들어, 일부 실시예들에서, 데이터는 일부 접근법들에서 휘발성의 결정론적 메모리 자원으로의 그리고 이로부터의 데이터 전송을 위해 예비되는 DDR 인터페이스와 같은 인터페이스를 통해, NAND 플래시 디바이스와 같은 비휘발성의 비결정론적 메모리 자원, 상 변화 메모리 디바이스 및/또는 저항성 메모리 디바이스(예를 들어, 3차원 크로스포인트(3D XP) 메모리 디바이스)와 같은 저항 가변 메모리 디바이스, 고체 상태 드라이브(SSD), 자기 선택 메모리(self-selecting memory, SSM) 디바이스 등으로 그리고 이들로부터 전송될 수 있다. 따라서, 휘발성의 결정론적 메모리 디바이스들이 메인 메모리를 컴퓨팅 시스템에 제공하기 위해 사용되는 접근법들과는 대조적으로, 본원에서의 실시예들은 비휘발성의 비결정론적 메모리 디바이스들로 하여금 컴퓨팅 시스템에 대한 메인 메모리의 적어도 부분으로서 사용되는 것을 허용할 수 있다.
일부 실시예들에서, 데이터는 비휘발성 메모리 자원으로부터 중간에 캐시(예를 들어, 소형 정적 랜덤 액세스 메모리(SRAM) 캐시) 또는 버퍼로 전송될 수 있고, 이어서 데이터를 요청한 애플리케이션에 이용가능하게 될 수 있다. 여기서 설명된 바와 같이, 통상적으로 결정론적 방식으로 제공되는 데이터를 비결정론적 메모리 자원에 저장하고, 그 데이터에 대한 액세스를 허용함으로써, 예를 들어, 휘발성 메모리 자원들을 사용하여 동작하는 접근법들에 비해 실질적으로 감소된 비용으로 더 많은 양의 메모리 자원들이 다중 사용자 네트워크에 이용가능하게 되는 것을 허용함으로써 컴퓨팅 시스템 성능이 개선될 수 있다.
나아가, 본 개시의 다수의 실시예들은 계층적 메모리 시스템의 다수의 컴포넌트들을 함께 단단히 결합함으로써 비휘발성 메모리 자원들로/로부터 데이터를 전송할 때 통상적으로 수행되는 다수의 단계들을 감소시킬 수 있다. 예를 들어, 다수의 실시예들에서, 호스트와 비휘발성 메모리 자원들 사이의 라우팅 데이터 요청들을 조정하는(그리고 비휘발성 메모리 자원들로/로부터 전송되는 데이터를 일시적으로 저장하는) 논리 회로부는 영구 메모리 디바이스와 같은 비휘발성 메모리 자원들을 갖는 메모리 디바이스 내에 배치될 수 있다. 이에 따라, 본 개시의 다수의 실시예들에서, 비교적 더 큰 크기를 갖는 데이터는 감소된 수의 외부 버스들(예를 들어, 영구 메모리 디바이스 외부의 데이터 버스들)을 통해 영구 메모리 디바이스로/로부터 전송될 수 있으며, 이는 영구 메모리 디바이스와 연관된 판독/기록 요청들의 전체 프로세싱 속도를 개선한다.
본 개시의 실시예들을 가능하게 하기 위해, 비휘발성 메모리 자원들에 대한 가시도는 계층적 메모리 시스템이 배치되는 컴퓨팅 시스템의 다양한 디바이스들에 대해 난독화될 수 있다. 예를 들어, 컴퓨팅 시스템 또는 다중 사용자 네트워크에 배치되는 호스트(들), 네트워크 인터페이스 카드(들), 가상 기계(들) 등은 데이터가 컴퓨팅 시스템의 휘발성 메모리 자원에 의해 저장되는지 또는 비휘발성 메모리 자원에 의해 저장되는지를 구별할 수 없을 수 있다. 예를 들어, 호스트(들), 네트워크 인터페이스 카드(들), 가상 기계(들) 등이 데이터가 휘발성 메모리 자원에 의해 저장되는지 또는 비휘발성 메모리 자원에 의해 저장되는지를 구별할 수 없는 방식으로 데이터에 대응하는 어드레스들을 등록할 수 있는 하드웨어 회로부가 컴퓨팅 시스템에 배치될 수 있다.
본원에서 더 상세히 설명되는 바와 같이, 계층적 메모리 시스템은 리다이렉트된 데이터 요청들을 인터셉트하고, 요청된 데이터와 연관된 어드레스를 논리 회로부에 등록하며(하드웨어 회로부가 데이터를 저장하기 위해 자체 메모리 자원에 의해 백업되지 않음에도 불구하고), 논리 회로부를 사용하여, 논리 회로부에 등록된 어드레스를 비휘발성 메모리 디바이스에서의 데이터에 대응하는 물리적 어드레스에 매핑할 수 있는 하드웨어 회로부(예를 들어, 논리 회로부)를 포함할 수 있다.
본 개시에 대한 다음의 상세한 설명에서, 본 본원의 일부를 형성하고, 본 개시의 하나 이상의 실시예가 어떻게 실시될 수 있는지 예로서 도시되는 첨부 도면들이 참조된다. 이러한 실시예들은 당업자들이 본 개시의 실시예들을 실시할 수 있게 하기에 충분히 상세하게 설명되고, 다른 실시예들이 이용될 수 있는 것으로 그리고 본 개시의 범위로부터 벗어나지 않고 프로세스, 전기적, 및 구조적 변경들이 이루어질 수 있는 것으로 이해되어야 한다.
본원에서 사용될 때, 특히 도면들에서의 참조 부호들에 대한 “N”, “M” 등과 같은 지정자들은 그렇게 지정된 다수의 특정 특징부가 포함될 수 있음을 나타낸다. 또한, 본원에서 사용되는 용어는 특정 실시예들을 단지 설명하기 위한 것이고, 제한하려는 것이 아닌 것으로 이해되어야 한다. 본원에서 사용될 때, 단수형 표현들은 문맥상 명확히 다르게 지시하지 않는 한. 단수 및 복수 대상들 양자를 포함할 수 있다. 또한, "다수의", "적어도 하나의", 및 "하나 이상의"(예를 들어, 다수의 메모리 뱅크들)는 하나 이상의 메모리 뱅크를 지칭할 수있는 반면, "복수의"는 이러한 것들이 하나보다 많은 것을 지칭하려는 것이다.
더 나아가, "할 수 있다" 및 "할 수도 있다"라는 단어들은 본 출원 전반에 걸쳐 필수적 의미(즉, 해야하는)가 아니라, 허용적 의미(즉, ~할 가능성이 있는, ~를 할 수 있는)로 사용된다. "포함한다"라는 용어, 및 이의 파생어들은 "포함하지만, 이에 제한되지는 않는"을 의미한다. "결합된(coupled)" 및 "결합하는(coupling)"이라는 용어들은 문맥상 적절하게, 커맨드들 및/또는 데이터에의 액세스 및 이들의 이동(전송)을 위해 또는 물리적으로 직접적으로 또는 간접적으로 연결됨을 의미한다. “데이터” 및 "데이터 값들"이라는 용어들은 문맥상 적절하게, 본원에서 서로 바꿔 사용될 수 있고 동일한 의미를 가질 수 있다.
본원에서의 도면들은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자들이 도면에서의 요소 또는 컴포넌트를 식별하는 넘버링 규칙을 따른다. 상이한 도면들 간의 유사한 요소들 또는 컴포넌트들은 유사한 숫자들의 사용에 의해 식별될 수 있다. 예를 들어, 104는 도 1에서의 요소 "04"을 참조할 수 있고, 유사한 요소는 도 2에서 204로서 참조될 수 있다. 복수의 유사한 요소들 또는 컴포넌트들 또는 유사한 요소들 또는 컴포넌트들의 그룹은 본원에서 단일 요소 번호로 총칭될 수 있다. 예를 들어, 복수의 참조 요소들(106-1, 106-2, . . ., 106-N)(예를 들어, 106-1 내지 106-N)은 106로서 총칭될 수 있다. 이해될 바와 같이, 본원에서의 다양한 실시예들에서 제시되는 요소들은 본 개시의 다수의 추가적인 실시예들을 제공하기 위해 추가, 교환, 및/또는 제거될 수 있다. 또한, 도면들에서 제공되는 요소들의 비율 및 상대적인 축척은 본 개시의 특정 실시예들을 예시하려는 것이고, 제한적인 의미로 취해져서는 안 된다.
도 1은 본 개시의 다수의 실시예들에 따른 논리 회로부(104)를 포함하는 장치를 포함하는 컴퓨팅 시스템(100) 형태의 기능 블록도이다. 본원에서 사용될 때, "장치"는 예를 들어, 회로 또는 회로부, 다이 또는 다이들, 모듈 또는 모듈들, 디바이스 또는 디바이스들, 또는 시스템 또는 시스템들과 같은 다양한 구조체들 또는 구조체들의 조합들 중 임의의 것을 지칭할 수 있지만, 이에 제한되지는 않는다. 일부 실시예들에서, 논리 회로부 (104)는 필드 프로그래머블 게이트 어레이(FPGA), 주문형 집적 회로(ASIC), 다수의 이산 회로 컴포넌트들 등으로서 제공될 수 있고, 본원에서 대안적으로 "논리 회로"로서 지칭될 수 있다.
논리 회로부 (104)는 도 1에 도시된 바와 같이, 메모리 자원(102)을 포함할 수 있으며, 이는 판독 버퍼(103), 기록 버퍼(105), 및/또는 입력/출력 I/O 디바이스 액세스 컴포넌트(107)를 포함할 수 있다. 일부 실시예들에서, 메모리 자원(102)은 논리 회로부(104)가 FPGA인 실시예들에서 데이터가 논리 회로부(104) 내에 저장될 수 있게 할 수 있는 블록 RAM과 같은 랜덤 액세스 메모리 자원일 수 있다. 그러나, 실시예들은 그렇게 제한되지 않고, 메모리 자원(102)은 다양한 레지스터들, 캐시들, 메모리 어레이들, 래치들, 및 SRAM, DRAM, EPROM, 또는 데이터가 논리 회로부(104)의 외부에 저장되는 물리적 위치들에 대응하는 등록된 어드레스들을 포함하는 비트 스트링들과 같은 데이터를 저장할 수 있는 다른 적절한 메모리 기술들을 포함할 수 있다. 메모리 자원(102)은 논리 회로부(104)의 내부에 있고, 일반적으로 논리 회로부(104)의 외부에 있을 수 있는 영구및/또는 비영구 메모리 자원들과 같은 논리 회로부(104)의 외부에 있는 메모리보다 더 작다.
판독 버퍼(103)는 논리 회로부(104)에 의해 수신되었지만 논리 회로부(104)에 의해 프로세싱되지 않은 데이터를 저장하기 위해 예비된 메모리 자원(102)의 부분을 포함할 수 있다. 일부 실시예들에서, 판독 버퍼(103)는 크기가 약 4 킬로바이트(KB)일 수 있지만, 실시예들은 이러한 특정 크기로 제한되지 않는다. 판독 버퍼(103)는 어드레스 레지스터들(106-1 내지 106-N) 중 하나에 등록될 데이터를 버퍼링할 수 있다.
기록 버퍼(105)는 논리 회로부(104) 외부의 위치로의 전송을 대기하고 있는 데이터를 저장하기 위해 예비된 메모리 자원(102)의 부분을 포함할 수 있다. 일부 실시예들에서, 기록 버퍼(105)는 크기가 약 4 킬로바이트(KB)일 수 있지만, 실시예들은 이러한 특정 크기로 제한되지 않는다. 기록 버퍼(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과 관련하여 더 상세히 설명되는 바와 같은, 하이퍼바이저(예를 들어, 도 3에 도시된 하이퍼바이저(312))의 상태에 대응하는 데이터를 수신, 저장, 및/또는 전송할 수 있다.
논리 회로부(104)는 메모리 액세스 멀티플렉서(MUX)(109), 상태 기계(111), 및/또는 계층적 메모리 제어기(113)(또는 간략함을 위해, "제어기")를 더 포함할 수 있다. 도 1에 도시된 바와 같이, 계층적 메모리 제어기(113)는 복수의 어드레스 레지스터들(106-3 내지 106-N) 및/또는 인터럽트 컴포넌트(115)를 포함할 수있다. 메모리 액세스 MUX(109)는 하나 이상의 로직 게이트를 포함할 수 있고 논리 회로부(104)에 대한 데이터 및/또는 어드레스 버싱을 제어하도록 구성될 수 있는 회로부를 포함할 수 있다. 예를 들어, 메모리 액세스 MUX(109)는 아래에서 더 상세히 설명되는 바와 같이, 메모리 자원(102)으로 그리고 이로부터 메시지들을 전송할 수 있을 뿐만 아니라, 계층적 메모리 제어기(113) 및/또는 상태 기계(111)와 통신할 수 있다.
일부 실시예들에서, MUX(109)는 수신된 호스트(예를 들어, 호스트 컴퓨팅 디바이스, 가상 기계 등)로부터의 인입 메시지들 및/또는 커맨드들을 논리 회로부(104)로 리다이렉트할 수 있다. 예를 들어, MUX(109)는 I/O 디바이스)로부터의 (예를 들어, 본원에서, 도 2 및 도 3에 도시된 인터페이스(208/308)와 같은 인터페이스를 통해 수신되는) 액세스 요청에 대응하는 인입 메시지를 판독 버퍼(103) 및/또는 기록 버퍼(105)에 대한 어드레스 레지스터들 중 하나(예를 들어, 아래에서 설명되는 바와 같은 계층적 메모리 제어기(113)의 BAR4 영역일 수 있는 어드레스 레지스터(106-N))로 리다이렉트할 수 있다.
또한, MUX(109)는 논리 회로부(104)에 의해 수신된 요청들(예를 들어, 판독 요청들, 기록 요청들)을 리다이렉트할 수 있다. 일부 실시예들에서, 요청들은 논리 회로부(104)에 통신가능하게 결합된 하이퍼바이저(예를 들어, 본원에서, 도 3에 도시된 하이퍼바이저(312)), 베어 메탈 서버(bare metal server), 또는 호스트 컴퓨팅 디바이스로부터 논리 회로부(104)에 의해 수신될 수 있다. 이러한 요청들은 MUX(109)에 의해 판독 버퍼(103), 기록 버퍼(105), 및/또는 I/O 액세스 컴포넌트(107)로부터 어드레스 레지스터(예를 들어, 아래에서 설명되는 바와 같은 계층적 메모리 제어기(113)의 BAR2 영역일 수 있는 어드레스 레지스터(106-2))로 리다이렉트될 수 있다.
MUX(109)는 액세스될 어드레스 레지스터(들)(106)에서의 어드레스를 결정하기 위한 동작의 일부로서 이러한 요청들을 리다이렉트할 수 있다. 일부 실시예들에서, MUX(109)는 하이퍼바이저 인터럽트(예를 들어, 인터럽트 컴포넌트(115)에 의해 생성되는 논리 회로부(104)에 결합된 하이퍼바이저에 어써트된 인터럽트)의 어써트에 응답하여 액세스될 어드레스 레지스터(들)에서의 어드레스를 결정하기 위한 동작의 일부로서 이러한 요청들을 리다이렉트할 수 있다.
요청이 논리 회로부(104)의 외부에 저장된 데이터(예를 들어, 논리 회로부(104)의 외부 위치에(예를 들어, 본원에서, 도 2 및 도 3에 도시된 중간 메모리 컴포넌트(220/320) 및/또는 영구 메모리 디바이스(216/316)의 어레이(222/322)에) 기록된 어드레스와 연관된 데이터)에 대응한다는 결정에 응답하여, MUX(109)는 데이터의 리트리벌, 데이터의 기록 버퍼(105)로의 전송, 및/또는 데이터의 논리 회로부(104) 외부 위치(예를 들어, 본원에서, 도 2 및 도 3에 도시된 영구 메모리 디바이스(216/316)와 같은 영구 메모리 디바이스의 메모리 셀들의 어레이)로의 전송을 가능하게 할 수 있다. 요청이 논리 회로부(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)는 액세스 정보(예를 들어, "I/O ACCESS INFO")를 메모리 액세스 멀티플렉서(109)로 그리고 이로부터 전송할 수 있을 뿐만 아니라, 인터럽트 구성 정보(예를 들어, "INTERRUPT CONFIG") 및/또는 인터럽트 요청 메시지들(예를 들어, "INTERRUPT REQUEST")을 계층적 메모리 제어기(113)로 그리고 이로부터 전송할 수 있다. 일부 실시예들에서, 상태 기계(111)는 또한, 메모리 액세스 멀티플렉서(109)로 그리고 이로부터 제어 메시지들(예를 들어, "MUX CTRL")을 전송할 수 있다.
ACCESS INFO 메시지는 논리 회로부(104) 외부의 I/O 디바이스로부터 수신된 데이터 액세스 요청에 대응하는 정보를 포함할 수 있다. 일부 실시예들에서, ACCESS INFO는 영구 메모리 디바이스에 저장될 데이터에 대응하는 논리 어드레싱 정보 또는 영구 메모리 디바이스로부터 리트리브될 데이터에 대응하는 어드레싱 정보를 포함할 수 있다.
INTERRUPT CONFIG 메시지는 논리 회로부(104) 외부에 어써트될 적절한 인터럽트 메시지들을 구성하기 위해 계층적 메모리 제어기(113) 상에서 상태 기계(111)에 의해 어써트될 수 있다. 예를 들어, 논리 회로부(104)가 리다이렉트된 판독 또는 기록 요청을 이행하는 것의 일부로서 논리 회로부 \(104)에 결합된 하이퍼바이저 상에서 인터럽트를 어써트할 때, INTERRUPT CONFIG 메시지는 동작이 영구 메모리 디바이스로부터 데이터를 리트리브하기 위한 동작인지 또는 데이터를 영구 메모리 디바이스에 기록하기 위한 동작인지에 기초하여 적절한 인터럽트 메시지를 생성하기 위해 상태 기계(111)에 의해 생성될 수 있다.
INTERRUPT REQUEST 메시지는 인터럽트 메시지가 하이퍼바이저(또는 베어 메탈 서버 또는 다른 컴퓨팅 디바이스) 상에서 어써트되게 하기 위해 상태 기계(111)에 의해 생성되고 인터럽트 컴포넌트(115) 상에서 어써트될 수 있다. 본원에서 더 상세히 설명되는 바와 같이, 인터럽트(115)는 하이퍼바이저가 계층적 메모리 시스템의 동작의 일부로서 영구 메모리 디바이스에 대한 데이터의 데이터 리트리벌 또는 기록을 우선순위화하게 하기 위해 하이퍼바이저 상에서 어써트될 수 있다.
MUX CTRL 메시지(들)는 MUX(109)의 동작을 제어하기 위해 상태 기계(111)에 의해 생성되고 MUX(109) 상에서 어써트될 수 있다. 일부 실시예들에서, MUX CTRL 메시지(들)는 위에서 설명된 MUX(109) 동작들의 수행의 일부로서 상태 기계(111)에 의해 MUX(109) 상에서 어써트될 수 있다(또는 그 반대일 수 있다).
계층적 메모리 제어기(113)는 집적 회로, 칩, 시스템 온 칩, 또는 이들의 조합들과 같은 코어를 포함할 수 있다. 일부 실시예들에서, 계층적 메모리 제어기(113)는 PCIe(peripheral component interconnect express) 코어일 수 있다. 본원에 사용될 때, "코어"는 명령어들을 수신하고 수신된 명령어들에 기초하여 작업들 또는 동작들을 수행하는 로직, 프로세서, 및/또는 코프로세서들의 재사용가능 유닛을 지칭한다.
계층적 메모리 제어기(113)는 어드레스 레지스터들(106-1 내지 106-N) 및/또는 인터럽트 컴포넌트(115)를 포함할 수있다. 어드레스 레지스터들(106-1 내지 106-N)은 논리 회로부(104) 또는 컴퓨팅 시스템(예를 들어, 본원에서, 도 2 및 도 3에 도시된 컴퓨팅 시스템(201/301))에 의해 사용되는 메모리 어드레스들을 저장할 수 있는 베이스 어드레스 레지스터(base address register, BAR)들일 수 있다. 어드레스 레지스터들 중 적어도 하나(예를 들어, 어드레스 레지스터(106-1))는 도 3에 도시된 하이퍼바이저(312)와 같은 외부 위치로부터 논리 회로부(104)의 내부 레지스터들에의 액세스를 제공하는 메모리 어드레스들을 저장할 수 있다.
상이한 어드레스 레지스터(예를 들어, 어드레스 레지스터(106-2))는 본원에서 더 상세히 설명되는 바와 같은, 인터럽트 제어에 대응하는 어드레스들을 저장하기 위해 사용될 수 있다. 일부 실시예들에서, 어드레스 레지스터(106-2)는 직접 메모리 액세스(direct memory access, DMA) 판독 및 DMA 기록 제어 및/또는 상태 레지스터들을 매핑할 수 있다. 예를 들어, 어드레스 레지스터(106-2)는 본원에서, 도 3과 관련하여 설명되는 바와 같은, 계층적 메모리 시스템의 동작의 일부로서 하이퍼바이저에 어써트될 수 있는 하나 이상의 인터럽트 메시지의 생성을 포함할 수 있는 DMA 커맨드 체이닝을 위한 디스크립터들 및/또는 제어 비트들에 대응하는 어드레스들을 포함할 수 있다.
어드레스 레지스터들 중 또 다른 레지스터(예를 들어, 어드레스 레지스터(106-3))는 하이퍼바이저(예를 들어, 본원에서, 도 3에 도시된 하이퍼바이저(312))로의 그리고 이로부터의 액세스에 대응하는 어드레스들을 저장할 수 있다. 일부 실시예들에서, 하이퍼바이저로의 그리고/또는 이로부터의 액세스는 논리 회로부(104)와 연관된 AXI(Advanced eXtensible Interface) DMA를 통해 제공될 수 있다. 일부 실시예들에서, 어드레스 레지스터는 논리 회로부(104)의 DMA(예를 들어, AXI DMA)를 통해 전송된 데이터에 대응하는 어드레스들을 논리 회로부(104)의 외부 위치에 매핑할 수 있다.
일부 실시예들에서, 적어도 하나의 어드레스 레지스터(예를 들어, 어드레스 레지스터 106-N)는 논리 회로부(104)에의 I/O 디바이스(예를 들어, 도 2에 도시된 I/O 디바이스(210)) 액세스에 대응하는 어드레스들을 저장할 수 있다. 어드레스 레지스터(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)는 호스트 컴퓨팅 시스템에 결합될 수 있다. 호스트 컴퓨팅 시스템은 시스템 마더보드 및/또는 백플레인을 포함할 수 있고, 다수의 프로세싱 자원들(예를 들어, 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로부)을 포함할 수 있다. 호스트 및 장치(100)는 예를 들어, 서버 시스템 및/또는 고성능 컴퓨팅(high-performance computing, HPC) 시스템 및/또는 이의 부분일 수 있다. 일부 실시예들에서, 컴퓨팅 시스템은 폰 노이만(Von Neumann) 아키텍처를 가질 수 있지만, 본 개시의 실시예들은 보통 폰 노이만 아키텍처와 연관된 하나 이상의 컴포넌트(예를 들어, CPU, ALU 등)을 포함하지 않을 수 있는 비-폰 노이 만 아키텍처들에서 구현될 수 있다.
도 2 및 도 3에 또한 도시된 바와 같이, 논리 회로부(104)는 영구 메모리 디바이스(예를 들어, 본원에서, 도 2 및 도 3에서 도시된 영구 메모리 디바이스(216/316))와 같은 계층적 메모리 시스템의 특정 메모리 디바이스 상에 상주할 수 있다. 본원에서 사용될 때, 용어 "~ 상에 상주하는(resident on)"은 특정 구성요소 상에 물리적으로 위치되는 것을 지칭한다. 예를 들어, 논리 회로부(104)가 영구 메모리 디바이스(216/316) "상에 상주"되는 것은 논리 회로부(104)가 영구 메모리 디바이스(216/316)에 물리적으로 결합되는 상태를 지칭한다. 용어 "~ 상에 상주하는"은 본원에서 "~ 상에 배치된" 또는 "~ 상에 위치된"과 같은 다른 용어들과 서로 바꿔 사용될 수 있다. 본원에서 설명되는 바와 같이, 본 개시의 다수의 실시예들은 영구 메모리 디바이스 내에 논리 회로부를 배치함으로써, 데이터를 영구 메모리 디바이스로/로부터 전송하는 것과 연관된 레이턴시를 감소시킬 수 있다. 영구 메모리 디바이스로/로부터 전송되는 데이터는 통상적으로 비교적 큰 크기를 가지므로, 이는 계층적 메모리 시스템(예를 들어, 본원에서, 도 2 및 도 3에 도시된 계층적 메모리 시스템들(201/301))의 전반적인 프로세싱 속도를 상다히 개선할 수 있다. 영구 메모리 디바이스 상에 상주하는 논리 회로부의 추가적인 세부 사항들은 도 2 및 도 3과 관련하여 설명된다.
도 2는 본 개시의 다수의 실시 예들에 따른 영구 메모리 디바이스(216) 상에 상주하는 논리 회로부(204)(예를 들어, 논리 회로부)를 포함하는 컴퓨팅 시스템(201) 형태의 기능 블록도이다. 도 2에 도시된 바와 같이, 컴퓨팅 시스템(201)은 논리 회로부(204)가 상주하는 영구 메모리 디바이스(216)를 포함할 수 있다. 논리 회로부(204)는 도 1에 도시된 논리 회로부(104)와 유사할 수 있다. 또한, 컴퓨팅 시스템(201)은 입력/출력(I/O) 디바이스(210), 비영구 메모리 디바이스(230), 중간 메모리 컴포넌트(220), 및 메모리 관리 컴포넌트(214)를 포함할 수 있다. I/O 디바이스(210)와 영구 메모리 디바이스(216)(뿐만 아니라 논리 회로부(204)), 비영구 메모리 디바이스(230), 중간 메모리 컴포넌트(220), 및/또는 메모리 관리 컴포넌트(214) 사이의 통신은 인터페이스(208)를 통해 가능하게 될 수 있다.
I/O 디바이스(210)는 물리 어드레스 및/또는 가상 기계 물리 어드레스를 통해 직접 메모리 액세스를 제공하도록 구성된 디바이스일 수 있다. 일부 실시예들에서, I/O 디바이스(210)는 네트워크 인터페이스 카드(network interface card, NIC) 또는 네트워크 인터페이스 제어기, 스토리지 디바이스, 그래픽 렌더링 디바이스, 또는 다른 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)는 메모리 셀들의 다수의 어레이들, 이를테면 어레이(222)을 포함할 수 있다. 어레이들은 예를 들어, NAND 아키텍처를 갖는 플래시 어레이들일 수 있다. 그러나, 실시예들은 특정 유형의 메모리 어레이 또는 어레이 아키텍처에 제한되지 않는다. 메모리 셀들은 예를 들어, 다수의 물리적 페이지들을 포함하는 다수의 블록들로 그룹화될 수 있다. 다수의 블록들은 메모리 셀들의 평면에 포함될 수 있고, 어레이는 다수의 평면들을 포함할 수 있다.
영구 메모리 디바이스(216)는 휘발성 메모리 및/또는 비휘발성 메모리를 포함할 수 있다. 다수의 실시예들에서, 영구 메모리 디바이스(216)는 멀티 칩 디바이스를 포함할 수 있다. 멀티 칩 디바이스는 다수의 상이한 메모리 유형들 및/또는 메모리 모듈들을 포함할 수 있다. 예를 들어, 메모리 시스템은 임의의 유형의 모듈 상에 비휘발성 또는 휘발성 메모리를 포함할 수 있다. 영구 메모리 디바이스(216)가 비휘발성 메모리를 포함하는 실시예들에서, 영구 메모리 디바이스(216)는 NAND 또는 NOR 플래시 메모리 디바이스들과 같은 플래시 메모리 디바이스일 수 있다.
그러나, 실시예들은 이에 제한되지 않고, 영구 메모리 디바이스(216)는 다른 비휘발성 메모리 디바이스들, 이를테면 비휘발성 랜덤 액세스 메모리 디바이스들(예를 들어, NVRAM, ReRAM, FeRAM, MRAM, PCM), "최근 만들어진" 메모리 디바이스들, 이를테면 저항 가변 메모리 디바이스들(예를 들어, 저항성 및/또는 상 변화 메모리 디바이스들, 이를테면 3D 크로스포인트(3D XP) 메모리 디바이스), 자기 선택 메모리(self-selecting memory, SSM) 셀들의 어레이를 포함하는 메모리 디바이스들 등, 또는 이들의 조합들을 포함할 수 있다. 비휘발성 메모리의 저항성 및/또는 상 변화 어레이는 적층가능한 크로스 그리드 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 또한, 저항성 및/또는 상 변화 메모리 디바이스들은 많은 플래시 기반 메모리들과 달리, 비휘발성 메모리 셀이 사전에 소거되지 않고도 비휘발성 메모리 셀이 프로그래밍될 수 있는 제자리 기록(write in-place) 동작을 수행할 수 있다. 자기 선택 메모리 셀들은 플래시 기반 메모리들과 대조적으로, 메모리 셀에 대한 저장 요소 및 스위치 양자로서의 역할을 하는 단일 칼코겐화 재료를 갖는 메모리 셀들을 포함할 수 있다.
영구 메모리 디바이스(216)는 (예를 들어, 어레이(222)를 통해) 컴퓨팅 시스템(201)을 위한 스토리지 볼륨을 제공할 수 있고, 이에 따라 컴퓨팅 시스템(201), 컴퓨팅 시스템(201)을 위한 메인 메모리, 또는 이들의 조합들 전체에 걸쳐 추가적인 메모리 또는 스토리지로서 사용될 수 있다. 실시예들은 특정 유형의 메모리 디바이스에 제한되지 않지만, 영구 메모리 디바이스(216)는 특히, RAM, ROM, SRAM DRAM, SDRAM, PCRAM, RRAM, 및 플래시 메모리를 포함할 수 있다. 나아가, 단일 영구 메모리 디바이스(216)가 도 2에 도시되어 있지만, 실시예들은 이에 제한되지 않고, 컴퓨팅 시스템(201)은 하나 이상의 영구 메모리 디바이스(216)를 포함할 수 있으며, 이들 각각은 이와 연관된 동일한 아키텍처를 가질 수도 있고 갖지 않을 수도 있다. 비제한적인 예로서, 일부 실시예들에서, 영구 메모리 디바이스(216)는 NAND 메모리 디바이스 및 저항 가변 메모리 디바이스와 같은 상이한 아키텍처들인 두 개의 개별 메모리 디바이스들을 포함할 수 있다.
본원에서 설명되고 도 2에 도시된 바와 같이, 논리 회로부(204)는 영구 메모리 디바이스(216) 상에 상주할 수 있다. 이에 따라, 어레이(222)로(예를 들어, 이에 저장되기 위해) 전송되는 데이터는 (영구 메모리 디바이스(216) 외부의 데이터 버스를 이용하지 않고) 영구 메모리 디바이스(216) 내부의 데이터 버스(218)를 통해 논리 회로부(204)로부터 어레이(222)로 전송될 수 있다. 유사하게, 어레이(222)로부터(예를 들어, 이로부터 판독되기 위해) 전송되는 데이터는 데이터 버스(218)를 통해 어레이(222)로부터 논리 회로부(204)로 직접 전송될 수 있다. 이는 영구 메모리 디바이스(216)로/로부터 전송되는 데이터와 연관된 판독/기록 요청들의 프로세싱 속도를 개선할 수 있으며, 이는 또한 계층적 메모리 시스템(201)의 전반적인 속도를 개선할 수 있다.
비영구 메모리 디바이스(230)는 휘발성 메모리 셀들의 어레이와 같은 휘발성 메모리를 포함할 수 있다. 다수의 실시예들에서, 비영구 메모리 디바이스(230)는 멀티 칩 디바이스를 포함할 수 있다. 멀티 칩 디바이스는 다수의 상이한 메모리 유형들 및/또는 메모리 모듈들을 포함할 수 있다. 일부 실시예들에서, 비영구 메모리 디바이스(230)는 컴퓨팅 시스템(201)에 대한 메인 메모리로서 기능할 수 있다. 예를 들어, 비영구 메모리 디바이스(230)는 메인 메모리를 컴퓨팅 시스템(230)에 제공하기 위해 사용되는 동적 랜덤 액세스(DRAM) 메모리 디바이스일 수 있다. 그러나, 실시예들은 DRAM 메모리 디바이스를 포함하는 비영구 메모리 디바이스(230)에 제한되지 않고, 일부 실시예들에서, 비영구 메모리 디바이스(230)는 특히, RAM, SRAM DRAM, SDRAM, PCRAM, 및/또는 RRAM과 같은 다른 비영구 메모리 디바이스들을 포함할 수 있다.
비영구 메모리 디바이스(230)는 예를 들어 컴퓨팅 시스템(201)의 동작의 일부로서 호스트 컴퓨팅 디바이스에 의해 요청될 수 있는 데이터를 저장할 수 있다. 예를 들어, 컴퓨팅 시스템(201)이 다중 사용자 네트워크의 일부일 때, 비영구 메모리 디바이스(230)는 컴퓨팅 시스템(201)의 동작 동안 호스트 컴퓨팅 디바이스들(예를 들어, 다중 사용자 네트워크에 배치된 가상 기계들) 사이에서 전송될 수 있는 데이터를 저장할 수 있다.
일부 접근법에서, 비영구 메모리 디바이스(230)와 같은 비영구 메모리는 호스트(예를 들어, 다중 사용자 네트워크에 배치된 가상 기계)에 의해 액세스되는 모든 사용자 데이터를 저장할 수 있다. 예를 들어, 비영구 메모리의 속도로 인해, 일부 접근법들은 다중 사용자 네트워크에 배치된 가상 기계들에 대한 메모리 자원들을 프로비저닝하기 위해 비영구적인 메모리에 의존한다. 그러나, 이러한 접근법들에서, 비영구 메모리가 일반적으로 영구 메모리(예를 들어, 영구 메모리 디바이스(216))보다 더 고가이기 때문에 비용들 문제가 될 수 있다.
대조적으로, 아래에서 더 상세히 설명되는 바와 같이, 본원에서의 실시예들은 비영구 메모리 디바이스(230)에 저장되는 적어도 일부 데이터가 영구 메모리 디바이스(216)에 저장될 수 있게 할 수 있다. 이는 사용자 데이터 저장을 위해 비영구 메모리에 의존하는 접근법들보다 더 낮은 비용으로 다중 사용자 네트워크와 같은 컴퓨팅 시스템(201)에 추가적인 메모리 자원들이 제공될 수 있게 할 수 있다.
컴퓨팅 시스템(201)은 비영구 메모리 디바이스(230) 및/또는 인터페이스(208)에 통신가능하게 결합될 수 있는 메모리 관리 컴포넌트(214)를 포함할 수 있다. 일부 실시예들에서, 메모리 관리 컴포넌트(214)는 인터페이스(208)와 같은 직접 메모리 액세스 버스를 비영구 메모리 디바이스(230)에 통신가능하게 결합할 수 있는 입력/출력 메모리 관리 유닛(IO MMU)일 수 있다. 그러나, 실시예들은 이에 제한되지 않고, 메모리 관리 컴포넌트(214)는 인터페이스(208)와 비영구 메모리 디바이스(230) 사이의 통신을 가능하게 하는 다른 유형들의 메모리 관리 하드웨어일 수 있다.
메모리 관리 컴포넌트(214)는 디바이스 가시의 가상 어드레스들을 물리 어드레스들에 매핑할 수 있다. 예를 들어, 메모리 관리 컴포넌트(214)는 I/O 디바이스(210)와 연관된 가상 어드레스들을 비영구 메모리 디바이스(230) 및/또는 영구 메모리 디바이스들(216)에서의 물리 어드레스들에 매핑할 수 있다. 일부 실시예들에서, I/O 디바이스(210)와 연관된 가상 엔트리들의 매핑은 본원에서, 도 1에 도시된 판독 버퍼, 기록 버퍼, 및/또는 I/O 액세스 버퍼에 의해 가능하게 될 수 있다.
일부 실시예들에서, 메모리 관리 컴포넌트(214)는 I/O 디바이스(210)와 연관된 가상 어드레스를 판독하고/하거나 가상 어드레스를 비영구 메모리 디바이스(230)에서의 물리 어드레스에 또는 논리 회로부(204)에서의 어드레스에 매핑할 수 있다. 메모리 관리 컴포넌트(214)가 가상 I/O 디바이스(210) 어드레스를 논리 회로부(204)에서의 어드레스에 매핑하는 실시예들에서, 메모리 관리 컴포넌트(214)는 I/O 디바이스(210)로부터 수신된 판독 요청(또는 기록 요청)을 논리 회로부(204)로 리다이렉트할 수 있으며, 이는 I/O 디바이스(210) 판독 또는 기록 요청과 연관된 가상 어드레스 정보를 논리 회로부(204)의 어드레스 레지스터(예를 들어, 어드레스 레지스터(206-N))에 저장할 수 있다. 일부 실시예들에서, 어드레스 레지스터(206-N)는 BAR4 어드레스 레지스터와 같은 논리 회로부(204)의 특정 베이스 어드레스 레지스터일 수 있다.
리다이렉트된 판독(또는 기록) 요청은 인터페이스(208)를 통해 메모리 관리 컴포넌트(214)로부터 논리 회로부(204)로 전송될 수 있다. 일부 실시예들에서, 인터페이스(208)는 PCIe 인터페이스일 수 있고, 이에 따라 PCIe 프로토콜들에 따라 메모리 관리 컴포넌트(214)와 논리 회로부(204) 사이에서 정보를 전달할 수 있다. 그러나, 실시예들은 그렇게 제한되지 않고, 일부 실시예들에서, 인터페이스(208)는 또 다른 적절한 프로토콜에 따라 기능하는 인터페이스 또는 버스일 수 있다.
가상 NIC 어드레스가 논리 회로부(204)에 저장된 후, 가상 NIC 어드레스에 대응하는 데이터는 영구 메모리 디바이스(216)에 기록될 수 있다. 예를 들어, 논리 회로부(204)에 저장된 가상 NIC 어드레스에 대응하는 데이터는 영구 메모리 디바이스(216)의 물리 어드레스 위치에 저장될 수 있다. 일부 실시예들에서, 영구 메모리 디바이스(216)로 그리고/또는 이로부터 데이터를 전송하는 것은 본원에서, 도 3 내지 도 5와 관련하여 설명되는 바와 같이, 하이퍼바이저에 의해 가능하게 될 수 있다.
데이터가 예를 들어, 컴퓨팅 시스템(201)에 배치된 가상 기계와 같은 호스트 컴퓨팅 디바이스에 의해 요청될 때, 요청은 메모리 관리 컴포넌트(214)에 의해 I/O 디바이스(210)로부터 인터페이스(208)를 통해 논리 회로부(204)로 리다이렉트될 수 있다. 영구 메모리 디바이스(216)에서의 데이터의 물리적 위치에 대응하는 가상 NIC 어드레스가 논리 회로부(204)의 어드레스 레지스터(206-N)에 저장되기 때문에, 논리 회로부(204)는 본원에서, 도 3 내지 도 5와 관련하여 더 상세히 설명되는 바와 같이, 하이퍼바이저와 관련하여, 영구 메모리 디바이스(216)로부터의 데이터의 리트리벌을 가능하게 할 수 있다.
일부 실시예들에서, 영구 메모리 디바이스(216)에 저장되었던 데이터가 영구 메모리 디바이스(216)로부터 전송될 때(예를 들어, 호스트 컴퓨팅 디바이스에 의해 영구 메모리 디바이스(216)에 저장되었던 데이터가 요청될 때), 데이터는 호스트 컴퓨팅 디바이스로 제공되기 전에 중간 메모리 컴포넌트(220) 및/또는 비영구 메모리 디바이스(230)로 전송될 수 있다. 예를 들어, 호스트 컴퓨팅 디바이스에 전송된 데이터가 (예를 들어, DDR 인터페이스를 통해) 결정론적 방식으로 전송될 수 있기 때문에, 데이터는 데이터 요청이 이행되기 전에, 중간 메모리 컴포넌트(220) 및/또는 비영구 메모리 디바이스(230)와 같은 DDR 버스를 사용하여 동작하는 메모리에 일시적으로 전송될 수 있다.
도 3은 본 개시의 다수의 실시예들에 따른 영구 메모리 디바이스(316) 상에 상주하는 논리 회로부(304)를 포함하는 컴퓨팅 시스템 형태의 기능 블록도이다. 논리 회로부(304)는 도 1 및 도 2에 도시된 논리 회로부(104/204)와 유사할 수 있다. 또한, 컴퓨팅 시스템(301)은 I/O 디바이스(310), 비영구 메모리 디바이스(330), 중간 메모리 컴포넌트(320), 메모리 관리 컴포넌트(314), 및 하이퍼바이저(312)를 포함할 수 있다.
도 3에 도시된 바와 같이, 컴퓨팅 시스템(301)은 논리 회로부(304)가 상주하는 영구 메모리 디바이스(316)를 포함할 수 있다. 영구 메모리 디바이스(316)는 메모리 셀들의 다수의 어레이들, 이를테면 어레이(322)을 포함할 수 있다. 어레이(322)는 영구 메모리 디바이스(316) 내부에 위치된 데이터 버스를 통해 논리 회로부(304)에 결합될 수 있다. 본원에서 설명되는 바와 같이, 어레이(322)는 저항성 메모리 셀들의 어레이, 상 변화 메모리 디바이스, 자기 선택 메모리 셀들의 어레이, 또는 다른 적절한 비휘발성 메모리 자원, 또는 이들의 조합들을 포함할 수 있다.
일부 실시예들에서, 컴퓨팅 시스템(301)은 소프트웨어 정의 데이터 센터, 클라우드 컴퓨팅 환경 등과 같은 다중 사용자 네트워크일 수 있다. 이러한 실시예들에서, 컴퓨팅 시스템은 하나 이상의 가상 기계(317)를 실행하게 하도록 구성될 수 있다. 예를 들어, 일부 실시예들에서, 하나 이상의 가상 기계(317)는 하이퍼바이저(312) 상에 배치될 수 있고, 다중 사용자 네트워크의 사용자들에 의해 액세스될 수 있다.
I/O 디바이스(310), 영구 메모리 디바이스(316), 비영구 메모리 디바이스(330), 중간 메모리 컴포넌트(320), 및 메모리 관리 컴포넌트(314)는 도 2에 도시된 I/O 디바이스(210), 영구 메모리 디바이스(216), 비영구 메모리 디바이스(230), 중간 메모리 컴포넌트(220), 및 메모리 관리 컴포넌트(214)와 유사할 수 있다. I/O 디바이스(310)와 영구 메모리 디바이스(316)(뿐만 아니라 논리 회로부(304)), 비영구 메모리 디바이스(330), 하이퍼바이저(312), 및 메모리 관리 컴포넌트(314) 사이의 통신은 도 2에 도시된 인터페이스(208)와 유사할 수 있는 인터페이스(308)를 통해 가능하게 될 수 있다.
도 2와 관련하여 상술한 바와 같이, 메모리 관리 컴포넌트(314)는 I/O 디바이스(310)와 연관된 판독 요청 또는 기록 요청이 논리 회로부(304)로 리다이렉트되게 할 수 있다. 논리 회로부(304)는 요청된 데이터에 대응하는 논리 어드레스를 생성 및/또는 저장할 수 있다. 상술한 바와 같이, 논리 회로부(304)는 요청된 데이터에 대응하는 논리 어드레스를 논리 회로부(304)의 어드레스 레지스터(306-N)와 같은 기본 어드레스 레지스터에 저장할 수 있다.
도 3에 도시된 바와 같이, 하이퍼바이저(312)는 인터페이스(308)를 통해 논리 회로부(304) 및/또는 I/O 디바이스(310)와 통신할 수 있다. 또한, 하이퍼바이저(312)는 영구 메모리 디바이스(316)(뿐만 아니라 논리 회로부(304)), 비영구 메모리 디바이스(330), 중간 메모리 컴포넌트(320), 및 메모리 관리 컴포넌트(314)와 통신할 수 있다. 하이퍼바이저는 본원에서 설명되는 동작들 및/또는 작업들을 수행하기 위한 특수 명령어들을 실행하도록 구성될 수 있다. 예를 들어, 하이퍼바이저(312)는 데이터가 영구 메모리 디바이스(216) 내부의 데이터 버스(218)를 통해 어레이(222)와 논리 회로부(204) 사이에서 전송되면서, 데이터가 인터페이스(308)를 통해 논리 회로부(304)와 I/O 디바이스(310) 사이에서 전송되게 하는 명령어들을 실행할 수 있다.
또한, 하이퍼바이저(312)는 데이터가 비영구 메모리 디바이스(330)에 저장되어야 하는지 또는 데이터가 영구 메모리 디바이스(316)에 전송되어야 하는지를 결정하기 위해 데이터 트래픽 및 데이터 트래픽 패턴들을 모니터링하기 위한 명령어들을 실행할 수 있다. 즉, 일부 실시예들에서, 하이퍼바이저(312)는 시간이 지남에 따라 사용자 데이터 요청 패턴들을 학습하고 그 패턴들에 기초하여 데이터의 부분들을 비영구 메모리 디바이스(330) 또는 영구 메모리 디바이스(316)에 선택적으로 저장하기 위한 명령어들을 실행할 수 있다. 이는 보다 빈번하게 액세스되는 데이터가 비영구 메모리 디바이스(330)에 저장될 수 있게 할 수 있는 한편, 덜 빈번하게 액세스되는 데이터는 영구 메모리 디바이스(316)에 저장될 수 있게 한다.
사용자가 최근에 덜 사용되었거나 최근에 덜 본 데이터보다 더 빈번하게 최근에 사용되거나 본 데이터에 액세스할 수 있기 때문에, 하이퍼바이저는 최근에 덜 사용되었거나 본 데이터가 영구 메모리 디바이스(316)에 저장되게 하고/하거나 최근에 더 액세스되었거나 본 데이터가 비영구 메모리 디바이스(330)에 저장되게 하는 특수 명령어들을 실행할 수 있다. 비제한적인 예에서, 사용자는 최근에 덜(예를 들어, 한 달 전에, 일 년 전에 등) 찍었던 사진들보다 더 빈번하게 최근에(예를 들어, 한 주 내에 등) 찍은 소셜 미디어 상의 사진들을 볼 수 있다. 이러한 정보에 기초하여, 하이퍼바이저(312)는 최근에 덜 보여지거나 찍힌 사진들이 영구 메모리 디바이스(316)에 저장되게 하기 위한 특수 명령어들을 실행할 수 있으며, 이에 의해 비영구 메모리 디바이스(330)에 저장되는 데이터의 양을 감소시킬 수 있다. 이는 컴퓨팅 시스템(301)을 프로비저닝하는 데 필요한 비영구 메모리의 전체 양을 감소시킬 수 있으며, 이에 의해 비용을 감소시키고 비영구 메모리 디바이스(330)에의 액세스를 더 많은 사용자들에게 허용할 수 있다.
동작 시에, 컴퓨팅 시스템(301)은 I/O 디바이스(310)로부터의 데이터 요청을 인터셉트하고 그 요청을 논리 회로부(304)로 리다이렉트하도록 구성될 수 있다. 일부 실시예들에서, 하이퍼바이저(312)는 데이터 요청에 대응하는 데이터가 비영구 메모리 디바이스(330)에 저장(또는 이로부터 리트리브)될 것인지 또는 영구 메모리 디바이스(316)에 저장될 것인지를 제어할 수 있다. 예를 들어, 하이퍼바이저(312)는 데이터가 영구 메모리 디바이스(316)에 저장(또는 이로부터 리트리브)되는지 또는 비영구 메모리 디바이스(330)에 저장(또는 이로부터 리트리브)되는지를 선택적으로 제어하기 위한 명령어들을 실행할 수 있다.
데이터가 영구 메모리 디바이스(316)에 저장(또는 리트리브)되는지 그리고/또는 비영구 메모리 디바이스(330)에 저장(또는 리트리브)되는지를 제어하는 것의 일부로서, 하이퍼바이저(312)는 메모리 관리 컴포넌트(314)로 하여금 데이터와 연관된 논리 어드레스들을 논리 회로부(304)로 리다이렉트되고 논리 회로부(304)의 어드레스 레지스터들(306)에 저장되도록 매핑하게 할 수 있다. 예를 들어, 하이퍼바이저(312)는 메모리 관리 컴포넌트(314)를 통해 데이터가 논리 회로부(304)로 선택적으로 리다이렉트될 것을 수반하는 판독 및 기록 요청들을 제어하기 위한 명령어들을 실행할 수 있다.
메모리 관리 컴포넌트(314)는 연접한 가상 어드레스들을 기저의 단편화된 물리 어드레스들에 매핑할 수 있다. 이에 따라, 일부 실시예들에서, 메모리 관리 컴포넌트(314)는 물리 어드레스들이 연접한는 요건 없이 가상 어드레스들이 물리 어드레스들에 매핑될 수 있게 할 수 있다. 나아가, 일부 실시예들에서, 메모리 관리 컴포넌트(314)는 자신들의 대응하는 물리적 메모리 공간을 어드레싱하기에 충분히 긴 메모리 어드레스들을 지원하지 않는 디바이스들이 메모리 관리 컴포넌트(314)에 어드레싱되는 것을 허용할 수 있다.
영구 메모리 디바이스(316)와 연관된 데이터 전송의 비결정론적 특성으로 인해, 논리 회로부(304)는 일부 실시예들에서, 영구 메모리 디바이스(316)로 또는 이로부터 데이터를 전송함에 있어서의 지연이 초래될 수 있음을 컴퓨팅 시스템(301)에 통지하도록 구성될 수 있다. 지연을 초기화하는 것의 일부로서, 논리 회로부(304)는 데이터 요청이 논리 회로부(304)로 리다이렉트될 때 컴퓨팅 시스템(301)에 대한 페이지 폴트(page fault) 핸들링을 제공할 수 있다. 일부 실시예들에서, 논리 회로부(304)는 영구 메모리 디바이스(316) 내로 또는 외로 데이터를 전송하기 위한 동작을 개시하기 위해 인터럽트를 생성하고 이를 하이퍼바이저(312)에 어써트할 수 있다. 예를 들어, 영구 메모리 디바이스(316)와 연관된 데이터 리트리벌 및 스토리지의 비결정론적 속성으로 인해, 논리 회로부(304)는 영구 메모리 디바이스(316)에 저장된 데이터의 전달이 요청될 때 하이퍼바이저 인터럽트(315)를 생성할 수 있다.
논리 회로부(304)에 의해 생성된 페이지 폴트 인터럽트에 응답하여, 하이퍼바이저(312)는 논리 회로부(304)로부터 데이터에 대응하는 정보를 리트리브할 수 있다. 예를 들어, 하이퍼바이저(312)는 논리 회로부(304)의 어드레스 레지스터들(306)에 저장된 데이터에 대응하는 논리 대 물리 어드레스 매핑들을 포함할 수 있는 NIC 액세스 데이터를 논리 회로부로부터 수신할 수 있다.
데이터가 영구 메모리 디바이스(316)에 저장되었으면, 비영구 메모리 디바이스(330)의 일부(예를 들어, 페이지, 블록 등)는 컴퓨팅 시스템(301)이 비영구 메모리 디바이스(330)로부터의 데이터에 액세스하려고 시도하지 않도록 논리 회로부(304)에 의해 액세스 불가능한 것으로사 마킹될 수 있다. 이는 영구 메모리 디바이스(316)에 저장되었던 데이터가 I/O 디바이스(310)에 의해 요청될 때 논리 회로부(304)에 의해 생성되고 하이퍼바이저(312)에 어써트될 수 있는 페이지 폴트에 의해 데이터 요청이 인터셉트될 수 있게 할 수 있다.
애플리케이션이 메모리 관리 유닛(예를 들어, 메모리 관리 컴포넌트(314))에 의해 매핑되지 않은 메모리의 페이지에 대한 액세스를 요청하는 것에 응답하여 페이지 폴트 예외가 발생되는 접근법들과는 대조적으로, 본 개시의 실시예들에서, 위에서 설명된 페이지 폴트는 데이터가 메모리 관리 컴포넌트(314)에서 논리 회로부(304)에 매핑되는 것 - 이는 차례로, 데이터를 영구 메모리 디바이스(316)에 매핑함 - 에 응답하여 논리 회로부(304)에 의해 생성될 수 있다.
일부 실시예들에서, 중간 메모리 컴포넌트(320)는 I/O 디바이스(310)에 의해 개시되는 데이터 요청에 응답하여 영구 메모리 디바이스(316)에 저장되는 데이터를 버퍼링하기 위해 사용될 수 있다. PCIe 인터페이스를 통해 데이터를 전달할 수 있는 영구 메모리 디바이스(316)와는 대조적으로, 중간 메모리 컴포넌트(320)는 데이터를 전달하기 위해 DDR 인터페이스를 채용할 수 있다. 이에 따라, 일부 실시예들에서, 중간 메모리 컴포넌트(320)는 결정론적 방식으로 동작할 수 있다. 예를 들어, 일부 실시예들에서, 영구 메모리 디바이스(316)에 저장되어 있는 요청된 데이터는 영구 메모리 디바이스(316)로부터 중간 메모리 컴포넌트(320)로 일시적으로 전송될 수 있고, 이어서 중간 메모리 컴포넌트(320)를 I/O 디바이스(310)에 결합하는 DDR 인터페이스를 통해 호스트 컴퓨팅 디바이스로 전송될 수 있다.
일부 실시예들에서, 중간 메모리 컴포넌트는 컴퓨팅 시스템(301)에 배치된 개별 메모리 컴포넌트(예를 들어, SRAM 캐시)를 포함할 수 있다. 그러나, 실시예들은 그렇게 제한되지 않고, 일부 실시예들에서, 중간 메모리 컴포넌트(320)는 데이터 요청에 응답하여 영구 메모리 디바이스(316)로부터 데이터를 전송하는 데 사용하기 위해 할당될 수 있는 비영구 메모리 디바이스(330)의 부분일 수 있다.
비제한적인 예에서, 논리 회로부(예를 들어, 논리 회로부(304))는 영구 메모리 디바이스(예를 들어, 영구 메모리 디바이스(316)) 상에 상주할 수 있다. 논리 회로부는 영구 메모리 디바이스에 저장된 데이터에 대응하는 논리 어드레스들을 저장하도록 구성된 어드레스 레지스터를 포함할 수 있다. 논리 회로부는 영구 메모리 디바이스에 저장된 데이터의 부분을 리트리브하기 위해 리다이렉트된 요청을 수신하도록 구성될 수 있다. 리다이렉트 이전에, 요청은 비영구 메모리 디바이스로 지향된다. 논리 회로부는 영구 메모리 디바이스에 저장된 데이터의 부분을 리트리브하기 위한 요청의 수신에 응답하여, 어드레스 레지스터에 저장된 논리 어드레스에 기초하여 데이터의 부분에 대응하는 물리 어드레스를 결정하도록 구성될 수 있다. 논리 회로부는 결정된 어드레스에 기초하여, 데이터가 영구 메모리 디바이스로부터 리트리브되게 하도록 구성될 수 있다.
일부 실시예들에서, 논리 회로부는 결정된 어드레스에 기초하여, 영구 메모리 디바이스로부터 저장된 데이터의 부분을 리트리브하기 위한 요청을 생성하도록 구성될 수 있다. 논리 회로부는 또한, 논리 회로부를 하이퍼바이저에 결합하는 인터페이스를 통해 요청(예를 들어, 이전에 생성된 요청)을 하이퍼바이저로 전송하도록 구성될 수 있다. 하이퍼바이저에서의 요청의 수신에 응답하여, 하이퍼바이저는 데이터의 부분의 리트리벌을 가능하게 하도록 구성될 수 있다. 논리 회로부는 인터럽트 신호를 생성하고 인터페이스를 통해, 영구 메모리 디바이스로부터 데이터의 부분을 리트리브하기 위한 요청의 일부로서 인터럽트 신호를 하이퍼바이저에 어써트하도록 구성될 수 있다. 요청을 하이퍼바이저로 전송하는 것에 응답하여, 논리 회로부는 영구 메모리 디바이스로부터의 데이터의 부분을 수신하고 데이터의 부분을 인터페이스를 통해 입력/출력(I/O) 디바이스로 전송하도록 구성될 수 있다.
일부 실시예들에서, 영구 메모리 디바이스는 다양한 비휘발성 메모리 자원들 중 하나 및/또는 이들의 조합일 수 있다. 예를 들어, 영구 메모리 디바이스는 저항성 메모리 셀들의 어레이, 상 변화 메모리 디바이스, 자기 선택 메모리 셀들의 어레이, 또는 다른 적절한 비휘발성 메모리 자원, 또는 이들의 조합들을 포함할 수 있다.
일부 실시예들서, 논리 회로부는 요청의 수신에 기초하여, 데이터의 부분이 비영구메모리 디바이스에 액세스불가능함을 나타내는 표시를 데이터의 부분과 연관시키도록 구성될 수 있다. 논리 회로부는 상태 기계를 포함할 수 있다.
또 다른 비제한적인 예에서, 시스템은 상주하는 논리 회로부를 갖는 영구 메모리 디바이스 및 영구 메모리 디바이스 및 논리 회로부에 결합된 메모리 관리 회로부를 포함할 수 있다. 논리 회로부는 영구 메모리 디바이스에 데이터를 기록하기 위해 메모리 관리 회로부로부터 리다이렉트된 요청의 수신에 응답하여, 영구 메모리 디바이스에 데이터를 기록하기 위한 요청을 하이퍼바이저로 전송하도록 구성될 수 있다. 논리 회로부는 또한 하이퍼바이저는 요청과 연관된 데이터가 논리 회로부로부터 영구 메모리 디바이스로 기록되게 하도록 구성될 수 있다. 논리 회로부는 영구 메모리 디바이스에 기록될 데이터를 저장하도록 구성된 버퍼(예를 들어, 본원에서 도 1에 도시된 기록 버퍼(105))를 포함할 수 있다.
일부 실시예들에서, 요청은 논리 회로부를 메모리 관리 회로부에 결합하는 인터페이스를 통해 논리 회로부에서 수신된다. 대조적으로(예를 들어, 인터페이스가 논리 회로부에서 요청을 수신하기 위해 이용되었다는 것), 논리 회로부는 데이터가 인터페이스와 상이한 데이터 버스를 통해 논리 회로부로부터 영구 메모리 디바이스로 기록되게 하도록 구성될 수 있다.
일부 실시예들에서, 논리 회로부는 영구 메모리 디바이스로부터 데이터를 리트리브하기 위해 메모리 관리 회로부로부터 리다이렉트된 요청을 수신하도록 구성된다. 요청의 수신에 응답하여, 논리 회로부는 영구 메모리 디바이스로부터 데이터를 리트리브하기 위한 요청을 하이퍼바이저로 전송하고 전송된 요청의 일부로서 인터럽트 신호를 하이퍼바이저에 어써트하도록 구성될 수 있다.
전송된 데이터의 수신에 응답하여, 하이퍼바이저는 데이터가 영구 메모리 디바이스로부터 리트리브되게 하고, 영구 메모리 디바이스를 비영구 메모리 디바이스에 결합하는 인터페이스를 통해 비영구 메모리 디바이스로 전송되게 하도록 구성될 수 있다. 나아가, 영구 메모리 디바이스로부터 리트리브된 데이터의 수신에 응답하여, 논리 회로부는 영구 메모리 디바이스를 입력/출력(I/O) 디바이스에 결합하는 인터페이스를 통해 데이터를 I/O 디바이스로 전송하도록 구성될 수 있다.
일부 실시예들에서, 논리 회로부는 입력/출력(I/O) 디바이스로부터, 가상 I/O 디바이스 액세스 정보를 수신하고 영구 메모리 디바이스에 데이터를 기록하기 위한 요청의 일부로서 가상 I/O 디바이스 액세스 정보를 하이퍼바이저로 전송하도록 구성될 수 있다. 논리 회로부는 가상 I/O 디바이스 액세스 정보를 저장하도록 구성된 메모리 셀들의 어레이를 포함할 수 있다.
도 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)일 수 있다.
블록(449)에서, 하이퍼바이저는 요청된 데이터에 대응하는 I/O 디바이스 데이터를 논리 회로부에 기록할 수 있다. I/O 디바이스 데이터는 상술한 바와 같이, 논리 회로부의 어드레스 레지스터에 저장될 수 있다. 일부 실시예들에서, 하이퍼바이저는 또한 데이터를 I/O 디바이스로 전송하기 전에, 논리 회로부로부터 본원에서, 도 2 및 도 3에 도시된 중간 메모리 컴포넌트(220/320)와 같은 중간 메모리 컴포넌트로 I/O 디바이스 데이터를 전송할 수 있다.
블록(450)에서, 논리 회로부는 데이터 판독 트랜잭션을 완료할 수 있다. 예를 들어, 논리 회로부는 데이터 판독 요청이 이행되었고, 데이터가 결정론적 인터페이스를 통해 전송되어 데이터 판독 요청을 이행할 것임을 I/O 디바이스에게 통지하기 위한 커맨드를 I/O 디바이스에 전송할 수 있다.
블록(451)에서, 하이퍼바이저는 I/O 디바이스 어드레스를 비영구 메모리 디바이스로 지향시키도록 메모리 관리 컴포넌트를 업데이트할 수 있다. 예를 들어, 블록(450)에서 데이터가 영구 메모리 디바이스로부터 비영구 메모리 디바이스(예를 들어, 비영구 메모리 디바이스 및/또는 중간 메모리 컴포넌트)로 전송되었기 때문에, 하이퍼바이저는 요청된 데이터에 대응하는 어드레스가 비영구 메모리 디바이스에 매핑되도록 메모리 관리 컴포넌트를 업데이트할 수 있다. 일부 실시예들에서, 어드레스는 가상 기계 물리 어드레스와 같은 물리 어드레스들일 수 있다.
블록(452)에서, 하이퍼바이저는 데이터 요청을 만족시키기 위해 어느 메모리가 사용되었는지를 레코딩할 수 있다. 예를 들어, 하이퍼바이저는 데이터 요청이 I/O 디바이스로부터 수신되었던 시간에 데이터가 영구 메모리 디바이스에 저장되었음을 레코딩할 수 있다. 일부 실시예들에서, 하이퍼바이저는 영구 메모리 디바이스 또는 비영구 메모리 디바이스에 데이터 기록들을 선택적으로 지향시키기 위해 시간이 지남에 따른 정보를 사용할 수 있다.
도 5는 본 개시의 다수의 실시예들에 따른 데이터 기록 동작을 나타내는 흐름도(560)이다. 블록(561)에서, 도 2 및 도 3에 도시된 I/O 디바이스(210/310)와 같은 I/O 디바이스는 데이터 요청에 대응하는 어드레스를 사용하여 기록 동작을 개시할 수 있다. 어드레스는 가상 기계 물리 어드레스와 같은 물리 어드레스일 수 있다. 데이터 기록 요청은 데이터가 저장될 논리 어드레스에 대응하는 특정 가상 어드레스와 연관된 데이터를 기록하기 위한 요청을 포함할 수 있다. 물리 어드레스는 영구 메모리 디바이스(예를 들어, 본원에서, 도 2 및 도 3에 도시된 영구 메모리 디바이스(216/316))에서의 위치 또는 비영구 메모리(예를 들어, 본원에서, 도 2 및 도 3에 도시된 비영구 메모리(230/330)에서의 위치에 대응할 수 있다. 예를 들어, 물리적 어드레스는 영구 메모리 디바이스의 메모리 셀들의 다수의 어레이들(예를 들어, 본원에서, 도 2 및 도 3에 도시된 어레이(222/322))에 대응할 수 있다.
데이터가 비영구 메모리 디바이스에 저장될 경우, 데이터가 비영구 메모리 디바이스 게록될 수 있고, 데이터 기록 요청이 이행될 수 있다. 그러나, 데이터가 영구 메모리 디바이스에 저장될 경우, 블록(422)에서, 메모리 관리 컴포넌트(예를 들어, 본원에서, 도 2 및 도 3에 도시된 메모리 관리 컴포넌트(214/314))는 데이터 기록 요청을 인터페이스(예를 들어, 도 2 및 도 3에 도시된 인터페이스(208/308))를 통해 논리 회로부(예를 들어, 본원에서, 도 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 디바이스 가상 어드레스들을 비영구 메모리 디바이스로 지향시키도록 메모리 관리 컴포넌트를 업데이트할 수 있다. 예를 들어, 블록(567)에서 데이터가 비영구 메모리 디바이스에 기록되는 경우, 블록들(568)에서, 하이퍼바이저는 데이터와 연관되고 메모리 관리 컴포넌트에 의해 저장된 가상 어드레스들이 데이터가 저장된 비영구 메모리 디바이스 내의 물리 어드레스들에 매핑되도록 메모리 관리 컴포넌트에 의해 저장된 가상 어드레스들을 업데이트할 수 있다.
도 6은 본 개시의 다수의 실시예들에 따른 메모리 내의 논리 회로부에 대한 예시적인 방법(670)을 나타내는 흐름도이다. 블록(672)에서, 방법(670)은 인터페이스(예를 들어, 본원에서, 도 2 및 도 3에 도시된 인터페이스(208/308))를 통해 영구 메모리 디바이스로부터 데이터를 리트리브하기 위한 리다이렉트된 요청을 영구 메모리 디바이스(예를 들어, 본원에서, 도 2 및 도 3에 도시된 영구 메모리 디바이스(216/316)) 상에 상주하는 논리 회로부(예를 들어, 본원에서, 도 1 내지 도 3에 도시된 논리 회로부(104/204/304))에서 수신하는 단계를 포함할 수 있다. 요청은 리다이렉트 이전에 원래 비영구 메모리 디바이스(예를 들어, 본원에서, 도 2 및 도 3에 도시된 비영구 메모리 디바이스(230/330))로 지향될 수 있다.
블록(674)에서, 방법(670)은 데이터를 리트리브하기 위한 요청을 영구 메모리 디바이스로부터 논리 회로부에 결합된 하이퍼바이저(예를 들어, 본원에서, 도 3에 도시된 하이퍼바이저(312))로 전송하는 단계를 포함할 수 있다. 블록(676)에서, 방법(670)은 영구 메모리 디바이스로부터 리트리브된 데이터를 논리 회로부 또는 비영구 메모리 디바이스(예를 들어, 인터페이스를 통해 비영구 메모리 디바이스)로, 또는 양자로 전송하는 단계를 포함할 수 있다. 영구 메모리 디바이스(예를 들어, 영구 메모리 디바이스의 메모리 셀들의 어레이)로부터 논리 회로부로의 데이터는 영구 메모리 디바이스(예를 들어, 이의 어레이)를 논리 회로부에 결합하는 데이터 버스를 통해 리트리브될 수 있다.
하이퍼바이저로 리트리브된 데이터는 계층적 메모리 시스템의 다양한 컴포넌트들로 전달될 수 있다. 예를 들어, 일부 실시예들에서, 영구 메모리 디바이스로부터 리트리브된 데이터는 논리 회로부를 I/O 디바이스에 결합하는 인터페이스를 통해 입력/출력(I/O) 디바이스(예를 들어, 본원에서, 도 2 및 도 3에 도시된 I/O 디바이스(210/310))로 전송될 수 있다.
일부 실시예들에서, 방법(670)은 논리 회로부에 의해, 데이터를 영구 메모리 디바이스로부터 데이터를 리트리브하기 위한 요청의 수신에 기초하여 데이터가 비영구 메모리 디바이스에 액세스 불가능함을 나타내는 표시를 데이터와 연관시키는 단계를 더 포함할 수 있다. 일부 실시예들에서, 방법(670)은 논리 회로부에 의해, 요청을 수신하는 것에 응답하여 데이터에 대응하는 논리 어드레스를 생성하는 단계; 및 논리 회로부 내의 어드레스 레지스터에 논리 어드레스를 저장하는 단계를 더 포함할 수 있다.
본 명세서에서 구체적인 실시예들이 예시되고 설명되었지만, 해당 기술분야의 통상의 기술자들은 동일한 결과들을 달성하도록 계산된 배열이 제시된 구체적인 실시예들을 대체할 수 있다고 이해할 것이다. 본 개시는 본 개시의 하나 이상의 실시예의 개조 또는 변형을 포괄하는 것으로 의도된다. 상기한 설명은 제한적인 방식이 아니라, 예시적인 방식으로 이루어진 것으로 이해되어야 한다. 상기한 설명을 검토할 때 해당 기술분야의 통상의 기술자들에게 상기한 실시예들, 및 본 명세서에서 구체적으로 설명되지 않은 다른 실시예들의 조합이 명백해질 것이다. 본 개시의 하나 이상의 실시예의 범위는 상기한 구조들 및 프로세스들이 사용되는 다른 적용예들을 포함한다. 따라서, 본 개시의 하나 이상의 실시예의 범위는 첨부된 청구항들을 참조하여, 이러한 청구항들에 부여되는 균등물들의 전체 범위와 함께 결정되어야 한다.
앞에서의 발명을 실시하기 위한 구체적인 내용에서, 본 개시를 간략화하기 위해 몇몇 피처들이 하나의 실시예에서 함께 그룹화된다. 본 개시의 방법은 본 개시의 개시된 실시예들이 각 청구항에 명시적으로 나열된 것보다 더 많은 특징들을 사용해야 한다는 의도를 반영하는 것으로서 해석되지 않아야 한다. 더 정확히 말하면, 다음의 청구항들이 반영하는 바와 같이, 본 발명의 요지는 하나의 개시된 실시예의 모든 특징들보다 더 적은 특징들에 있다. 이에 따라, 다음의 청구항들은 이에 의해 발명을 실시하기 위한 구체적인 내용으로 통합되며, 각 청구항은 별개의 실시예로서 독립적이다.

Claims (20)

  1. 장치로서, 영구 메모리 디바이스; 및 상기 영구 메모리 디바이스 상에 상주하고, 상기 영구 메모리 디바이스에 저장된 데이터에 대응하는 논리 어드레스들을 저장하도록 구성된 어드레스 레지스터를 포함하는 논리 회로부를 포함하며, 상기 논리 회로부는: 상기 영구 메모리 디바이스에 저장된 상기 데이터의 부분을 리트리브(retrieve)하기 위해 리다이렉트된(redirected) 요청을 수신하도록 - 리다이렉트 이전에, 상기 요청은 비영구 메모리 디바이스로 지향됨 -; 상기 영구 메모리 디바이스에 저장된 상기 데이터의 부분을 리트리브하기 위한 상기 요청의 수신에 응답하여, 상기 어드레스 레지스터에 저장된 상기 논리 어드레스에 기초하여 상기 데이터의 부분에 대응하는 물리 어드레스를 결정하도록; 그리고 상기 결정된 물리 어드레스에 기초하여, 상기 데이터가 상기 영구 메모리 디바이스로부터 리트리브되게 하도록 구성된 것인, 장치.
  2. 제1항에 있어서, 상기 논리 회로부는: 상기 결정된 물리 어드레스에 기초하여, 상기 영구 메모리 디바이스로부터 저장된 상기 데이터의 부분을 리트리브하기 위한 요청을 생성하도록; 상기 논리 회로부를 하이퍼바이저에 결합하는 인터페이스를 통해 상기 하이퍼바이저로 상기 요청을 전송하도록 구성되고; 상기 하이퍼바이저는 상기 하이퍼바이저에서의 상기 요청의 수신에 응답하여 상기 데이터의 부분의 리트리벌을 용이하게 하도록 구성된 것인, 장치.
  3. 제2항에 있어서, 상기 논리 회로부는: 상기 요청을 상기 하이퍼바이저로 전송하는 것에 응답하여, 상기 영구 메모리 디바이스로부터 상기 데이터의 부분을 수신하도록; 그리고 상기 데이터의 부분을 상기 인터페이스를 통해 입력/출력(I/O) 디바이스로 전송하도록 구성된 것인, 장치.
  4. 제2항에 있어서, 상기 논리 회로부는: 인터럽트 신호를 생성하도록; 그리고
    상기 인터페이스를 통해, 상기 영구 메모리 디바이스로부터 상기 데이터의 부분을 리트리브하기 위한 상기 요청의 일부로서 상기 인터럽트 신호를 상기 하이퍼바이저에 어써트(assert)하도록 구성된 것인, 장치.
  5. 제1항에 있어서, 상기 영구 메모리 디바이스는 저항성 메모리 셀들의 어레이, 상 변화 메모리 디바이스, 자기 선택 메모리 셀들의 어레이, 또는 이들의 조합들을 포함하는 것인, 장치.
  6. 제1항에 있어서, 상기 논리 회로부는 상기 요청의 수신에 기초하여, 상기 데이터의 부분이 상기 비영구메모리 디바이스에 액세스 불가능함을 나타내는 표시를 상기 데이터의 부분과 연관시키도록 구성된 것인, 장치.
  7. 제1항에 있어서, 상기 논리 회로부는 상태 기계를 포함하는 것인, 장치.
  8. 시스템으로서, 상주하는 논리 회로부를 갖는 영구 메모리 디바이스; 및
    상기 영구 메모리 디바이스 및 상기 논리 회로부에 결합된 메모리 관리 회로부를 포함하며; 상기 논리 회로부는: 상기 영구 메모리 디바이스에 데이터를 기록하기 위해 상기 메모리 관리 회로부로부터 리다이렉트된 요청의 수신에 응답하여, 상기 영구 메모리 디바이스에 상기 데이터를 기록하기 위한 요청을 하이퍼바이저로 전송하도록 구성되고; 상기 하이퍼바이저는 상기 요청과 연관된 상기 데이터가 상기 논리 회로부로부터 상기 영구 메모리 디바이스로 기록되게 하도록 구성되고; 상기 요청은 상기 논리 회로부를 상기 메모리 관리 회로부에 결합하는 인터페이스를 통해 상기 논리 회로부에 의해 수신되며; 상기 논리 회로부는 상기 데이터가 상기 인터페이스와 상이한 데이터 버스를 통해 상기 논리 회로부로부터 상기 영구 메모리 디바이스로 기록되게 하도록 구성된 것인, 시스템.
  9. 제8항에 있어서, 상기 논리 회로부는 상기 영구 메모리 디바이스에 기록될 상기 데이터를 저장하도록 구성된 버퍼를 포함하는 것인, 시스템.
  10. 방법으로서, 영구 메모리 디바이스 상에 상주하는 논리 회로부에서, 인터페이스를 통해 상기 영구 메모리 디바이스로부터 데이터를 리트리브하기 위한 리다이렉트된 요청을 수신하는 단계 - 리다이렉트 이전에, 요청은 비영구 메모리 디바이스로 지향됨 - ; 상기 영구 메모리 디바이스로부터 상기 데이터를 리트리브하기 위한 요청을 상기 논리 회로부에 결합된 하이퍼바이저로 전송하는 단계; 및 상기 영구 메모리 디바이스로부터 리트리브된 상기 데이터를 상기 인터페이스를 통해 상기 논리 회로부 또는 상기 비영구 메모리 디바이스, 또는 양자로 전송하는 단계를 포함하며; 상기 인터페이스를 통해 상기 데이터를 전송하기 전에, 상기 영구 메모리 디바이스를 상기 논리 회로부에 결합하는 데이터 버스를 통해 상기 데이터가 상기 영구 메모리 디바이스로부터 상기 논리 회로부로 리트리브되게 하는 단계를 더 포함하는, 방법.
  11. 시스템으로서, 상주하는 논리 회로부를 갖는 영구 메모리 디바이스; 및 상기 영구 메모리 디바이스 및 상기 논리 회로부에 결합된 메모리 관리 회로부를 포함하며; 상기 논리 회로부는 상기 영구 메모리 디바이스에 데이터를 기록하기 위해 상기 메모리 관리 회로부로부터 리다이렉트된 요청의 수신에 응답하여, 상기 영구 메모리 디바이스에 상기 데이터를 기록하기 위한 요청을 하이퍼바이저로 전송하도록 구성되고; 상기 하이퍼바이저는 상기 요청과 연관된 상기 데이터가 상기 논리 회로부로부터 상기 영구 메모리 디바이스로 기록되게 하도록; 상기 영구 메모리 디바이스로부터 상기 데이터를 리트리브하기 위해 상기 메모리 관리 회로부로부터 리다이렉트된 요청을 수신하도록; 상기 영구 메모리 디바이스로부터 상기 데이터를 리트리브하기 위한 요청을 상기 하이퍼바이저로 전송하도록; 그리고 상기 전송된 요청의 일부로서 인터럽트 신호를 상기 하이퍼바이저에 어써트하도록 구성된 것인, 시스템.
  12. 제11항에 있어서, 상기 하이퍼바이저는 상기 전송된 요청의 수신에 응답하여, 상기 데이터가 상기 영구 메모리 디바이스로부터 리트리브되게 하고, 상기 영구 메모리 디바이스를 비영구 메모리 디바이스에 결합하는 인터페이스를 통해 비영구 메모리 디바이스로 전송되게 하도록 구성된 것인, 시스템.
  13. 제11항에 있어서, 상기 논리 회로부는 상기 영구 메모리 디바이스로부터 리트리브된 상기 데이터의 수신에 응답하여, 상기 영구 메모리 디바이스를 입력/출력(I/O) 디바이스에 결합하는 인터페이스를 통해 상기 I/O 디바이스로 상기 데이터를 전송하도록 구성된 것인, 시스템.
  14. 시스템으로서, 상주하는 논리 회로부를 갖는 영구 메모리 디바이스; 및 상기 영구 메모리 디바이스 및 상기 논리 회로부에 결합된 메모리 관리 회로부를 포함하며; 상기 논리 회로부는 상기 영구 메모리 디바이스에 데이터를 기록하기 위해 상기 메모리 관리 회로부로부터 리다이렉트된 요청의 수신에 응답하여, 상기 영구 메모리 디바이스에 상기 데이터를 기록하기 위한 요청을 하이퍼바이저로 전송하도록 구성되고, 상기 하이퍼바이저는 상기 요청과 연관된 상기 데이터가 상기 논리 회로부로부터 상기 영구 메모리 디바이스로 기록되게 하도록 구성되며, 상기 논리 회로부는: 입력/출력(I/O) 디바이스로부터, 가상 I/O 디바이스 액세스 정보를 수신하도록; 그리고 상기 영구 메모리 디바이스에 상기 데이터를 기록하기 위한 상기 요청의 일부로서 상기 가상 I/O 디바이스 액세스 정보를 상기 하이퍼바이저로 전송하도록 더 구성된 것인, 시스템.
  15. 제14항에 있어서, 상기 논리 회로부는 상기 가상 I/O 디바이스 액세스 정보를 저장하도록 구성된 메모리 셀들의 어레이를 포함하는 것인, 시스템.
  16. 방법으로서, 영구 메모리 디바이스 상에 상주하는 논리 회로부에서, 인터페이스를 통해 상기 영구 메모리 디바이스로부터 데이터를 리트리브하기 위한 리다이렉트된 요청을 수신하는 단계 - 리다이렉트 이전에, 요청은 비영구 메모리 디바이스로 지향됨 - ; 상기 영구 메모리 디바이스로부터 상기 데이터를 리트리브하기 위한 요청을 상기 논리 회로부에 결합된 하이퍼바이저로 전송하는 단계; 상기 영구 메모리 디바이스로부터 리트리브된 상기 데이터를 상기 인터페이스를 통해 상기 논리 회로부 또는 상기 비영구 메모리 디바이스, 또는 양자로 전송하는 단계; 및 상기 논리 회로부를 입력/출력(I/O) 디바이스에 결합하는 상기 인터페이스를 통해 상기 영구 메모리 디바이스로부터 리트리브된 상기 데이터를 상기 I/O 디바이스로 전송하는 단계를 포함하는, 방법.
  17. 방법으로서, 영구 메모리 디바이스 상에 상주하는 논리 회로부에서, 인터페이스를 통해 상기 영구 메모리 디바이스로부터 데이터를 리트리브하기 위한 리다이렉트된 요청을 수신하는 단계 - 리다이렉트 이전에, 요청은 비영구 메모리 디바이스로 지향됨 - ; 상기 영구 메모리 디바이스로부터 상기 데이터를 리트리브하기 위한 요청을 상기 논리 회로부에 결합된 하이퍼바이저로 전송하는 단계; 상기 영구 메모리 디바이스로부터 리트리브된 상기 데이터를 상기 인터페이스를 통해 상기 논리 회로부 또는 상기 비영구 메모리 디바이스, 또는 양자로 전송하는 단계; 및 상기 논리 회로부에 의해, 상기 영구 메모리 디바이스로부터 상기 데이터를 리트리브하기 위한 상기 요청의 수신에 기초하여 상기 데이터가 상기 비영구 메모리 디바이스에 액세스 불가능함을 나타내는 표시를 상기 데이터와 연관시키는 단계를 포함하는, 방법.
  18. 방법으로서, 영구 메모리 디바이스 상에 상주하는 논리 회로부에서, 인터페이스를 통해 상기 영구 메모리 디바이스로부터 데이터를 리트리브하기 위한 리다이렉트된 요청을 수신하는 단계 - 리다이렉트 이전에, 요청은 비영구 메모리 디바이스로 지향됨 - ; 상기 영구 메모리 디바이스로부터 상기 데이터를 리트리브하기 위한 요청을 상기 논리 회로부에 결합된 하이퍼바이저로 전송하는 단계; 상기 영구 메모리 디바이스로부터 리트리브된 상기 데이터를 상기 인터페이스를 통해 상기 논리 회로부 또는 상기 비영구 메모리 디바이스, 또는 양자로 전송하는 단계; 상기 논리 회로부에 의해, 상기 요청을 수신하는 것에 응답하여 상기 데이터에 대응하는 논리 어드레스를 생성하는 단계; 및 상기 논리 회로부 내의 어드레스 레지스터에 상기 논리 어드레스를 저장하는 단계를 포함하는, 방법.
  19. 삭제
  20. 삭제
KR1020227009499A 2019-08-22 2020-08-21 계층적 메모리 시스템 KR102444562B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/547,667 US11016903B2 (en) 2019-08-22 2019-08-22 Hierarchical memory systems
US16/547,667 2019-08-22
PCT/US2020/047334 WO2021035116A1 (en) 2019-08-22 2020-08-21 Hierarchical memory systems

Publications (2)

Publication Number Publication Date
KR20220044606A KR20220044606A (ko) 2022-04-08
KR102444562B1 true KR102444562B1 (ko) 2022-09-20

Family

ID=74647550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227009499A KR102444562B1 (ko) 2019-08-22 2020-08-21 계층적 메모리 시스템

Country Status (5)

Country Link
US (2) US11016903B2 (ko)
EP (1) EP4018323A4 (ko)
KR (1) KR102444562B1 (ko)
CN (1) CN114258534B (ko)
WO (1) WO2021035116A1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156988A1 (en) 2001-03-22 2002-10-24 Matsushita Electric Industrial Co., Ltd. Memory device
US20120047313A1 (en) 2010-08-19 2012-02-23 Microsoft Corporation Hierarchical memory management in virtualized systems for non-volatile memory models
US20150261686A1 (en) 2014-03-14 2015-09-17 Qualcomm Incorporated Systems and methods for supporting demand paging for subsystems in a portable computing environment with restricted memory resources
US20160335110A1 (en) 2015-03-31 2016-11-17 Fireeye, Inc. Selective virtualization for security threat detection
US20170031946A1 (en) 2015-07-31 2017-02-02 Atlantis Computing, Inc. Method and apparatus for maintaining data consistency in an in-place-update file system with data deduplication
US20180095882A1 (en) 2016-09-30 2018-04-05 Oracle International Corporation Modeling processor shared memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537350A (en) 1993-09-10 1996-07-16 Intel Corporation Method and apparatus for sequential programming of the bits in a word of a flash EEPROM memory array
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
US7913055B2 (en) 2006-11-04 2011-03-22 Virident Systems Inc. Seamless application access to hybrid main memory
WO2010135430A1 (en) 2009-05-19 2010-11-25 Vmware, Inc. Shortcut input/output in virtual machine systems
KR101081907B1 (ko) 2010-01-05 2011-11-09 성균관대학교산학협력단 가상화 장치
US8892802B2 (en) 2012-01-01 2014-11-18 International Business Machines Corporation Enhancing interrupt handling in a virtual environment
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
US9921750B2 (en) * 2014-11-20 2018-03-20 Samsung Electronics Co., Ltd. Solid state drive (SSD) memory cache occupancy prediction
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
US20170220592A1 (en) 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc Modular data operations system
US20190042445A1 (en) * 2017-08-07 2019-02-07 Intel Corporation Technologies for caching persistent two-level memory data
US11030132B2 (en) 2018-02-05 2021-06-08 Micron Technology, Inc. Synchronous memory bus access to storage media
US10635598B2 (en) 2018-03-30 2020-04-28 Intel Corporation Memory-addressed maps for persistent storage device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156988A1 (en) 2001-03-22 2002-10-24 Matsushita Electric Industrial Co., Ltd. Memory device
US20120047313A1 (en) 2010-08-19 2012-02-23 Microsoft Corporation Hierarchical memory management in virtualized systems for non-volatile memory models
US20150261686A1 (en) 2014-03-14 2015-09-17 Qualcomm Incorporated Systems and methods for supporting demand paging for subsystems in a portable computing environment with restricted memory resources
US20160335110A1 (en) 2015-03-31 2016-11-17 Fireeye, Inc. Selective virtualization for security threat detection
US20170031946A1 (en) 2015-07-31 2017-02-02 Atlantis Computing, Inc. Method and apparatus for maintaining data consistency in an in-place-update file system with data deduplication
US20180095882A1 (en) 2016-09-30 2018-04-05 Oracle International Corporation Modeling processor shared memory

Also Published As

Publication number Publication date
CN114258534A (zh) 2022-03-29
US20210056040A1 (en) 2021-02-25
KR20220044606A (ko) 2022-04-08
EP4018323A1 (en) 2022-06-29
US11016903B2 (en) 2021-05-25
US11537525B2 (en) 2022-12-27
EP4018323A4 (en) 2023-09-20
WO2021035116A1 (en) 2021-02-25
CN114258534B (zh) 2022-11-18
US20210248083A1 (en) 2021-08-12

Similar Documents

Publication Publication Date Title
US11513969B2 (en) Hierarchical memory systems
KR20220050177A (ko) 3단의 계층적 메모리 시스템
KR102440665B1 (ko) 계층적 메모리 장치
KR20220052347A (ko) 계층적 메모리 시스템
KR102444562B1 (ko) 계층적 메모리 시스템
US11614894B2 (en) Hierarchical memory systems
CN114303124B (zh) 分级存储器设备
CN114341818B (zh) 分级存储器设备
US11106595B2 (en) Hierarchical memory systems
US20220019542A1 (en) Hierarchical memory systems

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant