KR20230157522A - 중재 동안의 기록 뱅크 그룹 마스크 - Google Patents

중재 동안의 기록 뱅크 그룹 마스크 Download PDF

Info

Publication number
KR20230157522A
KR20230157522A KR1020237037630A KR20237037630A KR20230157522A KR 20230157522 A KR20230157522 A KR 20230157522A KR 1020237037630 A KR1020237037630 A KR 1020237037630A KR 20237037630 A KR20237037630 A KR 20237037630A KR 20230157522 A KR20230157522 A KR 20230157522A
Authority
KR
South Korea
Prior art keywords
bank group
memory
arbiter
requests
write
Prior art date
Application number
KR1020237037630A
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 KR20230157522A publication Critical patent/KR20230157522A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

메모리 제어기는 DRAM 메모리로의 송신을 위해 명령 대기열로부터 메모리 요청들을 선택하기 위한 아비터(arbiter)를 포함한다. 아비터는 아비터에 의해 선택된 3개 이상의 이전 기록 요청들의 뱅크 그룹 번호들을 추적하는 뱅크 그룹 추적 회로를 포함한다. 아비터는 또한, 명령 대기열로부터 발행될 요청들을 선택하고, 명령 대기열에서 적격인 다른 기록 요청이 없지 않는 한, 추적된 뱅크 그룹 번호들에 대한 기록 요청들 및 연관된 활성화 명령들의 선택을 방지하는 선택 회로를 포함한다. 뱅크 그룹 추적 회로는, 이전 기록 요청 및 연관된 활성화 명령들이 이전 기록 요청의 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간에 대응하는 클록 사이클들의 수가 지난 후에 발행되기에 적격임을 나타낸다.

Description

중재 동안의 기록 뱅크 그룹 마스크
컴퓨터 시스템들은 전형적으로 메인 메모리용으로 저렴한 고밀도 동적 랜덤 액세스 메모리(DRAM) 칩들을 사용한다. 오늘날 판매되는 대부분의 DRAM 칩들은 합동 전자 장치 엔지니어링 협의회(JEDEC)에 의해 공표된 다양한 더블 데이터 레이트(DDR, double data rate) DRAM 표준과 호환된다. DDR DRAM들은 고속 액세스 회로들을 갖는 종래의 DRAM 메모리 셀 어레이들을 사용하여 높은 전송 레이트들을 달성하고 메모리 버스의 이용을 개선한다.
메모리 제어기는 메모리 버스를 통해 DRAM에 들어가고 그로부터 나오는 데이터의 흐름을 관리하는 디지털 회로이다. 메모리 제어기는 호스트 시스템으로부터 메모리 액세스 요청들을 수신하여, 대기열에 저장하고, 이들을 아비터(arbiter)에 의해 선택된 순서로 DRAM에 디스패치한다. 시간이 경과함에 따라, JEDEC는 추가적인 특징들 및 복잡성을 갖는 특정 DRAM들을 가지게 되어, DRAM 메모리 제어기들이 과도한 크기 및 비용을 야기하지 않고 이전 메모리 제어기들의 완전한 재설계를 요구하지 않으면서 메모리 액세스 효율을 최적화하는 것을 어렵게 만든다.
도 1은 종래 기술에서 알려진 가속 프로세싱 유닛(APU) 및 메모리 시스템을 블록도 형태로 도시한다.
도 2는 일부 실시예들에 따른, 도 1의 것과 같은 APU에서 사용하기에 적합한 메모리 제어기를 블록도 형태로 도시한다.
도 3은 종래 기술에 따른 메모리의 뱅크 그룹 구조를 블록도 형태로 도시한다.
도 4는 일부 실시예들에 따른, 도 2의 메모리 제어기의 일부분을 블록도 형태로 도시한다.
도 5는 일부 추가적인 실시예들에 따른, 도 2의 메모리 제어기의 일부분을 블록도 형태로 도시한다.
도 6은 일부 실시예들에 따른, 기록 명령을 처리하기 위한 프로세스의 흐름도이다.
도 7은 일부 실시예들에 따른, 명령들을 중재하는 프로세스의 흐름도를 도시한다.
하기의 설명에서, 상이한 도면들에서의 동일한 참조 번호들의 사용은 유사하거나 동일한 아이템들을 지시한다. 달리 언급되지 않는 한, 단어 "결합된" 및 그의 연관된 동사 형태는 당업계에 공지된 수단에 의한 직접적인 연결 및 간접적인 전기 연결 둘 모두를 포함하며, 달리 언급되지 않는 한, 직접적인 연결에 대한 임의의 설명은 적합한 형태의 간접적인 전기 연결을 사용하는 대안적인 실시예들도 암시한다.
메모리 제어기는 명령 대기열 및 아비터를 포함한다. 명령 대기열은 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위한 입력, 및 미리 결정된 수의 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는다. 아비터는 DRAM 채널에 연결된 DRAM 메모리로의 송신을 위해 명령 대기열로부터 메모리 요청들을 선택하기 위한 것이고, 아비터에 의해 선택된 3개 이상의 이전 기록 요청들의 뱅크 그룹 번호들을 추적하는 뱅크 그룹 추적 회로, 및 선택 회로를 포함한다. 선택 회로는 명령 대기열로부터 발행될 요청들을 선택하고, 추적된 뱅크 그룹 번호들에 대한 기록 요청들 및 연관된 활성화 명령들의 선택을 방지한다. 뱅크 그룹 추적 회로는 이전 기록 요청 및 연관된 활성화 명령이 지정된 기간이 경과한 후에 발행되기에 적격임을 나타낸다.
방법은 메모리 제어기에서 복수의 메모리 액세스 요청들을 수신하는 단계 및 이들을 명령 대기열에 배치하여 다수의 뱅크 그룹들을 포함하는 DRAM 메모리로의 송신을 대기하는 단계를 포함한다. 기록 요청들은 DRAM 메모리로의 송신을 위해 명령 대기열로부터 아비터를 이용해 선택된다. 뱅크 그룹 번호들은 아비터에 의해 선택된 3개 이상의 이전 기록 요청들에 대해 추적된다. 추적된 뱅크 그룹 번호들에 대한 후속 기록 요청 및 연관된 활성화 명령의 선택이 방지된다. 이전 기록 요청 및 연관된 활성화 명령들은 지정된 기간이 경과한 후에 발행되기에 적격일 수 있다.
데이터 프로세싱 시스템은 DRAM 메모리에 연결된 메모리 채널, 및 메모리 채널에 연결된 메모리 제어기를 포함한다. 메모리 제어기는 명령 대기열 및 아비터를 포함한다. 명령 대기열은 메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위한 입력, 및 미리 결정된 수의 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는다. 아비터는 DRAM 메모리로의 송신을 위해 명령 대기열로부터 발행될 메모리 요청들을 선택하며, 아비터에 의해 선택된 3개 이상의 이전 기록 요청들의 뱅크 그룹 번호들을 추적하는 뱅크 그룹 추적 회로, 및 추적된 뱅크 그룹 번호들에 대한 기록 요청들 및 연관된 활성화 명령들의 선택을 방지하는 선택 회로를 포함한다. 뱅크 그룹 추적 회로는 이전 기록 요청 및 연관된 활성화 명령이 지정된 기간이 경과한 후에 발행되기에 적격임을 나타낸다.
도 1은 종래 기술에서 알려진 가속 프로세싱 유닛(APU)(100) 및 메모리 시스템(130)을 블록도 형태로 예시한다. APU(100)는 호스트 데이터 프로세싱 시스템에서 프로세서로서 사용하기에 적합한 집적 회로이며, 일반적으로 중앙 프로세싱 유닛(CPU) 코어 컴플렉스(core complex)(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) 제어기(162) 및 직렬 고급 기술 결합(SATA) 인터페이스 제어기(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), 플래시 이이피롬(EEPROM, electrically erasable programmable ROM) 등과 같은 다양한 비휘발성 메모리 유형들 중 임의의 것일 수 있는, 시스템 데이터 드라이브 또는 시스템 BIOS 메모리(미도시)에 저장된다. 전형적으로, BIOS 메모리는 PCIe 버스를 통해 액세스되고, 시스템 데이터 드라이브는 SATA 인터페이스를 통해 액세스된다.
SMU(180)는 APU(100) 상의 자원들의 동작을 제어하고 이들 사이의 통신을 동기화하는 로컬 제어기이다. SMU(180)는 APU(100) 상의 다양한 프로세서들의 전력 공급 시퀀싱을 관리하고 리셋, 인에이블 및 다른 신호들을 통해 다수의 오프-칩 디바이스들을 제어한다. SMU(180)는 APU(100)의 컴포넌트들 각각에 대한 클록 신호들을 제공하기 위해, 위상 고정 루프(PLL)와 같은, 하나 이상의 클록 소스들(미도시)을 포함한다. SMU(180)는 또한 다양한 프로세서들 및 다른 기능 블록들에 대한 전력을 관리하고, 측정된 전력 소비 값을 CPU 코어들(112 및 114) 및 그래픽 코어(120)로부터 수신하여 적절한 전력 상태들을 결정할 수 있다.
메모리 관리 허브(140) 및 그의 연관된 물리적 인터페이스들(PHY들)(151 및 152)은 본 실시예에서 APU(100)와 통합된다. 메모리 관리 허브(140)는 메모리 채널들(141 및 142) 및 전력 엔진(149)을 포함한다. 메모리 채널(141)은 호스트 인터페이스(145), 메모리 채널 제어기(143), 및 물리적 인터페이스(147)를 포함한다. 호스트 인터페이스(145)는 직렬 프레즌스 검출 링크(serial presence detect link, 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)가 너무 뜨거워지면, 그것은 완전히 셧다운될 수 있다. 열 이벤트(thermal event)들은 또한 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), 및 리프레시 제어 로직(232)을 포함한다.
인터페이스(212)는 외부 버스를 통해 데이터 패브릭에 대한 제1 양방향 연결을 갖고, 출력을 갖는다. 메모리 제어기(200)에서, 이러한 외부 버스는 "AXI4"로 알려진, 영국 캠브리지 소재의 에이알엠 홀딩스, 피엘씨(ARM Holdings, PLC)에 의해 지정된 고급 확장 가능 인터페이스(advanced extensible interface) 버전 4와 호환되지만, 다른 실시예들에서는 다른 유형들의 인터페이스들일 수 있다. 인터페이스(212)는 FCLK(또는 MEMCLK) 도메인으로 알려진 제1 클록 도메인으로부터 UCLK 도메인으로 알려진, 메모리 제어기(200)의 내부에 있는 제2 클록 도메인으로 메모리 액세스 요청들을 변환한다. 유사하게, 메모리 인터페이스 대기열(214)은 UCLK 도메인으로부터 DFI 인터페이스와 연관된 DFICLK 도메인으로 메모리 액세스들을 제공한다.
어드레스 생성기(222)는 AXI4 버스를 통해 데이터 패브릭으로부터 수신된 메모리 액세스 요청들의 어드레스들을 디코딩한다. 메모리 액세스 요청들은 정규화된 포맷으로 표현되는 물리적 어드레스 공간에서의 액세스 어드레스들을 포함한다. 어드레스 생성기(222)는 정규화된 어드레스들을, 메모리 시스템(130) 내의 실제 메모리 디바이스를 어드레싱할 뿐만 아니라 관련 액세스들을 효율적으로 스케줄링하는 데 사용될 수 있는 포맷으로 변환한다. 이러한 포맷은 메모리 액세스 요청을 특정 랭크, 로우 어드레스(row address), 컬럼 어드레스(column address), 뱅크 어드레스, 및 뱅크 그룹과 연관시키는 영역 식별자를 포함한다. 시동 시에, 시스템 BIOS는 메모리 시스템(130) 내의 메모리 디바이스에 질의하여 그들의 크기 및 구성을 결정하고, 어드레스 생성기(222)와 연관된 구성 레지스터들의 세트를 프로그래밍한다. 어드레스 생성기(222)는 구성 레지스터들에 저장된 구성을 사용하여 정규화된 어드레스들을 적절한 포맷으로 변환한다. 명령 대기열(220)은 CPU 코어들(112 및 114) 및 그래픽 코어(120)와 같은, APU(100) 내의 메모리 액세싱 에이전트들로부터 수신된 메모리 액세스 요청들의 대기열이다. 명령 대기열(220)은 어드레스 생성기(222)에 의해 디코딩된 어드레스 필드들뿐만 아니라, 액세스 유형 및 서비스 품질(QoS) 식별자들을 포함하여, 아비터(238)가 메모리 액세스를 효율적으로 선택하는 것을 가능하게 하는 다른 어드레스 정보를 저장한다. CAM(224)은 기록 후 기록(write after write, WAW) 및 기록 후 판독(read after write, RAW) 순서화 규칙들과 같은 순서화 규칙들을 시행하기 위한 정보를 포함한다.
에러 정정 코드(ECC) 생성 블록(244)은 메모리에 전송될 기록 데이터의 ECC를 결정한다. 이어서, 이러한 ECC 데이터는 데이터 버퍼(246) 내의 기록 데이터에 추가된다. ECC 체크 회로(242)는 수신된 ECC를 인입 ECC에 대해 체크한다.
리플레이 대기열(230)은 어드레스 및 명령 패리티 응답들과 같은 응답들을 대기하고 있는, 아비터(238)에 의해 픽된 선택된 메모리 액세스들을 저장하기 위한 임시 대기열이다. 리플레이 제어 로직(231)은 반환된 ECC가 정확한지 또는 에러를 나타내는지를 결정하기 위해 ECC 체크 회로(242)에 액세스한다. 리플레이 제어 로직(231)은 이러한 사이클들 중 하나의 패리티 또는 ECC 에러의 경우에 액세스들이 리플레이되는 리플레이 시퀀스를 개시하고 제어한다. 리플레이된 명령들은 메모리 인터페이스 대기열(214)에 배치된다.
리프레시 제어 로직(232)은 메모리 액세싱 에이전트들로부터 수신된 정상 판독 및 기록 메모리 액세스 요청들과는 별도로 생성되는 다양한 전력 차단, 리프레시, 및 종단 저항(ZQ) 교정 사이클들을 위한 상태 머신들을 포함한다. 예를 들어, 메모리 랭크가 프리차지 전력 차단에 있는 경우, 이는 리프레시 사이클들을 실행하기 위해 주기적으로 어웨이크되어야 한다. 리프레시 제어 로직(232)은 DRAM 칩들 내의 메모리 셀들의 스토리지 커패시터들로부터의 전하 누설에 의해 야기되는 데이터 에러들을 방지하기 위해, 지정된 조건들에 응답하여 그리고 주기적으로 리프레시 명령들을 생성한다. 리프레시 제어 로직(232)은 활성화 카운터(248)를 포함하고, 이 활성화 카운터는 본 실시예에서 메모리 채널을 통해 메모리 영역으로 전송되는 활성화 명령들의 롤링 수(rolling number)를 카운트하는 각각의 메모리 영역에 대한 카운터를 갖는다. 메모리 영역들은 일부 실시예들에서는 메모리 뱅크들이고, 다른 실시예들에서는 아래에 추가로 논의되는 바와 같이 메모리 서브-뱅크들이다. 추가적으로, 리프레시 제어 로직(232)은 시스템에서의 열 변화로 인한 온-다이(on-die) 종단 저항에 있어서의 미스매치를 방지하기 위해 ZQ를 주기적으로 교정한다.
아비터(238)는 명령 대기열(220)에 양방향으로 연결되며 메모리 채널 제어기(210)의 심장부로서, 메모리 버스의 사용을 개선하기 위해 액세스들의 지능형 스케줄링을 수행한다. 본 실시예에서, 아비터(238)는, 아래에서 추가로 설명되는 바와 같이, 다수의 최근에 발행된 기록 명령들의 뱅크 그룹 번호들을 추적하고, 특정 조건들 하에서 지정된 기간 동안 이들 뱅크 그룹들로의 명령들의 디스패치를 방지함으로써 이들 뱅크 그룹들을 "마스킹"하기 위한 뱅크 그룹 추적 회로(235)를 포함한다. 아비터(238)는 타이밍 블록(234)을 사용하여 명령 대기열(220) 내의 특정 액세스들이 DRAM 타이밍 파라미터들에 기초하여 발행에 적격인지를 결정함으로써 적절한 타이밍 관계를 시행한다. 예를 들어, 각각의 DRAM은, "tRC"로 알려진, 활성화 명령들 사이의 최소 지정된 시간을 갖는다. 타이밍 블록(234)은 JEDEC 사양에서 지정된 이 타이밍 파라미터 및 다른 타이밍 파라미터들에 기초하여 적격성을 결정하는 카운터들의 세트를 유지하고, 리플레이 대기열(230)에 양방향으로 연결된다. 페이지 테이블(236)은 아비터(238)에 대한 메모리 채널의 각각의 뱅크 및 랭크 내의 활성 페이지들에 관한 상태 정보를 유지하고, 리플레이 대기열(230)에 양방향으로 연결된다.
인터페이스(212)로부터 수신된 기록 메모리 액세스 요청들에 응답하여, ECC 생성 블록(244)은 기록 데이터에 따라 ECC를 계산한다. 데이터 버퍼(246)는 수신된 메모리 액세스 요청들에 대한 기록 데이터 및 ECC를 저장한다. 그것은 아비터(238)가 메모리 채널로의 디스패치를 위해 대응하는 기록 액세스를 픽할 때 조합된 기록 데이터/ECC를 메모리 인터페이스 대기열(214)에 출력한다.
전력 제어기(250)는 일반적으로 진보된 확장 가능 인터페이스 버전 1(AXI)에 대한 인터페이스(252), 진보된 주변 버스(APB) 인터페이스(254), 및 전력 엔진(260)을 포함한다. 인터페이스(252)는 SMN에 대한 제1 양방향 연결을 가지며, 이는 도 2에 별도로 도시된 "EVENT_n"으로 라벨링된 이벤트 신호를 수신하기 위한 입력, 및 출력을 포함한다. APB 인터페이스(254)는 인터페이스(252)의 출력에 연결된 입력, 및 APB를 통한 PHY에 대한 연결을 위한 출력을 갖는다. 전력 엔진(260)은 인터페이스(252)의 출력에 연결된 입력, 및 메모리 인터페이스 대기열(214)의 입력에 연결된 출력을 갖는다. 전력 엔진(260)은 구성 레지스터들(262)의 세트, 마이크로컨트롤러(μC)(264), 자체 리프레시 제어기(SLFREF/PE)(266), 및 신뢰성 있는 판독/기록 타이밍 엔진(RRW/TE)(268)을 포함한다. 구성 레지스터들(262)은 AXI 버스를 통해 프로그래밍되고, 메모리 제어기(200) 내의 다양한 블록들의 동작을 제어하기 위한 구성 정보를 저장한다. 따라서, 구성 레지스터들(262)은 도 2에 상세히 도시되지 않은 이러한 블록들에 연결된 출력들을 갖는다. SLFREF/PE(266)는 리프레시 제어 로직(232)에 의한 리프레시들의 자동 생성 외에도 리프레시들의 수동 생성을 허용하는 엔진이다. 신뢰성 있는 판독/기록 타이밍 엔진(268)은 DDR 인터페이스 최대 판독 레이턴시(MRL) 트레이닝 및 루프백 테스팅과 같은 목적을 위해 메모리 또는 I/O 디바이스에 연속적인 메모리 액세스 스트림을 제공한다.
메모리 채널 제어기(210)는 연관된 메모리 채널로의 디스패치를 위해 메모리 액세스들을 픽할 수 있게 하는 회로부를 포함한다. 원하는 중재 결정들을 내리기 위해, 어드레스 생성기(222)는 어드레스 정보를, 메모리 시스템 내의 랭크, 로우 어드레스, 컬럼 어드레스, 뱅크 어드레스, 및 뱅크 그룹을 포함하는 미리 디코딩된 정보로 디코딩하고, 명령 대기열(220)는 미리 디코딩된 정보를 저장한다. 구성 레지스터들(262)은 어드레스 생성기(222)가 수신된 어드레스 정보를 디코딩하는 방식을 결정하기 위한 구성 정보를 저장한다. 아비터(238)는 서비스 품질(QoS) 요건과 같은 다른 기준을 준수하면서 메모리 액세스들을 효율적으로 스케줄링하기 위해, 디코딩된 어드레스 정보, 타이밍 블록(234)에 의해 표시된 타이밍 적격성 정보, 및 페이지 테이블(236)에 의해 표시된 활성 페이지 정보를 사용한다. 예를 들어, 아비터(238)는 메모리 페이지들을 변경하는 데 요구되는 프리차지 및 활성화 명령들의 오버헤드를 회피하기 위해 개방된 페이지들에 대한 액세스들에 대한 선호도를 구현하고, 이들을 다른 뱅크에 대한 판독 및 기록 액세스와 인터리빙함으로써 하나의 뱅크에 대한 오버헤드 액세스를 숨긴다. 특히 정상 동작 동안, 아비터(238)는 보통, 페이지가 상이한 페이지를 선택하기 전에 프리차지될 필요가 있을 때까지, 페이지들을 상이한 뱅크들에서 개방된 상태에서 유지한다. 아비터(238)는, 일부 실시예들에서, 각각의 명령들의 타겟 메모리 영역들에 대한 활성화 카운터(248)의 각각의 값들에 적어도 기초하여 명령 선택에 대한 적격성을 결정한다.
도 3은 종래 기술에 따른, DDR5 메모리의 뱅크 그룹 구조(300)를 블록도의 형태로 도시한다. 일반적으로, DDR5 표준은 총 뱅크들을 더 많이 제공하면서 DDR4 메모리들에 대해 최대 수의 뱅크 그룹들을 배가하여, 더 많은 페이지들이 임의의 주어진 시간에 개방될 수 있게 함으로써 전반적인 시스템 효율성을 향상시킨다. DDR5 뱅크 그룹 스킴은 2개의 뱅크들 대신에 4개의 뱅크들의 메모리 어레이들 사이에 공통 회로부를 공유함으로써 DDR5 DRAM들이 비교적 작은 크기를 가질 수 있게 한다. 그러나, DDR5 표준은 또한 온-다이 ECC 계산을 포함하며, 이는 뱅크 그룹에 대한 데이터 기록 회로부가 DDR4와 같은 이전 표준들보다 더 긴 기간 동안 각각의 기록으로 점유되게 한다.
도시된 뱅크 그룹 구조(300)는 DDR5 메모리 내의 8개의 뱅크 그룹들을 도시하며, 뱅크 그룹들은 "BGA" 내지 "BGH"로 라벨링된다. (DDR5 표준은 DDR5 메모리 디바이스의 32개의 뱅크들에 대해 상이한 뱅크 그룹화들을 허용한다.) 뱅크 그룹 블록(310)은 뱅크 그룹(BGA)의 구조를 도시한다. 뱅크 그룹 블록은 4개의 뱅크들 "A0", "A1", "A2", 및 "A3", 및 그들의 공유 입력/출력 회로부를 포함한다. 공유 회로부는 컬럼 디코더들("COLDEC"), 기록 드라이버들 및 I/O 감지 앰프들(312), 및 직렬/역직렬화기 및 ECC 인코더/디코더 블록(314)을 포함한다.
동작 시, ECC 인코더/디코더는 뱅크 그룹 내의 뱅크 중 임의의 것에 대한 기록 명령들 사이의 지연을 야기하는데, 그 이유는 데이터가 기록될 때 ECC가 계산되고 저장되어야 하기 때문이다. DDR5에서, 이러한 ECC는 DRAM에 저장되는 데이터의 128 비트마다 메모리의 8 추가 비트들에 저장된다. 각각의 기록 명령에 대해, ECC 인코더는 기록 데이터에 대한 ECC를 계산하고, 이는 이어서 메모리의 추가 비트들에 저장된다. ECC 인코더가 기능하는 데 필요한 시간은 동일한 뱅크 그룹 내의 "최소 기록-기록(write to write)" 시간을, 온-다이 ECC를 포함하지 않는 이전 표준들에서 요구되는 것보다 훨씬 더 긴 시간으로 증가시킨다. 예를 들어, 이러한 온-다이 ECC가 없는 표준들은 약 9, 10 또는 11 클록 사이클들의 동일한 뱅크 기록-기록 시간을 가졌지만, 특정 구현예들에 따라 온다이 ECC는 약 32 내지 64 클록 사이클들의 총 동일한 뱅크 기록-기록 지연에 대해 이 시간을 4 내지 8배 증가시킨다. 또한, 기록 데이터 크기가 ECC에 사용되는 코드 워드(전형적으로 128 비트)보다 작은 경우, DRAM은 새로운 ECC 코드가 수정된 부분뿐만 아니라 전체 코드 워드에 대해 계산되어야 하기 때문에 "판독-수정-기록"(RMW) 동작을 수행한다. RMW 명령들의 이러한 사용은 최소 기록-기록 시간을 추가로 증가시킨다. 기록된 비트들의 수가 ECC 코드워드 내의 비트들의 수와 크기가 동일할 때 RMW는 필요하지 않다.
도 4는 일부 실시예들에 따른, 도 2의 메모리 제어기(200)의 일부분(400)을 블록도 형태로 도시한다. 도시된 일부분(400)은 DDR5, GDDR5, 및 뱅크 그룹들 및 뱅크 그룹 내의 모든 뱅크들에 의해 공유되는 회로부에 의해 수행되는 온-다이 ECC 계산들을 갖는 다른 유사한 DRAM 유형들을 위한 메모리 제어기에 사용하기에 적합하다. 일부분(400)은 명령 대기열(410), 연관된 뱅크 그룹 추적 회로(425)를 갖는 아비터(420), 및 멀티플렉서(440)를 포함한다. 명령 대기열(410)은 인터페이스(212)로부터 수신된 메모리 액세스 요청들을 저장한다. 메모리 액세스 요청들은 메모리에서 임의의 뱅크에 대한 판독 또는 기록 사이클들일 수 있고, APU(100)에서 메모리 액세스 에이전트들 중 임의의 것에 의해 생성될 수 있다. 도 4의 예에서, 명령 대기열(410)은 모든 뱅크들 및 랭크들에 대해 총 16개의 엔트리들을 가지며, 각각의 엔트리는 액세스 어드레스, 기록 사이클의 경우 데이터, 및 그의 상대적 연령을 나타내는 태그를 갖는다. 아비터(420)는 그의 속성들을 판독하기 위해 명령 대기열(410)의 각각의 엔트리에 양방향으로 연결되고, 그것이 디스패치됨에 따라 액세스를 수신하기 위한 추가 입력을 갖고, ACT 및 PRE 명령들과 같은 프로토콜 명령들을 제공하기 위한 출력을 갖고, 인터페이스(212)에 전송할 16개 엔트리들 중 하나를 선택하기 위한 제어 출력을 갖는다. 멀티플렉서(440)는 명령 대기열(410)의 각자의 엔트리들에 연결된 16개의 입력들, 아비터(420)의 출력에 연결된 추가 입력, 아비터(420)의 출력에 연결된 제어 입력, 및 메모리 PHY에 디스패치된 액세스를 제공하기 위한 출력을 갖는다.
뱅크 그룹 추적 회로(425)는 아비터(420)의 출력에 연결된 입력, 및 아비터(420)의 각자의 입력들에 연결된 다수의 출력들을 갖는다. 뱅크 그룹 추적 회로(425)는 각각이 각자의 뱅크 그룹 번호 엔트리(428)에 연결되는, 각각 "T"로 라벨링된 다수의 타이머들(426), 및 추적 기능들을 구현하기 위한 뱅크 그룹 추적 로직을 포함한다. 동작 시, 뱅크 그룹 추적 회로(425)는 기록 명령들이 선택되고 메모리 인터페이스 대기열에 디스패치될 때 아비터(420)로부터 표시자들을 수신한다. 표시자에서 수신된 정보는 선택된 기록 명령에 대한 뱅크 번호 또는 뱅크 그룹 번호를 포함한다. 뱅크 번호가 제공되는 경우, 뱅크 그룹 추적 로직은 식별된 뱅크 번호를 포함하는 뱅크 그룹에 대한 뱅크 그룹 번호를 제공할 것이다. 각각의 표시자에 응답하여, 선택된 명령에 대한 뱅크 그룹 번호는 뱅크 그룹 번호 엔트리들(428) 중 하나에 추가되고, 각자의 타이머(426)는 각자의 뱅크 그룹 번호가 추적된 클록 사이클들의 수를 카운팅함으로써 기록 명령이 디스패치된 이후의 시간을 추적하도록 활성화된다. 각각의 엔트리(428)는, 아비터가 메모리에 디스패치하기 위한 새로운 기록 명령들을 선택할 때 어떤 뱅크 그룹 번호들이 추적되고 있는지를 체크하기 위해 아비터(420)에 연결된다. 각각의 엔트리는 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간에 대응하는, 각자의 타이머(426)에 의해 카운팅된 클록 사이클들의 수가 지날 때까지 추적되며, 그 후에는 뱅크 그룹 번호가 그의 각자의 엔트리(428)로부터 제거되고 더 이상 추적되지 않는다. 추적된 뱅크 그룹 번호들의 수는 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간의 길이 - 이는 전형적으로 온-다이 ECC 코드들을 계산하고 그들을 관련 기록 데이터와 함께 DRAM에 기록하는 데 있어서 DRAM 칩의 속도에 기초하여 선택됨 -에 따라 달라질 수 있다. 예를 들어, 최소 기록-기록 기간이 40개 클록 사이클들을 초과하는 경우, 그러한 시간 동안 4개의 기록 명령들이 가능하게는 DRAM으로 전송될 수 있어서, 뱅크 그룹 번호 추적 회로는 4개의 명령들을 추적하기 위한 엔트리들을 갖는다. 더 긴 최소 기록-기록 기간들의 경우, 더 많은 뱅크 그룹 번호 엔트리들이 사용된다. 바람직하게는, 뱅크 그룹 추적 회로에는 최대 허용 기록-기록 기간에 대한 명령들을 추적하기에 충분한 엔트리들이 제공된다.
명령 대기열(410)은 인터페이스(212)로부터 수신된 액세스들을 저장하고 그의 상대적 연령을 나타내기 위해 태그를 할당한다. 아비터(420)는 타이밍 적격성, 연령, 공정성, 및 활동 유형과 같은 정책들의 세트에 기초하여, 명령 대기열(410)에 보류 중인 액세스 중 어느 것을 스케줄링하고 메모리 인터페이스 대기열(214)로 디스패치할지 결정한다. 아비터(420)는 또한 명령 대기열(410)로부터 명령들을 선택할 때 뱅크 그룹 추적 회로(425)로부터 추적된 뱅크 그룹 번호들을 고려한다. 특히, 아비터(420)는 다른 뱅크 그룹에 대한 다른 기록 요청이 명령 대기열(410)에 적격하지 않지 않는 한, 추적된 뱅크 그룹 번호들에 대한 기록 요청들 및 연관된 활성화 명령들의 선택을 방지한다.
아비터(420)는 도 4에 도시되지 않은 페이지 테이블을 포함하여, 메모리 시스템의 각각의 뱅크 및 랭크 내의 개방 페이지들을 나타낸다. 일반적으로, 아비터(420)는 동일한 로우(row)에 대한 다수의 액세스들을 함께 스케줄링하고 동일한 뱅크에서 상이한 행에 대한 더 오래된 액세스를 지연시킴으로써 메모리 시스템 버스의 효율을 증가시킬 수 있다. 따라서, 아비터(420)는 현재 활성화된 로우와는 상이한 로우에 대한 액세스들을 선택적으로 연기함으로써 효율을 증가시킨다. 아비터(420)는 또한 엔트리의 연령 태그를 사용하여 액세스의 레이턴시를 제한한다. 따라서, 아비터(420)는 다른 페이지에 대한 액세스가 특정 시간 동안 보류 중일 때 메모리에서 개방 페이지에 대한 일련의 액세스들을 중단할 것이다. 아비터(420)는 또한, 오버헤드를 은닉하기 위해 주어진 메모리 뱅크에 대한 ACT 및 PRE 명령들 사이의 다른 메모리 뱅크들에 대한 액세스들을 스케줄링한다.
위에서 논의된 바와 같이, 뱅크 그룹 추적 회로(425)의 엔트리들(428) 내의 추적된 뱅크 그룹 번호들에 기초하여, 아비터(420)는 명령 대기열에서 다른 뱅크 그룹에 대해 적격인 다른 기록 요청이 없지 않는 한, 추적된 뱅크 그룹 번호들에 대한 기록 요청들 및 연관된 활성화 명령들의 선택을 방지한다. 그의 뱅크 그룹 번호가 추적되기 때문에 요청이 통과된 경우(선택되지 않음), 이는 추적 기간이 만료된 후에 적격이 된다. 뱅크 그룹 추적 회로(425)는 이전 기록 요청이 지정된 기간이 경과한 후에 발행되기에 적격임을 나타낸다. 본 실시예에서, 지정된 기간은 이전 기록 요청의 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간에 대응하는 클록 사이클들의 수에 기초한다. 이러한 표시는 적어도 뱅크 그룹 번호를 그의 대응하는 엔트리(428)로부터 제거하는 것을 포함한다. 일부 실시예들에서, 뱅크 그룹 추적 회로(425)는 또한, 뱅크 그룹 엔트리들(428) 중 하나에서 각자의 명령의 뱅크 그룹 번호가 현재 추적되는지 여부에 기초하여, 명령 대기열(410)과 인터페이스하여 명령 대기열(410)의 각각의 기록 명령에 적격 태그 또는 (부적격을 표시하기 위한) 마스크 태그를 이용하여 태깅하거나 라벨링한다. 이들 실시예들에서, 뱅크 그룹 추적 회로(425)는 뱅크 그룹 번호가 엔트리들(428)에 추가되거나 그로부터 제거될 때 명령 대기열(410)에서 태그들을 업데이트한다.
도 5는 일부 실시예들에 따른, 도 2의 메모리 제어기(200)의 일부분(500)을 블록도 형태로 도시한다. 도시된 부분(500)은 DDR5, GDDR5, 및 온-다이 ECC 계산들을 갖는 다른 유사한 DRAM 유형들을 위한 메모리 제어기에 사용하기에 적합하다. 일부분(500)은 아비터(238) 및 아비터(238)의 동작과 연관된 제어 회로들(560)의 세트를 포함한다. 아비터(238)는 서브-아비터들(505)의 세트 및 최종 아비터(550)를 포함한다. 서브-아비터들(505)은 서브-아비터(510), 서브-아비터(520), 및 서브-아비터(530)를 포함한다. 서브-아비터(510)는 "PH ARB"로 라벨링된 페이지 히트(hit) 아비터(512), 및 출력 레지스터(514)를 포함한다. 페이지 히트 아비터(512)는 명령 대기열(220)에 연결된 제1 입력, 뱅크 그룹 추적 회로(235)에 연결된 제2 입력, 타이밍 블록(234)에 연결된 제3 입력, 및 출력을 갖는다. 레지스터(514)는 페이지 히트 아비터(512)의 출력에 연결된 데이터 입력, UCLK 신호를 수신하기 위한 클록 입력, 및 출력을 갖는다. 서브-아비터(520)는 "PC ARB"로 라벨링된 페이지 충돌 아비터(522), 및 출력 레지스터(524)를 포함한다. 페이지 충돌 아비터(522)는 명령 대기열(220)에 연결된 제1 입력, 뱅크 그룹 추적 회로(235)에 연결된 제2 입력, 타이밍 블록(234)에 연결된 제3 입력, 및 출력을 갖는다. 레지스터(524)는 페이지 충돌 아비터(522)의 출력에 연결된 데이터 입력, UCLK 신호를 수신하기 위한 클록 입력, 및 출력을 갖는다. 서브-아비터(530)는 "PM ARB"로 라벨링된 페이지 누락 아비터(532), 및 출력 레지스터(534)를 포함한다. 페이지 누락 아비터(532)는 명령 대기열(220)에 연결된 제1 입력, 뱅크 그룹 추적 회로(235)에 연결된 제2 입력, 타이밍 블록(234)에 연결된 제3 입력, 및 출력을 갖는다. 레지스터(534)는 페이지 누락 아비터(532)의 출력에 연결된 데이터 입력, UCLK 신호를 수신하기 위한 클록 입력, 및 출력을 갖는다. 최종 아비터(550)는 리프레시 제어 로직(232)의 출력에 연결된 제1 입력, 페이지 폐쇄 예측기(562)로부터의 제2 입력, 출력 레지스터(514)의 출력에 연결된 제3 입력, 출력 레지스터(524)의 출력에 연결된 제4 입력, 출력 레지스터(534)의 출력에 연결된 제5 입력, "CMD1"로 라벨링된 대기열(214)에 제1 중재 승자(winner)를 제공하기 위한 제1 출력, 및 "CMD2"로 라벨링된 대기열(214)에 제2 중재 승자를 제공하기 위한 제2 출력을 갖는다.
제어 회로들(560)은 도 2에 대하여 이전에 설명된 바와 같은 타이밍 블록(234) 및 페이지 테이블(236), 및 페이지 폐쇄 예측기(562), 현재 모드 레지스터(502), 및 뱅크 그룹 추적 회로(235)를 포함한다. 타이밍 블록(234)은 페이지 테이블(236)에 연결된 입력, 페이지 히트 아비터(512), 페이지 충돌 아비터(522), 및 페이지 누락 아비터(532)에 연결된 입력 및 출력을 갖는다. 페이지 테이블(236)은 리플레이 대기열(230)의 출력에 연결된 입력, 리플레이 대기열(230)의 입력에 연결된 출력, 명령 대기열(220)의 입력에 연결된 출력, 타이밍 블록(234)의 입력에 연결된 출력, 및 페이지 폐쇄 예측기(562)의 입력에 연결된 출력을 갖는다. 페이지 폐쇄 예측기(562)는 페이지 테이블(236)의 하나의 출력에 연결된 입력, 출력 레지스터(514)의 출력에 연결된 입력, 및 최종 아비터(550)의 제2 입력에 연결된 출력을 갖는다. 뱅크 그룹 추적 회로(235)는 명령 대기열(220)에 연결된 입력, 최종 아비터(550)에 연결된 입력 및 출력, 페이지 히트 아비터(510), 페이지 충돌 아비터(520), 및 페이지 누락 아비터(530)에 연결된 입력 및 출력을 갖는다.
페이지 히트 아비터(512), 페이지 충돌 아비터(522), 및 페이지 누락 아비터(532) 각각은 이러한 각자의 카테고리들에 속하는 명령 대기열(220) 내의 명령들의 타이밍 적격성을 결정하기 위해 타이밍 블록(234)의 출력에 연결된 입력을 갖는다. 타이밍 블록(234)은 각각의 랭크 내의 각각의 뱅크에 대한 특정 동작들과 관련된 지속기간들을 카운트하는 이진 카운터들의 어레이를 포함한다. 상태를 결정하는 데 필요한 타이머들의 수는 타이밍 파라미터, 주어진 메모리 유형에 대한 뱅크들의 수, 및 주어진 메모리 채널 상에서 시스템에 의해 지원되는 랭크들의 수에 의존한다. 구현되는 타이밍 파라미터들의 수는 결국 시스템에서 구현되는 메모리의 유형에 의존한다. 예를 들어, DDR5 및 GDDR5 메모리들은 다른 DDRx 메모리 유형들보다 더 많은 타이밍 파라미터들을 따르기 위해 더 많은 타이머들을 필요로 한다. 이진 카운터들로서 구현되는 일반적인 타이머들의 어레이를 포함함으로써, 타이밍 블록(234)은 상이한 메모리 유형들에 대해 스케일링되고 재사용될 수 있다.
페이지 히트는 개방된 페이지에 대한 판독 또는 기록 사이클이다. 그러나, 기록 명령들에 대한 페이지 히트 추적이 또한 본 실시예에서 뱅크 그룹 추적 프로세스에 의해 관리된다. 기록 명령들에 대한 페이지 히트들은, 후보 명령에 대한 뱅크 그룹 번호가 현재 뱅크 그룹 추적 회로(235)에 의해 추적되는 경우, 이용 가능한 다른 후보들이 없지 않는 한 선택에 적격이 아니다. 페이지 히트 아비터(512)는 개방된 페이지들에 대한 명령 대기열(220) 내의 액세스들 사이에서 중재한다. 타이밍 블록(234) 내의 타이머들에 의해 추적되고 페이지 히트 아비터(512)에 의해 체크되는 타이밍 적격성 파라미터들은, 예를 들어, 로우 어드레스 스트로브(row address strobe, RAS) 대 컬럼 어드레스 스트로브(column address strobe, CAS) 지연 시간(tRCD) 및 CAS 레이턴시(tCL)를 포함한다. 예를 들어, tRCD는 페이지가 RAS 사이클에서 개방된 후에 페이지에 대한 판독 액세스 전에 경과해야 하는 최소 시간량을 지정한다. 페이지 히트 아비터(512)는 액세스들의 할당된 우선순위에 기초하여 서브-중재 승자를 선택한다. 일 실시예에서, 우선순위는 4-비트 1-핫 값(4-bit, one-hot value)이며, 따라서 이는 4개의 값들 사이의 우선순위를 나타내지만, 이러한 4-레벨 우선순위 스킴은 단지 하나의 예일 뿐이라는 것이 명백해야 한다. 페이지 히트 아비터(512)가 동일한 우선순위 레벨에 있는 2개 이상의 요청들을 검출하는 경우, 가장 오래된 엔트리가 승리한다.
페이지 충돌은 뱅크 내의 다른 로우가 현재 활성화된 때의 뱅크 내의 하나의 로우에 대한 액세스이다. 페이지 충돌 아비터(522)는 대응하는 뱅크 및 랭크에서 현재 개방된 페이지와 충돌하는 페이지들에 대한 명령 대기열(220) 내의 액세스들 사이에서 중재한다. 페이지 충돌 아비터(522)는 프리차지 명령의 발행을 야기하는 서브-중재 승자를 선택한다. 타이밍 블록(234) 내의 타이머들에 의해 추적되고 페이지 충돌 아비터(522)에 의해 체크되는 타이밍 적격성 파라미터들은, 예를 들어, 활성-프리차지 명령 기간(tRAS)을 포함한다. 기록 명령들에 대한 페이지 충돌 서브-중재는 또한 후보 기록 명령들에 대한 뱅크 그룹 번호를 고려한다. 후보 기록 명령들은, 후보 명령에 대한 뱅크 그룹 번호가 현재 뱅크 그룹 추적 회로(235)에 의해 추적되는 경우, 이용 가능한 다른 후보들이 없지 않는 한 선택에 적격이 아니다. 페이지 충돌 아비터(522)는 액세스의 할당된 우선순위에 기초하여 서브-중재 승자를 선택한다. 페이지 충돌 아비터(522)가 동일한 우선순위 레벨에 있는 2개 이상의 요청들을 검출하는 경우, 가장 오래된 엔트리가 승리한다.
페이지 누락은 프리차지된 상태에 있는 뱅크에 대한 액세스이다. 페이지 누락 아비터(532)는 프리차지된 메모리 뱅크들에 대한 명령 대기열(220) 내의 액세스들 사이에서 중재한다. 타이밍 블록(234) 내의 타이머들에 의해 추적되고 페이지 누락 아비터(532)에 의해 체크되는 타이밍 적격성 파라미터들은, 예를 들어, 프리차지 명령 기간(tRP)을 포함한다. 동일한 우선순위 레벨에 있는 페이지 누락들인 2개 이상의 요청들이 있는 경우, 가장 오래된 엔트리가 승리한다.
각각의 서브-아비터는 그들 각자의 서브-중재 승자에 대한 우선순위 값을 출력한다. 최종 아비터(550)는 페이지 히트 아비터(512), 페이지 충돌 아비터(522), 및 페이지 누락 아비터(532) 각각으로부터의 서브-중재 승자들의 우선순위 값들을 비교한다. 최종 아비터(550)는 한 번에 2개의 서브-중재 승자들을 고려하여 상대적 우선순위 비교들의 세트를 수행함으로써 서브-중재 승자들 사이의 상대적 우선순위를 결정한다. 서브-아비터들은 각각의 모드(판독 및 기록)에 대한 명령들을 중재하기 위한 로직의 세트를 포함할 수 있으며, 따라서 현재 모드가 변경될 때, 이용 가능한 후보 명령들의 세트가 서브-중재 승자들로서 빠르게 이용 가능하다.
3개의 서브-중재 승자들 사이의 상대적 우선순위를 결정한 후에, 최종 아비터(550)는 이어서 서브-중재 승자들이 충돌하는지(즉, 그들이 동일한 뱅크 및 랭크로 지향되는지)를 결정한다. 그러한 충돌들이 없는 경우, 최종 아비터(550)는 최고 우선순위들을 갖는 최대 2개의 서브-중재 승자들을 선택한다. 충돌들이 있는 경우, 최종 아비터(550)는 다음의 규칙들을 따른다. 페이지 히트 아비터(512)의 서브-중재 승자의 우선순위 값이 페이지 충돌 아비터(522)의 것보다 더 높고, 그들이 둘 모두가 동일한 뱅크 및 랭크에 대한 것인 경우, 최종 아비터(550)는 페이지 히트 아비터(512)에 의해 표시된 액세스를 선택한다. 페이지 충돌 아비터(522)의 서브-중재 승자의 우선순위 값이 페이지 히트 아비터(512)의 것보다 더 높고, 그들이 둘 모두가 동일한 뱅크 및 랭크에 대한 것인 경우, 최종 아비터(550)는 여러 개의 추가적인 인자들에 기초하여 승자를 선택한다. 일부 경우에서, 페이지 폐쇄 예측기(562)는 자동 프리차지 속성을 설정함으로써 페이지가 페이지 히트 아비터(512)에 의해 표시된 액세스의 끝에서 폐쇄되게 한다.
페이지 히트 아비터(512) 내에서, 우선순위는 메모리 액세싱 에이전트로부터의 요청 우선순위에 의해 초기에 설정되지만, 우선순위는 액세스들의 유형(판독 또는 기록) 및 액세스들의 시퀀스에 기초하여 동적으로 조정된다. 일반적으로, 페이지 히트 아비터(512)는 더 높은 암시적 우선순위를 판독들에 할당하지만, 기록들이 완료를 향해 진행하는 것을 보장하기 위해 우선순위 상승 메커니즘을 구현한다.
페이지 히트 아비터(512)가 판독 또는 기록 명령을 선택할 때마다, 페이지 폐쇄 예측기(562)는 자동-프리차지(AP) 속성을 갖는 명령을 전송할지 여부를 결정한다. 판독 또는 기록 사이클 동안, 자동-프리차지 속성은 미리 정의된 어드레스 비트로 설정되고, 자동-프리차지 속성은 판독 또는 기록 사이클이 완료된 후에 DDR 디바이스가 페이지를 폐쇄하게 하며, 이는 메모리 제어기가 그 뱅크에 대한 별개의 프리차지 명령을 나중에 전송할 필요성을 방지한다. 페이지 폐쇄 예측기(562)는 선택된 명령와 동일한 뱅크에 액세스하는 명령 대기열(220) 내에 이미 존재하는 다른 요청들을 고려한다. 페이지 폐쇄 예측기(562)가 메모리 액세스를 AP 명령로 변환하면, 그 페이지에 대한 다음 액세스는 페이지 누락일 것이다.
상이한 메모리 액세스 유형들에 대해 상이한 서브-아비터들을 사용함으로써, 각각의 아비터는 모든 액세스 유형들(페이지 히트들, 페이지 누락들, 및 페이지 충돌들) 사이에서 중재하는 것이 요구되는 경우보다 더 간단한 로직으로 구현될 수 있지만, 단일 아비터를 포함하는 실시예들이 구상된다. 이에 따라 중재 로직은 단순화될 수 있고 아비터(238)의 크기는 비교적 작게 유지될 수 있다.
다른 실시예들에서, 아비터(238)는 상이한 수의 서브-아비터들을 포함할 수 있다. 또 다른 실시예들에서, 아비터(238)는 특정 유형의 2개 이상의 서브-아비터들을 포함할 수 있다. 예를 들어, 아비터(238)는 2개 이상의 페이지 히트 아비터들, 2개 이상의 페이지 충돌 아비터들, 및/또는 2개 이상의 페이지 누락 아비터들을 포함할 수 있다.
동작 시에, 아비터(238)는 뱅크 그룹 추적 회로(235)에 의해 추적된 뱅크 그룹 번호들, 각각의 엔트리의 페이지 상태, 각각의 메모리 액세스 요청의 우선순위, 및 요청들 사이의 종속성들을 고려함으로써 명령 대기열(220) 및 리프레시 제어 로직(232)으로부터 메모리 액세스 명령들을 선택한다. 우선순위는 AXI4 버스로부터 수신되고 명령 대기열(220)에 저장된 요청들의 서비스 품질 또는 QoS에 관련되지만, 메모리 액세스의 유형 및 아비터(238)의 동적 동작에 기초하여 변경될 수 있다. 아비터(238)는 기존의 집적 회로 기술의 프로세싱 및 송신 한계들 사이의 미스매치를 해결하기 위해 병렬로 동작하는 3개의 서브-아비터들을 포함한다. 각자의 서브-아비터들의 승자들은 최종 아비터(550)에 제시된다. 일부 실시예들에서, 각각의 승자는 그것이 현재 추적된 뱅크 번호를 갖지만 그럼에도 불구하고 다른 적합한 기록 명령들을 사용할 수 없었기 때문에 선택되었는지 여부를 나타내도록 태깅된다. 최종 아비터(550)는 리프레시 제어 로직(232)으로부터의 리프레시 동작뿐만 아니라 이러한 3개의 서브-중재 승자들 사이에서 선택하며, 판독 또는 기록 명령을 페이지 폐쇄 예측기(562)에 의해 결정되는 바와 같은 자동-프리차지 명령을 갖는 판독 또는 기록으로 추가로 수정할 수 있다.
뱅크 그룹 추적 회로(235)의 엔트리들(428) 내의 추적된 뱅크 그룹 번호들에 기초하여, 아비터(238)는 명령 대기열에서 적격인 다른 기록 요청이 없지 않는 한, 추적된 뱅크 그룹 번호들에 대한 기록 요청들 및 연관된 활성화 명령들의 선택을 방지한다. 그의 뱅크 그룹 번호가 추적되기 때문에 요청이 통과된 경우(선택되지 않음), 이는 추적 기간이 만료된 후에 적격이 된다. 뱅크 그룹 추적 회로(235)는, 제한된 뱅크 그룹 번호를 그의 추적 엔트리들로부터 제거함으로써, 이전 기록 요청이 이전 기록 요청의 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간에 대응하는 클록 사이클들의 수가 지난 후에 발행되기에 적격임을 나타낸다.
도 6은 일부 실시예들에 따른, 뱅크 그룹 추적 회로를 동작하여 기록 명령을 추적하기 위한 프로세스의 흐름도(600)를 도시한다. 프로세스는 뱅크 그룹 추적 회로(425)(도 4), 뱅크 그룹 추적 회로(235)(도 5), 또는 아비터에 연결된 다른 적합한 디지털 로직 회로에 의해 수행되기에 적합하다. 프로세스는, 아비터가 블록(602)에서 DRAM 메모리로의 송신을 위해 명령 대기열로부터 기록 요청들을 선택할 때 개시된다. 선택된 기록 명령에 대한 연관된 활성화 명령(ACT)은 기록 명령에 대한 로우를 활성화하기 위해 기록 명령 전에 디스패치된다. 개입 명령들은 연관된 ACT 및 선택된 기록 명령 사이에 디스패치될 수 있다. 선택된 기록 명령은 명령 대기열로부터 할당 해제되고, DRAM 메모리로의 송신을 위해 메모리 인터페이스 대기열 또는 메모리 PHY로 전송된다. 뱅크 그룹 추적 회로는 디스패치된 기록 명령들을 모니터링하거나, 또는 기록 명령이 디스패치됨을 아비터 또는 메모리 인터페이스 대기열에 의해 통지받는다. 그러한 통지에 응답하여, 블록(604)에서, 뱅크 그룹 추적 회로는 디스패치된 기록 명령의 뱅크 그룹 번호를 그의 뱅크 그룹 추적 엔트리들에 추가한다. 블록(604)에서, 기록 명령이 디스패치된 후에 경과된 클록 사이클들을 카운팅하기 위해 타이머가 시작되거나, 타이머 추적 회로를 이용해 엔트리가 입력될 수 있다.
추적된 뱅크 그룹 번호들에 대해, 블록(606)에서 프로세스는 명령 대기열에서 적격인 다른 기록 요청이 없지 않는 한, 추적된 뱅크 그룹 번호들에 대한 후속 기록 요청 및 그의 연관된 활성화 명령의 선택을 방지하는 것을 포함한다. 전형적으로, 아비터 회로에서 수행되는 선택 프로세스는, 추적되지 않은 뱅크 그룹 번호들을 순환하고 적격인 기록 요청을 찾을 때까지 각각의 각자의 뱅크 그룹에 대한 기록 요청이 선택에 적격인지 여부를 체크한다. 블록(608)에서, 프로세스는 이전 기록 요청의 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간에 대응하는 클록 사이클들의 수가 지난 후에 뱅크 그룹 번호에 대한 추적을 제거한다. 특정 뱅크 그룹에 대한 선택을 위한 임의의 이전 기록 요청들이 전달되었다면, 이 블록은, 이전 기록 요청이 뱅크 그룹에 발행된 후로 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간이 경과된 후에 그러한 이전 기록 요청이 발행되기에 적격이되게 한다.
일반적으로, 프로세스는 아비터에 의해 선택된 최대 3개 이상의 이전 기록 요청들에 대한 뱅크 그룹 번호들을 추적하는 것을 포함한다. 추적된 뱅크 그룹 번호들의 수는 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간의 길이 - 이는 전형적으로 온-다이 ECC 코드들을 계산하고 그들을 관련 기록 데이터와 함께 DRAM에 기록하는 데 있어서 DRAM 칩의 속도에 의해 좌우됨 -에 따라 달라진다.
도 7은 일부 실시예들에 따른 명령들을 중재하는 프로세스의 흐름도(700)를 도시한다. 도시된 프로세스는 도 5의 것들과 같은 아비터 및 뱅크 그룹 추적 회로를 구현하는 데 적합하다. 블록(702)에서, 프로세스는 후보 요청을 선택하는 서브-아비터에 대해 수행된다.
블록(704)에서, 프로세스는 후보 요청을 선택하는 데 서브-아비터 선택 정책들을 적용하고, 또한 적격인 기록 요청들에 대해 명령 대기열을 체크할 때, 추적된 뱅크 그룹 번호들에 대해 뱅크 그룹 번호 마스크를 적용한다. 위에서 논의된 바와 같이, 추적되는 뱅크 그룹들에 대한 기록 명령들은 선택에 적격인 다른 기록 명령들이 없지 않는 한 적격이 아니거나 "마스킹된다".
블록(706)에서, 프로세스는 각각의 서브-아비터로부터 후보 기록 요청들을 제공한다. 아비터의 다수의 서브-아비터들은 전형적으로 프로세스를 수행하며, 각각은 도 5의 서브-아비터들과 관련하여 논의된 바와 같은 후보 요청을 제공할 것이다. 블록(708)에서, 최종 아비터는 명령 대기열로부터의 할당 해제 및 DRAM 메모리로의 송신을 위한 기록 요청을 선택한다. 뱅크 그룹 번호 마스크가 서브-아비터들에서 적용되기 때문에, 최종 아비터는 뱅크 그룹 추적 프로세스를 고려할 필요가 없다.
도 2의 메모리 제어기(200), 또는 아비터(238) 및 리프레시 제어 로직(232)과 같은 그의 임의의 부분들은 프로그램에 의해 판독될 수 있고 집적 회로들을 제조하기 위해 직접적으로 또는 간접적으로 사용될 수 있는 데이터베이스 또는 다른 데이터 구조의 형태로 컴퓨터 액세스 가능 데이터 구조에 의해 설명되거나 표현될 수 있다. 예를 들어, 이 데이터 구조는 베릴로그(Verilog) 또는 VHDL과 같은 고급 설계 언어(HDL)의 하드웨어 기능의 동작 레벨 설명 또는 레지스터 전달 레벨(RTL) 설명일 수 있다. 설명은 합성 라이브러리로부터 게이트들의 리스트를 포함하는 네트리스트를 생성하기 위해 설명을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 네트리스트는 집적 회로들을 포함하는 하드웨어의 기능을 또한 나타내는 게이트들의 세트를 포함한다. 이어서 네트리스트는 마스크에 적용될 기하학적 형상들을 설명하는 데이터 세트를 생성하도록 배치 및 라우팅될 수 있다. 이어서 마스크들은 집적 회로들을 생성하기 위해 다양한 반도체 제작 단계들에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스 가능 저장 매체 상의 데이터베이스는, 원하는 바에 따라, 네트리스트(합성 라이브러리를 갖거나 갖지 않음) 또는 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
특정 실시예들이 설명되었지만, 이들 실시예들에 대한 다양한 변형들이 당업자에게 명백할 것이다. 예를 들어, 메모리 채널 제어기(210) 및/또는 전력 엔진(250)의 내부 아키텍처는 상이한 실시예들에서 다를 수 있다. 메모리 제어기(200)는 고대역폭 메모리(HBM), RAMbus DRAM(RDRAM) 등과 같은, DDRx 이외의 다른 유형들의 메모리에 인터페이스될 수 있다. 도시된 실시예가 별개의 DIMM들 또는 SIMM들에 대응하는 메모리의 각각의 랭크를 보여주었지만, 다른 실시예들에서 각각의 모듈은 다수의 랭크들을 지원할 수 있다. 또 다른 실시예들이 호스트 마더보드에 장착된 DRAM들과 같은, 특정 모듈에 포함되지 않는 다른 유형들의 DRAM 모듈들 또는 DRAM들을 포함할 수 있다. 따라서, 개시된 실시예들의 범위 내에 속하는 개시된 실시예들의 모든 변형들을 포함하는 것이, 첨부된 청구범위에 의해 의도된다.

Claims (20)

  1. 메모리 제어기로서,
    메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위한 입력, 및 미리 결정된 수의 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는 명령 대기열; 및
    DRAM 채널에 결합된 DRAM 메모리로의 송신을 위해 상기 명령 대기열로부터 메모리 요청들을 선택하기 위한 아비터(arbiter)를 포함하며, 상기 아비터는,
    상기 아비터에 의해 선택된 3개 이상의 이전 기록 요청들의 뱅크 그룹 번호들을 추적하는 뱅크 그룹 추적 회로; 및
    상기 명령 대기열로부터 발행될 요청들을 선택하고, 상기 추적된 뱅크 그룹 번호들에 대한 기록 요청들 및 연관된 활성화 명령들의 선택을 방지하는 선택 회로를 포함하며,
    상기 뱅크 그룹 추적 회로는 이전 기록 요청 및 연관된 활성화 명령이 지정된 기간이 경과한 후에 발행되기에 적격임을 나타내는, 메모리 제어기.
  2. 제1항에 있어서, 상기 선택 회로는, 새로운 기록 요청을 선택할 때, 추적되지 않은 뱅크 그룹 번호들을 순환하고 적격인 기록 요청을 찾을 때까지 각각의 각자의 뱅크 그룹에 대한 기록 요청이 선택에 적격인지 여부를 체크하는, 메모리 제어기.
  3. 제1항에 있어서, 상기 뱅크 그룹 추적 회로는 각각의 뱅크 그룹 번호가 추적된 클록 사이클들의 수를 카운팅하기 위한 적어도 하나의 타이머를 포함하는, 메모리 제어기.
  4. 제1항에 있어서, 상기 뱅크 그룹 추적 회로는 뱅크 그룹 번호를 각각 보유하는 복수의 엔트리들, 및 상기 엔트리들의 각자의 엔트리와 각각 연관되고 상기 각자의 뱅크 그룹 번호가 추적된 클록 사이클들의 수를 카운팅하는 복수의 타이머들을 포함하는, 메모리 제어기.
  5. 제1항에 있어서, 상기 선택 회로는 추적된 뱅크 그룹 번호를 각각 수신하는 다수의 입력들을 포함하며, 상기 선택 회로는 상기 추적된 뱅크 그룹 번호들 및 타이밍 적격성, 연령, 공정성, 및 활동 유형을 포함하는 정책들의 세트에 기초하여 상기 명령 대기열로부터 요청들을 선택하는, 메모리 제어기.
  6. 제1항에 있어서, 상기 선택 회로는,
    제1 유형의 액세스 및 제2 유형의 액세스에 따라 상기 명령 대기열로부터 후보 메모리 요청들을 선택적으로 픽하기 위한 적어도 하나의 서브-아비터 - 각각의 유형의 액세스는 상기 메모리 내의 뱅크의 상이한 페이지 상태에 대응하고, 상기 적어도 하나의 서브-아비터는 상기 뱅크 그룹 추적 회로로부터 제공된 정보에 기초하여 기록 요청들을 선택함 -; 및
    상기 후보 메모리 요청들로부터 요청 선택을 중재하는 최종 아비터를 포함하는, 메모리 제어기.
  7. 제1항에 있어서, 상기 지정된 기간은 상기 이전 기록 요청의 상기 뱅크 그룹에 대한 최소 기록-기록(write-to-write) 타이밍 기간에 대응하는 클록 사이클들의 수인, 메모리 제어기.
  8. 방법으로서,
    메모리 제어기에서 복수의 메모리 액세스 요청들을 수신하는 단계, 및 이들을 명령 대기열에 배치하여 다수의 뱅크 그룹들을 포함하는 DRAM 메모리로의 송신을 대기하는 단계;
    아비터를 사용하여, 상기 DRAM 메모리로의 송신을 위해 상기 명령 대기열로부터 기록 요청들을 선택하는 단계;
    상기 아비터에 의해 선택된 3개 이상의 이전 기록 요청들에 대한 뱅크 그룹 번호들을 추적하는 단계;
    상기 추적된 뱅크 그룹에 대한 후속 기록 요청 및 연관된 활성화 명령의 선택을 방지하는 단계: 및
    이전 기록 요청 및 연관된 활성화 명령들을 지정된 기간이 경과한 후에 발행되기에 적격이 되게 하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 새로운 기록 요청을 선택할 때, 추적되지 않은 뱅크 그룹 번호들을 순환하고 적격인 기록 요청을 찾을 때까지 각각의 각자의 뱅크 그룹에 대한 기록 요청이 선택에 적격인지 여부를 체크하는 단계를 더 포함하는, 방법.
  10. 제8항에 있어서, 적어도 하나의 타이머를 이용하여 각각의 뱅크 그룹 번호가 추적된 클록 사이클들의 수를 카운팅하는 단계를 더 포함하는, 방법.
  11. 제8항에 있어서, 상기 추적된 뱅크 그룹 번호들 및 타이밍 적격성, 연령, 공정성, 및 활동 유형을 포함하는 정책들의 세트에 기초하여 상기 명령 대기열로부터 요청들을 선택하는 단계를 더 포함하는, 방법.
  12. 제8항에 있어서, 제1 유형의 액세스, 제2 유형의 액세스, 및 상기 뱅크 그룹 추적 회로로부터 제공된 정보에 따라 상기 명령 대기열로부터 후보 메모리 요청들을 선택적으로 픽하는 단계 - 각각의 유형의 액세스는 상기 메모리 내의 뱅크의 상이한 페이지 상태에 대응함 -, 및 이어서 상기 후보 메모리 요청들로부터 요청 선택을 중재하는 단계를 더 포함하는, 방법.
  13. 제8항에 있어서, 상기 지정된 기간은 상기 이전 기록 요청의 상기 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간에 대응하는 클록 사이클들의 수인, 방법.
  14. 데이터 프로세싱 시스템으로서,
    DRAM 메모리에 결합된 메모리 채널; 및
    상기 메모리 채널에 결합된 메모리 제어기를 포함하며, 상기 메모리 제어기는,
    메모리 채널에 대한 메모리 액세스 요청들을 수신하기 위한 입력, 및 미리 결정된 수의 메모리 액세스 요청들을 보유하기 위한 다수의 엔트리들을 갖는 명령 대기열; 및
    상기 DRAM 메모리로의 송신을 위해 상기 명령 대기열로부터 발행될 메모리 요청들을 선택하기 위한 아비터를 포함하며, 상기 아비터는,
    상기 아비터에 의해 선택된 3개 이상의 이전 기록 요청들의 뱅크 그룹 번호들을 추적하는 뱅크 그룹 추적 회로; 및
    상기 추적된 뱅크 그룹 번호들에 대한 기록 요청들 및 연관된 활성화 명령들의 선택을 방지하는 선택 회로를 포함하고,
    상기 뱅크 그룹 추적 회로는 이전 기록 요청 및 연관된 활성화 명령이 지정된 기간이 경과한 후에 발행되기에 적격임을 나타내는, 데이터 프로세싱 시스템.
  15. 제14항에 있어서, 상기 선택 회로는, 새로운 기록 요청을 선택할 때, 추적되지 않은 뱅크 그룹 번호들을 순환하고 적격인 기록 요청을 찾을 때까지 각각의 각자의 뱅크 그룹에 대한 기록 요청이 선택에 적격인지 여부를 체크하는, 데이터 프로세싱 시스템.
  16. 제14항에 있어서, 상기 뱅크 그룹 추적 회로는 각각의 뱅크 그룹 번호가 추적된 클록 사이클들의 수를 카운팅하기 위한 적어도 하나의 타이머를 포함하는, 데이터 프로세싱 시스템.
  17. 제14항에 있어서, 상기 뱅크 그룹 추적 회로는 뱅크 그룹 번호를 각각 보유하는 복수의 엔트리들, 및 상기 엔트리들의 각자의 엔트리와 각각 연관되고 상기 각자의 뱅크 그룹 번호가 추적된 클록 사이클들의 수를 카운팅하는 복수의 타이머들을 포함하는, 데이터 프로세싱 시스템.
  18. 제14항에 있어서, 상기 선택 회로는 추적된 뱅크 그룹 번호를 각각 수신하는 다수의 입력들을 포함하며, 상기 선택 회로는 상기 추적된 뱅크 그룹 번호들 및 타이밍 적격성, 연령, 공정성, 및 활동 유형을 포함하는 정책들의 세트에 기초하여 상기 명령 대기열로부터 요청들을 선택하는, 데이터 프로세싱 시스템.
  19. 제14항에 있어서, 상기 선택 회로는,
    제1 유형의 액세스 및 제2 유형의 액세스에 따라 상기 명령 대기열로부터 후보 메모리 요청들을 선택적으로 픽하는 적어도 하나의 서브-아비터 - 각각의 유형의 액세스는 상기 메모리 내의 뱅크의 상이한 페이지 상태에 대응하고, 상기 적어도 하나의 서브-아비터는 상기 뱅크 그룹 추적 회로로부터 제공된 정보에 기초하여 기록 요청들을 선택함 -; 및
    상기 후보 메모리 요청들로부터 요청 선택을 중재하는 최종 아비터를 포함하는, 데이터 프로세싱 시스템.
  20. 제14항에 있어서, 상기 지정된 기간은 상기 이전 기록 요청의 상기 뱅크 그룹에 대한 최소 기록-기록 타이밍 기간에 대응하는 클록 사이클들의 수인, 데이터 프로세싱 시스템.
KR1020237037630A 2021-03-31 2022-03-17 중재 동안의 기록 뱅크 그룹 마스크 KR20230157522A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,676 2021-03-31
US17/218,676 US11669274B2 (en) 2021-03-31 2021-03-31 Write bank group mask during arbitration
PCT/US2022/020779 WO2022212078A1 (en) 2021-03-31 2022-03-17 Write bank group mask during arbitration

Publications (1)

Publication Number Publication Date
KR20230157522A true KR20230157522A (ko) 2023-11-16

Family

ID=83449744

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237037630A KR20230157522A (ko) 2021-03-31 2022-03-17 중재 동안의 기록 뱅크 그룹 마스크

Country Status (6)

Country Link
US (1) US11669274B2 (ko)
EP (1) EP4315015A4 (ko)
JP (1) JP2024512625A (ko)
KR (1) KR20230157522A (ko)
CN (1) CN117083588A (ko)
WO (1) WO2022212078A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022246036A1 (en) * 2021-05-20 2022-11-24 Micron Technology, Inc. Adjustable timer component for semiconductor devices
US11789642B2 (en) * 2021-06-28 2023-10-17 Micron Technology, Inc. Loading data from memory during dispatch
US11960416B2 (en) * 2021-12-21 2024-04-16 Texas Instruments Incorporated Multichannel memory arbitration and interleaving scheme
US11630605B1 (en) * 2022-08-10 2023-04-18 Recogni Inc. Methods and systems for processing read-modify-write requests

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5948081A (en) * 1997-12-22 1999-09-07 Compaq Computer Corporation System for flushing queued memory write request corresponding to a queued read request and all prior write requests with counter indicating requests to be flushed
US7047391B2 (en) 1998-09-14 2006-05-16 The Massachusetts Institute Of Technology System and method for re-ordering memory references for access to memory
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
KR100444703B1 (ko) * 2002-10-01 2004-08-16 삼성전자주식회사 네트워크 상 높은 버스 효율을 갖는 메모리 장치 및 그동작 방법, 그리고 이를 포함하는 메모리 시스템
US7069399B2 (en) 2003-01-15 2006-06-27 Via Technologies Inc. Method and related apparatus for reordering access requests used to access main memory of a data processing system
US7698498B2 (en) * 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
KR101364443B1 (ko) 2007-01-31 2014-02-17 삼성전자주식회사 메모리 시스템, 이 시스템을 위한 메모리 제어기와 메모리,이 시스템의 신호 구성 방법
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
EP2695070B1 (en) * 2011-04-08 2016-03-09 Altera Corporation Systems and methods for using memory commands
US8693269B2 (en) * 2011-08-08 2014-04-08 Samsung Electronics Co., Ltd. Memory device for managing timing parameters
US9281046B2 (en) * 2013-10-08 2016-03-08 Advanced Micro Devices, Inc. Data processor with memory controller for high reliability operation and method
US9293188B2 (en) * 2014-02-03 2016-03-22 Advanced Micro Devices, Inc. Memory and memory controller for high reliability operation and method
US20170206031A1 (en) * 2016-01-15 2017-07-20 Samsung Electronics Co., Ltd. Fine grain level memory power consumption control mechanism
JP2018205859A (ja) * 2017-05-31 2018-12-27 キヤノン株式会社 メモリコントローラとその制御方法
US20200285580A1 (en) * 2017-06-30 2020-09-10 Intel Corporation Speculative memory activation
CN110729006B (zh) * 2018-07-16 2022-07-05 超威半导体(上海)有限公司 存储器控制器中的刷新方案

Also Published As

Publication number Publication date
WO2022212078A1 (en) 2022-10-06
US20220317923A1 (en) 2022-10-06
EP4315015A4 (en) 2024-05-22
EP4315015A1 (en) 2024-02-07
US11669274B2 (en) 2023-06-06
CN117083588A (zh) 2023-11-17
JP2024512625A (ja) 2024-03-19

Similar Documents

Publication Publication Date Title
US10593391B2 (en) Refresh scheme in a memory controller
US11669274B2 (en) Write bank group mask during arbitration
KR102615693B1 (ko) Dram을 위한 리프레시 관리
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
US11995008B2 (en) Memory controller with hybrid DRAM/persistent memory channel arbitration
US20210357336A1 (en) Efficient memory bus management
US11687281B2 (en) DRAM command streak efficiency management
US20240211173A1 (en) Performance of bank refresh
US20240112722A1 (en) Directed refresh management for dram

Legal Events

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