KR20170139438A - 디디알 호환 비동기 메모리 모듈 시스템 및 그것의 동작 방법 - Google Patents

디디알 호환 비동기 메모리 모듈 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20170139438A
KR20170139438A KR1020170007166A KR20170007166A KR20170139438A KR 20170139438 A KR20170139438 A KR 20170139438A KR 1020170007166 A KR1020170007166 A KR 1020170007166A KR 20170007166 A KR20170007166 A KR 20170007166A KR 20170139438 A KR20170139438 A KR 20170139438A
Authority
KR
South Korea
Prior art keywords
data
memory module
memory controller
cache
memory
Prior art date
Application number
KR1020170007166A
Other languages
English (en)
Inventor
임선영
무-티엔 창
디민 니우
홍종 정
김인동
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170139438A publication Critical patent/KR20170139438A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0879Burst mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory devices with an internal cache buffer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

동작 방법은: 비휘발성 메모리 및 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM을 포함하는 메모리 모듈과 호스트 메모리 컨트롤러 사이에 DDR 인터페이스를 제공하는 단계; 및 상기 호스트 메모리 컨트롤러 및 상기 메모리 모듈 사이에 메시지 인터페이스를 제공하는 단계를 포함한다. 상기 메모리 모듈은 비휘발성 메모리 및 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM을 포함한다. 상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 메모리 모듈의 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스되고, 그리고 상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 액세스된다.

Description

디디알 호환 비동기 메모리 모듈 시스템 및 그것의 동작 방법{SYSTEM AND METHOD FOR OPERATING A DDR-COMPATIBLE ASYNCHRONOUS MEMORY MODULE}
본 발명은 메모리 시스템에 관한 것으로, 더욱 구체적으로는 디디알 호환 비동기 메모리 모듈 시스템 및 그것의 동작 방법에 관한 것이다.
비휘발성 듀얼 인-라인 메모리 모듈(non-volatile dual in-line memory module, NVDIMM)은 비휘발성 메모리들(예를 들면, 낸드 플래시 메모리) 및 기존의 동적 랜덤 액세스 메모리들(DRAMs)을 포함하는 다양한 미디어 타입들 또는 미디어 타입들의 혼합을 포함할 수 있다. NVDIMM은 DIMM 소켓에 연결될 수 있고, 호스트 메모리 컨트롤러에게는 표준 DDR4 동기식 DRAM(SDRAM) 메모리 모듈인 것으로 보인다. NVDIMM 인터페이스는 호스트 컴퓨터와 메모리 모듈이 DDR4 메모리 채널을 통해 비동기적으로 통신하는 것을 허용하는 DDR4-확장된 메모리 인터페이스이다. NVDIMM은 DDR4 메모리 채널을 다른 표준 DDR4 DIMM과 공유할 수 있다.
NVDIMM 인터페이스는 하나 또는 그 이상의 대용량 비휘발성 메모리들을 포함하는 메모리 매핑된 NVDIMM들에 최적화된다. NVDIMM은 저장 장치보다는 어드레스 가능한 메모리로 기능하는 비휘발성 메모리 용량을 갖는 메모리 채널 장치가 될 수 있다. 현재 기술자들은 기존의 DDR4 기반 메모리 시스템에 NVDIMM들의 이전 버전과의 호환성(backward compatibility) 제공에 중점을 두고 있다.
본 발명은 NVDIMM의 동작을 지원하고, NVDIMM의 레이턴시를 개선하기 위한 DDR 호환 비동기 메모리 모듈 시스템 및 그것의 동작 방법을 제공한다.
발명의 일 실시예에 따르면, 동작 방법은, 비휘발성 메모리 및 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM을 포함하는 메모리 모듈과 호스트 메모리 컨트롤러 사이의 DDR 인터페이스를 제공하는 단계; 및 상기 호스트 메모리 컨트롤러 및 상기 메모리 모듈 사이의 메시지 인터페이스를 제공하는 단계를 포함한다. 상기 비휘발성 메모리 및 상기 메모리 모듈의 DRAM은 데이터 버퍼 및 레지스터링 클럭 드라이버(RCD)와 연결되고, 상기 레지스터링 클럭 드라이버(RCD)는 제어 및 어드레스(CA) 버퍼를 포함한다. 상기 데이터 버퍼는 호스트 메모리 컨트롤러에 의해 요청된 데이터 또는 상기 메모리 모듈의 상태를 상기 DDR 인터페이스의 데이터(DQ) 버스 및 상기 메시지 인터페이스를 통해 상기 제공한다. 상기 레지스터링 클럭 드라이버(RCD)는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼에 명령 시퀀스들을 생성한다. 상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 메모리 모듈의 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스된다. 상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 액세스된다.
본 발명의 다른 실시예에서, 메모리 모듈은, 비휘발성 메모리; 데이터 인터페이스와, 제어 및 어드레스(CA) 인터페이스를 상기 비휘발성 메모리로 제공하는 비휘발성 메모리 컨트롤러; 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM; 데이터 버퍼; 제어 및 어드레스(CA) 버퍼를 포함하는 레지스터링 클럭 드라이버(RCD); 및 DDR 인터페이스 및 메시지 인터페이스를 포함한다. 상기 비휘발성 메모리 및 상기 DRAM은 상기 데이터 버퍼 및 상기 레지스터링 클럭 드라이버(RCD)와 연결된다. 상기 데이터 버퍼는 상기 호스트 메모리 컨트롤러에 의해서 요청된 데이터 또는 상기 메모리 모듈의 상태를 상기 DDR 인터페이스의 데이터(DQ) 버스 및 상기 메시지 인터페이스를 통하여 제공하고, 상기 RCD는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼로 명령 시퀀스들을 발생한다. 상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스된다. 상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 접근된다.
본 발명의 또다른 실시예에 따르면, 메모리 시스템은, 호스트 메모리 컨트롤러; 메모리 모듈; 상기 호스트 메모리 컨트롤러와 상기 메모리 모듈 사이에 위치하고, 데이터 버스, 그리고 제어 및 어드레스(CA) 버스를 포함하는 DDR 인터페이스; 및 상기 호스트 메모리 컨트롤러와 상기 메모리 모듈 사이에 위치한 메시지 인터페이스를 포함한다.
상기 메모리 모듈은, 비휘발성 메모리; 데이터 인터페이스와, 제어 및 어드레스(CA) 인터페이스를 상기 비휘발성 메모리로 제공하는 비휘발성 메모리 컨트롤러; 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM; 데이터 버퍼; 및 제어 및 어드레스(CA) 버퍼를 포함하는 레지스터링 클럭 드라이버(RCD)를 포함한다. 상기 비휘발성 메모리 및 상기 DRAM은 상기 데이터 버퍼 및 상기 레지스터링 클럭 드라이버(RCD)와 연결된다. 상기 데이터 버퍼는 상기 호스트 메모리 컨트롤러에 의해서 요청된 데이터 또는 상기 메모리 모듈의 상태를 상기 DDR 인터페이스의 데이터(DQ) 버스 및 상기 메시지 인터페이스를 통하여 제공한다. 상기 RCD는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼로 명령 시퀀스들을 발생한다. 상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스된다. 상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 접근된다.
상기와 같은 바람직한 특징은, 더욱 구체적으로 첨부된 도면을 참조하여 설명 및 청구 범위에서 언급될 것이다. 본 명세서에 설명된 특정 시스템 및 방법은 예로써 제시된 것이며. 이것에 한정되지 않음이 이해될 것이다. 당업자에 의해 이해되는 바와 같이, 본 명세서에 기재된 원리 및 특징들은 본 발명의 범위를 벗어나지 않고 다양하고 많은 실시 예들에서 사용될 수 있다.
이와 같은 구성을 갖는 메모리 모듈은 고속 캐시-독출 요청에 의해서 요청된 데이터가 DRAM 캐시 또는 비휘발성 메모리에 저장되었는 지를 판별하고, 비휘발성 메모리에 저장된 데이터는 메모리 모듈의 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스되고, 그리고 DRAM 캐시에 저장된 데이터는 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 액세스된다. 그러므로 고속 캐시-독출 요청은 DRAM 캐시에 대한 낮은 레이턴시를 가능하게 한다.
도 1a는 본 발명의 일 실시예에 따른 직접 모드로 동작하는 NVDIMM을 예시적으로 보여준다.
도 1b는 본 발명의 일 실시예에 따른 캐시 모드로 동작하는 NVDIMM을 예시적으로 보여준다.
도 2a는 본 발명의 일 실시예에 따른 백사이드 DRAM 캐시를 포함하는 NVDIMM을 예시적으로 보여준다.
도 2b는 본 발명의 일 실시예에 따른 프론트사이드 DRAM 캐시를 포함하는 NVDIMM을 예시적으로 보여준다.
도 3a는 본 발명의 일 실시예에 따른 고속 캐시 독출 명령의 일 예에 대한 정의를 보여주는 테이블이다.
도 3b는 본 발명의 일 실시예에 따른 고속 캐시 독출 명령의 일 예에 대한 타이밍 도이다.
도 4a는 본 발명의 일 실시예에 따른 내부 동작 명령의 일 예에 대한 정의를 보여주는 테이블이다.
도 4b는 본 발명의 일 실시예에 따른 내부 동작 명령의 일 예에 대한 타이밍도이다.
도 5a는 본 발명의 일 실시예에 따른 플러시 명령의 일 예에 대한 정의를 보여주는 테이블이다.
도 5b는 본 발명의 일 실시예에 따른 플러시 명령의 일 예에 대한 타이밍도이다.
도 6a는 본 발명의 일 실시예에 따른 트랜잭션 버스트(TB) 명령의 일 예에 대한 정의를 보여주는 테이블이다.
도 6b는 본 발명의 일 실시예에 따른 트랜잭션 버스트(TB) 명령의 일 예에 대한 타이밍도이다.
도 7a는 본 발명의 일 실시예에 따른 독출 상태(RS) 명령의 일 예에 대한 정의를 보여주는 테이블이다.
도 7b는 본 발명의 일 실시예에 따른 독출 상태(RS) 명령의 일 예에 대한 타이밍도이다.
도 8은 본 발명의 일 실시예에 따른 메모리 모듈에 저장되는 데이터를 제공하기 위한 플로우차트이다.
본 명세서에서 개시된 특징들 및 교시들 각각은 더블 데이터 레이트(DDR)와 호환되는 비동기 메모리 모듈을 동작시키는 시스템 및 방법을 제공하기 위해 다른 특징들 및 교시들과 함께 또는 분리되어 사용될 수 있다. 이러한 추가적인 특징들 및 교시들이 분리되거나 결합되어 이용되는 대표적인 예들은 첨부된 도면들을 참조하여 상세히 설명된다. 이러한 상세한 설명은 단지 본 교시들의 측면들을 실시하기 위한 기술 분야에서 상세한 지식을 가진 자를 교시하기 위한 것이고, 청구항들의 범위를 제한하지 않는다. 그러므로 상세한 설명에 서술된 특징들의 조합들은 넓은 의미에서 교시를 실시할 필요가 없을 수도 있고, 대신에 본 교시들 특히 대표적인 실시 예들을 설명하기 위해 단지 교시된다.
아래의 설명에서, 설명의 목적으로만 특정 명칭이 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나, 이러한 특정 세부 사항들은 본 발명의 사상을 실시하기 위해 필요하지 않는 것은 당업자에게 명백할 것이다.
상세한 설명의 몇몇 부분들은 알고리즘 및 컴퓨터 메모리 내 데이터 비트들에 대한 동작들의 심볼 표현의 측면에서 제공된다. 이들 알고리즘 설명들 및 표현들은 다른 분야의 당업자들에게 작업의 실체를 효과적으로 전달하기 위해, 데이터 처리 분야의 당업자들에 의해 사용된다. 여기에서 알고리즘은 일반적으로 원하는 결과에 이르는 단계들에 대한 일관성 있는 순서일 수 있다. 단계들은 물리적 양의 물리적 조작이 필요한 것들이다. 일반적으로, 필수적이진 않지만, 이러한 양들은 저장, 전달, 결합, 비교, 그리고 다르게 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 특징들, 용어들, 숫자들 등으로 지칭하는 것이 주로 공통적인 사용의 이유로 때때로 편리하게 입증되었다.
그러나 이들 및 유사한 용어들 모두는 적절한 물리량과 연관되며 단지 이러한 양에 적용되는 편리한 라벨이라는 것을 명심해야 한다. 구체적으로는 아래의 설명으로부터 명백한 바와 같이, 설명에서, 이러한 "처리", "컴퓨팅", "계산", "결정", "표시" 등과 같은 용어를 사용하는 논의는 컴퓨터 시스템 또는 컴퓨터 레지스터 및 메모리들 내에서 물리적(전기적) 양으로서 나타나는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 스토리지, 전송 또는 표시 장치들 내에서 물리적 양으로서 나타나는 유사한 다른 데이터로 조작 및 변형하는 유사한 전자 컴퓨팅 장치의 활동 및 과정을 나타내는 것으로 이해된다.
본 명세서에서 설명된 알고리즘은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치들과 관련된 것이 아니다. 다양한 일반적인 목적의 시스템들, 컴퓨터 서버들, 또는 개인용 컴퓨터들은 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있거나 요구된 방법 단계들을 수행하기 위한 보다 특수화된 장치를 구성하는 것이 편리할 수 있다. 이러한 다양한 시스템을 위해 요구되는 구조는 이하의 설명에서 나타날 것이다. 다양한 프로그래밍 언어들이 본 명세서에서 기재된 바와 같이 발명의 교시를 구현하는데 사용될 수도 있는 것을 이해할 수 있을 것이다.
또한, 대표적인 예들에 대한 다양한 특징들 그리고 종속항들은 본 발명의 교시에 대한 유용한 추가적인 실시 예들을 제공하기 위해 명시적이지 않은 그리고 열거되지 않은 방식으로 결합될 수 있다. 또한 모든 값의 범위 또는 독립체들의 그룹들의 암시들은 모든 가능한 중간 값 또는 당해 발명을 제한하는 목적뿐만 아니라 본래의 개시 목적을 위한 중간 독립체들을 개시하는 것이 주목된다. 또한, 명시적 기준 및 도면에 도시된 구성 요소들의 형상은 본 명세서에서 실시되는 방식을 이해할 수 있도록 설계되지만, 치수 및 실시 예에 나타난 형상에 한정되지 않는 것을 유의한다.
발명의 일 실시예에 따른 비휘발성 듀얼 인-라인 메모리 모듈(NVDIMM)은 표준 DRAM들 뿐만 아니라 하나 또는 그 이상의 비휘발성 메모리들(예를 들면, 플래시 메모리)을 포함할 수 있다. NVDIMM은 다양한 모드들로 동작할 수 있으며, 예를 들어 직접 모드(direct mode) 및 캐시 모드(cache mode)로 동작할 수 있으나, 이에 한정되지 않는다. 본 발명은 NVDIMM을 동작시키고, NVDIMM의 레이턴시를 개선하기 위한 지원을 제공된다. 특히, 본 발명은 메모리 명령들 및 제어 동작들을 포함하는 캐시 모드에서 NVDIMM이 동작하기 위한 상세한 프로토콜을 제공한다.
도 1a는 본 발명의 일 실시예에 따른 직접 모드로 동작하는 NVDIMM을 예시적으로 보여준다. NVDIMM(101)이 직접 모드(direct mode)로 동작할 때, 호스트 컴퓨터의 메모리 컨트롤러는 NVDIMM(101)의 DRAM(111a)과 비휘발성 메모리(110) 모두를 직접 액세스할 수 있다. 일 실시예에서, DRAM(111a)과 비휘발성 메모리(110)는 서로 다른 어드레스 공간들에서 어드레싱될 수 있다. 예를 들어, 비휘발성 메모리(110)는 랭크 어드레스들(0-3)을 통해 어드레싱될 수 있고, DRAM(111a)은 랭크 어드레스들(4-7)을 통해 선택적으로 어드레싱될 수 있다. NVDIMM(101)의 사용 가능한 메모리 공간은 DRAM 및 비휘발성 메모리의 용량들의 합에 대응한다.
도 1b는 본 발명의 일 실시예에 따른 캐시 모드로 동작하는 NVDIMM을 예시적으로 보여준다. 캐시 모드에서, NVDIMM(101)의 비휘발성 메모리(110)는 공통 랭크 어드레스들(0-3)을 통해 어드레싱될 수 있다. 그러나 NVDIMM(101)의 DRAM(111b)은 직접 어드레싱되지 않고, NVDIMM(101)의 비휘발성 메모리(110)를 위한 캐시로서 제공되도록 구성될 수 있다. DRAM(111b)은 캐시가 NVDIMM(101)의 비휘발성 메모리(110)를 위한 캐시로서 제공되므로, DRAM 캐시(111b)는 호스트 메모리 컨트롤러에 투명(transparent)할 수 있다.
일 실시예에서, NVDIMM의 SPD(serial presence detect)는 NVDIMM이 지원할 수 있는 모드들에 대한 정보를 포함할 수 있고, 메모리 컨트롤러는 시스템 초기화 동안 그 정보를 수신할 수 있다. 만일 NVDIMM이 단지 하나의 모드만을 지원할 수 있다면, 메모리 컨트롤러는 NVDIMM이 지원하는 모드로 NVDIMM을 구성할 수 있다. 만일 NVDIMM이 직접 모드 및 캐시 모드를 모두 지원하면, 메모리 컨트롤러는 특정 모드에 대한 NVDIMM을 구성을 할 수 있다.
NVDIMM의 동작 모드는 다양한 방법으로 구성될 수 있다. 일 실시예에서, 메모리 컨트롤러는 NVDIMM의 모드 레지스터를 구성하기 위해 모드 레지스터 셋(mode register set, MRS) 명령을 전송할 수 있다. 이 경우, 모드 레지스터는 직접 모드 또는 캐시 모드를 지정하는 필드를 포함할 수 있다. 다른 실시예에서, 메모리 컨트롤러는 NVDIMM 상의 특정 기능 레지스터에 대응하는 특정 메모리 어드레스에 기입할 수 있다. 이 경우, 특정 기능 레지스터는 직접 모드 또는 캐시 모드를 지정하는 필드를 포함한다.
다른 실시예들에 있어서, 본 NVDIMM(101)의 DRAM 캐시(111b)는 백사이드(backside) DRAM 캐시 또는 프론트사이드(frontside) DRAM으로 구현될 수 있다.
도 2a는 본 발명의 일 실시예에 따른 백사이드 DRAM 캐시를 포함하는 NVDIMM을 예시적으로 보여준다. NVDIMM(201a)은 비휘발성 메모리(210), 백사이드 DRAM 캐시(211a) 및 NVM/캐시 컨트롤러(220)를 포함한다. NVDIMM(201a)의 데이터 버퍼(230)는 호스트 메모리 컨트롤러(미 도시됨)에 의해서 요청된 데이터 또는 NVDIMM(201a)의 상태를 데이터(DQ) 버스를 통해 제공한다. NVDIMM(201a)의 레지스터링 클럭 드라이버(RCD)(231)는 데이터 버퍼(230)로 명령 시퀀스들을 발생하는 제어 및 어드레스(CA) 버퍼를 제공한다.
백사이드 DRAM 캐시(211a)는 NVM/캐시 컨트롤러(220)와 연결되고, NVM/캐시 컨트롤러(220)를 통해 데이터 버퍼(230)로부터의 데이터 및 RCD(231)로부터의 제어 및 어드레스(CA)를 수신한다. 이것은 호스트 메모리 컨트롤러에 의한 백사이드 DRAM 캐시(211a)에 대한 직접적 액세스를 금지한다. 호스트 메모리 컨트롤러는 직접 모드에서 백사이드 DRAM 캐시(211a)를 액세스할 수 있으나, 캐시 모드에서 백라이트 DRAM 캐시(211a)를 직접적으로 액세스할 수 없다. 백사이드 DRAM 캐시(211a)에 대한 액세스는 핸드쉐이킹(handshaking)을 필요로 하므로, DRAM에 대한 종래 액세스 시간보다 더 긴 액세스 시간(예를 들면, 15ns 이상)을 초래한다.
도 2b는 본 발명의 일 실시예에 따른 프론트사이드 DRAM 캐시를 포함하는 NVDIMM을 예시적으로 보여준다. NVDIMM(201b)은 비휘발성 메모리(210), 프론트사이드 DRAM 캐시(211b) 및 NVM 컨트롤러(221)를 포함한다. NVDIMM(201b)의 데이터 버퍼(230)는 데이터(DQ) 버스를 통해 호스트 메모리 컨트롤러(미 도시됨)로/로부터 통신하는 데이터를 버퍼링한다. NVMDIMM(201b)의 레지스터링 클럭 드라이버(RCD)(231)는 데이터 버퍼(230)로 명령 시퀀스들을 발생하는 제어 및 어드레스(CA) 버퍼이다.
도 2a에 도시된 NVDIMM(201a)의 백사이드 DRAM 캐시(211a)와 비교하면, NVDIMM(201b)의 프론트사이드 DRAM 캐시(211b)는 호스트 메모리 컨트롤러에 의해서 적접적으로 액세스될 수 있다. 이러한 동작 모드는 이하 설명에서 캐시 모드라 칭한다. 프론트사이드 DRAM 캐시(211b)에 액세스하는 캐시 모드는 핸드쉐이킹 오버헤드를 요구하지 않으므로, 종래의 DRAM에 액세스만큼 빠르게 프론트사이드 DRAM 캐시(211b)에 대한 액세스가 가능해진다.
본 발명은 NVDIMM의 동작 특히, 캐시 모드를 위한 다양한 명령들을 제공한다. 캐시 모드에서 NVDIMM를 위한 이러한 명령들은 예를 들어, 고속 캐시 독출 명령(fast cache-read command), 내부 동작 명령(internal operation command), 플러시 명령(flush command), 트랜잭션 버스트 명령(transaction burst command) 및 독출 상태 명령(read status command) 등을 포함하나, 이에 한정되지 않는다.
고속 캐시 독출 명령은 DRAM 캐시 액세스에 대한 낮은 레이턴시 캐시를 가능하게 한다. 내부 동작 명령은 호스트 메모리 컨트롤러와 충돌하지 않고, NVDIMM이 내부 동작들을 수행하는 것을 가능하게 한다. NVM 컨트롤러(221)는 기입 버퍼(예를 들면, SRAM)를 포함할 수 있다. 입력되는 기입 명령에 대해서, 기입 데이터는 NVM 컨트롤러(221)의 기입 버퍼에 먼저 저장되고, NVM 컨트롤러(221)는 기입 버퍼로부터의 데이터를 DRAM 캐시 또는 NVM(210) 중 하나에 기입한다. 플러시 명령은 호스트 메모리 컨트롤러가 NVDIMM으로 NVM 컨트롤러(221)의 기입 버퍼 그리고/또는 DRAM 캐시를 플러시할 것을 명령하는 것을 허용한다. 플러시 명령은 휘발성 영역(예를 들면, 기입 버퍼)에 저장된 데이터가 비휘발성 영역들에 기입되는 것을 보장 함으로써 데이터가 영구적으로 지속되도록 한다. 다르게 명시하지 않는 한, 본 명세서에서 DRAM 캐시는 도 2b에 도시된 프론트사이드 DRAM 캐시이다. DRAM 캐시 및 프론트사이드 DRAM 캐시는 본 발명의 범위를 벗어나지 않는 한도 내에서 호환적으로 사용될 수 있다.
본 발명의 일 실시예에 따르면, 고속 캐시 독출 명령은 핸드쉐이크 오버헤드를 초래하지 않고, 호스트 메모리 컨트롤러가 빠르게 DRAM 캐시에 액세스하는 것을 허용한다. 도 3a는 본 발명의 일 실시예에 따른 고속 캐시 독출 명령의 일 예에 대한 정의를 보여주는 테이블이다. 고속 캐시 독출 명령은 제1 클럭 사이클에서 발생되는 확장된(E) 명령 및 뒤따르는 제2 클럭 사이클에서 발생되는 DRAM 독출(RD) 명령을 포함한다.
도 3b는 본 발명의 일 실시예에 따른 고속 캐시 독출 명령의 일 예에 대한 타이밍 도이다. E+RD 명령들의 조합으로, 호스트 메모리 컨트롤러는 표준 DDR4 인터페이스와 동일한 레이턴시 또는 유사한 레이턴시를 갖는 고정된 DRAM 레이턴시 후에 데이터 및 태그를 얻을 수 있다. E+RD 명령들을 수신한 이후, NVM 컨트롤러(예를 들면, 도 2B에 도시된 NVM 컨트롤러(221))는 메시지(MSG) 핀들 상에 태그를 전송할 수 있다. 일 실시예에 따르면, 고속 캐시 독출 명령과 관련된 데이터 및 데이터 버스(DQ)에 실린 데이터가 캐시된 데이터인지를 식별하기 위해, 호스트 메모리 컨트롤러는 태그를 체크할 수 있다. 호스트 메모리 컨트롤러 또는 NVM 컨트롤러는 캐시 매니지먼트(관리) 로직을 포함할 수 있다. 발명의 일 실시예에 따르면, 캐시 매니지먼트 로직은 태그를 체크하여 캐시 히트 또는 캐시 미스를 판별할 수 있다. 호스트 메모리 컨트롤러가 독출 요청을 전송할 때, 호스트 메모리 컨트롤러는 어드레스 및 대응하는 태그를 지속적으로 추적할 수 있다. 독출 데이터가 리턴될 때 호스트 메모리 컨트롤러는 리턴된 태그를 사용해서 미처리된 독출 요청과 태그를 매치시킬 수 있다. 예를 들어, 만일 태그가 캐시 히트를 나타내면, 호스트 메모리 컨트롤러는 데이터 버스(DQ)에 로드된 데이터가 유효한 것으로 판별하고, 그렇지 않으면 호스트 메모리 컨트롤러는 캐시 미스인 것으로 판별하여, 데이터 버스(DQ)에 로드된 데이터가 무효한 것으로 판별한다. 캐시 미스인 경우, 호스트 메모리 컨트롤러는 데이터 버스(DQ) 상의 데이터를 무시할 수 있다.
CA 버스를 통하여 E+RD 명령들이 수신된 이후, NVM 컨트롤러는 고속 캐시 독출 명령과 관련된 태그를 내부적으로 체크한다. 태그는 NVDIMM의 메모리(예를 들면, DRAM)의 개별 블록 내 저장될 수 있다. 호스트 메모리 컨트롤러는 확장된 어드레스(EA)를 발생할 수 있고, NVM 컨트롤러는 확장된 어드레스(EA)를 디코딩하고, 태그 매치를 수행할 수 있다. 만일 확장된 어드레스(EA) 및 태그가 일치하면(311a), NVM 컨트롤러는 캐시 히트인 것으로 판별하고 아무것도 수행하지 않는다. 이 경우, 캐시 매니지먼트 로직은 DRAM 캐시로부터의 캐시 데이터(312)를 데이터 버퍼(230)에 로드할 수 있고, 데이터 버퍼(230)는 자동적으로 데이터 버스(DQ) 상에 데이터를 싣는다. 호스트 메모리 컨트롤러는 데이터 버퍼(230)로부터의 캐시된 데이터를 동기적으로 회수할 수 있다. 순환 중복 검사(cyclic redundancy check, CRC) 또는 패리티(parity) 등과 같은 오류 정정 코드(error-correcting code, ECC) 보호는 데이터 버스(DQ)에서 패킷 무결성 보장(packet integrity protection)을 위해 사용될 수 있다. 만일 확장된 어드레스(EA) 및 태그가 일치하지 않으면(311b), NVM 컨트롤러는 캐시 미스인 것으로 판별하고, 비휘발성 메모리에 저장된 요청된 데이터를 데이터 버퍼(230)에 로드한다.
일 실시예에 따르면, 확장된 명령(A0-A9) 내 포함된 독출 아이디(RID)는 독출 요청 및 NVDIMM으로부터의 독출 데이터 사이의 연관성을 식별하는데 사용된다. 독출 아이디(RID)는 다양한 방법으로 발생될 수 있다. 일 실시예에서, 호스트 메모리 컨트롤러는 명시적으로 독출 아이디(RID)를 발생할 수 있다. 이 경우, 도 3a에 도시된 확장된(E) 명령에서, 독출 아이디(RID)는 호스트 메모리 컨트롤러로부터 NVDIMM으로 명시적으로 전달된다. 다른 실시예에서, 호스트 메모리 컨트롤러 및 NVDIMM 모두는 독출 명령의 타입에 근거해서 독출 아이디(RID)를 명시적으로 발생할 수 있다. 또다른 실시예에서, 호스트 메모리 컨트롤러 또는 NVDIMM 중 어느 것도 독출 아이디(RID)를 명시적으로 발생하지 않는다. 대신, 호스트 메모리 컨트롤러 및 NVDIMM 모두는 독출 아이디(RID) 메커닉(mechanic)에 동의하고 이를 따른다. 초기화 동안 동기화 이후, 호스트 메모리 컨트롤러 및 NVDIMM은 동일한 패키지에 대해 개별적으로 동일한 독출 아이디(RID)를 발생할 수 있다. 독출 아이디(RID)는 피드백 채널(예를 들어, 메시지(MSG) 핀들)내 다른 핀들을 통하여 전달될 수 있다.
캐시 미스 이후 동작들은 비동기적일 수 있다. 예를 들어, 데이터가 독출 대기(Read_Ready) 신호를 사용하여 준비될 때 NVDIMM은 호스트 메모리 컨트롤러에게 비동기적으로 알려줄 수 있다. 독출 대기(Read_Ready) 신호는 비동기 신호이고, 데이터 버스(DQ) 상의 데이터 신호들과 정렬(align)될 필요가 없다. 독출 대기(Read_Ready) 신호는 호스트 메모리 컨트롤러에 의해서 독출될 데이터가 준비되었는 지를 나타내는 특정 핀(또는 핀들)을 통해 전달될 수 있다. 호스트 메모리 컨트롤러가 독출 대기(Read_Ready) 신호를 수신한 후, 호스트 메모리 컨트롤러는 트랜잭션 버스트(TB) 명령(315)을 발행하고, 비휘발성 메모리에 저장된 데이터를 데이터 버스 상에서 독출 할 수 있다. 트랜잭션 버스트(TB) 명령(315)에 응답해서, NVDIMM은 메시지(MSG) 판들 내 독출 아이디(RID)뿐만 아니라 비휘발성 메모리에 저장된 요청된 데이터를 DQ 핀들에 로드한다. 메시지(MSG) 핀들에 로드된 독출 아이디(RID)(320)는 DQ 핀들 상의 데이터가 E+RD 명령(301b)에 의해서 요청된 데이터에 대응하는 지를 식별한다.
호스트 메모리 컨트롤러 및 NVM 컨트롤러 모두가 DRAM 캐시에 대한 제어를 가질 수 있기 때문에 DRAM 캐시에 대한 접근 충돌이 발생할 수 있다. 일 실시예에 있어서, 내부 동작(IOP) 명령은 호스트 메모리 컨트롤러 및 NVM 컨트롤러 모두가 DRAM 캐시에 대한 제어를 요청할 때 발생할 수 있는 잠재적 DRAM 접근 충돌들을 피할 수 있다.
도 4a는 본 발명의 일 실시예에 따른 내부 동작 명령의 일 예에 대한 정의를 보여주는 테이블이다. 도 4b는 본 발명의 일 실시예에 따른 내부 동작 명령의 일 예에 대한 타이밍도이다.
이따금 NVDIMM은 DRAM 캐시로부터 비휘발성 메모리로의 데이터 이동 또는 비휘발성 메모리로부터 DRAM 캐시로의 데이터 이동과 같은 내부 동작들을 수행하기 위한 시간을 필요로 한다. 이 경우들에서, NVM 컨트롤러는 호스트 메모리 컨트롤러로 내부 동작들을 수행하는 것에 대한 허가를 묻는 요청을 전송할 수 있다. 예를 들어, NVM 컨트롤러는 내부 동작(IOP) 요청(410)을 호스트 메모리 컨트롤러로 전송해서 하나 또는 그 이상의 내부 동작들을 수행하기 위한 시간 및 허가를 요청할 수 있다.
일 실시예에 따르면, NVDIMM에 의해서 전송되는 내부 동작(IOP) 요청(410)은 독출 대기(Read_Ready) 신호 및 연이은 트랜잭션 버스트(TB) 명령(401)을 포함한다. 독출 대기(Read_Ready) 신호를 이용하여, NVDIMM은 호스트 메모리 컨트롤러에게 메시지 및 데이터가 준비됨(이 예에서, 내부 동작(IOP) 요청(410))을 알린다. 트랜잭션 버스트(TB) 명령(401)에 응답해서 로드되는 메시지(MSG) 패킷(420)은 데이터 대신에 NVDIMM의 상태(412)를 포함하는 데이터가 DQ 핀들에 로드됨을 나타내는 식별자(1)를 포함한다. NVDIMM의 상태(412)는 내부 동작들을 수행하기 위한 적어도 요구된 시간(즉, 내부 동작(IOP) 시간)을 포함한다. 노말 트랜잭션 버스트 독출 명령과 비교하면, 도 3b에 도시된 것 처럼, 메시지(MSG) 패킷(320)은 식별자(0) 및 독출 아이디(RID)를 포함한다.
데이터 버스(DQ)에 로드된 NVDIMM의 상태(412) (그리고 ECC)는 NVDIM이 내부 동작들을 완료하는데 얼마나 많은 시간이 필요한지를 나타내는 내부 동작(IOP) 시간을 포함할 수 있다. 호스트 메모리 컨트롤러는 NVDIMM의 상태(412)를 독출할 수 있고, 내부 동작(IOP) 명령(402)을 NVM 컨트롤러로 전송할 수 있다. 내부 동작(IOP) 명령(402)은 요청된 내부 동작(IOP) 시간에 대한 승인 또는 비승인을 나타낼 수 있다. 만일 호스트 메모리 컨트롤러가 요청된 내부 동작(IOP) 시간을 승인하면, 내부 동작(IOP) 명령(402)는 할당된 시간(예를 들어, A0-A9 핀들에서)을 포함할 수 있다. 일 실시예에 따르면, 내부 동작(IOP) 요청(410)에서 요청된 내부 동작(IOP) 시간은 내부 동작(IOP) 명령(402)에서 할당된 내부 동작(IOP) 시간과 다를 수 있다. NVDIMM이 내부 동작들을 수행하는 것을 허용하는 할당된 시간동안 호스트 메모리 컨트롤러는 NVDIMM을 액세스하지 않을 것이다. 내부 동작은 CA 및 DQ 버스들을 점유하지 않기 때문에, 공유된 메모리 채널 버스들은 공유된 메모리 채널 상의 다른 DIMM에 의해 사용될 수 있다.
일 실시예에 따르면, 플러시(FL) 명령은 호스트 메모리 컨트롤러가 NVDIMM에게 기입 버퍼 그리고/또는 DRAM 캐시에서 비휘발성 메모리로 데이터를 플러시하도록 명령하는 것을 허용하기 위해 사용된다. 도 5a는 본 발명의 일 실시예에 따른 플러시 명령의 일 예에 대한 정의를 보여주는 테이블이다. 도 5b는 본 발명의 일 실시예에 따른 플러시 명령의 일 예에 대한 타이밍도이다.
일 실시예에 따르면, 호스트 메모리 컨트롤러는 플러시 아이디(FID)를 포함하는 플러시 명령(501)을 (예를 들면, A0-A9 핀들 상에) 전송할 수 있다. 일 실시예에서, 플러시 아이디(FID)는 어드레스 범위이다. 호스트 메모리 컨트롤러 및 NVM 컨트롤러는 플러시 아이디가 어떤 어드레스 범위를 나타내는지를 식별할 수 있다. 호스트 메모리 컨트롤러는 NVDIMM이 플러시 아이디(FID)에 근거해서 비휘발성 메모리의 특정 영역으로 데이터를 플러시 하도록 명령한다. 이에 응답해서, NVM 컨트롤러는 DRAM 캐시로부터의 오손 데이터(dirty data)를 비휘발성 메모리의 플러시 아이디(FID)로 플러시하고, 플러시 명령(501)이 완료되었음을 나타내는 독출 대기(Read_Ready) 신호를 전송한다. 독출 대기(Read_Ready) 신호를 수신한 후, 호스트 메모리 컨트롤러는 트랜잭션 버스트(TB) 명령(502)을 전송해서 플러시 명령(501)의 상태를 체크한다. 상태는 플러시 아이디(FID) 및 플러시 아이디(FID)의 상태(예를 들면, 성공, 보류(pending) 또는 실패)를 포함할 수 있다. 예를 들어, NVDIMM이 비휘발성 메모리의 지정된 영역에 플러시를 성공적으로 완료하였다면, NVDIMM은 플러시 명령(501)이 성공적으로 완료되었음을 나타내는 확인으로서 상태(512)를 전송한다. 트랜잭션 버스트(TB) 명령(502)에 응답해서 로드된 메시지(MSG) 패킷(520)은 DQ 핀들 상에 로드된 데이터가 데이터 대신 NVDIMM의 상태(512)를 포함한다는 것을 나타내는 식별자(1)를 포함한다.
트랜잭션 버스트(TB) 명령은 NVDIMM으로부터의 데이터 또는 상태 중 어느 하나를 얻고자 호스트 메모리 컨트롤러를 인에이블하기 위해 사용된다. 일 실시예에 따르면, 트랜잭션 버스트(TB) 명령은 버스트 카운트를 포함할 수 있으므로, 호스트 메모리 컨트롤러는 단일 트랜잭션 버스트(TB) 명령을 이용하여 NVDIMM으로부터 하나 또는 그 이상의 데이터 그리고/또는 상태를 요청할 수 있다. 도 6a는 본 발명의 일 실시예에 따른 트랜잭션 버스트(TB) 명령의 일 예에 대한 정의를 보여주는 테이블이다. 도 6b는 본 발명의 일 실시예에 따른 트랜잭션 버스트(TB) 명령의 일 예에 대한 타이밍도이다.
일 실시예에 따르면, 버스트 카운트는 트랜잭션 버스트(TB) 명령의 A0-A9 핀들에 로드된다. 도 6b에 도시된 예에서, 트랜잭션 버스트(TB) 명령(601)은 하나의 데이터 독출 및 하나의 상대 독출을 포함하는 버스트 카운트 2를 포함한다. 트랜잭션 버스트(TB) 명령(601) 다음으로, NVDIMM은 DQ핀들에 요청된 데이터(612) 및 상태(613)를 (그리고 ECC) 로드한다. 호스트 메모리 컨트롤러는 메시지(MSG) 핀들 내 식별자(0 또는 1)에 근거해서 데이터 또는 상태가 DQ 핀들에 로드되었는 지를 판별한다. 예를 들어, 식별자(0)은 요청된 데이터가 DQ 핀들에 로드되었음을 나타내고, 식별자(1)은 NVDIMM의 상태가 DQ 핀들에 로드되었는 지를 나타낸다.
일 실시예에 따르면, 독출 상태(RS) 명령은 호스트 메모리 컨트롤러가 NVDIMM의 상태를 능동적으로 독출하도록 하기 위해 사용된다. 도 7a는 본 발명의 일 실시예에 따른 독출 상태(RS) 명령의 일 예에 대한 정의를 보여주는 테이블이다. 도 7b는 본 발명의 일 실시예에 따른 독출 상태(RS) 명령의 일 예에 대한 타이밍도이다.
호스트 메모리 컨트롤러는 독출 상태(RS) 명령(701)을 CA 버스를 통해 NVDIMM으로 전송한다. 독출 상태(RS) 명령(701)에 응답해서, NVDIMM은 자신의 상태(712)를 (그리고 ECC) DQ 핀들에 로드한다. 메시지(MSG)에 포함된 식별자는 상태(712)가 DQ 핀들에 로드되었는 지를 나타낸다. 다른 실시예에 따르면, 호스트 메모리 컨트롤러는 독출 상태(RS) 명령(701)을 전송해서 NVDIMM의 상태를 검색할 수 있다. NVDIMM은 소정의 시간(tRL)이 경과한 후 자신의 상태(712)를 보고하고, 이에 따라, 호스트 메모리 컨트롤러는 결정론적으로 그리고 동기적으로 NVDIMM의 상태를 수신한다. 예를 들어, 만일 NVDIMM이 플러시 명령을 완료한 것을 확인하지 않으면, 호스트 메모리 컨트롤러는 NVDIMM의 상태를 능동적으로 체크할 수 있다.
리턴 상태 패킷(712)에서, NVDIMM은 준비된 데이터/상태의 수를 내장할 수 있다. 이 경우, 비록 독출 준비(Read_Ready) 신호가 손실되더라도, 호스트 메모리 컨트롤러는 얼마나 많은 데이터/상태가 준비되었는 지를 여전히 알 수 있다. 일 실시예에 따르면, 호스트 메모리 컨트롤러는 SFR(special function register) 어드레스에 근거해서 NVDIMM의 특정한 SFR(special function register)을 독출 또는 기입할 수 있다. SFR로부터의 독출을 위하여, 호스트 메모리 컨트롤러는 독출 상태(RS) 명령을 발행할 수 있다. SFR로의 기입을 위하여, 호스트 메모리 컨트롤러는 원하는 SFR에 대응하는 어드레스로 노말 기입 명령을 발행할 수 있다. SFR은 NVDIMM의 비휘발성 메모리 고유의 환경 설정들, 동작들 그리고/또는 상태 정보를 포함할 수 있다.
도 8은 본 발명의 일 실시예에 따른 메모리 모듈에 저장되는 데이터를 제공하기 위한 플로우차트이다. 메모리 모듈은 비휘발성 메모리 및 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM을 포함한다. 메모리 모듈은 호스트 메모리 컨트롤러로부터 독출 요청을 수신한다(801). 캐시 매니지먼트 로직은 요청된 데이터가 저장된 위치에 근거해서 독출 요청이 캐시 히트인지 또는 캐시 미스인 지를 판별한다(802). 캐시 매니지먼트 로직은 호스트 메모리 컨트롤러 또는 메모리 모듈의 NVM 컨트롤러에 포함될 수 있다. 캐시 미스인 경우, 메모리 모듈은 메모리 모듈의 비휘발성 메모리에 저장된 데이터를 비동기적으로 제공한다(803). 캐시 히트인 경우, 메모리 모듈은 DRAM 캐시에 저장된 데이터를 동기적으로 제공한다(804).
일 실시예에 따르면, 동작 방법은, 비휘발성 메모리 및 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM을 포함하는 메모리 모듈과 호스트 메모리 컨트롤러 사이에 DDR 인터페이스를 제공하는 단계; 및 상기 호스트 메모리 컨트롤러 및 상기 메모리 모듈 사이에 메시지 인터페이스를 제공하는 단계를 포함한다. 상기 비휘발성 메모리 및 상기 메모리 모듈의 DRAM은 데이터 버퍼 및 레지스터링 클럭 드라이버(RCD)와 연결되고, 상기 레지스터링 클럭 드라이버(RCD)는 제어 및 어드레스(CA) 버퍼를 포함한다. 상기 데이터 버퍼는 호스트 메모리 컨트롤러에 의해 요청된 데이터 또는 상기 DDR 인터페이스 및 상기 메시지 인터페이스의 데이터(DQ) 버스를 통해 상기 메모리 모듈의 상태를 제공한다. 상기 레지스터링 클럭 드라이버(RCD)는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼에 명령 시퀀스들을 생성한다. 상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 메모리 모듈의 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스된다. 상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 액세스된다.
상기 동작 방법은, 상기 호스트 메모리 컨트롤러로부터 상기 메모리 모듈에 저장된 데이터를 독출하기 위한 고속 캐시-독출 요청을 수신하는 단계; 상기 고속 캐시-독출 요청에 의해서 요청된 상기 데이터가 상기 DRAM 캐시 또는 상기 비휘발성 메모리에 저장되었는 지를 판별하는 단계; 상기 데이터가 상기 DRAM 캐시에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 동기적으로 제공하는 단계; 상기 데이터가 상기 비휘발성 메모리에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 비동기적으로 제공하는 단계를 더 포함한다.
상기 고속 캐시-독출 요청은 확장된 명령 및 DRAM 독출 명령을 포함한다.
상기 확장된 명령은 상기 메모리 모듈에 저장된 데이터와 관련있는 독출 ID를 포함한다.
상기 동작 방법은, 상기 메시지 인터페이스 상의 메시지 신호에 포함된 태그를 체크하는 단계; 및 상기 태그와 확장된 어드레스(EA)를 비교하여 상기 고속 캐시-독출 요청이 캐시 히트인지 또는 캐시 미스인지 판별하는 단계를 더 포함한다.
상기 동작 방법은, 상기 호스트 메모리 컨트롤러가 제2 독출 명령을 발생해서 상기 비휘발성 메모리로부터 상기 데이터를 독출하도록 상기 메시지 인터페이스로 독출 준비 신호를 전송하는 단계; 및 상기 제2 독출 요청에 응답해서 상기 데이터 버스로 상기 데이터를 제공하는 단계를 더 포함한다.
상기 동작 방법은, 상기 호스트 메모리 컨트롤러가 상기 메모리 모듈의 상태를 독출하도록 지시하기 위해 독출 준비 신호를 상기 메시지 인터페이스로 제공하는 단계; 상기 호스트 메모리 컨트롤러로부터 독출 요청을 수신하는 단계; 및 DDR 인터페이스 상에 메모리 모듈의 상기 상태를 제공하고, 태그를 포함하는 메시지를 제공하는 단계를 더 포함한다. 상기 메시지 신호에 포함된 상기 태그는 상기 DDR 인터페이스의 상기 데이터 버스 상의 상기 데이터가 상기 메모리 모듈의 상기 상태인 지를 나타낸다.
상기 메모리 모듈의 상태는 내부 동작 시간을 포함하고, 상기 동작 방법은, 상기 호스트 메모리 컨트롤러로부터 내부 동작 명령을 수신하는 단계를 더 포함한다. 상기 내부 동작 명령은 승인된 내부 동작 시간을 포함한다.
상기 내부 동작 시간 및 상기 승인된 내부 동작 시간은 서로 다르다.
상기 승인된 내부 동작 시간 동안 상기 호스트 메모리 컨트롤러는 상기 메모리 모듈에 저장된 데이터를 액세스하지 않는다.
상기 동작 방법은, 상기 호스트 메모리 컨트롤러로부터 플러시 아이디(ID)를 포함하는 플러시 명령을 수신하는 단계; 및 상기 플러시 ID에 근거해서 상기 DRAM에 저장된 데이터를 상기 비휘발성 메모리로 플러시하는 단계를 더 포함한다. 상기 상태는 상기 플러시 ID에 근거해서 상기 플러시 명령이 성공적으로 수행되었는 지의 여부를 나타낸다.
상기 동작 방법은, 상기 메모리 모듈에 저장된 하나 또는 그 이상의 데이터 및 상기 메모리 모듈의 상태를 상기 DDR 인터페이스로 제공하고, 태그를 포함하는 상기 메시지 인터페이스를 제공하는 단계를 더 포함한다. 상기 메시지 인터페이스 상의 상기 메시지 신호 내 상기 태그는 상기 DDR 인터페이스의 상기 데이터 버스에 로드된 데이터가 상기 호스트 메모리 컨트롤러에 의해서 요청된 데이터 또는 상기 메모리 모듈의 상태 중 어느 것인지를 나타낸다.
상기 독출 요청은 버스트 카운트를 포함하고, 상기 동작 방법은, 상기 버스트 카운트에 의해서 정의된 대로 상기 메모리 모듈에 저장된 하나 또는 그 이상의 데이터 및 상기 메모리 모듈의 상태를 상기 DDR 인터페이스에 순차적으로 제공하는 단계를 더 포함한다.
상기 동작 방법은, 상기 호스트 메모리 컨트롤러로부터 독출 상태 명령을 수신하는 단계; 및 상기 DDR 인터페이스를 통해 상기 메모리 모듈의 상기 상태를 동기적으로 제공하는 단계를 더 포함한다.
다른 실시예에 따르면, 메모리 모듈은: 비휘발성 메모리; 데이터 인터페이스와, 제어 및 어드레스(CA) 인터페이스를 상기 비휘발성 메모리로 제공하는 비휘발성 메모리 컨트롤러; 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM; 데이터 버퍼; 제어 및 어드레스(CA) 버퍼를 포함하는 레지스터링 클럭 드라이버(RCD); 및 호스트 메모리 컨트롤러를 위한 DDR 인터페이스 및 메시지 인터페이스를 포함한다. 상기 비휘발성 메모리 및 상기 DRAM은 상기 데이터 버퍼 및 상기 레지스터링 클럭 드라이버(RCD)와 연결된다. 상기 데이터 버퍼는 상기 호스트 메모리 컨트롤러에 의해서 요청된 데이터 또는 상기 메모리 모듈의 상태를 상기 DDR 인터페이스의 데이터(DQ) 버스 및 상기 메시지 인터페이스를 통하여 제공하고, 상기 RCD는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼로 명령 시퀀스들을 발생한다. 상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스된다. 상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 접근된다.
상기 호스트 메모리 컨트롤러는 고속 캐시-독출 요청을 전송해서 상기 메모리 모듈에 저장된 데이터를 독출하고, 상기 메모리 모듈은 상기 데이터가 DRAM 캐시에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 동기적으로 제공하고, 상기 데이터가 상기 비휘발성 메모리에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 비동기적으로 제공한다.
상기 메모리 모듈은 상기 메시지 인터페이스로 태그를 포함하는 메시지 신호를 전송하고, 상기 호스트 메모리 컨트롤러는 상기 태그와 확장된 어드레스(EA)의 비교에 의해서 상기 고속 캐시-독출 요청이 캐시 히트인지 또는 캐시 미스인지를 판별한다.
또다른 실시예에 따르면, 메모리 시스템은: 호스트 메모리 컨트롤러; 메모리 모듈; 상기 호스트 메모리 컨트롤러와 상기 메모리 모듈 사이에 위치하고, 데이터 버스, 그리고 제어 및 어드레스(CA) 버스를 포함하는 DDR 인터페이스; 및 상기 호스트 메모리 컨트롤러와 상기 메모리 모듈 사이에 위치한 메시지 인터페이스를 포함한다. 상기 메모리 모듈은, 비휘발성 메모리; 데이터 인터페이스와, 제어 및 어드레스(CA) 인터페이스를 상기 비휘발성 메모리로 제공하는 비휘발성 메모리 컨트롤러; 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM; 데이터 버퍼; 및 제어 및 어드레스(CA) 버퍼를 포함하는 레지스터링 클럭 드라이버(RCD)를 포함한다. 상기 비휘발성 메모리 및 상기 DRAM은 상기 데이터 버퍼 및 상기 레지스터링 클럭 드라이버(RCD)와 연결된다. 상기 데이터 버퍼는 상기 호스트 메모리 컨트롤러에 의해서 요청된 데이터 또는 상기 메모리 모듈의 상태를 상기 DDR 인터페이스의 데이터(DQ) 버스 및 상기 메시지 인터페이스를 통하여 제공하고, 상기 RCD는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼로 명령 시퀀스들을 발생한다. 상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스된다. 상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 접근된다.
상기 호스트 메모리 컨트롤러는 상기 메모리 모듈에 저장된 데이터를 독출하기 위하여 고속 캐시-독출 요청을 전송한다. 상기 메모리 모듈은, 상기 데이터가 상기 DRAM 캐시에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 동기적으로 제공하고, 상기 데이터가 상기 비휘발성 메모리에 저장되어 있을 때 상기 데이터를 상기 데이버 버스에 비동기적으로 제공한다.
상기 메모리 모듈은 태그를 포함하는 메시지 신호를 상기 메시지 인터페이스로 전송하고, 상기 호스트 메모리 컨트롤러는 상기 태그와 확장된 어드레스(EA)의 비교에 의해서 상기 고속 캐시-독출 요청이 캐시 히트인지 또는 캐시 미스인 지를 판별한다.

Claims (20)

  1. 비휘발성 메모리 및 상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM을 포함하는 메모리 모듈과 호스트 메모리 컨트롤러 사이에 DDR 인터페이스를 제공하는 단계; 및
    상기 호스트 메모리 컨트롤러 및 상기 메모리 모듈 사이에 메시지 인터페이스를 제공하는 단계를 포함하고,
    상기 비휘발성 메모리 및 상기 메모리 모듈의 상기 DRAM은 데이터 버퍼 및 레지스터링 클럭 드라이버(RCD)와 연결되고, 상기 레지스터링 클럭 드라이버(RCD)는 제어 및 어드레스(CA) 버퍼를 포함하며, 상기 데이터 버퍼는 호스트 메모리 컨트롤러에 의해 요청된 데이터 또는 상기 메모리 모듈의 상태를 상기 DDR 인터페이스의 데이터(DQ) 버스 및 상기 메시지 인터페이스를 통해 제공하며, 상기 레지스터링 클럭 드라이버(RCD)는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼에 명령 시퀀스들을 생성하고,
    상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 메모리 모듈의 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스되며,
    상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 액세스되는 것을 특징으로 하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 호스트 메모리 컨트롤러로부터 상기 메모리 모듈에 저장된 데이터를 독출하기 위한 고속 캐시-독출 요청을 수신하는 단계;
    상기 고속 캐시-독출 요청에 의해서 요청된 상기 데이터가 상기 DRAM 캐시 또는 상기 비휘발성 메모리에 저장되었는 지를 판별하는 단계;
    상기 데이터가 상기 DRAM 캐시에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 동기적으로 제공하는 단계;
    상기 데이터가 상기 비휘발성 메모리에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 비동기적으로 제공하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법.
  3. 제 2 항에 있어서,
    상기 고속 캐시-독출 요청은 확장된 명령 및 DRAM 독출 명령을 포함하는 것을 특징으로 하는 동작 방법.
  4. 제 3 항에 있어서,
    상기 확장된 명령은 상기 메모리 모듈에 저장된 데이터와 관련있는 독출 ID를 포함하는 것을 특징으로 하는 동작 방법.
  5. 제 2 항에 있어서,
    상기 메시지 인터페이스 상의 메시지 신호에 포함된 태그를 체크하는 단계; 및
    상기 태그와 확장된 어드레스(EA)를 비교하여 상기 고속 캐시-독출 요청이 캐시 히트인지 또는 캐시 미스인지 판별하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법.
  6. 제 2 항에 있어서,
    상기 호스트 메모리 컨트롤러가 제2 독출 명령을 발생해서 상기 비휘발성 메모리로부터 상기 데이터를 독출하도록 상기 메시지 인터페이스로 독출 준비 신호를 전송하는 단계; 및
    상기 제2 독출 요청에 응답해서 상기 데이터 버스로 상기 데이터를 제공하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 호스트 메모리 컨트롤러가 상기 메모리 모듈의 상태를 독출하도록 지시하기 위해 독출 준비 신호를 상기 메시지 인터페이스로 제공하는 단계;
    상기 호스트 메모리 컨트롤러로부터 독출 요청을 수신하는 단계; 및
    DDR 인터페이스 상에 메모리 모듈의 상기 상태를 제공하고, 태그를 포함하는 메시지를 제공하는 단계를 더 포함하고,
    상기 메시지 신호에 포함된 상기 태그는 상기 DDR 인터페이스의 상기 데이터 버스 상의 상기 데이터가 상기 메모리 모듈의 상기 상태인 지를 나타내는 것을 특징으로 하는 동작 방법.
  8. 제 7 항에 있어서,
    상기 메모리 모듈의 상태는 내부 동작 시간을 포함하고,
    상기 호스트 메모리 컨트롤러로부터 내부 동작 명령을 수신하는 단계를 더 포함하며,
    상기 내부 동작 명령은 승인된 내부 동작 시간을 포함하는 것을 특징으로 하는 동작 방법.
  9. 제 8 항에 있어서,
    상기 내부 동작 시간 및 상기 승인된 내부 동작 시간은 서로 다른 것을 특징으로 하는 동작 방법.
  10. 제 8 항에 있어서,
    상기 승인된 내부 동작 시간 동안 상기 호스트 메모리 컨트롤러는 상기 메모리 모듈에 저장된 데이터를 액세스하지 않는 것을 특징으로 하는 동작 방법.
  11. 제 7 항에 있어서,
    상기 호스트 메모리 컨트롤러로부터 플러시 아이디(ID)를 포함하는 플러시 명령을 수신하는 단계; 및
    상기 플러시 ID에 근거해서 상기 DRAM에 저장된 데이터를 상기 비휘발성 메모리로 플러시하는 단계를 더 포함하고
    상기 상태는 상기 플러이 ID에 근거해서 상기 플러시 명령이 성공적으로 수행되었는 지의 여부를 나타내는 것을 특징으로 하는 동작 방법.
  12. 제 7 항에 있어서,
    상기 메모리 모듈에 저장된 하나 또는 그 이상의 데이터 및 상기 메모리 모듈의 상태를 상기 DDR 인터페이스로 제공하고, 태그를 포함하는 상기 메시지 인터페이스를 제공하는 단계를 더 포함하고,
    상기 메시지 인터페이스 상의 상기 메시지 신호 내 상기 태그는 상기 DDR 인터페이스의 상기 데이터 버스에 로드된 데이터가 상기 호스트 메모리 컨트롤러에 의해서 요청된 데이터 또는 상기 메모리 모듈의 상태 중 어느 것인지를 나타내는 것을 특징으로 하는 동작 방법.
  13. 제 12 항에 있어서,
    상기 독출 요청은 버스트 카운트를 포함하고,
    상기 버스트 카운트에 의해서 정의된 대로 상기 메모리 모듈에 저장된 하나 또는 그 이상의 데이터 및 상기 메모리 모듈의 상태를 상기 DDR 인터페이스에 순차적으로 제공하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법.
  14. 제 12 항에 있어서,
    상기 호스트 메모리 컨트롤러로부터 독출 상태 명령을 수신하는 단계; 및
    상기 DDR 인터페이스를 통해 상기 메모리 모듈의 상기 상태를 동기적으로 제공하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법.
  15. 비휘발성 메모리;
    데이터 인터페이스와, 제어 및 어드레스(CA) 인터페이스를 상기 비휘발성 메모리로 제공하는 비휘발성 메모리 컨트롤러;
    상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM;
    데이터 버퍼;
    제어 및 어드레스(CA) 버퍼를 포함하는 레지스터링 클럭 드라이버(RCD); 및
    호스트 메모리 컨트롤러를 위한 DDR 인터페이스 및 메시지 인터페이스를 포함하고;
    상기 비휘발성 메모리 및 상기 DRAM은 상기 데이터 버퍼 및 상기 레지스터링 클럭 드라이버(RCD)와 연결되고,
    상기 데이터 버퍼는 상기 호스트 메모리 컨트롤러에 의해서 요청된 데이터 또는 상기 메모리 모듈의 상태를 상기 DDR 인터페이스의 데이터(DQ) 버스 및 상기 메시지 인터페이스를 통하여 제공하고, 상기 RCD는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼로 명령 시퀀스들을 발생하고,
    상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스되고,
    상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 접근되는 것을 특징으로 하는 메모리 모듈.
  16. 제 15 항에 있어서,
    상기 호스트 메모리 컨트롤러는 고속 캐시-독출 요청을 전송해서 상기 메모리 모듈에 저장된 데이터를 독출하고, 상기 메모리 모듈은 상기 데이터가 DRAM 캐시에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 동기적으로 제공하고, 상기 데이터가 상기 비휘발성 메모리에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 비동기적으로 제공하는 것을 특징으로 하는 메모리 모듈.
  17. 제 16 항에 있어서,
    상기 메모리 모듈은 상기 메시지 인터페이스로 태그를 포함하는 메시지 신호를 전송하고, 상기 호스트 메모리 컨트롤러는 상기 태그와 확장된 어드레스(EA)의 비교에 의해서 상기 고속 캐시-독출 요청이 캐시 히트인지 또는 캐시 미스인지를 판별하는 것을 특징으로 하는 메모리 모듈.
  18. 호스트 메모리 컨트롤러;
    메모리 모듈;
    상기 호스트 메모리 컨트롤러와 상기 메모리 모듈 사이에 위치하고, 데이터 버스, 그리고 제어 및 어드레스(CA) 버스를 포함하는 DDR 인터페이스; 및
    상기 호스트 메모리 컨트롤러와 상기 메모리 모듈 사이에 위치한 메시지 인터페이스를 포함하고,
    상기 메모리 모듈은,
    비휘발성 메모리;
    데이터 인터페이스와, 제어 및 어드레스(CA) 인터페이스를 상기 비휘발성 메모리로 제공하는 비휘발성 메모리 컨트롤러;
    상기 비휘발성 메모리의 DRAM 캐시로 구성된 DRAM;
    데이터 버퍼; 및
    제어 및 어드레스(CA) 버퍼를 포함하는 레지스터링 클럭 드라이버(RCD)를 포함하고,
    상기 비휘발성 메모리 및 상기 DRAM은 상기 데이터 버퍼 및 상기 레지스터링 클럭 드라이버(RCD)와 연결되고,
    상기 데이터 버퍼는 상기 호스트 메모리 컨트롤러에 의해서 요청된 데이터 또는 상기 메모리 모듈의 상태를 상기 DDR 인터페이스의 데이터(DQ) 버스 및 상기 메시지 인터페이스를 통하여 제공하고, 상기 RCD는 상기 DDR 인터페이스의 CA 버스를 통해 수신된 명령들 및 어드레스들에 근거하여 상기 데이터 버퍼로 명령 시퀀스들을 발생하고,
    상기 메모리 모듈의 상기 비휘발성 메모리에 저장된 데이터는 상기 비휘발성 메모리 컨트롤러에 의해서 비동기적으로 액세스되고,
    상기 DRAM 캐시에 저장된 데이터는 상기 호스트 메모리 컨트롤러에 의해서 동기적으로 직접 접근되는 것을 특징으로 하는 메모리 시스템.
  19. 제 18 항에 있어서,
    상기 호스트 메모리 컨트롤러는 상기 메모리 모듈에 저장된 데이터를 독출하기 위하여 고속 캐시-독출 요청을 전송하고,
    상기 메모리 모듈은, 상기 데이터가 상기 DRAM 캐시에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 동기적으로 제공하고, 상기 데이터가 상기 비휘발성 메모리에 저장되어 있을 때 상기 데이터를 상기 데이터 버스에 비동기적으로 제공하는 것을 특징으로 하는 메모리 시스템.
  20. 제 19 항에 있어서,
    상기 메모리 모듈은 태그를 포함하는 메시지 신호를 상기 메시지 인터페이스로 전송하고, 상기 호스트 메모리 컨트롤러는 상기 태그와 확장된 어드레스(EA)의 비교에 의해서 상기 고속 캐시-독출 요청이 캐시 히트인지 또는 캐시 미스인 지를 판별하는 것을 특징으로 하는 메모리 시스템.

KR1020170007166A 2016-06-08 2017-01-16 디디알 호환 비동기 메모리 모듈 시스템 및 그것의 동작 방법 KR20170139438A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201662347569P 2016-06-08 2016-06-08
US62/347,569 2016-06-08
US201662368806P 2016-07-29 2016-07-29
US62/368,806 2016-07-29
US201662371588P 2016-08-05 2016-08-05
US62/371,588 2016-08-05
US15/285,423 2016-10-04
US15/285,423 US10810144B2 (en) 2016-06-08 2016-10-04 System and method for operating a DRR-compatible asynchronous memory module

Publications (1)

Publication Number Publication Date
KR20170139438A true KR20170139438A (ko) 2017-12-19

Family

ID=60573975

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170007166A KR20170139438A (ko) 2016-06-08 2017-01-16 디디알 호환 비동기 메모리 모듈 시스템 및 그것의 동작 방법

Country Status (5)

Country Link
US (1) US10810144B2 (ko)
JP (1) JP6986369B2 (ko)
KR (1) KR20170139438A (ko)
CN (1) CN107481746B (ko)
TW (1) TWI762479B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10978133B2 (en) 2019-07-11 2021-04-13 Samsung Electronics Co., Ltd. Memory device and memory system comprising the same

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180059945A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Media Controller with Response Buffer for Improved Data Bus Transmissions and Method for Use Therewith
US10679722B2 (en) * 2016-08-26 2020-06-09 Sandisk Technologies Llc Storage system with several integrated components and method for use therewith
US20180059943A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Media Controller and Method for Management of CPU-Attached Non-Volatile Memory
US10198354B2 (en) 2017-03-21 2019-02-05 Intel Corporation Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory
US10929291B2 (en) * 2017-12-06 2021-02-23 MemRay Corporation Memory controlling device and computing device including the same
KR102101622B1 (ko) * 2017-12-06 2020-04-17 주식회사 멤레이 메모리 제어 장치 및 이를 포함하는 컴퓨팅 디바이스
US10296230B1 (en) * 2017-12-22 2019-05-21 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies
US11029879B2 (en) * 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
US10534731B2 (en) * 2018-03-19 2020-01-14 Micron Technology, Inc. Interface for memory having a cache and multiple independent arrays
KR102505913B1 (ko) * 2018-04-04 2023-03-07 삼성전자주식회사 메모리 모듈 및 메모리 모듈을 포함하는 메모리 시스템
KR102538253B1 (ko) * 2018-04-16 2023-06-01 삼성전자주식회사 반도체 메모리 모듈 및 반도체 메모리 모듈을 포함하는 메모리 시스템
KR101952827B1 (ko) * 2018-06-29 2019-02-27 주식회사 맴레이 메모리 제어 장치 및 이를 포함하는 메모리 시스템
CN109144778A (zh) * 2018-07-27 2019-01-04 郑州云海信息技术有限公司 一种存储服务器***及其备份方法、***及可读存储介质
KR20200015233A (ko) * 2018-08-03 2020-02-12 삼성전자주식회사 불휘발성 메모리 장치들을 포함하는 반도체 메모리 모듈
US11099779B2 (en) * 2018-09-24 2021-08-24 Micron Technology, Inc. Addressing in memory with a read identification (RID) number
US10732892B2 (en) 2018-09-24 2020-08-04 Micron Technology, Inc. Data transfer in port switch memory
US10915404B2 (en) 2018-11-02 2021-02-09 Arm Limited Persistent memory cleaning
CN111143898B (zh) * 2018-11-05 2022-06-14 瑞昱半导体股份有限公司 可插拔存储器装置数据保护方法
JP7140972B2 (ja) 2018-12-21 2022-09-22 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
CN109582507B (zh) * 2018-12-29 2023-12-26 西安紫光国芯半导体股份有限公司 用于nvdimm的数据备份和恢复方法、nvdimm控制器以及nvdimm
US11537521B2 (en) * 2019-06-05 2022-12-27 Samsung Electronics Co., Ltd. Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM
CN110286711B (zh) * 2019-06-28 2021-04-13 联想(北京)有限公司 信息处理方法、信息处理装置、存储装置和电子设备
US11163486B2 (en) 2019-11-25 2021-11-02 Micron Technology, Inc. Memory sub-system-bounded memory function
US11099786B2 (en) * 2019-12-30 2021-08-24 Advanced Micro Devices, Inc. Signaling for heterogeneous memory systems
CN111309646A (zh) * 2020-03-27 2020-06-19 西安紫光国芯半导体有限公司 存储装置及其数据写入、读取、备份和恢复方法
CN111681693A (zh) * 2020-05-26 2020-09-18 北京微密科技发展有限公司 融合ddr5 lrdimm芯片组的nvdimm-p控制器及控制方法
US11586518B2 (en) * 2020-08-27 2023-02-21 Micron Technology, Inc. Thermal event prediction in hybrid memory modules

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5907867A (en) * 1994-09-09 1999-05-25 Hitachi, Ltd. Translation lookaside buffer supporting multiple page sizes
KR960039006A (ko) * 1995-04-26 1996-11-21 김광호 디램버스에 접속가능한 불휘발성 반도체 메모리장치
JP2001010865A (ja) 1999-06-23 2001-01-16 Ngk Insulators Ltd 窒化珪素焼結体及びその製造方法
JP3872922B2 (ja) 1999-06-28 2007-01-24 株式会社東芝 半導体記憶装置及びメモリ混載ロジックlsi
US6643756B1 (en) * 1999-11-11 2003-11-04 Ati International Srl System and method for accessing video data using a translation client
JP4059002B2 (ja) * 2001-06-13 2008-03-12 株式会社日立製作所 メモリ装置
JP2005234932A (ja) * 2004-02-20 2005-09-02 Oki Electric Ind Co Ltd マトリックス状バス接続システムとその低電力方法
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US9171585B2 (en) * 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US7461231B2 (en) * 2006-01-12 2008-12-02 International Business Machines Corporation Autonomically adjusting one or more computer program configuration settings when resources in a logical partition change
US7716411B2 (en) * 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
CN100514488C (zh) * 2007-04-16 2009-07-15 中国人民解放军国防科学技术大学 采样点可配置的片外dram数据采样方法
WO2008131058A2 (en) * 2007-04-17 2008-10-30 Rambus Inc. Hybrid volatile and non-volatile memory device
US7827360B2 (en) * 2007-08-02 2010-11-02 Freescale Semiconductor, Inc. Cache locking device and methods thereof
US8560761B2 (en) 2008-03-31 2013-10-15 Spansion Llc Memory resource management for a flash aware kernel
US8738840B2 (en) 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
US8281074B2 (en) 2008-10-07 2012-10-02 Micron Technology, Inc. Interface device for memory in a stack, storage devices and a processor
US8713379B2 (en) 2011-02-08 2014-04-29 Diablo Technologies Inc. System and method of interfacing co-processors and input/output devices via a main memory system
US8850155B2 (en) * 2011-12-19 2014-09-30 Advanced Micro Devices, Inc. DDR 2D Vref training
US9280497B2 (en) * 2012-12-21 2016-03-08 Dell Products Lp Systems and methods for support of non-volatile memory on a DDR memory channel
WO2014155593A1 (ja) * 2013-03-27 2014-10-02 株式会社日立製作所 Sdramインターフェイスを有するdram、フラッシュメモリ混載メモリモジュール
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存***、内存访问请求的处理方法和计算机***
US9251003B1 (en) 2013-08-14 2016-02-02 Amazon Technologies, Inc. Database cache survivability across database failures
US20150186278A1 (en) 2013-12-26 2015-07-02 Sarathy Jayakumar Runtime persistence
US9354872B2 (en) * 2014-04-24 2016-05-31 Xitore, Inc. Apparatus, system, and method for non-volatile data storage and retrieval
US9721660B2 (en) 2014-10-24 2017-08-01 Microsoft Technology Licensing, Llc Configurable volatile memory without a dedicated power source for detecting a data save trigger condition
US10126950B2 (en) 2014-12-22 2018-11-13 Intel Corporation Allocating and configuring persistent memory
KR102342789B1 (ko) * 2015-09-24 2021-12-24 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US9460791B1 (en) * 2015-12-08 2016-10-04 Inphi Corporation Data clock synchronization in hybrid memory modules
US10152237B2 (en) * 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10978133B2 (en) 2019-07-11 2021-04-13 Samsung Electronics Co., Ltd. Memory device and memory system comprising the same

Also Published As

Publication number Publication date
JP6986369B2 (ja) 2021-12-22
TW201743219A (zh) 2017-12-16
TWI762479B (zh) 2022-05-01
CN107481746B (zh) 2023-07-18
CN107481746A (zh) 2017-12-15
JP2017220237A (ja) 2017-12-14
US10810144B2 (en) 2020-10-20
US20170357604A1 (en) 2017-12-14

Similar Documents

Publication Publication Date Title
US10810144B2 (en) System and method for operating a DRR-compatible asynchronous memory module
US10002085B2 (en) Peripheral component interconnect (PCI) device and system including the PCI
US9645746B2 (en) Systems and methods for support of non-volatile memory on a DDR memory channel
US10740010B2 (en) Memory module and memory system including memory module
US7373452B2 (en) Controller for controlling nonvolatile memory
US9436632B2 (en) Accessing data stored in a command/address register device
US9583182B1 (en) Multi-level memory management
US9411537B2 (en) Embedded multimedia card (EMMC), EMMC system including the EMMC, and method of operating the EMMC
US8086785B2 (en) System and method of page buffer operation for memory devices
US20100149858A1 (en) Providing a Ready-Busy Signal From a Non-Volatile Memory Device to a Memory Controller
JP2008034095A (ja) プロセッサ間のホストインターフェイシング機能を有するマルチパスアクセス可能な半導体メモリ装置
CN107257964B (zh) Dram电路、计算机***和访问dram电路的方法
US20080183985A1 (en) Rank Select Operation Between an XIO Interface and a Double Data Rate Interface
US20150106658A1 (en) Information processing apparatus and failure detection method of information processing apparatus
US11853608B2 (en) Information writing method and apparatus
US9218861B2 (en) Apparatuses and methods including selectively providing a single or separate chip select signals
WO2016043158A1 (ja) メモリ制御回路および記憶装置
CN108139993B (zh) 内存装置、内存控制器、数据缓存装置及计算机***
US10515007B2 (en) Technologies for remapping pending bit array read requests
US11742004B2 (en) Memory supporting multiple types of operations
US7805567B2 (en) Chipset and northbridge with raid access
JPH11102328A (ja) メモリ診断システム
JP3600830B2 (ja) プロセッサ