KR20230158571A - 멀티-큐 메모리 컨트롤러를 위한 크레딧 스킴 - Google Patents

멀티-큐 메모리 컨트롤러를 위한 크레딧 스킴 Download PDF

Info

Publication number
KR20230158571A
KR20230158571A KR1020237035611A KR20237035611A KR20230158571A KR 20230158571 A KR20230158571 A KR 20230158571A KR 1020237035611 A KR1020237035611 A KR 1020237035611A KR 20237035611 A KR20237035611 A KR 20237035611A KR 20230158571 A KR20230158571 A KR 20230158571A
Authority
KR
South Korea
Prior art keywords
memory
request
entries
command
memory access
Prior art date
Application number
KR1020237035611A
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 KR20230158571A publication Critical patent/KR20230158571A/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

메모리 컨트롤러는 어드레스 디코더, 제1 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 어드레스 디코더의 제1 출력에 결합된 제1 커맨드 큐, 및 제2 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 어드레스 디코더의 제2 출력에 결합된 제2 커맨드 큐를 포함한다. 요청 크레딧 제어 회로가 제1 커맨드 큐 및 제2 커맨드 큐에 결합되고, 미처리 요청 크레딧들의 수를 추적하도록 동작한다. 요청 크레딧 제어 회로는 지정된 이벤트에 응답하여 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 요청 크레딧을 발행한다.

Description

멀티-큐 메모리 컨트롤러를 위한 크레딧 스킴
컴퓨터 시스템들은 전형적으로 메인 메모리에 대해 저렴한 고밀도 DRAM(dynamic random access memory) 칩들을 사용한다. 오늘날 판매되는 대부분의 DRAM 칩들은 JEDEC(Joint Electron Devices Engineering Council)에 의해 공표된 다양한 DDR(double data rate) DRAM 표준들과 호환된다. DDR DRAM들은 고속 액세스 회로들을 갖는 종래의 DRAM 메모리 셀 어레이들을 사용하여 높은 전송 레이트들을 달성하고 메모리 버스의 이용을 개선한다. DDR 메모리 컨트롤러가 더 많은 DRAM 모듈들을 수용하고 단일 채널을 사용하는 것보다 더 빠르게 메모리와 데이터를 교환하기 위해 다수의 DDR 채널들과 인터페이스할 수 있다. 예를 들어, 몇몇 메모리 컨트롤러들은 2개 또는 4개의 DDR 메모리 채널들을 포함한다.
현대의 DDR 메모리 컨트롤러들은 보류 중인 메모리 액세스 요청들을 저장하도록 큐들을 유지하여, 그들이 보류 중인 메모리 액세스 요청들이 생성된 또는 저장된 순서에 관하여 순서를 벗어나 보류 중인 메모리 액세스 요청들을 선택할 수 있게 하여, 효율성을 증가시킨다. 특정 큐가 가득 차 있기 때문에 메모리 액세스 요청들이 거부되는 것을 방지하기 위해, 메모리 컨트롤러의 데이터 인터페이스는 크레딧 제어 스킴을 사용하여 메모리 액세스 요청들의 흐름을 제어하며, 여기서 요청 크레딧들이 그의 데이터 인터페이스 패브릭과 같은 호스트 시스템의 다양한 부분들에 제공되어 그들이 커맨드 큐에의 엔트리를 위해 메모리 요청들을 전송할 수 있게 한다. 메모리 컨트롤러들은 또한 그들이 상이한 메모리 유형들, 밀도들, 및 메모리 채널 토폴로지들에 대해 구성될 수 있도록 충분히 유연할 필요가 있지만, 이러한 상이한 모드들을 지원하기 위해 칩 비용에 추가될 많은 양의 추가적인 회로 영역을 요구함이 없이 그렇게 하는 것이 필요하다.
도 1은 종래 기술에서 알려진 가속 처리 유닛(APU) 및 메모리 시스템을 블록도 형태로 예시한다.
도 2는 몇몇 실시예들에 따른 도 1의 것과 같은 APU에서 사용하기에 적합한 듀얼-채널 메모리 컨트롤러를 포함하는 부분 데이터 처리 시스템을 블록도 형태로 예시한다.
도 3은 몇몇 실시예들에 따른 도 2의 크레딧 제어 회로를 구현하기에 적합한 크레딧 제어 회로의 블록도를 예시한다.
도 4는 몇몇 실시예들에 따른 요청 크레딧들을 관리하기 위한 프로세스의 흐름도이다.
도 5는 듀얼-채널 메모리 컨트롤러에서 요청 크레딧들을 관리하기 위한 다른 프로세스의 흐름도이다.
하기의 설명에서, 상이한 도면들에서의 동일한 참조 번호들의 사용은 유사하거나 동일한 아이템들을 지시한다. 달리 언급되지 않는 한, 단어 "결합된" 및 그의 관련된 동사 형태들은 당업계에 공지된 수단에 의한 직접적인 접속 및 간접적인 전기 접속 둘 모두를 포함하며, 달리 언급되지 않는 한, 직접적인 접속에 대한 임의의 설명은 적합한 형태의 간접적인 전기 접속을 사용하는 대안적인 실시예들도 암시한다.
메모리 컨트롤러는 어드레스 디코더, 제1 커맨드 큐, 제2 커맨드 큐, 및 요청 크레딧 제어 회로를 포함한다. 어드레스 디코더는 메모리 액세스 요청들을 수신하기 위한 제1 입력, 제1 출력, 및 제2 출력을 갖는다. 제1 커맨드 큐는 제1 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 어드레스 디코더의 제1 출력에 접속된 입력, 및 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는다. 제2 커맨드 큐는 제2 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 어드레스 디코더의 제2 출력에 접속된 입력, 및 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는다. 요청 크레딧 제어 회로는 제1 커맨드 큐 및 제2 커맨드 큐에 접속된다. 요청 크레딧 제어 회로는 미처리 요청 크레딧들의 수를 추적하고, 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 요청 크레딧을 발행하도록 동작가능하다.
방법은 메모리 컨트롤러에서 복수의 메모리 액세스 요청들을 수신하는 단계를 포함한다. 메모리 액세스 요청들의 어드레스들은 디코딩되고, 제1 메모리 채널 및 제2 메모리 채널 중 하나가 메모리 액세스 요청들 각각을 수신하도록 선택된다. 어드레스들을 디코딩한 후에, 방법은 각각의 메모리 액세스 요청을 제1 메모리 채널과 연관된 제1 커맨드 큐 및 제2 메모리 채널과 연관된 제2 커맨드 큐 중 하나로 전송하는 단계를 포함한다. 지정된 이벤트에 응답하여, 방법은 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 요청 크레딧을 발행하는 단계를 포함한다.
데이터 처리 시스템은 데이터 패브릭, 제1 및 제2 메모리 채널들, 및 적어도 하나의 메모리 액세싱 엔진으로부터 데이터 패브릭을 통해 수신된 메모리 액세스 요청들을 이행하기 위해 데이터 패브릭과 제1 및 제2 메모리 채널들에 접속된 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는 어드레스 디코더, 제1 커맨드 큐, 제2 커맨드 큐, 및 요청 크레딧 제어 회로를 포함한다. 어드레스 디코더는 메모리 액세스 요청들을 수신하기 위한 제1 입력, 제1 출력, 및 제2 출력을 갖는다. 제1 커맨드 큐는 제1 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 어드레스 디코더의 제1 출력에 접속된 입력, 및 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는다. 제2 커맨드 큐는 제2 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 어드레스 디코더의 제2 출력에 접속된 입력, 및 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는다. 요청 크레딧 제어 회로는 제1 커맨드 큐 및 제2 커맨드 큐에 접속된다. 요청 크레딧 제어 회로는 미처리 요청 크레딧들의 수를 추적하고, 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 요청 크레딧을 발행하도록 동작가능하다.
도 1은 종래 기술에서 알려진 가속 처리 유닛(APU)(100) 및 메모리 시스템(130)을 블록도 형태로 예시한다. APU(100)는 호스트 데이터 처리 시스템에서 프로세서로서 사용하기에 적합한 집적 회로이며, 일반적으로 중앙 처리 유닛(CPU) 코어 컴플렉스(110), 그래픽 코어(120), 한 세트의 디스플레이 엔진들(122), 데이터 패브릭(125), 메모리 관리 허브(140), 한 세트의 주변 컨트롤러들(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) 각각은 단일 코어들일 수 있거나, 추가로 캐시들과 같은 소정 자원들을 공유하는 2개 이상의 단일 코어를 갖는 코어 컴플렉스일 수 있다.
그래픽 코어(120)는 고집적 및 병렬 방식으로 정점 처리, 프래그먼트 처리, 셰이딩, 텍스처 블렌딩 등과 같은 그래픽 동작들을 수행할 수 있는 고성능 그래픽 처리 유닛(GPU)이다. 그래픽 코어(120)는 SMN에 그리고 데이터 패브릭(125)에 양방향으로 접속되고, 데이터 패브릭(125)에 메모리 액세스 요청들을 제공할 수 있다. 이와 관련하여, APU(100)는 CPU 코어 컴플렉스(110)와 그래픽 코어(120)가 동일한 메모리 공간을 공유하는 통합 메모리 아키텍처, 또는 CPU 코어 컴플렉스(110)와 그래픽 코어(120)가 메모리 공간의 일부를 공유하는 반면, 그래픽 코어(120)가 또한 CPU 코어 컴플렉스(110)에 의해 액세스 가능하지 않은 프라이빗 그래픽 메모리를 사용하는 메모리 아키텍처를 지원할 수 있다.
디스플레이 엔진들(122)은 모니터 상에의 디스플레이를 위해 그래픽 코어(120)에 의해 생성된 객체들을 렌더링하고 래스터화한다. 그래픽 코어(120) 및 디스플레이 엔진들(122)은 메모리 시스템(130) 내의 적절한 어드레스들로의 균일한 이전을 위해 데이터 패브릭(125)을 통해 공통 메모리 관리 허브(140)에 양방향으로 접속된다.
데이터 패브릭(125)은 임의의 메모리 액세싱 에이전트와 메모리 관리 허브(140) 사이에서 메모리 액세스 요청들 및 메모리 응답들을 라우팅하기 위한 크로스바 스위치를 포함한다. 그것은 또한 시스템 구성에 기초하여 메모리 액세스들의 목적지들을 결정하기 위한, 기본 입출력 시스템(BIOS)에 의해 정의된, 시스템 메모리 맵뿐만 아니라, 각각의 가상 접속을 위한 버퍼들을 포함한다.
주변 컨트롤러들(160)은 USB(universal serial bus) 컨트롤러(162) 및 SATA(Serial Advanced Technology Attachment) 인터페이스 컨트롤러(164)를 포함하며, 이들 각각은 시스템 허브(166)에 그리고 SMN 버스에 양방향으로 접속된다. 이러한 2개의 컨트롤러는 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) 상의 다양한 프로세서들의 파워-업 시퀀싱을 관리하고, 리셋, 인에이블 및 다른 신호들을 통해 다수의 오프-칩 디바이스들을 제어한다. 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)를 통해 메모리 채널 컨트롤러(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개의 메모리 채널 컨트롤러를 갖는 메모리 컨트롤러의 인스턴스화이고, 아래에서 추가로 설명될 방식으로 메모리 채널 컨트롤러(143) 및 메모리 채널 컨트롤러(144) 둘 모두의 동작을 제어하기 위해 공유 전력 엔진(149)을 사용한다. 메모리 채널들(141 및 142) 각각은 DDR 버전 5(DDR5), DDR 버전 4(DDR4), 저전력 DDR4(LPDDR4), 그래픽 DDR 버전 5(GDDR5), 및 고대역폭 메모리(HBM)와 같은 최신 DDR 메모리들에 접속할 수 있고, 미래의 메모리 기술들에 대해 적응될 수 있다. 이러한 메모리들은 고 버스 대역폭 및 고속 동작을 제공한다. 동시에, 그들은 또한 랩톱 컴퓨터들과 같은 배터리-급전식 애플리케이션들에 대한 전력을 절감하기 위해 저전력 모드들을 제공하고, 또한 내장 열 모니터링을 제공한다.
메모리 시스템(130)은 메모리 채널(131) 및 메모리 채널(133)을 포함한다. 메모리 채널(131)은 이 예에서 별개의 랭크들에 대응하는 대표적인 듀얼 인라인 메모리 모듈들(DIMM들)(134, 136, 및 138)을 포함하여, DDRx 버스(132)에 접속된 DIMM들의 세트를 포함한다. 마찬가지로, 메모리 채널(133)은 대표적인 DIMM들(135, 137, 및 139)을 포함하여, DDRx 버스(129)에 접속된 DIMM들의 세트를 포함한다.
APU(100)는 호스트 데이터 처리 시스템의 중앙 처리 유닛(CPU)으로서 동작하고, 현대의 컴퓨터 시스템들에서 유용한 다양한 버스들 및 인터페이스들을 제공한다. 이러한 인터페이스들은 2개의 더블 데이터 레이트(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에서 사용하기에 적합한 듀얼-채널 메모리 컨트롤러(210)를 포함하는 부분 데이터 처리 시스템(200)을 블록도 형태로 예시한다. 데이터 패브릭(125)에 접속된 듀얼-채널 메모리 컨트롤러(210)가 도시되며, 이 데이터 패브릭(125)으로 듀얼-채널 메모리 컨트롤러(210)가 코히런트 슬레이브 에이전트(250) 및 코히런트 마스터 에이전트(260)를 포함한 데이터 처리 시스템(200)에 존재하는 다수의 메모리 에이전트들과 통신할 수 있다. 듀얼-채널 메모리 컨트롤러(210)는 2개의 별개의 메모리 채널 컨트롤러들(143 및 144)(도 1)을 대체할 수 있고, 단일 메모리 컨트롤러 인터페이스(212)가 메모리 액세스 커맨드들을 전송하고 결과들을 수신하는 데 이용될 수 있도록 데이터 패브릭(125) 및 데이터 처리 시스템(200) 내의 다양한 메모리 어드레싱 에이전트들에 투명한 방식으로 2개의 DDRx 채널들을 함께 제어할 수 있다. 또한, 듀얼 채널 메모리 컨트롤러(210)는, 예를 들어, DDR5 DRAM들과 함께 사용하기 위한 DDR5 사양에 정의된 바와 같은 2개의 서브-채널들, 또는 고대역폭 메모리 2(HBM2) 및 HBM3 표준들에 정의된 그러한 서브-채널들을 제어할 수 있다. 듀얼-채널 메모리 컨트롤러(210)는 일반적으로 인터페이스(212), 크레딧 제어 회로(221), 어드레스 디코더(222), 및 상이한 메모리 채널에 각각 할당된 메모리 채널 제어 회로부(223)의 2개의 인스턴스들을 포함한다. 메모리 채널 제어 회로부(223)의 각각의 인스턴스는 메모리 인터페이스 큐(214), 커맨드 큐(220), 콘텐츠 어드레싱 가능 메모리(CAM)(224), 리플레이 큐(230)를 포함하는 리플레이 제어 로직(231), 타이밍 블록(234), 페이지 테이블(236), 중재기(238), 에러 정정 코드(ECC) 체크 회로(242), ECC 생성 블록(244), 데이터 버퍼(246), 및 활성화 카운터(248)를 포함하는 리프레시 제어 로직(232)을 포함한다. 다른 실시예들에서, 커맨드 큐들(230), 중재기들(238), 및 메모리 인터페이스 큐들(214)만이 사용되는 각각의 메모리 채널 또는 서브-채널에 대해 되풀이되며, 나머지 도시된 회로부는 2개의 채널들과 함께 사용하도록 적응된다. 또한, 도시된 듀얼-채널 메모리 컨트롤러는 2개의 메모리 채널들 또는 서브-채널들을 제어하기 위한 중재기(238), 커맨드 큐(220), 및 메모리 인터페이스 큐(214)의 2개의 인스턴스들을 포함하지만, 다른 실시예들은 본 명세서에서의 크레딧 관리 기술들에 따라 3개 또는 4개의 채널들 또는 서브-채널들 상에서 DRAM과 통신하는 데 이용되는, 3개 또는 4개 또는 그 초과와 같은, 더 많은 인스턴스들을 포함할 수 있다.
인터페이스(212)는 통신 버스를 통한 데이터 패브릭(125)에 대한 제1 양방향 접속, 및 크레딧 제어 회로(221)에 대한 제2 양방향 접속을 갖는다. 이러한 실시예에서, 인터페이스(212)는 데이터 패브릭(125)과 통신하기 위한 여러 채널들을 확립하기 위해 스케일러블 데이터 포트(SDP) 링크들을 이용하지만, 다른 인터페이스 링크 표준들이 또한 사용에 적합하다. 예를 들어, 다른 실시예에서 통신 버스는 "AXI4"로 알려진, 영국 캠브리지 소재의 에이알엠 홀딩스, 피엘씨(ARM Holdings, PLC)에 의해 규정된 진보된 확장가능 인터페이스 버전 4와 호환되지만, 또 다른 실시예들에서 다른 유형들의 인터페이스들일 수 있다. 인터페이스(212)는 "FCLK"(또는 "MEMCLK") 도메인으로 알려진 제1 클록 도메인으로부터 "UCLK" 도메인으로 알려진 듀얼-채널 메모리 컨트롤러(210)의 내부에 있는 제2 클록 도메인으로 메모리 액세스 요청들을 이전시킨다. 유사하게, 메모리 인터페이스 큐(214)는 UCLK 도메인으로부터 DFI 인터페이스와 연관된 "DFICLK" 도메인으로 메모리 액세스들을 제공한다.
크레딧 제어 회로(221)는 어드레스 디코더(222)와 공유될 수 있거나 요청 크레딧들을 관리하기 위한 전용 SDP 채널들을 포함할 수 있는, 인터페이스(212)에 대한 양방향 통신 링크를 포함한다. 크레딧 제어 회로(221)는 또한 어드레스 디코더(222)와 공유된 것들로서 도면에 도시된, 둘 모두의 커맨드 큐들(220)에 접속된 입력들을 갖는다. 크레딧 제어 회로(221)는 일반적으로 둘 모두의 메모리 채널들에 대해 데이터 패브릭에 할당된 요청 크레딧들을 제어한다. 아래에서 추가로 설명되는 바와 같이, 크레딧 제어 회로(221)에 의해 수행되는 제어 프로세스는 미처리 요청 크레딧들의 수를 추적하는 것, 및 미처리 요청 크레딧들의 수가 제1 및 제2 커맨드 큐들(220)의 이용가능 엔트리들의 최소 수보다 낮은 경우 메모리 액세스 요청이 제1 및 제2 커맨드 큐들(220) 중 하나로부터 할당 해제되는 것에 응답하여 요청 크레딧을 발행하고, 그렇지 않은 경우, 메모리 액세스 요청이 할당 해제되는 것에 응답하여 요청 크레딧을 발행하지 않는 것을 포함한다. 크레딧 제어 회로(221)는 또한 최고 수의 이용가능 엔트리들을 갖는 제1 및 제2 커맨드 큐들(220) 중 하나에 할당되는 메모리 액세스 요청이 수신되는 경우 제1 또는 제2 커맨드 큐(220)로부터의 대응하는 할당 해제 없이 요청 크레딧을 발행하도록 동작한다.
어드레스 디코더(222)는 크레딧 제어 회로(221)에 대한 양방향 링크, 제1 커맨드 큐(220)("커맨드 큐 0"으로 라벨링됨)에 접속된 제1 출력, 및 제2 커맨드 큐(220)("커맨드 큐 1"로 라벨링됨)에 접속된 제2 출력을 갖는다. 어드레스 디코더(222)는 인터페이스(212)를 거쳐 데이터 패브릭(125)을 통해 수신된 메모리 액세스 요청들의 어드레스들을 디코딩한다. 메모리 액세스 요청들은 정규화된 포맷으로 표현된 물리적 어드레스 공간 내의 액세스 어드레스들을 포함한다. 액세스 어드레스들에 기초하여, 어드레스 디코더(222)는 요청을 핸들링하기 위해, 커맨드 큐들(220) 중 연관된 하나와 함께, 메모리 채널들 중 하나를 선택한다. 선택된 채널은 크레딧 발행 결정들이 이루어질 수 있도록 각각의 요청에 대해 크레딧 제어 회로(221)에게 식별된다. 어드레스 디코더(222)는 정규화된 어드레스들을, 메모리 시스템(130) 내의 실제 메모리 디바이스들을 어드레싱하는 데뿐만 아니라, 관련 액세스들을 효율적으로 스케줄링하는 데 사용될 수 있는 포맷으로 변환한다. 이러한 포맷은 메모리 액세스 요청을 특정 랭크, 로우 어드레스(row address), 컬럼 어드레스(column address), 뱅크 어드레스, 및 뱅크 그룹과 연관시키는 영역 식별자를 포함한다. 시동 시에, 시스템 BIOS는 메모리 시스템(130) 내의 메모리 디바이스들에게 질의하여 그들의 크기 및 구성을 결정하고, 어드레스 디코더(222)와 연관된 구성 레지스터들의 세트를 프로그래밍한다. 어드레스 디코더(222)는 구성 레지스터들에 저장된 구성을 사용하여 정규화된 어드레스들을 적절한 포맷으로 변환한다. 각각의 메모리 액세스 요청은 어드레스 디코더(222)에 의해 선택된 메모리 채널에 대해 커맨드 큐(220)에 로딩된다.
각각의 커맨드 큐(220)는 CPU 코어들(112 및 114) 및 그래픽 코어(120)와 같은, APU(100) 내의 다양한 메모리 액세싱 엔진들로부터 수신된 메모리 액세스 요청들의 큐이다. 각각의 커맨드 큐(220)는 연관된 메모리 채널을 통해 발행될 메모리 액세스 요청들을 커맨드 큐(220)로부터 선택하기 위해 각자의 중재기(238)에 양방향으로 접속된다. 각각의 커맨드 큐(220)는 어드레스 디코더(222)에 의해 디코딩된 어드레스 필드들뿐만 아니라, 액세스 유형 및 서비스 품질(QoS) 식별자들을 포함하여, 각자의 중재기(238)가 메모리 액세스들을 효율적으로 선택할 수 있게 하는 다른 어드레스 정보를 저장한다. 각각의 CAM(224)은 기입 후 기입(WAW) 및 기입 후 판독(RAW) 순서화 규칙들과 같은 순서화 규칙들을 시행하기 위한 정보를 포함한다.
중재기들(238)은 각각 적절한 커맨드들로 이행될 메모리 액세스 요청들을 선택하기 위해 각자의 커맨드 큐(220)에 양방향으로 접속된다. 중재기들(238)은 일반적으로 메모리 채널의 메모리 버스의 사용을 개선하기 위해 액세스들의 지능형 스케줄링에 의해 그의 각자의 메모리 채널의 효율을 개선한다. 각각의 중재기(238)는 DRAM 타이밍 파라미터들에 기초하여 각자의 커맨드 큐(220) 내의 소정 액세스들이 발행에 적격인지를 결정하는 것에 의해 적절한 타이밍 관계들을 시행하기 위해 각자의 타이밍 블록(234)을 사용한다. 예를 들어, 각각의 DRAM은, "tRC"로 알려진, 활성화 커맨드들 사이의 최소 규정된 시간을 갖는다. 각각의 타이밍 블록(234)은 이것 및 JEDEC 사양에서 규정된 다른 타이밍 파라미터들에 기초하여 적격성을 결정하는 카운터들의 세트를 유지하고, 리플레이 큐(230)에 양방향으로 접속된다. 각각의 페이지 테이블(236)은 중재기(238)에 대한 각자의 메모리 채널의 각각의 뱅크 및 랭크에서의 활성 페이지들에 관한 상태 정보를 유지하고, 그의 각자의 리플레이 큐(230)에 양방향으로 접속된다. 중재기(238)는 서비스 품질(QoS) 요건들과 같은 다른 기준들을 관찰하면서 메모리 액세스들을 효율적으로 스케줄링하기 위해 디코딩된 어드레스 정보, 타이밍 블록(234)에 의해 표시된 타이밍 적격성 정보, 및 페이지 테이블(236)에 의해 표시된 활성 페이지 정보를 사용한다. 예를 들어, 중재기(238)는 메모리 페이지들을 변경하기 위해 요구되는 프리차지 및 활성화 커맨드들의 오버헤드를 회피하기 위해 개방된 페이지들에 대한 액세스들에 대한 선호를 구현하고, 하나의 뱅크에 대한 오버헤드 액세스들을, 다른 뱅크에 대한 판독 및 기입 액세스들과 그들을 인터리빙하는 것에 의해 숨긴다. 특히 정상 동작 동안, 중재기(238)는 보통, 페이지들이 상이한 페이지를 선택하기 전에 프리차지되도록 요구될 때까지, 페이지들을 상이한 뱅크들에서 개방된 채로 유지한다. 중재기(238)는, 몇몇 실시예들에서, 각자의 커맨드들의 타겟 메모리 영역들에 대한 활성화 카운터(248)의 각자의 값들에 적어도 기초하여 커맨드 선택에 대한 적격성을 결정한다.
각각의 에러 정정 코드(ECC) 생성 블록(244)은 메모리에 전송될 기입 데이터의 ECC를 결정한다. ECC 체크 회로들(242)은 수신된 ECC를 들어오는 ECC에 대해 체크한다.
각각의 리플레이 큐들(230)은 어드레스 및 커맨드 패리티 응답들과 같은 응답들을 기다리고 있는, 중재기(238)에 의해 선택되는 선택된 메모리 액세스들을 저장하기 위한 임시 큐이다. 리플레이 제어 로직(231)은 반환된 ECC가 올바른지 또는 에러를 나타내는지를 결정하기 위해 ECC 체크 회로(242)에 액세스한다. 리플레이 제어 로직(231)은 이러한 사이클들 중 하나의 패리티 또는 ECC 에러의 경우에 액세스들이 리플레이되는 리플레이 시퀀스를 개시하고 제어한다. 리플레이된 커맨드들은 메모리 인터페이스 큐(214)에 배치된다.
리프레시 제어 로직(232)의 각각의 인스턴스는 메모리 액세싱 에이전트들로부터 수신된 정상 판독 및 기입 메모리 액세스 요청들과는 별도로 생성되는 다양한 파워다운, 리프레시, 및 종료 저항(ZQ) 교정 사이클들을 위한 상태 머신들을 포함한다. 예를 들어, 메모리 랭크가 프리차지 파워다운에 있는 경우, 그것은 리프레시 사이클들을 실행하기 위해 주기적으로 깨어나야 한다. 리프레시 제어 로직(232)은 DRAM 칩들 내의 메모리 셀들의 저장 커패시터들로부터의 전하 누설에 의해 야기되는 데이터 에러들을 방지하기 위해 지정된 조건들에 응답하여 그리고 주기적으로 리프레시 커맨드들을 생성한다. 리프레시 제어 로직(232)의 각각의 인스턴스는 활성화 카운터(248)를 포함하고, 이 활성화 카운터는 이 실시예에서 메모리 채널을 통해 메모리 영역으로 전송되는 활성화 커맨드들의 롤링 수(rolling number)를 카운트하는 각각의 메모리 영역에 대한 카운터를 갖는다. 메모리 영역들은 몇몇 실시예들에서 메모리 뱅크들이고, 다른 실시예들에서 메모리 서브-뱅크들이다. 게다가, 리프레시 제어 로직(232)은 시스템에서의 열 변화들로 인한 온-다이 종료 저항에 있어서의 미스매치를 방지하기 위해 ZQ를 주기적으로 교정한다.
인터페이스(212)로부터 수신된 기입 메모리 액세스 요청들에 응답하여, ECC 생성 블록들(244)은 기입 데이터에 따라 ECC를 계산한다. 데이터 버퍼들(246)은 수신된 메모리 액세스 요청들에 대한 기입 데이터 및 ECC를 저장한다. 데이터 버퍼들(246)은 각자의 중재기(238)가 메모리 채널로의 디스패치를 위한 대응하는 기입 액세스를 선택할 때 결합된 기입 데이터/ECC를 각자의 메모리 인터페이스 큐(214)에 출력한다.
2개 초과의 메모리 채널들 또는 서브-채널들을 갖는 실시예들에 대해, 추가적인 커맨드 큐들, 중재기들, 및 메모리 인터페이스 큐들이, 단일 어드레스 디코더(222) 및 크레딧 제어 회로(221)를 사용하여, 도시된 것들에 병렬로 추가된다. 그러한 설계는 아래에서 논의되는 크레딧 제어 스킴이 2개 초과의 채널들 또는 서브-채널들과 함께 이용될 수 있게 하며, 대응하는 효율들이 큐 용량 및 채널 용량을 사용할 때 얻어진다. 논의된 바와 같이, 메모리 채널 제어 회로부(223)의 전체 그룹이 또한 각각의 채널 또는 서브-채널에 대해 재현될 수 있거나, 동일한 로직 블록들이 추가된 커맨드 큐들, 중재기들, 및 메모리 인터페이스 큐들을 추적하기 위해 추가되는 추가적인 용량과 함께 이용될 수 있다.
도 3은 몇몇 실시예들에 따른 도 2의 크레딧 제어 회로(221)를 구현하기에 적합한 크레딧 제어 회로(300)의 블록도를 예시한다. 크레딧 제어 회로(300)는 미처리 크레딧 추적 로직(302), 큐 0 점유율 로직(304), 큐 1 점유율 로직(306), 인터페이스 로직(308), 크레딧 발행 로직(310), 요청 모니터(312), 커맨드 큐 모니터(314), 및 선입선출(FIFO) 크레딧 큐(316)("FIFO 큐(316)")를 포함한다. 미처리 크레딧 추적 로직(302)은 일반적으로 발행된 요청 크레딧들의 카운트를 유지하고, 새로운 요청 크레딧들을 발행하고, 연관된 메모리 액세스 요청이 메모리 컨트롤러(210)에서 수신될 때 회수되는 요청 크레딧들을 추적한다. 요청 크레딧들은 데이터 패브릭 상의 하나 이상의 요청 에이전트들에게 발행된다. 이러한 실시예에서, 요청 크레딧은 2개의 유형들, 즉 2개의 커맨드 큐들 및 2개의 채널들 또는 서브-채널들의 사용에 의해 제공되는 더 높은 용량 때문에 발행되는 초기 크레딧들 및 추가적인 크레딧들 중 하나이다. 추가적인 크레딧들의 사용은 크레딧 제어 회로(300)가 둘 모두의 커맨드 큐들의 용량을 더 완전히 그리고 효율적으로 이용하기 위해 소정 조건들하에서 초기 크레딧들의 수에 걸쳐 추가 크레딧들을 발행할 수 있게 한다. 추가적인 크레딧들은 초기 크레딧들과 동일한 방식으로 미처리 크레딧 추적 로직에 의해 추적되고, 총 미처리 크레딧들에 카운트된다.
큐 0 점유율 로직(304) 및 큐 1 점유율 로직(306)은 각자의 커맨드 큐들 내의 미할당 엔트리들의 수의 카운트를 유지한다. 몇몇 실시예들에서, 카운트는 각각의 커맨드 큐에 대한 점유된 엔트리들의 현재 수를 커맨드 큐 크기에서 감산함으로써 생성된다. 다른 실시예들에서, 점유되지 않은 엔트리들은 커맨드 큐로부터 직접적으로, 또는 각각의 커맨드 큐에 로딩된 엔트리들 및 각각의 커맨드 큐로부터 할당 해제된 엔트리들을 추적하는 것에 기초하여 간접적으로 추적된다.
요청 모니터(312)는, 어느 큐가 각각의 요청을 수신하는지를 포함하여, 어드레스 디코더(222)에 의해 각자의 커맨드 큐에 할당되는 들어오는 요청들을 모니터링한다. 이러한 정보는 새로운 요청 크레딧이 발행되는 때 및 발행되는지 여부를 결정함에 있어서 크레딧 발행 로직(310)에 의해 사용된다. 커맨드 큐 모니터(314)는 요청들이 커맨드 큐로부터 할당 해제되는 때를 결정하기 위해 둘 모두의 커맨드 큐들을 모니터링한다. FIFO 큐(316)는, 도 5에 관하여 설명되는 바와 같이, 커맨드들이 소정 조건들하에서 각각의 커맨드 큐로부터 할당 해제될 때 발행되는 추가적인 요청 크레딧들을 보유한다. 이러한 크레딧들은, 아래에서 추가로 설명되는 바와 같이, 크레딧 발행 로직(300)이 패브릭으로의 릴리스가 허용됨을 결정하자마자 패브릭으로 릴리스된다. 크레딧 발행 로직(310)은, 도 4 및 도 5에 관하여 아래에서 추가로 설명되는 바와 같이, 언제 요청 크레딧들을 발행할지를 결정하기 위해 미처리 크레딧들의 수, 각각의 큐의 큐 점유율, 및 요청 모니터(312) 및 커맨드 큐 모니터(314)로부터의 모니터링된 정보를 이용한다. 몇몇 버전들에서, 크레딧 제어 기능은 (도 2의 중재기(238)와 같은) 메모리 컨트롤러의 중재기 내부의 모니터링 로직 회로부에서 구현된다. 다른 버전들에서, 프로세스는 전술된 서브-중재기들(305) 및 최종 중재기(350)에서 이용되는 것들과는 상이한 중재 방법들을 사용하면서 유사한 기능을 갖는 디지털 로직 또는 컨트롤러에 의해 수행될 수 있다.
도 4는 몇몇 실시예들에 따른 요청 크레딧들을 관리하기 위한 프로세스의 흐름도(400)이다. 도시된 프로세스는 듀얼-채널 메모리 컨트롤러에서 구현되는 도 3의 크레딧 제어 회로(300)와 같은 크레딧 제어 회로, 2개 이상의 메모리 채널들 또는 서브-채널들에 결합된 메모리 컨트롤러, 또는 미처리 요청 크레딧들을 추적하고 듀얼-채널 메모리 컨트롤러에 대한 2개 이상의 커맨드 큐들을 모니터링하는 다른 적합한 디지털 제어 회로에 의해 수행되기에 적합하다. 프로세스는 일반적으로 커맨드 큐 0 및 커맨드 큐 1과 연관된 둘 모두의 메모리 채널들에 대한 메모리 액세스 요청들에 대한 요청 크레딧들을 관리하도록 작동한다. 요청 크레딧들은 어느 커맨드 큐 및 메모리 채널이 궁극적으로 연관된 액세스 요청들을 수신하도록 선택될 수 있는지와는 관계없이 데이터 패브릭에 의해 이용된다. 즉, 메모리 컨트롤러에 의해 관리되는 2개의 메모리 채널들 또는 서브-채널들의 존재는 데이터 패브릭 및 데이터 패브릭에 액세스하는 다양한 메모리 에이전트들에 투명하다. 실시예들에 대해
블록 402에서 2개의 메모리 채널들이 초기화되는 것에 응답하여, 프로세스는 블록 404에서 초기 요청 크레딧들을 데이터 패브릭에 발행하며, 초기 요청 크레딧들은 들어오는 판독 또는 기입 커맨드들에 대해 회수된다. 기입 커맨드들은 또한 데이터 버퍼들(246)(도 2)을 관리하기 위해 데이터 크레딧들의 사용을 요구한다. 데이터 크레딧들은 본 명세서에서 논의된 초기 크레딧들 및 추가적인 크레딧들과는 별개로 관리된다. 초기 요청 크레딧들의 수는 커맨드 큐들(220)의 크기에 의해 결정된다. 바람직하게는, 충분한 초기 요청 크레딧들이 각각의 커맨드 큐(220) 내의 엔트리들의 절반을 채우도록 릴리스되어, 모든 크레딧들이 우연히 단일 큐에 커맨드들을 배치하기 위해 회수되는 경우, 그것이 오버플로우하지 않는 것을 보장한다. 2개의 커맨드 큐들이 크기가 동일한 경우, 릴리스된 크레딧들의 수는 전형적으로 하나의 커맨드 큐의 크기이다. 2개의 커맨드 큐들이 크기가 동일하지 않은 경우, 더 작은 커맨드 큐의 크기가 초기 크레딧들의 수를 결정하는 데 사용되어, 크레딧 프로세스가 최소 커맨드 큐보다 크지 않은 크레딧들의 양으로 초기화되는 것을 보장한다. 이 시점에, 데이터 패브릭은 요청들을 메모리 컨트롤러(210)에 전송하기 위해 데이터 패브릭에 접속된 하나 이상의 메모리 액세스 에이전트들에 의해 이용될 수 있는 요청 크레딧들을 가지고 있다.
블록 406에서, 프로세스는, 각각이 연관된 요청 크레딧을 갖는, 판독 및 기입 메모리 액세스 요청들을 수신하는 것을 시작한다. 각각의 수신된 액세스 요청에 대해, 블록 408에서 크레딧 제어 회로는, 예를 들어 미처리 크레딧 추적 로직(302)(도 3)에서, 미처리 요청 크레딧을 회수한다. 액세스 요청은 또한 연관된 어드레스를 디코딩하고 메모리 채널들 중 하나를 선택하여 어드레스에 기초하여 메모리 액세스 요청들을 수신하기 위해 어드레스 디코더(222)에 의해 처리된다. 블록 410에서, 요청은 어드레스 디코더(222)의 제어하에서 선택된 메모리 채널에 대한 커맨드 큐에 요청을 로딩함으로써 메모리 채널에 할당된다. 크레딧 제어 회로(300)는 블록 410에서 각각의 커맨드 큐에 로딩된 액세스 요청들을 모니터링한다.
블록 412에서, 프로세스는 하나 이상의 추가적인 요청 크레딧들이 이미 발행되었고 크레딧 제어 회로 FIFO 큐(316)(도 3)에서 릴리스를 위해 보류 중인지를 결정한다. 추가적인 요청 크레딧들의 릴리스는 도 5에 관하여 추가로 설명된다. 추가적인 요청 크레딧이 릴리스를 위해 보류 중인 경우, 프로세스는 블록 420으로 진행하며, 여기서 현재 들어오는 요청에 대해 어떤 요청 크레딧들도 릴리스되지 않는다. 그렇지 않은 경우, 프로세스는 블록 414로 계속되며, 여기서 프로세스는 둘 모두의 커맨드 큐들이 그들의 최대 점유율에 있는지를 결정한다. 만약 그렇다면, 프로세스는 블록 420으로 진행한다. 만약 그렇지 않다면, 프로세스는 블록 416으로 진행하며, 여기서 프로세스는 미처리 요청 크레딧들이 최대 값에 있는지를 결정한다. 최대 값은 구성가능하고, 전형적으로 둘 모두의 커맨드 큐들의 최대 점유율의 합으로 설정된다. 블록 416에서 미처리 요청 크레딧들이 최대 값에 있는 경우, 프로세스는 블록 420으로 진행한다. 그렇지 않은 경우, 프로세스는 블록 418로 진행한다.
블록 418에서, 프로세스는 요청이 최고 수의 이용가능 엔트리들을 갖는 커맨드 큐에 할당되는지를 결정한다. 만약 그렇다면, 프로세스는 블록 422로 진행하며, 여기서 프로세스는 요청 크레딧이 데이터 패브릭에 발행되게 한다. 크레딧 발행 로직(310)(도 3), 또는 다른 적합한 디지털 로직 또는 제어 회로부가 요청 크레딧 발행을 수행하고 미처리 크레딧들을 업데이트한다. 블록 422에서의 요청 크레딧 발행들은 커맨드 큐들 중 하나로부터의 커맨드의 대응하는 할당 해제 없이 행해지며, 이는 그것이 2개의 커맨드 큐들의 더 효율적인 사용을 허용하기 때문에 도시된 프로세스에서 유익하다. 블록 418에서 액세스 요청이 가장 많은 이용가능 엔트리들을 갖는 커맨드 큐에 할당되지 않는 경우, 프로세스는 블록 420으로 진행하며, 여기서 프로세스는 이러한 특정 액세스 요청이 할당되는 것에 응답하여 어떤 요청 크레딧도 발행하지 않는다.
도시된 프로세스를 사용하면, 성능 이점이 달성되는데, 왜냐하면 커맨드들이 덜 점유된 커맨드 큐에 할당될 때 "여분의" 또는 추가적인 요청 크레딧들이 발행될 수 있게 함으로써 각각의 커맨드 큐가 더 높은 용량으로 이용되기 때문이다. 도시된 프로세스가 도 2에 도시된 것과 같은 듀얼-중재기 메모리 컨트롤러 아키텍처와 결합하여 이용될 때 추가의 성능 이점들이 달성되어, 도 4 및 도 5에 도시된 큐 용량 체크 없이 더 비관적인 접근법이 사용되는 경우보다 중재기가 선택하는 커맨드 큐에서 이용가능한 더 많은 수의 커맨드들로 일반적으로 동작하면서 각각의 메모리 채널이 개별적으로 중재될 수 있게 한다.
흐름도(400)는 순서대로 발생하는 블록들 410, 412, 414, 416, 및 418을 도시하지만, 실제 구현예에서 이러한 결정들은 디지털 로직에 의해 이루어지고, 다양한 실시예들에서, 임의의 적합한 순서로, 또는 로직 회로들이 도시된 조건들 중 일부 또는 전부를 동시에 체크하는 것과 병렬로 이루어진다.
도 5는 듀얼-채널 메모리 컨트롤러에서 요청 크레딧들을 관리하기 위한 다른 프로세스의 흐름도(500)이다. 이러한 실시예에서, 프로세스는 듀얼-채널 메모리 컨트롤러, 또는 2개 이상의 메모리 채널들 또는 서브-채널들을 위한 메모리 컨트롤러에 대해 요청 크레딧들이 발행되는 2가지 상이한 방식들을 제공하기 위해 도 4의 프로세스와 함께 크레딧 제어 회로(300)에 의해 수행된다.
블록 502에서, 프로세스는 메모리 액세스 요청이 2개의 커맨드 큐들 중 어느 하나로부터 할당 해제되는 것에 응답하여 시작된다. 블록 504에서, 프로세스는 각각의 커맨드 큐에서의 이용가능 엔트리들의 수를 획득한다. 이러한 정보는 바람직하게는 크레딧 제어 회로에서, 예를 들어 큐 0 점유율 로직(304) 및 큐 1 점유율 로직(306)(도 3)에 유지된다. 몇몇 실시예들에서, 프로세스는 각각의 커맨드 큐에서의 이용가능 엔트리들의 수를 획득하거나 계산하기 위해 블록 504에서 직접 커맨드 큐에 액세스할 수 있다. 관련 수들은 블록 502에서 할당 해제된 요청을 고려한 후의 수들이다.
블록 506에서, 프로세스는 미처리 요청 크레딧들의 수가 2개의 커맨드 큐들의 이용가능 엔트리들의 최소 수보다 낮은지를 체크하고, 만약 그렇다면, 블록 508에서 추가적인 요청 크레딧을 발행한다. 이러한 요청 크레딧은 바람직하게는 FIFO 큐(316)(도 3)에 로딩되고, 가능한 한 빨리 데이터 패브릭으로 릴리스된다. 미처리 크레딧 추적 로직(302)은 바람직하게는 추가적인 요청 크레딧이 FIFO 큐(316)를 떠나고 데이터 패브릭 상의 수신 메모리 에이전트에 의해 수신된 것으로 확인될 때 추가적인 요청 크레딧을 미처리로서 카운트한다. 블록 506에서 미처리 요청 크레딧들의 수가 2개의 커맨드 큐들의 이용가능 엔트리들의 최소 수보다 낮지 않은 경우, 프로세스는 블록 510으로 진행하며, 여기서 프로세스는 블록 502에서 메모리 액세스 요청이 할당 해제되는 것에 응답하여 어떤 요청 크레딧도 발행하지 않는다.
이러한 크레딧 발행 프로세스는, 미처리 크레딧들의 수가 가장 많이 점유된 큐의 이용가능 엔트리들보다 높아지지 않을 것임을 보장하면서, 2개의 커맨드 큐들의 더 효율적인 사용을 허용하는 이점을 갖는다. 데이터 패브릭 및 그에 부착된 요청 메모리 에이전트(들)는 바람직하게는 특정 요청 크레딧이 초기 크레딧인지 또는 추가적인 크레딧인지에 대한 어떤 정보를 갖지 않아, 크레딧 추적 프로세스를 데이터 패브릭에 투명하게 만든다. 데이터 패브릭은 듀얼-채널 메모리 컨트롤러를 마치 그것이 단일 채널의 스루풋 용량보다 더 높은 스루풋 용량을 갖는 단일 컨트롤러인 것처럼 취급할 수 있다. 2개의 커맨드 큐들 및 2개의 메모리 채널들의 용량은, 단일 커맨드 큐를 위한 전형적인 크레딧 관리 프로세스가 이용되는 경우 발행될 것보다 더 공격적으로 요청 크레딧들이 발행되는 것을 가능하게 하면서, 데이터 패브릭에 투명한 방식으로 결합된다.
도 2의 듀얼-채널 메모리 컨트롤러(210), 또는 크레딧 제어 회로(221) 및 어드레스 디코더(222)와 같은 그의 임의의 부분들은 프로그램에 의해 판독될 수 있고 집적 회로들을 제조하기 위해 직접적으로 또는 간접적으로 사용될 수 있는 데이터베이스 또는 다른 데이터 구조의 형태로 컴퓨터 액세스 가능 데이터 구조에 의해 설명되거나 표현될 수 있다. 예를 들어, 이러한 데이터 구조는 Verilog 또는 VHDL과 같은 고레벨 설계 언어(HDL)에서의 하드웨어 기능의 거동-레벨 설명 또는 레지스터-전송 레벨(RTL) 설명일 수 있다. 설명은 합성 라이브러리로부터 게이트들의 리스트를 포함하는 네트리스트를 생성하기 위해 설명을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 네트리스트는 집적 회로들을 포함하는 하드웨어의 기능을 또한 나타내는 게이트들의 세트를 포함한다. 이어서 네트리스트는 마스크들에 적용될 기하학적 형상들을 설명하는 데이터 세트를 생성하도록 배치 및 라우팅될 수 있다. 이어서 마스크들은 집적 회로들을 생성하기 위해 다양한 반도체 제조 단계들에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스 가능 저장 매체 상의 데이터베이스는, 원하는 바에 따라, 네트리스트(합성 라이브러리를 갖거나 갖지 않음) 또는 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
특정 실시예들이 설명되었지만, 이러한 실시예들에 대한 다양한 수정들이 당업자에게 명백할 것이다. 예를 들어, 듀얼-채널 메모리 컨트롤러가 예로서 사용되지만, 본 명세서에서의 기술들은 또한 2개 초과의 메모리 채널들에 적용되어 그들의 용량을 데이터 패브릭 및 호스트 데이터 처리 시스템에 투명한 방식으로 결합할 수 있다. 예를 들어, 3개 또는 4개의 메모리 채널들이, 단일 인터페이스, 어드레스 디코더, 및 개별 메모리 채널들과는 독립적인 요청 크레딧들을 데이터 패브릭에 발행하는 크레딧 제어 회로를 제공하면서, 각각의 채널에 대한 별개의 커맨드 큐 및 메모리 채널 제어 회로부를 제공하는 것에 의해 본 명세서에서의 기술들을 사용하여 제어될 수 있다. 더욱이, 듀얼-채널 메모리 컨트롤러(210)의 내부 아키텍처는 상이한 실시예들에서 달라질 수 있다. 듀얼-채널 메모리 컨트롤러(210)는 고대역폭 메모리(HBM), RAMbus DRAM(RDRAM) 등과 같은, DDRx 이외의 다른 유형들의 메모리에 인터페이스할 수 있다. 예시된 실시예는 별개의 DIMM들 또는 SIMM들에 대응하는 메모리의 각각의 랭크를 보여주었지만, 다른 실시예들에서 각각의 모듈은 다수의 랭크들을 지원할 수 있다. 또 다른 실시예들은 다른 유형들의 DRAM 모듈들 또는 특정 모듈에 포함되지 않는 DRAM들, 예를 들어 호스트 마더보드에 장착된 DRAM들을 포함할 수 있다. 따라서, 첨부된 청구항들에 의해 개시된 실시예들의 범위에 속하는 개시된 실시예들의 모든 수정들을 포함하는 것이 의도된다.

Claims (28)

  1. 메모리 컨트롤러로서,
    메모리 액세스 요청들을 수신하기 위한 제1 입력, 제1 출력, 및 제2 출력을 갖는 어드레스 디코더;
    제1 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 상기 어드레스 디코더의 상기 제1 출력에 결합된 입력, 및 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는 제1 커맨드 큐;
    제2 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 상기 어드레스 디코더의 상기 제2 출력에 결합된 입력, 및 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는 제2 커맨드 큐; 및
    상기 제1 커맨드 큐 및 상기 제2 커맨드 큐에 결합된 요청 크레딧 제어 회로 - 상기 요청 크레딧 제어 회로는 미처리 요청 크레딧들의 수를 추적하고, 상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 요청 크레딧을 발행하도록 동작가능함 - 를 포함하는, 메모리 컨트롤러.
  2. 제1항에 있어서,
    상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 크레딧 요청을 발행하는 것은, 미처리 요청 크레딧들의 수가 상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 최소 수보다 낮은 경우 크레딧 요청을 발행하는 것을 추가로 포함하는, 메모리 컨트롤러.
  3. 제1항에 있어서,
    상기 요청 크레딧 제어 회로는 데이터 처리 유닛의 데이터 패브릭에 결합되고, 상기 데이터 패브릭을 통해 메모리-액세싱 에이전트에 요청 크레딧들을 발행하도록 동작가능한, 메모리 컨트롤러.
  4. 제1항에 있어서,
    상기 요청 크레딧 제어 회로는 최고 수의 이용가능 엔트리들을 갖는 상기 제1 및 제2 커맨드 큐들 중 하나에 할당되는 메모리 액세스 요청이 수신되는 경우 상기 제1 또는 제2 커맨드 큐로부터의 대응하는 할당 해제 없이 요청 크레딧을 발행하도록 동작가능한, 메모리 컨트롤러.
  5. 제1항에 있어서,
    상기 요청 크레딧 제어 회로는, 메모리 액세스 요청이 상기 제1 및 제2 커맨드 큐들 중 하나로부터 할당 해제되어 상기 제1 및 제2 커맨드 큐들이 동일한 수의 이용가능 엔트리들을 갖게 되는 것에 응답하여, 상기 미처리 요청 크레딧들의 수가 상기 이용가능 엔트리들의 동일한 수보다 낮은 경우 요청 크레딧을 발행하고, 그렇지 않은 경우, 상기 메모리 액세스 요청이 할당 해제되는 것에 응답하여 어떤 요청 크레딧도 발행하지 않도록 동작가능한, 메모리 컨트롤러.
  6. 제1항에 있어서,
    지정된 이벤트는 메모리 액세스 요청이 상기 제1 및 제2 커맨드 큐들 중 하나로부터 할당 해제되는 것인, 메모리 컨트롤러.
  7. 제1항에 있어서,
    상기 제1 커맨드 큐로부터 엔트리들을 선택하고, 상기 엔트리들을 제1 메모리 인터페이스 큐에 배치하여 상기 엔트리들이 상기 제1 메모리 채널을 통해 송신되게 하기 위해 상기 제1 커맨드 큐에 결합된 제1 중재기; 및
    상기 제2 커맨드 큐로부터 엔트리들을 선택하고, 상기 엔트리들을 제2 메모리 인터페이스 큐에 배치하여 상기 엔트리들이 상기 제2 메모리 채널을 통해 송신되게 하기 위해 상기 제2 커맨드 큐에 결합된 제2 중재기를 추가로 포함하는, 메모리 컨트롤러.
  8. 제1항에 있어서,
    상기 어드레스 디코더는 각각의 메모리 액세스 요청을 상기 메모리 액세스 요청의 타겟 어드레스에 기초하여 상기 제1 커맨드 큐 또는 상기 제2 커맨드 큐로 지향시키도록 동작가능한, 메모리 컨트롤러.
  9. 제1항에 있어서,
    상기 제1 커맨드 큐는 상기 제2 커맨드 큐와는 상이한 크기를 갖는, 메모리 컨트롤러.
  10. 제1항에 있어서,
    적어도 하나의 추가적인 커맨드 큐 및 상기 추가적인 커맨드 큐에 결합된 적어도 하나의 추가적인 중재기를 추가로 포함하며, 상기 요청 크레딧 제어 회로는 미처리 요청 크레딧들의 수가 모든 상기 커맨드 큐들 중에서의 이용가능 엔트리들의 최소 수보다 낮은 경우 메모리 액세스 요청이 상기 커맨드 큐들 중 임의의 것으로부터 할당 해제되는 것에 응답하여 요청 크레딧을 발행하고, 그렇지 않은 경우, 상기 메모리 액세스 요청이 할당 해제되는 것에 응답하여 어떤 요청 크레딧도 발행하지 않도록 동작가능한, 메모리 컨트롤러.
  11. 방법으로서,
    메모리 컨트롤러에서 복수의 메모리 액세스 요청들을 수신하는 단계;
    상기 메모리 액세스 요청들의 어드레스들을 디코딩하고, 상기 메모리 액세스 요청들 각각을 수신하기 위해 제1 메모리 채널 및 제2 메모리 채널 중 하나를 선택하는 단계;
    상기 어드레스들을 디코딩한 후에, 각각의 메모리 액세스 요청을 상기 제1 메모리 채널과 연관된 제1 커맨드 큐 및 상기 제2 메모리 채널과 연관된 제2 커맨드 큐 중 하나로 전송하는 단계; 및
    지정된 이벤트에 응답하여, 상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 요청 크레딧을 발행하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 크레딧 요청을 발행하는 단계는, 미처리 요청 크레딧들의 수가 상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 최소 수보다 낮은 경우 크레딧 요청을 발행하는 단계를 추가로 포함하는, 방법.
  13. 제12항에 있어서,
    최고 수의 이용가능 엔트리들을 갖는 상기 제1 및 제2 커맨드 큐들 중 하나에 할당되는 메모리 액세스 요청이 수신되는 경우 상기 제1 또는 제2 커맨드 큐로부터의 대응하는 할당 해제 없이 요청 크레딧이 발행되게 하는 단계를 추가로 포함하는, 방법.
  14. 제12항에 있어서,
    메모리 액세스 요청이 상기 제1 및 제2 커맨드 큐들 중 하나로부터 할당 해제되어 상기 제1 및 제2 커맨드 큐들이 동일한 수의 이용가능 엔트리들을 갖게 되는 것에 응답하여, 상기 미처리 요청 크레딧들의 수가 상기 이용가능 엔트리들의 동일한 수보다 낮은 경우 메모리 액세스 크레딧이 발행되게 하고, 그렇지 않은 경우, 상기 메모리 액세스 요청이 할당 해제되는 것에 응답하여 어떤 요청 크레딧도 발행하지 않는 단계를 추가로 포함하는, 방법.
  15. 제11항에 있어서,
    상기 지정된 이벤트는 메모리 액세스 요청이 상기 제1 및 제2 커맨드 큐들 중 하나로부터 할당 해제되는 것인, 방법.
  16. 제11항에 있어서,
    제1 중재기로, 상기 제1 커맨드 큐로부터 엔트리들을 선택하고, 상기 엔트리들을 제1 메모리 인터페이스 큐에 배치하여 상기 엔트리들이 상기 제1 메모리 채널을 통해 송신되게 하는 단계; 및
    제2 중재기로, 상기 제2 커맨드 큐로부터 엔트리들을 선택하고, 상기 엔트리들을 제2 메모리 인터페이스 큐에 배치하여 상기 엔트리들이 상기 제2 메모리 채널을 통해 송신되게 하는 단계를 추가로 포함하는, 방법.
  17. 제11항에 있어서,
    각각의 메모리 액세스 요청을 상기 메모리 액세스 요청의 타겟 어드레스에 기초하여 상기 제1 커맨드 큐 또는 상기 제2 커맨드 큐로 지향시키는 단계를 추가로 포함하는, 방법.
  18. 데이터 처리 시스템으로서,
    데이터 패브릭;
    제1 메모리 채널 및 제2 메모리 채널; 및
    적어도 하나의 메모리 액세싱 엔진으로부터 상기 데이터 패브릭을 통해 수신된 메모리 액세스 요청들을 이행하기 위해 상기 데이터 패브릭과 상기 제1 및 제2 메모리 채널들에 결합된 메모리 컨트롤러를 포함하며, 상기 메모리 컨트롤러는,
    메모리 액세스 요청들을 수신하기 위한 제1 입력, 제1 출력, 및 제2 출력을 갖는 어드레스 디코더,
    제1 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 상기 어드레스 디코더의 상기 제1 출력에 결합된 입력, 및 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는 제1 커맨드 큐,
    제2 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위해 상기 어드레스 디코더의 상기 제2 출력에 결합된 입력, 및 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는 제2 커맨드 큐, 및
    상기 제1 커맨드 큐 및 상기 제2 커맨드 큐에 결합된 요청 크레딧 제어 회로 - 상기 요청 크레딧 제어 회로는 미처리 요청 크레딧들의 수를 추적하고, 상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 요청 크레딧을 발행하도록 동작가능함 - 를 포함하는, 데이터 처리 시스템.
  19. 제18항에 있어서,
    상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 크레딧 요청을 발행하는 것은, 미처리 요청 크레딧들의 수가 상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 최소 수보다 낮은 경우 크레딧 요청을 발행하는 것을 추가로 포함하는, 데이터 처리 시스템.
  20. 제18항에 있어서,
    상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 수에 기초하여 크레딧 요청을 발행하는 것은, 미처리 요청 크레딧들의 수가 상기 제1 및 제2 커맨드 큐들의 이용가능 엔트리들의 최소 수보다 낮은 경우 크레딧 요청을 발행하는 것을 추가로 포함하는, 데이터 처리 시스템.
  21. 제18항에 있어서,
    상기 요청 크레딧 제어 회로는 상기 데이터 패브릭에 결합되고, 상기 데이터 패브릭을 통해 메모리-액세싱 에이전트에 요청 크레딧들을 발행하도록 동작가능한, 데이터 처리 시스템.
  22. 제18항에 있어서,
    상기 요청 크레딧 제어 회로는 최고 수의 이용가능 엔트리들을 갖는 상기 제1 및 제2 커맨드 큐들 중 하나에 할당되는 메모리 액세스 요청이 수신되는 경우 상기 제1 또는 제2 커맨드 큐로부터의 대응하는 할당 해제 없이 요청 크레딧을 발행하도록 동작가능한, 데이터 처리 시스템.
  23. 제18항에 있어서,
    상기 요청 크레딧 제어 회로는, 메모리 액세스 요청이 상기 제1 및 제2 커맨드 큐들 중 하나로부터 할당 해제되어 상기 제1 및 제2 커맨드 큐들이 동일한 수의 이용가능 엔트리들을 갖게 되는 것에 응답하여, 상기 미처리 요청 크레딧들의 수가 상기 이용가능 엔트리들의 동일한 수보다 낮은 경우 요청 크레딧을 발행하도록 동작가능한, 데이터 처리 시스템.
  24. 제18항에 있어서,
    상기 요청 크레딧 제어 회로에 대한 각각의 커맨드 큐에서의 이용가능 커맨드 엔트리들의 현재 수를 계산하도록 동작가능한 큐 점유율 회로부를 추가로 포함하는, 데이터 처리 시스템.
  25. 제18항에 있어서,
    상기 제1 커맨드 큐로부터 엔트리들을 선택하고, 상기 엔트리들을 제1 메모리 인터페이스 큐에 배치하여 상기 엔트리들이 상기 제1 메모리 채널을 통해 송신되게 하기 위해 상기 제1 커맨드 큐에 결합된 제1 중재기; 및
    상기 제2 커맨드 큐로부터 엔트리들을 선택하고, 상기 엔트리들을 제2 메모리 인터페이스 큐에 배치하여 상기 엔트리들이 상기 제2 메모리 채널을 통해 송신되게 하기 위해 상기 제2 커맨드 큐에 결합된 제2 중재기를 추가로 포함하는, 데이터 처리 시스템.
  26. 제18항에 있어서,
    상기 어드레스 디코더는 각각의 메모리 액세스 요청을 상기 메모리 액세스 요청의 타겟 어드레스에 기초하여 상기 제1 커맨드 큐 또는 상기 제2 커맨드 큐로 지향시키도록 동작가능한, 데이터 처리 시스템.
  27. 제18항에 있어서,
    상기 메모리 액세싱 엔진은 적어도 하나의 데이터 처리 유닛으로부터의 메모리 액세스 요청들을 이행하기 위해 상기 데이터 패브릭에 결합된 코히런트 메모리 슬레이브 컨트롤러인, 데이터 처리 시스템.
  28. 제18항에 있어서,
    상기 메모리 액세싱 엔진은 적어도 하나의 데이터 처리 유닛으로부터의 메모리 액세스 요청들을 이행하기 위해 상기 데이터 패브릭에 결합된 코히런트 메모리 마스터 컨트롤러인, 데이터 처리 시스템.
KR1020237035611A 2021-03-31 2022-03-21 멀티-큐 메모리 컨트롤러를 위한 크레딧 스킴 KR20230158571A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,650 US11379388B1 (en) 2021-03-31 2021-03-31 Credit scheme for multi-queue memory controllers
US17/218,650 2021-03-31
PCT/US2022/021148 WO2022212100A1 (en) 2021-03-31 2022-03-21 Credit scheme for multi-queue memory controllers

Publications (1)

Publication Number Publication Date
KR20230158571A true KR20230158571A (ko) 2023-11-20

Family

ID=82261340

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237035611A KR20230158571A (ko) 2021-03-31 2022-03-21 멀티-큐 메모리 컨트롤러를 위한 크레딧 스킴

Country Status (6)

Country Link
US (1) US11379388B1 (ko)
EP (1) EP4315085A4 (ko)
JP (1) JP2024512623A (ko)
KR (1) KR20230158571A (ko)
CN (1) CN117120992A (ko)
WO (1) WO2022212100A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836096B2 (en) * 2021-12-22 2023-12-05 Micron Technology, Inc. Memory-flow control register

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072677A1 (en) * 2010-09-16 2012-03-22 Sukalpa Biswas Multi-Ported Memory Controller with Ports Associated with Traffic Classes
US8314807B2 (en) * 2010-09-16 2012-11-20 Apple Inc. Memory controller with QoS-aware scheduling
US8255618B1 (en) * 2011-10-06 2012-08-28 Google Inc. Performance isolation in a shared memory device
US9524261B2 (en) * 2012-12-21 2016-12-20 Apple Inc. Credit lookahead mechanism
US9411774B2 (en) * 2013-04-23 2016-08-09 Arm Limited Memory access control
US9178832B2 (en) * 2013-07-11 2015-11-03 International Business Machines Corporation Queue credit management
US9830086B2 (en) * 2016-03-03 2017-11-28 Samsung Electronics Co., Ltd. Hybrid memory controller for arbitrating access to volatile and non-volatile memories in a hybrid memory group
US10403333B2 (en) * 2016-07-15 2019-09-03 Advanced Micro Devices, Inc. Memory controller with flexible address decoding
US10037150B2 (en) 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
US10303384B1 (en) * 2017-11-28 2019-05-28 Western Digital Technologies, Inc. Task readiness for queued storage tasks
KR20190130831A (ko) * 2018-05-15 2019-11-25 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11126375B2 (en) * 2019-07-18 2021-09-21 Micron Technology, Inc. Arbiter circuit for commands from multiple physical functions in a memory sub-system
US11137941B2 (en) * 2019-12-30 2021-10-05 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules

Also Published As

Publication number Publication date
JP2024512623A (ja) 2024-03-19
EP4315085A1 (en) 2024-02-07
WO2022212100A1 (en) 2022-10-06
EP4315085A4 (en) 2024-06-19
CN117120992A (zh) 2023-11-24
US11379388B1 (en) 2022-07-05

Similar Documents

Publication Publication Date Title
CN107924375B (zh) 用于高速存储器接口的命令仲裁
CN109690508B (zh) 带虚拟控制器模式的存储器控制器
KR102615693B1 (ko) Dram을 위한 리프레시 관리
EP3436958B1 (en) Low power memory throttling
EP4315015A1 (en) Write bank group mask during arbitration
KR20230158571A (ko) 멀티-큐 메모리 컨트롤러를 위한 크레딧 스킴
US11995008B2 (en) Memory controller with hybrid DRAM/persistent memory channel arbitration
EP3270294B1 (en) Command arbitration for high-speed memory interfaces
US11934251B2 (en) Data fabric clock switching
KR20230160854A (ko) 메모리 제어기 전력 상태들
EP3270295A1 (en) Memory controller with virtual controller mode
US12038856B2 (en) Memory controller with a plurality of command sub-queues and corresponding arbiters
US20240005971A1 (en) Channel and sub-channel throttling for memory controllers

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal