KR102627410B1 - 서비스 품질 더티 라인 추적 - Google Patents

서비스 품질 더티 라인 추적 Download PDF

Info

Publication number
KR102627410B1
KR102627410B1 KR1020227010942A KR20227010942A KR102627410B1 KR 102627410 B1 KR102627410 B1 KR 102627410B1 KR 1020227010942 A KR1020227010942 A KR 1020227010942A KR 20227010942 A KR20227010942 A KR 20227010942A KR 102627410 B1 KR102627410 B1 KR 102627410B1
Authority
KR
South Korea
Prior art keywords
cache
counter
memory bandwidth
cache line
write
Prior art date
Application number
KR1020227010942A
Other languages
English (en)
Other versions
KR20220057572A (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 KR20220057572A publication Critical patent/KR20220057572A/ko
Application granted granted Critical
Publication of KR102627410B1 publication Critical patent/KR102627410B1/ko

Links

Classifications

    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

기록 메모리 대역폭의 측정값을 생성하기 위한 시스템, 장치 및 방법이 개시된다. 제어 장치는 캐시 계층에 대한 기록을 모니터링한다. 캐시 라인에 대한 기록이 캐시 계층에 들어간 이후 처음으로 캐시 라인이 수정되는 경우 제어 장치는 기록 메모리 대역폭 카운터를 증가시킨다. 그렇지 않고, 기록이 캐시 계층에 들어간 이후 이미 수정된 캐시 라인에 대한 것이라면 기록 메모리 대역폭 카운터는 증가되지 않는다. 캐시 라인에 대한 첫 번째 기록은 기록 메모리 대역폭에 대한 프록시이다. 이는 결국 메모리에 기록을 유발하기 때문이다. 제어 장치는 기록 메모리 대역폭 카운터의 값을 사용하여 기록 메모리 대역폭의 측정값을 생성한다. 또한, 제어 장치는 스레드 클래스당 기록 메모리 대역폭을 계산하기 위해 다른 스레드 클래스에 대해 여러 카운터를 유지할 수 있다.

Description

서비스 품질 더티 라인 추적
대부분의 최신 컴퓨팅 디바이스는 컴퓨팅 디바이스의 주 메모리 외에 적어도 한 수준의 캐시 메모리(또는 캐시)를 제공한다. 일반적으로 캐시는 동작을 수행하는 컴퓨팅 디바이스의 기능 블록에 더 가까운 다양한 작업을 수행하는 데 사용되는 제한된 수의 데이터 사본과 10개의 명령어를 저장하기 위해 사용되는 더 작은 용량의 더 빠른 액세스 메모리이다. 케시는 일반적으로 정적 랜덤 액세스 메모리(SRAM) 집적 회로 또는 다른 유형의 메모리 회로와 같은 고속 메모리 회로를 사용하여 구현된다. 프로세서가 메모리에 저장된 데이터에 대한 액세스를 요청하면 프로세서는 먼저 데이터 사본이 캐시에 저장되어 있는지를 결정한다. 저장되어 있다면 프로세서는 캐시에 액세스하여 데이터에 더 효율적으로 액세스할 수 있다.
일부 캐시에서는 캐시 라인과 관련된 클래스 또는 스레드가 캐시에 저장된다. 이것은 많은 양의 영역을 소비할 수 있는 추가 정보가 캐시에 저장되게 한다. 또한, 스레드 클래스의 표시가 캐시에 저장되는 방식에서 소프트웨어는 스레드 클래스를 주기적으로 변경할 수 있다. 이 경우 잠재적으로 큰 L3(레벨 3) 캐시의 캐시 라인에 있는 스레드 클래스 정보가 부실한 상태일 수 있다.
본 명세서에 설명된 방법들 및 메커니즘들의 이점들은 첨부 도면들과 함께 이하의 설명을 참조함으로써 더 잘 이해될 수 있으며, 첨부 도면들에서:
도 1은 컴퓨팅 시스템의 일 구현 예의 블록도이다.
도 2는 프로세서의 일 구현 예의 블록도이다.
도 3은 캐시 계층 구조에 대한 기록 메모리 대역폭을 계산하는 일 구현 예의 블록도이다.
도 4는 기록 메모리 대역폭의 측정값을 생성하기 위한 방법의 일 구현을 예시하는 일반화된 흐름도이다.
도 5는 캐시에 대한 기록을 모니터링하기 위한 방법의 일 구현을 예시하는 일반화된 흐름도이다.
도 6은 기록 메모리 대역폭의 측정값을 생성하기 위한 방법의 일 구현을 예시하는 일반화된 흐름도이다.
도 7은 스레드 클래스당 기록 메모리 대역폭의 측정값을 생성하기 위한 방법의 일 구현을 예시하는 일반화된 흐름도이다.
다음의 설명에서, 많은 특정 세부사항들이 본원에 제시된 방법들 및 메커니즘들의 완전한 이해를 제공하기 위해 제시된다. 그러나 본 기술분야에서 통상의 기술을 가진 자는 다양한 구현예들이 이러한 특정 세부 사항들 없이 실시될 수 있음을 인식해야 한다. 일부 예들에서, 주지의 구조들, 컴포넌트들, 신호들, 컴퓨터 프로그램 명령어들 및 기술들은 본원에 설명된 접근 방식들을 모호하게 하지 않도록 상세하게 설명되지 않았다. 설명의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 비례하여 도시된 것은 아님이 이해될 것이다. 예를 들어, 요소들 중 일부의 치수들은 다른 요소들에 비해 과장될 수 있다.
기록 메모리 대역폭을 측정하기 위한 다양한 시스템, 장치, 방법 및 컴퓨터 판독가능 매체가 본원에 개시된다. 일 구현 예에서 시스템은 프로세서, 캐시 계층 및 메모리 서브시스템을 포함한다. 캐시 계층은 하나 이상의 캐시 레벨과 하나 이상의 캐시 컨트롤러(즉, 제어 장치)를 포함한다. 일 구현 예에서, 주어진 제어 장치는 캐시 계층에 대한 기록을 모니터링한다. 캐시 라인에 대한 기록이 캐시 계층에 들어간 이후 처음으로 캐시 라인이 수정되는 경우 제어 장치는 기록 메모리 대역폭 카운터를 증가시킨다. 그렇지 않고, 기록이 캐시 계층에 들어간 이후 이미 수정된 캐시 라인에 대한 것이라면 제어 장치는 기록 메모리 대역폭 카운터를 증가시키지 않는다. 캐시 라인에 대한 첫 번째 기록은 기록 메모리 대역폭에 대한 프록시이다. 이는 결국 메모리에 기록을 유발하기 때문이다. 제어 장치는 기록 메모리 대역폭 카운터의 값을 사용하여 기록 메모리 대역폭의 측정값을 생성한다. 또한, 제어 장치는 스레드 클래스당 기록 메모리 대역폭을 계산하기 위해 다른 스레드 클래스에 대해 여러 카운터를 유지할 수 있다.
이제 도 1을 참조하면, 컴퓨팅 시스템(100)의 일 구현예의 블록도가 도시된다. 일 구현예에서, 컴퓨팅 시스템(100)은 적어도 프로세서들(105A-N), 입력/출력(I/O) 인터에피스들(120), 버스(125), 메모리 컨트롤러(들)(130A-N) 및 네트워크 인터페이스(135) 및 메모리 디바이스(들)(140A-N)를 포함한다. 다른 구현예들에서, 컴퓨팅 시스템(100)은 다른 컴포넌트들(예: 디스플레이 컨트롤러)을 포함하고/하거나 컴퓨팅 시스템(100)은 다르게 배열된다. 프로세서들(105A-N)은 시스템(100)에 포함되는 임의 개수의 프로세서들을 나타낸다.
일 구현예에서, 프로세서(105A)는 중앙 처리 장치(CPU)와 같은 범용 프로세서이다. 일 구현예에서, 프로세서(105N)는 고 병렬 아키텍처(highly parallel architecture)를 갖는 데이터 병렬 프로세서이다. 데이터 병렬 프로세서들은 그래픽 처리 유닛(GPU), 디지털 신호 프로세서(DSP), 필드 프로그램 가능 게이트 어레이(FPGA), 주문형 반도체(ASIC) 등을 포함한다. 일 구현예에서 프로세서(105A)는 적어도 실행 코어(들)(110A), 캐시 서브시스템(115A) 및 메모리 컨트롤러(130A)를 포함한다. 유사하게, 프로세서(105N)는 적어도 실행 코어(들)(110N), 캐시 서브시스템(115N) 및 메모리 컨트롤러(130N)를 포함한다. 실행 코어(들)(110A-N)는 본원에서 실행 유닛으로도 지칭될 수 있다는 점에 유의한다. 도면을 불명료하게 하는 것을 피하기 위해 프로세서(105A-N)가 도시되지 않은 다른 컴포넌트들을 포함한다는 점에도 유의한다.
시스템(100)의 경우 소프트웨어에 대한 정보 제공에 대해, 서비스 품질 방식을 통한 대역폭 할당에 대해 또는 얼마나 많은 메모리 대역폭이 사용되고 있는지에 대해 관심이 있는 다른 하드웨어에 대해 주어진 프로세스 또는 프로세스의 클래스에 대한 메모리 대역폭을 측정하고자 할 수 있다. 기존 솔루션은 캐시 미스 요청에 글로벌 요청자 ID 또는 기타 클래스 표시가 요청에 첨부되어 있기 때문에 비교적 간단한 방식으로 판독 메모리 대역폭을 측정한다. 기록 메모리 대역폭을 측정하는 것은 기록이 캐시 축출(eviction)의 결과일 수 있고 캐시가 캐시 라인이 속한 클래스의 표시를 저장하지 않을 수 있기 때문에 덜 간단하다. 따라서, 다양한 구현예들에서, 시스템(100)은 메모리 디바이스들(140A-N)에 대한 기록 메모리 대역폭을 효율적인 방식으로 측정하기 위해 다양한 기술들을 사용한다.
일 구현예에서 캐시 서브시스템(115A-N)은 캐시 서브시스템(115A-N)으로 가져온 후 실행 코어(들)(110A-N) 각각에 의해 캐시 라인이 처음으로 기록되는 시간을 모니터링하기 위한 제어 로직을 포함한다. 일 구현예에서 제어 로직은 캐시 라인이 대응하는 캐시 서브시스템(115A-N)의 임의의 레벨에서 캐시된 이후 처음으로 수정될 때마다 카운터를 증가시킨다. 캐시 라인이 두 번째 또는 그 후에 수정되는 경우 제어 로직은 카운터를 증가시키지 않는다. 제어 로직은 카운터 값을 기반으로 기록 메모리 대역폭의 측정값을 생성한다. 일 구현예에서 제어 로직은 스레드 클래스 기반으로 캐시 라인에 대한 최초 기록을 모니터링한다. 이 구현예에서 제어 로직은 기록 메모리 대역폭의 스레드 클래스당 측정값을 생성한다.
메모리 컨트롤러(들)(130A-N)은 임의의 수 및 유형의 메모리 디바이스(들)(140A-N)에 각각 결합되는 임의의 수 및 유형의 메모리 컨트롤러를 나타낸다. 메모리 컨트롤러(들)(130A-N)가 각각 프로세서(105A-N) 내에 위치하는 것으로 도시되어 있지만, 이는 단지 하나의 구현을 나타내는 것일 뿐이다. 다른 구현예에서, 메모리 컨트롤러(들)(130A-N)는 각각 프로세서(105A-N) 외부에 있다. 캐시 서브시스템(115A-N)의 일부는 각각 실행 코어(들)(110A-N) 내에 위치할 수 있고, 캐시 서브시스템(115A-N)의 다른 부분은 실행 코어(들)(110A-N) 외부에 위치할 수 있음이 또한 주목된다. 예를 들어, 한 구현예에서, 레벨 1(L1) 및 레벨 2(L2) 캐시는 실행 코어들(110A-N) 내에 위치하는 반면 마지막 레벨 캐시(LLC)는 실행 코어(들)(110A-N) 외부에 위치한다.
메모리 디바이스(들)(140)는 임의의 수 및 유형의 메모리 디바이스(들)을 나타낸다. 예를 들어, 메모리 디바이스(들)(140)의 메모리 유형은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), NAND 플래시 메모리, NOR 플래시 메모리, 강유전체 랜덤 액세스 메모리(FeRAM) 등을 포함할 수 있다. I/O 인터페이스들(120)은 임의 개수 및 유형의 I/O 인터페이스들(예를 들어, 주변 컴포넌트 인터커넥트(PCI) 버스, 확장 PCI(PCI-X), PCIE(PCI Express) 버스, 기가바이트 이더넷(GBE) 버스, 범용 직렬 버스(USB))을 나타낸다. 다양한 유형의 주변 기기들(도시되지 않음)은 I/O 인터페이스들(120)에 결합된다. 이러한 주변 장치들은 (이에 제한되는 것은 아니나) 디스플레이, 네트워크 인터페이스 카드, 키보드, 마이크, 프린터, 스캐너, 조이스틱 또는 다른 유형의 게임 컨트롤러, 매체 기록 장치, 외부 저장 장치 등을 포함한다. 네트워크 인터페이스(135)는 네트워크를 통해 메시지들을 송수신하는 데 사용된다.
다양한 실시예들에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩탑, 모바일 장치, 게임 콘솔, 서버, 스트리밍 장치, 웨어러블 장치 또는 임의의 다양한 다른 유형의 컴퓨팅 시스템들 또는 장치들일 수 있다. 컴퓨팅 시스템(100)의 컴포넌트들의 개수는 구현예마다 다를 수 있다는 점에 유의한다. 예를 들어, 도 1에 도시된 개수보다 더 많거나 더 적은 각 컴포넌트가 있을 수 있다. 컴퓨팅 시스템(100)은 도 1에 도시되지 않은 다른 컴포넌트들을 포함할 수도 있다는 점에 유의한다. 추가로, 다른 구현예들에서, 컴퓨팅 시스템(100)은 도 1에 도시된 것과 다른 방식들로 구조화될 수 있다.
이제 도 2를 참조하면, 프로세서(200)의 한 구현예의 블록도가 도시된다. 일 구현예에서 프로세서(200)는 적어도 실행 코어(205), 캐시 서브시스템(210), 제어 장치(215) 및 메모리 서브시스템(220)을 포함한다. 프로세서(200)는 도면을 불명료하게 하는 것을 피하기 위해 도시되지 않은 다른 컴포넌트들을 포함할 수도 있다. 코어(205)는 하나 이상의 프로그램 및/또는 운영 체제의 명령어를 실행하기 위한 임의의 수의 프로세서 코어를 나타낸다. 일 구현예에서, 프로세서(200)의 회로는 프로세서(105A) 및/또는 프로세서 105N(도 1의)에 포함된다.
일 구현예에서, 코어(205)는 읽기 및 기록 요청을 캐시 서브시스템(210)에 보낸다. 제어 장치(215)는 캐시 서브시스템(210)의 캐시 라인에 수행되는 기록을 모니터링하고 프로세서(200)의 다른 스레드 클래스에 대해 캐시 라인이 처음 기록되는 시간을 추적하기 위해 카운터를 유지한다. 캐시 서브시스템(210) 내로 가져온 이후 처음으로 캐시 라인이 기록될 때마다 제어 장치(215)는 캐시 라인의 대응하는 스레드 클래스에 대한 카운터를 증가시킨다. 각 카운터는 대응하는 스레드 캐시에 대한 기록 메모리 대역폭의 추정치를 생성하는 데 사용된다.
이제 도 3을 참조하면 캐시 계층(300)에 대한 기록 메모리 대역폭을 계산하는 일 구현예의 블록도가 도시되어 있다. 캐시 계층(300)은 임의의 수의 캐시 레벨을 포함하며, 그 레벨 수는 구현예에 따라 다르다. 일 구현예에서, 캐시 계층(300)은 도 2의 캐시 서브시스템(210)을 나타낸다. 제어 장치(310)는 캐시 계층(300)의 캐시 라인에 수행되는 기록을 모니터링한다. 일 구현예에서, 제어 장치(310)는 호스트 컴퓨팅 시스템의 개별 스레드 각각에 대한 개별 카운터(325A-N)을 포함한다. 주어진 캐시 라인이 캐시 계층(300)에 들어간 이후 처음으로 주어진 캐시 라인에 기록이 수행될 때 제어 장치(310)는 기록 동작(write operation)의 스레드 클래스를 결정한다. 일 구현예에서, 제어 장치(310)는 실행 유닛으로부터 스레드 클래스의 표시를 수신한다. 다른 구현예에서, 제어 장치(310)는 어드레스에 대응하는 스레드 클래스를 찾기 위해 주어진 캐시 라인의 어드레스로 테이블(330)에 대한 룩업을 수행한다. 추가 구현예에서, 제어 장치(310)는 기록 동작의 스레드 클래스를 결정하기 위해 실행 유닛의 로드/저장 유닛(미도시)에 질의한다. 다른 구현예에서, 제어 장치(310)는 기록 동작의 스레드 클래스를 결정하기 위해 다른 기술들을 사용한다.
각 카운터(325A-N)는 대응하는 스레드 캐시에 대한 기록 메모리 대역폭을 나타낸다. 일 구현예에서, 주어진 카운터(325A-N)의 값이 프로그램 가능한 임계값보다 크면 해당 스레드 클래스의 메모리 트래픽은 주어진 카운터(325A-N)의 값이 프로그램 가능한 임계값 아래로 떨어질 때까지 감소한다. 다양한 구현예에서, 해당 스레드 클래스의 메모리 트래픽은 메모리 컨틀롤러에서 기록 요청을 큐잉하여, 해당 스레드 클래스의 기록 요청의 우순순위를 낮추어서 또는 다른 기술을 사용하여 감소한다. 예를 들어, 해당스레드 클래스의 매모리 트래픽을 줄이기 위한 다른 메커니즘에는 실행 코어에서 해당 스레드 클래스의 미해결을 허용하는 것이 가능한 메모리 요청 수를 줄이고 해당 스레드 클래스의 실행 속도를 원하는 메모리 트래픽 속도에 도달하는 수준으로 줄이는 것이 포함된다.
이제 도 4를 참조하면, 기록 메모리 대역폭의 측정값을 생성하기 위한 방법(400)의 일 구현예가 도시되어 있다. 설명의 목적으로, 이 구현예의 단계들과 도 5~7의 단계들이 순차적으로 표시된다. 그러나 설명된 방법들의 다양한 구현예들에서, 설명된 요소들 중 하나 이상은 도시된 것과 다른 순서로 동시에 수행되거나 또는 완전히 생략된다는 점에 유의한다. 다른 추가 요소들이 또한 원하는 대로 수행된다. 본 명세서에서 설명된 다양한 시스템들 또는 장치들 중 어느 하나가 방법(400)을 구현하도록 구성된다.
제어 장치는 캐시 계층에 들어간 이후 처음으로 캐시 라인이 수정될 때마다 카운터를 증가시킨다(블록 405). 제어 장치는 카운터 값을 기반으로 기록 메모리 대역폭의 측정값을 생성한다(블록 410). 기록 메모리 대역폭의 측정치를 생성하는 일 예는 방법(600)(도 6의)에 설명되어 있다. 기록 메모리 대역폭의 측정값이 주어진 임계값보다 크면(조건부 블록(415), "예" 레그), 제어 장치는 메모리 서브시스템(420)으로 전송되는 기록 동작의 수를 줄인다. 그렇지 않고, 기록 메모리 대역폭의 측정값이 주어진 임계값보다 작으면(조건부 블록(415), "아니오" 레그), 제어 장치는 메모리 서브시스템으로 전송되는 기록 동작을 간섭하지 않는다(블록 425). 블록(420 및 425) 후, 방법(400)은 블록(405)으로 돌아간다. 다른 구현에에서, 제어 장치는 블록(410)에서 생성된 기록 메모리 대역폭의 측정값을 판독 메모리 대역폭의 측정값에 더함으로써 총 메모리 대역폭의 측정값을 생성한다. 그런 다음, 이 구현예에서, 제어 장치는 총 메모리 대역폭이 조건부 블록(415)에서 주어진 임계값보다 큰지를 결정한다.
이제 도 5를 참조하면, 캐시에 대한 기록을 모니터링하기 위한 방법(500)의 일 구현예가 도시되어 있다. 주어진 캐시 라인에 대한 기록 동작이 검출된다(블록 505). 기록 동작을 검출한 것에 응답하여, 제어 장치는 주어진 캐시 라인에 대한 기록이 캐시 계층에 들어간 이후 주어진 캐시 라인이 처음으로 수정되는지 여부를 결정한다(블록 510). 일 구현예에서, 주어진 캐시 라인의 더티 상태는 캐시 계층에 들어간 이후에 주어진 캐시 라인이 이전에 기록되었는지를 결정하기 위해 검사된다.
주어진 캐시 라인에 대한 기록이 주어진 캐시 라인이 캐시 계층에 들어간 이후 주어진 캐시 라인이 처음으로 수정되는 것이라면(조건부 블록 515, "예" 레그), 제어 장치는 대응하는 카운터를 증가시킨다(블록 520). 그렇지 않고, 주어진 캐시 라인이 캐시 계층에 들어간 이후 이전에 수정되었다면(조건부 블록 515, "아니오" 레그), 제어 장치는 대응하는 카운터를 변경하지 않고 유지한다(블록 525). 블록(520 및 525) 후, 방법(500)이 종료된다.
이제 도 6을 참조하면, 기록 메모리 대역폭의 측정값을 생성하기 위한 방법(600)의 일 구현예가 도시되어 있다. 제어 장치는 캐시 계층에 저장된 수정되지 않은 캐시 라인에 수행된 기록을 추적하기 위해 카운터를 유지한다(블록 605). 수정된 캐시 라인에 대해 수행된 기록은 카운터에 의해 추적되지 않는다. 제어 장치는 제1 시점에서 카운터 값의 제1 스냅샷을 취한다(블록 610). 또는, 다른 구현예에서, 제어 장치는 방법(600)의 시작에서 카운터를 리셋하고, 이 경우 블록(610)은 카운터가 제1 시점에서 0의 값을 가질 것이기 때문에 건너뛸 수 있다.
나중에, 일정 기간이 경과한 후, 제어 장치는 제2 시점에서 카운터 값의 제2 스냅샷을 취한다(블록 615). 제1 시점과 제2 시점 사이에 경과하도록 허용되는 시간의 양은 프로그래밍 가능하거나 미리 결정된 시간의 양일 수 있다. 다음으로, 제어 장치는 카운터 값의 제2 스냅샷과 제1 스냅샷 간의 차이를 제1 시점과 제2 시점 사이에 경과된 클록 사이클의 수로 나눈 것과 같은 기록 메모리 대역폭의 측정값을 생성한다(블록 620). 블록(620) 이후, 방법(600)이 종료된다. 블록(620)에서 생성된 기록 메모리 대역폭의 측정값은 다양한 방식으로 소프트웨어 및/또는 하드웨어에 의해 사용될 수 있음에 유의한다. 방법(600)이 주기적으로 실행될 수 있다는 것도 유의한다. 경우에 따라, 제어 장치는 방법(600)을 반복할 때마다 카운터를 재설정한다.
이제 도 7을 참조하면, 스레드 클래스당 기록 메모리 대역폭을 추적하기 위한 방법(700)의 일 구현예가 도시되어 있다. 제어 장치는 복수의 상이한 스레드 클래스에 대한 복수의 카운터를 유지하고, 각각의 카운터는 개별 스레드 클래스에 대한 기록 메모리 대역폭을 추적한다(블록 705). 캐시 라인에 대한 기록이 검출될 때마다 제어 장치는 캐시 라인이 캐시 계층에 들어간 이후 기록이 캐시 라인의 첫 번째 수정인지를 결정한다(블록 710). 예를 들어, 일 구현예에서, 대응하는 더티 비트 세트를 갖지 않는 캐시 라인에 대한 기록은 캐시 라인의 첫 번째 수정으로 간주된다.
기록이 캐시 라인이 캐시 계층에 들어간 이후 캐시 라인의 첫 번째 수정이면(조건부 블록 715, "예" 레그), 제어 장치는 캐시 라인이 속한 스레드 클래스를 결정한다(블록 720). 일 구현예에서, 제어 장치는 캐시 라인에 대한 기록을 야기한 명령어에 대응하는 로드/저장 유닛 엔트리로부터 스레드 클래스를 검색한다. 다른 구현예에서, 제어 장치는 캐시 라인에 대한 기록을 야기한 명령어에 대응하는 리오더 버퍼 엔트리로부터 스레드 클래스를 검색한다. 추가 구현예에서, 제어 장치는 어드레스에 대응하는 스레드 클래스를 결정하기 위해 캐시 라인의 어드레스를 사용하여 스레드 클래스의 룩업을 수행한다. 캐시 라인이 캐시 계층에 들어간 이후 이 기록이 캐시 라인의 첫 번째 수정이 아닌 경우(조건부 블록 715, "아니오" 레그), 방법(700)은 블록(710)으로 돌아간다. 캐시 라인이 속한 스레드 클래스를 결정한 후, 제어 장치는 이 스레드 클래스에 대응하는 카운터를 증가시킨다(블록 725). 블록(725) 이후, 방법(700)은 블록(710)으로 돌아간다.
다양한 구현예들에서, 소프트웨어 어플리케이션의 프로그램 명령어들은 본원에 설명된 방법들 및/또는 메커니즘들을 구현하는 데 사용된다. 예를 들어, 범용 또는 특수 목적 프로세서에 의해 실행 가능한 프로그램 명령어들이 고려된다. 다양한 구현예들에서, 이러한 프로그램 명령어들은 하이 레벨 프로그래밍 언어에 의해 표현된다. 다른 구현예들에서, 프로그램 명령어들은 하이 레벨 프로그래밍 언어에서 이진, 중간 또는 다른 형태로 컴파일된다. 대안으로, 하드웨어의 행동 또는 설계를 설명하는 프로그램 명령어들이 작성된다. 이러한 프로그램 명령어들은 C와 같은 하이 레벨 프로그래밍 언어에 의해 표현된다. 또는, 베릴로그(Verilog )와같은 하드웨어 설계 언어(HDL)가 사용된다. 다양한 구현예들에서, 프로그램 명령어들은 임의의 다양한 비일시적 컴퓨터 판독 가능 저장 매체에 저장된다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령어들을 제공하기 위해 사용 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 일반적으로 말하면, 이러한 컴퓨팅 시스템은 프로그램 명령어들을 실행하도록 구성된 적어도 하나 이상의 메모리들 및 하나 이상의 프로세서들을 포함한다.
전술한 구현예들은 단지 구현의 비-제한적인 예일 뿐이라는 것이 강조되어야 한다. 상술한 개시가 완전히 이해되면, 당업자에게는 다양한 변형 및 수정이 명백해질 것이다. 다음의 특허 청구 범위는 모든 변형과 수정을 포함하는 것으로 해석되어야 한다.

Claims (20)

  1. 회로를 포함하는 캐시 제어 장치(cache control unit)로서,
    상기 회로는,
    캐시에 저장된 캐시 라인(cache line)들에 대한 하나 이상의 기록(write)들을 검출하도록 구성되고, 그리고
    상기 기록들 중 하나 이상의 기록이, 수정되지 않은 캐시 라인(unmodified cache line)들에 대한 것이라는 결정에 적어도 부분적으로 기반하여 메모리 대역폭(memory bandwidth)의 측정값을 생성하도록 구성되는 것을 특징으로 하는 캐시 제어 장치.
  2. 제1항에 있어서,
    상기 회로는,
    상기 캐시에 저장된 수정되지 않은 캐시 라인들에 대한 기록들을 추적하기 위해 카운터(counter)를 유지하도록 구성되고, 그리고
    상기 카운터에 적어도 부분적으로 기반하여 메모리 대역폭의 상기 측정값을 생성하도록 구성되는 것을 특징으로 하는 캐시 제어 장치.
  3. 제2항에 있어서,
    상기 회로는,
    제1 시점에서의 상기 카운터의 값과 제2 시점에서의 상기 카운터의 값 간의 차이를 결정하도록 구성되고, 그리고
    상기 차이에 적어도 부분적으로 기반하여 메모리 대역폭의 상기 측정값을 결정하도록 구성되는 것을 특징으로 하는 캐시 제어 장치.
  4. 제2항에 있어서,
    상기 회로는,
    제1 캐시 라인에 대한 주어진 기록 동작이, 상기 제1 캐시 라인이 상기 캐시에 들어간 이후 상기 제1 캐시 라인의 첫 번째 수정이라는 결정에 응답하여 상기 카운터를 증가시키도록 구성되는 것을 특징으로 하는 캐시 제어 장치.
  5. 제4항에 있어서,
    상기 회로는,
    상기 제1 캐시 라인에 대한 상기 주어진 기록이, 상기 제1 캐시 라인이 상기 캐시에 들어간 이후 상기 제1 캐시 라인의 상기 첫 번째 수정이 아니라는 결정에 응답하여 상기 카운터의 값을 유지하도록 구성되는 것을 특징으로 하는 캐시 제어 장치.
  6. 제3항에 있어서,
    상기 회로는,
    상기 제1 시점과 상기 제2 시점 사이에 경과된 클록 사이클(clock cycle)들의 수(number)를 결정하도록 구성되는 것을 특징으로 하는 캐시 제어 장치.
  7. 제1항에 있어서,
    상기 회로는,
    총 메모리 대역폭(total memory bandwidth)을 결정하기 위해 판독 메모리 대역폭(read memory bandwidth)의 측정값에 메모리 대역폭의 상기 측정값을 더하도록 구성되는 것을 특징으로 하는 캐시 제어 장치.
  8. 방법으로서,
    상기 방법은,
    캐시에 저장된 캐시 라인들에 대한 하나 이상의 기록들을 검출하는 것과, 그리고
    상기 기록들 중 하나 이상의 기록이, 수정되지 않은 캐시 라인들에 대한 것이라는 결정에 적어도 부분적으로 기반하여 메모리 대역폭의 측정값을 생성하는 것을 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 방법은 또한,
    상기 캐시에 저장된 수정되지 않은 캐시 라인들에 대한 기록들을 추적하기 위해 카운터를 유지하는 것과, 그리고
    상기 카운터에 적어도 부분적으로 기반하여 메모리 대역폭의 상기 측정값을 생성하는 것을 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 방법은 또한,
    제1 시점에서의 상기 카운터의 값과 제2 시점에서의 상기 카운터의 값 간의 차이를 결정하는 것과, 그리고
    상기 차이에 적어도 부분적으로 기반하여 메모리 대역폭의 상기 측정값을 결정하는 것을 포함하는 것을 특징으로 하는 방법.
  11. 제9항에 있어서,
    상기 방법은,
    제1 캐시 라인에 대한 주어진 기록 동작이, 상기 제1 캐시 라인이 상기 캐시에 들어간 이후 상기 제1 캐시 라인의 첫 번째 수정이라는 결정에 응답하여 상기 카운터를 증가시키는 것을 포함하는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 방법은 또한,
    상기 제1 캐시 라인에 대한 상기 주어진 기록이, 상기 제1 캐시 라인이 상기 캐시에 들어간 이후 상기 제1 캐시 라인의 상기 첫 번째 수정이 아니라는 결정에 응답하여 상기 카운터의 값을 유지하는 것을 포함하는 것을 특징으로 하는 방법.
  13. 제10항에 있어서,
    상기 방법은 또한,
    상기 제1 시점과 상기 제2 시점 사이에 경과된 클록 사이클들의 수를 결정하는 것을 포함하는 것을 특징으로 하는 방법.
  14. 시스템으로서,
    상기 시스템은,
    메모리 서브시스템(memory subsystem); 및
    상기 메모리 서브시스템에 결합된 프로세서(processor)를 포함하고,
    상기 프로세서는,
    캐시에 저장된 캐시 라인들에 대한 하나 이상의 기록들을 검출하도록 구성되고, 그리고
    상기 기록들 중 하나 이상의 기록이, 수정되지 않은 캐시 라인들에 대한 것이라는 결정에 적어도 부분적으로 기반하여 메모리 대역폭의 측정값을 생성하도록 구성되는 것을 특징으로 하는 시스템.
  15. 제14항에 있어서,
    상기 프로세서는,
    상기 캐시에 저장된 수정되지 않은 캐시 라인들에 대한 기록들을 추적하기 위해 카운터를 유지하도록 구성되고, 그리고
    상기 카운터에 적어도 부분적으로 기반하여 메모리 대역폭의 상기 측정값을 생성하도록 구성되는 것을 특징으로 하는 시스템.
  16. 제15항에 있어서,
    상기 프로세서는,
    제1 시점에서의 상기 카운터의 값과 제2 시점에서의 상기 카운터의 값 간의 차이를 결정하도록 구성되고, 그리고
    상기 차이에 적어도 부분적으로 기반하여 메모리 대역폭의 상기 측정값을 결정하도록 구성되는 것을 특징으로 하는 시스템.
  17. 제15항에 있어서,
    상기 프로세서는,
    제1 캐시 라인에 대한 주어진 기록 동작이, 상기 제1 캐시 라인이 상기 캐시에 들어간 이후 상기 제1 캐시 라인의 첫 번째 수정이라는 결정에 응답하여 상기 카운터를 증가시키도록 구성되는 것을 특징으로 하는 시스템.
  18. 제17항에 있어서,
    상기 프로세서는,
    상기 제1 캐시 라인에 대한 상기 주어진 기록이, 상기 제1 캐시 라인이 상기 캐시에 들어간 이후 상기 제1 캐시 라인의 상기 첫 번째 수정이 아니라는 결정에 응답하여 상기 카운터의 값을 유지하도록 구성되는 것을 특징으로 하는 시스템.
  19. 제16항에 있어서,
    상기 프로세서는,
    상기 제1 시점과 상기 제2 시점 사이에 경과된 클록 사이클들의 수를 결정하도록 구성되는 것을 특징으로 하는 시스템.
  20. 제14항에 있어서,
    상기 프로세서는,
    총 메모리 대역폭을 계산하기 위해 판독 메모리 대역폭의 측정값에 메모리 대역폭의 상기 측정값을 더하도록 구성되는 것을 특징으로 하는 시스템.
KR1020227010942A 2019-09-05 2020-09-03 서비스 품질 더티 라인 추적 KR102627410B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/562,128 US11106594B2 (en) 2019-09-05 2019-09-05 Quality of service dirty line tracking
US16/562,128 2019-09-05
PCT/US2020/049215 WO2021046229A1 (en) 2019-09-05 2020-09-03 Quality of service dirty line tracking

Publications (2)

Publication Number Publication Date
KR20220057572A KR20220057572A (ko) 2022-05-09
KR102627410B1 true KR102627410B1 (ko) 2024-01-23

Family

ID=72561958

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227010942A KR102627410B1 (ko) 2019-09-05 2020-09-03 서비스 품질 더티 라인 추적

Country Status (6)

Country Link
US (2) US11106594B2 (ko)
EP (1) EP4026008A1 (ko)
JP (1) JP7357148B2 (ko)
KR (1) KR102627410B1 (ko)
CN (1) CN114365101B (ko)
WO (1) WO2021046229A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106594B2 (en) 2019-09-05 2021-08-31 Advanced Micro Devices, Inc. Quality of service dirty line tracking

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140189252A1 (en) 2012-12-31 2014-07-03 Arijit Biswas Dynamic cache write policy
US20190095330A1 (en) 2017-09-28 2019-03-28 Advanced Micro Devices, Inc. Preemptive cache writeback with transaction support

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307477A (en) 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
GB2273181A (en) * 1992-12-02 1994-06-08 Ibm Cache/non-cache access control.
JPH0844626A (ja) 1994-07-28 1996-02-16 Nec Niigata Ltd キャッシュシステムのフラッシュサイクル制御方法
US6205521B1 (en) 1997-11-03 2001-03-20 Compaq Computer Corporation Inclusion map for accelerated cache flush
EP1182564A3 (en) 2000-08-21 2004-07-28 Texas Instruments France Local memory with indicator bits to support concurrent DMA and CPU access
US7895239B2 (en) * 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US20060143397A1 (en) 2004-12-29 2006-06-29 O'bleness R F Dirty line hint array for cache flushing
US7330941B2 (en) 2005-03-23 2008-02-12 Qualcomm Incorporated Global modified indicator to reduce power consumption on cache miss
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8285940B2 (en) 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
US8103830B2 (en) 2008-09-30 2012-01-24 Intel Corporation Disabling cache portions during low voltage operations
US20110029735A1 (en) * 2009-07-28 2011-02-03 Ying-Chieh Chiang Method for managing an embedded system to enhance performance thereof, and associated embedded system
US8285936B2 (en) 2009-10-20 2012-10-09 The Regents Of The University Of Michigan Cache memory with power saving state
US8667449B2 (en) 2010-11-17 2014-03-04 Advanced Micro Devices, Inc. Flip-flop library development for high frequency designs built in an ASIC flow
US20130346683A1 (en) 2012-06-22 2013-12-26 William L. Walker Cache Sector Dirty Bits
JP6214888B2 (ja) 2013-03-13 2017-10-18 株式会社ダイヘン 変圧器
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US9251081B2 (en) 2013-08-01 2016-02-02 Advanced Micro Devices, Inc. Management of caches
US10169240B2 (en) * 2016-04-08 2019-01-01 Qualcomm Incorporated Reducing memory access bandwidth based on prediction of memory request size
JP6511023B2 (ja) * 2016-08-22 2019-05-08 日本電信電話株式会社 仮想マシン管理装置およびデプロイ可否判断方法
CA3041597C (en) * 2016-10-31 2020-07-07 Leonardo S.P.A. Certifiable deterministic system software framework for hard real-time safety-critical applications in avionics systems featuring multi-core processors
US10339060B2 (en) * 2016-12-30 2019-07-02 Intel Corporation Optimized caching agent with integrated directory cache
US10162756B2 (en) 2017-01-18 2018-12-25 Intel Corporation Memory-efficient last level cache architecture
US11068314B2 (en) * 2017-03-29 2021-07-20 Juniper Networks, Inc. Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
CN113490921A (zh) * 2019-03-29 2021-10-08 英特尔公司 用于收集冷页的装置、方法和系统
US11106594B2 (en) 2019-09-05 2021-08-31 Advanced Micro Devices, Inc. Quality of service dirty line tracking
US20200401891A1 (en) * 2020-09-04 2020-12-24 Intel Corporation Methods and apparatus for hardware-aware machine learning model training

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140189252A1 (en) 2012-12-31 2014-07-03 Arijit Biswas Dynamic cache write policy
US20190095330A1 (en) 2017-09-28 2019-03-28 Advanced Micro Devices, Inc. Preemptive cache writeback with transaction support

Also Published As

Publication number Publication date
JP2022546358A (ja) 2022-11-04
US11669457B2 (en) 2023-06-06
JP7357148B2 (ja) 2023-10-05
US20210390057A1 (en) 2021-12-16
US20210073137A1 (en) 2021-03-11
KR20220057572A (ko) 2022-05-09
US11106594B2 (en) 2021-08-31
CN114365101B (zh) 2023-10-24
WO2021046229A1 (en) 2021-03-11
CN114365101A (zh) 2022-04-15
EP4026008A1 (en) 2022-07-13

Similar Documents

Publication Publication Date Title
US10089014B2 (en) Memory-sampling based migrating page cache
US9645933B2 (en) Dynamic cache partitioning apparatus and method
CN111684425A (zh) 适应于大高速缓存大小的基于区域的目录方案
US10719247B2 (en) Information processing device, information processing method, estimation device, estimation method, and computer program product
JP2023506264A (ja) アクセスタイプの優先度に基づくキャッシュ管理
JP2023507292A (ja) ゼロ値メモリ圧縮
US10580110B2 (en) Hardware structure to track page reuse
KR102627410B1 (ko) 서비스 품질 더티 라인 추적
WO2022133053A1 (en) Data placement with packet metadata
US11561895B2 (en) Oldest operation wait time indication input into set-dueling
US20210182213A1 (en) Cache line re-reference interval prediction using physical page address
CN115087961A (zh) 用于相干及非相干存储器请求的仲裁方案
US20220050785A1 (en) System probe aware last level cache insertion bypassing
JP7335253B2 (ja) スコアボードの保存及び復元

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant