KR102542493B1 - 비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이 - Google Patents

비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이 Download PDF

Info

Publication number
KR102542493B1
KR102542493B1 KR1020227025476A KR20227025476A KR102542493B1 KR 102542493 B1 KR102542493 B1 KR 102542493B1 KR 1020227025476 A KR1020227025476 A KR 1020227025476A KR 20227025476 A KR20227025476 A KR 20227025476A KR 102542493 B1 KR102542493 B1 KR 102542493B1
Authority
KR
South Korea
Prior art keywords
memory
volatile
queue
commands
reads
Prior art date
Application number
KR1020227025476A
Other languages
English (en)
Other versions
KR20220113818A (ko
Inventor
징 왕
제임스 알. 마그로
케다르나스 발라크리쉬난
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20220113818A publication Critical patent/KR20220113818A/ko
Application granted granted Critical
Publication of KR102542493B1 publication Critical patent/KR102542493B1/ko

Links

Images

Classifications

    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

메모리 액세스 커맨드들은 메모리 인터페이스 큐에 배치되고, 메모리 인터페이스 큐로부터, 휘발성 듀얼 인라인 메모리 모듈(dual in-line memory module, DIMM) 및 비휘발성 DIMM에 결합된 이기종 메모리 채널로 송신된다. 메모리 인터페이스 큐에 배치된 선택된 메모리 액세스 커맨드들은 리플레이 큐에 저장된다. 메모리 인터페이스 큐에 배치된 비휘발성 판독들은 비휘발성 커맨드 큐(NV 큐)에 있다. 본 방법은 이기종 메모리 채널을 통해 수신된 정보에 기초하여, 복구 시퀀스를 필요로 하는 에러가 발생했음을 검출한다. 에러에 응답하여, 본 방법은 (i) 리플레이 큐에 저장된 선택된 메모리 액세스 커맨드들을 송신하는 것, 및 (ii) NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 포함하는 복구 시퀀스를 개시한다.

Description

비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이
컴퓨터 시스템들은 메인 메모리로 통상적으로 저렴한 고밀도 동적 랜덤 액세스 메모리(DRAM) 칩들을 사용한다. 오늘날 판매되는 대부분의 DRAM 칩들은 JEDEC(Joint Electron Devices Engineering Council)에 의해 공표된 다양한 DDR(double data rate) DRAM 표준들과 호환가능하다. DDR 메모리 제어기들은 공개된 DDR 표준들에 따라 다양한 메모리 액세스 에이전트들과 DDR DRAM들 사이의 인터페이스를 관리하기 위해 사용된다.
"NVDIMM-P"(non-volatile dual-inline memory module with persistent storage)는 표준 DDR DIMM들 대신에 사용될 수 있지만 영구 메모리를 포함하는 스토리지 클래스 메모리(storage class memory)이다. DRAM과 같은 휘발성 메모리를 지원하는 메모리 채널을 갖는 영구 또는 "비휘발성" 메모리의 사용은 몇몇 새로운 문제들을 제시한다. 비휘발성 DIMM 상의 비휘발성 메모리로부터 판독하는 것은 DRAM으로부터 판독하는 것보다 느린 프로세스이다. 비휘발성 메모리 판독들은 통상적으로, 결정론적인 알려진 시간에 더 빨리 완료되는 DRAM 판독들과는 대조적으로, 비결정론적 시간에 완료된다. 이들과 같은 차이들을 다루는 것은 비휘발성 DIMM들과 상호작용할 수 있는 메모리 제어기들을 설계하는 데 있어서 다양한 과제들을 제시한다.
도 1은 종래 기술에서 공지된 가속 처리 유닛(APU) 및 메모리 시스템을 블록도 형태로 도시한다;
도 2는 일부 실시예들에 따른 도 1의 APU와 같은 APU에서 사용하기에 적합한 메모리 제어기를 블록도 형태로 도시한다;
도 3은 일부 실시예에 따른 데이터 처리 시스템을 블록도 형태로 도시한다;
도 4는 일부 실시예들에 따른 메모리 액세스 요청들을 핸들링하기 위한 프로세스의 흐름도이다;
도 5는 일부 실시예들에 따른 에러들을 핸들링하기 위한 프로세스의 흐름도이다;
도 6은 도 5의 프로세스를 도해 형태로 도시한다; 그리고
도 7은 도 5의 프로세스의 다른 부분들을 도해 형태로 도시한다.
다음 설명에서, 상이한 도면들에서 동일한 참조 부호들을 사용하는 것은 유사하거나 동일한 항목들을 나타낸다. 달리 언급되지 않는 한, 단어 "연결된(coupled)"및 이와 관련된 동사 형태들은 당업계에 공지된 수단에 의한 직접 접속 및 간접적인 전기 접속 양자를 포함하고, 달리 언급되지 않는 한 직접 접속에 대한 모든 설명은 또한 간접적인 전기 접속의 적절한 형태들을 사용하는 대안적인 실시예들을 암시한다.
메모리 제어기는 커맨드 큐, 메모리 인터페이스 큐, 비휘발성 커맨드 큐(NV 큐), 리플레이 큐, 및 리플레이 제어 회로를 포함한다. 커맨드 큐는 휘발성 판독들, 휘발성 기록들, 비휘발성 판독들, 및 비휘발성 기록들을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력, 및 출력을 갖고, 복수의 엔트리들을 갖는다. 메모리 인터페이스 큐는 커맨드 큐로부터 선택된 커맨드들을 수신하기 위한 입력, 및 적어도 하나의 비휘발성 듀얼 인라인 메모리 모듈(DIMM)이 결합되는 이기종 메모리 채널에 결합하기 위한 출력을 갖는다. NV 큐는 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 저장하기 위해 커맨드 큐의 출력에 결합된다. 리플레이 큐는 메모리 인터페이스 큐에 배치되는 선택된 메모리 액세스 커맨드들을 저장하기 위해 커맨드 큐의 출력에 결합된다. 리플레이 제어 회로는 이기종 메모리 채널을 통해 수신되는 정보에 기초하여, 복구 시퀀스를 필요로 하는 에러가 발생했음을 검출하고, 에러에 응답하여, 리플레이 큐에 저장된 선택된 메모리 액세스 커맨드들을 송신하는 것, 및 NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 포함하는 복구 시퀀스를 개시한다.
방법은 메모리 시스템에서의 에러들에 응답한다. 본 방법은 휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 복수의 메모리 액세스 요청들을 수신하는 단계를 포함한다. 메모리 액세스 요청들을 이행하기 위한 메모리 액세스 커맨드들은 메모리 인터페이스 큐에 배치된다. 메모리 액세스 커맨드들은 메모리 인터페이스 큐로부터, 휘발성 듀얼 인라인 메모리 모듈(DIMM) 및 비휘발성 DIMM에 결합된 이기종 메모리 채널로 송신된다. 메모리 인터페이스 큐에 배치된 선택된 메모리 액세스 커맨드들은 리플레이 큐에 저장된다. 메모리 인터페이스 큐에 배치된 비휘발성 판독들은 비휘발성 커맨드 큐(NV 큐)에 저장된다. 이기종 메모리 채널을 통해 수신되는 정보에 기초하여, 본 방법은 복구 시퀀스를 필요로 하는 에러가 발생했음을 검출하고, 에러에 응답하여, (i) 리플레이 큐에 저장된 선택된 메모리 액세스 커맨드들을 송신하는 것, 및 (ii) NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 포함하는 복구 시퀀스를 개시한다. 메모리 인터페이스 큐에 배치된 선택된 메모리 액세스 커맨드들은 적어도 하나의 저장 큐에 저장된다.
데이터 처리 시스템은 중앙 처리 유닛, 중앙 처리 유닛에 결합된 데이터 패브릭, 및 중앙 처리 유닛으로부터의 메모리 액세스 요청들을 이행하기 위해 데이터 패브릭에 결합된 메모리 제어기를 포함한다. 메모리 제어기는 커맨드 큐, 메모리 인터페이스 큐, 비휘발성 커맨드 큐(NV 큐), 리플레이 큐, 및 리플레이 제어 회로를 포함한다. 커맨드 큐는 휘발성 판독들, 휘발성 기록들, 비휘발성 판독들, 및 비휘발성 기록들을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력, 및 출력을 갖고, 복수의 엔트리들을 갖는다. 메모리 인터페이스 큐는 커맨드 큐로부터 선택된 커맨드들을 수신하기 위한 입력, 및 적어도 하나의 비휘발성 듀얼 인라인 메모리 모듈(DIMM)이 결합되는 이기종 메모리 채널에 결합하기 위한 출력을 갖는다. NV 큐는 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 저장하기 위해 커맨드 큐의 출력에 결합된다. 리플레이 큐는 메모리 인터페이스 큐에 배치되는 선택된 메모리 액세스 커맨드들을 저장하기 위해 커맨드 큐의 출력에 결합된다. 리플레이 제어 회로는 이기종 메모리 채널을 통해 수신되는 정보에 기초하여, 복구 시퀀스를 필요로 하는 에러가 발생했음을 검출하고, 에러에 응답하여, 리플레이 큐에 저장된 선택된 메모리 액세스 커맨드들을 송신하는 것, 및 NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 포함하는 복구 시퀀스를 개시한다.
도 1은 종래 기술에서 공지된 가속 처리 유닛(APU)(100) 및 메모리 시스템(130)을 블록도 형태로 도시한다; APU(100)는 호스트 데이터 처리 시스템에서 프로세서로서 사용하기에 적합한 집적 회로이고, 일반적으로 중앙 처리 유닛(CPU) 코어 복합체(110), 그래픽 코어(120), 디스플레이 엔진 세트(122), 메모리 관리 허브(140), 데이터 패브릭(125), 주변 제어기 세트(160), 주변 버스 제어기 세트(170), 및 시스템 관리 유닛(SMU)(180)을 포함한다.
CPU 코어 복합체(110)는 CPU 코어(112) 및 CPU 코어(114)를 포함한다. 이 예에서, CPU 코어 복합체(110)는 두 개의 CPU 코어들을 포함하지만, 다른 실시예들에서 CPU 코어 복합체(110)는 임의의 수의 CPU 코어를 포함할 수 있다. CPU 코어들(112 및 114) 각각은 제어 패브릭을 형성하는 시스템 관리 네트워크 (SMN)에 그리고 데이터 패브릭(125)에 양방향으로 연결되고, 데이터 패브릭(125)에 메모리 액세스 요청들을 제공할 수 있다. CPU 코어들(112 및 114) 각각은 단일 코어들일 수 있거나, 또한 캐시들과 같은 특정 자원들을 공유하는 두 개 이상의 단일 코어들을 갖는 코어 복합체일 수있다.
그래픽스 코어(120)는 고집적 병렬 방식으로 버텍스 처리, 프래그먼트 처리, 셰이딩(shading), 텍스쳐 블렌딩(text blending) 등과 같은 그래픽 동작들을 수행할 수 있는 고성능 그래픽 처리 유닛(GPU)이다. 그래픽스 코어(120)는 SMN에 그리고 데이터 패브릭(125)에 양방향으로 연결되고, 데이터 패브릭(125)에 메모리 액세스 요청들을 제공할 수 있다. 이와 관련하여, APU(100)는 CPU 코어 복합체(110) 및 그래픽스 코어(120)가 동일한 메모리 공간을 공유하는 일원화된 메모리 아키텍처, 또는 CPU 코어 복합체(110) 및 그래픽스 코어(120)가 메모리 공간의 일부를 공유하는 메모리 아키텍처를 지원할 수 있는 한편, 그래픽스 코어(120)는 또한, CPU 코어 복합체(110)에 의해 액세스가능하지 않은 개인 그래픽스 메모리를 사용한다.
디스플레이 엔진들(122)은 모니터 상의 디스플레이를 위해 그래픽스 코어(120)에 의해 생성된 객체들을 렌더링 및 래스터화한다. 그래픽 코어(120) 및 디스플레이 엔진들(122)은 메모리 시스템(130)에서의 적절한 어드레스들로의 균일한 변환을 위해 공통 메모리 관리 허브(140)에 양방향으로 연결되고, 메모리 관리 허브(140)는 그러한 메모리 액세스를 발생시키고 메모리 시스템으로부터 리턴되는 판독 데이터를 수신하기 위해 데이터 패브릭(125)에 양방향으로 연결된다.
데이터 패브릭(125)은 임의의 메모리 액세싱 에이전트와 메모리 관리 허브(140) 사이에서 메모리 액세스 요청들 및 메모리 응답들을 라우팅하기 위한 크로스바 스위치를 포함한다. 이는 또한, 시스템 구성에 기초하여 메모리 액세스들의 목적지들을 결정하기 위한 시스템 BIOS(basic input/output system)에 의해 정의된 시스템 메모리 맵뿐만 아니라, 각 가상 연결을 위한 버퍼들을 포함한다.
주변 제어기들(160)은 USB(universal serial bus) 제어기(162) 및 SATA(Serial Advanced Technology Attachment) 인터페이스 제어기(164)를 포함하며, 이들 각각은 시스템 허브(166) 및 SMN 버스에 양방향으로 연결된다. 이들 두 제어기들은 단지 APU(100)에서 사용될 수 있는 주변 제어기들의 예이다.
주변 버스 제어기들(170)은 시스템 제어기 또는 "SB(Southbridge)"(172) 및 PCIe(Peripheral Component Interconnect Express) 제어기(174)를 포함하며, 이들 각각은 입력/출력(I/O) 허브(176) 및 SMN 버스에 양방향으로 연결된다. I/O 허브(176)는 또한, 시스템 허브(166) 및 데이터 패브릭(125)에 양방향으로 연결된다. 그에 따라 예를 들어 CPU 코어는 데이터 패브릭(125)이 I / O 허브 (176)를 통해 라우팅하는 액세스를 통해 USB 제어기 (162), SATA 인터페이스 제어기 (164), SB (172) 또는 PCIe 제어기 (174)에 레지스터들을 프로그램할 수 있다. APU(100)를 위한 소프트웨어 및 펌웨어는 ROM(read-only memory), 플래시 EEPROM(flash electrically erasable programmable ROM) 등과 같은 다양한 비휘발성 메모리 유형들 중 임의의 것일 수 있는 시스템 데이터 드라이브 또는 시스템 BIOS 메모리(도시되지 않음)에 저장된다. 통상적으로, BIOS 메모리는 PCIe 버스를 통해 액세스되고, 시스템 데이터 드라이브는 SATA 인터페이스를 통해 액세스된다.
SMU(180)는 APU(100) 상의 자원들의 동작을 제어하고 이들 사이의 통신을 동기화하는 로컬 제어기이다. SMU(180)는 APU(100) 상의 다양한 프로세서들의 시동 시퀀싱을 관리하고, 리셋, 인에이블 및 다른 신호들을 통해 다수의 오프 칩 디바이스들을 제어한다. SMU(180)는 APU(100)의 구성요소들 각각에 대한 클록 신호들을 제공하기 위해 위상 동기 루프(PLL)와 같은 하나 이상의 클록 소스(도시되지 않음)를 포함한다. SMU(180)는 또한, 다양한 프로세서들 및 다른 기능 블록들에 대한 전력을 관리하고, 적절한 전력 상태들을 결정하기 위해 CPU 코어들(112 및 114) 및 그래픽 코어(120)로부터 측정된 소비 전력 값들을 수신할 수 있다.
메모리 관리 허브(140) 및 이의 연관된 물리 인터페이스들(PHY들)(151 및 152)은 이 실시예에서 APU(100)와 통합된다. 메모리 관리 허브(140)는 메모리 채널들(141 및 142) 및 전력 엔진(149)을 포함한다. 메모리 채널(141)은 호스트 인터페이스(145), 메모리 채널 제어기(143), 및 물리적 인터페이스(147)를 포함한다. 호스트 인터페이스(145)는 SDP(serial presence detect link)를 통해 메모리 채널 제어기(143)를 데이터 패브릭(125)에 양방향으로 연결한다. 물리적 인터페이스(147)는 메모리 채널 제어기(143)를 PHY(151)에 양방향으로 연결하고, DDR PHY 인터페이스(DFI) 규격에 따른다. 메모리 채널(142)은 호스트 인터페이스(146), 메모리 채널 제어기(144), 및 물리적 인터페이스(148)를 포함한다. 호스트 인터페이스(146)는 다른 SDP를 통해 메모리 채널 제어기(144)를 데이터 패브릭(125)에 양방향으로 연결한다. 물리적 인터페이스(148)는 메모리 채널 제어기(144)를 PHY(152)에 양방향으로 연결하고, DFI 규격에 따른다. 전력 엔진(149)은 SMN 버스를 통해 SMU(180)에, APB(Advanced Peripheral Bus)를 통해 PHY들(151 및 152)에 양방향으로 연결되고, 또한 메모리 채널 제어기들(143 및 144)에 양방향으로 연결된다. PHY(151)는 메모리 채널(131)에 양방향 연결을 갖는다. PHY(152)는 양방향 연결 메모리 채널(133)을 갖는다.
메모리 관리 허브(140) 및 이의 연관된 물리 인터페이스들(PHY들)(151 및 152)은 이 실시예에서 APU(100)와 통합된다. 메모리 관리 허브(140)는 메모리 채널들(141 및 142) 및 전력 엔진(149)을 포함한다. 메모리 채널(141)은 호스트 인터페이스(145), 메모리 채널 제어기(143), 및 물리적 인터페이스(147)를 포함한다. 호스트 인터페이스(145)는 SDP(serial presence detect link)를 통해 메모리 채널 제어기(143)를 데이터 패브릭(125)에 양방향으로 연결한다. 물리적 인터페이스(147)는 메모리 채널 제어기(143)를 PHY(151)에 양방향으로 연결하고, DDR PHY 인터페이스(DFI) 규격에 따른다. 메모리 채널(142)은 호스트 인터페이스(146), 메모리 채널 제어기(144), 및 물리적 인터페이스(148)를 포함한다. 호스트 인터페이스(146)는 다른 SDP를 통해 메모리 채널 제어기(144)를 데이터 패브릭(125)에 양방향으로 연결한다. 물리적 인터페이스(148)는 메모리 채널 제어기(144)를 PHY(152)에 양방향으로 연결하고, DFI 규격에 따른다. 전력 엔진(149)은 SMN 버스를 통해 SMU(180)에, APB(Advanced Peripheral Bus)를 통해 PHY들(151 및 152)에 양방향으로 연결되고, 또한 메모리 채널 제어기들(143 및 144)에 양방향으로 연결된다. PHY(151)는 메모리 채널(131)에 양방향 연결을 갖는다. PHY(152)는 양방향 연결 메모리 채널(133)을 갖는다.
메모리 시스템(130)은 메모리 채널(131) 및 메모리 채널(133)을 포함한다. 메모리 채널 (131)은 본 예에서는 별도의 랭크들에 대응하는 대표적인 듀얼 인라인 메모리 모듈들(DIMMs)(134, 136 및 138)을 포함하여, DDRx 버스 (132)에 연결되는 DIMM 세트를 포함한다. 마찬가지로, 메모리 채널(133)은 대표적인 DIMM들(135, 137 및 139)을 포함하는 DDRx 버스(129)에 연결된 DIMM 세트를 포함한다.
APU(100)는 호스트 데이터 처리 시스템의 중앙 처리 유닛(CPU)으로서 동작하고, 최신 컴퓨터 시스템들에서 유용한 다양한 버스들 및 인터페이스들을 제공한다. 이들 인터페이스들은 두 개의 더블 데이터 레이트(DDRx) 메모리 채널들, PCIe 링크로의 연결을 위한 PCIe 루트 복합체, USB 네트워크로의 연결을 위한 USB 제어기, 및 SATA 대용량 저장 디바이스로의 인터페이스를 포함한다.
또한, APU(100)는 다양한 시스템 모니터링 및 전력 절감 기능들을 구현한다. 특히, 하나의 시스템 모니터링 기능은 열적 모니터링이다. 예를 들어, APU(100)가 고온이 되면, SMU(180)는 CPU 코어들(112 및 114) 및/또는 그래픽 코어(120)의 주파수 및 전압을 감소시킬 수 있다. APU(100)가 너무 고온으로 되면, 이는 완전히 셧다운될 수 있다. 열적 이벤트들이 또한, SMN 버스를 통해 SMU(180)에 의해 외부 센서들로부터 수신될 수 있고, SMU(180)는 응답으로 클록 주파수 및/또는 전력 공급 전압을 감소시킬 수 있다.
도 2는 도 1의 APU와 같은 APU에서 사용하기에 적합한 메모리 제어기(200)를 블록도 형태로 도시한다. 메모리 제어기(200)는 일반적으로 메모리 채널 제어기(210) 및 전력 제어기(250)를 포함한다. 메모리 채널 제어기(210)는 일반적으로 인터페이스(212), 메모리 인터페이스 큐(214)("메모리 인터페이스 큐", "큐"), 커맨드 큐(220), 어드레스 생성기(222), 컨텐츠 어드레싱가능 메모리(content addressable memory, CAM)(224), 리플레이 큐(230)를 포함하는 리플레이 제어 로직(231), 리프레시 논리 블록(232), 타이밍 블록(234), 페이지 테이블(236), 아비터(arbiter)(238), 에러 정정 코드(error correction code, ECC) 검사 회로(242), ECC 생성 블록(244), 데이터 버퍼(246), 비휘발성(non-volatile, NV) 버퍼(247), 및 NV 큐(248)를 포함한다.
인터페이스(212)는 외부 버스를 통해 데이터 패브릭(125)에 대한 제1 양방향 연결을 갖고, 출력을 갖는다. 메모리 제어기 (200)에서, 이러한 외부 버스는 "AXI4"로 알려진 영국의 캠브리지(Cambridge) 소재의 ARM 홀딩스(ARM Holdings), PLC에 의해 명시된 고급 확장형 인터페이스 버전 4와 호환 가능하지만, 다른 실시예들에서는 인터페이스들의 다른 유형들일 수 있다. 인터페이스(212)는 메모리 액세스 요청들을 FCLK(또는 MEMCLK) 도메인으로서 알려진 제1 클록 도메인으로부터 UCLK 도메인으로서 알려진 메모리 제어기(200) 내부의 제2 클록 도메인으로 변환한다. 유사하게, 메모리 인터페이스 큐(214)는 메모리 액세스들을 UCLK 도메인으로부터 DFI 인터페이스와 연관된 DFICLK 도메인으로 제공한다.
어드레스 생성기(222)는 AXI4 버스를 통해 데이터 패브릭(125)으로부터 수신된 메모리 액세스 요청들의 어드레스들을 디코딩한다. 메모리 액세스 요청들은 정규화된 포맷으로 표현되는 물리적 어드레스 공간에서의 액세스 어드레스들을 포함한다. 어드레스 생성기(222)는 정규화된 어드레스들을 메모리 시스템(130)에서의 실제 메모리 디바이스들을 어드레싱하기 위해 뿐만 아니라, 관련된 액세스들을 효율적으로 스케줄링하기 위해 사용될 수 있는 포맷으로 변환할 수 있다. 이 포맷은 메모리 액세스 요청을 특정 랭크, 로우 어드레스, 컬럼 어드레스, 뱅크 어드레스, 및 뱅크 그룹과 연관시키는 영역 식별자를 포함한다. 시동 시, 시스템 BIOS는 메모리 시스템(130) 내의 메모리 디바이스들에 질의하여 이들의 크기 및 구성을 결정하고, 어드레스 생성기(222)와 연관된 구성 레지스터 세트를 프로그래밍한다. 어드레스 생성기(222)는 정규화된 어드레스들을 적절한 포맷으로 변환하기 위해 구성 레지스터들에 저장된 구성을 사용한다. 어드레스 생성기(222)는 NVDIMM-P 메모리를 포함하는 메모리의 어드레스 범위를 디코딩하고, 커맨드 큐(220)에 메모리 액세스 요청이 NVDIMM-P에 대한 요청인지 여부를 나타내는 디코딩된 신호를 저장한다. 그 후, 아비터(238)는 다른 요청들에 비해 적절한 우선순위로 NVDIMM-P 요청들을 우선순위화할 수 있다. 커맨드 큐(220)는 CPU 코어들(112 및 114) 및 그래픽 코어(120)와 같은 APU(100) 내의 메모리 액세싱 에이전트들로부터 수신된 메모리 액세스 요청들의 큐이다. 커맨드 큐(220)는 어드레스 생성기(222)에 의해 디코딩된 어드레스 필드들뿐만 아니라, 액세스 유형 및 서비스 품질(QoS) 식별자들을 포함하는, 아비터(238)가 메모리 액세스들을 효율적으로 선택할 수 있게 하는 다른 어드레스 정보를 저장한다. CAM(224)은 기록 후 기록(write after write, WAW) 및 기록 후 판독(read after write, RAW) 순서화 규칙들과 같은 순서화 규칙들을 시행하기 위한 정보를 포함한다.
에러 정정 코드(ECC) 생성 블록(244)은 NVDIMM-P로 발송될 기록 데이터의 ECC를 결정한다. ECC 검사 회로(242)는 수신된 ECC를 인입 ECC에 대해 검사한다.
리플레이 큐(230)는 어드레스 및 커맨드 패리티 응답들과 같은 응답들을 기다리고 있는 아비터(238)에 의해 선택된 메모리 액세스들을 저장하기 위한 임시 큐이다. 리플레이 제어 로직(231)은 ECC 검사 회로(242)에 액세스하여, 리턴된 ECC가 정확한지 또는 에러를 나타내는지를 결정한다. 리플레이 제어 로직(231)은 이들 사이클들 중 하나의 사이클의 패리티 또는 ECC 에러의 경우에 액세스들이 리플레이되는 리플레이 시퀀스를 개시하고 제어한다. 리플레이된 커맨드들은 메모리 인터페이스 큐(214)에 배치된다.
리프레시 로직(232)은 메모리 액세싱 에이전트들로부터 수신된 정상 판독 및 기록 메모리 액세스 요청들과는 별도로 생성되는 다양한 파워다운, 리프레시 및 종단 저항(ZQ) 교정 사이클들을 위한 상태 기계들을 포함한다. 예를 들어, 메모리 랭크가 프리차지 파워다운에 있으면, 이는 리프레시 사이클들을 실행하기 위해 주기적으로 어웨이크되어야 한다. 리프레시 로직(232)은 DRAM 칩들 내의 메모리 셀들의 저장 커패시터들로부터 전하가 누설됨으로써 야기되는 데이터 에러들을 방지하기 위해 리프레시 커맨드들을 주기적으로 생성한다. 또한, 리프레시 로직(232)은 시스템에서의 열적 변화로 인한 온 다이 종단 저항의 부정합을 방지하기 위해 ZQ를 주기적으로 교정한다.
아비터(238)는 커맨드 큐(220)에 양방향으로 연결되고, 메모리 채널 제어기(210)의 핵심이다. 이는 메모리 버스의 사용을 개선하기 위해 액세스들의 지능형 스케줄링에 의해 효율성을 개선한다. 아비터(238)는 타이밍 블록(234)을 사용하여, 커맨드 큐(220) 내의 특정 액세스들이 DRAM 타이밍 파라미터들에 기초하여 발행에 적격한지 여부를 결정함으로써 적절한 타이밍 관계들을 시행한다. 예를 들어, 각 DRAM은 "tRC"라고 알려져 있는 활성화 명령들 간 최소 지정 시간을 갖는다. 타이밍 블록(234)은 JEDEC 규격에 규정된 이러한 타이밍 파라미터 및 다른 타이밍 파라미터들에 기초하여 적격성을 결정하는 카운터 세트를 유지하고, 리플레이 큐(230)에 양방향으로 연결된다. 페이지 테이블(236)은 아비터(238)에 대한 메모리 채널의 각 뱅크 및 랭크 내의 활성 페이지들에 관한 상태 정보를 유지하고, 리플레이 큐(230)에 양방향으로 연결된다.
NV 버퍼(247)는 NV 판독 커맨드들을 NV 큐(248)에 저장하며, 이들 양자는 리플레이 시퀀스들에서의 사용을 위한 것이고, NV 판독 응답들을 관리하기 위한 것이다. NV 버퍼(247)는 후술할 바와 같이, RD_RDY 및 SEND 커맨드들을 핸들링하기 위해 메모리 인터페이스 큐(214)에 양방향으로 연결된다.
인터페이스(212)로부터 수신되는 기록 메모리 액세스 요청들에 응답하여, ECC 생성 블록(244)은 기록 데이터에 따라 ECC를 계산한다. 데이터 버퍼(246)는 수신된 메모리 액세스 요청들에 대한 기록 데이터 및 ECC를 저장한다. 이는 아비터(238)가 메모리 채널로의 디스패치를 위해 대응하는 기록 액세스를 선택할 때, 조합된 기록 데이터/ECC를 메모리 인터페이스 큐(214)에 출력한다.
전력 제어기 (250)는 일반적으로 고급 확장향 인터페이스, 버전 1 (AXI), APB 인터페이스 (254) 및 전력 엔진 (260)에 대한 인터페이스 (252)를 포함한다. 인터페이스(252)는 도 2에 개별적으로 도시된 "EVENT_n"으로 라벨링된 이벤트 신호를 수신하기 위한 입력, 및 출력을 포함하는 SMN으로의 제1 양방향 연결을 갖는다. APB 인터페이스(254)는 인터페이스(252)의 출력에 연결된 입력, 및 APB를 통한 PHY에의 연결을 위한 출력을 갖는다. 전력 엔진(260)은 인터페이스(252)의 출력에 연결된 입력, 및 메모리 인터페이스 큐(214)의 입력에 연결된 출력을 가진다. 전력 엔진(260)은 구성 레지스터 세트(262), 마이크로제어기(μC)(264), 셀프 리프레시 제어기(SLFREF/PE)(266), 및 신뢰성 있는 판독/기록 타이밍 엔진(RRW/TE)(268)을 포함한다. 구성 레지스터들(262)은 AXI 버스를 통해 프로그래밍되고, 메모리 제어기(200) 내의 다양한 블록들의 동작을 제어하기 위한 구성 정보를 저장한다. 이에 따라, 구성 레지스터들(262)은 도 2에 상세히 도시되지 않은 이들 블록들에 연결된 출력들을 갖는다. 셀프 리프레시 제어기(266)는 리프레시 로직(232)에 의한 리프레시의 자동 생성에 더하여 리프레시의 수동 생성을 허용하는 엔진이다. 신뢰성 있는 판독/기록 타이밍 엔진(268)은 DDR 인터페이스 최대 판독 레이턴시(maximum read latency, MRL) 트레이닝 및 루프백 테스팅과 같은 목적들을 위해 메모리 또는 I/O 디바이스들에 연속적인 메모리 액세스 스트림을 제공한다.
메모리 채널 제어기(210)는 연관된 메모리 채널로의 디스패치를 위해 메모리 액세스들을 선택할 수 있게 하는 회로부를 포함한다. 바람직한 중재 결정을 행하기 위해, 어드레스 생성기(222)는 메모리 시스템에서의 랭크, 로우 어드레스, 컬럼 어드레스, 뱅크 어드레스, 및 뱅크 그룹을 포함하는 프리디코딩된 정보로 어드레스 정보를 디코딩하고, 커맨드 큐(220)는 프리디코딩된 정보를 저장한다. 구성 레지스터들(262)은 어드레스 생성기(222)가 수신된 어드레스 정보를 어떻게 디코딩하는지를 결정하기 위한 구성 정보를 저장한다. 아비터(238)는 디코딩된 어드레스 정보, 타이밍 블록(234)에 의해 표시되는 타이밍 적격 정보, 및 페이지 테이블(236)에 의해 표시되는 활성 페이지 정보를 사용하여, 메모리 액세스들을 효율적으로 스케줄링하면서 서비스 품질(QoS) 요건들과 같은 다른 기준들을 관찰한다. 예를 들어, 아비터(238)는 메모리 페이지들을 변경하기 위해 요구되는 프리차지 및 활성화 커맨드들의 오버헤드를 피하기 위해 페이지들을 개방하기 위한 액세스들에 대한 선호도를 구현하고, 이들을 다른 뱅크에 대한 판독 및 기록 액세스들과 인터리빙함으로써 하나의 뱅크에 대한 오버헤드 액세스들을 숨긴다. 특히, 정상 동작 동안, 아비터(238)는 통상적으로, 상이한 페이지를 선택하기 전에 프리차지될 것이 요구될 때까지 상이한 뱅크들에서 페이지들을 개방 상태로 유지한다.
도 3은 일부 실시예에 따른 데이터 처리 시스템(300)을 블록도 형태로 도시한다. 데이터 처리 시스템(300)은 APU(310) 및 메모리 시스템(330)을 포함한다. 시스템의 다양한 다른 부분들은 메모리 장치에 초점을 맞추기 위해 도시되지 않는다. APU(310)는 메모리 시스템(330)과 인터페이스하기 위해 이기종 메모리 채널들을 지원하는 메모리 제어기(200)(도 2)와 같은 메모리 제어기들을 포함한다. 정규 DDRx 메모리 채널들에 더하여, APU(310)는 버스(342)를 통해 연결되는 RDIMM들(344, 346, 및 348)만을 갖는 동종 메모리 채널(340)에 더하여, 정규 레지스터된 DIMM들 또는 RDIMM들(334 및 336)와 NVDIMM-P(338) 양자를 갖는 이기종 메모리 채널(330) 상에서 NVDIMM-P(338)를 지원한다. LRDIMM들 및 UDIMM들과 같은 다른 DIMM 유형들이 일부 실시예들에서 지원된다. 이 실시예에서 이기종 메모리 채널(330)이 NVDIMM-P들 및 RDIMM들 양자에 연결되지만, 이기종 메모리 채널은 일부 실시예들에서 모든 NVDIMM-P형 DIMM들과 인터페이스할 수 있는 능력을 갖는다.
드래프트 NVDIMM-P 표준에 따르면, APU(310) 상의 메모리 제어기와 NVDIMM-P(338) 사이의 트랜잭션은 "링크" ECC에 의해 보호된다. 링크 ECC는 버스(332)를 통해 메모리 제어기와 NVDIMM 사이의 데이터 전송을 위한 데이터 무결성을 보장한다. 공지된 ECC 메커니즘들에 따르면, 이는 랜덤 또는 과도 에러에 의해 야기되는 링크 상의 데이터 손상으로부터 보호한다. 보호는 사용된 ECC 코드에 따라 변한다. ECC는 예를 들어, 다중 비트 에러 검출로 단일 비트 정정을 가능하게 할 수 있다. 정정불가능한 에러를 검출하는 것에 응답하여, 메모리 제어기는 과도 또는 랜덤 에러가 지속되지 않도록 트랜잭션을 리플레이할 수 있고, 또한 정정가능한 에러 및 정정불가능한 에러 양자를 운영 체제에 보고할 수 있다.
NVDIMM-P형 DIMM들이 이 실시예에서 설명되지만, 다른 실시예들은 본원에서의 기술들을 채용하여, 이기종 메모리 채널을 통해 다른 유형들의 저장 클래스 메모리(SCM) 모듈들과 인터페이스한다. 본원에서 사용될 때, SCM은 시스템 메모리 공간에서 어드레싱가능한 비휘발성 메모리를 갖는 메모리 모듈을 나타낸다. SCM 모듈 내의 비휘발성 메모리는 RAM으로 버퍼링될 수 있고/있거나 SCM 모듈에 탑재된 RAM과 페어링될 수 있다. SCM 메모리 어드레스 맵은 운영 체제(OS) 관점으로부터 종래의 DRAM 집단과 함께 나타난다. OS는 통상적으로 SCM 정의 어드레스 범위가 종래의 메모리와는 "상이한" 유형의 메모리임을 인식한다. 이러한 구별은 이 메모리가 보다 더 잠재적이고 영구적인 품질을 가질 수 있다는 것을 OS에 알리는 것이다. OS는 SCM 메모리를 직접 액세스 메모리 또는 파일시스템 액세스 메모리로서 맵핑할 수 있다. 직접 액세스는 OS가 물리적 어드레싱가능 메모리로서 SCM 어드레스 범위에 액세스하는 것을 의미한다. 파일 시스템 액세스는 OS가 파일 시스템의 일부로서 영구 메모리를 관리하고, 파일 기반 API를 통해 SCM에 대한 액세스를 관리하는 것을 의미한다. 궁극적으로, 요청은 보다 더 상위 레벨의 OS가 액세스를 어떻게 관리하는지에 관계없이 SCM 어드레스 범위 내의 메모리 제어기에 도달한다.
도 4는 일부 실시예들에 따른 메모리 액세스 커맨드들을 핸들링하기 위한 프로세스(400)의 흐름도이다. 프로세스(400)는 비휘발성 판독 커맨드들의 핸들링에 초점을 맞추고, 도 2의 메모리 제어기(200) 또는 다른 메모리 제어기 장치들로 구현하기에 적합하다. 프로세스(400)는 휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 복수의 메모리 액세스 요청들을 수신하는 블록(402)으로 시작된다. 블록(404)에서, 요청들을 채우기 위한 메모리 액세스 커맨드들이 스케줄링되고, 메모리 인터페이스 큐에 배치된다. 블록(404)은 통상적으로 메모리 액세스 요청들에 대한 메모리 액세스 커맨드들을 디코딩하는 것을 수반하고, 메모리 액세스 커맨드들이 스케줄링되고 아비터(238)(도 2)와 같은 아비터에 의해 메모리 인터페이스 큐에 배치되기 전에 커맨드 큐에 메모리 액세스 커맨드들을 홀드하는 것을 포함할 수 있다.
블록(406)에서, 프로세스(400)는 메모리 인터페이스 큐에 배치된 비휘발성 판독 커맨드들을 비휘발성 커맨드 큐(NV 큐)에 저장한다. 블록(408)에서, 메모리 인터페이스 큐로부터의 메모리 액세스 커맨드들이 적어도 하나의 비휘발성 듀얼 인라인 메모리 모듈(DIMM)에 결합된 이기종 메모리 채널을 통해 송신된다. 일부 실시예들에서, 메모리 채널은 또한, 적어도 하나의 휘발성 DIMM에 결합된다.
블록(410)에 도시된 바와 같이, 이기종 메모리 채널을 통해 송신된 비휘발성 판독 커맨드들에 대해, 비휘발성 DIMM은 통상적으로, 비휘발성 DIMM의 비휘발성 메모리 내, 비휘발성 DIMM의 DRAM 내, 또는 매체 제어기의 캐시 내에 있을 수 있는, 요청된 데이터를 판독하는 예측불가능한 프로세스로 인해 비결정론적 시간 기간 후에 응답할 것이다. 비결정론적 시간 기간 동안, 다른 메모리 액세스 커맨드들은 통상적으로, 메모리 인터페이스 큐로부터 발송된다. 비휘발성 DIMM에서의 매체 제어기가 요청된 데이터를 판독하는 프로세스를 완료할 때, 이는 준비 응답 신호 "RD_RDY"를 메모리 제어기에 발송한다. 프로세스는 각 비휘발성 판독에 대해 RD_RDY를 수신하기를 대기한다. 통상적으로, RD_RDY 신호는 메모리 인터페이스 큐가 메모리 액세스 커맨드들에 대한 응답들을 수신하는 서브채널과 이기종 메모리 채널의 별개 서브채널을 통해 발송 및 수신된다. 예를 들어, NVDIMM-P 메모리 채널에 있어서, RD_RDY 신호는 통상적으로 커맨드들 및 데이터가 송신되는 "CMD" 및 "DQ" 라인들과 별개인 메모리 채널의 "RSP_R" 라인을 통해 송신된다.
블록(412)에서, 응답 데이터가 비휘발성 판독 커맨드들 중 연관된 커맨드에 이용가능함을 나타내는 RD_RDY 신호가 비휘발성 DIMM으로부터 수신된다. 제어 회로 - 이 예에서 NV 버퍼(247)(도 2) - 가 RD_RDY 신호를 수신한다. 이에 응답하여, 블록(414)에서, NV 버퍼(247)는 메모리 인터페이스 큐에 SEND 커맨드를 배치한다. 이에 의해, SEND 커맨드는 비휘발성 DIMM으로의 송신을 위해 스케줄링되거나 큐잉된다.
SEND 커맨드를 수신 시, 비휘발성 DIMM 매체 제어기는 커맨드에 대한 연관된 식별자를 포함하는 비휘발성 판독 커맨드에 대해 판독되었던 응답 데이터를 다시 메모리 제어기로 송신한다. 이 실시예에서 연관된 식별자는 판독 커맨드에 대한 판독 식별자 "RID"이다. 블록(416)에서, 응답 데이터 및 연관된 식별자가 메모리 제어기에서 비휘발성 DIMM으로부터 수신된다. 응답으로, 메모리 제어기에서의 NV 버퍼는 연관된 식별자를 사용하여, 동일한 연관된 식별자를 갖는 NV 큐 내의 비휘발성 판독 커맨드를 식별한다. 블록(418)에서, 비휘발성 준비 커맨드가 생성되었던 연관된 비휘발성 판독 요청을 이행 시 응답 데이터가 제공된다. 이는 요청을 이행하고, 연관된 비휘발성 판독 커맨드는 NV 큐로부터 제거된다.
일부 실시예들에서, 프로세스(400)는 블록(404)에서, 아비터(238)(도 2)와 같은 아비터로 메모리 액세스 커맨드들을 스케줄링하는 단계를 포함한다. 일 예에서, 메모리 액세스 커맨드들을 메모리 인터페이스 큐에 배치하기 전에, 프로세스는 비휘발성 판독 커맨드들을 다른 비휘발성 판독 커맨드들 또는 휘발성 판독 커맨드들과 그룹화한다. 일부 실시예들에서, 프로세스(400)는 블록(414)에서, 메모리 인터페이스 큐에 발송 커맨드를 배치하기 전에, 발송 커맨드를 비휘발성 또는 휘발성 판독 커맨드들의 그룹과 그룹화하는 단계를 더 포함한다. SEND 커맨드의 응답 시간은 결정적이기 때문에, 메모리 인터페이스 큐(214)는 SEND 커맨드들을 휘발성 메모리에 대한 다른 커맨드들, 이를테면 정상 DDRx 판독들 및 WRITE들뿐만 아니라, 비휘발성 WIRTE들과 혼합할 수 있다.
도 5는 일부 실시예들에 따른 에러들을 핸들링하기 위한 프로세스의 흐름도이다. 도 6 및 도 7은 도 5의 프로세스를 도시하는 도해들(600 및 700)의 시퀀스이다. 도 5 내지 도 7을 참조하면, 프로세스(500)는 일반적으로 커맨드들을 저장하고 채널 및 비휘발성 DIMM이 리셋되는 복구 시퀀스를 제공하는 것을 핸들링하고, 그 후 최신 커맨드들이 에러들을 정정하기 위해 리플레이된다. 블록들이 특정 순서로 도시되지만, 이 순서는 제한적이지 않고, 블록들 중 일부는 진행 중에 병렬로 발생한다. 프로세스(500)는 메모리 제어기(200)(도 2) 또는 적합한 NV 큐 및 리플레이 큐 및 에러 검출 능력들을 갖는 다른 메모리 제어기들에 의해 수행되기에 적합하다.
블록(502)에서, 비휘발성 판독 커맨드들의 카피들이 각 비휘발성 DIMM으로의 송신을 위해 메모리 인터페이스 큐에 배치될 때 NV 큐에 저장된다. 이는 도해(600)에서, 커맨드들이 송신을 위해 선택될 때 메모리 인터페이스 큐로 가는 것을 나타내는 화살표(601) 및 비휘발성 판독 커맨드들의 카피가 NV 큐에 저장되는 것을 나타내는 화살표(602)에 의해 도시된다. 블록(504)에 도시된 바와 같이, 비휘발성 기록들, 휘발성 기록들, 비휘발성 판독들, SEND 커맨드들, 및 다른 메모리 액세스 커맨드들을 포함하여, 다른 유형들의 커맨드들은 리플레이 큐에 저장된 카피들을 갖는다. 도해(600)는 화살표(603)에서, 다른 커맨드들이 리플레이 큐에 저장되는 것을 도시한다. 블록들(502 및 504)은 진행 중에, 메모리 제어기가 메모리 액세스 요청들을 핸들링할 때 발생한다.
어떠한 에러도 검출되지 않는 동안, 프로세스(500)는 NV 큐 및 리플레이 큐에 커맨드들을 계속해서 저장하며, 여기서 커맨드들은 이것들이 이행되고 이들의 각 큐로부터 제거될 때까지 홀드된다. 프로세스(500)는 블록(506)에서, 복구 시퀀스를 필요로 하는 메모리 채널 상에 또는 DIMM들 중 하나에 에러가 있었는지를 검출하고, 복구 시퀀스를 시작하며, 검출된 에러(들)의 특성에 따라 블록(507, 508, 또는 509) 중 하나로 진행한다. 검출된 에러가 커맨드 패리티 에러인 경우, 프로세스(500)는 블록(506)으로부터 블록(507)으로 진행하며, 여기서 이는 메모리 채널을 통해 각 DIMM에서 패리티 에러들을 소거하기 위한 커맨드를 발송한다. 기록 또는 판독 ECC 에러가 검출되는 경우, 프로세스(500)는 블록(508)으로 진행하며, 여기서 이는 기록 또는 판독 ECC 상태를 소거한다. 커맨드 패리티 에러 및 기록/판독 ECC 에러 양자가 검출되는 경우, 프로세스(500)는 블록(509)으로 진행하며, 여기서 이는 채널을 통해 각 DIMM에서 패리티 에러들을 소거하기 위한 커맨드를 발송하고, 그 후 블록(510)으로 진행하며, 여기서 이는 기록 또는 판독 ECC 상태를 소거한다. 일부 실시예들에서, 블록(509)은 또한, 프로세스가 에러 유형을 결정할 수 없는 경우 블록(510)으로 진행하여, 에러 상태가 완전히 소거되는 것을 보장하기 위해 에러 유형들 양자에 대한 에러들을 소거한다. 그 후, 프로세스(500)는 블록(511)으로 진행하여, 복구 시퀀스를 계속한다.
블록(511)에서, 다목적 레지스터(Multi-Purpose Register, MPR) 모드가 현재 활성인 경우, 이는 디스에이블된다. 블록(512)에서, 메모리 제어기가 PHY의 선입선출(FIFO) 버퍼들을 리셋한다. 블록(514)에서, 모든 판독 ID(RID)들은 메모리 채널 및 채널 버퍼 상의 비휘발성 DIMM에서 리셋된다. 일부 실시예들에서, 블록(514)은 리셋 RID(RST_RID) 커맨드를 발송하고, 준비(RDY) 응답을 기다리며, SEND 커맨드를 송신하며, 모든 미해결 판독들이 리셋되었음을 확인하기 위해 결과적인 데이터 패킷을 기다리는 것을 포함하여, 비휘발성 DIMM은 계류중인 판독 커맨드들에 대한 더 이상의 RDY 응답을 발송하지 않는다.
기록 크레딧들이 필요한 경우, 이들은 블록(516)에서 요청되고 획득된다. 일부 실시예들에서, 블록(516)은 비휘발성 DIMM에 대해 얼마나 많은 기록 크레딧들이 이용가능한지를 결정하기 위해 기록 상태 커맨드를 발송하는 것, 더 많은 기록 크레딧들이 필요한지를 결정하는 것, 및 그 후, 더 많은 기록 크레딧들을 요청하고 획득하는 것을 포함한다. 요청들은 충분한 기록 크레딧들이 수신될 때까지 다수의 기록 크레딧 요청들을 통해 루핑하는 것을 포함할 수 있다.
MPR 모드가 복구 시퀀스 이전에 활성화되었다면, 이는 블록(518)에서, 필요한 커맨드들을 리플레이하기 위해 에러가 발생한 때와 동일한 상태로 비휘발성 DIMM을 두기 위해 다시 인에이블된다.
이 지점에서, 복구 시퀀스는 커맨드들을 리플레이하기 시작하기 위해 채널 및 비휘발성 DIMM의 다양한 부분들을 리셋하고 소거했다. 블록(520)에서, 프로세스(500)는 리플레이 큐로부터 선택된 커맨드들로 시작하는 커맨드들을 리플레이하기 시작한다. 일부 실시예들에서, 선택된 커맨드들은 리플레이 큐에 존재하는 임의의 휘발성 판독들, 다목적 레지스터(MPR) 관련 커맨드들, MPR 관련 커맨드들과 연관된 SEND 커맨드들, 휘발성 기록들, 및 비휘발성 기록들을 포함한다. 비휘발성 판독들과 연관된 SEND 커맨드들은 보고 및 디버그 목적들을 위해 리플레이 큐에 저장되지만, 블록(520)에서 송신되지 않는다. 리플레이 큐에 존재하는 FLUSH 커맨드들도 또한 리플레이되지 않는다.
바람직하게, 블록(506) 내지 블록(520)의 블록들은 리플레이 제어 로직(231)(도 2) 또는 유사한 리플레이 제어 회로의 제어 하에서 수행된다. 그 후, 프로세스는 비휘발성 판독 커맨드 리플레이를 완료하기 위해 NV 버퍼(247)로 제어를 넘긴다.
블록(522)에서, 프로세스(500)는 NV 큐에 저장된 모든 비휘발성 판독들을 메모리 인터페이스 큐에 발송함으로써 이들을 리플레이하는 단계를 포함한다. 바람직하게는, 이는 리플레이 큐에 저장된 모든 선택된 메모리 액세스 커맨드들을 송신한 후에 발생한다. 도 4와 관련하여 설명된 바와 같이, 비휘발성 판독들은 비결정론적 응답 시간을 가지며, 이는 비휘발성 판독에 대한 RD_RDY 응답에 후속하여 원래 송신되었던 SEND 커맨드들이 반드시 동일한 순서로 다시 송신되는 것은 아님을 의미한다. 이러한 순서화를 핸들링하기 위해, 프로세스(500)는 비휘발성 판독들과 연관된 리플레이 큐에 저장된 SEND 커맨드들을 스킵하는 단계, 및 블록(524)에서, 복구 시퀀스 동안 판독 준비(RD_RDY) 응답들이 비휘발성 DIMM으로부터 수신되는 것에 응답하여 새로운 SEND 커맨드들을 생성함으로써 비휘발성 판독들에 대해 RD-RDY 응답들이 도착할 때 이들에 응답하는 단계를 포함한다. 이 지점에서, 리플레이 시퀀스는 완료되고, 메모리 제어기는 리플레이 시퀀스를 종료하고 이의 정상 작동 상태들로 복귀한다.
이에 따라, 본원에서 설명된 바와 같은 메모리 제어기 및 데이터 처리 시스템은 비휘발성 DIMM들과 인터페이스하는 메모리 제어기의 능력을 개선한다. 더욱이, 본원에서 메모리 제어기는 메모리 인터페이스 큐가 비결정론적이고 잠재적으로 긴 레이턴시들을 갖는 비휘발성 판독 커맨드들을 이들이 이행될 때까지 홀드할 필요성을 제거함으로써 메모리 인터페이스큐의 길이를 감소시킨다.
도 2의 메모리 제어기(200) 또는 이의 임의의 부분들, 이를테면 아비터(238)는 집적 회로들을 제조하기 위해, 직접 또는 간접적으로, 프로그램에 의해 판독되고 사용될 수 있는 데이터베이스 또는 다른 데이터 구조 형태의 컴퓨터 액세스 가능 데이터 구조로 기술되거나 표현될 수있다. 예를 들어, 이러한 데이터 구조는 Verilog 또는 VHDL과 같은 상위 수준 설계 언어 (HDL)의 하드웨어 기능에 대한 동작 수준 기술 또는 레지스터 전송 수준(RTL) 기술일 수 있다. 본 기술은 합성 라이브러리로부터 게이트들의 리스트를 포함하는 네트리스트를 생성하기 위해 기술을 합성할 수 있는 합성 툴에 의해 판독될 수 있다. 네트리스트는 또한 집적 회로들을 포함하는 하드웨어의 기능을 나타내는 게이트 세트를 포함한다. 이어서 네트리스트는 마스크들에 적용될 기하학적 형상들을 기술하는 데이터 세트를 생성하기 위해 배치되고 라우팅될수 있다. 이어서 마스크들은 집적 회로들은 생산하기 위해 다양한 반도체 제조 단계에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스 가능한 저장 매체 상의 데이터베이스는 네트리스트(합성 라이브러리가 있거나 없는) 또는 필요시, 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
특정 실시예들이 설명되었지만, 이러한 실시예들에 대한 다양한 변형안들이 당업자들에게 명백할 것이다. 예를 들어, 메모리 채널 제어기(210) 및/또는 전력 엔진(250)의 내부 아키텍처는 상이한 실시예들에서 달라질 수 있다. 메모리 제어기(200)는 고대역폭 메모리(HBM), RAMbus DRAM(RDRAM) 등과 같이, NVDIMM-P 메모리 이외의 다른 유형들의 메모리에 인터페이스할 수 있다. 예시된 실시예가 별개의 DIMM들에 대응하는 메모리의 각 랭크를 나타내었지만, 다른 실시예들에서 각 DIMM은 다수의 랭크들을 지원할 수 있다. 또한, 이기종 메모리 채널이 일반적으로 지원되지만, 채널은 비휘발성 DIMM들로 완전히 채워질 수 있다. 또한, 두 개의 별개의 큐들이 복구 및 리플레이를 실현하기 위해 설명되었지만, 일부 실시예들에서 단일 특수 목적 저장 큐가 채용된다.
따라서, 첨부된 청구범위는 개시된 실시예들의 범위 내에 있는 개시된 실시예들의 모든 변형을 포함하는 것으로 의도된다.

Claims (20)

  1. 메모리 제어기로서,
    휘발성 판독들, 휘발성 기록들, 비휘발성 판독들, 및 비휘발성 기록들을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력, 및 출력을 갖고, 복수의 엔트리들을 갖는 커맨드 큐;
    상기 커맨드 큐의 출력에 결합되는 입력, 및 휘발성 듀얼 인라인 메모리 모듈(dual in-line memory module, DIMM) 및 비휘발성 DIMM에 결합되는 이기종 메모리 채널에 결합하기 위한 출력을 갖는 메모리 인터페이스 큐;
    상기 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 저장하기 위해 상기 커맨드 큐의 출력에 결합되는 비휘발성 커맨드 큐(non-volatile command queue)(NV 큐);
    상기 메모리 인터페이스 큐에 배치되는 선택된 메모리 액세스 커맨드들을 저장하기 위해 상기 커맨드 큐의 출력에 결합되는 리플레이 큐; 및
    상기 이기종 메모리 채널을 통해 수신되는 정보에 기초하여, 복구 시퀀스를 필요로 하는 에러가 발생했음을 검출하고, 상기 에러에 응답하여, 상기 리플레이 큐에 저장된 선택된 메모리 액세스 커맨드들을 송신하는 것, 및 상기 NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 포함하는 상기 복구 시퀀스를 개시하기 위한 리플레이 제어 회로를 포함하는, 메모리 제어기.
  2. 제1항에 있어서, 상기 복구 시퀀스는 상기 리플레이 큐에 저장된 모든 상기 선택된 메모리 액세스 커맨드들을 송신한 후에 상기 NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 더 포함하는 것인, 메모리 제어기.
  3. 제1항에 있어서, 상기 복구 시퀀스는 상기 DIMM들 중 하나 이상의 DIMM 상의 모든 계류 판독 식별자(RID)들의 리셋을 요청하는 것을 더 포함하는 것인, 메모리 제어기.
  4. 제1항에 있어서, 상기 선택된 커맨드들은 휘발성 판독들, 휘발성 기록들, 비휘발성 기록들, 다목적 레지스터(multi-purpose register, MPR)-관련 커맨드들, 및 MPR-관련 커맨드들과 연관된 발송 커맨드들을 포함하는 것인, 메모리 제어기.
  5. 제1항에 있어서, 상기 복구 시퀀스는 비휘발성 판독들과 연관된 상기 리플레이 큐에 저장된 발송 커맨드들을 스킵하는 것, 및 상기 복구 시퀀스 동안 상기 비휘발성 DIMM으로부터 수신된 판독 준비(RD_RDY) 응답들에 응답하여 새로운 발송 커맨드들을 생성하는 것을 더 포함하는 것인, 메모리 제어기.
  6. 제1항에 있어서, 상기 복구 시퀀스를 필요로 하는 상기 에러는 커맨드 패리티 에러, 비휘발성 DIMM과 연관된 기록 커맨드 에러 정정 코드(error correction code, ECC) 에러, 및 비휘발성 DIMM과 연관된 판독 커맨드 ECC 에러 중 하나인 것인, 메모리 제어기.
  7. 방법으로서,
    휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 복수의 메모리 액세스 요청들을 수신하는 단계;
    상기 메모리 액세스 요청들을 이행하기 위한 메모리 액세스 커맨드들을 메모리 인터페이스 큐에 배치하고, 상기 메모리 액세스 커맨드들을 상기 메모리 인터페이스 큐로부터, 휘발성 듀얼 인라인 메모리 모듈(DIMM) 및 비휘발성 DIMM에 결합된 이기종 메모리 채널로 송신하는 단계;
    상기 메모리 인터페이스 큐에 배치된 선택된 메모리 액세스 커맨드들을 리플레이 큐에 저장하는 단계; 및
    상기 메모리 인터페이스 큐에 배치된 비휘발성 판독들을 비휘발성 커맨드 큐(NV 큐)에 저장하는 단계; 및
    상기 이기종 메모리 채널을 통해 수신되는 정보에 기초하여, 복구 시퀀스를 필요로 하는 에러가 발생했음을 검출하고, 상기 에러에 응답하여, (i) 상기 리플레이 큐에 저장된 선택된 메모리 액세스 커맨드들을 송신하는 것, 및 (ii) 상기 NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 포함하는 상기 복구 시퀀스를 개시하는 단계를 포함하는, 방법.
  8. 제7항에 있어서, 상기 복구 시퀀스는 상기 리플레이 큐에 저장된 모든 상기 선택된 메모리 액세스 커맨드들을 송신한 후에 상기 NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 더 포함하는 것인, 방법.
  9. 제7항에 있어서, 상기 복구 시퀀스는 상기 DIMM들 중 하나 이상의 DIMM 상의 모든 계류 판독 식별자(RID)들의 리셋을 요청하는 것을 더 포함하는 것인, 방법.
  10. 제7항에 있어서, 상기 복구 시퀀스는 상기 DIMM들 중 하나 이상의 DIMM 상의 버퍼들에 대한 기록 크레딧들을 요청 및 획득하는 것을 더 포함하는 것인, 방법.
  11. 제7항에 있어서, 상기 선택된 커맨드들은 휘발성 판독들, 휘발성 기록들, 비휘발성 기록들, 다목적 레지스터(multi-purpose register, MPR)-관련 커맨드들, 및 MPR-관련 커맨드들과 연관된 발송 커맨드들을 포함하는 것인, 방법.
  12. 제7항에 있어서, 상기 복구 시퀀스는 비휘발성 판독들과 연관된 상기 리플레이 큐에 저장된 발송 커맨드들을 스킵하는 것, 및 상기 복구 시퀀스 동안 상기 비휘발성 DIMM으로부터 수신된 판독 준비(RD_RDY) 응답들에 응답하여 새로운 발송 커맨드들을 생성하는 것을 더 포함하는 것인, 방법.
  13. 데이터 처리 시스템으로서,
    중앙 처리 유닛;
    상기 중앙 처리 유닛에 결합된 데이터 패브릭; 및
    상기 데이터 패브릭을 통해 행해진 메모리 액세스 요청들을 이행하기 위해 상기 데이터 패브릭에 결합된 메모리 제어기를 포함하며, 상기 메모리 제어기는:
    휘발성 판독들, 휘발성 기록들, 비휘발성 판독들, 및 비휘발성 기록들을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력, 및 출력을 갖고, 복수의 엔트리들을 갖는 커맨드 큐;
    상기 커맨드 큐의 출력에 결합되는 입력, 및 휘발성 듀얼 인라인 메모리 모듈(DIMM) 및 비휘발성 DIMM에 결합되는 이기종 메모리 채널에 결합하기 위한 출력을 갖는 메모리 인터페이스 큐;
    상기 메모리 인터페이스 큐에 배치되는 비휘발성 판독들을 저장하기 위해 상기 커맨드 큐의 출력에 결합되는 비휘발성 커맨드 큐(NV 큐);
    상기 메모리 인터페이스 큐에 배치되는 선택된 메모리 액세스 커맨드들을 저장하기 위해 상기 커맨드 큐의 출력에 결합되는 리플레이 큐; 및
    상기 이기종 메모리 채널을 통해 수신되는 정보에 기초하여, 복구 시퀀스를 필요로 하는 에러가 발생했음을 검출하고, 상기 에러에 응답하여, 상기 리플레이 큐에 저장된 선택된 메모리 액세스 커맨드들을 송신하며, 상기 NV 큐에 저장된 비휘발성 판독들을 송신하기 위한 리플레이 제어 회로를 포함하는, 데이터 처리 시스템.
  14. 제13항에 있어서, 상기 복구 시퀀스는 상기 리플레이 큐에 저장된 모든 상기 선택된 메모리 액세스 커맨드들을 송신한 후에 상기 NV 큐에 저장된 비휘발성 판독들을 송신하는 것을 더 포함하는 것인, 데이터 처리 시스템.
  15. 제13항에 있어서, 상기 복구 시퀀스는 상기 DIMM들 중 하나 이상의 DIMM 상의 모든 계류 판독 식별자(RID)들의 리셋을 요청하는 것을 더 포함하는 것인, 데이터 처리 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020227025476A 2019-12-30 2020-12-10 비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이 KR102542493B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/730,092 2019-12-30
US16/730,092 US11137941B2 (en) 2019-12-30 2019-12-30 Command replay for non-volatile dual inline memory modules
PCT/US2020/064188 WO2021138014A1 (en) 2019-12-30 2020-12-10 Command replay for non-volatile dual inline memory modules

Publications (2)

Publication Number Publication Date
KR20220113818A KR20220113818A (ko) 2022-08-16
KR102542493B1 true KR102542493B1 (ko) 2023-06-13

Family

ID=76546230

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227025476A KR102542493B1 (ko) 2019-12-30 2020-12-10 비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이

Country Status (6)

Country Link
US (1) US11137941B2 (ko)
EP (1) EP4085339A4 (ko)
JP (1) JP7195484B1 (ko)
KR (1) KR102542493B1 (ko)
CN (1) CN114902197B (ko)
WO (1) WO2021138014A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11531601B2 (en) * 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules
US11099786B2 (en) * 2019-12-30 2021-08-24 Advanced Micro Devices, Inc. Signaling for heterogeneous memory systems
US11379388B1 (en) * 2021-03-31 2022-07-05 Advanced Micro Devices, Inc. Credit scheme for multi-queue memory controllers

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160139807A1 (en) * 2013-07-09 2016-05-19 Hewlett-Packard Development Company, L.P. Write flow control for memory modules that include or interface with non-compliant memory technologies

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6640313B1 (en) * 1999-12-21 2003-10-28 Intel Corporation Microprocessor with high-reliability operating mode
US7047374B2 (en) 2002-02-25 2006-05-16 Intel Corporation Memory read/write reordering
US7082500B2 (en) * 2003-02-18 2006-07-25 Cray, Inc. Optimized high bandwidth cache coherence mechanism
US7587625B2 (en) * 2006-02-16 2009-09-08 Intel Corporation Memory replay mechanism
US20080082750A1 (en) * 2006-09-28 2008-04-03 Okin Kenneth A Methods of communicating to, memory modules in a memory channel
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8185800B2 (en) 2008-01-31 2012-05-22 International Business Machines Corporation System for error control coding for memories of different types and associated methods
US8543863B2 (en) * 2009-11-18 2013-09-24 Microsoft Corporation Efficiency of hardware memory access using dynamically replicated memory
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
JP2013137624A (ja) * 2011-12-28 2013-07-11 Toshiba Corp データ記憶装置、メモリ制御装置及び方法
US9311251B2 (en) * 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
KR20150105323A (ko) * 2013-01-08 2015-09-16 바이올린 메모리 인코포레이티드 데이터 스토리지 방법 및 시스템
US9934194B2 (en) 2013-12-20 2018-04-03 Rambus Inc. Memory packet, data structure and hierarchy within a memory appliance for accessing memory
US9645829B2 (en) 2014-06-30 2017-05-09 Intel Corporation Techniques to communicate with a controller for a non-volatile dual in-line memory module
US10048878B2 (en) 2015-06-08 2018-08-14 Samsung Electronics Co., Ltd. Nonvolatile memory module and storage system having the same
KR102461460B1 (ko) * 2015-06-08 2022-11-02 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템 및 그것의 pvt 보상 방법
US9817610B1 (en) 2015-12-08 2017-11-14 Inphi Corporation Hybrid memory systems for autonomous non-volatile memory save and restore operations
US10621119B2 (en) * 2016-03-03 2020-04-14 Samsung Electronics Co., Ltd. Asynchronous communication protocol compatible with synchronous DDR protocol
US9576637B1 (en) * 2016-05-25 2017-02-21 Advanced Micro Devices, Inc. Fine granularity refresh
US11675659B2 (en) * 2016-07-15 2023-06-13 Advanced Micro Devices, Inc. DDR memory error recovery
EP3270295A1 (en) * 2016-07-15 2018-01-17 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
CN111448543B (zh) * 2017-12-07 2021-10-01 华为技术有限公司 内存访问技术及计算机系统
US10296230B1 (en) * 2017-12-22 2019-05-21 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies
US11061787B2 (en) * 2019-04-23 2021-07-13 Micron Technology, Inc. Custom error recovery in selected regions of a data storage device
US11200106B2 (en) * 2019-08-12 2021-12-14 Advanced Micro Devices, Inc. Data integrity for persistent memory systems and the like

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160139807A1 (en) * 2013-07-09 2016-05-19 Hewlett-Packard Development Company, L.P. Write flow control for memory modules that include or interface with non-compliant memory technologies

Also Published As

Publication number Publication date
WO2021138014A1 (en) 2021-07-08
US11137941B2 (en) 2021-10-05
US20210200468A1 (en) 2021-07-01
KR20220113818A (ko) 2022-08-16
CN114902197B (zh) 2023-06-13
EP4085339A4 (en) 2023-07-12
JP7195484B1 (ja) 2022-12-23
EP4085339A1 (en) 2022-11-09
CN114902197A (zh) 2022-08-12
JP2023502546A (ja) 2023-01-24

Similar Documents

Publication Publication Date Title
EP3270290B1 (en) Ddr memory error recovery
KR102542493B1 (ko) 비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이
KR102478527B1 (ko) 이기종 메모리 시스템용 시그널링
US11531601B2 (en) Error recovery for non-volatile memory modules
US11561862B2 (en) Refresh management for DRAM
KR102615693B1 (ko) Dram을 위한 리프레시 관리
JP2023508117A (ja) 不揮発性メモリモジュールのエラー報告
WO2022271404A1 (en) Memory controller with hybrid dram/persistent memory channel arbitration
US11995008B2 (en) Memory controller with hybrid DRAM/persistent memory channel arbitration

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant