KR20220116033A - 비휘발성 메모리 모듈에 대한 오류 복구 - Google Patents
비휘발성 메모리 모듈에 대한 오류 복구 Download PDFInfo
- Publication number
- KR20220116033A KR20220116033A KR1020227025293A KR20227025293A KR20220116033A KR 20220116033 A KR20220116033 A KR 20220116033A KR 1020227025293 A KR1020227025293 A KR 1020227025293A KR 20227025293 A KR20227025293 A KR 20227025293A KR 20220116033 A KR20220116033 A KR 20220116033A
- Authority
- KR
- South Korea
- Prior art keywords
- volatile
- memory
- queue
- command
- commands
- Prior art date
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 41
- 230000004044 response Effects 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 25
- 239000004744 fabric Substances 0.000 claims description 20
- 239000000872 buffer Substances 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000012937 correction Methods 0.000 claims description 6
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 13
- 230000002457 bidirectional effect Effects 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
메모리 제어기는 커맨드 큐, 메모리 인터페이스 큐, 적어도 하나의 스토리지 큐, 및 리플레이 제어 회로를 포함한다. 커맨드 큐는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력을 갖는다. 메모리 인터페이스 큐는 커맨드 큐로부터 선택된 커맨드들을 수신하고 적어도 하나의 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 결합된 이기종 메모리 채널에 결합한다. 적어도 하나의 스토리지 큐는 메모리 인터페이스 큐에 배치된 메모리 액세스 커맨드들을 저장한다. 리플레이 제어 회로는 복구 시퀀스를 필요로 하는 오류가 발생했음을 감지하고 오류에 응답하여 복구 시퀀스를 개시한다. 복구 시퀀스에서, 리플레이 제어 회로는 모든 계류 중인 휘발성 판독, 휘발성 기록 및 비휘발성 기록과 별도로 비휘발성 판독 커맨드들을 함께 그룹화하여 적어도 하나의 스토리지 큐로부터 선택된 메모리 액세스 커맨드들을 송신한다.
Description
컴퓨터 시스템은 일반적으로 메인 메모리용으로 저렴하고 밀도가 높은 동적 랜덤 액세스 메모리 (DRAM) 칩을 사용한다. 오늘날 판매되는 대부분의 DRAM 칩은 JEDEC(Joint Electron Devices Engineering Council)에서 공표한 다양한 DDR(Double Data Rate) DRAM 표준과 호환된다. DDR 메모리 제어기들은 공개된 DDR 표준에 따라 DDR DRAM 과 다양한 메모리 액세스 에이전트들 사이의 인터페이스를 관리하는 데 사용된다.
영구 스토리지 디바이스가 있는 비휘발성 듀얼 인라인 메모리 모듈("NVDIMM-P")은 표준 DDR DIMM 대신 사용할 수 있지만 영구 메모리를 포함하는 스토리지 클래스 메모리이다. DRAM과 같은 휘발성 메모리를 지원하는 메모리 채널과 함께 영구 또는 "비휘발성" 메모리를 사용하면 몇 가지 새로운 문제가 발생한다. 비휘발성 DIMM의 비휘발성 메모리를 판독하는 것은 DRAM을 판독하는 것보다 느리다. 비휘발성 메모리 판독은 결정적이며 알려진 시간에 더 빨리 완료되는 DRAM 판독과 달리 일반적으로 비결정적 시간에 완료된다. 이와 같은 차이점들을 다루는 것은 비휘발성 DIMM과 상호 작용할 수 있는 메모리 제어기들을 설계할 때 다양한 과제를 제시한다.
도 1은 선행 기술에 알려진 가속 처리 장치(APU)와 메모리 시스템을 블록도 형태로 도시하고;
도 2는 일부 실시예들에 따른 도면 1의 것과 같은 APU에서 사용하기에 적합한 메모리 제어기의 블록도 형태로 도시하고;
도 3은 일부 실시예들에 따른 데이터 처리 시스템의 블록도 형태를 도시하고;
도 4는 일부 실시예들에 따른 메모리 액세스 요청들을 처리하기 위한 프로세스의 흐름도이고;
도 5는 일부 실시예들에 따른 오류들을 처리하기 위한 프로세스의 흐름도이고;
도 6은 도 5의 프로세스를 다이어그램 형태로 도시하며; 및
도 7은 도 5의 프로세스의 추가 부분을 다이어그램 형태로 도시한다.
이하의 설명에서, 상이한 도면들에서 동일한 참조 번호들의 사용은 유사하거나 동일한 항목들을 나타낸다. 달리 명시되지 않는 한, "결합된"이라는 단어 및 관련 동사 형태들은 당업계에 알려진 수단들에 의한 직접 연결 및 간접 전기 연결 모두를 포함하며, 달리 명시되지 않는 한 직접 연결에 대한 설명은 적절한 형태들의 간접 전기 연결들을 사용하는 대체 실시예도 암시한다.
도 2는 일부 실시예들에 따른 도면 1의 것과 같은 APU에서 사용하기에 적합한 메모리 제어기의 블록도 형태로 도시하고;
도 3은 일부 실시예들에 따른 데이터 처리 시스템의 블록도 형태를 도시하고;
도 4는 일부 실시예들에 따른 메모리 액세스 요청들을 처리하기 위한 프로세스의 흐름도이고;
도 5는 일부 실시예들에 따른 오류들을 처리하기 위한 프로세스의 흐름도이고;
도 6은 도 5의 프로세스를 다이어그램 형태로 도시하며; 및
도 7은 도 5의 프로세스의 추가 부분을 다이어그램 형태로 도시한다.
이하의 설명에서, 상이한 도면들에서 동일한 참조 번호들의 사용은 유사하거나 동일한 항목들을 나타낸다. 달리 명시되지 않는 한, "결합된"이라는 단어 및 관련 동사 형태들은 당업계에 알려진 수단들에 의한 직접 연결 및 간접 전기 연결 모두를 포함하며, 달리 명시되지 않는 한 직접 연결에 대한 설명은 적절한 형태들의 간접 전기 연결들을 사용하는 대체 실시예도 암시한다.
메모리 제어기는 커맨드 큐, 메모리 인터페이스 큐, 적어도 하나의 저장 큐, 및 리플레이 제어 회로를 포함한다. 커맨드 큐는 휘발성 판독, 휘발성 기록, 비휘발성 판독 및 비휘발성 기록을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력, 및 출력을 가지며, 복수의 엔트리들을 갖는다. 메모리 인터페이스 큐는 커맨드 큐로부터 선택된 커맨드들을 수신하기 위한 입력, 및 적어도 하나의 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 결합된 이기종 메모리 채널에 결합하기 위한 출력을 갖는다. 적어도 하나의 스토리지 큐는 메모리 인터페이스 큐에 배치된 메모리 액세스 커맨드들을 저장한다. 리플레이 제어 회로는 복구 시퀀스를 필요로 하는 오류가 발생했음을 감지하고 응답으로 복구 시퀀스를 개시한다. 복구 시퀀스에서, 리플레이 제어 회로는 모든 계류 중인 휘발성 판독, 휘발성 기록 및 비휘발성 기록과 별도로 비휘발성 판독 커맨드들을 함께 그룹화하여 적어도 하나의 스토리지 큐로부터 선택된 메모리 액세스 커맨드들을 송신한다.
방법은 메모리 시스템의 오류에 응답한다. 방법은 휘발성 메모리 판독, 휘발성 메모리 기록, 비휘발성 메모리 판독, 및 비휘발성 메모리 기록을 포함하는 복수의 메모리 액세스 요청들을 수신하는 단계를 포함한다. 메모리 액세스 요청들을 이행하기 위한 메모리 액세스 커맨드들은 메모리 인터페이스 큐에 배치된다. 메모리 액세스 커맨드들은 메모리 인터페이스 큐에서 적어도 하나의 비휘발성 SCM 모듈에 결합된 이기종 메모리 채널로 송신된다. 메모리 인터페이스 큐에 배치된 메모리 액세스 커맨드들은 적어도 하나의 스토리지 큐에 저장된다. 이 방법은 복구 시퀀스가 필요한 오류가 발생했음을 감지하고 이에 대한 응답으로 모든 계류 중인 휘발성 판독, 휘발성 기록, 및 비휘발성 기록과 별도로 모든 비휘발성 판독들의 송신을 그룹화함으로써 적어도 하나의 스토리지 큐로부터 선택된 메모리 액세스 커맨드들을 송신하는 것을 포함하는 복구 시퀀스를 수행한다.
데이터 처리 시스템은 중앙 처리 장치, 중앙 처리 장치에 결합된 데이터 패브릭, 및 중앙 처리 장치로부터의 메모리 액세스 요청들을 이행하기 위한 데이터 패브릭에 결합된 메모리 제어기를 포함한다. 메모리 제어기는 커맨드 큐, 메모리 인터페이스 큐, 적어도 하나의 스토리지 큐, 및 리플레이 제어 회로를 포함한다. 커맨드 큐는 휘발성 판독, 휘발성 기록, 비휘발성 판독 및 비휘발성 기록을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력, 및 출력을 가지며, 복수의 엔트리들을 갖는다. 메모리 인터페이스 큐는 커맨드 큐로부터 선택된 커맨드들을 수신하기 위한 입력, 및 적어도 하나의 비휘발성 SCM 모듈에 결합된 이기종 메모리 채널에 결합하기 위한 출력을 갖는다. 적어도 하나의 스토리지 큐는 메모리 인터페이스 큐에 배치된 메모리 액세스 커맨드들을 저장한다. 리플레이 제어 회로는 복구 시퀀스를 필요로 하는 오류가 발생했음을 감지하고 응답으로 복구 시퀀스를 개시한다. 복구 시퀀스에서, 리플레이 제어 회로는 모든 계류 중인 휘발성 판독, 휘발성 기록 및 비휘발성 기록과 별도로 비휘발성 판독 커맨드들을 함께 그룹화하여 적어도 하나의 스토리지 큐로부터 선택된 메모리 액세스 커맨드들을 송신한다.
도 1은 당업계에 알려진 가속 처리 장치(APU)(100) 및 메모리 시스템(130)을 블록도 형태로 도시한다. APU(100)는 호스트 데이터 처리 시스템에서 프로세서로 사용하기에 적합한 집적 회로이며 일반적으로 중앙 처리 장치(CPU) 코어 콤플렉스(110), 그래픽 코어(120), 디스플레이 엔진 세트(122), 메모리 관리 허브(140), 데이터 패브릭(125), 주변 제어기 세트(160), 주변 버스 제어기 세트(170), 및 시스템 관리 유닛(SMU)(180)을 포함한다.
CPU 코어 콤플렉스(110)는 CPU 코어(112) 및 CPU 코어(114)를 포함한다. 이 예에서, CPU 코어 콤플렉스(110)는 2개의 CPU 코어들을 포함하지만, 다른 실시예에서 CPU 코어 콤플렉스(110)는 임의의 수의 CPU 코어들을 포함할 수 있다. CPU 코어들(112, 114) 각각은 제어 패브릭을 형성하는 시스템 관리 네트워크(SMN) 및 데이터 패브릭(125)에 양방향으로 연결되며, 데이터 패브릭(125)에 메모리 액세스 요청들을 제공할 수 있다. CPU 코어들(112, 114) 각각은 단일 코어이거나, 캐시들과 같은 특정 자원을 공유하는 둘 이상의 단일 코어들을 갖는 코어 콤플렉스일 수 있다.
그래픽 코어(120)는 버텍스 처리, 프래그먼트 처리, 쉐이딩, 텍스처 블렌딩 등과 같은 그래픽 동작들을 고도로 통합되고 병렬 방식으로 수행할 수 있는 고성능 그래픽 처리 유닛(GPU)이다. 그래픽 코어(120)는 SMN 및 데이터 패브릭(125)에 양방향으로 연결되고 데이터 패브릭(125)에 메모리 액세스 요청들을 제공할 수 있다. 이와 관련하여, APU(100)는 CPU 코어 콤플렉스(110)와 그래픽 코어(120)가 동일한 메모리 공간을 공유하는 통합 메모리 아키텍처 또는 그래픽 코어(120)가 CPU 코어 콤플렉스(110)가 액세스할 수 없는 프라이빗 그래픽 메모리를 사용하는 동안 CPU 코어 콤플렉스(110)와 그래픽 코어(120)가 메모리 공간의 일부를 공유하는 메모리 아키텍처를 지원한다.
디스플레이 엔진들(122)은 모니터에 표시하기 위해 그래픽 코어(120)에 의해 생성된 오브젝트를 렌더링 및 래스터화한다. 그래픽 코어(120) 및 디스플레이 엔진들(122)은 메모리 시스템(130) 내의 적절한 어드레스들로의 균일한 변환을 위해 공통 메모리 관리 허브(140)에 양방향으로 연결되고, 메모리 관리 허브(140)는 이러한 메모리 액세스들을 생성하고 메모리 시스템으로부터 반환된 판독 데이터를 수신하기 위해 데이터 패브릭(125)에 양방향으로 연결된다.
데이터 패브릭(125)은 메모리 액세스 에이전트와 메모리 관리 허브(140) 사이에서 메모리 액세스 요청들 및 메모리 응답을 라우팅하기 위한 크로스바 스위치를 포함한다. 이는 시스템 구성에 따라 메모리 액세스 대상들을 결정하기 위해 시스템 기본 입/출력 시스템(BIOS)에 의해 정의된 시스템 메모리 맵과 각 가상 연결에 대한 버퍼들도 포함한다.
주변 제어기들(160)은 USB(Universal Serial Bus) 제어기(162) 및 SATA(Serial Advanced Technology Attachment) 인터페이스 제어기(164)를 포함하며, 이들 각각은 시스템 허브(166) 및 SMN 버스에 양방향으로 연결된다. 이 두 제어기들은 APU(100)에 의해 사용될 수 있는 주변 제어기들의 예시일 뿐이다.
주변 버스 제어기들(170)은 시스템 제어기 또는 "사우스브리지"(SB)(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), 플래시 전기적으로 소거 가능한 프로그래밍 가능한 ROM(EEPROM)과 같은 임의의 다양한 비휘발성 메모리 유형들일 수 있는 시스템 BIOS 메모리(미도시) 또는 시스템 데이터 드라이브에 저장된다. 일반적으로 BIOS 메모리는 PCIe 버스에 의해 액세스되고 시스템 데이터 드라이브는 SATA 인터페이스를 통해 액세스 된다.
SMU(180)는 APU(100)의 리소스들의 동작을 제어하고 그들 사이의 통신을 동기화하는 로컬 제어기이다. SMU(180)은 APU(100)에서 다양한 프로세서들의 파워 업 시퀀싱(power-up sequencing)을 관리하고 재설정, 활성화 및 기타 신호들을 통해 여러 오프칩 디바이스(off-chip device)들을 제어한다. 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)는 메모리 채널 제어기(143)를 직렬 존재 검출 링크(SDP)를 통해 데이터 패브릭(125)에 양방향으로 연결한다. 물리적 인터페이스(147)는 메모리 채널 제어기(143)를 PHY(151)에 양방향으로 연결하고 DDR PHY 인터페이스(DFI) 사양을 따른다. 메모리 채널(142)은 호스트 인터페이스(146), 메모리 채널 제어기(144), 및 물리적 인터페이스(148)를 포함한다. 호스트 인터페이스(146)는 메모리 채널 제어기(144)를 다른 SDP를 통해 데이터 패브릭(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)는 메모리 채널 제어기(143)를 직렬 존재 검출 링크(SDP)를 통해 데이터 패브릭(125)에 양방향으로 연결한다. 물리적 인터페이스(147)는 메모리 채널 제어기(143)를 PHY(151)에 양방향으로 연결하고 DDR PHY 인터페이스(DFI) 사양을 따른다. 메모리 채널(142)은 호스트 인터페이스(146), 메모리 채널 제어기(144), 및 물리적 인터페이스(148)를 포함한다. 호스트 인터페이스(146)는 메모리 채널 제어기(144)를 다른 SDP를 통해 데이터 패브릭(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)은 DDRx 버스(132)에 연결된 듀얼 인라인 메모리 모듈(DIMM)들의 세트를 포함하며, 이는 이 예에서는 개별 랭크들에 대응하는 대표적인 DIMM들(134, 136, 138)을 포함한다. 마찬가지로, 메모리 채널(133)은 DDRx 버스(129)에 연결된 DIMM들의 세트를 포함하며, 이는 대표적인 DIMM들(135, 137, 139)을 포함한다.
APU(100)는 호스트 데이터 처리 시스템의 중앙 처리 장치(CPU)로 작동하며 최신 컴퓨터 시스템에 유용한 다양한 버스 및 인터페이스를 제공한다. 이러한 인터페이스는 2개의 DDRx(Double Data Rate) 메모리 채널들, PCIe 링크 연결을 위한 PCIe 루트 콤플렉스, USB 네트워크 연결을 위한 USB 제어기 및 SATA 대용량 스토리지 디바이스에 대한 인터페이스를 포함한다.
APU(100)는 또한 다양한 시스템 모니터링 및 절전 기능을 구현한다. 특히 하나의 시스템 모니터링 기능은 열(thermal) 모니터링이다. 예를 들어, APU(100)가 뜨거워지면 SMU(180)는 CPU 코어들(112, 114) 및/또는 그래픽 코어(120)의 주파수와 전압을 감소시킬 수 있다. APU(100)가 너무 뜨거워지면, 이는 완전히 종료될 수 있다. 열 이벤트는 또한 SMN 버스를 통해 SMU(180)에 의해 외부 센서로부터 수신될 수 있으며, SMU(180)는 응답으로 클록 주파수 및/또는 전력 공급 전압을 감소시킬 수 있다.
도 2는 도 1의 것과 같은 APU에서 사용하기에 적합한 메모리 제어기(200)의 블록도를 도시한다. 메모리 제어기(200)는 일반적으로 메모리 채널 제어기(210) 및 전력 제어기(250)를 포함한다. 메모리 채널 제어기(210)는 일반적으로 인터페이스(212), 메모리 인터페이스 큐(214)("메모리 인터페이스 큐", "큐"), 커맨드 큐(220), 어드레스 생성기(222), 콘텐츠 어드레싱 가능 메모리(CAM)(224), 리플레이 큐(230)를 포함하는 리플레이 제어 로직(231), 리프레시 로직 블록(232), 타이밍 블록(234), 페이지 테이블(236), 아비터(238), 오류 정정 코드(ECC) 체크 회로(242), ECC 생성 블록(244), 데이터 버퍼(246), 비휘발성(NV) 버퍼(247), 및 NV 큐(248)를 포함한다.
인터페이스(212)는 외부 버스를 통해 데이터 패브릭(125)에 대한 제1 양방향 연결을 갖고 출력을 갖는다. 메모리 제어기(200)에서, 이 외부 버스는 "AXI4"로 알려진 영국 캠브리지의 PLC, ARM Holdings에 의해 지정된 고급 확장 가능한 인터페이스 버전 4와 호환되지만, 다른 실시예에서 다른 유형의 인터페이스일 수 있다. 인터페이스(212)는 FCLK(또는 MEMCLK) 도메인으로 알려진 제1 클록 도메인으로부터의 메모리 액세스 요청을 UCLK 도메인으로 알려진 메모리 제어기(200) 내부의 제2 클록 도메인으로 변환한다. 유사하게, 메모리 인터페이스 큐(214)는 UCLK 도메인으로부터 DFI 인터페이스와 연관된 DFICLK 도메인으로의 메모리 액세스를 제공한다.
어드레스 생성기(222)는 AXI4 버스를 통해 데이터 패브릭(125)으로부터 수신된 메모리 액세스 요청들의 어드레스들을 디코딩한다. 메모리 액세스 요청들은 정규화된 형식(normalized format)으로 표시된 물리적 어드레스 공간의 액세스 어드레스들을 포함한다. 어드레스 생성기(222)는 정규화된 어드레스들을 메모리 시스템(130)의 실제 메모리 디바이스들을 어드레싱하고 관련 액세스들을 효율적으로 스케줄링하는 데 사용될 수 있는 형식으로 변환한다. 이 형식은 메모리 액세스 요청을 특정 랭크, 로우 어드레스, 컬럼 어드레스, 뱅크 어드레스 및 뱅크 그룹과 연관시키는 영역 식별자(region identifier)를 포함한다. 시작 시, 시스템 BIOS는 메모리 시스템(130)의 메모리 장치들에 질의하여 크기 및 구성을 결정하고 어드레스 생성기(222)와 연관된 구성 레지스터들의 세트를 프로그래밍한다. 어드레스 생성기(222)는 정규화된 어드레스들을 적절한 형식으로 변환하기 위해 구성 레지스터들에 저장된 구성을 사용한다. 어드레스 생성기(222)는 NVDIMM-P 메모리를 포함하는 메모리의 어드레스 범위를 디코딩하고 메모리 액세스 요청이 NVDIMM-P에 대한 요청인지 여부를 나타내는 디코딩된 신호를 커맨드 큐(220)에 저장한다. 아비터(238)는 다른 요청들에 대해 적절한 우선순위로 NVDIMM-P 요청들의 우선순위를 지정할 수 있다. 커맨드 큐(220)는 CPU 코어들(112, 114) 및 그래픽 코어(120)와 같은 APU(100)의 메모리 액세스 에이전트들로부터 수신된 메모리 액세스 요청들의 큐이다. 커맨드 큐(220)는 어드레스 생성기(222)에 의해 디코딩된 어드레스 필드들 및 아비터(238)가 액세스 유형 및 서비스 품질(QoS) 식별자를 포함하는 메모리 액세스를 효율적으로 선택할 수 있게 하는 다른 어드레스 정보를 저장한다. CAM(224)은 WAW(write after write) 및 RAW(read after write) 오더링 규칙(ordering rule)들과 같은 오더링 규칙들을 시행하기 위한 정보를 포함한다.
오류 정정 코드(ECC) 생성 블록(244)은 NVDIMM-P에 발송될 기록 데이터의 ECC를 결정한다. ECC 체크 회로(242)는 수신된 ECC를 들어오는(incoming) ECC에 대해 체크한다.
리플레이 큐(230)는 어드레스 및 커맨드 패리티 응답과 같은 응답을 기다리고 있는 아비터(238)에 의해 픽된(picked) 선택된 메모리 액세스들을 저장하기 위한 임시 큐다. 리플레이 제어 로직(231)은 ECC 체크 회로(242)에 액세스하여 반환된 ECC가 정확한지 또는 오류를 나타내는지를 결정한다. 리플레이 제어 로직(231)은 이러한 사이클들 중 하나의 패리티 또는 ECC 오류의 경우 액세스들이 리플레이되는 리플레이 시퀀스를 개시하고 제어한다. 리플레이된 커맨드들은 메모리 인터페이스 큐(214)에 배치된다.
리프레시 로직(232)은 메모리 액세스 에이전트들로부터 수신된 일반 판독 및 기록 메모리 액세스 요청과 별도로 생성된 다양한 전력차단(powerdown), 리프레시 및 종단 저항(ZQ) 교정 사이클들을 위한 상태 머신을 포함한다. 예를 들어, 메모리 랭크가 프리차지 전력차단 상태인 경우, 이는 리프레시 사이클을 실행하기 위해 주기적으로 깨어나야 한다. 리프레시 로직(232)은 DRAM 칩에 있는 메모리 셀들의 스토리지 커패시터의 전하 누출에 의해 야기되는 데이터 오류를 방지하기 위해 리프레시 커맨드들을 주기적으로 생성한다. 또한, 리프레시 로직(232)은 시스템의 열 변화로 인한 온-다이(on-die) 종단 저항의 불일치를 방지하기 위해 ZQ를 주기적으로 교정한다.
아비터(238)는 커맨드 큐(220)에 양방향으로 연결되며 메모리 채널 제어기(210)의 핵심이다. 이는 메모리 버스 사용을 개선하기 위해 액세스들을 지능적으로 스케줄링함으로써 효율성을 향상시킨다. 아비터(238)는 타이밍 블록(234)을 사용하여 커맨드 큐(220)의 특정 액세스들이 DRAM 타이밍 파라미터에 기초하여 발행에 적합한지 여부를 결정함으로써 적절한 타이밍 관계를 시행한다. 예를 들어, 각 DRAM는, "tRC"로 알려진, 활성화 커맨드들 사이에 지정된 최소 시간을 갖는다. 타이밍 블록(234)은 JEDEC 사양에 지정된 이 타이밍 파라미터와 다른 타이밍 파라미터에 기초하여 적격성(eligibility)을 결정하는 카운터들의 세트를 유지하고, 리플레이 큐(230)에 양방향으로 연결된다. 페이지 테이블(236)은 아비터(238)에 대한 메모리 채널의 각 뱅크 및 랭크의 활성 페이지들에 대한 상태 정보를 유지하고, 리플레이 큐(230)에 양방향으로 연결된다.
NV 버퍼(247)는 리플레이 시퀀스에서 사용하고 NV 판독 응답을 관리하기 위해 NV 큐(248)에 NV 판독 커맨드들을 저장한다. NV 버퍼(247)는 아래에서 더 설명되는 바와 같이 RD_RDY 및 SEND 커맨드들을 핸들링하기 위해 메모리 인터페이스 큐(214)에 양방향으로 연결된다.
인터페이스(212)로부터 수신된 기록 메모리 액세스 요청들에 응답하여, ECC 생성 블록(244)은 기록 데이터에 따라 ECC를 계산한다. 데이터 버퍼(246)는 수신된 메모리 액세스 요청들에 대한 ECC 및 기록 데이터를 저장한다. 이는 아비터(238)가 메모리 채널에 대한 디스패치(dispatch)를 위해 대응하는 기록 액세스를 선택할 때 결합된 기록 데이터/ECC를 메모리 인터페이스 큐(214)로 출력한다.
전력 제어기(250)는 일반적으로 고급 확장 가능한 인터페이스, 버전 1(AXI), APB 인터페이스(254), 및 전력 엔진(260)에 대한 인터페이스(252)를 포함한다. 인터페이스(252)는 도 2에 별도로 도시된 "이벤트_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 인터페이스 최대 판독 레이턴시(MRL) 트레이닝 및 루프백 테스트와 같은 목적을 위해 메모리 또는 I/O 디바이스에 대한 연속 메모리 액세스 스트림을 제공한다.
메모리 채널 제어기(210)는 연관된 메모리 채널로의 디스패치를 위해 메모리 액세스를 선택하도록 허용하는 회로부를 포함한다. 원하는 아비트레이션(arbitration) 결정을 내리기 위해, 어드레스 생성기(222)는 어드레스 정보를 메모리 시스템의 랭크, 로우 어드레스, 컬럼 어드레스, 뱅크 어드레스 및 뱅크 그룹을 포함하는 사전 디코딩된 정보로 디코딩하고, 커맨드 큐(220)는 사전 디코딩된 정보를 저장한다. 구성 레지스터(262)는 구성 정보를 저장하여 어드레스 생성기(222)가 수신된 어드레스 정보를 디코딩하는 방법을 결정한다. 아비터(238)는 디코딩된 어드레스 정보, 타이밍 블록(234)에 의해 표시된 타이밍 적격성 정보, 및 페이지 테이블(236)에 의해 표시된 활성 페이지 정보를 사용하여 서비스 품질(QoS) 요구 사항과 같은 다른 기준을 준수하면서 메모리 액세스를 효율적으로 스케줄링한다. 예를 들어, 아비터(238)는 메모리 페이지를 변경하는 데 필요한 프리차지 및 활성화 커맨드의 오버헤드를 피하기 위해 열린 페이지에 대한 액세스를 위한 기본 설정을 구현하고 한 뱅크에 대한 오버헤드 액세스들은 다른 뱅크에 대한 판독 및 기록 액세스들과 인터리빙하여 숨긴다. 특히 정상 작동 중에는 아비터(238)는 일반적으로 다른 페이지를 선택하기 전에 프리차징되어야 할 때까지 페이지들을 다른 뱅크에 대해 열어 둔다.
도 3은 일부 실시예에 따른 데이터 처리 시스템(300)의 블록도를 도시한다. 데이터 처리 시스템(300)은 APU(310) 및 메모리 시스템(330)을 포함한다. 시스템의 다양한 다른 부분들은 메모리 배열에 포커싱하기 위해 도시되지 않는다. APU(310)는 메모리 시스템(330)과 인터페이스하기 위해 이기종(heterogeneous) 메모리 채널들을 지원하는 메모리 제어기(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 표준 초안에 따르면, NVDIMM-P(338) 및 APU(310)의 메모리 제어기와 사이의 트랜잭션(transaction)은 "링크(Link)" ECC에 의해 보호된다. 링크 ECC는 버스(332)를 통해 메모리 제어기와 NVDIMM 사이의 데이터 전송을 위한 데이터 무결성을 보장한다. 알려진 ECC 메커니즘에 따라, 이는 무작위(random) 또는 일시적 오류로 인한 링크의 데이터 손상으로부터 보호한다. 보호는 사용된 ECC 코드에 따라 다르다. ECC는 예를 들어 다중 비트 오류 감지로 단일 비트 정정을 허용할 수 있다. 정정할 수 없는 오류를 감지한 경우, 메모리 제어기는 트랜잭션을 리플레이하여 일시적 또는 무작위 오류가 지속되지 않도록 할 수 있으며, 정정 가능한 오류와 정정할 수 없는 오류를 모두 운영 체제에 보고할 수도 있다.
NVDIMM-P 유형 DIMM들이 이 실시예에서 설명되지만, 다른 실시예는 이기종 메모리 채널을 통해 다른 유형의 스토리지 클래스 메모리(SCM) 모듈들과 인터페이스하기 위해 본 명세서의 기술을 사용한다. 본 명세서에서 사용되는 바와 같이, SCM은 시스템 메모리 공간에서 어드레싱 가능한(addressable) 비휘발성 메모리를 갖는 메모리 모듈을 나타낸다. SCM 모듈의 비휘발성 메모리는 RAM으로 버퍼링되거나 및/또는 SCM 모듈 보드의 RAM과 페어링될 수 있다. SCM 메모리 어드레스 맵은 운영 체제(OS) 관점에서 기존 DRAM 포퓰레이션(population)과 함께 나타난다. OS는 일반적으로 SCM 정의 어드레스 범위가 기존 메모리와 "다른" 유형의 메모리임을 알고 있다. 이 구별은 이러한 메모리가 더 잠복적(latent)일 수 있고 지속적인 품질을 가질 수 있음을 OS에 알리기 위한 것이다. OS는 SCM 메모리를 직접 액세스 메모리(Direct Access memory) 또는 파일시스템 액세스 메모리(Filesystem Access memory)로 매핑할 수 있다. 직접 액세스는 OS가 물리적 어드레싱 가능 메모리로 SCM 어드레스 범위에 액세스하는 것을 의미한다. 파일시스템 액세스는 OS가 파일 시스템의 일부로 영구 메모리를 관리하고 파일 기반 API를 통해 SCM에 대한 액세스를 관리하는 것을 의미한다. 궁극적으로 요청은 상위 레벨에서 OS가 액세스를 관리하는 방식과 무관하게 SCM 어드레스 범위 내의 메모리 제어기로 전달된다.
도 4는 일부 실시예에 따른 메모리 액세스 커맨드를 핸들링하기 위한 프로세스(400)의 흐름도이다. 프로세스(400)는 비휘발성 판독 커맨드의 핸들링에 포커싱되며, 도 2의 메모리 제어기(200) 또는 다른 메모리 제어기 배열로 구현하기에 적합하다. 프로세스(400)는 휘발성 메모리 판독, 휘발성 메모리 기록, 비휘발성 메모리 판독, 및 비휘발성 메모리 기록을 포함하는 복수의 메모리 액세스 요청들을 수신하는 블록(402)에서 시작한다. 블록(404)에서, 요청들을 채우기 위한 메모리 액세스 커맨드들이 스케줄링되고 메모리 인터페이스 큐에 배치된다. 블록(404)은 일반적으로 메모리 액세스 요청들에 대한 메모리 액세스 커맨드들을 디코딩하는 것을 포함하고, 아비터(238)(도 2)와 같은 아비터에 의해 스케줄링되고 메모리 인터페이스 큐에 배치되기 전에 메모리 액세스 커맨드를 커맨드 큐에 홀딩하는 것을 포함할 수 있다.
블록(406)에서, 프로세스(400)는 메모리 인터페이스 큐에 배치된 비휘발성 판독 커맨드를 비휘발성 커맨드 큐(NV 큐)에 저장한다. 블록(408)에서, 메모리 인터페이스 큐로부터의 메모리 액세스 커맨드는 적어도 하나의 비휘발성 DIMM(dual in-line memory module)에 결합된 이기종 메모리 채널을 통해 송신된다. 일부 실시예에서, 메모리 채널은 또한 적어도 하나의 휘발성 DIMM에 결합된다.
블록(410)에 도시된 바와 같이, 이기종 메모리 채널을 통해 송신되는 비휘발성 판독 커맨드의 경우, 비휘발성 DIMM은 비휘발성 DIMM에서 비휘발성 메모리, 비휘발성 DIMM에서 DRAM, 또는 미디어 제어기의 캐시에 있을 수 있는 일반적으로 요청된 데이터를 판독하는 예측할 수 없는 프로세스로 인해 비결정적(nondeterministic) 시간 기간 후에 응답한다. 비결정적 시간 기간 동안 다른 메모리 액세스 커맨드들이 일반적으로 메모리 인터페이스 큐로부터 발송된다. 비휘발성 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 큐에서 제거된다.
일부 실시예에서, 블록(404)의 프로세스(400)는 아비터(238)(도 2)와 같은 아비터로 메모리 액세스 커맨드들을 스케줄링하는 것을 포함한다. 일 예에서, 메모리 액세스 커맨드들을 메모리 인터페이스 큐에 배치하기 전에, 프로세스는 비휘발성 읽기 커맨드들을 다른 비휘발성 판독 커맨드들 또는 휘발성 판독 커맨드들과 그룹화한다. 일부 실시예에서, 블록(414)의 프로세스(400)는, 메모리 인터페이스 큐에 발송 커맨드를 배치하기 전에, 발송 커맨드를 비휘발성 또는 휘발성 읽기 커맨드들의 그룹과 발송 커맨드를 메모리 인터페이스 큐에 배치하기 전에 그룹화하는 단계를 더 포함한다. 발송(SEND) 커맨드의 응답 시간은 결정적이기 때문에 메모리 인터페이스 큐(214)는 발송(SEND) 커맨드를 비휘발성 기록(WRITE) 뿐만 아니라 일반 DDRx 판독 및 기록(WRITE)와 같은 휘발성 메모리에 대한 다른 커맨드와 혼합(intermingle)할 수 있다.
도 5는 일부 실시예에 따른 오류를 핸들링하기 위한 프로세스의 흐름도이다. 도 6 및 도 7은 도 5의 프로세스를 예시하는 다이어그램들(600 및 700)들의 시퀀스이다. 도 5 내지 도 7을 참조하면, 프로세스(500)는 일반적으로 커맨드들을 저장하고 채널 및 비휘발성 DIMM이 재설정되고 그 후 오류를 정정하기 위해 최근 커맨드들이 리플레이되는 복구 시퀀스를 제공하는 것을 핸들링한다. 블록들은 특정 순서로 도시되지만, 이 순서는 제한되지 않으며 일부 블록들은 계속되는 방식으로 병렬로 발생할 수 있다. 프로세스(500)는 메모리 제어기(200)(도 2) 또는 적절한 NV 큐 및 리플레이 큐 및 오류 검출 능력을 갖는 다른 메모리 제어기에 의해 수행하기에 적합하다.
블록(502)에서, 비휘발성 판독 커맨드들의 사본들은 개별 비휘발성 DIMM으로의 송신을 위해 메모리 인터페이스 큐에 배치될 때 NV 큐에 저장된다. 이것은 송신을 위해 선택될 때 메모리 인터페이스 큐로 가는 커맨드들을 나타내는 화살표(601)와 NV 큐에 저장되는 비휘발성 판독 커맨드들의 사본을 나타내는 화살표(602)에 의해 다이어그램(600)에 예시되어 있다. 비휘발성 기록, 휘발성 기록, 휘발성 판독, 발송(SEND) 커맨드, 및 기타 메모리 액세스 커맨드를 포함하는 다른 유형의 커맨드들은 블록(504)에 도시된 바와 같이 리플레이 큐에 저장된 사본들을 갖는다. 화살표(603)에서 다이어그램(600)은 리플레이 큐에 저장되고 있는 다른 커맨드들을 보여준다. 블록들(502 및 504)은 메모리 제어기가 메모리 액세스 요청들을 처리함에 따라 지속적으로 발생한다.
오류가 검출되지 않는 동안, 프로세스(500)는 NV 큐 및 리플레이 큐에 커맨드들을 계속 저장하고, 커맨드들이 이행되고 그들의 개별 큐로부터 제거될 때까지 유지된다. 블록(506)에서 프로세스(500)는 DIMM들 중 하나에서 또는 메모리 채널에 복구 시퀀스를 필요로 하는 오류가 있었는지 여부를 검출하고, 복구 시퀀스를 시작하고 검출된 오류(들)의 특성에 따라 블록(507, 508 또는 509) 중 하나로 이동한다. 검출된 오류가 커맨드 패리티 오류인 경우, 프로세스(500)는 블록(506)에서 블록(507)으로 진행하고, 여기서 메모리 채널의 각 DIMM에서 패리티 오류를 클리어하기 위한 커맨드를 발송한다. 기록 또는 판독 ECC 오류가 검출되면, 프로세스(500)는 기록 또는 판독 ECC 상태를 클리어하는 블록(508)으로 진행한다. 커맨드 패리티 오류와 기록/판독 ECC 오류가 모두 검출되면, 프로세스(500)는 블록(509)으로 진행하고, 여기서 채널의 각 DIMM에서 패리티 오류를 클리어하기 위한 커맨드를 발송하고 기록 또는 판독 ECC 상태를 클리어하는 블록(510)으로 이동한다. 일부 실시예에서, 블록(509)은 또한 프로세스가 오류 유형을 결정할 수 없는 경우 블록(510)으로 진행하여, 오류 상태가 완전히 클리어됨을 보장하기 위해 두 오류 유형들에 대한 오류들을 클리어한다. 그 다음, 프로세스(500)는 블록(511)으로 진행하여 복구 시퀀스를 계속한다.
블록(511)에서, 다목적 레지스터(MPR) 모드가 현재 활성화되어 있으면, 이는 비활성화된다. 메모리 제어기는 블록 512에서 PHY의 FIFO(first-in-first-out) 버퍼를 재설정한다. 블록(514)에서, 모든 판독 ID(RID)들은 메모리 채널 및 채널 버퍼 상의 비휘발성 DIMM들에서 재설정된다. 일부 실시예에서, 블록(514)은 리셋 RID(RST_RID) 커맨드를 발송하는 단계, 준비(RDY) 응답을 대기하는 단계, 및 발송(SEND) 커맨드를 발송하는 단계, 결과 데이터 패킷을 대기하는 단계를 포함하여, 비휘발성 DIMM이 계류 중인 판독 커맨드에 대해 더 이상 RDY 응답을 발송하지 않도록 모든 미해결(outstanding) 판독들이 재설정되었는지 확인한다.
기록 크레딧(write credit)이 필요한 경우 블록(516)에서 요청되고 획득된다. 일부 실시예에서, 블록(516)은 기록 상태 커맨드를 발송하여 비휘발성 DIMM에 대해 얼마나 많은 기록 크레딧들이 이용 가능한지를 결정하고, 더 많은 기록 크레딧들이 필요한지 여부를 결정한 다음, 더 많은 기록 크레딧들을 요청하고 획득하는 것을 포함한다. 요청은 충분한 기록 크레딧들이 수신될 때까지 다수의 기록 크레딧 요청들을 반복하는 작업을 포함할 수 있다.
MPR 모드가 복구 시퀀스 이전에 활성이었다면, 이는 필요한 커맨드를 리플레이하기 위해 오류가 발생했을 때와 동일한 상태에 비휘발성 DIMM을 배치하기 위해 블록(518)에서 다시 활성화된다.
이 시점에서 복구 시퀀스는 커맨드를 리플레이하는 것을 시작하기 위해 채널 및 비휘발성 DIMM의 다양한 부분들을 재설정하고 클리어하였다. 블록(520)에서, 프로세스(500)는 리플레이 큐로부터 선택된 커맨드들로 시작하는 커맨드들을 리플레이 하는 것을 시작한다. 일부 실시예에서, 선택된 커맨드들은 리플레이 큐에 존재하는 임의의 휘발성 판독, 다목적 레지스터(MPR) 관련 커맨드, MPR 관련 커맨드와 연관된 발송(SEND) 커맨드, 휘발성 기록, 및 비휘발성 기록을 포함한다. 비휘발성 판독과 연관된 발송(SEND) 커맨드들은 보고 및 디버그(debug) 목적을 위해 리플레이 큐에 저장되지만 블록(520)에서는 송신되지 않는다. 리플레이 큐에 있는 플러시(FLUSH) 커맨드들도 리플레이되지 않는다.
바람직하게는 블록(506)에서 블록(520)까지의 블록들은 리플레이 제어 로직(231)(도 2) 또는 유사한 리플레이 제어 회로의 제어 하에 수행된다. 그 다음 프로세스는 비휘발성 판독 커맨드 리플레이를 완료하기 위해 제어를 NV 버퍼(247)로 넘긴다.
블록(522)에서, 프로세스(500)는 NV 큐에 저장된 모든 비휘발성 판독들을 메모리 인터페이스 큐로 송신함으로써 리플리이하는 단계를 포함한다. 바람직하게는, 이러한 리플레이 단계는 리플레이 큐에 저장된 모든 선택된 메모리 액세스 커맨드들을 전송한 후 그룹으로 발생한다. 다른 실시예에서, 블록(520)에서 커맨드들이 리플레이되기 전에 비휘발성 판독들이 그룹으로 리플레이된다. 도 4와 관련하여 설명된 것처럼, 비휘발성 판독은 비결정적 응답 시간을 갖고, 이는 비휘발성 판독에 대한 RD_RDY 응답 이후에 원래 송신된 발송(SEND) 커맨드들이 동일한 순서로 다시 송신될 필요는 없음을 의미한다. 이 순서화를 핸들링하기 위해, 프로세스(500)는 비휘발성 판독들과 연관된 리플레이 큐에 저장된 발송(SEND) 커맨드들을 스킵하는 단계 및 블록(524)에서 복구 시퀀스 동안 비휘발성 DIMM으로부터 수신된 판독 준비(RD_RDY) 응답들에 응답하여 새로운 SEND 커맨드들을 생성함으로써 비휘발성 판독들에 대해 도달할 때 RD-RDY 응답들에 응답하는 단계를 포함한다. 이 시점에서 리플레이 시퀀스가 완료되고 메모리 제어기는 리플레이 시퀀스를 종료하고 정상 작동 조건으로 돌아간다.
따라서, 본 명세서에 설명된 메모리 제어기 및 데이터 처리 시스템은 비휘발성 DIMM들과 인터페이스하는 메모리 제어기의 능력을 향상시킨다. 더욱이, 본 명세서의 메모리 제어기는 그들이 이행될 때까지 비결정적이며 잠재적으로 긴 레이턴시를 갖는 비휘발성 판독 커맨드들을 유지하기 위한 메모리 인터페이스 큐에 대한 필요를 제거함으로써 메모리 인터페이스 큐의 길이를 줄인다.
아비터(238)와 같은 도 2의 메모리 제어기(200) 또는 그 임의의 부분들은 프로그램으로 판독될 수 있고 직접 또는 간접적으로 집적 회로를 제조하는 데 사용할 수 있는 데이터베이스 또는 기타 데이터 구조의 형태로 컴퓨터 액세스 가능한 데이터 구조로 설명되거나 표시될 수 있다. 예를 들어, 이러한 데이터 구조는 베리로그(Verilog) 또는 VHDL과 같은 고수준 설계 언어(HDL)의 하드웨어 기능에 대한 동작 수준 설명 또는 레지스터 전송 수준(RTL) 설명일 수 있다. 설명은 합성 라이브러리로부터 게이트 목록을 포함하는 넷리스트를 생성하기 위해 설명을 합성할 수 있는 합성 툴에 의해 판독될 수 있다. 넷리스트는 집적 회로를 포함한 하드웨어의 기능을 나타내는 게이트 세트를 포함한다. 그런 다음 네트리스트가 배치되고 라우팅되어 마스크에 적용할 기하학적 모양을 설명하는 데이터 세트를 생성할 수 있다. 마스크는 집적 회로를 생성하기 위해 다양한 반도체 제조 단계에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스 가능한 저장 매체의 데이터베이스는 넷리스트(합성 라이브러리가 있거나 없는) 또는 원하는 경우 데이터 세트 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
특정 실시예가 설명되었지만, 이들 실시예에 대한 다양한 수정은 당업자에게 명백할 것이다. 예를 들어, 메모리 채널 제어기(210) 및/또는 전력 엔진(250)의 내부 아키텍처는 상이한 실시예에서 변할 수 있다. 메모리 제어기(200)는 고대역폭 메모리(HBM), 램버스(RAMbus) DRAM(RDRAM) 등과 같은 NVDIMM-P 메모리 외에 다른 유형의 메모리에 인터페이스할 수 있다. 예시된 실시예는 개별 DIMM에 대응하는 메모리의 각 랭크를 나타내었지만, 다른 실시예에서 각각의 DIMM은 다중 랭크를 지원할 수 있다. 또한, 이기종 메모리 채널이 일반적으로 지원되지만 채널 전체가 비휘발성 DIMM으로 채워질 수 있다. 또한, 복구 및 리플레이를 달성하기 위해 2개의 개별 큐들이 설명되었지만, 일부 실시예에서는 단일 특수 목적 스토리지 큐가 사용된다.
따라서, 첨부된 청구범위는 개시된 실시예의 범위 내에 속하는 개시된 실시예의 모든 수정을 포함하도록 의도된다.
Claims (20)
- 메모리 제어기(memory controller)에 있어서,
휘발성 판독(read), 휘발성 기록(write), 비휘발성 판독 및 비휘발성 기록을 포함하는 메모리 액세스 커맨드(memory access command)들을 수신하기 위한 제1 입력 및 출력을 갖고, 및 복수의 엔트리(entry)들을 갖는 커맨드 큐(command queue);
상기 커맨드 큐로부터 선택된 커맨드들을 수신하기 위한 입력, 및 적어도 하나의 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 결합된 이기종(heterogeneous) 메모리 채널에 결합하기 위한 출력을 갖는 메모리 인터페이스 큐(memory interface queue);
상기 메모리 인터페이스 큐에 배치된 메모리 액세스 커맨드들을 저장하는 적어도 하나의 스토리지 큐(storage queue); 및
복구 시퀀스(recovery sequence)를 필요로 하는 오류가 발생했음을 검출하고 상기 오류에 응답하여 상기 복구 시퀀스를 개시하는 리플레이 제어 회로(replay control circuit)를 포함하고, 상기 리플레이 제어 회로는 계류 중인(pending) 모든 휘발성 판독, 휘발성 기록 및 비휘발성 기록과 별도로 비휘발성 판독 커맨드들을 함께 그룹화함으로써 상기 적어도 하나의 스토리지 큐로부터 선택된 메모리 액세스 커맨드들을 송신하는, 메모리 제어기. - 제1항에 있어서, 상기 리플레이 제어 회로는 모든 계류 중인 휘발성 판독, 휘발성 기록 및 비휘발성 기록이 송신될 때까지 모든 비휘발성 판독들의 송신을 지연시킴으로써 상기 적어도 하나의 스토리지 큐로부터 상기 선택된 메모리 액세스 커맨드를 더 송신하는, 메모리 제어기.
- 제1항에 있어서, 상기 적어도 하나의 스토리지 큐는 상기 메모리 인터페이스 큐에 배치된 비휘발성 판독들을 저장하기 위해 상기 커맨드 큐의 상기 출력에 결합된 비휘발성 커맨드 큐(NV 큐) 및 상기 메모리 인터페이스 큐에 배치된 다른 선택된 메모리 액세스 커맨드들을 저장하기 위해 상기 커맨드 큐의 상기 출력에 결합된 리플레이 큐를 포함하는, 메모리 제어기.
- 제1항에 있어서, 상기 복구 시퀀스는 비휘발성 판독들과 연관된 상기 리플레이 큐에 저장된 발송(SEND) 커맨드들을 스킵하는 것 및 상기 복구 시퀀스 동안 상기 비휘발성 SCM 모듈로부터 수신된 판독 준비(RD_RDY) 응답들에 대한 응답으로 새로운 발송(SEND) 커맨드들을 생성하는 것을 포함하는, 메모리 제어기.
- 제1항에 있어서, 상기 복구 시퀀스는, 상기 선택된 메모리 액세스 커맨드들을 송신하기 전에, 상기 이기종 메모리 채널에 대한 버퍼의 모든 판독 식별자(RID)들에 대한 비휘발성 판독들을 재설정하는 것을 포함하는, 메모리 제어기.
- 제1항에 있어서, 상기 복구 시퀀스는 상기 비휘발성 SCM 모듈 상의 버퍼들에 대한 기록 크레딧(write credit)들을 요청하고 획득하는 것을 포함하는, 메모리 제어기.
- 제1항에 있어서, 상기 복구 시퀀스를 필요로 하는 상기 오류는 커맨드 패리티 오류, 상기 비휘발성 SCM 모듈과 연관된 기록 커맨드 오류 정정 코드(ECC) 오류, 및 상기 비휘발성 SCM 모듈과 연관된 판독 커맨드 ECC 오류 중 하나인, 메모리 제어기.
- 방법에 있어서,
휘발성 메모리 판독, 휘발성 메모리 기록, 비휘발성 메모리 판독, 및 비휘발성 메모리 기록을 포함하는 복수의 메모리 액세스 요청들을 수신하는 단계;
메모리 인터페이스 큐에 상기 메모리 액세스 요청들을 수행하기 위한 메모리 액세스 커맨드들을 배치하고 상기 메모리 인터페이스 큐로부터 적어도 하나의 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 결합된 이기종 메모리 채널로 상기 메모리 액세스 커맨드들을 송신하는 단계;
상기 메모리 인터페이스 큐에 배치된 메모리 액세스 커맨드들을 적어도 하나의 스토리지 큐에 저장하는 단계; 및
복구 시퀀스를 필요로 하는 오류가 발생했음을 검출하고 상기 오류에 대한 응답으로, 모든 계류 중인 휘발성 판독, 휘발성 기록 및 비휘발성 기록과 별도로 모든 비휘발성 판독들의 송신을 그룹화함으로써 상기 적어도 하나의 스토리지 큐로부터 선택된 메모리 액세스 커맨드들을 송신하는 것을 포함하는 상기 복구 시퀀스를 수행하는 단계를 포함하는, 방법. - 제8항에 있어서, 모든 계류 중인 휘발성 판독, 휘발성 기록 및 비휘발성 기록이 송신될 때까지 모든 비휘발성 판독들의 송신을 지연시킴으로써 상기 적어도 하나의 스토리지 큐로부터 상기 선택된 메모리 액세스 커맨드를 송신하는 단계를 더 포함하는, 방법.
- 제8항에 있어서, 상기 적어도 하나의 스토리지 큐는 상기 메모리 인터페이스 큐에 배치된 비휘발성 판독들을 저장하기 위한 비휘발성 커맨드 큐(NV 큐) 및 상기 메모리 인터페이스 큐에 배치된 선택된 메모리 액세스 커맨드들을 저장하기 위한 리플레이 큐를 포함하는, 방법.
- 제8항에 있어서, 상기 복구 시퀀스는 비휘발성 판독들과 연관된 상기 리플레이 큐에 저장된 발송(SEND) 커맨드들을 스킵하는 것 및 상기 복구 시퀀스 동안 상기 비휘발성 SCM 모듈로부터 수신된 판독 준비(RD_RDY) 응답들에 대한 응답으로 새로운 발송(SEND) 커맨드들을 생성하는 것을 포함하는, 방법.
- 제8항에 있어서, 상기 복구 시퀀스는, 상기 선택된 메모리 액세스 커맨드들을 송신하기 전에, 상기 이기종 메모리 채널에 대한 버퍼의 모든 판독 식별자(RID)들에 대한 비휘발성 판독들을 재설정하는 것을 포함하는, 방법.
- 제8항에 있어서, 상기 복구 시퀀스는 비휘발성 SCM 모듈 상의 버퍼들에 대한 기록 크레딧들을 요청하고 획득하는 것을 포함하는, 방법.
- 제8항에 있어서, 상기 복구 시퀀스를 필요로 하는 상기 오류는 커맨드 패리티 오류, 상기 비휘발성 SCM 모듈과 연관된 기록 커맨드 오류 정정 코드(ECC) 오류, 및 상기 비휘발성 SCM 모듈과 연관된 판독 커맨드 ECC 오류 중 하나인, 방법.
- 데이터 처리 시스템(data processing system)에 있어서,
중앙 처리 장치(central processing unit);
상기 중앙 처리 장치에 결합된 데이터 패브릭(data fabric); 및
상기 중앙 처리 장치로부터의 메모리 액세스 요청들을 이행하기 위한 상기 데이터 패브릭에 결합된 메모리 제어기를 포함하고, 상기 메모리 제어기는:
휘발성 판독, 휘발성 기록, 비휘발성 판독 및 비휘발성 기록을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력 및 출력을 갖고, 복수의 엔트리들을 갖는 커맨드 큐;
상기 커맨드 큐로부터 선택된 커맨드들을 수신하기 위한 입력, 및 적어도 하나의 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 결합된 이기종 메모리 채널에 결합하기 위한 출력을 갖는 메모리 인터페이스 큐;
상기 메모리 인터페이스 큐에 배치된 메모리 액세스 커맨드들을 저장하는 적어도 하나의 스토리지 큐; 및
복구 시퀀스를 필요로 하는 오류가 발생했음을 검출하고 상기 오류에 응답하여 상기 복구 시퀀스를 개시하는 리플레이 제어 회로를 포함하고, 상기 리플레이 제어 회로는 모든 계류 중인 휘발성 판독, 휘발성 기록 및 비휘발성 기록과 별도로 비휘발성 판독 커맨드들을 함께 그룹화함으로써 상기 적어도 하나의 스토리지 큐로부터 선택된 메모리 액세스 커맨드들을 송신하는, 데이터 처리 시스템. - 제15항에 있어서, 상기 리플레이 제어 회로는 모든 계류 중인 휘발성 판독, 휘발성 기록 및 비휘발성 기록이 송신될 때까지 모든 비휘발성 판독들의 송신을 지연시킴으로써 상기 적어도 하나의 스토리지 큐로부터 상기 선택된 메모리 액세스 커맨드를 더 송신하는, 데이터 처리 시스템.
- 제15항에 있어서, 상기 적어도 하나의 스토리지 큐는 상기 메모리 인터페이스 큐에 배치된 비휘발성 판독들을 저장하기 위해 상기 커맨드 큐의 상기 출력에 결합된 비휘발성 커맨드 큐(NV 큐) 및 상기 메모리 인터페이스 큐에 배치된 다른 선택된 메모리 액세스 커맨드들을 저장하기 위해 상기 커맨드 큐의 상기 출력에 결합된 리플레이 큐를 포함하는, 데이터 처리 시스템.
- 제15항에 있어서, 상기 복구 시퀀스는 비휘발성 판독들과 연관된 상기 리플레이 큐에 저장된 발송(SEND) 커맨드들을 스킵하는 것 및 상기 복구 시퀀스 동안 상기 비휘발성 SCM 모듈로부터 수신된 판독 준비(RD_RDY) 응답들에 대한 응답으로 새로운 발송(SEND) 커맨드들을 생성하는 것을 포함하는, 데이터 처리 시스템.
- 제15항에 있어서, 상기 복구 시퀀스는, 상기 선택된 메모리 액세스 커맨드들을 송신하기 전에, 상기 이기종 메모리 채널에 대한 버퍼의 모든 판독 식별자(RID)들에 대한 비휘발성 판독들을 재설정하는 것을 포함하는, 데이터 처리 시스템.
- 제15항에 있어서, 상기 복구 시퀀스를 필요로 하는 상기 오류는 커맨드 패리티 오류, 상기 비휘발성 SCM 모듈과 연관된 기록 커맨드 오류 정정 코드(ECC) 오류, 및 상기 비휘발성 SCM 모듈과 연관된 판독 커맨드 ECC 오류 중 하나인, 데이터 처리 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/729,994 US11531601B2 (en) | 2019-12-30 | 2019-12-30 | Error recovery for non-volatile memory modules |
US16/729,994 | 2019-12-30 | ||
PCT/US2020/063922 WO2021138009A1 (en) | 2019-12-30 | 2020-12-09 | Error recovery for non-volatile memory modules |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220116033A true KR20220116033A (ko) | 2022-08-19 |
Family
ID=76546381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227025293A KR20220116033A (ko) | 2019-12-30 | 2020-12-09 | 비휘발성 메모리 모듈에 대한 오류 복구 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11531601B2 (ko) |
EP (1) | EP4085334A4 (ko) |
JP (1) | JP2023508461A (ko) |
KR (1) | KR20220116033A (ko) |
CN (1) | CN114902187A (ko) |
WO (1) | WO2021138009A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099786B2 (en) * | 2019-12-30 | 2021-08-24 | Advanced Micro Devices, Inc. | Signaling for heterogeneous memory systems |
US11392441B2 (en) | 2019-12-30 | 2022-07-19 | Advanced Micro Devices, Inc. | Error reporting for non-volatile memory modules |
TWI824885B (zh) * | 2022-12-15 | 2023-12-01 | 慧榮科技股份有限公司 | 資料儲存裝置與錯誤回復執行方法 |
CN116302659B (zh) * | 2023-04-27 | 2023-08-08 | 摩尔线程智能科技(北京)有限责任公司 | Gpu显存错误处理方法及装置、电子设备和存储介质 |
Family Cites Families (26)
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 |
US7343457B1 (en) * | 2003-08-01 | 2008-03-11 | Unisys Corporation | Dual active bank memory controller |
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 |
US9311251B2 (en) | 2012-08-27 | 2016-04-12 | Apple Inc. | System cache with sticky allocation |
WO2015005903A1 (en) | 2013-07-09 | 2015-01-15 | Hewlett-Packard Development Company, L.P. | Write flow control for memory modules that include or interface with non-compliant memory technologies |
US11132328B2 (en) | 2013-12-20 | 2021-09-28 | Rambus, Inc. | High level instructions with lower-level assembly code style primitives 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 |
KR101624146B1 (ko) | 2014-07-29 | 2016-05-26 | 정준모 | 혈액 필터용 여재 제조 방법 |
KR20160144577A (ko) | 2015-06-08 | 2016-12-19 | 삼성전자주식회사 | 불휘발성 메모리 모듈 및 그것의 포함하는 사용자 장치 |
US10048878B2 (en) | 2015-06-08 | 2018-08-14 | Samsung Electronics Co., Ltd. | Nonvolatile memory module and storage system having the same |
US9817610B1 (en) | 2015-12-08 | 2017-11-14 | Inphi Corporation | Hybrid memory systems for autonomous non-volatile memory save and restore operations |
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 |
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 |
US11137941B2 (en) * | 2019-12-30 | 2021-10-05 | Advanced Micro Devices, Inc. | Command replay for non-volatile dual inline memory modules |
US11099786B2 (en) * | 2019-12-30 | 2021-08-24 | Advanced Micro Devices, Inc. | Signaling for heterogeneous memory systems |
-
2019
- 2019-12-30 US US16/729,994 patent/US11531601B2/en active Active
-
2020
- 2020-12-09 CN CN202080091714.1A patent/CN114902187A/zh active Pending
- 2020-12-09 WO PCT/US2020/063922 patent/WO2021138009A1/en unknown
- 2020-12-09 JP JP2022539325A patent/JP2023508461A/ja active Pending
- 2020-12-09 EP EP20910359.7A patent/EP4085334A4/en active Pending
- 2020-12-09 KR KR1020227025293A patent/KR20220116033A/ko active Search and Examination
-
2022
- 2022-12-19 US US18/084,350 patent/US20230125792A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4085334A1 (en) | 2022-11-09 |
CN114902187A (zh) | 2022-08-12 |
US20210200649A1 (en) | 2021-07-01 |
EP4085334A4 (en) | 2023-08-02 |
WO2021138009A1 (en) | 2021-07-08 |
JP2023508461A (ja) | 2023-03-02 |
US20230125792A1 (en) | 2023-04-27 |
US11531601B2 (en) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109564556B (zh) | 具有条纹和读取/写入事务管理的存储器控制器仲裁器 | |
KR102350538B1 (ko) | Ddr 메모리 에러 복구 | |
US11531601B2 (en) | Error recovery for non-volatile memory modules | |
KR102542493B1 (ko) | 비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이 | |
KR102478527B1 (ko) | 이기종 메모리 시스템용 시그널링 | |
US11561862B2 (en) | Refresh management for DRAM | |
JP2023508117A (ja) | 不揮発性メモリモジュールのエラー報告 | |
US11995008B2 (en) | Memory controller with hybrid DRAM/persistent memory channel arbitration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |