KR20200088502A - 메모리 대역폭 사용을 제한하기 위한 메모리 요청 스로틀링 - Google Patents

메모리 대역폭 사용을 제한하기 위한 메모리 요청 스로틀링 Download PDF

Info

Publication number
KR20200088502A
KR20200088502A KR1020207020107A KR20207020107A KR20200088502A KR 20200088502 A KR20200088502 A KR 20200088502A KR 1020207020107 A KR1020207020107 A KR 1020207020107A KR 20207020107 A KR20207020107 A KR 20207020107A KR 20200088502 A KR20200088502 A KR 20200088502A
Authority
KR
South Korea
Prior art keywords
memory
processor core
prefetcher
prefetch
throttle
Prior art date
Application number
KR1020207020107A
Other languages
English (en)
Inventor
윌리암 엘. 워커
윌리암 이. 존스
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20200088502A publication Critical patent/KR20200088502A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

프로세싱 시스템(100)은 로컬 메모리(112)에 연결될 수 있는 상호 접속 패브릭(110) 및 상호 접속 패브릭에 연결된 적어도 하나의 컴퓨트 컴플렉스(102)를 포함한다. 컴퓨트 컴플렉스는 프로세서 코어(114-117) 및 캐시 계층(118)을 포함한다. 캐시 계층은 복수의 캐시(121-130) 및 액세스 레이턴시 메트릭 및 프리페치 정확도 메트릭 중 적어도 하나에 기초하여 프로세서 코어에 의해 발행될 수 있는 메모리 요청 속도를 스로틀링하도록 구성된 스로틀 제어기(228)를 갖는다. 액세스 레이턴시 메트릭은 프로세서 코어에 대한 메모리 요청에 대한 평균 액세스 레이턴시를 나타내고 프리페치 정확도 메트릭은 캐시 계층의 캐시의 프리페처(220)의 정확도를 나타낸다.

Description

메모리 대역폭 사용을 제한하기 위한 메모리 요청 스로틀링
많은 프로세싱 시스템들이 동일한 메모리가 다수의 프로세서 코어들에서 공유되도록 메모리 리소스를 풀링(pooling)한다. 이는 종종 프로세서 코어 세트와 해당 메모리 사이의 링크가 메모리 요청으로 포화되는 인스턴스로 이어지고, 이는 전체 메모리 액세스 레이턴시의 증가를 초래한다. 또한, 초과사용된(oversubscribed) 메모리 링크는 완전히 포화되지 않은 링크에 비해 전반적인 시스템 성능이 저하 될 수 있다.
본 개시는 더 잘 이해 될 수 있고, 그것의 수많은 특징 및 장점은 첨부 도면을 참조함으로써 당업자에게 명백하다. 상이한 도면에서 동일한 참조 부호의 사용은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시 예에 따른 메모리 요청 스로틀링을 이용하는 프로세싱 시스템을 도시한 블록도이다.
도 2는 일부 실시 예에 따른 도 1의 프로세싱 시스템의 프로세서 코어 및 대응하는 캐시 계층을 보다 상세하게 나타내는 블록도이다.
도 3은 일부 실시 예에 따른 동적 메모리 요청 스로틀링 방법을 나타내는 흐름도이다.
도 4는 일부 실시 예에 따른 소프트웨어 구성 메모리 요청 스로틀링 방법을 나타내는 흐름도이다.
컴퓨트 컴플렉스(compute complex)와 로컬 메모리 간의 링크 초과사용(oversubscription) 또는 포화는 전체 시스템 성능에 부정적인 영향을 미친다. 본원에 기술된 기술은, 메모리 링크를 통해 액세스된 메모리에 대한 메모리 요청이 메모리 리소스 소비자에 의해 발행될 수 있는 속도(rate)의 스로틀링(throttling)을 통해 컴퓨트 컴플렉스의 메모리 리소스 소비자가 사용하는 메모리 대역폭을 제한함으로써, 프로세싱 시스템에서 개선된 메모리 링크 효율을 제공한다. 그렇게 제한된 메모리 리소스 소비자는 컴퓨트 컴플렉스의 개별 프로세서 코어, 또는 컴퓨트 컴플렉스의 프로세서 코어에 의해 실행되는 특정 스레드(thread)를 포함할 수 있다. 일부 실시 예들에서, 메모리 리소스 소비자에 대한 액세스 레이턴시 메트릭(access latency metric) 및 프리페치 정확도 메트릭(prefetch accuracy metric)이 모니터링되고, 메모리 리소스 소비자에 대해 구현된 특정 메모리 요청 스로틀링은 이들 메트릭들 중 하나 또는 둘 모두에 기초한다. 메모리 요청 스로틀링은, 예를 들어 메모리 리소스 소비자를 대신하여 프리페처 공격성(prefetcher aggressivenes)을 수정함으로써, 메모리 리소스 소비자가 사용할 수 있는 최대 계류중인 메모리 트랜잭션(pending memory transactions)의 수를 수정하거나 프리페처 공격성과 사용 가능한 계류중인 메모리 트랜잭션 수를 수정하는 조합에 의해 달성된다. 따라서, 이 접근법은 부정확한 프리페치 추론(speculation)을 줄이고 메모리 리소스 소비자가 주어진 시간에 발행할 수 있는 메모리 요청 수를 제한하려고 하며, 따라서 메모리 리소스 소비자에 의해 소비될 수 있는 메모리 링크 대역폭을 제한하면서 또한 메모리 리소스 소비자에 의해 발행된 메모리 요청의 효율을 향상 시키려고 시도한다.
도 1은 일부 실시 예에 따라 개선 된 메모리 이용 효율을 위해 메모리 요청 스로틀링을 이용하는 프로세싱 시스템(processing system)(100)을 도시한다. 처리 시스템(100)은 프로세싱 노드(101)와 같은 하나 이상의 프로세싱 노드들을 포함한다. 프로세싱 노드(101)는 컴퓨트 컴플렉스들(102, 104, 106, 108)과 같은 하나 이상의 컴퓨트 컴플렉스들, 상호접속 패브릭(interconnect fabric)(110) 및 로컬 메모리(local memory)(112)를 포함한다. 각각의 컴퓨트 컴플렉스는 4 개의 프로세서 코어들(114, 115, 116, 117)과 같은 하나 이상의 프로세서 코어를 포함한다. 프로세서 코어는 예를 들어 중앙 처리 장치(CPU) 코어, 그래픽 처리 장치(GPU) 코어, 디지털 신호 프로세서(DSP) 코어 또는 이들의 조합을 포함한다. 컴퓨트 컴플렉스의 프로세서 코어들의 수는 4 개보다 적거나 많을 수 있다는 것이 이해 될 것이다.
각각의 컴퓨트 컴플렉스는 제1 레벨(L1), 제2 레벨(L2) 및 제3 레벨(L3)의 캐시와 같은 하나 이상의 레벨의 캐시를 갖는 캐시 계층(cache hierarchy)(118)을 더 포함한다. 도시된 예는 3 개의 레벨을 포함하지만, 다른 실시 예에서 캐시 계층(118)은 3 보다 적은 레벨 또는 3 보다 많은 레벨을 포함한다. 각 캐싱 레벨에는 해당 레벨에서 하나 이상의 캐시가 포함된다. 예시하기 위해, 컴퓨트 컴플렉스(102)는 L1에서 각각의 프로세서 코어에 대해 작은 프라이빗 캐시를 구현하는데, 이는 L1 캐시(121, 122, 123, 124)로서 도시되며, 이들 각각은 프로세서 코어(114-117)의 대응하는 하나와 관련된다. 또한, 일부 실시 예에서, 컴퓨트 콤플렉스는 또한 L2에서 각각의 프로세서 코어에 대해 더 큰 프라이빗 캐시를 구현하는데, 이는 L2 캐시125, 126, 127, 128)로 도시되며, 이들 각각은 프로세서 코어(114-117)에 대응된다. L2 캐시(125-128) 각각은 대응하는 프로세서 코어에 대해 사유화되지만, 캐시 계층(118)은 L2 캐시(125-128) 사이의 일관성(coherency)을 유지하도록 동작한다. 다른 실시 예들에서, 2 개 이상의 L1 캐시는 단일 L2 캐시를 공유할 수 있다. L3 캐싱 레벨에 대해, 캐시 계층(118)은 컴퓨트 컴플렉스(102)의 프로세서 코어에 의해 공유되고 따라서 적어도 L2 캐시(125-128)에 의해 공유되는 L3 캐시(130)를 구현한다. 다른 실시 예들에서, L3 캐싱 레벨은 다양한 조합으로 L2 캐시(125-128)에 의해 공유되는 하나 이상의 L3 캐시를 포함할 수 있다.
상호접속 패브릭(110)은 각각의 컴퓨트 컴플렉스의 캐시 계층(118)과 로컬 메모리(112) 사이의 인터페이스로서뿐만 아니라 컴퓨트 컴플렉스(102, 104, 106, 108) 사이의 인터페이스로서, 그리고 프로세싱 노드(101)와 프로세싱 시스템(100)의 임의의 다른 프로세싱 노드(132) 사이의 인터페이스로서 동작한다. 상호접속 패브릭(110)은 예를 들어 하이퍼트랜스포트 패브릭(HyperTransport fabric), 인피니티 패브릭(Infinity fabric) 등으로 구현될 수 있다. 로컬 메모리(112)는 하나 이상의 개별 랜덤 액세스 메모리(RAM) 구성 요소를 포함하고, 일부 실시 예에서, RAM 구성 요소와 상호접속 패브릭(110) 사이의 다중 링크를 포함하고, 각각의 링크는 개별 컴퓨트 컴플렉스에 할당될 수 있다(또는 컴퓨트 컴플렉스의 서브세트들은 상호접속 패브릭(110)과 로컬 메모리(112) 사이에 주어진 링크를 공유할 수 있다).
동작에서, 운영 체제(OS), 하이퍼바이저(hypervisor) 또는 소프트웨어 어플리케이션은 특정 프로세스를 나타내는 명령 세트를 실행을 위해 컴퓨트 컴플렉스102-108)의 프로세서 코어에 할당하고, 여기서 특정 프로세서 코어에 의한 명령 세트의 실행을 "스레드(thread)"라고 지칭된다. 실행 과정에서, 이들 스레드는 프로세서 코어를 조작하여 로컬 메모리(112)(또는 다른 프로세싱 노드의 로컬 메모리)로부터 데이터를 로딩(loading)하는 역할을 하는 메모리 요청을 발행한다. 이러한 데이터는 명령을 실행하는 동안 조작될 명령 또는 피연산자 데이터(operand data)를 포함할 수 있다. 당 업계에 공지된 바와 같이, 이 데이터는 전형적으로 하나 이상의 레벨의 캐시 계층(118)에서 일시적으로 캐싱되어 데이터 액세스 효율을 촉진시키고, 따라서, 캐시 계층(118)이 유효 상태(valid state)에서 캐시 계층(118)에 저장된 데이터에 대해 스레드 대신 메모리 요청을 발행할 때, 그 메모리 요청은 캐시 계층(118)에 의해 효율적으로 서비스 될 수 있다. 그러나, 메모리 요청이 캐시 계층(118)에 의해 이행(fulfillment)될 수 없는 경우(즉, 전체 캐시 계층(118)에 대해 "캐시 미스(cache miss)"가 있음), 스레드를 실행하는 컴퓨트 컴플렉스의 L3 캐시(130)는 이행(fulfillment)을 위해 상호접속 패브릭(110)을 통해 메모리 요청을 로컬 메모리(112)에 포워딩해야한다. 캐시 계층(118)에 의해 제공되는 캐싱 능력을 고려하면, 메모리 요청은 일반적으로 다음 두 가지 형식 중 하나를 취한다: 프로세서 코어가 현재 프로세서 코어의 레지스터에 존재하지 않는 특정 데이터 블록을 요구하는 명령을 실행한 수요-형(demand-type) 메모리 요청 및 캐시의 프리페처(prefetcher)가 가까운 미래에 프로세서 코어에 필요한 데이터를 예측하고 따라서 예측된 데이터를 얻기 위해 추론적 메모리 요청을 발행하여 프로세서 코어가 데이터에 대한 수요-형 메모리 요청을 발행 할 때 그것이 캐싱되도록 하는 프리페치-형(prefetch-type) 메모리 요청.
컴퓨트 컴플렉스의 각 프로세서 코어는 일반적으로 여러 스레드를 동시에 실행하며, 이러한 스레드 각각은 수요-형 메모리 요청과 프리페치-형 메모리 요청을 자주 발행하며, 이는 캐시 계층(118)에 의해 이행 될 수 없고 따라서 로컬 메모리(112)에 의한 이행을 요구하는 바, 컴퓨트 콤플렉스와 로컬 메모리(112) 사이의 링크는 정체되거나 초과사용(oversubscription)될 수 있고, 컴퓨트 콤플렉스-메모리 링크의 이러한 초과사용은 전형적으로 프로세싱 시스템(100)의 전체 성능에 영향을 미친다. 따라서, 적어도 하나의 실시 예에서, 프로세싱 노드(101)는 메모리 링크 초과사용의 위험을 감소시키기 위해 프로세싱 노드(101)에서 메모리 리소스 소비자에 의해 메모리 요청이 발행되는 속도를 선택적으로 조절하도록 구성된 메모리 대역폭 제한 서브시스템(134)을 더 포함한다. 일부 실시 예에서, 이러한 방식으로 스로틀링된 메모리 리소스 소비자는 각각의 프로세서 코어에서의 개별 스레드인 반면에, 다른 실시 예에서 메모리 리소스 소비자는 전체로서 개별 프로세서 코어이다. 또 다른 실시 예에서, 메모리 대역폭 제한 서브시스템(134)에 의해 스로틀링된 메모리 리소스 소비자는 전체로서 개별 스레드와 프로세서 코어의 조합을 포함한다.
아래에 자세히 설명되는 바와 같이, 일부 실시 예에서 메모리 대역폭 제한 서브시스템(134)은 각각의 컴퓨트 컴플렉스(102-108)의 캐시 계층(118)의 캐시 내에 별도의 구성 요소로서 구현되고, 일부 구성 요소는 로컬 메모리(112)에 발행된 메모리 요청을 모니터링하여 로컬 메모리(112)에 발행된 메모리 요청에 대한 평균 액세스 레이턴시를 나타내는 레이턴시 메트릭을 확인하도록 구성되며, 다른 구성 요소는 하나 이상의 캐시 레벨의 프리페처를 모니터링하여 각 메모리 리소스 소비자에 대한 캐시 프리페처의 정확도를 나타내는 프리페치 정확도 메트릭을 확인하도록 구성된다. 메모리 대역폭 제한 서브 시스템(134)의 다른 구성 요소는 메모리 리소스 소비자에 대한 스로틀 레벨을 결정하기 위해 메모리 리소스 소비자에 대한 액세스 레이턴시 메트릭 및 프리페치 정확도 메트릭 중 하나 또는 둘 다를 사용한다. 이 스로틀 레벨은 다음 중 하나 또는 둘 다를 설정하기 위해 작동한다: 메모리 리소스 소비자를 대신하여 프리페치-형 메모리 요청을 발행하는 하나 이상의 프리페처에 대한 프리페처 공격성(prefetcher aggressiveness); 및 주어진 시간에 리소스 소비자가 사용 가능하거나 발행할 수 있는 최대 계류 메모리 요청 수. 그렇게함으로써, 메모리 대역폭 제한 서브시스템(134)은 임의의 주어진 메모리 리소스 소비자에 의해 소비되는 메모리 대역폭을 적절히 제한하여 컴퓨트 컴플렉스와 로컬 메모리(112) 사이의 링크의보다 효율적인 이용을 용이하게 하도록 동작한다.
일부 실시 예에서, 메모리 대역폭 제한 서브시스템(134)은 스로틀 한계를 동적으로 설정하여 전체 시스템 성능을 향상시키도록 동작하며, 다른 실시 예들에서, 메모리 대역폭 제한 서브시스템(134)은 예를 들어 격리 또는 차별화를 위해 소프트웨어 어플리케이션(136)에 의해 부과된 고정된 타겟 대역폭 제약에 따라 스로틀 한계를 설정하도록 동작한다. 또 다른 실시 예에서, 메모리 대역폭 제한 서브시스템(134)은 소프트웨어-부과 대역폭 제약 외에 스로틀링 레벨을 동적으로 조정하도록 동작하면서 소프트웨어-부과 타겟 대역폭 제약이 충족되도록 하는 시도를 수행하도록 동작한다. 이들 접근법은 도 3 및 도 4를 참조하여 본원에서 더 상세히 설명된다.
도 2는 일부 실시 예에 따른 컴퓨트 컴플렉스의 상응하는 프로세서 코어(200)에 대한 캐시 계층(118)의 일부를 도시한다. 프로세서 코어(200)는 컴퓨트 컴플렉스(102)의 프로세서 코어(114-117) 중 하나와 같은 프로세싱 시스템(100)의 컴퓨트 컴플렉스의 프로세서 코어 중 하나를 나타낸다. 프로세서 코어(200)를 지원하는 캐시 계층(118)의 예시된 부분은 L1 캐시(202)(예를 들어, L1 캐시(121-124) 중 하나를 나타냄), L2 캐시(204)(예를 들어, L2 캐시(125-128) 중 하나를 나타냄) 및 L3 캐시(206)(예를 들어, L3 캐시(130)를 나타냄)를 포함한다. L1 캐시(202), L2 캐시(204) 및 L3 캐시(206)는 각각 캐시라인 어레이(캐시라인 어레이(208, 210, 212)) 및 캐시라인 어레이로의 액세스를 제어하기 위한 캐시 제어기(캐시 제어기(214, 216, 218))를 포함한다. 캐시라인 어레이(208, 210, 212) 각각은 대응하는 어드레스, 상태 비트 등을 포함하여 캐시라인에 대한 태그 정보와 함께 대응하는 데이터의 캐시라인을 저장하기 위한 복수의 엔트리를 포함한다. 또한, 이 예에서 L1 캐시(202)는 프리페처(220)를 포함하고 L2 캐시(204)는 프리페처(222)를 가지며, 여기서 프리페처(220, 222)는 그들의 각각의 캐시에 대한 캐시라인을 추론적으로 프리페치하도록 구성된다. L2 캐시(204)는 L3 캐시(206) 또는 로컬 메모리(112)에 대해 바인딩된 L2 판독 미스에 대한 버퍼로서 작용하는 미스 정보 버퍼(miss information buffer, MIB)(224)를 더 포함한다. MIB(224)는 따라서 복수의 MIB 엔트리(226)를 가지며, 각각의 MIB 엔트리(226)는 캐시 제어기(216)가 L3 캐시(206) 로의 발행을 위한 메모리 요청을 처리하거나 로컬 메모리(112)로 직접 보내기 전에 L2 판독 미스인 대응하는 메모리 요청에 대한 정보를 저장하도록 구성된다.
프로세서 코어(200) 및 이와 연관된 캐시 계층(118)의 도시된 부분에 관해, 메모리 대역폭 제한 서브시스템(134)은 스로틀 제어기(228), 레이턴시 추적기(230) 및 프리페치 정확도 추적기(232)를 포함한다. 일 실시 예에서, 이들 구성 요소는 도 2에 도시된 바와 같이 L2 캐시(204)에서 구현되는 반면, 다른 실시 예에서 이들 구성 요소 중 일부 또는 전부는 다른 캐시 레벨에서 구현될 수 있다. 레이턴시 추적기(230)는 프로세서 코어(200)와 연관된 메모리 리소스 소비자에 의해 발행되고 로컬 메모리(112)에 의해 이행되는 메모리 요청의 액세스 레이턴시를 모니터링하고, 이들 레이턴시로부터 로컬 메모리(112)에 메모리 요청을 이행함에 있어서 현재 레이턴시를 나타내는 액세스 레이턴시 메트릭을 제공하도록 구성된다. 예시를 위해, 일부 실시 예에서, 레이턴시 추적기(230)는 샘플링된 메모리 요청의 서브세트 각각을 위해 로컬 메모리(112)에 발행된 메모리 요청을 이행하는데 필요한 시간을 추적하기 위해 추적기 테이블(234)을 유지한다. 따라서, 테이블(234)은 복수의 엔트리(236)를 포함하고, 각각의 엔트리(236)는 샘플링된 메모리 요청과 연관된 어드레스 또는 어드레스 부분을 저장하기 위한 어드레스(ADDR) 필드(238) 및 대응하는 샘플링된 메모리 요청을 이행하기 위해 필요한 지속 시간 또는 레이턴시를 나타내는 값을 저장하기 위한 레이턴시(LTCY) 필드(240)를 갖는다. 엔트리(236)의 레이턴시 필드(240)의 값으로 표시되는 레이턴시로부터, 레이턴시 추적기(230)는 평균 또는 공칭 액세스 레이턴시를 결정하고, 이 평균 액세스 레이턴시 또는 이 평균 액세스 레이턴시로부터 결정된 다른 값을 스로틀 제어기(228)에 액세스 레이턴시 메트릭으로서 제공하며, 이는 메모리 요청 스로틀링에서 스로틀 제어기(228)에 의해 사용될 수 있다. 평균 액세스 레이턴시는 프로세서 코어(200)와 연관된 각각의 메모리 리소스 소비자에 대해 개별적으로 결정될 수 있다. 이러한 메모리 리소스 소비자는 대한 동일한 링크를 공유하기 때문에, 프로세서 코어(200)에 대한 메모리 요청에 대해 결정된 평균 액세스 레이턴시는(어떤 메모리 리소스 소비자가 메모리 요청을 발행했는지에 관계없이) 프로세서 코어(200)의 임의의 주어진 메모리 리소스 소비자에 대한 평균 액세스 레이턴시를 충분히 나타낸다.
프리페치 정확도 추적기(232)는 L1 캐시(202)의 프리페처(220) 및 L2 캐시(204)의 프리페처(222)를 포함하여 프로세서 코어(200)를 대신하여 동작하는 프리페처의 프리페치 정확도를 모니터링하도록 구성된다. 이를 위해, 프리페치 정확도 추적기(232)는 프로세서 코어(200)를 대신하여 동작하는 각각의 프리페처에 대한 정확도 테이블(242)을 유지한다. 일 실시 예에서, 각각의 정확도 테이블(242)은 스레드 당 기준으로 대응하는 프리페처에 의해 발행된 최근 프리페치-형 메모리 요청을 추적하고, 각각의 추적된 프리페치-형 메모리 요청이 "정확한" 프리페치인지 여부를; 즉, 추적된 프리페치-형 메모리 요청과 관련된 프리페치된 캐시라인이 궁극적으로 스레드에 대한 수요-형 메모리 요청의 대상인지 여부를 더 추적하도록 사용된다. 따라서, 일부 실시 예에서, 정확도 테이블(242)은 엔트리 매트릭스(244)를 갖는 데이터 구조로서 구현되며, 여기서 엔트리(244) 컬럼 각각은 프로세서 코어(200)에서 현재 실행중인 N개의 스레드의 대응 스레드와 관련되고, 그 컬럼 내의 각 엔트리(244)는 대응하는 프리페치-형 메모리 요청의 어드레스 또는 다른 식별자를 저장하기 위한 어드레스(ADDR) 필드(246) 및 대응하는 캐시라인이 궁극적으로 스레드에 대한 수요-형 메모리 요청의 대상인지를 나타내는 값을 저장하는 정확도(ACCY) 필드(248)를 갖는다(예를 들어, "0"은 프리페치 캐시라인이 정확한 추론 프리페치가 아님을 나타내고 "1"은 프리페치된 캐시라인캐시라인이 정확한 추론 프리페치임을 나타내는 단일 비트 값). 이와 같이, 프리페치 정확도 추적기(232)는 프리페처(220, 222)에 의해 발행된 프리페치를 모니터링하고 그에 따라 대응하는 정확도 테이블(242)을 채운다. 프리페치 정확도 추적기(232)는 이어서 정확도 테이블(242)의 엔트리(244)의 필드(248)에 나타난 프리페치 정확도를 주기적으로 또는 연속적으로 평가하고, 이 정보로부터 대응하는 프리페처의 프리페치 정확도를 나타내는 프리페치 정확도 메트릭을 결정하고 업데이트한다. 상이한 스레드가 다른 것들보다 정확한 프리페치 추론에 민감(susceptible)하기 때문에, 일 실시 예에서 프리페치 정확도 추적기(232)는 각각의 스레드에 대해 별도의 프리페치 정확도 메트릭을 결정하고 유지한다. 다른 실시 예들에서, 대응하는 프리페처에 대한 모든 스레드(또는 둘 이상의 스레드의 서브세트)에 대해 단일 프리페치 정확도 메트릭이 결정된다.
스로틀 제어기(228)는 레이턴시 추적기(230)로부터의 현재 액세스 레이턴시 메트릭 및 프리페치 정확도 추적기(232)로부터의 현재 프리페치 정확도 메트릭(들) 중 하나 또는 둘 모두를 사용하여 프로세서 코어(200)와 관련된 대응하는 메모리 리소스 소비자가 로컬 메모리(112)에 의해 이행되는 메모리 요청을 발행하도록 허용하는 속도를 설정 또는 스로틀링하여 따라서 메모리 리소스 소비자에 기인한 현재 메모리 대역폭 이용을 수정하도록 구성된다. 아래에서 더 상세히 설명되는 바와 같이, 적어도 하나의 실시 예에서, 레이턴시 추적기(230)는 레이턴시 메트릭 및 대응하는 프리페치 정확도 메트릭 중 하나 또는 둘 모두에 기초하여 미리 정의된 스로틀 레벨 세트로부터 메모리 리소스 소비자에 대한 특정 스로틀 레벨을 선택함으로써 메모리 리소스 소비자를 스로틀링한다. 이 세트의 각 스로틀 레벨은 프리페처 공격성에 대한 설정 파라미터를 포함하여 메모리 리소스 소비자가 발행할 수 있는 메모리 요청의 수에 영향을 주는 다른 파라미터를 구성하고, 이는 주어진 프리페처가 메모리 리소스 소비자를 대신하여 프리페치-형 메모리 요청을 발행하는 속도를 제어하고, 메모리 리소스 소비자가 이용할 수 있는 최대 계류 메모리 요청의 수에 대한 파라미터 또는 이들의 조합을 설정한다(이는 메모리 리소스 소비자가 대신하여 발행한 직접-메모리로(direct-to-memory) 메모리 요청의 총 수를 제어). 적어도 하나의 실시 예에서, 이 세트의 스로틀 레벨은 스로틀 레벨 테이블(250)로서 구현되며, 여기에는 퓨즈 또는 기타 일회성 프로그램 가능 요소를 통해 구현 시간에 하드코딩된, 프로그래밍된, 소프트웨어-비저블 레지스터 등을 통해 통합자 또는 사용자에 의해 프로그래밍된 데이터 구조가 포함된다. 이 스로틀 설정 프로세스는 도 3을 참조하여 아래에 더 상세히 설명된다.
프리페치 정확도 및 메모리 요청 레이턴시 모니터링을 기반으로 메모리 요청 스로틀 레벨을 동적으로 조정하는 대신 또는 이에 추가하여, 일부 실시 예들에서, 소프트웨어 어플리케이션(예를 들어, 소프트웨어 어플리케이션(136), 도 1)은 소프트웨어 어플리케이션의 하나 이상의 스레드에 대한 최대 메모리 대역폭 이용 메트릭을 지정하고, 스로틀 제어기(228)는 스로틀 레벨을 토글(toggle)하여 지정된 최대 대역폭 이용 메트릭을 만족시키는 하나 이상의 스레드에 대한 스로틀 레벨을 찾도록 구성된다. 따라서, 적어도 하나의 실시 예에서, 프로세서 코어(200)는 소프트웨어 어플리케이션이 대응하는 스레드에 대한 최대 메모리 대역폭 이용률에 대한 소프트웨어-지정 제한을 나타내는 값이 저장 요소(252)에 저장되게 하고, 이 값은 그 스레드에 대한 구현을 위해 스로틀 제어기(228)에 전달되게 하는 적어도 하나의 명령을 실행하는 저장 요소(252)(예를 들어, 레지스터)를 포함하거나 이에 액세스한다. 이러한 소프트웨어-정의 스로틀링 프로세스는 도 4를 참조하여 아래에 보다 상세히 설명된다.
도 3은 일부 실시 예에 따른 프로세싱 시스템(100)의 컴퓨트 컴플렉스의 특정 스레드, 특정 프로세서 코어 또는 다른 특정 메모리 리소스 소비자에 대한 메모리 요청 스로틀 레벨을 동적으로 조정하기 위한 예시적인 방법(300)을 도시한다. 설명을 쉽게하기 위해, 방법(300)은 도 1의 프로세싱 시스템(100)의 예시적인 구현 및 도 2의 캐시 계층(118) 및 메모리 대역폭 제약 서브 시스템(134)의 예시적인 구현과 관련하여 설명된다.
방법(300)은 병렬로 동작하는 3 개의 프로세스를 포함한다: 액세스 레이턴시 모니터링 프로세스(301); 프리페치 정확도 모니터링 프로세스(302); 및 스로틀 레벨 설정 프로세스(303). 레이턴시 모니터링 프로세스(301)는 블록(304)에서 L2 캐시(204)로 프로세서 코어(200)로부터의 메모리 요청을 필터링하여 로컬 메모리(112)에 발행되는 직접-메모리로 메모리 요청을 식별하는 것으로 개시되며; 즉, 프로세서 코어(200)를 구현하는 컴퓨트 컴플렉스의 캐시 계층(118)의 캐시에 의해 이행될 수 없는 메모리 요청은 따라서 로컬 메모리(112)로 전송되어 이행된다. 예시를 위해, 메모리 요청이 프로세서 코어(200)로부터 캐시 계층(118)으로 발행될 때, 요청된 데이터를 갖는 캐시라인캐시라인이 적어도 하나의 캐시에 존재하고 유효한지 여부를 결정하기 위해 하나 이상의 프로브가 캐시 계층(118)에서 각각의 캐시로 전송될 수 있다. 프로브가 그러한 유효한 캐시라인이 캐시 계층 구조(118)에서 캐싱되지 않는다는 것을 나타내면, L3 캐시(206)는 로컬 메모리(112)에 의한 이행을 위해 메모리 요청을 상호접속 패브릭(110)으로 전달한다. 동시에, 레이턴시 추적기(230)는 직접-메모리로 요청을 위해 추적기 테이블(234)에 엔트리(236)를 할당한다.
블록(306)에서, 레이턴시 추적기(230)는 메모리 요청이 이행되는 데 걸리는 시간을 추적하고 이 레이턴시를 나타내는 값을 메모리 요청에 대한 할당된 엔트리(236)에 저장한다. 예시를 위해, 일 실시 예에서, 레이턴시 추적기(230)는 메모리 요청이 컴퓨트 컴플렉스로부터 발행될 때 로컬 클록 소스로부터 도출된 시작 타임 스탬프(start time stamp)를 레이턴시 필드(240)에 저장하고, 그 후 메모리 요청으로부터의 데이터가 컴퓨트 컴플렉스에서 로컬 메모리(112)로부터 수신될 때 로컬 클록 소스(예를 들어, 시스템 타임 클록)로부터 도출된 정지 시간 스탬프를 저장하고, 그런 다음이 두 타임 스탬프의 차이에 따라 레이턴시를 계산하고, 레이턴시 필드(240)와는 다른 이것을 나타내는 값을 저장한다.
블록들(304 및 306)의 프로세스는 프로세서 코어(200)에 대해 발행된 일부 또는 모든 직접-메모리로 메모리 요청들에 대해 반복되어 다수의 엔트리들(236)을 메모리-직접 메모리 요청들에 대한 레이턴시 값들로 채울 수 있다. 일부 실시 예에서, 각각의 직접-메모리로 메모리 요청은 추적기 테이블(234)에서 모니터링되고 기록되고, 다른 실시 예들에서, 직접-메모리로 요청은 어떤 고정 또는 동적으로 조정 가능한 속도로 샘플링되어(예를 들어, 5 개의 메모리-직접 액세스 요청 중 하나가 모니터링되거나 특정 어드레스 범위에 대한 메모리-직접 메모리 요청만 모니터링되는 등) 추적할 직접-메모리로 메모리 요청들의 샘플 세트를 결정하고, 이 샘플 세트는 추적기 테이블(234)에서 유지 및 업데이트된다. 추적기 테이블(234)은 제한된 수의 엔트리(236)를 가지며, 슬라이딩-윈도우 분석(sliding-window analysis)을 구현하기 위해 레이턴시 추적기(230)는 추적기 테이블(234)이 가득 찼을 때 새로-식별된 직접-메모리로 메모리 요청으로 오래된 엔트리(236)를 덮어 쓰기 위해 LRU(Least-Recently-Useed) 프로세스를 구현한다.
블록(308)에서, 주기적으로 또는 일부 트리거에 응답하여 레이턴시 추적기(230)는 프로세서 코어(200)에 의해 로컬 메모리(112)에 발행된 최근 메모리 요청의 레이턴시를 나타내는 업데이트된 액세스 레이턴시 메트릭을 결정하기 위해 추적기 테이블(234)의 점유된 엔트리(236)(또는 그 서브세트)의 레이턴시 필드(240)의 레이턴시 값을 평가한다. 일부 실시 예에서, 레이턴시 추적기(230)는 고려된 액세스 레이턴시 값들로부터 현재 평균 또는 공칭 레이턴시 값을 결정하고 이 현재 평균 레이턴시의 표현을 업데이트된 액세스 레이턴시 메트릭으로서 제공한다. 다른 실시 예들에서, 레이턴시 추적기(230)는 중간 액세스 레이턴시, 최대 액세스 레이턴시, 최소 액세스 레이턴시, 트리밍된 평균 액세스 레이턴시 등에 기초하여 업데이트된 액세스 레이턴시 메트릭을 결정한다. 업데이트된 액세스 레이턴시 메트릭은 스로틀 제어기(228)에 이용 가능하게 되고, 블록(308)은 다음 업데이트의 반복(iteration)을 위해 반복된다.
프리페치 정확도 모니터링 프로세스(302)로 돌아가서, 이 프로세스는 프리페치 정확도 추적기(232)(예를 들어, L1 캐시(202)의 프리페처(220) 및 L2 캐시(204)의 프리페처(222))에 의해 모니터링되는 각각의 프리페처에 대해 병렬로 수행된다. 또한, 전술한 바와 같이, 프리페치 정확도는 구성에 따라 스레드마다 또는 코어별로 모니터링될 수 있다. 예시의 목적으로, 프로세스(302)는 스레드 기반으로 설명되지만, 이 동일한 접근 방식은 여기에 제공된 지침을 사용하여 코어 별 접근 방식에 용이하게 적용된다. 프로세스(302)는 주제 프리페처(subject prefetcher)로 블록(310)에서 캐시라인캐시라인의 데이터가 결국 대응하는 스레드에 의해 요청될 것으로 예상하여 추론적으로 프리페치할 다음 캐시라인캐시라인을 식별하기 위해 프리페칭 알고리즘을 구현하고 프리페치-형 메모리 요청을 발행하여 로컬 메모리(112)로부터 그 캐시라인캐시라인에 액세스한다. 이 프리페치-형 메모리 요청의 발행에 응답하여, 프리페치 정확도 추적기(232)는 대응하는 스레드와 관련하여 프리페치-형 메모리 요청에 대한 엔트리(244)를 정확도 테이블(242)에 할당한다.
블록(312)에서, 프리페치 정확도 추적기(232)는 정확도 테이블(242)에 표시된 프리페치-형 메모리 요청의 프리페치 정확도를 결정한다. 이를 위해 프리페치 정확도 추적기(232)는 스레드를 대신하여 발행된 수요-형 메모리 요청을 모니터링하고, 정확도 테이블(242)에 표시된 프리페치-형 메모리 요청의 대상인 캐시라인에 대해 수요-형 메모리 요청이 발행되는 경우, 프리페치 정확도 추적기(232)는 그 캐시라인의 프리페치가 정확한 프리페치인 것을 반영(예를 들어, 필드(248)에 "1"을 기록)하기 위해 그 프리페치-형 메모리 요청에 할당된 엔트리(244)의 정확도 필드(248)를 업데이트한다. 그렇지 않으면, 프리페치된 캐시라인캐시라인이 특정 기간 내에 후속 수요-형 메모리 요청의 대상이 아닌 경우(즉, 스레드는 프리페치된 데이터를 "사용"하지 않는다), 프리페치 정확도 추적기(232)는 캐시라인의 프리페치가 부정확한 또는 잘못된 프리페치임을 반영하기 위해 정확도 필드(248)를 업데이트한다(예를 들어, 필드(248)에서 "0"을 기록하거나 유지함으로써).
주기적으로 또는 트리거에 대한 응답으로, 블록(314)에서 프리페치 정확도 추적기(232)는 정확도 테이블(242)에 기초하여 스레드에 대한 프리페치 정확도 메트릭을 업데이트하고, 여기서 프리페치 정확도 메트릭은 스레드의 캐시라인캐시라인을 프리페치 할 때 프리페처의 정확도를 나타낸다. 프리페치 정확도는 스레드에 대한 총 프리페치 수와 스레드에 대한 정확한 프리페치 수의 비율로 나타낼 수 있으므로, 일부 실시 예에서 프리페치 정확도 추적기(232)는 정확한 프리페치(예를 들어, 대응하는 엔트리(244)의 정확도 필드(248)에 "1"을 가짐)를 나타내는 정확도 테이블(242)의 스레드에 대한 총 엔트리 수(244)를 결정하고 또한 정확도 테이블(242)에서 스레드에 대한 총 엔트리 수(244)를 결정하고, 이 두 숫자의 비율을 기반으로 프리페치 정확도 메트릭의 현재 값을 결정한다. 프리페치 정확도 추적기(232)에 의해 모니터링되는 스레드의 일부 또는 전부에 대해 블록(314)의 프로세스가 반복된다.
프로세스들(301 및 302)과 동시에, 스로틀 레벨 설정 프로세스(303)의 반복은 스로틀 제어기(228)에 의해 주기적으로 또는 다른 트리거 이벤트에 응답하여 수행된다. 프로세스(303)의 반복은 블록(316)으로 표현되며, 여기서 스로틀 제어기(228)는 프로세스(301) 및 프로세스(302)의 가장 최근 반복에서 각각 메모리 리소스 소비자에 대한 현재 액세스 레이턴시 메트릭 및 프리페치 정확도 메트릭 중 하나 또는 둘 모두에 기초하여 스레드, 프로세서 코어 또는 다른 메모리 리소스 소비자에 대한 스로틀 레벨을 설정한다. 설명을 쉽게하기 위해, 메모리 리소스 소비자는 프로세서 코어(200)의 스레드인 것으로 가정하지만, 설명된 기술은 메모리 리소스 소비자가 여기에 제공된 지침을 사용하는 프로세서 코어 또는 다른 메모리 리소스 소비자인 구현에 사용하기에 용이하게 적응된다.
스레드에 대해 주어진 주어진 스로틀 레벨은 스레드를 대신하여 메모리 요청이 로컬 메모리(112)에 발행되는 속도를 제한하도록 동작하며, 따라서, 프로세서 코어를 사용하는 컴퓨트 컴플렉스와 로컬 메모리(112) 사이의 스레드의 대역폭 사용을 제한한다. 이 제한은 임의의 다양한 방식 또는 이들의 조합으로 달성될 수 있다. 블록(318)으로 나타낸 바와 같이, 스로틀 레벨은 주어진 시간에 스레드가 사용할 수 있는 계류중인 메모리 요청 수를 설정하거나 수정할 수 있으므로 스레드 대신 메모리 요청이 발행되는 속도를 제한한다. 전술한 바와 같이, MIB(224)(도 2)는 L2 캐시(204)에서 캐시 계층(118)에서 누락 된 메모리 요청을 저장하고 따라서 이행을 위해 로컬 메모리(112) 로의 발행을 기다리는 버퍼로서 역할을 한다. 따라서, 일 실시 예에서, L2 캐시(204)의 캐시 제어기(216)는 그 스레드에 대해 설정된 스로틀 레벨에 기초하여 스레드에 의해 사용 가능한 MIB 엔트리(226)의 수를 수정할 수 있다. 스레드가 사용 가능한 모든 MIB 엔트리(226)를 사용한 경우, 스레드는 로컬 메모리(112)에 임의의 추가 메모리 요청을 발행할 수 없으므로, 스레드에 이용 가능한 MIB 엔트리(226)의 수를 제어하는것은 스레드에 의해 로컬 메모리(112)에 발행될 수 있는 최대 메모리 요청 수를 제어하는 작용을 한다.
블록(320, 322 및 324)으로 나타낸 바와 같이, 주어진 스레드에 대해 설정된 스로틀 레벨은 또한 스레드에 대한 프리페치 발행 시 프리페처의 공격성을 수정할 수 있다. 프리페처에 의해 구현된 프리페치 알고리즘은 프리페치 신뢰도 및 프리페치 거리를 포함하여 여러 가지 요소에 의해 제어된다. 프리페치 신뢰는 프리페치된 데이터가 나중에 스레드에서 사용될 것이라는 신뢰의 척도이며, 프리페처 알고리즘은 전형적으로 특정 임계치 보다 낮은 프리페치 신뢰도를 갖는 잠재적 프리페치가 추론적 프리페치-형 메모리 요청으로서 발행될 수 없도록 구성된다. 프리페치 거리는 프리페처가 프리페치할 수 있는 스레드에 대한 추론적 메모리 요청 스트림에서 얼마나 앞서 있는지를 나타내고 따라서 프리페치 신뢰도와 함께 프리페치 메모리 요청이 스레드 대신 발행되는 속도를 효과적으로 제한한다. 따라서, 프리페처의 "공격성"은 프리페처에 의해 사용되는 프리페치 거리 또는 프리페처 신뢰 임계치 중 하나 또는 둘 모두에 의해 반영된다. 이와 같이, 일부 실시 예에서 프리페처의 공격성은 다음 중 하나 이상에 의해 제한된다: 블록(320)에서 프리페처 거리를 조정하는 단계; 프리페처의 최소 신뢰 임계 값을 조정하는 단계(블록 322); 및 프리페치를 활성화하거나 프리페치를 완전히 비활성화하는 단계. 이러한 방식 중 하나 이상에서 프리페처 공격성을 수정함으로써, 스로틀 제어기(228)는 프리페처가 스레드를 대신하여 프리페치-형 메모리 요청을 발행하는 속도를 효과적으로 수정하고, 결과적으로 스레드에 기인한 메모리 대역폭 이용을 효과적으로 수정한다.
위에서 언급된 바와 같이, 일부 구현들에서, L1 캐시(202)의 프리페처(220) 및 L2 캐시(204)의 프리페처(222)와 같이, 스레드 대신에 스레드에 대한 데이터를 프리페치하려고 시도하도록 작동하는 다수의 프리페처가 존재한다. 그러나 이러한 프리페처는 여러 가지 이유로 스레드에 대해 다른 프리페처 정확도를 가질 수 있다. 따라서, 일부 실시 예에서, 스로틀 제어기(228)는 각각의 프리페처 정확도에 기초하여 동일한 스레드에 대해 다른 프리페처에 대한 다른 스로틀 레벨을 설정한다. 다른 구체 예에서, 스로틀 제어기(228)는 예를 들어 최상의 프리페치 정확도 또는 최악의 프리페치 정확도에 기초하여 단일 스로틀 레벨을 선택하고, 이 동일한 스로틀 레벨을 스레드의 각 프리페처에 적용한다.
스로틀 제어기(228)는 다양한 기술 중 임의의 것을 사용하여 스로틀 레벨을 선택할 수 있다. 일부 실시 예에서, 스로틀 제어기(228)는 대응하는 액세스 레이턴시 범위 및 프리페치 정확도 범위 쌍에 대응하는 스로틀 레벨을 지정하는 스로틀 레벨 테이블(250)을 사용한다. 따라서, 스레드에 설정할 스로틀 레벨을 결정하기 위해 스로틀 제어기(228)는 그 스레드에 대한 현재 액세스 레이턴시 메트릭 및 현재 프리페치 정확도 메트릭에 기초하여 스로틀 레벨 테이블(250)에 대한 룩업(look-up)을 수행하여 그 스레드에 대해 설정되는 대응하는 스로틀 레벨을 결정한다. 아래의 표 1은 스로틀 레벨 테이블(250)의 예시적인 구현을 예시한다:
스로틀 레벨 테이블 예
스로틀레벨: 평균 판독 레이턴시 PF 정확도 임계 최대 MIBs 최대 프리페치 거리 불활성 L1 프리페처 불활성 L2 프리페처
0 레이턴시 <= 120 ns N/A 50 N/A 아니오 아니오
1 120ns < 레이턴시 <= 150 ns >=40% 50 30 아니오 아니오
<40% 50 30 아니오
2 150 ns < 레이턴시 <= 180 ns >=50% 35 24 아니오 아니오
<50% 35 24 아니오
3 180 ns < 레이턴시 <= 210 ns >=65% 20 15 아니오 아니오
<65% 20 N/A
4 레이턴시 > 210 ns >=80% 10 6 아니오
<80% 10 N/A
스로틀 레벨 0은 스레드에 대한 스로틀링 없음 또는 디폴트 스로틀링을 나타낸다.
다른 실시 예에서, 주어진 메트릭 세트에 특정 스로틀 레벨을 채용하는 대신에, 스로틀 제어기(228)는 스레드에 대한 메트릭이 지정된 임계 값을 충족할 때까지 스레드에 대한 스로틀의 심각성(severity)을 반복적으로 증가시킨다. 예를 들어 일 실시 예에서 스로틀 제어기(228)는 추적되는 모든 스레드에 대한 프리페처에 대한 평균 프리페치 정확도를 결정하고, 주어진 스레드에 대한 프리페치 정확도 메트릭이 이 평균 프리페치 정확도를 어느 정도 초과하는 경우(예를 들어, 평균 프리페치 정확도의 150%), 스로틀 제어기(228)는 스레드의 업데이트된 프리페치 정확도 메트릭이 이 임계 값 아래로 떨어질 때까지 스레드에 대한 메모리 요청 스로틀링의 심각도를 반복적으로 증가시킬 수 있다.
도 4는 일부 실시 예에 따른 스레드에 소프트웨어-정의 메모리 대역폭 제한을 제공하기 위한 방법(400)을 도시한다. 위에서 언급한 바와 같이, 일부 실시 예에서 소프트웨어 어플리케이션은 컴퓨트 컴플렉스의 프로세서 코어(200)에 의해 실행되는 소프트웨어 어플리케이션(예를 들어, 소프트웨어 어플리케이션(136), 도 1)의 스레드에 대한 타겟 메모리 대역폭 이용 제한을 설정한다. 따라서, 방법(400)은, 예를 들어 프로세서 코어(200)로 하여금 제약을 나타내는 값을 저장 요소(252)(도 2)에 저장하게 하는 하나 이상의 명령을 실행함으로써, 소프트웨어 어플리케이션이 이 타겟 제한을 설정하는 블록(402)에서 시작한다. 일부 실시 예에서, 값은 스레드에 대한 특정 최대 메모리 요청 발행 속도(예를 들어, 마이크로 초당 X 직접-메모리로 메모리 요청)를 나타낸다. 이에 응답하여, 스로틀 제어기(228)는 이 소프트웨어-정의 타겟 제한 값에 기초하여 스레드에 대한 초기 스로틀 레벨을 설정 및 구현한다. 일부 실시 예에서, 초기 스로틀 레벨이 디폴트 스로틀 레벨로 설정되며(예를 들어, 스로틀 레벨 0 또는 스로틀링 없음). 반면에 다른 실시 예에서 스로틀 제어기(228)는 컴퓨트 컴플렉스 또는 프로세서 코어(200)에 대한 현재 액세스 레이턴시 메트릭에 기초하여 타겟 대역폭 제한 값에 적합한 해당 스로틀 레벨을 추정한다.
블록(406)에서, 레이턴시 추적기(230)는 예를 들어 스레드를 대신하여 발행된 직접-메모리로 메모리 요청의 현재 속도를 추적함으로써 스레드에 의한 현재 실제 메모리 대역폭 이용을 모니터링한다. 블록(408)에서, 스로틀 제어기(228)는 모니터링된 실제 메모리 대역폭 활용을 소프트웨어에 의해 설정된 타겟 메모리 이용 대역폭 제약과 비교한다. 소프트웨어-정의 타겟 메모리 대역폭 사용 제한 조건이 충족되면, 블록(410)에서 스로틀 제어기(228)는 스레드에 대한 스로틀 레벨을 덜 제한적인 스로틀 레벨로 조정하고, 이 덜 제한적인 스로틀 레벨 하에서 블록(406)에서 스레드를 모니터링하는 것으로 되돌아 간다. 그렇지 않으면, 모니터링된 실제 메모리 대역폭 사용에 의해 소프트웨어-정의 타겟 제한 조건이 충족되지 않으면, 그 후, 블록(412)에서 스로틀 제어기(228)는 스레드에 대한 스로틀 레벨을 보다 제한적인 스로틀 레벨로 조정하고 이 보다 제한적인 스로틀 레벨 하에서 스레드를 모니터링하기 위해 블록(406)으로 되돌아 간다. 이러한 방식으로, 스로틀 제어기(228)는 소프트웨어-정의 타겟 제한에 적합한 스로틀 레벨을 다이얼-인(dials-in) 한다. 위의 표 1을 사용하는 예로서, 블록(404)에서 스로틀 제어기(228)는 스로틀 레벨 5를 블록(404)의 스레드에 대한 초기 스로틀 레벨로 설정한다고 가정한다. 스로틀 레벨 5로 인해 스레드가 소프트웨어-정의 제한 조건으로 표시되는 최대 값보다 낮은 속도로 직접-메모리로 요청을 발행하는 경우, 스로틀 제어기(228)는 블록(410)에서 스로틀 레벨을 스로틀 레벨 4로 감소시킬 수 있다. 그렇지 않으면, 메모리 요청 발행 속도가 최대 값을 초과하면, 스로틀 제어기(228)는 블록(412)에서 스로틀 레벨을 스로틀 레벨 5로 증가시킬 수 있고, 이에 의해, 소프트웨어-정의 제한을 충족시키려는 시도에서 메모리 요청 발행 속도를 더 제한한다.
일부 실시 예에서, 메모리 대역폭 제한 서브시스템(134)은 방법(300)에 의해 표현된 동적 하드웨어-제어 메모리 요청 스로틀링과 방법(400)에 의해 표현된 소프트웨어-정의 메모리 요청 스로틀링 모두를 구현할 수 있다. 그러한 경우, 소프트웨어-정의 타겟 메모리 대역폭 이용 제한은 방법(400)에 따라 스로틀 제어기(228)에 의해 이용될 수 있는 최소 제한 메모리 스로틀링 레벨을 제어하고, 스로틀 제어기(228)는 동적 스로틀 레벨 설정 방법(300)에 따라 보다 제한적인 스로틀 레벨을 구현하도록 허용된다.
일부 실시 예에서, 전술한 기술의 특정 측면은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비-일시적 컴퓨터 판독 가능 저장 매체에 저장되거나 그렇지 않으면 유형적으로 구현된 하나 이상의 실행 가능 명령 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때 전술한 기술의 하나 이상의 양태를 수행하기 위해 하나 이상의 프로세서를 조작하는 명령 및 특정 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는 예를 들어 자기 또는 광 디스크 저장 장치, 플래시 메모리와 같은 솔리드 스테이트 저장 장치, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비-휘발성 메모리 장치 또는 장치들 등을 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능 명령어는 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서에 의해 해석되거나 달리 실행 가능한 다른 명령어 포맷일 수 있다.
일반적인 설명에서 전술한 모든 활동 또는 요소가 필요한 것은 아니며, 특정 활동 또는 장치의 일부가 요구되지 않을 수 있으며, 하나 이상의 추가 활동들이 설명된 것들에 부가하여 수행될 수 있거나 또는 요소들이 포함될 수 있다. 또한, 활동이 나열되는 순서가 반드시 수행되는 순서는 아니다. 또한, 개념들은 특정 실시 예들을 참조하여 설명되었다. 그러나, 당업자는 이하의 청구 범위에 기재된 본 개시의 범위를 벗어나지 않는 범위 내에서 다양한 수정 및 변경이 이루어질 수 있음을 인식한다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 하고, 그러한 모든 수정은 본 개시의 범위 내에 포함되는 것으로 의도된다.
특정 실시 예들과 관련하여 이점들, 다른 장점들 및 문제들에 대한 해결책들이 위에서 설명되었다. 그러나, 이익, 장점 또는 솔루션이 발생하거나 더 두드러질 수 있는 이점, 장점, 문제점에 대한 해결책 및 특징(들)은 임의의 또는 모든 청구항의 중요한 특징, 요구되는 특징 또는 필수 특징으로 해석되어서는 안 된다. 더욱이, 상기 개시된 특정 실시 예는 개시된 주제가 상이하지만 본 명세서의 교시의 이점을 갖는 당업자에게 다른 방식으로 명백하고 수정될 수 있기 때문에 단지 예시 일 뿐이다. 이하의 청구 범위에 기재된 것 이외의 본 명세서에 도시된 구성 또는 설계의 세부 사항에 대한 제한은 없다. 따라서, 상기 개시된 특정 실시 예는 변경되거나 수정될 수 있으며, 이러한 모든 변형은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 본 명세서에서 요구되는 보호는 아래의 청구 범위에 기술된 바와 같다.

Claims (20)

  1. 프로세싱 시스템(processing system)에서 메모리 요청 스로틀링(throttling)을 위한 방법에 있어서, 상기 방법은:
    상기 프로세싱 시스템의 캐시(cache)의 레이턴시 추적기(latency tracker)에서, 상기 프로세싱 시스템의 프로세서 코어(processor core)에 대한 메모리 요청에 대한 평균 액세스 레이턴시(access latency)를 나타내는 액세스 레이턴시 메트릭(metric)을 결정하는 단계;
    캐시의 프리페치 정확도 추적기(prefetch accuracy tracker)에서, 상기 프로세서 코어와 연관된 캐시의 프리페처의 정확도(accuracy)를 나타내는 프리페치 정확도 메트릭을 결정하는 단계; 및
    상기 캐시의 스로틀 제어기(throttle controller)에서, 상기 액세스 레이턴시 메트릭 및 상기 프리페치 정확도 메트릭 중 적어도 하나에 기초하여 상기 프로세서 코어에 의해 발행될 수 있는 메모리 요청의 속도(rate)를 스로틀링하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 프로세서 코어에 의해 발행될 수 있는 상기 메모리 요청의 속도를 스로틀링하는 단계는:
    상기 액세스 레이턴시 메트릭 및 상기 프리페치 정확도 메트릭 중 적어도 하나에 기초하여 상기 프리페처의 공격성(aggressiveness)을 수정하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 상기 프로세서 코어에 의해 발행될 수 있는 메모리 요청의 속도를 스로틀링하는 단계는:
    상기 프로세서 코어에 대해 사용 가능한 최대 계류 메모리 요청(pending memory requests) 수를 수정하는 단계를 더 포함하는, 방법.
  4. 제2항에 있어서, 상기 프리페처의 상기 공격성을 수정하는 단계는:
    상기 프리페처의 최대 프리페치 거리(prefetch distance)를 수정하는 단계; 및
    상기 프리페처의 최소 프리페치 신뢰도(prefetch confidence)를 수정하는 단계 중 적어도 하나를 포함하는, 방법.
  5. 제2항에 있어서, 상기 프리페처의 상기 공격성을 수정하는 단계는:
    상기 프리페처를 선택적으로 비활성화(disabling)하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서, 상기 프로세서 코어에 의해 발행될 수 있는 상기 메모리 요청의 속도를 스로틀링하는 단계는:
    상기 프로세서 코어 대해에 이용 가능한 최대 계류 메모리 요청의 수를 수정하는 단계를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 프리페치 정확도 메트릭을 결정하는 단계는 상기 프로세서 코어에서 실행되는 특정 스레드에 대한 상기 프리페치 정확도 메트릭을 결정하는 단계를 포함하고; 그리고
    상기 프로세서 코어에 의해 발행될 수 있는 상기 메모리 액세스 요청의 속도를 스로틀링하는 단계는 상기 지정된 스레드에 대해 상기 프로세서 코어에 의해 발행될 수 있는 메모리 액세스 요청의 속도를 조절하는 단계를 포함하는, 방법.
  8. 제1항에 있어서, 상기 액세스 레이턴시 메트릭을 결정하는 단계는:
    메모리 요청의 샘플 세트를 생성하기 위해 상기 프로세서 코어와 연관된 로컬 메모리에 발행된 복수의 메모리 요청을 샘플링(sampling)하는 단계;
    상기 샘플 세트의 각각의 메모리 요청에 대해, 상기 메모리 요청을 이행하기 위해 대응하는 액세스 레이턴시를 측정하는 단계; 및
    상기 메모리 요청의 샘플 세트에 대해 측정된 상기 액세스 레이턴시의 평균화에 기초하여 상기 액세스 레이턴시 메트릭을 결정하는 단계를 포함하는, 방법.
  9. 제1항에 있어서, 상기 프로세서 코어에 의해 발행될 수 있는 상기 메모리 요청의 속도를 스로틀링하는 단계는:
    복수의 스로틀 레벨을 나타내는 데이터 구조(data structure)에 액세스하는 단계로서, 각 스로틀 레벨은 이용 가능한 최대 계류중인 메모리 트랜잭션 수 및 프리페처 공격성 레벨 중 하나 이상에 대한 대응하는 수정을 나타내고, 각각의 스로틀 레벨은 대응하는 레이턴시 임계치 또는 대응하는 프리페치 정확도 임계치 중 적어도 하나와 관련되는, 상기 데이터 구조에 액세스하는 단계; 및
    상기 복수의 스로틀 레벨의 각각의 레이턴시 임계치 및 프리페치 정확도 임계치에 대한 상기 액세스 레이턴시 메트릭 및 상기 프리페치 정확도 메트릭의 비교에 기초하여 상기 프로세서 코어에 대해 구현할 스로틀 레벨을 선택하는 단계를 포함하는, 방법.
  10. 프로세싱 시스템에 있어서,
    로컬 메모리에 결합 가능한 상호 접속 패브릭(interconnect fabric); 및
    상기 상호 접속 패브릭에 결합된 적어도 하나의 컴퓨트 콤플렉스(compute complex)를 포함하고, 상기 컴퓨트 컴플렉스는:
    프로세서 코어; 및
    캐시 계층을 포함하고, 상기 캐시 계층은:
    복수의 캐시;
    액세스 레이턴시 메트릭 및 프리페치 정확도 메트릭 중 적어도 하나에 기초하여 상기 프로세서 코어에 의해 발행될 수 있는 메모리 요청 속도를 스로틀링하도록 구성된 스로틀 제어기를 포함하고;
    상기 액세스 레이턴시 메트릭은 상기 프로세서 코어에 대한 메모리 요청에 대한 평균 액세스 레이턴시를 나타내고; 그리고
    상기 프리페치 정확도 메트릭은 상기 캐시 계층의 캐시의 프리페처의 정확도를 나타내는, 프로세싱 시스템
  11. 제10항에 있어서, 상기 스로틀 제어기는 상기 프로세서 코어에 의해 발행될 수 있는 메모리 요청의 속도를,
    상기 액세스 레이턴시 메트릭 및 상기 프리페치 정확도 메트릭 중 적어도 하나에 기초하여 상기 프리페처의 공격성을 수정함으로써 스로틀링하도록 구성되는, 프로세싱 시스템.
  12. 제11항에 있어서, 상기 스로틀 제어기는 상기 프로세서 코어에 의해 발행될 수 있는 메모리 요청의 속도를,
    또한 상기 프로세서 코어에 사용 가능한 최대 계류 메모리 요청 수를 수정함으로써 스로틀링하도록 구성되는, 프로세싱 시스템.
  13. 제11항에 있어서, 상기 스로틀 제어기는 상기 프리페처의 상기 공격성을,
    상기 프리페처의 최대 프리페치 거리를 수정하는 것;
    상기 프리페처의 최소 프리페치 신뢰도를 수정하는 것; 및
    상기 프리페처를 선택적으로 불활성화하는 것,
    중 적어도 하나에 의해 수정하도록 구성되는, 프로세싱 시스템.
  14. 제11항에 있어서, 상기 스로틀 제어기는 상기 프리페처의 상기 공격성을,
    상기 프리페처의 최소 프리페치 신뢰도를 수정함으로써 수정하도록 구성되는, 프로세싱 시스템.
  15. 제10항에 있어서, 상기 스로틀 제어기는 상기 프로세서 코어에 의해 발행될 수 있는 상기 메모리 요청의 속도를,
    상기 프로세서 코어에 대해 사용 가능한 최대 계류 메모리 요청 수를 수정함으로써 스로틀링하도록 구성되는, 프로세싱 시스템.
  16. 제10항에 있어서, 상기 캐시 계층은:
    상기 프로세서 코어에서 실행되는 특정 스레드에 대한 상기 프리페치 정확도 메트릭을 결정하도록 구성된 프리페치 정확도 추적기를 더 포함하고,
    상기 스로틀 제어기는 상기 특정 스레드에 대해 상기 프로세서 코어에 의해 발행될 수 있는 상기 메모리 액세스 요청의 속도를 스로틀링하도록 구성되는, 프로세싱 시스템.
  17. 제10항에 있어서, 상기 캐시 계층은:
    메모리 요청의 샘플 세트를 생성하기 위해 상기 프로세서 코어와 연관된 로컬 메모리에 발행된 복수의 메모리 요청을 샘플링하는 것;
    상기 샘플 세트의 각각의 메모리 요청에 대해, 상기 메모리 요청을 이행하기 위한 대응하는 액세스 레이턴시를 측정하는 것; 및
    상기 메모리 요청의 샘플 세트에 대해 측정된 상기 액세스 레이턴시의 평균에 기초하여 상기 액세스 레이턴시 메트릭을 결정하는 것,
    에 의해 상기 액세스 레이턴시 메트릭을 결정하는 레이턴시 추적기를 더 포함하는, 프로세싱 시스템.
  18. 프로세싱 시스템에서 메모리 대역폭 이용을 스로틀링하는 방법에 있어서,
    상기 프로세싱 시스템의 컴퓨트 컴플렉스의 프로세서 코어에서 소프트웨어 어플리케이션을 실행하는 단계로서, 상기 소프트웨어 어플리케이션은 상기 소프트웨어 어플리케이션의 스레드에 대한 타겟 메모리 이용 대역폭 제한을 설정하도록 상기 프로세서 코어를 구성하는 적어도 하나의 명령을 포함하고는, 상기 소프트웨어 어플리케이션을 실행하는 단계;
    상기 컴퓨트 컴플렉스에서 상기 스레드의 실제 메모리 이용 대역폭을 모니터링하는 단계; 및
    상기 모니터링된 실제 메모리 이용 대역폭이 상기 타겟 메모리 이용 대역폭을 충족할 때까지 상기 스레드에 대해 설정된 스로틀링 레벨 설정을 증분적으로 수정하는 단계(incrementally modifying)를 포함하고,
    상기 스로틀링 레벨은 상기 스레드와 연관된 캐시의 프리페처의 공격성 및 상기 스레드에 사용 가능한 최대 계류 트랜잭션 수 중 적어도 하나를 구성하는, 방법.
  19. 제18항에 있어서, 상기 스로틀링 레벨은 상기 프리페처의 상기 공격성을,
    상기 프리페처의 프리페치 거리를 수정하는 단계; 및
    상기 프리페처의 최소 프리페치 신뢰도를 수정하는 단계 중 적어도 하나에 의해,
    구성하는, 방법.
  20. 제18항에 있어서, 상기 스로틀링 레벨은 상기 프리페처의 상기 공격성을,
    상기 프리페처를 선택적으로 불활성화하는 단계에 의해,
    구성하는, 방법.
KR1020207020107A 2017-12-12 2018-08-28 메모리 대역폭 사용을 제한하기 위한 메모리 요청 스로틀링 KR20200088502A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/838,809 2017-12-12
US15/838,809 US11294810B2 (en) 2017-12-12 2017-12-12 Memory request throttling to constrain memory bandwidth utilization
PCT/US2018/048350 WO2019118016A1 (en) 2017-12-12 2018-08-28 Memory request throttling to constrain memory bandwidth utilization

Publications (1)

Publication Number Publication Date
KR20200088502A true KR20200088502A (ko) 2020-07-22

Family

ID=66696161

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207020107A KR20200088502A (ko) 2017-12-12 2018-08-28 메모리 대역폭 사용을 제한하기 위한 메모리 요청 스로틀링

Country Status (6)

Country Link
US (2) US11294810B2 (ko)
EP (1) EP3724773A4 (ko)
JP (1) JP2021506026A (ko)
KR (1) KR20200088502A (ko)
CN (1) CN111465925A (ko)
WO (1) WO2019118016A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901778B2 (en) * 2018-09-27 2021-01-26 International Business Machines Corporation Prefetch chaining for optimizing data read-ahead for workflow and analytics
GB2578308B (en) * 2018-10-22 2021-02-17 Advanced Risc Mach Ltd Apparatus and method for prefetching data
US11726910B2 (en) * 2019-03-13 2023-08-15 Intel Corporation Dynamic control of memory bandwidth allocation for a processor
EP3938894B1 (en) * 2019-03-15 2023-08-30 INTEL Corporation Multi-tile memory management for detecting cross tile access, providing multi-tile inference scaling, and providing optimal page migration
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US11010095B2 (en) * 2019-07-25 2021-05-18 Western Digital Technologies, Inc. Dynamic and adaptive data read request scheduling
US11151011B2 (en) * 2019-10-01 2021-10-19 International Business Machines Corporation Uncore input/output latency analysis
US11709748B2 (en) * 2019-11-21 2023-07-25 Apple Inc. Adaptive memory performance control by thread group
US11176045B2 (en) * 2020-03-27 2021-11-16 Apple Inc. Secondary prefetch circuit that reports coverage to a primary prefetch circuit to limit prefetching by primary prefetch circuit
WO2020172693A2 (en) * 2020-04-29 2020-08-27 Futurewei Technologies, Inc. Statistic based cache pre-fetcher
US11520731B1 (en) * 2020-11-06 2022-12-06 Amazon Technologies, Inc. Arbitrating throttling recommendations for a systolic array
US11442890B1 (en) 2020-11-06 2022-09-13 Amazon Technologies, Inc. On-circuit data activity monitoring for a systolic array
US20220309005A1 (en) * 2021-03-27 2022-09-29 Intel Corporation Memory bandwidth control in a core
US20230057633A1 (en) * 2021-08-20 2023-02-23 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for transferring data between interconnected devices
US20230401164A1 (en) * 2022-06-09 2023-12-14 Texas Instruments Incorporated Methods and apparatus to estimate consumed memory bandwidth

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895584B1 (en) * 1999-09-24 2005-05-17 Sun Microsystems, Inc. Mechanism for evaluating requests prior to disposition in a multi-threaded environment
US6775749B1 (en) * 2002-01-29 2004-08-10 Advanced Micro Devices, Inc. System and method for performing a speculative cache fill
US7917903B2 (en) * 2003-03-27 2011-03-29 Hewlett-Packard Development Company, L.P. Quality of service controller and method for a data storage system
US7127567B2 (en) 2003-12-18 2006-10-24 Intel Corporation Performing memory RAS operations over a point-to-point interconnect
US7890738B2 (en) * 2005-01-20 2011-02-15 International Business Machines Corporation Method and logical apparatus for managing processing system resource use for speculative execution
US8079031B2 (en) 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US8032711B2 (en) 2006-12-22 2011-10-04 Intel Corporation Prefetching from dynamic random access memory to a static random access memory
US7917702B2 (en) * 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
US8516121B1 (en) * 2008-06-30 2013-08-20 Symantec Corporation Method and apparatus for optimizing computer network usage to prevent congestion
US9325583B2 (en) * 2009-01-27 2016-04-26 Hewlett Packard Enterprise Development Lp Method and system for optimizing network input/output performance
US8230177B2 (en) * 2009-05-28 2012-07-24 Oracle America, Inc. Store prefetching via store queue lookahead
US8443151B2 (en) * 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
EP2690561A4 (en) * 2011-03-22 2014-12-31 Fujitsu Ltd PROCESSING UNIT, INFORMATION PROCESSING DEVICE, AND PROCESSING UNIT CONTROL METHOD
US8892822B2 (en) 2011-11-29 2014-11-18 Oracle International Corporation Selectively dropping prefetch requests based on prefetch accuracy information
WO2013101079A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Profiling asynchronous events resulting from the execution of software at code region granularity
US9606800B1 (en) * 2012-03-15 2017-03-28 Marvell International Ltd. Method and apparatus for sharing instruction scheduling resources among a plurality of execution threads in a multi-threaded processor architecture
US20130297910A1 (en) * 2012-05-03 2013-11-07 Jared C. Smolens Mitigation of thread hogs on a threaded processor using a general load/store timeout counter
US9003223B2 (en) * 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
US20140108740A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetch throttling
US9471510B2 (en) * 2013-12-20 2016-10-18 Netapp, Inc. System and method for cache monitoring in storage systems
US20150363116A1 (en) * 2014-06-12 2015-12-17 Advanced Micro Devices, Inc. Memory controller power management based on latency
US9465744B2 (en) 2014-07-29 2016-10-11 International Business Machines Corporation Data prefetch ramp implemenation based on memory utilization
US9507596B2 (en) * 2014-08-28 2016-11-29 Intel Corporation Instruction and logic for prefetcher throttling based on counts of memory accesses to data sources
US20160070647A1 (en) * 2014-09-09 2016-03-10 Kabushiki Kaisha Toshiba Memory system
US10078471B2 (en) * 2015-05-19 2018-09-18 Toshiba Memory Corporation Memory device that sorts access commands to a nonvolatile semiconductor memory unit thereof
EP3268865B1 (en) * 2015-06-26 2021-08-04 Hewlett Packard Enterprise Development LP Self-tune controller
US10296460B2 (en) * 2016-06-29 2019-05-21 Oracle International Corporation Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds
US10331566B2 (en) * 2016-12-01 2019-06-25 International Business Machines Corporation Operation of a multi-slice processor implementing adaptive prefetch control

Also Published As

Publication number Publication date
US11294810B2 (en) 2022-04-05
JP2021506026A (ja) 2021-02-18
EP3724773A4 (en) 2021-09-15
US20190179757A1 (en) 2019-06-13
WO2019118016A1 (en) 2019-06-20
US20220292019A1 (en) 2022-09-15
US11675703B2 (en) 2023-06-13
CN111465925A (zh) 2020-07-28
EP3724773A1 (en) 2020-10-21

Similar Documents

Publication Publication Date Title
US11675703B2 (en) Memory request throttling to constrain memory bandwidth utilization
US8473689B2 (en) Predictive sequential prefetching for data caching
US8443151B2 (en) Prefetch optimization in shared resource multi-core systems
US8706969B2 (en) Variable line size prefetcher for multiple memory requestors
JP6840169B2 (ja) キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択
JP7232175B2 (ja) キャッシュメモリのデータ置換方法及びプロセッサ
US9619390B2 (en) Proactive prefetch throttling
JP2021510886A (ja) プリフェッチャベースの投機的ダイナミックランダムアクセスメモリ読み出し要求技術
US20140181402A1 (en) Selective cache memory write-back and replacement policies
US10496550B2 (en) Multi-port shared cache apparatus
US11803484B2 (en) Dynamic application of software data caching hints based on cache test regions
US8595443B2 (en) Varying a data prefetch size based upon data usage
US20230058689A1 (en) Controller with caching and non-caching modes
US8364904B2 (en) Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
US20130191599A1 (en) Cache set replacement order based on temporal set recording
JP2023507078A (ja) プリフェッチレベルの降格
US9767041B2 (en) Managing sectored cache
US9645935B2 (en) Intelligent bandwidth shifting mechanism
KR102176304B1 (ko) 하위 레벨 캐시에서 캐시 라인의 연령을 제어함으로써 메모리에 대한 후기입 감소
US9367467B2 (en) System and method for managing cache replacements
CA2832223C (en) Multi-port shared cache apparatus

Legal Events

Date Code Title Description
E902 Notification of reason for refusal