KR20190024957A - 메모리 버스 상의 스토리지 및 멀티 레벨 데이터 캐시 - Google Patents
메모리 버스 상의 스토리지 및 멀티 레벨 데이터 캐시 Download PDFInfo
- Publication number
- KR20190024957A KR20190024957A KR1020197000456A KR20197000456A KR20190024957A KR 20190024957 A KR20190024957 A KR 20190024957A KR 1020197000456 A KR1020197000456 A KR 1020197000456A KR 20197000456 A KR20197000456 A KR 20197000456A KR 20190024957 A KR20190024957 A KR 20190024957A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- mass storage
- nvd
- nvdimm
- computing system
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
본 발명은 메모리 버스 및 메모리 버스에 연결된 메모리 스토리지 조합에 상호연결된 프로세서 어셈블리를 갖는 시스템을 제공한다. 메모리 스토리지 조합은 메모리 버스를 통해 랜덤 액세스 메모리(RAM) 기반 데이터 스토리지와 비휘발성 대용량 데이터 스토리지의 조합을 액세스하도록 허용하기 위해 구성된다.
Description
본 발명은 컴퓨터용 메모리 및 데이터 스토리지에 관한 것이다.
도 1은 네 개의 코어(Core1 - Core4)를 갖는 프로세서(110)를 구비한 PC 스테이션 장치(100) 또는 서버용 전형적인 아키텍처(architecture)의 예를 도시한다. 프로세서 내부에서, 각 코어는 그의 전용 캐시(Core1-L1 - Core4-L1, Core1-L2 - Core4-L2) 및 공유된 캐시(이 예에서, L3)를 가진다. 모든 이들 내부 메모리 소자는 전형적으로 (예를 들어) SRAM 기술에 기초한다. SRAM은 매우 낮은 레이턴시(latency), 매우 높은 속도 및 무제한의 내구성을 제공한다. 그러나, 이것의 구현은 비싸며, 제한된 용량을 제공하며, 그리고 휘발성(정전시 데이터가 손실됨)이다.
프로세서(100)로부터 떨어져서, 동적 랜덤 어세스 메모리(DRAM)(120)은 현재 액세스가능한 가장 빠른 작동 메모리이다. DRAM 구성요소는 듀얼 인라인 메모리 모듈(DIMM), 비휘발성 DIMM(NVDIMM), 또는 숙련된 기술자에게 명백한 다른 맞춤형 메모리 장치와 같은 다양한 폼 팩터에서 이용 가능하다. 도 1에 도시된 예시적인 컴퓨팅 장치(100)에서, 프로세서(110)는 종래의 노스 브리지(North Bridge)(124)를 포함하는 듀얼 데이터 속도(DDR) 인터페이스(122)를 통해 DRAM 구성요소에 액세스한다. DRAM은 스태틱 RAM(SRAM)과 비교하여 면적면에서 매우 효율적이므로 SRAM에 비해 낮은 단가에서 상대적으로 높은 용량을 제공한다. DRAM은 또한 낮은 레이턴시, 높은 속도, 높은 내구성을 제공하며, SRAM보다 상대적으로 비용이 저렴하다. 그러나, DRAM은 다른 저장 매체와 비교할 때 여전히 가격이 비싸고 휘발성이다.
DRAM 의외에도, 플래시, 자기 및/또는 광학 스토리지와 같은 다양한 스토리지 메모리 기술이 일반적으로 “기존의 대용량 스토리지”(140)라고 하는 대규모 비휘발성 데이터 스토리지에 사용가능하다. 기존의 대량 스토리지 용량은 테라바이트(TB), 페타바이트(PB) 이상에 이를 수 있다. 프로세서는 도 1에 도시된 I/O 인터커넥트(130) 및 관련 사우스 브리지(132)를 통해 기존의 대용량 저장 장치에 액세스한다. I/O 인터커넥트는 개별 대용량 스토리지 장치(142, 144, 146, 148, 149)에 도달하기 위해 Gen-Z, 이더넷, SATA, PCIe, SAS, SCSI, iSCSI 등과 같은 몇몇의 버스 기반 인터페이스 아키텍처를 추가로 제공한다. 기존의 대용량 스토리지 장치는 비휘발성 메모리의 대용량을 기가바이트(GB)당 저렴한 비용으로 제공한다. 하지만, 이러한 대용량 스토리지 장치는 높은 레이턴시, 느린 속도 및 제한된 내구성을 가진다.
광범위하게 “스토리지 클래스 메모리”라고 불리는 새로운 디지털 전자 메모리 구현은 거의 모든 메트릭스(metrics)에서 DRAM과 대용량 스토리지 메모리 사이에 있도록 설계되었다. 여기에는 저항성 RAM(ReRAM), 상변화 메모리(PCM) 등과 같은 최신 기술이 포함된다. 메모리 버스(122) 및 I/O 인터커넥트(130)에 대해 도 1에 도시되고 기술된 토폴로지(topology)에 부가하여, 추가 예시적인 토폴로지가 도 2 및 3의 컴퓨터 장치(200, 300)에 각각 제공된다. 전술한 바와 같이, 도 1의 장치(100)에서, 메모리 버스(더블 데이터율 프로토콜(DDR) 사용)(120) 및 I/O 인터커넥트(130)는 노스 브리지(124) 및 사우스 브리지(South Bridge)(132)와 각각 연관된 개별 칩셋/다이에서 각각 인스턴스화(instantiate) 된다.
따라서, 도 2의 예시적인 장치(200)에서, (버스 아키텍처(250)를 사용하여 대용량 스토리지(240)에 연결된) I/O 인터커넥트(230)는 외부 I/O 칩셋(234)에서 유래(orginate)하는 반면, 메모리 버스(222)는 프로세서(210)로부터 직접 유래한다. 연관된 I/O 연결부(212, 214)는 각각 I/O 칩셋(234) 및 메모리 버스(222)를 연결 및 제어하며, 이 예에서 프로세서(210)의 다이 상에 제공된다. 메모리 버스(222)는 종래의 방식으로 DRAM(DIMM 및 NVDIMM)(220)에 액세스한다.
도 3의 예시적인 장치(300)에서, 모든 인터페이스(I/O 인터커넥트(330), SAS(352), 이더넷(354), SATA(356), PCIe(359), 기타(359) 및 메모리 제어기(314))는 프로세서(310)의 다이 내에서 직접 인스턴스화 된다. 이들은 전술한 바와 같이 다양한 유형의 기존 대용량 데이터 스토리지(340)와 적절한 데이터 버스 아키텍처를 통해 통신한다. 전술한 바와 같이, 종래의 구현예에 따르면, 예시적인 프로세서 장치(310)는 메모리 버스(322)를 통해 DRAM(DIMM, NVDIMM)(320)을 액세스한다. Gen-Z 및/또는 유사한 최신 기술을 사용하는 다른 예시적인 토폴로지는 도 1, 도 2 및/또는 도 3에 도시된 것들의 조합으로서 또한 이용가능하다.
일부 NVDIMM 구현(NVDIMM-N)은 DRAM 및 플래시 메모리를 가져서 플래시가 DRAM에 저장된 내용을 수용할 수 있는 충분한 공간을 갖도록 배열된다. 예를 들어, 8GB DRAM을 갖는 NVDIMM은 그와 관련된 8GB 내지 16GB의 플래시 메모리를 가질 수 있다. 정전 또는 다른 고장 조건의 경우, DRAM의 데이터가 플래시 메모리에 백업되므로 장애 극복(failover) 솔루션이 제공됩니다. 전원이 복구되면 데이터가 플래시 메모리에서 DRAM으로 복구되고 이전과 같이 프로세싱이 계속됩니다. 이러한 구현에서, 도 4의 예시적인 장치(400)에 도시된 바와 같이, DIMM/NVDIMM 모듈(420)의 DRAM(424)만이 메모리 버스(422) 상에서 직접 주소화 가능하고 플래시 메모리(426)는 메모리 버스(422) 상에서 직접 주소화 가능하지 않다. 제어기(428) 및 관련 기능은 DRAM(424)과 플래시(426) 사이의 상호작용을 관리하고, 특히 휘발성 DRAM에서 플래시 메모리로 그리고 그 반대로 데이터를 이동시키는 것을 용이하게 한다. 따라서, DIMM/NVDIMM 모듈에 인스턴스화된 두 가지 유형의 메모리가 있더라도 사실상 하나의 주소화 메모리 계층만 있다.
다른 NVDIMM 구현(NVDIMM-F)에서, DRAM은 내부 버퍼로서 사용되고 프로세서 장치(410) 등에 의해 메모리 버스 상에서 주소화 가능하지 않는다. 대신 플래시 메모리는 메모리 버스 상에서 직접 주소화 가능하다. NVDIMM과 마찬가지로 두 가지 유형의 메모리가 NVDIMM에 있어도 주소화 가능한 메모리는 단 하나의 계층에 불과하다. 위의 각 구현에서 NVDIMM은 DIMM 모듈 상에서 이용가능한 점유 공간(real estate)의 제한으로 인해 제한된 용량을 제공한다. 마찬가지로, 묘사된 장치에서, 영구 스토리지 요소(예를 들어, 플래시(426), 대용량 스토리지(525))를 물리적으로 분리하고 그들을 I/O 버스(43)에 직접 다시 부착하지 않고 프로세서로부터 NVDIMM으로 그리고 그 반대로 데이터를 이동시킬 수 있는 유일한 방법은 메모리 버스(즉, DDR 인터페이스)를 통하는 것이다. 이로 인해 NVDIMM의 내부 및 외부로의 데이터 이동에 많은 프로세스 손실이 발생한다. NVDIMM 데이터는 I/O 인터커넥트(도 4의 430) 및 (버스 아키텍처(450)를 통한)관련 대용량 스토리지(440)에서 이용가능하지 않기 때문에, 이 예에서 NVDIMM은 데이터의 최종 휴지 장소(final resting place)가 될 수 없다.
전술한 각각의 장치는 본질적으로 I/O 대용량 스토리지를 연결하는 I/O 및 DRAM을 연결하는 I/O를 2 개의 개별 채널로 분리하며, 그들 각각은 자체 주소화 및 통신 프로토콜 및 기능을 필요로 한다.
본 발명은 DRAM(또는 등가물) 및 대용량 스토리지 모두의 액세스 및 사용을 교환가능하게 허용하는 컴퓨터 프로세서 및 데이터 스토리지 및 연관된 작동 시스템을 제공하고 두 유형의 메모리를 통합 메모리로서 효과적으로 취급하는 버스 아키텍처 및 작동 시스템을 사용함에 따라 프로세서 동작과 관련하여 매우 큰 규모의 작업 메모리를 허용함으로써 종래 기술의 단점을 극복한다. 또한 대용량 스토리지는 I/O 버스 상의 영구 스토리지로서 작동하도록 외부 버스 아키텍처를 통해 또는 메모리 채널을 통해 영구 메모리에 액세스하는 메모리 버스를 통해 또는 둘 다를 통해 액세스할 수 있다.
도시된 실시예에서, 컴퓨팅 시스템은, 메모리 버스에 상호연결된 프로세서 어셈블리 및 메모리 버스에 상호연결되고 메모리 버스를 통해 상이한 메모리 유형의 조합을 액세스하도록 구성되는 메모리-스토리지 조합을 포함한다. 제어기는 메모리 버스를 통해 통합된 주소 공간의 일부로서 메모리 유형들의 조합을 주소화하도록 배열된다. 조합은 계층 중 적어도 하나가 프로세서에 의해 사용되는 데이터의 최종 휴지 장소를 구성하는 방식으로 메모리의 계층에 구성된다. 예시적으로, 비휘발성 대량 데이터 스트로지에 액세스하기 위한 I/O 인터커넥트 및/또는 외부 장치와 비휘발성 대량 데이터 스토리지 사이의 통신을 가능하게 하는 백도어 인터커넥트가 제공된다. 상이한 메모리 유형은 랜덤 액세스 메모리(RAM/DRAM) 및 비휘방성 대량 데이터 스토리지를 포함할 수 있다. RAM 기반 데이터 스토리지는 스토리지 클래스 메모리를 포함하지만 이에 제한되지 않는 NVDIMM 메모리 구조를 정의할 수 있다. NVDIMM 메모리 구조는 DRAM을 갖는 적어도 제1 계층 NVD 캐시 및 스토리지 클래스 메모리를 갖는 제2 계층 NVD 캐시를 포함하도록 구성될 수 있다. 제2 계층 NVD 캐시는 비제한적인 예로 솔리드 스테이트 드라이브(SSD)일 수 있다.
다른 도시된 실시예에서, 제어기 및 메모리 버스를 포함하는 프로세서를 갖는 컴퓨팅 시스템이 제공된다. 복수의 메모리 구조는 메모리 버스에 상호연결되고, 대용량 스토리지는 메모리 구조와 상호연결되며, 프로세스, 메모리 구조 및 대용량 스토리지 사이에서 데이터 전달을 위한 최종 휴지 장소를 제공하는 메모리 버스를 통해 주소화가능하다. 인터리버 및 디-인터리버(모듈, 프로세서 등)는 데이터의 패킷을 배열하여 그들이 메모리 구조 사이에 분배되도록 인터리빙되고 프로세서 및 대용량 스토리지 각각에서 조직화된 패턴으로 디-인터리빙된다. 예시적으로, 인터리버 및 디-인터리버는 메모리에 기록된 패킷이 프로세서에서 조직화된 패턴으로부터 인터리빙되어 메모리 구조를 통과하고 조직화된 패턴으로 대용량 스토리지에 저장되도록 한다. 인터리버 및 디-인터리버는 또한 메모리로부터 판독된 패킷이 대용량 스토리지에서 조직화된 패턴으로부터 인터리빙되어 메모리 구조를 통과하고 조직화된 패턴으로 프로세서에 의해 수신되도록 한다. 인터리버 및 디-인터리버는 또한 메모리 구조의 전체 배열에서 메모리 구조 각각의 위치에 응답하여, 패킷들이 배열 내의 메모리 구조 각각의 위치에 기초하여 인터리빙되고 디-인터리빙된다. 따라서, 메모리 구조(예를 들어, NVDIMM)가 PC보드 상의 상이한 슬롯으로 이동되는 경우에도 조직은 동일하게 유지된다.
다른 도시된 실시예에서, 컴퓨팅 시스템은 제어기 및 메모리 버스를 갖는 프로세서 및 메모리 버스에 상호연결된 복수의 메모리 구조를 포함한다. 대용량 스토리지는 메모리 구조와 상호연결되며, 프로세서, 메모리 구조 및 대용량 스토리지 사이의 데이터 전달을 위한 최종 휴지 장소를 제공하는 메모리 버스를 통해 주소화가능하다. 특히, 대용량 스토리지는 대용량 스토리지를 메모리 구조에 연결하는 통신 프로토클 토폴로지의 루트를 정의한다. 비제한적은 예로서, 프로토콜은 PCIe, Gen-Z, SATA, SAS, 이더넷, Infiniband.RTM., SCSI 및 iSCSI 중 적어도 하나를 포함하고, 그리고/또는 메모리 구조는 NVDIMM을 포함할 수 있다.
다른 도시된 실시예에서, 컴퓨팅 시스템은 제어기 및 메모리 버스를 갖는 프로세서, 및 메모리 버스에 또한 상호연결되며 제어기를 갖는 NVDIMM 장치를 포함한다. 대용량 스토리지는 NVDIMM 장치와 상호연결되며, 프로세서, NVDIMM 장치 및 대용량 스토리지 사이의 데이터 전달을 위한 최종 휴지 장소를 제공하는 메모리 버스를 통해 주소화가능하다. NVDIMM 장치와 대용량 스토리지는 함께 메모리 조합을 정의한다. 전용 고속 연결은 NVDIMM 제어기를 대용량 스토리지와 결합시킨다.
다른 도시된 실시예에서, 컴퓨팅 시스템은 제어기 및 메모리 버스를 갖는 프로세서, 및 메모리 버스에 상호연결된 복수의 메모리 구조를 포함한다. 대용량 스토리지는 메모리 구조와 상호연결되며, 프로세서, 메모리 구조 및 대양량 스토리지 사이의 데이터 전달을 위한 최종 휴지 장소를 제공하는 메모리 버스를 통해 주소화가능하다. 백도어 장치는 대용량 스토리지를, 프로세서로의 상호연결 없이 외부 장치에 상호연결한다.
다른 도시된 실시예에서, 컴퓨팅 시스템에서 데이터를 처리하는 방법이 제공된다. 메모리 버스를 구비하는 프로세스는 NVDIMM 장치에 상호연결되며 대용량 저장장치는 또한 메모리 버스에 상호연결된다. 대용량 스토리지는 메모리 버스 상의 주소 공간의 일부를 정의한다. 각각의 NVDIMM 장치 및 대용량 스토리지는 프로세서에 의해 사용될 전체 주소 공간의 일부로 주소화될 수 있다. 데이터는 대용량 스토리지에 그에 대한 최종 휴지 장소로서 저장된다. 예시적인 캐시 계층은 데이터를 저장하고 적어도 하나의 계층을 최종 휴지 장소로 지정하기 위해 제공될 수 있다.
이하의 본 발명의 설명은 첨부된 도면을 참조한다:
도 1은 선행 기술의 구현에 따라 (예를 들어) 노스 브리지 및 메모리 버스를 통해 액세스가능한 DRAM 메모리 및 사우스 브리지를 통해 액세스가능한 데이터 스토리지(예를 들어, 디스크, 전기 광학 SSD)를 구비하는 서버 환경에서 발견되는 것과 같은 기존/종래의 컴퓨팅 시스템의 블록도이다;
도 2는 선행 기술의 구현에 따라 데이터 스토리지가 외부 I/O 칩셋을 사용하여 액세스가능한 일반적으로 도 1의 아키텍처에 따른 종래의 컴퓨팅 시스템의 블록도이다;
도 3은 선행 기술의 구현에 따라 메모리 및 데이터 스토리지가 각각 프로세서의 프레임워크(예를 들어, 칩셋 또는 다이) 내의 직접 인터페이스를 사용하여 액세스가능한 일반적으로 도 1의 아키텍처에 따른 종래의 컴퓨팅 시스템의 블록도이다;
도 4는 선행 기술의 구현에 따라 메모리가 플래시 구성요소를 포함하는 일반적으로 도 1의 아키텍처에 따른 종래의 컴퓨팅 시스템의 블록도이다;
도 5는 도시된 실시예에 따라 메모리 버스 상에 상주하는 신규한 메모리-스토리지 조합 및 관련된 제어기를 포함하는 컴퓨팅 시스템의 블록도이다;
도 6은 유사한 NVDIMM 사이의 분산된 NVD-L2 캐시를 본 발명의 실시예에 따른 메모리 스토리지 조합에 적용가능한 NVDIMM 장치를 도시하는 블록도이다;
도 7은 비유사한 NVDIMM 사이의 분산된 NVD-L2 캐시를 본 발명의 실시예에 따른 메모리 스토리지 조합에 적용가능한 NVDIMM 장치를 도시하는 블록도이다;
도 8a는 NVDIMM(들) 및 대용량 스토리지 장치(들) 사이에서 일대일 대응(one-to-one correspondence)으로 본 발명의 메모리 스토리지 조합에서 사용하기 위한 예시적인 NVDIMM 장치를 도시하는 블록도이다;
도 8b는 다른 실시예에 따라 NVD 대용량 스토리지 장치에 배치된 NVD-L2 캐시와 함께 본 발명의 메모리 스토리지 조합에서 사용하기 위한 일대일 NVDIMM 장치를 도시하는 블록도이다;
도 8c는 다른 실시예에 따라 대용량 스토리지를 위한 빌딩 블록으로서 사용되는 SSD 및 대용량 스토리지 장치 내에 배치된 NVD-L2 캐시와 함께 본 발명의 메모리 스토리지 조합에서 사용하기 위한 일대일 NVDIMM 장치를 도시하는 블록도이다;
도 9a는 NVDIMM(들) 및 대용량 스토리지(들) 사이에서 다대일 대응으로 본 발명의 메모리 스토리지 조합에서 사용하기 위한 예시적인 NVDIMM 장치를 도시하는 블록도이다;
도 9b는 다른 실시예에 따라 NVD 대용량 스토리지 장치에 배치된 NVD-L2 캐시와 함께 본발명의 메모리 스토리지 조합에서 사용하기 위한 다대일 NVDIMM 장치를 도시하는 블록도이다;
도 9c는 다른 실시예에 따라 대용량 스토리지를 위한 빌딩 블록으로서 사용되는 SSD 및 대용량 스토리지 장치 내에 배치된 NVD-L2 캐시와 함께 본 발명의 메모리 스토리지 조합에서 사용하기 위한 다대일 NVDIMM 장치를 도시하는 블록도이다;
도 10은 일대일 맵핑을 구비하는 본 발명의 실시예에 따른 메모리 조합의 블록도이다;
도 11은 다대일 맵핑을 구비하는 본 발명의 실시예에 따른 메모리 조합의 블록도이다;
도 12a는 I/O 상호연결을 통해 그리고 NVD 대용량 스토리지 장치의 백도어 I/O 액세스 연결을 통해 프로세서가 외부 세계(예를 들어, 이더넷을 통해) 뿐만 아니라 NVD 대용량 스토리지에 상호연결된 다대일 맵핑을 구비하는 본 발명의 실시예에 따른 메모리 조합의 블록도이다;
도 12b는 내부 또는 외부 대용량 스토리지에서 데이터를 액세스하기 위한 직접 연결이 필요 없으며 NVDIMM 및 그들의 백도어 I/O 액세스 연결을 통해 프로세서가 외부 세계뿐만 아니라 NVD 대용량 스토리지에 독점적으로 상호연결된 다대일 맵핑을 구비하는 본 발명의 실시예에 따른 메모리 조합의 블록도이다;
도 13은 종래(기존)의 데이터흐름 구현에 따라 이더넷을 통해 대용량 스토리지로의 데이터 이동 및 메모리 스토리지 조합의 NVDIMM에서의 판독 데이터 흐름을 도시하는 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 14는 종래(기존)의 데이터흐름 구현에 따라 대용량 스토리지로부터의 이더넷을 통한 데이터 이동 및 메모리 스토리지 조합의 NVDIMM에서의 기록 데이터 흐름을 도시하는 도 13의 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 15는 이더넷 및 백도어 액세스를 통한 NVD 대용량 스토리지 또는 다른 NVD 티어(tier)(NVD-L1 또는 LVD-L2 또는 둘 다)로의 NVD 판독 데이터흐름을 도시하는 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 16은 백도어 액세스 및 이더넷을 통과하는 NVD 대용량 스토리지 또는 다른 NVD 티어(NVD-L1 또는 LVD-L2 또는 둘 다)로부터의 NVD 기록 데이터흐름을 도시하는 도 15의 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 17은 I/O 상호연결을 거쳐 NVD 대용량 스토리지로의 백도어 액세스를 도시하는 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 18a는 NVDIMM 및 NVD 대용량 스토리지가 메모리 맵 상에 개별적으로 주소화가능한 인터리빙 및 백도어 액세스를 묘사하는 예시적인 실시예에 따른 메모리 스토리지 조합을 갖는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 18b는 I/O 상호연결이 선택적이고 NVD 대용량 스토리지가 버퍼 또는 캐시로 작용하는 메모리 버스 상의 NVDIMM을 구비하는 메모리 맵 상에서 주소화가능한, 다른 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 19a는 NVDIMM 및 NVD 대용량 스토리지가 메모리 맵 상에서 개별적으로 주소화가능한, NVD 대용량 스토리지와 개별적으로 쌍을 이루는 NVDIMM을 묘사하는 예시적인 실시예에 따른 메모리 스토리지 조합을 갖는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 19b는 I/O 상호연결이 선택적이고 NVD 대용량 스토리지가 버퍼 또는 캐시로 작용하는 메모리 버스 상의 NVDIMM을 구비하는 메모리 맵 상에서 주소화가능한, 다른 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 19c는 하나의 NVD 대용량 스토리지 장치가 버퍼 또는 캐시로 작용하는 메모리 버스 상의 NVDIMM을 구비하는 메모리 맵 상에서 주소화가능한, 다른 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 20a는 일 실시예에 따른 외부 세계와 NVD 제어기를 사용하여 통신하며, NVDIMM 상에 NVD-L1, NVD-L2 및 NVD 대용량 스토리지가 상주하는 NVDIMM 장치의 다이어그램이다;
도 20b는 일 실시예에 따른 NVD 대용량 스토리지 장치 상에 스토리지 매체의 일부가 상주하고 NVDIMM 상에 스토리지 매체의 일부가 상주하며 이에 따라 두 갈래로 갈라진 스토리지를 제공하는 NVD 대용량 스토리지 장치와 NVD 제어기를 사용하여 통신하며, NVDIMM 상에 NVD-L1 및 NVD-L2가 상주하는 티어드(tiered) NVDIMM 장치의 다이어그램이다;
도 21은 일 실시예에 따른 NVDIMM 상에 NVD-L1이 상주하고 NVD 대용량 스토리지 장치 상에 NVD-L2가 상주하는 티어드 NVDIMM 장치의 다이어그램이다;
도 22는 예시적인 실시예에 따른 NVD 대용량 스토리지 장치의 블록도이다;
도 23은 예시적인 실시예에 따른 NVDIMM로의 경로의 NVD 인터리브/디-인터리브 모듈을 구비하는 NVD 대용량 스토리지 장치의 블록도이다;
도 24a는 예시적인 실시예에 따른 I/O 상호연결으로의 경로의 I/O 인터리브/디-인터리브 모듈을 구비하는 NVD 대용량 스토리지 장치의 블록도이다;
도 24b는 다른 실시예에 따른 상호연결 및 대용량 스토리지 사이에 위치된 인터리브/디-인터리브 모듈을 구비하는 NVD 대용량 스토리지 장치의 블록도이다;
도 24c는 예시적인 실시예에 따른 NVDIMM을 통해 대용량 스토리지와 호스트 프로세서 사이의 기록 동작에서 전송된 인터리브/디-인터리브된 패킷 데이터의 처리를 도시하는 블록도이다;
도 24d는 예시적인 실시예에 따라 NVDIMM을 통해 대용량 스토리지 장치와 호스트 프로세서 사이의 판독 동작에서 전송된 인터리브/디-인터리브된 패킷 데이터의 처리를 도시한 블록도이다;
도 25는 예시적인 실시예에 따른 통합 에너지 소스를 갖는 NVD 대용량 스토리지의 블록도이다; 그리고
도 26은 예시적인 실시예에 따른 별도의 상호연결된 에너지 소스를 갖는 NVD 대용량 스토리지의 블록도이다.
도 1은 선행 기술의 구현에 따라 (예를 들어) 노스 브리지 및 메모리 버스를 통해 액세스가능한 DRAM 메모리 및 사우스 브리지를 통해 액세스가능한 데이터 스토리지(예를 들어, 디스크, 전기 광학 SSD)를 구비하는 서버 환경에서 발견되는 것과 같은 기존/종래의 컴퓨팅 시스템의 블록도이다;
도 2는 선행 기술의 구현에 따라 데이터 스토리지가 외부 I/O 칩셋을 사용하여 액세스가능한 일반적으로 도 1의 아키텍처에 따른 종래의 컴퓨팅 시스템의 블록도이다;
도 3은 선행 기술의 구현에 따라 메모리 및 데이터 스토리지가 각각 프로세서의 프레임워크(예를 들어, 칩셋 또는 다이) 내의 직접 인터페이스를 사용하여 액세스가능한 일반적으로 도 1의 아키텍처에 따른 종래의 컴퓨팅 시스템의 블록도이다;
도 4는 선행 기술의 구현에 따라 메모리가 플래시 구성요소를 포함하는 일반적으로 도 1의 아키텍처에 따른 종래의 컴퓨팅 시스템의 블록도이다;
도 5는 도시된 실시예에 따라 메모리 버스 상에 상주하는 신규한 메모리-스토리지 조합 및 관련된 제어기를 포함하는 컴퓨팅 시스템의 블록도이다;
도 6은 유사한 NVDIMM 사이의 분산된 NVD-L2 캐시를 본 발명의 실시예에 따른 메모리 스토리지 조합에 적용가능한 NVDIMM 장치를 도시하는 블록도이다;
도 7은 비유사한 NVDIMM 사이의 분산된 NVD-L2 캐시를 본 발명의 실시예에 따른 메모리 스토리지 조합에 적용가능한 NVDIMM 장치를 도시하는 블록도이다;
도 8a는 NVDIMM(들) 및 대용량 스토리지 장치(들) 사이에서 일대일 대응(one-to-one correspondence)으로 본 발명의 메모리 스토리지 조합에서 사용하기 위한 예시적인 NVDIMM 장치를 도시하는 블록도이다;
도 8b는 다른 실시예에 따라 NVD 대용량 스토리지 장치에 배치된 NVD-L2 캐시와 함께 본 발명의 메모리 스토리지 조합에서 사용하기 위한 일대일 NVDIMM 장치를 도시하는 블록도이다;
도 8c는 다른 실시예에 따라 대용량 스토리지를 위한 빌딩 블록으로서 사용되는 SSD 및 대용량 스토리지 장치 내에 배치된 NVD-L2 캐시와 함께 본 발명의 메모리 스토리지 조합에서 사용하기 위한 일대일 NVDIMM 장치를 도시하는 블록도이다;
도 9a는 NVDIMM(들) 및 대용량 스토리지(들) 사이에서 다대일 대응으로 본 발명의 메모리 스토리지 조합에서 사용하기 위한 예시적인 NVDIMM 장치를 도시하는 블록도이다;
도 9b는 다른 실시예에 따라 NVD 대용량 스토리지 장치에 배치된 NVD-L2 캐시와 함께 본발명의 메모리 스토리지 조합에서 사용하기 위한 다대일 NVDIMM 장치를 도시하는 블록도이다;
도 9c는 다른 실시예에 따라 대용량 스토리지를 위한 빌딩 블록으로서 사용되는 SSD 및 대용량 스토리지 장치 내에 배치된 NVD-L2 캐시와 함께 본 발명의 메모리 스토리지 조합에서 사용하기 위한 다대일 NVDIMM 장치를 도시하는 블록도이다;
도 10은 일대일 맵핑을 구비하는 본 발명의 실시예에 따른 메모리 조합의 블록도이다;
도 11은 다대일 맵핑을 구비하는 본 발명의 실시예에 따른 메모리 조합의 블록도이다;
도 12a는 I/O 상호연결을 통해 그리고 NVD 대용량 스토리지 장치의 백도어 I/O 액세스 연결을 통해 프로세서가 외부 세계(예를 들어, 이더넷을 통해) 뿐만 아니라 NVD 대용량 스토리지에 상호연결된 다대일 맵핑을 구비하는 본 발명의 실시예에 따른 메모리 조합의 블록도이다;
도 12b는 내부 또는 외부 대용량 스토리지에서 데이터를 액세스하기 위한 직접 연결이 필요 없으며 NVDIMM 및 그들의 백도어 I/O 액세스 연결을 통해 프로세서가 외부 세계뿐만 아니라 NVD 대용량 스토리지에 독점적으로 상호연결된 다대일 맵핑을 구비하는 본 발명의 실시예에 따른 메모리 조합의 블록도이다;
도 13은 종래(기존)의 데이터흐름 구현에 따라 이더넷을 통해 대용량 스토리지로의 데이터 이동 및 메모리 스토리지 조합의 NVDIMM에서의 판독 데이터 흐름을 도시하는 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 14는 종래(기존)의 데이터흐름 구현에 따라 대용량 스토리지로부터의 이더넷을 통한 데이터 이동 및 메모리 스토리지 조합의 NVDIMM에서의 기록 데이터 흐름을 도시하는 도 13의 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 15는 이더넷 및 백도어 액세스를 통한 NVD 대용량 스토리지 또는 다른 NVD 티어(tier)(NVD-L1 또는 LVD-L2 또는 둘 다)로의 NVD 판독 데이터흐름을 도시하는 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 16은 백도어 액세스 및 이더넷을 통과하는 NVD 대용량 스토리지 또는 다른 NVD 티어(NVD-L1 또는 LVD-L2 또는 둘 다)로부터의 NVD 기록 데이터흐름을 도시하는 도 15의 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 17은 I/O 상호연결을 거쳐 NVD 대용량 스토리지로의 백도어 액세스를 도시하는 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 블록도이다;
도 18a는 NVDIMM 및 NVD 대용량 스토리지가 메모리 맵 상에 개별적으로 주소화가능한 인터리빙 및 백도어 액세스를 묘사하는 예시적인 실시예에 따른 메모리 스토리지 조합을 갖는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 18b는 I/O 상호연결이 선택적이고 NVD 대용량 스토리지가 버퍼 또는 캐시로 작용하는 메모리 버스 상의 NVDIMM을 구비하는 메모리 맵 상에서 주소화가능한, 다른 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 19a는 NVDIMM 및 NVD 대용량 스토리지가 메모리 맵 상에서 개별적으로 주소화가능한, NVD 대용량 스토리지와 개별적으로 쌍을 이루는 NVDIMM을 묘사하는 예시적인 실시예에 따른 메모리 스토리지 조합을 갖는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 19b는 I/O 상호연결이 선택적이고 NVD 대용량 스토리지가 버퍼 또는 캐시로 작용하는 메모리 버스 상의 NVDIMM을 구비하는 메모리 맵 상에서 주소화가능한, 다른 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 19c는 하나의 NVD 대용량 스토리지 장치가 버퍼 또는 캐시로 작용하는 메모리 버스 상의 NVDIMM을 구비하는 메모리 맵 상에서 주소화가능한, 다른 예시적인 실시예에 따른 메모리 스토리지 조합을 구비하는 컴퓨팅 시스템의 주소화가능한 영역의 통합 메모리 맵의 다이어그램이다;
도 20a는 일 실시예에 따른 외부 세계와 NVD 제어기를 사용하여 통신하며, NVDIMM 상에 NVD-L1, NVD-L2 및 NVD 대용량 스토리지가 상주하는 NVDIMM 장치의 다이어그램이다;
도 20b는 일 실시예에 따른 NVD 대용량 스토리지 장치 상에 스토리지 매체의 일부가 상주하고 NVDIMM 상에 스토리지 매체의 일부가 상주하며 이에 따라 두 갈래로 갈라진 스토리지를 제공하는 NVD 대용량 스토리지 장치와 NVD 제어기를 사용하여 통신하며, NVDIMM 상에 NVD-L1 및 NVD-L2가 상주하는 티어드(tiered) NVDIMM 장치의 다이어그램이다;
도 21은 일 실시예에 따른 NVDIMM 상에 NVD-L1이 상주하고 NVD 대용량 스토리지 장치 상에 NVD-L2가 상주하는 티어드 NVDIMM 장치의 다이어그램이다;
도 22는 예시적인 실시예에 따른 NVD 대용량 스토리지 장치의 블록도이다;
도 23은 예시적인 실시예에 따른 NVDIMM로의 경로의 NVD 인터리브/디-인터리브 모듈을 구비하는 NVD 대용량 스토리지 장치의 블록도이다;
도 24a는 예시적인 실시예에 따른 I/O 상호연결으로의 경로의 I/O 인터리브/디-인터리브 모듈을 구비하는 NVD 대용량 스토리지 장치의 블록도이다;
도 24b는 다른 실시예에 따른 상호연결 및 대용량 스토리지 사이에 위치된 인터리브/디-인터리브 모듈을 구비하는 NVD 대용량 스토리지 장치의 블록도이다;
도 24c는 예시적인 실시예에 따른 NVDIMM을 통해 대용량 스토리지와 호스트 프로세서 사이의 기록 동작에서 전송된 인터리브/디-인터리브된 패킷 데이터의 처리를 도시하는 블록도이다;
도 24d는 예시적인 실시예에 따라 NVDIMM을 통해 대용량 스토리지 장치와 호스트 프로세서 사이의 판독 동작에서 전송된 인터리브/디-인터리브된 패킷 데이터의 처리를 도시한 블록도이다;
도 25는 예시적인 실시예에 따른 통합 에너지 소스를 갖는 NVD 대용량 스토리지의 블록도이다; 그리고
도 26은 예시적인 실시예에 따른 별도의 상호연결된 에너지 소스를 갖는 NVD 대용량 스토리지의 블록도이다.
예를 들어, 스토리지 클래스 메모리의 용량 및 성능을 사용하여 DRAM 또는 등가물 및 대용량 스토리지 모두에서 이용가능한 메모리를 더 잘 활용하기 위해, 다음의 설명은 NVDIMM에 기초한 멀티 레벨 캐시 및 스토리지를 위한 시스템의 다양한 실시예를 제공한다.
I. 메모리 버스 상의 멀티 레벨 확장 메모리-스토리지 조합
메모리 버스 상의 주소화가능한 메모리의 관점에서, 종래의 NVDIMM 솔루션은 하나의 메모리 계층(즉, DRAM 또는 플래시)을 갖는다. NVDIMM 솔루션에 존재하는 메모리의 유형의 관점에서, 종래의 NVDIMM은 최대 하나의 휘발성(SRAM 또는 DRAM) 및 하나의 비휘발성 메모리(예를 들어, 플래시 메모리)의 두 종류의 메모리를 갖는다. 두번째 계층은 일반적으로 지속성, 즉 (전원) 장애 사고에서 DRAM 데이터를 백업하는데 사용되며 메모리 버스 상에서는 주소화가능하지 않다. 또한, 이러한 구현에서, 플래시 메모리 용량은 DRAM 용량의 배수인 용량으로 제한된다. 예를 들어, 8GB NVDIMM 모듈에서 플래시 용량은 8GB에서 16GB 사이가 될 수 있다. 다른 실시예에서, 플래시는 128GB 또는 그 이상의 용량을 가질 수 있다. 후술되는 도시된 실시예에 따르면, 2 개 이상의 주소화가능한 메모리의 계층이 소수의 첫번째 메모리 계층이 확장된 캐시 레벨(이하, “NVD-캐시”라고 함)로 작용할 수 있는 방식으로 배열될 수 있으며, 여기서 마지막 계층은 데이터의 최종 휴지 장소가 될 수 있다.
도 5에 도시된 실시예에서, 프로세서(510)가 메모리-스토리지 조합(523)에 (메모리 액세스를 운반하는)(DDR) 인터페이스(522)에 의해 상호연결된 메모리 제어기를 포함하는 배열(500)이 제공된다. DRAM(520)(또는 유사하거나 더 나은 레이턴시/속도를 갖는 기술)은 NVD-L1이라고 하는 메모리-스토리지 조합의 첫번째 계층을 형성한다. DRAM, SRAM, 스토리지 클래스 메모리 또는 플래시 메모리(또는 유사한 기술)는 NVD-L2라고 하는 주소화가능한 메모리의 두번째 계층을 형성한다. 플래시, 자기 매체, 스토리지 클래스 메모리 또는 유사한 메모리에 기초한 대용량, 비휘발성 메모리는 NVD 대용량 스토리지(525)로 정의된 주소화가능한 메모리의 마지막 계층을 형성하며, 적절한 통신 버스 아키텍처(526)(예를 들어, SATA, PCIe 및/또는 다른 인터페이스)를 통해 상호연결되는 NVDIMM 외부에 위치될 수 있다. NVD 제어기(527)는 도시된 바와 같이 관련된 NVD-L1 및 NVD-L2 캐시 제어기(528, 529)를 포함한다. 위의 모든 계층은 함께 “멀티 레벨 확장 캐시 스토리지 조합”을 구성한다. 다른 예시적인 실시예에서, 더 많은 계층 또는 메모리가 당업자에게 명확하고 적절하게 제공될 수 있다.
도 5의 예에 따라 구현되는 멀티 레벨 확장 캐시 스토리지 조합의 다양한 구성요소, 및 그들의 특징은 다음과 같이 제공될 수 있다:
1. NVD-L1: DRAM 또는 다른 기술은 NVDIMM 확장 캐시(L1) 또는 NVD-L1을 형성하며, 일 실시예에서, NVD-L1은 10 나노초의 레이턴시 및 (1200Hz DDR4 클럭에서) 2400메가 전송/초의 속도 또는 그 이상를 갖는 DRAM과 같은 16GB의 휘발성 메모리이다. 다른 실시예에서, NVD-L1은 1나노초 미만의 레이턴시를 갖는 MRAM(자기 RAM)과 같은 임의의 비휘발성 메무리이다. 도 5의 실시예에서, NVD-L1은 NVDIMM PCB 상에 배치된다.
2. NVD-L2: 고속 캐시로 사용되는 메모리를 NVDIMM 확장 캐시(L2) 또는 NVD-L2라고 한다. 일부 실시예에서, 이들은 NVD-L1보다 감소된 레이턴시 및 속도를 가지는 지속성 매체일 수 있다. 다른 실시예에서, NVD-L2는 데이터가 진정한 지속성 도메인으로 이동될때까지 인위적으로 전력 공급되거나 또는 단지 휘발성 버퍼로서 작용하는 휘발성 DRAM을 포함할 수 있다. 일 실시예에서, NVD-L2는 (예를 들어) 10 나노초의 레이턴시를 갖는 4GB DRAM 칩일 수 있다. 예시적인 실시예에서, LVD-L2는 수백 나노초의 레이턴시를 갖는 256GB의 비휘발성 ReRAM 메모리일 수 있다. 다른 예시적인 실시예에서, NVD-L2는 수십 마이크로초 정도의 레이턴시를 갖는 512GB의 비휘발성 NAND 플래시 메모리이다. NVD-L2는 (a) 물리적으로 NVDIMM 상에 존재할 수 있거나; (b) 다수의 NVDIMM 전역에 물리적으로 분산되어 있지만 하나의 NVDIMM 제어기에 논리적으로 액세스가능하도록 데이터 및 관리 인터페이스를 통해 연결되거나; (c) DIMM 폼 팩터를 구비하는 여러 PCB 전역에 분산되어 있지만 하나의 NVDIMM 제어기에 논리적으로 액세스가능하도록 데이터 및 관리 인터페이스를 통해 연결되거나; 또는 (d) 데이터 및 관리 인터페이스를 통해 NVDIMM, DIMM 및 NVDIMM에 연결된 장치 전역에 분산되어 있을 수 있다. 하나의 장치에 통합되거나 여러 장치에 분산되어 있는지 여부에 따라 통합 NVD-L2 또는 분산 NVD-L2가 될 수 있다. 도 5의 NVDIMM(520)이 인터페이스(610)를 통해 관련된 NVD-L1 및 NVD-L2를 위한 유사한 동일 NVD 제어기 및 캐시 제어기 아키텍처를 구비하는 3 개의 다른 유사한 NVDIMM(NVDIMM2, NVDIMM3 및 NVDIMM4)(630, 632, 634)에 연결되는 도 6의 예시적인 장치(600)가 참조된다. 이러한 장치는 유사한 NVDIMM 사이에 효과적이고 분산된 NVD-L2 캐시를 제공한다. 도 7의 예시적인 장치(700)에서, 도 5에 일반적으로 기술된 것과 같이, 하나의 NVDIMM(NVDIMM1)(520)은 인터페이스(712)를 통해 NVD-L2 스토리지 클래스 메모리 및 선택적 내부 버퍼(NVDIMM2 및 NVDIMM3)만을 갖는(즉, NVD-L1 장치/캐시가 제거됨) 두 개의 비유사한 NVDIMM(734,736)뿐만 아니라 인터페이스(710)를 통해 유사한 NVDIMM(NVDIMM4 및 NVDIMM5)(730, 732)에 연결된다. 다양한 다른 상호연결된 메모리 장치가 또 다른 실시예에서 구현될 수 있다.
3. NVD 대용량 스토리지: 플래시 메모리, 자기 하드 디스크, 광학 드라이브 또는 스토리지 클래스 메모리와 같은 기존의 스토리지 기술을 사용하여 NVDIMM 상의 데이터를 위한 최종 휴지 장소를 제공하는 대용량 스토리지 장치를 제공할 수 있다. 이러한 스토리지 장치는 “NVD 대용량 스토리지”로 지칭되고, 도 8a의 예시적인 실시예에서, NVD 대용량 스토리지 장치는 대략 1 밀리초의 레이턴시를 갖는 2TB의 하드 디스크 스토리지를 포함한다. 다른 예시적인 실시예에서, NVD 대용량 스토리지 장치는 100마이크로초의 레이턴시를 갖는 7TB의 3D NAND 스토리지를 포함할 수 있다. 또 다른 예시적인 실시예에서, NVD 대용량 스토리지는 개별 솔리드 스테이트 드라이브(SSD)의 집합일 수 있다. NVD 대용량 스토리지는 (a) 물리적으로 NVDIMM 상에 위치하거나; (b) 다수의 NVDIMM 전역에 물리적으로 분산되어 있지만 하나의 NVDIMM 제어기에 논리적으로 액세스가능하도록 데이터 및 관리 인터페이스를 통해 연결됨; (c) 하나 또는 다수의 데이터 및 관리 인터페이스를 통해 하나의 NVDIMM 또는 다수의 NVDIMM에 연결된 개별 장치에 물리적으로 위치하도록 구현될 수 있다. 예시적으로, 도 8a의 예시적인 장치(800)에 도시된 바와 같이, “NVD 전용 연결”(810)로 지칭되는 전용 고속 연결은 (도 5의 예시적인 NVDIMM1(520)의) NVD 제어기(527) 또는 NVDIMM 캐시 제어기(528, 529)를 NVD 대용량 스토리지 장치(830)와 짝을 짓는데(mate) 사용될 수 있다. 장치(830)는 하나 이상의 스토리지 매체 칩/페키지(들)(832) 및 칩/패키지(들)(832)에 액세스하기 위한 관련 매체 제어기(834)를 포함한다. PCIe 또는 유사한 고속 기술이 당 업계의 숙련된 기술에 따라 전용 고속 연결로 사용될 수 있고 고속 인터페이스 블록(812, 814)으로 표현된다. 도시된 바와 같이, 도 8의 장치(800)는 대응하는 NVD 대용량 스토리지 장치에 예시적인 NVDIMM(도 5의 NVDIMM1(520))의 일대일 맵핑을 제공한다.
도 8b는 NVD-L1(예를 들어, DRAM 또는 유사한 메모리 구조)(844)이 NVDIMM 상에 상주하고 NVD-L2(846)가 NVD 대용량 스토리지 장치(848)에 상주하는 다른 장치(840)를 도시한다. 제어기(850,852,854), 스토리체 매체 칩(856) 및 다른 구성요소 또한 묘사되고 전술한 바와 같이 일반적으로 동작한다(도 8a 참조).
도 8c는 NVDIMM(862)이 NVD-L1(예를 들어, DRAM 또는 유사한 메모리 구조)(864)을 유지하고 NVD-L2(866)가 NVD 대용량 스토리지(868) 상에 상주하는 또 다른 장치(860)를 도시한다. 이 실시예에서, SSD(876)는 전술한 스토리지 매체 칩(도 8b의 856) 대신 스토리지 빌딩 블록으로 제공된다. 적절한 제어기(870, 872)는 일반적으로 위에 설명된 방식으로 장치의 다양한 구성요소를 제어하도록 제공된다.
다른 예시적인 장치(900)에서, 도 9a에 도시된 바와 같이, 복수의 NVDIMM(920,922,924,926)(도 5의 NVDIMM(520)과 아키텍처가 유사하거나 동일함)은 각각 관련된 NVD 전용 연결/인터페이스(910,912,914,916)를 통해 하나의 NVD 대용량 스토리지 장치(930)로 맵핑된다. 장치(930)는 이 예에서 복수의 예시적인 스토리지 매체 칩/패키지 및 관련된 매체 제어기(934)를 포함한다.
도 9b에서, 장치(940)는 다수의 NVDIMM(942)이 단일 NVD 대용량 스토리지 장치(944)와 짝을 이루는 실시예를 도시한다. NVD-L1(946)은 제어기(948)와 함께 각 NVDIMM(942)에 상주한다. (적절한 제어기(952)와 함께)NVD-L2(950)는 단일 NVD 대용량 스토리지 장치(944)에 상주하며 모든 NVDIMM(942) 사이에 공유된다. 복수의 스토리지 매체 칩(956) 및 관련된 매체 제어기(954)가 NVD 대용량 스토리지 장치(944)에 사용된다.
도 9c의 장치(960)에서, 도 9b의 그것에 유사한 NVDIMM(942)의 장치는 단일 NVD 대용량 스토리지 장치(968)와 상호연결된다. NVD 대용량 스토리지 장치(968)는 스토리지 매체 칩(도 9b의 956) 대신에 이 실시예에서 스토리지 빌딩 블록으로서 SSD(976)를 사용한다. 제어기(974) 및 매체 제어기(972)와 함께 NVD-L2 캐시(970)가 도시된다.
NVD-L1과 NVD-L2는 함께 “NVDIMM 캐시(NVD-캐시)”라고도 지칭하는 멀티 레벨 확장 캐시를 형성한다. 이하에서 설명되는 멀티 레벨 확장 캐시 스토리지 조합의 다양한 시스템 펌웨어 구성요소의 맵핑은 도 10의 장치(1000)에 도시된다.
최상의 계층 또는 레벨(1002)에서, 고객 소프트웨어(1012), 미들웨어(1014) 및 NVDIMM 메모리 스토리지 드라이버(1016)는 호스트 프로세서 또는 호스트 엔진(코-프로세서, 하드웨어 가속기 등)(1010)에서 실행된다. 이러한 계층(1002)은 이산 채널(discrete channel)(이 예에서 채널1-채널4)을 통해 중간 계층(1004)과 통신한다.
중간 계층/레벨(1004)은 DDR 메모리 버스(1021)의 각각의 개별 채널(채널1-채널4) 상의 NVDIMM1-NVDIMM4(1020)로 구성된다. NVDIMM 제어기 펌웨어(1022), NVD-L1 펌웨어(1024) 및 NVD-L2 펌웨어(1026)는 도시된 바와 같이 각각 NVDIMM(1020) 상에서 실행된다. 각각의 NVDIMM(1020) 내의 NVD-L1 및 NVD-L2 모두는 관련된 NVD-L1 또는 NVD-L2 펌웨어에 의해 또는 프로세서/호스트 엔진(1010)에서 실행되는 관련 NVDIMM 메모리 스토리지 드라이버(1016)와 관련하여 독립적으로 관리될 수 있다.
도시된 하부 계층(1006)은 적절한 버스 아키텍처(예를 들어, 케이블 또는 광 링크 또는 다른 동등한 인터페이스로 구현된 PCIe 버스)에 의해 상호연결된 NVD 대용량 스토리지 모듈(A-D)(1040)로 구성된다. NVD 대용량 스토리지 펌웨어(1042)는 NVD 대용량 스토리지에서 실행되며 NVDIMM 구성요소와의 상호작용뿐만 아니라 대용량 스토리지 매체(데이터)(1044)를 관리한다.
도 10의 예시적인 장치(1000)에서, 캐시 제어는 또한 하드웨어와 펌웨어의 혼합일 수 있다. 마찬가지로, 아래 나열된 하드웨어 및 펌웨어 구성요소를 함께 “NVDC 구성요소”라고 하며 NVDIMM 제어기, NVDIMM 제어기 펌웨어, NVD-L1 제어기, NVD-L1 펌웨어, NVD-L2 제어기 및 NVD-L2 펌웨어로 구성될 수 있다. 도 10의 예시적인 실시예에서, 하나의 NVDIMM(1020)은 메모리 버스(1021)의 각각의 DDR 채널(1-4) 상에 배치되고, NVDIMM 1,2,3 및 4 각각은 PCIe 연결(또는 동가물)을 통해 전용 NVD 대용량 스토리지 장치 A, B, C 및 D 각각에 개별적으로 연결된다. 특히, PCIe 아키텍처 및 통신 프로토콜은 배치될 수 있는 인터페이스의 예로 사용되지만, 다른 실시예에서는 높은 처리량을 제공하는 임의의 유사한 아키텍처/프로토콜이 사용될 수 있다.
도 11은 다수의 NVDIMM이 단일 NVD 대용량 스토리지 장치에 맵핑되는 다른 실시예에 따른 장치(1100)를 나타낸다. 도 10의 예시적인 장치(1000)에서와 같이, 고객 소프트웨어(1112), 미들웨어(1114) 및 NVDIMM 메모리 스토리지 드라이브(116)은 호스트 프로세서 또는 호스트 엔진(코-프로세서, 하드웨어 가속기 등)에서 실행 중이다. DDR 메모리 인터페이스(1121)는 도시된 바와 같이 각각이 복수의 개별 NVDIMM(1120)과 상호연결하는 채널1-채널4를 포함한다. 각각의 NVDIMM은 위의 도 10의 NVDIMM(1020)의 설명에 따라 구성된다. 이 예시적인 장치에 도시된 바와 같이, (채널 1 상의) NVDIMM1 및 NVDIMM2는 NVD 대용량 스토리지-A에 맵핑된다. 마찬가지로, (DDR 채널 2 상의) NVDIMM3 및 NVDIMM4는 NVD 대용량 스토리지-A에 맵핑되어 대용량 스토리지(1140)로의 NVDIMM(1120)의 다대일 맵핑을 생성하며, (DDR 채널 3 상의) NVDIMM5 및 NVDIMM6는 마찬가디로 이 예에서 NVD 대용량 스토리지-B에 맵핑되며, 마지막으로, (DDR 채널 7 상의) NVDIMM7 및 NVDIMM8은 또한 NVD 대용량 스토리지-B에 맵핑된다. 인터페이스(1150)는 각각의 NVDIMM(1020)을 대용량 스토리지 장치(1140)와 링크시킨다. 다른 실시예에서, 각각의 NVDIMM 쌍(NVDIMM1 및 2, NVDIMM3 및 4, NVDIMM 5 및 6, 및 NVDIMM 7 및 8)은 도 10의 장치(1000)에 도시된 바와 같이 각각의 이산 대용량 스토리지 장치, 예를 들어 대용량 스토리지 A-D에 링크될 수 있다.
도 11의 예시적인 장치(1100)에서, NVDIMM 메모리 스토리지 드라이버(1116)는 (각각의 NVDIMM 모듈(1120)에서의) 모든 NVDIMM 캐시, NVD-L1, NVD-L1, 및 NVD 대용량 저장 장치(들)에서의 그들의 최종 장소(eventual place)에서 콘텐츠의 위치 정보를 유지할 책임이 있다. 시스템은 자동으로 NVDIMM의 위치를 감지하고 해당 위치와 관련된 데이터를 채웁니다. NVDIMM(1120)의 상대 위치에 기초하여, NVD 대용량 스토리지 펌웨어(1142)에서 동일한 위치가 재구성될 수 있다. NVDIMM(1120) 및 NVD 대용량 스토리지(1140)에 입력되는 모든 데이터는 메모리 버스(1121)를 통해 라우팅된다.
반대로, 도 12a는 NVD 대용량 스토리지 장치(1240)가 메모리 버스(1221)뿐만 아니라 시스템의 I/O 상호연결(1230)에 연결되는 장치(1200)를 나타낸다. 이러한 장치(1200)에서, NVD 대용량 스토리지(124)는 I/O 상호연결(1230)을 통해 직접적으로 또는 메모리 버스(1221)를 통해 간접적으로 프로세서 또는 호스트 엔진(1210)에 의해 (일반적으로 위의 도 10 및 도 11에서 상술한 바와 같이) 액세스될 수 있다. 도시된 바와 같이, I/O 상호연결(1230)은 버스 브랜치(1232)를 통해 프로세서 또는 호스트 엔진(1210)과 관련된 I/O 칩셋 및/또는 브리지(1236)와 링크한다. 따라서, I/O 상호연결(123) 및 관련된 칩셋/브리지(1236)는 (도1의 예에 도시된 바와 같이) 종래의 두 갈래의 메모리 및 스토리지 구현과 유사한 방식으로 (중간 계층의 NVDIMM(1220)을 우회하여) 대용량 스토리지 장치(1240)로의 백도어 액세스를 제공한다.
대안적으로, 도 12b의 예시적인 장치(1250)에서, NVD 대용량 스토리지(1260)는 NVDIMM(1262)를 통해서만 프로세서 또는 호스트 엔진(1270)에 의해 액세스된다. I/O 칩셋(사용가능한 경우)(1276)은 데이터 이동과 직접 관련이 없는 다른 기능을 자유롭게 처리한다. 따라서, 프로세서/호스트(1270)는 I/O 칩셋(1276)을 사용하지 않고 백플레인 상호연결(1280)을 통해 외부 피드 또는 스토리지 장치에 도달하기 위해 NVDIMM 또는 복수의 NVDIMM(1262), 단일 또는 복수의 NVD 대용량 스토리지 장치(1260)를 사용한다.
II. NVD 대용량 스토리지 및 NVDIMM 최적화 흐름에 대한 I/O 액세스
(위에 기술된 도 2의 컴퓨팅 장치(200)에 유사한) 도 13에 도시된 종래의 데이터 흐름 장치(1300)에서, 프로세서(1310) 또는 유사한 데이터 이동 엔진(예를 들어, 리모트 데이터 이동 엔진 또는 RDMA)은 대용량 스토리지(1340)로부터 DIMM 또는 NVDIMM(1320)으로 데이터를 이동시키는 역할 하며, 프로세서(1310) 및 그의 메모리 인터페이스(1322)를 통한 그 역도 마찬가지이다. 메모리 모듈(1320)은 DRAM, SRAM, 플래시 또는 임의의 다른 적절한 메모리 기술을 포함할 수 있다. 비제한적인 예로서, 이는 심지어 상 변화 메모리(PCM), 3D XPoint.TM. 등과 같은 최신 메모리 기술을 포함할 수 있다. 프로세서(들)(1310)는 I/O 상호연결(1330)을 통해 컴퓨팅 시스템의 내부 대용량 스토리지 장치(예를 들어, 서버 환경)뿐만 아니라 외부 네트워크, 외부 대용량 스토리지 장치(들)로의 액세스를 제공하는 I/O 칩셋(1334) 또는 다른 유사한 장치(들)(예를 들어, 직접 메모리 액세스(RDMA) 등과 같은 이동 엔진)을 통해 대용량 스토리지 장치(1340)에 액세스한다.
도시된 “판독 흐름” 경로(1360)의 예로서, 외부 데이터는 이더넷(1362)을 통해 이동되고 내부 SATA(1364) 기반 대용량 스토리지 장치(1366)(로컬 스토리지 경로(1370)로의 로드로서 도시됨)에 배치된다. 그 다음, 프로세서(1310)는 I/O 상호연결(1330)을 통해 데이터를 “판독”하고 필요할 때 NVDIMM(1320)에 그것을 배치한다. 다른 방법으로 이더넷(1362)을 통한 데이터를 DIMM/NVDIMM(1320)에 직접 배치할 수 있다. 유사하게, 도 14에 도시된 바와 같이 동일한 장치(1300)에 대한 “기록 흐름” 경로(1460)에서, 프로세서(1310)는 DIMM/NVDIMM(1320)으로부터의 데이터를 액세스하고, 내부 SATA(1364) 기반 기존의 대용량 스토리지 장치(1366)에 기록한다. 그 다음, 데이터는 경로(1470)를 따라 필요에 따라 이더넷 포트를 통해 종래의 대용량 스토리지 장치(1366)의 외부로 이동된다. “판독 흐름”에서와 같이 “기록 흐름”에서도 데이터는 프로세서(1310) 및 그의 메모리 인터페이스(1322)를 통해 이더넷 포트(1362)를 통해 DIMM/NVDIMM(1320)으로부터 외부 네트워크로 직접 이동될 수 있다. 프로세서(1310)를 사용하여 DIMM/NVDIMM(1320)를 채우는 것은 심한 프로세싱 오버헤드 장애를 초래한다. 또한, 메모리 버스(1322)는 데이터가 DIMM/NVDIMM의 안팎으로 이동함에 따라 점유되며, 이에 따라 프로세서(1310) 상에서 실행중인 다른 프로세스 또는 스레드가 이러한 판독 또는 기록 간격 동안 메모리 버스(1322)에 액세스하는 것을 차단한다. 예로서, NVDIMM이 수백 기가바이트의 스토리지 용량을 포함할 수 있는 경우, NVDIMM의 안팎으로의 데이터 전송은 잠재적으로 상당한 시간 동안 메모리 버스를 따른 동작을 차단할 수 있다. 이는 본질적으로 고속이고 매우 효율적인 처리 장치에서 초크 포인트(choke point)를 생성한다.
도 15는 NVDIMM(1520) 상의 DRAM 메모리로의 데이터 이동이 메모리 버스(1522)를 통과하지 않도록 전술한 “NVD 판독 흐름” 및 “NVD 기록 흐름”을 채용하는 데이터 흐름을 갖는 예시적인 컴퓨팅 장치(1500)의 다이어그램을 도시한다. 실선의 화살표(1560,1562)에 의해 도시된 바와 같이, 데이터는 도 13에 도시된 내부 SATA 기반 대용량 스토리지 장치(1340) 대신에 NVD 대용량 스토리지 장치(1540)로 직접 이동될 수 있다. 계속해서, 도 15에 도시된 바와 같이, “NVD 판독 흐름”에 대해, NVDC 메모리 스토리지 조합(1523)의 구성요소는 메모리 제어기(1514) 또는 메모리 버스(1522)의 개입 없이 적절하게(통신 아키텍처/프로토콜(1550)을 통해) NVD 대용량 스토리지(1540)로부터 NVDIMM 모듈(1520)의 NVD-L1(예를 들어, DRAM) 또는 NVD-L2(스토리지 클래스 메모리, 또는 등가물) 또는 둘 다로의 데이터를 판독할 수 있다(화살표 1562).
특히, 이 예시적인 장치(1500)의 NVD 대용량 스토리지 장치(1540)는 I/O 상호연결(1530)(I/O 칩셋 및 브리지(1532)를 사용하여) 또는 메모리 버스(1522)(NVDIMM의 확장 캐시를 통해) 상에서 액세스될 수 있다. 도시된 바와 같이, 네트워크 스토리지 또는 데이터 피드(1570)로부터의 데이터는 I/O 칩셋(1532), RDMA 엔진 등의 제어 하에서 이더넷(1572)을 포함할 수 있는 백도어 경로를 통해 NVD 대용량 스토리지 장치(1540)로 로드될 수 있다(화살표 1560).
도 16은 도 15의 예시적인 컴퓨팅 장치(1500)를 참조한 “NVD 기록 흐름”을 도시한다. 이 흐름에서, NVDC 구성요소는 NVD-L1, NVD-L2 및 NVD 대용량 스토리지 장치(1540) 사이에 데이터를 이동시키는 역할을 한다(화살표 1662). 계속하여, 다른 서버(미도시)에서의 I/O 칩셋 또는 프로세서 상의 임의의 DMA 엔진은 (예를 들어) 이더넷(1570)을 통해 NVD 대용량 스토리지 장치(1540)로부터 다른 서버로 데이터를 이동시킬 수 있다(화살표 1660). 데이터는 이더넷(1572)을 통해 NVD-L1 또는 NVD-L2로부터 네트워크 스토리지(1570)로 직접 이동될 수도 있다. 도 15를 참조하여 기술된 데이터 흐름 방법은 도 13 및 14를 참조하여 기술된 종래의 데이터 흐름을 지원할 수 있다.
도 15 및 16의 장치(1500)에서 응용 프로그램이 전체 스토리지 환경을 대용량 메모리 공간으로 본질적으로 “인식”하고 응용 프로그램의 동작 중 이와 같이 사용하도록 메모리 스토리지 조합(1523)의 주소화 공간이 정의된다.
다른 내부 대용량 스토리지 장치가 NVD 대용량 스토리지(1540)와 함께 I/O 상호연결(1530) 상에 이용가능한 실시예에서, 데이터는 메모리 버스(1522)를 사용하지 않는 방식으로 적절하게 그들로 이동될 수 있다. 이러한 방법은 프로세서(1510)가 NVD-L1, NVD-L2 및 NVD 대용량 스토리지 장치(1540) 사이의 모든 데이터 전송의 관리를 NVDC 구성요소(1523)로 오프로드할 수 있게 한다. 유사하게, NVD 대용량 스토리지 및 다른 스토리지 요소 사이의 모든 데이터 전송은 I/O 칩셋 또는 다른 DMA 엔진(1532)으로 오프로드되며, 이에 따라 프로세서(1510) 및 그의 메모리 버스(1522)의 리소스를 확보한다. 따라서, 이러한 장치는 종래의 구현에 비해 현저한 성능 이점을 제공하며, 또한 시스템의 스토리지 및 네트워크화된 데이터 소스 사이의 2 개의 이산 경로를 가능하게 한다.
도 17의 장치(1700)에서 I/O 연결 및 I/O 칩셋(1734)은 상당한 프로세싱 오버헤드(processing overhead)로부터 해방된다. 컴퓨팅 장치(1700)는 본 명세서의 실시예에 따른 종래의 대용량 스토리지 장치(1740) 및 NVD 대용량 스토리지 장치(1780) 모두를 포함한다. 종래의 대용량 스토리지(1780)는 프로세서(1710)에 연결되며, 메모리 스토리지 조합(1723)의 NVDIMM에 대한 직접 경로를 갖지 않는다(어떠한 자유도 없음). 반대로, 이 실시예에서, 대용량 스토리지(1780)는 I/O 상호연결(1730) 및 관련된 칩셋(1734)을 통해 프로세서(1710)에 직접 연결된다.
반대로, 도 17의 장치(1700)에서, NVD 대용량 스토리지 장치(1740)는 제어기(1714)를 사용하는 메모리 버스(1722)뿐만 아니라 (백도어(1736)를 통해) I/O 상호연결(1730)을 통해 프로세서(1710)에 연결된다. 실시예는 또한 NVD 대용량 스토리지(1740)가 NVDIMM 대용량 스토리지 데이터 이동 엔진(NVDMS-DMA)(1744)을 포함하는 것을 도시한다. 이와 같이, I/O 상호연결(1730)에 연결된 대용량 스토리지 장치(1740) 또는 대용량 스토리지 장치(1780)로의 데이터 이동은 I/O 칩셋(1734) 내의 DMA 엔진 또는 I/O 상호연결(1730)에 대한 액세스를 갖는 다른 DMA 엔진에 의해 관리될 수 있다. 그러나, 이 실시예에서, NVDMS-DMA(1744)는 NVD 대용량 스토리지(1740)로부터 종래의 대용량 스토리지(1780)로 데이터를 이동시키는데 사용될 수 있고, 그 반대도 가능하다. 다른 예시적인 실시예에서, NVDMS-DMA(1744)는 데이터를 (예를 들어) 이더넷(1762)을 통해 NVD 대용량 스토리지 장치(1740)로부터 컴퓨팅 장치(서버)(1700) 외부의 위치(1770)로 또는 그 역으로 이동하도록 구성될 수 있다.
전술한 예시적인 실시예가 제공하는 이점은 도 18a의 메모리 맵(1800)에 의해 표현되는 바와 같이 프로세서의 메모리 뷰(memory view)를 통해 더 보여질 수 있다. 이 맵(1800)은 직접 또는 간접적으로 프로세서 장치 내의 모든 주소화가능한 영역의 통합된 뷰이다. 본 명세서의 시스템 및 방법에 따르면, 모든 (또는 실질적으로 모든) 주소화가능한 위치 (또는 가상 논리 주소)는 전체 상호연결 장치 내의 다양한 구성요소 또는 장치에 맵핑될 수 있다. 따라서, 메모리 맵(1800)은 프로세서에 연결된 다양한 장치의 가능한 맵핑을 나타낸다. (다양한 실시예에서) 도시된 시스템 및 방법의 장치는 NVD 전용 연결을 통해 NVD 대용량 스토리지(AB)(1830,1832)와 NVDIMM 메모리(1820,1822) 사이의 데이터 이동(브리징 화살표 1810,1812)을 허용한다. 또한, 이는 I/O 상호연결(1862)을 통해 NVD 대용량 스토리지(예를 들어 B)(1832)와 기존 대용량 스토리지(1860) 사이의 데이터 이동(브리징 화살표 1850)을 허용한다.
도 18a의 실시예는 채널1 상의 모든 NVDIMM(1-4)이 (예를 들어, 당업자에게 공지된 메모리 인터리빙의 기술 또는 방법을 통해) 하나의 유닛(1820)으로 취급되는 반면, 채널2 상의 NVDIMM(5-8)은 다른 유닛(1822)으로 취급되며, 이들은 모두 메모리 제어기 및 버스(1864)의 연결 및 제어 하에 있다. NVD-L2는 모든 NVDIMM(1-4) 사이에 공유될 수 있으며 NVD 대용량 스토리지에 위치될 수 있다. 이는 아래의 도 28에서 더 설명된다.
도 18b의 장치(1870)에서, NVDIMM(1-4)(1820) 및 (5-8)(1822)의 콜렉션은 2 개 이상의 그룹으로서 메모리 버스(1864) 상에서 직접 액세스가능하고, 대용량 스토리지 요소(A,B 및 기존 스토리지)(1830,1832,1860)는 NVDIMM 뒤에 숨어있다. 대용량 스토리지는 직접 액세스할 수 없다; 그러나, 데이터는 백도어 인터페이스를 통해 NVDIMM과 대용량 스토리지 장치 사이에 이동될 수 있다(브리징 화살표 1850). 따라서, 응용 프로그램은 여전히 메모리 제어기 버스 인터페이스(1864)를 통해 NVD 대용량 스토리지 A(1830), 대용량 스토리지 B(1832) 및 기존 대용량 스토리지(1860)에 액세스할 수 있다. 메모리 맵에서의 주소지정능력(addressability)의 관점에서, 하나의 배열에서 NVD-L1, NVD-L2 또는 NVDIMM 그룹(1820,1822) 둘 다는 메모리 맵 내의 기존 메모리 공간과 유사한 메모리 버스(1864)를 통해 응용 프로그램 메모리 맵 뷰(1880) 상에 직접 주소화가능할 수 있는 반면, NVD 대용량 스토리지 A,B(1830,1832)는 응용 프로그램 메모리 맵 뷰(1880)에서 간접적으로 주소화된다.
다른 장치에서, NVD-L1, NVD-L2, 또는 NVDIMM 그룹(1820, 1822) 둘 다는 NVD 대용량 스토리지(1830,1832)를 위한 캐시 또는 버퍼를 형성할 수 있으므로 응용 프로그램 메모리 맵 뷰(1880)에서 직접 주소화할 수 없다. 대신 NVD 대용량 스토리지 A,B(1830,1832) 각각 그리고 기존 대용량 스토리지(1860)만이 응용 프로그램 메모리 맵 뷰(1880) 상에 나타납니다. 이러한 작동이 기능을 달성하기 위해 요구되지는 않지만, 응용 프로그램은 I/O 상호연결(1862)(현재 가상선으로 도시됨)을 통해 이들 대용량 스토리지 장치(1830,1832,1860)에 선택적으로 액세스될 수 있다. 도 18b의 파선형 브래킷(1866)은 또한 외부 장치(예를 들어, RDMA)가 대용량 스토리지 A(1830), 대용량 스토리지 B(1832) 및 기존 대용량 스토리지(1860)에 직접 액세스할 수 있음을 나타낸다. 또한 이들 장치는 백도어 인터페이스(브리지 화살표 1850)를 통해 NVDIMM1-4(1820) 및 NVDIMM5-8(1822)의 컨텐츠에 액세스할 수 있다. 전체 장치 상의 화살표(1880) 및 브래킷(1882)은 전체 NVDIMM 및 스토리지 조합을 포함하는 시스템 메모리 뷰를 나타낸다.
유사하게, 도 19a는 NVDIMM이 인터리빙되지 않은(즉, 인터리빙이 없는) 통합 메모리 맵(1900)의 예를 도시한다. 도 18의 묘사된 맵(1800)과 유사하게, NVDIMM(1920)과 NVD 대용량 스토리지 장치(1940) 사이의 데이터 이동은 본 명세서에 도시되고 기술된 NVD 전용 연결(들)을 통해 달성될 수 있다. 특히, NVDIMM1-4는 NVD 대용량 스토리지 A로의 전송 데이터(브리지 화살표 1912) 및 NVD 대용량 스토리지 B로의 전송 데이터(브리지 화살표 1914)를 도시한다. 프로세싱 환경의 필요에 따라 적절하게 NVDIMM, NVD 대용량 스토리지 및/또는 기존 대용량 스토리지의 그룹 사이에 다른 데이터 전송 장치가 구현될 수 있다는 것이 고려된다.
메모리 뷰에 나타난 바와 같이(화살표 1966 및 브라켓 1968), 도 19b는 NVDIMM1 내지 NVDIMM8(1954)의 콜렉션으로부터의 각각의 NVDIMM이 메모리 버스(1952) 상에서 개별적으로 직접 액세스가능한 반면에, 대용량 스토리지 요소(대용량 스토리지 A(1960), 대용량 스토리지 B(1962) 및 기존 스토리지(미도시))는 NVDIMM(1954) 뒤에 숨어있다. 대용량 스토리지(1960,1962)는 직접 액세스할 수 없다(직접 액세스가 없음); 그러나, 데이터는 백도어 인터페이스를 통해 NVDIMM(1954)와 대용량 스토리지 장치(1960,1962) 사이에서 이동될 수 있다. 따라서, 응용 프로그램은 여전히 메모리 제어기 버스 인터페이스(1952)를 통해 NVD 대용량 스토리지 A(1960), 대용량 스토리지 B(1962) 및 기존 대용량 스토리지(있는 경우)에 액세스할 수 있다. 도 18b에서 기술된 주소지정능력의 양태는 도 19b에 도시된 실시예에 적용된다. 선택적으로, 필요하지 않더라도 응용 프로그램은 I/O 상호연결(1970)(가상 선으로 도시)을 통해 이들 대용량 스토리지 장치에 액세스할 수 있다. 파선형 브래킷(1972)은 외부 장치(예를 들어, RDMA)가 대용량 스토리지 A(1960), 대용량 스토리지 B(1962) 및 기존 대용량 스토리지(있는 경우)에 직접 액세스할 수 있음을 나타낸다. 이들 장치는 또한 백도어 인터페이스를 통해 NVDIMM1-8(1954)의 컨텐츠에 액세스할 수 있다.
도 19c의 예시적인 장치(1980)는 시스템 대용량 스토리지(1984)뿐만 아니라 모든 NVDIMM이 메모리 제어기 버스(1986) 상에서 직접 액세스가능한 추가 실시예를 제공한다. 단일 시스템 대용량 스토리지 장치가 도시되어 있지만, 2 개 이상의 대용량 스토리지 장치가 도 18a, 18b, 19a 및/또는 19b와 유사한 방식으로 제공될 수 있다는 것이 명백하게 고려된다. 선택적으로, 응용 프로그램은 I/O 상호연결(1988)(가상선으로 도시됨)을 통해 대용량 스토리지 장치(들)에 선택적으로 액세스할 수 있다. 파선형 브라켓(1990)은 외부 장치(예를 들어, RDMA)가 시스템 대용량 스토리지(1984) 및 기존 대용량 스토리지(1992)에 직접 액세스할 수 있음을 나타낸다. 또한, 그들은 NVDIMM1-NVDIMM8의 컨텐츠에 액세스할 수 있다. 일반적으로, 브리지 화살표(1994)에 의해 나타나는 것과 같이, 대용량 스토리지(1984)와 기존 대용량 스토리지 사이의 데이터의 전송은 프로세서 또는 호스트 엔진의 개입 없이 시스템 네트워크 상에서 발생할 수 있다. 위의 묘사에서와 같이, 시스템은 NVDIMM(1982) 및 스토리지(1984,1992)를 단일 유닛으로 본다(화살표 1996 및 브라켓 1998).
III. NVDIMM 티어
멀티-레벨 캐시를 갖는 장치(2000)가 비제한적인 예로 도 20a에 도시된다. 도시된 바와 같이, 일부 또는 모든 메트릭(성능, 내구성, 레이턴시, 전력 등)을 공유하는 DRAM 또는 다른 기술은 NVDIMM(1,2,3,4 등)(2011)의 NVD-L1 캐시(2010)를 형성한다. SRAM, DRAM, 플래시 또는 다른 스토리지 클래스 메모리를 포함하지만 이에 제한되지 않는 기술은 NVD-L2 캐시(2020)를 포함할 수 있다. NVD-L1 캐시(2010)는 휘발성 또는 비휘발성일 수 있지만, NVD-L2 캐시(2020)는 일반적으로 성질이 비휘발성이지만 경우에 따라 휘발성이 있을 수 있다. NVD 대용량 스토리지(2030)를 위한 매체는 임의의 지속성 메모리 기술을 포함할 수 있다. 도 20의 예시적인 실시예는 모든 티어, NVD-L1(2010), NVD-L2(2020) 및 NVD 대용량 스토리지(2030) 모두가 외부 세계(2052)와의 연결을 제공하는 NVD 전용 연결(2050)을 이용하는 NVD 제어기(2032)의 제어 하에 동일한 NVDIMM PCB 상에 배치될 수 있다.
도 20b의 실시예의 장치(2040)는 위에 기술된 NVD-L1(2010) 및 NVD-L2(2020)가 NVDIMM(2041) 내에 배치지만, 스토리지 티어는 스토리지 매체의 일부(2031)가 NVDIMM(2041) 상에 배치될 수 있으며 스토리지 매체의 일부(2032)가 NVD 대용량 스토리지(2044) 상에 배치될 수 있음에 따라 두 개의 구성요소로 전역에 분산된다. I/O 상호연결 또는 다른 외부 엔티티(2051)로의 외부 연결(2050)은 연결(2060)을 통해 제공될 수 있다. NVD 제어기(2042)는 NVDIMM(2041) 상에 상주하고 (브리지 2045에 의해) 상호연결된 NVD 스토리지 스위치 및 제어기(2043)은 NVD 대용량 스토리지(2044) 상에 상주한다.
멀티 레벨 캐시를 갖는 다른 장치(2100)가 비제한적인 예로 도 21의 실시예에 도시된다. 도 21의 예시적인 실시예는 NVDIMM(2120) 상에 배치된 NVD-L1(2110)을 도시한다. 그러나, NVD-L2(2120) 및 NVD 대용량 스토리지 매체(2130)는 NVD 대용량 스토리지 장치(2140) 상에 배치된다. 외부 연결은 연결(2160)에 의해 제공된다. NVD 제어기(2150)는 NVDIMM(2120) 상에 상주하고 NVD 스토리지 스위치 및 제어기(2160)은 NVD 대용량 스토리지(2140) 상에 상주한다. 구성요소는 브리지(2170)에 의해 연결된다.
IV. NVD 대용량 스토리지 장치
NVD 대용량 스토리지 장치는 고밀도 및 용량을 제공하는 임의의 사용가능한 비휘발성 스토리지 기술을 사용할 수 있다. NVD 대용량 스토리지 장치는 사용가능한 메모리 및/또는 스토리지 기술의 임의의 조합을 데이터 버퍼 또는 데이터 캐시로 사용할 수 있다. 이러한 비휘발성 스토리지 기술의 사례 또는 구성요소를 “대량 스토리지 매체”라고 한다. NVDIMM과 NVD 대용량 스토리지 장치 사이의 연결에 사용되는 프로토콜은 PCIe를 포함하되 이에 제한되지 않는 임의의 적절한 고속 프로토콜 기술일 수 있다. 데이터 링크는 기존의 케이블(예를 들어, PCIe 케이블), 소형 구현을 제공하는 광학 케이블 또는 임의의 다른 물리적 또는 무선 연결일 수 있다. NVD 대용량 스토리지 장치는 장치에 연결된 NVDIMM(들)뿐만 아니라 I/O 상호연결을 통해 임의의 엔티티에 액세스할 수 있다. 이는 I/O 칩셋의 프로세서 또는 DMA가 NVD 대용량 스토리지 장치로부터 네트워크 드라이브 등을 포함하는 다른 위치로 데이터를 이동시키거나 그 반대로 이동시키도록 허용할 수 있다.
도 22의 예시적인 실시예는 비제한적인 예로서 PCIe 데이터 상호연결(2210, 2212)을 갖는 NVD 대용량 스토리지 장치(2200)를 도시한다. 실시예에서, 상이한 통신 프로토콜은 전체 대용량 스토리지 환경 내의 상이한 모듈 및/또는 장치 사이에 채용될 수 있다. 예를 들어, 프로토콜 A는 (커넥터(2220)를 통해) NVDIMM과 NVD 대용량 스토리지 장치(2200)를 연결하는 데 사용되며; 프로토콜 B는 (커넥터(2230)를 통해) 프로세서 I/O에 연결하는 데 사용되며; 프로토콜 C는 NVD 대용량 스토리지 메모리 제어기(2240)에 연결하는 데 사용된다.
위의 도 2에 도시된 기존 대용량 스토리지 장치(240)의 예시적인 장치(200)에서, (PCIe 버스 상의) 이러한 장치는 NVMe 드라이브일 수 있다. NVMe 드라이브는 PCIe 토폴로지로 연결되는 PCIe 슬레이브(PCIe 엔드 포인트라고 함)를 갖는다. PCIe 토폴로지의 루트에는 PCIe 마스터(PCIe 루트 콤플렉스라고 함)가 있다. 이러한 배열은 프로세서 자체의 일부이거나 도 2에 도시된 바와 같이 I/O 칩셋(234) 내에서 인스턴스화된다. 도 22의 I/O(2230)에 대한 PCIe 엔드 포인트 커넥터는 도 2의 이러한 기존 장치와 유사하게 배열된다. 예시적으로, 도 22에서, NVDIMM(2220)에 대한 커넥터로서 도시된 다른 NVD 대용량 스토리지 장치 액세스 포트는 사용중인 개별 통신 프로토콜의 슬레이브 또는 마스터가 될 수 있다. 예를 들어 PCIe 프로토콜을 사용하기 위해 NVDIMM(2220)에 대한 커넥터가 PCIe 엔드 포인트 또는 PCIe 루트 콤플렉스로 배열될 수 있다. NVDIMM(2220)에 대한 커넥터가 PCIe 루트 콤플렉스인 혁신적인 실시예에서, NVD 대용량 스토리지 장치(2200)는 NVD 스토리지 디바이스를 NVDIMM 또는 NVDIMM들과 연결하는 로컬 PCIe 토폴로지의 루트가 된다. PCIe가 다른 프로토콜로 대체되더라도 동일하게 적용된다. 이러한 예시적인 장치의 이점은 NVD 대용량 스토리지가 메모리 인터페이스(1522)와 독립적으로 또는 대신하여 전용 연결(1550)에서 마스터로서 작동할 때 다수의 NVDIMM이 자연적으로 PCIe 토폴로지 또는 다른 프로토콜을 효율적으로 공급할 수 있다는 것이다. 예시적은 대용량 스토리지 장치(2200)는 또한 NVD 대용량 스토리지 장치(2200) 안팎으로 데이터를 이동시키는 데 사용될 수 있는 NVDMS-DMA(2250)를 도시한다.
V. NVD 대용량 스토리지 장치 - 인터리빙
DRAM 칩은 일반적으로 다수의 뱅크(bank)로 구성된다. DRAM 뱅크에서 DDR 액세스를 매우 효율적으로 만들기 위해 “인터리빙”이라는 방법이 사용된다. 이 방법은 메모리 버스 상에 연결된 다양한 DIMM/NVDIMM 전역에 인접한 액세스를 분산시킨다. 이 방법에서 연속적인 DDR 액세스는 동일한 NVDIMM에 있지 않고 대신 NVDIMM 전역에 분산되어 있다. 프로세서가 “기존 대용량 스토리지 장치로부터 인터리빙된 NVDIMM 그룹으로 데이터를 이동시킬 때 각각의 NVDIMM은 원래 데이터의 일부만을 갖는다. 이 NVDIMM 그룹 내의 데이터가 NVD 기록 흐름(도 16에 도시된 화살표 1662 참조)을 통해 NVD 대용량 스토리지 장치로 다운스트림되면, 각각의 NVDIMM은 단지 원래 데이터의 일부인 데이터 스트림을 제공한다. 따라서, NVD 대용량 스토리지 장치가 인터리빙된 여러 NVDIMM에 연결될 때 NVD 대용량 스토리지에 도달하는 데이터는 원래 데이터의 재배열된 버전이다. 이 재배열된 데이터가 I/O 상호연결을 통해 프로세서에 의해 판독되면, 판독된 데이터는 인터리빙된 조직에서 인식될 수 없다. 동일한 방식으로, NVDIMM의 지속 데이터가 NVDIMM과 함께 이동하므로 NVDIMM이 동일한 상대 위치에 삽입되어야 한다. NVDIMM의 임의의 재배치는 인터리빙된 설정에서 데이터를 인식할 수 없게 될 수 있다. 데이터가 NVD 대용량 스토리지 장치로부터 인터리빙된 NVDIMM의 그룹으로 이동될 때, 유사한 특징이 NVD 판독 흐름(도 15에서 화살표 1562 참조)에서 발생한다.
따라서, 도 23의 대용량 스토리지 장치(2300)에 도시된 데이터 처리 시스템 및 방법은 모든 인터리빙된 NVDIMM로부터 오는 데이터를 처리하고 NVD 대용량 스토리지 장치(2300)에 기록하기 전에 인터리빙을 보상하기 위해 NVD 인터리브 디-인터리브 블록(2360)을 채용함으로써 NVDIMM 장치의 전술한 단점을 완화시킨다. 이는 NVD 대용량 스토리지 장치의 데이터가 원래 데이터와 동일한 구조를 유지하게 하며 따라서 I/O 상호연결 또는 메모리 버스를 통해 판독되었느지 프로세서에 의해 인식될 수 있게 한다. 유사하게, 외부 소스가 NVD 대용량 스토리지에서 컨텐츠를 판독할 때 데이터 무결성(data integrity)이 유지되도록 한다. 그렇지 않으면, I/O에 대한 커넥터(2330), NVDIMM에 대한 커넥터(2320), 로컬 상호연결(예를 들어, PCIe)(2310), NVD 대용량 스토리지 제어기(2340) 및 NVDMS-DMA(2350)는 모두 이 실시예에서 대용량 스토리지 장치(2200)에서 그들의 대응하는 요소에 유사하게 또는 동일하게 기능한다.
도 24b는 인터리브 및 디-인터리브 프로세스(프로세서)(2442)가 상호연결(2444) 및 NVD 대용량 스토리지 제어기(2446) 사이에 위치되는 다른 실시예에 따른 장치(2440)를 도시한다.
도 24c는 어떻게 장치가 호스트 프로세서(2452)로부터 발행되는 인터리빙된 데이터를 처리하는지 도시하기 위해 도 24b의 예시적인 장치(2440)의 절반(2450)(즉, 메모리 채널 1 및 2)을 더 상세히 도시한다. 이 예는 프로세서가 DIMM 또는 NVDIMM(NVDIMM-A, NVDIMM-B, NVDIMM-C 및 NVDIMM-D) 전역에 데이터 패킷(예를 들어, 패킷0-패킷7)(2454)을 분산시키는 인터리브 모드의 호스트 기록 동작(화살표 2462 및 2464)을 도시한다. 이 새로운 구현 및 기술에서, 장치(2450)는 일반적으로 NVDIMM에서 NVD 대용량 스토리지 장치(2458)로 이동하는 분산 데이터 패킷(0-7)이 호스트 프로세서(2452)에 제공된 원래의 순서를 복원하도록(즉, 패킷 2466) NVD 대용량 스토리지 장치(2458)에서 다시 병합될 수 있는 NVD 기록 흐름(화살표 2462 및 2464)의 방식으로 행동한다.
도 24d는 NVD 판독 흐름(화살표 2472 및 2474)을 설명하는 도 24의 장치(2450)와 유사하거나 동일한 장치(2470)를 도시한다. 도시된 신규 접근법에서, 호스트 프로세서(2452)가 인터리빙된 모드에서 패킷을 판독할 때 재구성 프로세스(프로세서)(2472)를 사용하여 원래의 순서를 적절하게 재구성할 수 있기 때문에 이러한 방식으로 대용량 스토리지(2458)로부터의 데이터 패킷(2476)(예를 들어, 패킷0-7)은 NVDIMM(2456) 전역에 적절하게 분산된다.
일반적인 NVDIMM은 NVDIMM과 함께 데이터 컨텐츠를 이동시키므로, 아래 도시된 바와 같이 NVDIMM(NVDIMM-D, NVDIMM-C, NVDIMM-A 및 NVDIMM-B)(2456)을 재배치하는 것은 전통적으로 시스템 충돌이 발생할 수 있다. 그러나, 본 명세서에 기술된 새로운 장치 및 기술은 각각의 NVDIMM의 위치를 인식할 수 있고, NVDIMM의 신원(identity)보다는 NVDIMM의 위치에 기초하여 데이터를 적절하게 이동시킬 수 있다. 따라서, 예로서, NVDIMM-D가 시스템 메모리 보드의 제1 메모리 슬롯(일반적으로 (예를 들어)NVDIMM-A에 의해 점유됨)에 삽입되더라도, 장치는 기능적으로 견고함을 유지한다. 즉, NVDIMM 또는 다른 메모리 구조는 대용량 스토리지 및 프로세서 사이에 이동하는 데이터 패킷의 전체 구성에 영향을 미치지 않고 슬롯간에 스왑될 수 있다.
VII. NVD 대용량 스토리지 장치 - 에너지 장치
NVD-L1 캐시가 휘발성 메모리로 구성된 경우 NVDIMM은 캐시 계층의 비휘발성 메모리 다운스트림에 데이터를 백업해야 한다. 이러한 이유로, NVD-L1 캐시와 같은 휘발성 메모리를 갖는 NVDIMM은 일반적으로 백업 작업을 위해 모듈 및 관련 구성요소에 전원을 공급하는 에너지 소스가 필요하다. 유사하게, NVD-L2와 심지어 대용량 스토리지는 예기치 않은 이벤트가 발생하는 동안 데이터가 손실되지 않도록 제한된 전원 공급을 필요로 한다. 예시적인 실시예에서, 에너지 소스/전력 공급기(2570)는 도 25에 도시된 바와 같이 NVDIMM PCB 자체 또는 NVD 대용량 스토리지 장치(2500) 상에 배치될 수 있다. 다른 예시적인 실시예에서, 에너지 소스/전력 공급기는 도 26에 도시된 바와 같이 NVD 대용량 스토리지 장치(2600)와 별개로 위치될 수 있다. 전체 시스템 플랫폼에 전력이 손실되는 경우 이 에너지 소스는 플랫폼의 에너지 소스의 상태에 관계없이 영구적인 백업을 제공할 수 있다. 따라서 대용량 스토리지 어레이 내의 나머지 스토리지 작업을 완료하기에 충분해야 한다. 기존 구현에서, NVDIMM은 NVDIMM 전역에 분산되거나 한 곳에서 통합된 별도의 전원 공급을 제공한다. 유사하게, 솔리드 스테이트 드라이브(SSD)는 정전이 발생했을 때 진행중인 트랜잭션을 완료하기 위해 자체 프로비져닝(provisioning)을 때때로 수행한다. 실시예에 기술된 새로운 장치 및 기술에서, 모든 NVD 스토리지 티어 및 NVD 대용량 스토리지를 포함하는 전체 멀티 레벨 메모리, 스토리지 계층 및 관련 어셈블리는 나머지 시스템과 별도로 프로비져닝될 수 있는 단일 전원 도메인으로 분할될 수 있다.
메모리 버스 상의 스토레지 상의 멀티 레벨 데이터 캐시의 상술한 실시예는 프로세서 장치와 관련하여 모든 이용가능한 스토리지의 사용을 최적화하기 위한 견고하고 효율적인 시스템을 제공한다는 것이 명백하다. 이 시스템 및 방법은 종래의 방식으로 데이터 액세스를 가능하게 하는 동시에 DRAM 액세스 메모리 버스를 채용하여 DRAM 기반 메모리 및 스토리지 클래스 메모리와 같은 최신 메모리 유형을 포함하는 다른 형태의 비휘발성 스토리지 모두에 직접 액세스한다. 이 시스템 및 방법은 또한 증가될 효율성을 위해 메모리 및 스토리지 구조의 인터리빙을 허용한다.
전술한 설명은 본 발명의 예시적인 실시예의 상세한 설명이다. 본 발명의 사상 및 범위를 벗어나지 않고 다양한 변경 및 추가가 이루어질 수 있다. 전술한 다양한 실시예 각각의 특징은 관련된 새로운 실시예에서 다수의 특징 조합을 제공하기 위해 적절하게 다른 설명된 실시예의 특징과 결합될 수 있다. 또한, 전술한 설명은 본 발명의 장치 및 방법의 다수의 개별적인 실시예를 설명하고 있지만, 본 명세서에서 설명된 것은 단지 본 발명의 원리의 응용을 설명하기 위한 것이다. 또한, 주어진 측정, 가치 또는 특징과 관련하여 “실질적으로” 또는 “대략적으로”라는 용어가 사용되는 경우에는 원하는 결과를 달성하기 위해 정상적인 작동 범위 내에 있는 양을 지칭하지만 본질적인 부정확성으로 인한 일부 변동성 및 시스템의 허용된 공차(예를 들어 1-2%) 내의 오류를 포함한다. 본 명세서에서 사용되는 “프로세스” 및/또는 “프로세서”라는 용어는 다양한 전자 하드웨어 및/또는 소프트웨어 기반 기능 및 구성요소를 포함하도록 광범위하게 쓰여져야 함을 주목해야 한다. 또한, 도시된 프로세스 또는 프로세서는 다른 프로세스 및/또는 프로세서와 결합되거나 다양한 서브 프로세스 또는 프로세서로 분할될 수 있다. 이러한 서브 프로세스 및/또는 서브 프로세서는 본 명세서의 실시예에 따라 다양하게 조합될 수 있다. 마찬가지로, 본 명세서의 임의의 기능, 프로세스 및/또는 프로세서는 프로그램 명령의 비일시적 컴퓨터 판독가능 매체로 구성된 전자 하드웨어, 소프트웨어 또는 하드웨어 및 소프테웨어(예를 들어, 펌웨어)의 조합을 사용하여 구현될 수 있음이 명백하게 고려된다. 보다 일반적으로, 본 명세서에서 고려되는 컴퓨팅 시스템은 (예를 들어) 도 1 내지 도 4에서 설명된 종래 시스템의 하나 이상의 특징을 포함할 수 있으며, 도시된 실시예에 따라 설명된 다른 특징 및 새로운 메모리 스토리지 조합과 상호작용하도록 구성된다. 또한, 본 명세서에서 사용되는 NVDIMM이라는 용어는 DRAM 또는 다른 유사한 장치에 제한되지 않고, 당업자에게 명확해야 하는 다양한 메모리 구조 및/또는 메모리 구성요소의 조합을 포함하도록 광범위하게 쓰여져야 한다. 따라서, 이 설명은 단지 예로서 쓰여지며, 본 발명의 범위를 다른 방식으로 제한하려는 것은 아니다.
Claims (20)
- 컴퓨팅 시스템으로서,
메모리 버스에 상호연결된 프로세서 어셈블리;
상기 메모리 버스에 상호연결되고 상기 메모리 버스를 통해 상이한 메모리 유형의 조합의 액세스를 허용하도록 구성된 메모리 스토리지 조합; 및
상기 메모리 버스를 통해 통합 주소 공간의 일부로 메모리 유형의 조합을 주소화하도록 배열되는 제어기;를 포함하는,
컴퓨팅 시스템. - 제1항에 있어서,
상기 조합은 계층 중 적어도 하나가 상기 프로세서에 의해 사용되는 데이터에 대한 최종 휴지 장소를 구성하는 방식으로 메모리의 계층으로 조직되는,
컴퓨팅 시스템. - 제2항에 있어서,
비휘발성 대용량 데이터 스토리지를 액세스하기 위한 I/O 상호연결을 더 포함하는,
컴퓨팅 시스템. - 제2항에 있어서,
외부 장치와 비휘발성 대용량 데이터 스토리지 사이의 통신을 허용하는 백도어 상호연결을 더 포함하는,
컴퓨팅 시스템. - 제2항에 있어서,
상기 상이한 메모리 유형은 랜덤 액세스 메모리(RAM) 및 비휘발성 대용량 데이터 스토리지를 포함하는,
컴퓨팅 시스템.. - 제5항에 있어서,
상기 RAM 기반 데이터 스토리지는 NVDIMM 메모리 구조를 정의하는,
컴퓨팅 시스템. - 제4항에 있어서,
NVDIMM 메모리 구조는 스토리지 클래스 메모리를 포함하는,
컴퓨팅 시스템. - 제7항에 있어서,
NVDIMM 메모리 구조는 적어도 DRAM을 갖는 제1 계층 NVD 캐시 및 상기 스토리지 클래스 메모리를 갖는 제2 계층 NVD 캐시로 조직되는,
컴퓨팅 시스템. - 제7항에 있어서,
상기 제2 계층 NVD 캐시는 솔리드 스테이트 드라이브(SSD)를 포함하는,
컴퓨팅 시스템. - 컴퓨팅 시스템으로서,
제어기 및 메모리 버스를 포함하는 프로세서;
상기 메모리 버스에 상호연결된 복수의 메모리 구조;
상기 메모리 구조와 상호연결되고, 상기 프로세서, 상기 메모리 구조 및 대용량 스토리지 사이에서의 데이터 전달을 위한 최종 휴지 장소를 제공하는 상기 메모리 버스를 통해 주소화가능한 대용량 스토리지; 및
데이터의 패킷을 배열하여 그들이 상기 메모리 구조 사이에서 분배되도록 인터리빙되고 각각의 프로세서 및 대용량 스토리지에서 조직화된 패턴으로 디-인터리빙되는 인터리버 및 디-인터리버;를 포함하는,
컴퓨팅 시스템. - 제10항에 있어서,
상기 인터리버 및 디-인터리버는 메모리에 기록된 패킷이 상기 프로세서에서 조직화된 패턴으로부터 인터리빙되어 상기 메모리 구조를 통과하고 조직화된 패턴으로 대용량 스토리지에 저장되도록 하는,
컴퓨팅 시스템. - 제11항에 있어서,
상기 인터리버 및 디-인터리버는 메모리로부터 판독된 패킷이 상기 대용량 스토리지에서 조직화된 패턴으로부터 인터리빙되어 상기 메모리 구조를 통과하고 조직화된 패턴으로 프로세서에 의해 수신되도록 하는,
컴퓨팅 시스템. - 제12항에 있어서,
상기 인터리버 및 디-인터리버는 상기 메모리 구조의 전체 배열에서 메모리 구조 각각의 위치에 응답하여, 상기 패킷들이 상기 배열 내의 메모리 구조 각각의 위치에 기초하여 인터리빙되고 디-인터리빙되는,
컴퓨팅 시스템. - 컴퓨팅 시스템에 있어서,
제어기 및 메모리 버스를 포함하는 프로세서;
상기 메모리 버스에 상호연결되는 복수의 메모리 구조;
상기 메모리 구조와 상호연결되며, 상기 프로세서, 상기 메모리 구조 및 메모리 스토리지 사이에서의 데이터 전달을 위한 최종 휴지 위치를 제공하는 메모리 버스를 통해 주소화가능한 대용량 스토리지;를 포함하며,
상기 대용량 스토리지는 상기 대용량 스토리지를 상기 메모리 구조에 연결하는 통신 프로토클 토폴로지의 루트를 정의하는,
컴퓨팅 시스템. - 제14항에 있어서,
프로토콜은 PCIe, Gen-Z, SATA, SAS, 이더넷, Infiniband○R, SCSI 및 iSCSI 중 적어도 하나를 포함하는,
컴퓨팅 시스템. - 제14항에 있어서,
상기 메모리 구조는 NVDIMM을 포함하는,
컴퓨팅 시스템. - 컴퓨팅 시스템에 있어서,
제어기 및 메모리 버스를 포함하는 프로세서;
제어기를 가지며 상기 메모리 버스에 상호연결되는 NVDIMM 장치;
상기 NVDIMM 장치와 상호연결되며, 상기 프로세서, 상기 NVDIMM 장치 및 대용량 스토리지 사이에서의 데이터 전달을 위한 최종 휴지 장소를 제공하는 상기 메모리 버스를 통해 주소화가능한 대용량 스토리지 ― 상기 NVDIMM 장치 및 상기 대용량 스토리지는 메모리 조합을 정의함 ―; 및
상기 NVDIMM 제어기를 상기 대용량 스토리지와 결합시키는 전용 고속 연결;을 포함하는,
컴퓨팅 시스템. - 컴퓨팅 시스템으로서,
제어기 및 메모리 버스를 포함하는 프로세서;
상기 메모리 버스에 상호연결되는 복수의 메모리 구조;
상기 메모리 구조와 상호연결되며, 상기 프로세서, 상기 메모리 구조 및 대용량 스토리지 사이에서의 데이터 전달을 위한 최종 휴지 위치를 제공하는 메모리 버스를 통해 주소화가능한 대용량 스토리지; 및
대용량 스토리지를 프로세서로의 상호연결 없이 외부 장치에 상호연결하는 백도어 장치;를 포함하는,
컴퓨팅 시스템. - 컴퓨팅 시스템에서 데이터를 처리하는 방법으로서,
NVDIMM 장치와 상호연결되는 메모리 버스를 갖는 프로세서를 제공하는 단계;
상기 메모리 버스 상의 주소 공간의 일부를 정의하는 대용량 스토리지를 상호연결하는 단계; 및
프로세서에 의해 사용될 전체 주소 공간의 일부로서 각각의 NVDIMM 장치 및 대용량 스토리지에 메모리를 주소화하는 단계 ― 데이터는 그에 대한 최종 휴지 장소로서 상기 대용량 스토리지에 저장됨 ―;를 포함하는,
컴퓨팅 시스템에서 데이터를 처리하는 방법. - 제19항에 있어서,
상기 데이터를 저장하고 상기 최종 휴지 장소로서 적어도 하나의 계층을 지정하기 위한 캐시의 계층을 제공하는 단계를 더 포함하는,
컴퓨팅 시스템에서 데이터를 처리하는 방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662346567P | 2016-06-07 | 2016-06-07 | |
US62/346,567 | 2016-06-07 | ||
US15/615,800 US10747694B2 (en) | 2016-06-07 | 2017-06-06 | Multi-level data cache and storage on a memory bus |
US15/615,800 | 2017-06-06 | ||
PCT/US2017/036389 WO2017214295A1 (en) | 2016-06-07 | 2017-06-07 | Multi-level data cache and storage on a memory bus |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190024957A true KR20190024957A (ko) | 2019-03-08 |
Family
ID=60483351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197000456A KR20190024957A (ko) | 2016-06-07 | 2017-06-07 | 메모리 버스 상의 스토리지 및 멀티 레벨 데이터 캐시 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10747694B2 (ko) |
JP (1) | JP2019518286A (ko) |
KR (1) | KR20190024957A (ko) |
WO (1) | WO2017214295A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180343934A1 (en) * | 2017-06-05 | 2018-12-06 | Worcester Polytechnic Institute | Weatherproof cover |
US11500576B2 (en) | 2017-08-26 | 2022-11-15 | Entrantech Inc. | Apparatus and architecture of non-volatile memory module in parallel configuration |
US10831963B1 (en) * | 2017-08-26 | 2020-11-10 | Kong-Chen Chen | Apparatus and method of parallel architecture for NVDIMM |
US10929291B2 (en) * | 2017-12-06 | 2021-02-23 | MemRay Corporation | Memory controlling device and computing device including the same |
US10956323B2 (en) * | 2018-05-10 | 2021-03-23 | Intel Corporation | NVDIMM emulation using a host memory buffer |
US11163475B2 (en) * | 2019-06-04 | 2021-11-02 | International Business Machines Corporation | Block input/output (I/O) accesses in the presence of a storage class memory |
US11163490B2 (en) * | 2019-09-17 | 2021-11-02 | Micron Technology, Inc. | Programmable engine for data movement |
US11509751B2 (en) * | 2020-12-23 | 2022-11-22 | Dell Products L.P. | Self-describing system using single-source/multi-destination cable |
JP2023007761A (ja) | 2021-07-02 | 2023-01-19 | キオクシア株式会社 | メモリシステム |
CN115543876B (zh) * | 2022-11-24 | 2023-03-31 | 北京紫光芯能科技有限公司 | 用于验证地址译码功能的方法及装置、电子设备、介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874831B2 (en) | 2007-06-01 | 2014-10-28 | Netlist, Inc. | Flash-DRAM hybrid memory module |
KR101573047B1 (ko) | 2009-01-23 | 2015-12-02 | 삼성전자주식회사 | 복합 메모리 장치 및 이를 이용한 i/o 처리 방법 |
US8819359B2 (en) | 2009-06-29 | 2014-08-26 | Oracle America, Inc. | Hybrid interleaving in memory modules by interleaving physical addresses for a page across ranks in a memory module |
CN103946812B (zh) * | 2011-09-30 | 2017-06-09 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
EP2761468B1 (en) | 2011-09-30 | 2019-12-11 | Intel Corporation | Platform storage hierarchy with non-volatile random access memory having configurable partitions |
US9880754B2 (en) | 2014-07-09 | 2018-01-30 | Dell Products, Lp | System and method for enabling transportability of a non volatile dual inline memory module |
US20170153994A1 (en) * | 2015-11-30 | 2017-06-01 | Robert J. Royer, Jr. | Mass storage region with ram-disk access and dma access |
US10163508B2 (en) * | 2016-02-26 | 2018-12-25 | Intel Corporation | Supporting multiple memory types in a memory slot |
-
2017
- 2017-06-06 US US15/615,800 patent/US10747694B2/en not_active Expired - Fee Related
- 2017-06-07 KR KR1020197000456A patent/KR20190024957A/ko unknown
- 2017-06-07 WO PCT/US2017/036389 patent/WO2017214295A1/en active Application Filing
- 2017-06-07 JP JP2018564965A patent/JP2019518286A/ja active Pending
-
2020
- 2020-08-17 US US16/995,433 patent/US11698873B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11698873B2 (en) | 2023-07-11 |
WO2017214295A1 (en) | 2017-12-14 |
US20210034555A1 (en) | 2021-02-04 |
US10747694B2 (en) | 2020-08-18 |
JP2019518286A (ja) | 2019-06-27 |
US20170351626A1 (en) | 2017-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11698873B2 (en) | Interleaving in multi-level data cache on memory bus | |
US9921751B2 (en) | Methods and systems for mapping a peripheral function onto a legacy memory interface | |
US10453530B2 (en) | RDMA-SSD dual-port unified memory and network controller | |
US6754785B2 (en) | Switched multi-channel network interfaces and real-time streaming backup | |
JP3995672B2 (ja) | 改良型raidメモリ・システム | |
CN104508644B (zh) | 智能存储器缓冲器 | |
US8938574B2 (en) | Methods and systems using solid-state drives as storage controller cache memory | |
KR101638764B1 (ko) | 균일한 판독 대기시간을 위한 중복 데이터 저장 | |
EP2414927B1 (en) | Data storage system and method of processing a data access request | |
TWI446353B (zh) | 在堆疊式記憶體中之錯誤校正 | |
US11157200B2 (en) | Communicating over portions of a communication medium | |
US8074021B1 (en) | Network storage system including non-volatile solid-state memory controlled by external data layout engine | |
CN105472047B (zh) | 存储系统 | |
CN105843557B (zh) | 冗余存储系统、冗余存储方法和冗余存储装置 | |
US8331123B2 (en) | High performance solid-state drives and methods therefor | |
CN106055493A (zh) | 存储系统、存储模块及其操作方法 | |
JP2001256003A (ja) | ディスクアレイ制御装置、そのディスクアレイ制御ユニットおよびその増設方法 | |
CN100464290C (zh) | 缓存管理系统 | |
US20110252176A1 (en) | Storage system mounted with plurality of processors | |
US9645767B2 (en) | Aggregating storage elements using a virtual controller | |
CN111694772A (zh) | 存储器控制器 | |
WO2016122602A1 (en) | Systems and methods for sharing non-volatile memory between multiple access models |