KR20160144482A - 메모리 제어기에서의 세분화된 대역폭 프로비저닝 - Google Patents

메모리 제어기에서의 세분화된 대역폭 프로비저닝 Download PDF

Info

Publication number
KR20160144482A
KR20160144482A KR1020167031743A KR20167031743A KR20160144482A KR 20160144482 A KR20160144482 A KR 20160144482A KR 1020167031743 A KR1020167031743 A KR 1020167031743A KR 20167031743 A KR20167031743 A KR 20167031743A KR 20160144482 A KR20160144482 A KR 20160144482A
Authority
KR
South Korea
Prior art keywords
memory
request
dram
master
bandwidth
Prior art date
Application number
KR1020167031743A
Other languages
English (en)
Other versions
KR102380670B1 (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 KR20160144482A publication Critical patent/KR20160144482A/ko
Application granted granted Critical
Publication of KR102380670B1 publication Critical patent/KR102380670B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Dram (AREA)
  • Bus Control (AREA)

Abstract

세분화된 QoS 논리(fine-grained QoS logic)를 적용하는 시스템 및 방법이 제공된다. 본 시스템은 버스 패브릭을 통해 복수의 마스터로부터 메모리 액세스 요청을 수신하도록 구성된 메모리 제어기를 포함할 수 있다. 메모리 제어기는 복수의 마스터의 각각의 마스터의 우선순위 클래스(priority class)를 결정하고, 메모리 데이터 버스 상에서 각각의 마스터에 의해 소비되는 메모리 데ㅊ이터 버스 대역폭의 양을 추가로 결정한다. 각각의 마스터에 할당된 우선순위 클래스 및 각각의 마스터에 의해 소비되는 메모리 데이터 버스 대역폭의 양에 기초하여, 메모리 제어기는 메모리 요청에 대한 스케줄을 계산하기 위해 세분화된 QoS 논리를 적용한다. 이 스케줄에 기초하여, 메모리 제어기는 메모리 요청을 메모리 명령으로 변환하고, 메모리 명령을 메모리 명령 버스를 통해 메모리 디바이스로 송신하며, 메모리 데이터 버스를 통해 메모리 디바이스로부터 응답을 수신한다.

Description

메모리 제어기에서의 세분화된 대역폭 프로비저닝{FINE-GRAINED BANDWIDTH PROVISIONING IN A MEMORY CONTROLLER}
DRAM(dynamic random access memory) 디바이스가 컴퓨터, 스마트폰, 태블릿, 게임 콘솔, 및 텔레비전을 비롯한 광범위한 전자 디바이스에서 발견된다. DRAM 디바이스는 이러한 전자 디바이스에서 실행 중인 애플리케이션이 디바이스 내의 비휘발성 저장소(예컨대, 플래시 메모리 또는 하드 드라이브)로부터의 명령어 및 데이터를, 명령어가 디바이스의 CPU(central processing unit) 또는 다른 고정 하드웨어 유닛에 의해 실행되기 전에, 일시적으로 저장할 수 있게 한다.
효율성을 이유로, DRAM 디바이스가 전자 시스템에서 DRAM 메모리 디바이스에 대한 읽기 또는 쓰기 트래픽을 발생시킬 수 있는 많은 상이한 마스터 디바이스, 또는 IP(intellectual-property) 논리 블록에 의해 공유된다. 각각의 마스터 디바이스는, 종종 버스 패브릭(bus fabric) 및 메모리 제어기를 통해, DRAM 디바이스에게 메모리 요청을 발행한다. 메모리 제어기는 이러한 메모리 요청을 스케줄링하는 일 및 요청이 어떻게 DRAM 디바이스로 송신되는지를 결정하는 일을 맡고 있다. DRAM 디바이스의 액세스 대기시간(access latency) 그리고, 따라서, 유효 이용 대역폭(effective utilization bandwidth)은 메모리 제어기가 요청을 얼마나 효율적으로 그리고 효과적으로 스케줄링할 수 있는지에 의존한다. 스케줄링이 비효율적일 때, 과도한 대역폭 변동은, 비디오 게임에서의 프레임 레이트 저하(frame rate drop) 또는 누락된 오디오 프레임으로 인한 사운드 팝핑(sound popping)과 같은, 시스템의 하드웨어 및 소프트웨어 애플리케이션에서의 장애를 야기할 수 있다. 이러한 장애를 방지하는 통상의 접근법은 요청이 어떻게 스케줄링되는지를 결정하는 QoS(quality of service) 논리를 이용하는 것 및 애플리케이션이 가능한 많은 기지의 대역폭 변동 시나리오 하에서 장애를 겪지 않도록 보장하기 위해 광범위한 테스트를 수행하는 것이다.
종래 기술에서, QoS 논리 해결책은 2가지 메커니즘 - 우선순위 부여(prioritization) 및 레이트 제한(rate limiting) - 에 주로 의존하였다. 우선순위 부여 메커니즘은 시스템에 의해 보다 높은 우선순위를 할당받은 마스터로부터의 요청을 보다 낮은 우선순위를 할당받은 마스터로부터의 요청보다 우선시한다. 그렇지만, 저 우선순위 마스터의 기아상태(starvation)를 방지하기 위해, 고 우선순위 마스터가 시스템에 의해 그에 할당된 대역폭의 양을 초과하는 것을 방지하기 위해 레이트 제한 메커니즘이 사용된다.
그렇지만, 이러한 종래의 QoS 논리 해결책은, 마스터 디바이스에 의해 인지되는, DRAM 디바이스의 유효 대역폭의 폭넓은 변동을 여전히 허용하였다. 그에 따라, 종래의 QoS 논리 해결책을 이용하는 전자 시스템에 대해 개발된 소프트웨어 애플리케이션은 대역폭 변동이 광범위하게 테스트된 특정 유형의 DRAM으로 제한되었다. 보다 빠르거나 보다 느린, 상이한 유형의 DRAM 디바이스가 시스템에서 사용되는 경우, QoS 논리 해결책은 부가의 대역폭 변동을 겪을 것이고, 소프트웨어 애플리케이션이 제대로 실행되지 못할 것이다. 전형적으로 긴 제품 수명 주기를 가지는 게임 콘솔의 예에서, 이 단점은 콘솔 제조업체가, 이전에 개발된 게임이 업데이트된 하드웨어에서 제대로 실행되지 않을 것을 염려하여, 게임 콘솔의 수명 주기의 후기 동안 보다 빠르고 보다 저렴한 유형의 DRAM으로 전환하지 못하게 한다.
세분화된 QoS 논리(fine-grained QoS logic)를 적용하는 시스템 및 방법이 제공된다. 본 시스템은 버스 패브릭을 통해 복수의 마스터로부터 메모리 액세스 요청을 수신하도록 구성된 메모리 제어기를 포함할 수 있다. 메모리 제어기는 복수의 마스터의 각각의 마스터의 우선순위 클래스(priority class)를 결정하고, 데이터 버스 상에서 각각의 마스터에 의해 소비되는 데이터 버스 대역폭의 양을 추가로 결정한다. 각각의 마스터에 할당된 우선순위 클래스 및 각각의 마스터에 의해 소비되는 데이터 버스 대역폭의 양에 기초하여, 메모리 제어기는 메모리 액세스 요청에 대한 스케줄을 계산하기 위해 세분화된 QoS 논리를 적용한다. 이 스케줄에 기초하여, 메모리 제어기는 메모리 액세스 요청을 메모리 액세스 명령(memory access command)으로 변환하고, 이 메모리 액세스 명령을 메모리 명령 버스를 통해 메모리 액세스 디바이스로 송신하며, 메모리 데이터 버스를 통해 메모리 디바이스로부터 응답을 수신한다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 선택된 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 핵심적인 특징 또는 필수적인 특징을 언급하려고 의도되어 있지도 않고, 청구된 발명 요지의 범주를 제한하기 위해 사용되는 것으로 의도되어 있지도 않다. 게다가, 청구된 발명 요지가 본 개시 내용의 임의의 부분에서 살펴본 단점들의 일부 또는 전부를 해결하는 구현으로 제한되지 않는다.
도 1은 일 실시예에 따른, DRAM 데이터 버스의 대역폭을 프로비저닝하기 위해 세분화된 QoS 논리를 실행하도록 구성된 시스템의 개략도.
도 2는 DRAM 데이터 버스 상에서 DRAM 요청에 의해 소비되는 대역폭의 양을 계산하도록 구성될 수 있는 도 1의 시스템의 세분화된 QoS 논리의 개략도.
도 3은 마스터, 버스 패브릭, 및 DRAM 메모리 제어기가 시스템 온 칩(system-on-a-chip)으로서 형성되어 있는, DRAM 데이터 버스의 대역폭을 프로비저닝하기 위해 세분화된 QoS 논리를 실행하도록 구성된 시스템의 제2 실시예의 개략도.
도 4는 일 실시예에 따른, DRAM 메모리 제어기에서 세분화된 대역폭 프로비저닝을 수행하는 방법의 플로우차트.
도 5는 도 4의 방법의 단계가 달성될 수 있는 하위 단계를 나타낸 플로우차트.
도 6은 도 4의 방법의 단계가 달성될 수 있는 하위 단계를 나타낸 플로우차트.
도 7은 시스템의 부가의 컴포넌트를 나타낸 개략도.
앞서 기술된 과제들을 해결하기 위해, DRAM(dynamic random access memory)과 같은, 메모리에의 액세스를 제어하는 시스템 및 방법이 본원에 개시되어 있다.
최근의 전자 시스템에서, CPU 및 다른 하드웨어 디바이스 - 종종 마스터 디바이스라고 지칭됨 - 가 메모리 제어기 및 다양한 버스를 통해 시스템의 DRAM에 요청을 발행하는 것이 전형적이다. 메모리 제어기는 마스터 디바이스로부터 발행된 요청을 스케줄링하기 위해 다양한 큐 및 멀티플렉서를 사용할 수 있고, 요청을 실행하는 가장 효율적인 방식을 결정하기 위해 QoS(quality of service) 논리를 적용할 수 있다.
도 1은 버스 패브릭(18)을 통해 복수의 마스터(16)로부터 DRAM(dynamic random access memory) 요청(14)을 수신하고, 복수의 마스터(16)의 각각의 마스터에 할당된 우선순위 레벨을 결정하며, DRAM 데이터 버스(30) 상에서 각각의 마스터에 의해 소비되는 DRAM 데이터 버스 대역폭(48)의 양을 결정하고, 각각의 마스터(16)에 할당된 우선순위 레벨 및 각각의 마스터(16)에 의해 소비되는 대역폭(48)의 양에 기초하여 DRAM 요청(14)에 대한 스케줄을 계산하기 위해 세분화된 QoS 논리(26)를 적용하며, 스케줄에 기초하여, DRAM 요청(14)을 DRAM 명령(42)으로 변환하고, DRAM 명령(42)을 DRAM 명령 버스(34)를 통해 적어도 하나의 DRAM 디바이스(32)로 송신하며, DRAM 데이터 버스(30)를 통해 DRAM 디바이스(32)로부터 응답을 수신하도록 구성되어 있는 메모리 제어기(12)를 포함하는 시스템(10)의 일 실시예를 나타내고 있다. 마스터(16)는, 예를 들어, 비디오 게임 콘솔의 CPU 및 GPU일 수 있고, 콘솔의 사용자에 의해 현재 플레이되고 있는 비디오 게임에 관련된 데이터를, DRAM 디바이스(32) 상에서, 읽거나 쓰라고 요청하고 있을 수 있다.
요청(14)이 마스터(16)에 의해 발행될 때, 시스템(10)은 버스 패브릭(18)을 통해 요청을 전송하도록 구성되어 있다. 버스 패브릭은 도 1에서 마스터(16)와 메모리 제어기(12) 사이에 배열된 단일의 패브릭으로서 도시되어 있다. 그렇지만, 버스 패브릭(18)은 또한 마스터(16)로부터의 모든 트래픽 패턴을 수용하기 위해 필요한 만큼의 버스 세그먼트를 포함한다. 도 3은 버스 패브릭이 레이트 제한기를 갖는 세그먼트(60)와 레이트 제한기를 갖지 않는 세그먼트(62)를 비롯한 복수의 버스 세그먼트로 분할되어 있는, 시스템(10)의 제2 실시예를 나타내고 있다. 도 1을 다시 참조하면, 버스 패브릭(18)은 각각의 마스터(16)에 할당된 우선순위 레벨에 기초하여 각각의 요청(14)에 우선순위 레벨을 할당하기 위해 QoS 우선순위 할당 논리(QoS Priority Assignment Logic)(20)를 적용하도록 구성될 수 있다. 우선순위 레벨이 시스템(10) 상에서 실행 중인 소프트웨어 애플리케이션에 의해 각각의 마스터(16)에 할당될 수 있다. 이러한 할당은, 예를 들어, 시스템(10)의 부트업마다 한번씩, 또는 애플리케이션이 시스템(10) 상에서 실행되고 있을 때 애플리케이션 경계에서, 또는 시스템(10) 상의 가상화된 환경의 각각의 부트업 시에 일어날 수 있다. 마스터(16)는 대역폭 변동에 민감할 수 있는 그리고 대역폭 변동이 과도하게 되는 경우 열화된 사용자 경험을 야기할 수 있는 실시간 마스터 디바이스를 포함할 수 있다. 이러한 실시간 마스터 디바이스는 시스템(10) 상에서 실행 중인 소프트웨어 애플리케이션에 의해 보다 높은 우선순위 레벨을 할당받을 수 있다.
각각의 요청(14)에 우선순위 레벨을 할당한 후에, 버스 패브릭(18)은 요청을 메모리 제어기(12)로 송신하도록 구성될 수 있다. 메모리 제어기(12)는 우선순위 레벨에 기초하여 각각의 DRAM 요청(14)을 복수의 우선순위 큐(22) 중 하나에 할당하고, DRAM 요청(14)을 복수의 우선순위 큐(22) 각각에 스케줄링하도록 추가로 구성될 수 있다.
요청(14)을 스케줄링하기 위해 우선순위 큐(22)에 의해 사용될 수 있는 스케줄링 파라미터를 이해하기 위해, DRAM 디바이스(32)의 구조 및 동작의 논의에 대해 간략하게 살펴보는 것이 도움이 된다. DRAM 디바이스(32)는 "페이지"의 어레이로서 구성될 수 있고, 각각의 페이지는 다수의 메모리 셀(예를 들어, 페이지당 8 킬로비트 내지 16 킬로비트)을 포함한다. 페이지는 행과 열로 배열될 수 있고, 뱅크로 추가로 그룹화되며, 각각의 뱅크는 수만 개의 페이지를 포함한다. DRAM 디바이스(32)에서의 페이지는 요청들(14) 중 하나에 의해 액세스되었는지에 따라 열려(open) 있거나 닫혀(closed) 있을 수 있다. 시스템(10)은 시스템(10)이 부트업될 때 DRAM 디바이스(32)의 모든 뱅크 내의 모든 페이지가 닫혀 있도록 구성될 수 있다. DRAM 디바이스(32)의 뱅크 내의 닫혀 있는 페이지에의 액세스를 요청하는 DRAM 요청들(14) 중 하나가 발행될 때, 요청(14)은 처음에 "페이지 미스(page miss)"를 가져올 것이고, 메모리 제어기(12)는 대상 페이지를 열기 위해 "페이지 열기 동작(page open operation)"을 수행해야만 할 것이다. 페이지 열기 동작이 행해지고 있는 동안, 메모리 제어기(12)는 그 뱅크 내의 임의의 다른 페이지의 내용에 액세스할 수 없을 것인데, 그 이유는 메모리 제어기(12)가 전형적으로 언제라도 각각의 뱅크에서 하나의 열린 페이지만을 허용하도록 구성되어 있기 때문이다. 그 결과, 페이지 열기 동작 동안, 메모리 제어기(12)는 다른 뱅크 내의 페이지를 대상으로 하는 요청(14)을 탐색하도록 구성될 수 있다.
페이지가 열려 있을 때, 동일한 페이지에 액세스하려는 후속 요청(14)은 처음에 메모리 제어기(12) 내에서 "페이지 히트(page hit)"를 가져올 것이고, 따라서 페이지 열기 동작을 수행함이 없이 완료될 수 있다. 이와 같이, 메모리 제어기(12)는 페이지 열기 동작의 필요성을 감소시키기 위해 동일한 페이지에의 액세스를 요청하는 요청들(14)이 하나로 그룹화되는 "동일 페이지 수집(same page gathering)"을 수행하도록 구성될 수 있다.
후속 요청이 마지막으로 발행된 요청(즉, 현재 요청 이전에 완료된 마지막 요청)과 동일한 뱅크 내의 상이한 페이지를 대상으로 할 때, 소위 "페이지 충돌(page conflict)"이 일어나고, 메모리 제어기(12)는 요청(14)의 대상인 페이지를 페이지 열기 동작으로 열기 전에 현재 열려 있는 페이지를 "페이지 닫기 동작(page close operation)"으로 닫아야만 한다. 페이지 열기 동작 및 페이지 닫기 동작 둘 다는 DRAM 데이터 버스(30) 상에서 대역폭을 소비한다. DRAM 데이터 버스(30) 상에서의 대역폭 소비는 주어진 요청(14)을 완료하는 데 필요한 버스 사이클의 수로서 측정될 수 있다. 동작마다 DRAM 데이터 버스(30) 상에서의, 버스 사이클의 수, 그리고 따라서 소비되는 대역폭(48)의 양이 DRAM 디바이스(32)에 대해 사용되는 특정 유형의 메모리의 타이밍 파라미터에 의해 결정된다. 그렇지만, 사용되는 메모리의 유형에 관계없이, DRAM 데이터 버스(30) 상에서의 대역폭 소비(48)는 요청(14)이 페이지 히트, 페이지 미스, 또는 페이지 충돌을 가지는지에 따라 달라진다.
그에 부가하여, DRAM 요청(14)은 읽기 요청 또는 쓰기 요청 중 어느 하나일 수 있다. 요청(14)이 읽기 요청인 경우, 메모리 제어기(12)는 DRAM 명령 버스(34) 상으로 "읽기 명령(read command)"을 송신하고 미리 결정된 수의 클럭 사이클 후에 DRAM 데이터 버스(30) 상으로 "읽혀진 데이터(read data)"를 수신하는, "읽기 동작(read operation)"을 수행하도록 구성되어 있다. 요청(14)이 쓰기 요청인 경우, 메모리 제어기(12)는 DRAM 명령 버스(34) 상으로 쓰기 명령(write command)을 송신하고 미리 결정된 수의 클럭 사이클을 기다린 후에 데이터 버스(30) 상으로 쓰기 데이터(write data)를 송신하는, 쓰기 동작(write operation)을 수행하도록 구성되어 있다. 그렇지만, 요청(14)이 쓰기 요청이고 마지막으로 발행된 요청이 읽기 요청이었던 경우, 메모리 제어기(12)는 데이터 버스(30)의 사용에서의 충돌로 인해 생기는 데이터 위험(data hazard)(즉, 데이터를 잘못 처리할 위험)을 피하기 위해 "읽기-쓰기 버스 전환(read to write bus turnaround)"을 수행하도록 구성되어 있다. 예를 들어, 쓰기 동작이 시작될 때, 읽혀진 데이터가 DRAM 데이터 버스(30) 상에서 여전히 반환되고 있는 경우, 나가는 쓰기 데이터와 들어오는 읽혀진 데이터 간의 버스 충돌이 일어날 수 있다. 쓰기 동작 동안 이러한 일을 피하기 위해, 쓰기 동작을 시작하기 전에, 메모리 제어기(12)는 이전의 읽혀진 데이터가 DRAM 데이터 버스(30) 상에서 반환되고 있지 않다는 것을 확인하도록 구성될 수 있다. 충돌이 있을 때, 메모리 제어기(12)는, 쓰기 데이터가 DRAM 디바이스(32)로 송신되기 전에 읽혀진 데이터가 데이터 버스(30) 상으로 반환될 수 있게 하기 위해 쓰기 명령이 지연되는, 읽기-쓰기 버스 전환을 수행하도록 구성될 수 있다. 이와 유사하게, 요청(14)이 읽기 요청이고 마지막으로 발행된 요청이 쓰기 요청이었던 경우, 메모리 제어기(12)는 읽혀진 데이터가 DRAM 디바이스(32)로부터 DRAM 데이터 버스(30)를 통해 메모리 제어기(12)로 반환되기 전에 쓰기 데이터가 DRAM 디바이스(32)의 메모리에 써질 수 있게 하기 위해 읽기 명령을 지연시키는, "쓰기-읽기 버스 전환(write to read bus turnaround)"을 수행하도록 구성되어 있다. 읽기-쓰기 버스 전환 동작과 쓰기-읽기 버스 전환 동작 둘 다는 DRAM 데이터 버스(30) 상에서 다수의 버스 사이클 그리고 따라서 일정 양의 대역폭을 소비한다. 이와 같이, 요청(14)을 완료하는 데 필요한 DRAM 데이터 버스(30) 상에서 소비되는 대역폭(48)의 양은 메모리 제어기(12)에 의해 DRAM 디바이스(32)에 발행되는 현재 요청(14)의 요청 유형(즉, 읽기 또는 쓰기) 및 마지막으로 발행된 요청(14)의 요청 유형 둘 다에 의존할 수 있다. 대역폭 소비를 최소화하기 위해, 메모리 제어기(12)는 읽기-쓰기 버스 전환 동작 및 쓰기-읽기 버스 전환 동작의 필요성을 감소시키기 위해 요청 유형에 기초하여 요청들(14)이 그룹화되는 "읽기/쓰기 그룹화(read/write grouping)"를 수행하도록 구성될 수 있다.
게다가, 요청(14)이 읽기 요청인 경우, 요청(14)을 발행하는 마스터(16)가 DRAM 디바이스(32)에 아직 써지지 않은 데이터를 요청하고 있을 수 있다. 데이터가 써지기 전에 요청(14)을 발행하는 것을 피하기 위해, 요청(14)의 페이지 주소가 모든 우선순위 큐(22)에 있는 모든 쓰기 요청(14)의 페이지 주소와 비교되어야만 한다. 이 프로세스는 주소 충돌 해결(address conflict resolution)이라고 지칭되고, 데이터 일관성을 보장하기 위해 사용될 수 있다. 일치가 있는 경우, 문제의 읽기 요청(14)은 모든 이전의 쓰기 요청(14)이 완료될 때까지 기다려야만 한다.
이하에 나타낸 표 1은 요청된 페이지의 위치, 요청 유형 및 요청(14)이 행해질 때의 DRAM 디바이스(32)의 상태(즉, 이전에 완료된 요청 유형)에 기초하여 주어진 요청(14)의 일부 통상적인 경우에 대한 대역폭 비용의 예를 나타낸다.
버스 사이클로 된 요청별 대역폭 비용
이전 DRAM 요청 현재 DRAM 요청
동일한 페이지 상이한 페이지
읽기 쓰기 동일한 뱅크 상이한 뱅크
읽기 쓰기 읽기 쓰기
읽기 BL/2 BL/2 + tR2W tPRE + tACT + BL/2 tR2W + tPRE + tACT + BL/2
Figure pct00001
대상 페이지와 상이한 페이지가 열려 있는 경우: tPRE + tACT + BL/2
Figure pct00002
대상 페이지가 닫혀 있는 경우: tACT + BL/2
Figure pct00003
대상 페이지가 열려 있는 경우: BL/2
Figure pct00004
대상 페이지와 상이한 페이지가 열려 있는 경우: tR2W + tPRE + tACT + BL/2
Figure pct00005
대상 페이지가 닫혀 있는 경우: tACT + BL/2
Figure pct00006
대상 페이지가 열려 있는 경우: BL/2
쓰기 BL/2 + tW2R BL/2 tW2R + tPRE + tACT + BL/2 tPRE + tACT + BL/2
Figure pct00007
대상 페이지와 상이한 페이지가 열려 있는 경우: tW2R + tPRE + tACT + BL/2
Figure pct00008
대상 페이지가 닫혀 있는 경우: tACT + BL/2
Figure pct00009
대상 페이지가 열려 있는 경우: BL/2
Figure pct00010
대상 페이지와 상이한 페이지가 열려 있는 경우: tPRE + tACT + BL/2
Figure pct00011
대상 페이지가 닫혀 있는 경우: tACT + BL/2
Figure pct00012
대상 페이지가 열려 있는 경우: BL/2
상기 표 1에서, 변수 BL은 DRAM 디바이스(32)의 버스트 길이(Burst Length)를 나타내고; BL/2는 DRAM 데이터 버스(30)가, DDRn, 저전력 DDRn(LPDDRn), 또는 그래픽 DDRn (GDDRn)과 같은, DDR(double data rate) 메모리 디바이스에 대한 DRAM 디바이스(32)로부터 읽혀진 또는 DRAM 디바이스(32)에 써지는 데이터를 전달하는 데 사용 중일 기간이며; 변수 tACT는 앞서 기술된 바와 같이 페이지를 활성화시키는 데 걸리는 시간인, 페이지를 여는 대역폭 비용이고; TPRE는 앞서 기술된 바와 같이 열린 페이지를 닫는 데 걸리는 시간인, 페이지를 닫는 대역폭 비용이며; tW2R은 앞서 기술된 바와 같이 쓰기-읽기 버스 전환을 수행하는 것에 의해 쓰기 동작 후에 읽기 동작을 위해 DRAM 데이터 버스(30)를 전환하는 데 필요한 DRAM 데이터 버스(30)의 사이클의 수로서 표현되는 비용이고; tR2W은 앞서 기술된 바와 같이 읽기-쓰기 버스 동작을 수행하는 것에 의해 읽기 후에 쓰기 동작을 위해 DRAM 데이터 버스(30)를 전환하는 데 필요한 DRAM 데이터 버스(30)의 사이클의 수로서 표현되는 비용이다. 유의할 중요한 점은, 상이한 DRAM 메모리 디바이스(예컨대, DDR3, LPDDR3, 또는 GDDR3)가 이러한 파라미터에 대해 상이한 이름을 사용할 수 있지만, 본 개시내용에 기술된 개념들이 앞서 기술된 DRAM 디바이스 중 임의의 것에 적용된다는 것이다. 유의할 점은, 이하의 단락에서 상세히 기술될 리프레시 동작이, 마스터(16)의 오버헤드 비용(overhead cost)이 아니라 DRAM 디바이스(32)의 오버헤드 비용인 것으로 생각되기 때문에, 표 1에 포함되지 않았다는 것이다.
표 1은 시스템(10)의 하나의 가능한 실시예를 나타낸다. 시스템(10)은 표 1에 열거된 파라미터로 제한되지 않고, QoS 방식의 최종 목적에 따라서, 원하는 결과를 달성하기 위해 본원에 기술되는 원리들에 따라 다른 표가 작성될 수 있다.
메모리 제어기(12)는 DRAM 데이터 버스(30) 상에서의 대역폭 소비를 최소화하기 위해 상기 방법에 따라 우선순위 큐(22)에서 DRAM 요청(14)을 스케줄링하도록 구성될 수 있다. 각각의 우선순위 큐(22)는 복수의 큐(46)로 이루어져 있을 수 있다. 각각의 우선순위 레벨에 대한 우선순위 큐(22)의 개수 및 크기는 물론, 각각의 우선순위 큐(22) 내의 큐(46)의 개수는 구현에 따라 달라질 수 있다. 도 1에, N 개의 마스터 디바이스(16) 및 M 개의 우선순위 큐(22)가 도시되어 있다. 주어진 우선순위 레벨에 대한 각각의 우선순위 큐(22) 내의 큐는 적어도 하나의 읽기 큐 및 하나의 쓰기 큐를 포함할 수 있다. 메모리 제어기(12)는 복수의 우선순위 큐(22) 각각 내에서 요청(14)을 스케줄링하도록 구성될 수 있다. 스케줄은 마스터 의존적이고 주소 충돌 해결, 동일 페이지 수집, 읽기/쓰기 그룹화, 및 각각의 요청(14)에 할당된 우선순위 레벨과 같은 파라미터에 기초할 수 있다.
메모리 제어기(12)는 DRAM 요청(14)을 마스터 스케줄링 멀티플렉서(24)로 송신하고, 각각의 마스터(16)에 할당된 대역폭의 미사용 부분을 주기적으로 모니터링하며, 대역폭의 미사용 부분이 미리 결정된 레벨 미만으로 떨어지는 경우 메모리 제어기(12)에서 DRAM 요청(14)을 조절(throttle)하도록 추가로 구성될 수 있다. 메모리 제어기(12)는, 앞서 기술된 스케줄링 파라미터에 기초하여, 우선순위 큐(22)로부터 최상의 후보 요청(14)을 선택한 후에 DRAM 요청(14)을 마스터 스케줄링 멀티플렉서(24)로 송신하도록 구성될 수 있다.
마스터 스케줄링 멀티플렉서(24)는, DRAM 데이터 버스(30)에서의 미리 결정된 양의 대역폭을 복수의 마스터(16) 각각에 할당하도록 구성되어 있는 세분화된 QoS 대역폭 프로비저닝 논리(28)를 비롯한, 세분화된 QoS 논리(26)를 적용하도록 구성될 수 있다. 세분화된 QoS 논리(26)는 DRAM 디바이스(32)의 대역폭을 2개의 카테고리 - 유용한 QoS 대역폭(useful QoS bandwidth) 및 오버헤드 대역폭(overhead bandwidth) - 로 분할하도록 구성될 수 있다. 오버헤드 대역폭은 DRAM 디바이스(32)의 올바른 동작을 보장하기 위해 메모리 제어기(12)에 의해 소비되는 대역폭일 수 있고, 리프레시 동작을 위해 소비되는 대역폭을 포함할 수 있다. 리프레시 동작 동안, 메모리 제어기(12)는 DRAM 디바이스(32)의 모든 뱅크에 대한 모든 읽기 동작 및 쓰기 동작을 보류시키고, 모든 열린 페이지를 닫으며, DRAM 디바이스(32) 내의 모든 페이지의 내용을 리프레시하기 위해 리프레시 명령을 발행하도록 구성되어 있다. 리프레시 동작이 완료된 후에, 메모리 제어기(12)는 읽기 동작 및 쓰기 동작을 재개하도록 구성되어 있다. 유용한 QoS 대역폭은 DRAM 디바이스(32)에 대해 읽기 동작 및 쓰기 동작과 같은 동작을 수행하기 위해 마스터(16)에 의해 소비되는 대역폭(48)을 포함할 수 있다. 메모리 제어기(12)는 세분화된 QoS 대역폭 프로비저닝 논리(28)를 통해 미리 결정된 양의 유용한 QoS 대역폭을 마스터(16)에 할당하도록 구성될 수 있다. 각각의 마스터(16)에 할당된 대역폭의 양은 시스템(10) 상에서 실행 중인 소프트웨어 애플리케이션에 의해 결정될 수 있다. 이러한 할당은, 예를 들어, 시스템(10)의 부트업마다 한번씩, 또는 애플리케이션이 시스템(10) 상에서 실행되고 있을 때 애플리케이션 경계에서, 또는 시스템(10) 상의 가상화된 환경의 각각의 부트업 시에 일어날 수 있다.
메모리 제어기(12)는, 각각의 요청(14)을 위해 DRAM 데이터 버스(30) 상에서 각각의 마스터(16)에 의해 소비되는 대역폭(48)을 계산하는 것 및 세분화된 QoS 대역폭 프로비저닝 논리(28)에 의해 각각의 마스터(16)에 할당된 유용한 QoS 대역폭의 양으로부터 소비되는 대역폭(48)을 차감하는 것에 의해, 각각의 마스터(16)에 대한 대역폭의 미사용 부분을 결정하도록 구성될 수 있다. 메모리 제어기(12)는 요청(14)에 의해 소비되는 대역폭(48)을 요청(14)을 완료하는 데 필요한 DRAM 데이터 버스(30)의 버스 사이클의 수로 측정하도록 구성될 수 있다. 요청(14)을 완료하는 데 필요한 버스 사이클의 수는, 요청 유형(즉, 읽기 또는 쓰기), DRAM 디바이스(32)에서의 요청(14)의 대상인 페이지가 현재 열려 있는지 닫혀 있는지, 및 요청(14)의 대상인 페이지가 마지막으로 발행된 요청의 대상인 페이지와 동일한 뱅크에 위치되어 있는지 여부와 같은 요청(14)의 다양한 특성에 따라 달라질 수 있다.
메모리 제어기(12)의 세분화된 QoS 논리(26)는 QoS 크레딧 누적기(QoS credit accumulator)(36)를 포함하도록 추가로 구성될 수 있다. QoS 크레딧 누적기(36)는 복수의 마스터(16) 각각에 대해 크레딧을 증분적으로 누적하도록 구성될 수 있다. 누적 속도는 세분화된 QoS 대역폭 프로비저닝 논리(28)에 의해 마스터에 할당된 대역폭에 대응할 수 있고, 각각의 마스터(16)에 대한 총 크레딧은 미리 결정된 최대 QoS 크레딧 값을 초과하지 않을 수 있다. 예를 들어, 주어진 마스터(16)가 DRAM 데이터 버스(30)에서 1 기가바이트/초의 대역폭을 할당받고 DRAM 데이터 버스(30)가 200 MHz(200,000,000 사이클/초)의 클럭 주파수로 동작하고 있는 경우, QoS 크레딧 누적기(36)는 문제의 마스터(16)에 대해 지정된 사이클당 5 바이트 분의 크레딧을 누적할 것이다. 마스터(16)가 요청(14)을 발행하는 경우, 요청(14)에 의해 소비되는 대역폭(48)이 QoS 크레딧 누적기(36)에서 마스터(16)에 대응하는 크레딧으로부터 차감될 것이다. 마스터(16)가 요청(14)을 발행하지 않는 경우, QoS 크레딧 누적기(36)는 마스터(16)에 대한 총 크레딧이 최대 QoS 크레딧 값에 도달할 때까지 5 바이트/사이클의 레이트로 계속하여 크레딧을 누적할 것이다. 시스템(10)은 시스템(10) 상에서 실행 중인 소프트웨어 애플리케이션이 최대 QoS 크레딧 값을 결정할 수 있게 하도록 구성될 수 있다.
세분화된 QoS 논리(26)는 각각의 DRAM 메모리 요청에 의해 소비되는 DRAM 데이터 버스 상에서의 대역폭(48)을 산출하고 산출된 대역폭을 각각의 마스터에 대응하는 QoS 크레딧 누적기에서의 크레딧으로부터 차감함으로써 각각의 마스터에 대한 크레딧 잔고(credit balance)를 계산하도록 구성될 수 있는 세분화된 QoS 요금 정산 논리(fine-grained QoS charge accounting logic)(38)를 추가로 포함하도록 구성될 수 있다. 도 2는 세분화된 QoS 요금 정산 논리(38)의 동작에 포함될 수 있는 프로세스의 개략도를 나타내고 있다. 도시된 바와 같이, 세분화된 QoS 요금 정산 논리(38)는 현재 큐잉된 요청에 관한 현재 요청 정보(50)를, 우선순위 큐(22)로부터, 수신하도록 구성될 수 있다. 현재 요청 정보(50)는 요청(14)의 요청 유형(즉, 읽기 또는 쓰기)은 물론, 우선순위 큐(22)로부터 마스터 스케줄링 멀티플렉서(24)로 현재 송신되고 있는 요청(14)의 대상인 페이지의 페이지 주소 및 뱅크를 포함할 수 있다. 그에 부가하여, 세분화된 QoS 요금 정산 논리(38)는 마지막으로 발행된 요청 정보(52)를 DRAM 프로토콜 엔진(44)으로부터 수신하도록 추가로 구성될 수 있다. 마지막으로 발행된 요청 정보(52)는 요청(14)의 요청 유형(즉, 읽기 또는 쓰기)은 물론, DRAM 디바이스(32)로 마지막으로 송신되었던 요청(14)의 대상인 페이지의 페이지 주소 및 뱅크를 포함할 수 있다. 마지막으로 발행된 요청 정보(52)는 DRAM 디바이스(32)에 마지막으로 발행된 요청(14)이 페이지 히트, 페이지 미스, 또는 페이지 충돌을 가졌는지를 추가로 포함할 수 있다. 세분화된 QoS 요금 정산 논리(38)는 DRAM 데이터 버스(30) 상에서의 소비되는 대역폭(48)을 산출하고 그 양을 요청(14)을 발행한 마스터(16)에 대응하는 QoS 크레딧 누적기(36)에서의 크레딧으로부터 차감하기 위해 현재 요청 정보(50) 및 마지막으로 발행된 요청 정보(52) 중 하나 또는 둘 다를 사용하도록 추가로 구성될 수 있다. 세분화된 QoS 요금 정산 논리(38)는 또한 DRAM 프로토콜 엔진(44)으로부터 수신되는 전역 페이지 상태 정보(58)를 사용하도록 구성될 수 있다. 전역 페이지 상태 정보(58)는 DRAM 디바이스(32) 내의 모든 페이지의 현재 상태를 포함할 수 있다. 세분화된 QoS 요금 정산 논리(38)는, DRAM 디바이스(32)에 발행된 경우, 어느 요청(14)이 페이지 히트, 페이지 미스 또는 페이지 충돌을 가질 것인지를 결정하기 위해 전역 페이지 상태 정보(58)를 사용할 수 있다. 세분화된 QoS 요금 정산 논리(38)는 요청(14)에 의해 소비되는 대역폭(48)을 QoS 크레딧 누적기(36)에서의 총 크레딧으로부터 차감하기 전에 리프레시에 의해 소비되는 전역 오버헤드 대역폭(56) 및 리프레시에 대한 클럭 사이클별 크레딧 이득(54)을 고려하도록 추가로 구성될 수 있다. 시스템(10)이 유용한 QoS 대역폭만을 마스터(16)에 할당하도록 구성될 수 있기 때문에, QoS 요금 정산 논리(38)는 리프레시 동작에 의해 소비되는 대역폭 또는 다른 형태의 오버헤드 대역폭 소비를 보상하기 위해 클럭 사이클별 크레딧 이득을 제공하도록 구성될 수 있다. QoS 요금 정산 논리(38)가 마지막으로 발행된 요청(14)에 의해 소비되는 대역폭(48)을 차감한 후에, 세분화된 QoS 크레딧 누적기(36)는 각각의 마스터(16)에 대한 QoS 크레딧 누적기(36)에서의 현재 잔고를 이하에서 논의되는 QoS 스케줄링 논리(40)로 송신하도록 추가로 구성될 수 있다.
도 1을 다시 참조하면, 세분화된 QoS 논리(26)는 각각의 요청의 우선순위 클래스에 기초하여 DRAM 요청(14)을 스케줄링하고 DRAM 요청(14)을 발행하는 마스터(16)에 대한 QoS 크레딧 누적기(36)에서의 크레딧 잔고가 미리 결정된 최소 QoS 크레딧 값 미만인 경우 DRAM 요청(14)을 조절하도록 구성되어 있는 세분화된 QoS 스케줄링 논리(40)를 포함하도록 추가로 구성될 수 있다. 세분화된 QoS 스케줄링 논리(40)는 각각의 큐잉된 요청(14)에 대응하는 각각의 마스터(16)에 대한 현재 크레딧 잔고를 세분화된 QoS 요금 정산 논리(38)로부터 수신하도록 구성될 수 있다. 세분화된 QoS 스케줄링 논리(40)는 가장 높은 우선순위 레벨 및 미리 결정된 최소 QoS 크레딧 값 초과의 크레딧 잔고를 갖는 요청(14)을 선택하도록 추가로 구성될 수 있다. 요청(14)이 최소 QoS 크레딧 값 미만의 크레딧 잔고를 가지는 경우, 세분화된 QoS 스케줄링 논리(40)는, 요청(14)의 우선순위 레벨에 관계없이, 요청(14)을 조절하도록 구성될 수 있다. 다수의 요청(14)이 동일한 우선순위 레벨 및 최소 QoS 크레딧 값 초과의 크레딧 잔고를 가지는 경우, 스케줄링이 라운드-로빈(round-robin) 방식으로 또는 다른 적당한 기본 스케줄링 알고리즘(default scheduling algorithm)에 따라 수행될 수 있다. 모든 이용가능한 요청(14)이 최소 QoS 크레딧 값 미만의 크레딧 잔고를 가지는 경우, 가장 높은 우선순위 레벨을 갖는 요청(14)이 선택될 수 있다. 시스템(10)은 시스템(10) 상에서 실행 중인 소프트웨어 애플리케이션이 최소 QoS 크레딧 값을 결정할 수 있게 하도록 구성될 수 있다.
메모리 제어기(12)는 DRAM 요청(14)을 마스터 스케줄링 멀티플렉서(24)로부터 수신하고 DRAM 요청(14)을 DRAM 명령 버스(34)를 통해 DRAM 디바이스(32)로 송신하도록 구성된 DRAM 프로토콜 엔진(44)을 포함하도록 추가로 구성될 수 있다. DRAM 프로토콜 엔진(44)은 세분화된 QoS 논리(26)에 의해 생성된 스케줄에 기초하여 마스터 스케줄링 멀티플렉서(24)에 의해 선택된 DRAM 요청(14)을 수신하도록 구성될 수 있다. 메모리 제어기(12)는, DRAM 요청(14)을 DRAM 프로토콜 엔진(44)으로 송신하기 전에, DRAM 요청(14)을 DRAM 명령(42)으로 변환하도록 추가로 구성될 수 있다. DRAM 프로토콜 엔진(44)은 응답을 DRAM 디바이스(32)로부터 수신하고 마지막으로 발행된 요청(14)에 관한 정보를 세분화된 QoS 요금 정산 논리(38)로 송신하도록 추가로 구성될 수 있다. 선택적으로, 프로토콜 엔진(44)은 DRAM 요청(14)이 성공적으로 완료되었다는 것을 메모리 제어기(12)에 알려주기 위해 인터럽트의 형태로 되어 있을 수 있는 응답을 DRAM 디바이스(32)로부터 수신하도록 구성될 수 있다. 프로토콜 엔진(44)은, 도 2에 도시된 바와 같이, 마지막으로 발행된 요청 정보(52)를 세분화된 QoS 요금 정산 논리(38)로 송신하도록 추가로 구성될 수 있다. 이 정보는 요청(14)의 요청 유형(즉, 읽기 또는 쓰기), 요청(14)의 대상인 페이지의 페이지 주소 및 뱅크, 그리고 요청(14)이 페이지 히트, 페이지 미스 또는 페이지 충돌을 가졌는지를 포함할 수 있다.
도 3은 DRAM 데이터 버스의 대역폭을 프로비저닝하기 위해 세분화된 QoS 논리를 실행하도록 구성된 시스템(100)의 제2 실시예를 나타내고 있다. 시스템(100)은 마스터(16), 버스 패브릭(18), 및 DRAM 메모리 제어기(12)가 형성되어 있는 시스템 온 칩(SoC)(101)을 포함하고, DRAM 메모리 제어기(12)는 차례로 DRAM 디바이스(32)와 통신한다. DRAM 디바이스(32)는 SoC(101) 상에 또는 독립적인 디바이스로서 형성될 수 있다. 시스템 온 칩 상에 형성된 다양한 컴포넌트는 앞서 기술된 바와 유사하게 기능하고, 간략함을 위해 다시 기술되지 않을 것이다. 앞서 기술된 바와 같이, 이 실시예에서, 버스 패브릭은 레이트 제한기를 갖는 세그먼트(60)와 레이트 제한기를 갖지 않는 세그먼트(62)를 비롯한 복수의 버스 세그먼트로 분할되어 있다. 시스템 온 칩(101)이 버스 패브릭 상에서의 최소 고정 양의 대역폭이 각각의 마스터에 대해 예비되도록 하면서, 각각의 마스터에 의해 소비되는 최대 대역폭을 제한하는 것에 의해, 각각의 마스터가 이 고정 양을 초과하지 않도록 하기 위해 레이트 제한기(62)를 이용한다는 것을 잘 알 것이다. 이것은 스케줄링 충돌을 회피하고 레이트 제한된 마스터로부터 DRAM 디바이스에의 효율적인 액세스를 증진시킨다. 버스 세그먼트 M과 같은, 버스 패브릭의 레이트 제한되지 않은 세그먼트만을 통과하는 새로운 마스터가 이러한 시스템에 추가되는 경우, 새로운 마스터는 버스 패브릭 상에서 너무 많은 대역폭을 소비할 수 있고 그리고/또는 고정 양의 예비된 대역폭을 가질 것을 예상하여 설계되었던 다른 마스터의 성능을 열화시킬 수 있다. 이와 같이, 레이트 제한기가 어떤 스케줄링 제어를 시행하는 동안, 레이트 제한기가 버스 세그먼트 M 상에 구성되어 있지 않기 때문에, 레이트 제한되지 않은 버스 세그먼트 M을 통과하는 DRAM 요청이 상세하게는 스케줄링 멀티플렉서(24)에 의해 적용되는 우선순위 클래스 및 세분화된 QoS 스케줄링으로부터 이득을 볼 수 있고, 이는 차례로 버스 세그먼트 M을 통해 연결된 마스터에 의한 예비된 대역폭의 부적절한 소비를 방지할 것임을 잘 알 것이다. 이것은 모든 마스터의 성능을 개선시킬 수 있다.
이제 도 4를 참조하면, 메모리 제어기에서 세분화된 대역폭 프로비저닝을 수행하는 방법(400)의 플로우차트가 도시되어 있다. 이후부터 기술되는 방법은 도 1 및 도 2를 참조하여 앞서 기술된 시스템(10)의 하드웨어 상에서 또는 다른 적당한 하드웨어 상에서 구현될 수 있다. 본원에 기술되는 방법이 수행될 수 있는 적당한 하드웨어가 랩톱 및 데스크톱 개인용 컴퓨터, 스마트폰, 비디오 게임 콘솔, 태블릿 컴퓨팅 디바이스, 스마트 텔레비전 등을 포함한다는 것을 잘 알 것이다. 본 방법의 일부 구현에서, 파선으로 되어 있는 도 4에서의 단계들은 생략될 수 있는 반면, 다른 구현에서는, 파선으로 되어 있는 단계들이 포함된다.
방법(400)은, 402에서, 버스 패브릭을 통해 복수의 마스터로부터 DRAM(dynamic random access memory) 요청을 수신하는 단계를 포함할 수 있다. 404에서, 방법(400)은 각각의 DRAM 요청에 할당된 우선순위 레벨을 결정하는 단계를 포함할 수 있다.
502에서, 방법(400)은 각각의 DRAM 요청을 우선순위 레벨에 기초하여 복수의 우선순위 큐 중 하나에 할당하는 단계를 포함할 수 있다.
506에서, 방법(400)은 DRAM 요청을 마스터 스케줄링 멀티플렉서로 송신하는 단계를 포함할 수 있다.
406에서, 방법(400)은 DRAM 데이터 버스 상에서 각각의 마스터에 의해 소비되는 DRAM 데이터 버스 대역폭의 양을 결정하는 단계를 포함할 수 있다. 508에서, 이것이 각각의 마스터에 할당된 대역폭의 미사용 부분을 주기적으로 모니터링하는 것에 의해 적어도 부분적으로 달성될 수 있는 것으로 도시되어 있다.
408에서, 방법(400)은 각각의 마스터에 할당된 우선순위 클래스 및 각각의 마스터에 의해 소비되는 DRAM 데이터 버스 대역폭의 양에 기초하여 DRAM 요청에 대한 스케줄을 계산하기 위해 세분화된 QoS(quality of service) 논리를 적용하는 단계를 포함할 수 있다. 510에서, 대역폭의 미사용 부분이 미리 결정된 레벨 미만으로 떨어지는 경우 메모리 제어기에서 DRAM 요청을 조절하기 위해 스케줄이 계산될 수 있는 것으로 도시되어 있다.
410에서, 단계(408)에서 생성된 스케줄에 기초하여, 방법(400)은 DRAM 요청을 DRAM 명령으로 변환하는 단계를 포함할 수 있다. 412에서, 방법(400)은 DRAM 명령을 DRAM 명령 버스를 통해 적어도 하나의 DRAM 디바이스로 송신하는 단계를 포함할 수 있다. 414에서, 방법(400)은 메모리 데이터 버스를 통해 DRAM 디바이스로부터 응답을 수신하는 단계를 포함할 수 있다.
도 5는 도 4의 방법(400)의 단계(508, 510 및 412)가 달성될 수 있는 예시적인 하위 단계를 나타낸 플로우차트를 도시하고 있다. 방법(400)의 단계(508)는 하위 단계(602 내지 608)를 수행하는 것에 의해 달성될 수 있다. 602에서, 방법은 DRAM 데이터 버스에서의 미리 결정된 양의 대역폭을 복수의 마스터 각각에게 할당하기 위해 세분화된 QoS 대역폭 프로비저닝 논리를 적용하는 단계를 포함할 수 있다. 604에서, 방법은 복수의 마스터 각각에 대한 크레딧을 증분적으로 누적시키기 위해 QoS 크레딧 누적기를 적용하는 단계 - 누적 속도는 세분화된 QoS 대역폭 프로비저닝 논리에 의해 마스터에 할당된 대역폭에 대응하고, 각각의 마스터에 대한 총 크레딧은 미리 결정된 최대 QoS 크레딧 값을 초과하지 않음 - 를 포함할 수 있다. 606에서, 방법은 각각의 DRAM 메모리 요청에 의해 소비되는 DRAM 데이터 버스 상에서의 대역폭을 산출하기 위해 세분화된 QoS 요금 정산 논리를 적용하는 단계를 포함할 수 있다. 608에서, 방법은 산출된 대역폭(48)을 각각의 마스터에 대응하는 QoS 크레딧 누적기에서의 크레딧으로부터 차감함으로써 각각의 마스터에 대한 크레딧 잔고를 계산하는 단계를 포함할 수 있다.
방법(400)의 단계(510)는 하위 단계(610)에 의해 달성될 수 있다. 하위 단계(610)에 도시된 바와 같이, 세분화된 스케줄링 논리를 적용하고 대역폭의 미사용 부분이 미리 결정된 레벨 미만으로 떨어지는 경우 메모리 제어기에서 DRAM 요청을 조절하는 것은 각각의 요청의 우선순위 클래스에 기초하여 DRAM 요청을 스케줄링하기 위해 그리고 DRAM 요청을 발행하는 마스터에 대한 QoS 크레딧 누적기에서의 크레딧 잔고가 미리 결정된 최소 QoS 크레딧 값 미만인 경우 DRAM 요청을 조절하도록 스케줄을 계산하기 위해 세분화된 QoS 스케줄링 논리를 적용하는 것에 의해 달성된다.
방법(400)의 단계(412)는 하위 단계(612 내지 614)에 의해 달성될 수 있다. 612에서, 방법은 DRAM 요청을 마스터 스케줄링 멀티플렉서로부터 DRAM 프로토콜 엔진으로 송신하는 단계를 포함할 수 있다. 614에서, 방법은 DRAM 요청을 DRAM 프로토콜 엔진으로부터 복수의 DRAM 디바이스 중 적어도 하나로 송신하는 단계를 포함할 수 있다.
도 6은 도 4의 방법(400)의 단계(406)가 달성될 수 있는 예시적인 하위 단계(650, 652)를 나타낸 플로우차트를 도시하고 있다. 650에서, 방법은 마지막으로 발행된 요청에 관한 정보를 DRAM 프로토콜 엔진으로부터 수신하는 단계를 포함할 수 있다. 652에서, 방법(601)은 마지막으로 발행된 요청에 관한 정보에 기초하여 각각의 DRAM 메모리 요청에 의해 소비되는 DRAM 데이터 버스 상에서의 대역폭을 산출하는 단계를 포함할 수 있다.
도 1을 다시 간략히 참조하면, 시스템(10)은 또한 시스템(10)보다 더 적은 총 메모리 대역폭을 갖는 상이한 시스템 상에서 실행하도록 원래 설계된 하나 이상의 소프트웨어 프로그램의 성능을 모델링하는 데 사용될 수 있다. 그렇게 하기 위해, 마스터(16)로부터의 요청(14)의 일부분이 이러한 프로그램의 실행으로부터 발생된 것으로 태깅될 수 있다. 메모리 제어기(12)는 프로그램이 원래 설계되었던 시스템 상에서 실행 중인 경우 마스터(16)가 받게 될 대역폭 및 QoS를 산출할 수 있다. 이 산출을 사용하여, 메모리 제어기(12)는 이어서 대역폭 및 QoS를 시스템(10) 상에서의 요청(14)에 할당할 수 있다. 이와 같이, 컴퓨팅 디바이스는 복수의 마스터로부터의 메모리 요청들의 일부분을 컴퓨팅 디바이스보다 더 적은 총 메모리 대역폭을 갖는 시스템 상에서 실행하도록 원래 설계된 하나 이상의 소프트웨어 프로그램의 실행으로부터 발생된 것으로 태깅하도록, 그리고 하나 이상의 소프트웨어 프로그램이 보다 적은 총 메모리 대역폭을 갖는 시스템 상에서 실행 중인 경우 복수의 마스터가 받게 될 대역폭 및 QoS(quality-of-service)를 산출하도록 추가로 구성될 수 있다. 게다가, 컴퓨팅 디바이스은 복수의 마스터로부터의 메모리 요청에 대역폭 및 QoS를 할당하도록; 그리고 그 결과, 보다 적은 총 메모리 대역폭을 갖는 시스템 상에서의 하나 이상의 소프트웨어 프로그램의 성능을 모델링하도록 구성될 수 있다.
앞서 기술된 시스템 및 방법은 각종의 유용한 산업적 응용분야를 갖는다. 예를 들어, 제1 응용분야는 보다 빠른 메모리 유형이 보다 느린 메모리 유형과 동일한 대역폭 변동을 가져올 수 있게 하는 것이다. 예를 들어, 시스템은, 예를 들어, 2133 Mbps의 클럭 주파수로 동작하는 DDR3(Double Data Rate 3) 메모리를 사용하여 설계된 비디오 게임 콘솔일 수 있다. 비디오 게임 콘솔의 수명 주기 동안, (예컨대, 성능 또는 비용 이유로) 메모리를, 2400 Mpbs의 클럭 주파수로 동작하는 DDR4(Double Data Rate 4)로 변경하는 것이 유리할 수 있다. 이러한 변경이 비디오 게임 콘솔의 수명 주기 동안 행해지는 경우, DDR3에서 사용하도록 설계된 소프트웨어가 DDR4에서 제대로 실행되지 않을 위험이 있다. 그렇지만, 세분화된 QoS 논리는, 앞서 기술된 바와 같이, DDR4에서의 프로비저닝이 DDR3에서와 동일하도록 DRAM 데이터 버스 상에서의 대역폭의 양이 각각의 마스터 디바이스에게 프로비저닝될 수 있게 할 수 있다. 이와 같이, 세분화된 QoS 논리는, DDR4와 같은 장래 세대의 메모리 디바이스를, 그의 대역폭 변동이 DDR3와 같은 종래 세대의 메모리 디바이스와 실질적으로 유사하도록 제한할 수 있고, 그렇게 할 때, 종래 세대의 메모리 디바이스에 대해 설계된 소프트웨어가 부가의 대역폭 변동을 경험하지 않으면서 차세대의 메모리 디바이스를 사용하는 시스템 상에서 기능할 수 있게 할 수 있다.
앞서 기술된 시스템 및 방법에 대한 다른 예시적인 사용 사례 시나리오는 부가의 마스터 디바이스가 시스템에 추가될 때 마스터 디바이스에 의해 경험되는 대역폭 변동의 양을 감소시키는 것이다. 시스템이, 예를 들어, 비디오 게임 콘솔인 경우, 콘솔이 출시되고 소프트웨어가 그에 대해 설계된 후에 부가의 마스터가 추가될 수 있다. 부가의 마스터 디바이스는 바람직하지 않게도 부가의 대역폭 섭동(bandwidth perturbation)을 시스템에 유입시킬지도 모른다. 그렇지만, 마스터 디바이스를 격리시키고 그로부터 발생된 요청을 앞서 논의된 우선순위 클래스 및 세분화된 QoS 파라미터에 기초하여 논리적 방식으로 스케줄링함으로써, 그렇지 않았으면 새로운 마스터 디바이스를 추가하는 것에 의해 야기될 임의의 추가된 대역폭 섭동으로부터 시스템을 보호하기 위해 세분화된 QoS 논리가 사용될 수 있다. 이것을 달성하기 위해, 마스터 디바이스는 DRAM 데이터 버스 상에서 고정 양의 대역폭을 할당받을 수 있고, 모든 마스터 디바이스를 지원하기에 적절한 대역폭이 있는 한, 새로운 마스터가 추가될 때에도 각각의 마스터에 할당된 대역폭이 변하지 않은 채로 있을 것이다. 이 결과, 마스터 디바이스가 부가의 마스터가 추가되기 전과 동일한 방식으로 거동하도록 하는 데 필요한 테스트의 양의 상당한 감소가 얻어진다. 이러한 응용 분야에서, 시스템에서 각각의 마스터 디바이스에 대한 고정 양의 대역폭을 예비하기 위해 그리고 우선순위 클래스 및 세분화된 QoS 기법을 사용하여 기존의 마스터의 고정 예비 대역폭을 방해하지 않도록 새로운 마스터에 의해 소비되는 대역폭을 제한하기 위해 세분화된 QoS 논리가 사용된다.
제3 예는 물리적 DRAM 디바이스를 많은 논리적으로 독립적인 DRAM 디바이스로 파티셔닝하기 위해 앞서 기술된 시스템 및 방법을 사용하는 것이다. 마스터 디바이스가 이 논리적으로 독립적인 DRAM 디바이스에 할당될 수 있고 그로써 다른 파티션에 할당된 다른 마스터 디바이스에 의해 야기되는 대역폭 섭동으로부터 보호될 수 있다. 이러한 파티셔닝이 행해지면, 다른 파티션 상의 마스터 디바이스를 방해하는 일 없이 마스터 디바이스가 추가 및 제거될 수 있다.
dRAM 메모리 디바이스와 관련하여 앞서 기술된 시스템 및 방법이 SRAM(static random access memory), 플래시 메모리, 자기 디스크 메모리, 테이프 메모리, 및 다른 종류의 휘발성 및 비휘발성 메모리 디바이스를 비롯한 다른 유형의 메모리 디바이스에도 적용될 수 있다는 것을 잘 알 것이다. 이와 같이, 앞서 기술된 DRAM 데이터 버스는 메모리 데이터 버스일 수 있고, 앞서 기술된 DRAM 메모리 요청은 메모리 요청일 수 있으며, 앞서 기술된 DRAM 명령은 메모리 명령일 수 있고, 앞서 기술된 DRAM 명령 버스는 메모리 명령 버스일 수 있으며, 이 다양한 메모리 컴포넌트는, 이 단락에서 앞서 열거된 것과 같은, 특정 유형의 메모리 디바이스에서 동작하도록 구성되어 있다.
도 7은 앞서 기술된 시스템 및 방법이 구현될 수 있는 컴퓨팅 환경을 나타내고 있다. 도 7에 예시된 바와 같이, 컴퓨팅 시스템(700)은 프로세서(720), 비휘발성 메모리(722) 및 휘발성 메모리(724)를 갖는 호스트 시스템(718)를 포함할 수 있을 뿐만 아니라, 디스플레이 서브시스템(706), 통신 시스템(708), 및 입력 서브시스템(710)을 포함할 수 있고, 그 모두는 통신 버스 서브시스템(702)에 의해 연결되어 있다.
시스템(10)은 하나 이상의 개인용 컴퓨터, 서버 컴퓨터, 태블릿 컴퓨터, 케이블 셋톱 박스, 디지털 비디오 레코더, 비디오 서버 등과 같은 홈 엔터테인먼트 컴퓨터, 네트워크 컴퓨팅 디바이스, 게임 콘솔과 같은 게임 디바이스, 모바일 컴퓨팅 디바이스, 이동 통신 디바이스(예컨대, 스마트폰), 및/또는 다른 컴퓨팅 디바이스의 형태를 취할 수 있다.
호스트 시스템(718)의 프로세서(720)는 비휘발성 메모리(722) 및 휘발성 메모리(724)의 부분을 사용하여 명령어를 실행하도록 구성된 물리 디바이스이다. 예를 들어, 프로세서는 하나 이상의 애플리케이션, 서비스, 프로그램, 루틴, 라이브러리, 객체, 컴포넌트, 데이터 구조, 또는 다른 논리적 구성(logical construct)의 일부인 명령어를 실행하도록 구성될 수 있다. 이러한 명령어는 작업을 수행하거나, 데이터 유형을 구현하거나, 하나 이상의 컴포넌트의 상태를 변환시키거나, 기술적 효과를 달성하거나, 다른 방식으로 원하는 결과에 도달하도록 구현될 수 있다.
비휘발성 메모리(722)는 프로세서(720)에 의해 실행가능한 명령어를 보유하도록 구성된 하나 이상의 물리 디바이스를 포함한다. 비휘발성 메모리(722)는 처리 동안의 유한한 기간 동안 명령어를 보유하고 심지어 컴퓨팅 시스템에의 전력이 단절될 때에도 명령어를 계속하여 보유하는 플래시, EPROM, EEPROM 등과 같은 비휘발성 메모리를 포함할 수 있다. 휘발성 메모리(724)는 앞서 논의된 DRAM 디바이스(32)와 같은 DRAM, 또는 처리 동안의 유한한 기간 동안 명령어를 보유하지만 컴퓨팅 시스템이 꺼진 후에는 전형적으로 명령어를 계속하여 저장하지 않는 RAM을 포함할 수 있다.
프로세서(720), 영구적 메모리(722), 및 휘발성 메모리(724)의 양태가 하나 이상의 하드웨어 논리 컴포넌트에 하나로 통합될 수 있다. 이러한 하드웨어 논리 컴포넌트는, 예를 들어, FPGA(field-programmable gate array), PASIC/ASIC(program- and application-specific integrated circuit), PSSP/ASSP(program- and application-specific standard product), SoC(system-on-a-chip), 및 CPLD(complex programmable logic device)를 포함할 수 있다.
디스플레이 서브시스템(706)은 영구적 메모리(722) 또는 휘발성 메모리(724)에 의해 보유되는 데이터의 시각적 표현을 제시하는 데 사용될 수 있다. 이 시각적 표현은 그래픽 사용자 인터페이스(GUI)의 형태를 취할 수 있다. 본원에 기술된 방법 및 프로세스가 비휘발성 메모리(722) 또는 휘발성 메모리(724)에 의해 보유되는 데이터를 변경하고 따라서 비휘발성 메모리(722) 또는 휘발성 메모리(724)의 상태를 변환시킬 때, 기본 데이터(underlying data)의 변경을 시각적으로 표현하기 위해 디스플레이 서브시스템(706)의 상태도 마찬가지로 변환될 수 있다. 디스플레이 서브시스템(706)은 실질적으로 임의의 유형의 기술을 이용하는 하나 이상의 디스플레이 디바이스를 포함할 수 있다. 이러한 디스플레이 디바이스는 공유 인클로저(shared enclosure)에서 프로세서(720) 및/또는 비휘발성 메모리(722) 또는 휘발성 메모리(724)와 결합될 수 있거나, 이러한 디스플레이 디바이스가 주변 디스플레이 디바이스(peripheral display device)일 수 있다.
입력 서브시스템(710)은 키보드, 마우스, 터치 스크린, 또는 게임 컨트롤러와 같은 하나 이상의 사용자 입력 디바이스를 포함하거나 그와 인터페이싱할 수 있다. 일부 실시예에서, 입력 서브시스템은 선택된 NUI(natural user input) 컴포넌트를 포함하거나 그와 인터페이싱할 수 있다. 이러한 컴포넌트는 일체형이거나 주변기기일 수 있고, 입력 동작의 변환(transduction) 및/또는 처리가 온보드(on-board)로 또는 오프보드(off-board)로 핸들링될 수 있다. 예시적인 NUI 컴포넌트는 발화(speech) 및/또는 음성(voice) 인식을 위한 마이크로폰; 머신 비전(machine vision) 및/또는 제스처 인식을 위한 적외선, 컬러, 입체(stereoscopic), 및/또는 깊이 카메라; 움직임 검출 및/또는 의도 인식을 위한 머리 추적기, 눈 추적기, 가속도계 및/또는 자이로스코프는 물론; 뇌 활동을 평가하기 위한 전기장 감지 컴포넌트를 포함할 수 있다.
통신 서브시스템(708)은 시스템(10)을 하나 이상의 다른 컴퓨팅 디바이스와 통신가능하게 결합시키도록 구성될 수 있다. 통신 서브시스템(708)은 하나 이상의 상이한 통신 프로토콜과 호환되는 유선 및/또는 무선 통신 디바이스를 포함할 수 있다. 비제한적인 예로서, 통신 서브시스템(708)은 무선 전화 네트워크, 또는 유선 또는 무선 LAN(local-area network) 또는 WAN(wide-area network)을 통해 통신하도록 구성될 수 있다. 일부 실시예에서, 통신 서브시스템은 컴퓨팅 시스템(708)이 인터넷과 같은 네트워크를 통해 메시지를 다른 디바이스로 그리고/또는 그로부터 송신 및/또는 수신할 수 있게 할 수 있다.
본원에 기술되는 구성 및/또는 접근법이 사실상 예시적인 것이라는 것과, 다양한 변형이 가능하기 때문에, 이 구체적인 실시예 또는 예가 제한하는 의미로 간주되어서는 안된다는 것을 잘 알 것이다. 본원에 기술되는 구체적인 루틴 또는 방법은 임의의 수의 처리 전략 중 하나 이상을 나타낼 수 있다. 그에 따라, 예시된 및/또는 기술된 다양한 동작이 예시된 및/또는 기술된 순서로, 다른 순서로, 병렬로 수행될 수 있거나, 생략될 수 있다. 마찬가지로, 앞서 기술된 프로세스의 순서가 변경될 수 있다.
본 개시내용의 발명 요지는 본원에 개시되는 다양한 프로세스, 시스템 및 구성 그리고, 다른 특징, 기능, 동작 및/또는 특성은 물론, 그의 모든 등가물의 모든 신규의(novel) 비자명한(nonobvious) 콤비네이션(combination) 및 서브콤비네이션(subcombination)을 포함한다.

Claims (10)

  1. 메모리 제어기로서,
    버스 패브릭(bus fabric)을 통해 복수의 마스터로부터 메모리 요청을 수신하고,
    상기 복수의 마스터의 각각의 마스터에 할당된 우선순위 레벨을 결정하며,
    메모리 데이터 버스 상에서 각각의 마스터에 의해 소비되는 메모리 데이터 버스 대역폭의 양을 결정하고,
    각각의 마스터에 할당된 우선순위 클래스(priority class) 및 각각의 마스터에 의해 소비되는 메모리 데이터 버스 대역폭의 양에 기초하여 상기 메모리 요청에 대한 스케줄을 계산하기 위해 세분화된 QoS(quality of service) 논리(logic)를 적용하며 - 요청마다 각각의 마스터에 의해 소비되는 상기 메모리 데이터 버스 대역폭은 마지막으로 발행된 요청에 관한 정보에 기초하여 산출됨 -,
    상기 스케줄에 기초하여,
    상기 메모리 요청을 메모리 명령으로 변환하고,
    상기 메모리 명령을 메모리 명령 버스를 통해 적어도 하나의 메모리 디바이스로 송신하며,
    상기 메모리 데이터 버스를 통해 상기 메모리 디바이스로부터 응답을 수신하도록 구성되는, 메모리 제어기.
  2. 메모리 제어기에서 세분화된 대역폭 프로비저닝을 수행하는 방법으로서,
    버스 패브릭을 통해 복수의 마스터로부터 메모리 요청을 수신하는 단계와,
    각각의 상기 메모리 요청에 할당된 우선순위 레벨을 결정하는 단계와,
    메모리 데이터 버스 상에서 각각의 마스터에 의해 소비되는 메모리 데이터 버스 대역폭의 양을 결정하는 단계와,
    각각의 마스터에 할당된 우선순위 클래스 및 각각의 마스터에 의해 소비되는 메모리 데이터 버스 대역폭의 양에 기초하여 상기 메모리 요청에 대한 스케줄을 계산하기 위해 세분화된 QoS(quality of service) 논리를 적용하는 단계로서, 요청마다 각각의 마스터에 의해 소비되는 상기 메모리 데이터 버스 대역폭은 마지막으로 발행된 요청에 관한 정보에 기초하여 산출되는 것인, 상기 세분화된 QoS 논리를 적용하는 단계와,
    상기 스케줄에 기초하여,
    상기 메모리 요청을 메모리 명령으로 변환하는 단계;
    상기 메모리 명령을 메모리 명령 버스를 통해 적어도 하나의 메모리 디바이스로 송신하는 단계; 및
    메모리 데이터 버스를 통해 상기 메모리 디바이스로부터 응답을 수신하는 단계를 포함하는, 세분화된 대역폭 프로비저닝을 수행하는 방법.
  3. 제2항에 있어서, 상기 메모리 디바이스는 DRAM(dynamic random access memory) 디바이스이고, 상기 메모리 데이터 버스는 DRAM 데이터 버스이며, 상기 메모리 요청은 DRAM 메모리 요청이고, 상기 메모리 명령은 DRAM 메모리 명령이며, 상기 메모리 명령 버스는 DRAM 명령 버스이고,
    상기 방법은 각각의 DRAM 요청을 상기 우선순위 레벨에 기초하여 복수의 우선순위 큐 중 하나에 할당하는 단계를 더 포함하는, 세분화된 대역폭 프로비저닝을 수행하는 방법.
  4. 제3항에 있어서,
    상기 DRAM 요청을 상기 복수의 우선순위 큐로부터 마스터 스케줄링 멀티플렉서로 송신하는 단계와,
    각각의 마스터에 할당된 대역폭의 미사용 부분을 주기적으로 모니터링하는 단계와,
    상기 대역폭의 상기 미사용 부분이 미리 결정된 레벨 미만으로 떨어지는 경우 상기 DRAM 요청을 조절하기 위해 상기 스케줄을 계산하는 단계를 추가로 포함하는, 세분화된 대역폭 프로비저닝을 수행하는 방법.
  5. 제4항에 있어서, 각각의 마스터에 할당된 대역폭의 미사용 부분을 주기적으로 모니터링하는 단계는, 상기 DRAM 데이터 버스에서의 미리 결정된 양의 대역폭을 상기 복수의 마스터 각각에게 할당하기 위해 세분화된 QoS 대역폭 프로비저닝 논리를 적용하는 단계를 포함하는, 세분화된 대역폭 프로비저닝을 수행하는 방법.
  6. 제5항에 있어서, 각각의 마스터에 할당된 대역폭의 미사용 부분을 주기적으로 모니터링하는 단계는, 상기 복수의 마스터 각각에 대한 크레딧(credit)을 증분적으로 누적시키기 위해 QoS 크레딧 누적기(QoS credit accumulator)를 적용하는 단계를 포함하며, 누적 속도는 상기 세분화된 QoS 대역폭 프로비저닝 논리에 의해 상기 마스터에 할당된 상기 대역폭에 대응하고, 각각의 마스터에 대한 총 크레딧은 미리 결정된 최대 QoS 크레딧 값을 초과하지 않는 것인, 세분화된 대역폭 프로비저닝을 수행하는 방법.
  7. 제6항에 있어서, 각각의 마스터에 할당된 대역폭의 미사용 부분을 주기적으로 모니터링하는 단계는,
    각각의 DRAM 메모리 요청에 의해 소비되는 상기 DRAM 데이터 버스 상에서의 대역폭을 산출하기 위해 세분화된 QoS 요금 정산 논리(fine-grained QoS charge accounting logic)를 적용하는 단계와,
    상기 산출된 대역폭을 각각의 마스터에 대응하는 상기 QoS 크레딧 누적기에서의 크레딧으로부터 차감함으로써 각각의 마스터에 대한 크레딧 잔고(credit balance)를 계산하는 단계를 포함하는 것인, 세분화된 대역폭 프로비저닝을 수행하는 방법.
  8. 제7항에 있어서, 각각의 DRAM 메모리 요청에 의해 소비되는 상기 DRAM 데이터 버스 상에서의 대역폭을 산출하는 것은, 마지막으로 발행된 요청에 관한 정보에 기초하여 요청의 대역폭 비용을 산출하는 것을 포함하는 것인, 세분화된 대역폭 프로비저닝을 수행하는 방법.
  9. 제8항에 있어서, 세분화된 스케줄링 논리를 적용하고 상기 대역폭의 미사용 부분이 미리 결정된 레벨 미만으로 떨어지는 경우 메모리 제어기에서 DRAM 요청을 조절하는 것은, 각각의 요청의 우선순위 클래스에 기초하여 상기 DRAM 요청을 스케줄링하기 위해 그리고 상기 DRAM 요청을 발행하는 마스터에 대한 상기 QoS 크레딧 누적기에서의 크레딧 잔고가 미리 결정된 최소 QoS 크레딧 값 미만인 경우 상기 DRAM 요청을 조절하도록 상기 스케줄을 계산하기 위해 세분화된 QoS 스케줄링 논리를 적용하는 것에 의해 달성되는 것인, 세분화된 대역폭 프로비저닝을 수행하는 방법.
  10. 제9항에 있어서, 상기 DRAM 요청을 복수의 DRAM 디바이스 중 적어도 하나로 송신하는 단계는,
    상기 DRAM 요청을 상기 마스터 스케줄링 멀티플렉서로부터 DRAM 프로토콜 엔진으로 송신하는 단계와,
    상기 DRAM 요청을 상기 DRAM 프로토콜 엔진으로부터 상기 복수의 DRAM 디바이스 중 적어도 하나로 송신하는 단계를 포함하는 것인 세분화된 대역폭 프로비저닝을 수행하는 방법.
KR1020167031743A 2014-04-14 2015-04-06 메모리 제어기에서의 세분화된 대역폭 프로비저닝 KR102380670B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/252,673 2014-04-14
US14/252,673 US9563369B2 (en) 2014-04-14 2014-04-14 Fine-grained bandwidth provisioning in a memory controller
PCT/US2015/024414 WO2015160541A1 (en) 2014-04-14 2015-04-06 Fine-grained bandwidth provisioning in a memory controller

Publications (2)

Publication Number Publication Date
KR20160144482A true KR20160144482A (ko) 2016-12-16
KR102380670B1 KR102380670B1 (ko) 2022-03-29

Family

ID=52875816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167031743A KR102380670B1 (ko) 2014-04-14 2015-04-06 메모리 제어기에서의 세분화된 대역폭 프로비저닝

Country Status (6)

Country Link
US (1) US9563369B2 (ko)
EP (1) EP3132355B1 (ko)
JP (1) JP6495327B2 (ko)
KR (1) KR102380670B1 (ko)
CN (1) CN106233269B (ko)
WO (1) WO2015160541A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101699377B1 (ko) * 2014-07-02 2017-01-26 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
EP3251021B1 (en) * 2015-01-30 2023-07-19 Hewlett Packard Enterprise Development LP Memory network to prioritize processing of a memory access request
US10158712B2 (en) * 2015-06-04 2018-12-18 Advanced Micro Devices, Inc. Source-side resource request network admission control
US10298511B2 (en) 2016-08-24 2019-05-21 Apple Inc. Communication queue management system
US10613612B2 (en) 2017-03-16 2020-04-07 Qualcomm Incorporated Power reduction via memory efficiency compensation
CN109154883A (zh) * 2017-03-22 2019-01-04 波利伍德有限责任公司 驱动级内部服务质量
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10437482B2 (en) * 2017-07-25 2019-10-08 Samsung Electronics Co., Ltd. Coordinated near-far memory controller for process-in-HBM
US10481944B2 (en) * 2017-08-09 2019-11-19 Xilinx, Inc. Adaptive quality of service control circuit
US10360832B2 (en) 2017-08-14 2019-07-23 Microsoft Technology Licensing, Llc Post-rendering image transformation using parallel image transformation pipelines
US10678690B2 (en) 2017-08-29 2020-06-09 Qualcomm Incorporated Providing fine-grained quality of service (QoS) control using interpolation for partitioned resources in processor-based systems
US10318301B2 (en) 2017-08-31 2019-06-11 Micron Technology, Inc. Managed multiple die memory QoS
US10372609B2 (en) * 2017-09-14 2019-08-06 Intel Corporation Fast cache warm-up
KR102417977B1 (ko) * 2017-10-19 2022-07-07 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10296230B1 (en) * 2017-12-22 2019-05-21 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies
US10275352B1 (en) * 2017-12-28 2019-04-30 Advanced Micro Devices, Inc. Supporting responses for memory types with non-uniform latencies on same channel
US11144457B2 (en) * 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10705985B1 (en) * 2018-03-12 2020-07-07 Amazon Technologies, Inc. Integrated circuit with rate limiting
US11099778B2 (en) * 2018-08-08 2021-08-24 Micron Technology, Inc. Controller command scheduling in a memory system to increase command bus utilization
CN109062514B (zh) * 2018-08-16 2021-08-31 郑州云海信息技术有限公司 一种基于命名空间的带宽控制方法、装置和存储介质
US10838884B1 (en) 2018-09-12 2020-11-17 Apple Inc. Memory access quality-of-service reallocation
US10635355B1 (en) * 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives
US10860254B2 (en) * 2019-04-17 2020-12-08 Vmware, Inc. Throttling resynchronization operations in a data store cluster based on I/O bandwidth limits
US20210279192A1 (en) * 2020-03-06 2021-09-09 Infineon Technologies Ag Distribution of interconnect bandwidth among master agents
WO2023128479A1 (ko) * 2021-12-30 2023-07-06 주식회사 엘엑스세미콘 메모리 제어 시스템 및 메모리 제어 기능을 갖는 디스플레이 디바이스

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191273B2 (en) * 2001-10-12 2007-03-13 Sonics, Inc. Method and apparatus for scheduling a resource to meet quality-of-service restrictions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2778258A1 (fr) 1998-04-29 1999-11-05 Texas Instruments France Controleur d'acces de trafic dans une memoire, systeme de calcul comprenant ce controleur d'acces et procede de fonctionnement d'un tel controleur d'acces
US6961834B2 (en) * 2001-10-12 2005-11-01 Sonics, Inc. Method and apparatus for scheduling of requests to dynamic random access memory device
US7363427B2 (en) * 2004-01-12 2008-04-22 Hewlett-Packard Development Company, L.P. Memory controller connection to RAM using buffer interface
US7461214B2 (en) 2005-11-15 2008-12-02 Agere Systems Inc. Method and system for accessing a single port memory
CN101046784A (zh) * 2006-07-18 2007-10-03 威盛电子股份有限公司 存储器数据存取系统与方法以及存储器控制器
US7577780B2 (en) 2007-02-28 2009-08-18 National Chiao Tung University Fine-grained bandwidth control arbiter and the method thereof
US8484411B1 (en) 2007-12-31 2013-07-09 Synopsys Inc. System and method for improving access efficiency to a dynamic random access memory
US8180975B2 (en) 2008-02-26 2012-05-15 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
CN101876944B (zh) 2009-11-26 2012-02-15 威盛电子股份有限公司 动态随机存取存储器控制器和控制方法
US8898674B2 (en) 2009-12-23 2014-11-25 International Business Machines Corporation Memory databus utilization management system and computer program product
US8314807B2 (en) 2010-09-16 2012-11-20 Apple Inc. Memory controller with QoS-aware scheduling
WO2012036905A1 (en) 2010-09-16 2012-03-22 Apple Inc. Multi-ported memory controller with ports associated with traffic classes
JP2013196321A (ja) 2012-03-19 2013-09-30 Pfu Ltd 電子回路及び調停方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191273B2 (en) * 2001-10-12 2007-03-13 Sonics, Inc. Method and apparatus for scheduling a resource to meet quality-of-service restrictions

Also Published As

Publication number Publication date
US20150293709A1 (en) 2015-10-15
CN106233269B (zh) 2019-12-10
EP3132355B1 (en) 2019-09-04
US9563369B2 (en) 2017-02-07
JP2017511545A (ja) 2017-04-20
WO2015160541A1 (en) 2015-10-22
KR102380670B1 (ko) 2022-03-29
JP6495327B2 (ja) 2019-04-03
CN106233269A (zh) 2016-12-14
EP3132355A1 (en) 2017-02-22

Similar Documents

Publication Publication Date Title
KR102380670B1 (ko) 메모리 제어기에서의 세분화된 대역폭 프로비저닝
KR102456085B1 (ko) 로우 버퍼 충돌을 감소시키기 위한 동적 메모리 재매핑
JP6097444B2 (ja) メモリシステムの温度情報に基づくメモリシステム管理のためのシステム及び方法
US10795837B2 (en) Allocation of memory buffers in computing system with multiple memory channels
US20200089537A1 (en) Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants
KR20210021302A (ko) 메모리 제어기에서의 리프레시 방식
EP2972860B1 (en) Dual host embedded shared device controller
CA2949282A1 (en) Method for refreshing dynamic random access memory and a computer system
CN109863481A (zh) 用于平台裕度调节和调试的软件模式寄存器访问
US11809906B2 (en) Systems and methods to control bandwidth through shared transaction limits
US10324760B2 (en) Leases for blocks of memory in a multi-level memory
Hassan On the off-chip memory latency of real-time systems: Is ddr dram really the best option?
US20160239442A1 (en) Scheduling volatile memory maintenance events in a multi-processor system
EP3256952B1 (en) Systems and methods for providing kernel scheduling of volatile memory maintenance events
CN107832006A (zh) 多主机共用同一扩展存储设备的多功能硬盘分区存储装置
US10007557B2 (en) Computing resource controller and control method for multiple engines to share a shared resource
US20220179780A1 (en) Paging in thin-provisioned disaggregated memory
US10509727B1 (en) Method and apparatus for performing task-level cache management in electronic device
CN104750640A (zh) 在多个通道之间仲裁以存取一资源的方法和装置
US11586563B2 (en) Distribution of data and memory timing parameters across memory modules based on memory access patterns
RU2780973C2 (ru) Ответ с идентификатором функции процессора для виртуализации
JP2022049405A (ja) 記憶装置および制御方法
KR20220145698A (ko) PCIe 장치 및 그 동작 방법
Bonatto et al. Adaptive shared memory control for multimedia Systems-on-Chip

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