KR20120014914A - 이종 소스들에 대한 계층적인 메모리 중재 기법 - Google Patents

이종 소스들에 대한 계층적인 메모리 중재 기법 Download PDF

Info

Publication number
KR20120014914A
KR20120014914A KR1020117028602A KR20117028602A KR20120014914A KR 20120014914 A KR20120014914 A KR 20120014914A KR 1020117028602 A KR1020117028602 A KR 1020117028602A KR 20117028602 A KR20117028602 A KR 20117028602A KR 20120014914 A KR20120014914 A KR 20120014914A
Authority
KR
South Korea
Prior art keywords
memory
memory request
coherent
request stream
merged
Prior art date
Application number
KR1020117028602A
Other languages
English (en)
Other versions
KR101557090B1 (ko
Inventor
구한 크리슈난
안토니오 아사로
동 체레파차
토마스 알. 쿤잔
외르그 윙클러
랄프 프레밍
모리스 비. 스테인맨
조나단 오웬
존 카라마티아노스
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
에이티아이 테크놀로지스 유엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드, 에이티아이 테크놀로지스 유엘씨 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20120014914A publication Critical patent/KR20120014914A/ko
Application granted granted Critical
Publication of KR101557090B1 publication Critical patent/KR101557090B1/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/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

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)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Abstract

계층적인 메모리 요청 스트림 중재 기술은 다수의 메모리 요청 소스들(204, 206, 208, 216)로부터의 코히런트 메모리 요청 스트림들을 병합(merge)하고, 병합된 코히런트 메모리 요청 스트림을 넌 코히런트(non-coherent) 메모리 요청 스트림으로부터의 요청들에 의해 중재한다. 본 발명의 적어도 하나의 실시예에서, 다수의 메모리 요청 스트림들로부터 병합된 메모리 요청 스트림(316)을 발생시키는 방법은 코히런트 메모리 요청들을 제 1 직렬 메모리 요청 스트림 내에 병합하는 단계를 포함한다. 이 방법은, 메모리 제어기 회로(213, 302)에 의해, 적어도 제 1 직렬 메모리 요청 스트림 및 병합된 넌 코히런트 요청 스트림으로부터, 병합된 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하는 단계를 포함한다. 병합된 넌 코히런트 메모리 요청 스트림은, 병합된 메모리 요청 스트림(334)에 배치하기 위해 선택된 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초한다.

Description

이종 소스들에 대한 계층적인 메모리 중재 기법{HIERARCHICAL MEMORY ARBITRATION TECHNIQUE FOR DISPARATE SOURCES}
본 발명은 집적 회로들에 관한 것으로서, 보다 특정하게는 메모리에 대한 메모리 요청들을 스케쥴링하기 위한 기술들에 관한 것이다.
도 1을 참조하여, 예시적인 시스템 온 칩(system-on-a-chip)(즉, SoC(102))은 집적된 메모리 제어기(예를 들어, DRAM 제어기(130))에 인터페이스(예를 들어, 인터페이스 A)를 통해 메모리 요청들을 발행하는 다수의 중앙 처리 유닛들(즉, CPU들, 예를 들어 CPU0(104), CPU1(106), ..., CPUN(108))을 포함한다. 집적된 메모리 제어기는 시스템 코히런스(system coherence)를 시행(enforce)하고, 공유되는 메모리 공간(예를 들어, DRAM(114))에 대한 콘딧(conduit)의 역할을 한다. 특별화된(specialized) 메모리 요청기, 예를 들어 그래픽 처리 유닛(예를 들어, GPU(140))은 집적된 메모리 제어기의 인터페이스(예를 들어, 인터페이스 B)에 메모리 요청들(예를 들어, 직접 메모리 액세스 요청들, 즉 DAM 요청들)을 발행하고, 집적된 메모리 제어기의 이러한 인터페이스로부터 응답들을 수신한다. 전형적인 DRAM 제어기(130)는 코히런트 트래픽을 지원한다. 즉, CPU, I/O 및 GPU 요청들에 의해 액세스되는 데이터의 카피들 간에 일관성을 유지하도록 메모리 코히런시 프로토콜이 실시된다. 전형적인 중재 방식은, 메모리 버스 상에 커맨드들을 스케쥴링하기 위해 다른 요청 스트림들 간에 선택을 행하는 우선순위 기반(priority-based)의 중재 방식을 이용하여 SoC 파이프라인 내에서 메모리 요청 스트림들을 결합시킨다. 다수의 요청기들로부터의 메모리 요청들의 이러한 스케쥴링은, 메모리 버스 상에서 각각의 요청 소스에 대해 구현되는 메모리 레이턴시 및 메모리 대역폭에 영향을 미친다.
계층적인 메모리 요청 스트림 중재 기술은 다수의 메모리 요청 소스들로부터의 코히런트 메모리 요청 스트림들을 병합(merge)하고, 병합된 코히런트 메모리 요청 스트림을 넌 코히런트(non-coherent) 메모리 요청 스트림으로부터의 요청들에 의해 중재한다. 본 발명의 적어도 하나의 실시예에서, 다수의 메모리 요청 스트림들로부터 병합된 메모리 요청 스트림을 발생시키는 방법은 코히런트 메모리 요청들을 제 1 직렬 메모리 요청 스트림 내에 병합하는 단계를 포함한다. 이 방법은, 메모리 제어기 회로에 의해, 적어도 제 1 직렬 메모리 요청 스트림 및 병합된 넌 코히런트 요청 스트림으로부터, 병합된 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하는 단계를 포함한다. 병합된 넌 코히런트 메모리 요청 스트림은, 병합된 메모리 요청 스트림에 배치하기 위해 선택된 이전의 메모리 요청의 표시자(indicator)에 적어도 부분적으로 기초한다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택되는 메모리 요청은 다수의 버스 턴어라운드 방침(bus turnaround policy), 대역폭 할당 방침(bandwidth allocation policy) 및 페이지 소유권 방침(page ownership policy)에 적어도 부분적으로 기초하여 선택된다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택되는 메모리 요청은 버스 턴어라운드 방침에 적어도 부분적으로 기초하여 선택된다. 본 발명의 적어도 하나의 실시예에서, 버스 턴어라운드 방침은, 병합된 메모리 요청 스트림과 관련된 메모리 버스의 현재 방향에 대해 메모리 요청을 발행하기 위한 적격성, 및 요청기, 요청 타입, 또는 메모리 요청과 관련된 우선순위 클래스(priority class)중 적어도 하나와 관련된 시간 윈도우(time window)에 적어도 부분적으로 기초한다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택되는 메모리 요청은 대역폭 할당 방침에 적어도 부분적으로 기초하여 선택된다. 본 발명의 적어도 하나의 실시예에서, 이러한 대역폭 할당 방침은 메모리 요청의 소스에 대해 메모리 요청을 발행하기 위한 적격성 및 미결의(outstanding) 메모리 요청들의 관련된 수에 적어도 부분적으로 기초한다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택되는 메모리 요청은 페이지 소유권 방침에 적어도 부분적으로 기초하여 선택된다. 본 발명의 적어도 하나의 실시예에서, 이러한 페이지 소유권 방침은 메모리 요청의 소스의 우선순위에 대해 메모리 요청을 발행하기 위한 적격성 및 현재 메모리 페이지 소유자 정보에 적어도 부분적으로 기초한다.
본 발명의 적어도 하나의 실시예에서, 본 방법은 적어도 제 1 코히런트 메모리 요청 스트림 및 제 2 코히런트 메모리 요청 스트림으로부터, 상기 제 1 직렬 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하는 단계를 더 포함하며, 상기 제 2 코히런트 메모리 요청 스트림은 추론적인 코히런트 요청 스트림(speculative coherent request stream)이다. 본 발명의 적어도 하나의 실시예에서, 본 방법은 제 1 코히런트 메모리 요청 스트림, 제 2 코히런트 메모리 요청 스트림 및 리트라이(retry) 요청 스트림을 상기 제 1 직렬 메모리 요청 스트림 내에 병합하는 단계를 더 포함한다. 본 발명의 적어도 하나의 실시예에서, 본 방법은 메모리 제어기 회로에 결합된 메모리 회로와 관련된 메모리 페이지 테이블에 적어도 부분적으로 기초하여, 발행에 부적격인(ineligible) 제 1 직렬 메모리 요청 스트림의 요청들을 리트라이 요청 큐(retry request queue) 내에 저장하는 단계를 더 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 메모리 페이지 테이블은 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 이전의 메모리 요청의 표시자에 기초하여 업데이트된다. 본 발명의 적어도 하나의 실시예에서, 본 방법은 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 상기 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초하여, 넌 코히런트 메모리 요청들을 상기 넌 코히런트 메모리 요청 스트림 내에 병합하는 단계를 더 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 상기 이전의 메모리 요청의 표시자는 칩 선택 표시자, 메모리 뱅크 표시자, 커맨드 표시자, 로우 표시자(row indicator) 및 소스 표시자(source indicator) 중에서 하나 이상을 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 선택하는 단계는 상기 제 1 직렬 메모리 요청 스트림, 상기 병합된 넌 코히런트 메모리 요청 스트림, 및 메모리 페이지 테이블의 출력에 기초한다.
본 발명의 적어도 하나의 실시예에서, 본 발명의 장치는 제 1 다수의 메모리 요청 에이전트들(memory requesting agents)로부터 수신되는 다수의 코히런트 메모리 요청 스트림들을 적어도 제 1 코히런트 메모리 요청 스트림 내에 병합하도록 구성된 중재 유닛(arbitration unit)을 포함한다. 본 장치는 상기 제 1 코히런트 메모리 요청 스트림에 기초하여, 병합된 넌 코히런트 메모리 요청 스트림 및 제 1 직렬 메모리 요청 스트림으로부터, 병합된 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하도록 구성된 메모리 제어기 유닛을 포함한다. 상기 병합된 넌 코히런트 메모리 요청 스트림은 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초한다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택되는 메모리 요청은 버스 턴어라운드 방침, 대역폭 할당 방침 및 페이지 소유권 방침 중 하나 이상에 적어도 부분적으로 기초하여 선택된다. 본 발명의 적어도 하나의 실시예에서, 상기 중재 유닛은 추론적인 메모리 요청들을 발생시키고, 상기 추론적인 메모리 요청들을 제 1 코히런트 세트의 메모리 요청들과 코히런트한 상기 메모리 제어기 유닛에 발행하도록 구성된다. 본 발명의 적어도 하나의 실시예에서, 상기 메모리 제어기 유닛은, 상기 제 1 코히런트 세트의 메모리 요청들, 상기 추론적인 메모리 요청들 및 넌 코히런트 메모리 요청들을 상기 병합된 메모리 요청 스트림 내에 계층적으로 병합하도록 구성된 병합 멀티플렉서 유닛(merge multiplexer unit)을 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 병합 멀티플렉서 유닛은, 상기 제 1 코히런트 메모리 요청들, 상기 추론적인 메모리 요청들 및 제 3 세트의 메모리 요청들로부터 프론트 엔드 메모리 요청들을 선택하도록 구성된 제 1 멀티플렉서 유닛을 포함하며, 상기 병합 멀티플렉서 유닛은 프론트 엔드 메모리 요청들의 저장된 버전들로부터 상기 제 3 세트의 메모리 요청들을 선택하도록 구성된 제 2 멀티플렉서를 포함한다.
본 발명의 적어도 하나의 실시예에서, 본 장치는 적어도 상기 프론트 엔드 메모리 요청들 및 상기 넌 코히런트 세트의 메모리 요청들로부터, 상기 병합된 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하도록 구성된 제 3 멀티플렉서 유닛을 더 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 제 3 멀티플렉서 유닛은, 상기 프론트 엔드 메모리 요청들, 상기 넌 코히런트 메모리 요청들, 및 메모리 페이지 테이블의 출력으로부터, 상기 병합된 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하도록 구성된다. 본 발명의 적어도 하나의 실시예에서, 상기 중재 유닛은 추론적인 메모리 요청들을 발생시키고, 상기 추론적인 메모리 요청들을 상기 제 1 코히런트 세트의 메모리 요청들과 코히런트한 상기 메모리 제어기에 발행하도록 구성된다. 본 발명의 적어도 하나의 실시예에서, 상기 메모리 제어기 유닛은 상기 제 1 코히런트 세트의 메모리 요청들, 상기 추론적인 메모리 요청들 및 상기 넌 코히런트 메모리 요청들을, 다수의 각각의 메모리 채널들에 해당하는 메모리 요청들의 다수의 병합된 스트림들 내에 계층적으로 병합하도록 구성된 다수의 병합 멀티플렉서 유닛들을 포함한다. 본 발명의 적어도 하나의 실시예에서, 다수의 처리 유닛들은 제 1 다수의 코히런트 메모리 요청들을 발행하도록 구성된 다수의 범용 처리 유닛들(general purpose processing units)을 포함하고, 상기 다수의 처리 유닛들은 제 2 코히런트 메모리 요청들을 발행하도록 구성된 입/출력 처리 유닛을 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초하여, 다수의 특별화된 처리 유닛들에 의해, 넌 코히런트 메모리 요청 스트림들이 발생된다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 이전의 메모리 요청의 표시자는, 칩 선택 표시자, 메모리 뱅크 표시자, 커맨드 표시자, 로우 표시자 및 소스 표시자 중에서 하나 이상을 포함한다.
본 발명의 적어도 하나의 실시예에서, 본 발명의 시스템은 다수의 코히런트 메모리 요청 스트림들을 발행시키도록 구성된 다수의 코히런트 메모리 요청기들과, 그리고 적어도 하나의 코히런트 메모리 요청 스트림 및 적어도 하나의 넌 코히런트 메모리 요청 스트림을 발행하도록 구성된 그래픽 처리 유닛을 포함한다. 상기 그래픽 처리 유닛은 상기 적어도 하나의 코히런트 메모리 요청 스트림을 발행하도록 구성된 입/출력 엔진(216)을 포함한다. 상기 그래픽 처리 유닛은 병합된 메모리 요청 스트림(334)에 배치하기 위해 선택된 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초하여, 병합된 넌 코히런트 요청 스트림을 발행하도록 구성된 그래픽 메모리 중재기를 포함한다. 본 시스템은, 메모리 요청들을 계층적으로 중재하고, 상기 다수의 코히런트 메모리 요청 스트림들, 상기 적어도 하나의 코히런트 메모리 요청 스트림 및 상기 병합된 넌 코히런트 요청 스트림으로부터, 상기 병합된 요청 스트림을 발생시키도록 구성된 집적된 메모리 제어기를 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 집적된 메모리 제어기는 상기 다수의 코히런트 메모리 요청 스트림들 및 상기 적어도 하나의 코히런트 메모리 요청 스트림을 적어도 제 1 코히런트 메모리 요청 스트림 내에 병합하도록 구성된 중재 유닛을 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 집적된 메모리 제어기는 상기 제 1 코히런트 메모리 요청 스트림에 기초하여, 상기 병합된 넌 코히런트 요청 스트림 및 제 1 직렬 메모리 요청 스트림으로부터, 상기 병합된 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하도록 구성된 메모리 제어기 유닛을 포함한다. 본 발명의 적어도 하나의 실시예에서, 상기 집적된 메모리 제어기는, 병합된 메모리 요청 스트림을 발생시키기 위해, 다수의 코히런트 메모리 요청기들로부터의 다수의 병합된 메모리 요청 스트림들, 상기 적어도 하나의 코히런트 메모리 요청 스트림들, 및 상기 병합된 넌 코히런트 요청 스트림을 발생시키며, 상기 다수의 병합된 메모리 요청 스트림들은 각각의 메모리 채널들에 해당한다. 본 발명의 적어도 하나의 실시예에서, 상기 그래픽 처리 유닛은 디스플레이 정보를 발생시키도록 구성된 다수의 메모리 요청 에이전트들을 포함하며, 그리고 그래픽 메모리 스케쥴러(graphics memory scheduler)는 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 이전 메모리 요청의 표시자에 적어도 부분적으로 기초하여, 상기 다수의 메모리 요청 에이전트들로부터의 메모리 요청들을 병합된 넌 코히런트 메모리 요청 스트림 내에 병합하도록 구성된다. 본 발명의 적어도 하나의 실시예에서, 상기 집적된 메모리 제어기는 제 1 주파수를 갖는 제어 클럭 신호를 이용하여 동작하며, 상기 그래픽 처리 유닛은 상기 제 1 주파수와 다른 제 2 주파수를 갖는 제어 클럭 신호를 이용하여 동작한다. 본 발명의 적어도 하나의 실시예에서, 상기 병합된 메모리 요청 스트림은 버스 턴어라운드 방침, 대역폭 할당 방침 및 페이지 소유권 방침중 하나 이상에 적어도 부분적으로 기초한다.
첨부 도면들을 참조함으로써, 본 발명이 더욱 잘 이해될 것이며, 본 발명의 다양한 목적들, 특징들 및 장점들이 통상의 기술자에게 명백해질 것이다.
도 1은 예시적인 시스템 온 칩(SoC)을 도시한다.
도 2는 본 발명의 적어도 하나의 실시예에 따른 예시적인 SoC를 도시한다.
도 3은 본 발명의 적어도 하나의 실시예에 따른, 도 2의 SoC의 메모리 제어기의 예시적인 부분을 도시한다.
다른 도면들에서의 동일한 참조 기호들의 이용은 유사한 또는 동일한 아이템들을 나타낸다.
일반적으로, 그래픽 처리 유닛(예를 들어, 도 1의 GPU(140)) 메모리 요청들은 넌 코히런트(non-coherent) 메모리 요청들을 포함하고, CPU 메모리 요청들 보다 더 높은 메모리 대역폭을 빈번하게 요구한다. 전형적인 DRAM 제어기(130)는, GPU에 의해 발생되어 인터페이스 B를 통해 수신되는 요청들의 고도로(highly) 규칙적인 패턴을 메모리 요청들의 긴 파이프라인 내에 재배열(re-order)한다. 이에 따라, GPU(140)에 의해 발생된 메모리 요청들은 SoC(102) 내에서 자신들의 페이지 장소(page locality)를 잃어버릴 수 있다. 또한, 피크 트랜잭션 대역폭(peak transactional bandwidth)을 유지하기 위해, 도 1의 SoC(102)는 GPU(140) 내에서 버퍼링을 요구한다. 여기에 개시되는 SoC는, 시스템 직렬화 포인트(예를 들어, SoC(102)의 DRAM 제어기(130)의 프론트 엔드)가 아니라, SoC(202)의 최종 선택 스테이지에 요청들을 제공함으로써, SoC(102)와 비교하여 개선된 쓰루풋을 달성한다.
도 2를 참조하여, 예시적인 시스템 온 칩(예를 들어, SoC(202))은 다수의 중앙 처리 유닛들(즉, CPU들, 예를 들어 CPU0(204), CPU1(206), CPUN(208))을 포함하는 바, 이들은 인터페이스(A)를 통해 계층적인 집적된 메모리 제어기(230)(예를 들어, 계층적인 집적된 메모리 제어기(230))에 메모리 요청들을 발생한다. 이러한 계층적인 집적된 메모리 제어기(230)는 시스템 코히런스를 시행하고, 공유되는 메모리 공간(예를 들어, 메모리(214))에 대한 콘딧의 역할을 한다. SoC(202)의 적어도 하나의 실시예에서, 메모리(214)는 더블-데이터-레이트-2 또는 더블-데이터-레이트-3 동기 다이내믹 랜덤 액세스 메모리(즉, DDR2/3 DRAM)이지만, 다른 적절한 메모리 구조들도 이용될 수 있다. I/O 엔진(예를 들어, I/O 엔진(216))은 메모리 요청들을 발행하고, 인터페이스 B를 통해, 집적된 메모리 제어기로부터 응답들을 수신한다. I/O 엔진으로부터의 CPU 및 직접 메모리 액세스(즉, DMA) 요청들 모두는 CPU 요청들과 코히런트해야 한다. 이에 따라, CPU 및 DMA 요청들은, 인터페이스(C)를 통해 메모리 제어기(예를 들어, 메모리 제어기(213))에 발행되기 전에, 계층적인 집적된 메모리 제어기(230) 내의 시스템 코히런스 포인트에서 병합된다. 또한, 계층적인 집적된 메모리 제어기(230)는, CPU들 및 I/O 엔진으로부터 들어오는 메모리 요청들을 분석하여, 미래의(future) 메모리 액세스들을 예측하고, 인터페이스(F)를 통해 메모리 제어기에 추론적인(speculative) 메모리 판독 요청들(즉, 프리페치들(prefetches))을 발행하는 논리(logic)를 포함한다. 인터페이스들(C 및 F)을 통해 발행되는 요청들은 코히런트 메모리 스트림들이다.
적어도 하나의 실시예에서, SoC(202)는 특별화된 처리 유닛, 예를 들어 그래픽 처리 유닛(240)을 포함하는 바, 이는 컴퓨터 그래픽 정보를 효율적으로 조정하는 전용 그래픽 렌더링 장치(dedicated graphics rendering device)이다. SoC(202)의 적어도 하나의 실시예에서, 그래픽 처리 유닛(240)(즉, GPU(240))은 복수개의 메모리 요청 에이전트들(memory requesting agents)(예를 들어, GCO(218), GCl(220), GCN(222))을 포함하는 바, 이들 각각은 넌 코히런트 메모리 요청들의 개별적인 큐와 관련된다. 주목할 사항으로서, GPU(240)는 임의의 적절한 수의 메모리 요청 에이전트들을 포함할 수 있다. 그래픽 메모리 요청 스케쥴러(graphics memory request scheduler)(예를 들어, 그래픽 메모리 중재기(graphics memory arbiter)(224))는 서로 다른 요청 에이전트들로부터의 넌 코히런트 메모리 요청들을 요청들의 단일의 넌 코히런트 스트림들로 결합한다. 그래픽 메모리 중재기(224)는 이러한 단일의 넌 코히런트 스트림으로부터의 요청들을 인터페이스(D)를 통해 메모리 제어기(213)에 발행한다.
계층적인 집적된 메모리 제어기(230)는 계층적인 메모리 요청 스트림 중재 기술을 실시한다. 계층적인 집적된 메모리 제어기(230)는 다수의 메모리 요청 소스들로부터의 다수의 코히런트 메모리 요청 스트림들을 병합하고, 병합된 코히런트 메모리 요청 스트림들을 넌 코히런트 메모리 요청 스트림들에 의해 중재한다. 계층적인 집적된 메모리 제어기(230)는 개별적인 메모리 요청 스트림들과 관련된 특성들에 기초하여 메모리 요청 스트림들을 병합한다. SoC(202)의 적어도 하나의 실시예에서, 인터페이스(C) 상에서의 CPU들로부터의 또는 I/O 엔진으로부터의 코히런트 메모리 요청들은 피크 메모리 대역폭을 요구하지 않는다. 또한, 전형적으로, 이러한 코히런트 메모리 요청들은 예측가능한 뱅크 판독/기록 액세스 패턴들을 발생시키지 않는다. 즉, 전형적으로, CPU 및 I/O 판독 또는 기록 요청들은 무작위의 도달 속도(random arrival rates)를 가지며, 다수의 메모리 뱅크들을 동시에 액세스한다. 하지만, CPU 성능은 이러한 인터페이스 상에서의 판독 요청들의 레이턴시에 민감한데, 왜냐하면 이러한 판독 요청들은 CPU 내의 계류중인 로드들(pending loads)에 데이터를 다시 제공하기 때문이다. 그래픽 처리 유닛(240)은 높은 대역폭 요청 소스이다. 이에 따라, 메모리 제어기(213)는 인터페이스들(C 및 D)로부터의 요청들을 병합함으로써, 대역폭 민감 요청기들(bandwidth sensitive requestors)에 대한 메모리 버스 이용을 증가시키고, 레이턴시 민감 요청기들(latency sensitive requestors)에 대한 평균 레이턴시를 감소시킨다. 메모리 버스 상에서의 대역폭을 증가시키고, 특정의 요청 타입들 및/또는 요청 소스들에 의해 경험되는 레이턴시를 감소시킬 것으로 의도되는 병합된 코히런트 메모리 요청 스트림 및 병합된 넌 코히런트 메모리 요청 스트림 각각에 대해, 제 2 세트의 스케쥴링 방침들(scheduling policies)이 적용된다. 이에 따라, 계층적인 집적된 메모리 제어기(230)는 GPU(240)로부터의 넌 코히런트 메모리 요청들을 코히런트 메모리 요청들과 다르게 취급함으로써, 예를 들어 플리커(flicker)없는 스크린 업데이트(screen update)를 보장한다.
적어도 하나의 실시예에서, 계층적인 집적된 메모리 제어기(230)는, 코히런트 및 넌 코히런트 요청 소스들을 개별적인 엔티티들로서 취급하고, 피드백을 이용하여 소스내 중재(intra-source arbitration)에 영향을 주는 중재 방식을 이용한다. 예를 들어, 병합된 메모리 요청 큐에 발행되는 다음 메모리 요청은, 글로벌 픽(global pick)의 지식, 즉 예를 들어 인터페이스(H)를 통해 GPU(240)에 통신되는, 병합된 메모리 요청 큐에 대해 발행되는 가장 최근의 메모리 요청의 표시자를 이용하여 결정된다. 최종 중재 스테이지로부터의 메모리 시스템 뱅크 상태에 대한 피드백은 코히런트 요청 소스들 및 넌 코히런트 요청 소스 모두에 의해 이용되어, 이들 각각의 요청 큐들로부터의 픽킹 요청들(picking requests)에 영향을 준다. 메모리 뱅크 상태 정보는, 그래픽 메모리 중재기(예를 들어, 그래픽 메모리 중재기(224))가 자신의 내부 큐들 내의 요청들로부터 페이지 히트들(page hits)을 야기하는 요청들을 선택할 수 있는 능력을 증가시킨다. 적어도 하나의 실시예에서, 계층적인 집적된 메모리 제어기(230)는 페이지 소유권 룰들(page ownership rules)을 이용하여 메모리 버스(215) 상에서의 페이지 충돌들의 수를 감소시킨다. 적어도 하나의 실시예에서, 데이터 버스를 판독 트랜잭션으로부터 기록 트랜잭션으로 스위칭할 때, 및 반대로 데이터 버스를 기록 트랜잭션으로부터 판독 트랜잭션으로 스위칭할 때, 계층적인 집적된 메모리 제어기(230)는 메모리 버스 상에서 초래되는 페널티들(penalties)을 감소시키기 위해 버스 턴어라운드 룰들(bus turnaround rules)을 이용한다. 적어도 하나의 실시예에서, 계층적인 집적된 메모리 제어기(230)는 임의의 특정 요청 소스에 대하여 미결의(outstanding) 메모리 대역폭에 대한 제한을 이용함으로써, 시스템 내의 다른 메모리 요청기들에 의해 경험되는 서비스 시간에 대한 상한을 제공한다.
SoC(202)의 적어도 하나의 실시예에서, 메모리 제어기(213)는 계층적인 병합 멀티플렉서(hierarchical merge multiplexer)를 포함한다. 도 3을 참조하여, 계층적인 병합 멀티플렉서(302)는 인터페이스들(C, F 및 D)로부터 수신되는 스트림들을 메모리 요청들의 단일의 통합된 스트림(예를 들어, 병합된 메모리 요청 스트림(316))으로 병합하는 바, 이러한 메모리 요청들의 단일의 통합된 스트림은 메모리 버스(215)를 통해 메모리 제어기(213)에 의해 메모리(214)에 발행할 수 있도록 하기 위해, 병합된 메모리 요청 레지스터(즉, MRGQ) 내에 큐잉된다. 비록 메모리 채널에 대해 단지 하나의 계층적인 병합 멀티플렉서(302) 및 MRGQ 만이 도시되었지만, 적어도 하나의 실시예에서, SoC(202)는 다수의 메모리 채널들(미도시)을 포함한다는 것을 주목한다. 이에 따라, 각 메모리 채널에 대해, 해당하는 계층적인 병합 멀티플렉서 및 해당하는 MRGQ가 포함된다. 메모리 요청 스트림들(C, F, 및 D)은 메모리 채널 정보를 포함하며, 그리고 메모리 요청들은, 개별적인 메모리 요청들 내에 포함된 메모리 채널 정보에 따라 개별적인 계층적인 병합 멀티플렉서들 및 MRGQ들로 디멀티플렉스된다.
계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, 멀티플렉서들(308, 320, 및 312)은 각각의 중재 논리로부터, 예를 들어 ARBSEL(304), ARBSEL(324) 및 ARBSEL(326) 각각으로부터, 해당하는 선택 신호들을 수신한다. ARBSEL(304)은, 예를 들어, 인터페이스(C)로부터의 CPU 또는 I/O 요청들, 인터페이스(F)로부터의 추론적인 코히런트 요청들, 및 상태 요소(318)로부터의 큐잉된 코히런트 요청들로부터의, 멀티플렉서(308)에 의한 코히런트 요청들의 선택을 제어한다.
도 2 및 3을 참조하여, 계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, ARBSEL(304) 및 그래픽 메모리 중재기(224)는, 병합된 메모리 요청 큐(MRGQ)에 배치하기 위해 선택된 이전의 메모리 요청들에 대한 정보를 포함하는 메모리 페이지 테이블(306)에 의해 제공되는 메모리 뱅크 상태에 기초하여, 가능한한 많은 페이지 히트들을 달성하기 위해 요청들을 스케쥴링한다. 메모리 페이지 테이블(306)은 메모리 시스템(214) 내의 모든 칩 선택들(chip-selects) 및 뱅크들에 대한 열린(open) 또는 닫힌(closed) 상태를 유지한다. 메모리 시스템(214)의 열린 페이지들에 대해, 메모리 페이지 테이블(306)은 페이지의 어느 로우(row)가 열려있는 지의 식별자를 포함한다. 멀티플렉서(312)가 요청을 허가(grant)할 때 마다, 병합된 메모리 요청 큐 내에 배치하기 위해 선택된 메모리 요청의 표시자(예를 들어, 신호(335))에 기초하여, 메모리 페이지 테이블(306) 내의 해당하는 칩 선택 및 뱅크 선택이 업데이트된다. 인터페이스(E)를 통해, 그래픽 메모리 중재기(224)는, 블록(334)에 저장된, 병합된 메모리 요청 큐 내에 배치하기 위해 선택된 메모리 요청들의 표시자를 수신한다.
메모리 제어기(213)의 적어도 하나의 실시예에서, 인터페이스(E)를 통해 그래픽 메모리 중재기(224)에 다음의 정보가 제공된다.
인터페이스(E) 상에서 전송되는 정보
필드 코멘트
칩 선택 멀티플렉서(312)에 의해 허가된 요청이 목표로 하고 있는 DRAM 칩 선택 또는 CS
뱅크 멀티플렉서(312)에 의해 허가된 요청이 목표로 하고 있는 DRAM 뱅크
커맨드 표 2 참조
로우 특정된 CS 및 뱅크 상에서 열려있는 DRAM 페이지의 로우 번호
소스 1=CPU, 0=CPU/I/O
인터페이스(E) 상에서의 커맨드들
커맨드 코멘트
1 프리챠지
2 [0=판독, 1=기록]
3 뱅크를 닫기 위해, [0=판독, 1=기록] 이후, 즉시 오토프리챠지(immediate AutoPrecharge)가 뒤따른다
4 뱅크를 활성화시킨 다음, [0=판독, 1=기록]이 이어진다.
5 이전에 열린 페이지를 닫기 위해 프리챠지하고, 새로운 페이지를 활성화시킨 다음, [0=판독, 1=기록]이 이어진다
6 뱅크를 활성화시킨 다음, 그 뱅크에 대한 [0=판독, 1=기록] 및 그 뱅크를 닫기 위한 즉시 오토프리챠지가 이어진다
7 이전에 열린 페이지를 닫기 위해 프리챠지하고, 새로운 페이지를 활성화시킨 이후, [0=판독, 1=기록]이 이어진 다음, 새롭게 열린 페이지를 닫기 위해 오토프리챠지한다
이에 따라, 멀티플렉서(308)에 의해 선택되는 요청들에 기초하는 프론트 엔드 요청 스트림(즉, 요청 스트림(311))과 GPU 요청 스트림 모두는, 페이지 미스들(page misses) 및 페이지 충돌들(page conflicts)에 비해 페이지 히트들을 촉진(favor)하는 요청들을 발행할 수 있다.
도 3을 다시 참조하여, 계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, ARBSEL(324)은 리트라이 큐(retry queue)(RBDQ)(328)의 콘텐츠의 적어도 일부로부터의 멀티플렉서(320)에 의한 요청들의 선택을 제어한다. 임의의 적절한 선택 기술들(예를 들어, 대역폭의 증가, 레이턴시의 감소 등을 위한, 페이지 상태 및 우선순위에 기초하는 선입선출, 올디스트 레디(oldest ready), 기법들)이 이용될 수 있다. 계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, 상태 요소(318)는 적절한 타이밍 특성을 제공하기 위해 멀티플렉서(320)의 출력을 저장한다.
계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, 멀티플렉서(312)에 제공되는 요청 스트림의 각 요청은 우선순위 값(예를 들어, 급함(urgent), 높음(high), 중간(medium), 또는 낮음(low))과 관련된다. ARBSEL(326)은 멀티플렉서(312)에 의해 수신되는 입력 요청 스트림들의 일반적인 특징에 기초하여 부가적인 우선순위 방침을 실시한다. 예를 들어, CPU 및 I/O 요청들은, 전형적으로 더 큰 대역폭을 요구함과 아울러 레이턴시에 대한 더 낮은 감도를 갖는 GPU 요청들과 비교하여, 레이턴시에 대한 더 큰 감도 및 제한된 대역폭 요청들을 갖는다. 따라서, 적어도 하나의 실시예에서, ARBSEL(326)은 요청 스트림(329) 내의 동등한 우선순위의 GPU 요청들에 비해 요청 스트림(311) 내의 요청들에 우선순위를 둔다(prioritize). 적어도 하나의 실시예에서, ARBSEL(326)은 다음의 순서: 급한 요청 스트림(329), 높은 요청 스트림(311), 높은 요청 스트림(329), 중간 요청 스트림(311), 중간 요청 스트림(329), 낮은 요청 스트림(311) 및 낮은 요청 스트림(329)의 순서로 우선순위를 시행한다.
계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, 제어 블록들(310 및 327)은, 페이지 소유권, 판독/기록 턴어라운드(read/write turnaround) 및 대역폭 제어 방침들(bandwidth control policies)에 기초하여, 멀티플렉서(308) 및 큐(332) 각각으로부터의 요청들의 적격성(eligibility)을 결정한다. 주목할 사항으로서, 제어 블록들(310 및 327)에 의해 하나 이상의 다른 방침들이 실시될 수 있다. 제어 블록들(310 및 327)은 인터페이스들(C, F 및 D)로부터 수신되는 메모리 요청들의 중재에 대한 적격성을, 이러한 메모리 요청들에 해당하는 메모리 페이지 테이블(306)로부터 수신되는 데이터에 따라, 결정한다. 중재에 적격이라면, 멀티플렉서(308)에 의해 선택되는 요청들은 요청 스트림(111) 내에서 멀티플렉서(312)로 전송된다. 계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, 멀티플렉서(308)에 의해 선택되는 요청이 중재에 대해 적격이 아니라면, 이 요청은 요청 스트림(311) 라인 상으로 멀티플렉서(308)에 제공되지 않고, 리트라이 큐(RBDQ)(328) 내에 저장된다. 중재에 대해 적격이라면, 큐(332)로부터의 요청은 요청 스트림(329)으로서 멀티플렉서(312)에 전송된다. 큐(332)로부터의 요청이 중재에 적격이 아니라면, 이 요청은 요청 스트림(329) 라인 상으로 멀티플렉서(312)에 제공되지 않고, 큐(332) 내에 머물게 된다.
페이지 소유권 룰(Page Ownership Rules)
시스템 내의 다른 요청 소스들이 메모리 채널 상의 칩 선택 및 뱅크 쌍을 액세스하고자 시도하지만, 이를 다른 로우들에 대해 행할 때, 페이지 충돌이 일어난다. 계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, 제어 블록(327)은 메모리 버스에 발행되는 페이지 충돌들의 수를 줄이고자 시도한다. 예를 들어, 제어 블록(327)은, CPU로 하여금 칩 선택 및 뱅크 쌍 내의 페이지 0을 열고 판독할 수 있도록 한 다음, GPU에게 동일한 칩 선택 및 뱅크 쌍에 대해 페이지 0을 닫고, 페이지 1을 열고 판독하게 하고, 이후 CPU로 하여금 페이지 1을 닫고, 페이지 0을 다시 판독할 수 있게 하는 요청 시퀀스를 막는다. 이러한 시퀀스는 메모리 버스 상에서 반복되는 페이지 충돌들을 스케쥴링한다. 대신에, 제어 블록(327)은 메모리 채널 내의 각각의 칩 선택 및 뱅크 쌍들에 대해 페이지를 마지막으로 열었던 소스를 추적하고, 이러한 정보를 메모리 페이지 테이블(306)에 저장한다. 뱅크의 소유자가 아닌 요청 소스가 소정의 칩 선택 및 뱅크 쌍에 대해 새로운 페이지를 열고자 시도할 때(예를 들어, CPU가 메모리 페이지 테이블(306) 내의 페이지를 열기 위한 마지막 소스였다), 제어 블록(327)은 언제 소유권 변경이 허용되었는 지를 결정하는 데에 이용되는 룰들의 세트를 적용한다. 이러한 부가적인 방침을 적용함으로써, 소스는 다른 소스로부터의 미결의 페이지 충돌들의 존재하에서 더 긴 시간 기간 동안 페이지의 소유권을 표명(assert)할 수 있게 되며, 이에 의해 전진(forward progress)하기 위해, 새로운 소스로 향하기 전에 구(old) 소스로부터 더 많은 페이지 히트들을 발행한다.
적어도 하나의 실시예에서, 제어 블록(327)은 소스 우선순위 및 현재 페이지 소유자에 기초하는 페이지 소유권 룰들을 실시한다.예를 들어, CPU 또는 I/O가 메모리 페이지의 소유자이면, 프로그램가능한 타이머를 이용하여, 그 페이지를 어떠한 시간 주기 동안 CPU 또는 I/O에 대해 바인딩(binding)시킨다. 시간 주기를 결정하는 데에 이용되는 주기 카운트(cycle count)는 충돌하는 GPU 요청의 우선순위에 따라 달라진다. 예를 들어, 카운터들의 3개의 세트가 이용될 수 있는 바, 예를 들어, 하나의 카운터는 높은, 중간 및 낮은 우선순위 GPU 요청들 각각에 대해 이용되는 바, 각각의 요청 타입에 대해 증가된 주기 카운트 값들을 갖는다. 급한 메모리 요청은 CPU로 하여금 페이지의 소유권을 즉시 포기하게 한다. 충돌하는 소스에 대한 공평성(fairness)을 보증하기 위해, 카운터는 페이지 소유자가 처음으로 페이지를 열 때에 시작되며, 그리고 카운터는 그 첫번째의 페이지 소유자가 열린 로우에 대해 계속해서 페이지 히트들을 가질 때 연장되지 않는다. 제어 블록(327)의 적어도 하나의 실시예에서, 충돌하는(예를 들어, GPU) 요청이 다른 요청기(예를 들어, CPU)에 의해 다른 로우에 대해 이미 열려있는 페이지를 열 수 있기 전에 기다려야만 하는 시간 윈도우(time window)는 다른 우선순위 레벨들(예를 들어, 낮은, 중간, 높은 및 급한 우선순위 레벨들)에 대해 프로그램가능하다.
계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, GPU가 메모리 페이지의 소유자이면, 다양한 이벤트들중 하나가 발생할 때에 소유권이 해제(release)된다. 예를 들어, GPU(240)로부터의 소정 크기 및 우선순위의 요청들의 프로그램된 수가 메모리 버스 상에서 완료될 때에, 소유권이 해제된다. 이러한 요청들의 수는 충돌 요청(예를 들어 요청 큐(311) 내의 요청)의 우선순위(예를 들어, 낮음, 중간 또는 높음)에 의해 달라질 수 있다. GPU가 버스트 표시의 끝을 표명하여, 페이지에 대한 요청들의 버스트가 완료되었음을 나타낼 때에, 소유권이 해제될 수 있다. 또한, GPU가 2개의 연속적인 요청들 상에서(반드시 연속적인 클럭 주기인 것은 아니다) 하나의 칩 선택, 뱅크 및 로우로부터 다른 칩 선택,뱅크 및 로우로 스위치할 때, 소유권이 해제될 수 있다. 또한, GPU가 페이지를 연 이후 주기들의 수를 추적하는 프로그램가능 카운터가 만료되면, 소유권이 해제된다. 적어도 하나의 실시예에서, 계층적인 병합 멀티플렉서(302)는 차단되는 요청(blocked request)의 우선순위에 의존하는 카운터들의 세트를 포함한다. 주목할 사항으로서, 여기에서 설명되는 페이지 소유권 룰들은 예시적인 것이며, 계층적인 병합 멀티프렉서의 다른 실시예들은 다른 적절한 페이지 소유권 룰들을 이용할 수 있다.
버스 턴어라운드 관리(Bus Turnaround Management)
제 1 타입의 트랜잭션(예를 들어, 판독 또는 기록) 다음에, 제 2 타입의 트랜잭션(예를 들어, 각각, 기록 또는 판독)이 이어질 때, 버스 턴어라운드가 발생한다. 버스 턴어라운드들은 타이밍 파라미터들(예를 들어, DRAM에 대한 DDR DIMM 타이밍 파라미터들)로 인해 메모리 데이터 버스 상에 많은 버브들(bubbles)(즉, 다수의 아이들 주기들의 페널티들)을 생성할 수 있다. 주목할 사항으로서, 다른 메모리 속도들은 다른 버스 턴어라운드 횟수(times)를 가질 수 있다. 계층적인 병합 멀티플렉서(302)의 적어도 하나의 실시예에서, ARBSEL(326)은, 메모리 버스 상에서의 판독-투-기록(read-to-write) 및 기록-투-판독(write-to-read) 버스 턴어라운드들을 감소시키는 방식으로 트래픽을 병합시키도록 멀티플렉서(312)를 구성한다. 적어도 하나의 실시예에서, ARBSEL(326)은 버스 턴어라운드들의 수를 줄이기 위해, 기록 발행들(write issuances)과 별도로 판독 발행들(read issuances)을 함께 그룹화한다. 시간 윈도우들의 세트는 요청기, 요청 타입 또는 우선순위 클래스에 따라 프로그램가능한 구성들에 기초한다. 제어 블록(327)은 메모리 버스의 현재 방향을 계속해서 알고 있으며, 그리고 요청기가 그 버스의 방향을 변경하고자 시도할 때, 이는 적격의 요청기로서 고려될 수 있기 전에, 특정의 시간 윈도우가 만료하기를 기다려야 한다. 적어도 하나의 실시예에서, 제어 블록(327)은 각 트래픽 클래스에 해당하는 구성 레지스터들을 포함하는 바, 이들은 타이머 윈도우(timer window)를 결정하고, 언제 특정 트래픽 클래스가 (이것이 버스를 턴어라운드 할 수 있기 전에) 기다려야 하는 지를 결정한다. 예시적인 구성 레지스터들은, 특정 트래픽 클래스가 버스를 턴어라운드할 수 있기 전에 일어나야 하는 전송되는 다수의 바이트들 또는 다수의 제어 블록들의 표시자를 포함한다. 주목할 사항으로서, 여기에서 설명되는 버스 턴어라운드 룰들은 예시적인 것이며, 계층적인 병합 멀티플렉서의 다른 실시예들은 다른 적절한 버스 턴어라운드 룰들을 이용할 수 있다.
요청 소스 대역폭 제어(Request Source Bandwidth Control)
어떠한 특정의 소스가 긴 시간 주기 동안 메모리 대역폭을 독점하는 것을 막기 위해, SoC(202)는 어떠한 소정의 소스로부터 MRGQ 내의 미결의 커맨드들의 수를 제한한다. 이는, 요청 소스 단위로 카운터들을 유지함으로써 달성된다. SoC(202)의 적어도 하나의 실시예에서, 인터페이스(C)로부터의 요청들은, 예를 들어 제 1 수의 바이트들로 제한된다. 한편, 인터페이스(D)로부터의 요청들은 제 2 수의 바이트들까지 이를 수 있다. 멀티플렉서(312)가 요청 소스에 대해 버스를 허가할 때 마다, 해당하는 카운터는 그 소스로부터 메모리 버스 상에서 미결인 바이트들의 총수로 업데이트된다. 만일 그 소스에 대한 카운터가 프로그램된 임계 값을 초과할 때에 요청기가 요청을 제시하면, 그 요청기는 멀티플렉서(312) 중재에 대해 적합하게 되는 것으로부터 써로틀 백(throttle back) 된다. 이러한 방침은 임의의 다른 요청 소스로부터 보여지는 레이턴시에 대한 상한을 시행할 수 있다. 예시적인 SoC(202)에서, 요청 소스 대역폭 제어는 디스플레이 요청들이 제약된 시간량 내에 서비스되도록 보장한다. SoC(202)의 적어도 하나의 실시예에서는, 2 세트의 구성 레지스터들이 MRGQ 내의 미결의 최대 바이트 판독 또는 기록 요청들의 수를 제어한다. SoC(202)의 적어도 하나의 실시예에서는, 각 소스로부터 활성화될 수 있는 개별적인 써로틀 구성 레지스터들(throttle configuration registers)이 판독들 및 기록들을 위해 포함될 수 있다.
상기 논의한 바와 같이, GPU 요청들은 일반적으로 넌 코히런트 요청들로 고려되며, 높은 메모리 대역폭을 빈번하게 요구한다. GPU는 최상의 이용가능한 요청을 선택한 다음, 이를 인터페이스(D)를 통해 계층적인 병합 멀티플렉서(302)에 제공한다. 계층적인 병합 멀티플렉서(302)는 GPU로부터의 요청들을 큐(332) 내에 저장한다. 주목할 사항으로서, 요청 스트림(311)은 그래픽 메모리 중재기 선택과 상관없이 선택되며, 선택되는 그래픽 메모리 중재기 요청은 최종 선택 스테이지인 멀티플렉서(312)를 직접 액세스한다. 그래픽 메모리 중재기 요청을, 다른 메모리 요청 선택 기술들에 의해 이용되는 시스템 직렬화 포트(예를 들어, 도 1의 SoC(102)의 DRAM 제어기(130)의 입력)에 제공하는 것이 아니라, SoC(202)에서와 같이, 최종 선택 스테이지에 제공함으로써, 높은 대역폭 GPU 클라이언트는 SoC(102)의 쓰루풋에 비해 개선된 쓰루풋을 달성한다. 시스템 온 칩(202)은 SoC(102)에 비해 개선된 쓰루풋을 갖는데, 이는 DRAM 제어기(130)가 GPU에 의해 발생되는 요청들의 고도의 규칙적인 패턴을 긴 파이프라인 내로 재배열하기 때문이다. 이에 따라, SoC(102)에서, GPU(140)에 의해 발생되는 요청들은 자신들의 페이지 장소를 잃게 된다. 또한, SoC(102)는 집적된 메모리 제어기의 트래픽 중재 블록들 내에서 부가적인 자원들을 요구한다. 피크 DRAM 데이터 대역폭들을 유지하기 위해, 도 2 및 3의 SoC(202)와 비교하여, 도 1의 SoC(102)는 the GPU 내에서 부가적인 버퍼링을 요구한다.
도 2 및 3을 참조하여, GPU 요청 스트림들은 인터페이스(C)를 바이패스하고, GPU 요청들은 단일화된 큐로부터의 CPU 또는 I/O 요청들과 함께 저장되거나 또는 이들에 대해 픽킹(picking)되지 않기 때문에, 요청 스트림(329)과 요청 스트림(311) 사이에서 SoC(202) 내에는 동일 어드레스 논쟁(same address contentions)이 도입된다. 즉, 기록 후 판독(read-after-write)의 위험들이 도입된다. 인터페이스들(C 및 D) 상에서의 요청들 간의 기록 후 판독 위험들은 그래픽 메모리 중재기(224)에 의해 고려되는바, 이러한 그래픽 메모리 중재기(224)는 트래픽 중재 블록(210) 내에 저장된 인플라이트(in-flight) 트랜잭션 큐의 CPU 기록들 이후 GPU 판독들에 대한 체크를 통해, 인터페이스(C) 상에 이미 디스패치(dispatch)된 어드레스들과의 어떠한 어드레스 충돌들도 없도록 보장한다. SoC(202)의 적어도 하나의 실시예에서, 이러한 체크는 인터페이스(G)에 의해 제공되는 표시자들을 이용하며, 임의의 적절한 하드웨어 또는 소프트웨어 기술들을 이용하여 수행된다. 일반적으로, 시스템 동작 동안 어드레스 충돌들은 드물기 때문에, 도 3의 계층적인 병합 멀티플렉서(302)는 도 2의 SoC(202)의 인터페이스(C) 상에서 CPU 판독들에 의해 보여지는 낮은 레이턴시를 손상시키지 않으면서, GPU 요청들에 대한 높은 대역폭을 야기한다.
도 2 및 3의 SoC는 단일화된 큐잉 구조가 아니다. 즉 CPU, I/O 및 GPU로부터의 요청들은 단일 큐로부터 선택되지 않는다. 따라서, 도 2 및 3에서 설명되는 기술들을 구현하는 SoC는, 탑 레벨 모듈들(top-level modules), 예를 들어 GPU 및 관련 서브 블록들을, 다른 집적된 메모리 제어기 논리로부터 별개로 유지하기 위해, 물리적으로 분할(partition)될 수 있다. 또한, SoC(202) 내의 다른 탑 레벨 모듈들은 다른 속도들에서 클럭(clock)될 수 있고, 각각의 GPU 클라이언트와 인터페이스하기 위해 다른 큐잉 구조들을 구현할 수 있으며, 그리고 집적된 메모리 제어기의 프론트 엔드 내의 트래픽 중재 및 코히런스 파이프라인들과 관계없는 제어 및 데이터 경로를 가질 수 있다. 예를 들어, 계층적인 집적된 메모리 제어기(230)는 제 1 주파수를 갖는 제어 클럭 신호를 이용하여 동작하고, GPU(240)는 제 1 주파수와 다른 제 2 주파수를 갖는 제어 클럭 신호를 이용하여 동작한다. 또한, 그래픽 메모리 중재기(224)는 독립적으로 검증되고 독립적으로 설계될 수 있다(예를 들어, 논리적으로 그리고 물리적으로 설계될 수 있다). 탑 레벨 모듈들에 대한 정의적 경계들(definitive boundaries)은 SoC의 모든 탑 레벨 모듈들의 보다 빠른 집적을 가져온다.
주목할 사항으로서, 여기에서 설명되는 기술들중 일부는 프로그램된 명령들에 응답하여 동작하는 하드웨어를 포함할 수 있다. 대안적으로, 여기에서 설명되는 기술들은 동작들을 수행하기 위해 상태 머신들과 같은 하드 와이어 논리(hard-wired logic)를 포함하는 특정의 하드웨어 컴포넌트들에 의해, 또는 프로그램된 데이터 처리 컴포넌트들 및 하드웨어 컴포넌트들의 임의의 결합에 의해 수행될 수 있다. 따라서, 본 발명의 실시예들은, 여기에서 설명되는, 소프트웨어, 데이터 처리 하드웨어, 데이터 처리 시스템-구현 방법들, 및 다양한 처리 동작들을 포함할 수 있다.
여기에 개시된 본 발명의 설명은 예시적인 것으로서, 하기의 청구범위에 개시되는 본 발명의 범위를 제한하는 것으로서 의도되지 않는다. 예를 들어, 그래픽 처리 유닛이 SoC 내에 포함되는 일 실시예에서 본 발명이 설명되기는 하였지만, 당업자라면 여기에서의 교시들이, 코히런트 메모리 요청들을 발행하는 하나 이상의 처리 유닛들과 공유되는 메모리 구조에 넌 코히런트 메모리 요청들을 발행하는 다른 처리 유닛들(예를 들어, 오디오 코덱들(audio codecs) 또는 다른 적절한 처리 유닛들)에 대해서도 이용될 수 있다는 것을 이해할 것이다. 여기에 개시된 실시예들의 변형들 및 수정들은, 하기의 청구범위에 개시되는 본 발명의 범위 및 정신을 벗어나지 않으면서, 여기에 개시된 설명에 기초하여 이루어질 수 있다.

Claims (15)

  1. 다수의 메모리 요청 스트림들로부터 병합된(merged) 메모리 요청 스트림(316)을 발생시키는 방법으로서,
    코히런트(coherent) 메모리 요청들을 제 1 직렬 메모리 요청 스트림 내에 병합하는 단계와; 그리고
    메모리 제어기 회로(213, 302)에 의해, 적어도 상기 제 1 직렬 메모리 요청 스트림 및 병합된 넌 코히런트(non-coherent) 메모리 요청 스트림으로부터, 상기 병합된 메모리 요청 스트림에 배치(placement)하기 위한 메모리 요청을 선택하는 단계를 포함하며,
    상기 병합된 넌 코히런트 메모리 요청 스트림은 상기 병합된 메모리 요청 스트림(334)에 배치하기 위해 선택된 이전의 메모리 요청의 표시자(indicator)에 적어도 부분적으로 기초하는 것을 특징으로 하는 병합된 메모리 요청 스트림을 발생시키는 방법.
  2. 제 1 항에 있어서,
    상기 병합된 메모리 요청 스트림에 배치하기 위해 선택되는 메모리 요청은 다수의 버스 턴어라운드 방침(bus turnaround policy), 대역폭 할당 방침(bandwidth allocation policy) 및 페이지 소유권 방침(page ownership policy)에 적어도 부분적으로 기초하여 선택되는 것을 특징으로 하는 병합된 메모리 요청 스트림을 발생시키는 방법.
  3. 제 1 항에 있어서,
    적어도 제 1 코히런트 메모리 요청 스트림 및 제 2 코히런트 메모리 요청 스트림으로부터, 상기 제 1 직렬 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하는 단계를 더 포함하며, 상기 제 2 코히런트 메모리 요청 스트림은 추론적인 코히런트 요청 스트림(speculative coherent request stream)인 것을 특징으로 하는 병합된 메모리 요청 스트림을 발생시키는 방법.
  4. 제 1 항에 있어서,
    제 1 코히런트 메모리 요청 스트림, 제 2 코히런트 메모리 요청 스트림 및 리트라이(retry) 요청 스트림을 상기 제 1 직렬 메모리 요청 스트림 내에 병합하는 단계를 더 포함하는 것을 특징으로 하는 병합된 메모리 요청 스트림을 발생시키는 방법.
  5. 제 1 항에 있어서,
    상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 상기 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초하여, 넌 코히런트 메모리 요청들을 상기 병합된 넌 코히런트 메모리 요청 스트림 내에 병합하는 단계를 더 포함하는 것을 특징으로 하는 병합된 메모리 요청 스트림을 발생시키는 방법.
  6. 제 1 다수의 메모리 요청 에이전트들(204, 206, 208, 216)로부터 수신되는 다수의 코히런트 메모리 요청 스트림들을 적어도 제 1 코히런트 메모리 요청 스트림 내에 병합하도록 구성된 중재 유닛(arbitration unit)(210)과; 그리고
    상기 제 1 코히런트 메모리 요청 스트림에 기초하여, 병합된 넌 코히런트 메모리 요청 스트림 및 제 1 직렬 메모리 요청 스트림으로부터, 병합된 메모리 요청 스트림(316)에 배치하기 위한 메모리 요청을 선택하도록 구성된 메모리 제어기 유닛(213)을 포함하며,
    상기 병합된 넌 코히런트 메모리 요청 스트림은 상기 병합된 메모리 요청 스트림(334)에 배치하기 위해 선택된 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초하는 것을 특징으로 하는 장치.
  7. 제 6 항에 있어서,
    상기 병합된 메모리 요청 스트림에 배치하기 위해 선택되는 메모리 요청은 버스 턴어라운드 방침, 대역폭 할당 방침 및 페이지 소유권 방침 중 하나 이상에 적어도 부분적으로 기초하여 선택되는 것을 특징으로 하는 장치.
  8. 제 6 항에 있어서,
    상기 중재 유닛은 추론적인 메모리 요청들을 발생시키고, 상기 추론적인 메모리 요청들을 제 1 코히런트 메모리 요청들과 코히런트한 상기 메모리 제어기 유닛에 발행하도록 구성되며, 그리고
    상기 메모리 제어기 유닛은, 상기 제 1 코히런트 메모리 요청들, 상기 추론적인 메모리 요청들 및 넌 코히런트 메모리 요청들을 상기 병합된 메모리 요청 스트림 내에 계층적으로 병합하도록 구성된 병합 멀티플렉서 유닛(merge multiplexer unit)을 포함하는 것을 특징으로 하는 장치.
  9. 제 8 항에 있어서,
    상기 병합 멀티플렉서 유닛은,
    상기 제 1 코히런트 메모리 요청들, 상기 추론적인 메모리 요청들 및 제 3 세트의 메모리 요청들로부터 프론트 엔드 메모리 요청들을 선택하도록 구성된 제 1 멀티플렉서 유닛과; 그리고
    프론트 엔드 메모리 요청들의 저장된 버전들로부터 상기 제 3 세트의 메모리 요청들을 선택하도록 구성된 제 2 멀티플렉서를 포함하는 것을 특징으로 하는 장치.
  10. 제 8 항에 있어서,
    상기 병합 멀티플렉서 유닛은,
    상기 프론트 엔드 메모리 요청들, 상기 넌 코히런트 메모리 요청들, 및 메모리 페이지 테이블의 출력으로부터, 상기 병합된 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하도록 구성된 제 3 멀티플렉서 유닛을 포함하는 것을 특징으로 하는 장치.
  11. 제 6 항에 있어서,
    상기 제 1 다수의 메모리 요청 에이전트들은,
    제 1 다수의 코히런트 메모리 요청들을 발행하도록 구성된 다수의 범용 처리 유닛들(general purpose processing units)과; 그리고
    제 2 코히런트 메모리 요청들을 발행하도록 구성된 입/출력 처리 유닛을 포함하는 것을 특징으로 하는 장치.
  12. 제 6 항에 있어서,
    상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초하여, 다수의 특별화된 처리 유닛들(specialized processing units)에 의해, 넌 코히런트 메모리 요청 스트림들이 발생되며, 그리고 상기 병합된 메모리 요청 스트림에 배치하기 위해 선택된 이전의 메모리 요청의 표시자는, 칩 선택 표시자, 메모리 뱅크 표시자, 커맨드 표시자, 로우 표시자(row indicator) 및 소스 표시자(source indicator) 중에서 하나 이상을 포함하는 것을 특징으로 하는 장치.
  13. 다수의 코히런트 메모리 요청 스트림들을 발행시키도록 구성된 다수의 코히런트 메모리 요청기들(204, 206, 208, 216)과;
    적어도 하나의 코히런트 메모리 요청 스트림 및 적어도 하나의 넌 코히런트 메모리 요청 스트림을 발행하도록 구성된 그래픽 처리 유닛(graphics processing unit)(240)과, 여기서 상기 그래픽 처리 유닛(240)은, 상기 적어도 하나의 코히런트 메모리 요청 스트림을 발행하도록 구성된 입/출력 엔진(216), 및 병합된 메모리 요청 스트림(334)에 배치하기 위해 선택된 이전의 메모리 요청의 표시자에 적어도 부분적으로 기초하여, 병합된 넌 코히런트 요청 스트림을 발행하도록 구성된 그래픽 메모리 중재기(224)를 포함하며; 그리고
    메모리 요청들을 계층적으로 중재하고, 상기 다수의 코히런트 메모리 요청 스트림들, 상기 적어도 하나의 코히런트 메모리 요청 스트림 및 상기 병합된 넌 코히런트 요청 스트림으로부터, 상기 병합된 메모리 요청 스트림(316)을 발생시키도록 구성된 집적된 메모리 제어기(230)를 포함하는 것을 특징으로 하는 시스템(202).
  14. 제 13 항에 있어서,
    상기 집적된 메모리 제어기는,
    상기 다수의 코히런트 메모리 요청 스트림들 및 상기 적어도 하나의 코히런트 메모리 요청 스트림을 적어도 제 1 코히런트 메모리 요청 스트림 내에 병합하도록 구성된 중재 유닛과; 그리고
    상기 제 1 코히런트 메모리 요청 스트림에 기초하여, 상기 병합된 넌 코히런트 요청 스트림 및 제 1 직렬 메모리 요청 스트림으로부터, 상기 병합된 메모리 요청 스트림에 배치하기 위한 메모리 요청을 선택하도록 구성된 메모리 제어기 유닛을 포함하는 것을 특징으로 하는 시스템(202).
  15. 제 13 항에 있어서,
    상기 집적된 메모리 제어기는 제 1 주파수를 갖는 제어 클럭 신호를 이용하여 동작하며, 상기 그래픽 처리 유닛은 상기 제 1 주파수와 다른 제 2 주파수를 갖는 제어 클럭 신호를 이용하여 동작하는 것을 특징으로 하는 시스템(202).
KR1020117028602A 2009-04-29 2010-04-26 이종 소스들에 대한 계층적인 메모리 중재 기법 KR101557090B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/431,874 US8266389B2 (en) 2009-04-29 2009-04-29 Hierarchical memory arbitration technique for disparate sources
US12/431,874 2009-04-29

Publications (2)

Publication Number Publication Date
KR20120014914A true KR20120014914A (ko) 2012-02-20
KR101557090B1 KR101557090B1 (ko) 2015-10-02

Family

ID=42316017

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117028602A KR101557090B1 (ko) 2009-04-29 2010-04-26 이종 소스들에 대한 계층적인 메모리 중재 기법

Country Status (6)

Country Link
US (2) US8266389B2 (ko)
EP (1) EP2430554B8 (ko)
JP (1) JP5616435B2 (ko)
KR (1) KR101557090B1 (ko)
CN (1) CN102414671B (ko)
WO (1) WO2010126810A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266389B2 (en) * 2009-04-29 2012-09-11 Advanced Micro Devices, Inc. Hierarchical memory arbitration technique for disparate sources
US20120179883A1 (en) * 2011-01-12 2012-07-12 Broadcom Corpotation System and method for dynamically adjusting memory performance
US9032162B1 (en) 2011-08-12 2015-05-12 Altera Corporation Systems and methods for providing memory controllers with memory access request merging capabilities
US9176913B2 (en) 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
KR101949382B1 (ko) * 2012-04-04 2019-02-18 삼성전자주식회사 서비스 품질의 향상을 위한 시스템 온 칩 및 시스템 온 칩의 제어 방법
US8990473B2 (en) * 2012-10-04 2015-03-24 Applied Micro Circuits Corporation Managing requests to open and closed banks in a memory system
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US8959298B2 (en) 2012-12-10 2015-02-17 Qualcomm Incorporated System and method for managing performance of a computing device having dissimilar memory types
US9110795B2 (en) 2012-12-10 2015-08-18 Qualcomm Incorporated System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
US9075952B2 (en) * 2013-01-17 2015-07-07 Intel Corporation Controlling bandwidth allocations in a system on a chip (SoC)
US10929551B2 (en) * 2013-03-13 2021-02-23 Comcast Cable Communications, Llc Methods and systems for managing data assets
WO2014178846A1 (en) * 2013-04-30 2014-11-06 Hewlett-Packard Development Company, L.P. Coalescing memory access requests
CN105579959B (zh) * 2013-09-24 2019-06-07 渥太华大学 硬件加速器虚拟化
WO2015067295A1 (en) 2013-11-05 2015-05-14 Huawei Technologies Co., Ltd. Method and arrangement for controlling requests to a shared electronic resource
US9367491B2 (en) * 2013-12-31 2016-06-14 Global Unichip, Corp. Method and apparatus for on-the-fly learning traffic control scheme
CN104581172A (zh) * 2014-12-08 2015-04-29 北京中星微电子有限公司 一种实现svc宏块级算法的硬件结构
US9886934B2 (en) * 2014-12-24 2018-02-06 Intel Corporation Ordering mechanism for offload graphics scheduling
US10417146B1 (en) 2018-05-15 2019-09-17 Apple Inc. Real-time resource handling in resource retry queue
US10866892B2 (en) 2018-08-13 2020-12-15 Apple Inc. Establishing dependency in a resource retry queue
US11470017B2 (en) * 2019-07-30 2022-10-11 At&T Intellectual Property I, L.P. Immersive reality component management via a reduced competition core network component
US11513973B2 (en) * 2019-12-20 2022-11-29 Advanced Micro Devices, Inc. Arbitration scheme for coherent and non-coherent memory requests
CN111540198B (zh) * 2020-04-17 2021-07-27 浙江工业大学 基于有向图卷积神经网络的城市交通态势识别方法
KR102607421B1 (ko) * 2020-04-27 2023-11-29 한국전자통신연구원 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법
CN111862592B (zh) * 2020-05-27 2021-12-17 浙江工业大学 一种基于rgcn的交通流预测方法
CN112419718B (zh) * 2020-11-17 2022-02-01 东北大学秦皇岛分校 一种基于时空图卷积神经网络的交通拥塞传播预测方法
CN112650697B (zh) * 2020-12-24 2023-04-18 西安翔腾微电子科技有限公司 一种基于ddr3存储控制器接口的多个主设备的仲裁电路
CN116737617B (zh) * 2023-08-11 2023-12-29 上海芯高峰微电子有限公司 一种访问控制器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3665415A (en) * 1970-04-29 1972-05-23 Honeywell Inf Systems Data processing system with program interrupt priority apparatus utilizing working store for multiplexing interrupt requests
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6487640B1 (en) * 1999-01-19 2002-11-26 International Business Machines Corporation Memory access request reordering to reduce memory access latency
US6625700B2 (en) * 2001-05-31 2003-09-23 Sun Microsystems, Inc. Arbitration and select logic for accessing a shared memory
US20030158985A1 (en) * 2002-02-15 2003-08-21 Edward Fried Systems and methods for fair arbitration between multiple request signals
US7133972B2 (en) * 2002-06-07 2006-11-07 Micron Technology, Inc. Memory hub with internal cache and/or memory access prediction
US7210018B2 (en) * 2002-12-30 2007-04-24 International Business Machines Corporation Multiple-stage pipeline for transaction conversion
US7698498B2 (en) * 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
US8266389B2 (en) * 2009-04-29 2012-09-11 Advanced Micro Devices, Inc. Hierarchical memory arbitration technique for disparate sources

Also Published As

Publication number Publication date
KR101557090B1 (ko) 2015-10-02
EP2430554A1 (en) 2012-03-21
EP2430554B8 (en) 2018-06-27
JP2012525642A (ja) 2012-10-22
CN102414671A (zh) 2012-04-11
US8266389B2 (en) 2012-09-11
EP2430554B1 (en) 2018-03-14
WO2010126810A1 (en) 2010-11-04
CN102414671B (zh) 2015-05-27
US8645639B2 (en) 2014-02-04
US20100281231A1 (en) 2010-11-04
US20120331226A1 (en) 2012-12-27
JP5616435B2 (ja) 2014-10-29

Similar Documents

Publication Publication Date Title
KR101557090B1 (ko) 이종 소스들에 대한 계층적인 메모리 중재 기법
Akesson et al. Predator: a predictable SDRAM memory controller
KR102442081B1 (ko) 비-균일 레이턴시들을 가진 메모리 요청들을 스케줄링하는 방법
US7461190B2 (en) Non-blocking address switch with shallow per agent queues
US6330645B1 (en) Multi-stream coherent memory controller apparatus and method
EP1242894B1 (en) Prioritized bus request scheduling mechanism for processing devices
Ecco et al. A mixed critical memory controller using bank privatization and fixed priority scheduling
Natarajan et al. A study of performance impact of memory controller features in multi-processor server environment
US20210073152A1 (en) Dynamic page state aware scheduling of read/write burst transactions
US20130054901A1 (en) Proportional memory operation throttling
JP2022514128A (ja) メモリコントローラのリフレッシュスキーム
JP2010282405A (ja) データ処理システム
EP3732578B1 (en) Supporting responses for memory types with non-uniform latencies on same channel
JP2004500667A (ja) 改良されたメモリリクエスト調停機構を有するメモリコントローラを含むバスブリッジ
US20040059879A1 (en) Access priority protocol for computer system
US7680971B2 (en) Method and apparatus for granting processors access to a resource
EP1323045A2 (en) Dynamic priority external transaction system
JP2024512625A (ja) アービトレーション中の書き込みバンクグループのマスク
Ecco et al. Minimizing DRAM rank switching overhead for improved timing bounds and performance
EP0901080A1 (en) Arbitration system
US6928525B1 (en) Per cache line semaphore for cache access arbitration
US7130947B2 (en) Method of arbitration which allows requestors from multiple frequency domains
Reed et al. A dual round-robin arbiter for split-transaction buses in system-on-chip implementations
KR20050098334A (ko) 버스 브릿지의 버스사용권 제어를 위한 버스중재 장치 및방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee