KR102408149B1 - 저장 매체에 대한 동기식 메모리 버스 액세스 - Google Patents
저장 매체에 대한 동기식 메모리 버스 액세스 Download PDFInfo
- Publication number
- KR102408149B1 KR102408149B1 KR1020207025527A KR20207025527A KR102408149B1 KR 102408149 B1 KR102408149 B1 KR 102408149B1 KR 1020207025527 A KR1020207025527 A KR 1020207025527A KR 20207025527 A KR20207025527 A KR 20207025527A KR 102408149 B1 KR102408149 B1 KR 102408149B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- page
- buffer
- host
- data
- 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
-
- 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/1689—Synchronisation and timing concerns
-
- 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
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/1673—Details of memory controller using buffers
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
- G06F13/4243—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40607—Refresh operations in memory devices with an internal cache or data buffer
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40611—External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
제1 메모리 및 제2 메모리를 포함하는, 메모리 컴포넌트들로서, 상기 제1 메모리는 제1 복수의 윈도우들 중 하나 이상 동안 메모리 버스를 통해 판독 및 기록 액세스를 위해 호스트 시스템에 이용 가능한, 메모리 컴포넌트들을 갖는 컴퓨팅 시스템. 컴퓨팅 시스템은 메모리 컴포넌트들에 동작 가능하게 결합된 프로세싱 장치로서, 호스트 시스템의 드라이버로부터, 제2 메모리에 저장된 데이터의 페이지에 관한 요청을 수신하고; 상기 요청에 응답하여, 제2 메모리로부터 버퍼로 페이지를 전송하고; 버퍼로부터 제1 메모리로 페이지를 기록하되, 상기 페이지는 메모리 버스에 대한 리프레시 타이밍에 대응되는 제2 복수의 윈도우들 중 적어도 하나 동안 제1 메모리에 기록되고, 리프레시 타이밍은 호스트 시스템에서 제어되는, 상기 프로세싱 장치를 더 포함한다.
Description
관련 출원들
이 출원은 Stonelake 등에 의해, 2018년 10월 11일자로 출원된 "Synchronous Memory Bus Access to Storage Media" 이라는 명칭의 미국 비-임시 출원 일련 번호 제16/157,900호, 및 2018년 2월 5일자로 출원된 "Synchronous Memory Bus Access to Storage Media and Dram Using an SRAM Buffer" 이라는 명칭의 미국 임시 출원 일련 번호 제62/626,577호에 대한 우선권을 주장하며, 이 출원들의 전체 내용들은 본원에 완전히 명시된 바와 같이 참조로서 통합된다.
기술 분야
본원에 개시된 적어도 일부 실시예들은 일반적으로 메모리 시스템에 관한 것으로, 보다 구체적으로는, 이에 제한되는 것은 아니나 컴퓨팅 시스템들의 저장 매체에 대한 동기식 메모리 버스 액세스에 관한 것이다.
메모리 서브 시스템은 DIMM(dual in-line memory Module), SO-DIMM(small outline DIMM), 또는 NVDIMM(non-volatile dual in-line memory module)과 같은 메모리 모듈일 수 있다. 메모리 서브 시스템은 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD)와 같은 저장 시스템일 수 있다. 메모리 서브 시스템은 데이터를 저장하는 하나 이상의 메모리 컴포넌트들을 포함할 수 있다. 메모리 컴포넌트들은, 예를 들어, 비휘발성 메모리 컴포넌트들 및 휘발성 메모리 컴포넌트들일 수 있다. 메모리 컴포넌트들의 예들은 메모리 집적 회로들을 포함한다. 일부 메모리 집적 회로들은 휘발성이며 저장된 데이터를 유지하기 위해 전력을 필요로 한다. 일부 메모리 집적 회로들은 비휘발성이며 전력이 공급되지 않을 때에도 저장된 데이터를 유지할 수 있다. 비휘발성 메모리의 예들은 플래시 메모리, 읽기 전용 메모리(ROM), 프로그램 가능 읽기 전용 메모리(PROM), 소거 가능한 프로그램 가능 읽기 전용 메모리(EPROM) 및 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM) 메모리 등을 포함한다. 휘발성 메모리의 예들은 동적 랜덤 액세스 메모리(DRAM) 및 정적 랜덤 액세스 메모리(SRAM)를 포함한다. 일반적으로, 호스트 시스템은 메모리 서브 시스템을 사용하여 메모리 컴포넌트들에 데이터를 저장하고 메모리 컴포넌트들로부터 데이터를 검색할 수 있다.
예를 들어, 컴퓨터는 호스트 시스템 및 호스트 시스템에 부착된 하나 이상의 메모리 서브 시스템들을 포함할 수 있다. 호스트 시스템은 데이터 및 인스트럭션들을 저장 및/또는 검색하기 위해 하나 이상의 메모리 서브 시스템들과 통신하는 중앙 처리 유닛(CPU)을 가질 수 있다. 컴퓨터에 대한 인스트럭션들은 운영 체제들, 장치 드라이버들 및 어플리케이션 프로그램들을 포함할 수 있다. 운영 체제는 컴퓨터의 리소스들을 관리하고, 그 리소스들의 메모리 할당 및 시간 공유와 같은 어플리케이션 프로그램들에 공통적인 서비스들을 제공한다. 장치 드라이버는 컴퓨터의 특정 타입의 장치를 동작시키거나 제어하며; 운영 체제는 장치 드라이버를 사용하여 상기 타입의 장치에 의해 제공되는 리소스들 및/또는 서비스들을 제공한다. 컴퓨터 시스템의 중앙 처리 유닛(CPU)은 운영 체제와 장치 드라이버들을 실행하여 어플리케이션 프로그램들에 서비스들 및/또는 리소스들을 제공할 수 있다. 중앙 처리 유닛(CPU)은 서비스들 및/또는 리소스들을 사용하는 어플리케이션 프로그램을 실행할 수 있다. 예를 들어, 컴퓨터 시스템들의 어플리케이션의 유형을 구현하는 어플리케이션 프로그램은 데이터를 메모리 서브 시스템의 메모리 컴포넌트들에 저장하고 메모리 컴포넌트들로부터 데이터를 검색하도록 중앙 처리 유닛(CPU)에 지시할 수 있다.
컴퓨터 시스템의 운영 체제는 어플리케이션 프로그램이 가상 메모리 어드레스를 사용하여 컴퓨터 시스템의 하나 이상의 메모리 서브 시스템들의 메모리 컴포넌트들에 데이터를 저장하거나 이로부터 데이터를 검색하게 할 수 있다. 운영 체제는 가상 어드레스들을 컴퓨터 시스템의 중앙 처리 유닛(CPU)에 연결된 하나 이상의 메모리 서브 시스템들의 물리적 어드레스들에 맵핑한다. 운영 체제는 메모리 서브 시스템의 물리적 어드레스를 사용하여 가상 어드레스들에 지정된 메모리 액세스들을 구현한다.
가상 어드레스 공간은 페이지들로 분할될 수 있다. 가상 메모리 페이지는 메모리 서브 시스템의 물리적 메모리 페이지에 맵핑될 수 있다. 운영 체제는 페이징 기술을 사용하여 메모리 모듈의 메모리의 페이지를 통해 저장 장치의 메모리의 페이지에 액세스할 수 있다. 서로 다른 시기에, 메모리 모듈의 동일한 메모리 페이지는 저장 장치 또는 컴퓨터 시스템의 다른 저장 장치의 다른 메모리 페이지에 액세스하기 위해 프록시로 사용될 수 있다.
컴퓨터 시스템은 가상 머신들을 생성하거나 프로비저닝하는 하이퍼바이저(또는 가상 머신 모니터)를 포함할 수 있다. 가상 머신은 컴퓨터 시스템에서 사용할 수 있는 리소스들과 서비스들을 사용하여 가상으로 구현되는 컴퓨팅 장치이다. 하이퍼바이저는 마치 가상 머신의 컴포넌트들이 전용 물리적 컴포넌트들인 것처럼 운영 체제에 대한 가상 머신을 나타낸다. 게스트 운영 체제는 컴퓨터 시스템에서 실행되는 호스트 운영 체제와 유사한 방식으로, 가상 머신에서 사용할 수 있는 리소스들과 서비스들을 관리하기 위해 가상 머신에서 실행된다. 하이퍼바이저는 다수의 가상 머신들이 컴퓨터 시스템의 리소스들을 공유할 수 있도록 하며, 가상 머신들이 실질적으로 서로 독립적으로 컴퓨터에서 동작할 수 있도록 한다.
실시예들은 예로서 도시되며, 유사한 참조 번호들이 유사한 요소들을 나타내는 첨부 도면들의 도면들에 제한되지 않는다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템을 갖는 예시적인 컴퓨팅 시스템을 예시한다.
도 2는 본 개시의 일부 실시예들에 따른 저장 매체에 대한 동기식 메모리 버스 액세스를 위한 상이한 유형의 메모리 및 실행 인스트럭션들을 갖는 컴퓨팅 시스템을 도시한다.
도 3은 본 개시의 일부 실시예들에 따른 호스트 시스템에 의한 메모리 모듈의 비휘발성 메모리에 대한 동기식 메모리 버스 액세스를 위해 구성된 메모리 모듈을 도시한다.
도 4는 본 개시의 적어도 일부 실시예들에 따른 동기식 메모리 버스 액세스를 사용하여 메모리 모듈에 액세스하는 호스트 운영 체제를 도시한다.
도 5는 본 개시의 일부 실시예들에 따른 저장 매체에 대한 동기식 메모리 버스 액세스를 위한 방법을 도시한다.
도 6은 본 개시의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템을 갖는 예시적인 컴퓨팅 시스템을 예시한다.
도 2는 본 개시의 일부 실시예들에 따른 저장 매체에 대한 동기식 메모리 버스 액세스를 위한 상이한 유형의 메모리 및 실행 인스트럭션들을 갖는 컴퓨팅 시스템을 도시한다.
도 3은 본 개시의 일부 실시예들에 따른 호스트 시스템에 의한 메모리 모듈의 비휘발성 메모리에 대한 동기식 메모리 버스 액세스를 위해 구성된 메모리 모듈을 도시한다.
도 4는 본 개시의 적어도 일부 실시예들에 따른 동기식 메모리 버스 액세스를 사용하여 메모리 모듈에 액세스하는 호스트 운영 체제를 도시한다.
도 5는 본 개시의 일부 실시예들에 따른 저장 매체에 대한 동기식 메모리 버스 액세스를 위한 방법을 도시한다.
도 6은 본 개시의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 적어도 일부 측면들은 하나 이상의 메모리 서브 시스템들을 갖는 컴퓨터 시스템의 저장 매체에 대한 동기식 메모리 버스 액세스에 관한 것이다. 메모리 서브 시스템은 이하에서 "메모리 디바이스"로도 지칭된다. 메모리 서브 시스템의 예로는 메모리 버스를 통해 중앙 처리 유닛(CPU)에 연결되는 메모리 모듈이 있다. 메모리 모듈들의 예들은 DIMM(Dual In-line Memory Module), SO-DIMM(Small Outline DIMM), NVDIMM(Non-Volatile Dual In-line Memory Module) 등을 포함한다. 메모리 서브 시스템의 다른 예로는 주변 장치 인터커넥트(예를 들어, 입력/출력 버스, 저장 영역 네트워크)를 통해 중앙 처리 유닛(CPU)에 연결되는 저장 장치가 있다. 저장 장치들의 예들은 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브 및 하드 디스크 드라이브(HDD)를 포함한다. 일부 실시예들에서, 메모리 서브 시스템은 메모리 기능들 및 저장 기능들 둘 다를 제공하는 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 컴포넌트들을 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있으며 메모리 서브 시스템에 검색될 데이터를 요청할 수 있다.
종래 시스템에서, 호스트는 휘발성 및 비휘발성 메모리를 포함하며, 다양한 유형의 메모리에 액세스할 수 있다. 비휘발성 메모리(예를 들어, 크로스 포인트 메모리)는 일반적으로 휘발성 메모리(예를 들어, DRAM)보다 더 긴 응답 시간을 갖는 메모리 기술이라는 것이 인식되었다. 이러한 긴 응답 시간은 동기식 버스(예를 들어, DDR4 버스)에서 비휘발성 메모리를 지원하는 것을 방지할 수 있으며, 이로 인해 호스트가 비휘발성 메모리에 저장된 데이터에 액세스하기 위한 액세스 시간이 더 길어질 수 있다.
본 개시의 적어도 일부 측면들은 저장 매체(예를 들어, 비휘발성 메모리)에 대한 동기식 메모리 버스 액세스를 제공하는 동기화 컴포넌트를 사용함으로써 상기 및 다른 결함들을 해결한다. 다양한 실시예들에서, 메모리 시스템은 동기식 메모리 버스를 사용함으로써 예를 들어, 메모리 모듈(예를 들어, DIMM) 상의 비휘발성 메모리에 저장된 데이터에 대한 호스트 액세스를 제공한다. 비휘발성 메모리에 저장된 데이터(예를 들어, 호스트가 액세스하려는 데이터의 페이지)는 메모리 모듈의 메모리 버퍼(예를 들어, SRAM) 안팎으로 이동하여, 비휘발성 메모리에 저장된 데이터가 휘발성 메모리에 저장된 데이터에 액세스(예를 들어, DDR4 버스를 사용하여 DRAM에 액세스)하는 것과 유사하게 메모리 버스를 사용하여 액세스될 수 있도록 한다. 따라서, 호스트에 의한 메모리 액세스는 동기식 메모리 버스 액세스를 사용하여 가속화될 수 있다.
일 예에서, 휘발성 메모리는 DRAM이고, 비휘발성 메모리는 교차점 메모리(예를 들어, 3DXP 메모리)이다. 호스트 시스템은 DDR4 메모리 버스를 통해 DRAM에 액세스한다. 예를 들어, 버퍼는 3DXP와 DRAM 사이의 데이터 전송을 위한 일시적 버퍼 역할을 하는 SRAM일 수 있다. 3DXP 데이터는 예를 들어 언제든지(호스트 DDR 메모리 버스의 상태에 관계없이) SRAM 버퍼로/로부터 이동될 수 있다. 호스트는 SRAM 버퍼로부터, 또는 데이터가 SRAM 버퍼로부터 DRAM에 도달한 후에 페이징된 3DXP 데이터에 액세스할 수 있다.
보다 구체적으로, 일 예에서, DDR4 메모리 버스는 동기식 버스이고, 적절한 동작을 위해 미리 결정된 응답 시간을 필요로 한다. 예를 들어, 3D 교차점 메모리는 일정한 DRAM 세트 뒤에 DIMM 상의 DDR4 버스에 부착된다. 예를 들어, 일반적인 DIMM은 DDR4 동기식 타이밍을 사용하는 호스트에 의해 액세스할 수 있는 16-32 GB의 DRAM 메모리를 가질 수 있다.
다양한 실시예들은 호스트가 이러한 예약된 시간 프레임 동안 DRAM에 액세스하기 위해 판독 또는 기록 명령들을 발행하지 않도록 하나 이상의 DRAM 리프레시 사이클들을 예약함으로써 DDR4 버스를 통해 DIMM 상의 3DXP 메모리 내의 데이터에 대한 액세스를 제공한다. 일 실시예에서, DRAM의 리프레시 비율은 DRAM 버스의 경우 인위적으로 증가된다. 이는 호스트 컨트롤러가 정상 동작 동안 DRAM을 리프레시하는 데 실제로 필요한 것보다 더 리프레시 명령들을 생성한다는 것을 의미한다. 예약된 리프레시 사이클들 중 하나 이상은 DIMM 상에 있는 DRAM 컨트롤러 자체를 통해 해당 DRAM 뒤에 있는 3D 교차점 메모리로 및 로부터 데이터를 이동시키는 데 사용된다.
일 실시예에서, 하이브리드 DIMM은 3DXP가 이전의 기존 방식으로 추가되는 경우, 3DXP의 성능 레벨을 초과할 수 있는 응답 시간을 필요로 하는 DDR4 버스 상에서의 동작을 위해 DRAM 및 3DXP 둘 다를 포함한다. 그러나, 다양한 실시예들에 따르면, 하이브리드 DIMM 상의 메모리 시스템 컨트롤러는 하나 이상의 추가 리프레시 사이클들을 요청하도록 구성된 호스트 시스템과 통신한다. 추가 리프레시 사이클들은 메모리 시스템 컨트롤러에 의해 DDR4 DRAM과 DIMM의 일부인 SRAM 버퍼 간에 데이터를 전송하는 데 사용되어 3DXP 저장 매체의 사용이 DDR 메모리 버스 상에서 통신 시 호스트 동작에 대한 변경을 필요로 하지 않도록 한다(예를 들어, 호스트는 기존의 DRAM이 액세스되는 것과 유사하거나 동일한 방식으로 동작할 수 있다).
일 실시예에서, 3DXP로/로부터 듀얼 포트 SRAM의 제1 포트로의 전송들은 언제든지 스케줄링될 수 있다. SRAM 버퍼 및 DRAM로/로부터의 전송들만 예약된 리프레시 사이클들과 동기화되면 된다. 듀얼 포트 SRAM의 제2 포트는 DDR 어드레스 공간의 일부로 호스트에 노출되며, DDR 어드레스 공간의 SRAM 일부에서 리프레시가 활성화되지 않은 경우 언제든지 액세스될 수 있다.
일 예에서, 호스트용 BIOS는 호스트 부팅 시 호스트 운영 체제(OS)가 리프레시 타이밍(예를 들어, tREFI/tRFC 파라미터들을 구성하는 것을 통해)을 설정하도록 구성된다. OS가 이러한 커스텀화된 tREFI/tRFC 파라미터들을 사용할 경우, 메모리 시스템 컨트롤러는 (SRAM 버퍼를 통해) 3DXP에 액세스하는 타이밍과 DRAM에 액세스하는 타이밍을 매칭시킬 수 있다.
일 실시예에서, 메모리 시스템 컨트롤러는 SRAM이 (tREFI/tRFC 뿐만 아니라) DRAM의 전체 타이밍 요구사항들과 매칭되는 경우, DRAM 어드레스 공간의 일부 내에서 또는 DRAM 어드레스 공간의 확장으로서 SRAM을 노출시킬 수 있다. DRAM 어드레스 공간 내에서 SRAM을 노출시키기 위해, 메모리 시스템 컨트롤러는 ACTIVATE 명령들을 디코딩하고 이를 인터셉트되지 않도록 하는 DRAM 행들로 전달한다 그렇지 않으면, 메모리 시스템 컨트롤러는 이러한 ACTIVATE 명령들을 캡처하고, SRAM로부터/로 판독/기록으로 활성화된 뱅크 및 행을 대상으로 하는 후속 READ/WRITE 명령들에 응답한다.
SRAM을 DRAM 공간의 확장으로서 노출시키기 위해, 메모리 시스템 컨트롤러는 CS 또는 CiD 신호들을 디코딩하고, SRAM의 전용 CS/CiD (랭크)에서 모든 DRAM 명령들에 응답한다. SRAM 어드레스 공간은 DRAM보다 작으므로, 해당 CS/CiD (랭크) 상의 더 큰 어드레스는 SRAM 어드레스 공간으로 앨리어싱(aliased)된다. 시스템 소프트웨어가 인식되고, SRAM 크기와 일치하는 추가 CS/CiD (랭크) 부분만 사용한다.
일 실시예에서, 시스템이 커스텀화된 tREFI/tRFC 파라미터들로 구성될 경우, 메모리 시스템 컨트롤러는 추가 리프레시 사이클들을 추가로 사용하여 SRAM과 DRAM 간의 전송들을 동기화할 수 있다. 이는 REFRESH 명령을 인터셉트하고, 카운터를 기반으로 REFRESH 명령이 DRAM으로 포워딩되어야 하는지를 결정하는 메모리 시스템 컨트롤러에 의해 달성된다. REFRESH 명령이 DRAM으로 포워딩되지 않는 경우, REFRESH 명령은 NOP 명령으로 대체되거나 DRAM CS가 눌려서, DRAM이 REFRESH 명령을 실행하지 않도록 할 수 있다. 해당 동일한 REFRESH 사이클에서, 메모리 시스템 컨트롤러는 DRAM에 명령들을 자유롭게 발행하여 SRAM으로/로부터의 전송들을 구현한다.
추가로, 메모리 시스템 컨트롤러는 데이터가 이미 SRAM 버퍼에 있는 경우 데이터 액세스 속도를 높이기 위해 SRAM 버퍼에 맵핑된 DDR 페이지들의 매핑 테이블을 유지할 수 있다. 일 실시예에서, 메모리 시스템 컨트롤러는 DDR ACTIVATE 명령을 디코딩하고, 컨트롤러는 룩업 테이블 또는 CAM을 사용하여 타겟 뱅크 및 행이 SRAM에 다시 맵핑되었는지 또는 DRAM으로 전달되어야 하는지를 결정한다. 메모리 시스템 컨트롤러의 맵핑 테이블은 (호스트 시스템 및 호스트 메모리 컨트롤러의 관점에서) 페이지들의 투명한 재맵핑을 지원한다. 따라서, 3DXP 페이지가 SRAM으로부터 DRAM으로 복사된 후, 맵핑 테이블은 액세스가 SRAM으로부터 DRAM으로 리디렉션되도록 업데이트될 수 있다. 예약된 REFRESH 사이클 동안 전체 DRAM 페이지가 전송되는 한, 호스트는 데이터가 SRAM으로부터 DRAM으로 이동했음을 인식하지 못한다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템(110)을 갖는 예시적인 컴퓨팅 시스템(100)을 예시한다. 메모리 서브 시스템(110)은 메모리 컴포넌트들(109A 내지 109N)과 같은 매체를 포함할 수 있다. 메모리 컴포넌트들(109A 내지 109N)은 휘발성 메모리 컴포넌트들, 비휘발성 메모리 컴포넌트들 또는 이들의 조합일 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 메모리 모듈이다. 메모리 모듈의 예들로는 DIMM 및 NVDIMM을 포함한다. 일부 실시예들에서, 메모리 서브 시스템은 저장 시스템이다. 저장 시스템의 예로는 SSD가 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 컴퓨팅 환경은 메모리 서브 시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 데이터를 메모리 서브 시스템(110)에 기록하고 메모리 서브 시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 장치(120)는 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 장치, 또는 메모리와 프로세싱 장치를 포함하는 이러한 컴퓨팅 장치와 같은 컴퓨팅 장치일 수 있다. 호스트 시스템(120)은 호스트 시스템(120)이 메모리 서브 시스템(110)로부터 데이터를 판독하거나 이에 데이터를 기록할 수 있도록 메모리 서브 시스템(110)을 포함하거나 이에 결합될 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 본원에 사용된 바와 같이, "~에 결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 중간 컴포넌트들이 없는) 직접 통신 연결일 수 있는, 컴포넌트들 사이의 연결을 지칭한다. 물리적 호스트 인터페이스의 예들은, 이에 제한되는 것은 아니나, SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 광섬유 채널, SAS(Serial Attached SCSI), DDR(double data rate) 메모리 버스 등을 포함한다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합되는 경우 NVMe(NVM Express) 인터페이스를 추가로 이용하여 메모리 컴포넌트들(109A 내지 109N)에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 예로서 메모리 서브 시스템(110)을 예시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다수의 개별 통신 연결들 및/또는 통신 연결들의 조합을 통해 다수의 메모리 서브 시스템들에 액세스할 수 있다.
호스트 시스템(120)은 프로세싱 장치(118) 및 컨트롤러(116)를 포함한다. 호스트 시스템(120)의 프로세싱 장치(118)는 예를 들어, 마이크로프로세서, 중앙 처리 유닛(CPU), 프로세서의 프로세싱 코어, 실행 유닛 등일 수 있다. 일부 경우, 컨트롤러(116)는 메모리 컨트롤러, 메모리 관리 유닛 및/또는 이니시에이터(nitiator)로 지칭될 수 있다. 일 예에서, 컨트롤러(116)는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에 결합된 버스를 통한 통신들을 제어한다.
일반적으로, 컨트롤러(116)는 메모리 컴포넌트들(109A 내지 109N)에 대한 원하는 액세스를 위해 명령들 또는 요청들을 메모리 서브 시스템(110)에 전송할 수 있다. 컨트롤러(116)는 메모리 서브 시스템(110)과 통신하기 위한 인터페이스 회로부를 더 포함할 수 있다. 인터페이스 회로부는 메모리 서브 시스템(110)으로부터 수신된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
호스트 시스템(120)의 컨트롤러(116)는 메모리 서브 시스템(110)의 컨트롤러(115)와 통신하여 메모리 컴포넌트들(109A 내지 109N)에서의 데이터 판독, 데이터 기록 또는 소거와 같은 동작들 및 다른 이러한 동작들을 수행할 수 있다. 일부 경우, 컨트롤러(116)는 프로세싱 장치(118)의 동일한 패키지 내에 통합된다. 다른 경우, 컨트롤러(116)는 프로세싱 장치(118)의 패키지로부터 분리된다. 컨트롤러(116) 및/또는 프로세싱 장치(118)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리, 캐시 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(116) 및/또는 프로세싱 장치(118)는 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(field programmable gate array; FPGA), 어플리케이션별 집적 회로(application specific integrated circuit; ASIC) 등), 또는 다른 적절한 프로세서일 수 있다.
메모리 컴포넌트들(109A 내지 109N)은 상이한 유형의 비휘발성 메모리 컴포넌트들 및/또는 휘발성 메모리 컴포넌트들의 임의의 조합을 포함할 수 있다. 비휘발성 메모리 컴포넌트들의 예는 NAND(negative-and)형 플래시 메모리를 포함한다. 메모리 컴포넌트들(109A 내지 109N) 각각은 단일 레벨 셀(single level cells; SLC)들 또는 다중 레벨 셀(multi-level cells; MLC)들(예를 들어, 트리플 레벨 셀(triple level cells; TLC)들 또는 쿼드 레벨 셀(quad-level cells; QLC)들)과 같은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 일부 실시예들에서, 특정 메모리 컴포넌트는 메모리 셀들의 SLC 부분 및 MLC 부분 둘 다를 포함할 수 있다. 메모리 셀 각각은 호스트 시스템(120)에 의해 사용된 하나 이상의 데이터 비트들(예를 들어, 데이터 블록들)을 저장할 수 있다. NAND형 플래시 메모리와 같은 비휘발성 메모리 컴포넌트들이 설명되어 있지만, 메모리 컴포넌트들(109A 내지 109N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 실시예들에서, 메모리 컴포넌트들(109A 내지 109N)은, 이에 제한되는 것은 아니나, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 위상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), 스핀 전송 토크(STT)-MRAM, 강유전성 랜덤 액세스 메모리(FeTRAM), 강유전성 RAM (FeRAM), 전도성 브리징 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), OxRAM(Oxide-based RRAM), NOR(Negative-or) 플래시 메모리, 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM), 나노 와이어 기반 비휘발성 메모리, 멤리스터 기술을 통합한 메모리 및 비휘발성 메모리 셀들의 교차점 어레이일 수 있다. 비휘발성 메모리의 교차점 어레이는 스택 가능한 크로스 그리드 데이터 액세스 어레이(stackable cross-gridded data access array)와 함께 벌크 저항의 변화에 기초하여 비트 저장(bit storage)을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 교차점 비휘발성 메모리는 제자리에 기록(write in-place) 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 게다가, 메모리 컴포넌트들(109A 내지 109N)의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 컴포넌트의 단위를 지칭할 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹화될 수 있다.
메모리 서브 시스템(110)의 컨트롤러(115)는 메모리 컴포넌트들(109A 내지 109N)과 통신하여 데이터 판독, 데이터 기록, 또는 메모리 컴포넌트들(109A 내지 109N)에서의 데이터 소거와 같은 동작들 및 다른 이러한 동작들(예를 들어, 컨트롤러(116)에 의해 명령 버스 상에서 스케줄링된 명령들에 응답하는)을 수행할 수 있다. 컨트롤러(115)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(115)는, 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(FPGA), 어플리케이션별 집적 회로(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다. 컨트롤러(115)는 로컬 메모리(119)에 저장된 인스트럭션들을 실행하도록 구성된 프로세싱 장치(117)(프로세서)를 포함할 수 있다. 예시된 예에서, 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들 및 루틴들을 수행하기 위한 인스트럭션들을 저장하도록 구성된 임베디드된 메모리를 포함한다. 일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터, 페치 데이터(fetched data) 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 읽기 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브 시스템(110)은 컨트롤러(115)를 포함하는 것으로 예시되어 있지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(110)은 컨트롤러(115)를 포함하지 않을 수 있으며, 대신 (예를 들어, 외부 호스트에 의해 또는 메모리 서브 시스템으로부터 분리된 프로세서나 컨트롤러에 의해 제공된) 외부 제어에 의존할 수 있다.
일반적으로, 컨트롤러(115)는 호스트 시스템(120)으로부터 명령들 또는 동작들을 수신할 수 있으며, 메모리 컴포넌트들(109A 내지 109N)에 대한 원하는 액세스를 달성하기 위해 명령들 또는 동작들을 인스트럭션들 또는 적절한 명령들로 변환할 수 있다. 컨트롤러(115)는 웨어 레벨링(wear leveling) 동작들, 가비지(garbage) 수집 동작들, 에러 검출 및 에러 정정 코드(error-correcting code; ECC) 동작들, 암호화 동작들, 캐싱 동작들 및 메모리 컴포넌트들(109A 내지 109N)과 관련되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환들과 같은 다른 동작들을 담당할 수 있다. 컨트롤러(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 컴포넌트들(109A 내지 109N)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 뿐만 아니라, 호스트 시스템으로부터 수신된 명령들을 메모리 컴포넌트들(109A 내지 109N)에 액세스하기 위한 명령 인스트럭션들로 변환할 수 있다.
메모리 서브 시스템(110)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 컨트롤러(115)로부터 어드레스를 수신하고 메모리 컴포넌트들(109A 내지 109N)에 액세스하기 위해 어드레스를 디코딩할 수 있는 캐시나 버퍼(예를 들어, DRAM 또는 SRAM) 및 어드레스 회로부(예를 들어, 행 디코더 또는 열 디코더)를 포함할 수 있다.
컴퓨팅 시스템(100)은 메모리 서브 시스템(110)의 저장 매체에 대한 동기식 메모리 버스 액세스를 제공하기 위해 버퍼(121)와 함께 작동하는 호스트 시스템(120)의 동기화 컴포넌트(113)를 포함한다. 일 예에서, 버퍼(121)는 SRAM이다. 메모리 서브 시스템(110)은 DDR 또는 다른 유형의 동기식 메모리 버스를 통해 저장 매체(예를 들어, 3DXP 메모리)의 데이터에 대한 호스트 시스템(120)의 액세스를 제공할 수 있다. 일 실시예에서, 호스트 시스템(120)이 예약된 사이클들 동안 DRAM에 액세스하기 위해 판독 또는 기록 명령들을 발행하지 않도록 하나 이상의 DRAM 리프레시 사이클들을 예약함으로써 DIMM 상의 3DXP 메모리 내의 데이터에 대한 액세스가 제공된다. 하나 이상의 예약된 리프레시 사이클들은 버퍼(121)와 DIMM 상의 DRAM 메모리 간에 데이터를 이동하는 데 사용된다. 반대로, 버퍼(121) 전송들에 대한 3DXP 메모리는 예약된 리프레시 사이클들과 동기화될 필요가 없다. 그런 다음, 이동된 데이터는 DDR 메모리 버스를 통해 이루어진 정상적인 호스트 판독/기록 요청들 동안 액세스하기 위해 호스트 시스템(121)의 DRAM 메모리 어드레스 공간에서 액세스할 수 있도록 한다.
일 예에서, 호스트 시스템(120)은 (페이지에 액세스하기 위한) 페이지-인(page-in) 요청을 컨트롤러(115)로 전송한다. 페이지-인 요청을 수신하는 것에 응답하여, 컨트롤러(115)는 비휘발성 메모리와 같은 저속 매체로부터 휘발성 메모리(예를 들어, 메모리 서브 시스템(110) 상의 DRAM)로 페이지를 이동시킨다.
일 예에서, 호스트 시스템(120)은 페이지-아웃(page-out) 요청을 컨트롤러(115)로 전송한다. 페이지-아웃 요청을 수신하는 것에 응답하여, 컨트롤러(115)는 휘발성 메모리(예를 들어, 메모리 서브 시스템(110) 상의 DRAM)에서 버퍼(121)를 통해 비휘발성 메모리로 데이터를 이동시킨다. 데이터는 이러한 목적을 위해 예약된 하나 이상의 리프레시 사이클들 동안 휘발성 메모리에서 버퍼(121)로 이동된다. 그런 다음, 데이터는 버퍼(121)로부터 비휘발성 메모리(예를 들어, 3DXP)로 이동된다. 일 실시예에서, 버퍼(121)(예를 들어, SRAM)로부터 3DXP 메모리로 데이터 이동을 위한 특정 타이밍 요건들은 없다.
예를 들어, DRAM과 (예를 들어, 페이지-인 및 페이지-아웃 요청들을 위한) SRAM 버퍼 사이의 데이터 이동은 호스트 시스템(120)으로부터 메모리 서브 시스템(110)(예를 들어, DIMM)로 DDR 버스 신호들에 의해 제한된다는 것이 인식되었다. 또한, 호스트 시스템(120)으로부터 DDR 신호들을 캡처하기 위한 버퍼의 사용은 호스트 시스템이 DIMM의 DRAM에 액세스할 때 성능을 저하시킬 수 있다는 것이 인식되었다. 또한, 호스트 시스템(120)으로부터 DDR 신호들을 캡처하기 위한 버퍼의 사용은 (예를 들어, DDR 슬롯을 사용하여) 인터페이스 회로부의 비용 및 복잡도를 증가시킬 수 있다. 본원의 다양한 실시예들은 동기화 컴포넌트(113) 및 버퍼(121)를 통한 메모리 버스 동기화를 사용함으로써 이러한 결함들을 극복한다.
일부 실시예들에서, 호스트 시스템(120)의 컨트롤러(116) 및/또는 프로세싱 장치(118)는 동기화 컴포넌트(113)의 적어도 일부를 포함한다. 예를 들어, 컨트롤러(116) 및/또는 프로세싱 장치(118)는 동기화 컴포넌트(113)를 구현하는 논리 회로부를 포함할 수 있다. 예를 들어, 호스트 시스템(120)의 프로세싱 장치(118)(프로세서)는 본원에 설명된 동기화 컴포넌트(113)를 위한 메모리 버스 타이밍을 제어하는 동작들을 수행하기 위해 메모리에 저장된 인스트럭션들을 실행하도록 구성될 수 있다. 일부 실시예들에서, 동기화 컴포넌트(113)는 호스트 시스템(120)의 운영 체제, 장치 드라이버 또는 어플리케이션의 일부이다.
일 예에서, 중앙 처리 유닛(CPU)는 CPU에 연결된 메모리 시스템의 메모리에 액세스할 수 있다. 예를 들어, 중앙 처리 유닛(CPU)은 동기화 컴포넌트(113)를 사용하여 메모리에 액세스하도록 구성될 수 있다. 예를 들어, 비휘발성 메모리는 CPU에 의해 직접 어드레스할 수 없으며, CPU에 의해 직접 어드레스할 수 있는 휘발성 메모리에 연결된다. 비휘발성 메모리는 버퍼(121)로 및 로부터 데이터를 스와핑하고 동기화 컴포넌트(113)를 사용하여 메모리 액세스를 제어하는 휘발성 메모리를 통해 액세스된다.
도 2는 상이한 유형의 메모리를 갖는 컴퓨팅 시스템을 도시한다. 컴퓨팅 시스템은 본 개시의 일부 실시예들에 따른 저장 매체에 대한 동기식 메모리 버스 액세스를 위한 인스트럭션들을 실행하고 있다. 도 2의 컴퓨팅 시스템은 호스트 시스템(120) 및 메모리 버스(203)를 통해 호스트 시스템(120)에 연결된 메모리 모듈(205)을 포함한다. 메모리 모듈(205)은 도 1에 예시된 메모리 서브 시스템(110)의 예이다.
호스트 시스템(120)은 하나 이상의 프로세싱 코어들을 갖는 중앙 처리 유닛 또는 마이크로프로세서일 수 있는 프로세싱 장치(118)를 갖는다. 호스트 시스템(120)은 캐시 메모리(211)를 가질 수 있다. 캐시 메모리(211)의 적어도 일부는 프로세싱 장치(118)의 동일한 집적 회로 패키지 내에 선택적으로 통합될 수 있다.
도 2에 예시된 메모리 모듈(205)은 여러 유형의 메모리(예를 들어, 221 및 223)를 갖는다. 예를 들어, 타입 A 메모리(221)(예를 들어, DRAM)는 타입 B 메모리(223)(예를 들어, 3DXP)보다 더 빠르다. 예를 들어, 메모리 버스(203)는 이중 데이터 레이트 버스일 수 있으며; 일반적으로, 여려 메모리 모듈들(예: 205)은 메모리 버스(203)에 결합될 수 있다.
프로세싱 장치(118)는 동기화 컴포넌트(113)를 사용하여 컴퓨터 시스템의 메모리의 다른 일부를 통해 컴퓨터 시스템의 메모리의 일부에 액세스하기 위한 인스트럭션들(예를 들어, 운영 체제 및/또는 하나 이상의 장치 드라이버들)을 통해 구성된다. 예를 들어, 메모리 모듈(205)의 타입 B 메모리(223)(예를 들어, 3DXP)는 메모리 모듈(205)의 타입 A 메모리(221)(예를 들어, DRAM)를 통해 액세스될 수 있다. 예를 들어, 메모리 모듈(205)의 타입 B 메모리(223)는 메모리 모듈(205)의 타입 A 메모리(221)를 어드레싱하는 것을 통해서만 액세스할 수 있다.
컨트롤러(227)는 메모리 모듈(205) 내에 제공되어 메모리 모듈(205) 내의 타입 A 메모리(221)와 타입 B 메모리(223) 사이의 데이터 전송을 관리할 수 있다. 일 실시예에서, 컨트롤러(227)는 버퍼(121)로 또는 로부터 데이터를 전송할 때 호스트 시스템(120) 및 메모리 모듈(205) 둘 다에 의해 DRAM에 대한 액세스를 다중 송신한다. 일 예에서, 메모리 버스(203)는 호스트 시스템(120)과 메모리 모듈(205) 사이의 DDR 인터페이스로서 호스트 DDR 채널을 제공한다.
일 예에서, 일단 페이지가 3DXP 메모리로부터 버퍼(121)로 검색되면, 페이지는 기존 DDR4 슬롯(예를 들어, 호스트 DDR 채널)을 통해 호스트에 의한 액세스를 위해 DRAM에 로드될 수 있다. DRAM에서 페이지를 스왑하기 위해, 데이터는 DRAM으로부터 버퍼(121)로 이동된 다음, 3DXP 메모리로 이동된다.
일반적으로, 메모리 서브 시스템들(예를 들어, 205)은 메모리(예를 들어, 221, …, 223)와 같은 매체를 포함할 수 있다. 메모리(예를 들어, 221, …, 223)는 휘발성 메모리, 비휘발성 메모리(NVM) 및/또는 이들의 조합을 포함할 수 있다. 일부 실시예들에서, 컴퓨터 시스템은 저장 장치(도시되지 않음)인 적어도 하나의 메모리 서브 시스템을 포함한다. 저장 장치의 예는 솔리드 스테이트 드라이브(SSD)이다. 일부 실시예들에서, 컴퓨터 시스템은 메모리 모듈(205)로서 구성된 하이브리드 메모리/저장 시스템인 적어도 하나의 메모리 서브 시스템을 포함한다. 프로세싱 장치(118)는 메모리 서브 시스템들(예를 들어, 205) 각각에 데이터를 기록하고, 메모리 서브 시스템들(예를 들어, 205)로부터 직접 또는 간접적으로 데이터를 판독할 수 있다.
일 실시예에서, 메모리 모듈(205)은 버퍼(121)를 사용함으로써 휘발성 메모리를 통해 비휘발성 저장 매체에 대한 동기식 메모리 버스 액세스를 제공한다. 일 예에서, 메모리 모듈(205)은 DDR 버스를 통해 호스트 시스템(120)에 결합된 DIMM이다. 저장 매체는, 예를 들어, 교차점 메모리(예를 들어, 3DXP)이다. 저장 매체에 저장된 데이터의 일부들은 아래에 설명된 바와 같이, 예약된 리프레시 사이클들을 사용하여 (SRAM 버퍼를 통해) DRAM 안팎으로 스와핑된다. 저장 매체와 SRAM 버퍼 간의 전송들은 언제든지 발생할 수 있다(예를 들어, 이중 포트 SRAM이 사용된다).
일 실시예에서, 호스트는 (예를 들어, DDR4 버스를 사용하여) 판독/기록 동작들을 위한 통신 채널을 통해 메모리 모듈과 통신한다. 호스트는 메모리 모듈과 같은 컴퓨터 주변 장치들이 컴퓨터 버스(예를 들어, PCI(Peripheral Component Interconnect), PCI-X(PCI eXtended), PCIe(PCI Express)), 통신 부분 및/또는 컴퓨터 네트워크와 같은 인터커넥트를 통해 부착될 수 있는 하나 이상의 중앙 처리 유닛(CPU)들을 갖는 서버 또는 기타 컴퓨터일 수 있다.
일 실시예에서, 메모리 모듈은 호스트에 대한 데이터를 비휘발성 저장 매체에 저장하는 데 사용될 수 있지만, 본원에 설명된 바와 같은 동기식 DRAM 메모리 인터페이스를 통해 액세스한다. 메모리 모듈은 통신 채널을 사용하여 호스트와의 통신들을 구현하는 호스트 인터페이스를 갖는다.
일 실시예에서, 메모리 모듈(205)은 호스트로부터의 통신들에 응답하여 동작들을 수행하기 위해 예를 들어, 펌웨어를 실행하는 컨트롤러(227)를 갖는다. 이러한 동작들은 호스트에서 실행되는 소프트웨어에 의한 향후 요구 사항들을 예상하여 저장 매체로 및 로부터 데이터의 페이지들의 이동을 포함한다. 펌웨어는 아래에서 더 상세히 논의되는 바와 같이, 예약된 리프레시 사이클들 동안 버퍼(121) 안팎으로 데이터를 스와핑하는 것과 같이, 메모리 모듈을 동작시킬 때 컨트롤러(227)의 동작들을 제어한다.
일 실시예에서, 상기에 언급된 바와 같이, 비휘발성 저장 매체는 교차점 메모리이다. 다른 실시예들에서, 저장 매체는 다른 유형의 메모리(예를 들어, 다른 유형의 저장 클래스 메모리)를 사용할 수 있다. 예를 들어, 저장 매체의 메모리 셀들은 NAND 게이트 기반 플래시 메모리, 위상 변화 메모리(phase-change memory; PCM) 및 저항성 랜덤 액세스 메모리와 같은 다양한 메모리/저장 기술술을 사용하여 구현될 수 있어, 상기 저장 매체는 비휘발성이다.
메모리 모듈은 휘발성 동적 랜덤 액세스 메모리(DRAM)를 포함한다. DRAM은 DRAM 메모리 어드레스 공간에 호스트에 의해 액세스할 수 있는 데이터를 저장한다. 일 예에서, 교차점 저장 및 메모리 장치들(예를 들어, 3DXP 메모리)은 다양한 실시예들에 따라 DRAM에 필적할 수 있는 데이터 액세스 성능을 갖는다.
도 2의 컴퓨팅 시스템은 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 장치 또는 메모리와 프로세싱 장치를 포함하는 이러한 컴퓨팅 장치를 구현하는 데 사용될 수 있다. 프로세싱 장치(118)는 메모리 서브 시스템들(예: 205)로부터 데이터를 판독하고 이에 데이터를 기록할 수 있다.
프로세싱 장치(118)는 하나 이상의 물리적 인터페이스들(예를 들어, 203)을 통해 메모리 서브 시스템(예를 들어, 205)에 결합될 수 있다. 본원에 사용된 바와 같이, "~에 결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 중간 컴포넌트들이 없는) 직접 통신 연결일 수 있는, 컴포넌트들 사이의 연결을 지칭한다.
물리적 호스트 인터페이스는 프로세싱 장치(118)와 메모리 서브 시스템(예를 들어, 205) 사이에서 데이터를 전송하는 데 사용될 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(예를 들어, 205)과 프로세싱 장치(118) 사이에서 제어, 어드레스, 데이터 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
일반적으로, 메모리 서브 시스템(예를 들어, 205)은 메모리(예를 들어, 221, …, 223)를 제공하는 메모리 집적 회로들과 같은, 메모리 장치 세트를 연결하는 인쇄 회로 기판을 포함한다. 메모리 서브 시스템(예를 들어, 205) 상의 메모리(예를 들어, 221, …, 223)는 상이한 유형의 비휘발성 메모리 장치들 및/또는 휘발성 메모리 장치들의 임의의 조합을 포함할 수 있다.
비휘발성 메모리 장치들의 예는 NAND(negative-and)형 플래시 메모리 또는 NOR(negative-or)형 플래시 메모리를 포함한다. 메모리 집적 회로는 단일 레벨 셀(SLC)들, 다중 레벨 셀(MLC)들, 트리플 레벨 셀(TLC)들, 쿼드 레벨 셀(QLC)들과 같은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 일부 구현예들에서, 특정 메모리 장치는 메모리 셀들의 SLC 부분 및 MLC(또는 TLC 또는 QLC) 부분을 포함할 수 있다. 메모리 셀 각각은 호스트 시스템(120)에 의해 사용된 하나 이상의 데이터 비트들을 저장할 수 있다. NAND형 플래시 메모리와 같은 비휘발성 메모리 장치들이 설명되어 있지만, 메모리 집적 회로들은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 구현예들에서, 메모리(예를 들어, 221, …, 223)는 이에 제한되는 것은 아니나, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 위상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), NOR(negative-or) 플래시 메모리, 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM) 및/또는 비휘발성 메모리 셀들의 교차점 어레이를 포함한다. 비휘발성 메모리의 교차점 어레이는 스택 가능한 크로스 그리드 데이터 액세스 어레이(stackable cross-gridded data access array)와 함께 벌크 저항의 변화에 기초하여 비트 저장(bit storage)을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 교차점 비휘발성 메모리는 제자리에 기록 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 게다가, 메모리 장치들의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 장치의 단위를 지칭할 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹화될 수 있다.
메모리 서브 시스템(예를 들어, 205)은 프로세싱 장치(118)로부터의 요청들, 명령들 또는 인스트럭션들에 응답하여, 메모리(예를 들어, 221, …, 223)와 통신하여 메모리(예를 들어, 221, …, 223)에서의 데이터 판독, 데이터 기록 또는 데이터 소거와 같은 동작들 및 다른 이러한 동작들을 수행하는 컨트롤러(예를 들어, 227)를 가질 수 있다. 컨트롤러(예를 들어, 227)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(예를 들어, 227)는, 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, FPGA(field programmable gate array), ASIC(application specific integrated circuit) 등), 또는 다른 적절한 프로세서일 수 있다. 컨트롤러(예를 들어, 227)는 로컬 메모리에 저장된 인스트럭션들을 실행하도록 구성된 하나 이상의 프로세서들(프로세싱 장치들)을 포함할 수 있다.
컨트롤러(예를 들어, 227)의 로컬 메모리는 메모리 서브 시스템(예를 들어, 205)과 프로세싱 장치(118) 사이의 통신 및 아래에서 더 상세히 설명되는 다른 기능들의 처리를 포함하여, 메모리 서브 시스템(예를 들어, 205)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들 및 루틴들을 수행하기 위한 인스트럭션들을 저장하도록 구성된 임베디드된 메모리를 포함할 수 있다. 컨트롤러(예를 들어, 227)의 로컬 메모리는 마이크로-코드를 저장하기 위한 읽기 전용 메모리(ROM) 및/또는 메모리 포인터들, 페치된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다.
도 2의 예시적인 메모리 서브 시스템(205)은 컨트롤러(예를 들어, 227)을 포함하는 것으로 예시되어 있지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(예를 들어, 205)은 컨트롤러(예를 들어, 227)를 포함하지 않을 수 있으며, 대신 외부 제어(예를 들어, 메모리 서브 시스템(예를 들어, 205)으로부터 분리된 프로세서나 컨트롤러에 의해 제공됨)에 의존할 수 있다.
일반적으로, 컨트롤러(예를 들어, 227)는 통신 채널(예를 들어, 203)에 대한 표준 통신 프로토콜에 따라 프로세싱 장치(118)로부터 명령들, 요청들 또는 인스트럭션들을 수신할 수 있고, 표준 프로토콜에 따른 명령들, 요청들 또는 인스트럭션들을 메모리 서브 시스템(예를 들어, 205) 내의 상세한 인스트럭션들 또는 적절한 명령들로 변환하여 메모리(예를 들어, 221, …, 223)에 대한 원하는 액세스를 달성할 수 있다. 예를 들어, 컨트롤러(예를 들어, 227)는 웨어 레벨링 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들 및 메모리(예를 들어, 221, …, 223)와 관련되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환들과 같은 동작들을 담당할 수 있다. 컨트롤러(예를 들어, 227)는 물리적 호스트 인터페이스를 통해 프로세싱 장치(118)와 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 장치들(예를 들어, 221, …, 223)과 연관된 응답들을 프로세싱 장치(118)에 대한 정보로 변환할 뿐만 아니라 프로세싱 장치(118)로부터 수신된 명령들을 메모리 장치들(예를 들어, 221,…, 223)에 액세스하기 위한 명령 인스트럭션들로 변환할 수 있다.
메모리 서브 시스템(예를 들어, 205)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 구현예들에서, 메모리 서브 시스템(예를 들어, 205)은 컨트롤러(예를 들어, 227)로부터 어드레스를 수신하고 어드레스를 디코딩하여 메모리(예를 들어, 221, …, 223)에 액세스할 수 있는 캐시 또는 버퍼(예를 들어, DRAM) 및 어드레스 회로부(예를 들어, 행 디코더 및 열 디코더)를 포함할 수 있다.
일 예에서, 메모리 버스(203)는 메모리 서브 시스템(예를 들어, 205)에 전력을 제공하고/하거나 미리 결정된 프로토콜을 통해 메모리 서브 시스템(예를 들어, 205)과 통신하기 위한 하나 이상의 커넥터들을 가지며; 메모리 서브 시스템(예를 들어, 205)은 프로세싱 장치(118)로부터 전력, 데이터 및 명령들을 수신하기 위한 하나 이상의 커넥터들을 갖는다.
일반적으로, 프로세싱 장치(118)는 아래에 더 논의된 바와 같이, 컴퓨터 시스템의 메모리의 일부(예를 들어, 3DXP에 저장된 페이지)가 동기식 메모리 액세스를 사용하여 컴퓨터 시스템의 메모리(예를 들어, DRAM)의 다른 부분을 통해 액세스되는 메모리 액세스를 포함하여, 서비스들을 제공하기 위해 하나 이상의 운영 체제들을 실행시킬 수 있다.
도 3은 본 개시의 일부 실시예들에 따른 대한 호스트 시스템(예를 들어, 호스트 시스템(120))에 의해 메모리 모듈(401)의 비휘발성 메모리(404)(예를 들어, 3DXP)에 대한 동기식 메모리 버스 액세스를 위해 구성된 메모리 모듈(401)을 도시한다. 메모리 모듈(401)은 메모리 서브 시스템(110) 또는 메모리 모듈(205)의 예이다. 일 예에서, 메모리 모듈(401)은 하이브리드 DIMM이다.
메모리 모듈(401)은 휘발성 메모리(402)(예를 들어, DRAM), 버퍼(410)(예를 들어, SRAM), 및 비휘발성 메모리(404)에 액세스하기 위한 매체 컨트롤러(414)를 포함한다. 메모리 모듈(401)은 또한 (예를 들어, 페이지-인 또는 페이지-아웃 요청들에 응답하여) 비휘발성 메모리(404)와 버퍼(410) 사이 및 버퍼(410)와 휘발성 메모리(402) 사이의 데이터 이동을 제어하기 위한 버퍼 컨트롤러(412)를 포함한다. 버퍼(410)는 버퍼(121)의 예이다.
메모리 모듈(401)은 멀티플렉서(408)를 사용하여 메모리 컨트롤러(416) 및 메모리 컨트롤러(418) 둘 다에 의해 휘발성 메모리(402)에 대한 액세스를 제공한다. 일 실시예에서, 멀티플렉서(408)는 (예를 들어, 호스트 인터페이스(406)를 통해 호스트 시스템(120)으로부터 수신된 판독 또는 기록 명령들로서 메모리 컨트롤러(416)로부터 수신된 신호들에 기초하여) 버퍼 컨트롤러(412)에 의해 제어된다.
메모리 컨트롤러(416)는 호스트 시스템에 의해 판독/기록 액세스를 처리하기 위한 호스트 인터페이스(406)에 결합된다. 메모리 컨트롤러(418)는 버퍼(410)로 또는 로부터 데이터를 이동할 때 버퍼 컨트롤러(412)에 의해 판독/기록 액세스를 처리하기 위해 버퍼 컨트롤러(412)에 결합된다.
일 실시예에서, 버퍼 컨트롤러(412)는 맵핑 테이블(403)을 유지한다. 일 예에서, 맵핑 테이블(403)은 버퍼(410)로 맵핑된 페이지 리스트를 포함한다. 일 예에서, 버퍼 컨트롤러(412)는 매핑 테이블(403)을 사용하여 휘발성 메모리(402) 또는 버퍼(410)를 사용하여 호스트 시스템으로부터 판독 또는 기록 명령을 서비스할지 여부를 결정한다.
일 예에서, 휘발성 메모리(402)는 호스트 인터페이스(406)(예를 들어, DDR4 슬롯)를 통해 호스트 시스템에 의해 액세스될 수 있으며, 또한 메모리 모듈(401)(예를 들어, DIMM) 내의 버퍼 컨트롤러(412)에 의해 액세스될 수 있는 DRAM이다. DDR4 DRAM은 양쪽에서 동작될 수 있기 때문에, DDR4 슬롯 및 버퍼 컨트롤러(412) 둘 다로부터의 클록들이 동기화된다.
동작 시, 호스트 시스템은 DDR4 슬롯을 통해 DDR4 데이터를 판독/기록한다. 비휘발성 메모리(404)(예를 들어, 3DXP 메모리)의 콘텐트는 DDR4 슬롯을 통해 간접적으로 액세스된다. 예를 들어, 3DXP 내 페이지에서 동작하기 위해, 페이지 인/아웃 제어 경로(예를 들어, 메모리 버스(203)를 통해 제어 채널에 구현됨)는 메모리 모듈(401)이 3DXP 페이지를 DDR4 DRAM으로 스와핑(또는 DDR4 DRAM에서 기존 페이지를 스와핑)하는 것을 요청하는 데 사용된다.
일 예에서, 페이지-인 요청에 응답하여, 버퍼 컨트롤러(412)는 3DXP 메모리로부터 페이지를 판독하고 페이지를 버퍼(410)(예를 들어, SRAM)로 이동시킨다. SRAM은 호스트 인터페이스(406)에서 DDR4 동작 사이클들을 매칭시키기에 충분히 빠르다. 메모리 컨트롤러(416)(예를 들어, DDR4 슬레이브)에 액세스하기 위해 버퍼 컨트롤러(412)에 의해 사용되는 타이밍 사이클들은 이러한 타이밍이 호스트 시스템에 의해 제어되므로 메모리 버스상의 DDR4 채널의 타이밍 사이클들과 일치한다.
호스트 시스템이 DDR4 채널을 사용할 경우, 버퍼 컨트롤러(412)는 DDR4 DRAM에 액세스하지 않는다. 호스트 시스템은 DDR4 DRAM이 특정 리프레싱 사이클들(예를 들어, tRFC)에서 자체 작업들을 수행할 수 있도록 한다. 이러한 사이클들에서, 버퍼 컨트롤러(412)는 DDR4 DRAM과 버퍼(410) 사이에서 데이터를 전송할 수 있다. 호스트 시스템과 메모리 모듈(401) 사이의 조정은 호스트 시스템이 충분한 리프레시 사이클들을 발행하여 버퍼 컨트롤러(412)가 이러한 사이클들을 사용하여 3DXP 페이지를 안/밖으로 스와핑하도록 DDR4 DRAM과 버퍼(410) 사이에서 데이터를 이동시킬 수 있도록 한다. 페이지를 스와핑 아웃하기 위해, 버퍼 컨트롤러(412)는 예약된 리프레시 사이클들 동안 DDR4 DRAM으로부터 페이지의 데이터를 판독하고, 버퍼(410)에 이들을 버퍼링한 다음, 이어서 페이지를 3DXP 메모리에 저장한다.
일 예에서, 호스트 시스템은 메모리 모듈(401)(예를 들어, DIMM) 상의 메모리 공간(예를 들어, DRAM 메모리 어드레스 공간)에 액세스한다. DIMM은 DRAM의 채널로서 호스트에 자신을 노출시킨다. 예를 들어, 16GB의 DRAM은 동기화 컴포넌트(113)를 구현하는 호스트에 드라이버가 로드될 때까지 정상 DRAM과 같이 호스트 소프트웨어 관점에서 동작할 수 있다. 드라이버는 호스트의 하이퍼바이저에 로딩된다. 예를 들어, 드라이버는 호스트의 하드 드라이브로부터 로딩된다.
일 예에서, 드라이버는 제어 경로를 사용하여 예를 들어, 4K 바이트 이상의 3DXP 데이터 블록들을 DIMM의 다양한 DRAM 어드레스들 안팎으로 이동되도록 요청한다. 드라이버 및 하이퍼바이저는 DRAM 어드레스들과 3DXP 데이터 간의 맵핑(예를 들어, 아래에 논의된 돈 4의 맵핑 테이블(246) 참조)을 갖는다.
일 실시예에서, 드라이버 및 하이퍼바이저는 DIMM 상에서의 데이터 이동을 제어한다. 예를 들어, 3DXP 블록들을 DRAM 어드레스 공간 안팎으로 이동하고 DRAM 페이지들을 호스트에서 실행중인 소프트웨어에 노출시키기 위한 요청이 이루어진다. 소프트웨어는 예를 들어 가상 머신(VM)에서 실행되고 있다. 일단 드라이버에 의해 맵핑이 이루어지면, 호스트는 기존 DRAM 메모리에 대해 수행된 것과 유사하게 DRAM의 해당 페이지들에 액세스할 수 있다. 따라서, 판독 및 기록 동작들은 맵핑되는 페이지 내 모든 데이터가 액세스될 수 있도록 호스트 시스템의 CPU를 사용하여 수행될 수 있다.
일 예에서, 페이지 인/아웃 제어 경로는 현재 DRAM에 있는 페이지를 3DXP 메모리에 다시 기록되도록 요청하거나, 또는 현재 DRAM에 없는 3DXP 메모리에 있는 페이지를 페이지 인 되도록 요청하기 위해 드라이버에 제공된다. 일 예에서, 3DXP 메모리는 DRAM(예를 들어, 128 GB의 DIMM 상의 3DXP 메모리)보다 훨씬 큰 용량을 갖는다. 그래서, 호스트 시스템의 소프트웨어는 언제나 최대 16GB의 용량에 액세스할 수 있다. 호스트 시스템의 드라이버는 총 용량 16GB 중 어느 부분이 언제나 노출되고 있는지를 제어하고 있다. 일반적으로, 이는 4K 바이트 입도(granularity)를 사용하여(예를 들어, 4K 바이트 페이지들을 사용하여) 구현될 수 있다.
일 예에서, 메모리 모듈(401)은 DIMM으로 구현된다. 비휘발성 메모리(404)(저장 매체)는 교차점 메모리 패키지들에 의해 제공된다. 버퍼 컨트롤러(412)는 매체 컨트롤러(414)를 통해 교차점 메모리 패키지들과 통신한다(그리고 또한 교차점 메모리로부터 판독 및 기록하기 위한 ECC 관리를 포함할 수 있다). 예를 들어, 교차점 메모리로부터 초기에 획득된 데이터의 페이지들은 버퍼(410) 안팎으로 복사(페이지 인/페이지 아웃)된다. 일 예에서, DDR 슬레이브는 호스트 DDR 버스(예를 들어, DDR4 슬롯)에 부착되며, 호스트 액세스 요청들은 DDR 컨트롤러를 통해 들어온다. 휘발성 메모리(402)는 DRAM이고, 호스트 판독/기록 요청들은 메모리 컨트롤러(416)를 통해 DRAM으로 보내진다.
일 예에서, DDR 슬레이브 사이클들은 SRAM 전송들을 위해 예약된다. 예를 들어, 실온에서 정상 DRAM 리프레시 사이클은 매 7.8 마이크로초(예를 들어, 리프레시 tRFC의 타이밍)를 갖는다. 동기화 컴포넌트(113)를 구현할 때, 호스트 시스템은 DRAM의 실제 리프레시에 필요한 것보다 더 빠른 리프레시 빈도를 구현하도록 구성된다(예를 들어, 호스트는 정상 빈도보다 더 자주 리프레시 사이클을 제어한다). 일 예에서, 리프레시 빈도는 4개의 인자에 의해 증가된다. 이러한 4개의 리프레시 사이클들 중 한 사이클 동안, 호스트 리프레시에 의해 제어되는 대로 동기화가 수행되며, 이는 메모리 모듈(401)의 내부 DRAM들에서 발생하는 리프레시를 트리거한다. 4개의 리프레시 사이클들 중 나머지 3개의 사이클들 동안, 이들은 버퍼 컨트롤러(412)가 호스트의 지식 또는 호스트에 의한 제어 없이 버퍼(410)와 DRAM 사이에서 판독 및 기록할 수 있는 아이들(idle) 사이클들이다. 따라서, 교차점 메모리의 저속 대역폭 및 긴 레이턴시 시간과, 데이터를 DDR 인터페이스로 전송하고 데이터를 표준 DDR4 호스트(예를 들어, 호스트 시스템(120))에 이용할 수 있게 하는 능력의 매칭이 있다.
일 예에서, 호스트 시스템은 정상 DDR4 타이밍을 사용하여 모든 DRAM 어드레스에 대한 판독/기록 액세스를 갖는다. 예를 들어, 호스트는 이러한 시간들 동안 DDR4 역할(role)당 임의의 트래픽을 생성할 수 있다.
일 실시예에서, 버퍼(410)에 의한 DRAM에 대한 판독/기록 액세스에 대해, 예약된 리프레시 사이클들은 3DXP 데이터가 DRAM으로/로부터 푸시될 수 있는 시간 윈도우들을 제공한다. 버퍼 컨트롤러(412)는 3DXP 메모리를 판독 및 기록할 수 있으며, 언제든지 버퍼(410)에 스페이징된(staged) 데이터를 갖는다(버퍼(410)는 3DXP 메모리로 및 로부터 판독 및 기록하기 위한 스테이징(staging) 버퍼이다). 버퍼 컨트롤러(412)에 의해 사용되도록 예약된 리프레시 시간 기간(예를 들어, tRFC) 동안, 그 스테이징된 데이터는 (호스트에 대한 지식없이) 버퍼(410)로부터 DRAM으로 푸시될 수 있다. 일 예에서, tRFC 사이클 동안, 교차점 메모리로부터 새로운 페이지가 DRAM 어드레스로 판독된다. 페이지가 이제 호스트에게 다음 호스트 판독/기록 사이클에서 판독 및 기록하도록 이용될 수 있다.
일 예에서, 버퍼(410)는 호스트가 정규 호스트 사이클들(예를 들어, tREFI) 동안 (3DXP 메모리에 저장된) 데이터를 수신할 수 있도록 속도 매칭 버퍼(speed-matching buffer)로 사용된다. 이 결과는 상기에 설명된 바와 같이, 버퍼(410)로부터 내부 DRAM으로 데이터를 푸시함으로써 달성된다.
일 예에서, 메모리 컨트롤러(416)의 DDR4 슬레이브는 버퍼(410)(예를 들어, SRAM)의 사용을 구현하기 위해 버퍼 컨트롤러(412)와 인터페이스된다. DDR4 슬레이브는 명령 어드레스 및 데이터를 수신할 수 있다. 예를 들어, DDR 2667에서 실행될 수 있는 고성능 IO들이 사용된다(ZQ 교정이 포함될 수 있다). 일 실시예에서, 버퍼 컨트롤러(412)는 호스트 DDR 채널로부터의 데이터 트래픽을 이해하기 위해 스누핑(snooping)을 수행한다.
일 예에서, DRAM 마스터 물리 인터페이스(PHY)들은 메모리 모듈(401)의 DRAM들에 연결된다. 버퍼 컨트롤러(412)에 의헤 제어되는 것처럼, 멀티플렉서(408)는 (호스트가 이 시점에 DRAM으로 판독/기록 명령들을 발행하지 않도록 SRAM 버퍼 판독 및 기록을 위해 예약된 tRFC 동안) 호스트로부터 휘발성 메모리(402)를 위한 특정 DRAM 채널로, 또는 메모리 모듈(401)에서 내부적으로 요구될 때 트래픽을 보낸다. 일 예에서, 버퍼 컨트롤러(412)는 SRAM 버퍼(410)로부터 판독 및 기록한다. 버퍼 컨트롤러(412)는 tRFC 윈도우가 메모리 모듈(401)에 의해 내부 사용에 이용 가능한 시점을 검출한다.
일 예에서, 3DXP 비휘발성 메모리(404)의 전체 DDR 어드레스 공간은 호스트 시스템에 노출된다. 다양한 실시예들에 따르면, 호스트 시스템(120)의 컨트롤러(예를 들어, 컨트롤러(116))는 기존 DRAM에 액세스하는 것과 동일한 방식(예를 들어, 동일한 판독/기록 및 리프레시 타이밍 사이클들)으로 동작할 수 있다. 예를 들어, tREFI 및 tRFC 카운터들의 설정은 일부 리프레시 사이클들이 버퍼 컨트롤러(412)에 의해 사용하기 위해 예약될 수 있도록 호스트 시스템에서 변경된다. 예를 들어, 이러한 변경들은 일반적으로 호스트 컨트롤러의 초기화 동안 프로그래밍된다. 일 실시예에서, 호스트의 소프트웨어는 이러한 설정들에 대한 가시성이 필요하지 않다(예를 들어, 소프트웨어 및 호스트가 정상적인 방식으로 동작할 수 있다).
일 실시예에서, 제어 레지스터들이 메모리 모듈(401)에 제공된다. 제어 레지스터들은 예를 들어, DDR 어드레스 공간의 예약된 상위 부분에 있을 수 있다(이러한 제어 레지스터들은 메모리 모듈에 의해 사용하기 위한 것이며 메모리 모듈에 대해 미리 정의된 의미를 갖는다). 호스트의 드라이버는 요청 시 페이지를 만들고, 특정 페이지가 3DXP 메모리로부터 로드된 시점을 알 수 있는 기능을 갖는다. 드라이버가 페이지를 로드하지 않는 경우, 동작은 정상 DRAM 동작으로서 수행된다.
도 4는 본 개시의 적어도 일부 실시예들에 따른 동기식 메모리 버스 액세스를 사용하여 메모리 모듈(205)에 액세스하는 호스트 운영 체제(241)를 도시한다. 메모리 모듈(205)은 버퍼(410)를 포함한다. 버퍼(410)는 버퍼(121)의 예이다. 명령들 및 데이터는 호스트 인터페이스(406)를 통해 호스트 운영 체제(241)로부터 수신된다. 일 예에서, 호스트 운영 체제(241)는 호스트 시스템(120) 상에서 실행된다.
일 실시예에서, 장치 드라이버(247)(예를 들어, 백엔드 드라이버)는 하이퍼바이저(245)를 통해 메모리 액세스하도록 구성된다. 예를 들어, 도 4의 시스템은 도 1 또는 2의 컴퓨터 시스템에 구현될 수 있다.
일 예에서, 호스트 운영 체제(241)는 도 1 또는 2의 컴퓨터 시스템의 프로세싱 장치(118) 상에서 실행된다. 호스트 운영 체제(241)는 메모리 모듈(205)과 같은 메모리 서브 시스템들의 메모리(예를 들어, 221, …, 223)를 사용하여 메모리 서비스들을 제공하는 하나 이상의 장치 드라이브들(예를 들어, 247)을 포함한다.
백엔드 드라이버(247)는 맵핑 테이블(246)을 유지한다. 예를 들어, 드라이버(247)는 비휘발성 메모리(404)에 저장된 데이터 페이지들에 대한 맵핑을 포함하도록 맵핑 테이블(246)을 유지한다.
호스트 운영 체제(241)는 가상 머신(249)를 프로비저닝하는 하이퍼바이저(245)를 포함한다. 가상 머신(249)는 도 1 또는 2의 컴퓨팅 시스템의 하드웨어를 사용하여 호스트 운영 체제(241)에 의해 제공되는 리소스들 및 서비스들을 통해 구현되는 가상 하드웨어를 갖는다. 예를 들어, 하이퍼바이저(245)는 메모리 모듈(205)과 같은, 메모리 서브 시스템들의 메모리(예를 들어, 221, …, 223)의 일부를 사용하여 가상 머신(249)의 일부로서 가상 메모리를 프로비저닝할 수 있다.
가상 머신(249)은 게스트 운영 체제(243)가 가상 머신에서의 프로비저닝과 동일하거나 유사한 하드웨어 세트를 갖는 물리적 컴퓨팅 시스템에서 실행되는 운영 체제(243)와 같은 방식으로, 게스트 운영 체제(243)에서 실행되는 어플리케이션들(예를 들어, 251, …, 253)에 리소스들 및/또는 서비스들을 제공하도록 한다. 하이퍼바이저(245)는 가상 머신에서 프로비저닝된 가상 하드웨어와 호스트 운영 체제(241)에 의해 관리되는 컴퓨팅 시스템의 하드웨어의 서비스들 사이의 맵핑을 관리한다.
장치 드라이버(248)(예를 들어, 프론트-엔드 드라이버)는 백엔드 드라이버(247)와 통신한다. 드라이버(247) 및 드라이버(248)는 추가 DDR 용량이 이용 가능할 때 메모리 벌루닝(memory ballooning)을 위해 통신할 수 있다.
도 4는 가상 머신(249)이 하이퍼바이저(245)에 의해 프로비저닝되는 경우를 예시한다. 일반적으로, 하이퍼바이저(245)는 동일한 게스트 운영 체제(243) 또는 다른 게스트 운영 체제들을 실행할 수 있는 여러 가상 머신들(예를 들어, 249)을 프로비저닝할 수 있다. 다른 사용자 세트들 및/또는 어플리케이션 프로그램들은 다른 가상 머신들을 사용하도록 할당될 수 있다.
일부 경우, 호스트 운영 체제(241)는 가상 머신들을 프로비저닝하기 위한 서비스들을 제공하도록 특화되며, 다른 어플리케이션 프로그램들을 실행하지 않는다. 대안으로, 호스트 운영 체제(241)는 어플리케이션들(예를 들어, 251, …, 253)과 같은 다른 어플리케이션 프로그램들을 지원하기 위한 추가 서비스들을 제공할 수 있다.
일 실시예에서, 장치 드라이버(247)는 가상 머신(249)에 의해 사용하기 위해 더 느린 메모리(예를 들어, 3DXP)에서 더 빠른 메모리(예를 들어, DRAM)로 페이지의 페이지-인을 요청하도록 구성될 수 있다. 페이지를 요청한 후, 더 느린 메모리에서 더 빠른 메모리로 데이터 페이지를 로드 및/또는 전송함으로써 더 빠른 메모리에서 페이지가 이용 가능하게 된다. 예를 들어, 더 느린 메모리는 메모리 모듈(401)의 비휘발성 메모리(404)일 수 있으며, 빠른 메모리는 동일한 메모리 모듈(401)의 휘발성 메모리(402)일 수 있다.
일 실시예에서, 데이터의 전송(예를 들어, 호스트 운영 체제(241)에 의한 페이지-인 요청에 응답하여 수행됨)은 메모리 버스(203)와 같은 프로세싱 장치(118)에 연결된 통신 채널들의 혼잡을 피하거나 줄이기 위해, 동일한 메모리 모듈(401) 내에서와 같이 동일한 메모리 서브 시스템 내에서 수행된다. 예를 들어, 데이터는 장치 드라이버(247)로부터의 하나 이상의 명령들, 요청들 및/또는 인스트럭션들에 응답하여, 메모리 모듈(205)의 컨트롤러(227)의 제어 하에서, 메모리 모듈(205)의 더 느린 메모리(223)(예를 들어, 3DXP)로부터 메모리 모듈(205)의 더 빠른 메모리(221(예를 들어, DRAM)로 복사된다.
일 실시예에서, 하이퍼바이저(245)는 메모리 서브 시스템(예를 들어, 메모리 모듈(205))의 메모리(예를 들어, 221, ..., 223)에 액세스하도록 장치 드라이버(247)에게 요청할 뿐만 아니라, 사용될 메모리(예를 들어, 221, …, 223, …, 또는 225)의 페이지들을 관리하는 데 사용될 수 있는 정보를 장치 드라이버(247)에게 제공한다.
일 예에서, 드라이버(247)는 메모리 모듈(205)(예를 들어, DIMM)의 메모리 어드레스 공간에 액세스하는데 사용되는 메모리 모드 드라이버이다. 드라이버(247)는 언제든 DIMM의 휘발성 메모리에 있는 페이지들을 제어한다. 한 접근법에서, 예를 들어, 메모리 어드레스 공간은 게스트 운영 체제(243)에 노출된다. 이 하이퍼바이저 환경에서, 게스트 운영 체제(243)는 DIMM의 비휘발성 메모리(예를 들어, 3DXP)의 전체 저장 용량을 본다.
일 예에서, DDR DRAM에있는 다수의 페이지들만이 호스트 운영 체제(241)를 통해 능동적으로 페이지 인 된다. 존재하지 않는 페이지에 대한 게스트 액세스가 있는 경우, 호스트 시스템의 메모리 관리 유닛(MMU)의 페이지 폴트(fault) 경로는 페이지의 로딩(페이지 인)을 발생시키도록 드라이버(247)를 트리거한다. 일 예에서, 페이지는 제어 레지스터들을 통해 로드된다. 일단 페이지가 실제로 DDR DRAM에 존재하면, 드라이버(247)는 (매핑 테이블(246)을 통해) MMU 맵핑을 설정할 수 있어 게스트 어플리케이션이 해당 데이터를 직접 판독 및 기록할 수 있도록 한다.
일 예에서, 게스트의 프론트 및 드라이버와 호스트의 백엔드 드라이버는 메모리 어드레스 공간에 대한 액세스와 관련하여 통신한다. 일 예에서, 페이지들이 오래되었다(예를 들어, 미리 결정된 임계값에 기초하여 자주 사용되지 않았다)고 판단할 경우, 다른 페이지들이 페이지 인 되도록 DDR 메모리에서 사용할 수 있는 공간을 만들기 위해 DDR 메모리 어드레스 공간에 현재 맵핑된 데이터의 일부가 (예를 들어, SRAM 버퍼를 통해) 3DXP 메모리로 다시 푸시되도록 하는 요청이 이루어진다. 백엔드 드라이버(247)는 DDR DRAM으로부터 3DXP 메모리로 데이터를 이동시키기 위한 페이지 아웃 요청을 통신하다.
일 실시예에서, 백엔드 드라이버(247)는 메모리 모드 드라이버로 동작한다. 드라이버(247)가 로드될 때까지, 메모리 모듈(205)의 3DXP 메모리 용량에 대한 액세스가 없다. 메모리 모드 드라이버로서의 이 동작 동안, 게스트 운영 체제(243)는 메모리를 정상으로 보고, 드라이버(247)는 페이지-인 및 페이지-아웃 동작들을 위해 메모리 모듈에 DRAM 페이지드을 예약한다.
드라이버(247)는 게스트 운영 체제(243)에 3DXP 메모리를 노출하고 (예를 들어, 맵핑 테이블(246)에서) 페이지 맵핑을 유지한다. 예를 들어, 드라이버(247)는 현재 DRAM에 있는 페이지들과 3DXP 메모리에 남아있는 페이지들 사이의 맵핑을 유지한다.
일 예에서, 드라이버(247)는 현재 DRAM에 저장된 임의의 페이지들을 맵핑하기 위해 호스트 시스템에서 메모리 관리 유닛 맵핑 테이블들을 설정한다. 게스트로부터의 페이지 장애 경로는 페이지 인 요청을 트리거하기 위해 맵핑된 페이지 외부에 액세스가 있는 경우 사용될 수 있다. 페이지 아웃 요청은 DRAM의 일부 메모리 공간을 유지하기 위해 수행될 수 있다.
일 실시예에서, 동작은 메모리 모드로 제한되지 않는다. 드라이버(247)는 또한 3DXP 메모리가 블록 모드 저장소로 노출되는 블록 모드 드라이버로 동작될 수 있다.
일 예에서, 호스트 시스템의 BIOS는 위에서 언급된 바와 같이 사이클들의 예약을 위한 tRFC 및 tREFI 타이밍의 설정을 지원하도록 구성된다. 메모리 모듈(205) 자체는 파워 온 또는 자체 리프레시로부터 정상적으로 초기화된다. 일 예에서, 드라이버 기반 제로화가 수행되면, 특정 페이지들이 먼저 할당된다. 다른 예에서, 처음 판독되는 페이지들이 제로화된다. 일 예에서, 페이지가 처음 요청되며, 이는 제로화된 페이지로 처리된다.
일 실시예에서, 드라이버(247)는 페이지 인을 수행하기 위한 요청을 생성한다. 이 실시예에서, 두 가지 모드의 동작들이 있을 수 있다. 제1 모드에서, 페이지 인 요청이 단기간에 발생하면, 드라이버(247)는 대기할 수 있다 (예를 들어, 단시간은 500 나노초 미만일 수 있다). 동작이 완료된 후, 제어가 게스트에게 즉시 반환될 수 있다. 일 예에서, 그 기간에, 드라이버는 CPU 제어를 제공하고 이를 스레드에서 실행할 수 있다.
일 실시예에서, 드라이버는 하나 이상의 맵핑 테이블들(예를 들어, 매핑 테이블(246))을 유지한다. 페이지 인 요청에는, 맵핑된 모든 페이지들을 열거하는 페이지 테이블 엔트리 세트가 있다. 메모리 모듈에서, DDR 슬레이브는에는 데이터가 처음에 3DXP 메모리로부터 SRAM 버퍼로 전송되는 페이지 인 요청을 판독하기 위한 옵션이 있다. 일반적인 동작에서, 버퍼 컨트롤러(412)는 적절한 윈도우가 데이터를 DRAM 메모리에 기록하기를 기다린다.
일 실시예에서, 메모리 모듈(205)은 SRAM 버퍼(410)에 있는 페이지들의 리스트를 포함하여 자신의 맵핑 테이블(예를 들어, 맵핑 테이블(403))을 유지한다. 따라서, 버퍼 컨트롤러(412)는 메모리 모듈(205)이 요청을 수신하기 전에 SRAM 버퍼(410)로의 전송을 완료한 페이지들에 대해 SRAM 버퍼(410)로부터 직접 특정 페이지들에 대한 판독 요청들을 서비스할 수 있다. 이를 통해 페이지 인 요청이 완료되는 데 걸리는 시간의 양을 단축할 수 있다. 메모리 모듈(205)은 일단 페이지가 SRAM 버퍼(410)에 놓여 지면 페이지-인 완료 신호를 호스트 시스템에 반환할 수 있다(그리고 버퍼 컨트롤러(412)는 SRAM 버퍼(410)로부터 내부적으로 요청들을 서비스할 수 있다). 이를 통해 호스트 시스템이 특정 3DXP 페이지(들)에 액세스하기 위한 레이턴시를 줄일 수 있다. 드라이버(247)는 맵핑이 설정될 때까지, 호스트가 페이지 인 요청이 완료될 때까지 해당 페이지(들)에 액세스하지 않을 것임을 보장한다.
일 실시예에서, 드라이버(247)는 페이지 아웃 동작을 구현한다. 일 예에서, 이 동작은 스레드로 트리거된다. 이 동작은 DRAM 메모리에서 자유 페이지들을 다시 트레이드하고 유효한 페이지들의 드라이버 레벨 맵핑을 변경한다. 호스트 시스템(120)에서 CPU 캐시의 플러싱은 모든 기록 동작들이 DDR 채널로 푸시되는 것을 보장하도록 수행된다. 그런 다음, 페이지 아웃 요청이 메모리 모듈(205)로 전송될 수 있다.
일 실시예에서, 페이지 아웃 요청에 응답하여, 요청된 페이지가 버퍼(410)에 있는 경우, 요청은 페이지 데이터를 비휘발성 메모리(404)로 즉시 이동하도록 스케줄링될 수 있다. 요청된 페이지가 휘발성 메모리(402)에 있는 경우, 요청은 다음 이용 가능한 리프레시 윈도우에서 스케줄링된다. 요청된 페이지를 위한 공간이 버퍼(410)에 할당된다. 페이지는 다음 이용 가능한 리프레시 윈도우 동안 휘발성 메모리(402)로부터 버퍼(410)로 복사된다. 그런 다음, 기록은 임의의 후속 시간에 버퍼(410)로부터 비휘발성 메모리(404)로 스케줄링될 수 있다. 호스트 시스템은 페이지 아웃 동작이 진행중일 경우 요청된 페이지에 액세스하지 않는다.
도 5는 본 개시의 일부 실시예들에 따른 저장 매체에 대한 동기식 메모리 버스 액세스를 위한 방법을 도시한다. 도 5의 방법은 하드웨어(예: 프로세싱 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예: 프로세싱 장치에서 실행되거나 수행된 인스트럭션들) 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시예들에서, 도 5의 방법은 도 1 또는 2의 동기화 컴포넌트(113)에 의해 적어도 부분적으로 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하고, 예시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병행하여 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
예를 들어, 도 5의 방법은 호스트 운영 체제(120) 및 메모리 서브 시스템(110) 또는 메모리 모듈(205)이 있는 도 1 또는 2의 컴퓨팅 시스템에 구현될 수 있다. 일 예에서, 동기화 컴포넌트(113)는 도 3의 메모리 모듈(401) 및 도 3의 호스트 운영 체제(241)를 통해 적어도 부분적으로 구현될 수 있다.
도 5의 블록(301)에서, 제1 메모리(예를 들어, 휘발성 메모리(402)) 및 제2 메모리(예를 들어, 비휘발성 메모리(404))를 갖는 컴퓨팅 시스템이 제공된다. 제1 메모리는 제1 시간 윈도우 세트에서 하나 이상의 윈도우들 동안 메모리 버스(예를 들어, 메모리 버스(203))를 통한 판독 및 기록 액세스를 위해 호스트 시스템(예를 들어, 호스트 시스템(120))에 이용 가능하다. 일 예에서, 제1 시간 윈도우 세트는 호스트 시스템(120)이 메모리 모듈(401)로부터 DRAM 데이터를 수신하는 정규 호스트 사이클들을 포함한다. 일 예에서, tREFI는 리프레시 간 시간임에 유의한다. REFRESH 사이클(tRFC)은 tREFI의 일부이다. 따라서, 이 예에서, 호스트가 DRAM에 대한 판독/기록 명령들을 발행할 수 있는 정규 호스트 사이클은 tREFI-tRFC 기간이다.
블록(303)에서, 제2 메모리에 저장된 데이터의 페이지에 관한 요청은 호스트 시스템의 드라이버로부터 수신된다. 예를 들어, 요청은 호스트 시스템(120)의 드라이버(247)로부터 수신된 요청의 페이지이다. 예를 들어, 데이터의 페이지는 비휘발성 메모리(404)(예를 들어, 교차점 메모리)에 저장된다.
블록(305)에서, 요청에 응답하여, 요청된 페이지는 제2 메모리로부터 버퍼로 전달된다. 예를 들어, 버퍼는 버퍼(121) 또는 버퍼(410)이며, 페이지는 비휘발성 메모리(404)로부터 전달된다.
블록(307)에서, 페이지는 버퍼로부터 제1 메모리로 기록된다. 페이지는 메모리 버스에 대한 리프레시 타이밍에 대응되는 제2 시간 윈도우 세트 중 하나 이상 동안 제1 메모리에 기록된다. 리프레시 타이밍은 호스트 시스템에서 제어된다. 예를 들어, DDR 채널 상의 리프레시 사이클들은 일부 리프레시 사이클들이 버퍼(410)로 및 로부터의 전송을 위해 예약될 수 있도록 호스트 시스템(120)에서 구성된다. 일 예에서, 총 4개의 리프레시 사이클들 각각에 대해, 하나의 리프레시 사이클은 실제로 DRAM 메모리를 리프레시하는 데 사용되며, 나머지 3개의 사이클들은 버퍼(410)로 및 로부터의 전송을 위해 예약된다. 예를 들어, 호스트 시스템(120)은 버퍼 컨트롤러(412)가 DDR4 DRAM을 리프레시하는데 사용되지 않는 특정 예약된 리프레싱 사이클들(예를 들어, tRFC)에서 휘발성 메모리(402)의 DDR4 DRAM 상에서 하나 이상의 작업들을 수행할 수 있도록 구성될 수 있다. 이러한 사이클들에서, 버퍼 컨트롤러(412)는 DDR4 DRAM과 버퍼(410) 사이에서 데이터를 전송할 수 있다.
일 실시예에서, 페이지에 저장된 데이터에 대한 판독 명령은 호스트 시스템(예를 들어, 호스트 시스템(120))으로부터 메모리 버스를 통해 메모리 모듈(예를 들어, 메모리 모듈(401))에 의해 수신된다. 판독 명령을 수신하는 것에 응답하여, 요청된 데이터는 메모리 버스를 통해 호스트 시스템으로 전송된다.
일 실시예에서, 메모리 모듈은 버퍼(예를 들어, 버퍼(410))에 맵핑된 페이지들의 리스트를 포함하는 맵핑 테이블(예를 들어, 맵핑 테이블(403))을 유지한다. 상기 리스트는 호스트 시스템으로부터 판독 명령에 요청된 데이터를 갖는 페이지를 포함한다. 판독 명령을 수신하는 것에 응답하여, 메모리 모듈의 버퍼 컨트롤러(예를 들어, 버퍼 컨트롤러(412))는 맵핑 테이블에 기초하여, 메모리 모듈(예를 들어, 휘발성 메모리(402)의 DDR4 DRAM)의 버퍼로부터 또는 휘발성 메모리로부터의 요청된 데이터를 전송할지 여부를 결정한다.
다른 실시예에서, 컴퓨팅 시스템은 제1 메모리(271) 및 제2 메모리(272)를 갖는다. 페이지 인 요청에 응답하여, 제2 메모리(273)의 페이지의 데이터는 제1 메모리(271)로 복사/로딩된다.
예를 들어, 장치 드라이버(247)는 버퍼 컨트롤러(412)가 제1 메모리(271)와 제2 메모리(273) 사이에서 데이터를 이동시키도록 하는 메모리 모듈(401)에 인스트럭션들, 요청들 및/또는 명령들을 제공할 수 있다.
예를 들어, 제1 메모리(271) 및 제2 메모리(273)는 메모리 버스(203)를 통해 컴퓨팅 시스템의 프로세싱 장치(118)에 연결되는 동일한 메모리 모듈(205)에 있을 수 있다.
예를 들어, 메모리 모듈(205)은 제2 메모리(273)가 프로세싱 장치(118)에 의해 메모리 버스(203)에서 직접 어드레싱되지 않도록 과도한 메모리 용량을 갖는다. 제1 메모리(271)는 메모리 버스(203) 상에서 직접 어드레스할 수 있는 메모리 모듈(205)의 메모리 용량의 일부이다.
예를 들어, 제1 메모리(271)는 휘발성 동적 랜덤 액세스 메모리(DRAM)이고 제2 메모리(273)는 비휘발성 교차점 메모리(예를 들어, 3DXP)이다. 제2 메모리(273)는 메모리 버스(203) 상의 컴퓨터 시스템의 메인 메모리의 일부인 제1 메모리(271)에 대한 저장 기능을 제공한다. 제2 메모리(273)는 메모리 모듈(205)의 제1 메모리(271)(예를 들어, DRAM)의 용량을 가상으로 확장하고, 전원이 공급되지 않아도 메모리 모듈(205)의 데이터가 저장될 수 있게 한다.
일부 구현예들에서, 프로세싱 장치(118) 및 메모리 서브 시스템 사이의 통신 채널은 근거리 통신망, 무선 근거리 무선 통신망, 무선 사설 통신망, 이동 통신망, 광대역 고속 상시 연결 무선 통신 연결(예를 들어, 현재 또는 차세대 모바일 통신 링크)과 같은, 컴퓨터 네트워크를 포함하며; 프로세싱 장치(118) 및 메모리 서브 시스템은 NVMe 프로토콜과 유사한 데이터 저장 관리 및 사용 명령들을 사용하여 서로 통신하도록 구성될 수 있다.
일반적으로 메모리 서브 시스템은 비휘발성 저장 매체를 가질 수 있다. 비휘발성 저장 매체의 예들은 집적 회로에서 형성된 메모리 셀들 및 강체 디스크들에 코팅된 자성 물질을 포함한다. 비휘발성 저장 매체는 전력을 소모하지 않고 이에 저장된 데이터/정보를 유지할 수 있다. 메모리 셀은 NAND 로직 게이트, NOR 로직 게이트, 위상 변화 메모리(PCM), 자기 메모리(MRAM), 저항성 랜덤 액세스 메모리, 교차점 저장 장치 및 메모리 장치들(예를 들어, 3DXP 메모리) 과 같은, 다양한 메모리/저장 기술들을 사용하여 구현될 수 있다. 교차점 메모리 장치는 트랜지스터가 없는 메모리 소자들을 사용하며, 그 각각은 열(column)로 함께 적층되는 메모리 셀 및 선택기를 갖는다. 메모리 소자 열(column)은 두 개의 수직으로 배치된 와이어들을 통해 연결되며, 여기서 하나는 메모리 소자 열 위에 있고 다른 하나는 메모리 소자 열 아래에 있다. 각 메모리 소자는 두 레이어들 각각에 하나의 와이어의 교차점에서 개별적으로 선택될 수 있다. 교차점 메모리 장치들은 빠르고 비휘발성이며, 처리 및 저장을 위한 통합 메모리 풀(pool)로 사용될 수 있다.
메모리 서브 시스템(예를 들어, 205)의 컨트롤러(예를 들어, 227)는 펌웨어를 실행하여 프로세싱 장치(118)로부터의 통신에 응답하여 동작들을 수행할 수 있다. 일반적으로 펌웨어는 공학적 컴퓨팅 장치들의 제어, 모니터링 및 데이터 조작을 제공하는 컴퓨터 프로그램의 일종이다.
컨트롤러의 동작을 포함하는 일부 실시예들은 컨트롤러의 펌웨어와 같은, 컨트롤러에 의해 실행된 컴퓨터 인스트럭션들을 사용하여 구현될 수 있다. 일부 경우, 하드웨어 회로들은 기능들 중 적어도 일부를 구현하는 데 사용될 수 있다. 펌웨어는 초기에 비휘발성 저장 매체 또는 다른 비휘발성 장치에 저장될 수 있으며, 컨트롤러에 의한 실행을 위해 휘발성 DRAM 및/또는 프로세서 내 캐시 메모리에 로딩될 수 있다.
비일시적(non-transitory) 컴퓨터 저장 매체는 일반적으로 메모리 서브 시스템(예를 들어, 205)의 펌웨어의 인스트럭션들 및/또는 운영 체제(예를 들어, 241, 243)의 인스트럭션들, 특히 장치 드라이버(247) 및 하이퍼바이저(245)를 저장하는 데 사용될 수 있다. 일 예에서, 인스트럭션들이 프로세싱 장치(118)에 의해 실행되면, 인스트럭션들은 프로세싱 장치(118)가 위에서 논의된 방법을 수행하도록 한다.
도6은 본 개시의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템(600)의 블록도이다. 도 6은 기계가 본원에 논의된 방법론들 중 임의의 하나 이상을 수행하게 하는 인스트럭션 세트가 실행될 수 있는 컴퓨터 시스템(600)의 예시적인 상기 기계를 예시한다. 일부 실시예들에서, 컴퓨터 시스템(600)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나, 이에 결합되거나 이를 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응되거나, 동기화 컴포넌트(113)의 동작들을 수행(예를 들어, 도 1 내지 5를 참조하여 설명된 동기화 컴포넌트(113)에 대응되는 동작들을 수행하기 위한 인스트럭션들을 실행)하는 데 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량으로, 피어 투 피어(또는 분배) 네트워크 환경에서의 피어 기계로, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 디지털 보조 장치(PDA), 셀룰러 텔레폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 수행될 조치들을 명시하는 인스트럭션 세트(순차적 또는 다른 방식)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 예시되어 있지만, "기계"라는 용어는 또한 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 인스트럭션 세트(또는 복수 세트)를 개별적으로 또는 공통으로 실행하는 임의의 기계 컬렉션을 포함하는 것으로 간주해야 한다.
예시적인 컴퓨터 시스템(600)은 버스(630)(다수의 버스들을 포함할 수 있음)를 통해 서로 통신하는, 프로세싱 장치(602), 메인 메모리(604)(예: 읽기 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(618)를 포함한다.
프로세싱 장치(602)는 마이크로프로세서, 중앙 처리 유닛 등과 같은 하나 이상의 범용 프로세싱 장치들을 나타낸다. 보다 구체적으로, 프로세싱 장치는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 인스트럭션 세트들을 구현하는 프로세서, 또는 인스트럭션 세트들의 조합을 구현하는 프로세서들일 수 있다. 프로세싱 장치(602)는 또한 ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 장치들일 수 있다. 프로세싱 장치(602)는 본원에 논의된 동작들 및 단계들을 수행하기 위한 인스트럭션들(626)을 수행하도록 구성된다. 컴퓨터 시스템(600)은 네트워크(620)를 통해 통신하기 위한 네트워크 인터페이스 장치(608)를 더 포함할 수 있다.
데이터 저장 시스템(618)는 본원에 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 인스트력션 세트 또는 소프트웨어(626)가 저장되는 기계 판독 가능 저장 매체(624)(컴퓨터 판독 가능 매체라고도 함)를 포함할 수 있다. 인스트럭션들(626)은 또한 기계 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(600), 메인 메모리(604) 및 프로세싱 장치(602)에 의한 실행 동안 메인 메모리(604) 내에 및/또는 프로세싱 장치(602) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능 저장 매체(624), 데이터 저장 시스템(618) 및/또는 메인 메모리(604)는 도 1의 메모리 서브 시스템(110)에 대응될 수 있다.
일 실시예에서, 인스트럭션들(626)은 동기화 컴포넌트(113)(예를 들어, 도 1 내지 5를 참조하여 설명된 동기화 컴포넌트(113))에 대응되는 기능을 구현하기 위한 인스트럭션들을 포함한다. 기계 판독 가능 저장 매체(624)가 예시적인 실시예서 단일 매체인 것으로 도시되어 있지만, "기계 판독 가능 저장 매체"라는 용어는 하나 이상의 인스트럭션 세트들을 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 저장 매체"라는 용어는 또한 기계에 의해 실행되는 인스트럭션 세트를 저장 또는 인코딩할 수 있고 기계가 본 개시의 방법들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, "기계 판독 가능 저장 매체"라는 용어는, 이에 제한되는 것은 아니나, 솔리드 스테이트 메모리들, 광학 매체 및 자기 매체를 포함하는 것으로 간주되어야 한다.
전술한 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산의 알고리즘 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명들 및 표현들은 데이터 처리 분야의 당업자가 그들 작업의 실체를 다른 당업자에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 여기서, 알고리즘은 일반적으로 원하는 결과를 도출하는 자기 모순 없는(self-consistent) 동작 시퀀스인 것으로 생각된다. 동작들은 이러한 물리적 수량의 물리적 조작을 필요로 한다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 양은 저장되고, 결합되고, 비교되고 아니면 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 이러한 신호들을 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이, 주로 일반적인 사용의 이유로, 때때로 편리한 것으로 입증되었다.
그러나, 이러한 및 유사한 용어들 모두는 적절한 물리적 양과 관련이 있으며 이러한 양에 적용되는 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들과 메모리들 내에서 물리적(전자적) 양으로 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내의 물리적 양으로 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 인용할 수 있다.
본 개시는 또한 본원에서 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 이는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 이에 제한되는 것은 아니나, 플로피 디스크, 광 디스크, CD-ROM, 및 자기-광학 디스크, 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 각각 컴퓨터 시스템 버스에 연결된 전자 인스트럭션들을 저장하기에 적합한 임의의 유형의 매체를 포함하는 임의 유형의 디스크와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본원에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들은 본원의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 다 특화된 장치를 구성하는 것이 편리하다는 것을 입증할 수 있다. 다양한 이들 시스템들의 구조는 아래의 설명에서 제시되는 것으로 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본원에 기술된 바와 같이 본 개시의 교시를 구현하는 데 사용될 수 있음이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 장치)를 프로그래밍하는 데 사용될 수는, 인스트럭션들을 저장한 기계 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능 매체는 기계(예: 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예들에서, 기계 판독 가능(예: 컴퓨터 판독 가능) 매체는 읽기 전용 메모리( "ROM"), 랜덤 액세스 메모리( "RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트들 등과 같은 기계(예: 컴퓨터) 판독 가능 저장 매체를 포함한다.
이 설명에서, 다양한 기능들 및 동작들은 설명을 단순화하기 위해 컴퓨터 명령에 의해 수행되거나 컴퓨터 명령에 의해 야기되는 것으로 설명된다. 그러나, 당업자는 이러한 표현이 의미하는 것이 마이크로프로세서와 같은 하나 이상의 컨트롤러들 또는 프로세서들에 의한 컴퓨터 인스트럭션들의 실행으로 인한 기능들이라는 것을 인식할 것이다. 대안으로, 또는 조합하여, 기능들 및 동작들은 어플리케이션별 집적 회로(ASIC) 또는 필드 프로그램 가능 게이트 어레이(FPGA)를 사용하는 것과 같은, 소프트웨어 인스트력션들이 있든 없든 특수 목적 회로부를 사용하여 구현될 수 있다. 실시예들은 소프트웨어 인스트럭션들 없이 하드와이어링된 회로부를 사용하거나, 소프트웨어 인스트럭션들과 조합하여 구현될 수 있다. 따라서, 기술들은 하드웨어 회로부와 소프트웨어의 임의의 특정 조합이나, 데이터 프로세싱 시스템에 의해 실행된 인스트럭션들에 대한 임의의 특정 출처에 제한되지 않는다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구 범위에 명시된 본 개시의 실시예들의 넓은 사상 및 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.
Claims (15)
- 컴퓨팅 시스템에 있어서,
제1 메모리 및 제2 메모리를 갖는 복수의 메모리 컴포넌트들로서, 상기 제1 메모리는 제1 복수의 윈도우들 중 하나 이상 동안 메모리 버스를 통해 판독 및 기록 액세스를 위해 호스트 시스템에 이용 가능한, 상기 복수의 메모리 컴포넌트들;
상기 복수의 메모리 컴포넌트들에 동작 가능하게 결합된 프로세싱 장치로서,
상기 호스트 시스템의 드라이버로부터, 상기 제2 메모리에 저장된 데이터의 페이지에 관한 요청을 수신하고;
상기 요청에 응답하여, 상기 제2 메모리로부터 버퍼로 상기 페이지를 전송하고;
상기 버퍼로부터 상기 제1 메모리로 상기 페이지를 기록하되, 상기 페이지는 상기 제1 메모리에 기록되고, 상기 제1 메모리는 상기 메모리 버스에 대한 리프레시 타이밍에 대응되는 제2 복수의 윈도우들 중 적어도 하나 동안 리프레시되고, 상기 리프레시 타이밍은 상기 호스트 시스템에서 제어되고, 상기 호스트 시스템은 상기 페이지가 상기 버퍼로 전송된 후 상기 메모리 버스를 통해 상기 데이터의 페이지에 액세스할 수 있는, 상기 프로세싱 장치를 포함하는, 컴퓨팅 시스템. - 제1항에 있어서, 상기 페이지는 상기 제1 복수의 윈도우들 중 적어도 하나 동안 상기 제2 메모리로부터 상기 버퍼로 전송되는, 컴퓨팅 시스템.
- 삭제
- 삭제
- 제1항에 있어서, 상기 페이지는 제1 페이지이고, 상기 데이터의 페이지에 관한 상기 요청은 상기 제1 페이지의 페이지에 대한 요청이며, 상기 프로세싱 장치는,
상기 드라이버로부터, 상기 제1 메모리에 저장된 제2 페이지를 페이지 아웃하기 위한 요청을 수신하고;
상기 요청에 응답하여, 상기 제2 복수의 윈도우들 중 적어도 하나 동안 상기 제1 메모리로부터 상기 버퍼로 상기 제2 페이지를 기록하고;
상기 버퍼로부터 상기 제2 메모리로 상기 제2 페이지를 더 전송하도록 하는, 컴퓨팅 시스템. - 제1항에 있어서, 상기 프로세싱 장치는 상기 버퍼에 맵핑된 페이지들의 리스트를 포함하는 맵핑 테이블을 더 유지하도록 하되, 상기 리스트는 상기 제2 메모리로부터 상기 버퍼로 전달되는 상기 페이지를 포함하는, 컴퓨팅 시스템.
- 제1항에 있어서, 상기 드라이버는 적어도 하나의 맵핑 테이블을 유지하도록 구성되며, 상기 적어도 하나의 맵핑 테이블은 상기 제2 메모리에 저장된 상기 데이터의 페이지에 대한 맵핑을 포함하는, 컴퓨팅 시스템.
- 제1항에 있어서, 상기 제2 메모리의 저장 용량은 상기 제1 메모리의 저장 용량보다 더 크고, 상기 드라이버는 상기 제2 메모리의 상기 저장 용량을 상기 호스트 시스템과 통신하는 게스트 운영 체제에 노출시키는, 컴퓨팅 시스템.
- 제8항에 있어서, 상기 드라이버는 상기 게스트 운영 체제로부터 상기 드라이버에 의해 수신된 액세스 요청에 응답하여 상기 제2 메모리에 저장된 상기 데이터의 페이지에 관한 상기 요청을 제공하는, 컴퓨팅 시스템.
- 제1항에 있어서, 상기 제1 메모리 및 상기 제2 메모리는 상기 메모리 버스를 통해 상기 호스트 시스템에 결합되는 동일한 메모리 모듈에 있는, 컴퓨팅 시스템.
- 제10항에 있어서, 상기 제1 메모리는 상기 호스트 시스템에 의해 상기 메모리 버스 상에 직접 어드레스할 수 있고, 상기 제2 메모리는 상기 메모리 버스 상에 직접 어드레스할 수 없는, 컴퓨팅 시스템.
- 방법에 있어서,
메모리 버스를 통해 호스트 시스템으로부터, 제1 메모리에 저장된 데이터의 페이지에 관한 요청을 수신하는 단계로서, 제2 메모리는 제1 복수의 윈도우들 중 하나 이상 동안 상기 메모리 버스를 통해 판독 및 기록 액세스를 위해 상기 호스트 시스템에 이용 가능한, 상기 수신하는 단계;
상기 요청에 응답하여, 상기 제1 메모리로부터 버퍼로 상기 페이지를 전송하는 단계; 및
상기 버퍼로부터 제2 메모리로 상기 페이지를 기록하는 단계로서, 상기 페이지는 상기 제2 메모리에 기록되고, 상기 제1 메모리는 상기 메모리 버스에 대한 리프레시 타이밍에 대응되는 제2 복수의 윈도우들 중 적어도 하나 동안 리프레시되고, 상기 리프레시 타이밍은 상기 호스트 시스템에서 제어되고, 상기 호스트 시스템은 상기 페이지가 상기 버퍼로 전송된 후 상기 메모리 버스를 통해 상기 데이터의 페이지에 액세스할 수 있는, 상기 기록하는 단계를 포함하는, 방법. - 제12항에 있어서, 상기 페이지는 상기 제1 복수의 윈도우들 중 적어도 하나 동안 상기 제1 메모리로부터 상기 버퍼로 전송되는, 방법.
- 제12항에 있어서,
상기 메모리 버스를 통해 상기 호스트 시스템으로부터, 상기 페이지에 저장된 제1 데이터에 대한 판독 명령을 수신하는 단계; 및
상기 판독 명령을 수신하는 것에 응답하여, 상기 제1 데이터를 상기 메모리 버스를 통해 상기 호스트 시스템으로 전송하는 단계를 더 포함하는, 방법. - 제14항에 있어서,
상기 버퍼에 맵핑된 페이지들의 리스트를 포함하는 맵핑 테이블을 유지하는 단계로서, 상기 리스트는 상기 제1 메모리로부터 상기 버퍼로 전달된 상기 페이지를 포함하는, 상기 유지하는 단계; 및
상기 판독 명령을 수신하는 것에 응답하여, 상기 맵핑 테이블에 기초하여, 상기 버퍼 또는 상기 제2 메모리로부터의 상기 제1 데이터를 전송할지 여부를 결정하는 단계를 더 포함하는, 방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862626577P | 2018-02-05 | 2018-02-05 | |
US62/626,577 | 2018-02-05 | ||
US16/157,900 | 2018-10-11 | ||
US16/157,900 US11030132B2 (en) | 2018-02-05 | 2018-10-11 | Synchronous memory bus access to storage media |
PCT/US2019/014827 WO2019152244A1 (en) | 2018-02-05 | 2019-01-23 | Synchronous memory bus access to storage media |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200108366A KR20200108366A (ko) | 2020-09-17 |
KR102408149B1 true KR102408149B1 (ko) | 2022-06-14 |
Family
ID=67475130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207025527A KR102408149B1 (ko) | 2018-02-05 | 2019-01-23 | 저장 매체에 대한 동기식 메모리 버스 액세스 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11030132B2 (ko) |
EP (1) | EP3750071A4 (ko) |
KR (1) | KR102408149B1 (ko) |
CN (1) | CN111684432B (ko) |
TW (1) | TWI711931B (ko) |
WO (1) | WO2019152244A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11030132B2 (en) | 2018-02-05 | 2021-06-08 | Micron Technology, Inc. | Synchronous memory bus access to storage media |
KR102583266B1 (ko) * | 2018-10-24 | 2023-09-27 | 삼성전자주식회사 | 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 |
US11526302B2 (en) * | 2019-06-20 | 2022-12-13 | AI Plus, Inc. | Memory module and computing device containing the memory module |
US11016903B2 (en) | 2019-08-22 | 2021-05-25 | Micron Technology, Inc. | Hierarchical memory systems |
US11144450B2 (en) * | 2019-12-19 | 2021-10-12 | Micron Technology, Inc. | Maintaining sequentiality for media management of a memory sub-system |
TWI756810B (zh) * | 2020-09-02 | 2022-03-01 | 瑞昱半導體股份有限公司 | 晶片與相關的晶片系統 |
US20210216452A1 (en) * | 2021-03-27 | 2021-07-15 | Intel Corporation | Two-level main memory hierarchy management |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140181364A1 (en) * | 2012-12-21 | 2014-06-26 | Dell Products L.P. | Systems And Methods For Support Of Non-Volatile Memory On A DDR Memory Channel |
US20160019138A1 (en) * | 2011-07-28 | 2016-01-21 | Netlist, Inc. | Memory module and system and method of operation |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916470A (ja) * | 1995-07-03 | 1997-01-17 | Mitsubishi Electric Corp | 半導体記憶装置 |
US6330625B1 (en) * | 1999-01-15 | 2001-12-11 | Oracle Corporation | System for initiating multiple read operation requests to multiple copies of a data item and identifying a first one of the requests as having the fastest response time |
JP2001195261A (ja) * | 2000-01-13 | 2001-07-19 | Nec Corp | 外部メモリから内蔵メモリへのプログラム転送方法およびその転送方法を用いたマイクロコンピュータ |
US6578109B1 (en) * | 2000-06-29 | 2003-06-10 | Sony Corporation | System and method for effectively implementing isochronous processor cache |
JP4049297B2 (ja) * | 2001-06-11 | 2008-02-20 | 株式会社ルネサステクノロジ | 半導体記憶装置 |
TWI334547B (en) * | 2007-06-07 | 2010-12-11 | Via Tech Inc | System and method for serial peripheral interface data transmission |
US20090113085A1 (en) * | 2007-10-25 | 2009-04-30 | Banyai Chris J | Flushing write buffers |
US8725927B2 (en) * | 2008-10-15 | 2014-05-13 | Micron Technology, Inc. | Hot memory block table in a solid state storage device |
US7962686B1 (en) * | 2009-02-02 | 2011-06-14 | Netapp, Inc. | Efficient preservation of the ordering of write data within a subsystem that does not otherwise guarantee preservation of such ordering |
US8607089B2 (en) | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
US8595427B1 (en) | 2013-03-08 | 2013-11-26 | Avalanche Technology, Inc. | Non-volatile block storage module using magnetic random access memory (MRAM) |
US9355041B2 (en) * | 2013-03-14 | 2016-05-31 | Nvidia Corporation | Frame buffer access tracking via a sliding window in a unified virtual memory system |
US9229885B2 (en) * | 2014-05-21 | 2016-01-05 | Freescale Semiconductor, Inc. | Adaptive scheduling queue control for memory controllers based upon page hit distance determinations |
KR102372888B1 (ko) * | 2015-06-15 | 2022-03-10 | 삼성전자주식회사 | 저장 장치의 온도별 데이터 관리 방법 |
US20180293189A1 (en) * | 2015-10-13 | 2018-10-11 | Hewlett Packard Enterprise Development Lp | Memory manager for autonomous memory device |
US9460791B1 (en) | 2015-12-08 | 2016-10-04 | Inphi Corporation | Data clock synchronization in hybrid memory modules |
US10394487B2 (en) * | 2016-07-21 | 2019-08-27 | SK Hynix Inc. | Memory system and operating method thereof |
US11030132B2 (en) | 2018-02-05 | 2021-06-08 | Micron Technology, Inc. | Synchronous memory bus access to storage media |
-
2018
- 2018-10-11 US US16/157,900 patent/US11030132B2/en active Active
-
2019
- 2019-01-23 CN CN201980011746.3A patent/CN111684432B/zh active Active
- 2019-01-23 EP EP19747315.0A patent/EP3750071A4/en not_active Withdrawn
- 2019-01-23 WO PCT/US2019/014827 patent/WO2019152244A1/en unknown
- 2019-01-23 KR KR1020207025527A patent/KR102408149B1/ko active IP Right Grant
- 2019-01-29 TW TW108103272A patent/TWI711931B/zh active
-
2021
- 2021-05-14 US US17/321,353 patent/US11544207B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160019138A1 (en) * | 2011-07-28 | 2016-01-21 | Netlist, Inc. | Memory module and system and method of operation |
US20140181364A1 (en) * | 2012-12-21 | 2014-06-26 | Dell Products L.P. | Systems And Methods For Support Of Non-Volatile Memory On A DDR Memory Channel |
Also Published As
Publication number | Publication date |
---|---|
CN111684432B (zh) | 2023-10-20 |
US20190243788A1 (en) | 2019-08-08 |
US20210271617A1 (en) | 2021-09-02 |
TWI711931B (zh) | 2020-12-01 |
US11544207B2 (en) | 2023-01-03 |
US11030132B2 (en) | 2021-06-08 |
EP3750071A4 (en) | 2021-05-26 |
TW201941068A (zh) | 2019-10-16 |
WO2019152244A1 (en) | 2019-08-08 |
CN111684432A (zh) | 2020-09-18 |
KR20200108366A (ko) | 2020-09-17 |
EP3750071A1 (en) | 2020-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102408149B1 (ko) | 저장 매체에 대한 동기식 메모리 버스 액세스 | |
CN112470113B (zh) | 存储器系统中的隔离性能域 | |
CN111684417B (zh) | 用以存取异质存储器组件的存储器虚拟化 | |
US12066951B2 (en) | Page table hooks to memory types | |
CN114402282B (zh) | 存取存储的元数据以识别存储数据的存储器装置 | |
US11934319B2 (en) | Memory system for binding data to a memory namespace | |
CN112384890A (zh) | 预测性分页以加速存储器存取 | |
US11669451B2 (en) | Multi-plane switching of non-volatile memory | |
CN114631076A (zh) | 加载命令的生存时间 | |
US11734071B2 (en) | Memory sub-system tier allocation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |