KR20240022655A - 하이브리드 dram/영구 메모리 채널 중재 기능을 갖는 메모리 제어기 - Google Patents

하이브리드 dram/영구 메모리 채널 중재 기능을 갖는 메모리 제어기 Download PDF

Info

Publication number
KR20240022655A
KR20240022655A KR1020247002401A KR20247002401A KR20240022655A KR 20240022655 A KR20240022655 A KR 20240022655A KR 1020247002401 A KR1020247002401 A KR 1020247002401A KR 20247002401 A KR20247002401 A KR 20247002401A KR 20240022655 A KR20240022655 A KR 20240022655A
Authority
KR
South Korea
Prior art keywords
arbiter
command
memory
sub
candidate
Prior art date
Application number
KR1020247002401A
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 KR20240022655A publication Critical patent/KR20240022655A/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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)

Abstract

메모리 제어기는 메모리 채널에 대한 메모리 액세스 커맨드를 수신하기 위한 입력부, 및 사전 결정된 개수의 메모리 액세스 커맨드를 보유하기 위한 다수의 엔트리를 갖는 커맨드 큐, 및 메모리 채널에 결합된 영구 메모리 및 DRAM 메모리 중 하나로 디스패치하기 위한 메모리 커맨드를 커맨드 큐로부터 선택하는 아비터를 포함한다. 아비터는 DRAM 커맨드 및 영구 메모리 커맨드 중 후보 커맨드를 선택하도록 커맨드 큐에 결합된 1계층 서브-아비터 회로, 및 후보 커맨드를 수신하고, 후보 커맨드로부터 적어도 하나의 커맨드를 선택하도록 1계층 서브-아비터 회로에 결합된 2계층 서브-아비터 회로를 포함한다.

Description

하이브리드 DRAM/영구 메모리 채널 중재 기능을 갖는 메모리 제어기
컴퓨터 시스템은 일반적으로 메인 메모리를 위한 저렴하고 밀도가 높은 동적 랜덤 액세스 메모리(DRAM: dynamic random access memory) 칩을 사용한다. 현재 판매되는 대부분의 DRAM 칩은 JEDEC(Joint Electron Devices Engineering Council)에서 공표한 다양한 DDR(Double Data Rate) DRAM 표준과 호환된다. DDR 메모리 제어기는 공개된 DDR 표준에 따라 다양한 메모리 액세스 에이전트와 DDR DRAM 간의 인터페이스를 관리하는 데 사용된다.
영구 스토리지를 갖는 비휘발성 듀얼-인라인 메모리 모듈("NVDIMM-P")은 표준 DDR DIMM 대신 사용될 수 있는 스토리지 클래스 메모리이지만 자주 요청되는 데이터에 더 빠르게 액세스할 수 있도록 휘발성 메모리 외에 영구 메모리도 포함한다. 그러나 이들 메모리는 비결정적 액세스 레이턴시(latency)를 가지며 비휘발성 메모리로의 액세스를 일시적으로 지연시킬 수 있는 온보드 매체 관리 활동을 가질 수 있으므로, 이들 메모리는 호스트 제어기에게 NVDIMM-P로부터의 데이터의 가용성을 알리기 위한 핸드셰이크 프로토콜을 필요로 한다. JEDEC는 이 비결정론이 성능에 미치는 영향을 완화하고, 비순차적 트랜잭션을 활성화하고 커맨드를 스택하는 기능을 제공하기 위해 트랜잭션 프로토콜을 개발하고 있다.
도 1은 종래 기술에서 공지된 가속 처리 장치(APU) 및 메모리 시스템을 블록도 형태로 도시한다.
도 2는 일부 실시예에 따라 도 1과 같은 APU에서 사용되기에 적합한 메모리 제어기를 블록도 형태로 도시한다.
도 3은 일부 실시예에 따른 메모리 채널과 APU의 쌍을 블록도 형태로 도시한다.
도 4는 일부 실시예에 따라 도 2의 메모리 제어기에서 사용되기에 적합한 메모리 제어기의 일부를 블록도 형태로 도시한다.
도 5는 추가 실시예에 따르는 도 2의 메모리 제어기(200)에서 사용되기에 적합한 메모리 제어기의 일부를 블록도 형태로 도시한다.
도 6은 일부 실시예에 따라 메모리 액세스 커맨드를 핸들링하는 프로세스를 다이어그램 형태로 도시한다.
이하의 기재에 있어서, 서로 다른 도면에서 동일한 참조번호를 사용하는 것이 유사하거나 동일한 아이템을 가리킨다. 달리 언급하지 않는 한, "결합된(coupled)"이라는 단어 및 그 연관된 동사 형태는 해당업계에 공지된 수단에 의한 직접 연결 및 간접 전기 연결을 모두 포함하며, 달리 언급하지 않는 한 직접 연결에 대한 설명은 간접 전기 연결의 적절한 형태를 사용하는 대체 실시예도 의미한다.
메모리 제어기는 메모리 채널에 대한 메모리 액세스 커맨드를 수신하기 위한 입력부, 및 사전 결정된 개수의 메모리 액세스 커맨드를 보유하기 위한 다수의 엔트리를 갖는 커맨드 큐를 포함한다. 아비터(arbiter)가 메모리 채널에 연결된 영구 메모리 및 DRAM 메모리 중 하나로 디스패치하기 위한 메모리 커맨드를 커맨드 큐로부터 선택한다. 아비터는 DRAM 커맨드 및 영구 메모리 커맨드 중 후보 커맨드를 선택하도록 커맨드 큐에 연결된 1계층 서브-아비터 회로, 및 상기 후보 커맨드를 수신하고 상기 후보 커맨드 중에서 적어도 하나의 커맨드를 선택하도록 상기 1계층 서브-아비터 회로에 연결된 2계층 서브-아비터 회로를 포함한다.
방법은 DRAM 커맨드 및 영구 메모리 커맨드를 포함하는 복수의 메모리 액세스 요청을 수신하는 단계를 포함한다. 메모리 액세스 커맨드는 DRAM 메모리 및 영구 메모리로의 디스패치를 기다리기 위해 커맨드 큐에 배치된다. 상기 커맨드 큐로부터 다수의 후보 커맨드가 선택되며, 상기 후보 커맨드 중 적어도 2개는 DRAM 커맨드 및 영구 메모리 커맨드로부터 선택된다. 적어도 하나의 커맨드가 제2 계층으로부터 메모리 채널 상에 전송되기 위해 후보 커맨드로부터 선택된다.
데이터 처리 시스템은 DRAM 메모리 및 영구 메모리에 연결된 메모리 채널을 포함한다. 메모리 제어기는 메모리 채널에 연결되며 커맨드 큐(command queue) 및 아비터(arbiter)를 포함한다. 커맨드 큐는 메모리 채널에 대한 메모리 액세스 커맨드를 수신하기 위한 입력부, 및 사전 결정된 개수의 메모리 액세스 커맨드를 보유하기 위한 다수의 엔트리를 가진다. 아비터는 영구 메모리 및 DRAM 메모리 중 하나로 송신을 위해 상기 커맨드 큐로부터 메모리 커맨드를 선택한다. 아비터는 DRAM 커맨드 및 영구 메모리 커맨드 중에서 후보 커맨드를 선택하도록 커맨드 큐에 연결된 1계층 서브-아비터 회로, 및 상기 후보 커맨드를 수신하고 상기 후보 커맨드 중에서 적어도 하나의 커맨드를 선택하도록 상기 1계층 서브-아비터 회로에 연결된 2계층 서브-아비터 회로를 포함한다.
도 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(Graphics Processor Unit)이다. 그래픽 코어(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)에 의해 정의되는 시스템 메모리 맵을 더 포함한다.
주변 장치 제어기(160)는 USB(Universal Serial Bus) 제어기(162) 및 SATA(Serial Advanced Technology Attachment) 인터페이스 제어기(164)를 포함하며, 이들 각각은 시스템 허브(166) 및 SMN 버스에 양방향으로 연결된다.
이들 2개의 제어기는 APU(100)에서 사용될 수 있는 주변 장치 제어기의 예시일 뿐이다.주변 버스 제어기(170)는 시스템 제어기 또는 "사우스브리지(Southbridge)"(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) 상의 다양한 프로세서의 전원 켜기 시퀀싱을 관리하고 재설정, 인에이블 및 그 밖의 다른 신호를 통해 다수의 오프-칩 장치를 제어한다. SMU(180)는 하나 이상의 클록 소스(도시되지 않음), 가령, 위상 고정 루프(PLL)를 포함하여 APU(100)의 구성 요소 각각에 클록 신호를 제공할 수 있다. SMU(180)는 또한 다양한 프로세서 및 그 밖의 다른 기능 블록에 대한 전력을 관리하고, 적절한 전력 상태를 결정하기 위해 CPU 코어(112 및 114) 및 그래픽 코어(120)로부터 측정된 전력 소비 값을 수신할 수 있다.
메모리 관리 허브(140) 및 이의 연관된 물리 인터페이스(PHY)(151 및 152)가 본 실시예에서 APU(100)와 통합된다. 메모리 관리 허브(140)는 메모리 채널(141 및 142)과 전력 엔진(149)을 포함한다. 메모리 채널(141)은 호스트 인터페이스(145), 메모리 채널 제어기(143), 및 물리 인터페이스(147)를 포함한다. 호스트 인터페이스(145)는 직렬 존재 검출 링크(SDP)를 통해 메모리 채널 제어기(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를 통해 PHY(151 및 152)에 양방향으로 연결되며, 메모리 채널 제어기(143 및 144)에도 양방향으로 연결된다. PHY(151)는 메모리 채널(131)에 양방향 연결을 가진다. PHY(152)는 양방향 연결 메모리 채널(133)을 가진다.
메모리 관리 허브(140)는 2개의 메모리 채널 제어기를 갖는 메모리 제어기의 인스턴스화이며 공유 전력 엔진(149)을 사용하여 메모리 채널 제어기(143) 및 메모리 채널 제어기(144) 모두의 동작을 이하에서 더 기재될 방식으로 제어할 수 있다. 각 메모리 채널(141 및 142)은 최신 DDR 메모리, 가령, DDR 버전 4(DDR4), 저전력 DDR4(LPDDR4), 그래픽 DDR 버전 5(gDDR5) 및 고대역폭 메모리(HBM)에 연결될 수 있고, 미래 메모리 기술에 적응될 수 있다. 이들 메모리는 높은 버스 대역폭과 고속 작동을 제공한다. 동시에, 이들은 배터리 구동 애플리케이션, 가령, 랩톱 컴퓨터에 대한 전력을 절약하기 위한 저전력 모드를 제공하며, 내장형 열 모니터링도 제공한다.
메모리 시스템(130)은 메모리 채널(131) 및 메모리 채널(133)을 포함한다. 메모리 채널(131)은 DDRx 버스(132)에 연결되며, 이 예시에서 개별 랭크에 대응하는 대표적 DIMM(134, 136, 및 138)을 포함하는 DIMM(dual inline memory module)의 세트를 포함한다. 마찬가지로, 메모리 채널(133)은, DDRx 버스(129)에 연결되며, 대표적인 DIMM(135, 137 및 139)을 포함하는 DIMM의 세트를 포함한다.
APU(100)는 호스트 데이터 처리 시스템의 중앙 처리 장치(CPU)로 작동하며 현대 컴퓨터 시스템에서 유용한 다양한 버스와 인터페이스를 제공한다. 이들 인터페이스는 2개의 DDRx(Double Data Rate) 메모리 채널, 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에서 사용되기에 적절한 메모리 제어기(200)를 블록도 형태로 도시한다. 메모리 제어기(200)는 일반적으로 메모리 채널 제어기(210) 및 전원 제어기(250)를 포함한다. 메모리 채널 제어기(210)는 일반적으로 인터페이스(212), 메모리 인터페이스 큐(214), 커맨드 큐(220), 어드레스 생성기(222), CAM(Content Addressable Memory)(224), 리플레이 큐(230)를 포함하는 리플레이 제어 로직(231), 리프레시 로직 블록(232), 타이밍 블록(234), 페이지 테이블(236), 아비터(238), 오류 정정 코드(ECC) 체크 회로(242), ECC 생성 블록(244), 데이터 버퍼(246), 비휘발성(NV) 버퍼(247) 및 NV 큐(248)를 포함한다.
인터페이스(212)는 외부 버스를 통해 데이터 패브릭(125)에 대한 제1 양방향 연결을 가지며 출력을 가진다. 메모리 제어기(200)에서, 이 외부 버스는 "AXI4"로 알려진 영국 케임브리지에 소재한 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 메모리를 포함하는 메모리의 어드레스 범위를 디코딩하고, 메모리 액세스 요청이 NVDIMM-P에 대한 요청인지 여부를 나타내는 디코딩된 신호를 커맨드 큐(220)에 저장한다. 그런 다음 아비터(arbiter)(238)는 다른 요청에 비해 적절한 우선순위로 NVDIMM-P 요청의 우선순위를 지정할 수 있다. 커맨드 큐(220)는 CPU 코어(112, 및 114) 및 그래픽 코어(120)와 같은 APU(100) 내 메모리 액세스 에이전트로부터 수신된 메모리 액세스 요청의 큐이다. 커맨드 큐(220)는 어드레스 생성기(222)에 의해 디코딩된 어드레스 필드뿐만 아니라 액세스 유형 및 서비스 품질(QoS) 식별자를 포함하여 어비터(238)가 메모리 액세스를 효율적으로 선택할 수 있게 하는 다른 어드레스 정보를 저장한다. CAM(224)는 WAW(write after write) 및 RAW(read after write) 순서 규칙과 같은 순서 규칙을 시행하는 정보를 포함한다.
오류 정정 코드(ECC) 생성 블록(244)은 NVDIMM-P로 전송될 기록 데이터의 ECC를 결정한다.ECC 체크 회로(242)는 들어오는 ECC에 대해 수신된 ECC를 체크한다.
리플레이 큐(replay queue)(230)는 어드레스 및 커맨드 패리티 응답과 같은 응답을 기다리고 있는 아비터(238)에 의해 선택된 선택 메모리 액세스를 저장하기 위한 임시 큐이다. 리플레이 제어 로직(replay control logic)(231)은 ECC 검사 회로(242)를 액세스하여 반환된 ECC가 올바른지 또는 오류를 나타내는지 여부를 결정한다. 리플레이 제어 로직(231)은 이들 사이클 중 하나의 패리티 또는 ECC 오류의 경우 액세스가 리플레이되는 리플레이 시퀀스를 개시하고 제어한다. 리플레이된 커맨드는 메모리 인터페이스 큐(214)에 배치된다.
리프레시 로직(refresh logic)(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)에 양방향으로 연결되고, 아래에 추가로 설명되는 바와 같이, 하나 이상의 SEND 커맨드가 이용 가능할 때 SEND 커맨드를 입력으로 제공하기 위한 아비터(238)에 연결된다.
인터페이스(212)로부터 수신된 기록 메모리 액세스 요청에 응답하여, ECC 생성 블록(244)은 기록 데이터에 따라 ECC를 계산한다. 데이터 버퍼(246)는 수신된 메모리 액세스 요청에 대한 기록 데이터 및 ECC를 저장한다. 이는 아비터(238)가 메모리 채널로의 디스패치를 위해 대응하는 기록 액세스를 선택할 때 조합된 기록 데이터/ECC를 메모리 인터페이스 큐(214)로 출력한다.
전력 제어기(250)는 일반적으로 고급 확장형 인터페이스, 버전 1(AXI), 고급 주변 버스(APB) 인터페이스(254), 및 전력 엔진(260)로의 인터페이스(252)를 포함한다. 인터페이스(252)는 SMN에 대한 제1 양방향 연결을 가지며, 이는 도 2에 별도로 도시된 "이벤트_n"으로 라벨링된 이벤트 신호를 수신하기 위한 입력, 및 출력을 포함한다. 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)는 연관된 메모리 채널로의 디스패치를 위해 메모리 액세스를 선택할 수 있게 하는 회로를 포함한다. 원하는 중재 결정을 내리기 위해 어드레스 생성기(222)는 어드레스 정보를 메모리 시스템 내 사전 디코딩된 정보, 가령, 랭크, 행 어드레스, 열 어드레스, 뱅크 어드레스 및 뱅크 그룹을 디코딩하며, 커맨드 큐(220)는 사전 디코딩된 정보를 저장한다. 구성 레지스터(262)는 어드레스 생성기(222)가 수신된 어드레스 정보를 디코딩하는 방법을 결정하기 위해 구성 정보를 저장한다. 아비터(238)는 디코딩된 어드레스 정보, 타이밍 블록(234)에 의해 표시된 타이밍 적격 정보, 페이지 테이블(236)에 의해 표시된 활성 페이지 정보를 사용하여 서비스 품질(QoS) 요건과 같은 다른 기준을 관찰하면서 메모리 액세스를 효율적으로 스케줄링한다. 예를 들어, 아비터(238)는 메모리 페이지를 변경하는 데 필요한 프리차지 및 활성화 커맨드의 오버헤드를 피하기 위해 페이지를 열기 위해 액세스에 대한 우선권을 구현하고 다른 뱅크에 대한 판독 및 기록 액세스를 인터리빙하여 한 뱅크에 대한 오버헤드 액세스를 숨긴다. 특히 정상 동작 동안, 아비터(238)는 일반적으로 상이한 페이지를 선택하기 전에 프리차지되도록 요구될 때까지 상이한 뱅크에 페이지를 열어둔다.
도 3은 일부 실시예에 따른 데이터 처리 시스템(300)을 블록도 형태로 예시한다. 데이터 처리 시스템(300)은 메모리 시스템(330) 및 APU(310)를 포함한다. APU(310)는 메모리 시스템(330)과 인터페이스하기 위해 이종 메모리 채널을 지원하는 메모리 제어기(200)(도 2)와 같은 메모리 제어기를 포함한다. 정상 DDRx 메모리 채널 외에도, APU(310)는 정상 레지스터형 DIMM(registered DIMM) 또는 RDIMM(334 및 336)과 NV DIMM -P(338) 모두를, 버스(342)를 통해 연결된 RDIMM(344, 346, 348)만 갖는 동종 메모리 채널(340)에 추가로, 갖는 이종 메모리 채널(332)에서 NVDIMM-P(338)를 지원한다. 이 실시예에서는 이종 메모리 채널(332)이 NVDIMM-P 및 RDIMM 모두에 연결되지만, 일부 실시예에서는 이종 메모리 채널이 모든 NVDIMM-P 유형 DIMM과 인터페이스할 수 있는 기능을 가진다. APU(310) 상의 메모리 제어기와 NVDIMM-P(338) 간의 트랜잭션은 링크 ECC에 의해 보호된다. 링크 ECC는 메모리 채널(332)을 통한 메모리 제어기와 NVDIMM 간의 데이터 전송에 대한 데이터 무결성을 보장한다.
이 실시예에서는 NVDIMM-P 유형 DIMM이 설명되어 있지만, 다른 실시예에서는 이종 메모리 채널을 통해 다른 유형의 스토리지 클래스 메모리(SCM) 모듈과 인터페이스하기 위해 본 기술을 사용한다. 본 명세서에서 사용될 때, SCM은 시스템 메모리 공간에서 어드레스 지정이 가능한 비휘발성 메모리를 갖는 메모리 모듈을 나타낸다. SCM 모듈 내 비휘발성 메모리는 RAM으로 버퍼링되거나 SCM 모듈 보드의 RAM과 쌍을 이룰 수 있다. SCM 메모리 어드레스 맵은 운영 체제(OS) 관점에서 기존 DRAM 구성과 함께 나타난다. OS는 일반적으로 SCM에서 정의한 어드레스 범위가 기존 메모리와 "상이한" 유형의 메모리라는 것을 인식한다. 이러한 구별은 이 메모리가 더 보이지 않고(latent) 지속적인 품질을 가지고 있음을 OS에 알리기 위한 것이다. OS는 SCM 메모리를 직접 액세스 메모리 또는 파일시스템 액세스 메모리로서 매핑할 수 있다. 직접 액세스는 OS가 SCM 어드레스 범위를 물리 어드레스 지정이 가능한 메모리로서 액세스하는 것을 의미한다. 파일 시스템 액세스는 OS가 영구 메모리를 파일 시스템의 일부로서 관리하고 파일 기반 API를 통해 SCM에 대한 액세스를 관리함을 의미한다. 궁극적으로 요청은 상위 수준의 OS가 액세스를 관리하는 방식과 관계없이 SCM 어드레스 범위 내의 메모리 제어기로 전달된다.
도 4는 일부 실시예에 따라 도 2의 메모리 제어기(200)에서 사용되기에 적절한 메모리 제어기의 일부(400)를 블록도 형태로 예시한다. 도시된 부분(400)은 커맨드 큐(220), NV 큐(248), 아비터(238) 및 메모리 인터페이스 큐(214)를 포함한다. 전술한 바와 같이, 커맨드 큐(220)는 메모리 채널에 대한 메모리 액세스 요청을 수신하고, 사전 결정된 개수의 메모리 액세스 요청, 예를 들어, 64개의 요청을 보유하기 위한 복수의 엔트리를 포함한다.
아비터(238)는 영구 메모리, 가령, NVDIMM(338) 및 메모리 채널, 가령, 이종 메모리 채널(332)(도 3)에 연결된 DRAM 메모리, 가령, RDIMM(334 및 336) 중 대응하는 하나로 디스패치되기 위해 커맨드 큐(220) 및 NV 큐(248)로부터의 메모리 요청을 선택하도록 제공된다. 아비터(238)는 제1 계층 서브-아비터 회로(302), 제2 계층 서브-아비터 회로(304) 및 최종 아비터(306)를 포함한다.
제1 계층 서브-아비터 회로(302)는 커맨드 큐(220) 및 NV 큐(248)에 연결되고 DRAM 커맨드 및 영구 메모리 커맨드 중에서 후보 커맨드를 선택하기 위한 비교 로직을 포함한다. 복수의 후보 커맨드가 제2 계층 서브-아비터 회로(304)의 각자의 입력에 연결된 제1 계층 서브-아비터 회로(302)의 출력에서 제공된다. 일부 실시예에서, 제1 계층 서브-아비터 회로(302)는 후보 DRAM 커맨드 및 영구 메모리 커맨드 중에서 각각 선택하고 선택된 후보 커맨드를 나타내는 출력을 각각 갖는 적어도 2개의 제1 계층 서브-아비터를 포함한다. 이 실시예에서 커맨드 큐(220)는 메모리 제어기에서 원래 수신된 DRAM 커맨드와 영구 메모리 커맨드를 모두 보유한다. 커맨드 큐(220)에 보유된 영구 메모리 커맨드는 버퍼링된 영구 메모리 커맨드, 가령, XREAD 및 XWRITE, 영구 메모리 기록 커맨드, 가령, PWRITE, 및 희망 데이터가 버퍼링되는 경우 즉시 비휘발성 메모리로부터 판독 결과를 반환할 것이지만, 희망 데이터가 버퍼링되지 않고 대신 영구 메모리로부터 읽혀야 할 경우 결과가 이용 가능할 때 이를 반환할 추측 판독 커맨드(speculative read command), 가령, SREAD를 포함한다. 메모리 채널을 통해 전송되는 특정 비휘발성 판독 커맨드의 경우 비휘발성 DIMM은 일반적으로, 비휘발성 DIMM의 비휘발성 메모리, 비휘발성 DIMM의 DRAM, 또는 매체 제어기의 캐시에 있을 수 있는 요청된 데이터를 읽는 예측할 수 없는 프로세스로 인해 비결정적 시간 주기 후에 응답한다. 비결정적 시간 주기 동안에는 일반적으로 다른 메모리 액세스 커맨드가 이행되고 메모리 인터페이스 큐로부터 제거된다. 비휘발성 DIMM의 매체 제어기가 요청된 데이터를 읽는 프로세스를 완료할 때 이는 준비 응답 신호 "RD_RDY"를 메모리 제어기로 전송한다.
NV 버퍼(247)는 NV 큐(248) 및 NVDIMM 또는 그 밖의 다른 영구 메모리 모듈에 특정적인 제어 기능을 수행하기 위한 특정 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM) 제어 회로를 포함한다. NV 큐(248)는 NVDIMM 제어 회로에 의해 XREAD 커맨드에 대해 생성된 XREAD 커맨드를 NV 버퍼(247)에 보유한다. 또 다른 비휘발성 판독 커맨드가 RD_RDY/SEND 프로세스를 사용하는 경우, 이들은 또한 NV 큐(248)에 저장되어 이행을 기다린다. 커맨드는 데이터가 메모리 제어기로 다시 전송될 준비가 되었음을 나타내는 비휘발성 메모리로부터의 RD_RDY 신호를 기다리며 유지된다. 응답 데이터가 수신될 때 연관된 보류 중인 비휘발성 판독 커맨드가 NV 큐(248)로부터 제거된다. 이 실시예에서, NVDIMM 프로세스 하에서, 개별 SEND 커맨드는 데이터가 전송될 때까지 특정 보류 중인 비휘발성 판독 커맨드와 연관되지 않으므로 NV 큐(248)는 보류 중인 SEND 커맨드의 수를 추적하고 제1 계층 서브-아비터 회로(302)로 단일 SEND 커맨드를 제공할 필요가 있다.
일부 실시예에서, 비휘발성 메모리 커맨드, 가령, XREAD 및 XWRITE 커맨드에 대해 하나 이상의 개별 커맨드 큐가 사용될 수 있다. 이러한 실시예에서, 개별 커맨드 큐(들)는 또한 커맨드 큐(220) 및 NV 큐(248)에 대한 도시된 연결과 병렬로, 제1 계층 서브-아비터 회로(302)의 입력에 연결된 엔트리를 가진다. 이 실시예에서, 제1 계층 서브-아비터 회로(302)는 후보로 고려하기 위해 보류 중인 SEND 커맨드를 수신하는 NV 큐(248)로부터의 단일 입력을 가진다.
제2 계층 서브-아비터 회로(304)는 제1 계층 서브-아비터 회로(302)에 의해 선택된 후보 커맨드를 수신하기 위해 제1 계층 서브-아비터 회로(302)에 연결된다. 제2 계층 서브-아비터 회로(304)는 일반적으로 일련의 순서 규칙을 구현하고 후보 커맨드 중에서 적어도 하나의 커맨드를 선택하기 위한 비교 논리를 포함한다. 이 실시예에서, 제2 계층 서브-아비터 회로(304)는 제2 계층 서브-아비터 회로(304)의 각각의 출력에서 최종 아비터(306)에 제공되는 복수의 제2 계층 후보 커맨드를 선택한다. 다른 실시예에서, 최종 아비터는 사용되지 않고 대신에 제1 계층 서브-아비터 회로(304)가 최종 커맨드 선택을 한다.
최종 아비터(306)는 제2 계층 서브-아비터 회로(304)에 연결된 복수의 입력과 메모리 인터페이스 큐(214)에 연결된 적어도 하나의 출력을 가진다. 최종 아비터(306)는 메모리 인터페이스 큐(214)로의 디스패치를 위한 최종 중재 위너로서 적어도 하나의 커맨드를 선택하기 위한 비교 로직을 포함한다. 최종 아비터(306)는 또한 DRAM 메모리에 대한 리프레시 커맨드를 삽입하는 것과 같은 기능을 수행하기 위한 로직을 포함한다. 타이밍 블록(234), 페이지 테이블(236) 및 리프레시 로직(232)(도 2)과 같은 다양한 다른 제어 회로가 아비터(238)의 서브-아비터에 입력을 제공하기 위해 포함될 수 있다.
도 5는 추가 실시예에 따라, 도 2의 메모리 제어기(200)에 사용되기에 적합한 메모리 제어기의 일부(500)를 블록도 형태로 예시한다. 부분(500)은 아비터(238) 및 아비터(238)의 동작과 연관된 제어 회로 세트(560)를 포함한다. 이 실시예에서, 아비터(238)는 제1 계층 서브-아비터 세트(530), 2차 서브-아비터 세트(540) 및 최종 아비터(550)를 포함하는 3계층 아비터이다. 이 실시예에서, 도 4의 실시예와 유사하게, 커맨드 큐(220)는 DRAM 커맨드 및 영구 메모리 커맨드를 모두 유지하는 반면, NV 큐("NVQ")(564)는 판독 결과가 준비되었다는 영구 메모리로부터의 신호를 기다리고 있는 영구 메모리 판독에 대한 XREAD 커맨드를 유지한다.
제1 계층 서브-아비터(530)는 열 서브-아비터(512)("READ COL ARB"), 기록 열 서브-아비터(535)("WRITE COL ARB"), 페이지 미스 서브-아비터(532)("PM ARB"), 트랜잭션 판독 서브-아비터(537)("XREAD ARB"), 및 페이지 충돌 서브-아비터(522)("PC ARB")를 읽는다. 제2 계층 서브-아비터(540)는 열 서브-아비터(542)("COL ARB") 및 행 서브-아비터(544)("ROW ARB")를 포함한다.
READ COL ARB(512)는 커맨드 큐(220)에 연결된 입력, NV 큐(564)에 연결된 입력, 타이밍 블록(234)에 연결된 입력, 및 COL ARB(542)에 연결된 출력을 포함한다. READ COL ARB(512)는 판독 CAS 커맨드, SREAD 커맨드 및 보류 중인 XREAD 커맨드에 대한 SEND 커맨드를 포함하는 사용 가능한 특정 DRAM 커맨드 및 영구 메모리 커맨드 중에서 선택한다. 이 실시예에서 READ COL ARB(512)는 후보로서 고려할 SEND 커맨드를 수신하는 NV 큐(564)로부터의 단일 입력을 가진다. XREAD 커맨드는 NV 큐(564)에 유지되어 이행을 기다리는 반면, 판독 CAS 커맨드 및 SREAD 커맨드는 커맨드 큐(220)에 유지된다. 일반적으로 SEND 커맨드는 응답 데이터가 수신될 때까지 개별 XREAD 커맨드와 연관되지 않으므로 NV 큐(564)는 충족되지 않은 RD_RDY 응답에 기초하여 보류 중인 SEND 커맨드의 수를 추적할 필요만 있다. 따라서 이 실시예에서 READ COL ARB(512)의 입력 폭은 커맨드 큐(220)의 엔트리의 수에 NV 큐(564)로부터의 입력을 더한 수이다. READ COL ARB(512)는 서브-중재 위너(sub-arbitration winner)로 출력에 제공될 후보 커맨드를 선택할 때 커맨드가 페이지 히트(page hit)인지 여부를 포함하여, 각 커맨드에 대한 다양한 타이밍 및 우선순위 특성을 비교하는 디지털 논리를 포함한다.
WRITE COL ARB(535)는 커맨드 큐(220)에 연결된 입력, 타이밍 블록(234)에 연결된 입력, 및 COL ARB(542)에 연결된 출력을 포함한다. WRITE COL ARB(535)는 또한 기록 CAS 커맨드 및 트랜잭션 기록 커맨드(XWRITE)을 포함하는 DRAM 커맨드 및 영구 메모리 커맨드로부터 선택한다. 이 실시예에서 WRITE COL ARB(535)의 입력 폭은 커맨드 큐(220) 내 엔트리의 개수인데 왜냐하면 기록 커맨드와 XWRITE 커맨드 모두 커맨드 큐(220)에 유지되기 때문이다. WRITE COL ARB(535)는 COL ARB(542)에 연결된 출력에서 위너(winner)로 제공할 후보 커맨드를 선택할 때 각 커맨드에 대한 다양한 타이밍 및 우선순위 특성을 비교하는 디지털 로직을 포함한다. READ COL ARB(512) 및 WRITE COL ARB는 함께 페이지 히트(page hit)인 후보 커맨드를 선택하는 페이지 히트 서브-아비터 역할을 하는 동시에 SREAD, SEND 및 XWRITE 커맨드를 중재한다.
PM ARB(532)는 커맨드 큐(220)에 연결된 입력, 타이밍 블록(234)에 연결된 입력, 및 ROW ARB(544)에 연결된 출력을 포함한다. PM ARB(532)의 입력 폭은 커맨드 큐(220)의 엔트리의 수이다. PM ARB(532)는 페이지 미스(page miss) 커맨드의 다양한 특성을 비교하고 출력에서 중재 위너로 제공할 후보 커맨드를 선택하기 위한 디지털 로직을 포함한다.
XREAD ARB(537)는 커맨드 큐(220)에 연결된 입력, 타이밍 블록(234)에 연결된 입력, ROW ARB(544)에 연결된 출력을 포함하고 PM ARB(532)와 유사한 폭을 가진다. XREAD ARB는 커맨드 큐(220)에 유지된 XREAD 커맨드 중에서 후보를 선택하고 ROW ARB(544)에 연결된 출력에서 해당 후보를 중재 위너로 제공한다.
PC ARB(522)는 커맨드 큐(220)에 연결된 입력, 타이밍 블록(234)에 연결된 입력, 및 레지스터(534)에 연결된 출력을 포함한다. PC ARB(522)는 또한 커맨드 큐(220)의 크기의 입력 폭을 가진다. PC ARB(522)는 커맨드 특성, 일반적으로 우선순위 및/또는 에이지를 기반으로 페이지 충돌 커맨드를 서브-중재 위너로 선택하기 위한 디지털 로직을 포함한다. 이 실시예에서, PC ARB(522)는 승리한 후보를 제2 계층 서브-아비터에게 제시하지 않고 대신 최종 아비터(550)에 입력하기 위해 레지스터(534)에 직접 공급한다.
서브-아비터의 제2 계층은 COL ARB(542) 및 ROW ARB(544)를 포함한다. 이들 서브-아비터 각각은 레지스터(514, 524 및 534)와 유사하게 각 클록 사이클에서 후보 커맨드를 수신하기 위한 입력에 레지스터를 포함할 수 있다. COL ARB(542)는 두 입력에서 READ COL ARB(512)로부터의 후보 커맨드 및 WRITE COL ARB(535)로부터 후보 커맨드를 수신하고 커맨드 특성을 기반으로 서브-중재 위너를 선택한다. 승리한 후보는 최종 아비터(550)에 대한 입력을 위해 레지스터(514)에 공급된다. 마찬가지로, ROW ARB(544)는 자신의 입력에서 PM ARB(532) 및 XREAD ARB(537)로부터 후보 커맨드를 수신하고 커맨드 특성을 기반으로 서브-중재 위너를 선택한다. 승리한 후보는 최종 아비터(550)에 대한 입력을 위해 레지스터(524)에 공급된다.
레지스터(514)는 COL ARB(542)의 출력에 연결된 데이터 입력, UCLK 신호를 수신하기 위한 클록 입력, 및 출력을 가진다. 레지스터(524)는 ROW ARB(544)의 출력에 연결된 데이터 입력, UCLK 신호를 수신하기 위한 클록 입력, 및 출력을 가진다. 레지스터(534)는 PC ARB(522)의 출력에 연결된 데이터 입력, UCLK 신호를 수신하기 위한 클록 입력, 및 출력을 가진다.
최종 아비터(550)는 리프레시 제어 로직(232)의 출력에 연결된 제1 입력, 페이지 닫기 예측기(562)로부터의 제2 입력, 출력 레지스터(514)의 출력에 연결된 제3 입력, 출력 레지스터(524)의 출력에 연결된 제4 입력, 출력 레지스터(534)의 출력에 연결된 제5 입력, 제1 중재 위너를 "CMD" 로 라벨링된 큐(214)에 제공하기 위한 제1 출력을 가진다.
제어 회로(560)는 도 2와 관련하여 앞서 설명한 바와 같이 타이밍 블록(234) 및 페이지 테이블(236), 페이지 닫기 예측기(562)를 포함한다. 타이밍 블록(234)은 페이지 테이블(236)에 연결된 입력, 및 READ COL ARB(512), WRITE COL ARB(535), 페이지 미스 아비터(532), XREAD ARB(537) 및 PC ARB(522)에 연결된 입력 및 출력을 가진다. 페이지 테이블(236), 커맨드 큐(220)의 입력에 연결된 출력, 타이밍 블록(234)의 입력에 연결된 출력, 및 페이지 닫기 예측기(562)의 입력에 연결된 출력. 페이지 닫기 예측기(562)는 페이지 테이블(236)의 하나의 출력에 연결된 입력, 출력 레지스터(514)의 출력에 연결된 입력, 및 최종 아비터(550)의 제2 입력에 연결된 출력을 가진다.
READ COL ARB(512), WRITE COL ARB(535), 페이지 미스 아비터(532), XREAD ARB(537) 및 PC ARB(522) 각각은 이들 각자의 카테고리에 속하는 커맨드 큐(220)의 커맨드의 타이밍 적격성을 결정하기 위해 타이밍 블록(234)의 출력에 연결된 입력을 가진다. 타이밍 블록(234)은 각 랭크 내 각 뱅크에 대한 특정 작업과 관련된 지속 시간을 카운팅하는 이진 카운터의 어레이를 포함한다. 상태를 확인하는 데 필요한 타이머의 개수는 타이밍 파라미터, 주어진 메모리 유형에 대한 뱅크의 수, 지정된 메모리 채널에서 시스템이 지원하는 랭크의 수에 따라 다르다. 차례로 구현되는 타이밍 파라미터의 개수는 시스템에 구현되는 메모리 유형에 따라 다르다. 예를 들어, DDR5 및 GDDR5 메모리는 다른 DDRx 메모리 유형보다 더 많은 타이밍 파라미터를 준수하기 위해 더 많은 타이머가 필요하다. 이진 카운터로 구현된 일반 타이머의 어레이를 포함함으로써, 타이밍 블록(234)은 다른 메모리 유형에 대해 스케일링되고 재사용될 수 있다.
작동 시, 아비터(238)는 각 엔트리의 페이지 상태, 각 메모리 액세스 요청의 우선순위 및 요청 간의 종속성을 고려하여 커맨드 큐(220) 및 리프레시 제어 로직(232)에서 메모리 액세스 커맨드를 선택한다. 우선순위는 AXI4 버스로부터 수신되어 커맨드 큐(220)에 저장된 요청의 서비스 품질 또는 QoS와 관련되지만, 메모리 액세스 유형 및 아비터(238)의 동적 작동에 따라 변경될 수 있다. 최종 아비터(550)는 이들 3개의 서브-중재 위너와 리프레시 제어 로직(232)으로부터의 리프레시 동작 사이에서 선택하고, 페이지 닫기 예측기(562)에 의해 결정된 대로 판독 또는 기록 커맨드를 오토-프리차지 커맨드를 통한 판독 또는 기록으로 추가로 수정할 수 있다.
READ COL ARB(512) 및 WRITE COL ARB(535)는 페이지 히트, 즉 열린 페이지에 대한 판독 또는 기록 주기와 SEND 커맨드, SREAD 커맨드 및 XWRITE 커맨드 사이를 중재한다. 타이밍 블록(234)의 타이머에 의해 추적되고 READ COL ARB(512)에 의해 검사되는 타이밍 적격성 파라미터는 예를 들어, 행 어드레스 스트로브(RAS) 대 열 어드레스 스트로브(CAS) 지연 시간(tRCD) 및 CAS 대 CAS 레이턴시(tCCD)를 포함한다. 예를 들어, tRCD는 RAS 주기에서 페이지가 열린 후 페이지에 대한 판독 액세스가 발생하기 전에 경과해야 하는 최소 시간을 특정한다. COL ARB(542)는 할당된 액세스 우선순위에 따라 서브-중재 위너를 선택한다. 하나의 실시예에서, 우선순위는 4개의 값 중 우선순위를 나타내는 4비트 원-핫 값이지만, 이 4레벨 우선순위 방식은 단지 하나의 예일 뿐이라는 것이 자명하다. 판독 CAS, SREAD 및 SEND 커맨드는 데이터 버스를 활성 상태로 유지하기 위해 적절한 시간에 READ COL ARB(512)에 의해 선택된다. 이들 DRAM 및 영구 메모리 판독은 모두 실행될 때 데이터 버스를 점유하기 때문에 READ COL ARB(512)에서 비교 로직의 복잡성(따라서 크기)을 줄이고 최종 아비터(550)로의 입력의 수를 줄이도록 READ COL ARB(512)에서 함께 중재하는 것이 바람직하다.
페이지 충돌은 뱅크의 다른 행이 현재 활성화되어 있을 때 뱅크 내 하나의 행을 액세스하는 것이다. PC ARB(522)는 대응하는 뱅크 및 랭크에 현재 열려 있는 페이지와 충돌하는 페이지에 대한 커맨드 큐(220) 내 액세스들 사이를 중재한다. PC ARB(522)는 프리차지 커맨드를 발행하는 서브-중재 위너를 선택한다. 타이밍 블록(234)에서 타이머에 의해 추적되고 PC ARB(522)에 의해 체크되는 타이밍 적격성 파라미터는 예를 들어, 활성-프리차지(active to precharge) 커맨드 주기(tRAS)를 포함한다. 기록 커맨드에 대한 페이지 충돌 서브-중재가 후보 기록 커맨드에 대한 뱅크 그룹 번호도 고려한다. PC ARB(522)는 할당된 액세스 우선순위에 따라 서브-중재 위너를 선택한다. PC ARB(522)가 동일한 우선순위 수준에서 둘 이상의 요청을 검출하면 가장 오래된 엔트리가 승자가 된다.
페이지 미스(page miss)는 프리차지된 상태인 뱅크로의 액세스이다. 페이지 미스 아비터(532)는 프리차지된 메모리 뱅크로의 커맨드 큐(220) 내 액세스들을 중재한다. 타이밍 블록(234) 내 타이머에 의해 추적되고 페이지 미스 아비터(532)에 의해 추적되는 타이밍 적격성 파라미터는 예를 들어, 프리차지 커맨드 주기(tRP)를 포함한다. 동일한 우선순위 수준에서 페이지 미스인 둘 이상의 요청이 있는 경우 가장 오래된 엔트리가 승자가 된다.
각 서브-아비터는 각자의 서브-중재 위너에 대한 우선순위 값을 출력한다. 최종 아비터(550)는 COL ARB(542), ROW ARB(544) 및 PC ARB(522) 각각으로부터의 서브-중재 위너의 우선순위 값을 비교한다. 최종 아비터(550)는 상대적 우선순위 비교의 세트를 수행함으로써 서브-중재 위너 간의 상대적 우선순위를 결정한다. 최종 아비터(550)는 또한 서브-중재 위너가 충돌하는지 여부(즉, 동일한 DRAM 뱅크 및 랭크로 향하는지 여부)를 결정한다. 그러한 충돌이 없을 때, 최종 아비터(550)는 가장 높은 우선순위를 갖는 커맨드를 선택한다. 충돌이 있는 경우 최종 아비터(550)는 다음 규칙을 따른다. 서브-중재 위너 COL ARB(542)의 우선순위 값이 PC ARB(522)의 우선순위 값보다 높고 둘 다 동일한 뱅크 및 랭크에 속하면 최종 아비터(550)는 COL ARB(542)에 표시된 액세스를 선택한다. PC ARB(522)의 서브-중재 위너의 우선순위 값이 COL ARB(542)의 우선 순위 값보다 높고 둘 다 동일한 뱅크 및 랭크에 있는 경우 최종 아비터(550)는 몇 가지 추가 요소를 기반으로 위너를 선택한다. 일부 경우에, 페이지 닫기 예측기(page close predictor)(562)는 오토 프리차지 속성을 설정함으로써 COL ARB(542)에 의해 표시된 액세스의 종료 시 페이지가 닫히도록 한다.
READ COL ARB(512)에 의해 SREAD가 선택되면 이는 SEND 커맨드처럼 처리되며, SREAD가 영구 메모리 캐시(가령, NVDIMM 캐시)를 히트하는 경우 데이터 버스 슬롯이 SREAD 커맨드에 대한 판독 데이터를 수신하도록 예약된다. SREAD가 미스(miss)로 확인되면 영구 메모리 모듈이 데이터를 전송하지 않아 데이터 버스 슬롯 예약에서 비어 있는 슬롯이 발생한다. 이 경우 SREAD의 응답이 메모리 제어기에 도착하면 제어기는 SREAD에 대한 SEND 커맨드를 생성한다. READ COL ARB(512) 내에서, 우선순위는 메모리 액세스 에이전트로부터의 요청 우선순위에 따라 초기에 설정되지만 우선순위는 액세스 유형(판독 또는 기록) 및 액세스 순서에 따라 동적으로 조정된다. 일반적으로 COL ARB(542)는 판독에 더 높은 암시적 우선순위를 할당하지만 기록이가 완료될 때까지 진행되도록 우선순위 상승 메커니즘을 구현한다.
COL ARB(542)가 판독 또는 기록 커맨드를 선택할 때마다, 페이지 닫기 예측기(562)는 오토 프리차지(AP) 속성과 함께 커맨드를 전송할지 여부를 결정한다. 판독 또는 기록 주기 동안 오토-프리차지 속성은 지정 어드레스 비트로 설정되며 오토-프리차지 속성으로 인해 DDR 장치가 판독 또는 기록 주기가 완료된 후 페이지를 닫으므로, 메모리 제어기가 차후에 해당 뱅크에 대한 개별 프리차지 커맨드를 전송할 필요가 없어진다. 페이지 닫기 예측기(562)는 선택된 커맨드와 동일한 뱅크에 액세스하는 커맨드 큐(220)에 이미 존재하는 다른 요청을 고려한다. 페이지 닫기 예측기(562)가 메모리 액세스를 AP 커맨드로 변환하는 경우, 해당 페이지에 대한 다음 액세스는 페이지 미스가 될 것이다.
다른 실시예에서, 아비터(238)는 상이한 수의 계층과 상이한 수의 서브-아비터를 포함할 수 있다. 예를 들어, 일부 실시예는 2개의 계층을 포함하는데, 즉, DRAM 커맨드 및 영구 메모리 커맨드 중 후보 커맨드를 선택하도록 커맨드 큐에 결합된 1계층 서브-아비터 회로, 및 상기 후보 커맨드를 수신하고 상기 후보 커맨드 중에서 최종 중재 위너에서 선택하도록 상기 1계층 서브-아비터 회로에 결합된 2계층 서브-아비터 회로를 포함한다. 이러한 실시예 중 하나는 제1 계층의 서브-아비터(512, 535, 532, 537, 및 522)를 사용하여 구성되며, 이때 제1 계층으로부터의 서브-중재 위너는 COL ARB(542), ROW ARB(544) 및 최종 아비터(550)의 설명된 기능을 단일 비교 단계로 수행하는 최종 아비터에게 직접 공급된다. 또 다른 실시예에서, READ COL ARB 및 WRITE COL ARB는 후보 판독 커맨드과 기록 커맨드가 동시에 조정되지 않고 그들의 조정이 유사한 로직을 공유하기 때문에 통합된다. 그러한 실시예에서, 동일한 중재 로직이 판독 버스트 모드와 기록 버스트 모드에서 사용될 수 있다. 기록 중재 모드에서는 NV 큐(564) 입력이 마스킹된다.
도 6은 일부 실시예에 따라 메모리 액세스 커맨드를 처리하기 위한 프로세스의 흐름도(600)이다. 도시된 프로세스는 도 3 및 도 4에 도시된 것과 같은 아비터, 또는 또 다른 메모리 제어기 배열을 사용하여 구현하기에 적합하다. 프로세스는 블록(602)에서 메모리 채널로의 디스패치를 위해 DRAM 및 영구 메모리 액세스 커맨드를 선택함으로써 시작된다. 일반적으로, 커맨드는 메모리 제어기에서 수신되며 커맨드 큐에 배치되어 DRAM 메모리 및 영구 메모리로의 디스패치를 기다린다. 일부 실시예에서, DRAM 및 영구 메모리 커맨드(SEND 커맨드 제외) 모두가 단일 커맨드 큐, 가령, 커맨드 큐(220)(도 2)에 존재한다. 블록(604)에 도시된 바와 같이, 처리 중인 영속 또는 비휘발성 메모리 판독("NV 판독")에 대한 커맨드는 NV 큐(248)(도 4)와 같은 영구 메모리 큐에서 제공된다. 전술한 바와 같이, 일부 실시예에서, NV 큐(248)는 XREAD에 대한 보류 중인 SEND 커맨드의 수 또는 이행을 기다리는 NV 큐(248)에 유지되는 다른 영구 메모리 판독 커맨드의 수를 추적할 필요만 있다.
블록(606)에서, 하나 이상의 제1 계층 서브-아비터는 DRAM 커맨드 및 영구 메모리 커맨드로부터 후보 커맨드를 선택한다. 일반적으로 DRAM 커맨드는 이러한 커맨드의 변형과 함께 READ 및 WRITE 커맨드를 포함하며, 이는 채택된 DRAM 기술과 함께 사용하기 위해 READ CAS와 같은 형식으로 디코딩될 수 있다. 영구 메모리 커맨드는 영구 메모리 모듈 커맨드, 가령, XREAD("X-READ"라고도 함), XWRITE("X-WRITE"라고도 함), SREAD 및 채용된 특정 영구 메모리에 특정적일 수 있는 그 밖의 다른 비휘발성 메모리 커맨드를 포함한다. 일부 영구 메모리 커맨드는 영구 메모리 모듈의 비휘발성 저장소에 대한 확정(commitment)이 필요한 반면, 다른 커맨드는 NVDIMM-P와 같은 영구 메모리 모듈과 연결된 DRAM 버퍼에서 이행될 수 있다.이러한 두 변형 모두 본 명세서에서는 영구 메모리 커맨드로 지칭된다.
블록(606)에서 DRAM 및 영구 메모리 커맨드 둘 다 중에서 후보를 선택하는 것은 DRAM 및 영구 메모리에 대해 별도의 서브-아비터를 사용하는 것에 비해 몇 가지 이점을 제공한다. DRAM 및 영구 메모리가 모두 메모리 채널에 있는 경우, 최종 커맨드 선택은 상이한 아비터에게 배포될 필요가 있는 복잡한 비교가 필요하므로 아비터가 타이밍 병목 현상을 일으키지 않는다. 더 간단한 비교 로직으로 더 많은 서브-아비터 입력을 포함하거나 더 복잡한 비교 로직으로 더 적은 서브-아비터 입력을 포함하는 것 사이에는 균형이 있다. 예를 들어, 도 3 또는 도 4에 도시된 바와 같이 구현되는 본 명세서에 설명된 프로세스는 많은 수의 입력을 방지하는 동시에 서브-아비터 사이에 효과적으로 분산됨으로써 비교 로직의 복잡성을 줄인다. 이러한 분산으로 인해 중복성이 적은 효율적인 논리가 생성되어 아비터가 지나치게 큰 비교 로직 없이 메모리 버스의 속도 요구를 충족할 수 있다. 또한, 본 명세서의 기술은 기능적 구성(즉, 격리된 DIMM 유형 기반)보다는 리소스 중심 중재 구성(교차-DIMM 유형 기반)을 채택한다. 이러한 접근 방식은 다양한 데이터 커맨드(가령, CAS, SREAD, SEND, XWRITE)을 병합하여 데이터 버스 경합을 방지하고 하나의 데이터 커맨드, 하나의 행 커맨드 및 하나의 프리차지 커맨드를 병합하여 커맨드 버스 경합을 방지한다.
블록(608)에서, 하나 이상의 제2 계층 서브-아비터는 제1 계층 서브-아비터에 의해 제공된 후보 중에서 선택한다. 예를 들어, 도 5의 구현에서, COL ARB(542)는 DRAM 커맨드(일반적으로 페이지 히트) 또는 영구 메모리 커맨드일 수 있는 후보 커맨드 중에서 선택하고, ROW ARB(544)는 DRAM 행 열기 커맨드(페이지 미스) 또는 영구 메모리 커맨드일 수 있는 후보 커맨드 중에서 선택한다. 일부 실시예에서, 앞서 논의된 바와 같이, 제2 계층 서브-아비터는 또한 최종 서브-아비터로서 기능한다. 이러한 실시예에서, 제2 계층 서브-아비터의 비교 로직은 앞서 논의된 바와 같이 더 높은 복잡성을 가진다.
블록(610)에서, 최종 아비터는 메모리 채널로의 디스패치를 위해 제2 계층 서브-아비터 중에서 적어도 하나의 커맨드를 선택한다. 이해할 수 있는 바와 같이, 임의의 특정 커맨드 디스패치 주기에서 DRAM 커맨드 또는 영구 메모리 커맨드가 최종 아비터에 의해 선택될 수 있다. 이 프로세스에 따라 아비터의 복수의 계층 간에 선택 로직을 분산시키면 DRAM 커맨드와 영구 메모리 커맨드의 선택을 병합하는 효율적인 프로세스가 가능해지며, 동일한 채널에서 영구 메모리 커맨드를 핸들링하는 것과 관련된 추가되는 복잡성을 핸들링하는 동시에 DRAM 중재 프로세스의 속도 요구를 충족할 수 있는 아비터 설계가 가능하다. 따라서, 본 명세서에 기술된 메모리 제어기 및 데이터 처리 시스템은 비휘발성 메모리 모듈과 인터페이스하는 메모리 제어기의 능력을 향상시킨다.
도 2의 메모리 제어기(200) 또는 이의 일부분, 가령, 아비터(238)는 프로그램에 의해 판독될 수 있고 집적 회로를 제조하기 위해 직접적으로 또는 간접적으로 사용될 수 있는 데이터베이스 또는 그 밖의 다른 데이터 구조로 형성된 컴퓨터 액세스 가능한 데이터 구조에 의해 기술 또는 표현될 수 있다.예를 들어, 이 데이터 구조는 하이 레벨 설계 언어(HDL), 가령, Verilog 또는 VHDL에서의 하드웨어 기능에 대한 동작 수준 기술 또는 RTL(레지스터 전송 수준) 기술일 수 있다. 기술은 합성 라이브러리로부터의 게이트 목록을 포함하는 넷리스트를 생성하기 위해 기술을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 넷리스트에는 집적 회로를 포함한 하드웨어의 기능을 나타내는 게이트 세트가 포함되어 있다. 그런 다음 네트리스트를 배치하고 라우팅하여 마스크에 적용할 기하학적 모양을 설명하는 데이터 세트를 생성할 수 있다. 그런 다음 마스크는 집적 회로를 생산하기 위해 다양한 반도체 제조 단계에서 사용될 수 있다. 대안으로, 컴퓨터 액세스 가능한 저장 매체 상의 데이터베이스는 넷리스트(합성 라이브러리 유무에 관계없이) 또는 원하는 대로 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
특정 실시예가 설명되었지만, 이들 실시예에 대한 다양한 변형이 통상의 기술자에게 명백할 것이다. 예를 들어, 메모리 채널 제어기(210) 및/또는 전력 엔진(250)의 내부 아키텍처는 상이한 실시예에서 달라질 수 있다. 메모리 제어기(200)는 NVDIMM-P 및 DDRx 외에 고대역폭 메모리(HBM), RAMbus DRAM(RDRAM) 등과 같은 다른 유형의 메모리와 인터페이스할 수 있다. 예시된 실시예에서는 개별 DIMM에 대응하는 메모리의 각 랭크를 보여 주었지만, 다른 실시예에서는 각 DIMM이 여러 랭크를 지원할 수 있다. 또한, 일반적으로 이종 메모리 채널을 지원하지만, 이종 채널 전체가 비휘발성 DIMM으로 채워질 수도 있다. 또한, 여기서 논의된 비휘발성 판독 커맨드의 예시 유형은 XREAD 커맨드이지만, 다른 유형의 비휘발성 판독 커맨드도 지원된다. 예를 들어, NVDIMM-P 규격은 요청된 메모리가 비휘발성 DIMM의 DRAM에 있는 경우 결정적 응답 시간을 갖지만 비휘발성 DIMM이 요청한 데이터를 DRAM에서 사용할 수 없고 대신 비휘발성 메모리 매체로부터 읽혀야 한다고 결정하는 경우 비결정적 응답 시간과 함께 비휘발성 판독으로서 해석되는 추측성 판독(SREAD) 커맨드를 제공한다. 일부 실시예에서, 이러한 "미스(miss)"가 발생하면 SREAD 커맨드도 NV 큐에 추가된 다음 XREAD와 유사하게 처리된다.
따라서, 첨부된 청구범위는 개시된 실시예의 범위 내에 속하는 개시된 실시예의 모든 수정을 포괄하도록 의도된다.

Claims (20)

  1. 메모리 제어기로서,
    메모리 채널에 대한 메모리 액세스 커맨드를 수신하기 위한 입력부, 및 사전 결정된 개수의 메모리 액세스 커맨드를 보유하기 위한 다수의 엔트리를 갖는 커맨드 큐; 및
    상기 메모리 채널에 결합된 DRAM 메모리 및 영구 메모리 중 하나로 디스패치(dispatch)되도록 상기 커맨드 큐로부터 메모리 커맨드를 선택하기 위한 아비터(arbiter)를 포함하며, 상기 아비터는
    DRAM 커맨드 및 영구 메모리 커맨드 중에서 후보 커맨드를 선택하기 위해 상기 커맨드 큐에 결합된 제1 계층 서브-아비터 회로(first-tier sub-arbiter circuit); 및
    상기 후보 커맨드를 수신하고, 상기 후보 커맨드 중에서 적어도 하나의 커맨드를 선택하기 위해 상기 제1 계층 서브-아비터 회로에 결합된 제2 계층 서브-아비터 회로를 포함하는, 메모리 제어기.
  2. 제1항에 있어서, 상기 제1 계층 서브-아비터 회로는 후보 DRAM 커맨드 및 영구 메모리 커맨드 중에서 각각 선택하고, 선택된 후보 커맨드를 나타내는 출력을 각각 갖는 적어도 2개의 제1 계층 서브-아비터를 포함하는, 메모리 제어기.
  3. 제2항에 있어서,
    상기 제1 계층 서브-아비터는 판독 CAS(column-address strobe) 및 SREAD 커맨드 중에서 선택하는 판독 열(column) 서브-아비터, 기록 CAS 및 X-WRITE 커맨드로부터 선택하는 기록 열 서브-아비터, 페이지 미스 서브-아비터(page miss sub-arbiter) 및 X-READ 서브-아비터를 포함하고, 각각은 각자의 후보 커맨드를 선택하고;
    제2 계층 서브-아비터 회로는 상기 판독 열 서브-아비터 및 상기 기록 열 서브-아비터로부터 후보 커맨드를 선택하는 제1 서브-아비터, 및 상기 페이지 미스 서브-아비터 및 상기 X-read 서브-아비터로부터 후보 커맨드를 선택하는 제2 서브-아비터를 포함하고;
    상기 아비터는 상기 제1 서브-아비터 및 상기 제2 서브-아비터의 후보 커맨드로부터 선택하는 최종 아비터를 더 포함하는, 메모리 제어기.
  4. 제3항에 있어서, 페이지-충돌 후보 커맨드를 선택하기 위해 상기 커맨드 큐에 결합된 페이지-충돌 서브-아비터(page conflict sub-arbiter)를 더 포함하며, 상기 최종 아비터는 또한 상기 페이지-충돌 후보 커맨드로부터 선택하는, 메모리 제어기.
  5. 제3항에 있어서, 상기 판독 열 서브-아비터는 또한 상기 영구 메모리에 대한 SEND 커맨드로부터 선택하는, 메모리 제어기.
  6. 제5항에 있어서, 상기 판독 열 서브-아비터가 SEND 커맨드를 선택하는, 영구 메모리 커맨드 큐를 더 포함하는, 메모리 제어기.
  7. 제6항에 있어서, 상기 영구 메모리 커맨드 큐는 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM) 제어 회로로부터 전송된 판독 준비 응답에 기초하여 상기 메모리 제어기에 의해 SEND 커맨드를 제공받는, 메모리 제어기.
  8. 방법으로서,
    DRAM 커맨드 및 영구 메모리 커맨드를 포함하는 복수의 메모리 액세스 커맨드를 메모리 제어기에서 수신하는 단계;
    DRAM 메모리 및 영구 메모리로의 디스패치를 기다리기 위해 상기 메모리 액세스 커맨드를 커맨드 큐에 배치하는 단계;
    상기 커맨드 큐로부터 다수의 후보 커맨드를 선택하는 단계 - 상기 후보 커맨드 중 적어도 2개는 상기 DRAM 커맨드 및 상기 영구 메모리 커맨드로부터 선택됨 -; 및
    메모리 채널 상에 전송하기 위해 상기 후보 커맨드 중에서 적어도 하나의 커맨드를 선택하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 다수의 후보 커맨드를 선택하는 단계는 후보 DRAM 커맨드 및 영구 메모리 커맨드 중에서 각각 선택하고, 선택된 후보 커맨드를 나타내는 출력을 각각 갖는 적어도 2개의 제1 계층 서브-아비터에 의해 수행되는, 방법.
  10. 제8항에 있어서, 상기 다수의 후보 커맨드를 선택하는 단계는 판독 CAS(Column-Address strobe) 및 SREAD 커맨드 중에서 제1 후보를 선택하고, 기록 CAS 및 X-WRITE 커맨드 중에서 제2 후보를 선택하며, 페이지-미스 커맨드 중에서 제3 후보를 선택하고, X-READ 커맨드 중에서 제4 후보를 선택하는 단계를 포함하는, 방법.
  11. 제10항에 있어서, 상기 제1 후보 및 상기 제2 후보로부터 제2 계층 후보 커맨드를 선택하고, 상기 제3 후보 및 상기 제4 후보로부터 또 다른 제2 계층 후보를 선택하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서, 메모리 채널 상에 전송하기 위해 상기 후보 커맨드 중에서 적어도 하나의 커맨드를 선택하는 단계는 상기 제2 계층 후보로부터 최종 후보를 선택하는 단계를 포함하는, 방법.
  13. 제12항에 있어서, 다수의 후보 커맨드를 선택하는 단계는 영구 메모리 큐로부터의 이용 가능한 SEND 커맨드로부터 선택하는 단계를 더 포함하는, 방법.
  14. 데이터 처리 시스템으로서,
    DRAM 메모리 및 영구 메모리에 결합된 메모리 채널;
    상기 메모리 채널에 결합된 메모리 제어기를 포함하며, 상기 메모리 제어기는,
    상기 메모리 채널에 대한 메모리 액세스 커맨드를 수신하기 위한 입력부, 및 사전 결정된 개수의 메모리 액세스 커맨드를 보유하기 위한 다수의 엔트리를 갖는 커맨드 큐; 및
    상기 영구 메모리 및 상기 DRAM 메모리 중 하나로 송신을 위해 상기 커맨드 큐로부터 메모리 커맨드를 선택하기 위한 아비터를 포함하며, 상기 아비터는,
    DRAM 커맨드 및 영구 메모리 커맨드 중에서 후보 커맨드를 선택하기 위해 상기 커맨드 큐에 결합된 제1 계층 서브-아비터 회로; 및
    상기 후보 커맨드를 수신하고, 상기 후보 커맨드 중에서 적어도 하나의 커맨드를 선택하기 위해 상기 제1 계층 서브-아비터 회로에 결합된 제2 계층 서브-아비터 회로를 포함하는, 데이터 처리 시스템.
  15. 제14항에 있어서, 상기 제1 계층 서브-아비터 회로는 후보 DRAM 커맨드 및 영구 메모리 커맨드 중에서 각각 선택하는 적어도 2개의 제1 계층 서브-아비터를 포함하고, 각각은 선택된 후보 커맨드를 나타내는 출력을 갖는, 데이터 처리 시스템.
  16. 제15항에 있어서,
    상기 제1 계층 서브-아비터는 판독 CAS(column-address strobe) 및 SREAD 커맨드로부터 선택하는 판독 열 서브-아비터, 기록 CAS 및 X-WRITE 커맨드로부터 선택하는 기록 열 서브-아비터, 페이지 미스 서브-아비터 및 X-READ 서브-아비터를 포함하고, 각각은 각자의 후보 커맨드를 선택하고;
    상기 제2 계층 서브-아비터 회로는 상기 판독 열 서브-아비터 및 상기 기록 열 서브-아비터로부터 후보 커맨드를 선택하는 제1 서브-아비터, 및 상기 페이지 미스 서브-아비터 및 상기 X-read 서브-아비터로부터 후보 커맨드를 선택하는 제2 서브-아비터를 포함하고;
    상기 아비터는 상기 제1 서브-아비터 및 상기 제2 서브-아비터의 후보 커맨드로부터 선택하는 최종 아비터를 더 포함하는, 데이터 처리 시스템.
  17. 제16항에 있어서, 페이지-충돌 후보 커맨드를 선택하기 위해 상기 커맨드 큐에 결합된 페이지-충돌 서브-아비터를 더 포함하며, 상기 최종 아비터는 또한 상기 페이지-충돌 후보 커맨드로부터 선택하는, 데이터 처리 시스템.
  18. 제16항에 있어서, 상기 판독 열 서브-아비터는 또한 상기 영구 메모리에 대한 SEND 커맨드로부터 선택하는, 데이터 처리 시스템.
  19. 제18항에 있어서, 상기 판독 열 서브-아비터가 SEND 커맨드를 제공받는, 영구 메모리 커맨드 큐를 더 포함하는, 데이터 처리 시스템.
  20. 제19항에 있어서, 상기 영구 메모리 커맨드 큐는 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM) 제어 회로로부터 전송된 판독 준비 응답에 기초하여 상기 메모리 제어기에 의해 SEND 커맨드를 제공받는, 데이터 처리 시스템.
KR1020247002401A 2021-06-22 2022-05-26 하이브리드 dram/영구 메모리 채널 중재 기능을 갖는 메모리 제어기 KR20240022655A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/354,806 2021-06-22
US17/354,806 US11995008B2 (en) 2021-06-22 2021-06-22 Memory controller with hybrid DRAM/persistent memory channel arbitration
PCT/US2022/031102 WO2022271404A1 (en) 2021-06-22 2022-05-26 Memory controller with hybrid dram/persistent memory channel arbitration

Publications (1)

Publication Number Publication Date
KR20240022655A true KR20240022655A (ko) 2024-02-20

Family

ID=84490315

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247002401A KR20240022655A (ko) 2021-06-22 2022-05-26 하이브리드 dram/영구 메모리 채널 중재 기능을 갖는 메모리 제어기

Country Status (5)

Country Link
US (1) US11995008B2 (ko)
EP (1) EP4359902A1 (ko)
KR (1) KR20240022655A (ko)
CN (1) CN117546135A (ko)
WO (1) WO2022271404A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117891758B (zh) * 2024-03-12 2024-05-17 成都登临科技有限公司 一种基于仲裁的存储访问***、处理器及计算设备

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US5926628A (en) * 1997-07-15 1999-07-20 International Business Machines Corporation Selectable priority bus arbitration scheme
US6295586B1 (en) * 1998-12-04 2001-09-25 Advanced Micro Devices, Inc. Queue based memory controller
JP3609656B2 (ja) * 1999-07-30 2005-01-12 株式会社日立製作所 コンピュータシステム
US6804758B2 (en) * 2001-06-29 2004-10-12 Xgi Technology Inc. Method for adaptive arbitration of requests for memory access in a multi-stage pipeline engine
US7007123B2 (en) * 2002-03-28 2006-02-28 Alcatel Binary tree arbitration system and method using embedded logic structure for controlling flag direction in multi-level arbiter node
US7366854B2 (en) 2003-05-08 2008-04-29 Hewlett-Packard Development Company, L.P. Systems and methods for scheduling memory requests utilizing multi-level arbitration
US7461216B2 (en) * 2006-02-23 2008-12-02 Hewlett-Packard Development Company, L.P. Memory controller
US7617368B2 (en) * 2006-06-14 2009-11-10 Nvidia Corporation Memory interface with independent arbitration of precharge, activate, and read/write
US7664907B1 (en) * 2006-11-02 2010-02-16 Nvidia Corporation Page stream sorter with dynamic binning
US8271746B1 (en) * 2006-11-03 2012-09-18 Nvidia Corporation Tiering of linear clients
US8427891B2 (en) * 2007-04-17 2013-04-23 Rambus Inc. Hybrid volatile and non-volatile memory device with a shared interface circuit
US8259738B2 (en) * 2007-05-01 2012-09-04 Net Navigation Systems, Llc Channel service manager with priority queuing
JP2008287528A (ja) * 2007-05-18 2008-11-27 Renesas Technology Corp リクエスト調停装置及びメモリコントローラ
US7739461B2 (en) * 2007-07-10 2010-06-15 International Business Machines Corporation DRAM power management in a memory controller
US7673087B1 (en) * 2008-03-27 2010-03-02 Xilinx, Inc. Arbitration for an embedded processor block core in an integrated circuit
US8615629B2 (en) * 2010-01-18 2013-12-24 Marvell International Ltd. Access scheduler
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
JP5771289B2 (ja) * 2011-12-29 2015-08-26 インテル・コーポレーション データを伴わない投機的な所有権のサポート
KR20140028618A (ko) * 2012-08-29 2014-03-10 삼성전자주식회사 쓰기 페일을 줄이는 메모리 장치, 이를 포함하는 메모리 시스템 및 그 쓰기 방법
US8867533B2 (en) * 2013-01-08 2014-10-21 Apple Inc. Multi-tier switch interface unit arbiter
US20140379846A1 (en) * 2013-06-20 2014-12-25 Nvidia Corporation Technique for coordinating memory access requests from clients in a mobile device
US9330432B2 (en) * 2013-08-19 2016-05-03 Apple Inc. Queuing system for register file access
US9576637B1 (en) * 2016-05-25 2017-02-21 Advanced Micro Devices, Inc. Fine granularity refresh
US10684969B2 (en) * 2016-07-15 2020-06-16 Advanced Micro Devices, Inc. Command arbitration for high speed memory interfaces
US10402120B2 (en) 2016-07-15 2019-09-03 Advanced Micro Devices, Inc. Memory controller arbiter with streak and read/write transaction management
KR20180118329A (ko) 2017-04-21 2018-10-31 에스케이하이닉스 주식회사 메모리 시스템, 데이터 처리 시스템 및 그것의 동작 방법
JP2020016954A (ja) 2018-07-23 2020-01-30 キオクシア株式会社 メモリシステム
US10649922B2 (en) 2018-08-06 2020-05-12 Apple Inc. Systems and methods for scheduling different types of memory requests with varying data sizes
US11099778B2 (en) * 2018-08-08 2021-08-24 Micron Technology, Inc. Controller command scheduling in a memory system to increase command bus utilization
US11409436B2 (en) * 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests

Also Published As

Publication number Publication date
WO2022271404A1 (en) 2022-12-29
CN117546135A (zh) 2024-02-09
US20220405214A1 (en) 2022-12-22
US11995008B2 (en) 2024-05-28
EP4359902A1 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
CN107924375B (zh) 用于高速存储器接口的命令仲裁
US11748034B2 (en) Signalling for heterogeneous memory systems
KR102615693B1 (ko) Dram을 위한 리프레시 관리
JP7195484B1 (ja) 不揮発性デュアルインラインメモリモジュールのコマンドリプレイ
KR20230157522A (ko) 중재 동안의 기록 뱅크 그룹 마스크
US20240069811A1 (en) Efficient rank switching in multi-rank memory controller
US11782640B2 (en) Efficient and low latency memory access scheduling
US11625352B2 (en) DRAM command streak management
KR20240022655A (ko) 하이브리드 dram/영구 메모리 채널 중재 기능을 갖는 메모리 제어기
EP3270294B1 (en) Command arbitration for high-speed memory interfaces
KR20230158571A (ko) 멀티-큐 메모리 컨트롤러를 위한 크레딧 스킴
KR20230004912A (ko) 효율적인 메모리 버스 관리
US20240211173A1 (en) Performance of bank refresh
CN117099076A (zh) Dram命令拖尾效率管理