KR20120029366A - 트래픽 클래스들과 관련된 포트들을 갖는 다중 포트 메모리 제어기 - Google Patents

트래픽 클래스들과 관련된 포트들을 갖는 다중 포트 메모리 제어기 Download PDF

Info

Publication number
KR20120029366A
KR20120029366A KR1020110093570A KR20110093570A KR20120029366A KR 20120029366 A KR20120029366 A KR 20120029366A KR 1020110093570 A KR1020110093570 A KR 1020110093570A KR 20110093570 A KR20110093570 A KR 20110093570A KR 20120029366 A KR20120029366 A KR 20120029366A
Authority
KR
South Korea
Prior art keywords
memory
operations
qos
read
ports
Prior art date
Application number
KR1020110093570A
Other languages
English (en)
Other versions
KR101270848B1 (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
Priority claimed from US12/883,878 external-priority patent/US8631213B2/en
Priority claimed from US12/883,864 external-priority patent/US8314807B2/en
Priority claimed from US12/883,888 external-priority patent/US8510521B2/en
Priority claimed from US12/883,848 external-priority patent/US20120072677A1/en
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20120029366A publication Critical patent/KR20120029366A/ko
Application granted granted Critical
Publication of KR101270848B1 publication Critical patent/KR101270848B1/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
    • 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
    • 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
    • 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/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Logic Circuits (AREA)
  • Transceivers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Transmitters (AREA)
  • Multi Processors (AREA)
  • Dram (AREA)

Abstract

일 실시예에서, 메모리 제어기는 다수의 포트를 포함한다. 각각의 포트는 상이한 타입의 트래픽에 전용일 수 있다. 일 실시예에서, 서비스 품질(QoS) 파라미터들이 트래픽 타입들에 대해 정의될 수 있고, 상이한 트래픽 타입들은 상이한 QoS 파라미터 정의들을 가질 수 있다. 메모리 제어기는 상이한 포트들 상에서 수신된 동작들을 QoS 파라미터들에 기초하여 스케줄링하도록 구성될 수 있다. 일 실시예에서, 메모리 제어기는 더 높은 QoS 파라미터들을 갖는 후속 동작들이 수신될 때 측파대 요청을 통해 그리고/또는 동작들의 에이징을 통해 QoS 파라미터들의 업그레이드를 지원할 수 있다. 일 실시예에서, 메모리 제어기는 동작들이 메모리 제어기 파이프라인을 통해 흐를 때 QoS 파라미터들에 대한 강조를 줄이고, 메모리 대역폭 최적화에 대한 강조를 증가시키도록 구성된다.

Description

트래픽 클래스들과 관련된 포트들을 갖는 다중 포트 메모리 제어기{MULTI-PORTED MEMORY CONTROLLER WITH PORTS ASSOCIATED WITH TRAFFIC CLASSES}
본 발명은 메모리 제어기 분야에 관한 것이다.
디지털 시스템들은 일반적으로 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM), 동기 DRAM(SDRAM), 저전력 버전(LPDDR, LPDDR2 등) SDRAM을 포함하는 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM 등과 같은 반도체 메모리 장치들로 형성된 메모리 시스템을 포함한다. 메모리 시스템은 파워 온 시에는 데이터를 유지하지만 파워 오프 시에는 데이터를 유지하지 못하는 휘발성이지만, 플래시 메모리, 디스크 드라이브들과 같은 자기 저장 장치들, 또는 콤팩트 디스크(CD), 디지털 비디오 디스크(DVD) 및 블루레이 드라이브들과 같은 광학 저장 장치들과 같은 비휘발성 메모리들에 비해 낮은 지연의 액세스를 또한 제공한다.
메모리 시스템을 형성하는 메모리 장치들은 메모리 장치 고유 프로토콜들에 따라 메모리를 판독하고 기입하기 위한 저레벨 인터페이스를 갖는다. 메모리 동작들을 유발하는 소스들은 통상적으로 버스, 점대점 패킷 인터페이스 등과 같은 고레벨 인터페이스를 통해 통신한다. 소스들은 프로세서들, 입출력(I/O) 장치들, 오디오 및 비디오 장치들과 같은 주변 장치들 등일 수 있다. 일반적으로, 메모리 동작들은 메모리로부터 장치로 데이터를 전송하기 위한 메모리 판독 동작들 및 소스로부터 메모리로 데이터를 전송하기 위한 메모리 기입 동작들을 포함한다. 메모리 판독 동작들은 본 명세서에서 더 간결하게 판독 동작들 또는 판독들로서 지칭될 수 있으며, 마찬가지로 메모리 기입 동작들은 본 명세서에서 더 간결하게 기입 동작들 또는 기입들로서 지칭될 수 있다.
따라서, 통상적으로 고레벨 인터페이스로부터 메모리 동작들을 수신하고, 수신된 동작들을 수행하도록 메모리 장치들을 제어하기 위한 메모리 제어기가 포함된다. 메모리 제어기는 일반적으로 메모리 동작들을 캡처하기 위한 큐들도 포함하며, 성능을 향상시키기 위한 회로를 포함할 수 있다. 예를 들어, 일부 메모리 제어기들은 상이한 어드레스들에 영향을 주는 더 이른 메모리 기입 동작들의 앞에 메모리 판독 동작들을 스케줄링한다.
메모리 제어기들은 소스들에 의해 제공될 수 있는 트래픽의 상이한 타입들에 대해 제한된 가시성을 갖는다. 따라서, 메모리 제어기들은 트래픽을 더 미세한 입도 레벨들로 분리할 수 없었다. 따라서, 메모리 제어기들의 성능 향상은 기입 동작들 앞에 판독 동작들을 스케줄링하는 것과 같은 더 거친 메커니즘들로 제한되었다.
일 실시예에서, 메모리 제어기는 메모리 요청들을 수신하기 위한 다수의 포트를 포함할 수 있다. 각각의 포트는 실시간(RT), 그래픽 및 비실시간(NRT)과 같은 특정 트래픽 타입과 관련될 수 있다. 각각의 트래픽 타입은 상이한 요구들 및 거동을 갖는다. 상이한 포트들을 제공함으로써, 메모리 제어기는 상이한 타입의 요청들에 동시에 노출될 수 있으며, 따라서 트래픽 혼합에 기초하여 지능적인 스케줄링 결정들을 행할 수 있다.
일부 실시예들에서, 상이한 포트들은 상이한 통신 프로토콜들을 이용할 수 있다. 예를 들어, 중앙 처리 유닛(CPU) 인터페이스가 프로세서들에 대해 사용될 수 있고, 그래픽 인터페이스가 그래픽 장치들에 대해 사용될 수 있으며, 기타 등등이다. 일부 실시예들에서, 제삼자들이 인터페이스들 중 하나 이상을 개발하였을 수 있고, 인터페이스들을 이용하여 통신하는 장치들을 판매할 수 있다. 상이한 포트들이 메모리 제어기에서 지원되므로, 메모리 제어기 및 제삼자 장치들 모두를 포함하는 시스템들은 제삼자 장치들과 메모리 제어기 사이에서 프로토콜들을 변환하기 위한 중재 회로를 회피할 수 있다. 시스템들은 간소화되고, 비용이 덜 들 수 있으며, 중재 회로에 의해 추가되는 지연이 회피될 수 있다.
일부 실시예들에서는, 서비스 품질(QoS) 파라미터들이 메모리 동작들과 함께 메모리 제어기로 전송될 수 있다. 메모리 제어기는 상대적인 QoS 레벨들을 이용하여, 포트들로부터의 메모리 요청들을 메모리 채널들로 스케줄링할 수 있다. 상이한 트래픽 타입들은 상이한 QoS 레벨 사양들을 가질 수 있으며, 메모리 제어기는 스케줄링을 위해 상이한 타입들의 QoS 파라미터들 사이를 중재하도록 구성될 수 있다. 게다가, 대역폭 공유 제어들이 스케줄링에 영향을 미칠 수 있다.
아래의 상세한 설명은 이제 간단히 설명되는 첨부 도면들을 참고한다.
도 1은 메모리 제어기를 포함하는 시스템의 일 실시예의 블록도.
도 2는 트래픽의 RT 및 NRT 클래스들에 대해 정의될 수 있는 QoS 레벨들의 일 실시예의 블록도.
도 3은 도 1에 도시된 메모리 제어기의 일 실시예의 블록도.
도 4는 도 3에 도시된 에이전트 인터페이스 유닛의 일 실시예에 포함될 수 있는 포트 인터페이스 유닛의 일 실시예의 블록도.
도 5는 도 3에 도시된 에이전트 인터페이스 유닛의 일 실시예에 포함될 수 있는 메모리 채널 인터페이스 유닛의 일 실시예의 블록도.
도 6은 도 5에 도시된 QoS 중재기의 일 실시예의 동작을 나타내는 흐름도.
도 7은 도 3의 메모리 채널 유닛 내에 도시된 사전 분류 큐(PSQ)의 일 실시예의 블록도.
도 8은 도 7에 도시된 엔큐 제어 유닛(enqueue control unit)의 일 실시예의 동작을 나타내는 흐름도.
도 9는 스케줄링될 판독들과 기입들 사이에서 선택하기 위한 도 7에 도시된 스케줄러의 일 실시예의 동작을 나타내는 흐름도.
도 10은 스케줄링될 기입 동작을 선택하기 위한 도 7에 도시된 스케줄러의 일 실시예의 동작을 나타내는 흐름도.
도 11은 스케줄링될 판독을 선택하기 위한 도 7에 도시된 스케줄러의 일 실시예의 동작을 나타내는 도표.
도 12는 도 3에 도시된 메모리 인터페이스(MIF) 유닛의 일 실시예의 블록도.
도 13은 도 12에 도시된 MIF 엔큐 제어 유닛의 일 실시예의 동작을 나타내는 흐름도.
도 14는 도 12에 도시된 활성화 스케줄러의 일 실시예의 동작을 나타내는 흐름도.
도 15는 도 12에 도시된 열 어드레스 스트로브(CAS) 스케줄러의 일 실시예의 동작을 나타내는 흐름도.
도 16은 도 12에 도시된 최종 스케줄러의 일 실시예의 동작을 나타내는 도표.
도 17은 고레벨에서의 큐잉 및 다양한 레벨들에서의 QoS 파라미터들 및 메모리 대역폭 최적화의 상대적인 중요성의 일 실시예의 블록도.
도 18은 대역내 QoS 업그레이드를 지원하기 위한 메모리 제어기 특징들의 일 실시예의 블록도.
도 19는 대역내 QoS 업그레이드의 일 실시예의 동작을 나타내는 흐름도.
도 20은 측파대 QoS 업그레이드 인터페이스의 일 실시예의 블록도.
도 21은 동작들의 에이징으로 인한 QoS 업그레이드의 일 실시예를 나타내는 흐름도.
도 22는 도 1에 도시된 집적 회로를 포함하는 시스템의 일 실시예의 블록도.
본 발명은 다양한 변경들 및 대안 형태들이 가능하지만, 본 발명의 특정 실시예들이 도면들에 예시적으로 도시되고, 본 명세서에서 상세히 설명된다. 그러나, 도면들 및 그들에 대한 상세한 설명은 본 발명을 개시되는 특정 형태로 한정하는 것을 의도하는 것이 아니라, 첨부된 청구항들에 의해 정의되는 바와 같은 본 발명의 사상 및 범위 내에 속하는 모든 변경들, 균등물들 및 대안들을 커버하는 것을 의도한다는 것을 이해해야 한다. 본 명세서에서 사용되는 표제들은 조직적인 목적을 위한 것일 뿐, 설명의 범위를 한정하는 데 사용되는 것을 의도하지 않는다. 본 명세서 전반에서 사용될 때, "할 수 있다"라는 표현은 의무적인 의미(즉, 해야 한다는 의미)가 아니라, 허용의 의미(즉, 가능성을 갖는다는 의미)로 사용된다. 마찬가지로, "포함한다" 및 "포함하는"이라는 단어들은 포함하지만 한정되지 않는다는 것을 의미한다.
다양한 유닛들, 회로들 또는 다른 컴포넌트들은 작업 또는 작업들을 수행하도록 "구성되는" 것으로 설명될 수 있다. 이와 관련하여, "구성되는"은 동작 동안에 작업 또는 작업들을 수행하는 "회로를 갖는" 것을 일반적으로 의미하는 구조의 광범위한 표현이다. 따라서, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온 상태가 아닌 때에도 작업을 수행하도록 구성될 수 있다. 일반적으로, "구성되는"에 대응하는 구조를 형성하는 회로는 하드웨어 회로들을 포함할 수 있다. 유사하게, 다양한 유닛들/회로들/컴포넌트들은 설명의 편의를 위해 작업 또는 작업들을 수행하는 것으로 설명될 수 있다. 이러한 설명은 "구성되는"이라는 문구를 포함하는 것으로 해석되어야 한다. 하나 이상의 작업을 수행하도록 구성되는 유닛/회로/컴포넌트의 기재는 그러한 유닛/회로/컴포넌트에 대해 35 U.S.C.§112, 단락 6의 해석을 요구하지 않는 것을 명확히 의도한다.
이제, 도 1을 참조하면, 시스템(5)의 일 실시예의 블록도가 도시되어 있다. 도 1의 실시예에서, 시스템(5)은 외부 메모리들(12A-12B)에 결합된 집적 회로(IC)(10)를 포함한다. 도시된 실시예에서, 집적 회로(10)는 하나 이상의 프로세서(16) 및 레벨 2(L2) 캐시(18)를 포함하는 중앙 처리 유닛(CPU) 블록(14)을 포함한다. 다른 실시예들은 L2 캐시(18)를 포함하지 않을 수 있으며, 그리고/또는 추가적인 레벨의 캐시를 포함할 수 있다. 게다가, 2개보다 많은 프로세서(16)를 포함하는 실시예들 및 하나의 프로세서(16)만을 포함하는 실시예들도 고려된다. 집적 회로(10)는 하나 이상의 비실시간(NRT) 주변 장치들(20)의 세트 및 하나 이상의 실시간(RT) 주변 장치들(22)의 세트를 더 포함한다. 도시된 실시예에서, RT 주변 장치들은 이미지 프로세서(24), 하나 이상의 디스플레이 파이프(26) 및 포트 중재기(28)를 포함한다. 다른 실시예들은 필요에 따라 더 많거나 적은 이미지 프로세서들(24), 더 많거나 적은 디스플레이 파이프들(26) 및/또는 임의의 추가적인 실시간 주변 장치들을 포함할 수 있다. 이미지 프로세서(24)는 시스템(5) 내의 하나 이상의 카메라로부터 이미지 데이터를 수신하도록 결합될 수 있다. 유사하게, 디스플레이 파이프들(26)은 시스템 내의 하나 이상의 디스플레이를 제어하는 하나 이상의 디스플레이 제어기(도시되지 않음)에 결합될 수 있다. 도시된 실시예에서, CPU 블록(14)은 하나 이상의 주변 장치들(32) 및/또는 하나 이상의 주변 장치 인터페이스 제어기들(34)에 결합될 수 있는 브리지/직접 메모리 액세스(DMA) 제어기(30)에 결합된다. 주변 장치들(32) 및 주변 장치 인터페이스 제어기들(34)의 수는 다양한 실시예들에서 0개에서 임의의 원하는 개수로 상이할 수 있다. 도 1에 도시된 시스템(5)은 G0(38A) 및 G1(38B)과 같은 하나 이상의 그래픽 제어기들을 포함하는 그래픽 유닛(36)을 더 포함한다. 그래픽 유닛당 그래픽 제어기들의 수 및 그래픽 유닛들의 수는 다른 실시예들에서 상이할 수 있다. 도 1에 도시된 바와 같이, 시스템(5)은 하나 이상의 메모리 물리 인터페이스 회로들(PHY들)(42A-42B)에 결합된 메모리 제어기(40)를 포함한다. 메모리 PHY들(42A-42B)은 집적 회로(10)의 핀들을 통해 메모리들(12A-12B)과 통신하도록 구성된다. 메모리 제어기(40)는 또한 포트들(44A-44E)의 세트를 포함한다. 포트들(44A-44B)은 각각 제1 타입의 인터페이스(I/face 1)를 통해 각각 그래픽 제어기들(38A-38B)에 결합된다. CPU 블록(14)은 제2 타입의 인터페이스(I/face 2)를 통해 포트(44C)에 결합된다. NRT 주변 장치들(20) 및 RT 주변 장치들(22)은 제2 타입의 인터페이스를 통해 포트들(44D-44E)에 결합된다. 다른 실시예들에서는, 메모리 제어기들의 수가 상이할 수 있듯이, 메모리 제어기(40)에 포함되는 포트들의 수가 상이할 수 있다. 메모리 PHY들(42A-42B) 및 대응하는 메모리들(12A-12B)의 수는 다른 실시예들에서 하나이거나 둘보다 많을 수 있다.
일 실시예에서, 각각의 포트(44A-44E)는 특정 트래픽 타입과 관련될 수 있다. 예컨대, 일 실시예에서, 트래픽 타입들은 RT 트래픽, NRT 트래픽 및 그래픽 트래픽을 포함할 수 있다. 다른 실시예들은 전술한 트래픽 타입들에 더하여, 그 대신에, 또는 전술한 트래픽 타입들의 서브세트에 더하여 다른 트래픽 타입들을 포함할 수 있다. 각각의 트래픽 타입은 (예를 들어, 요구들 및 거동과 관련하여) 상이하게 특성화될 수 있으며, 메모리 제어기는 특성들에 기초하여 더 높은 성능을 제공하기 위해 트래픽 타입들을 상이하게 처리할 수 있다. 예를 들어, RT 트래픽은 특정한 양의 시간 내에 각각의 메모리 동작의 서비싱을 필요로 한다. 동작의 지연이 특정한 양의 시간을 초과하는 경우, RT 주변 장치에서 동작 에러가 발생할 수 있다. 예를 들어, 이미지 프로세서(24)에서 이미지 데이터가 손실될 수 있거나, 디스플레이 파이프들(26)과 결합된 디스플레이들 상에 표시된 이미지가 시각적으로 왜곡될 수 있다. RT 트래픽은 예를 들어 등시적인 것으로서 특성화될 수 있다. 한편, 그래픽 트래픽은 비교적 큰 대역폭일 수 있지만, 지연에 민감하지 않다. 프로세서(16) 등으로부터의 NRT 트래픽은 성능의 이유로 지연에 더 민감하지만, 더 큰 지연에 견딘다. 즉, NRT 트래픽은 NRT 트래픽을 생성하는 장치들에서 동작 에러를 유발하지 않고 임의의 지연으로 서비스될 수 있다. 유사하게, 지연에 덜 민감하지만 더 큰 대역폭을 갖는 그래픽 트래픽은 일반적으로 임의의 지연으로 서비스될 수 있다. 다른 NRT 트래픽은 오디오 트래픽을 포함할 수 있으며, 오디오 트래픽은 비교적 작은 대역폭을 갖고, 일반적으로 적당한 지연으로 서비스될 수 있다. 대부분의 주변 장치 트래픽(예를 들어, 자기, 광학 또는 반도체 저장 장치와 같은 저장 장치들로의 트래픽)도 NRT일 수 있다.
상이한 트래픽 타입들과 관련된 포트들(44A-44E)을 제공함으로써, 메모리 제어기(40)는 상이한 트래픽 타입들에 동시에 노출될 수 있으며, 따라서 트래픽 타입에 기초하여 어느 메모리 동작들을 다른 것들에 앞서 서비스할지에 대해 더 양호한 결정들을 행하는 것이 가능할 수 있다. 일부 실시예들에서, 각각의 포트는 RT 또는 NRT 트래픽에만 전용일 수 있다. 다른 실시예들에서, 포트들은 특정 트래픽 타입과 연관될 수 있지만, 다른 트래픽 타입들이 포트 상에서 지원될 수 있다. 일 실시예에서, 그래픽 트래픽은 NRT 트래픽으로서 간주될 수 있지만, 다른 NRT 트래픽과 분리된 그래픽 트래픽에 대한 가시성을 갖는 것이 다른 NRT 소스들과 RT 소스 사이의 대역폭 균형화를 위해 유용할 수 있다. 마찬가지로, 다른 NRT 소스들로부터 분리된 프로세서 트래픽을 갖는 것이 대역폭 균형화에 유용할 수 있다. 도시된 실시예에서, RT 포트(44E)는 RT 트래픽과 연관될 수 있고, 나머지 포트들(44A-44D)은 NRT 트래픽과 연관될 수 있다.
일반적으로, 포트는 하나 이상의 소스들과 통신하기 위한 메모리 제어기(40) 상의 통신 포인트일 수 있다. 일부 예들에서, 포트는 소스에 전용될 수 있다(예컨대, 포트들(44A-44B)은 각각 그래픽 제어기들(38A-38B)에 전용일 수 있다). 다른 예들에서, 포트는 다수의 소스 사이에 공유될 수 있다(예를 들어, 프로세서들(16)은 CPU 포트(44C)를 공유할 수 있고, NRT 주변 장치들(20)은 NRT 포트(44D)를 공유할 수 있으며, 디스플레이 파이프들(26) 및 이미지 프로세서(24)와 같은 RT 주변 장치들은 RT 포트(44E)를 공유할 수 있다). 포트는 단일 인터페이스에 결합되어, 하나 이상의 소스들과 통신할 수 있다. 따라서, 소스들이 인터페이스를 공유할 때, 인터페이스의 소스들 측에는 소스들 사이에서 선택하기 위한 중재기가 존재할 수 있다. 예컨대, L2 캐시(18)는 메모리 제어기(40)로의 CPU 포트(44C)에 대한 중재기로서 사용될 수 있다. 포트 중재기(28)는 RT 포트(44E)에 대한 중재기로서 사용될 수 있고, 유사한 포트 중재기(도시되지 않음)가 NRT 포트(44D)에 대한 중재기일 수 있다. 포트 상의 단일 소스 또는 포트 상의 소스들의 결합은 에이전트로서 지칭될 수 있다.
각각의 포트(44A-44E)는 인터페이스에 결합되어, 그의 각각의 에이전트와 통신한다. 인터페이스는 임의 타입의 통신 매체(예컨대, 버스, 점대점 상호접속 등)일 수 있으며, 임의의 프로토콜을 구현할 수 있다. 일부 실시예들에서, 포트들(44A-44E) 모두는 동일한 인터페이스 및 프로토콜을 구현할 수 있다. 다른 실시예들에서, 상이한 포트들은 상이한 인터페이스들 및/또는 프로토콜들을 구현할 수 있다. 예를 들어, 도 1에 도시된 실시예는 일 타입의 인터페이스/프로토콜을 이용하는 그래픽 제어기들(38A-38B) 및 다른 타입의 인터페이스/프로토콜을 이용하는 CPU 블록(14), NRT 주변 장치들(20) 및 RT 주변 장치들(22)을 포함한다. 인터페이스는 인터페이스의 신호 정의들 및 전기적 특성들을 참조할 수 있으며, 프로토콜은 (예를 들어, 명령들, 배열 규칙들, 존재할 경우에 일관성 지원, 기타 등등을 포함하는) 인터페이스 상의 통신의 논리적 정의일 수 있다. 다양한 포트들(44A-44E) 상에서 둘 이상의 인터페이스를 지원하는 것은 소스/에이전트에 의해 지원되는 하나의 인터페이스로부터 메모리 제어기(40)에 의해 지원되는 다른 인터페이스로 변환할 필요를 없앨 수 있으며, 이는 일부 실시예들에서 성능을 향상시킬 수 있다. 집적 회로(10)의 추가적인 일부 실시예들은 업계에서 통상적으로 지적 재산(IP)으로서 지칭되는 사전 패키지화된 유닛으로서 제삼자로부터 구매한 회로를 포함할 수 있다. IP는 "하드"(이 경우에, IP는 IC 상에 블록으로서 레이아웃되고 배치되는 회로들의 네트 리스트로서 지정된다) 또는 "소프트"(이 경우에, IP는 집적 회로(10) 내에 포함되도록 다른 블록들과 합성될 수 있는 합성 가능 블록으로서 지정된다)일 수 있다. 소프트 및 하드 IP 모두는 (적어도, IP를 소유하는 제삼자에게 수수료를 지불하지 않고) 일반적으로 집적 회로(10)의 설계자에 의해 변경될 수 없는 지정된 인터페이스 및 프로토콜을 포함한다. 따라서, 다수의 인터페이스/프로토콜의 지원은 제삼자 IP의 더 쉬운 포함을 가능하게 할 수 있다.
일 실시예에서, 각각의 소스는 그 소스에 의해 전송된 각각의 메모리 동작에 서비스 품질(QoS) 파라미터를 할당할 수 있다. QoS 파라미터는 메모리 동작에 대한 요청된 서비스 레벨을 식별할 수 있다. 더 높은 서비스 레벨들을 요청하는 QoS 파라미터 값들을 갖는 메모리 동작들은 더 낮은 서비스 레벨들을 요청하는 메모리 동작들보다 우선권을 부여받을 수 있다. 예를 들어, 도 1의 포트들(44A-44E)에 대한 인터페이스들 각각은 명령(Cmd), 흐름 식별자(FID) 및 QoS 파라미터(QoS)를 포함하는 것으로 도시되어 있다. 명령은 메모리 동작(예를 들어, 판독 또는 기입)을 식별할 수 있다. 판독 명령/메모리 동작은 메모리(12A-12B)로부터 소스로의 데이터의 전송을 유발하는 반면, 기입 명령/메모리 동작은 소스로부터 메모리(12A-12B)로의 데이터의 전송을 유발한다. 명령들은 메모리 제어기(40)를 프로그래밍하기 위한 명령들도 포함할 수 있다. 예를 들어, 어떠한 어드레스 범위들이 어떠한 메모리 채널들에 맵핑되는지에 관한 것, 대역폭 공유 파라미터들 등이 모두 메모리 제어기(40) 내에 프로그래밍될 수 있다. FID는 메모리 동작을 메모리 동작들의 흐름의 일부로서 식별할 수 있다. 메모리 동작들의 흐름은 일반적으로 관련될 수 있는 반면, 상이한 흐름들로부터의 메모리 동작들은 동일 소스로부터 유래한 것인 경우에도 관련되지 않을 수 있다. FID의 일부(예를 들어, 소스 필드)는 소스를 식별할 수 있으며, FID의 나머지는 흐름(예를 들어, 흐름 필드)을 식별할 수 있다. 따라서, FID는 트랜잭션 ID와 유사할 수 있으며, 일부 소스들은 트랜잭션 ID를 FID로서 간단히 전송할 수 있다. 그러한 경우에, 트랜잭션 ID의 소스 필드는 FID의 소스 필드일 수 있으며, 트랜잭션 ID의 (동일 소스로부터의 트랜잭션들 사이에서 트랜잭션을 식별하는) 시퀀스 번호는 FID의 흐름 필드일 수 있다. 그러나, 트랜잭션들을 흐름으로서 그룹화하는 소스들은 FID들을 상이하게 이용할 수 있다. 대안으로서, 흐름들은 소스 필드와 상관될 수 있다(예컨대, 동일 소스로부터의 동작들은 동일 흐름의 일부일 수 있고, 상이한 소스로부터의 동작들은 상이한 흐름의 일부일 수 있다). 흐름의 트랜잭션들을 식별하는 능력은 후술하는 다양한 방식(예를 들어, QoS 업그레이드, 재배열 등)으로 이용될 수 있다.
따라서, 주어진 소스는 QoS 파라미터들을 이용하여, 특히 소스로부터의 어드레스 전송들과 관련하여 비순차적 데이터 전송들을 지원하는 소스들에 대해, 어떠한 메모리 동작들이 소스에 대해 더 중요한지(따라서, 동일 소스로부터의 다른 메모리 동작들에 앞서 서비스되어야 하는지)를 식별하도록 구성될 수 있다. 더욱이, QoS 파라미터들은 소스들이 동일 포트 상의 다른 소스들 및/또는 다른 포트들 상의 소스들보다 높은 서비스 레벨들을 요청하는 것을 가능하게 할 수 있다.
일부 실시예들에서, 상이한 트래픽 타입들은 QoS 파라미터들의 상이한 정의들을 가질 수 있다. 즉, 상이한 트래픽 타입들은 QoS 파라미터들의 상이한 세트들을 가질 수 있다. 주어진 QoS 파라미터 값의 의미는 그것이 인출된 QoS 파라미터들의 세트에 의존한다. 예를 들어, RT QoS 파라미터들의 세트가 정의될 수 있고, NRT QoS 파라미터들의 세트가 정의될 수 있다. 따라서, RT QoS 파라미터 값은 RT QoS 파라미터 세트 내에서 의미를 할당받고, NRT QoS 파라미터 값은 NRT QoS 파라미터 세트 내에서 의미를 할당받는다. 다른 실시예들은 모든 포트들 상에서 또는 모든 트래픽 타입들 사이에서 동일한 QoS 파라미터 세트를 구현할 수 있다.
메모리 제어기(40)는 각각의 포트(44A-44E) 상에서 수신된 QoS 파라미터들을 처리하도록 구성될 수 있으며, 상대적인 QoS 파라미터 값들을 이용하여, 포트들 상에서 수신된 메모리 동작들을 그 포트로부터의 다른 메모리 동작들에 관하여 그리고 다른 포트들 상에서 수신된 다른 메모리 동작들에 관하여 스케줄링할 수 있다. 구체적으로, 메모리 제어기(40)는 QoS 파라미터들의 상이한 세트들(예를 들어, RT QoS 파라미터들 및 NRT QoS 파라미터들)로부터 인출된 QoS 파라미터들을 비교하도록 구성될 수 있으며, QoS 파라미터들에 기초하여 스케줄링 결정들을 행하도록 구성될 수 있다.
따라서, QoS 파라미터들은, 메모리 동작들과 함께 전송되고, 요청된 QoS 레벨들을 식별하기 위해 메모리 제어기에서 사용될 수 있는 값들일 수 있다. QoS 레벨들은 다른 레벨들과 관련될 수 있으며, 어떠한 메모리 동작들이 더 낮은 QoS 레벨들을 갖는 다른 것들에 앞서 선택되는 것이 바람직한지를 지정할 수 있다. 따라서, 다른 팩터들에 의해 우선 순위가 균형화될 수 있지만, 상이한 세트들 내에 정의된 QoS 레벨들을 고려하기 위하여 메모리 제어기(40)에 의한 해석 후에 QoS 레벨들이 일종의 우선 순위로서 기능할 수 있다.
일부 실시예들에서, 메모리 제어기(40)는 대기중인 메모리 동작들에 대한 QoS 레벨들을 업그레이드하도록 구성될 수 있다. 다양한 업그레이드 메커니즘이 지원될 수 있다. 예를 들어, 메모리 제어기(40)는 흐름의 대기중인 메모리 동작들에 대한 QoS 레벨을, 더 높은 QoS 레벨을 지정하는 QoS 파라미터를 갖는 동일 흐름으로부터의 다른 메모리 동작의 수신에 응답하여, 업그레이드하도록 구성될 수 있다. 이러한 형태의 QoS 업그레이드는 대역내 업그레이드로서 지칭될 수 있는데, 그 이유는 통상의 메모리 동작 전송 방법을 이용하여 전송된 QoS 파라미터들이 동일 흐름 내의 메모리 동작들에 대한 암시적인 업그레이드 요청으로도 이용되기 때문이다. 메모리 제어기(40)는 동일 포트 또는 소스, 그러나 다른 흐름으로부터의 대기중인 메모리 동작들을 더 높은 QoS 레벨을 지정하는 새로 수신된 메모리 동작으로서 푸시하도록 구성될 수 있다. 다른 예로서, 메모리 제어기(40)는 하나 이상의 에이전트들로부터의 측파대 인터페이스에 결합하도록 구성될 수 있으며, 측파대 인터페이스 상에서의 업그레이드 요청의 수신에 응답하여 QoS 레벨들을 업그레이드할 수 있다. 다른 예에서, 메모리 제어기(40)는 대기중인 메모리 동작들의 상대적인 에이지(age)를 추적하도록 구성될 수 있다. 메모리 제어기(40)는 소정의 에이지로 에이징된 메모리 동작들의 QoS 레벨을 업그레이드하도록 구성될 수 있다. 업그레이드가 발생하는 에이지는 에이징된 메모리 동작의 현재의 QoS 파라미터에 의존할 수 있다.
메모리 제어기(40)는 포트들 상에서 수신된 각각의 메모리 동작에 의해 어드레스되는 메모리 채널을 결정하도록 구성될 수 있으며, 메모리 동작들을 대응하는 채널 상의 메모리(12A-12B)로 전송하도록 구성될 수 있다. 채널들의 수 및 채널들에 대한 어드레스들의 맵핑은 다양한 실시예들에서 다를 수 있으며, 메모리 제어기 내에 프로그래밍될 수 있다. 메모리 제어기는 동일 채널에 맵핑된 메모리 동작들의 QoS 파라미터들을 이용하여, 채널 내로 전송되는 메모리 동작들의 순서를 결정할 수 있다. 즉, 메모리 제어기는 메모리 동작들을 그들의 포트들 상에서의 최초 수신 순서로부터 재배열할 수 있다. 게다가, 채널에서의 처리 동안에, 메모리 동작들은 하나 이상의 포인트들에서 다시 재배열될 수 있다. 재배열의 각각의 레벨에서, QoS 파라미터들에 주어지는 강조의 양이 감소될 수 있고, 메모리 대역폭 효율에 영향을 주는 팩터들이 증가할 수 있다. 메모리 동작들이 메모리 채널 파이프라인의 끝에 도달하면, 동작들은 QoS 레벨들 및 메모리 대역폭 효율의 결합에 의해 배열되었을 수 있다. 일부 실시예들에서는 높은 성능이 실현될 수 있다.
프로세서들(16)은 임의의 명령어 세트 아키텍처를 구현할 수 있으며, 그러한 명령어 세트 아키텍처에서 정의되는 명령어들을 실행하도록 구성될 수 있다. 프로세서들(16)은 스칼라, 수퍼스칼라, 파이프라인, 수퍼파이프라인, 비순차, 순차, 추론, 비추론 등 또는 이들의 결합들을 포함하는 임의의 마이크로 아키텍처를 이용할 수 있다. 프로세서들(16)은 회로를 포함할 수 있으며, 옵션으로서 마이크로코딩 기술들을 구현할 수 있다. 프로세서들(16)은 하나 이상의 레벨 1 캐시들을 포함할 수 있으며, 따라서 캐시(18)는 L2 캐시이다. 다른 실시예들은 프로세서들(16) 내에 다수의 레벨의 캐시들을 포함할 수 있으며, 캐시(18)는 계층 구조에서 아래의 다음 레벨일 수 있다. 캐시(18)는 임의의 크기 및 임의의 구성(세트 연상, 직접 맵핑 등)을 이용할 수 있다.
그래픽 제어기들(38A-38B)은 임의의 그래픽 처리 회로일 수 있다. 일반적으로, 그래픽 제어기들(38A-38B)은 표시될 객체들을 프레임 버퍼 내로 렌더링하도록 구성될 수 있다. 그래픽 제어기들(38A-38B)은 그래픽 동작의 일부 또는 전부, 및/또는 소정 그래픽 동작들의 하드웨어 가속화를 수행하기 위해 그래픽 소프트웨어를 실행할 수 있는 그래픽 프로세서들을 포함할 수 있다. 하드웨어 가속화 및 소프트웨어 구현의 양은 실시예마다 다를 수 있다.
NRT 주변 장치들(20)은 성능 및/또는 대역폭의 이유로 메모리(12A-12B)에 대한 독립적인 액세스가 제공되는 임의의 비실시간 주변 장치들을 포함할 수 있다. 즉, NRT 주변 장치들(20)에 의한 액세스는 CPU 블록(14)과 무관하며, CPU 블록 메모리 동작들과 동시에 진행될 수 있다. 주변 장치(32) 및/또는 주변 장치 인터페이스 제어기(34)에 의해 제어되는 주변 장치 인터페이스에 결합되는 주변 장치들과 같은 다른 주변 장치들도 비실시간 주변 장치들일 수 있지만, 메모리에 대한 독립적인 액세스를 필요로 하지 않을 수 있다. NRT 주변 장치들(20)의 다양한 실시예들은 비디오 인코더들 및 디코더들, 스케일러/로테이터 회로, 이미지 압축/해제 회로 등을 포함할 수 있다.
전술한 바와 같이, RT 주변 장치들(22)은 이미지 프로세서(24) 및 디스플레이 파이프들(26)을 포함할 수 있다. 디스플레이 파이프들(26)은 하나 이상의 프레임들을 인출하고 프레임들을 혼합하여 디스플레이 이미지를 생성하기 위한 회로를 포함할 수 있다. 디스플레이 파이프들(26)은 하나 이상의 비디오 파이프라인들을 더 포함할 수 있다. 디스플레이 파이프들(26)의 결과는 디스플레이 스크린 상에 표시될 픽셀들의 스트림일 수 있다. 픽셀 값들은 디스플레이 스크린 상의 표시를 위해 디스플레이 제어기로 전송될 수 있다. 이미지 프로세서(26)는 카메라 데이터를 수신하고, 데이터를 메모리에 저장될 이미지로 처리할 수 있다.
브리지/DMA 제어기(30)는 주변 장치(들)(32) 및 주변 장치 인터페이스 제어기(들)(34)를 메모리 공간에 브리지하기 위한 회로를 포함할 수 있다. 도시된 실시예에서, 브리지/DMA 제어기(30)는 주변 장치들/주변 장치 인터페이스 제어기들로부터의 메모리 동작들을 CPU 블록(14)을 통해 메모리 제어기(40)에 브리지할 수 있다. CPU 블록(14)은 또한 브리지된 메모리 동작들과 프로세서들(16)/L2 캐시(18)로부터의 메모리 동작들 사이에 일관성을 유지할 수 있다. L2 캐시(18)는 또한 브리지된 메모리 동작들과, CPU 인터페이스 상에서 CPU 포트(44C)로 전송될 프로세서들(16)로부터의 메모리 동작들을 중재할 수 있다. 브리지/DMA 제어기(30)는 또한 데이터의 블록들을 메모리로 그리고 메모리로부터 전송하기 위해 주변 장치들(32) 및 주변 장치 인터페이스 제어기들(34)을 대신하여 DMA 동작을 제공할 수 있다. 구체적으로, DMA 제어기는 주변 장치들(32) 및 주변 장치 인터페이스 제어기들(34)을 대신하여 메모리 제어기(40)를 통해 메모리(12A-12B)로의 그리고 그로부터의 전송들을 수행하도록 구성될 수 있다. DMA 제어기는 프로세서들(16)에 의해 DMA 동작들을 수행하도록 프로그래밍될 수 있다. 예를 들어, DMA 제어기는 서술자들을 통해 프로그래밍될 수 있다. 서술자들은 DMA 전송들(예를 들어, 소스 및 목적지 어드레스들, 크기 등)을 설명하는, 메모리(12A-12B)에 저장된 데이터 구조들일 수 있다. 대안으로서, DMA 제어기는 DMA 제어기(도시되지 않음) 내의 레지스터들을 통해 프로그래밍될 수 있다.
주변 장치들(32)은 집적 회로(10) 상에 포함되는 임의의 원하는 입출력 장치들 또는 다른 하드웨어 장치들을 포함할 수 있다. 예를 들어, 주변 장치들(32)은 이더넷 MAC 또는 무선 충실도(WiFi) 제어기와 같은 하나 이상의 네트워킹 매체 액세스 제어기들(MAC)과 같은 네트워킹 주변 장치들을 포함할 수 있다. 다양한 오디오 처리 장치들을 포함하는 오디오 유닛이 주변 장치들(32) 내에 포함될 수 있다. 하나 이상의 디지털 신호 프로세서들이 주변 장치들(32) 내에 포함될 수 있다. 주변 장치들(32)은 타이머들, 온-칩 비밀 메모리, 암호화 엔진 등 또는 이들의 임의 조합과 같은 임의의 다른 원하는 기능을 포함할 수 있다.
주변 장치 인터페이스 제어기들(34)은 임의의 타입의 주변 장치 인터페이스에 대한 임의의 제어기들을 포함할 수 있다. 예를 들어, 주변 장치 인터페이스 제어기들은 유니버설 직렬 버스(USB) 제어기, 주변 컴포넌트 상호접속 익스프레스(PCIe) 제어기, 플래시 메모리 인터페이스, 범용 입출력(I/O) 핀들 등과 같은 다양한 인터페이스 제어들을 포함할 수 있다.
메모리들(12A-12B)은 동적 랜덤 액세스 메모리(DRAM), 동기 DRAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 SDRAM들의 모바일 버전들 및/또는 LPDDR2 등과 같은 SDRAM들의 저전력 버전들을 포함함), RAMBUS DRAM(RDRAM), 정적 RAM(SRAM) 등과 같은 임의 타입의 메모리일 수 있다. 하나 이상의 메모리 장치들이 회로 보드 상에 결합되어, 단일 인라인 메모리 모듈들(SIMM들), 이중 인라인 메모리 모듈들(DIMM들) 등과 같은 메모리 모듈들을 형성할 수 있다. 대안으로서, 장치들은 칩-온-칩 구조, 패키지-온-패키지 구조 또는 멀티-칩 모듈 구조로 집적 회로(10)와 함께 설치될 수 있다.
메모리 PHY들(42A-42B)은 메모리(12A-12B)에 대한 저레벨 물리 인터페이스를 처리할 수 있다. 예를 들어, 메모리 PHY들(42A-42B)은 동기 DRAM 메모리 등에 대한 적절한 클럭킹을 위해 신호들의 타이밍을 담당할 수 있다. 일 실시예에서, 메모리 PHY들(42A-42B)은 집적 회로(10) 내에 제공된 클럭과 동기화하도록 구성될 수 있으며, 메모리(12)에 의해 사용되는 클럭을 생성하도록 구성될 수 있다.
다른 실시예들은 도 1에 도시된 컴포넌트들 및/또는 다른 컴포넌트들의 서브세트들 또는 수퍼세트들을 포함하는 컴포넌트들의 다른 조합들을 포함할 수 있다는 점에 유의한다. 주어진 컴포넌트의 일례가 도 1에 도시되지만, 다른 실시예들은 주어진 컴포넌트의 하나 이상의 예를 포함할 수 있다. 마찬가지로, 이 상세한 설명 전반에서는, 하나의 예만이 도시되는 경우에도, 주어진 컴포넌트의 하나 이상의 예들이 포함될 수 있으며, 그리고/또는 다수의 예가 도시되는 경우에도, 하나의 예만을 포함하는 실시예들이 이용될 수 있다.
메모리 제어기(40)의 다른 실시예들은 다수의 포트를 구현하지 않을 수 있지만, 여전히 QoS 파라미터들, NRT 및 RT와 같은 상이한 트래픽 타입들 또는 클래스들에 대한 상이한 QoS 파라미터들/레벨들 및 QoS 업그레이딩을 구현할 수 있다.
이어서, 도 2를 참조하면, 일 실시예에 대해 RT QoS 레벨들의 세트 및 NRT QoS 레벨들의 세트의 정의를 각각 나타내는 한 쌍의 도표들(50, 52)이 도시되어 있다. 다른 실시예들은 추가 또는 대체 레벨들을 포함할 수 있으며, 다른 실시예들은 도시된 레벨들의 서브세트와 함께 추가 레벨들을 포함할 수 있다. 도 2의 도표들(50, 52) 옆에 아래를 지시하는 화살표들로 지시되는 바와 같이, 도표들은 세트 내의 QoS 레벨들을 증가하는 우선 순위로 나타낸다. 즉, 실시간 녹색(RTG) QoS 레벨은 최저 우선 순위 RT QoS 레벨이고, 실시간 황색(RTY) QoS 레벨은 중간 우선 순위 RT QoS 레벨이며, 실시간 적색(RTR) QoS 레벨은 최고 우선 순위 RT QoS 레벨이다. 마찬가지로, 최선(BEF) QoS 레벨은 최저 우선 순위 NRT QoS 레벨이고, 낮은 지연(LLT) QoS 레벨은 최고 우선 순위 NRT QoS 레벨이다. 도 2의 서로 옆의 RT QoS 레벨들 및 NRT QoS 레벨들의 도시는 NRT QoS 레벨들에 대한 RT QoS 레벨들의 상대적인 우선 순위를 나타내는 것을 의도하지 않는다. 그 대신, 메모리 제어기(40)는 다양한 타입들 및 포트들에 걸쳐 메모리 제어기(40)에 의해 경험되고 있는 트래픽을 나타내는 다른 팩터들에 부분적으로 기초하여 그러한 상대적인 우선 순위들을 결정할 수 있다.
RTG, RTY 및 RTR QoS 레벨들은 RT 소스로부터의 긴급성의 상대적인 레벨들을 반영할 수 있다. 즉, 동작 에러를 방지하기 위해 RT 소스에 의해 데이터가 요구되기 전의 시간의 양이 감소함에 따라, 더 높은 긴급성을 나타내기 위해, 각각의 메모리 동작에 할당되는 QoS 레벨이 증가한다. 더 높은 긴급성을 갖는 동작들을 더 높은 우선 순위로 처리함으로써, 메모리 제어기(40)는 데이터를 RT 소스에 더 빠르게 반환할 수 있으며, 따라서 RT 소스의 올바른 동작을 도울 수 있다.
예를 들어, 디스플레이 파이프(26)는 디스플레이에 대한 수직 공백기에 표시될 다음 프레임을 위해 메모리(12A-12B)로부터 프레임 데이터의 판독을 개시할 수 있다. 프레임은 실제로는 수직 공백기가 끝날 때까지 표시되지 않으며, 따라서 디스플레이 파이프(26)는 이 기간 동안에 RTG 레벨을 이용할 수 있다. 프레임이 표시되기 시작할 때(즉, 디스플레이 제어기가 디스플레이 파이프(26) 출력으로부터 프레임 픽셀들을 판독하기 시작할 때), 디스플레이 파이프(26)는 메모리에 대한 프레임 데이터 판독 동작들의 QoS 레벨을 RTY 레벨로 올릴 수 있다. 예를 들어, 현재 픽셀이 표시되기 전에 판독되는 프레임 데이터의 양이 제1 임계치 아래로 감소하는 경우에, 레벨은 RTY로 상승될 수 있다. (제1 임계치보다 낮은) 제2 임계치에서, 디스플레이 파이프(26)는 메모리 동작들의 QoS 레벨을 RTR로 올릴 수 있다.
BEF NRT QoS 레벨은 데이터의 다른 흐름들의 요구가 충족되는 경우에 메모리 제어기(40)가 할 수 있는 한 빠르게 데이터를 반환하기 위한 요청일 수 있다. 한편, LLT NRT QoS 레벨은 낮은 지연의 데이터에 대한 요청일 수 있다. (적어도 일부 예들에서) LLT QoS 레벨을 갖는 NRT 메모리 동작들은 다른 메모리 트랜잭션들과의 우선 순위와 관련하여 BEF QoS 레벨을 갖는 것들보다 더 밀접하게 처리될 수 있다. 다른 예들에서, BEF 및 LLT QoS 레벨들은 메모리 제어기(40)에 의해 동일하게 처리될 수 있다.
이어서, 도 3을 참조하면, 메모리 제어기(40)의 일 실시예의 블록도가 도시되어 있다. 도 3의 실시예에서, 메모리 제어기(40)는 에이전트 인터페이스 유닛(AIU)(54) 및 하나 이상의 메모리 채널 유닛들(56A-56B)을 포함한다. 주어진 실시예에 포함된 각각의 메모리 채널에 대해 하나의 메모리 채널 유닛(56A-56B)이 존재할 수 있으며, 다른 실시예들은 하나의 채널 또는 셋 이상의 채널을 포함할 수 있다. 도 3에 도시된 바와 같이, AIU(54)는 다수의 포트 인터페이스 유닛(58A-58E)을 포함할 수 있다. 구체적으로, 메모리 제어기(40) 상의 각각의 포트(44A-44E)에 대한 포트 인터페이스 유닛(58A-58E)이 존재할 수 있다. AIU(54)는 메모리 채널 인터페이스 유닛들(MCIU들)(60A-60B)(각각의 메모리 채널 유닛(56A-56B)에 대해 하나씩)을 더 포함할 수 있다. AIU(54)는 포트들 사이에 어떻게 대역폭이 공유되어야 하는지를 지시하도록 프로그래밍될 수 있는 하나 이상의 대역폭 공유 레지스터들(62)을 더 포함할 수 있다. 포트 인터페이스 유닛들(58A-58E)은 메모리 동작들을 수신하고, 대응하는 포트 상에서 데이터 및 응답들을 송수신하도록 결합될 수 있으며, MCIU들(60A-60B)에도 결합될 수 있다. MCIU들(60A-60B)은 대역폭 공유 레지스터들(62) 및 대응하는 MCU(56A-56B)에 더 결합될 수 있다. 도 3에 도시된 바와 같이, MCU들(56A-56B) 각각은 사전 분류 큐(PSQ)(64) 및 메모리 인터페이스 회로(MIF)(66)를 포함할 수 있다. PSQ들(64)은 대응하는 MCIU들(60A-60B)에 그리고 동일 MCU(56A-56B) 내의 MIF(66)에 결합된다. 각각의 MCU(56A-56B) 내의 MIF(66)는 대응하는 메모리 PHY(42A-42B)에 결합된다.
AIU(54)는 포트들(44A-44E) 상에서 메모리 동작들을 수신하고, 어떠한 메모리 동작들을 MCU들(56A-56B) 중 하나로 전송할지를, 다른 메모리 동작들을 동일 MCU(56A-56B)로 전송하기 전에 결정함에 있어서의 하나의 팩터로서 메모리 동작들의 QoS 파라미터들을 이용하여, 메모리 동작들을 그러한 메모리 동작들에 의해 어드레스되는 채널들로 스위칭하도록 구성될 수 있다. 다른 팩터들은 포트들 사이에 메모리 채널들 상의 대역폭을 분할하기 위한 대역폭 공유 제어들을 포함할 수 있다.
구체적으로, 각각의 포트 인터페이스 유닛(58A-58E)은 대응 포트(44A-44E)로부터 메모리 동작들을 수신하도록 구성될 수 있으며, 주어진 메모리 동작이 지향될 메모리 채널을 결정하도록 구성될 수 있다. 포트 인터페이스 유닛(58A-58E)은 메모리 동작을 대응 MCIU(60A-60B)로 전송할 수 있으며, 도시된 실시예에서는 기입들과 별개로 판독들을 전송할 수 있다. 따라서, 예를 들어, 포트 인터페이스 유닛(58A)은 판독 동작들 및 기입 동작들을 위해 MCIU(60A)에 대한 Rd0 접속 및 Wr0 접속을 각각 가질 수 있다. 마찬가지로, 포트 인터페이스 유닛(58A)은 MCIU(60B)에 대한 Rd1 및 Wr1 접속을 가질 수 있다. 다른 포트 인터페이스 유닛들(58B-58E)은 MCIU(60A-60B)에 대한 유사한 접속들을 가질 수 있다. 포트 인터페이스 유닛들(58A-58B)로부터 MCIU들(60A-60B)로 판독 데이터를 전송하기 위한 데이터 인터페이스도 존재할 수 있으며, 이는 일반적으로 도 3에 MCIU(60A)에 대한 점선 "D" 인터페이스로서 도시되어 있다.
MCIU들(60A-60B)은 포트 인터페이스 유닛들(58A-58E)에 의해 제공된 메모리 동작들을 큐잉하고, 대응하는 MCU들(56A-56B)로 전송할 동작들을 선택하기 위해 메모리 동작들 사이를 중재하도록 구성될 수 있다. 주어진 메모리 채널에서 목표로 하는 동작들 사이의 중재는 다른 메모리 채널들에서 목표로 하는 동작들 사이의 중재와 무관할 수 있다.
MCIU들(60A-60B)은 채널 상의 메모리 대역폭이 주어진 채널 내의 메모리 동작들에 어떻게 할당되어야 하는지를 지시하도록 프로그래밍될 수 있는 대역폭 공유 레지스터들(62)에 결합될 수 있다. 예를 들어, 일 실시예에서, MCIU들(60A-60B)은 높은 우선 순위의 트래픽(예를 들어, RT 트래픽 내의 RTR 또는 RTY QoS 레벨들)이 존재하지 않을 때 포트들 사이에서 선택하기 위해 부족 가중 라운드 로빈 알고리즘(deficit-weighted round-robin algorithm)을 이용할 수 있다. RTR 또는 RTY 트래픽이 존재할 때에는, RTR/RTY 트래픽을 갖는 포트들 사이에서 선택하기 위해 라운드 로빈 메커니즘이 이용될 수 있다. 부족 가중 라운드 로빈 메커니즘에서의 가중치들은 하나의 포트에 다른 포트보다 비교적 더 많은 대역폭을 할당하도록 프로그래밍될 수 있다. 가중치들은 예를 들어 그래픽 및 NRT 포트들보다 프로세서 트래픽에 유리하도록 또는 다른 포트들보다 그래픽 포트들에 유리하도록 선택될 수 있다. 다양한 실시예들에서 가중치들의 임의 세트가 사용될 수 있다. 다른 실시예들은 다른 방식들로 대역폭 할당들을 측정할 수 있다. 예컨대, 총 대역폭의 백분율이 이용될 수 있다. 다른 실시예들에서는, 크레디트 시스템을 이용하여, 선택된 각각의 포트로부터의 동작들의 상대적인 수를 제어할 수 있다. 그러나, 일반적으로, 다양한 실시예들에서 동작들은 QoS 파라미터들 및 대역폭 공유 요구들 모두에 기초하여 선택될 수 있다.
MCU들(56A-56B)은 메모리 채널 상에서 전송될 그들의 큐들로부터의 메모리 동작들을 스케줄링하도록 구성된다. MCU들은 PSQ들(64) 내에 판독들 및 기입들을 별개로 큐잉하도록 구성될 수 있으며, 예를 들어 크레디트 기반 시스템을 이용하여 판독들과 기입들 사이를 중재하도록 구성될 수 있다. 크레디트 기반 시스템에서, 판독들 및 기입들은 소정 수의 크레디트들을 할당받는다. 기입 크레디트들 및 판독 크레디트들의 수는 동일할 필요가 없다. 각각의 스케줄링된 메모리 동작은 크레디트를 소비할 수 있다. 기입 크레디트들 및 판독 크레디트들 모두가 0 이하로 감소되고, 스케줄링될 대기 트랜잭션이 존재하는 경우, 양 크레디트는 대응하는 할당된 크레디트들의 수만큼 증가될 수 있다. 다른 실시예들은 다른 메커니즘을 이용하여 판독들과 기입들 사이에서 선택할 수 있다. 일 실시예에서, 크레디트 시스템은 (기입 큐의 충만의 측정들과 더불어) 판독들과 기입들 사이의 중재 메커니즘의 일부일 수 있다. 즉, 기입 큐가 더 채워짐에 따라, 중재 메커니즘에서의 기입들의 우선 순위가 증가할 수 있다. 추가적인 상세들이 아래에 설명된다.
일 실시예에서, 기입 동작들의 QoS 파라미터들은 PSQ들(64) 내로의 입력시에 제거될 수 있다. 판독 동작들은 QoS 파라미터들을 유지할 수 있으며, QoS 파라미터들은 PSQ들(64)로부터의 판독 스케줄링에 영향을 미칠 수 있다.
일 실시예에서, MCU들(56A-56B)은 메모리 동작들을 동작들의 버스트들 내에 스케줄링할 수 있다(버스트 내의 각각의 동작은 크레디트를 소비한다). 버스트가 크레디트 카운트를 0으로 줄이는 경우, 버스트는 완료되는 것이 허용될 수 있으며, 크레디트 카운트를 음수로 줄일 수 있다. 크레디트 카운트들이 나중에 증가될 때, 음의 크레디트들이 제거될 수 있으며, 따라서 증가 후의 크레디트들의 총 수는 할당된 크레디트 양보다 적을 수 있다.
스케줄링을 위한 메모리 동작들의 버스트들을 생성하기 위하여, MCU들(56A-56B)은 메모리 동작들을 유사(affinity) 그룹들로 그룹화할 수 있다. 하나의 메모리 동작과 다른 메모리 동작이 시간상 근접하게 수행될 때 메모리 인터페이스 상에서 효율적으로 수행될 수 있는 경우에, 하나의 메모리 동작은 다른 메모리 동작과 유사성을 갖는다고 말할 수 있다(또는 다른 메모리 동작과 유사하다고 말할 수 있다). 효율은 향상된 대역폭 이용에 관하여 측정될 수 있다. 예를 들어, SDRAM 메모리들은 활성화 명령을 이용하여 열릴 수 있는 페이지(페이지의 어드레스와 더불어)에 의해 특성화된다. 페이지의 크기는 실시예마다 다를 수 있으며, 일반적으로 활성화 명령이 전송된 경우에 액세스에 이용 가능할 수 있는 연속 비트들의 수를 지칭할 수 있다. 마찬가지로, 비동기 DRAM 메모리들은 행 어드레스 스트로브 제어 신호를 표명함으로써 그리고 행 어드레스를 제공함으로써 열릴 수 있는 페이지를 가질 수 있다. 동일 페이지 내의 데이터에 액세스하는 둘 이상의 메모리 동작은 유사할 수 있는데, 그 이유는 메모리 동작들을 위해 인터페이스 상에는 하나의 활성화/RAS만이 필요할 수 있기 때문이다. SDRAM 메모리들은 또한 독립적인 뱅크들 및 랭크들을 갖는다. 뱅크는 (페이지 히트들이 검출될 수 있는) 개방 행을 가질 수 있는 SDRAM 칩 내의 메모리 셀들의 집합일 수 있다. 랭크는 메모리 제어기로부터 칩 선택을 통해 선택될 수 있으며, 하나 이상의 SDRAM 칩들을 포함할 수 있다. 상이한 랭크들 또는 뱅크들에 대한 메모리 동작들도 유사한 동작들일 수 있는데, 그 이유는 이들이 충돌하지 않고, 따라서 페이지가 닫히고 새로운 페이지가 열리는 것을 요구하지 않기 때문이다. 메모리 동작들은 이들이 동일 방향으로 데이터를 전송하는 경우에만 유사한 동작들인 것으로 간주될 수 있다(즉, 판독 동작들은 다른 판독 동작들과만 유사할 수 있고, 마찬가지로 기입 동작들은 다른 기입 동작들과만 유사할 수 있다). 동일 페이지(또는 개방된 페이지)에 대한 메모리 동작들은 페이지 히트들로서 지칭될 수 있으며, 상이한 뱅크들/랭크들에 대한 메모리 동작들은 각각 뱅크 히트들 및 랭크 히트들로서 지칭될 수 있다.
MCU들(56A-56B)은 또한 (메모리 PHY들(42A-42B)을 통해) 메모리들(12A-12B)에 대한 메모리 인터페이스 상의 명령들을 스케줄링하여, 스케줄링된 메모리 동작들을 수행하도록 구성될 수 있다. 구체적으로, 일 실시예에서, MCU들(56A-56B)은 각각의 메모리 동작을 위한 명령들을 사전 합성하고, 명령들을 엔큐잉하도록 구성될 수 있다. MCU들(56A-56B)은 메모리 대역폭의 효율적인 이용을 제공하도록 명령들을 스케줄링하도록 구성될 수 있다. 각각의 MCU(56A-56B) 내의 MIF들(66)은 일 실시예에서 명령들의 사전 합성 및 명령들의 스케줄링을 구현할 수 있다.
이제, 도 4를 참조하면, 포트 인터페이스 유닛(58C)의 일 실시예의 블록도가 도시되어 있다. 상이한 인터페이스들에 결합되는 포트 인터페이스 회로들에 대한 구현에서 차이들이 있을 수 있지만, 다른 포트 인터페이스 회로들(58A-58B, 58D-58E)은 유사할 수 있다. 도시된 실시예에서, 포트 인터페이스 유닛(58C)은 도 4에 도시된 바와 같이 판독 및 기입 메모리 동작들을 각각 수신하기 위해 판독(AR) 및 기입(AW) 인터페이스들에 결합되는 버퍼들(70A-70B)을 포함한다. 버퍼들(70A-70B)은 Rd0/Rd1 인터페이스들 및 Wr0/Wr1 인터페이스들에 각각 결합되는 판독 스폰(spawn) 생성기(72) 및 기입 스폰 생성기(74)에 각각 결합된다. 판독 스폰 생성기(72)는 판독 미결(outstanding) 트랜잭션 표(ROTT)(76)에 결합되고, 기입 스폰 생성기(74)는 기입 미결 트랜잭션 표(WOTT)(78)에 결합된다. ROTT(76)는 인터페이스 상에서 판독 응답을 생성하도록 구성되는 판독 응답 생성기(80)에 결합된다. ROTT는 또한, MUX(86)를 통해 어느 하나의 MCU(56A-56B)로부터 데이터를 수신하고 인터페이스 상에서 판독 데이터를 제공하도록 결합되는 판독 버퍼(84)에 결합된다. WOTT(78)는 인터페이스 상에서 기입 응답을 생성하도록 구성되는 기입 응답 생성기(82)에 결합된다. WOTT(78)는 또한, 데이터를 MCU들(56A-56B)에 제공하도록 결합되고, 인터페이스로부터 기입 데이터를 수신하도록 결합되는 버퍼(70C)로부터 데이터를 수신하도록 결합되는 기입 데이터 전송 버퍼(88)에 결합된다.
판독 동작에 대해, 버퍼(70A)는 인터페이스로부터 동작을 수신하도록 구성될 수 있다. 버퍼(70A)는 판독 동작을 캡처하고, 판독 스폰 생성기(72)에 의한 처리를 위해 판독 동작을 유지하도록 제공될 수 있다. 일 실시예에서, 버퍼(70A)는 지연의 경우에 이용 가능하지 않은 자원을 이용 가능하게 하기 위해 제2 동작이 캡처될 수 있게 하는 2 엔트리 "스키드(skid)" 버퍼일 수 있으며, 따라서 인터페이스 상에서 역압력(back pressure) 요청들을 소스(들)로 전송할 때의 타이밍을 완화(easing)할 수 있다. 버퍼들(70B-70C)은 마찬가지로 2 엔트리 스키드 버퍼일 수 있다. 다른 실시예들은 필요에 따라 스키드 버퍼들 내에 추가적인 엔트리들을 포함할 수 있다.
판독 스폰 생성기(72)는 어느 메모리 채널이 판독 동작에 의해 어드레스되는지를 결정하기 위해 판독 동작의 어드레스를 디코딩하도록 구성될 수 있다. 판독 스폰 생성기(72)는 판독 동작을 Rd0 또는 Rd1 인터페이스를 통해 어드레스되는 메모리 채널로 전송하도록 구성될 수 있다. 일부 실시예들에서, 판독 동작은 메모리 채널들과 오버랩될 수 있다. 각각의 판독 동작은 크기(동작의 어드레스에서 시작하는 판독될 바이트들의 수)를 지정할 수 있다. 크기 및 어드레스의 조합이 바이트들이 둘 이상의 채널로부터 판독된다는 것을 지시하는 경우, 판독 스폰 생성기(72)는 어드레스 채널들에 대해 다수의 판독 동작을 생성하도록 구성될 수 있다. 다수의 판독 동작으로부터의 판독 데이터는 소스로 반환되도록 하기 위해 판독 버퍼(84) 내에 축적될 수 있다.
판독 스폰 생성기(72)는 또한 ROTT(76)를 갱신하여 ROTT(76) 내에 판독의 진행을 추적하기 위한 엔트리를 할당하도록 구성될 수 있다. 판독 버퍼(84) 내에 데이터가 수신된 경우, ROTT(76)는 판독 응답 생성기(80)에 시그널링하여, 데이터를 소스로 전송하기 위한 판독 응답을 생성하게 하도록 구성될 수 있다. 판독 데이터가 인터페이스 상에서 순서대로(예를 들어, 인터페이스 상에서 프로토콜에 따라) 반환되어야 하는 경우, 데이터는 이전 판독들이 반환될 때까지 판독 버퍼(84) 내에 버퍼링된 상태로 유지될 수 있으며, 이어서 ROTT(76)는 판독 응답 생성기(80)에 시그널링하여, 데이터를 전송할 수 있다. ROTT(76)는 (도 4에 도시되지 않은) 대기 판독 동작들의 상태를 갱신하기 위해 MCU들(56A-56B)로부터 다양한 상태 신호들을 수신하도록 결합될 수 있다.
버퍼(70B), 기입 스폰 생성기(74) 및 WOTT(78)는 기입 동작들을 위해 유사하게 동작할 수 있다. 그러나, 데이터는 인터페이스 상에서 전송되는 것이 아니라 수신된다. 기입 데이터는 기입 데이터 전송 버퍼(88) 내에 수신될 수 있으며, 대응하는 기입 동작의 현재 위치로 전송될 수 있다. WOTT(78)는 기입의 완료가 보증된 경우에 기입 응답을 위해 시그널링하여, 다른 방식으로 가능할 수 있는 것보다 빠른 기입 응답과 더불어 인터페이스 상에서 기입들을 마칠 수 있다.
도 4에 도시된 실시예는 판독 및 기입 메모리 동작들을 개별적으로(AR 및 AW를 각각) 운반하는 인터페이스를 포함하지만, 다른 실시예들은 판독 및 기입 동작들 모두를 위한 단일 전송 매체를 포함할 수 있다는 점에 유의한다. 그러한 실시예에서는, 단일 버퍼(70)가 동작들을 수신할 수 있으며, 판독 스폰 생성기(72) 및 기입 스폰 생성기(74)는 인터페이스로부터의 명령을 디코딩하여 판독 및 기입 동작들을 구별할 수 있다. 대안으로서, 판독 및 기입 동작들 모두를 생성하고, 이에 따라 ROTT(74) 또는 WOTT(78)를 갱신하는 하나의 스폰 생성기가 존재할 수 있다.
이제, 도 5를 참조하면, MCIU(60A)의 일 실시예를 나타내는 블록도가 도시되어 있다. MCIU(60B)는 각각의 포트로부터 Rd1 및 Wr1 입력들을 수신하도록 결합되고 MCU(56B)에 결합된다는 점 외에는 유사할 수 있다. 도시된 실시예에서, MCIU는 도 5에 도시된 판독 큐들(90A-90B)과 같은 판독 큐들의 세트 및 기입 큐들(92A-92B)과 같은 기입 큐들의 세트를 포함한다. 각각의 포트에 대해 하나의 판독 큐 및 하나의 기입 큐가 존재할 수 있다. 각각의 판독 큐는 포트 인터페이스 유닛들(58A-58E) 중 하나의 포트 인터페이스 유닛의 Rd0 출력에 결합되고, QoS 중재기(94A)에 결합된다. 각각의 기입 큐는 포트 인터페이스 유닛들(58A-58E) 각각의 Wr0 출력들 및 QoS 중재기(94B)에 결합된다. QoS 중재기들(94A-94B)의 출력들은 각각 판독 및 기입 입력들로서 MCU(56A)에 제공된다. QoS 중재기들(94A-94B)은 대역폭 공유 레지스터들(62)로부터 데이터를 수신하도록 결합된다.
2개의 판독 큐 엔트리가 판독 큐(90A) 내에 도시되며, 다른 판독 큐들은 유사할 수 있다. 판독 큐(90A)는 메모리 동작의 FID, 동작의 QoS 파라미터, 푸시 비트(P) 및 다른 필드(Oth)를 포함한다. FID 및 QoS 파라미터는 인터페이스 상에서 메모리 동작과 함께 메모리 제어기(40)로 전송된 동일 값들일 수 있다. 대안으로서, 편의를 위해 내부적으로 메모리 제어기(40)에 의해 하나 또는 두 값이 다시 코딩될 수 있다. 푸시 비트는, 제2 메모리 동작이 메모리 동작 뒤에 배열되고 메모리 동작보다 높은 QoS 레벨을 갖는 경우에, 메모리 동작에 대해 더 높은 우선 순위를 강제하는 데 사용될 수 있다. 예를 들어, 제2 메모리 동작은 메모리 동작과 동일한 포트 상에서 수신될 수 있으며, 그 포트 상의 인터페이스는 메모리 동작들이 전송된 것과 동일한 순서로 데이터가 반환될 것을 요구할 수 있다. 더 높은 우선 순위를 강제함으로써, 메모리 동작은 더 빠르게 수행될 수 있으며, 따라서 더 높은 QoS 레벨을 갖는 제2 메모리 동작의 더 빠른 서비싱을 가능케 할 수 있다. 다른 필드는 메모리 동작에 대한 다양한 다른 정보(예컨대, 어드레스, 크기 정보 등)를 포함할 수 있다. 유사하게, 2개의 기입 큐 엔트리가 기입 큐(92A) 내에 도시되며, 판독 큐(90A)와 유사한 필드들을 포함할 수 있다. 다른 필드는 필요한 경우에 판독들에 비해 기입들에 대해 상이한 정보를 저장할 수 있다.
QoS 중재기(94A-94B)는 각각 판독 큐들(90A-90B) 및 기입 큐들(92A-92B) 사이를 중재할 수 있다. QoS 중재기들은 (큐들 내의 QoS 파라미터들에 의해 지시되는 바와 같은) QoS 레벨들 및 대역폭 공유 레지스터들로부터의 대역폭 공유 파라미터들 모두를 고려할 수 있다. (존재할 경우) 선택된 판독 및 기입 동작은 MCU(56A)로 전송된다.
일부 실시예들에서는 포트 인터페이스 유닛으로부터 QoS 중재기들(94A 및/또는 94B)로의 하나 이상의 바이패스 경로들(도 5에 도시되지 않음)이 존재할 수 있다는 점에 유의한다. 예를 들어, CPU 포트 인터페이스 유닛(58C)으로부터의 판독들은 프로세서들로의 더 낮은 지연의 판독들을 허가하기 위해 QoS 중재기(94A)로 바이패스될 수 있다. 일부 실시예들에서, 큐들(90A-90B 및/또는 92A-92B) 내의 하나 이상의 메모리 동작들은 QoS 중재기들(94A-94B)로부터 차단될 수 있다. 예를 들어, 대응하는 데이터가 아직 메모리 제어기(40)에 도달하지 않은 기입 동작들은 QoS 중재기들(92A-92B)로부터 차단될 수 있으며, 따라서 대응하는 데이터가 메모리 제어기(40)에 도달한 다른 포트들로부터의 기입 동작들의 차단을 방지할 수 있다.
도 6은 QoS 중재기들(94A-94B) 각각의 일 실시예의 동작을 나타내는 흐름도이다. 블록들은 이해의 편의를 위해 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 QoS 중재기들(94A-94B) 내의 조합 논리에서 병렬로 수행될 수 있다. 블록들, 블록들의 조합들 및/또는 흐름도는 전체로서 다수의 클럭 사이클에 걸쳐 파이프라인화될 수 있다. QoS 중재기들(94A-94B)은 도 6에 도시된 동작을 구현하도록 구성될 수 있다.
QoS 중재기가 결합되는 큐들 중 하나 내의 적어도 하나의 메모리 동작이 RTY 또는 RTR의 RT QoS 레벨을 갖거나, 푸시 비트가 적어도 하나의 메모리 동작에 대해 설정되는 경우(판정 블록 100에서 "예" 분기), QoS 중재기는 RTY 또는 RTR QoS 레벨들 및/또는 설정된 푸시 비트들을 갖는 큐들 사이를 중재할 수 있다(블록 102). 이 실시예에서 각각의 큐는 포트에 대응하므로, QoS 중재기는 RTY 또는 RTR QoS 레벨들 및/또는 설정된 푸시 비트들을 갖는 포트들 사이를 효과적으로 중재할 수 있다. 따라서, 이 실시예에서 AIU(54)는 RTG, BEF 및 LLT QoS 레벨들을 동일하게 처리할 수 있다. 이 실시예에서 AIU(54)는 RTR 및 RTY QoS 레벨들 및 설정된 푸시 비트 동작들을 서로 동일하게 그리고 다른 레벨들보다 높은 우선 순위로 처리할 수 있다. 다른 실시예들은 추가적인 입도 레벨들을 가질 수 있다(예를 들어, RTR은 RTY, RTG보다 높은 우선 순위로 처리될 수 있고, LLT는 BEF보다 높은 우선 순위로 처리될 수 있으며, 기타 등등이다). 게다가, 다른 실시예들은 라운드 로빈과 다른 스킴을 구현할 수 있다.
한편, RTY 또는 RTR QoS 레벨들을 갖는 메모리 동작들 및 설정된 푸시 비트들을 갖는 메모리 동작들이 존재하지 않는 경우(판정 블록 100에서 "아니오" 분기), QoS 중재기는 모든 큐들(모든 포트들) 사이를 중재할 수 있다(블록 104). 예를 들어, QoS 중재기는 포트들 사이에서 부족 가중 라운드 로빈 스킴을 구현할 수 있으며, 가중치들은 대역폭 공유 파라미터들에 기초할 수 있다(또는 대역폭 공유 파라미터들이 가중치들일 수 있다). 다른 실시예들은 모든 포트들 사이에서 다른 중재 스킴들을 구현할 수 있다.
이제, 도 7을 참조하면, PSQ(64)의 일 실시예의 블록도가 도시되어 있다. 도시된 실시예에서, PSQ(64)는 엔큐 제어 유닛(110), 트랜잭션 큐들(112)의 세트, 스케줄러(114) 및 바이패스 MUX(116)를 포함한다. 엔큐 제어 유닛(110)은 대응하는 MCIU(60A, 60B)로부터 판독 및 기입 동작들을 수신하도록 결합되며, 트랜잭션 큐들(112)에 결합된다. 트랜잭션 큐들(112)은 스케줄러(114)에 더 결합되고, 스케줄러의 출력은 바이패스 MUX(116)에 결합된다. 바이패스 MUX(116)는 또한 판독 동작을 수신하도록 결합되며, 스케줄러(114)에 의해 스케줄링된 메모리 동작과 판독 동작 사이에서 선택하도록 구성된다. 예를 들어, 판독 동작은, 트랜잭션 큐들(112) 내에 판독들이 존재하지 않고, 기입들의 수가 임계 레벨 아래인 경우에, 트랜잭션 큐들(112)을 바이패스할 수 있다. 다른 실시예들은 바이패싱을 구현하지 않을 수 있으며, 바이패스 MUX(116)가 제거될 수 있다.
도 7에 도시된 바와 같이, 트랜잭션 큐들(112)은 큐들(118A-118B)과 같은 판독 유사 큐들의 세트 및 큐들(120A-120B)과 같은 기입 유사 큐들의 세트를 포함할 수 있다. 판독 유사 큐들 및 기입 유사 큐들의 수는 실시예마다 다를 수 있으며, 판독 유사 큐들의 수는 기입 유사 큐들의 수와 동일할 필요가 없다. 각각의 유사 큐는 서로 유사성을 보이는 것으로 엔큐 제어 유닛(110)에 의해 결정된 하나 이상의 메모리 동작들을 저장할 수 있다. 따라서, 메모리 동작이 엔큐 제어 유닛(110)으로부터 수신될 때, 엔큐 제어 유닛(110)은 메모리 동작을 (판독 동작을 위해) 유사 큐들(118A-118B)과 또는 (기입 동작을 위해) 유사 큐들(120A-120B)과 비교하도록 구성될 수 있다. 메모리 동작이 유사한 경우, 메모리 동작은 대응하는 유사 큐 내에 엔큐잉될 수 있다. 그렇지 않은 경우, 메모리 동작은 다른 유사 큐 내에 엔큐잉될 수 있다. 일 실시예에서, 유사하지 않은 판독들을 위해 판독 유사 큐가 예약될 수 있으며, 마찬가지로 유사하지 않은 기입들을 위해 기입 유사 큐가 예약될 수 있다.
스케줄러(114)는 MIF(66)로 전송될 메모리 동작들을 스케줄링하도록 구성될 수 있다. 판독 동작들에 대해, 스케줄러(114)는 판독 유사 큐들(118A-118B) 내의 QoS 레벨들 및 각각의 판독 유사 큐(118A-118B) 내의 유사한 메모리 동작들의 수 모두를 고려하도록 구성될 수 있다. 일 실시예의 더 많은 상세가 아래에 설명된다. 그러나, 일반적으로 스케줄러(114)는 높은 QoS 레벨들 및 더 많은 수의 유사한 메모리 동작들을 갖는 판독 동작들에 유리하도록 구성될 수 있다. 기입 동작들에 대해, PSQ(64) 내에서 QoS 레벨들이 제거될 수 있다. 즉, 기입 동작들이 트랜잭션 큐들(112)에 기입될 때 기입 동작들의 QoS 레벨들이 제거될 수 있다. 큐들(118A, 120A) 각각 내의 예시적인 엔트리들 내에 도시된 바와 같이, 판독 동작들은 QoS를 보유할 수 있는 반면, 기입 동작들은 그렇지 못할 수 있다. 스케줄러(114)는 예를 들어 기입 큐들의 충만도 및 판독 큐들 내의 QoS 레벨들에 기초하여 판독 동작들 및 기입 동작들 사이를 스케줄링하도록 구성될 수 있다. 추가적인 상세들이 아래에 더 제공된다.
일부 실시예들에서는 판독 유사 큐들(118A-118B) 및 기입 유사 큐들(120A-120B)이 (예를 들어, 개별 데이터 구조들로서 또는 PSQ(64) 내의 논리 회로를 통해 분할되고 그리고/또는 프로그래밍 가능하게 분리되는 하나 이상의 데이터 구조들로서) 물리적으로 인스턴스화될 수 있다는 점에 유의한다. 다른 실시예들에서, 유사 큐들은 가상적일 수 있다. 즉, 예를 들어, 판독 큐 및 기입 큐가 존재할 수 있으며, 태깅(tagging)을 이용하여 유사한 동작들을 식별할 수 있다.
도 8은 메모리 동작의 수신에 응답하는 엔큐 제어 유닛(110)의 일 실시예의 동작을 나타내는 흐름도이다. 이해의 편의를 위해 블록들이 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 엔큐 제어 유닛(110) 내의 조합 논리에서 병렬로 수행될 수 있다. 블록들, 블록들의 조합들 및/또는 흐름도는 전체로서 다수의 클럭 사이클에 걸쳐 파이프라인화될 수 있다. 엔큐 제어 유닛(110)은 도 8에 도시된 동작을 구현하도록 구성될 수 있다. 엔큐 제어 유닛(110)은 도 8에 도시된 동작을, 동시에 수신된 판독 동작 및 기입 동작에 대해 병렬로 구현하도록 구성될 수 있다.
엔큐 제어 유닛(110)은 수신된 동작을 대응하는 유사 큐들(118A-118B 또는 120A-120B)과 비교하여, 수신된 동작이 큐잉된 동작들과 유사성을 갖는지를 결정할 수 있다(판정 블록 130). 유사성의 검출에 응답하여(그리고 유사 큐 내에 동작을 위한 공간이 존재하는 경우에), 엔큐 제어 유닛(110)은 유사 큐 내에 동작을 엔큐잉할 수 있다(블록 132). 유사성의 미검출에 응답하여, 엔큐 제어 유닛(110)은 비어 있는 유사 큐 내에 동작을 엔큐잉할 수 있다(블록 134).
일 실시예에 대해 유사성의 검출이 도 8의 분해도에 도시되어 있다. 동작이 유사 큐 내의 다른 동작들과의 페이지 히트(판정 블록 136에서 "예" 분기) 또는 다른 동작들과의 뱅크 또는 랭크 미스(miss)(판정 블록 138 및 140에서 "예" 분기)인 경우에, 그 동작은 유사할 수 있다. 그렇지 않은 경우(판정 블록 136, 138 및 140에서 "아니오" 분기), 동작은 큐잉된 동작들과 유사하지 않다. 판정 블록 136, 138 및 140에 의해 지시되는 검출은 각각의 유사 큐에 대해 병렬로 수행될 수 있다.
도 9는 트랜잭션 큐들(112) 내의 판독 동작들과 기입 동작들 사이의 스케줄링을 위한 스케줄러(114)의 일 실시예의 동작을 나타내는 흐름도이다. 이해의 편의를 위해 블록들이 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 스케줄러(114) 내의 조합 논리에서 병렬로 수행될 수 있다. 블록들, 블록들의 조합들 및/또는 흐름도는 전체로서 다수의 클럭 사이클에 걸쳐 파이프라인화될 수 있다. 스케줄러(114)는 도 9에 도시된 동작을 구현하도록 구성될 수 있다.
도 9의 실시예에서는, 기입 큐 충만(즉, 트랜잭션 큐들(112) 내의 기입 동작들의 수)에 대한 3개의 임계치, 즉 높음, 중간 및 낮음이 존재한다. 높은 레벨은 중간 레벨이 지시하는 것보다 많은 트랜잭션 큐들(112) 내의 기입 동작들을 지시하며, 중간 레벨은 낮은 레벨이 지시하는 것보다 많은 트랜잭션 큐들(112) 내의 기입 동작들을 지시한다. 다양한 실시예들에서, 임계치들은 고정되거나 프로그래밍될 수 있다.
스케줄러(114)는 차단 기입(blocking write)을 검출하도록 구성될 수 있으며(판정 블록 150에서 "예" 분기), 차단 기입을 스케줄링하도록 구성될 수 있다(블록 152). 차단 기입은 (더 높은 QoS 레벨을 갖는 메모리 동작이 기입 동작 뒤에 배열된 것을 지시하는) 푸시 비트가 설정된 기입 동작일 수 있다. 차단 기입 동작은 동일 어드레스에 대한 판독 동작을 차단하는 기입 동작일 수도 있다(또는 기입 동작은 판독 동작에 의해 판독된 적어도 하나의 바이트를 갱신한다).
차단 기입이 존재하지 않는 경우, 판독 동작 대 기입 동작들의 스케줄링은 크레디트 시스템에 기초할 수 있다. 즉, 판독 동작들 및 기입 동작들은 각각 소정 수의 크레디트들을 할당받을 수 있다. 스케줄링된 메모리 동작은 대응하는 크레디트 카운트로부터 하나의 크레디트를 소비할 수 있다. 도시된 실시예에서, 판독 크레디트들이 고갈되고, 판독 동작이 스케줄링되는 경우, 현재의 카운트들에 초기 크레디트 값들을 더함으로써 판독들 및 기입들 모두에 대한 크레디트들이 다시 로딩될 수 있다. 판독 또는 기입 동작이 스케줄링될 때 버스트 내에 유사한 동작들이 스케줄링될 수 있으므로, 크레디트 카운트들은 0 이하로 감소될 수 있다. 즉, 스케줄러(114)는 동작들에 대한 크레디트 카운트가 0으로 감소하는 경우에 유사한 동작들의 버스트를 인터럽트하지 않을 수 있다. 간략화를 위해, 도 9와 관련된 아래의 설명은 판독 큐 내의 판독 동작들 및 기입 큐 내의 기입 동작들을 참조할 수 있다. 판독 큐는 판독 유사 큐들(118A-118B)의 조합을 포함할 수 있고, 기입 큐는 기입 유사 큐들(120A-120B)의 조합을 포함할 수 있다.
기입 큐가 높은 임계치에 도달하였고, 적어도 하나의 기입 크레디트가 이용 가능한 것을 검출한 것에 응답하여(판정 블록 154에서 "예" 분기), 스케줄러(114)는 기입 큐로부터 스케줄링하도록 구성될 수 있다(블록 156). 기입 큐가 높은 임계치에 도달하지 않았거나, 이용 가능한 기입 크레디트가 존재하지 않지만(판정 블록 154에서 "아니오" 분기), 스케줄러(114)가 판독 큐 내에 적어도 하나의 판독 동작이 존재하고, 이용 가능한 판독 크레디트가 존재하는 것으로 결정하는 경우(판정 블록 158에서 "예" 분기), 스케줄러(114)는 판독 큐로부터 스케줄링하도록 구성될 수 있다(블록 160). 판독 큐 내에 판독 동작이 존재하지 않거나, 이용 가능한 판독 크레디트가 존재하지 않지만(판정 블록 158에서 "아니오" 분기), 스케줄러(114)가 기입 큐가 중간 임계치에 도달하였고, 이용 가능한 기입 크레디트가 존재하는 것으로 결정하는 경우(판정 블록 162에서 "예" 분기), 스케줄러는 기입 큐로부터 스케줄링하도록 구성될 수 있다(블록 156). 기입 큐가 중간 임계치에 도달하지 않았거나, 이용 가능한 기입 크레디트가 존재하지 않지만(판정 블록 162에서 "아니오" 분기), 스케줄러(114)가 판독 큐 내에 적어도 하나의 판독 동작이 존재하고, 이용 가능한 판독 크레디트가 존재하지 않는 것으로 결정하는 경우(판정 블록 164에서 "예" 분기), 스케줄러(114)는 판독 큐로부터 스케줄링하도록 구성될 수 있다(블록 160). 전술한 바와 같이, 스케줄러(114)는 이러한 경우에도 판독 및 기입 크레디트들을 다시 로딩하도록 구성될 수 있다. 판독 큐 내에 판독 동작이 존재하지 않고(판정 블록 164에서 "아니오" 분기), 스케줄러(114)가 기입 큐가 낮은 임계치에 도달한 것으로 결정하는 경우(판정 블록 166에서 "예" 분기), 스케줄러(114)는 기입 큐로부터 스케줄링하도록 구성될 수 있다(블록 156).
도 9의 흐름도는 기입 큐가 낮은 임계치에 도달할 때까지 기입 큐로부터 스케줄링하지 않는 것을 도시하지만, 일부 실시예들은 스케줄러(114)가 소정 기간 동안 아이들(idle) 상태에 있는 경우에 기입 큐로부터 스케줄링할 수 있다. 그 기간은 고정되거나 프로그래밍될 수 있다.
도 10은 기입 큐로부터의 스케줄링을 구현하기 위한 스케줄러(114)의 일 실시예의 동작을 나타내는 블록도(블록 156)이다. 도 10에 도시된 바와 같이, 스케줄러(114)는 최대 수의 기입 동작들을 갖는 기입 유사 큐(120A-120B)를 스케줄링하도록 구성될 수 있다(블록 168).
도 11은 판독 큐로부터 판독 동작들을 스케줄링하기 위해 스케줄러(114)가 가질 수 있는 다양한 상태들을 나타내는 도표(블록 160)이다. 상태들은 우선 순위가 증가하는 순서로 도시된다. 따라서, 도 11의 도표 내의 둘 이상의 엔트리가 판독 큐의 내용들에 대응하는 경우에는, 최고 우선 순위를 갖는 엔트리가 스케줄러(114)의 상태일 수 있다. 스케줄러(114)는 대응하는 상태에 대해 도 11의 "스케줄" 열에 나타난 바와 같이 동작들을 스케줄링하도록 구성될 수 있다.
도 11의 도표는 녹색 또는 황색 임계치 위 또는 아래인 판독 큐 내의 판독들의 수를 참조할 수 있다. 녹색 및 황색 임계치들은 RTG 및 RTY QoS 레벨들과 다를 수 있으며, 전술한 기입 큐 임계치들과 유사할 수 있다. 녹색 및 황색 임계치들은 고정되거나 프로그래밍될 수 있다. 게다가, 유사 그룹이 스케줄링되는 것으로 참조될 수 있다. 유사 그룹은 판독 유사 큐들(118A-118B) 중 하나 내의 동작들의 그룹일 수 있다.
판독 큐 내의 판독들의 수가 황색 임계치 아래인 경우에(그리고 녹색 상태가 됨으로 인해 황색 임계치를 초과하는 경우에) 그리고 큐 내에 RTY 또는 RTR 판독들이 존재하지 않는 경우에, 스케줄러 판독 상태는 녹색일 수 있다. 녹색 상태에서, 스케줄러(114)는 존재할 경우에 LLT 판독 동작을 스케줄링하도록 구성될 수 있다. LLT 판독 동작을 갖는 판독 유사 큐 내의 동작들도 존재할 경우에는 스케줄링될 수 있다. LLT 판독 동작들이 존재하지 않는 경우, 가장 오래된 판독 동작을 갖는 유사 그룹이 스케줄링될 수 있다.
판독들의 수가 녹색 임계치를 초과하는 경우에(또는 LLT 황색 상태가 되었으므로 녹색 임계치 아래로 떨어진 경우에) 그리고 판독 큐 내에 RTR 또는 RTY 판독 동작들이 존재하지 않는 경우에, 스케줄러 판독 상태는 LLT 황색일 수 있다. LLT 황색 상태에서, 스케줄러(114)는 존재할 경우에 LLT 판독 동작을 스케줄링하도록 구성될 수 있다. LLT 판독 동작이 존재하지 않는 경우, 스케줄러(114)는 판독 큐 내의 최대 유사 그룹을 스케줄링하도록 구성될 수 있다. 일 실시예에서, 스케줄러(114)는 녹색 상태와 유사한 LLT 황색 상태의 LLT 판독 동작들이 존재하지 않는 경우에 가장 오래된 판독 동작을 포함하는 유사 그룹을 스케줄링하도록 프로그래밍될 수 있다.
적어도 하나의 RTY 판독 동작이 존재하지만 RTR 동작이 존재하지 않는 경우에, 스케줄러 판독 상태는 황색일 수 있다. 황색 상태에서, 스케줄러(114)는 가장 오래된 RTY 판독 동작을 포함하는 유사 그룹 또는 최대 유사 그룹을 스케줄링하도록 구성될 수 있다.
큐 내에 적어도 하나의 RTR 판독 동작이 존재하는 경우에 스케줄러 판독 상태는 적색 유사성일 수 있으며, 스케줄러(114)는 유사 동작들을 RTR 동작들과 연관시키도록 프로그래밍된다. 적색 유사성 상태에서, 스케줄러(114)는 가장 오래된 RTR 동작을 포함하는 유사 그룹을 스케줄링하도록 구성될 수 있다. 그렇지 않은 경우, 최대 유사 그룹이 스케줄링될 수 있다.
큐 내에 적어도 하나의 RTR 판독 동작이 존재하는 경우에 스케줄러 판독 상태는 적색일 수 있으며, 스케줄러(114)는 RTR 판독 동작들을 그들의 유사 동작들 없이 스케줄링하도록 프로그래밍된다. 적색 상태에서, 스케줄러(114)는 가장 오래된 RTR 판독 동작 또는 최대 유사 그룹을 스케줄링하도록 구성될 수 있다.
위의 설명은 판독 큐 내의 판독들을 "가장 오래된" 것으로서 참조하였다. 일부 실시예들에서, 판독 동작들은 판독 큐 내에서 지낸 시간에 기초하여 가장 오래된 것으로서 간주될 수 있다. 다른 실시예들에서는 다른 방식들로 에이지가 측정될 수 있다. 예를 들어, 가장 오래된 판독 동작은 판독 동작이 다른 판독 동작을 위해 스케줄링되지 않은 횟수에 관하여 측정될 수 있다.
유사 그룹이 스케줄링될 때, 유사 그룹으로부터 스케줄링된 메모리 동작들의 수는 고정된 또는 프로그래밍 가능한 버스트 크기까지의 그룹 내의 동작들의 수일 수 있다. 일 실시예에서, 현재 스케줄링된 유사 그룹이 버스트 크기보다 적은 동작들을 갖는 경우, 다른 메모리 동작들이 스케줄링될 수 있다. 스케줄러(114)는 예를 들어 현재 스케줄링된 유사 그룹과 유사할 수 있는 "낙오자들(stragglers)"(예를 들어, 이전에 스케줄링되었지만, 버스트 크기로 인해 종료된 유사 그룹의 일부였던 메모리 동작들)을 스케줄링할 수 있다. 대안으로서, 스케줄러(114)는 다음 최대 유사 그룹을 선택하도록 구성될 수 있다.
이제, 도 12를 참조하면, MIF(66)의 일 실시예의 블록도가 도시되어 있다. 도 12의 실시예에서, MIF(66)는 MIF 엔큐 제어 유닛(170), MIF 트랜잭션 큐들(172), 개방 페이지 표(174), 프리챠지 스케줄러(176), 모드 레지스터(reg) 스케줄러(178), 리프레시 스케줄러(180), 활성화 스케줄러(182), 열 어드레스 스트로브(CAS) 스케줄러(184) 및 최종 스케줄러(186)를 포함한다. MIF 엔큐 제어 유닛(170)은 PSQ(64)로부터 메모리 동작을 수신하도록 결합되고, 개방 페이지 표(174) 및 MIF 트랜잭션 큐들(172)에 결합된다. 개방 페이지 표(174)는 프리챠지 스케줄러(176)에 결합된다. MIF 트랜잭션 큐들(172)은 활성화 스케줄러(182) 및 CAS 스케줄러(184)에 각각 결합되는 활성화 큐(188) 및 CAS 큐(190)를 포함한다. 스케줄러들(176, 178, 180, 182, 184)은 MIF(66)가 MCU(56A 또는 56B) 내에 인스턴스화되는지에 따라 명령을 메모리 PHY들 중 하나(42A 또는 42B)로 전송하도록 결합되는 최종 스케줄러(186)에 결합된다.
MIF 엔큐 제어 유닛(170)은 수신된 메모리 동작을 개방 페이지 표(174) 및 MIF 트랜잭션 큐들(172)과 비교하도록 구성될 수 있으며, 메모리 동작들을 수행하기 위한 명령들을 사전 합성하도록 구성될 수 있다. 구체적으로, 수신된 메모리 동작에 대응하는 페이지가 큐잉된 활성화 명령에 의해 개방될 경우, 수신된 메모리 동작은 CAS 동작으로서 큐잉될 수 있다. 수신된 메모리 동작에 대응하는 페이지가 이미 개방되었고, 큐잉된 페이지 충돌 활성화가 존재하지 않는 경우, 수신된 메모리 동작은 CAS 동작으로서 큐잉될 수 있다. 수신된 메모리 동작에 대응하는 페이지가 개방되지 않은 경우, 메모리 동작은 활성화 명령 및 CAS 명령으로서 큐잉될 수 있다. 각각의 명령은 에이징 카운터(활성화 큐(188) 및 CAS 큐(190) 내의 에이지 필드)를 할당받을 수 있다. 에이징 카운터의 값은 판독 메모리 동작의 QoS 파라미터에 기초할 수 있으며, 더 낮은 QoS 레벨들에 대해서보다 더 높은 QoS 레벨들에 대해 더 짧을 수 있다. 판독 메모리 동작들에 대해, 에이징 카운터는 판독 메모리 동작들에 대한 최저 QoS 레벨과 동일하거나, 최저 QoS 레벨보다 높을 수 있다. 다양한 실시예들에서, 에이지는 동작을 바이패스한 동작들의 수로서 또는 클럭 사이클들의 수로서 카운트될 수 있다. 에이징 카운터가 0으로 감소하면, 대응하는 동작은 MIF(66) 내에 최고 우선 순위로서 스케줄링될 수 있다.
활성화 스케줄러(182) 및 CAS 스케줄러(184)는 대응한 큐들(188, 190)로부터의 활성화 명령들 및 CAS 명령들을 스케줄링하도록 구성될 수 있다. 활성화 명령은 메모리 내의 페이지를 개방할 수 있으며, CAS 명령은 페이지 내의 데이터의 판독 또는 기입을 유발할 수 있다.
프리챠지 스케줄러(176)는 개방 페이지 표(174) 내의 페이지에 대한 아이들 타이머가 종료된 때 뱅크에 대한 프리챠지 명령을 스케줄링하도록 구성될 수 있다. 아이들 타이머는 수신된 메모리 동작이 개방 페이지 내에 히트할 때마다 다시 로딩될 수 있으며, 클럭 사이클마다 또는 개방 페이지 내에 히트하지 않은 메모리 동작마다 감소될 수 있다. 새로 수신된 메모리 동작과의 페이지 충돌이 페이지를 닫게 하는 경우, 이전 페이지에 대한 최종 CAS 명령이 뱅크를 프리챠지하는 데 사용될 수 있다.
모드 레지스터 스케줄러(178)는 구성 가능한 타이머들에 따라 그리고/또는 메모리 타이머 요청들에 응답하여 메모리 레지스터 판독(MRR) 및 메모리 레지스터 기입(MRW) 명령들을 생성하도록 구성될 수 있다. 리프레시 스케줄러(180)는 리프레시가 필요할 때 리프레시 명령들을 생성할 수 있다.
최종 스케줄러(186)는 메모리 PHY 회로에 대한 명령을 스케줄링하기 위해 스케줄러들(176, 178, 180, 182, 184) 중에서 선택할 수 있다. 스케줄러(186)는 또한 판독 및 기입 동작들 사이의 전환 사이클 등과 같은 소정의 프로토콜들을 시행할 수 있다.
활성화 및 CAS 큐들(188, 190)은 가상적일 수 있다는 점에 유의한다. 즉, MIF 트랜잭션 큐들(172) 내의 동일 엔트리가 주어진 메모리 동작에 대한 활성화 및 CAS 명령 양자로서 사용될 수 있다. 주어진 메모리 동작에 대해 활성화가 필요한 경우, 엔트리는 활성화 명령으로서 초기화될 수 있으며, 활성화가 발행되는 경우에 CAS 명령으로 변환될 수 있다. 주어진 메모리 동작에 대해 활성화가 필요하지 않은 경우, 엔트리는 CAS 명령으로서 초기화될 수 있다.
도 7 및 12에 도시된 회로에 더하여, MCU들(56A-56B) 내에는, AIU(54)로부터 메모리로 기입 데이터를 전송하고, 메모리로부터 AIU(54)로 판독 데이터를 전송하기 위한 데이터 경로(도시되지 않음)가 존재할 수 있다는 점에 더 유의한다.
도 13은 PSQ(64)로부터의 메모리 동작에 응답하는 MIF 엔큐 제어 유닛(170)의 일 실시예의 동작을 나타내는 흐름도이다. 이해의 편의를 위해 블록들이 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 MIF 엔큐 제어 유닛(170) 내의 조합 논리에서 병렬로 수행될 수 있다. 블록들, 블록들의 조합들 및/또는 흐름도는 전체로서 다수의 클럭 사이클에 걸쳐 파이프라인화될 수 있다. MIF 엔큐 제어 유닛(170)은 도 13에 도시된 동작을 구현하도록 구성될 수 있다.
MIF 엔큐 제어 유닛(170)은 수신된 메모리 동작에 대해 활성화 명령이 필요한지를 결정하도록 구성될 수 있다(예를 들어, 메모리 동작은 개방된 페이지 또는 이전에 큐잉된 활성화 명령에 의해 개방될 페이지에 히트하지 않는다)(판정 블록 196). 그러한 경우(판정 블록(196)에서 "예" 분기), MIF 엔큐 제어 유닛(170)은 활성화 명령을 합성하고, 활성화 명령을 활성화 큐(188) 내에 엔큐잉하도록 구성될 수 있다(블록 192). MIF 엔큐 제어 유닛(170)은 CAS 명령을 합성하고, CAS 명령을 CAS 큐(190) 내에 엔큐잉하도록 구성될 수도 있다(블록 194). 각각의 경우에, 에이징 카운터는 (판독들에 대한 QoS 파라미터에 기초하여) 초기화될 수 있다.
도 14는 활성화 스케줄러(182)의 일 실시예의 동작을 나타내는 흐름도이다. 활성화 스케줄러(182)는 에이징된(예를 들어, 그의 에이징 카운터가 0인) 활성화 명령을 찾기 위해 활성화 큐(188) 내의 활성화 명령들을 스캐닝하도록 구성될 수 있다. 그러한 활성화 명령이 검출되는 경우, 활성화 스케줄러는 에이징된 활성화 명령을 선택할 수 있다(블록 200). 그렇지 않은 경우, 활성화 스케줄러(182)는 가장 많이 대기한 동작들을 갖는 뱅크 내에 있는 헤드 클러스터 내의 활성화 명령을 선택할 수 있다. 헤드 클러스터는 활성화 큐(188) 내의 가장 오래된 명령들인 동일한 판독/기입 타입의 활성화들의 그룹일 수 있다. 둘 이상의 활성화 명령이 적격인 경우, 가장 오래된 적격 활성화 명령이 선택될 수 있다.
도 15는 CAS 스케줄러(184)의 일 실시예의 동작을 나타내는 흐름도이다. 이해의 편의를 위해 블록들이 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 CAS 스케줄러(184) 내의 조합 논리에서 병렬로 수행될 수 있다. 블록들, 블록들의 조합들 및/또는 흐름도는 전체로서 다수의 클럭 사이클에 걸쳐 파이프라인화될 수 있다. CAS 스케줄러(184)는 도 15에 도시된 동작을 구현하도록 구성될 수 있다.
활성화 스케줄러(182)와 같이, CAS 스케줄러(184)는 에이징된 CAS 명령들을 검출하고, 먼저 전송을 위해 이들을 선택할 수 있다(판정 블록 202에서 "예" 분기 및 블록 204). 에이징된 CAS 명령이 존재하지 않고(판정 블록 202에서 "아니오" 분기), 가장 최근의 CAS 명령이 판독인 경우(판정 블록 206에서 "예" 분기), CAS 스케줄러(184)는 동일 랭크에 대해 다음 판독 CAS 명령을 최종 CAS 명령으로서 선택하거나, 페이지를 닫을 수 있도록 CAS 명령이 완료되기를 기다리는 가장 많이 충돌하는 동작들에 대해 판독 CAS 명령을 선택하도록 구성될 수 있다(블록 208). 마찬가지로, 최종 CAS 명령이 기입인 경우(판정 블록 206에서 "아니오" 분기 및 판정 블록 210에서 "예" 분기), CAS 스케줄러(184)는 동일 랭크에 대해 다음 기입 CAS 명령을 최종 CAS 명령으로서 선택하거나, 페이지를 닫을 수 있도록 CAS 명령이 완료되기를 기다리는 가장 많이 충돌하는 동작들에 대해 기입 CAS 명령을 선택하도록 구성될 수 있다(블록 212). 위의 것 중 어느 것도 적용되지 않는 경우, CAS 스케줄러(184)는 CAS 큐(190) 내의 가장 오래된 CAS 명령을 선택하도록 구성될 수 있다(블록 214). 블록 204, 208, 212 및 214에서, 둘 이상의 CAS 명령이 적격인 경우, 가장 오래된 CAS 명령이 선택될 수 있다.
도 16은 최종 스케줄러(186)의 일 실시예의 동작을 나타내는 도표이다. 도표 내의 엔트리들은 위에서 아래로 감소하는 우선 순위로 도시되어 있다. 버스트 스톱(BST) 명령 또는 인터럽트 CAS 명령이 전송되어야 하는 경우, 이러한 명령들은 최고 우선 순위를 부여받을 수 있다. 다음은 모드 레지스터 스케줄러(178)로부터의 명령일 수 있으며, 리프레시 스케줄러(180)로부터의 자동 리프레시 명령이 뒤따를 수 있다. CAS 스케줄러(184)로부터의 CAS 명령이 자동 리프레시 명령 다음의 우선 순위를 가질 수 있고, 이어서 활성화 스케줄러(182)로부터의 활성화 명령이 다음 우선 순위를 가질 수 있다. 프리챠지 스케줄러(176)로부터의 프리챠지 명령이 활성화 명령 다음의 우선 순위를 가질 수 있고, 도 16에서 가장 낮은 우선 순위는 저전력 모드에 들어가는 데 사용되는 자기 리프레시 명령일 수 있다.
위에 간략히 설명된 바와 같이, 메모리 동작은 소스로부터 메모리 제어기(40)에 입력될 수 있고, 메모리 동작의 QoS 레벨에 높은 중요성을 배정될 수 있다. 메모리 동작이 메모리 제어기(40)에서 처리되고, 메모리로의 전송에 가까워짐에 따라, QoS 레벨의 중요성이 감소할 수 있고, 메모리(SDRAM) 효율의 중요성이 증가할 수 있다. 도 17은 이러한 동작을 개략적으로 도시한다. MCIU(60)(예를 들어, 60A 또는 60B), PSQ(64) 및 MIF(66)는 각각의 레벨에서의 스케줄링 제어들을 나타내는 블록들과 함께 도시되어 있다. MCIU(60)에서, 판독 및 기입 동작들 모두에 대한 QoS 레벨들은 대역폭 공유 파라미터들과 더불어 PSQ(64)로의 전송을 위한 판독 및 기입 동작들의 선택을 제어할 수 있다. 이 레벨(블록 222)에서는 메모리 효율이 고려되지 않을 수 있다. PSQ(64)에서, 기입들에 대한 QoS가 제거된다. 유사성은 기입들의 선택을 제어하며, QoS와 유사성의 조합은 주로 판독들의 선택을 제어할 수 있다(블록 224). 따라서, QoS 및 메모리 효율 관계는 이 PSQ(64)에서 더 균형화될 수 있다. MIF(66)에서, (QoS가 에이징 파라미터들 내에 반영될 수 있지만) 모든 메모리 동작들에 대해 QoS가 제거되며, SDRAM 효율 관계는 주로 명령들의 선택을 제어할 수 있다(블록 226).
또한, 위에서 간단히 설명된 바와 같이, 메모리 제어기(40)는 대기 메모리 동작들의 QoS 레벨의 업그레이드를 지원할 수 있다. 다양한 실시예들은 QoS 레벨의 업그레이드, 즉 대역내, 측파대 및 에이징 업그레이드를 시그널링하기 위한 하나 이상의 메커니즘들을 지원할 수 있다.
도 18은 대역내 QoS 업그레이드 메커니즘의 일 실시예를 나타내는 블록도이다. 이 메커니즘에서, 이전의 메모리 동작과 동일한 흐름 내의 메모리 동작을 수신하고, 새로 수신된 메모리 동작이 이전의 메모리 동작보다 높은 QoS 레벨을 갖는 것은 메모리 제어기(40)로 하여금 이전의 메모리 동작의 QoS 레벨을 업그레이드하게 할 수 있다. MCIU(60A)의 일부가 MCU(56A) 내의 PSQ(64)의 일부와 함께 도시되어 있다. MCIU(60B) 및 MCU(64B) 내의 PSQ(64)는 유사할 수 있다.
MCIU(60A)는 전술한 바와 같이 각각의 포트로부터 메모리 동작들을 수신할 수 있으며, 판독들 및 기입들 각각을 위해 새로 수신된 메모리 동작들을 큐들(90A-90B 또는 92A-92B) 중 하나 내에 큐잉할 수 있다. 게다가, 도 18에 도시된 바와 같이, MCIU(60A)는 새로 수신된 메모리 동작의 FID 및 QoS 파라미터들을 동일 포트로부터 큐잉된 메모리 동작들의 대응 값들과 비교할 수 있다(예를 들어, RdQ0(90A)은 포트 0 또는 G0 포트(44A) 상에서 새로 수신된 메모리 동작의 FID 및 QoS 파라미터들을 비교할 수 있고, RdQ4(90B)는 포트 4 또는 RT 포트(44E) 상에서 새로 수신된 메모리 동작에 대한 FID 및 QoS 파라미터들을 비교할 수 있다. 큐잉된 메모리 동작과 동일한, 더 높은 QoS 레벨을 갖는 포트 및 흐름으로부터의 새로 수신된 메모리 동작에 응답하여, MCIU(60A)는 큐잉된 메모리 동작의 QoS 레벨을 더 높은 QoS 레벨로 업그레이드할 수 있다. 일부 실시예들에서, QoS 업그레이드는 소정의 포트들로 제한될 수 있다. 예를 들어, 일 실시예는 QoS 업그레이드를 RT 포트(44E)로 제한할 수 있다. 다른 실시예들은 QoS 업그레이드를 RT 트래픽이 수신될 수 있는 포트들로 제한할 수 있다. 그러한 실시예들에서는, 업그레이드가 지원되는 포트들로부터 새로 수신된 메모리 동작들만이 비교될 수 있다.
유사하게, FID 및 QoS 파라미터들이 PSQ(64) 내의 판독 유사성 큐들(118A-118B)에 의해 수신될 수 있다. PSQ(64)는 더 높은 QoS 레벨을 갖는 동일 포트 및 흐름으로부터 새로 수신된 메모리 동작에 응답하여 큐잉된 판독 동작의 QoS 레벨을 업그레이드할 수 있다. 일부 실시예들에서, PSQ(64)에 의해 수신된 FID 및 QoS 파라미터들은 MCIU(60A)에 의해 수신된 것들과 동일한 새로 수신된 FID 및 QoS 파라미터들일 수 있다. 즉, PSQ(64) 및 MCIU(60A)는 각각의 새로 수신된 메모리 동작에 대한 QoS 레벨들을 동시에 업그레이드할 수 있다. 다른 실시예들에서, MCIU(60A)는 새로 수신된 메모리 동작에 응답하여 QoS 업그레이드를 수행할 수 있으며, PSQ(64)는 MCIU(60A)로부터 PSQ(64)로 메모리 동작이 전송되는 것에 응답하여 QoS 업그레이드를 수행할 수 있다.
도 18은 FID 및 QoS 파라미터들을 판독 큐들(90A-90B)과 비교하는 것을 도시하지만, 비교는 QoS 파라미터들을 업그레이드하기 위해 기입 큐들(92A-92B)에 대해서도 행해질 수 있다. 그러나, 전술한 바와 같이, 기입 동작들에 대한 QoS 파라미터들은 PSQ(64)에서 제거될 수 있으며, 따라서 그러한 실시예들에서는 기입 유사성 큐들(120A-120B)에 대한 비교가 존재하지 않을 수 있다.
도 19는 대역내 업그레이드 메커니즘에 대해 QoS 레벨들을 업그레이드하기 위한 메모리 제어기(40)의 일 실시예의 동작을 나타내는 흐름도이다. 도 19에는 이해의 편의를 위해 블록들이 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들, 블록들의 조합들 및/또는 흐름도는 전체로서 다수의 클럭 사이클에 걸쳐 파이프라인화될 수 있다. 메모리 제어기(40)는 도 19의 동작을 구현하도록 구성될 수 있다. 구체적으로, PSQ(64) 및 MCIU들(60A-60B) 각각은 도 19에 도시된 동작을 구현하도록 구성된 업그레이드 회로를 포함할 수 있다.
새로 수신된 메모리 동작이 큐잉된 메모리 동작과 동일한 포트로부터(판정 블록 230에서 "예" 분기), FID에 의해 지시되는 것과 동일한 흐름으로부터(판정 블록 232에서 "예" 분기) 수신된 것이고, 큐잉된 메모리 동작이 RT 메모리 동작인 경우(판정 블록 234에서 "예" 분기), 메모리 제어기(40)는 큐잉된 동작의 QoS 레벨을 새로 수신된 메모리 동작의 더 높은 QoS 레벨로 업그레이드할 수 있다(블록 236). 일 실시예에서, QoS 업그레이드가 지원되는 큐들은 비교를 수행하기 위한 내용 어드레스 가능 메모리들을 포함할 수 있으며, 매치는 매칭 큐 엔트리로의 새로 수신된 QoS 파라미터의 기입을 가능하게 할 수 있다.
새로 수신된 메모리 동작이 큐잉된 메모리 동작과 동일한 포트 및 흐름으로부터 수신된 것이지만(판정 블록 230 및 232의 "예" 분기), 큐잉된 메모리 동작이 RT 메모리 동작이 아닌 경우(판정 블록 234에서 "아니오" 분기), 메모리 제어기(40)는 큐잉된 메모리 동작에 대해 P 비트를 설정하도록 구성될 수 있다(블록 238). 마찬가지로, 새로 수신된 메모리 동작이 큐잉된 메모리 동작과 동일한 포트로부터, 그러나 상이한 흐름으로부터 수신된 것인 경우(판정 블록 230에서 "예" 분기 및 판정 블록 232에서 "아니오" 분기), 메모리 제어기(40)는 큐잉된 메모리 동작에 대해 P 비트를 설정하도록 구성될 수 있다(블록 238).
도 20은 QoS 업그레이드를 요청하기 위한 측파대 인터페이스의 추가를 나타내는 블록도이다. 도 20의 실시예에서, 측파대 인터페이스는 RT 포트(44E)에 대해 포함된다. 다른 실시예들은 다른 포트들에 대한 하나 이상의 추가적인 측파대 인터페이스들을 구현할 수 있다. 명칭이 암시하듯이, 측파대 인터페이스는 메모리 동작들을 메모리 제어기(40)로 전송하기 위한 "정규" 인터페이스에 부가적일 수 있다. (도 1에 도시된 바와 같은 Cmd, FID 및 QoS 파라미터를 포함하는) 정규 인터페이스는 화살표 240을 통해 도시된다. 측파대 인터페이스는 RT 주변장치들(22)로부터 RT 포트(44E)로의 측파대 QoS 업그레이드 요청 신호(SbQoSUpgd), 측파대 QoS 파라미터(SbQoS), 측파대 FID(SbFID), 측파대 마스크(SbMask) 및 측파대 판독 지시(SbRd)를 포함할 수 있다.
RT 주변 장치들(22)은 측파대 업그레이드를 요청하기 위해 SbQoSUpgd 신호를 표명할 수 있으며, SbQoS 상에서 업그레이드된 QoS 레벨을 나타내는 QoS 파라미터를 제공할 수 있다. SbFID는 흐름을 식별할 수 있으며, SbMask는 SbFID 및 큐잉된 FID들의 일부가 비교에서 차단될 수 있게 함으로써 보편성을 제공할 수 있다. SbRd 지시자는 업그레이드를 위해 판독들 또는 기입들이 비교되어야 하는지를 지시할 수 있다. RT 포트(44E)는 SbAck를 이용하여 업그레이드 요청의 수신을 응답할 수 있다. 일 실시예에서, 측파대 업그레이드를 수행하기 위한 메모리 제어기(40) 내의 하드웨어는 도 18에 도시된 것과 유사할 수 있으며, 프로세스는 도 19에 도시된 것과 유사할 수 있다. 위 설명에서 새로 수신된 메모리 동작은 수신되는 측파대 요청으로 대체될 수 있다.
도 21은 에이징 기반 QoS 업그레이드를 구현하기 위한 메모리 제어기(40)의 일반 동작을 나타내는 흐름도이다. 전술한 바와 같이, MIF 트랜잭션 큐들(172)은 에이징에 기초하여 우선 순위 업그레이드를 구현할 수 있다. 다른 실시예들은 에이징 기반 QoS 업그레이드들을 유사하게 구현할 수 있다. 도 21에는 이해의 편의를 위해 블록들이 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 메모리 제어기(40) 내의 조합 논리에서 병렬로 수행될 수 있다. 블록들, 블록들의 조합들 및/또는 흐름도는 전체로서 다수의 클럭 사이클에 걸쳐 파이프라인화될 수 있다. 에이징 카운터들의 업그레이드 및 대응하는 메모리 동작들의 업그레이드는 각각의 동작에 대해 병렬로 수행될 수 있다.
메모리 제어기(40)는 큐(예를 들어, MCIU 큐들(90 또는 92), PSQ 트랜잭션 큐들(112) 및/또는 MIF 트랜잭션 큐들(172)) 내에 동작의 입력시에 각각의 메모리 동작에 에이징 카운터를 할당할 수 있다(블록 250). 에이징 카운터들은 각각의 큐에서 다를 수 있으며, 큐마다 구비될 필요는 없다. 대안으로서, 에이징 카운터는 MCIU에서 할당되고, 다른 큐들을 통해 구비될 수 있다. 에이징 카운터의 초기 값은 각각의 메모리 동작의 QoS 파라미터에 기초할 수 있다(예를 들어, 더 높은 QoS 값들에 대해 더 짧은 값들). 초기 값들은 고정되거나 프로그래밍될 수 있다.
메모리 제어기(40)는 주어진 에이징 카운터를 갱신하는 갱신 이벤트를 검출할 수 있다(판정 블록 252). 갱신 이벤트는 에이징 카운터가 어떻게 측정되는지에 따라 달라질 수 있다. 예를 들어, 일부 실시예들은 더 어린 메모리 동작에 의해 메모리 동작이 바이패스된 횟수 측면에서 에이지를 측정할 수 있다. 그러한 실시예들에서, 갱신 이벤트는 메모리 동작의 바이패스일 수 있다. 다른 실시예들은 클럭 사이클들을 에이지로서 카운트할 수 있으며, 갱신 이벤트는 클럭의 상승 또는 하강 에지일 수 있다. 또 다른 실시예들은 다른 방식으로 에이지를 정의할 수 있으며, 갱신 이벤트는 그에 따라 검출될 수 있다. 갱신 이벤트의 검출에 응답하여(판정 블록 252에서 "예" 분기), 메모리 제어기(40)는 에이징 카운터를 감소시킬 수 있다(블록 254).
메모리 제어기(40)는 주어진 에이징 카운터가 종료되었는지의 여부를 검출하도록 구성될 수 있다(판정 블록 256). 그러한 경우(판정 블록 256에서 "예" 분기), 메모리 제어기(40)는 QoS 레벨을 QoS 레벨들의 동일 세트 내의 다음으로 더 높은 레벨로 업그레이드하도록 구성될 수 있다(블록 258). 업그레이드된 QoS 레벨이 최고 레벨이 아닌 경우(예를 들어, RTR, 판정 블록 260에서 "아니오" 분기), 메모리 제어기(40)는 추가적인 에이징 기반 업그레이드를 위해 새로운 QoS 레벨에 기초하여 새로운 에이징 카운터 값을 할당할 수 있다(블록 262). 따라서, 이 실시예에서, 메모리 동작이 에이징됨에 따라, 메모리 동작의 QoS 레벨은 각각의 중간 QoS 레벨을 통해 최고 QoS 레벨로 업그레이드될 수 있다.
이어서, 도 22를 참조하면, 시스템(350)의 일 실시예의 블록도가 도시되어 있다. 도시된 실시예에서, 시스템(350)은 외부 메모리(12)(예를 들어, 도 1의 메모리(12A-12B))에 결합된 집적 회로(10)의 적어도 하나의 인스턴스를 포함한다. 집적 회로(10)는 하나 이상의 주변 장치들(354) 및 외부 메모리(12)에 결합된다. 집적 회로(10)에 전원 전압들을 제공하는 것은 물론, 메모리(12) 및/또는 주변 장치들(354)에 하나 이상의 전원 전압들을 제공하는 전원(356)도 제공된다. 일부 실시예들에서는, 집적 회로(10)의 둘 이상의 인스턴스가 포함될 수 있다(그리고 둘 이상의 외부 메모리(12)도 포함될 수 있다).
주변 장치들(354)은 시스템(350)의 타입에 따라 임의의 원하는 회로를 포함할 수 있다. 예를 들어, 일 실시예에서, 시스템(350)은 이동 장치(예를 들어, 개인 휴대 단말기(PDA), 스마트폰 등)일 수 있으며, 주변 장치들(354)은 WiFi, 블루투스, 셀룰러, 글로벌 포지셔닝 시스템 등과 같은 다양한 타입의 무선 통신용 장치들을 포함할 수 있다. 주변 장치들(354)은 RAM 저장 장치, 반도체 저장 장치 또는 디스크 저장 장치를 포함하는 추가적인 저장 장치도 포함할 수 있다. 주변 장치들(354)은 터치 디스플레이 스크린들 또는 멀티 터치 디스플레이 스크린들을 포함하는 디스플레이 스크린, 키보드 또는 다른 입력 장치들, 마이크로폰, 스피커 등과 같은 사용자 인터페이스 장치들을 포함할 수 있다. 다른 실시예들에서, 시스템(350)은 임의 타입의 컴퓨팅 시스템(예를 들어, 데스크탑 개인용 컴퓨터, 랩탑, 워크스테이션, 넷탑 등)일 수 있다.
위의 명세서를 충분히 이해하면, 이 분야의 기술자들에게 다양한 변경들 및 개량들이 명확해질 것이다. 아래의 청구항들은 그러한 모든 변경들 및 개량들을 포함하는 것으로 해석되는 것을 의도한다.

Claims (19)

  1. 복수의 포트를 포함하는 메모리 제어기로서,
    각각의 포트는 하나 이상의 소스로부터 메모리 동작들을 수신하도록 결합되고, 각각의 포트는 특정 타입의 메모리 동작 트래픽에 전용이고, 상기 메모리 제어기는 상기 메모리 동작들에 대한 상대적인 서비스 품질(QoS) 파라미터들에 응답하여 상기 복수의 포트로부터 복수의 메모리 채널 유닛으로 메모리 동작 트래픽을 스위칭하도록 구성된 에이전트 인터페이스 유닛을 포함하는 메모리 제어기.
  2. 제1항에 있어서, 상기 QoS 파라미터들의 정의는 트래픽의 상이한 타입들에 대해 상이하며, 상기 에이전트 인터페이스 유닛은 상기 QoS 파라미터들과 상기 상이한 정의들을 비교하여 상기 메모리 동작 트래픽을 스위칭하도록 구성되는 메모리 제어기.
  3. 제2항에 있어서, 상기 포트들 중 적어도 하나는 실시간 트래픽에 전용이고, 상기 실시간 트래픽에 대한 상기 QoS 파라미터들은 상기 소스에서의 긴급성의 상이한 레벨들을 반영하는 메모리 제어기.
  4. 제3항에 있어서, 상기 포트들 중 적어도 다른 하나는 프로세서로부터의 트래픽에 전용이고, 프로세서 트래픽은 실시간이 아니며, 상기 QoS 파라미터들은 최선(best effort) 또는 낮은 지연 서비스 중 어느 하나를 나타내는 메모리 제어기.
  5. 제4항에 있어서, 상기 포트들 중 적어도 다른 하나는 그래픽 유닛으로부터의 트래픽에 전용이고, 그래픽 트래픽은 실시간이 아닌 메모리 제어기.
  6. 제1항에 있어서, 하나 이상의 이전 메모리 동작들을 전송한 제1 소스로부터의 제1 메모리 동작을 수신하는 것에 응답하여 그리고 이전 메모리 동작들에 대응하는 이전 QoS 파라미터들보다 높은 서비스 레벨을 나타내는 상기 제1 메모리 동작에 대응하는 제1 QoS 파라미터에 더 응답하여, 상기 메모리 제어기는 상기 이전 QoS 파라미터들을 상기 제1 QoS 파라미터가 나타내는 상기 서비스 레벨로 업그레이드하도록 구성되는 메모리 제어기.
  7. 제6항에 있어서, 상기 복수의 메모리 채널 유닛을 더 포함하고, 상기 복수의 메모리 채널 유닛은 판독 동작들에 대한 상기 QoS 파라미터들을 유지하고 기입 동작들에 대한 상기 QoS 파라미터들을 제거하도록 구성되고, 상기 복수의 메모리 채널 유닛은 상기 판독 동작들에 대한 상기 QoS 파라미터들보다 높은 서비스 레벨을 나타내는 상기 제1 QoS 파라미터에 응답하여 상기 제1 소스로부터의 판독 동작들에 대한 상기 QoS 파라미터들을 업그레이드하도록 구성되는 메모리 제어기.
  8. 제1항에 있어서, 상기 에이전트 인터페이스 유닛에 결합된 상기 복수의 메모리 채널 유닛을 더 포함하고, 상기 메모리 채널 유닛들 각각은 사전 분류 큐, 및 메모리에 결합하기 위한 메모리 인터페이스 유닛을 포함하고, 상기 에이전트 인터페이스 유닛은 상기 메모리 동작들의 상기 QoS 파라미터들에 응답하여 상기 포트들로부터의 메모리 동작들을 주어진 메모리 채널 유닛으로 스케줄링하도록 구성되고, 상기 에이전트 인터페이스 유닛은 QoS 파라미터들에 기초하여 메모리 동작들을 주어진 메모리 채널 유닛으로 재배열하도록 구성되고, 상기 메모리 채널 유닛들은 어떠한 메모리 동작들이 함께 상기 메모리에 대해 효율적으로 수행될 것으로 예상되는지에 따라 상기 사전 분류 큐 내에 메모리 동작들을 그룹화하도록 구성되고, 상기 메모리 채널 유닛들은 각각의 그룹 내의 최고 레벨 QoS 파라미터에 기초하여 그룹들을 스케줄링하도록 구성되고, 상기 메모리 채널 유닛들은 상기 메모리 동작들을 상기 메모리에 대한 명령들에 사전 합성하도록 구성되고, 상기 메모리 인터페이스 유닛은 상기 메모리에의 효율적인 액세스에 기초하여 상기 명령들을 재배열하도록 구성되는 메모리 제어기.
  9. 제8항에 있어서, 상기 메모리 동작들은 판독 동작들 및 기입 동작들을 포함하고, 상기 사전 분류 큐들은 판독 동작들 및 기입 동작들을 별개로 큐잉하도록 구성되고, 상기 사전 분류 큐들은 상기 기입 동작들에 대한 QoS 파라미터들을 제거하고, 기입 큐들의 충만에 응답하여 판독 동작들과 기입 동작들 사이를 스케줄링하도록 구성되는 메모리 제어기.
  10. 제8항에 있어서, 메모리 동작들은 (i) 상기 메모리 동작들이 상기 메모리 내의 동일 페이지에 대한 것임, (ii) 상기 메모리 동작들이 상기 메모리의 상이한 랭크들에 대한 것임 또는 (iii) 상기 메모리 동작들이 상기 메모리의 상이한 뱅크들에 대한 것임 중 적어도 하나가 참인 경우에 효율적으로 함께 수행될 것으로 예상되는 메모리 제어기.
  11. 집적 회로로서,
    제1항의 메모리 제어기;
    하나 이상의 실시간(RT) 주변 장치들;
    적어도 하나의 프로세서; 및
    하나 이상의 비실시간(NRT) 주변 장치들
    을 포함하고,
    상기 하나 이상의 RT 주변 장치들은 상기 복수의 포트 중 RT 포트에 결합되고, 상기 적어도 하나의 프로세서는 상기 복수의 포트 중 제1 NRT 포트에 결합되고, 상기 하나 이상의 NRT 주변 장치들은 상기 복수의 포트 중 제2 NRT 포트에 결합되고, 상기 메모리 제어기는 상기 복수의 포트로부터 메모리 동작들을 캡처하고, 하나 이상의 메모리 채널들 상에서 상기 메모리 동작들을 메모리에 대해 스케줄링하도록 구성되고, 상이한 포트들 상에서 수신된 메모리 동작들 사이의 스케줄링 결정들은 상기 메모리 동작들이 수신된 특정 포트들에 부분적으로 의존하는 집적 회로.
  12. 메모리 제어기 내의 복수의 포트 상에서 메모리 동작들을 수신하는 단계 - 각각의 포트는 하나 이상의 소스로부터 메모리 동작들을 수신하도록 결합되고, 각각의 포트는 특정 타입의 메모리 동작 트래픽에 전용임 -; 및
    상기 메모리 동작들에 대한 상대적인 서비스 품질(QoS) 파라미터들에 응답하여 상기 복수의 포트로부터 상기 메모리 제어기 내의 복수의 메모리 채널 유닛으로 상기 메모리 동작 트래픽을 스위칭하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 메모리 동작들을 수신하는 단계는
    상기 복수의 포트 중 실시간(RT) 포트 상에서 제1 메모리 동작을 수신하는 단계 - 상기 제1 메모리 동작은 RT QoS 레벨들의 세트에 따라 정의된 제1 서비스 품질(QoS) 파라미터를 가짐 -; 및
    상기 복수의 포트 중 비실시간(NRT) 포트 상에서 제2 메모리 동작을 상기 제1 메모리 동작과 병렬로 수신하는 단계 - 상기 제2 메모리 동작은 NRT QoS 레벨들의 세트에 따라 정의된 제2 QoS 파라미터를 가짐 -
    를 포함하고,
    상기 메모리 동작 트래픽을 스위칭하는 단계는
    상기 메모리 제어기가 상기 제1 QoS 파라미터 및 상기 제2 QoS 파라미터에 적어도 부분적으로 응답하여 상기 메모리에 액세스하도록 상기 제1 메모리 동작 및 상기 제2 메모리 동작을 스케줄링하는 단계
    를 포함하는 방법.
  14. 제12항에 있어서,
    하나 이상의 이전 메모리 동작들을 전송한 제1 소스로부터 제1 메모리 동작을 수신하는 단계; 및
    상기 이전 메모리 동작들에 대응하는 이전 QoS 파라미터들보다 높은 서비스 레벨을 나타내는 상기 제1 메모리 동작에 대응하는 제1 QoS 파라미터에 응답하여, 상기 메모리 제어기가 상기 이전 QoS 파라미터들을 상기 제1 QoS 파라미터가 나타내는 상기 서비스 레벨로 업그레이드하는 단계
    를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 복수의 메모리 채널 유닛이 판독 동작들에 대한 상기 QoS 파라미터들을 유지하는 단계;
    상기 복수의 메모리 채널 유닛이 기입 동작들에 대한 상기 QoS 파라미터들을 제거하는 단계; 및
    상기 복수의 메모리 채널 유닛이 상기 판독 동작들에 대한 상기 QoS 파라미터들보다 높은 서비스 레벨을 나타내는 상기 제1 QoS 파라미터에 응답하여 상기 제1 소스로부터의 판독 동작들에 대한 상기 QoS 파라미터들을 업그레이드하는 단계
    를 더 포함하는 방법.
  16. 제14항에 있어서,
    상기 메모리 채널 유닛들 각각은 사전 분류 큐, 및 메모리에 결합하기 위한 메모리 인터페이스 유닛을 포함하고,
    상기 메모리 동작 트래픽을 스위칭하는 단계는
    상기 메모리 동작들의 상기 QoS 파라미터들에 응답하여 상기 포트들로부터의 메모리 동작들을 주어진 메모리 채널 유닛으로 스케줄링하는 단계; 및
    상기 QoS 파라미터들에 기초하여 메모리 동작들을 주어진 메모리 채널 유닛으로 재배열하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서,
    상기 복수의 메모리 채널 유닛이 어떠한 메모리 동작들이 함께 상기 메모리에 대해 효율적으로 수행될 것으로 예상되는지에 따라 상기 사전 분류 큐 내에 메모리 동작들을 그룹화하는 단계;
    상기 복수의 메모리 채널 유닛이 각각의 그룹 내의 최고 레벨 QoS 파라미터에 기초하여 그룹들을 스케줄링하는 단계;
    상기 복수의 메모리 채널 유닛이 상기 메모리 동작들을 상기 메모리에 대한 명령들에 사전 합성하는 단계; 및
    상기 메모리 인터페이스 유닛이 상기 메모리에의 효율적인 액세스에 기초하여 상기 명령들을 재배열하는 단계
    를 더 포함하는 방법.
  18. 제17항에 있어서,
    상기 메모리 동작들은 판독 동작들 및 기입 동작들을 포함하고,
    상기 방법은
    상기 사전 분류 큐들이 판독 동작들 및 기입 동작들을 별개로 큐잉하는 단계;
    상기 사전 분류 큐들이 상기 기입 동작들에 대한 QoS 파라미터들을 제거하는 단계; 및
    상기 사전 분류 큐들이 기입 큐들의 충만에 응답하여 판독 동작들과 기입 동작들 사이를 스케줄링하는 단계
    를 더 포함하는 방법.
  19. 제17항에 있어서, 메모리 동작들은 (i) 상기 메모리 동작들이 상기 메모리 내의 동일 페이지에 대한 것임, (ii) 상기 메모리 동작들이 상기 메모리의 상이한 랭크들에 대한 것임 또는 (iii) 상기 메모리 동작들이 상기 메모리의 상이한 뱅크들에 대한 것임 중 적어도 하나가 참인 경우에 효율적으로 함께 수행될 것으로 예상되는 방법.
KR1020110093570A 2010-09-16 2011-09-16 트래픽 클래스들과 관련된 포트들을 갖는 다중 포트 메모리 제어기 KR101270848B1 (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US12/883,878 US8631213B2 (en) 2010-09-16 2010-09-16 Dynamic QoS upgrading
US12/883,864 US8314807B2 (en) 2010-09-16 2010-09-16 Memory controller with QoS-aware scheduling
US12/883,888 US8510521B2 (en) 2010-09-16 2010-09-16 Reordering in the memory controller
US12/883,848 2010-09-16
US12/883,888 2010-09-16
US12/883,878 2010-09-16
US12/883,864 2010-09-16
US12/883,848 US20120072677A1 (en) 2010-09-16 2010-09-16 Multi-Ported Memory Controller with Ports Associated with Traffic Classes
WOPCT/US2011/49940 2011-08-31
PCT/US2011/049940 WO2012036905A1 (en) 2010-09-16 2011-08-31 Multi-ported memory controller with ports associated with traffic classes

Publications (2)

Publication Number Publication Date
KR20120029366A true KR20120029366A (ko) 2012-03-26
KR101270848B1 KR101270848B1 (ko) 2013-06-05

Family

ID=44908227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110093570A KR101270848B1 (ko) 2010-09-16 2011-09-16 트래픽 클래스들과 관련된 포트들을 갖는 다중 포트 메모리 제어기

Country Status (13)

Country Link
EP (1) EP2431884B1 (ko)
JP (1) JP5610636B2 (ko)
KR (1) KR101270848B1 (ko)
CN (1) CN102402490B (ko)
AU (1) AU2011302452B2 (ko)
BR (1) BR112013006329B1 (ko)
GB (1) GB2483763B (ko)
HK (2) HK1168159A1 (ko)
MX (1) MX2013002773A (ko)
NL (1) NL2007411C2 (ko)
RU (1) RU2556443C2 (ko)
TW (1) TWI465903B (ko)
WO (1) WO2012036905A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150010462A (ko) * 2013-07-19 2015-01-28 삼성전자주식회사 모바일 장치 및 그것의 제어 방법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101665611B1 (ko) * 2012-05-08 2016-10-12 마벨 월드 트레이드 리미티드 컴퓨터 시스템 및 메모리 관리의 방법
CN102681946B (zh) * 2012-05-11 2015-03-11 龙芯中科技术有限公司 内存访问方法和装置
KR20160127168A (ko) * 2013-03-15 2016-11-02 인텔 코포레이션 메모리 시스템
CN104156328B (zh) * 2013-05-15 2019-02-05 中兴通讯股份有限公司 一种识别操作系统类型的方法及usb设备
WO2015067295A1 (en) 2013-11-05 2015-05-14 Huawei Technologies Co., Ltd. Method and arrangement for controlling requests to a shared electronic resource
US9563369B2 (en) 2014-04-14 2017-02-07 Microsoft Technology Licensing, Llc Fine-grained bandwidth provisioning in a memory controller
US10163508B2 (en) 2016-02-26 2018-12-25 Intel Corporation Supporting multiple memory types in a memory slot
US10222853B2 (en) 2016-03-03 2019-03-05 Qualcomm Incorporated Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
US11221971B2 (en) 2016-04-08 2022-01-11 Qualcomm Incorporated QoS-class based servicing of requests for a shared resource
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
EP3270295A1 (en) * 2016-07-15 2018-01-17 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
TWI587145B (zh) * 2016-12-08 2017-06-11 群聯電子股份有限公司 通道切換裝置、記憶體儲存裝置及通道切換方法
US11709624B2 (en) * 2018-02-15 2023-07-25 Xilinx, Inc. System-on-chip having multiple circuits and memory controller in separate and independent power domains
US11237893B2 (en) * 2019-06-26 2022-02-01 Western Digital Technologies, Inc. Use of error correction-based metric for identifying poorly performing data storage devices
CN116584075A (zh) * 2020-10-26 2023-08-11 谷歌有限责任公司 调节存储器子系统中的信用分配
CN112597080B (zh) * 2020-12-29 2022-10-21 联芸科技(杭州)股份有限公司 读请求控制装置及方法以及存储器控制器
CN115329016B (zh) * 2022-10-14 2023-04-25 深圳迅策科技有限公司 一种金融资产交易数据处理方法、系统及可读介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL116708A (en) * 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
US6859438B2 (en) * 1998-02-03 2005-02-22 Extreme Networks, Inc. Policy based quality of service
US6101613A (en) * 1998-07-06 2000-08-08 Intel Corporation Architecture providing isochronous access to memory in a system
US6651128B1 (en) * 2000-02-10 2003-11-18 Advanced Micro Devices, Inc. Systems and methods for arbitrating between asynchronous and isochronous data for access to data transport resources
TW513635B (en) * 2000-11-24 2002-12-11 Ibm Method and structure for variable-length frame support in a shared memory switch
US7606744B1 (en) * 2001-02-16 2009-10-20 Financial Systems Technology (Intellectual Property) Pty. Ltd. System and method for real-time pricing with volume discounting
US7054968B2 (en) * 2003-09-16 2006-05-30 Denali Software, Inc. Method and apparatus for multi-port memory controller
US20050138251A1 (en) * 2003-12-18 2005-06-23 Fanning Blaise B. Arbitration of asynchronous and isochronous requests
US7500045B2 (en) * 2005-03-23 2009-03-03 Qualcomm Incorporated Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system
JP2008541217A (ja) * 2005-05-04 2008-11-20 エヌエックスピー ビー ヴィ メモリーコントローラ、メモリーアクセスの制御方法、及びメモリーコントローラを具えたシステム
KR100784385B1 (ko) * 2005-08-10 2007-12-11 삼성전자주식회사 공유 자원에 대한 접근 요청을 중재하는 시스템 및 방법
GB2445713B (en) * 2005-12-22 2010-11-10 Advanced Risc Mach Ltd Interconnect
CN100581172C (zh) * 2006-04-19 2010-01-13 杭州华三通信技术有限公司 一种对目的磁盘进行访问的方法和扩展磁盘容量的系统
US20080077720A1 (en) * 2006-09-27 2008-03-27 Blaise Fanning Isochronous memory access with variable channel priorities and timers
CN101026556B (zh) * 2007-01-10 2010-04-21 华为技术有限公司 一种支持服务质量的仲裁方法及装置
US9292436B2 (en) * 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
US7908440B2 (en) * 2007-08-09 2011-03-15 Intel Corporation Simultaneous personal sensing and data storage
US8209439B2 (en) * 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
CN101419579B (zh) * 2008-12-10 2011-11-16 中国科学院计算技术研究所 一种在动态随机存储器上提供服务质量的装置和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150010462A (ko) * 2013-07-19 2015-01-28 삼성전자주식회사 모바일 장치 및 그것의 제어 방법

Also Published As

Publication number Publication date
JP5610636B2 (ja) 2014-10-22
WO2012036905A1 (en) 2012-03-22
NL2007411A (en) 2012-03-19
GB201115481D0 (en) 2011-10-26
EP2431884B1 (en) 2015-03-11
AU2011302452A1 (en) 2013-03-28
JP2012074042A (ja) 2012-04-12
BR112013006329A2 (pt) 2016-06-21
GB2483763B (en) 2013-01-09
TW201216056A (en) 2012-04-16
MX2013002773A (es) 2013-04-05
KR101270848B1 (ko) 2013-06-05
CN102402490B (zh) 2015-12-02
BR112013006329B1 (pt) 2020-12-01
RU2013117127A (ru) 2014-10-27
HK1168159A1 (en) 2012-12-21
AU2011302452B2 (en) 2014-09-04
HK1168672A1 (en) 2013-01-04
GB2483763A (en) 2012-03-21
TWI465903B (zh) 2014-12-21
RU2556443C2 (ru) 2015-07-10
EP2431884A1 (en) 2012-03-21
NL2007411C2 (en) 2012-05-09
CN102402490A (zh) 2012-04-04

Similar Documents

Publication Publication Date Title
KR101270848B1 (ko) 트래픽 클래스들과 관련된 포트들을 갖는 다중 포트 메모리 제어기
US8553042B2 (en) QoS-aware scheduling
US8762653B2 (en) Dynamic QoS upgrading
US8510521B2 (en) Reordering in the memory controller
US9141568B2 (en) Proportional memory operation throttling
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
US20120137090A1 (en) Programmable Interleave Select in Memory Controller
US20120072677A1 (en) Multi-Ported Memory Controller with Ports Associated with Traffic Classes
US11429281B2 (en) Speculative hint-triggered activation of pages in memory
US8458406B2 (en) Multiple critical word bypassing in a memory controller
US8706925B2 (en) Accelerating memory operations blocked by ordering requirements and data not yet received
US8856459B1 (en) Matrix for numerical comparison
US20230161506A1 (en) Multiple host memory controller

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee